diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index 725c69dba165cf69890a36428c6f2f035c1e27f1..24d9ef656f0cdd0746db0ee2f27881ce5244c8b0 100644 --- a/src/mesh/Connectivity.hpp +++ b/src/mesh/Connectivity.hpp @@ -570,6 +570,41 @@ class Connectivity final : public IConnectivity return m_node_local_numbers_in_their_edges; } + template <typename ItemOfItemType> + PUGS_INLINE SubItemValuePerItem<const uint16_t, ItemOfItemType> + itemLocalNumbersInTheirSubItems() const + { + if constexpr (std::is_same_v<ItemOfItemType, NodeOfCell>) { + return cellLocalNumbersInTheirNodes(); + } else if constexpr (std::is_same_v<ItemOfItemType, EdgeOfCell>) { + return cellLocalNumbersInTheirEdges(); + } else if constexpr (std::is_same_v<ItemOfItemType, FaceOfCell>) { + return cellLocalNumbersInTheirFaces(); + } else if constexpr (std::is_same_v<ItemOfItemType, NodeOfFace> and (Dimension > 1)) { + return faceLocalNumbersInTheirNodes(); + } else if constexpr (std::is_same_v<ItemOfItemType, EdgeOfFace> and (Dimension > 2)) { + return faceLocalNumbersInTheirEdges(); + } else if constexpr (std::is_same_v<ItemOfItemType, CellOfFace>) { + return faceLocalNumbersInTheirCells(); + } else if constexpr (std::is_same_v<ItemOfItemType, NodeOfEdge> and (Dimension > 1)) { + return edgeLocalNumbersInTheirNodes(); + } else if constexpr (std::is_same_v<ItemOfItemType, FaceOfEdge> and (Dimension > 2)) { + return edgeLocalNumbersInTheirFaces()(); + } else if constexpr (std::is_same_v<ItemOfItemType, CellOfEdge>) { + return edgeLocalNumbersInTheirCells(); + } else if constexpr (std::is_same_v<ItemOfItemType, EdgeOfNode> and (Dimension > 1)) { + return nodeLocalNumbersInTheirEdges(); + } else if constexpr (std::is_same_v<ItemOfItemType, FaceOfNode> and (Dimension > 1)) { + return nodeLocalNumbersInTheirFaces()(); + } else if constexpr (std::is_same_v<ItemOfItemType, CellOfNode>) { + return nodeLocalNumbersInTheirCells(); + } else { + // LCOV_EXCL_START + throw UnexpectedError("invalid ItemOfItemType"); + // LCOV_EXCL_STOP + } + } + template <ItemType item_type> size_t numberOfRefItemList() const