AT2 Phase Field Fracture

A linear elastic phase-field model for brittle fracture based on the AT2 formulation.

Index

Model Parameter

Description

0

\(E\)

Young’s modulus

1

\(\nu\)

Poisson’s ratio

2

\(G_c\)

Critical fracture energy (energy release rate)

3

\(l\)

Internal length scale

State Variable

Name

Description

\(\mathcal{H}\)

maxCrackDrivingForce

Crack driving force history variable (maximum elastic strain energy density)

\(\boldsymbol{\varepsilon}\)

strain

Total strain tensor (Voigt notation)

Theory

The AT2 model couples a linear elastic material with a phase-field variable \(d \in [0, 1]\), where \(d = 0\) represents intact material and \(d = 1\) represents fully fractured material.

Degraded Stress

The stress is degraded by a quadratic degradation function \(g(\varphi)\):

\[\boldsymbol{\sigma} = g(d)\, \mathbb{C} : \boldsymbol{\varepsilon}\]

with the isotropic elastic stiffness tensor \(\mathbb{C}\) and the quadratic degradation function

\[g(d) = (1 - d)^2.\]

Phase-Field Evolution Equation

The phase-field variable \(d\) is governed by the balance equation

\[d - l^2 \Delta d = -\frac{2l}{G_c}g'(d)\,\mathcal{H}(\boldsymbol{\varepsilon}),\]

where \(\mathcal{H}\) is the crack driving force history variable, defined as the maximum positive elastic strain energy density encountered up to the current time:

\[\mathcal{H}^{n+1} = \max\!\left( \mathcal{H}^{n},\, \psi(\boldsymbol{\varepsilon}^{n+1}) \right), \quad \psi(\boldsymbol{\varepsilon}) = \tfrac{1}{2}\boldsymbol{\varepsilon} : \mathbb{C} : \boldsymbol{\varepsilon}.\]

The irreversibility of crack growth is enforced through the history variable \(\mathcal{H}\), which ensures the phase field can only grow monotonically.

Implementation

The model is implemented within the general gradient-enhanced hypoelastic framework (MarmotMaterialGeneralGradientEnhancedHypoElastic), treating the phase-field variable \(d\) as the single nonlocal variable (\(\bar\kappa = d\)). The gradient enhancement coefficient is constant: \(c = l^2\).

class AT2PhaseField : public MarmotMaterialGeneralGradientEnhancedHypoElastic<1>

Inheritance diagram for Marmot::Materials::AT2PhaseField:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="Marmot::Materials::AT2PhaseField" tooltip="Marmot::Materials::AT2PhaseField" fillcolor="#BFBFBF"]
    "3" [label="MarmotMaterialGeneralGradientEnhancedHypoElastic< nNonlocalVariables >" tooltip="MarmotMaterialGeneralGradientEnhancedHypoElastic< nNonlocalVariables >"]
    "2" [label="MarmotMaterialGeneralGradientEnhancedHypoElastic< 1 >" tooltip="MarmotMaterialGeneralGradientEnhancedHypoElastic< 1 >"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
    "2" -> "3" [dir=forward tooltip="template-instance"]
}

Collaboration diagram for Marmot::Materials::AT2PhaseField:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="Marmot::Materials::AT2PhaseField" tooltip="Marmot::Materials::AT2PhaseField" fillcolor="#BFBFBF"]
    "4" [label="MarmotMaterialGeneralGradientEnhancedHypoElastic< nNonlocalVariables >" tooltip="MarmotMaterialGeneralGradientEnhancedHypoElastic< nNonlocalVariables >"]
    "2" [label="MarmotMaterialGeneralGradientEnhancedHypoElastic< 1 >" tooltip="MarmotMaterialGeneralGradientEnhancedHypoElastic< 1 >"]
    "3" [label="MarmotStateLayoutDynamic" tooltip="MarmotStateLayoutDynamic"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
    "4" -> "3" [dir=forward tooltip="usage"]
    "2" -> "3" [dir=forward tooltip="usage"]
    "2" -> "4" [dir=forward tooltip="template-instance"]
}

Simple AT2 phase-field model for fracture simulations.

Implements the simple AT2 phase-field fracture model within the general gradient-enhanced hypoelastic framework. See the documentation for details on the theory.

Material properties (in order):

  • \( E \) : Young’s modulus

  • \( \nu \) : Poisson’s ratio

  • \( G_c \) : Critical fracture energy

  • \( l \) : Internal length scale

  • \( \rho \) : Mass density (optional, mandatory for dynamic simulations)

  • \( \eta \) : phase-field viscosity (optional, mandatory for dynamic simulations)

Public Functions

AT2PhaseField(const double *materialProperties, int nMaterialProperties, int materialNumber)
virtual void computeStress(response &res, tangents &tan, const increment &inc) const override

Compute the stress response of the material model including the algorithmic tangents.

This method must be implemented in derived classes to compute the stress response based on the specific material model.

Parameters:
  • res[inout] Reference to the response struct to be filled with the computed stress and other response variables.

  • tan[inout] Reference to the tangents struct to be filled with the computed algorithmic tangent matrices.

  • inc[in] Reference to the increment struct containing the strain increment, nonlocal variable increments, and time information.

inline void initializeStateLayout()
virtual double getDensity(const double *stateVars) const override

Get the density of the material.

This method must be implemented in derived classes to return the density of the material, which is required for dynamic analyses.

Parameters:

stateVars – Pointer to the array of state variables

Returns:

Density of the material

virtual std::vector<double> getNonlocalViscosity(const double *stateVars) const override

Get the nonlocal viscosity of the material.

This method must be implemented in derived classes to return the nonlocal viscosity values, which are required for dynamic analyses involving nonlocal variables. The returned vector should have a length equal to nNonlocalVariables.

Parameters:

stateVars – Pointer to the array of state variables

Returns:

Vector containing the nonlocal viscosity values for each nonlocal variable

Private Members

const Marmot::Matrix6d C

Elastic stiffness tensor.