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. If the DomainIntegral is setting up an Interaction Integral being used as a growth criterion for the XFEM crack, i.e. "used_by_xfem_to_grow_crack" = true, the Crack Front Definition must be executed before the DomainIntegral vectorpostprocessors. This is done by default in the DomainIntegral action which sets the the CrackFrontDefinition "execution_order_group" to -1.

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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    Controllable:No

    Description:The block ids where integrals are defined

  • body_forceMaterial defining body force

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Material defining body force

  • boundaryBoundary containing the crack front points

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Boundary containing the crack front points

  • closed_loopFalseSet of points forms forms a closed loop

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set of points forms forms a closed loop

  • crack_direction_vectorDirection of crack propagation

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

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Controllable:No

    Description:Variable containing the x displacement

  • disp_yVariable containing the y displacement

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:Variable containing the y displacement

  • disp_zVariable containing the z displacement

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:Variable containing the z displacement

  • displacementsThe displacements appropriate for the simulation geometry and coordinate system

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

    Unit:(no unit assumed)

    Controllable:No

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

  • eigenstrain_gradientMaterial defining gradient of eigenstrain tensor

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Material defining gradient of eigenstrain tensor

  • eigenstrain_namesList of eigenstrains applied in the strain calculation

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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    Controllable:No

    Description:Boundaries intersected by ends of crack

  • j_integral_radius_innerRadius for J-Integral calculation

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Radius for J-Integral calculation

  • j_integral_radius_outerRadius for J-Integral calculation

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Radius for J-Integral calculation

  • last_ringThe number of rings of nodes to generate

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:The number of rings of nodes to generate

  • nringsThe number of rings of nodes to generate

    C++ Type:unsigned int

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Controllable:No

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

  • output_qTrueOutput q

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Output q

  • output_variableVariable values to be reported along the crack front

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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    Controllable:No

    Description:Inner radius for volume integral domain

  • radius_outerOuter radius for volume integral domain

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Outer radius for volume integral domain

  • ring_firstThe first ring of elements for volume integral domain

    C++ Type:unsigned int

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Controllable:No

    Description:Calculate T-stress

  • temperatureThe temperature

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The temperature

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

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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

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

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

    Unit:(no unit assumed)

    Controllable:No

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

Advanced Parameters