34template <
template <
typename ,
43 template <typename , typename ,
45 class LocalAssemblerImplementation,
46 typename LocalAssemblerInterface,
47 IntegrationMethodProviderOrIntegrationOrder ProviderOrOrder,
48 typename... ExtraCtorArgs>
50 std::vector<MeshLib::Element*> const& mesh_elements,
52 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
53 ProviderOrOrder const& provider_or_order,
54 ExtraCtorArgs&&... extra_ctor_args)
56 DBUG(
"Create local assemblers.");
58 auto const& integration_method_provider =
59 getIntegrationMethodProvider(provider_or_order);
61 using IntegrationMethodProvider =
62 std::remove_cvref_t<
decltype(integration_method_provider)>;
65 IntegrationMethodProvider, GlobalDim, ExtraCtorArgs...>;
67 LocAsmFac factory(dof_table, integration_method_provider);
68 local_assemblers.resize(mesh_elements.size());
70 DBUG(
"Calling local assembler builder for all mesh elements.");
72 factory, mesh_elements, local_assemblers,
73 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
78template <
int GlobalDim,
79 template <
typename ,
typename ,
81 class LocalAssemblerImplementation,
82 typename LocalAssemblerInterface,
83 IntegrationMethodProviderOrIntegrationOrder ProviderOrOrder,
84 typename... ExtraCtorArgs>
86 std::vector<MeshLib::Element*> const& mesh_elements,
88 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
89 ProviderOrOrder const& provider_or_order,
90 ExtraCtorArgs&&... extra_ctor_args)
93 LocalAssemblerImplementation,
95 mesh_elements, dof_table, local_assemblers, provider_or_order,
96 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
99template <
int GlobalDim,
100 template <
typename ,
typename ,
102 class LocalAssemblerImplementation,
103 typename LocalAssemblerInterface,
104 IntegrationMethodProviderOrIntegrationOrder ProviderOrOrder,
105 typename... ExtraCtorArgs>
107 std::vector<MeshLib::Element*> const& mesh_elements,
109 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
110 ProviderOrOrder const& provider_or_order,
111 ExtraCtorArgs&&... extra_ctor_args)
113 detail::createLocalAssemblersTaylorHood<
116 mesh_elements, dof_table, local_assemblers, provider_or_order,
117 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
void createLocalAssemblersTaylorHood(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)
void createLocalAssemblersStokes(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)
LocalAssemblerFactoryForDimGreaterEqualN< 1, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs... > LocalAssemblerFactory
By default processes in OGS are defined in 1D, 2D and 3D.
void createLocalAssemblersHM(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)
static void transformDereferenced(F const &f, C const &c, Data &data, Args_ &&... args)