diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp index 48565b810181a8d2259ab1f239c9b649fb021899..fd99475c2ecdeff01c8aa477e0437d84e08259e5 100644 --- a/src/mesh/ConnectivityDispatcher.cpp +++ b/src/mesh/ConnectivityDispatcher.cpp @@ -23,7 +23,6 @@ ConnectivityDispatcher<Dimension>::_buildNewOwner() = m_connectivity.template getItemToItemMatrix<item_type,ItemType::cell>(); const auto& cell_number = m_connectivity.cellNumber(); - const auto& cell_new_owner = this->_dispatchedInfo<ItemType::cell>().m_new_owner; using ItemId = ItemIdT<item_type>; @@ -245,7 +244,7 @@ ConnectivityDispatcher<Dimension>::_buildSubItemNumberToIdMap() static_assert(ItemOfItemT::item_type == ItemType::cell, "Dispatcher requires to be built using cell as master entities"); const auto& cell_sub_item_number_to_recv_by_proc - = this->_dispatchedInfo<ItemOfItemT>().m_sub_item_of_item_numbers_to_recv_by_proc; + = this->_dispatchedInfo<ItemOfItemT>().m_sub_item_numbers_to_recv_by_proc; auto& sub_item_number_id_map = this->_dispatchedInfo<ItemOfItemT::sub_item_type>().m_number_to_id_map; for (size_t i_rank=0; i_rank<parallel::size(); ++i_rank) { @@ -283,54 +282,53 @@ template <typename SubItemOfItemT> void ConnectivityDispatcher<Dimension>::_buildSubItemNumbersToRecvByProc() { - std::vector<Array<const int>> item_sub_item_numbering_to_send_by_proc = + const std::vector<Array<const int>> sub_item_numbers_to_send_by_proc = [&] () { const auto& item_to_sub_item_matrix = m_connectivity.template getItemToItemMatrix<SubItemOfItemT::item_type, SubItemOfItemT::sub_item_type>(); - const ItemValue<const int, SubItemOfItemT::sub_item_type>& sub_item_number = - m_connectivity.template number<SubItemOfItemT::sub_item_type>(); + const auto& sub_item_number = m_connectivity.template number<SubItemOfItemT::sub_item_type>(); using ItemId = ItemIdT<SubItemOfItemT::item_type>; using SubItemId = ItemIdT<SubItemOfItemT::sub_item_type>; - std::vector<Array<const int>> item_sub_item_numbering_to_send_by_proc(parallel::size()); + std::vector<Array<const int>> sub_item_numbers_to_send_by_proc(parallel::size()); for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) { const auto& item_list_to_send_by_proc = this->_dispatchedInfo<SubItemOfItemT::item_type>().m_list_to_send_by_proc; - std::vector<int> sub_item_numbering_by_item_vector; + std::vector<int> sub_item_numbers_by_item_vector; for (size_t j=0; j<item_list_to_send_by_proc[i_rank].size(); ++j) { const ItemId& item_id = item_list_to_send_by_proc[i_rank][j]; const auto& sub_item_list = item_to_sub_item_matrix[item_id]; for (size_t r=0; r<sub_item_list.size(); ++r) { const SubItemId& sub_item_id = sub_item_list[r]; - sub_item_numbering_by_item_vector.push_back(sub_item_number[sub_item_id]); + sub_item_numbers_by_item_vector.push_back(sub_item_number[sub_item_id]); } } - item_sub_item_numbering_to_send_by_proc[i_rank] = convert_to_array(sub_item_numbering_by_item_vector); + sub_item_numbers_to_send_by_proc[i_rank] = convert_to_array(sub_item_numbers_by_item_vector); } - return item_sub_item_numbering_to_send_by_proc; + return sub_item_numbers_to_send_by_proc; } (); const auto& number_of_sub_item_per_item_to_recv_by_proc = this->_dispatchedInfo<SubItemOfItemT>().m_number_of_sub_item_per_item_to_recv_by_proc; - std::vector<Array<int>> recv_item_sub_item_numbering_by_proc(parallel::size()); + std::vector<Array<int>> sub_item_numbers_to_recv_by_proc(parallel::size()); for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) { - recv_item_sub_item_numbering_by_proc[i_rank] + sub_item_numbers_to_recv_by_proc[i_rank] = Array<int>(sum(number_of_sub_item_per_item_to_recv_by_proc[i_rank])); } - parallel::exchange(item_sub_item_numbering_to_send_by_proc, recv_item_sub_item_numbering_by_proc); + parallel::exchange(sub_item_numbers_to_send_by_proc, sub_item_numbers_to_recv_by_proc); + + auto& const_sub_item_numbers_to_recv_by_proc = + this->_dispatchedInfo<SubItemOfItemT>().m_sub_item_numbers_to_recv_by_proc; - std::vector<Array<const int>> const_recv_item_sub_item_numbering_by_proc(parallel::size()); + const_sub_item_numbers_to_recv_by_proc.resize(parallel::size()); for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) { - const_recv_item_sub_item_numbering_by_proc[i_rank] = recv_item_sub_item_numbering_by_proc[i_rank]; + const_sub_item_numbers_to_recv_by_proc[i_rank] = sub_item_numbers_to_recv_by_proc[i_rank]; } - - this->_dispatchedInfo<SubItemOfItemT>().m_sub_item_of_item_numbers_to_recv_by_proc - = const_recv_item_sub_item_numbering_by_proc; } template <int Dimension> @@ -351,7 +349,7 @@ ConnectivityDispatcher<Dimension>::_buildItemToSubItemDescriptor() this->_dispatchedInfo<sub_item_type>().m_number_to_id_map; const auto& recv_item_of_item_numbers_by_proc = - this->_dispatchedInfo<ItemOfItemT>().m_sub_item_of_item_numbers_to_recv_by_proc; + this->_dispatchedInfo<ItemOfItemT>().m_sub_item_numbers_to_recv_by_proc; for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) { int l=0; diff --git a/src/mesh/ConnectivityDispatcher.hpp b/src/mesh/ConnectivityDispatcher.hpp index c70b1c69ea42f2f1c6a69b8d88e7f77487464dc5..13eb5e69cc14685587ef4b7883a3543148b3d29e 100644 --- a/src/mesh/ConnectivityDispatcher.hpp +++ b/src/mesh/ConnectivityDispatcher.hpp @@ -69,7 +69,7 @@ class ConnectivityDispatcher struct DispatchedItemOfItemInfo { std::vector<Array<const int>> m_number_of_sub_item_per_item_to_recv_by_proc; - std::vector<Array<const int>> m_sub_item_of_item_numbers_to_recv_by_proc; + std::vector<Array<const int>> m_sub_item_numbers_to_recv_by_proc; }; DispatchedItemOfItemInfo<NodeOfCell> m_dispatched_node_of_cell_info;