From ff39e0980d78ce2df041c94dd9cb72c4c0de7173 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Wed, 3 Oct 2018 15:25:26 +0200 Subject: [PATCH] Compute and print new node owners --- src/mesh/GmshReader.cpp | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp index 931285274..3cbbddfdf 100644 --- a/src/mesh/GmshReader.cpp +++ b/src/mesh/GmshReader.cpp @@ -177,10 +177,28 @@ void GmshReader::_dispatch() Partitioner P; Array<int> cell_new_owner = broadcast(P.partition(mesh_graph), reader_rank); + Array<int> node_new_owner(mesh.numberOfNodes()); + if (commRank() == reader_rank) { + const auto& node_to_cell_matrix = mesh.connectivity().nodeToCellMatrix(); + parallel_for(mesh.numberOfNodes(), PASTIS_LAMBDA(const NodeId& r) { + const auto& node_cells = node_to_cell_matrix[r]; + int new_owner = cell_new_owner[node_cells[0]]; + for (size_t j=1; j<node_cells.size(); ++j) { + const int cell_owner = cell_new_owner[node_cells[j]]; + if (new_owner < cell_owner) { + new_owner = cell_owner; + } + } + node_new_owner[r] = new_owner; + }); + } + + node_new_owner = broadcast(node_new_owner, reader_rank); + for (int i_rank=0; i_rank<commSize(); ++i_rank) { if (commRank() == i_rank) { size_t cpt=0; - std::cout << i_rank << " -> "; + std::cout << i_rank << " cells -> "; for (size_t i=0; i<cell_new_owner.size(); ++i) { if (commRank() == cell_new_owner[i]) { std::cout << i << ' '; @@ -192,6 +210,21 @@ void GmshReader::_dispatch() barrier(); } + for (int i_rank=0; i_rank<commSize(); ++i_rank) { + if (commRank() == i_rank) { + size_t cpt=0; + std::cout << i_rank << " nodes -> "; + for (size_t i=0; i<node_new_owner.size(); ++i) { + if (commRank() == node_new_owner[i]) { + std::cout << i << ' '; + cpt++; + } + } + std::cout << " [" << cpt << "]\n" << std::flush; + } + barrier(); + } + Messenger::destroy(); std::exit(0); } -- GitLab