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.

Table 1: Correspondence Among Action Functionality and MooseObjects for XFEMAction when output_cut_plane = true.

FunctionalityReplaced ClassesAssociated Parameters
Add AuxVariables for various cut parameters and volume fraction calculationsAuxVariables
Add AuxKernels for various cut parameters and volume fraction calculationsXFEMVolFracAux 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:

Table 2: Correspondence Among Action Functionality and MooseObjects for XFEMAction when use_crack_tip_enrichment = true.

FunctionalityReplaced ClassesAssociated Parameters
Add enrichment displacement variablesVariablesenrichment_displacements: vector of enrichment displacement names
Add stress divergence tensor kernels for crack tip enrichmentCrackTipEnrichmentStressDivergenceTensorscrack_front_definition, enrichment_displacements, displacements
Add crack tip enrichment boundary conditionsCrackTipEnrichmentCutOffBCcut_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.