diff --git a/src/mesh/Connectivity3D.hpp b/src/mesh/Connectivity3D.hpp index 8abc9b7b03fd871fc19993be0d0c5b7db49fae44..0afaecbf880aa1085fecb9544198f2b510f7eb72 100644 --- a/src/mesh/Connectivity3D.hpp +++ b/src/mesh/Connectivity3D.hpp @@ -53,9 +53,24 @@ private: size_t m_max_nb_face_per_cell; size_t m_max_nb_node_per_face; - struct Face + class Face { - bool reversed = false; + private: + std::vector<unsigned int> m_node_id_list; + bool m_reversed; + + public: + KOKKOS_INLINE_FUNCTION + const bool& reversed() const + { + return m_reversed; + } + + KOKKOS_INLINE_FUNCTION + const std::vector<unsigned int>& nodeIdList() const + { + return m_node_id_list; + } KOKKOS_INLINE_FUNCTION std::vector<unsigned int> _sort(const std::vector<unsigned int>& node_list) @@ -68,7 +83,7 @@ private: for (size_t i=0; i<node_list.size(); ++i) { const size_t reverse_shift = node_list.size()-shift; rotated_node_list[(reverse_shift+node_list.size()-i)%node_list.size()] = node_list[i]; - reversed = true; + m_reversed = true; } } else { for (size_t i=0; i<node_list.size(); ++i) { @@ -79,8 +94,6 @@ private: return rotated_node_list; } - std::vector<unsigned int> m_node_id_list; - KOKKOS_INLINE_FUNCTION bool operator<(const Face& f) const { @@ -106,11 +119,15 @@ private: KOKKOS_INLINE_FUNCTION Face(const std::vector<unsigned int>& given_node_id_list) - : m_node_id_list(_sort(given_node_id_list)) + : m_node_id_list(_sort(given_node_id_list)), + m_reversed(false) { ; } + KOKKOS_INLINE_FUNCTION + Face() = delete; + KOKKOS_INLINE_FUNCTION ~Face() = default; }; @@ -136,42 +153,42 @@ private: m_cell_nodes(j,1), m_cell_nodes(j,2), m_cell_nodes(j,3)}); - face_cells_map[f0].push_back(std::make_tuple(j, 0, f0.reversed)); + face_cells_map[f0].push_back(std::make_tuple(j, 0, f0.reversed())); // face 1 Face f1({m_cell_nodes(j,4), m_cell_nodes(j,7), m_cell_nodes(j,6), m_cell_nodes(j,5)}); - face_cells_map[f1].push_back(std::make_tuple(j, 1, f1.reversed)); + face_cells_map[f1].push_back(std::make_tuple(j, 1, f1.reversed())); // face 2 Face f2({m_cell_nodes(j,0), m_cell_nodes(j,3), m_cell_nodes(j,7), m_cell_nodes(j,4)}); - face_cells_map[f2].push_back(std::make_tuple(j, 2, f2.reversed)); + face_cells_map[f2].push_back(std::make_tuple(j, 2, f2.reversed())); // face 3 Face f3({m_cell_nodes(j,1), m_cell_nodes(j,5), m_cell_nodes(j,6), m_cell_nodes(j,2)}); - face_cells_map[f3].push_back(std::make_tuple(j, 3, f3.reversed)); + face_cells_map[f3].push_back(std::make_tuple(j, 3, f3.reversed())); // face 4 Face f4({m_cell_nodes(j,0), m_cell_nodes(j,4), m_cell_nodes(j,5), m_cell_nodes(j,1)}); - face_cells_map[f4].push_back(std::make_tuple(j, 4, f4.reversed)); + face_cells_map[f4].push_back(std::make_tuple(j, 4, f4.reversed())); // face 5 Face f5({m_cell_nodes(j,3), m_cell_nodes(j,2), m_cell_nodes(j,6), m_cell_nodes(j,7)}); - face_cells_map[f5].push_back(std::make_tuple(j, 5, f5.reversed)); + face_cells_map[f5].push_back(std::make_tuple(j, 5, f5.reversed())); cell_nb_faces[j] = 6; break; @@ -202,8 +219,8 @@ private: int l=0; for (const auto& face_cells_vector : face_cells_map) { const Face& face = face_cells_vector.first; - for(size_t r=0; r<face.m_node_id_list.size(); ++r) { - face_nodes(l,r) = face.m_node_id_list[r]; + for(size_t r=0; r<face.nodeIdList().size(); ++r) { + face_nodes(l,r) = face.nodeIdList()[r]; } ++l; }