diff --git a/src/mesh/ItemOfItemType.hpp b/src/mesh/ItemOfItemType.hpp index 8d27a599bf80fd754ffb73b2756b03ce4193c1b0..c6ec3cf1696ab41f558119354ae0bfdfb7f1c6f3 100644 --- a/src/mesh/ItemOfItemType.hpp +++ b/src/mesh/ItemOfItemType.hpp @@ -30,4 +30,35 @@ using CellOfNode = ItemOfItemType<ItemType::cell, ItemType::node>; using FaceOfNode = ItemOfItemType<ItemType::face, ItemType::node>; using EdgeOfNode = ItemOfItemType<ItemType::edge, ItemType::node>; +template <ItemType sub_item_type, ItemType item_type> +constexpr inline int item_of_item_type_index; + +template <> +constexpr inline int item_of_item_type_index<ItemType::face, ItemType::cell> = 0; +template <> +constexpr inline int item_of_item_type_index<ItemType::edge, ItemType::cell> = 1; +template <> +constexpr inline int item_of_item_type_index<ItemType::node, ItemType::cell> = 2; + +template <> +constexpr inline int item_of_item_type_index<ItemType::cell, ItemType::face> = 3; +template <> +constexpr inline int item_of_item_type_index<ItemType::edge, ItemType::face> = 4; +template <> +constexpr inline int item_of_item_type_index<ItemType::node, ItemType::face> = 5; + +template <> +constexpr inline int item_of_item_type_index<ItemType::cell, ItemType::edge> = 6; +template <> +constexpr inline int item_of_item_type_index<ItemType::face, ItemType::edge> = 7; +template <> +constexpr inline int item_of_item_type_index<ItemType::node, ItemType::edge> = 8; + +template <> +constexpr inline int item_of_item_type_index<ItemType::cell, ItemType::node> = 9; +template <> +constexpr inline int item_of_item_type_index<ItemType::face, ItemType::node> = 10; +template <> +constexpr inline int item_of_item_type_index<ItemType::edge, ItemType::node> = 11; + #endif // ITEM_OF_ITEM_TYPE_HPP