XFEM
Description
The XFEM
block must be supplied to run any MOOSE simulations using XFEM. The XFEMAction is associated with this block and performs the key model setup tasks. The XFEM
input syntax block provides an interface to specify parameters related to XFEM. Including this block in the input file serves several functions:
Causes an algorithm to be run at defined intervals to split the mesh based on a set of evolving defined interfaces.
Causes a modified quadrature rule to be used to correctly integrate elements split by these interfaces.
Creates objects to generate output related to the XFEM algorithm.
Provides a syntax block where various parameters controlling the behavior of XFEM can be specified by the user, including:
Provide
qrule
variable to XFEM to determine which quadrature weighting rule to use.Specify
output_cut_plane
variable to output cut elements to the exodus mesh.Optional: Provide parameter values for prescribed, incremental crack growth.
Optional: Setup of near tip enrichment parameters.
Optional: Allow users to control the amount of debugging information printed during a simulation.
Constructed Objects
Three of the above user-settable parameters pass parameters to the XFEM object for use in setting up relevant options: the qrule
variable, incremental crack growth, and debug_output_level
. The remaining parameters result in the creation of various objects, which allows for input files to be more concise. The following table details the types of classes created by utilizing the output_cut_plane
option in the XFEMAction
.
Functionality | Replaced Classes | Associated Parameters |
---|---|---|
Add AuxVariables for various cut parameters and volume fraction calculations | AuxVariables | |
Add AuxKernels for various cut parameters and volume fraction calculations | XFEMVolFracAux XFEMCutPlaneAux |
Several objects are instantiated when using the output_cut_plane
option. These AuxVariables
and AuxKernels
store data defining the XFEM cut: element volume fraction as well as definitions for two planes (their x, y, z origins and normals). This allows the cut location to be tracked throughout the simulation and saves the user from having to manually set up each AuxVariable
and its associated AuxKernel
(XFEMVolFracAux
for the volume fraction and XFEMCutPlaneAux
for cut plane AuxVariables).
Next, the class types created when using crack tip enrichment are detailed:
Functionality | Replaced Classes | Associated Parameters |
---|---|---|
Add enrichment displacement variables | Variables | enrichment_displacements : vector of enrichment displacement names |
Add stress divergence tensor kernels for crack tip enrichment | CrackTipEnrichmentStressDivergenceTensors | crack_front_definition , enrichment_displacements , displacements |
Add crack tip enrichment boundary conditions | CrackTipEnrichmentCutOffBC | cut_off_boundary , cut_off_radius , crack_front_definition |
When crack tip enrichment is used, enrichment_displacements
are added as first-order, Lagrange Variables. Next, a CrackTipEnrichmentStressDivergenceTensors
kernel is added for each enrichment displacement variable. Each kernel uses the crack_front_definition
, enrichment_displacements
, and displacements
provided in the XFEM Action. All enrichment displacement variables also have an associated CrackTipEnrichmentCutOffBC
object added by the action from user specified parameters (UserObject
crack_front_definition
, the vector of BoundaryName
variables cut_off_boundary
, and respective Real
value cut_off_radius
).
Example Input File Syntax
Many input files only utilize the qrule
and output_cut_plane
variables:
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
(modules/xfem/test/tests/bimaterials/glued_bimaterials_2d.i)However, options exist for specifying cracks growing in a prescribed fashion:
[XFEM]
qrule = volfrac
output_cut_plane = true
use_crack_growth_increment = true
crack_growth_increment = 0.2
[]
(modules/xfem/test/tests/solid_mechanics_basic/crack_propagation_2d.i)Additionally, the XFEM Action contains variables used to employ near tip enrichment; of use when a propagating crack's tip ends within an element:
[XFEM]
qrule = volfrac
output_cut_plane = true
use_crack_tip_enrichment = true
crack_front_definition = crack_tip
enrichment_displacements = 'enrich1_x enrich2_x enrich3_x enrich4_x enrich1_y enrich2_y enrich3_y enrich4_y'
displacements = 'disp_x disp_y'
cut_off_boundary = all
cut_off_radius = 0.2
[]
(modules/xfem/test/tests/crack_tip_enrichment/edge_crack_2d.i)Any use of the XFEM action can output varying levels of problem solution detail by changing the value of the debug_output_level
variable. By default it is set to 1, but XFEM output can be either turned off (debug_output_level=0
) or greater detail can be added to the output by setting the variable to 2 or 3.
Input Parameters
- 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
- 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_front_definitionThe CrackFrontDefinition user object name (only needed if 'use_crack_tip_enrichment=true')
C++ Type:UserObjectName
Controllable:No
Description:The CrackFrontDefinition user object name (only needed if 'use_crack_tip_enrichment=true')
- crack_growth_increment0.1Crack growth increment
Default:0.1
C++ Type:double
Controllable:No
Description:Crack growth increment
- cut_off_boundaryBoundary that contains all nodes for which enrichment DOFs should be fixed away from crack tip (only needed if 'use_crack_tip_enrichment=true')
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:Boundary that contains all nodes for which enrichment DOFs should be fixed away from crack tip (only needed if 'use_crack_tip_enrichment=true')
- cut_off_radiusThe cut off radius of crack tip enrichment functions (only needed if 'use_crack_tip_enrichment=true')
C++ Type:double
Controllable:No
Description:The cut off radius of crack tip enrichment functions (only needed if 'use_crack_tip_enrichment=true')
- debug_output_level1Controls the amount of debug output from XFEM. 0: None, 1: Summary, 2: Details on modifications to mesh, 3: Full dump of element fragment algorithm mesh
Default:1
C++ Type:unsigned int
Controllable:No
Description:Controls the amount of debug output from XFEM. 0: None, 1: Summary, 2: Details on modifications to mesh, 3: Full dump of element fragment algorithm mesh
- displacementsNames of displacement variables (only needed if 'use_crack_tip_enrichment=true')
C++ Type:std::vector<VariableName>
Controllable:No
Description:Names of displacement variables (only needed if 'use_crack_tip_enrichment=true')
- enrichment_displacementsNames of enrichment displacement variables (only needed if 'use_crack_tip_enrichment=true')
C++ Type:std::vector<VariableName>
Controllable:No
Description:Names of enrichment displacement variables (only needed if 'use_crack_tip_enrichment=true')
- geometric_cut_userobjectsList of names of GeometricCutUserObjects with cut info and methods
C++ Type:std::vector<UserObjectName>
Controllable:No
Description:List of names of GeometricCutUserObjects with cut info and methods
- 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.
- output_cut_planeFalseOutput the XFEM cut plane and volume fraction
Default:False
C++ Type:bool
Controllable:No
Description:Output the XFEM cut plane and volume fraction
- qrulevolfracXFEM quadrature rule to use
Default:volfrac
C++ Type:std::string
Controllable:No
Description:XFEM quadrature rule to use
- use_crack_growth_incrementFalseUse fixed crack growth increment
Default:False
C++ Type:bool
Controllable:No
Description:Use fixed crack growth increment
- use_crack_tip_enrichmentFalseUse crack tip enrichment functions
Default:False
C++ Type:bool
Controllable:No
Description:Use crack tip enrichment functions
Available Actions
- XFEMApp
- XFEMActionAction to input general parameters and simulation options for use in XFEM.