https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
EFAElement Class Referenceabstract

#include <EFAElement.h>

Inheritance diagram for EFAElement:
[legend]

Public Member Functions

 EFAElement (unsigned int eid, unsigned int n_nodes)
 
virtual ~EFAElement ()
 
unsigned int id () const
 
unsigned int numNodes () const
 
void setNode (unsigned int node_id, EFANode *node)
 
EFANodegetNode (unsigned int node_id) const
 
const std::vector< EFANode * > & getNodes () const
 
bool containsNode (EFANode *node) const
 
void printNodes (std::ostream &ostream) const
 
EFANodecreateLocalNodeFromGlobalNode (const EFANode *global_node) const
 
EFANodegetGlobalNodeFromLocalNode (const EFANode *local_node) const
 
unsigned int getLocalNodeIndex (EFANode *node) const
 
void setCrackTipSplit ()
 
bool isCrackTipSplit () const
 
unsigned int numCrackTipNeighbors () const
 
unsigned int getCrackTipNeighbor (unsigned int index) const
 
void addCrackTipNeighbor (EFAElement *neighbor_elem)
 
EFAElementgetParent () const
 
EFAElementgetChild (unsigned int child_id) const
 
void setParent (EFAElement *parent)
 
unsigned int numChildren () const
 
void addChild (EFAElement *child)
 
void clearParentAndChildren ()
 
void findGeneralNeighbors (const std::map< EFANode *, std::set< EFAElement * > > &InverseConnectivity)
 
EFAElementgetGeneralNeighbor (unsigned int index) const
 
unsigned int numGeneralNeighbors () const
 
virtual unsigned int numFragments () const =0
 
virtual bool isPartial () const =0
 
virtual void getNonPhysicalNodes (std::set< EFANode * > &non_physical_nodes) const =0
 
virtual void switchNode (EFANode *new_node, EFANode *old_node, bool descend_to_parent)=0
 
virtual void switchEmbeddedNode (EFANode *new_node, EFANode *old_node)=0
 
virtual void updateFragmentNode ()=0
 
virtual void getMasterInfo (EFANode *node, std::vector< EFANode * > &master_nodes, std::vector< double > &master_weights) const =0
 
virtual unsigned int numInteriorNodes () const =0
 
virtual unsigned int getNeighborIndex (const EFAElement *neighbor_elem) const =0
 
virtual void clearNeighbors ()=0
 
virtual void setupNeighbors (std::map< EFANode *, std::set< EFAElement * > > &InverseConnectivityMap)=0
 
virtual void neighborSanityCheck () const =0
 
virtual void initCrackTip (std::set< EFAElement * > &CrackTipElements)=0
 
virtual bool shouldDuplicateForCrackTip (const std::set< EFAElement * > &CrackTipElements)=0
 
virtual bool shouldDuplicateCrackTipSplitElement (const std::set< EFAElement * > &CrackTipElements)=0
 
virtual bool shouldDuplicateForPhantomCorner ()=0
 
virtual bool willCrackTipExtend (std::vector< unsigned int > &split_neighbors) const =0
 
virtual bool isCrackTipElement () const =0
 
virtual unsigned int getNumCuts () const =0
 
virtual bool isFinalCut () const =0
 
virtual void updateFragments (const std::set< EFAElement * > &CrackTipElements, std::map< unsigned int, EFANode * > &EmbeddedNodes)=0
 
virtual void fragmentSanityCheck (unsigned int n_old_frag_edges, unsigned int n_old_frag_cuts) const =0
 
virtual void restoreFragment (const EFAElement *const from_elem)=0
 
virtual void createChild (const std::set< EFAElement * > &CrackTipElements, std::map< unsigned int, EFAElement * > &Elements, std::map< unsigned int, EFAElement * > &newChildElements, std::vector< EFAElement * > &ChildElements, std::vector< EFAElement * > &ParentElements, std::map< unsigned int, EFANode * > &TempNodes)=0
 
virtual void removePhantomEmbeddedNode ()=0
 
virtual void connectNeighbors (std::map< unsigned int, EFANode * > &PermanentNodes, std::map< unsigned int, EFANode * > &TempNodes, std::map< EFANode *, std::set< EFAElement * > > &InverseConnectivityMap, bool merge_phantom_edges)=0
 
virtual void printElement (std::ostream &ostream) const =0
 

Protected Member Functions

void mergeNodes (EFANode *&childNode, EFANode *&childOfNeighborNode, EFAElement *childOfNeighborElem, std::map< unsigned int, EFANode * > &PermanentNodes, std::map< unsigned int, EFANode * > &TempNodes)
 

Protected Attributes

unsigned int _id
 
unsigned int _num_nodes
 
std::vector< EFANode * > _nodes
 
std::vector< EFANode * > _local_nodes
 
EFAElement_parent
 
std::vector< EFAElement * > _children
 
bool _crack_tip_split_element
 
std::vector< unsigned int_crack_tip_neighbors
 
std::vector< EFAElement * > _general_neighbors
 

Detailed Description

Definition at line 19 of file EFAElement.h.

Constructor & Destructor Documentation

◆ EFAElement()

EFAElement::EFAElement ( unsigned int  eid,
unsigned int  n_nodes 
)

Definition at line 16 of file EFAElement.C.

17 : _id(eid),
18 _num_nodes(n_nodes),
19 _nodes(_num_nodes, nullptr),
20 _parent(nullptr),
22{
23}
std::vector< EFANode * > _nodes
Definition EFAElement.h:29
unsigned int _num_nodes
Definition EFAElement.h:28
EFAElement * _parent
Definition EFAElement.h:31
unsigned int _id
Definition EFAElement.h:27
bool _crack_tip_split_element
Definition EFAElement.h:33

◆ ~EFAElement()

EFAElement::~EFAElement ( )
virtual

Definition at line 25 of file EFAElement.C.

25{}

Member Function Documentation

◆ addChild()

void EFAElement::addChild ( EFAElement child)

Definition at line 195 of file EFAElement.C.

196{
197 _children.push_back(child);
198}
std::vector< EFAElement * > _children
Definition EFAElement.h:32

◆ addCrackTipNeighbor()

void EFAElement::addCrackTipNeighbor ( EFAElement neighbor_elem)

Definition at line 149 of file EFAElement.C.

150{
151 // Find out what side the specified element is on, and add it as a crack tip neighbor
152 // element for that side.
153 unsigned int neighbor_index = getNeighborIndex(neighbor_elem);
154 bool crack_tip_neighbor_exist = false;
155 for (unsigned int i = 0; i < _crack_tip_neighbors.size(); ++i)
156 {
157 if (_crack_tip_neighbors[i] == neighbor_index)
158 {
159 crack_tip_neighbor_exist = true;
160 break;
161 }
162 }
163 if (!crack_tip_neighbor_exist)
164 _crack_tip_neighbors.push_back(neighbor_index);
165}
virtual unsigned int getNeighborIndex(const EFAElement *neighbor_elem) const =0
std::vector< unsigned int > _crack_tip_neighbors
Definition EFAElement.h:34

◆ clearNeighbors()

virtual void EFAElement::clearNeighbors ( )
pure virtual

◆ clearParentAndChildren()

void EFAElement::clearParentAndChildren ( )

Definition at line 201 of file EFAElement.C.

202{
203 _parent = nullptr;
204 _children.clear();
205}

Referenced by ElementFragmentAlgorithm::clearAncestry().

◆ connectNeighbors()

virtual void EFAElement::connectNeighbors ( std::map< unsigned int, EFANode * > &  PermanentNodes,
std::map< unsigned int, EFANode * > &  TempNodes,
std::map< EFANode *, std::set< EFAElement * > > &  InverseConnectivityMap,
bool  merge_phantom_edges 
)
pure virtual

◆ containsNode()

bool EFAElement::containsNode ( EFANode node) const

◆ createChild()

virtual void EFAElement::createChild ( const std::set< EFAElement * > &  CrackTipElements,
std::map< unsigned int, EFAElement * > &  Elements,
std::map< unsigned int, EFAElement * > &  newChildElements,
std::vector< EFAElement * > &  ChildElements,
std::vector< EFAElement * > &  ParentElements,
std::map< unsigned int, EFANode * > &  TempNodes 
)
pure virtual

◆ createLocalNodeFromGlobalNode()

EFANode * EFAElement::createLocalNodeFromGlobalNode ( const EFANode global_node) const

Definition at line 70 of file EFAElement.C.

