From 663e7c62f4736eb579511589e59374f10c49f72b Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Wed, 1 Aug 2018 19:19:50 +0200 Subject: [PATCH] Remove m_cell_to_node_matrix member Now use m_item_to_item_matrix[cell_id][node_id] instead --- src/mesh/Connectivity.cpp | 11 +++++++++-- src/mesh/Connectivity.hpp | 35 +++++++++++++++++++++++------------ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/mesh/Connectivity.cpp b/src/mesh/Connectivity.cpp index 391735aaa..974067b18 100644 --- a/src/mesh/Connectivity.cpp +++ b/src/mesh/Connectivity.cpp @@ -7,9 +7,13 @@ void Connectivity<3>::_computeFaceCellConnectivities() Kokkos::View<unsigned short*> cell_nb_faces("cell_nb_faces", this->numberOfCells()); typedef std::tuple<unsigned int, unsigned short, bool> CellFaceInfo; + + const auto& cell_to_node_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; + std::map<Face, std::vector<CellFaceInfo>> face_cells_map; for (unsigned int j=0; j<this->numberOfCells(); ++j) { - const auto& cell_nodes = m_cell_to_node_matrix.rowConst(j); + const auto& cell_nodes = cell_to_node_matrix.rowConst(j); switch (cell_nodes.length) { case 4: { // tetrahedron @@ -182,11 +186,14 @@ void Connectivity<3>::_computeFaceCellConnectivities() template<> void Connectivity<2>::_computeFaceCellConnectivities() { + const auto& cell_to_node_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; + // In 2D faces are simply define typedef std::pair<unsigned int, unsigned short> CellFaceId; std::map<Face, std::vector<CellFaceId>> face_cells_map; for (unsigned int j=0; j<this->numberOfCells(); ++j) { - const auto& cell_nodes = m_cell_to_node_matrix.rowConst(j); + const auto& cell_nodes = cell_to_node_matrix.rowConst(j); for (unsigned short r=0; r<cell_nodes.length; ++r) { unsigned int node0_id = cell_nodes(r); unsigned int node1_id = cell_nodes((r+1)%cell_nodes.length); diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index d0448615b..931482a5f 100644 --- a/src/mesh/Connectivity.hpp +++ b/src/mesh/Connectivity.hpp @@ -230,12 +230,10 @@ class Connectivity final public: static constexpr size_t dimension = Dimension; - private: - ConnectivityMatrix m_cell_to_node_matrix; public: ConnectivityMatrix cellToNodeMatrix() const { - return m_cell_to_node_matrix; + return m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; } NodeValuePerCell<unsigned short> m_cell_to_node_local_cell; @@ -323,7 +321,9 @@ private: KOKKOS_INLINE_FUNCTION size_t numberOfCells() const { - return m_cell_to_node_matrix.numRows(); + const auto& cell_to_node_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; + return cell_to_node_matrix.numRows(); } const Kokkos::View<const double*> invCellNbNodes() const @@ -347,32 +347,34 @@ private: Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector) { - m_cell_to_node_matrix = cell_by_node_vector; + auto& cell_to_node_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; + cell_to_node_matrix = cell_by_node_vector; Assert(this->numberOfCells()>0); { Kokkos::View<double*> inv_cell_nb_nodes("inv_cell_nb_nodes", this->numberOfCells()); Kokkos::parallel_for(this->numberOfCells(), KOKKOS_LAMBDA(const int& j){ - const auto& cell_nodes = m_cell_to_node_matrix.rowConst(j); + const auto& cell_nodes = cell_to_node_matrix.rowConst(j); inv_cell_nb_nodes[j] = 1./cell_nodes.length; }); m_inv_cell_nb_nodes = inv_cell_nb_nodes; } - m_connectivity_computer.computeInverseConnectivityMatrix(m_cell_to_node_matrix, + m_connectivity_computer.computeInverseConnectivityMatrix(cell_to_node_matrix, m_node_to_cell_matrix); m_node_to_cell_local_node = CellValuePerNode<unsigned short>(*this); - m_connectivity_computer.computeLocalChildItemNumberInItem(m_cell_to_node_matrix, + m_connectivity_computer.computeLocalChildItemNumberInItem(cell_to_node_matrix, m_node_to_cell_matrix, m_node_to_cell_local_node); m_cell_to_node_local_cell = NodeValuePerCell<unsigned short>(*this); m_connectivity_computer.computeLocalChildItemNumberInItem(m_node_to_cell_matrix, - m_cell_to_node_matrix, + cell_to_node_matrix, m_cell_to_node_local_cell); if constexpr (Dimension>1) { this->_computeFaceCellConnectivities(); @@ -403,7 +405,10 @@ inline const ConnectivityMatrix& Connectivity<3>::itemToItemMatrix<TypeOfItem::cell, TypeOfItem::node>() const { - return m_cell_to_node_matrix; + const auto& cell_to_node_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; + + return cell_to_node_matrix; } template <> @@ -450,7 +455,10 @@ inline const ConnectivityMatrix& Connectivity<2>::itemToItemMatrix<TypeOfItem::cell, TypeOfItem::node>() const { - return m_cell_to_node_matrix; + const auto& cell_to_node_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; + + return cell_to_node_matrix; } template <> @@ -488,7 +496,10 @@ inline const ConnectivityMatrix& Connectivity<1>::itemToItemMatrix<TypeOfItem::cell, TypeOfItem::node>() const { - return m_cell_to_node_matrix; + const auto& cell_to_node_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; + + return cell_to_node_matrix; } template <> -- GitLab