Interface Diffusion
InterfaceDiffusion adds a solute flux confined to the diffuse interface region, modelling the fast diffusion that occurs along grain- or phase-boundaries in real microstructures. It runs on top of the shared Composition storage and complements the bulk solver EquilibriumPartitionDiffusionBinary.
Key Classes and Concepts
InterfaceDiffusion : public OPObject: interface-only additional flux; contributes into the same concentration storage the bulk solver updates.
Model
The module adds a tangential flux active only where the interface indicator is non-trivial. Its magnitude is scaled by $dSR and the per-component $dIDC_<n> coefficient. Optional averaging over a stencil of size $Range smooths the flux; $Threshold is the phase-field threshold below which the flux is switched off.
Usage
Input
Defined in the @InterfaceDiffusion block.
@InterfaceDiffusion
$dSR Interface-diffusion scaling factor : 1.0
$dIDC_0 Interface diffusion coefficient, component 0 : 1.0e-11| Token | Variable | Type | Default |
|---|---|---|---|
$dSR | scaling | double | — |
$dIDC_<n> | per-component coefficient | double | — |
When combined with the bulk solver, the module re-uses the averaging and threshold controls defined on DrivingForce and InterfaceRegularization.
Output
The contribution is merged into Composition; VTK output is through Composition::WriteVTK.
Example
#include "InterfaceDiffusion.h"
#include "EquilibriumPartitionDiffusionBinary.h"
EquilibriumPartitionDiffusionBinary DF(OPSettings, InputFile);
InterfaceDiffusion ID(OPSettings, InputFile);
for(RTC.tStep = RTC.tStart; RTC.tStep <= RTC.nSteps; RTC.IncrementTimeStep())
{
DF.Solve(Phi, Cx, Tx, BC, RTC.dt);
ID.Solve(Phi, Cx, BC, RTC.dt);
}Dependencies
- Composition.
- PhaseField, InterfaceProperties, BoundaryConditions.
- Diffusion overview for the solver family.