Skip to content

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 shared Composition storage.

Model

(1)ct=(D(ϕ)c)jAT,

with the phase-weighted diffusivity D(ϕ)=αϕαDα. The anti-trapping current jAT is active when $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.

text
@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
TokenVariableTypeDefault
$RefElementreference componentstringnone (required)
$EnableAntiTrappingEnableAntiTrappingbooltrue
$ConsiderChemicalPotentialConsiderChemicalPotentialboolfalse
$DrivingForceModelkeywordstringSTANDARD
$DiffusionStencilkeywordstringISOTROPIC
$Flag_<n>Stoichiometric[n]bool
$IDC_<n>IDC[n]double1.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

cpp
#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

Released under the GNU GPLv3 License.