From c05d0eb681fa4b58dc1857e56b4803b49d91619d Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Tue, 2 Apr 2019 15:04:32 +0200 Subject: [PATCH] Change type of ConnectivityDescriptor::cell_face_is_reversed_vector use more appropriate std::vector<Array<bool>> --- src/mesh/Connectivity.hpp | 4 ++-- src/mesh/ConnectivityDispatcher.cpp | 31 +++++++++++++++-------------- src/mesh/ConnectivityDispatcher.hpp | 2 +- src/mesh/GmshReader.cpp | 2 +- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index 4c19ae6b5..27d5e2489 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 f17441123..7ac1dbb39 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 e8d3a1597..b4becdf23 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 fde501ac1..2ecaa0696 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; -- GitLab