34 std::map<unsigned int, EFANode *>::iterator mit;
55 std::map<unsigned int, EFAElement *>::iterator eit;
66 unsigned int first_id = 0;
67 unsigned int num_nodes = quads[0].size();
69 if (quads.size() == 0)
70 EFAError(
"add2DElements called with empty vector of quads");
72 for (
unsigned int i = 0; i < quads.size(); ++i)
76 _elements.insert(std::make_pair(new_elem_id, newElem));
79 first_id = new_elem_id;
81 for (
unsigned int j = 0; j < num_nodes; ++j)
84 std::map<unsigned int, EFANode *>::iterator mit =
_permanent_nodes.find(quads[i][j]);
91 currNode = mit->second;
104 unsigned int num_nodes = quad.size();
106 std::map<unsigned int, EFAElement *>::iterator mit =
_elements.find(
id);
108 EFAError(
"In add2DElement element with id: ",
id,
" already exists");
111 _elements.insert(std::make_pair(
id, newElem));
113 for (
unsigned int j = 0; j < num_nodes; ++j)
116 std::map<unsigned int, EFANode *>::iterator mit =
_permanent_nodes.find(quad[j]);
123 currNode = mit->second;
135 unsigned int num_nodes = quad.size();
136 unsigned int num_faces = 0;
139 else if (num_nodes == 20)
141 else if (num_nodes == 8)
143 else if (num_nodes == 4)
145 else if (num_nodes == 10)
148 EFAError(
"In add3DElement element with id: ",
id,
" has invalid num_nodes");
150 std::map<unsigned int, EFAElement *>::iterator mit =
_elements.find(
id);
152 EFAError(
"In add3DElement element with id: ",
id,
" already exists");
155 _elements.insert(std::make_pair(
id, newElem));
157 for (
unsigned int j = 0; j < num_nodes; ++j)
160 std::map<unsigned int, EFANode *>::iterator mit =
_permanent_nodes.find(quad[j]);
167 currNode = mit->second;
179 std::map<unsigned int, EFAElement *>::iterator eit;
203 std::map<unsigned int, EFAElement *>::iterator eit;
217 std::map<unsigned int, EFAElement *>::iterator eit =
_elements.find(elemid);
219 EFAError(
"Could not find element with id: ", elemid,
" in addEdgeIntersection");
221 EFAElement2D * curr_elem = dynamic_cast<EFAElement2D *>(eit->second);
223 EFAError(
"addElemEdgeIntersection: elem ", elemid,
" is not of type EFAelement2D");
231 std::map<unsigned int, EFAElement *>::iterator eit =
_elements.find(elemid);
233 EFAError(
"Could not find element with id: ", elemid,
" in addElemNodeIntersection");
235 EFAElement2D * curr_elem = dynamic_cast<EFAElement2D *>(eit->second);
237 EFAError(
"addElemNodeIntersection: elem ", elemid,
" is not of type EFAelement2D");
246 unsigned int frag_edge_id,
250 std::map<unsigned int, EFAElement *>::iterator eit =
_elements.find(elemid);
252 EFAError(
"Could not find element with id: ", elemid,
" in addFragEdgeIntersection");
254 EFAElement2D * elem = dynamic_cast<EFAElement2D *>(eit->second);
256 EFAError(
"addFragEdgeIntersection: elem ", elemid,
" is not of type EFAelement2D");
263 std::vector<unsigned int> edgeid,
264 std::vector<double> position)
267 std::map<unsigned int, EFAElement *>::iterator eit =
_elements.find(elemid);
269 EFAError(
"Could not find element with id: ", elemid,
" in addEdgeIntersection");
271 EFAElement3D * curr_elem = dynamic_cast<EFAElement3D *>(eit->second);
273 EFAError(
"addElemEdgeIntersection: elem ", elemid,
" is not of type EFAelement2D");
283 std::vector<unsigned int> ,
284 std::vector<double> )
293 std::map<unsigned int, EFAElement *>::iterator eit;
320 std::map<unsigned int, EFANode *>::iterator mit;
323 if (mit->first >= first_new_node_id)
339 std::map<unsigned int, EFANode *>::iterator mit;
357 std::map<unsigned int, EFAElement *>::iterator eit;
373 EFAError(
"Attempted to delete parent element: ",
375 " from _elements, but couldn't find it");
379 std::map<unsigned int, EFAElement *>::iterator eit;
384 for (
unsigned int j = 0; j < curr_elem->
numNodes(); j++)
391 std::map<unsigned int, EFANode *>::iterator mit;
393 mit->second->removeParent();
420 std::map<unsigned int, EFAElement *> newChildElements;
423 std::map<unsigned int, EFAElement *>::iterator eit;
424 std::map<unsigned int, EFAElement *>::iterator ElementsEnd =
_elements.end();
425 for (eit =
_elements.begin(); eit != ElementsEnd; ++eit)
436 _elements.insert(newChildElements.begin(), newChildElements.end());
443 for (
unsigned int elem_iter = 0; elem_iter <
_child_elements.size(); elem_iter++)
451 std::vector<EFAElement *>::iterator vit;
476 std::set<EFAElement *>::iterator sit;
488 for (
unsigned int elem_iter = 0; elem_iter <
_child_elements.size(); elem_iter++)
506 _ostream <<
"============================================================"
507 <<
"==================================================" << std::endl;
508 _ostream <<
" CutElemMesh Data" << std::endl;
509 _ostream <<
"============================================================"
510 <<
"==================================================" << std::endl;
511 _ostream <<
"Permanent Nodes:" << std::endl;
512 std::map<unsigned int, EFANode *>::iterator mit;
516 _ostream <<
" " << mit->second->id();
522 _ostream <<
"Temp Nodes:" << std::endl;
526 _ostream <<
" " << mit->second->id();
532 _ostream <<
"Embedded Nodes:" << std::endl;
536 _ostream <<
" " << mit->second->id();
542 _ostream <<
"Embedded Permanent Nodes:" << std::endl;
546 _ostream <<
" " << mit->second->id();
552 _ostream <<
"Parent Elements:" << std::endl;
562 _ostream <<
"Child Elements:" << std::endl;
572 _ostream <<
"Elements:" << std::endl;
575 <<
"| embedded nodes "
576 <<
"| edge neighbors "
578 <<
"| frag link ... " << std::endl;
579 _ostream <<
"------------------------------------------------------------"
580 <<
"--------------------------------------------------" << std::endl;
581 std::map<unsigned int, EFAElement *>::iterator eit;
592 std::map<unsigned int, EFAElement *>::iterator mit =
_elements.find(
id);
594 EFAError(
"in getElemByID() could not find element: ",
id);
601 unsigned int elem_id = 99999;
602 std::map<unsigned int, EFAElement *>::iterator eit;
607 for (
unsigned int i = 0; i < curr_elem->
numNodes(); ++i)
609 if (curr_elem->
getNode(i)->
id() == node_id[i])
614 elem_id = curr_elem->
id();
625 std::map<EFANode *, std::vector<EFANode *>> isolate_parent_to_child;
626 for (
unsigned int i = 0; i <
_new_nodes.size(); ++i)
630 EFAError(
"a new permanent node must have a parent node!");
631 bool isParentNodeInNewElem =
false;
636 isParentNodeInNewElem =
true;
640 if (!isParentNodeInNewElem)
641 isolate_parent_to_child[parent_node].push_back(
_new_nodes[i]);
646 std::map<EFANode *, std::vector<EFANode *>>::iterator mit;
647 for (mit = isolate_parent_to_child.begin(); mit != isolate_parent_to_child.end(); ++mit)
649 EFANode * parent_node = mit->first;
650 EFANode * child_node = (mit->second)[0];