# XFEM Module

The XFEM module implements the extended finite element method (XFEM) in the MOOSE framework. It can be used in conjuction with any number of other physics modules to enrich the solutions to partial differential equations (PDEs) with some form of discontinuity. XFEM theory and implementation are detailed in the theory manual:

Tables provided in the Objects, Actions, and Syntax section list objects contained within the XFEM module followed by short explanations of the objects' purposes. Links on the objects' names navigate to an individual detailed page for the object.

## Applications

XFEM is ideally suited to problems involving local discontinuities. Typically these types of problems fall into one of two categories: strong or weak discontinuities. Strong discontinuities are characterized by a jump in the value of a solution field across an interface, whereas weak discontinuities involve a jump in the first derivative (slope) of a solution field across an interface. Examples of the types of problems XFEM can solve include:

Cracking

Stationary cracks

Cracks that propagate in a manner directly prescribed by the user

Cracks that propagate based on the solution (stress, stress intensity factor, etc.)

Interfaces

Open (glued) or closed (inclusion) interfaces on the domain

Static and dynamic movement options

Stationary (prescribed location) interfaces

Interfaces that move in a manner directly prescribed by the user (provided level set function)

Interfaces that move based on the solution (temperature, displacement, etc.)

The locations of the interface used to define solution discontinuities can be prescribed in various ways, including by user-defined cutting planes and using level set functions. The evolution of level set functions can optionally be computed using the level set module, which is recommended for interfaces that move based on calculated growth rates rather than prescribed functions.

## Software Quality

The XFEM module follows strict software quality guidelines. Please refer to XFEM Software Quality Assurance for additional information.

## Objects, Actions, and Syntax

- XFEMApp
- XFEMCutPlaneAuxComputes the normal and origin of a cutting plane for each partial element.
- XFEMMarkerAuxIdentify the crack tip elements.
- XFEMVolFracAuxComputes the volume fraction of the physical material in each partial element.

- XFEMApp
- CrackTipEnrichmentCutOffBCImposes the essential boundary condition , where is a constant, controllable value.

- XFEMApp
- XFEMEqualValueAtInterfaceEnforce that the solution have the same value on opposing sides of an XFEM interface.
- XFEMSingleVariableConstraintEnforce constraints on the value or flux associated with a variable at an XFEM interface.

- XFEMApp
- XFEMPressureApplies a pressure on an interface cut by XFEM.

- XFEMApp
- CrackTipEnrichmentStressDivergenceTensorsEnrich stress divergence kernel for small-strain simulations

- XFEMApp
- ADLevelSetBiMaterialRankFourCompute a RankFourTensor material property for bi-materials problem (consisting of two different materials) defined by a level set function.
- ADLevelSetBiMaterialRankTwoCompute a RankTwoTensor material property for bi-materials problem (consisting of two different materials) defined by a level set function.
- ADLevelSetBiMaterialRealCompute a Real material property for bi-materials problem (consisting of two different materials) defined by a level set function.
- ComputeCrackTipEnrichmentSmallStrainComputes the crack tip enrichment at a point within a small strain formulation.
- LevelSetBiMaterialRankFourCompute a RankFourTensor material property for bi-materials problem (consisting of two different materials) defined by a level set function.
- LevelSetBiMaterialRankTwoCompute a RankTwoTensor material property for bi-materials problem (consisting of two different materials) defined by a level set function.
- LevelSetBiMaterialRealCompute a Real material property for bi-materials problem (consisting of two different materials) defined by a level set function.

- XFEMApp
- CircleCutUserObjectCreates a UserObject for circular cuts on 3D meshes for XFEM
- EllipseCutUserObjectCreates a UserObject for elliptical cuts on 3D meshes for XFEM
- LevelSetCutUserObjectXFEM mesh cut by level set function
- LineSegmentCutSetUserObjectCreates a UserObject for a line segment cut on 2D meshes for XFEM
- LineSegmentCutUserObjectCreates a UserObject for a line segment cut on 2D meshes for XFEM
- MeshCut3DUserObjectCreates a UserObject for a mesh cutter in 3D problems
- MovingLineSegmentCutSetUserObjectCreates a UserObject for a moving line segment cut on 2D meshes for XFEM
- PointValueAtXFEMInterfaceObtain field values and gradients on the interface.
- RectangleCutUserObjectCreates a UserObject for planar cuts on 3D meshes for XFEM
- XFEMPhaseTransitionMovingInterfaceVelocitycalculate the interface velocity for a simple phase transition problem.
- XFEMRankTwoTensorMarkerUserObjectMark elements to be cut by XFEM based on a scalar extracted from a RankTwoTensor

- XFEMApp
- XFEMActionAction to input general parameters and simulation options for use in XFEM.