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