From cf4dcef4c7be22135cea6b42935e66a44ce4a88c Mon Sep 17 00:00:00 2001
From: "Dmitry Yu. Naumov" <github@naumov.de>
Date: Fri, 10 Aug 2018 14:48:34 +0200
Subject: [PATCH] PM; Partition and write other meshes' properties.

---
 .../PartitionMesh/NodeWiseMeshPartitioner.cpp             | 8 +++++++-
 .../PartitionMesh/NodeWiseMeshPartitioner.h               | 6 ++++--
 .../ModelPreparation/PartitionMesh/PartitionMesh.cpp      | 5 ++++-
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp
index d1ca9a4c866..3210e78003f 100644
--- a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp
+++ b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp
@@ -929,7 +929,8 @@ void NodeWiseMeshPartitioner::writeBinary(const std::string& file_name_base)
 
 void NodeWiseMeshPartitioner::writeOtherMesh(
     std::string const& output_filename_base,
-    std::vector<Partition> const& partitions) const
+    std::vector<Partition> const& partitions,
+    MeshLib::Properties const& partitioned_properties) const
 {
     writeNodesBinary(output_filename_base, partitions, _nodes_global_ids);
 
@@ -942,6 +943,11 @@ void NodeWiseMeshPartitioner::writeOtherMesh(
         std::get<1>(elem_integers);
     writeElementsBinary(output_filename_base, partitions, num_elem_integers,
                         num_g_elem_integers);
+
+    writePropertiesBinary(output_filename_base, partitioned_properties,
+                          partitions, MeshLib::MeshItemType::Node);
+    writePropertiesBinary(output_filename_base, partitioned_properties,
+                          partitions, MeshLib::MeshItemType::Cell);
 }
 
 void NodeWiseMeshPartitioner::writeConfigDataASCII(
diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.h b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.h
index 0fe7d460a6a..c95bdedcd07 100644
--- a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.h
+++ b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.h
@@ -93,8 +93,10 @@ public:
     /// \param file_name_base The prefix of the file name.
     void writeBinary(const std::string& file_name_base);
 
-    void writeOtherMesh(std::string const& output_filename_base,
-                        std::vector<Partition> const& partitions) const;
+    void writeOtherMesh(
+        std::string const& output_filename_base,
+        std::vector<Partition> const& partitions,
+        MeshLib::Properties const& partitioned_properties) const;
 
     void resetPartitionIdsForNodes(
         std::vector<std::size_t>&& node_partition_ids)
diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp b/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp
index 22d81be90e3..7cdb6238528 100644
--- a/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp
+++ b/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp
@@ -182,8 +182,11 @@ int main(int argc, char* argv[])
             BaseLib::extractBaseNameWithoutExtension(filename));
         auto const partitions = mesh_partitioner.partitionOtherMesh(
             *mesh, is_mixed_high_order_linear_elems);
+
+        auto const partitioned_properties =
+            partitionProperties(mesh->getProperties(), partitions);
         mesh_partitioner.writeOtherMesh(output_file_name_wo_extension,
-                                        partitions);
+                                        partitions, partitioned_properties);
     }
 
     if (ascii_flag.getValue())
-- 
GitLab