47 cout << endl << endl <<
"Tetrahdral mesh generation" << endl;
51 map<int, NodeSharedPtr> IdToNode;
52 map<NodeSharedPtr, int> IdToNodeRev;
56 map<int, NekDouble> IdToDelta;
57 vector<Array<OneD, int> > surfacetris;
68 vector<NodeSharedPtr> n =
m_surface[i]->GetVertexList();
69 Array<OneD, int> tri(3);
70 for(
int j = 0; j < n.size(); j++)
72 pair<NodeSet::iterator,bool> testIns =
73 alreadyInSurface.insert(n[j]);
83 IdToNodeRev[n[j]] = cnt;
84 IdToDelta[cnt] =
m_mesh->m_octree->Query(n[j]->GetLoc());
89 tri[j] = IdToNodeRev[(*testIns.first)];
92 surfacetris.push_back(tri);
102 cout <<
"\tInital Node Count: " << IdToNode.size() << endl;
105 tetgen->InitialMesh(IdToNode, surfacetris);
107 vector<Array<OneD, NekDouble> > newp;
108 int ctbefore = IdToNode.size();
114 tetgen->GetNewPoints(ctbefore, newp);
115 for (
int i = 0; i < newp.size(); i++)
118 IdToDelta[ctbefore + i] = d;
120 tetgen->RefineMesh(IdToDelta);
121 }
while (newpb != newp.size());
125 tetgen->GetNewPoints(ctbefore, newp);
126 for (
int i = 0; i < newp.size(); i++)
129 new Node(ctbefore + i, newp[i][0], newp[i][1], newp[i][2]));
130 IdToNode[ctbefore + i] = n;
140 vector<NodeSharedPtr> n;
147 tags.push_back(
m_id);
151 m_mesh->m_element[3].push_back(E);
std::vector< Array< OneD, int > > m_tetconnect
conncetivity of the tets from the interface
TetGenInterfaceSharedPtr tetgen
ElementFactory & GetElementFactory()
std::shared_ptr< Node > NodeSharedPtr
std::unordered_set< NodeSharedPtr, NodeHash > NodeSet
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
std::shared_ptr< Element > ElementSharedPtr
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::vector< ElementSharedPtr > m_surface