diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index 4c19ae6b53a97523f977fdb56a5d310c84227b1d..27d5e248970fc46d63267f35a08fd4b41165dcde 100644 --- a/src/mesh/Connectivity.hpp +++ b/src/mesh/Connectivity.hpp @@ -47,11 +47,11 @@ class ConnectivityDescriptor #warning should be set in 2d std::vector<std::vector<unsigned int>> cell_to_face_vector; - std::vector<std::vector<bool>> cell_face_is_reversed_vector; - // std::vector<std::vector<unsigned int>> face_to_cell_vector; std::vector<std::vector<unsigned int>> face_to_node_vector; + std::vector<Array<bool>> cell_face_is_reversed_vector; + std::vector<CellType> cell_type_vector; std::vector<int> cell_number_vector; diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp index f1744112301e55d1a183cad5aaea4804c79b0348..7ac1dbb398a384f0546efb585a0a544c82a2c6c5 100644 --- a/src/mesh/ConnectivityDispatcher.cpp +++ b/src/mesh/ConnectivityDispatcher.cpp @@ -154,28 +154,27 @@ template <int Dimension> template<typename DataType, typename ItemOfItem, typename ConnectivityPtr> void ConnectivityDispatcher<Dimension>:: _gatherFrom(const SubItemValuePerItem<DataType, ItemOfItem, ConnectivityPtr>& data_to_gather, - std::vector<std::vector<std::remove_const_t<DataType>>>& gathered_vector) + std::vector<Array<std::remove_const_t<DataType>>>& gathered_vector) { using MutableDataType = std::remove_const_t<DataType>; constexpr ItemType item_type = ItemOfItem::item_type; using ItemId = ItemIdT<item_type>; + const auto& item_list_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc; + std::vector<Array<MutableDataType>> data_to_send_by_proc(parallel::size()); - { - const auto& item_list_to_send_by_proc = this->_dispatchedInfo<item_type>().m_list_to_send_by_proc; - for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) { - std::vector<MutableDataType> data_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& item_data = data_to_gather.itemValues(item_id); - for (size_t l=0; l<item_data.size(); ++l) { - data_by_item_vector.push_back(item_data[l]); - } + for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) { + std::vector<MutableDataType> data_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& item_data = data_to_gather.itemValues(item_id); + for (size_t l=0; l<item_data.size(); ++l) { + data_by_item_vector.push_back(item_data[l]); } - data_to_send_by_proc[i_rank] = convert_to_array(data_by_item_vector); } + data_to_send_by_proc[i_rank] = convert_to_array(data_by_item_vector); } const auto& number_of_item_per_item_by_proc = @@ -195,9 +194,9 @@ _gatherFrom(const SubItemValuePerItem<DataType, ItemOfItem, ConnectivityPtr>& da for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) { int l=0; for (size_t i=0; i<item_list_to_recv_size_by_proc[i_rank]; ++i) { - std::vector<MutableDataType> data_vector; - for (int k=0; k<number_of_item_per_item_by_proc[i_rank][i]; ++k) { - data_vector.push_back(recv_data_to_gather_by_proc[i_rank][l++]); + Array<MutableDataType> data_vector(number_of_item_per_item_by_proc[i_rank][i]); + for (size_t k=0; k<data_vector.size(); ++k) { + data_vector[k] = recv_data_to_gather_by_proc[i_rank][l++]; } gathered_vector.emplace_back(data_vector); } @@ -389,6 +388,8 @@ ConnectivityDispatcher<Dimension>::_dispatchFaces() { const auto& cell_list_to_recv_size_by_proc = this->_dispatchedInfo<ItemType::cell>().m_list_to_recv_size_by_proc; + const auto& recv_number_of_face_per_cell_by_proc = + this->_dispatchedInfo<FaceOfCell>().m_recv_number_of_item_per_item_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 e8d3a159781d2a1667f5bbeb55a17de816995e33..b4becdf236266b5eb9887d8f6af9dad0768c4762 100644 --- a/src/mesh/ConnectivityDispatcher.hpp +++ b/src/mesh/ConnectivityDispatcher.hpp @@ -176,7 +176,7 @@ class ConnectivityDispatcher template<typename DataType, typename ItemOfItem, typename ConnectivityPtr> void _gatherFrom(const SubItemValuePerItem<DataType, ItemOfItem, ConnectivityPtr>& data_to_gather, - std::vector<std::vector<std::remove_const_t<DataType>>>& gathered_vector); + std::vector<Array<std::remove_const_t<DataType>>>& gathered_vector); template <typename SubItemOfItemT> std::vector<Array<const int>> diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp index fde501ac1fea1516e6bcb1577be60ea0c1d1efa3..2ecaa06967b5ab767ab7e1a6a3e96e3742f35277 100644 --- a/src/mesh/GmshReader.cpp +++ b/src/mesh/GmshReader.cpp @@ -947,7 +947,7 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(ConnectivityDescriptor& d { descriptor.cell_face_is_reversed_vector.resize(descriptor.cell_by_node_vector.size()); for (CellId j=0; j<descriptor.cell_face_is_reversed_vector.size(); ++j) { - descriptor.cell_face_is_reversed_vector[j].resize(cell_nb_faces[j]); + descriptor.cell_face_is_reversed_vector[j] = Array<bool>(cell_nb_faces[j]); } for (const auto& face_cells_vector : face_cells_map) { const auto& cells_vector = face_cells_vector.second;