This is the XFEM class.
More...
#include <XFEM.h>
Public Member Functions | |
| XFEM (const InputParameters ¶ms) | |
| ~XFEM () | |
| void | addGeometricCut (GeometricCutUserObject *geometric_cut) |
| void | addStateMarkedElem (unsigned int elem_id, RealVectorValue &normal) |
| void | addStateMarkedElem (unsigned int elem_id, RealVectorValue &normal, unsigned int marked_side) |
| void | addStateMarkedFrag (unsigned int elem_id, RealVectorValue &normal) |
| void | clearStateMarkedElems () |
| void | addGeomMarkedElem2D (const unsigned int elem_id, const Xfem::GeomMarkedElemInfo2D geom_info, const unsigned int interface_id) |
| Add information about a new cut to be performed on a specific 2d element. | |
| void | addGeomMarkedElem3D (const unsigned int elem_id, const Xfem::GeomMarkedElemInfo3D geom_info, const unsigned int interface_id) |
| Add information about a new cut to be performed on a specific 3d element. | |
| void | clearGeomMarkedElems () |
| Clear out the list of elements to be marked for cutting. | |
| virtual bool | update (Real time, const std::vector< std::shared_ptr< NonlinearSystemBase > > &nl, AuxiliarySystem &aux) override |
| virtual void | initSolution (const std::vector< std::shared_ptr< NonlinearSystemBase > > &nl, AuxiliarySystem &aux) override |
| void | buildEFAMesh () |
| bool | markCuts (Real time) |
| bool | markCutEdgesByGeometry () |
| bool | markCutEdgesByState (Real time) |
| bool | markCutFacesByGeometry () |
| bool | markCutFacesByState () |
| bool | initCutIntersectionEdge (Point cut_origin, RealVectorValue cut_normal, Point &edge_p1, Point &edge_p2, Real &dist) |
| bool | cutMeshWithEFA (const std::vector< std::shared_ptr< NonlinearSystemBase > > &nl, AuxiliarySystem &aux) |
| bool | healMesh () |
| Potentially heal the mesh by merging some of the pairs of partial elements cut by XFEM back into single elements if indicated by the cutting objects. | |
| virtual bool | updateHeal () override |
| Point | getEFANodeCoords (EFANode *CEMnode, EFAElement *CEMElem, const Elem *elem, MeshBase *displaced_mesh=nullptr) const |
| Real | getPhysicalVolumeFraction (const Elem *elem) const |
| Get the volume fraction of an element that is physical. | |
| bool | isPointInsidePhysicalDomain (const Elem *elem, const Point &point) const |
| Return true if the point is inside the element physical domain Note: if this element is not cut, return true too. | |
| Real | getCutPlane (const Elem *elem, const Xfem::XFEM_CUTPLANE_QUANTITY quantity, unsigned int plane_id) const |
| Get specified component of normal or origin for cut plane for a given element. | |
| bool | isElemAtCrackTip (const Elem *elem) const |
| bool | isElemCut (const Elem *elem, XFEMCutElem *&xfce) const |
| bool | isElemCut (const Elem *elem) const |
| void | getFragmentFaces (const Elem *elem, std::vector< std::vector< Point > > &frag_faces, bool displaced_mesh=false) const |
| void | storeCrackTipOriginAndDirection () |
| void | correctCrackExtensionDirection (const Elem *elem, EFAElement2D *CEMElem, EFAEdge *orig_edge, Point normal, Point crack_tip_origin, Point crack_tip_direction, Real &distance_keep, unsigned int &edge_id_keep, Point &normal_keep) |
| void | getCrackTipOrigin (std::map< unsigned int, const Elem * > &elem_id_crack_tip, std::vector< Point > &crack_front_points) |
| Xfem::XFEM_QRULE & | getXFEMQRule () |
| void | setXFEMQRule (std::string &xfem_qrule) |
| void | setCrackGrowthMethod (bool use_crack_growth_increment, Real crack_growth_increment) |
| void | setDebugOutputLevel (unsigned int debug_output_level) |
| Controls amount of debugging information output. | |
| void | setMinWeightMultiplier (Real min_weight_multiplier) |
| Controls the minimum average weight multiplier for each element. | |
| virtual bool | getXFEMWeights (MooseArray< Real > &weights, const Elem *elem, QBase *qrule, const MooseArray< Point > &q_points) override |
| virtual bool | getXFEMFaceWeights (MooseArray< Real > &weights, const Elem *elem, QBase *qrule, const MooseArray< Point > &q_points, unsigned int side) override |
| virtual const ElementPairLocator::ElementPairList * | getXFEMCutElemPairs (unsigned int interface_id) |
| Get the list of cut element pairs corresponding to a given interface ID. | |
| virtual const ElementPairLocator::ElementPairList * | getXFEMDisplacedCutElemPairs (unsigned int interface_id) |
| Get the list of cut element pairs on the displaced mesh corresponding to a given interface ID. | |
| virtual unsigned int | getGeometricCutID (const GeometricCutUserObject *gcu) |
| Get the interface ID corresponding to a given GeometricCutUserObject. | |
| virtual void | getXFEMIntersectionInfo (const Elem *elem, unsigned int plane_id, Point &normal, std::vector< Point > &intersectionPoints, bool displaced_mesh=false) const |
| virtual void | getXFEMqRuleOnLine (std::vector< Point > &intersection_points, std::vector< Point > &quad_pts, std::vector< Real > &quad_wts) const |
| virtual void | getXFEMqRuleOnSurface (std::vector< Point > &intersection_points, std::vector< Point > &quad_pts, std::vector< Real > &quad_wts) const |
| bool | has_secondary_cut () |
| EFAElement2D * | getEFAElem2D (const Elem *elem) |
| Get the EFAElement2D object for a specified libMesh element. | |
| EFAElement3D * | getEFAElem3D (const Elem *elem) |
| Get the EFAElement3D object for a specified libMesh element. | |
| void | getFragmentEdges (const Elem *elem, EFAElement2D *CEMElem, std::vector< std::vector< Point > > &frag_edges) const |
| void | getFragmentFaces (const Elem *elem, EFAElement3D *CEMElem, std::vector< std::vector< Point > > &frag_faces) const |
| const std::map< const Elem *, std::vector< Point > > & | getCrackTipOriginMap () const |
| CutSubdomainID | getCutSubdomainID (const GeometricCutUserObject *gcuo, const Elem *cut_elem, const Elem *parent_elem=nullptr) const |
| Determine which cut subdomain the element belongs to relative to the cut. | |
| void | setMesh (MooseMesh *mesh) |
| void | setDisplacedMesh (MooseMesh *displaced_mesh) |
| void | setMaterialData (const std::vector< MaterialData * > &data) |
| void | setBoundaryMaterialData (const std::vector< MaterialData * > &data) |
| virtual bool | getXFEMWeights (MooseArray< Real > &weights, const Elem *elem, libMesh::QBase *qrule, const MooseArray< Point > &q_points)=0 |
| virtual bool | getXFEMFaceWeights (MooseArray< Real > &weights, const Elem *elem, libMesh::QBase *qrule, const MooseArray< Point > &q_points, unsigned int side)=0 |
Public Attributes | |
| const ConsoleStream | _console |
Protected Attributes | |
| FEProblemBase * | _fe_problem |
| std::vector< MaterialData * > | _material_data |
| std::vector< MaterialData * > | _bnd_material_data |
| MooseMesh * | _moose_mesh |
| MooseMesh * | _moose_displaced_mesh |
| MeshBase * | _mesh |
| MeshBase * | _displaced_mesh |
Private Member Functions | |
| void | storeSolutionForNode (const Node *node_to_store_to, const Node *node_to_store_from, SystemBase &sys, std::map< unique_id_type, std::vector< Real > > &stored_solution, const NumericVector< Number > ¤t_solution, const NumericVector< Number > &old_solution, const NumericVector< Number > &older_solution) |
| Store the solution in stored_solution for a given node. | |
| void | storeSolutionForElement (const Elem *elem_to_store_to, const Elem *elem_to_store_from, SystemBase &sys, std::map< unique_id_type, std::vector< Real > > &stored_solution, const NumericVector< Number > ¤t_solution, const NumericVector< Number > &old_solution, const NumericVector< Number > &older_solution) |
| Store the solution in stored_solution for a given element. | |
| void | setSolution (SystemBase &sys, const std::map< unique_id_type, std::vector< Real > > &stored_solution, NumericVector< Number > ¤t_solution, NumericVector< Number > &old_solution, NumericVector< Number > &older_solution) |
| Set the solution for all locally-owned nodes/elements that have stored values. | |
| void | setSolutionForDOFs (const std::vector< Real > &stored_solution, const std::vector< dof_id_type > &stored_solution_dofs, NumericVector< Number > ¤t_solution, NumericVector< Number > &old_solution, NumericVector< Number > &older_solution) |
| Set the solution for a set of DOFs. | |
| std::vector< dof_id_type > | getElementSolutionDofs (const Elem *elem, SystemBase &sys) const |
| Get a vector of the dof indices for all components of all variables associated with an element. | |
| std::vector< dof_id_type > | getNodeSolutionDofs (const Node *node, SystemBase &sys) const |
| Get a vector of the dof indices for all components of all variables associated with a node. | |
| const GeometricCutUserObject * | getGeometricCutForElem (const Elem *elem) const |
| Get the GeometricCutUserObject associated with an element. | |
| void | storeMaterialPropertiesForElementHelper (const Elem *elem, MaterialPropertyStorage &storage) |
| void | storeMaterialPropertiesForElement (const Elem *parent_elem, const Elem *child_elem) |
| Helper function to store the material properties of a healed element. | |
| void | loadMaterialPropertiesForElementHelper (const Elem *elem, const Xfem::CachedMaterialProperties &cached_props, MaterialPropertyStorage &storage) const |
| Load the material properties. | |
| void | loadMaterialPropertiesForElement (const Elem *elem, const Elem *elem_from, std::unordered_map< const Elem *, Xfem::CutElemInfo > &cached_cei) const |
| Helper function to store the material properties of a healed element. | |
| const Node * | pickFirstPhysicalNode (const Elem *e, const Elem *e0) const |
| Return the first node in the provided element that is found to be in the physical domain. | |
Private Attributes | |
| bool | _has_secondary_cut |
| Xfem::XFEM_QRULE | _XFEM_qrule |
| bool | _use_crack_growth_increment |
| Real | _crack_growth_increment |
| std::vector< const GeometricCutUserObject * > | _geometric_cuts |
| std::map< unique_id_type, XFEMCutElem * > | _cut_elem_map |
| std::set< const Elem * > | _crack_tip_elems |
| std::set< const Elem * > | _crack_tip_elems_to_be_healed |
| std::map< unsigned int, ElementPairLocator::ElementPairList > | _sibling_elems |
| std::map< unsigned int, ElementPairLocator::ElementPairList > | _sibling_displaced_elems |
| std::map< const Elem *, std::vector< Point > > | _elem_crack_origin_direction_map |
| std::map< const Elem *, RealVectorValue > | _state_marked_elems |
| std::set< const Elem * > | _state_marked_frags |
| std::map< const Elem *, unsigned int > | _state_marked_elem_sides |
| int | _state_marked_t_step |
| The timestep index at which the state marks were added. | |
| std::map< const Elem *, std::vector< Xfem::GeomMarkedElemInfo2D > > | _geom_marked_elems_2d |
| Data structure for storing information about all 2D elements to be cut by geometry. | |
| std::map< const Elem *, std::vector< Xfem::GeomMarkedElemInfo3D > > | _geom_marked_elems_3d |
| Data structure for storing information about all 3D elements to be cut by geometry. | |
| std::map< unsigned int, std::set< unsigned int > > | _geom_marker_id_elems |
| Data structure for storing the elements cut by specific geometric cutters. | |
| std::map< const GeometricCutUserObject *, unsigned int > | _geom_marker_id_map |
| Data structure for storing the GeommetricCutUserObjects and their corresponding id. | |
| ElementFragmentAlgorithm | _efa_mesh |
| unsigned int | _debug_output_level |
| Controls amount of debugging output information 0: None 1: Summary 2: Details on modifications to mesh 3: Full dump of element fragment algorithm mesh. | |
| Real | _min_weight_multiplier |
| The minimum average multiplier applied by XFEM to the standard quadrature weights to integrate partial elements. | |
| std::map< unique_id_type, std::vector< Real > > | _cached_solution |
| Data structure to store the nonlinear solution for nodes/elements affected by XFEM For each node/element, this is stored as a vector that contains all components of all applicable variables in an order defined by getElementSolutionDofs() or getNodeSolutionDofs(). | |
| std::map< unique_id_type, std::vector< Real > > | _cached_aux_solution |
| Data structure to store the auxiliary solution for nodes/elements affected by XFEM For each node/element, this is stored as a vector that contains all components of all applicable variables in an order defined by getElementSolutionDofs() or getNodeSolutionDofs(). | |
| std::unordered_map< const Elem *, Xfem::CutElemInfo > | _geom_cut_elems |
| All geometrically cut elements and their CutElemInfo during the current execution of XFEM_MARK. | |
| std::unordered_map< const Elem *, Xfem::CutElemInfo > | _old_geom_cut_elems |
| All geometrically cut elements and their CutElemInfo before the current execution of XFEM_MARK. | |
This is the XFEM class.
This class implements algorithms for dynamic mesh modification in support of a phantom node approach for XFEM
|
explicit |
Definition at line 36 of file XFEM.C.
| XFEM::~XFEM | ( | ) |
| void XFEM::addGeometricCut | ( | GeometricCutUserObject * | geometric_cut | ) |
Definition at line 59 of file XFEM.C.
| void XFEM::addGeomMarkedElem2D | ( | const unsigned int | elem_id, |
| const Xfem::GeomMarkedElemInfo2D | geom_info, | ||
| const unsigned int | interface_id | ||
| ) |
Add information about a new cut to be performed on a specific 2d element.
| elem_id | The id of the element to be cut |
| geom_info | The object containing information about the cut to be performed |
| interface_id | The ID of the interface |
Definition at line 162 of file XFEM.C.
| void XFEM::addGeomMarkedElem3D | ( | const unsigned int | elem_id, |
| const Xfem::GeomMarkedElemInfo3D | geom_info, | ||
| const unsigned int | interface_id | ||
| ) |
Add information about a new cut to be performed on a specific 3d element.
| elem_id | The id of the element to be cut |
| geom_info | The object containing information about the cut to be performed |
| interface_id | The ID of the interface |
Definition at line 172 of file XFEM.C.
| void XFEM::addStateMarkedElem | ( | unsigned int | elem_id, |
| RealVectorValue & | normal | ||
| ) |
Definition at line 115 of file XFEM.C.
Referenced by addStateMarkedElem(), and addStateMarkedFrag().
| void XFEM::addStateMarkedElem | ( | unsigned int | elem_id, |
| RealVectorValue & | normal, | ||
| unsigned int | marked_side | ||
| ) |
Definition at line 127 of file XFEM.C.
| void XFEM::addStateMarkedFrag | ( | unsigned int | elem_id, |
| RealVectorValue & | normal | ||
| ) |
Definition at line 140 of file XFEM.C.
| void XFEM::buildEFAMesh | ( | ) |
Definition at line 348 of file XFEM.C.
Referenced by update(), and updateHeal().
| void XFEM::clearGeomMarkedElems | ( | ) |
| void XFEM::clearStateMarkedElems | ( | ) |
Definition at line 154 of file XFEM.C.
Referenced by update().
| void XFEM::correctCrackExtensionDirection | ( | const Elem * | elem, |
| EFAElement2D * | CEMElem, | ||
| EFAEdge * | orig_edge, | ||
| Point | normal, | ||
| Point | crack_tip_origin, | ||
| Point | crack_tip_direction, | ||
| Real & | distance_keep, | ||
| unsigned int & | edge_id_keep, | ||
| Point & | normal_keep | ||
| ) |
Definition at line 456 of file XFEM.C.
Referenced by markCutEdgesByState().
| bool XFEM::cutMeshWithEFA | ( | const std::vector< std::shared_ptr< NonlinearSystemBase > > & | nl, |
| AuxiliarySystem & | aux | ||
| ) |
Definition at line 1113 of file XFEM.C.
Referenced by update().
| void XFEM::getCrackTipOrigin | ( | std::map< unsigned int, const Elem * > & | elem_id_crack_tip, |
| std::vector< Point > & | crack_front_points | ||
| ) |
Definition at line 69 of file XFEM.C.
|
inline |
| Real XFEM::getCutPlane | ( | const Elem * | elem, |
| const Xfem::XFEM_CUTPLANE_QUANTITY | quantity, | ||
| unsigned int | plane_id | ||
| ) | const |
Get specified component of normal or origin for cut plane for a given element.
Definition at line 1678 of file XFEM.C.
| CutSubdomainID XFEM::getCutSubdomainID | ( | const GeometricCutUserObject * | gcuo, |
| const Elem * | cut_elem, | ||
| const Elem * | parent_elem = nullptr |
||
| ) | const |
Determine which cut subdomain the element belongs to relative to the cut.
| gcuo | The GeometricCutUserObject for the cut |
| cut_elem | The element being cut |
| parent_elem | The parent element |
Definition at line 2301 of file XFEM.C.
Referenced by cutMeshWithEFA().
| EFAElement2D * XFEM::getEFAElem2D | ( | const Elem * | elem | ) |
Get the EFAElement2D object for a specified libMesh element.
| elem | Pointer to the libMesh element for which the object is requested |
Definition at line 1758 of file XFEM.C.
Referenced by markCutEdgesByGeometry(), and markCutEdgesByState().
| EFAElement3D * XFEM::getEFAElem3D | ( | const Elem * | elem | ) |
Get the EFAElement3D object for a specified libMesh element.
| elem | Pointer to the libMesh element for which the object is requested |
Definition at line 1770 of file XFEM.C.
Referenced by markCutFacesByGeometry().
| Point XFEM::getEFANodeCoords | ( | EFANode * | CEMnode, |
| EFAElement * | CEMElem, | ||
| const Elem * | elem, | ||
| MeshBase * | displaced_mesh = nullptr |
||
| ) | const |
Definition at line 1608 of file XFEM.C.
Referenced by correctCrackExtensionDirection(), getFragmentEdges(), getFragmentFaces(), and markCutEdgesByState().
|
private |
Get a vector of the dof indices for all components of all variables associated with an element.
| elem | Element for which dof indices are found |
| sys | System for which the dof indices are found |
Definition at line 2127 of file XFEM.C.
Referenced by setSolution(), and storeSolutionForElement().
| void XFEM::getFragmentEdges | ( | const Elem * | elem, |
| EFAElement2D * | CEMElem, | ||
| std::vector< std::vector< Point > > & | frag_edges | ||
| ) | const |
Definition at line 1782 of file XFEM.C.
| void XFEM::getFragmentFaces | ( | const Elem * | elem, |
| EFAElement3D * | CEMElem, | ||
| std::vector< std::vector< Point > > & | frag_faces | ||
| ) | const |
Definition at line 1803 of file XFEM.C.
| void XFEM::getFragmentFaces | ( | const Elem * | elem, |
| std::vector< std::vector< Point > > & | frag_faces, | ||
| bool | displaced_mesh = false |
||
| ) | const |
Definition at line 1741 of file XFEM.C.
|
private |
Get the GeometricCutUserObject associated with an element.
| elem | The element |
Definition at line 2185 of file XFEM.C.
Referenced by cutMeshWithEFA().
|
inlinevirtual |
Get the interface ID corresponding to a given GeometricCutUserObject.
| gcu | pointer to the GeometricCutUserObject |
|
private |
Get a vector of the dof indices for all components of all variables associated with a node.
| node | Node for which dof indices are found |
| sys | System for which the dof indices are found |
Definition at line 2153 of file XFEM.C.
Referenced by setSolution(), and storeSolutionForNode().
| Real XFEM::getPhysicalVolumeFraction | ( | const Elem * | elem | ) | const |
Get the volume fraction of an element that is physical.
Definition at line 1640 of file XFEM.C.
Referenced by markCutEdgesByState().
|
inlinevirtual |
Get the list of cut element pairs corresponding to a given interface ID.
| interface_id | The ID of the interface |
|
inlinevirtual |
Get the list of cut element pairs on the displaced mesh corresponding to a given interface ID.
| interface_id | The ID of the interface |
|
overridevirtual |
Definition at line 1890 of file XFEM.C.
|
virtual |
Definition at line 1908 of file XFEM.C.
| Xfem::XFEM_QRULE & XFEM::getXFEMQRule | ( | ) |
Definition at line 1825 of file XFEM.C.
Referenced by getXFEMFaceWeights(), and getXFEMWeights().
|
virtual |
Definition at line 1927 of file XFEM.C.
|
virtual |
Definition at line 1954 of file XFEM.C.
|
overridevirtual |
Definition at line 1861 of file XFEM.C.
| bool XFEM::healMesh | ( | ) |
Potentially heal the mesh by merging some of the pairs of partial elements cut by XFEM back into single elements if indicated by the cutting objects.
Definition at line 929 of file XFEM.C.
Referenced by updateHeal().
| bool XFEM::initCutIntersectionEdge | ( | Point | cut_origin, |
| RealVectorValue | cut_normal, | ||
| Point & | edge_p1, | ||
| Point & | edge_p2, | ||
| Real & | dist | ||
| ) |
Definition at line 910 of file XFEM.C.
Referenced by correctCrackExtensionDirection(), and markCutEdgesByState().
|
overridevirtual |
Implements XFEMInterface.
Definition at line 317 of file XFEM.C.
| bool XFEM::isElemAtCrackTip | ( | const Elem * | elem | ) | const |
Definition at line 1712 of file XFEM.C.
Referenced by markCutEdgesByGeometry(), and markCutEdgesByState().
| bool XFEM::isElemCut | ( | const Elem * | elem | ) | const |
| bool XFEM::isElemCut | ( | const Elem * | elem, |
| XFEMCutElem *& | xfce | ||
| ) | const |
Definition at line 1718 of file XFEM.C.
Referenced by getXFEMFaceWeights(), getXFEMWeights(), and isElemCut().
| bool XFEM::isPointInsidePhysicalDomain | ( | const Elem * | elem, |
| const Point & | point | ||
| ) | const |
Return true if the point is inside the element physical domain Note: if this element is not cut, return true too.
Definition at line 1660 of file XFEM.C.
Referenced by pickFirstPhysicalNode().
|
private |
Helper function to store the material properties of a healed element.
| elem | The cut element to restore material properties to. |
| elem_from | The element to copy material properties from. |
| cached_cei | The material properties cache to use. |
Definition at line 2267 of file XFEM.C.
Referenced by cutMeshWithEFA(), and healMesh().
|
private |
Load the material properties.
| props_deserialized | The material properties |
| props_serialized | The serialized material properties |
This does very dirty things and writes back to MOOSE's stateful properties. It should not do this in the future.
Definition at line 2243 of file XFEM.C.
Referenced by loadMaterialPropertiesForElement().
| bool XFEM::markCutEdgesByGeometry | ( | ) |
Definition at line 404 of file XFEM.C.
Referenced by markCuts().
| bool XFEM::markCutEdgesByState | ( | Real | time | ) |
Definition at line 597 of file XFEM.C.
Referenced by markCuts().
| bool XFEM::markCutFacesByGeometry | ( | ) |
Definition at line 861 of file XFEM.C.
Referenced by markCuts().
| bool XFEM::markCutFacesByState | ( | ) |
Definition at line 902 of file XFEM.C.
Referenced by markCuts().
| bool XFEM::markCuts | ( | Real | time | ) |
Definition at line 387 of file XFEM.C.
Referenced by update().
|
private |
Return the first node in the provided element that is found to be in the physical domain.
| e | Constant pointer to the child element |
| e0 | Constant pointer to the parent element whose nodes will be querried |
Definition at line 2314 of file XFEM.C.
Referenced by getCutSubdomainID().
| void XFEM::setCrackGrowthMethod | ( | bool | use_crack_growth_increment, |
| Real | crack_growth_increment | ||
| ) |
Definition at line 1842 of file XFEM.C.
| void XFEM::setDebugOutputLevel | ( | unsigned int | debug_output_level | ) |
Controls amount of debugging information output.
| debug_output_level | How much information to output (see description of _debug_output_level) |
| void XFEM::setMinWeightMultiplier | ( | Real | min_weight_multiplier | ) |
Controls the minimum average weight multiplier for each element.
| min_weight_multiplier | The minimum average weight multiplier applied by XFEM to the standard quadrature weights |
|
private |
Set the solution for all locally-owned nodes/elements that have stored values.
| sys | System for which the solution is set |
| stored_solution | Data structure that the stored solution is obtained from |
| current_solution | Current solution vector that will be set |
| old_solution | Old solution vector that will be set |
| older_solution | Older solution vector that will be set |
Definition at line 2066 of file XFEM.C.
Referenced by initSolution().
|
private |
Set the solution for a set of DOFs.
| stored_solution | Stored solution values to set the solution to |
| stored_solution_dofs | Dof indices for the entries in stored_solution |
| current_solution | Current solution vector that will be set |
| old_solution | Old solution vector that will be set |
| older_solution | Older solution vector that will be set |
Definition at line 2104 of file XFEM.C.
Referenced by setSolution().
| void XFEM::setXFEMQRule | ( | std::string & | xfem_qrule | ) |
| void XFEM::storeCrackTipOriginAndDirection | ( | ) |
Definition at line 189 of file XFEM.C.
Referenced by update().
|
private |
Helper function to store the material properties of a healed element.
| parent_elem | The parent element |
| elem1 | The first child element |
| elem2 | The second child element |
Definition at line 2215 of file XFEM.C.
Referenced by healMesh().
|
private |
Definition at line 2197 of file XFEM.C.
Referenced by storeMaterialPropertiesForElement().
|
private |
Store the solution in stored_solution for a given element.
| elem_to_store_to | Element for which the solution will be stored |
| elem_to_store_from | Element from which the solution to be stored is obtained |
| sys | System from which the solution is stored |
| stored_solution | Data structure that the stored solution is saved to |
| current_solution | Current solution vector that the solution is obtained from |
| old_solution | Old solution vector that the solution is obtained from |
| older_solution | Older solution vector that the solution is obtained from |
Definition at line 2032 of file XFEM.C.
Referenced by cutMeshWithEFA().
|
private |
Store the solution in stored_solution for a given node.
| node_to_store_to | Node for which the solution will be stored |
| node_to_store_from | Node from which the solution to be stored is obtained |
| sys | System from which the solution is stored |
| stored_solution | Data structure that the stored solution is saved to |
| current_solution | Current solution vector that the solution is obtained from |
| old_solution | Old solution vector that the solution is obtained from |
| older_solution | Older solution vector that the solution is obtained from |
Definition at line 1998 of file XFEM.C.
Referenced by cutMeshWithEFA().
|
overridevirtual |
Implements XFEMInterface.
Definition at line 265 of file XFEM.C.
|
overridevirtual |
Implements XFEMInterface.
Definition at line 228 of file XFEM.C.
|
private |
Data structure to store the auxiliary solution for nodes/elements affected by XFEM For each node/element, this is stored as a vector that contains all components of all applicable variables in an order defined by getElementSolutionDofs() or getNodeSolutionDofs().
This vector first contains the current solution in that order, followed by the old and older solutions, also in that same order.
Definition at line 396 of file XFEM.h.
Referenced by cutMeshWithEFA(), and initSolution().
|
private |
Data structure to store the nonlinear solution for nodes/elements affected by XFEM For each node/element, this is stored as a vector that contains all components of all applicable variables in an order defined by getElementSolutionDofs() or getNodeSolutionDofs().
This vector first contains the current solution in that order, followed by the old and older solutions, also in that same order.
Definition at line 387 of file XFEM.h.
Referenced by cutMeshWithEFA(), and initSolution().
|
private |
Definition at line 332 of file XFEM.h.
Referenced by markCutEdgesByState(), and setCrackGrowthMethod().
|
private |
Definition at line 337 of file XFEM.h.
Referenced by cutMeshWithEFA(), healMesh(), and isElemAtCrackTip().
|
private |
Definition at line 338 of file XFEM.h.
Referenced by cutMeshWithEFA(), and healMesh().
|
private |
Definition at line 336 of file XFEM.h.
Referenced by buildEFAMesh(), cutMeshWithEFA(), getCutPlane(), getFragmentFaces(), getPhysicalVolumeFraction(), getXFEMIntersectionInfo(), healMesh(), isElemCut(), isPointInsidePhysicalDomain(), storeCrackTipOriginAndDirection(), and ~XFEM().
|
private |
Controls amount of debugging output information 0: None 1: Summary 2: Details on modifications to mesh 3: Full dump of element fragment algorithm mesh.
Definition at line 374 of file XFEM.h.
Referenced by cutMeshWithEFA(), healMesh(), and setDebugOutputLevel().
|
private |
Definition at line 367 of file XFEM.h.
Referenced by buildEFAMesh(), cutMeshWithEFA(), getEFAElem2D(), getEFAElem3D(), markCutEdgesByGeometry(), markCutEdgesByState(), markCutFacesByGeometry(), and storeCrackTipOriginAndDirection().
|
private |
Definition at line 342 of file XFEM.h.
Referenced by cutMeshWithEFA(), getCrackTipOrigin(), getCrackTipOriginMap(), healMesh(), markCutEdgesByState(), and storeCrackTipOriginAndDirection().
|
private |
All geometrically cut elements and their CutElemInfo during the current execution of XFEM_MARK.
This data structure is updated everytime a new cut element is created.
Definition at line 402 of file XFEM.h.
Referenced by cutMeshWithEFA(), healMesh(), storeMaterialPropertiesForElement(), and storeMaterialPropertiesForElementHelper().
|
private |
Data structure for storing information about all 2D elements to be cut by geometry.
Definition at line 356 of file XFEM.h.
Referenced by addGeomMarkedElem2D(), clearGeomMarkedElems(), and markCutEdgesByGeometry().
|
private |
Data structure for storing information about all 3D elements to be cut by geometry.
Definition at line 359 of file XFEM.h.
Referenced by addGeomMarkedElem3D(), clearGeomMarkedElems(), and markCutFacesByGeometry().
Data structure for storing the elements cut by specific geometric cutters.
Definition at line 362 of file XFEM.h.
Referenced by addGeomMarkedElem2D(), addGeomMarkedElem3D(), cutMeshWithEFA(), getGeometricCutForElem(), and updateHeal().
|
private |
Data structure for storing the GeommetricCutUserObjects and their corresponding id.
Definition at line 365 of file XFEM.h.
Referenced by addGeometricCut(), and getGeometricCutID().
|
private |
Definition at line 334 of file XFEM.h.
Referenced by addGeometricCut(), cutMeshWithEFA(), getGeometricCutForElem(), and healMesh().
|
private |
Definition at line 327 of file XFEM.h.
Referenced by has_secondary_cut(), markCutEdgesByGeometry(), markCutEdgesByState(), and XFEM().
|
private |
The minimum average multiplier applied by XFEM to the standard quadrature weights to integrate partial elements.
Definition at line 378 of file XFEM.h.
Referenced by getXFEMWeights(), and setMinWeightMultiplier().
|
private |
All geometrically cut elements and their CutElemInfo before the current execution of XFEM_MARK.
Definition at line 408 of file XFEM.h.
Referenced by cutMeshWithEFA().
|
private |
Definition at line 340 of file XFEM.h.
Referenced by cutMeshWithEFA(), getXFEMDisplacedCutElemPairs(), and healMesh().
|
private |
Definition at line 339 of file XFEM.h.
Referenced by cutMeshWithEFA(), getXFEMCutElemPairs(), and healMesh().
|
private |
Definition at line 348 of file XFEM.h.
Referenced by addStateMarkedElem(), clearStateMarkedElems(), and markCutEdgesByState().
|
private |
Definition at line 346 of file XFEM.h.
Referenced by addStateMarkedElem(), clearStateMarkedElems(), markCutEdgesByState(), and update().
|
private |
Definition at line 347 of file XFEM.h.
Referenced by addStateMarkedFrag(), clearStateMarkedElems(), and markCutEdgesByState().
|
private |
The timestep index at which the state marks were added.
Marks added at the end of a timestep are meant for the next one, so marks from the current timestep can only come from an attempt that was later rejected (e.g. by –test-restep) and must not cut the mesh.
Definition at line 353 of file XFEM.h.
Referenced by addStateMarkedElem(), and update().
|
private |
Definition at line 331 of file XFEM.h.
Referenced by markCutEdgesByState(), and setCrackGrowthMethod().
|
private |
Definition at line 329 of file XFEM.h.
Referenced by getXFEMQRule(), and setXFEMQRule().