19 _nodes(_num_nodes, NULL),
21 _crack_tip_split_element(false)
54 for (
unsigned int i = 0; i <
_nodes.size(); ++i)
63 ostream <<
"***** nodes for element " <<
_id <<
" *****" << std::endl;
65 ostream <<
"addr " <<
_nodes[i] <<
", ID " <<
_nodes[i]->idCatString() <<
", category "
66 <<
_nodes[i]->category() << std::endl;
76 EFAError(
"In createLocalNodeFromGlobalNode node is not global");
78 EFANode * new_local_node = NULL;
79 unsigned int inode = 0;
80 for (; inode <
_nodes.size(); ++inode)
82 if (
_nodes[inode] == global_node)
89 EFAError(
"In createLocalNodeFromGlobalNode could not find global node");
91 return new_local_node;
99 EFAError(
"In getGlobalNodeFromLocalNode node passed in is not local");
105 EFAError(
"In getGlobalNodeFromLocalNode, the node stored by the element is not global");
113 unsigned int local_node_id = 99999;
114 bool found_local_node =
false;
119 found_local_node =
true;
124 if (!found_local_node)
125 EFAError(
"In EFAelement::getLocalNodeIndex, cannot find the given node");
126 return local_node_id;
153 EFAError(
"in getCrackTipNeighbor index out of bounds");
162 bool crack_tip_neighbor_exist =
false;
167 crack_tip_neighbor_exist =
true;
171 if (!crack_tip_neighbor_exist)
187 EFAError(
"child_id out of bounds");
219 std::set<EFAElement *> patch_elements;
220 for (
unsigned int inode = 0; inode <
_num_nodes; ++inode)
222 std::set<EFAElement *> this_node_connected_elems = InverseConnectivity[
_nodes[inode]];
223 patch_elements.insert(this_node_connected_elems.begin(), this_node_connected_elems.end());
226 std::set<EFAElement *>::iterator eit2;
227 for (eit2 = patch_elements.begin(); eit2 != patch_elements.end(); ++eit2)
230 if (neigh_elem !=
this)
249 EFANode *& childOfNeighborNode,
251 std::map<unsigned int, EFANode *> & PermanentNodes,
252 std::map<unsigned int, EFANode *> & TempNodes)
256 EFAError(
"no getParent element for child element ",
_id,
" in mergeNodes");
259 if (childNode != childOfNeighborNode)
265 if (childOfNeighborNode->
parent() == childNode)
267 childOfNeighborElem->
switchNode(childNode, childOfNeighborNode,
true);
270 EFAError(
"Attempted to delete node: ",
271 childOfNeighborNode->
id(),
272 " from PermanentNodes, but couldn't find it");
274 childOfNeighborNode = childNode;
276 else if (childNode->
parent() == childOfNeighborNode)
278 childElem->
switchNode(childOfNeighborNode, childNode,
true);
281 EFAError(
"Attempted to delete node: ",
283 " from PermanentNodes, but couldn't find it");
285 childNode = childOfNeighborNode;
287 else if (childNode->
parent() != NULL &&
291 childOfNeighborElem->
switchNode(childNode, childOfNeighborNode,
true);
293 childOfNeighborNode))
295 EFAError(
"Attempted to delete node: ",
296 childOfNeighborNode->
id(),
297 " from PermanentNodes, but couldn't find it");
299 childOfNeighborNode = childNode;
303 EFAError(
"Attempting to merge nodes: ",
306 childOfNeighborNode->
id(),
307 " but both are permanent themselves");
312 if (childOfNeighborNode->
parent() != childNode &&
315 EFAError(
"Attempting to merge nodes ",
319 " but neither the 2nd node nor its parent is parent of the 1st");
321 childOfNeighborElem->
switchNode(childNode, childOfNeighborNode,
true);
323 EFAError(
"Attempted to delete node: ",
324 childOfNeighborNode->
id(),
325 " from TempNodes, but couldn't find it");
326 childOfNeighborNode = childNode;
331 if (childNode->
parent() != childOfNeighborNode &&
334 EFAError(
"Attempting to merge nodes ",
337 childOfNeighborNode->
id(),
338 " but neither the 2nd node nor its parent is parent of the 1st");
340 childElem->
switchNode(childOfNeighborNode, childNode,
true);
343 "Attempted to delete node: ", childNode->
id(),
" from TempNodes, but couldn't find it");
344 childNode = childOfNeighborNode;
351 PermanentNodes.insert(std::make_pair(new_node_id, newNode));
353 childOfNeighborElem->
switchNode(newNode, childOfNeighborNode,
true);
354 childElem->
switchNode(newNode, childNode,
true);
356 if (childNode->
parent() != childOfNeighborNode->
parent())
358 EFAError(
"Attempting to merge nodes ",
361 childOfNeighborNode->
id(),
362 " but they don't share a common parent");
366 EFAError(
"Attempted to delete node: ",
367 childOfNeighborNode->
id(),
368 " from TempNodes, but couldn't find it");
371 "Attempted to delete node: ", childNode->
id(),
" from TempNodes, but couldn't find it");
372 childOfNeighborNode = newNode;