1#ifndef MeshFileReader_hpp
2#define MeshFileReader_hpp
14void meshReadSize ( std::string mesh_filename,
int &numNode,
int &dim,
int &numElement,
int &orderElement,
int &numSurface,
int &orderSurface,
int &numEdges,
int& orderEdges );
17int NextEntry(std::string text, std::string delimiter,
int fromPos,
int &value, T&random){
19 int pos = text.find(delimiter,fromPos);
20 value = std::stoi(text.substr(fromPos,pos));
26int NextEntry(std::string text, std::string delimiter,
int fromPos,
double &value, T&random){
28 int pos = text.find(delimiter,fromPos);
29 value = stod(text.substr(fromPos,pos));
35void readEntity( std::ifstream& file, std::string& text, std::vector<T>& entity, std::vector<int>& entityFlags,
const int& numEntity,
const int& orderEntity,
const std::string& delimiter,
bool isNode =
false,
int dim = 3 ){
42 int lineLength = text.length();
43 text.erase(0,lineLength);
44 getline ( file, text );
45 lineLength = text.length();
46 text.erase(0,lineLength);
48 for (
int i=0; i<numEntity; i++) {
50 getline ( file, text );
51 lineLength = text.length();
52 for (
int j=0; j<orderEntity; j++) {
53 pos = NextEntry(text,delimiter,pos,dblValue,random);
55 entity[dim*i+j] = dblValue;
58 NextEntry(text,
"\n",pos,flag,random);
59 entityFlags[i] = flag;
60 text.erase(0,lineLength);
64 for (
int i=0; i<numEntity; i++) {
66 getline ( file, text );
67 lineLength = text.length();
68 for (
int j=0; j<orderEntity; j++) {
69 pos = NextEntry(text,delimiter,pos,intValue,random);
70 entity[orderEntity*i+j] = intValue;
72 NextEntry(text,
"\n",pos,flag,random);
73 entityFlags[i] = flag;
74 text.erase(0,lineLength);
80void meshReadData (
const std::string& mesh_filename,
const std::string& type,
const std::string& delimiter,
const int &dim,
const int& numEntity,
const int& orderEntity, std::vector<T>& entity, std::vector<int>& entityFlag ){
86 file.open ( mesh_filename.c_str ( ) );
89 getline ( file, text );
90 lineLength = text.length();
93 if ( !text.compare(0,8,
"Vertices") && type ==
"node" ) {
94 readEntity( file, text, entity, entityFlag, numEntity, orderEntity, delimiter,
true, dim);
99 if ( !text.compare(0,5,
"Edges") &&
100 ( (dim == 2 && type ==
"surface") || (dim == 3 && type ==
"line") ) ) {
101 readEntity( file, text, entity, entityFlag, numEntity, orderEntity, delimiter );
106 if (!text.compare(0,9,
"Triangles") &&
107 ( (dim == 2 && type ==
"element") || (dim == 3 && type ==
"surface") ) ) {
108 readEntity( file, text, entity, entityFlag, numEntity, orderEntity, delimiter );
113 if (!text.compare(0,10,
"Tetrahedra") &&
114 ( dim == 3 && type ==
"element" ) ) {
115 readEntity( file, text, entity, entityFlag, numEntity, orderEntity, delimiter );
119 text.erase(0,lineLength);
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5