71{
72 // Given a global node, create a new local node
73 if (global_node->category() != EFANode::N_CATEGORY_PERMANENT &&
74 global_node->category() != EFANode::N_CATEGORY_TEMP &&
76 EFAError("In createLocalNodeFromGlobalNode node is not global");
77
78 EFANode * new_local_node = nullptr;
79 unsigned int inode = 0;
80 for (; inode < _nodes.size(); ++inode)
81 {
82 if (_nodes[inode] == global_node)
83 {
84 new_local_node = new EFANode(inode, EFANode::N_CATEGORY_LOCAL_INDEX);
85 break;
86 }
87 }
88 if (!new_local_node)
89 EFAError("In createLocalNodeFromGlobalNode could not find global node");
90
91 return new_local_node;
92}
@ N_CATEGORY_EMBEDDED_PERMANENT
Definition EFANode.h:22
@ N_CATEGORY_TEMP
Definition EFANode.h:20
@ N_CATEGORY_PERMANENT
Definition EFANode.h:19
@ N_CATEGORY_LOCAL_INDEX
Definition EFANode.h:23
N_CATEGORY category() const
Definition EFANode.C:42

Referenced by EFAElement2D::createChild(), EFAElement3D::createChild(), and EFAElement3D::EFAElement3D().

◆ findGeneralNeighbors()

void EFAElement::findGeneralNeighbors ( const std::map< EFANode *, std::set< EFAElement * > > &  InverseConnectivity)

Definition at line 208 of file EFAElement.C.

210{
211 _general_neighbors.clear();
212 std::set<EFAElement *> patch_elements;
213 for (unsigned int inode = 0; inode < _num_nodes; ++inode)
214 {
215 auto it = inverse_connectivity.find(_nodes[inode]);
216 if (it != inverse_connectivity.end())
217 patch_elements.insert(it->second.begin(), it->second.end());
218 }
219
220 std::set<EFAElement *>::iterator eit2;
221 for (eit2 = patch_elements.begin(); eit2 != patch_elements.end(); ++eit2)
222 {
223 EFAElement * neigh_elem = *eit2;
224 if (neigh_elem != this)
225 _general_neighbors.push_back(neigh_elem);
226 }
227}
std::vector< EFAElement * > _general_neighbors
Definition EFAElement.h:36

Referenced by EFAElement2D::setupNeighbors(), and EFAElement3D::setupNeighbors().

◆ fragmentSanityCheck()

virtual void EFAElement::fragmentSanityCheck ( unsigned int  n_old_frag_edges,
unsigned int  n_old_frag_cuts 
) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ getChild()

EFAElement * EFAElement::getChild ( unsigned int  child_id) const

Definition at line 174 of file EFAElement.C.

175{
176 if (child_id < _children.size())
177 return _children[child_id];
178 else
179 EFAError("child_id out of bounds");
180}

Referenced by EFAElement2D::connectNeighbors(), EFAElement3D::connectNeighbors(), EFAElement2D::switchNode(), and EFAElement3D::switchNode().

◆ getCrackTipNeighbor()

unsigned int EFAElement::getCrackTipNeighbor ( unsigned int  index) const

Definition at line 140 of file EFAElement.C.

141{
142 if (index < _crack_tip_neighbors.size())
143 return _crack_tip_neighbors[index];
144 else
145 EFAError("in getCrackTipNeighbor index out of bounds");
146}

◆ getGeneralNeighbor()

EFAElement * EFAElement::getGeneralNeighbor ( unsigned int  index) const

Definition at line 230 of file EFAElement.C.

231{
232 return _general_neighbors[index];
233}

Referenced by EFAElement2D::switchNode(), and EFAElement3D::switchNode().

◆ getGlobalNodeFromLocalNode()

EFANode * EFAElement::getGlobalNodeFromLocalNode ( const EFANode local_node) const

Definition at line 95 of file EFAElement.C.

96{
97 // Given a local node, find the global node corresponding to that node
98 if (local_node->category() != EFANode::N_CATEGORY_LOCAL_INDEX)
99 EFAError("In getGlobalNodeFromLocalNode node passed in is not local");
100
101 EFANode * global_node = _nodes[local_node->id()];
102
103 if (global_node->category() != EFANode::N_CATEGORY_PERMANENT &&
104 global_node->category() != EFANode::N_CATEGORY_TEMP)
105 EFAError("In getGlobalNodeFromLocalNode, the node stored by the element is not global");
106
107 return global_node;
108}
unsigned int id() const
Definition EFANode.C:36

◆ getLocalNodeIndex()

unsigned int EFAElement::getLocalNodeIndex ( EFANode node) const

Definition at line 111 of file EFAElement.C.

112{
113 for (unsigned int i = 0; i < _num_nodes; ++i)
114 {
115 if (_nodes[i] == node)
116 return i;
117 }
118 EFAError("In EFAelement::getLocalNodeIndex, cannot find the given node");
119}

Referenced by XFEM::getEFANodeCoords().

◆ getMasterInfo()

virtual void EFAElement::getMasterInfo ( EFANode node,
std::vector< EFANode * > &  master_nodes,
std::vector< double > &  master_weights 
) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

Referenced by XFEM::getEFANodeCoords().

◆ getNeighborIndex()

virtual unsigned int EFAElement::getNeighborIndex ( const EFAElement neighbor_elem) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

Referenced by addCrackTipNeighbor().

◆ getNode()

EFANode * EFAElement::getNode ( unsigned int  node_id) const

◆ getNodes()

const std::vector< EFANode * > & EFAElement::getNodes ( ) const
inline

Definition at line 44 of file EFAElement.h.

44{ return _nodes; }

◆ getNonPhysicalNodes()

virtual void EFAElement::getNonPhysicalNodes ( std::set< EFANode * > &  non_physical_nodes) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ getNumCuts()

virtual unsigned int EFAElement::getNumCuts ( ) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ getParent()

EFAElement * EFAElement::getParent ( ) const

Definition at line 168 of file EFAElement.C.

169{
170 return _parent;
171}

◆ id()

unsigned int EFAElement::id ( ) const

◆ initCrackTip()

virtual void EFAElement::initCrackTip ( std::set< EFAElement * > &  CrackTipElements)
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ isCrackTipElement()

virtual bool EFAElement::isCrackTipElement ( ) const
pure virtual

◆ isCrackTipSplit()

bool EFAElement::isCrackTipSplit ( ) const

◆ isFinalCut()

virtual bool EFAElement::isFinalCut ( ) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ isPartial()

virtual bool EFAElement::isPartial ( ) const
pure virtual

◆ mergeNodes()

void EFAElement::mergeNodes ( EFANode *&  childNode,
EFANode *&  childOfNeighborNode,
EFAElement childOfNeighborElem,
std::map< unsigned int, EFANode * > &  PermanentNodes,
std::map< unsigned int, EFANode * > &  TempNodes 
)
protected

Definition at line 242 of file EFAElement.C.

247{
248 // Important: this must be run only on child elements that were just created
249 if (!_parent)
250 EFAError("no getParent element for child element ", _id, " in mergeNodes");
251
252 EFAElement * childElem = this;
253 if (childNode != childOfNeighborNode)
254 {
255 if (childNode->category() == EFANode::N_CATEGORY_PERMANENT)
256 {
257 if (childOfNeighborNode->category() == EFANode::N_CATEGORY_PERMANENT)
258 {
259 if (childOfNeighborNode->parent() == childNode) // merge into childNode
260 {
261 childOfNeighborElem->switchNode(childNode, childOfNeighborNode, true);
262 if (!Efa::deleteFromMap(PermanentNodes, childOfNeighborNode))
263 {
264 EFAError("Attempted to delete node: ",
265 childOfNeighborNode->id(),
266 " from PermanentNodes, but couldn't find it");
267 }
268 childOfNeighborNode = childNode;
269 }
270 else if (childNode->parent() == childOfNeighborNode) // merge into childOfNeighborNode
271 {
272 childElem->switchNode(childOfNeighborNode, childNode, true);
273 if (!Efa::deleteFromMap(PermanentNodes, childNode))
274 {
275 EFAError("Attempted to delete node: ",
276 childNode->id(),
277 " from PermanentNodes, but couldn't find it");
278 }
279 childNode = childOfNeighborNode;
280 }
281 else if (childNode->parent() != nullptr &&
282 childNode->parent() == childOfNeighborNode->parent())
283 {
284 // merge into childNode if both nodes are child permanent
285 childOfNeighborElem->switchNode(childNode, childOfNeighborNode, true);
286 if (!Efa::deleteFromMap(PermanentNodes,
287 childOfNeighborNode)) // delete childOfNeighborNode
288 {
289 EFAError("Attempted to delete node: ",
290 childOfNeighborNode->id(),
291 " from PermanentNodes, but couldn't find it");
292 }
293 childOfNeighborNode = childNode;
294 }
295 else
296 {
297 EFAError("Attempting to merge nodes: ",
298 childNode->id(),
299 " and ",
300 childOfNeighborNode->id(),
301 " but both are permanent themselves");
302 }
303 }
304 else
305 {
306 if (childOfNeighborNode->parent() != childNode &&
307 childOfNeighborNode->parent() != childNode->parent())
308 {
309 EFAError("Attempting to merge nodes ",
310 childOfNeighborNode->idCatString(),
311 " and ",
312 childNode->idCatString(),
313 " but neither the 2nd node nor its parent is parent of the 1st");
314 }
315 childOfNeighborElem->switchNode(childNode, childOfNeighborNode, true);
316 if (!Efa::deleteFromMap(TempNodes, childOfNeighborNode))
317 EFAError("Attempted to delete node: ",
318 childOfNeighborNode->id(),
319 " from TempNodes, but couldn't find it");
320 childOfNeighborNode = childNode;
321 }
322 }
323 else if (childOfNeighborNode->category() == EFANode::N_CATEGORY_PERMANENT)
324 {
325 if (childNode->parent() != childOfNeighborNode &&
326 childNode->parent() != childOfNeighborNode->parent())
327 {
328 EFAError("Attempting to merge nodes ",
329 childNode->id(),
330 " and ",
331 childOfNeighborNode->id(),
332 " but neither the 2nd node nor its parent is parent of the 1st");
333 }
334 childElem->switchNode(childOfNeighborNode, childNode, true);
335 if (!Efa::deleteFromMap(TempNodes, childNode))
336 EFAError(
337 "Attempted to delete node: ", childNode->id(), " from TempNodes, but couldn't find it");
338 childNode = childOfNeighborNode;
339 }
340 else // both nodes are temporary -- create new permanent node and delete temporary nodes
341 {
342 unsigned int new_node_id = Efa::getNewID(PermanentNodes);
343 EFANode * newNode =
344 new EFANode(new_node_id, EFANode::N_CATEGORY_PERMANENT, childNode->parent());
345 PermanentNodes.insert(std::make_pair(new_node_id, newNode));
346
347 childOfNeighborElem->switchNode(newNode, childOfNeighborNode, true);
348 childElem->switchNode(newNode, childNode, true);
349
350 if (childNode->parent() != childOfNeighborNode->parent())
351 {
352 EFAError("Attempting to merge nodes ",
353 childNode->id(),
354 " and ",
355 childOfNeighborNode->id(),
356 " but they don't share a common parent");
357 }
358
359 if (!Efa::deleteFromMap(TempNodes, childOfNeighborNode))
360 EFAError("Attempted to delete node: ",
361 childOfNeighborNode->id(),
362 " from TempNodes, but couldn't find it");
363 if (!Efa::deleteFromMap(TempNodes, childNode))
364 EFAError(
365 "Attempted to delete node: ", childNode->id(), " from TempNodes, but couldn't find it");
366 childOfNeighborNode = newNode;
367 childNode = newNode;
368 }
369 }
370}
virtual void switchNode(EFANode *new_node, EFANode *old_node, bool descend_to_parent)=0
EFANode * parent() const
Definition EFANode.C:48
std::string idCatString()
Definition EFANode.C:20
bool deleteFromMap(std::map< unsigned int, T * > &theMap, T *elemToDelete, bool delete_elem=true)
Definition EFAFuncs.h:22
unsigned int getNewID(std::map< unsigned int, T * > &theMap)
Definition EFAFuncs.h:38

Referenced by EFAElement2D::connectNeighbors(), and EFAElement3D::connectNeighbors().

◆ neighborSanityCheck()

virtual void EFAElement::neighborSanityCheck ( ) const
pure virtual

◆ numChildren()

unsigned int EFAElement::numChildren ( ) const

◆ numCrackTipNeighbors()

unsigned int EFAElement::numCrackTipNeighbors ( ) const

Definition at line 134 of file EFAElement.C.

135{
136 return _crack_tip_neighbors.size();
137}

◆ numFragments()

virtual unsigned int EFAElement::numFragments ( ) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ numGeneralNeighbors()

unsigned int EFAElement::numGeneralNeighbors ( ) const

Definition at line 236 of file EFAElement.C.

237{
238 return _general_neighbors.size();
239}

Referenced by EFAElement2D::switchNode(), and EFAElement3D::switchNode().

◆ numInteriorNodes()

virtual unsigned int EFAElement::numInteriorNodes ( ) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ numNodes()

unsigned int EFAElement::numNodes ( ) const

◆ printElement()

virtual void EFAElement::printElement ( std::ostream &  ostream) const
pure virtual

◆ printNodes()

void EFAElement::printNodes ( std::ostream &  ostream) const

Definition at line 61 of file EFAElement.C.

62{
63 ostream << "***** nodes for element " << _id << " *****" << std::endl;
64 for (unsigned int i = 0; i < _num_nodes; ++i)
65 ostream << "addr " << _nodes[i] << ", ID " << _nodes[i]->idCatString() << ", category "
66 << _nodes[i]->category() << std::endl;
67}

◆ removePhantomEmbeddedNode()

virtual void EFAElement::removePhantomEmbeddedNode ( )
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ restoreFragment()

virtual void EFAElement::restoreFragment ( const EFAElement *const  from_elem)
pure virtual

◆ setCrackTipSplit()

void EFAElement::setCrackTipSplit ( )

Definition at line 122 of file EFAElement.C.

123{
125}

◆ setNode()

void EFAElement::setNode ( unsigned int  node_id,
EFANode node 
)

◆ setParent()

void EFAElement::setParent ( EFAElement parent)

Definition at line 183 of file EFAElement.C.

184{
185 _parent = parent;
186}

Referenced by EFAElement2D::createChild(), and EFAElement3D::createChild().

◆ setupNeighbors()

virtual void EFAElement::setupNeighbors ( std::map< EFANode *, std::set< EFAElement * > > &  InverseConnectivityMap)
pure virtual

◆ shouldDuplicateCrackTipSplitElement()

virtual bool EFAElement::shouldDuplicateCrackTipSplitElement ( const std::set< EFAElement * > &  CrackTipElements)
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ shouldDuplicateForCrackTip()

virtual bool EFAElement::shouldDuplicateForCrackTip ( const std::set< EFAElement * > &  CrackTipElements)
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ shouldDuplicateForPhantomCorner()

virtual bool EFAElement::shouldDuplicateForPhantomCorner ( )
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ switchEmbeddedNode()

virtual void EFAElement::switchEmbeddedNode ( EFANode new_node,
EFANode old_node 
)
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

◆ switchNode()

virtual void EFAElement::switchNode ( EFANode new_node,
EFANode old_node,
bool  descend_to_parent 
)
pure virtual

◆ updateFragmentNode()

virtual void EFAElement::updateFragmentNode ( )
pure virtual

◆ updateFragments()

virtual void EFAElement::updateFragments ( const std::set< EFAElement * > &  CrackTipElements,
std::map< unsigned int, EFANode * > &  EmbeddedNodes 
)
pure virtual

◆ willCrackTipExtend()

virtual bool EFAElement::willCrackTipExtend ( std::vector< unsigned int > &  split_neighbors) const
pure virtual

Implemented in EFAElement2D, and EFAElement3D.

Member Data Documentation

◆ _children

std::vector<EFAElement *> EFAElement::_children
protected

◆ _crack_tip_neighbors

std::vector<unsigned int> EFAElement::_crack_tip_neighbors
protected

◆ _crack_tip_split_element

bool EFAElement::_crack_tip_split_element
protected

◆ _general_neighbors

std::vector<EFAElement *> EFAElement::_general_neighbors
protected

◆ _id

unsigned int EFAElement::_id
protected

◆ _local_nodes

std::vector<EFANode *> EFAElement::_local_nodes
protected

◆ _nodes

std::vector<EFANode *> EFAElement::_nodes
protected

◆ _num_nodes

unsigned int EFAElement::_num_nodes
protected

◆ _parent

EFAElement* EFAElement::_parent
protected

The documentation for this class was generated from the following files: