Equilibrium Partition (Binary)
EquilibriumPartitionDiffusionBinary is the classical binary-alloy diffusion solver. It evolves a single solute concentration field governed by a Fickian flux with an optional anti-trapping current, and enforces local equilibrium partitioning across diffuse interfaces. The companion overview page — Diffusion — introduces the solver family; this page carries the full token set, the stoichiometric-phase rule, and the spatial-stencil choice.
Key Classes and Concepts
EquilibriumPartitionDiffusionBinary : public OPObject: binary solver on top of the sharedCompositionstorage.
Model
with the phase-weighted diffusivity $EnableAntiTrapping = Yes. For stoichiometric phases ($Flag_<n> = Yes) the concentration is held at its reference rather than being solved.
The driving-force formulation is selected via $DrivingForceModel (default STANDARD); the spatial stencil for gradients and divergences via $DiffusionStencil (default ISOTROPIC).
Usage
Input
Defined in the @EquilibriumPartitionDiffusionBinary block.
@EquilibriumPartitionDiffusionBinary
$RefElement Reference component name : Fe
$EnableAntiTrapping Enable anti-trapping current : Yes
$ConsiderChemicalPotential Use chemical-potential form : No
$DrivingForceModel Driving-force model : STANDARD
$DiffusionStencil Gradient / divergence stencil : ISOTROPIC
# Per-phase (one entry per phase index n) {#per-phase-one-entry-per-phase-index-n}
$Flag_0 Stoichiometric phase 0 : No
$IDC_0 Interface diffusion coefficient for phase 0 : 1.0
$DC_0 Bulk diffusion coefficient for phase 0 : 1.0e-12
$AE_0 Activation energy for phase 0 : 150000
$EF_0 Entropy factor for phase 0 : 0.0
# Phase-pair (a, b) equilibrium-partition data {#phase-pair-a-b-equilibrium-partition-data}
$Cs_0_1 Solvus concentration (phase 0 in phase 1) : 0.05
$Ts_0_1 Solvus temperature (phase 0 in phase 1) : 1700
$ML_0_1 Liquidus slope (0 → 1) : -500
$ML_1_0 Liquidus slope (1 → 0) : 500| Token | Variable | Type | Default |
|---|---|---|---|
$RefElement | reference component | string | none (required) |
$EnableAntiTrapping | EnableAntiTrapping | bool | true |
$ConsiderChemicalPotential | ConsiderChemicalPotential | bool | false |
$DrivingForceModel | keyword | string | STANDARD |
$DiffusionStencil | keyword | string | ISOTROPIC |
$Flag_<n> | Stoichiometric[n] | bool | — |
$IDC_<n> | IDC[n] | double | 1.0 |
$DC_<n> | DC0[n] | double | — |
$AE_<n> | AE[n] | double | — |
$EF_<n> | Entropy[n] | double | — |
$Cs_<a>_<b> | Ccross({n,m}) | double | — |
$Ts_<a>_<b> | Tcross({n,m}) | double | — |
$ML_<a>_<b> | Slope({n,m}) | double | — |
Output
The solver updates Composition; VTK output is written through Composition::WriteVTK.
Example
#include "EquilibriumPartitionDiffusionBinary.h"
EquilibriumPartitionDiffusionBinary DF(OPSettings, InputFile);
for(RTC.tStep = RTC.tStart; RTC.tStep <= RTC.nSteps; RTC.IncrementTimeStep())
{
DF.Solve(Phi, Cx, Tx, BC, RTC.dt);
if (RTC.WriteVTK())
{
Cx.WriteVTK(OPSettings, RTC.tStep);
}
}See also: examples
In OpenPhase-main/examples/:
SolidificationFeC— Fe-C binary solidification.SolidificationFe,SolidificationNiAl,SolidificationMgAl— additional binary-solidification variants.MeltingFe— iron melting (the same solver, run in reverse).Pearlite— pearlite formation in Fe-C.
Each example ships with Main.cpp, ProjectInput.opi, and Makefile; together they constitute the canonical, runnable template for binary diffusion-coupled phase-field simulations.
Dependencies
- Composition — the solute storage.
- PhaseField, Temperature, InterfaceProperties, BoundaryConditions.
- Thermodynamics — theoretical background for the partitioning relations used here.