38 #include <vtkPolyDataReader.h>
39 #include <vtkPolyData.h>
40 #include <vtkPoints.h>
41 #include <vtkCellArray.h>
78 cout <<
"InputVtk: Start reading file..." << endl;
81 vtkPolyDataReader *vtkMeshReader = vtkPolyDataReader::New();
82 vtkMeshReader->SetFileName(
m_config[
"infile"].as<string>().c_str());
83 vtkMeshReader->Update();
84 vtkPolyData *vtkMesh = vtkMeshReader->GetOutput();
86 vtkPoints *vtkPoints = vtkMesh->GetPoints();
88 const int numCellTypes = 3;
89 vtkCellArray *vtkCells[numCellTypes];
91 int vtkNumPoints[numCellTypes];
92 vtkCells[0] = vtkMesh->GetPolys();
93 vtkCells[1] = vtkMesh->GetStrips();
94 vtkCells[2] = vtkMesh->GetLines();
106 for (
int i = 0; i < vtkPoints->GetNumberOfPoints(); ++i)
108 vtkPoints->GetPoint(i,
p);
110 if ((
p[0] *
p[0]) > 0.000001 &&
m_mesh->m_spaceDim < 1)
114 if ((
p[1] *
p[1]) > 0.000001 &&
m_mesh->m_spaceDim < 2)
118 if ((
p[2] *
p[2]) > 0.000001 &&
m_mesh->m_spaceDim < 3)
124 std::shared_ptr<Node>(
new Node(i,
p[0],
p[1],
p[2])));
127 for (
int c = 0; c < numCellTypes; ++c)
129 vtkCells[c]->InitTraversal();
130 for (
int i = 0; vtkCells[c]->GetNextCell(npts, pts); ++i)
132 for (
int j = 0; j < npts - vtkNumPoints[c] + 1; ++j)
137 tags.push_back(vtkCellTypes[c]);
140 vector<NodeSharedPtr> nodeList;
141 for (
int k = j; k < j + vtkNumPoints[c]; ++k)
143 nodeList.push_back(
m_mesh->m_node[pts[k]]);
147 ElmtConfig conf(vtkCellTypes[c], 1,
false,
false);
149 vtkCellTypes[c], conf, nodeList, tags);
152 if (E->GetDim() >
m_mesh->m_expDim)
154 m_mesh->m_expDim = E->GetDim();
156 m_mesh->m_element[E->GetDim()].push_back(E);
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
MeshSharedPtr m_mesh
Mesh object.
virtual NEKMESHUTILS_EXPORT void ProcessFaces(bool ReprocessFaces=true)
Extract element faces.
virtual NEKMESHUTILS_EXPORT void ProcessEdges(bool ReprocessEdges=true)
Extract element edges.
virtual NEKMESHUTILS_EXPORT void ProcessElements()
Generate element IDs.
virtual NEKMESHUTILS_EXPORT void ProcessVertices()
Extract element vertices.
std::map< std::string, ConfigOption > m_config
List of configuration values.
virtual NEKMESHUTILS_EXPORT void ProcessComposites()
Generate composites.
Represents a point in the domain.
std::pair< ModuleType, std::string > ModuleKey
ModuleFactory & GetModuleFactory()
std::pair< ModuleType, std::string > ModuleKey
std::shared_ptr< Mesh > MeshSharedPtr
Shared pointer to a mesh.
ElementFactory & GetElementFactory()
std::shared_ptr< Element > ElementSharedPtr
Basic information about an element.