DomainIntegralAction

Creates the MOOSE objects needed to compute fraction domain integrals

Description

The DomainIntegral action is used to set up all of the objects used in computing all fracture domain integrals, including the -integral, interaction integral, and T-stress. To use the fracture domain integrals, one must set up a model that incorporates a crack using one of two techniques:

Meshed crack: The crack can be explicitly included by creating a mesh with a topology that conforms to the crack. The location of the crack tip is provided to the code by defining a nodeset that includes all nodes in the finite element mesh that are located along the crack front. For 2D analyses, this nodeset would only contain a single node at the crack tip. For 3D analyses, the mesh connectivity is used to construct a set of line segments that connect these nodes, and this is used to order the crack nodes.

XFEM: Rather than defining the topology of the crack through the mesh, XFEM can be used to cut the mesh. In this case, a set of points, which does not need to conform to points in the mesh, must be provided by the user, and is used to define the location of the crack for computing the fracture integrals. Fracture integrals are computed at the locations of these points, in the order provided by the user.

Theory

Details on the theory behind the computation of the various fracture integrals are provided here.

Objects created by this Action

Table 1: Classes used to perform various fracture integrals specified through the integrals parameter

ClassTypeFunctionality
JIntegralVectorPostprocessorComputes -Integral at all points on crack front for a given integration ring
InteractionIntegralVectorPostprocessorComputes , , , or stress using interaction integral at all points on crack front for a given integration ring
MixedModeEquivalentKVectorPostprocessorComputes an equivalent stress intensity factor from , , and
CrackFrontDefinitionUserObjectDefines crack front and provides geometry-related functions used by JIntegral and InteractionIntegral
VectorPostprocessorComponentPostprocessorReports individual quantities computed by VectorPostprocessors at a specific point on the crack front
CrackFrontDataPostprocessorReports values of requested variables at crack front points
VectorOfPostprocessorsVectorPostprocessorAssembles CrackFrontData values into a vector for output
ThermalFractureIntegralMaterialComputes derivative of all eigenstrains with respect to temperature for use in fracture integrals
StrainEnergyDensityMaterialComputes strain energy density for use in fracture integrals
DomainIntegralQFunctionAuxKernelOptionally populates AuxVariables with values of the geometry-based q function when output_q=true
DomainIntegralTopologicalQFunctionAuxKernelOptionally populates AuxVariables with values of the topology-based q function when output_q=true

Input Parameters

  • crack_direction_methodMethod to determine direction of crack propagation. Choices are: CrackDirectionVector CrackMouth CurvedCrackFront

    C++ Type:MooseEnum

    Options:CrackDirectionVector, CrackMouth, CurvedCrackFront

    Controllable:No

    Description:Method to determine direction of crack propagation. Choices are: CrackDirectionVector CrackMouth CurvedCrackFront

  • incrementalFalseFlag to indicate whether an incremental or total model is being used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to indicate whether an incremental or total model is being used.

  • integralsDomain integrals to calculate. Choices are: JIntegral CIntegral KFromJIntegral InteractionIntegralKI InteractionIntegralKII InteractionIntegralKIII InteractionIntegralT

    C++ Type:MultiMooseEnum

    Options:JIntegral, CIntegral, KFromJIntegral, InteractionIntegralKI, InteractionIntegralKII, InteractionIntegralKIII, InteractionIntegralT

    Controllable:No

    Description:Domain integrals to calculate. Choices are: JIntegral CIntegral KFromJIntegral InteractionIntegralKI InteractionIntegralKII InteractionIntegralKIII InteractionIntegralT

