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