46#include <boost/algorithm/string/predicate.hpp>
47#include <boost/archive/iterators/base64_from_binary.hpp>
48#include <boost/archive/iterators/binary_from_base64.hpp>
49#include <boost/archive/iterators/transform_width.hpp>
50#include <boost/format.hpp>
51#include <boost/iostreams/copy.hpp>
52#include <boost/iostreams/filter/zlib.hpp>
53#include <boost/iostreams/filtering_stream.hpp>
54#include <boost/make_shared.hpp>
65 "IO with Xml geometry");
70 TiXmlElement *element =
m_xmlGeom->FirstChildElement(
"VERTEX");
71 ASSERTL0(element,
"Unable to find mesh VERTEX tag in file.");
78 const char *xscal = element->Attribute(
"XSCALE");
85 std::string xscalstr = xscal;
87 xscale = expEvaluator.
Evaluate(expr_id);
90 const char *yscal = element->Attribute(
"YSCALE");
97 std::string yscalstr = yscal;
99 yscale = expEvaluator.
Evaluate(expr_id);
102 const char *zscal = element->Attribute(
"ZSCALE");
109 std::string zscalstr = zscal;
111 zscale = expEvaluator.
Evaluate(expr_id);
119 const char *xmov = element->Attribute(
"XMOVE");
126 std::string xmovstr = xmov;
128 xmove = expEvaluator.
Evaluate(expr_id);
131 const char *ymov = element->Attribute(
"YMOVE");
138 std::string ymovstr = ymov;
140 ymove = expEvaluator.
Evaluate(expr_id);
143 const char *zmov = element->Attribute(
"ZMOVE");
150 std::string zmovstr = zmov;
152 zmove = expEvaluator.
Evaluate(expr_id);
156 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
158 if (boost::iequals(IsCompressed,
162 TiXmlNode *vertexChild = element->FirstChild();
163 ASSERTL0(vertexChild,
"Unable to extract the data from the compressed "
166 std::string vertexStr;
167 if (vertexChild->Type() == TiXmlNode::TINYXML_TEXT)
169 vertexStr += vertexChild->ToText()->ValueStr();
172 std::vector<SpatialDomains::MeshVertex> vertData;
178 for (
int i = 0; i < vertData.size(); ++i)
180 indx = vertData[i].id;
181 xval = vertData[i].x;
182 yval = vertData[i].y;
183 zval = vertData[i].z;
185 xval = xval * xscale + xmove;
186 yval = yval * yscale + ymove;
187 zval = zval * zscale + zmove;
192 vert->SetGlobalID(indx);
198 ASSERTL0(
false,
"Compressed formats do not match. Expected :" +
200 " but got " + IsCompressed);
208 TiXmlElement *element =
m_xmlGeom->FirstChildElement(
"VERTEX");
209 ASSERTL0(element,
"Unable to find mesh VERTEX tag in file.");
214 const char *xscal = element->Attribute(
"XSCALE");
221 std::string xscalstr = xscal;
223 xscale = expEvaluator.
Evaluate(expr_id);
226 const char *yscal = element->Attribute(
"YSCALE");
233 std::string yscalstr = yscal;
235 yscale = expEvaluator.
Evaluate(expr_id);
238 const char *zscal = element->Attribute(
"ZSCALE");
245 std::string zscalstr = zscal;
247 zscale = expEvaluator.
Evaluate(expr_id);
255 const char *xmov = element->Attribute(
"XMOVE");
262 std::string xmovstr = xmov;
264 xmove = expEvaluator.
Evaluate(expr_id);
267 const char *ymov = element->Attribute(
"YMOVE");
274 std::string ymovstr = ymov;
276 ymove = expEvaluator.
Evaluate(expr_id);
279 const char *zmov = element->Attribute(
"ZMOVE");
286 std::string zmovstr = zmov;
288 zmove = expEvaluator.
Evaluate(expr_id);
300 field->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
302 if (IsCompressed.size() == 0)
309 ASSERTL0(boost::iequals(IsCompressed,
311 "Compressed formats do not match. Expected :" +
315 std::vector<SpatialDomains::MeshCurvedInfo> edginfo;
316 std::vector<SpatialDomains::MeshCurvedInfo> facinfo;
320 TiXmlElement *x =
field->FirstChildElement();
323 const char *entitytype = x->Value();
325 if (boost::iequals(entitytype,
"E"))
329 TiXmlNode *child = x->FirstChild();
331 if (child->Type() == TiXmlNode::TINYXML_TEXT)
333 elmtStr += child->ToText()->ValueStr();
339 else if (boost::iequals(entitytype,
"F"))
343 TiXmlNode *child = x->FirstChild();
345 if (child->Type() == TiXmlNode::TINYXML_TEXT)
347 elmtStr += child->ToText()->ValueStr();
353 else if (boost::iequals(entitytype,
"DATAPOINTS"))
357 "Failed to get ID from PTS section");
363 TiXmlElement *DataIdx = x->FirstChildElement(
"INDEX");
364 ASSERTL0(DataIdx,
"Cannot read data index tag in compressed "
367 TiXmlNode *child = DataIdx->FirstChild();
368 if (child->Type() == TiXmlNode::TINYXML_TEXT)
370 elmtStr = child->ToText()->ValueStr();
376 TiXmlElement *DataPts = x->FirstChildElement(
"POINTS");
377 ASSERTL0(DataPts,
"Cannot read data pts tag in compressed "
380 child = DataPts->FirstChild();
381 if (child->Type() == TiXmlNode::TINYXML_TEXT)
383 elmtStr = child->ToText()->ValueStr();
391 ASSERTL0(
false,
"Unknown tag in curved section");
393 x = x->NextSiblingElement();
397 for (
int i = 0; i < cpts.
pts.size(); ++i)
399 cpts.
pts[i].x = xscale * cpts.
pts[i].x + xmove;
400 cpts.
pts[i].y = yscale * cpts.
pts[i].y + ymove;
401 cpts.
pts[i].z = zscale * cpts.
pts[i].z + zmove;
404 for (
int i = 0; i < edginfo.size(); ++i)
406 int edgeid = edginfo[i].entityid;
413 int offset = edginfo[i].ptoffset;
414 for (
int j = 0; j < edginfo[i].npoints; ++j)
416 int idx = cpts.
index[offset + j];
420 cpts.
pts[idx].y, cpts.
pts[idx].z));
421 curve->m_points.push_back(vert);
427 for (
int i = 0; i < facinfo.size(); ++i)
429 int faceid = facinfo[i].entityid;
435 int offset = facinfo[i].ptoffset;
436 for (
int j = 0; j < facinfo[i].npoints; ++j)
438 int idx = cpts.
index[offset + j];
442 cpts.
pts[idx].y, cpts.
pts[idx].z));
443 curve->m_points.push_back(vert);
452 CurveMap::iterator it;
460 field->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
462 ASSERTL0(boost::iequals(IsCompressed,
464 "Compressed formats do not match. Expected :" +
468 TiXmlNode *edgeChild =
field->FirstChild();
469 ASSERTL0(edgeChild,
"Unable to extract the data from "
470 "the compressed edge tag.");
473 if (edgeChild->Type() == TiXmlNode::TINYXML_TEXT)
475 edgeStr += edgeChild->ToText()->ValueStr();
478 std::vector<SpatialDomains::MeshEdge> edgeData;
482 for (
int i = 0; i < edgeData.size(); ++i)
484 indx = edgeData[i].id;
515 TiXmlElement *element =
field->FirstChildElement();
516 CurveMap::iterator it;
520 std::string elementType(element->ValueStr());
522 ASSERTL0(elementType ==
"Q" || elementType ==
"T",
523 (std::string(
"Unknown 3D face type: ") + elementType).c_str());
526 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
529 boost::iequals(IsCompressed,
531 "Compressed formats do not match. Expected :" +
536 TiXmlNode *faceChild = element->FirstChild();
537 ASSERTL0(faceChild,
"Unable to extract the data from "
538 "the compressed face tag.");
541 if (faceChild->Type() == TiXmlNode::TINYXML_TEXT)
543 faceStr += faceChild->ToText()->ValueStr();
547 if (elementType ==
"T")
549 std::vector<SpatialDomains::MeshTri> faceData;
553 for (
int i = 0; i < faceData.size(); ++i)
555 indx = faceData[i].id;
574 indx, edges, it->second);
576 trigeom->SetGlobalID(indx);
580 else if (elementType ==
"Q")
582 std::vector<SpatialDomains::MeshQuad> faceData;
586 for (
int i = 0; i < faceData.size(); ++i)
588 indx = faceData[i].id;
607 indx, edges, it->second);
609 quadgeom->SetGlobalID(indx);
614 element = element->NextSiblingElement();
620 TiXmlElement *
field =
nullptr;
630 TiXmlElement *segment =
field->FirstChildElement(
"S");
631 CurveMap::iterator it;
636 segment->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
638 boost::iequals(IsCompressed,
640 "Compressed formats do not match. Expected :" +
645 TiXmlNode *child = segment->FirstChild();
646 ASSERTL0(child,
"Unable to extract the data from "
647 "the compressed face tag.");
650 if (child->Type() == TiXmlNode::TINYXML_TEXT)
652 str += child->ToText()->ValueStr();
657 std::vector<SpatialDomains::MeshEdge> data;
660 for (
int i = 0; i < data.size(); ++i)
675 seg->SetGlobalID(indx);
681 seg->SetGlobalID(indx);
683 seg->SetGlobalID(indx);
687 segment = segment->NextSiblingElement(
"S");
699 CurveMap::iterator it;
704 TiXmlElement *element =
field->FirstChildElement();
708 std::string elementType(element->ValueStr());
711 elementType ==
"Q" || elementType ==
"T",
712 (std::string(
"Unknown 2D element type: ") + elementType).c_str());
715 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
718 boost::iequals(IsCompressed,
720 "Compressed formats do not match. Expected :" +
725 TiXmlNode *faceChild = element->FirstChild();
726 ASSERTL0(faceChild,
"Unable to extract the data from "
727 "the compressed face tag.");
730 if (faceChild->Type() == TiXmlNode::TINYXML_TEXT)
732 faceStr += faceChild->ToText()->ValueStr();
736 if (elementType ==
"T")
738 std::vector<SpatialDomains::MeshTri> faceData;
742 for (
int i = 0; i < faceData.size(); ++i)
744 indx = faceData[i].id;
763 indx, edges, it->second);
765 trigeom->SetGlobalID(indx);
769 else if (elementType ==
"Q")
771 std::vector<SpatialDomains::MeshQuad> faceData;
775 for (
int i = 0; i < faceData.size(); ++i)
777 indx = faceData[i].id;
796 indx, edges, it->second);
798 quadgeom->SetGlobalID(indx);
803 element = element->NextSiblingElement();
817 TiXmlElement *element =
field->FirstChildElement();
821 std::string elementType(element->ValueStr());
825 elementType ==
"A" || elementType ==
"P" || elementType ==
"R" ||
827 (std::string(
"Unknown 3D element type: ") + elementType).c_str());
830 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
833 boost::iequals(IsCompressed,
835 "Compressed formats do not match. Expected :" +
840 TiXmlNode *child = element->FirstChild();
841 ASSERTL0(child,
"Unable to extract the data from "
842 "the compressed face tag.");
845 if (child->Type() == TiXmlNode::TINYXML_TEXT)
847 str += child->ToText()->ValueStr();
851 if (elementType ==
"A")
853 std::vector<SpatialDomains::MeshTet> data;
856 for (
int i = 0; i < data.size(); ++i)
859 for (
int j = 0; j < 4; ++j)
862 tfaces[j] = static_pointer_cast<TriGeom>(face);
871 else if (elementType ==
"P")
873 std::vector<SpatialDomains::MeshPyr> data;
876 for (
int i = 0; i < data.size(); ++i)
881 for (
int j = 0; j < 5; ++j)
889 std::stringstream errorstring;
890 errorstring <<
"Element " << indx
891 <<
" has invalid face: " << j;
892 ASSERTL0(
false, errorstring.str().c_str());
896 faces[j] = static_pointer_cast<TriGeom>(face);
899 else if (face->GetShapeType() ==
902 faces[j] = static_pointer_cast<QuadGeom>(face);
906 ASSERTL0((Ntfaces == 4) && (Nqfaces == 1),
907 "Did not identify the correct number of "
908 "triangular and quadrilateral faces for a "
918 else if (elementType ==
"R")
920 std::vector<SpatialDomains::MeshPrism> data;
923 for (
int i = 0; i < data.size(); ++i)
928 for (
int j = 0; j < 5; ++j)
935 std::stringstream errorstring;
936 errorstring <<
"Element " << indx
937 <<
" has invalid face: " << j;
938 ASSERTL0(
false, errorstring.str().c_str());
942 faces[j] = static_pointer_cast<TriGeom>(face);
945 else if (face->GetShapeType() ==
948 faces[j] = static_pointer_cast<QuadGeom>(face);
952 ASSERTL0((Ntfaces == 2) && (Nqfaces == 3),
953 "Did not identify the correct number of "
954 "triangular and quadrilateral faces for a "
964 else if (elementType ==
"H")
966 std::vector<SpatialDomains::MeshHex> data;
970 for (
int i = 0; i < data.size(); ++i)
973 for (
int j = 0; j < 6; ++j)
976 faces[j] = static_pointer_cast<QuadGeom>(face);
986 element = element->NextSiblingElement();
993 if (verts.size() == 0)
998 TiXmlElement *vertTag =
new TiXmlElement(
"VERTEX");
1000 vector<MeshVertex> vertInfo;
1002 for (
auto &i : verts)
1006 v.
x = i.second->x();
1007 v.
y = i.second->y();
1008 v.
z = i.second->z();
1009 vertInfo.push_back(v);
1012 vertTag->SetAttribute(
"COMPRESSED",
1014 vertTag->SetAttribute(
"BITSIZE",
1020 vertTag->LinkEndChild(
new TiXmlText(vertStr));
1022 geomTag->LinkEndChild(vertTag);
1028 if (edges.size() == 0)
1033 TiXmlElement *edgeTag =
1036 vector<MeshEdge> edgeInfo;
1038 for (
auto &i : edges)
1042 e.
v0 = i.second->GetVid(0);
1043 e.
v1 = i.second->GetVid(1);
1044 edgeInfo.push_back(e);
1050 edgeTag->SetAttribute(
"COMPRESSED",
1052 edgeTag->SetAttribute(
"BITSIZE",
1055 edgeTag->LinkEndChild(
new TiXmlText(edgeStr));
1059 TiXmlElement *tmp =
new TiXmlElement(
"ELEMENT");
1060 tmp->LinkEndChild(edgeTag);
1061 geomTag->LinkEndChild(tmp);
1065 geomTag->LinkEndChild(edgeTag);
1072 if (tris.size() == 0)
1079 vector<MeshTri> triInfo;
1081 for (
auto &i : tris)
1085 t.
e[0] = i.second->GetEid(0);
1086 t.
e[1] = i.second->GetEid(1);
1087 t.
e[2] = i.second->GetEid(2);
1088 triInfo.push_back(t);
1091 TiXmlElement *x =
new TiXmlElement(tag);
1095 x->SetAttribute(
"COMPRESSED",
1099 x->LinkEndChild(
new TiXmlText(triStr));
1101 faceTag->LinkEndChild(x);
1107 if (quads.size() == 0)
1114 vector<MeshQuad> quadInfo;
1116 for (
auto &i : quads)
1120 q.e[0] = i.second->GetEid(0);
1121 q.e[1] = i.second->GetEid(1);
1122 q.e[2] = i.second->GetEid(2);
1123 q.e[3] = i.second->GetEid(3);
1124 quadInfo.push_back(
q);
1127 TiXmlElement *x =
new TiXmlElement(tag);
1131 x->SetAttribute(
"COMPRESSED",
1135 x->LinkEndChild(
new TiXmlText(quadStr));
1137 faceTag->LinkEndChild(x);
1143 if (hexs.size() == 0)
1150 vector<MeshHex> elementInfo;
1152 for (
auto &i : hexs)
1156 e.
f[0] = i.second->GetFid(0);
1157 e.
f[1] = i.second->GetFid(1);
1158 e.
f[2] = i.second->GetFid(2);
1159 e.
f[3] = i.second->GetFid(3);
1160 e.
f[4] = i.second->GetFid(4);
1161 e.
f[5] = i.second->GetFid(5);
1162 elementInfo.push_back(e);
1165 TiXmlElement *x =
new TiXmlElement(tag);
1169 x->SetAttribute(
"COMPRESSED",
1173 x->LinkEndChild(
new TiXmlText(elStr));
1175 elmtTag->LinkEndChild(x);
1181 if (pris.size() == 0)
1188 vector<MeshPrism> elementInfo;
1190 for (
auto &i : pris)
1194 e.
f[0] = i.second->GetFid(0);
1195 e.
f[1] = i.second->GetFid(1);
1196 e.
f[2] = i.second->GetFid(2);
1197 e.
f[3] = i.second->GetFid(3);
1198 e.
f[4] = i.second->GetFid(4);
1199 elementInfo.push_back(e);
1202 TiXmlElement *x =
new TiXmlElement(tag);
1206 x->SetAttribute(
"COMPRESSED",
1210 x->LinkEndChild(
new TiXmlText(elStr));
1212 elmtTag->LinkEndChild(x);
1218 if (pyrs.size() == 0)
1225 vector<MeshPyr> elementInfo;
1227 for (
auto &i : pyrs)
1231 e.
f[0] = i.second->GetFid(0);
1232 e.
f[1] = i.second->GetFid(1);
1233 e.
f[2] = i.second->GetFid(2);
1234 e.
f[3] = i.second->GetFid(3);
1235 e.
f[4] = i.second->GetFid(4);
1236 elementInfo.push_back(e);
1239 TiXmlElement *x =
new TiXmlElement(tag);
1243 x->SetAttribute(
"COMPRESSED",
1247 x->LinkEndChild(
new TiXmlText(elStr));
1249 elmtTag->LinkEndChild(x);
1255 if (tets.size() == 0)
1262 vector<MeshTet> elementInfo;
1264 for (
auto &i : tets)
1268 e.
f[0] = i.second->GetFid(0);
1269 e.
f[1] = i.second->GetFid(1);
1270 e.
f[2] = i.second->GetFid(2);
1271 e.
f[3] = i.second->GetFid(3);
1272 elementInfo.push_back(e);
1275 TiXmlElement *x =
new TiXmlElement(tag);
1279 x->SetAttribute(
"COMPRESSED",
1283 x->LinkEndChild(
new TiXmlText(elStr));
1285 elmtTag->LinkEndChild(x);
1291 if (edges.size() == 0 && faces.size() == 0)
1296 TiXmlElement *curveTag =
new TiXmlElement(
"CURVED");
1298 vector<MeshCurvedInfo> edgeInfo;
1299 vector<MeshCurvedInfo> faceInfo;
1307 for (
auto &i : edges)
1310 cinfo.
id = edgeCnt++;
1312 cinfo.
npoints = i.second->m_points.size();
1313 cinfo.
ptype = i.second->m_ptype;
1317 edgeInfo.push_back(cinfo);
1319 for (
int j = 0; j < i.second->m_points.size(); j++)
1323 v.
x = i.second->m_points[j]->x();
1324 v.
y = i.second->m_points[j]->y();
1325 v.
z = i.second->m_points[j]->z();
1326 curvedPts.
pts.push_back(v);
1327 curvedPts.
index.push_back(newIdx);
1333 for (
auto &i : faces)
1336 cinfo.
id = faceCnt++;
1338 cinfo.
npoints = i.second->m_points.size();
1339 cinfo.
ptype = i.second->m_ptype;
1343 faceInfo.push_back(cinfo);
1345 for (
int j = 0; j < i.second->m_points.size(); j++)
1349 v.
x = i.second->m_points[j]->x();
1350 v.
y = i.second->m_points[j]->y();
1351 v.
z = i.second->m_points[j]->z();
1352 curvedPts.
pts.push_back(v);
1353 curvedPts.
index.push_back(newIdx);
1359 curveTag->SetAttribute(
"COMPRESSED",
1361 curveTag->SetAttribute(
"BITSIZE",
1364 if (edgeInfo.size())
1366 TiXmlElement *x =
new TiXmlElement(
"E");
1370 x->LinkEndChild(
new TiXmlText(dataStr));
1371 curveTag->LinkEndChild(x);
1374 if (faceInfo.size())
1376 TiXmlElement *x =
new TiXmlElement(
"F");
1380 x->LinkEndChild(
new TiXmlText(dataStr));
1381 curveTag->LinkEndChild(x);
1384 if (edgeInfo.size() || faceInfo.size())
1386 TiXmlElement *x =
new TiXmlElement(
"DATAPOINTS");
1387 x->SetAttribute(
"ID", curvedPts.
id);
1388 TiXmlElement *subx =
new TiXmlElement(
"INDEX");
1392 subx->LinkEndChild(
new TiXmlText(dataStr));
1393 x->LinkEndChild(subx);
1395 subx =
new TiXmlElement(
"POINTS");
1398 subx->LinkEndChild(
new TiXmlText(dataStr));
1399 x->LinkEndChild(subx);
1400 curveTag->LinkEndChild(x);
1403 geomTag->LinkEndChild(curveTag);
#define ASSERTL0(condition, msg)
Interpreter class for the evaluation of mathematical expressions.
int DefineFunction(const std::string &vlist, const std::string &expr)
Defines a function for the purposes of evaluation.
NekDouble Evaluate(const int id)
Evaluate a function which depends only on constants and/or parameters.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
PrismGeomMap m_prismGeoms
void PopulateFaceToElMap(Geometry3DSharedPtr element, int kNfaces)
Given a 3D geometry object #element, populate the face to element map m_faceToElMap which maps faces ...
Geometry2DSharedPtr GetGeometry2D(int gID)
SegGeomSharedPtr GetSegGeom(int id)
PointGeomSharedPtr GetVertex(int id)
void v_WriteHexs(TiXmlElement *elmtTag, HexGeomMap &hexs) override
void v_ReadElements2D() override
void v_WriteQuads(TiXmlElement *faceTag, QuadGeomMap &quads) override
void v_WriteTris(TiXmlElement *faceTag, TriGeomMap &tris) override
void v_WriteTets(TiXmlElement *elmtTag, TetGeomMap &tets) override
void v_ReadVertices() override
void v_ReadElements3D() override
void v_WritePyrs(TiXmlElement *elmtTag, PyrGeomMap &pyrs) override
static std::string className
void v_WriteEdges(TiXmlElement *geomTag, SegGeomMap &edges) override
void v_ReadCurves() override
void v_ReadEdges() override
void v_WriteCurves(TiXmlElement *geomTag, CurveMap &edges, CurveMap &faces) override
void v_ReadElements1D() override
void v_WriteVertices(TiXmlElement *geomTag, PointGeomMap &verts) override
void v_ReadFaces() override
static MeshGraphSharedPtr create()
void v_WritePrisms(TiXmlElement *elmtTag, PrismGeomMap &pris) override
static const int kNedges
Get the orientation of face1.
std::string GetBitSizeStr(void)
int ZlibDecodeFromBase64Str(std::string &in64, std::vector< T > &out)
std::string GetCompressString(void)
int ZlibEncodeToBase64Str(std::vector< T > &in, std::string &out64)
std::map< int, TriGeomSharedPtr > TriGeomMap
std::shared_ptr< QuadGeom > QuadGeomSharedPtr
std::map< int, PyrGeomSharedPtr > PyrGeomMap
std::map< int, QuadGeomSharedPtr > QuadGeomMap
std::shared_ptr< PrismGeom > PrismGeomSharedPtr
std::map< int, SegGeomSharedPtr > SegGeomMap
std::shared_ptr< Curve > CurveSharedPtr
std::unordered_map< int, CurveSharedPtr > CurveMap
std::shared_ptr< HexGeom > HexGeomSharedPtr
std::shared_ptr< SegGeom > SegGeomSharedPtr
std::map< int, TetGeomSharedPtr > TetGeomMap
std::shared_ptr< PyrGeom > PyrGeomSharedPtr
std::shared_ptr< TetGeom > TetGeomSharedPtr
std::map< int, PrismGeomSharedPtr > PrismGeomMap
std::shared_ptr< PointGeom > PointGeomSharedPtr
std::shared_ptr< Geometry2D > Geometry2DSharedPtr
std::shared_ptr< TriGeom > TriGeomSharedPtr
MeshGraphFactory & GetMeshGraphFactory()
std::map< int, HexGeomSharedPtr > HexGeomMap
std::map< int, PointGeomSharedPtr > PointGeomMap
std::vector< double > q(NPUPPER *NPUPPER)
NekInt64 ptid
The number of points in this curved entity.
NekInt64 npoints
The entity id corresponding to the global edge/curve.
NekInt64 ptype
point offset of data entry for this curve
NekInt64 ptoffset
the id of point data map (currently always 0 since we are using just one set).
NekInt64 entityid
Id of this curved information.
std::vector< MeshVertex > pts
mapping to access pts value.
std::vector< NekInt64 > index
id of this Point set