49 "Reads Swansea plt format for third-order tetrahedra.");
64 vector<vector<NodeSharedPtr> > elementList;
65 vector<int> tmp, tets;
70 cout <<
"InputSwan: Start reading file..." << endl;
80 m_mshFile.read(reinterpret_cast<char *>(&tmp[0]),
81 static_cast<int>(6 *
sizeof(
int)));
83 if (tmp[0] != tmp[5] || tmp[0] != 4 *
sizeof(
int))
85 cout <<
"Header data broken" << endl;
91 int NB_Points = tmp[2];
92 int GridOrder = tmp[4];
93 int ND = (GridOrder + 1) * (GridOrder + 2) * (GridOrder + 3) / 6;
95 cout <<
"NB_Tet = " << NB_Tet << endl;
96 cout <<
"NB_Points = " << NB_Points << endl;
97 cout <<
"GridOrder = " << GridOrder << endl;
98 cout <<
"ND = " << ND << endl;
103 tets.resize(ND * NB_Tet + 2);
104 m_mshFile.read(reinterpret_cast<char *>(&tets[0]),
105 static_cast<int>((ND * NB_Tet + 2) *
sizeof(
int)));
107 if (tets[0] != tets[ND * NB_Tet + 1] ||
108 tets[0] != ND * NB_Tet *
sizeof(
int))
110 cout <<
"ERROR [InputSwan]: Tetrahedron data broken." << endl;
117 pts.resize(3 * NB_Points);
118 m_mshFile.read(reinterpret_cast<char *>(&tmp[0]),
119 static_cast<int>(
sizeof(
int)));
120 m_mshFile.read(reinterpret_cast<char *>(&pts[0]),
121 static_cast<int>(3 * NB_Points *
sizeof(
double)));
122 m_mshFile.read(reinterpret_cast<char *>(&tmp[1]),
123 static_cast<int>(
sizeof(
int)));
125 if (tmp[0] != tmp[1] || tmp[0] != 3 * NB_Points *
sizeof(
double))
127 cout <<
"ERROR [InputSwan]: Point data broken." << endl;
136 for (i = 0; i < NB_Points; ++i)
139 double y = pts[1 * NB_Points + i];
140 double z = pts[2 * NB_Points + i];
142 std::shared_ptr<Node>(
new Node(vid, x, y, z)));
148 for (i = 0; i < NB_Tet; ++i)
150 vector<NodeSharedPtr> nodeList;
151 for (j = 0; j < 20; ++j)
153 int vid = tets[j * NB_Tet + i + 1];
154 nodeList.push_back(
m_mesh->m_node[vid - 1]);
159 tags.push_back(elType);
164 m_mesh->m_element[3].push_back(E);
170 m_mshFile.read(reinterpret_cast<char *>(&tmp[0]),
171 static_cast<int>(
sizeof(
int)));
172 int n_tri = tmp[0] /
sizeof(int) / 5;
173 tets.resize(n_tri * 5);
174 m_mshFile.read(reinterpret_cast<char *>(&tets[0]),
175 static_cast<int>(tmp[0]));
176 m_mshFile.read(reinterpret_cast<char *>(&tmp[1]),
177 static_cast<int>(
sizeof(
int)));
179 if (tmp[0] != tmp[1])
181 cout <<
"ERROR [InputSwan]: Surface data broken." << endl;
189 for (i = 0; i < n_tri; ++i)
191 vector<NodeSharedPtr> nodeList;
193 for (j = 0; j < 3; ++j)
195 nodeList.push_back(
m_mesh->m_node[tets[i + j * n_tri] - 1]);
200 tags.push_back(elType);
205 m_mesh->m_element[2].push_back(E);
Basic information about an element.
MeshSharedPtr m_mesh
Mesh object.
std::shared_ptr< Mesh > MeshSharedPtr
Shared pointer to a mesh.
ElementFactory & GetElementFactory()
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
std::pair< ModuleType, std::string > ModuleKey
virtual NEKMESHUTILS_EXPORT void ProcessFaces(bool ReprocessFaces=true)
Extract element faces.
std::shared_ptr< Element > ElementSharedPtr
virtual NEKMESHUTILS_EXPORT void ProcessElements()
Generate element IDs.
virtual NEKMESHUTILS_EXPORT void ProcessVertices()
Extract element vertices.
virtual NEKMESHUTILS_EXPORT void ProcessEdges(bool ReprocessEdges=true)
Extract element edges.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
std::pair< ModuleType, std::string > ModuleKey
virtual NEKMESHUTILS_EXPORT void ProcessComposites()
Generate composites.
ModuleFactory & GetModuleFactory()