Skip to content

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 "κ" field that 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

Released under the GNU GPLv3 License.