From 7b9e5a09f8a9a9c81561f2c118fcac2a2d06bcad Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Mon, 13 Mar 2017 13:58:49 +0100 Subject: [PATCH] [A/U/MP] Refactor splitOfHigherOrderNode. --- .../PartitionMesh/NodeWiseMeshPartitioner.cpp | 46 ++++++++++--------- .../PartitionMesh/NodeWiseMeshPartitioner.h | 6 +++ 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp index 9d0926a1d46..b35d09c38ff 100644 --- a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp +++ b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp @@ -97,17 +97,8 @@ void NodeWiseMeshPartitioner::findNonGhostNodesInPartition( { if (_nodes_partition_ids[i] == part_id) { - if (is_mixed_high_order_linear_elems) - { // TODO: Test it once there is a case - if (i < _mesh->getNumberOfBaseNodes()) - partition.nodes.push_back(nodes[i]); - else - extra_nodes.push_back(nodes[i]); - } - else - { - partition.nodes.push_back(nodes[i]); - } + splitOfHigherOrderNode(nodes, is_mixed_high_order_linear_elems, + i, partition.nodes, extra_nodes); } } partition.number_of_non_ghost_base_nodes = partition.nodes.size(); @@ -168,23 +159,34 @@ void NodeWiseMeshPartitioner::findGhostNodesInPartition( if (_nodes_partition_ids[node_id] != part_id) { - if (is_mixed_high_order_linear_elems) - { - if (node_id < _mesh->getNumberOfBaseNodes()) - partition.nodes.push_back(nodes[node_id]); - else - extra_nodes.push_back(nodes[node_id]); - } - else - { - partition.nodes.push_back(nodes[node_id]); - } + splitOfHigherOrderNode(nodes, is_mixed_high_order_linear_elems, + node_id, partition.nodes, extra_nodes); nodes_reserved[node_id] = true; } } } } +void NodeWiseMeshPartitioner::splitOfHigherOrderNode( + std::vector<MeshLib::Node*> const& nodes, + bool const is_mixed_high_order_linear_elems, + unsigned const node_id, + std::vector<MeshLib::Node*>& base_nodes, + std::vector<MeshLib::Node*>& extra_nodes) +{ + if (is_mixed_high_order_linear_elems) + { + if (node_id < _mesh->getNumberOfBaseNodes()) + base_nodes.push_back(nodes[node_id]); + else + extra_nodes.push_back(nodes[node_id]); + } + else + { + base_nodes.push_back(nodes[node_id]); + } +} + void NodeWiseMeshPartitioner::processPartition(std::size_t const part_id, const bool is_mixed_high_order_linear_elems) { diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.h b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.h index f808a2a32d1..4d92d8be85e 100644 --- a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.h +++ b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.h @@ -158,6 +158,12 @@ private: const bool is_mixed_high_order_linear_elems, std::vector<MeshLib::Node*>& extra_nodes); + void splitOfHigherOrderNode(std::vector<MeshLib::Node*> const& nodes, + bool const is_mixed_high_order_linear_elems, + unsigned const node_id, + std::vector<MeshLib::Node*>& base_nodes, + std::vector<MeshLib::Node*>& extra_nodes); + void processPartition(std::size_t const part_id, const bool is_mixed_high_order_linear_elems); -- GitLab