# Compute Quasi-birttle Linear Elastic Phase Field Fracture Stress

## Description

This material implements the unified phase-field model for mechanics of damage and quasi-brittle failure from Jian-Ying Wu Wu (2017).

## Crack Surface Energy

The regularized functional is given as

(1)

The crack surface density function is expressed in terms of the crack phase-field and its spatial gradient as (2) where the geometric function characterizes homogeneous evolution of the crack phase-field. is an internal length scale regularizing the sharp crack. is a scaling parameter such that the regularized functional represents the crack surface.

The crack geometric function generally satisfies the following properties, (3)

In the classical phase-field models the modeling crack geometric function have been widely adopted for brittle fracture_energy (4)

## Elastic Energy

The elastic energy is defined as (5)

The monotonically decreasing energetic function describes degradation of the initial strain energy as the crack phase-field evolves, satisfying the following properties Miehe et al. (2015) (6)

The variation of the elastic energy gives constitutive relations (7) where the thermodynamic force drives evolution of the crack phase-field with the reference energy related to the strain field .

A genetic expression for degradation function is given as (8) for and continuous function Q(d) > 0. Jian-Ying Wu considers following polynomials (9) where the coefficients are calibrated from standard material properties.

The energetic function recovers some particular examples used in the literature, such as when and .

### Decomposition Approaches

The elastic energy is usually decomposed additively to distinguish between tensile and compressive contributions. Three decomposition approaches are implemented.

#### Strain Spectral Decomposition

The total strain energy density is defined as (10) where is the strain energy due to tensile stress, is the strain energy due to compressive stress. (11) where is the th eigenvalue of the strain tensor and is an operator that provides the positive or negative part.

To be thermodynamically consistent, the stress is related to the deformation energy density according to (12) Thus, (13) where is the th eigenvector. The stress becomes (14)

#### Strain Volumetric and Deviatoric Decomposition

The approach is based on the orthogonal decomposition of the linearized strain tensor in its spherical and deviatoric components: (15) werhe deontes the n-dimensional identity tensor.

and is defined as (16) (17)

The stress is defined as (18) and (19)

#### Stress Spectral Decomposition

and is defined as (20) (21)

The compressive and tensile parts of the stress are computed from postive and negative projection tensors (computed from the spectral decomposition) according to (22) (23)

To be thermodynamically consistent, the stress is related to the deformation energy density according to (24) Since (25) (26) then, (27)

The Jacobian matrix for the stress is (28) where is the elasticity tensor.

Note that stress spectral decomposition approach can be used for anisotropic elasticity tensor.

## Evolution Equation (Allen-Cahn)

To avoid crack healing, a history variable is defined that is the maximum energy density over the time interval , where is the current time step, i.e. (29)

Now, the total free energy is redefined as: (30) with (31) and (32)

Its derivatives are (33)

To further avoid crack phase-field going to negative, should overcome a barrier energy. The barrier energy is determined by (34) and the is modified as (35)

The evolution equation for the damage parameter follows the Allen-Cahn equation (36) where and .The is scaled by the which is consistent with the definition given by Miehe at.al Miehe et al. (2015).

This equation follows the standard Allen-Cahn and thus can be implemented in MOOSE using the standard Allen-Cahn kernels, TimeDerivative, AllenCahn, and ACInterface. There is now an action that automatically generates these kernels: NonconservedAction. See the PhaseField module documentation for more information.

## Example Input File Syntax

[./damage_stress]
type = ComputeLinearElasticPFFractureStress
c = c
E_name = 'elastic_energy'
F_name = 'local_fracture_energy'
decomposition_type = strain_spectral
[../]

(modules/combined/test/tests/phase_field_fracture/crack2d_iso.i)

## Input Parameters

• cName of damage variable

C++ Type:std::vector

Options:

Description:Name of damage variable

### Required Parameters

C++ Type:MaterialPropertyName

Options:

Description:Name of material property for energetic degradation function.

• computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the Material via MaterialPropertyInterface::getMaterial(). Non-computed Materials are not sorted for dependencies.

Default:True

C++ Type:bool

Options:

Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the Material via MaterialPropertyInterface::getMaterial(). Non-computed Materials are not sorted for dependencies.

• base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases

C++ Type:std::string

Options:

Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases

• F_namelocal_fracture_energyName of material property for local fracture energy function.

Default:local_fracture_energy

C++ Type:MaterialPropertyName

Options:

Description:Name of material property for local fracture energy function.

• decomposition_typenoneDecomposition approaches. Choices are: strain_spectral strain_vol_dev stress_spectral none

Default:none

C++ Type:MooseEnum

Options:strain_spectral strain_vol_dev stress_spectral none

Description:Decomposition approaches. Choices are: strain_spectral strain_vol_dev stress_spectral none

• barrier_energyName of material property for fracture energy barrier.

C++ Type:MaterialPropertyName

Options:

Description:Name of material property for fracture energy barrier.

• E_nameelastic_energyName of material property for elastic energy

Default:elastic_energy

C++ Type:MaterialPropertyName

Options:

Description:Name of material property for elastic energy

• boundaryThe list of boundary IDs from the mesh where this boundary condition applies

C++ Type:std::vector

Options:

Description:The list of boundary IDs from the mesh where this boundary condition applies

• use_current_history_variableFalseUse the current value of the history variable.

Default:False

C++ Type:bool

Options:

Description:Use the current value of the history variable.

• blockThe list of block ids (SubdomainID) that this object will be applied

C++ Type:std::vector

Options:

Description:The list of block ids (SubdomainID) that this object will be applied

### Optional Parameters

• output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)

C++ Type:std::vector

Options:

Description:List of material properties, from this material, to output (outputs must also be defined to an output type)

• outputsnone Vector of output names were you would like to restrict the output of variables(s) associated with this object

Default:none

C++ Type:std::vector

Options:

Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object

### Outputs Parameters

• control_tagsAdds user-defined labels for accessing object parameters via control logic.

C++ Type:std::vector

Options:

Description:Adds user-defined labels for accessing object parameters via control logic.

• enableTrueSet the enabled status of the MooseObject.

Default:True

C++ Type:bool

Options:

Description:Set the enabled status of the MooseObject.

• seed0The seed for the master random number generator

Default:0

C++ Type:unsigned int

Options:

Description:The seed for the master random number generator

• implicitTrueDetermines whether this object is calculated using an implicit or explicit form

Default:True

C++ Type:bool

Options:

Description:Determines whether this object is calculated using an implicit or explicit form

• constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeSubdomainProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped

Default:NONE

C++ Type:MooseEnum

Options:NONE ELEMENT SUBDOMAIN

Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeSubdomainProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped