24 |
#include <fstream> |
#include <fstream> |
25 |
#include <Structured3DMesh.hpp> |
#include <Structured3DMesh.hpp> |
26 |
#include <MeshOfTetrahedra.hpp> |
#include <MeshOfTetrahedra.hpp> |
27 |
|
#include <MeshOfHexahedra.hpp> |
28 |
|
|
29 |
void |
#include <SurfaceMeshOfTriangles.hpp> |
30 |
MeshWriter::__proceed() |
#include <SurfaceMeshOfQuadrangles.hpp> |
31 |
|
|
32 |
|
template <typename MeshType> |
33 |
|
void MeshWriter::__saveElements() |
34 |
|
{ |
35 |
|
const MeshType& m = dynamic_cast<const MeshType&>(*__mesh); |
36 |
|
typedef typename MeshType::ElementsGeometry CellType; |
37 |
|
|
38 |
|
__os << m.numberOfCells() << __cr; |
39 |
|
|
40 |
|
for (typename MeshType::const_iterator i = m.begin(); |
41 |
|
i != m.end(); ++i) { |
42 |
|
const CellType& c = *i; |
43 |
|
|
44 |
|
for (size_t j=0; j<CellType::NumberOfVertices; ++j) { |
45 |
|
__os << m.vertexNumber(c(j))+1 << ' '; |
46 |
|
} |
47 |
|
|
48 |
|
__os << c.reference() << __cr; |
49 |
|
} |
50 |
|
} |
51 |
|
|
52 |
|
|
53 |
|
void MeshWriter::__proceed() |
54 |
{ |
{ |
55 |
__os << "MeshVersionFormatted 1" << __cr; |
__os << "MeshVersionFormatted 1" << __cr; |
56 |
__os << "Dimension" << __cr; |
__os << "Dimension" << __cr; |
87 |
__os << C.reference() << __cr; |
__os << C.reference() << __cr; |
88 |
} |
} |
89 |
} |
} |
90 |
|
__os << "Hexahedra "; |
91 |
|
this->__saveElements<Structured3DMesh>(); |
92 |
|
break; |
93 |
} |
} |
94 |
case Mesh::hexahedraMesh: { |
case Mesh::hexahedraMesh: { |
95 |
__os << "Hexahedra "; |
__os << "Hexahedra "; |
96 |
|
this->__saveElements<MeshOfHexahedra>(); |
97 |
break; |
break; |
98 |
} |
} |
99 |
case Mesh::tetrahedraMesh: { |
case Mesh::tetrahedraMesh: { |
119 |
// } |
// } |
120 |
// } |
// } |
121 |
__os << "Tetrahedra "; |
__os << "Tetrahedra "; |
122 |
|
this->__saveElements<MeshOfTetrahedra>(); |
123 |
break; |
break; |
124 |
} |
} |
125 |
case Mesh::surfaceMeshTriangles: { |
case Mesh::surfaceMeshTriangles: { |
126 |
__os << "Triangles "; |
__os << "Triangles "; |
127 |
|
this->__saveElements<SurfaceMeshOfTriangles>(); |
128 |
break; |
break; |
129 |
} |
} |
130 |
case Mesh::surfaceMeshQuadrangles: { |
case Mesh::surfaceMeshQuadrangles: { |
131 |
__os << "Quadrangles "; |
__os << "Quadrangles "; |
132 |
|
this->__saveElements<SurfaceMeshOfQuadrangles>(); |
133 |
break; |
break; |
134 |
} |
} |
135 |
default: { |
default: { |
137 |
std::exit(1); |
std::exit(1); |
138 |
} |
} |
139 |
} |
} |
|
|
|
|
|
|
|
__os << (*__mesh).numberOfCells() << __cr; |
|
|
|
|
|
const size_t numberOfVertices = (*(*__mesh).begin()).numberOfVertices(); |
|
|
|
|
|
for (Mesh::const_iterator i = (*__mesh).begin(); |
|
|
i != (*__mesh).end(); ++i) { |
|
|
const Cell& C = *i; |
|
|
|
|
|
for (size_t j=0; j<numberOfVertices; ++j) { |
|
|
__os << (*__mesh).vertexNumber(C(j))+1 << ' '; |
|
|
} |
|
|
|
|
|
__os << C.reference() << __cr; |
|
|
} |
|
140 |
} |
} |