Skip to content
Snippets Groups Projects
Commit 7b9e5a09 authored by Tom Fischer's avatar Tom Fischer
Browse files

[A/U/MP] Refactor splitOfHigherOrderNode.

parent 44afd14a
No related branches found
No related tags found
No related merge requests found
......@@ -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)
{
......
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment