diff --git a/src/mesh/Connectivity1D.hpp b/src/mesh/Connectivity1D.hpp index cc05b3f8ea3608dd753960d3e3cfcfae325417dc..51ca51a760feb20cdd72d5aa02b8fbde541d46de 100644 --- a/src/mesh/Connectivity1D.hpp +++ b/src/mesh/Connectivity1D.hpp @@ -7,6 +7,7 @@ #include <TinyVector.hpp> #include <ConnectivityUtils.hpp> +#include <TypeOfItem.hpp> #include <RefId.hpp> #include <RefNodeList.hpp> @@ -26,7 +27,12 @@ public: // a local node in a cell ConnectivityMatrix m_node_id_per_cell_matrix; -private: + ConnectivityMatrix subItemIdPerItemMatrix() const + { + return m_node_id_per_cell_matrix; + } + + private: std::vector<RefNodeList> m_ref_node_list; Kokkos::View<double*> m_inv_cell_nb_nodes; diff --git a/src/mesh/Connectivity2D.hpp b/src/mesh/Connectivity2D.hpp index 2714379f57b65521ce778b8d44fabbefe4e66084..b7f2412ffd87dba5f78ca2338f4ec6cf8a14963c 100644 --- a/src/mesh/Connectivity2D.hpp +++ b/src/mesh/Connectivity2D.hpp @@ -10,6 +10,7 @@ #include <map> #include <algorithm> +#include <TypeOfItem.hpp> #include <RefId.hpp> #include <RefNodeList.hpp> #include <RefFaceList.hpp> @@ -33,6 +34,11 @@ class Connectivity2D // a local node in a cell ConnectivityMatrix m_node_id_per_cell_matrix; + inline ConnectivityMatrix subItemIdPerItemMatrix() const + { + return m_node_id_per_cell_matrix; + } + private: std::vector<RefFaceList> m_ref_face_list; std::vector<RefNodeList> m_ref_node_list; diff --git a/src/mesh/Connectivity3D.hpp b/src/mesh/Connectivity3D.hpp index e57d9234a77f9a75e1e580ca672cc1a3946ddcf7..0eb1c631898a37582d44e4634f7df6739fba0f7c 100644 --- a/src/mesh/Connectivity3D.hpp +++ b/src/mesh/Connectivity3D.hpp @@ -12,6 +12,7 @@ #include <algorithm> #include <RefId.hpp> +#include <TypeOfItem.hpp> #include <RefNodeList.hpp> #include <RefFaceList.hpp> @@ -41,6 +42,11 @@ public: // a local node in a cell ConnectivityMatrix m_node_id_per_cell_matrix; + inline ConnectivityMatrix subItemIdPerItemMatrix() const + { + return m_node_id_per_cell_matrix; + } + private: std::vector<RefFaceList> m_ref_face_list; std::vector<RefNodeList> m_ref_node_list; diff --git a/src/mesh/MeshData.hpp b/src/mesh/MeshData.hpp index c8cef0b7a7af3a27c93ca2e43f27c5a30b7e3843..09278a77fcd2eb9e30bde67e7a202db0181cb1cc 100644 --- a/src/mesh/MeshData.hpp +++ b/src/mesh/MeshData.hpp @@ -203,9 +203,9 @@ class MeshData MeshData(const MeshType& mesh) : m_mesh(mesh), - m_Cjr(mesh.connectivity().m_node_id_per_cell_matrix), - m_ljr(mesh.connectivity().m_node_id_per_cell_matrix), - m_njr(mesh.connectivity().m_node_id_per_cell_matrix), + m_Cjr(mesh.connectivity()), + m_ljr(mesh.connectivity()), + m_njr(mesh.connectivity()), m_xj("xj", mesh.numberOfCells()), m_Vj("Vj", mesh.numberOfCells()) { diff --git a/src/mesh/TypeOfItem.hpp b/src/mesh/TypeOfItem.hpp new file mode 100644 index 0000000000000000000000000000000000000000..4b1b7d6a05b18c2b4fd933144469d7a9b24aa31d --- /dev/null +++ b/src/mesh/TypeOfItem.hpp @@ -0,0 +1,11 @@ +#ifndef TYPE_OF_ITEM_HPP +#define TYPE_OF_ITEM_HPP + +enum class TypeOfItem { + node = 0, + edge = 1, + face = 2, + cell = 3 +}; + +#endif // TYPE_OF_ITEM_HPP diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp index f23dce1c6ee53ac26cb0ebf65dcb7bd37d8ca950..6f1b9256a157d43d8e7e62c60820b1f9888ac702 100644 --- a/src/scheme/AcousticSolver.hpp +++ b/src/scheme/AcousticSolver.hpp @@ -255,10 +255,10 @@ class AcousticSolver m_connectivity(m_mesh.connectivity()), m_boundary_condition_list(bc_list), m_br("br", m_mesh.numberOfNodes()), - m_Ajr(m_connectivity.m_node_id_per_cell_matrix), + m_Ajr(m_connectivity), m_Ar("Ar", m_mesh.numberOfNodes()), m_inv_Ar("inv_Ar", m_mesh.numberOfNodes()), - m_Fjr(m_connectivity.m_node_id_per_cell_matrix), + m_Fjr(m_connectivity), m_ur("ur", m_mesh.numberOfNodes()), m_rhocj("rho_c", m_mesh.numberOfCells()), m_Vj_over_cj("Vj_over_cj", m_mesh.numberOfCells()) diff --git a/src/scheme/SubItemValuePerItem.hpp b/src/scheme/SubItemValuePerItem.hpp index f185b519ae4fdd810b6ceb5c2fe9d54b59500286..225001939c8e3a40507d34e6d12efa5a35a2d13c 100644 --- a/src/scheme/SubItemValuePerItem.hpp +++ b/src/scheme/SubItemValuePerItem.hpp @@ -2,18 +2,12 @@ #define SUBITEM_VALUE_PER_ITEM_HPP #include <Kokkos_StaticCrsGraph.hpp> +#include <TypeOfItem.hpp> #warning should not stand in the scheme directory typedef Kokkos::StaticCrsGraph<unsigned int, Kokkos::HostSpace> ConnectivityMatrix; -enum class TypeOfItem { - node, - edge, - face, - cell -}; - template <typename DataType, TypeOfItem SubItemType, TypeOfItem ItemType> @@ -166,8 +160,10 @@ class SubItemValuePerItem } SubItemValuePerItem() = default; - SubItemValuePerItem(const ConnectivityMatrix& subitem_id_per_item_matrix) - : m_subitem_id_per_item_matrix(subitem_id_per_item_matrix), + + template <typename ConnectivityType> + SubItemValuePerItem(const ConnectivityType& connectivity) + : m_subitem_id_per_item_matrix(connectivity.subItemIdPerItemMatrix()), m_values("values", m_subitem_id_per_item_matrix.entries.extent(0)) { ; @@ -176,7 +172,6 @@ class SubItemValuePerItem ~SubItemValuePerItem() = default; }; - template <typename DataType> using NodeValuePerCell = SubItemValuePerItem<DataType, TypeOfItem::node, TypeOfItem::cell>;