18template <
typename ShapeFunction,
19 typename LowerOrderShapeFunction,
20 typename LocalAssemblerInterface,
25 class LocalAssemblerImplementation,
27 typename... ConstructorArgs>
36 typename ShapeFunction::MeshElement>::IntegrationMethod;
38 using LocAsmImpl = LocalAssemblerImplementation<ShapeFunction,
39 LowerOrderShapeFunction,
51 std::size_t
const local_matrix_size,
52 ConstructorArgs&&... args)
54 return std::make_unique<LocAsmImpl>(
55 e, local_matrix_size, std::forward<ConstructorArgs>(args)...);
71template <
int MinShapeFctOrder,
73 typename LocalAssemblerInterface,
78 class LocalAssemblerImplementation,
80 typename... ConstructorArgs>
89 template <
typename ShapeFunction,
typename LowerOrderShapeFunction>
92 LowerOrderShapeFunction,
94 LocalAssemblerImplementation,
100 template <
typename ElementTraits>
103 if constexpr (GlobalDim < ElementTraits::ShapeFunction::DIM)
108 if constexpr (ElementTraits::Element::dimension < MinElementDim)
113 return ElementTraits::ShapeFunction::ORDER >= MinShapeFctOrder;
122 using EnabledElementTraits =
123 decltype(BaseLib::TMP::filter<EnabledElementTraitsLagrange>(
124 std::declval<IsElementEnabled>()));
126 BaseLib::TMP::foreach<EnabledElementTraits>(
127 [
this]<
typename ET>(ET*)
129 using MeshElement =
typename ET::Element;
130 using ShapeFunction =
typename ET::ShapeFunction;
131 using LowerOrderShapeFunction =
132 typename ET::LowerOrderShapeFunction;
134 Base::_builders[std::type_index(
typeid(MeshElement))] =
136 LowerOrderShapeFunction>::create();
142template <
typename LocalAssemblerInterface,
143 template <
typename,
typename,
typename,
int>
144 class LocalAssemblerImplementation,
146 typename... ConstructorArgs>
151 LocalAssemblerImplementation,
157 template <
typename,
typename,
typename,
int>
158 class LocalAssemblerImplementation,
160 typename... ConstructorArgs>
165 LocalAssemblerImplementation,
typename GLAF::LocAsmIntfPtr LocAsmIntfPtr
static LocAsmBuilder create()
LocalAssemblerBuilderFactoryTaylorHood()=delete
typename GLAF::LocAsmBuilder LocAsmBuilder
typename NumLib::GaussLegendreIntegrationPolicy< typename ShapeFunction::MeshElement >::IntegrationMethod IntegrationMethod
LocalAssemblerImplementation< ShapeFunction, LowerOrderShapeFunction, IntegrationMethod, GlobalDim > LocAsmImpl
LocalAssemblerFactoryTaylorHood(NumLib::LocalToGlobalIndexMap const &dof_table)
std::unique_ptr< LocalAssemblerInterface > LocAsmIntfPtr
std::function< LocAsmIntfPtr(MeshLib::Element const &e, std::size_t const local_matrix_size, ConstructorArgs &&...)> LocAsmBuilder
constexpr bool operator()(ElementTraits *) const