From bfbef602f4c5dc239d8daa55556a13fcfb88ca31 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Fri, 5 Apr 2019 18:12:05 +0200 Subject: [PATCH] Replace Ref{Face,Node}List by a generic RefItemList This will ease the generic dispatching of reference item lists --- src/mesh/Connectivity.hpp | 3 +- src/mesh/ConnectivityDispatcher.cpp | 2 +- src/mesh/GmshReader.cpp | 2 +- src/mesh/MeshNodeBoundary.hpp | 7 ++-- src/mesh/RefFaceList.hpp | 40 ----------------------- src/mesh/RefItemList.hpp | 50 +++++++++++++++++++++++++++++ src/mesh/RefNodeList.hpp | 40 ----------------------- src/scheme/BoundaryCondition.hpp | 2 +- 8 files changed, 57 insertions(+), 89 deletions(-) delete mode 100644 src/mesh/RefFaceList.hpp create mode 100644 src/mesh/RefItemList.hpp delete mode 100644 src/mesh/RefNodeList.hpp diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index 23a13a78d..9c304864d 100644 --- a/src/mesh/Connectivity.hpp +++ b/src/mesh/Connectivity.hpp @@ -30,8 +30,7 @@ #include <RefId.hpp> #include <ItemType.hpp> -#include <RefNodeList.hpp> -#include <RefFaceList.hpp> +#include <RefItemList.hpp> #include <SynchronizerManager.hpp> diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp index 08fea56bf..6dcf3177c 100644 --- a/src/mesh/ConnectivityDispatcher.cpp +++ b/src/mesh/ConnectivityDispatcher.cpp @@ -516,7 +516,7 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList() block_type ref_bit{1<<i}; auto item_ref_list = m_connectivity.refFaceList(i_ref); - const auto& item_list = item_ref_list.faceList(); + const auto& item_list = item_ref_list.list(); for (size_t i_item=0; i_item<item_list.size(); ++i_item) { const ItemId& item_id = item_list[i_item]; item_references[item_id] |= ref_bit; diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp index 662507e90..35743518c 100644 --- a/src/mesh/GmshReader.cpp +++ b/src/mesh/GmshReader.cpp @@ -12,7 +12,7 @@ #include <Mesh.hpp> #include <MeshData.hpp> -#include <RefFaceList.hpp> +#include <RefItemList.hpp> #include <Messenger.hpp> #include <ArrayUtils.hpp> diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp index 2f83c82dc..ae31e3240 100644 --- a/src/mesh/MeshNodeBoundary.hpp +++ b/src/mesh/MeshNodeBoundary.hpp @@ -7,8 +7,7 @@ #include <Kokkos_Vector.hpp> #include <TinyVector.hpp> -#include <RefNodeList.hpp> -#include <RefFaceList.hpp> +#include <RefItemList.hpp> #include <ConnectivityMatrix.hpp> #include <IConnectivity.hpp> @@ -38,7 +37,7 @@ class MeshNodeBoundary const auto& face_to_cell_matrix = mesh.connectivity().faceToCellMatrix(); - const Array<const FaceId>& face_list = ref_face_list.faceList(); + const Array<const FaceId>& face_list = ref_face_list.list(); parallel_for(face_list.size(), PASTIS_LAMBDA(const int& l){ const auto& face_cells = face_to_cell_matrix[face_list[l]]; if (face_cells.size()>1) { @@ -74,7 +73,7 @@ class MeshNodeBoundary template <typename MeshType> MeshNodeBoundary(const MeshType&, const RefNodeList& ref_node_list) - : m_node_list(ref_node_list.nodeList()) + : m_node_list(ref_node_list.list()) { static_assert(Dimension == MeshType::Dimension); } diff --git a/src/mesh/RefFaceList.hpp b/src/mesh/RefFaceList.hpp deleted file mode 100644 index cbc7d3b99..000000000 --- a/src/mesh/RefFaceList.hpp +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef REF_FACE_LIST_HPP -#define REF_FACE_LIST_HPP - -#include <Array.hpp> -#include <RefId.hpp> - -class RefFaceList -{ - private: - RefId m_ref_id; - Array<const FaceId> m_face_id_list; - - public: - const RefId& refId() const - { - return m_ref_id; - } - - const Array<const FaceId>& faceList() const - { - return m_face_id_list; - } - - RefFaceList(const RefId& ref_id, - const Array<const FaceId>& face_id_list) - : m_ref_id(ref_id), - m_face_id_list(face_id_list) - { - ; - } - - RefFaceList& operator=(const RefFaceList&) = default; - RefFaceList& operator=(RefFaceList&&) = default; - - RefFaceList() = default; - RefFaceList(const RefFaceList&) = default; - ~RefFaceList() = default; -}; - -#endif // REF_FACE_LIST_HPP diff --git a/src/mesh/RefItemList.hpp b/src/mesh/RefItemList.hpp new file mode 100644 index 000000000..dea69f7ec --- /dev/null +++ b/src/mesh/RefItemList.hpp @@ -0,0 +1,50 @@ +#ifndef REF_ITEM_LIST_HPP +#define REF_ITEM_LIST_HPP + +#include <Array.hpp> +#include <RefId.hpp> +#include <ItemId.hpp> + +template <ItemType item_type> +class RefItemList +{ + public: + using ItemId = ItemIdT<item_type>; + + private: + RefId m_ref_id; + Array<const ItemId> m_item_id_list; + + public: + const RefId& refId() const + { + return m_ref_id; + } + + const Array<const ItemId>& list() const + { + return m_item_id_list; + } + + RefItemList(const RefId& ref_id, + const Array<const ItemId>& item_id_list) + : m_ref_id(ref_id), + m_item_id_list(item_id_list) + { + ; + } + + RefItemList& operator=(const RefItemList&) = default; + RefItemList& operator=(RefItemList&&) = default; + + RefItemList() = default; + RefItemList(const RefItemList&) = default; + ~RefItemList() = default; +}; + +using RefNodeList = RefItemList<ItemType::node>; +using RefEdgeList = RefItemList<ItemType::edge>; +using RefFaceList = RefItemList<ItemType::face>; +using RefCellList = RefItemList<ItemType::cell>; + +#endif // REF_ITEM_LIST_HPP diff --git a/src/mesh/RefNodeList.hpp b/src/mesh/RefNodeList.hpp deleted file mode 100644 index 462d23bb3..000000000 --- a/src/mesh/RefNodeList.hpp +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef REF_NODE_LIST_HPP -#define REF_NODE_LIST_HPP - -#include <Array.hpp> -#include <RefId.hpp> - -class RefNodeList -{ - private: - RefId m_ref_id; - Array<const NodeId> m_node_id_list; - - public: - const RefId& refId() const - { - return m_ref_id; - } - - const Array<const NodeId>& nodeList() const - { - return m_node_id_list; - } - - RefNodeList(const RefId& ref_id, - const Array<const NodeId>& node_id_list) - : m_ref_id(ref_id), - m_node_id_list(node_id_list) - { - ; - } - - RefNodeList& operator=(const RefNodeList&) = default; - RefNodeList& operator=(RefNodeList&&) = default; - - RefNodeList() = default; - RefNodeList(const RefNodeList&) = default; - ~RefNodeList() = default; -}; - -#endif // REF_NODE_LIST_HPP diff --git a/src/scheme/BoundaryCondition.hpp b/src/scheme/BoundaryCondition.hpp index 0380f97c0..669f546c1 100644 --- a/src/scheme/BoundaryCondition.hpp +++ b/src/scheme/BoundaryCondition.hpp @@ -6,7 +6,7 @@ #include <Array.hpp> -#include <RefNodeList.hpp> +#include <RefItemList.hpp> #include <MeshNodeBoundary.hpp> class BoundaryCondition -- GitLab