Compute 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). The pressure on the fracture surface can be optionally applied as described in Chukwudozie et al. (2019) and Mikelić et al. (2019).

Crack Surface Energy

The regularized functional is given as

The crack surface density function is expressed in terms of the crack phase-field and its spatial gradient as 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,

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

Elastic Energy

The elastic energy is defined as

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)

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

Energetic Degradation Function

A genetic expression for degradation function is given as for and continuous function Q(d) > 0. Jian-Ying Wu considers following polynomials 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 where is the strain energy due to tensile stress, is the strain energy due to compressive stress. 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 Thus, where is the th eigenvector. The stress becomes

Strain Volumetric and Deviatoric Decomposition

The approach is based on the orthogonal decomposition of the linearized strain tensor in its spherical and deviatoric components: where denotes the n-dimensional identity tensor.

and is defined as

The stress is defined as and

Stress Spectral Decomposition

and is defined as

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

To be thermodynamically consistent, the stress is related to the deformation energy density according to Since then,

The Jacobian matrix for the stress is 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.

Now, the total free energy is redefined as: with and

Its derivatives are

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

The evolution equation for the damage parameter follows the Allen-Cahn equation 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.

Pressure on the fracture surface

As suggested by Chukwudozie et al. (2019), the work of pressure forces acting along each side of the cracks that is added to the total free energy can be approximated by

Integration by parts yields

The boundary integral term can be neglected as in most applications on . Some authors Mikelić et al. (2019) have proposed to replace the indicator function with in the first term in order to make the functional convex. The indicator function is implemented as a generic material object that can be easily provided and modified in an input file. The stress equilibrium and damage evolution equations are also modified to account for the pressure contribution.

PETSc SNES variational inequalities solver option

Alternatively, the damage irreversibility condition can be enforced by using PETSc's SNES variational inequalities (VI) solver. In order to use PETSc's VI solver, upper and lower bounds for damage variable should be provided. Specifically, ConstantBounds can be used to set the upper bound to be 1. VariableOldValueBounds can be used to set the lower bound to be the old value. Note that in order for these bounds to have an effect, the user has to specify the PETSc options -snes_type vinewtonssls or -snes_type vinewtonrsls.

Example Input File

[./damage_stress]
  type = ComputeLinearElasticPFFractureStress
  c = c
  E_name = 'elastic_energy'
  D_name = 'degradation'
  F_name = 'local_fracture_energy'
  decomposition_type = strain_spectral
[../]
(modules/combined/test/tests/phase_field_fracture/crack2d_iso.i)

Example Input File with pressure

[./damage_stress]
  type = ComputeLinearElasticPFFractureStress
  c = c
  E_name = 'elastic_energy'
  D_name = 'degradation'
  I_name = 'indicator_function'
  F_name = 'local_fracture_energy'
  decomposition_type = strain_spectral
[../]
(modules/combined/test/tests/phase_field_fracture/crack2d_iso_with_pressure.i)
[./pfbulkmat]
  type = GenericConstantMaterial
  prop_names = 'gc_prop l visco fracture_pressure'
  prop_values = '1e-3 0.04 1e-4 1e-3'
[../]
(modules/combined/test/tests/phase_field_fracture/crack2d_iso_with_pressure.i)

Input Parameters

  • cName of damage variable

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:Name of damage variable

Required Parameters

  • D_namedegradationName of material property for energetic degradation function.

    Default:degradation

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:Name of material property for energetic degradation function.

  • E_nameelastic_energyName of material property for elastic energy

    Default:elastic_energy

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:Name of material property for elastic energy

  • F_namelocal_fracture_energyName of material property for local fracture energy function.

    Default:local_fracture_energy

    C++ Type:MaterialPropertyName

    Controllable:No

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

  • I_nameindicatorName of material property for damage indicator function.

    Default:indicator

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:Name of material property for damage indicator function.

  • barrier_energyName of material property for fracture energy barrier.

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:Name of material property for fracture energy barrier.

  • 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

    Controllable:No

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

  • blockThe list of blocks (ids or names) that this object will be applied

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • boundaryThe list of boundaries (ids or names) from the mesh where this object applies

    C++ Type:std::vector<BoundaryName>

    Controllable:No

    Description:The list of boundaries (ids or names) from the mesh where this object applies

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

    Default:True

    C++ Type:bool

    Controllable:No

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

  • 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 computeQpProperties() 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

    Controllable:No

    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 computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped

  • declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.

  • 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

    Controllable:No

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

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • use_current_history_variableFalseUse the current value of the history variable.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Use the current value of the history variable.

  • use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

  • use_snes_vi_solverFalseUse PETSc's SNES variational inequalities solver to enforce damage irreversibility condition and restrict damage value <= 1.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Use PETSc's SNES variational inequalities solver to enforce damage irreversibility condition and restrict damage value <= 1.

Optional Parameters

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

    C++ Type:std::vector<std::string>

    Controllable:No

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

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

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

    Default:True

    C++ Type:bool

    Controllable:No

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

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

Advanced Parameters

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

    C++ Type:std::vector<std::string>

    Controllable:No

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

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

    Default:none

    C++ Type:std::vector<OutputName>

    Controllable:No

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

Outputs Parameters

Input Files

References

  1. Chukwudi Chukwudozie, Blaise Bourdin, and Keita Yoshioka. A variational phase-field model for hydraulic fracturing in porous media. Computer Methods in Applied Mechanics and Engineering, 347:957 – 982, 2019.[BibTeX]
  2. Christian Miehe, Lisa-Marie Schänzel, and Heike Ulmer. Phase field modeling of fracture in multi-physics problems. part i. balance of crack surface and failure criteria for brittle crack propagation in thermo-elastic solids. Computer Methods in Applied Mechanics and Engineering, 294:449 – 485, 2015. URL: http://www.sciencedirect.com/science/article/pii/S0045782514004423, doi:https://doi.org/10.1016/j.cma.2014.11.016.[BibTeX]
  3. A. Mikelić, M. F. Wheeler, and T. Wick. Phase-field modeling through iterative splitting of hydraulic fractures in a poroelastic medium. GEM - International Journal on Geomathematics, 10(1):2, 2019.[BibTeX]
  4. Jian-Ying Wu. A unified phase-field theory for the mechanics of damage and quasi-brittle failure. Journal of the Mechanics and Physics of Solids, 103:72 – 99, 2017. URL: http://www.sciencedirect.com/science/article/pii/S0022509616308341, doi:https://doi.org/10.1016/j.jmps.2017.03.015.[BibTeX]