116 {
118 std::size_t const local_matrix_size,
119 IntegrationMethodProvider const& integration_method_provider,
120 ConstructorArgs&&... args)
121 {
122 auto const& integration_method =
123 integration_method_provider
124 .template getIntegrationMethod<MeshElement>(e);
125
126 static_assert(!std::is_abstract_v<LocAsmImpl>,
127 "The given local assembler implementation is an "
128 "abstract class, which cannot be instantiated. Make "
129 "sure to implement all virtual methods!");
130
131 static_assert(
132 std::is_constructible_v<
134 decltype(integration_method), ConstructorArgs&&...>,
135 "The given local assembler implementation is not "
136 "constructible from the provided arguments.");
137
138 return std::make_unique<LocAsmImpl>(
139 e, local_matrix_size, integration_method,
140 std::forward<ConstructorArgs>(args)...);
141 };
142 }
LocalAssemblerImplementation< ShapeFunction, GlobalDim > LocAsmImpl