From 694adbbd0c0a3f11a4d31b47d90323b51e2f1ce0 Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Thu, 7 Jul 2016 14:16:30 +0200 Subject: [PATCH] [MeshIO] Added a new function for reading serial mesh data --- MeshLib/IO/readMeshFromFile.cpp | 26 ++++++++++---------------- MeshLib/IO/readMeshFromFile.h | 1 + MeshLib/NodePartitionedMesh.h | 4 ++++ 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/MeshLib/IO/readMeshFromFile.cpp b/MeshLib/IO/readMeshFromFile.cpp index 9dfb54cfc3b..9f0fcf9f710 100644 --- a/MeshLib/IO/readMeshFromFile.cpp +++ b/MeshLib/IO/readMeshFromFile.cpp @@ -55,27 +55,20 @@ MeshLib::Mesh* readMeshFromFile(const std::string &file_name) } else if (world_size == 1) { - MeshLib::Mesh* mesh = nullptr; - if (BaseLib::hasFileExtension("msh", file_name)) - { - MeshLib::IO::Legacy::MeshIO meshIO; - mesh = meshIO.loadMeshFromFile(file_name); - } - - if (BaseLib::hasFileExtension("vtu", file_name)) - mesh = MeshLib::IO::VtuInterface::readVTUFile(file_name); - - if (mesh == nullptr) - { - ERR("readMeshFromFile(): Unknown mesh file format in file %s.", - file_name.c_str()); - } + MeshLib::Mesh* mesh = readMeshFromFileSerial(file_name); MeshLib::NodePartitionedMesh* part_mesh = new MeshLib::NodePartitionedMesh(*mesh); delete mesh; return part_mesh; } + return nullptr; #else + return readMeshFromFileSerial(file_name); +#endif +} + +MeshLib::Mesh* readMeshFromFileSerial(const std::string &file_name) +{ if (BaseLib::hasFileExtension("msh", file_name)) { MeshLib::IO::Legacy::MeshIO meshIO; @@ -86,8 +79,9 @@ MeshLib::Mesh* readMeshFromFile(const std::string &file_name) return MeshLib::IO::VtuInterface::readVTUFile(file_name); ERR("readMeshFromFile(): Unknown mesh file format in file %s.", file_name.c_str()); -#endif return nullptr; } + + } // end namespace IO } // end namespace MeshLib diff --git a/MeshLib/IO/readMeshFromFile.h b/MeshLib/IO/readMeshFromFile.h index 7fa9e8fa464..15801bf3747 100644 --- a/MeshLib/IO/readMeshFromFile.h +++ b/MeshLib/IO/readMeshFromFile.h @@ -27,6 +27,7 @@ class Mesh; namespace IO { +MeshLib::Mesh* readMeshFromFileSerial(const std::string &file_name); MeshLib::Mesh* readMeshFromFile(const std::string &file_name); } } diff --git a/MeshLib/NodePartitionedMesh.h b/MeshLib/NodePartitionedMesh.h index 0e323754f37..5cf60f536fb 100644 --- a/MeshLib/NodePartitionedMesh.h +++ b/MeshLib/NodePartitionedMesh.h @@ -43,6 +43,10 @@ class NodePartitionedMesh : public Mesh for (std::size_t i = 0; i < _nodes.size(); i++) { _global_node_ids[i] = _nodes[i]->getID(); + + // TODO To add copying of the connected nodes (and elements) + // in the copy constructor of class Node in order to + // drop the following lines. auto node = _nodes[i]; // Copy constructor of Mesh does not copy the connected // nodes to node. -- GitLab