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
 
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 (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)=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 18 of file EFAElement.h.

Constructor & Destructor Documentation

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

Definition at line 14 of file EFAElement.C.

15  : _id(eid),
16  _num_nodes(n_nodes),
17  _nodes(_num_nodes, NULL),
18  _parent(NULL),
20 {
21 }
unsigned int _id
Definition: EFAElement.h:26
std::vector< EFANode * > _nodes
Definition: EFAElement.h:28
unsigned int _num_nodes
Definition: EFAElement.h:27
EFAElement * _parent
Definition: EFAElement.h:30
bool _crack_tip_split_element
Definition: EFAElement.h:32
EFAElement::~EFAElement ( )
virtual

Definition at line 23 of file EFAElement.C.

23 {}

Member Function Documentation

void EFAElement::addChild ( EFAElement child)

Definition at line 201 of file EFAElement.C.

202 {
203  _children.push_back(child);
204 }
std::vector< EFAElement * > _children
Definition: EFAElement.h:31
void EFAElement::addCrackTipNeighbor ( EFAElement neighbor_elem)

Definition at line 155 of file EFAElement.C.

156 {
157  // Find out what side the specified element is on, and add it as a crack tip neighbor
158  // element for that side.
159  unsigned int neighbor_index = getNeighborIndex(neighbor_elem);
160  bool crack_tip_neighbor_exist = false;
161  for (unsigned int i = 0; i < _crack_tip_neighbors.size(); ++i)
162  {
163  if (_crack_tip_neighbors[i] == neighbor_index)
164  {
165  crack_tip_neighbor_exist = true;
166  break;
167  }
168  }
169  if (!crack_tip_neighbor_exist)
170  _crack_tip_neighbors.push_back(neighbor_index);
171 }
virtual unsigned int getNeighborIndex(const EFAElement *neighbor_elem) const =0
std::vector< unsigned int > _crack_tip_neighbors
Definition: EFAElement.h:33
virtual void EFAElement::clearNeighbors ( )
pure virtual
void EFAElement::clearParentAndChildren ( )

Definition at line 207 of file EFAElement.C.

Referenced by ElementFragmentAlgorithm::clearAncestry().

208 {
209  _parent = NULL;
210  _children.clear();
211 }
EFAElement * _parent
Definition: EFAElement.h:30
std::vector< EFAElement * > _children
Definition: EFAElement.h:31
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
bool EFAElement::containsNode ( EFANode node) const
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
EFANode * EFAElement::createLocalNodeFromGlobalNode ( const EFANode global_node) const

Definition at line 68 of file EFAElement.C.

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

69 {
70  // Given a global node, create a new local node
71  if (global_node->category() != EFANode::N_CATEGORY_PERMANENT &&
72  global_node->category() != EFANode::N_CATEGORY_TEMP &&
74  EFAError("In createLocalNodeFromGlobalNode node is not global");
75 
76  EFANode * new_local_node = NULL;
77  unsigned int inode = 0;
78  for (; inode < _nodes.size(); ++inode)
79  {
80  if (_nodes[inode] == global_node)
81  {
82  new_local_node = new EFANode(inode, EFANode::N_CATEGORY_LOCAL_INDEX);
83  break;
84  }
85  }
86  if (!new_local_node)
87  EFAError("In createLocalNodeFromGlobalNode could not find global node");
88 
89  return new_local_node;
90 }
N_CATEGORY category() const
Definition: EFANode.C:40
std::vector< EFANode * > _nodes
Definition: EFAElement.h:28
void EFAElement::findGeneralNeighbors ( std::map< EFANode *, std::set< EFAElement * >> &  InverseConnectivity)

Definition at line 214 of file EFAElement.C.

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

215 {
216  _general_neighbors.clear();
217  std::set<EFAElement *> patch_elements;
218  for (unsigned int inode = 0; inode < _num_nodes; ++inode)
219  {
220  std::set<EFAElement *> this_node_connected_elems = InverseConnectivity[_nodes[inode]];
221  patch_elements.insert(this_node_connected_elems.begin(), this_node_connected_elems.end());
222  }
223 
224  std::set<EFAElement *>::iterator eit2;
225  for (eit2 = patch_elements.begin(); eit2 != patch_elements.end(); ++eit2)
226  {
227  EFAElement * neigh_elem = *eit2;
228  if (neigh_elem != this)
229  _general_neighbors.push_back(neigh_elem);
230  }
231 }
std::vector< EFANode * > _nodes
Definition: EFAElement.h:28
unsigned int _num_nodes
Definition: EFAElement.h:27
std::vector< EFAElement * > _general_neighbors
Definition: EFAElement.h:35
virtual void EFAElement::fragmentSanityCheck ( unsigned int  n_old_frag_edges,
unsigned int  n_old_frag_cuts 
) const
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

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

Definition at line 180 of file EFAElement.C.

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

181 {
182  if (child_id < _children.size())
183  return _children[child_id];
184  else
185  EFAError("child_id out of bounds");
186 }
std::vector< EFAElement * > _children
Definition: EFAElement.h:31
unsigned int EFAElement::getCrackTipNeighbor ( unsigned int  index) const

Definition at line 146 of file EFAElement.C.

147 {
148  if (index < _crack_tip_neighbors.size())
149  return _crack_tip_neighbors[index];
150  else
151  EFAError("in getCrackTipNeighbor index out of bounds");
152 }
std::vector< unsigned int > _crack_tip_neighbors
Definition: EFAElement.h:33
EFAElement * EFAElement::getGeneralNeighbor ( unsigned int  index) const

Definition at line 234 of file EFAElement.C.

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

235 {
236  return _general_neighbors[index];
237 }
std::vector< EFAElement * > _general_neighbors
Definition: EFAElement.h:35
EFANode * EFAElement::getGlobalNodeFromLocalNode ( const EFANode local_node) const

Definition at line 93 of file EFAElement.C.

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

Definition at line 109 of file EFAElement.C.

Referenced by XFEM::getEFANodeCoords().

110 {
111  unsigned int local_node_id = 99999;
112  bool found_local_node = false;
113  for (unsigned int i = 0; i < _num_nodes; ++i)
114  {
115  if (_nodes[i] == node)
116  {
117  found_local_node = true;
118  local_node_id = i;
119  break;
120  }
121  }
122  if (!found_local_node)
123  EFAError("In EFAelement::getLocalNodeIndex, cannot find the given node");
124  return local_node_id;
125 }
std::vector< EFANode * > _nodes
Definition: EFAElement.h:28
unsigned int _num_nodes
Definition: EFAElement.h:27
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().

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

Implemented in EFAElement3D, and EFAElement2D.

Referenced by addCrackTipNeighbor().

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

Implemented in EFAElement3D, and EFAElement2D.

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

Implemented in EFAElement3D, and EFAElement2D.

EFAElement * EFAElement::getParent ( ) const

Definition at line 174 of file EFAElement.C.

175 {
176  return _parent;
177 }
EFAElement * _parent
Definition: EFAElement.h:30
unsigned int EFAElement::id ( ) const
virtual void EFAElement::initCrackTip ( std::set< EFAElement * > &  CrackTipElements)
pure virtual
virtual bool EFAElement::isCrackTipElement ( ) const
pure virtual
bool EFAElement::isCrackTipSplit ( ) const

Definition at line 134 of file EFAElement.C.

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

135 {
137 }
bool _crack_tip_split_element
Definition: EFAElement.h:32
virtual bool EFAElement::isFinalCut ( ) const
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

virtual bool EFAElement::isPartial ( ) const
pure virtual
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 246 of file EFAElement.C.

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

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

Definition at line 195 of file EFAElement.C.

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

196 {
197  return _children.size();
198 }
std::vector< EFAElement * > _children
Definition: EFAElement.h:31
unsigned int EFAElement::numCrackTipNeighbors ( ) const

Definition at line 140 of file EFAElement.C.

141 {
142  return _crack_tip_neighbors.size();
143 }
std::vector< unsigned int > _crack_tip_neighbors
Definition: EFAElement.h:33
virtual unsigned int EFAElement::numFragments ( ) const
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

unsigned int EFAElement::numGeneralNeighbors ( ) const

Definition at line 240 of file EFAElement.C.

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

241 {
242  return _general_neighbors.size();
243 }
std::vector< EFAElement * > _general_neighbors
Definition: EFAElement.h:35
virtual unsigned int EFAElement::numInteriorNodes ( ) const
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

unsigned int EFAElement::numNodes ( ) const
virtual void EFAElement::printElement ( std::ostream &  ostream)
pure virtual
void EFAElement::printNodes ( std::ostream &  ostream) const

Definition at line 59 of file EFAElement.C.

60 {
61  ostream << "***** nodes for element " << _id << " *****" << std::endl;
62  for (unsigned int i = 0; i < _num_nodes; ++i)
63  ostream << "addr " << _nodes[i] << ", ID " << _nodes[i]->idCatString() << ", category "
64  << _nodes[i]->category() << std::endl;
65 }
unsigned int _id
Definition: EFAElement.h:26
std::vector< EFANode * > _nodes
Definition: EFAElement.h:28
unsigned int _num_nodes
Definition: EFAElement.h:27
virtual void EFAElement::removePhantomEmbeddedNode ( )
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

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

Definition at line 128 of file EFAElement.C.

129 {
131 }
bool _crack_tip_split_element
Definition: EFAElement.h:32
void EFAElement::setNode ( unsigned int  node_id,
EFANode node 
)
void EFAElement::setParent ( EFAElement parent)

Definition at line 189 of file EFAElement.C.

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

190 {
191  _parent = parent;
192 }
EFAElement * _parent
Definition: EFAElement.h:30
virtual void EFAElement::setupNeighbors ( std::map< EFANode *, std::set< EFAElement * >> &  InverseConnectivityMap)
pure virtual
virtual bool EFAElement::shouldDuplicateCrackTipSplitElement ( const std::set< EFAElement * > &  CrackTipElements)
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

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

Implemented in EFAElement3D, and EFAElement2D.

virtual bool EFAElement::shouldDuplicateForPhantomCorner ( )
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

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

Implemented in EFAElement3D, and EFAElement2D.

virtual void EFAElement::switchNode ( EFANode new_node,
EFANode old_node,
bool  descend_to_parent 
)
pure virtual
virtual void EFAElement::updateFragmentNode ( )
pure virtual
virtual void EFAElement::updateFragments ( const std::set< EFAElement * > &  CrackTipElements,
std::map< unsigned int, EFANode * > &  EmbeddedNodes 
)
pure virtual
virtual bool EFAElement::willCrackTipExtend ( std::vector< unsigned int > &  split_neighbors) const
pure virtual

Implemented in EFAElement3D, and EFAElement2D.

Member Data Documentation

std::vector<EFAElement *> EFAElement::_children
protected
std::vector<unsigned int> EFAElement::_crack_tip_neighbors
protected
bool EFAElement::_crack_tip_split_element
protected
std::vector<EFAElement *> EFAElement::_general_neighbors
protected
unsigned int EFAElement::_id
protected
std::vector<EFANode *> EFAElement::_local_nodes
protected
std::vector<EFANode *> EFAElement::_nodes
protected
unsigned int EFAElement::_num_nodes
protected
EFAElement* EFAElement::_parent
protected

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