www.mooseframework.org
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 }
unsigned int _id
Definition: EFAElement.h:27
std::vector< EFANode * > _nodes
Definition: EFAElement.h:29
unsigned int _num_nodes
Definition: EFAElement.h:28
EFAElement * _parent
Definition: EFAElement.h:31
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.

Referenced by ElementFragmentAlgorithm::clearAncestry().

202 {
203  _parent = nullptr;
204  _children.clear();
205 }
EFAElement * _parent
Definition: EFAElement.h:31
std::vector< EFAElement * > _children
Definition: EFAElement.h:32

◆ 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.

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

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 }
std::vector< EFANode * > _nodes
Definition: EFAElement.h:29
N_CATEGORY category() const
Definition: EFANode.C:42

◆ findGeneralNeighbors()

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

Definition at line 208 of file EFAElement.C.

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

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< EFANode * > _nodes
Definition: EFAElement.h:29
unsigned int _num_nodes
Definition: EFAElement.h:28
std::vector< EFAElement * > _general_neighbors
Definition: EFAElement.h:36

◆ fragmentSanityCheck()

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

Implemented in EFAElement3D, and EFAElement2D.

◆ getChild()

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

Definition at line 174 of file EFAElement.C.

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

175 {
176  if (child_id < _children.size())
177  return _children[child_id];
178  else
179  EFAError("child_id out of bounds");
180 }
std::vector< EFAElement * > _children
Definition: EFAElement.h:32

◆ 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 }
std::vector< unsigned int > _crack_tip_neighbors
Definition: EFAElement.h:34

◆ getGeneralNeighbor()

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

Definition at line 230 of file EFAElement.C.

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

231 {
232  return _general_neighbors[index];
233 }
std::vector< EFAElement * > _general_neighbors
Definition: EFAElement.h:36

◆ 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 }
std::vector< EFANode * > _nodes
Definition: EFAElement.h:29
unsigned int id() const
Definition: EFANode.C:36
N_CATEGORY category() const
Definition: EFANode.C:42

◆ getLocalNodeIndex()

unsigned int EFAElement::getLocalNodeIndex ( EFANode node) const

Definition at line 111 of file EFAElement.C.

Referenced by XFEM::getEFANodeCoords().

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 }
std::vector< EFANode * > _nodes
Definition: EFAElement.h:29
unsigned int _num_nodes
Definition: EFAElement.h:28

◆ getMasterInfo()

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

Implemented in EFAElement3D, and EFAElement2D.

Referenced by XFEM::getEFANodeCoords().

◆ getNeighborIndex()

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

Implemented in EFAElement3D, and EFAElement2D.

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; }
std::vector< EFANode * > _nodes
Definition: EFAElement.h:29

◆ getNonPhysicalNodes()

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

Implemented in EFAElement3D, and EFAElement2D.

◆ getNumCuts()

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

Implemented in EFAElement3D, and EFAElement2D.

◆ getParent()

EFAElement * EFAElement::getParent ( ) const

Definition at line 168 of file EFAElement.C.

169 {
170  return _parent;
171 }
EFAElement * _parent
Definition: EFAElement.h:31

◆ id()

unsigned int EFAElement::id ( ) const

◆ initCrackTip()

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

Implemented in EFAElement3D, and EFAElement2D.

◆ isCrackTipElement()

virtual bool EFAElement::isCrackTipElement ( ) const
pure virtual

◆ isCrackTipSplit()

bool EFAElement::isCrackTipSplit ( ) const

Definition at line 128 of file EFAElement.C.

Referenced by EFAElement2D::getCrackTipSplitElementID(), EFAElement2D::initCrackTip(), and EFAElement3D::initCrackTip().

129 {
131 }
bool _crack_tip_split_element
Definition: EFAElement.h:33

◆ isFinalCut()

virtual bool EFAElement::isFinalCut ( ) const
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

◆ 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.

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

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 }
unsigned int getNewID(std::map< unsigned int, T *> &theMap)
Definition: EFAFuncs.h:38
unsigned int _id
Definition: EFAElement.h:27
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
virtual void switchNode(EFANode *new_node, EFANode *old_node, bool descend_to_parent)=0
EFAElement * _parent
Definition: EFAElement.h:31
EFANode * parent() const
Definition: EFANode.C:48
unsigned int id() const
Definition: EFANode.C:36
N_CATEGORY category() const
Definition: EFANode.C:42

◆ neighborSanityCheck()

virtual void EFAElement::neighborSanityCheck ( ) const
pure virtual

◆ numChildren()

unsigned int EFAElement::numChildren ( ) const

Definition at line 189 of file EFAElement.C.

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

190 {
191  return _children.size();
192 }
std::vector< EFAElement * > _children
Definition: EFAElement.h:32

◆ numCrackTipNeighbors()

unsigned int EFAElement::numCrackTipNeighbors ( ) const

Definition at line 134 of file EFAElement.C.

135 {
136  return _crack_tip_neighbors.size();
137 }
std::vector< unsigned int > _crack_tip_neighbors
Definition: EFAElement.h:34

◆ numFragments()

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

Implemented in EFAElement3D, and EFAElement2D.

◆ numGeneralNeighbors()

unsigned int EFAElement::numGeneralNeighbors ( ) const

Definition at line 236 of file EFAElement.C.

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

237 {
238  return _general_neighbors.size();
239 }
std::vector< EFAElement * > _general_neighbors
Definition: EFAElement.h:36

◆ numInteriorNodes()

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

Implemented in EFAElement3D, and EFAElement2D.

◆ 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 }
unsigned int _id
Definition: EFAElement.h:27
std::vector< EFANode * > _nodes
Definition: EFAElement.h:29
unsigned int _num_nodes
Definition: EFAElement.h:28

◆ removePhantomEmbeddedNode()

virtual void EFAElement::removePhantomEmbeddedNode ( )
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

◆ 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 }
bool _crack_tip_split_element
Definition: EFAElement.h:33

◆ setNode()

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

◆ setParent()

void EFAElement::setParent ( EFAElement parent)

Definition at line 183 of file EFAElement.C.

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

184 {
185  _parent = parent;
186 }
EFAElement * _parent
Definition: EFAElement.h:31

◆ 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 EFAElement3D, and EFAElement2D.

◆ shouldDuplicateForCrackTip()

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

Implemented in EFAElement3D, and EFAElement2D.

◆ shouldDuplicateForPhantomCorner()

virtual bool EFAElement::shouldDuplicateForPhantomCorner ( )
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

◆ switchEmbeddedNode()

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

Implemented in EFAElement3D, and EFAElement2D.

◆ 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 EFAElement3D, and EFAElement2D.

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: