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 compressed Xml geometry");
70 int spaceDimension =
m_meshGraph->GetSpaceDimension();
73 TiXmlElement *element =
m_xmlGeom->FirstChildElement(
"VERTEX");
74 ASSERTL0(element,
"Unable to find mesh VERTEX tag in file.");
81 const char *xscal = element->Attribute(
"XSCALE");
88 std::string xscalstr = xscal;
90 xscale = expEvaluator.
Evaluate(expr_id);
93 const char *yscal = element->Attribute(
"YSCALE");
100 std::string yscalstr = yscal;
102 yscale = expEvaluator.
Evaluate(expr_id);
105 const char *zscal = element->Attribute(
"ZSCALE");
112 std::string zscalstr = zscal;
114 zscale = expEvaluator.
Evaluate(expr_id);
122 const char *xmov = element->Attribute(
"XMOVE");
129 std::string xmovstr = xmov;
131 xmove = expEvaluator.
Evaluate(expr_id);
134 const char *ymov = element->Attribute(
"YMOVE");
141 std::string ymovstr = ymov;
143 ymove = expEvaluator.
Evaluate(expr_id);
146 const char *zmov = element->Attribute(
"ZMOVE");
153 std::string zmovstr = zmov;
155 zmove = expEvaluator.
Evaluate(expr_id);
159 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
161 if (boost::iequals(IsCompressed,
165 TiXmlNode *vertexChild = element->FirstChild();
166 ASSERTL0(vertexChild,
"Unable to extract the data from the compressed "
169 std::string vertexStr;
170 if (vertexChild->Type() == TiXmlNode::TINYXML_TEXT)
172 vertexStr += vertexChild->ToText()->ValueStr();
175 std::vector<SpatialDomains::MeshVertex> vertData;
181 for (
int i = 0; i < vertData.size(); ++i)
183 indx = vertData[i].id;
184 xval = vertData[i].x;
185 yval = vertData[i].y;
186 zval = vertData[i].z;
188 xval = xval * xscale + xmove;
189 yval = yval * yscale + ymove;
190 zval = zval * zscale + zmove;
193 spaceDimension, indx, xval, yval, zval));
195 vert->SetGlobalID(indx);
196 vertSet[indx] = vert;
201 ASSERTL0(
false,
"Compressed formats do not match. Expected :" +
203 " but got " + IsCompressed);
211 int spaceDimension =
m_meshGraph->GetSpaceDimension();
215 TiXmlElement *element =
m_xmlGeom->FirstChildElement(
"VERTEX");
216 ASSERTL0(element,
"Unable to find mesh VERTEX tag in file.");
221 const char *xscal = element->Attribute(
"XSCALE");
228 std::string xscalstr = xscal;
230 xscale = expEvaluator.
Evaluate(expr_id);
233 const char *yscal = element->Attribute(
"YSCALE");
240 std::string yscalstr = yscal;
242 yscale = expEvaluator.
Evaluate(expr_id);
245 const char *zscal = element->Attribute(
"ZSCALE");
252 std::string zscalstr = zscal;
254 zscale = expEvaluator.
Evaluate(expr_id);
262 const char *xmov = element->Attribute(
"XMOVE");
269 std::string xmovstr = xmov;
271 xmove = expEvaluator.
Evaluate(expr_id);
274 const char *ymov = element->Attribute(
"YMOVE");
281 std::string ymovstr = ymov;
283 ymove = expEvaluator.
Evaluate(expr_id);
286 const char *zmov = element->Attribute(
"ZMOVE");
293 std::string zmovstr = zmov;
295 zmove = expEvaluator.
Evaluate(expr_id);
307 field->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
309 if (IsCompressed.size() == 0)
316 ASSERTL0(boost::iequals(IsCompressed,
318 "Compressed formats do not match. Expected :" +
322 std::vector<SpatialDomains::MeshCurvedInfo> edginfo;
323 std::vector<SpatialDomains::MeshCurvedInfo> facinfo;
327 TiXmlElement *x =
field->FirstChildElement();
330 const char *entitytype = x->Value();
332 if (boost::iequals(entitytype,
"E"))
336 TiXmlNode *child = x->FirstChild();
338 if (child->Type() == TiXmlNode::TINYXML_TEXT)
340 elmtStr += child->ToText()->ValueStr();
346 else if (boost::iequals(entitytype,
"F"))
350 TiXmlNode *child = x->FirstChild();
352 if (child->Type() == TiXmlNode::TINYXML_TEXT)
354 elmtStr += child->ToText()->ValueStr();
360 else if (boost::iequals(entitytype,
"DATAPOINTS"))
364 "Failed to get ID from PTS section");
370 TiXmlElement *DataIdx = x->FirstChildElement(
"INDEX");
371 ASSERTL0(DataIdx,
"Cannot read data index tag in compressed "
374 TiXmlNode *child = DataIdx->FirstChild();
375 if (child->Type() == TiXmlNode::TINYXML_TEXT)
377 elmtStr = child->ToText()->ValueStr();
383 TiXmlElement *DataPts = x->FirstChildElement(
"POINTS");
384 ASSERTL0(DataPts,
"Cannot read data pts tag in compressed "
387 child = DataPts->FirstChild();
388 if (child->Type() == TiXmlNode::TINYXML_TEXT)
390 elmtStr = child->ToText()->ValueStr();
398 ASSERTL0(
false,
"Unknown tag in curved section");
400 x = x->NextSiblingElement();
404 for (
int i = 0; i < cpts.
pts.size(); ++i)
406 cpts.
pts[i].x = xscale * cpts.
pts[i].x + xmove;
407 cpts.
pts[i].y = yscale * cpts.
pts[i].y + ymove;
408 cpts.
pts[i].z = zscale * cpts.
pts[i].z + zmove;
411 for (
int i = 0; i < edginfo.size(); ++i)
413 int edgeid = edginfo[i].entityid;
420 int offset = edginfo[i].ptoffset;
421 for (
int j = 0; j < edginfo[i].npoints; ++j)
423 int idx = cpts.
index[offset + j];
426 spaceDimension, edginfo[i].
id, cpts.
pts[idx].x, cpts.
pts[idx].y,
428 curve->m_points.push_back(vert);
431 curvedEdges[edgeid] = curve;
434 for (
int i = 0; i < facinfo.size(); ++i)
436 int faceid = facinfo[i].entityid;
442 int offset = facinfo[i].ptoffset;
443 for (
int j = 0; j < facinfo[i].npoints; ++j)
445 int idx = cpts.
index[offset + j];
448 spaceDimension, facinfo[i].
id, cpts.
pts[idx].x, cpts.
pts[idx].y,
450 curve->m_points.push_back(vert);
453 curvedFaces[faceid] = curve;
461 int spaceDimension =
m_meshGraph->GetSpaceDimension();
463 CurveMap::iterator it;
471 field->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
473 ASSERTL0(boost::iequals(IsCompressed,
475 "Compressed formats do not match. Expected :" +
479 TiXmlNode *edgeChild =
field->FirstChild();
480 ASSERTL0(edgeChild,
"Unable to extract the data from "
481 "the compressed edge tag.");
484 if (edgeChild->Type() == TiXmlNode::TINYXML_TEXT)
486 edgeStr += edgeChild->ToText()->ValueStr();
489 std::vector<SpatialDomains::MeshEdge> edgeData;
493 for (
int i = 0; i < edgeData.size(); ++i)
495 indx = edgeData[i].id;
501 it = curvedEdges.find(indx);
502 if (it == curvedEdges.end())
505 indx, spaceDimension, vertices);
510 indx, spaceDimension, vertices, it->second);
512 segGeoms[indx] = edge;
531 TiXmlElement *element =
field->FirstChildElement();
532 CurveMap::iterator it;
536 std::string elementType(element->ValueStr());
538 ASSERTL0(elementType ==
"Q" || elementType ==
"T",
539 (std::string(
"Unknown 3D face type: ") + elementType).c_str());
542 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
545 boost::iequals(IsCompressed,
547 "Compressed formats do not match. Expected :" +
552 TiXmlNode *faceChild = element->FirstChild();
553 ASSERTL0(faceChild,
"Unable to extract the data from "
554 "the compressed face tag.");
557 if (faceChild->Type() == TiXmlNode::TINYXML_TEXT)
559 faceStr += faceChild->ToText()->ValueStr();
563 if (elementType ==
"T")
565 std::vector<SpatialDomains::MeshTri> faceData;
569 for (
int i = 0; i < faceData.size(); ++i)
571 indx = faceData[i].id;
574 it = curvedFaces.find(indx);
583 if (it == curvedFaces.end())
591 indx, edges, it->second);
593 trigeom->SetGlobalID(indx);
594 triGeoms[indx] = trigeom;
597 else if (elementType ==
"Q")
599 std::vector<SpatialDomains::MeshQuad> faceData;
603 for (
int i = 0; i < faceData.size(); ++i)
605 indx = faceData[i].id;
608 it = curvedFaces.find(indx);
618 if (it == curvedFaces.end())
626 indx, edges, it->second);
628 quadgeom->SetGlobalID(indx);
629 quadGeoms[indx] = quadgeom;
633 element = element->NextSiblingElement();
641 int spaceDimension =
m_meshGraph->GetSpaceDimension();
643 TiXmlElement *
field =
nullptr;
653 TiXmlElement *segment =
field->FirstChildElement(
"S");
654 CurveMap::iterator it;
659 segment->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
661 boost::iequals(IsCompressed,
663 "Compressed formats do not match. Expected :" +
668 TiXmlNode *child = segment->FirstChild();
669 ASSERTL0(child,
"Unable to extract the data from "
670 "the compressed face tag.");
673 if (child->Type() == TiXmlNode::TINYXML_TEXT)
675 str += child->ToText()->ValueStr();
680 std::vector<SpatialDomains::MeshEdge> data;
683 for (
int i = 0; i < data.size(); ++i)
688 it = curvedEdges.find(indx);
695 if (it == curvedEdges.end())
698 indx, spaceDimension, vertices);
699 seg->SetGlobalID(indx);
704 indx, spaceDimension, vertices, it->second);
705 seg->SetGlobalID(indx);
707 seg->SetGlobalID(indx);
708 segGeoms[indx] = seg;
711 segment = segment->NextSiblingElement(
"S");
727 CurveMap::iterator it;
732 TiXmlElement *element =
field->FirstChildElement();
736 std::string elementType(element->ValueStr());
739 elementType ==
"Q" || elementType ==
"T",
740 (std::string(
"Unknown 2D element type: ") + elementType).c_str());
743 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
746 boost::iequals(IsCompressed,
748 "Compressed formats do not match. Expected :" +
753 TiXmlNode *faceChild = element->FirstChild();
754 ASSERTL0(faceChild,
"Unable to extract the data from "
755 "the compressed face tag.");
758 if (faceChild->Type() == TiXmlNode::TINYXML_TEXT)
760 faceStr += faceChild->ToText()->ValueStr();
764 if (elementType ==
"T")
766 std::vector<SpatialDomains::MeshTri> faceData;
770 for (
int i = 0; i < faceData.size(); ++i)
772 indx = faceData[i].id;
775 it = curvedFaces.find(indx);
784 if (it == curvedFaces.end())
792 indx, edges, it->second);
794 trigeom->SetGlobalID(indx);
795 triGeoms[indx] = trigeom;
798 else if (elementType ==
"Q")
800 std::vector<SpatialDomains::MeshQuad> faceData;
804 for (
int i = 0; i < faceData.size(); ++i)
806 indx = faceData[i].id;
809 it = curvedFaces.find(indx);
819 if (it == curvedFaces.end())
827 indx, edges, it->second);
829 quadgeom->SetGlobalID(indx);
830 quadGeoms[indx] = quadgeom;
834 element = element->NextSiblingElement();
842 auto &prismGeoms =
m_meshGraph->GetAllPrismGeoms();
853 TiXmlElement *element =
field->FirstChildElement();
857 std::string elementType(element->ValueStr());
861 elementType ==
"A" || elementType ==
"P" || elementType ==
"R" ||
863 (std::string(
"Unknown 3D element type: ") + elementType).c_str());
866 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
869 boost::iequals(IsCompressed,
871 "Compressed formats do not match. Expected :" +
876 TiXmlNode *child = element->FirstChild();
877 ASSERTL0(child,
"Unable to extract the data from "
878 "the compressed face tag.");
881 if (child->Type() == TiXmlNode::TINYXML_TEXT)
883 str += child->ToText()->ValueStr();
887 if (elementType ==
"A")
889 std::vector<SpatialDomains::MeshTet> data;
892 for (
int i = 0; i < data.size(); ++i)
895 for (
int j = 0; j < 4; ++j)
899 tfaces[j] = static_pointer_cast<TriGeom>(face);
904 tetGeoms[indx] = tetgeom;
908 else if (elementType ==
"P")
910 std::vector<SpatialDomains::MeshPyr> data;
913 for (
int i = 0; i < data.size(); ++i)
918 for (
int j = 0; j < 5; ++j)
927 std::stringstream errorstring;
928 errorstring <<
"Element " << indx
929 <<
" has invalid face: " << j;
930 ASSERTL0(
false, errorstring.str().c_str());
934 faces[j] = static_pointer_cast<TriGeom>(face);
937 else if (face->GetShapeType() ==
940 faces[j] = static_pointer_cast<QuadGeom>(face);
944 ASSERTL0((Ntfaces == 4) && (Nqfaces == 1),
945 "Did not identify the correct number of "
946 "triangular and quadrilateral faces for a "
952 pyrGeoms[indx] = pyrgeom;
956 else if (elementType ==
"R")
958 std::vector<SpatialDomains::MeshPrism> data;
961 for (
int i = 0; i < data.size(); ++i)
966 for (
int j = 0; j < 5; ++j)
974 std::stringstream errorstring;
975 errorstring <<
"Element " << indx
976 <<
" has invalid face: " << j;
977 ASSERTL0(
false, errorstring.str().c_str());
981 faces[j] = static_pointer_cast<TriGeom>(face);
984 else if (face->GetShapeType() ==
987 faces[j] = static_pointer_cast<QuadGeom>(face);
991 ASSERTL0((Ntfaces == 2) && (Nqfaces == 3),
992 "Did not identify the correct number of "
993 "triangular and quadrilateral faces for a "
999 prismGeoms[indx] = prismgeom;
1003 else if (elementType ==
"H")
1005 std::vector<SpatialDomains::MeshHex> data;
1009 for (
int i = 0; i < data.size(); ++i)
1012 for (
int j = 0; j < 6; ++j)
1016 faces[j] = static_pointer_cast<QuadGeom>(face);
1021 hexGeoms[indx] = hexgeom;
1026 element = element->NextSiblingElement();
1033 if (verts.size() == 0)
1038 TiXmlElement *vertTag =
new TiXmlElement(
"VERTEX");
1040 vector<MeshVertex> vertInfo;
1042 for (
auto &i : verts)
1046 v.
x = i.second->x();
1047 v.
y = i.second->y();
1048 v.
z = i.second->z();
1049 vertInfo.push_back(v);
1052 vertTag->SetAttribute(
"COMPRESSED",
1054 vertTag->SetAttribute(
"BITSIZE",
1060 vertTag->LinkEndChild(
new TiXmlText(vertStr));
1062 geomTag->LinkEndChild(vertTag);
1068 int meshDimension =
m_meshGraph->GetMeshDimension();
1070 if (edges.size() == 0)
1075 TiXmlElement *edgeTag =
new TiXmlElement(meshDimension == 1 ?
"S" :
"EDGE");
1077 vector<MeshEdge> edgeInfo;
1079 for (
auto &i : edges)
1083 e.
v0 = i.second->GetVid(0);
1084 e.
v1 = i.second->GetVid(1);
1085 edgeInfo.push_back(e);
1091 edgeTag->SetAttribute(
"COMPRESSED",
1093 edgeTag->SetAttribute(
"BITSIZE",
1096 edgeTag->LinkEndChild(
new TiXmlText(edgeStr));
1098 if (meshDimension == 1)
1100 TiXmlElement *tmp =
new TiXmlElement(
"ELEMENT");
1101 tmp->LinkEndChild(edgeTag);
1102 geomTag->LinkEndChild(tmp);
1106 geomTag->LinkEndChild(edgeTag);
1113 if (tris.size() == 0)
1120 vector<MeshTri> triInfo;
1122 for (
auto &i : tris)
1126 t.
e[0] = i.second->GetEid(0);
1127 t.
e[1] = i.second->GetEid(1);
1128 t.
e[2] = i.second->GetEid(2);
1129 triInfo.push_back(t);
1132 TiXmlElement *x =
new TiXmlElement(tag);
1136 x->SetAttribute(
"COMPRESSED",
1140 x->LinkEndChild(
new TiXmlText(triStr));
1142 faceTag->LinkEndChild(x);
1148 if (quads.size() == 0)
1155 vector<MeshQuad> quadInfo;
1157 for (
auto &i : quads)
1161 q.e[0] = i.second->GetEid(0);
1162 q.e[1] = i.second->GetEid(1);
1163 q.e[2] = i.second->GetEid(2);
1164 q.e[3] = i.second->GetEid(3);
1165 quadInfo.push_back(
q);
1168 TiXmlElement *x =
new TiXmlElement(tag);
1172 x->SetAttribute(
"COMPRESSED",
1176 x->LinkEndChild(
new TiXmlText(quadStr));
1178 faceTag->LinkEndChild(x);
1184 if (hexs.size() == 0)
1191 vector<MeshHex> elementInfo;
1193 for (
auto &i : hexs)
1197 e.
f[0] = i.second->GetFid(0);
1198 e.
f[1] = i.second->GetFid(1);
1199 e.
f[2] = i.second->GetFid(2);
1200 e.
f[3] = i.second->GetFid(3);
1201 e.
f[4] = i.second->GetFid(4);
1202 e.
f[5] = i.second->GetFid(5);
1203 elementInfo.push_back(e);
1206 TiXmlElement *x =
new TiXmlElement(tag);
1210 x->SetAttribute(
"COMPRESSED",
1214 x->LinkEndChild(
new TiXmlText(elStr));
1216 elmtTag->LinkEndChild(x);
1222 if (pris.size() == 0)
1229 vector<MeshPrism> elementInfo;
1231 for (
auto &i : pris)
1235 e.
f[0] = i.second->GetFid(0);
1236 e.
f[1] = i.second->GetFid(1);
1237 e.
f[2] = i.second->GetFid(2);
1238 e.
f[3] = i.second->GetFid(3);
1239 e.
f[4] = i.second->GetFid(4);
1240 elementInfo.push_back(e);
1243 TiXmlElement *x =
new TiXmlElement(tag);
1247 x->SetAttribute(
"COMPRESSED",
1251 x->LinkEndChild(
new TiXmlText(elStr));
1253 elmtTag->LinkEndChild(x);
1259 if (pyrs.size() == 0)
1266 vector<MeshPyr> elementInfo;
1268 for (
auto &i : pyrs)
1272 e.
f[0] = i.second->GetFid(0);
1273 e.
f[1] = i.second->GetFid(1);
1274 e.
f[2] = i.second->GetFid(2);
1275 e.
f[3] = i.second->GetFid(3);
1276 e.
f[4] = i.second->GetFid(4);
1277 elementInfo.push_back(e);
1280 TiXmlElement *x =
new TiXmlElement(tag);
1284 x->SetAttribute(
"COMPRESSED",
1288 x->LinkEndChild(
new TiXmlText(elStr));
1290 elmtTag->LinkEndChild(x);
1296 if (tets.size() == 0)
1303 vector<MeshTet> elementInfo;
1305 for (
auto &i : tets)
1309 e.
f[0] = i.second->GetFid(0);
1310 e.
f[1] = i.second->GetFid(1);
1311 e.
f[2] = i.second->GetFid(2);
1312 e.
f[3] = i.second->GetFid(3);
1313 elementInfo.push_back(e);
1316 TiXmlElement *x =
new TiXmlElement(tag);
1320 x->SetAttribute(
"COMPRESSED",
1324 x->LinkEndChild(
new TiXmlText(elStr));
1326 elmtTag->LinkEndChild(x);
1332 if (edges.size() == 0 && faces.size() == 0)
1337 TiXmlElement *curveTag =
new TiXmlElement(
"CURVED");
1339 vector<MeshCurvedInfo> edgeInfo;
1340 vector<MeshCurvedInfo> faceInfo;
1348 for (
auto &i : edges)
1351 cinfo.
id = edgeCnt++;
1353 cinfo.
npoints = i.second->m_points.size();
1354 cinfo.
ptype = i.second->m_ptype;
1358 edgeInfo.push_back(cinfo);
1360 for (
int j = 0; j < i.second->m_points.size(); j++)
1364 v.
x = i.second->m_points[j]->x();
1365 v.
y = i.second->m_points[j]->y();
1366 v.
z = i.second->m_points[j]->z();
1367 curvedPts.
pts.push_back(v);
1368 curvedPts.
index.push_back(newIdx);
1374 for (
auto &i : faces)
1377 cinfo.
id = faceCnt++;
1379 cinfo.
npoints = i.second->m_points.size();
1380 cinfo.
ptype = i.second->m_ptype;
1384 faceInfo.push_back(cinfo);
1386 for (
int j = 0; j < i.second->m_points.size(); j++)
1390 v.
x = i.second->m_points[j]->x();
1391 v.
y = i.second->m_points[j]->y();
1392 v.
z = i.second->m_points[j]->z();
1393 curvedPts.
pts.push_back(v);
1394 curvedPts.
index.push_back(newIdx);
1400 curveTag->SetAttribute(
"COMPRESSED",
1402 curveTag->SetAttribute(
"BITSIZE",
1405 if (edgeInfo.size())
1407 TiXmlElement *x =
new TiXmlElement(
"E");
1411 x->LinkEndChild(
new TiXmlText(dataStr));
1412 curveTag->LinkEndChild(x);
1415 if (faceInfo.size())
1417 TiXmlElement *x =
new TiXmlElement(
"F");
1421 x->LinkEndChild(
new TiXmlText(dataStr));
1422 curveTag->LinkEndChild(x);
1425 if (edgeInfo.size() || faceInfo.size())
1427 TiXmlElement *x =
new TiXmlElement(
"DATAPOINTS");
1428 x->SetAttribute(
"ID", curvedPts.
id);
1429 TiXmlElement *subx =
new TiXmlElement(
"INDEX");
1433 subx->LinkEndChild(
new TiXmlText(dataStr));
1434 x->LinkEndChild(subx);
1436 subx =
new TiXmlElement(
"POINTS");
1439 subx->LinkEndChild(
new TiXmlText(dataStr));
1440 x->LinkEndChild(subx);
1441 curveTag->LinkEndChild(x);
1444 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.
MeshGraphSharedPtr m_meshGraph
void v_ReadElements2D() override
static std::string className
void v_WriteEdges(TiXmlElement *geomTag, SegGeomMap &edges) override
void v_ReadVertices() override
void v_WriteHexs(TiXmlElement *elmtTag, HexGeomMap &hexs) override
void v_WriteVertices(TiXmlElement *geomTag, PointGeomMap &verts) override
void v_ReadFaces() override
void v_WritePyrs(TiXmlElement *elmtTag, PyrGeomMap &pyrs) override
void v_ReadCurves() override
void v_ReadElements3D() override
void v_WriteTets(TiXmlElement *elmtTag, TetGeomMap &tets) override
void v_WriteCurves(TiXmlElement *geomTag, CurveMap &edges, CurveMap &faces) override
void v_ReadEdges() override
void v_WritePrisms(TiXmlElement *elmtTag, PrismGeomMap &pris) override
void v_ReadElements1D() override
void v_WriteTris(TiXmlElement *faceTag, TriGeomMap &tris) override
void v_WriteQuads(TiXmlElement *faceTag, QuadGeomMap &quads) override
static MeshGraphIOSharedPtr create()
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
MeshGraphIOFactory & GetMeshGraphIOFactory()
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
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