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>
63 "IO with compressed Xml geometry");
68 int spaceDimension =
m_meshGraph->GetSpaceDimension();
71 TiXmlElement *element =
m_xmlGeom->FirstChildElement(
"VERTEX");
72 ASSERTL0(element,
"Unable to find mesh VERTEX tag in file.");
79 const char *xscal = element->Attribute(
"XSCALE");
86 std::string xscalstr = xscal;
88 xscale = expEvaluator.
Evaluate(expr_id);
91 const char *yscal = element->Attribute(
"YSCALE");
98 std::string yscalstr = yscal;
100 yscale = expEvaluator.
Evaluate(expr_id);
103 const char *zscal = element->Attribute(
"ZSCALE");
110 std::string zscalstr = zscal;
112 zscale = expEvaluator.
Evaluate(expr_id);
120 const char *xmov = element->Attribute(
"XMOVE");
127 std::string xmovstr = xmov;
129 xmove = expEvaluator.
Evaluate(expr_id);
132 const char *ymov = element->Attribute(
"YMOVE");
139 std::string ymovstr = ymov;
141 ymove = expEvaluator.
Evaluate(expr_id);
144 const char *zmov = element->Attribute(
"ZMOVE");
151 std::string zmovstr = zmov;
153 zmove = expEvaluator.
Evaluate(expr_id);
156 std::string IsCompressed;
157 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
159 if (boost::iequals(IsCompressed,
163 TiXmlNode *vertexChild = element->FirstChild();
164 ASSERTL0(vertexChild,
"Unable to extract the data from the compressed "
167 std::string vertexStr;
168 if (vertexChild->Type() == TiXmlNode::TINYXML_TEXT)
170 vertexStr += vertexChild->ToText()->ValueStr();
173 std::vector<SpatialDomains::MeshVertex> vertData;
179 for (
int i = 0; i < vertData.size(); ++i)
181 indx = vertData[i].id;
182 xval = vertData[i].x;
183 yval = vertData[i].y;
184 zval = vertData[i].z;
186 xval = xval * xscale + xmove;
187 yval = yval * yscale + ymove;
188 zval = zval * zscale + zmove;
191 spaceDimension, indx, xval, yval, zval));
193 vert->SetGlobalID(indx);
194 vertSet[indx] = vert;
199 ASSERTL0(
false,
"Compressed formats do not match. Expected :" +
201 " but got " + IsCompressed);
209 int spaceDimension =
m_meshGraph->GetSpaceDimension();
213 TiXmlElement *element =
m_xmlGeom->FirstChildElement(
"VERTEX");
214 ASSERTL0(element,
"Unable to find mesh VERTEX tag in file.");
219 const char *xscal = element->Attribute(
"XSCALE");
226 std::string xscalstr = xscal;
228 xscale = expEvaluator.
Evaluate(expr_id);
231 const char *yscal = element->Attribute(
"YSCALE");
238 std::string yscalstr = yscal;
240 yscale = expEvaluator.
Evaluate(expr_id);
243 const char *zscal = element->Attribute(
"ZSCALE");
250 std::string zscalstr = zscal;
252 zscale = expEvaluator.
Evaluate(expr_id);
260 const char *xmov = element->Attribute(
"XMOVE");
267 std::string xmovstr = xmov;
269 xmove = expEvaluator.
Evaluate(expr_id);
272 const char *ymov = element->Attribute(
"YMOVE");
279 std::string ymovstr = ymov;
281 ymove = expEvaluator.
Evaluate(expr_id);
284 const char *zmov = element->Attribute(
"ZMOVE");
291 std::string zmovstr = zmov;
293 zmove = expEvaluator.
Evaluate(expr_id);
304 std::string IsCompressed;
305 field->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
307 if (IsCompressed.size() == 0)
314 ASSERTL0(boost::iequals(IsCompressed,
316 "Compressed formats do not match. Expected :" +
320 std::vector<SpatialDomains::MeshCurvedInfo> edginfo;
321 std::vector<SpatialDomains::MeshCurvedInfo> facinfo;
325 TiXmlElement *x =
field->FirstChildElement();
328 const char *entitytype = x->Value();
330 if (boost::iequals(entitytype,
"E"))
334 TiXmlNode *child = x->FirstChild();
336 if (child->Type() == TiXmlNode::TINYXML_TEXT)
338 elmtStr += child->ToText()->ValueStr();
344 else if (boost::iequals(entitytype,
"F"))
348 TiXmlNode *child = x->FirstChild();
350 if (child->Type() == TiXmlNode::TINYXML_TEXT)
352 elmtStr += child->ToText()->ValueStr();
358 else if (boost::iequals(entitytype,
"DATAPOINTS"))
362 "Failed to get ID from PTS section");
368 TiXmlElement *DataIdx = x->FirstChildElement(
"INDEX");
369 ASSERTL0(DataIdx,
"Cannot read data index tag in compressed "
372 TiXmlNode *child = DataIdx->FirstChild();
373 if (child->Type() == TiXmlNode::TINYXML_TEXT)
375 elmtStr = child->ToText()->ValueStr();
381 TiXmlElement *DataPts = x->FirstChildElement(
"POINTS");
382 ASSERTL0(DataPts,
"Cannot read data pts tag in compressed "
385 child = DataPts->FirstChild();
386 if (child->Type() == TiXmlNode::TINYXML_TEXT)
388 elmtStr = child->ToText()->ValueStr();
396 ASSERTL0(
false,
"Unknown tag in curved section");
398 x = x->NextSiblingElement();
402 for (
int i = 0; i < cpts.
pts.size(); ++i)
404 cpts.
pts[i].x = xscale * cpts.
pts[i].x + xmove;
405 cpts.
pts[i].y = yscale * cpts.
pts[i].y + ymove;
406 cpts.
pts[i].z = zscale * cpts.
pts[i].z + zmove;
409 for (
int i = 0; i < edginfo.size(); ++i)
411 int edgeid = edginfo[i].entityid;
418 int offset = edginfo[i].ptoffset;
419 for (
int j = 0; j < edginfo[i].npoints; ++j)
421 int idx = cpts.
index[offset + j];
424 spaceDimension, edginfo[i].
id, cpts.
pts[idx].x, cpts.
pts[idx].y,
426 curve->m_points.push_back(vert);
429 curvedEdges[edgeid] = curve;
432 for (
int i = 0; i < facinfo.size(); ++i)
434 int faceid = facinfo[i].entityid;
440 int offset = facinfo[i].ptoffset;
441 for (
int j = 0; j < facinfo[i].npoints; ++j)
443 int idx = cpts.
index[offset + j];
446 spaceDimension, facinfo[i].
id, cpts.
pts[idx].x, cpts.
pts[idx].y,
448 curve->m_points.push_back(vert);
451 curvedFaces[faceid] = curve;
459 int spaceDimension =
m_meshGraph->GetSpaceDimension();
461 CurveMap::iterator it;
468 std::string IsCompressed;
469 field->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
471 ASSERTL0(boost::iequals(IsCompressed,
473 "Compressed formats do not match. Expected :" +
477 TiXmlNode *edgeChild =
field->FirstChild();
478 ASSERTL0(edgeChild,
"Unable to extract the data from "
479 "the compressed edge tag.");
482 if (edgeChild->Type() == TiXmlNode::TINYXML_TEXT)
484 edgeStr += edgeChild->ToText()->ValueStr();
487 std::vector<SpatialDomains::MeshEdge> edgeData;
491 for (
int i = 0; i < edgeData.size(); ++i)
493 indx = edgeData[i].id;
499 it = curvedEdges.find(indx);
500 if (it == curvedEdges.end())
503 indx, spaceDimension, vertices);
508 indx, spaceDimension, vertices, it->second);
510 segGeoms[indx] = edge;
529 TiXmlElement *element =
field->FirstChildElement();
530 CurveMap::iterator it;
534 std::string elementType(element->ValueStr());
536 ASSERTL0(elementType ==
"Q" || elementType ==
"T",
537 (std::string(
"Unknown 3D face type: ") + elementType).c_str());
539 std::string IsCompressed;
540 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
543 boost::iequals(IsCompressed,
545 "Compressed formats do not match. Expected :" +
550 TiXmlNode *faceChild = element->FirstChild();
551 ASSERTL0(faceChild,
"Unable to extract the data from "
552 "the compressed face tag.");
555 if (faceChild->Type() == TiXmlNode::TINYXML_TEXT)
557 faceStr += faceChild->ToText()->ValueStr();
561 if (elementType ==
"T")
563 std::vector<SpatialDomains::MeshTri> faceData;
567 for (
int i = 0; i < faceData.size(); ++i)
569 indx = faceData[i].id;
572 it = curvedFaces.find(indx);
581 if (it == curvedFaces.end())
589 indx, edges, it->second);
591 trigeom->SetGlobalID(indx);
592 triGeoms[indx] = trigeom;
595 else if (elementType ==
"Q")
597 std::vector<SpatialDomains::MeshQuad> faceData;
601 for (
int i = 0; i < faceData.size(); ++i)
603 indx = faceData[i].id;
606 it = curvedFaces.find(indx);
616 if (it == curvedFaces.end())
624 indx, edges, it->second);
626 quadgeom->SetGlobalID(indx);
627 quadGeoms[indx] = quadgeom;
631 element = element->NextSiblingElement();
639 int spaceDimension =
m_meshGraph->GetSpaceDimension();
641 TiXmlElement *
field =
nullptr;
651 TiXmlElement *segment =
field->FirstChildElement(
"S");
652 CurveMap::iterator it;
656 std::string IsCompressed;
657 segment->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
659 boost::iequals(IsCompressed,
661 "Compressed formats do not match. Expected :" +
666 TiXmlNode *child = segment->FirstChild();
667 ASSERTL0(child,
"Unable to extract the data from "
668 "the compressed face tag.");
671 if (child->Type() == TiXmlNode::TINYXML_TEXT)
673 str += child->ToText()->ValueStr();
678 std::vector<SpatialDomains::MeshEdge> data;
681 for (
int i = 0; i < data.size(); ++i)
686 it = curvedEdges.find(indx);
693 if (it == curvedEdges.end())
696 indx, spaceDimension, vertices);
697 seg->SetGlobalID(indx);
702 indx, spaceDimension, vertices, it->second);
703 seg->SetGlobalID(indx);
705 seg->SetGlobalID(indx);
706 segGeoms[indx] = seg;
709 segment = segment->NextSiblingElement(
"S");
725 CurveMap::iterator it;
730 TiXmlElement *element =
field->FirstChildElement();
734 std::string elementType(element->ValueStr());
737 elementType ==
"Q" || elementType ==
"T",
738 (std::string(
"Unknown 2D element type: ") + elementType).c_str());
740 std::string IsCompressed;
741 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
744 boost::iequals(IsCompressed,
746 "Compressed formats do not match. Expected :" +
751 TiXmlNode *faceChild = element->FirstChild();
752 ASSERTL0(faceChild,
"Unable to extract the data from "
753 "the compressed face tag.");
756 if (faceChild->Type() == TiXmlNode::TINYXML_TEXT)
758 faceStr += faceChild->ToText()->ValueStr();
762 if (elementType ==
"T")
764 std::vector<SpatialDomains::MeshTri> faceData;
768 for (
int i = 0; i < faceData.size(); ++i)
770 indx = faceData[i].id;
773 it = curvedFaces.find(indx);
782 if (it == curvedFaces.end())
790 indx, edges, it->second);
792 trigeom->SetGlobalID(indx);
793 triGeoms[indx] = trigeom;
796 else if (elementType ==
"Q")
798 std::vector<SpatialDomains::MeshQuad> faceData;
802 for (
int i = 0; i < faceData.size(); ++i)
804 indx = faceData[i].id;
807 it = curvedFaces.find(indx);
817 if (it == curvedFaces.end())
825 indx, edges, it->second);
827 quadgeom->SetGlobalID(indx);
828 quadGeoms[indx] = quadgeom;
832 element = element->NextSiblingElement();
840 auto &prismGeoms =
m_meshGraph->GetAllPrismGeoms();
851 TiXmlElement *element =
field->FirstChildElement();
855 std::string elementType(element->ValueStr());
859 elementType ==
"A" || elementType ==
"P" || elementType ==
"R" ||
861 (std::string(
"Unknown 3D element type: ") + elementType).c_str());
863 std::string IsCompressed;
864 element->QueryStringAttribute(
"COMPRESSED", &IsCompressed);
867 boost::iequals(IsCompressed,
869 "Compressed formats do not match. Expected :" +
874 TiXmlNode *child = element->FirstChild();
875 ASSERTL0(child,
"Unable to extract the data from "
876 "the compressed face tag.");
879 if (child->Type() == TiXmlNode::TINYXML_TEXT)
881 str += child->ToText()->ValueStr();
885 if (elementType ==
"A")
887 std::vector<SpatialDomains::MeshTet> data;
890 for (
int i = 0; i < data.size(); ++i)
893 for (
int j = 0; j < 4; ++j)
897 tfaces[j] = std::static_pointer_cast<TriGeom>(face);
902 tetGeoms[indx] = tetgeom;
906 else if (elementType ==
"P")
908 std::vector<SpatialDomains::MeshPyr> data;
911 for (
int i = 0; i < data.size(); ++i)
916 for (
int j = 0; j < 5; ++j)
925 std::stringstream errorstring;
926 errorstring <<
"Element " << indx
927 <<
" has invalid face: " << j;
928 ASSERTL0(
false, errorstring.str().c_str());
932 faces[j] = std::static_pointer_cast<TriGeom>(face);
935 else if (face->GetShapeType() ==
938 faces[j] = std::static_pointer_cast<QuadGeom>(face);
942 ASSERTL0((Ntfaces == 4) && (Nqfaces == 1),
943 "Did not identify the correct number of "
944 "triangular and quadrilateral faces for a "
950 pyrGeoms[indx] = pyrgeom;
954 else if (elementType ==
"R")
956 std::vector<SpatialDomains::MeshPrism> data;
959 for (
int i = 0; i < data.size(); ++i)
964 for (
int j = 0; j < 5; ++j)
972 std::stringstream errorstring;
973 errorstring <<
"Element " << indx
974 <<
" has invalid face: " << j;
975 ASSERTL0(
false, errorstring.str().c_str());
979 faces[j] = std::static_pointer_cast<TriGeom>(face);
982 else if (face->GetShapeType() ==
985 faces[j] = std::static_pointer_cast<QuadGeom>(face);
989 ASSERTL0((Ntfaces == 2) && (Nqfaces == 3),
990 "Did not identify the correct number of "
991 "triangular and quadrilateral faces for a "
997 prismGeoms[indx] = prismgeom;
1001 else if (elementType ==
"H")
1003 std::vector<SpatialDomains::MeshHex> data;
1007 for (
int i = 0; i < data.size(); ++i)
1010 for (
int j = 0; j < 6; ++j)
1014 faces[j] = std::static_pointer_cast<QuadGeom>(face);
1019 hexGeoms[indx] = hexgeom;
1024 element = element->NextSiblingElement();
1031 if (verts.size() == 0)
1036 TiXmlElement *vertTag =
new TiXmlElement(
"VERTEX");
1038 std::vector<MeshVertex> vertInfo;
1040 for (
auto &i : verts)
1044 v.
x = i.second->x();
1045 v.
y = i.second->y();
1046 v.
z = i.second->z();
1047 vertInfo.push_back(v);
1050 vertTag->SetAttribute(
"COMPRESSED",
1052 vertTag->SetAttribute(
"BITSIZE",
1055 std::string vertStr;
1058 vertTag->LinkEndChild(
new TiXmlText(vertStr));
1060 geomTag->LinkEndChild(vertTag);
1066 int meshDimension =
m_meshGraph->GetMeshDimension();
1068 if (edges.size() == 0)
1073 TiXmlElement *edgeTag =
new TiXmlElement(meshDimension == 1 ?
"S" :
"EDGE");
1075 std::vector<MeshEdge> edgeInfo;
1077 for (
auto &i : edges)
1081 e.
v0 = i.second->GetVid(0);
1082 e.
v1 = i.second->GetVid(1);
1083 edgeInfo.push_back(e);
1086 std::string edgeStr;
1089 edgeTag->SetAttribute(
"COMPRESSED",
1091 edgeTag->SetAttribute(
"BITSIZE",
1094 edgeTag->LinkEndChild(
new TiXmlText(edgeStr));
1096 if (meshDimension == 1)
1098 TiXmlElement *tmp =
new TiXmlElement(
"ELEMENT");
1099 tmp->LinkEndChild(edgeTag);
1100 geomTag->LinkEndChild(tmp);
1104 geomTag->LinkEndChild(edgeTag);
1111 if (tris.size() == 0)
1116 std::string tag =
"T";
1118 std::vector<MeshTri> triInfo;
1120 for (
auto &i : tris)
1124 t.
e[0] = i.second->GetEid(0);
1125 t.
e[1] = i.second->GetEid(1);
1126 t.
e[2] = i.second->GetEid(2);
1127 triInfo.push_back(t);
1130 TiXmlElement *x =
new TiXmlElement(tag);
1134 x->SetAttribute(
"COMPRESSED",
1138 x->LinkEndChild(
new TiXmlText(triStr));
1140 faceTag->LinkEndChild(x);
1146 if (quads.size() == 0)
1151 std::string tag =
"Q";
1153 std::vector<MeshQuad> quadInfo;
1155 for (
auto &i : quads)
1159 q.e[0] = i.second->GetEid(0);
1160 q.e[1] = i.second->GetEid(1);
1161 q.e[2] = i.second->GetEid(2);
1162 q.e[3] = i.second->GetEid(3);
1163 quadInfo.push_back(
q);
1166 TiXmlElement *x =
new TiXmlElement(tag);
1167 std::string quadStr;
1170 x->SetAttribute(
"COMPRESSED",
1174 x->LinkEndChild(
new TiXmlText(quadStr));
1176 faceTag->LinkEndChild(x);
1182 if (hexs.size() == 0)
1187 std::string tag =
"H";
1189 std::vector<MeshHex> elementInfo;
1191 for (
auto &i : hexs)
1195 e.
f[0] = i.second->GetFid(0);
1196 e.
f[1] = i.second->GetFid(1);
1197 e.
f[2] = i.second->GetFid(2);
1198 e.
f[3] = i.second->GetFid(3);
1199 e.
f[4] = i.second->GetFid(4);
1200 e.
f[5] = i.second->GetFid(5);
1201 elementInfo.push_back(e);
1204 TiXmlElement *x =
new TiXmlElement(tag);
1208 x->SetAttribute(
"COMPRESSED",
1212 x->LinkEndChild(
new TiXmlText(elStr));
1214 elmtTag->LinkEndChild(x);
1220 if (pris.size() == 0)
1225 std::string tag =
"R";
1227 std::vector<MeshPrism> elementInfo;
1229 for (
auto &i : pris)
1233 e.
f[0] = i.second->GetFid(0);
1234 e.
f[1] = i.second->GetFid(1);
1235 e.
f[2] = i.second->GetFid(2);
1236 e.
f[3] = i.second->GetFid(3);
1237 e.
f[4] = i.second->GetFid(4);
1238 elementInfo.push_back(e);
1241 TiXmlElement *x =
new TiXmlElement(tag);
1245 x->SetAttribute(
"COMPRESSED",
1249 x->LinkEndChild(
new TiXmlText(elStr));
1251 elmtTag->LinkEndChild(x);
1257 if (pyrs.size() == 0)
1262 std::string tag =
"P";
1264 std::vector<MeshPyr> elementInfo;
1266 for (
auto &i : pyrs)
1270 e.
f[0] = i.second->GetFid(0);
1271 e.
f[1] = i.second->GetFid(1);
1272 e.
f[2] = i.second->GetFid(2);
1273 e.
f[3] = i.second->GetFid(3);
1274 e.
f[4] = i.second->GetFid(4);
1275 elementInfo.push_back(e);
1278 TiXmlElement *x =
new TiXmlElement(tag);
1282 x->SetAttribute(
"COMPRESSED",
1286 x->LinkEndChild(
new TiXmlText(elStr));
1288 elmtTag->LinkEndChild(x);
1294 if (tets.size() == 0)
1299 std::string tag =
"A";
1301 std::vector<MeshTet> elementInfo;
1303 for (
auto &i : tets)
1307 e.
f[0] = i.second->GetFid(0);
1308 e.
f[1] = i.second->GetFid(1);
1309 e.
f[2] = i.second->GetFid(2);
1310 e.
f[3] = i.second->GetFid(3);
1311 elementInfo.push_back(e);
1314 TiXmlElement *x =
new TiXmlElement(tag);
1318 x->SetAttribute(
"COMPRESSED",
1322 x->LinkEndChild(
new TiXmlText(elStr));
1324 elmtTag->LinkEndChild(x);
1330 if (edges.size() == 0 && faces.size() == 0)
1335 TiXmlElement *curveTag =
new TiXmlElement(
"CURVED");
1337 std::vector<MeshCurvedInfo> edgeInfo;
1338 std::vector<MeshCurvedInfo> faceInfo;
1346 for (
auto &i : edges)
1349 cinfo.
id = edgeCnt++;
1351 cinfo.
npoints = i.second->m_points.size();
1352 cinfo.
ptype = i.second->m_ptype;
1356 edgeInfo.push_back(cinfo);
1358 for (
int j = 0; j < i.second->m_points.size(); j++)
1362 v.
x = i.second->m_points[j]->x();
1363 v.
y = i.second->m_points[j]->y();
1364 v.
z = i.second->m_points[j]->z();
1365 curvedPts.
pts.push_back(v);
1366 curvedPts.
index.push_back(newIdx);
1372 for (
auto &i : faces)
1375 cinfo.
id = faceCnt++;
1377 cinfo.
npoints = i.second->m_points.size();
1378 cinfo.
ptype = i.second->m_ptype;
1382 faceInfo.push_back(cinfo);
1384 for (
int j = 0; j < i.second->m_points.size(); j++)
1388 v.
x = i.second->m_points[j]->x();
1389 v.
y = i.second->m_points[j]->y();
1390 v.
z = i.second->m_points[j]->z();
1391 curvedPts.
pts.push_back(v);
1392 curvedPts.
index.push_back(newIdx);
1398 curveTag->SetAttribute(
"COMPRESSED",
1400 curveTag->SetAttribute(
"BITSIZE",
1403 if (edgeInfo.size())
1405 TiXmlElement *x =
new TiXmlElement(
"E");
1406 std::string dataStr;
1409 x->LinkEndChild(
new TiXmlText(dataStr));
1410 curveTag->LinkEndChild(x);
1413 if (faceInfo.size())
1415 TiXmlElement *x =
new TiXmlElement(
"F");
1416 std::string dataStr;
1419 x->LinkEndChild(
new TiXmlText(dataStr));
1420 curveTag->LinkEndChild(x);
1423 if (edgeInfo.size() || faceInfo.size())
1425 TiXmlElement *x =
new TiXmlElement(
"DATAPOINTS");
1426 x->SetAttribute(
"ID", curvedPts.
id);
1427 TiXmlElement *subx =
new TiXmlElement(
"INDEX");
1428 std::string dataStr;
1431 subx->LinkEndChild(
new TiXmlText(dataStr));
1432 x->LinkEndChild(subx);
1434 subx =
new TiXmlElement(
"POINTS");
1437 subx->LinkEndChild(
new TiXmlText(dataStr));
1438 x->LinkEndChild(subx);
1439 curveTag->LinkEndChild(x);
1442 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)
int64_t ptype
point offset of data entry for this curve
int64_t npoints
The entity id corresponding to the global edge/curve.
int64_t ptoffset
the id of point data map (currently always 0 since we are using just one set).
int64_t entityid
Id of this curved information.
int64_t ptid
The number of points in this curved entity.
std::vector< int64_t > index
Mapping to access the pts value. Given a 'ptoffset' value the npoints subsquent values provide the in...
std::vector< MeshVertex > pts
mapping to access pts value.