14template <
typename LocalAssemblerInterface,
15 template <
typename ,
int >
16 class LocalAssemblerImplementation,
18 typename... ConstructorArgs>
21 LocalAssemblerInterface,
22 NumLib::DefaultIntegrationMethodProvider,
30 template <
typename ShapeFunction>
34 LocalAssemblerImplementation,
41 template <
typename ElementTraits>
44 return GlobalDim >= ElementTraits::ShapeFunction::DIM;
50 template <
typename ElementTraits>
53 if constexpr (GlobalDim < ElementTraits::ShapeFunction::DIM)
57 return ElementTraits::ShapeFunction::ORDER == 2 ||
60 typename ElementTraits::Element>;
67 integration_method_provider,
68 const unsigned shapefunction_order)
69 :
Base{dof_table, integration_method_provider}
71 if (shapefunction_order < 1 || 2 < shapefunction_order)
73 OGS_FATAL(
"The given shape function order {:d} is not supported",
77 if (shapefunction_order == 1)
80 using EnabledElementTraits =
82 std::declval<HasSuitableDimension>()));
85 [
this]<
typename ET>(ET*)
87 using MeshElement =
typename ET::Element;
90 using LowerOrderShapeFunction =
91 typename ET::LowerOrderShapeFunction;
94 template create<MeshElement>();
97 else if (shapefunction_order == 2)
100 using EnabledElementTraits =
102 std::declval<Is2ndOrderElementOfSuitableDimension>()));
105 [
this]<
typename ET>(ET*)
107 using MeshElement =
typename ET::Element;
108 using ShapeFunction2ndOrder =
typename ET::ShapeFunction;
111 template create<MeshElement>();
ProcessLib::GenericLocalAssemblerFactory< LocalAssemblerInterface, NumLib::DefaultIntegrationMethodProvider, ConstructorArgs... > Base
ProcessLib::LocalAssemblerBuilderFactory< ShapeFunction, LocalAssemblerInterface, LocalAssemblerImplementation, NumLib::DefaultIntegrationMethodProvider, GlobalDim, ConstructorArgs... > LocAsmBuilderFactory
LocalAssemblerFactory(NumLib::LocalToGlobalIndexMap const &dof_table, NumLib::DefaultIntegrationMethodProvider const &integration_method_provider, const unsigned shapefunction_order)
void foreach(Function &&f)
decltype(auto) filter(Pred pred)
TemplateElement< PointRule1 > Point
constexpr bool operator()(ElementTraits *) const
constexpr bool operator()(ElementTraits *) const
std::unordered_map< std::type_index, LocAsmBuilder > _builders