www.mooseframework.org
XFEM.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "ElementPairLocator.h"
14 #include "XFEMInterface.h"
16 
17 #include "libmesh/vector_value.h"
18 #include "libmesh/quadrature.h"
19 
20 #include "GeometricCutUserObject.h"
21 
22 // Forward declarations
23 class SystemBase;
24 
25 namespace Xfem
26 {
28 {
35 };
36 
38 {
42 };
43 } // namespace Xfem
44 
45 class XFEMCutElem;
47 class EFANode;
48 class EFAEdge;
49 class EFAElement;
50 class EFAElement2D;
51 class EFAElement3D;
52 
59 // ------------------------------------------------------------
60 // XFEM class definition
61 class XFEM : public XFEMInterface
62 {
63 public:
64  explicit XFEM(const InputParameters & params);
65 
66  ~XFEM();
67 
68  void addGeometricCut(GeometricCutUserObject * geometric_cut);
69 
70  void addStateMarkedElem(unsigned int elem_id, RealVectorValue & normal);
71  void addStateMarkedElem(unsigned int elem_id, RealVectorValue & normal, unsigned int marked_side);
72  void addStateMarkedFrag(unsigned int elem_id, RealVectorValue & normal);
73 
74  void clearStateMarkedElems();
75 
82  void addGeomMarkedElem2D(const unsigned int elem_id,
83  const Xfem::GeomMarkedElemInfo2D geom_info,
84  const unsigned int interface_id);
85 
92  void addGeomMarkedElem3D(const unsigned int elem_id,
93  const Xfem::GeomMarkedElemInfo3D geom_info,
94  const unsigned int interface_id);
95 
99  void clearGeomMarkedElems();
100 
101  virtual bool update(Real time, NonlinearSystemBase & nl, AuxiliarySystem & aux) override;
102 
103  virtual void initSolution(NonlinearSystemBase & nl, AuxiliarySystem & aux) override;
104 
105  void buildEFAMesh();
106  bool markCuts(Real time);
107  bool markCutEdgesByGeometry();
108  bool markCutEdgesByState(Real time);
109  bool markCutFacesByGeometry();
110  bool markCutFacesByState();
112  Point cut_origin, RealVectorValue cut_normal, Point & edge_p1, Point & edge_p2, Real & dist);
113  bool cutMeshWithEFA(NonlinearSystemBase & nl, AuxiliarySystem & aux);
114 
121  bool healMesh();
122 
123  virtual bool updateHeal() override;
124  Point getEFANodeCoords(EFANode * CEMnode,
125  EFAElement * CEMElem,
126  const Elem * elem,
127  MeshBase * displaced_mesh = NULL) const;
128 
132  Real getPhysicalVolumeFraction(const Elem * elem) const;
133 
138  bool isPointInsidePhysicalDomain(const Elem * elem, const Point & point) const;
139 
143  Real getCutPlane(const Elem * elem,
144  const Xfem::XFEM_CUTPLANE_QUANTITY quantity,
145  unsigned int plane_id) const;
146 
147  bool isElemAtCrackTip(const Elem * elem) const;
148  bool isElemCut(const Elem * elem, XFEMCutElem *& xfce) const;
149  bool isElemCut(const Elem * elem) const;
150  void getFragmentFaces(const Elem * elem,
151  std::vector<std::vector<Point>> & frag_faces,
152  bool displaced_mesh = false) const;
154 
155  void correctCrackExtensionDirection(const Elem * elem,
156  EFAElement2D * CEMElem,
157  EFAEdge * orig_edge,
158  Point normal,
159  Point crack_tip_origin,
160  Point crack_tip_direction,
161  Real & distance_keep,
162  unsigned int & edge_id_keep,
163  Point & normal_keep);
164 
165  void getCrackTipOrigin(std::map<unsigned int, const Elem *> & elem_id_crack_tip,
166  std::vector<Point> & crack_front_points);
167 
169  void setXFEMQRule(std::string & xfem_qrule);
170  void setCrackGrowthMethod(bool use_crack_growth_increment, Real crack_growth_increment);
171 
177  void setDebugOutputLevel(unsigned int debug_output_level);
178 
179  virtual bool getXFEMWeights(MooseArray<Real> & weights,
180  const Elem * elem,
181  QBase * qrule,
182  const MooseArray<Point> & q_points) override;
183  virtual bool getXFEMFaceWeights(MooseArray<Real> & weights,
184  const Elem * elem,
185  QBase * qrule,
186  const MooseArray<Point> & q_points,
187  unsigned int side) override;
188 
195  virtual const ElementPairLocator::ElementPairList * getXFEMCutElemPairs(unsigned int interface_id)
196  {
197  return &_sibling_elems[interface_id];
198  }
199 
206  virtual const ElementPairLocator::ElementPairList *
207  getXFEMDisplacedCutElemPairs(unsigned int interface_id)
208  {
209  return &_sibling_displaced_elems[interface_id];
210  }
211 
217  virtual unsigned int getGeometricCutID(const GeometricCutUserObject * gcu)
218  {
219  return _geom_marker_id_map[gcu];
220  };
221 
222  virtual void getXFEMIntersectionInfo(const Elem * elem,
223  unsigned int plane_id,
224  Point & normal,
225  std::vector<Point> & intersectionPoints,
226  bool displaced_mesh = false) const;
227  virtual void getXFEMqRuleOnLine(std::vector<Point> & intersection_points,
228  std::vector<Point> & quad_pts,
229  std::vector<Real> & quad_wts) const;
230  virtual void getXFEMqRuleOnSurface(std::vector<Point> & intersection_points,
231  std::vector<Point> & quad_pts,
232  std::vector<Real> & quad_wts) const;
234 
239  EFAElement2D * getEFAElem2D(const Elem * elem);
240 
245  EFAElement3D * getEFAElem3D(const Elem * elem);
246 
247  void getFragmentEdges(const Elem * elem,
248  EFAElement2D * CEMElem,
249  std::vector<std::vector<Point>> & frag_edges) const;
250  void getFragmentFaces(const Elem * elem,
251  EFAElement3D * CEMElem,
252  std::vector<std::vector<Point>> & frag_faces) const;
253 
254  const std::map<const Elem *, std::vector<Point>> & getCrackTipOriginMap() const
255  {
257  }
258 
259 private:
261 
263 
266 
267  std::vector<const GeometricCutUserObject *> _geometric_cuts;
268 
269  std::map<unique_id_type, XFEMCutElem *> _cut_elem_map;
270  std::set<const Elem *> _crack_tip_elems;
271  std::set<const Elem *> _crack_tip_elems_to_be_healed;
272  std::map<unsigned int, ElementPairLocator::ElementPairList> _sibling_elems;
273  std::map<unsigned int, ElementPairLocator::ElementPairList> _sibling_displaced_elems;
274 
275  std::map<const Elem *, std::vector<Point>> _elem_crack_origin_direction_map;
276 
277  // std::map<const Elem*, Point> _crack_propagation_direction_map;
278 
279  std::map<const Elem *, RealVectorValue> _state_marked_elems;
280  std::set<const Elem *> _state_marked_frags;
281  std::map<const Elem *, unsigned int> _state_marked_elem_sides;
282 
284  std::map<const Elem *, std::vector<Xfem::GeomMarkedElemInfo2D>> _geom_marked_elems_2d;
285 
287  std::map<const Elem *, std::vector<Xfem::GeomMarkedElemInfo3D>> _geom_marked_elems_3d;
288 
290  std::map<unsigned int, std::set<unsigned int>> _geom_marker_id_elems;
291 
293  std::map<const GeometricCutUserObject *, unsigned int> _geom_marker_id_map;
294 
296 
302  unsigned int _debug_output_level;
303 
311  std::map<unique_id_type, std::vector<Real>> _cached_solution;
312 
320  std::map<unique_id_type, std::vector<Real>> _cached_aux_solution;
321 
332  void storeSolutionForNode(const Node * node_to_store_to,
333  const Node * node_to_store_from,
334  SystemBase & sys,
335  std::map<unique_id_type, std::vector<Real>> & stored_solution,
336  const NumericVector<Number> & current_solution,
337  const NumericVector<Number> & old_solution,
338  const NumericVector<Number> & older_solution);
339 
350  void storeSolutionForElement(const Elem * elem_to_store_to,
351  const Elem * elem_to_store_from,
352  SystemBase & sys,
353  std::map<unique_id_type, std::vector<Real>> & stored_solution,
354  const NumericVector<Number> & current_solution,
355  const NumericVector<Number> & old_solution,
356  const NumericVector<Number> & older_solution);
357 
366  void setSolution(SystemBase & sys,
367  const std::map<unique_id_type, std::vector<Real>> & stored_solution,
368  NumericVector<Number> & current_solution,
369  NumericVector<Number> & old_solution,
370  NumericVector<Number> & older_solution);
371 
380  void setSolutionForDOFs(const std::vector<Real> & stored_solution,
381  const std::vector<dof_id_type> & stored_solution_dofs,
382  NumericVector<Number> & current_solution,
383  NumericVector<Number> & old_solution,
384  NumericVector<Number> & older_solution);
385 
392  std::vector<dof_id_type> getElementSolutionDofs(const Elem * elem, SystemBase & sys) const;
393 
400  std::vector<dof_id_type> getNodeSolutionDofs(const Node * node, SystemBase & sys) const;
401 };
402 
XFEM::_geom_marker_id_elems
std::map< unsigned int, std::set< unsigned int > > _geom_marker_id_elems
Data structure for storing the elements cut by specific geometric cutters.
Definition: XFEM.h:290
ElementFragmentAlgorithm
Definition: ElementFragmentAlgorithm.h:19
XFEM::isElemAtCrackTip
bool isElemAtCrackTip(const Elem *elem) const
Definition: XFEM.C:1604
XFEM::storeSolutionForElement
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 > &current_solution, const NumericVector< Number > &old_solution, const NumericVector< Number > &older_solution)
Store the solution in stored_solution for a given element.
Definition: XFEM.C:1907
EFAElement
Definition: EFAElement.h:19
XFEM::_XFEM_qrule
Xfem::XFEM_QRULE _XFEM_qrule
Definition: XFEM.h:262
XFEM::getCutPlane
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.
Definition: XFEM.C:1570
Xfem::GeomMarkedElemInfo2D
Data structure describing geometrically described cut through 2D element.
Definition: GeometricCutUserObject.h:75
XFEM::storeSolutionForNode
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 > &current_solution, const NumericVector< Number > &old_solution, const NumericVector< Number > &older_solution)
Store the solution in stored_solution for a given node.
Definition: XFEM.C:1873
XFEM::_state_marked_frags
std::set< const Elem * > _state_marked_frags
Definition: XFEM.h:280
XFEM::getXFEMqRuleOnSurface
virtual void getXFEMqRuleOnSurface(std::vector< Point > &intersection_points, std::vector< Point > &quad_pts, std::vector< Real > &quad_wts) const
Definition: XFEM.C:1829
XFEM::addStateMarkedElem
void addStateMarkedElem(unsigned int elem_id, RealVectorValue &normal)
Definition: XFEM.C:112
XFEM::setCrackGrowthMethod
void setCrackGrowthMethod(bool use_crack_growth_increment, Real crack_growth_increment)
Definition: XFEM.C:1735
XFEM::getEFAElem3D
EFAElement3D * getEFAElem3D(const Elem *elem)
Get the EFAElement3D object for a specified libMesh element.
Definition: XFEM.C:1663
XFEM::has_secondary_cut
bool has_secondary_cut()
Definition: XFEM.h:233
XFEM::getXFEMIntersectionInfo
virtual void getXFEMIntersectionInfo(const Elem *elem, unsigned int plane_id, Point &normal, std::vector< Point > &intersectionPoints, bool displaced_mesh=false) const
Definition: XFEM.C:1783
XFEM::_geom_marked_elems_2d
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.
Definition: XFEM.h:284
XFEM::cutMeshWithEFA
bool cutMeshWithEFA(NonlinearSystemBase &nl, AuxiliarySystem &aux)
Definition: XFEM.C:1077
XFEM::getXFEMqRuleOnLine
virtual void getXFEMqRuleOnLine(std::vector< Point > &intersection_points, std::vector< Point > &quad_pts, std::vector< Real > &quad_wts) const
Definition: XFEM.C:1802
XFEM::setDebugOutputLevel
void setDebugOutputLevel(unsigned int debug_output_level)
Controls amount of debugging information output.
Definition: XFEM.C:1742
XFEM::getElementSolutionDofs
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.
Definition: XFEM.C:2002
XFEM::getGeometricCutID
virtual unsigned int getGeometricCutID(const GeometricCutUserObject *gcu)
Get the interface ID corresponding to a given GeometricCutUserObject.
Definition: XFEM.h:217
XFEM::clearStateMarkedElems
void clearStateMarkedElems()
Definition: XFEM.C:154
XFEM::_state_marked_elems
std::map< const Elem *, RealVectorValue > _state_marked_elems
Definition: XFEM.h:279
ElementFragmentAlgorithm.h
XFEM::isElemCut
bool isElemCut(const Elem *elem, XFEMCutElem *&xfce) const
Definition: XFEM.C:1610
Xfem::DIRECT
Definition: XFEM.h:41
XFEM::markCutFacesByGeometry
bool markCutFacesByGeometry()
Definition: XFEM.C:852
GeometricCutUserObject.h
XFEM::addStateMarkedFrag
void addStateMarkedFrag(unsigned int elem_id, RealVectorValue &normal)
Definition: XFEM.C:138
XFEM::buildEFAMesh
void buildEFAMesh()
Definition: XFEM.C:340
XFEM::setSolutionForDOFs
void setSolutionForDOFs(const std::vector< Real > &stored_solution, const std::vector< dof_id_type > &stored_solution_dofs, NumericVector< Number > &current_solution, NumericVector< Number > &old_solution, NumericVector< Number > &older_solution)
Set the solution for a set of DOFs.
Definition: XFEM.C:1979
XFEM::correctCrackExtensionDirection
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)
Definition: XFEM.C:447
GeometricCutUserObject
Definition: GeometricCutUserObject.h:106
XFEM::initSolution
virtual void initSolution(NonlinearSystemBase &nl, AuxiliarySystem &aux) override
Definition: XFEM.C:313
XFEMCrackGrowthIncrement2DCut.h
XFEM::_geom_marked_elems_3d
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.
Definition: XFEM.h:287
XFEM::markCutFacesByState
bool markCutFacesByState()
Definition: XFEM.C:893
XFEM::getPhysicalVolumeFraction
Real getPhysicalVolumeFraction(const Elem *elem) const
Get the volume fraction of an element that is physical.
Definition: XFEM.C:1532
XFEM::getXFEMQRule
Xfem::XFEM_QRULE & getXFEMQRule()
Definition: XFEM.C:1718
XFEM::getXFEMWeights
virtual bool getXFEMWeights(MooseArray< Real > &weights, const Elem *elem, QBase *qrule, const MooseArray< Point > &q_points) override
Definition: XFEM.C:1748
EFAElement3D
Definition: EFAElement3D.h:20
XFEM::setXFEMQRule
void setXFEMQRule(std::string &xfem_qrule)
Definition: XFEM.C:1724
Xfem::ORIGIN_X
Definition: XFEM.h:29
XFEM::_state_marked_elem_sides
std::map< const Elem *, unsigned int > _state_marked_elem_sides
Definition: XFEM.h:281
Xfem::NORMAL_X
Definition: XFEM.h:32
XFEM::_cached_solution
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/elem...
Definition: XFEM.h:311
XFEM::updateHeal
virtual bool updateHeal() override
Definition: XFEM.C:228
XFEM::markCutEdgesByState
bool markCutEdgesByState(Real time)
Definition: XFEM.C:588
XFEM::isPointInsidePhysicalDomain
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,...
Definition: XFEM.C:1552
XFEM::getFragmentFaces
void getFragmentFaces(const Elem *elem, std::vector< std::vector< Point >> &frag_faces, bool displaced_mesh=false) const
Definition: XFEM.C:1634
XFEM::_geometric_cuts
std::vector< const GeometricCutUserObject * > _geometric_cuts
Definition: XFEM.h:267
XFEM::setSolution
void setSolution(SystemBase &sys, const std::map< unique_id_type, std::vector< Real >> &stored_solution, NumericVector< Number > &current_solution, NumericVector< Number > &old_solution, NumericVector< Number > &older_solution)
Set the solution for all locally-owned nodes/elements that have stored values.
Definition: XFEM.C:1941
Xfem::GeomMarkedElemInfo3D
Data structure describing geometrically described cut through 3D element.
Definition: GeometricCutUserObject.h:88
XFEM::_use_crack_growth_increment
bool _use_crack_growth_increment
Definition: XFEM.h:264
XFEM::getEFAElem2D
EFAElement2D * getEFAElem2D(const Elem *elem)
Get the EFAElement2D object for a specified libMesh element.
Definition: XFEM.C:1651
Xfem::ORIGIN_Z
Definition: XFEM.h:31
XFEM::getNodeSolutionDofs
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.
Definition: XFEM.C:2028
XFEM::getFragmentEdges
void getFragmentEdges(const Elem *elem, EFAElement2D *CEMElem, std::vector< std::vector< Point >> &frag_edges) const
Definition: XFEM.C:1675
XFEM::~XFEM
~XFEM()
Definition: XFEM.C:45
XFEM::getCrackTipOriginMap
const std::map< const Elem *, std::vector< Point > > & getCrackTipOriginMap() const
Definition: XFEM.h:254
XFEM::_debug_output_level
unsigned int _debug_output_level
Controls amount of debugging output information 0: None 1: Summary 2: Details on modifications to mes...
Definition: XFEM.h:302
XFEM::clearGeomMarkedElems
void clearGeomMarkedElems()
Clear out the list of elements to be marked for cutting.
Definition: XFEM.C:182
XFEM::_sibling_elems
std::map< unsigned int, ElementPairLocator::ElementPairList > _sibling_elems
Definition: XFEM.h:272
XFEM::_crack_growth_increment
Real _crack_growth_increment
Definition: XFEM.h:265
XFEM::getXFEMDisplacedCutElemPairs
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.
Definition: XFEM.h:207
XFEM::_crack_tip_elems_to_be_healed
std::set< const Elem * > _crack_tip_elems_to_be_healed
Definition: XFEM.h:271
Xfem::NORMAL_Y
Definition: XFEM.h:33
XFEM::_cut_elem_map
std::map< unique_id_type, XFEMCutElem * > _cut_elem_map
Definition: XFEM.h:269
XFEM::_crack_tip_elems
std::set< const Elem * > _crack_tip_elems
Definition: XFEM.h:270
XFEMCrackGrowthIncrement2DCut
Definition: XFEMCrackGrowthIncrement2DCut.h:26
XFEM::getCrackTipOrigin
void getCrackTipOrigin(std::map< unsigned int, const Elem * > &elem_id_crack_tip, std::vector< Point > &crack_front_points)
Definition: XFEM.C:64
XFEM::healMesh
bool healMesh()
Potentially heal the mesh by merging some of the pairs of partial elements cut by XFEM back into sing...
Definition: XFEM.C:920
Xfem::MOMENT_FITTING
Definition: XFEM.h:40
Xfem
Definition: XFEM.h:25
XFEM::_sibling_displaced_elems
std::map< unsigned int, ElementPairLocator::ElementPairList > _sibling_displaced_elems
Definition: XFEM.h:273
Xfem::XFEM_CUTPLANE_QUANTITY
XFEM_CUTPLANE_QUANTITY
Definition: XFEM.h:27
EFAEdge
Definition: EFAEdge.h:16
XFEM::initCutIntersectionEdge
bool initCutIntersectionEdge(Point cut_origin, RealVectorValue cut_normal, Point &edge_p1, Point &edge_p2, Real &dist)
Definition: XFEM.C:901
EFANode
Definition: EFANode.h:14
XFEM::getXFEMFaceWeights
virtual bool getXFEMFaceWeights(MooseArray< Real > &weights, const Elem *elem, QBase *qrule, const MooseArray< Point > &q_points, unsigned int side) override
Definition: XFEM.C:1765
XFEM::_cached_aux_solution
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/elem...
Definition: XFEM.h:320
XFEM::getEFANodeCoords
Point getEFANodeCoords(EFANode *CEMnode, EFAElement *CEMElem, const Elem *elem, MeshBase *displaced_mesh=NULL) const
Definition: XFEM.C:1500
EFAElement2D
Definition: EFAElement2D.h:20
XFEM
This is the XFEM class.
Definition: XFEM.h:61
Xfem::ORIGIN_Y
Definition: XFEM.h:30
Xfem::NORMAL_Z
Definition: XFEM.h:34
XFEM::addGeometricCut
void addGeometricCut(GeometricCutUserObject *geometric_cut)
Definition: XFEM.C:54
XFEM::markCuts
bool markCuts(Real time)
Definition: XFEM.C:378
XFEM::markCutEdgesByGeometry
bool markCutEdgesByGeometry()
Definition: XFEM.C:395
XFEM::XFEM
XFEM(const InputParameters &params)
Definition: XFEM.C:35
XFEM::_efa_mesh
ElementFragmentAlgorithm _efa_mesh
Definition: XFEM.h:295
XFEM::getXFEMCutElemPairs
virtual const ElementPairLocator::ElementPairList * getXFEMCutElemPairs(unsigned int interface_id)
Get the list of cut element pairs corresponding to a given interface ID.
Definition: XFEM.h:195
XFEM::update
virtual bool update(Real time, NonlinearSystemBase &nl, AuxiliarySystem &aux) override
Definition: XFEM.C:265
XFEMCutElem
Definition: XFEMCutElem.h:29
XFEM::_geom_marker_id_map
std::map< const GeometricCutUserObject *, unsigned int > _geom_marker_id_map
Data structure for storing the GeommetricCutUserObjects and their corresponding id.
Definition: XFEM.h:293
XFEM::addGeomMarkedElem3D
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.
Definition: XFEM.C:172
XFEM::storeCrackTipOriginAndDirection
void storeCrackTipOriginAndDirection()
Definition: XFEM.C:189
XFEM::addGeomMarkedElem2D
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.
Definition: XFEM.C:162
Xfem::VOLFRAC
Definition: XFEM.h:39
Xfem::XFEM_QRULE
XFEM_QRULE
Definition: XFEM.h:37
XFEM::_has_secondary_cut
bool _has_secondary_cut
Definition: XFEM.h:260
XFEM::_elem_crack_origin_direction_map
std::map< const Elem *, std::vector< Point > > _elem_crack_origin_direction_map
Definition: XFEM.h:275