From 89c224d047c7d91e2cd63e33bb933dc2a13387eb Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Thu, 2 Aug 2018 11:01:48 +0200 Subject: [PATCH] Use m_item_to_item_matrix instead of m_cell_to_face_matrix --- src/mesh/Connectivity.cpp | 10 +++++++--- src/mesh/Connectivity.hpp | 20 +++++++++++++++----- src/mesh/MeshData.hpp | 3 ++- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/mesh/Connectivity.cpp b/src/mesh/Connectivity.cpp index 974067b18..e72d0b806 100644 --- a/src/mesh/Connectivity.cpp +++ b/src/mesh/Connectivity.cpp @@ -97,6 +97,8 @@ void Connectivity<3>::_computeFaceCellConnectivities() } { + auto& cell_to_face_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)]; std::vector<std::vector<unsigned int>> cell_to_face_vector(this->numberOfCells()); for (size_t j=0; j<cell_to_face_vector.size(); ++j) { cell_to_face_vector[j].resize(cell_nb_faces[j]); @@ -110,7 +112,7 @@ void Connectivity<3>::_computeFaceCellConnectivities() } ++l; } - m_cell_to_face_matrix = cell_to_face_vector; + cell_to_face_matrix = cell_to_face_vector; } FaceValuePerCell<bool> cell_face_is_reversed(*this); @@ -146,12 +148,14 @@ void Connectivity<3>::_computeFaceCellConnectivities() } } - m_connectivity_computer.computeInverseConnectivityMatrix(m_cell_to_face_matrix, + const auto& cell_to_face_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)]; + m_connectivity_computer.computeInverseConnectivityMatrix(cell_to_face_matrix, m_face_to_cell_matrix); m_face_to_cell_local_face = CellValuePerFace<unsigned short>(*this); - m_connectivity_computer.computeLocalChildItemNumberInItem(m_cell_to_face_matrix, + m_connectivity_computer.computeLocalChildItemNumberInItem(cell_to_face_matrix, m_face_to_cell_matrix, m_face_to_cell_local_face); diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index 99845abc1..9a0eba325 100644 --- a/src/mesh/Connectivity.hpp +++ b/src/mesh/Connectivity.hpp @@ -237,6 +237,12 @@ class Connectivity final return m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)]; } + KOKKOS_INLINE_FUNCTION + ConnectivityMatrix cellToFaceMatrix() const + { + return m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)]; + } + KOKKOS_INLINE_FUNCTION ConnectivityMatrix nodeToCellMatrix() const { @@ -245,7 +251,6 @@ class Connectivity final NodeValuePerCell<unsigned short> m_cell_to_node_local_cell; - ConnectivityMatrix m_cell_to_face_matrix; FaceValuePerCell<bool> m_cell_face_is_reversed; ConnectivityMatrix m_face_to_cell_matrix; @@ -407,7 +412,9 @@ inline const ConnectivityMatrix& Connectivity<3>::itemToItemMatrix<TypeOfItem::cell, TypeOfItem::face>() const { - return m_cell_to_face_matrix; + const auto& cell_to_face_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)]; + return cell_to_face_matrix; } template <> @@ -460,7 +467,9 @@ inline const ConnectivityMatrix& Connectivity<2>::itemToItemMatrix<TypeOfItem::cell, TypeOfItem::face>() const { - return m_cell_to_face_matrix; + const auto& cell_to_face_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)]; + return cell_to_face_matrix; } template <> @@ -525,8 +534,9 @@ inline const ConnectivityMatrix& Connectivity<1>::itemToItemMatrix<TypeOfItem::cell, TypeOfItem::face>() const { -#warning in 1d, faces and node are the same - return m_cell_to_face_matrix; + const auto& cell_to_face_matrix + = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)]; + return cell_to_face_matrix; } template <> diff --git a/src/mesh/MeshData.hpp b/src/mesh/MeshData.hpp index a3b1fb180..cd8250412 100644 --- a/src/mesh/MeshData.hpp +++ b/src/mesh/MeshData.hpp @@ -134,10 +134,11 @@ class MeshData }); const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix(); + const auto& cell_to_face_matrix = m_mesh.connectivity().cellToFaceMatrix(); Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) { const auto& cell_nodes = cell_to_node_matrix.rowConst(j); - const auto& cell_faces = m_mesh.connectivity().m_cell_to_face_matrix.rowConst(j); + const auto& cell_faces = cell_to_face_matrix.rowConst(j); const auto& cell_face_is_reversed = m_mesh.connectivity().m_cell_face_is_reversed.itemValues(j); for (size_t L=0; L<cell_faces.length; ++L) { -- GitLab