diff --git a/src/mesh/Connectivity.cpp b/src/mesh/Connectivity.cpp index 974067b18557dbe64f6736ad718cedaa15a2d676..e72d0b80677f8d309b1f5b0770078e8b68e904b7 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 99845abc1755c8c8fd75f0c3d344269d5d1e3d8d..9a0eba32547c9009a5b719c5c22037a1d2528823 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 a3b1fb1805d30cde0761b32bb185d857dd615064..cd8250412b0bb6b410cce1116514022ed3c8c0ea 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) {