Skip to content

Fracture Field

FractureField evolves a scalar damage/fracture field on the simulation grid coupled to the mechanical and phase-field state. It complements the Damage module overview, which covers the constitutive slip-system–level damage models; this page documents the field-level fracture kernel and its input contract.

The model is based on an obstacle-type potential of width $SWidth controlled by a mobility $Mu, an initial surface energy $Sigma, and a threshold driving force $delta_g_0. An optional chemo-mechanical coupling ties the fracture rate to the concentration of a reference component ($RefElement).

Key Classes and Concepts

  • FractureField : public OPObject: the evolving scalar field and its increment kernel.
  • $FractureModel = Obstacle (default): obstacle-potential formulation. Alternative values, if present in the source, are selected from the string chain downstream of the $FractureModel read.

Usage

Input

Defined in the @FractureField block.

text
@FractureField

$FractureModel                  Fracture kernel                     : Obstacle
$SWidth                         Obstacle width                      : 1.0
$Mu                             Fracture mobility                   : 1.0
$Sigma                          Initial surface energy              : 1.0
$delta_g_0                      Driving-force threshold             : 30000

$ChemoMechanicalCoupling        Couple fracture to composition      : No
$Xi                             Coupling strength                   : 0.0
$RefElement                     Reference component for the coupling: Fe

$FractureFieldLaplacianStencil  Laplacian stencil                   : ISOTROPIC
$FractureFieldGradientStencil   Gradient stencil                    : ISOTROPIC

$Xi and $RefElement are required only when $ChemoMechanicalCoupling = Yes.

Output

The fracture field is written via FractureField::WriteVTK; consult the header for the exact field name.

Example

cpp
#include "FractureField.h"

FractureField Frac(OPSettings, InputFile);

for(RTC.tStep = RTC.tStart; RTC.tStep <= RTC.nSteps; RTC.IncrementTimeStep())
{
    // ... mechanical + phase-field updates ...

    Frac.Solve(Phi, EP, BC, RTC.dt);

    if (RTC.WriteVTK())
    {
        Frac.WriteVTK(OPSettings, RTC.tStep);
    }
}

Dependencies

Released under the GNU GPLv3 License.