15#ifndef OGS_MAX_ELEMENT_DIM
16static_assert(
false,
"The macro OGS_MAX_ELEMENT_DIM is undefined.");
19#ifndef OGS_MAX_ELEMENT_ORDER
20static_assert(
false,
"The macro OGS_MAX_ELEMENT_ORDER is undefined.");
28#ifdef OGS_ENABLE_ELEMENT_SIMPLEX
35#ifdef OGS_ENABLE_ELEMENT_CUBOID
42#ifdef OGS_ENABLE_ELEMENT_PRISM
49#ifdef OGS_ENABLE_ELEMENT_PYRAMID
65using ZeroOrOneD = std::tuple<MeshLib::Point, MeshLib::Line, MeshLib::Line3>;
71 std::tuple<MeshLib::Tri, MeshLib::Tri6, MeshLib::Tet, MeshLib::Tet10>;
73using Prisms = std::tuple<MeshLib::Prism, MeshLib::Prism15>;
75using Pyramids = std::tuple<MeshLib::Pyramid, MeshLib::Pyramid13>;
77using Triangles = std::tuple<MeshLib::Tri, MeshLib::Tri6>;
79using Quads = std::tuple<MeshLib::Quad, MeshLib::Quad8, MeshLib::Quad9>;
85template <
typename Elements,
typename Element>
88 return BaseLib::TMP::contains<Elements, Element>() && is_group_enabled;
93 using Element =
typename ElementTraits::Element;
95 if constexpr (ElementTraits::ShapeFunction::ORDER > OGS_MAX_ELEMENT_ORDER)
99 if constexpr (Element::dimension > OGS_MAX_ELEMENT_DIM)
104 return isElementEnabledImpl<ZeroOrOneD, Element>(
true) ||
106 isElementEnabledImpl<Simplices, Element>(
109 isElementEnabledImpl<Pyramids, Element>(
120 decltype(BaseLib::TMP::filter<NumLib::AllElementTraitsLagrange>(
TemplateElement< MeshLib::QuadRule8 > Quad8
TemplateElement< MeshLib::QuadRule9 > Quad9
TemplateElement< MeshLib::HexRule8 > Hex
TemplateElement< MeshLib::QuadRule4 > Quad
std::tuple< MeshLib::Tri, MeshLib::Tri6 > Triangles
constexpr bool isElementEnabledImpl(bool is_group_enabled)
std::tuple< MeshLib::Tri, MeshLib::Tri6, MeshLib::Tet, MeshLib::Tet10 > Simplices
std::tuple< MeshLib::Point, MeshLib::Line, MeshLib::Line3 > ZeroOrOneD
static constexpr bool enable_element_type_tri
std::tuple< MeshLib::Quad, MeshLib::Quad8, MeshLib::Quad9 > Quads
std::tuple< MeshLib::Quad, MeshLib::Quad8, MeshLib::Quad9, MeshLib::Hex, MeshLib::Hex20 > Cuboids
static constexpr bool enable_element_type_cuboid
auto constexpr isElementEnabled
static constexpr bool enable_element_type_pyramid
static constexpr bool enable_element_type_simplex
std::tuple< MeshLib::Prism, MeshLib::Prism15 > Prisms
static constexpr bool enable_element_type_prism
std::tuple< MeshLib::Pyramid, MeshLib::Pyramid13 > Pyramids
static constexpr bool enable_element_type_quad
decltype(BaseLib::TMP::filter< NumLib::AllElementTraitsLagrange >(detail::isElementEnabled)) EnabledElementTraitsLagrange