20 template <
int GlobalDim,
21 template <
typename,
typename,
int>
class LocalAssemblerImplementation,
22 typename LocalAssemblerInterface,
typename... ExtraCtorArgs>
25 const unsigned shapefunction_order,
26 std::vector<MeshLib::Element*>
const& mesh_elements,
27 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
28 ExtraCtorArgs&&... extra_ctor_args)
31 GlobalDim == 1 || GlobalDim == 2 || GlobalDim == 3,
32 "Meshes with dimension greater than three are not supported.");
36 LocalAssemblerImplementation, GlobalDim,
39 DBUG(
"Create local assemblers.");
41 local_assemblers.resize(mesh_elements.size());
45 DBUG(
"Calling local assembler builder for all mesh elements.");
47 initializer, mesh_elements, local_assemblers,
48 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
62 template <
template <
typename,
typename,
int>
class LocalAssemblerImplementation,
63 typename LocalAssemblerInterface,
typename... ExtraCtorArgs>
65 const unsigned dimension,
66 std::vector<MeshLib::Element*>
const& mesh_elements,
68 const unsigned shapefunction_order,
69 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
70 ExtraCtorArgs&&... extra_ctor_args)
72 DBUG(
"Create local assemblers.");
77 createLocalAssemblers<1, LocalAssemblerImplementation>(
78 dof_table, shapefunction_order, mesh_elements, local_assemblers,
79 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
82 createLocalAssemblers<2, LocalAssemblerImplementation>(
83 dof_table, shapefunction_order, mesh_elements, local_assemblers,
84 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
87 createLocalAssemblers<3, LocalAssemblerImplementation>(
88 dof_table, shapefunction_order, mesh_elements, local_assemblers,
89 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
93 "Meshes with dimension greater than three are not supported.");
void DBUG(char const *fmt, Args const &... args)
void createLocalAssemblers(NumLib::LocalToGlobalIndexMap const &dof_table, const unsigned shapefunction_order, std::vector< MeshLib::Element * > const &mesh_elements, std::vector< std::unique_ptr< LocalAssemblerInterface >> &local_assemblers, ExtraCtorArgs &&... extra_ctor_args)
static void transformDereferenced(F const &f, C const &c, Data &data, Args_ &&... args)