diff --git a/MeshLib/MeshGenerators/VtkMeshConverter.cpp b/MeshLib/MeshGenerators/VtkMeshConverter.cpp index 82bc7af1a775cb1311bd1554b259328d42d3e3f3..9c26daec86d6b6d8def084ad1760d087d365c867 100644 --- a/MeshLib/MeshGenerators/VtkMeshConverter.cpp +++ b/MeshLib/MeshGenerators/VtkMeshConverter.cpp @@ -43,12 +43,13 @@ namespace detail { template <class T_ELEMENT> MeshLib::Element* createElementWithSameNodeOrder( - const std::vector<MeshLib::Node*>& nodes, vtkIdList* const node_ids) + const std::vector<MeshLib::Node*>& nodes, vtkIdList* const node_ids, + std::size_t const element_id) { auto** ele_nodes = new MeshLib::Node*[T_ELEMENT::n_all_nodes]; for (unsigned k(0); k < T_ELEMENT::n_all_nodes; k++) ele_nodes[k] = nodes[node_ids->GetId(k)]; - return new T_ELEMENT(ele_nodes); + return new T_ELEMENT(ele_nodes, element_id); } } // namespace detail @@ -65,7 +66,7 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid( for (std::size_t i = 0; i < nNodes; i++) { coords = grid->GetPoints()->GetPoint(i); - nodes[i] = new MeshLib::Node(coords[0], coords[1], coords[2]); + nodes[i] = new MeshLib::Node(coords[0], coords[1], coords[2], i); } // set mesh elements @@ -83,25 +84,25 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid( case VTK_VERTEX: { elem = detail::createElementWithSameNodeOrder<MeshLib::Point>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_LINE: { elem = detail::createElementWithSameNodeOrder<MeshLib::Line>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_TRIANGLE: { elem = detail::createElementWithSameNodeOrder<MeshLib::Tri>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_QUAD: { elem = detail::createElementWithSameNodeOrder<MeshLib::Quad>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_PIXEL: @@ -111,19 +112,19 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid( quad_nodes[1] = nodes[node_ids->GetId(1)]; quad_nodes[2] = nodes[node_ids->GetId(3)]; quad_nodes[3] = nodes[node_ids->GetId(2)]; - elem = new MeshLib::Quad(quad_nodes); + elem = new MeshLib::Quad(quad_nodes, i); break; } case VTK_TETRA: { elem = detail::createElementWithSameNodeOrder<MeshLib::Tet>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_HEXAHEDRON: { elem = detail::createElementWithSameNodeOrder<MeshLib::Hex>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_VOXEL: @@ -137,13 +138,13 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid( voxel_nodes[5] = nodes[node_ids->GetId(5)]; voxel_nodes[6] = nodes[node_ids->GetId(7)]; voxel_nodes[7] = nodes[node_ids->GetId(6)]; - elem = new MeshLib::Hex(voxel_nodes); + elem = new MeshLib::Hex(voxel_nodes, i); break; } case VTK_PYRAMID: { elem = detail::createElementWithSameNodeOrder<MeshLib::Pyramid>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_WEDGE: @@ -154,50 +155,50 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid( prism_nodes[i] = nodes[node_ids->GetId(i + 3)]; prism_nodes[i + 3] = nodes[node_ids->GetId(i)]; } - elem = new MeshLib::Prism(prism_nodes); + elem = new MeshLib::Prism(prism_nodes, i); break; } case VTK_QUADRATIC_EDGE: { elem = detail::createElementWithSameNodeOrder<MeshLib::Line3>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_QUADRATIC_TRIANGLE: { elem = detail::createElementWithSameNodeOrder<MeshLib::Tri6>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_QUADRATIC_QUAD: { elem = detail::createElementWithSameNodeOrder<MeshLib::Quad8>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_BIQUADRATIC_QUAD: { elem = detail::createElementWithSameNodeOrder<MeshLib::Quad9>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_QUADRATIC_TETRA: { elem = detail::createElementWithSameNodeOrder<MeshLib::Tet10>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_QUADRATIC_HEXAHEDRON: { elem = detail::createElementWithSameNodeOrder<MeshLib::Hex20>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_QUADRATIC_PYRAMID: { elem = detail::createElementWithSameNodeOrder<MeshLib::Pyramid13>( - nodes, node_ids); + nodes, node_ids, i); break; } case VTK_QUADRATIC_WEDGE: @@ -215,7 +216,7 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid( prism_nodes[11] = nodes[node_ids->GetId(13)]; for (unsigned i = 0; i < 3; ++i) prism_nodes[12 + i] = nodes[node_ids->GetId(11 - i)]; - elem = new MeshLib::Prism15(prism_nodes); + elem = new MeshLib::Prism15(prism_nodes, i); break; } default: