https://mooseframework.inl.gov
Loading...
Searching...
No Matches
XFEM.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
21
22// Forward declarations
23class SystemBase;
24
25namespace Xfem
26{
36
43
50typedef std::array<std::unordered_map<unsigned int, std::string>, 2> CachedMaterialProperties;
51
58{
59 const Elem * _parent_elem;
64 // TODO: add neighbor material properties
65 // CachedMaterialProperties _neighbor_material_properties;
66
68 : _parent_elem(nullptr),
69 _geometric_cut(nullptr),
70 _cut_subdomain_id(std::numeric_limits<CutSubdomainID>::max())
71 {
72 }
73
74 CutElemInfo(const Elem * parent_elem,
75 const GeometricCutUserObject * geometric_cut,
76 CutSubdomainID cut_subdomain_id)
77 : _parent_elem(parent_elem), _geometric_cut(geometric_cut), _cut_subdomain_id(cut_subdomain_id)
78 {
79 }
80
81 // A new child element is said to be previously healed if an entry in the old CutElemInfo has the
82 // same parent element ID, the same cut, AND the same cut subdomain ID.
83 bool match(const CutElemInfo & rhs)
84 {
87 }
88};
89} // namespace Xfem
90
91class XFEMCutElem;
93class EFANode;
94class EFAEdge;
95class EFAElement;
96class EFAElement2D;
97class EFAElement3D;
98
105// ------------------------------------------------------------
106// XFEM class definition
107class XFEM : public XFEMInterface
108{
109public:
110 explicit XFEM(const InputParameters & params);
111
112 ~XFEM();
113
114 void addGeometricCut(GeometricCutUserObject * geometric_cut);
115
116 void addStateMarkedElem(unsigned int elem_id, RealVectorValue & normal);
117 void addStateMarkedElem(unsigned int elem_id, RealVectorValue & normal, unsigned int marked_side);
118 void addStateMarkedFrag(unsigned int elem_id, RealVectorValue & normal);
119
121
128 void addGeomMarkedElem2D(const unsigned int elem_id,
129 const Xfem::GeomMarkedElemInfo2D geom_info,
130 const unsigned int interface_id);
131
138 void addGeomMarkedElem3D(const unsigned int elem_id,
139 const Xfem::GeomMarkedElemInfo3D geom_info,
140 const unsigned int interface_id);
141
146
147 virtual bool update(Real time,
148 const std::vector<std::shared_ptr<NonlinearSystemBase>> & nl,
149 AuxiliarySystem & aux) override;
150
151 virtual void initSolution(const std::vector<std::shared_ptr<NonlinearSystemBase>> & nl,
152 AuxiliarySystem & aux) override;
153
154 void buildEFAMesh();
155 bool markCuts(Real time);
157 bool markCutEdgesByState(Real time);
159 bool markCutFacesByState();
161 Point cut_origin, RealVectorValue cut_normal, Point & edge_p1, Point & edge_p2, Real & dist);
162 bool cutMeshWithEFA(const std::vector<std::shared_ptr<NonlinearSystemBase>> & nl,
163 AuxiliarySystem & aux);
164
171 bool healMesh();
172
173 virtual bool updateHeal() override;
174 Point getEFANodeCoords(EFANode * CEMnode,
175 EFAElement * CEMElem,
176 const Elem * elem,
177 MeshBase * displaced_mesh = nullptr) const;
178
182 Real getPhysicalVolumeFraction(const Elem * elem) const;
183
188 bool isPointInsidePhysicalDomain(const Elem * elem, const Point & point) const;
189
193 Real getCutPlane(const Elem * elem,
194 const Xfem::XFEM_CUTPLANE_QUANTITY quantity,
195 unsigned int plane_id) const;
196
197 bool isElemAtCrackTip(const Elem * elem) const;
198 bool isElemCut(const Elem * elem, XFEMCutElem *& xfce) const;
199 bool isElemCut(const Elem * elem) const;
200 void getFragmentFaces(const Elem * elem,
201 std::vector<std::vector<Point>> & frag_faces,
202 bool displaced_mesh = false) const;
204
205 void correctCrackExtensionDirection(const Elem * elem,
206 EFAElement2D * CEMElem,
207 EFAEdge * orig_edge,
208 Point normal,
209 Point crack_tip_origin,
210 Point crack_tip_direction,
211 Real & distance_keep,
212 unsigned int & edge_id_keep,
213 Point & normal_keep);
214
215 void getCrackTipOrigin(std::map<unsigned int, const Elem *> & elem_id_crack_tip,
216 std::vector<Point> & crack_front_points);
217
219 void setXFEMQRule(std::string & xfem_qrule);
220 void setCrackGrowthMethod(bool use_crack_growth_increment, Real crack_growth_increment);
221
227 void setDebugOutputLevel(unsigned int debug_output_level);
228
234 void setMinWeightMultiplier(Real min_weight_multiplier);
235
236 virtual bool getXFEMWeights(MooseArray<Real> & weights,
237 const Elem * elem,
238 QBase * qrule,
239 const MooseArray<Point> & q_points) override;
240 virtual bool getXFEMFaceWeights(MooseArray<Real> & weights,
241 const Elem * elem,
242 QBase * qrule,
243 const MooseArray<Point> & q_points,
244 unsigned int side) override;
245
252 virtual const ElementPairLocator::ElementPairList * getXFEMCutElemPairs(unsigned int interface_id)
253 {
254 return &_sibling_elems[interface_id];
255 }
256
264 getXFEMDisplacedCutElemPairs(unsigned int interface_id)
265 {
266 return &_sibling_displaced_elems[interface_id];
267 }
268
274 virtual unsigned int getGeometricCutID(const GeometricCutUserObject * gcu)
275 {
276 return _geom_marker_id_map[gcu];
277 };
278
279 virtual void getXFEMIntersectionInfo(const Elem * elem,
280 unsigned int plane_id,
281 Point & normal,
282 std::vector<Point> & intersectionPoints,
283 bool displaced_mesh = false) const;
284 virtual void getXFEMqRuleOnLine(std::vector<Point> & intersection_points,
285 std::vector<Point> & quad_pts,
286 std::vector<Real> & quad_wts) const;
287 virtual void getXFEMqRuleOnSurface(std::vector<Point> & intersection_points,
288 std::vector<Point> & quad_pts,
289 std::vector<Real> & quad_wts) const;
291
296 EFAElement2D * getEFAElem2D(const Elem * elem);
297
302 EFAElement3D * getEFAElem3D(const Elem * elem);
303
304 void getFragmentEdges(const Elem * elem,
305 EFAElement2D * CEMElem,
306 std::vector<std::vector<Point>> & frag_edges) const;
307 void getFragmentFaces(const Elem * elem,
308 EFAElement3D * CEMElem,
309 std::vector<std::vector<Point>> & frag_faces) const;
310
311 const std::map<const Elem *, std::vector<Point>> & getCrackTipOriginMap() const
312 {
314 }
315
323 const Elem * cut_elem,
324 const Elem * parent_elem = nullptr) const;
325
326private:
328
330
333
334 std::vector<const GeometricCutUserObject *> _geometric_cuts;
335
336 std::map<unique_id_type, XFEMCutElem *> _cut_elem_map;
337 std::set<const Elem *> _crack_tip_elems;
338 std::set<const Elem *> _crack_tip_elems_to_be_healed;
339 std::map<unsigned int, ElementPairLocator::ElementPairList> _sibling_elems;
340 std::map<unsigned int, ElementPairLocator::ElementPairList> _sibling_displaced_elems;
341
342 std::map<const Elem *, std::vector<Point>> _elem_crack_origin_direction_map;
343
344 // std::map<const Elem*, Point> _crack_propagation_direction_map;
345
346 std::map<const Elem *, RealVectorValue> _state_marked_elems;
347 std::set<const Elem *> _state_marked_frags;
348 std::map<const Elem *, unsigned int> _state_marked_elem_sides;
349
354
356 std::map<const Elem *, std::vector<Xfem::GeomMarkedElemInfo2D>> _geom_marked_elems_2d;
357
359 std::map<const Elem *, std::vector<Xfem::GeomMarkedElemInfo3D>> _geom_marked_elems_3d;
360
362 std::map<unsigned int, std::set<unsigned int>> _geom_marker_id_elems;
363
365 std::map<const GeometricCutUserObject *, unsigned int> _geom_marker_id_map;
366
368
375
379
387 std::map<unique_id_type, std::vector<Real>> _cached_solution;
388
396 std::map<unique_id_type, std::vector<Real>> _cached_aux_solution;
397
402 std::unordered_map<const Elem *, Xfem::CutElemInfo> _geom_cut_elems;
403
408 std::unordered_map<const Elem *, Xfem::CutElemInfo> _old_geom_cut_elems;
409
420 void storeSolutionForNode(const Node * node_to_store_to,
421 const Node * node_to_store_from,
422 SystemBase & sys,
423 std::map<unique_id_type, std::vector<Real>> & stored_solution,
424 const NumericVector<Number> & current_solution,
425 const NumericVector<Number> & old_solution,
426 const NumericVector<Number> & older_solution);
427
438 void storeSolutionForElement(const Elem * elem_to_store_to,
439 const Elem * elem_to_store_from,
440 SystemBase & sys,
441 std::map<unique_id_type, std::vector<Real>> & stored_solution,
442 const NumericVector<Number> & current_solution,
443 const NumericVector<Number> & old_solution,
444 const NumericVector<Number> & older_solution);
445
454 void setSolution(SystemBase & sys,
455 const std::map<unique_id_type, std::vector<Real>> & stored_solution,
456 NumericVector<Number> & current_solution,
457 NumericVector<Number> & old_solution,
458 NumericVector<Number> & older_solution);
459
468 void setSolutionForDOFs(const std::vector<Real> & stored_solution,
469 const std::vector<dof_id_type> & stored_solution_dofs,
470 NumericVector<Number> & current_solution,
471 NumericVector<Number> & old_solution,
472 NumericVector<Number> & older_solution);
473
480 std::vector<dof_id_type> getElementSolutionDofs(const Elem * elem, SystemBase & sys) const;
481
488 std::vector<dof_id_type> getNodeSolutionDofs(const Node * node, SystemBase & sys) const;
489
495 const GeometricCutUserObject * getGeometricCutForElem(const Elem * elem) const;
496
497 void storeMaterialPropertiesForElementHelper(const Elem * elem,
498 MaterialPropertyStorage & storage);
499
506 void storeMaterialPropertiesForElement(const Elem * parent_elem, const Elem * child_elem);
507
516 void loadMaterialPropertiesForElementHelper(const Elem * elem,
517 const Xfem::CachedMaterialProperties & cached_props,
518 MaterialPropertyStorage & storage) const;
519
527 const Elem * elem,
528 const Elem * elem_from,
529 std::unordered_map<const Elem *, Xfem::CutElemInfo> & cached_cei) const;
530
537 const Node * pickFirstPhysicalNode(const Elem * e, const Elem * e0) const;
538};
unsigned int CutSubdomainID
std::list< std::pair< const Elem *, const Elem * > > ElementPairList
This is the XFEM class.
Definition XFEM.h:108
void storeMaterialPropertiesForElementHelper(const Elem *elem, MaterialPropertyStorage &storage)
Definition XFEM.C:2197
virtual void getXFEMIntersectionInfo(const Elem *elem, unsigned int plane_id, Point &normal, std::vector< Point > &intersectionPoints, bool displaced_mesh=false) const
Definition XFEM.C:1908
std::vector< const GeometricCutUserObject * > _geometric_cuts
Definition XFEM.h:334
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.
Definition XFEM.C:2314
const std::map< const Elem *, std::vector< Point > > & getCrackTipOriginMap() const
Definition XFEM.h:311
virtual bool updateHeal() override
Definition XFEM.C:228
EFAElement2D * getEFAElem2D(const Elem *elem)
Get the EFAElement2D object for a specified libMesh element.
Definition XFEM.C:1758
bool markCutFacesByState()
Definition XFEM.C:902
std::map< const GeometricCutUserObject *, unsigned int > _geom_marker_id_map
Data structure for storing the GeommetricCutUserObjects and their corresponding id.
Definition XFEM.h:365
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:2104
virtual void initSolution(const std::vector< std::shared_ptr< NonlinearSystemBase > > &nl, AuxiliarySystem &aux) override
Definition XFEM.C:317
virtual void getXFEMqRuleOnSurface(std::vector< Point > &intersection_points, std::vector< Point > &quad_pts, std::vector< Real > &quad_wts) const
Definition XFEM.C:1954
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:2032
void storeCrackTipOriginAndDirection()
Definition XFEM.C:189
bool _has_secondary_cut
Definition XFEM.h:327
Real _crack_growth_increment
Definition XFEM.h:332
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
void loadMaterialPropertiesForElementHelper(const Elem *elem, const Xfem::CachedMaterialProperties &cached_props, MaterialPropertyStorage &storage) const
Load the material properties.
Definition XFEM.C:2243
void addGeometricCut(GeometricCutUserObject *geometric_cut)
Definition XFEM.C:59
bool markCutFacesByGeometry()
Definition XFEM.C:861
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:362
virtual void getXFEMqRuleOnLine(std::vector< Point > &intersection_points, std::vector< Point > &quad_pts, std::vector< Real > &quad_wts) const
Definition XFEM.C:1927
std::map< unsigned int, ElementPairLocator::ElementPairList > _sibling_displaced_elems
Definition XFEM.h:340
bool cutMeshWithEFA(const std::vector< std::shared_ptr< NonlinearSystemBase > > &nl, AuxiliarySystem &aux)
Definition XFEM.C:1113
std::map< unique_id_type, XFEMCutElem * > _cut_elem_map
Definition XFEM.h:336
virtual unsigned int getGeometricCutID(const GeometricCutUserObject *gcu)
Get the interface ID corresponding to a given GeometricCutUserObject.
Definition XFEM.h:274
bool markCutEdgesByGeometry()
Definition XFEM.C:404
ElementFragmentAlgorithm _efa_mesh
Definition XFEM.h:367
bool isElemCut(const Elem *elem, XFEMCutElem *&xfce) const
Definition XFEM.C:1718
bool markCuts(Real time)
Definition XFEM.C:387
void setDebugOutputLevel(unsigned int debug_output_level)
Controls amount of debugging information output.
Definition XFEM.C:1849
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:252
void setMinWeightMultiplier(Real min_weight_multiplier)
Controls the minimum average weight multiplier for each element.
Definition XFEM.C:1855
Point getEFANodeCoords(EFANode *CEMnode, EFAElement *CEMElem, const Elem *elem, MeshBase *displaced_mesh=nullptr) const
Definition XFEM.C:1608
int _state_marked_t_step
The timestep index at which the state marks were added.
Definition XFEM.h:353
~XFEM()
Definition XFEM.C:50
Real getPhysicalVolumeFraction(const Elem *elem) const
Get the volume fraction of an element that is physical.
Definition XFEM.C:1640
std::map< const Elem *, RealVectorValue > _state_marked_elems
Definition XFEM.h:346
void addStateMarkedFrag(unsigned int elem_id, RealVectorValue &normal)
Definition XFEM.C:140
Xfem::XFEM_QRULE _XFEM_qrule
Definition XFEM.h:329
std::map< unsigned int, ElementPairLocator::ElementPairList > _sibling_elems
Definition XFEM.h:339
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:356
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:2153
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:264
bool isElemAtCrackTip(const Elem *elem) const
Definition XFEM.C:1712
virtual bool getXFEMFaceWeights(MooseArray< Real > &weights, const Elem *elem, QBase *qrule, const MooseArray< Point > &q_points, unsigned int side) override
Definition XFEM.C:1890
bool healMesh()
Potentially heal the mesh by merging some of the pairs of partial elements cut by XFEM back into sing...
Definition XFEM.C:929
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:2066
void getFragmentFaces(const Elem *elem, std::vector< std::vector< Point > > &frag_faces, bool displaced_mesh=false) const
Definition XFEM.C:1741
std::map< const Elem *, unsigned int > _state_marked_elem_sides
Definition XFEM.h:348
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:387
void setCrackGrowthMethod(bool use_crack_growth_increment, Real crack_growth_increment)
Definition XFEM.C:1842
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.
Definition XFEM.C:2301
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:1998
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.
Definition XFEM.h:408
std::unordered_map< const Elem *, Xfem::CutElemInfo > _geom_cut_elems
All geometrically cut elements and their CutElemInfo during the current execution of XFEM_MARK.
Definition XFEM.h:402
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.
Definition XFEM.C:2267
void clearGeomMarkedElems()
Clear out the list of elements to be marked for cutting.
Definition XFEM.C:182
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:1678
void getCrackTipOrigin(std::map< unsigned int, const Elem * > &elem_id_crack_tip, std::vector< Point > &crack_front_points)
Definition XFEM.C:69
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:456
EFAElement3D * getEFAElem3D(const Elem *elem)
Get the EFAElement3D object for a specified libMesh element.
Definition XFEM.C:1770
bool markCutEdgesByState(Real time)
Definition XFEM.C:597
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
void getFragmentEdges(const Elem *elem, EFAElement2D *CEMElem, std::vector< std::vector< Point > > &frag_edges) const
Definition XFEM.C:1782
Xfem::XFEM_QRULE & getXFEMQRule()
Definition XFEM.C:1825
void addStateMarkedElem(unsigned int elem_id, RealVectorValue &normal)
Definition XFEM.C:115
virtual bool update(Real time, const std::vector< std::shared_ptr< NonlinearSystemBase > > &nl, AuxiliarySystem &aux) override
Definition XFEM.C:265
virtual bool getXFEMWeights(MooseArray< Real > &weights, const Elem *elem, QBase *qrule, const MooseArray< Point > &q_points) override
Definition XFEM.C:1861
std::set< const Elem * > _crack_tip_elems
Definition XFEM.h:337
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:1660
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:2127
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:359
unsigned int _debug_output_level
Controls amount of debugging output information 0: None 1: Summary 2: Details on modifications to mes...
Definition XFEM.h:374
void storeMaterialPropertiesForElement(const Elem *parent_elem, const Elem *child_elem)
Helper function to store the material properties of a healed element.
Definition XFEM.C:2215
std::map< const Elem *, std::vector< Point > > _elem_crack_origin_direction_map
Definition XFEM.h:342
const GeometricCutUserObject * getGeometricCutForElem(const Elem *elem) const
Get the GeometricCutUserObject associated with an element.
Definition XFEM.C:2185
void setXFEMQRule(std::string &xfem_qrule)
Definition XFEM.C:1831
bool has_secondary_cut()
Definition XFEM.h:290
void buildEFAMesh()
Definition XFEM.C:348
bool initCutIntersectionEdge(Point cut_origin, RealVectorValue cut_normal, Point &edge_p1, Point &edge_p2, Real &dist)
Definition XFEM.C:910
Real _min_weight_multiplier
The minimum average multiplier applied by XFEM to the standard quadrature weights to integrate partia...
Definition XFEM.h:378
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:396
std::set< const Elem * > _crack_tip_elems_to_be_healed
Definition XFEM.h:338
std::set< const Elem * > _state_marked_frags
Definition XFEM.h:347
bool _use_crack_growth_increment
Definition XFEM.h:331
void clearStateMarkedElems()
Definition XFEM.C:154
Definition XFEM.h:26
XFEM_CUTPLANE_QUANTITY
Definition XFEM.h:28
@ NORMAL_X
Definition XFEM.h:32
@ ORIGIN_Y
Definition XFEM.h:30
@ ORIGIN_Z
Definition XFEM.h:31
@ NORMAL_Z
Definition XFEM.h:34
@ NORMAL_Y
Definition XFEM.h:33
@ ORIGIN_X
Definition XFEM.h:29
std::array< std::unordered_map< unsigned int, std::string >, 2 > CachedMaterialProperties
Convenient typedef for local storage of stateful material properties.
Definition XFEM.h:50
XFEM_QRULE
Definition XFEM.h:38
@ DIRECT
Definition XFEM.h:41
@ VOLFRAC
Definition XFEM.h:39
@ MOMENT_FITTING
Definition XFEM.h:40
Information about a cut element.
Definition XFEM.h:58
CachedMaterialProperties _elem_material_properties
Definition XFEM.h:62
bool match(const CutElemInfo &rhs)
Definition XFEM.h:83
CutSubdomainID _cut_subdomain_id
Definition XFEM.h:61
const Elem * _parent_elem
Definition XFEM.h:59
CutElemInfo(const Elem *parent_elem, const GeometricCutUserObject *geometric_cut, CutSubdomainID cut_subdomain_id)
Definition XFEM.h:74
const GeometricCutUserObject * _geometric_cut
Definition XFEM.h:60
CachedMaterialProperties _bnd_material_properties
Definition XFEM.h:63
Data structure describing geometrically described cut through 2D element.
Data structure describing geometrically described cut through 3D element.