1#ifndef MeshFileReader_hpp
2#define MeshFileReader_hpp
18void meshReadSize ( std::string mesh_filename,
int &numNode,
int &dim,
int &numElement,
int &orderElement,
int &numSurface,
int &orderSurface,
int &numEdges,
int& orderEdges );
21int NextEntry(std::string text, std::string delimiter,
int fromPos,
int &value, T&random){
23 int pos = text.find(delimiter,fromPos);
24 value = std::stoi(text.substr(fromPos,pos));
30int NextEntry(std::string text, std::string delimiter,
int fromPos,
double &value, T&random){
32 int pos = text.find(delimiter,fromPos);
33 value = stod(text.substr(fromPos,pos));
39void 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 ){
46 int lineLength = text.length();
47 text.erase(0,lineLength);
48 getline ( file, text );
49 lineLength = text.length();
50 text.erase(0,lineLength);
52 for (
int i=0; i<numEntity; i++) {
54 getline ( file, text );
55 lineLength = text.length();
56 for (
int j=0; j<orderEntity; j++) {
57 pos = NextEntry(text,delimiter,pos,dblValue,random);
59 entity[dim*i+j] = dblValue;
62 NextEntry(text,
"\n",pos,flag,random);
63 entityFlags[i] = flag;
64 text.erase(0,lineLength);
68 for (
int i=0; i<numEntity; i++) {
70 getline ( file, text );
71 lineLength = text.length();
72 for (
int j=0; j<orderEntity; j++) {
73 pos = NextEntry(text,delimiter,pos,intValue,random);
74 entity[orderEntity*i+j] = intValue;
76 NextEntry(text,
"\n",pos,flag,random);
77 entityFlags[i] = flag;
78 text.erase(0,lineLength);
84void 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 ){
90 file.open ( mesh_filename.c_str ( ) );
93 getline ( file, text );
94 lineLength = text.length();
97 if ( !text.compare(0,8,
"Vertices") && type ==
"node" ) {
98 readEntity( file, text, entity, entityFlag, numEntity, orderEntity, delimiter,
true, dim);
103 if ( !text.compare(0,5,
"Edges") &&
104 ( (dim == 2 && type ==
"surface") || (dim == 3 && type ==
"line") ) ) {
105 readEntity( file, text, entity, entityFlag, numEntity, orderEntity, delimiter );
110 if (!text.compare(0,9,
"Triangles") &&
111 ( (dim == 2 && type ==
"element") || (dim == 3 && type ==
"surface") ) ) {
112 readEntity( file, text, entity, entityFlag, numEntity, orderEntity, delimiter );
117 if (!text.compare(0,10,
"Tetrahedra") &&
118 ( dim == 3 && type ==
"element" ) ) {
119 readEntity( file, text, entity, entityFlag, numEntity, orderEntity, delimiter );
123 text.erase(0,lineLength);
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement_decl.hpp:33