28 std::vector<MeshLib::Element*> const& mesh_elements,
30 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
31 ProviderOrOrder const& provider_or_order,
32 ExtraCtorArgs&&... extra_ctor_args)
35 GlobalDim == 1 || GlobalDim == 2 || GlobalDim == 3,
36 "Meshes with dimension greater than three are not supported.");
38 DBUG(
"Create local assemblers.");
40 auto const& integration_method_provider =
41 getIntegrationMethodProvider(provider_or_order);
43 using IntegrationMethodProvider =
44 std::remove_cvref_t<
decltype(integration_method_provider)>;
47 IntegrationMethodProvider, GlobalDim, ExtraCtorArgs...>;
49 LocAsmFac factory(dof_table, integration_method_provider);
50 local_assemblers.resize(mesh_elements.size());
52 DBUG(
"Calling local assembler builder for all mesh elements.");
54 factory, mesh_elements, local_assemblers,
55 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
75 const unsigned dimension,
76 std::vector<MeshLib::Element*> const& mesh_elements,
78 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
79 ProviderOrOrder const& provider_or_order,
80 ExtraCtorArgs&&... extra_ctor_args)
82 DBUG(
"Create local assemblers.");
87 createLocalAssemblers<1, LocalAssemblerImplementation>(
88 mesh_elements, dof_table, local_assemblers, provider_or_order,
89 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
92 createLocalAssemblers<2, LocalAssemblerImplementation>(
93 mesh_elements, dof_table, local_assemblers, provider_or_order,
94 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
97 createLocalAssemblers<3, LocalAssemblerImplementation>(
98 mesh_elements, dof_table, local_assemblers, provider_or_order,
99 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
103 "Meshes with dimension greater than three are not supported.");
void createLocalAssemblers(std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface > > &local_assemblers, ProviderOrOrder const &provider_or_order, ExtraCtorArgs &&... extra_ctor_args)