37template <
typename ShapeFunction,
typename Enabled =
void>
40 static_assert(ShapeFunction::ORDER < 2,
41 "Only shape functions of order 1 should use this fallback. "
42 "Order 0 is a special case for 0D elements.");
43 using type = ShapeFunction;
46template <
typename ShapeFunction>
49 std::void_t<typename NumLib::LowerDim<ShapeFunction>::type>>
54template <
typename ShapeFunction_>
63template <
typename Element>
66#define OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE(ELEMENT, SHAPE_FUNCTION) \
68 struct ElementTraitsLagrange<MeshLib::ELEMENT> \
69 : detail::ShapeFunctionTraits<NumLib::SHAPE_FUNCTION> \
71 using Element = MeshLib::ELEMENT; \
73 std::is_same_v<Element, typename ShapeFunction::MeshElement>); \
98#undef OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
Shape function for a point element in natural coordinates.
typename Map< MapFromTypeToType, List >::type Map_t
TemplateElement< MeshLib::PyramidRule13 > Pyramid13
TemplateElement< MeshLib::QuadRule8 > Quad8
TemplateElement< MeshLib::TetRule4 > Tet
TemplateElement< MeshLib::LineRule3 > Line3
TemplateElement< MeshLib::TriRule3 > Tri
TemplateElement< MeshLib::QuadRule9 > Quad9
TemplateElement< MeshLib::PrismRule6 > Prism
TemplateElement< MeshLib::PyramidRule5 > Pyramid
TemplateElement< PointRule1 > Point
TemplateElement< MeshLib::HexRule20 > Hex20
TemplateElement< MeshLib::TriRule6 > Tri6
TemplateElement< MeshLib::TetRule10 > Tet10
TemplateElement< MeshLib::PrismRule15 > Prism15
TemplateElement< MeshLib::HexRule8 > Hex
TemplateElement< MeshLib::QuadRule4 > Quad
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE(Point, ShapePoint1)
BaseLib::TMP::Map_t< ElementTraitsLagrange, MeshLib::AllElementTypes > AllElementTraitsLagrange
typename NumLib::LowerDim< ShapeFunction >::type type
typename LowerOrderShapeFunctionOrSame< ShapeFunction >::type LowerOrderShapeFunction
ShapeFunction_ ShapeFunction