- initiate_on_boundaryCracks can only initiate on elements adjacent to specified boundaries.
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:Cracks can only initiate on elements adjacent to specified boundaries.
- nucleation_lengthNucleated crack length.
C++ Type:double
Controllable:No
Description:Nucleated crack length.
- nucleation_thresholdThreshold for the scalar quantity of the RankTwoTensor to nucleate new cracks
C++ Type:std::vector<VariableName>
Controllable:No
Description:Threshold for the scalar quantity of the RankTwoTensor to nucleate new cracks
- tensorThe material tensor name.
C++ Type:std::string
Controllable:No
Description:The material tensor name.
MeshCut2DRankTwoTensorNucleation
Nucleate a crack in MeshCut2D UO based on a scalar extracted from a RankTwoTensor
Overview
The XFEM nucleation UserObject MeshCut2DRankTwoTensorNucleation
defines new cracks that are added to the cutter mesh used by MeshCut2DFractureUserObject when a user-defined nucleation criterion is met. The nucleation criterion is based on the "scalar_type" extracted from a RankTwoTensor
specified by "tensor" (used to store stresses and strains in SolidMechanics), such as a principal stress or a component of stress.
If the scalar exceeds a threshold specified by "nucleation_threshold", a line segment with a length specified by "nucleation_length" will be inserted into the MeshCut2DFractureUserObject cutter mesh. Cracks are only allowed to initiate from elements on boundaries specified by "initiate_on_boundary". Once the nucleation criterion is reached, a line segment of the specified length is inserted into the cutter mesh, centered on the element centroid it nucleates from. The direction of the nucleated crack is normal to the direction returned by the RankTwoTensor
scalar. For example, MaxInPlanePrincipal
returns the direction of the maximum in-plane principal component and the crack direction is normal to this. The nucleation length should be at least the length of the element it nucleates in so that the nucleated crack will completely cut the element. A crack will only be nucleated if it is at least a distance specified by "nucleation_radius" away from existing or nucleated cracks. If multiple cracks nucleate in the same xfem update and are within the specified nucleation_radius
, the crack nucleated from the element with the lowest id will be retained and no other cracks within the nucleation_radius
will be nucleated.
MeshCut2DRankTwoTensorNucleation
copies several features available in the XFEMRankTwoTensorMarkerUserObject. These include the nucleation threshold being provided as a coupled variable and the computation of the maximum value of the scalar quantity used for nucleation. By providing the nucleation threshold as a coupled variable, it can be specified as either a constant or variable value. Coupled variable input is useful for introducing randomness in the strength by using an AuxVariable that has been initialized with a random initial condition. For example, the Volume Weighted Weibull initial condition is well-suited for this purpose. The determination of crack nucleation is based on the average value of the scalar quantity over all the quadrature points in an element.
Example Input File Syntax
[UserObjects]
[nucleate]
type = MeshCut2DRankTwoTensorNucleation
tensor = stress
scalar_type = MaxPrincipal
nucleation_threshold = 180
initiate_on_boundary = 'left'
nucleation_length = .2
nucleation_radius = .21
[]
[]
(modules/xfem/test/tests/nucleation_uo/nucleate_AllEdgeCracks.i)Input Parameters
- 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
- execute_onXFEM_MARKThe list of flag(s) indicating when this object should be executed, the available options include XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM.
Default:XFEM_MARK
C++ Type:ExecFlagEnum
Controllable:No
Description:The list of flag(s) indicating when this object should be executed, the available options include XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM.
- nucleation_radius0Cracks will only nucleate if they are outside the nucleation_radius of an existing crack.
Default:0
C++ Type:double
Controllable:No
Description:Cracks will only nucleate if they are outside the nucleation_radius of an existing crack.
- point10 0 0Start point for axis used to calculate some cylindrical material tensor quantities
Default:0 0 0
C++ Type:libMesh::Point
Controllable:No
Description:Start point for axis used to calculate some cylindrical material tensor quantities
- point20 1 0End point for axis used to calculate some cylindrical material tensor quantities
Default:0 1 0
C++ Type:libMesh::Point
Controllable:No
Description:End point for axis used to calculate some cylindrical material tensor quantities
- 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.
- scalar_typeScalar quantity to be computed from tensor and used as a failure criterion
C++ Type:MooseEnum
Controllable:No
Description:Scalar quantity to be computed from tensor and used as a failure criterion
- 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.
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- 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.
- execution_order_group-1Nucleation UO needs to be completely executed before GeometricCutUserObject.
Default:-1
C++ Type:int
Controllable:No
Description:Nucleation UO needs to be completely executed before GeometricCutUserObject.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
- 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
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.