76 :
Base{dof_table, integration_method_provider}
77 {
78 if (shapefunction_order < 1 || 2 < shapefunction_order)
79 {
80 OGS_FATAL(
"The given shape function order {:d} is not supported",
81 shapefunction_order);
82 }
83
84 if (shapefunction_order == 1)
85 {
86
87 using EnabledElementTraits =
88 decltype(BaseLib::TMP::filter<EnabledElementTraitsLagrange>(
89 std::declval<HasSuitableDimension>()));
90
91 BaseLib::TMP::foreach<EnabledElementTraits>(
92 [this]<typename ET>(ET*)
93 {
94 using MeshElement = typename ET::Element;
95
96
97 using LowerOrderShapeFunction =
98 typename ET::LowerOrderShapeFunction;
100 LocAsmBuilderFactory<LowerOrderShapeFunction>::
101 template create<MeshElement>();
102 });
103 }
104 else if (shapefunction_order == 2)
105 {
106
107 using EnabledElementTraits =
108 decltype(BaseLib::TMP::filter<EnabledElementTraitsLagrange>(
109 std::declval<Is2ndOrderElementOfSuitableDimension>()));
110
111 BaseLib::TMP::foreach<EnabledElementTraits>(
112 [this]<typename ET>(ET*)
113 {
114 using MeshElement = typename ET::Element;
115 using ShapeFunction2ndOrder = typename ET::ShapeFunction;
117 LocAsmBuilderFactory<ShapeFunction2ndOrder>::
118 template create<MeshElement>();
119 });
120 }
121 }
ProcessLib::GenericLocalAssemblerFactory< LocalAssemblerInterface, NumLib::DefaultIntegrationMethodProvider, ConstructorArgs... > Base
std::unordered_map< std::type_index, LocAsmBuilder > _builders
Mapping of element types to local assembler builders.