Interface Regularization
InterfaceRegularization stabilises the diffuse-interface profile when local driving forces are large enough to distort the steady obstacle / tanh shape the phase-field equation assumes. It computes a per-point "DoubleObstacle consumes as an optional argument to CalculatePhaseFieldIncrements(Phi, IP, Kappa). Without regularisation, strong driving forces can broaden, narrow, or tear the interface; with it, the profile stays close to its equilibrium shape.
Key Classes and Concepts
InterfaceRegularization : public OPObject: the only class. Implements the averaging + clearing used to smooth out spurious phase-field gradients near strongly driven interfaces.
Usage
Input
Defined in the @InterfaceRegularization block.
text
@InterfaceRegularization
$Average Average the regularisation field over the interface : Yes
$Range Averaging stencil range (grid cells) : 2
$Threshold Phase-field threshold : 0.05
$ClearingMode Clearing policy : AUTOMATIC$ClearingMode selects when the regularisation state is reset; the default AUTOMATIC leaves that decision to the module.
Output
No dedicated file. The regularisation field is consumed by DoubleObstacle during the increment step.
Example
cpp
#include "DoubleObstacle.h"
#include "InterfaceRegularization.h"
DoubleObstacle DO(OPSettings, InputFile);
InterfaceRegularization Kappa(OPSettings, InputFile);
for(RTC.tStep = RTC.tStart; RTC.tStep <= RTC.nSteps; RTC.IncrementTimeStep())
{
Kappa.Calculate(Phi, BC);
// Regularised phase-field update:
DO.CalculatePhaseFieldIncrements(Phi, IP, dG, Kappa);
Phi.NormalizeIncrements(BC, RTC.dt);
Phi.MergeIncrements(BC, RTC.dt);
}Dependencies
- DoubleObstacle — the primary consumer.
- PhaseField, InterfaceProperties, BoundaryConditions, Settings.