Required Parameters

  • 2dFalseTreat body as two-dimensional

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Treat body as two-dimensional

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

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

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • axis_2d2Out of plane axis for models treated as two-dimensional (0=x, 1=y, 2=z)

    Default:2

    C++ Type:unsigned int

    Controllable:No

    Description:Out of plane axis for models treated as two-dimensional (0=x, 1=y, 2=z)

  • blockThe block ids where integrals are defined

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

    Controllable:No

    Description:The block ids where integrals are defined

  • body_forceMaterial defining body force

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:Material defining body force

  • boundaryBoundary containing the crack front points

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

    Controllable:No

    Description:Boundary containing the crack front points

  • closed_loopFalseSet of points forms forms a closed loop

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Set of points forms forms a closed loop

  • 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.

  • crack_direction_vectorDirection of crack propagation

    C++ Type:libMesh::VectorValue<double>

    Controllable:No

    Description:Direction of crack propagation

  • crack_direction_vector_end_1Direction of crack propagation for the node at end 1 of the crack

    C++ Type:libMesh::VectorValue<double>

    Controllable:No

    Description:Direction of crack propagation for the node at end 1 of the crack

  • crack_direction_vector_end_2Direction of crack propagation for the node at end 2 of the crack

    C++ Type:libMesh::VectorValue<double>

    Controllable:No

    Description:Direction of crack propagation for the node at end 2 of the crack

  • crack_end_direction_methodNoSpecialTreatmentMethod to determine direction of crack propagation at ends of crack. Choices are: NoSpecialTreatment CrackDirectionVector CrackTangentVector

    Default:NoSpecialTreatment

    C++ Type:MooseEnum

    Options:NoSpecialTreatment, CrackDirectionVector, CrackTangentVector

    Controllable:No

    Description:Method to determine direction of crack propagation at ends of crack. Choices are: NoSpecialTreatment CrackDirectionVector CrackTangentVector

  • crack_front_pointsSet of points to define crack front

    C++ Type:std::vector<libMesh::Point>

    Controllable:No

    Description:Set of points to define crack front

  • crack_front_points_providerThe UserObject provides the crack front points from XFEM GeometricCutObject

    C++ Type:UserObjectName

    Controllable:No

    Description:The UserObject provides the crack front points from XFEM GeometricCutObject

  • crack_mouth_boundaryBoundaries whose average coordinate defines the crack mouth

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

    Controllable:No

    Description:Boundaries whose average coordinate defines the crack mouth

  • crack_tangent_vector_end_1Direction of crack tangent for the node at end 1 of the crack

    C++ Type:libMesh::VectorValue<double>

    Controllable:No

    Description:Direction of crack tangent for the node at end 1 of the crack

  • crack_tangent_vector_end_2Direction of crack tangent for the node at end 2 of the crack

    C++ Type:libMesh::VectorValue<double>

    Controllable:No

    Description:Direction of crack tangent for the node at end 2 of the crack

  • disp_xVariable containing the x displacement

    C++ Type:VariableName

    Controllable:No

    Description:Variable containing the x displacement

  • disp_yVariable containing the y displacement

    C++ Type:VariableName

    Controllable:No

    Description:Variable containing the y displacement

  • disp_zVariable containing the z displacement

    C++ Type:VariableName

    Controllable:No

    Description:Variable containing the z displacement

  • displacementsThe displacements appropriate for the simulation geometry and coordinate system

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

    Controllable:No

    Description:The displacements appropriate for the simulation geometry and coordinate system

  • eigenstrain_gradientMaterial defining gradient of eigenstrain tensor

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:Material defining gradient of eigenstrain tensor

  • eigenstrain_namesList of eigenstrains applied in the strain calculation

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

    Controllable:No

    Description:List of eigenstrains applied in the strain calculation

  • equivalent_kFalseCalculate an equivalent K from KI, KII and KIII, assuming self-similar crack growth.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Calculate an equivalent K from KI, KII and KIII, assuming self-similar crack growth.

  • familyLAGRANGESpecifies the family of FE shape functions to use for q AuxVariables

    Default:LAGRANGE

    C++ Type:std::string

    Controllable:No

    Description:Specifies the family of FE shape functions to use for q AuxVariables

  • first_ringThe number of rings of nodes to generate

    C++ Type:unsigned int

    Controllable:No

    Description:The number of rings of nodes to generate

  • functionally_graded_youngs_modulusSpatially varying elasticity modulus variable. This input is required when using the functionally graded material capability.

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:Spatially varying elasticity modulus variable. This input is required when using the functionally graded material capability.

  • functionally_graded_youngs_modulus_crack_dir_gradientGradient of the spatially varying Young's modulus provided in 'functionally_graded_youngs_modulus' in the direction of crack extension.

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:Gradient of the spatially varying Young's modulus provided in 'functionally_graded_youngs_modulus' in the direction of crack extension.

  • inactiveIf specified blocks matching these identifiers will be skipped.

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

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

  • inelastic_modelsThe material objects to use to calculate the strain energy rate density.

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

    Controllable:No

    Description:The material objects to use to calculate the strain energy rate density.

  • intersecting_boundaryBoundaries intersected by ends of crack

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

    Controllable:No

    Description:Boundaries intersected by ends of crack

  • j_integral_radius_innerRadius for J-Integral calculation

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

    Controllable:No

    Description:Radius for J-Integral calculation

  • j_integral_radius_outerRadius for J-Integral calculation

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

    Controllable:No

    Description:Radius for J-Integral calculation

  • last_ringThe number of rings of nodes to generate

    C++ Type:unsigned int

    Controllable:No

    Description:The number of rings of nodes to generate

  • nringsThe number of rings of nodes to generate

    C++ Type:unsigned int

    Controllable:No

    Description:The number of rings of nodes to generate

  • number_points_from_providerThe number of crack front points, only needed if crack_front_points_provider is used.

    C++ Type:unsigned int

    Controllable:No

    Description:The number of crack front points, only needed if crack_front_points_provider is used.

  • orderFIRSTSpecifies the order of the FE shape function to use for q AuxVariables

    Default:FIRST

    C++ Type:std::string

    Controllable:No

    Description:Specifies the order of the FE shape function to use for q AuxVariables

  • output_qTrueOutput q

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Output q

  • output_variableVariable values to be reported along the crack front

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

    Controllable:No

    Description:Variable values to be reported along the crack front

  • output_vppTrueFlag to control the vector postprocessor outputs. Select false to suppress the redundant csv files for each time step and ring

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Flag to control the vector postprocessor outputs. Select false to suppress the redundant csv files for each time step and ring

  • poissons_ratioPoisson's ratio

    C++ Type:double

    Controllable:No

    Description:Poisson's ratio

  • position_typeDistanceThe method used to calculate position along crack front. Options are: Angle Distance

    Default:Distance

    C++ Type:MooseEnum

    Options:Angle, Distance

    Controllable:No

    Description:The method used to calculate position along crack front. Options are: Angle Distance

  • q_function_ringsFalseGenerate rings of nodes for q-function

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Generate rings of nodes for q-function

  • q_function_typeGeometryThe method used to define the integration domain. Options are: Geometry Topology

    Default:Geometry

    C++ Type:MooseEnum

    Options:Geometry, Topology

    Controllable:No

    Description:The method used to define the integration domain. Options are: Geometry Topology

  • radius_innerInner radius for volume integral domain

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

    Controllable:No

    Description:Inner radius for volume integral domain

  • radius_outerOuter radius for volume integral domain

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

    Controllable:No

    Description:Outer radius for volume integral domain

  • ring_firstThe first ring of elements for volume integral domain

    C++ Type:unsigned int

    Controllable:No

    Description:The first ring of elements for volume integral domain

  • ring_lastThe last ring of elements for volume integral domain

    C++ Type:unsigned int

    Controllable:No

    Description:The last ring of elements for volume integral domain

  • symmetry_planeAccount for a symmetry plane passing through the plane of the crack, normal to the specified axis (0=x, 1=y, 2=z)

    C++ Type:unsigned int

    Controllable:No

    Description:Account for a symmetry plane passing through the plane of the crack, normal to the specified axis (0=x, 1=y, 2=z)

  • t_stressFalseCalculate T-stress

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Calculate T-stress

  • temperatureThe temperature

    C++ Type:VariableName

    Controllable:No

    Description:The temperature

  • use_automatic_differentiationFalseFlag to use automatic differentiation (AD) objects when possible

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to use automatic differentiation (AD) objects when possible

  • used_by_xfem_to_grow_crackFalseFlag to trigger domainIntregal vector postprocessors to be executed on nonlinear. This updates the values in the vector postprocessor which will allow the crack to grow in XFEM cutter objects that use the domainIntegral vector postprocssor values as a growth criterion.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to trigger domainIntregal vector postprocessors to be executed on nonlinear. This updates the values in the vector postprocessor which will allow the crack to grow in XFEM cutter objects that use the domainIntegral vector postprocssor values as a growth criterion.

  • youngs_modulusYoung's modulus

    C++ Type:double

    Controllable:No

    Description:Young's modulus

Optional Parameters

  • additional_eigenstrain_00Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 00 or XX).

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

    Controllable:No

    Description:Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 00 or XX).

  • additional_eigenstrain_01Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 01 or XY).

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

    Controllable:No

    Description:Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 01 or XY).

  • additional_eigenstrain_02Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 02 or XZ).

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

    Controllable:No

    Description:Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 02 or XZ).

  • additional_eigenstrain_11Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 11 or YY).

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

    Controllable:No

    Description:Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 11 or YY).

  • additional_eigenstrain_12Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 12 or XZ).

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

    Controllable:No

    Description:Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 12 or XZ).

  • additional_eigenstrain_22Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 22 or ZZ).

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

    Controllable:No

    Description:Optional additional eigenstrain variable that will be accounted for in the interaction integral (component 22 or ZZ).

Generic Eigenstrains For The Computation Of The Interaction Integral. Parameters