27template <
template <
typename ,
36 template <typename , typename ,
38 class LocalAssemblerImplementation,
39 typename LocalAssemblerInterface,
40 IntegrationMethodProviderOrIntegrationOrder ProviderOrOrder,
41 typename... ExtraCtorArgs>
43 std::vector<MeshLib::Element*> const& mesh_elements,
45 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
46 ProviderOrOrder const& provider_or_order,
47 ExtraCtorArgs&&... extra_ctor_args)
49 DBUG(
"Create local assemblers.");
51 auto const& integration_method_provider =
52 getIntegrationMethodProvider(provider_or_order);
54 using IntegrationMethodProvider =
55 std::remove_cvref_t<
decltype(integration_method_provider)>;
58 IntegrationMethodProvider, GlobalDim, ExtraCtorArgs...>;
60 LocAsmFac factory(dof_table, integration_method_provider);
61 local_assemblers.resize(mesh_elements.size());
63 DBUG(
"Calling local assembler builder for all mesh elements.");
65 factory, mesh_elements, local_assemblers,
66 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
71template <
int GlobalDim,
72 template <
typename ,
typename ,
74 class LocalAssemblerImplementation,
75 typename LocalAssemblerInterface,
76 IntegrationMethodProviderOrIntegrationOrder ProviderOrOrder,
77 typename... ExtraCtorArgs>
79 std::vector<MeshLib::Element*> const& mesh_elements,
81 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
82 ProviderOrOrder const& provider_or_order,
83 ExtraCtorArgs&&... extra_ctor_args)
86 LocalAssemblerImplementation,
88 mesh_elements, dof_table, local_assemblers, provider_or_order,
89 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
92template <
int GlobalDim,
93 template <
typename ,
typename ,
95 class LocalAssemblerImplementation,
96 typename LocalAssemblerInterface,
97 IntegrationMethodProviderOrIntegrationOrder ProviderOrOrder,
98 typename... ExtraCtorArgs>
100 std::vector<MeshLib::Element*> const& mesh_elements,
102 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
103 ProviderOrOrder const& provider_or_order,
104 ExtraCtorArgs&&... extra_ctor_args)
109 mesh_elements, dof_table, local_assemblers, provider_or_order,
110 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)
LocalAssemblerFactoryTaylorHood< 2, 2, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs... > LocalAssemblerFactoryStokes
Stokes flow in OGS is defined for higher order elements only.
LocalAssemblerFactoryTaylorHood< 1, 2, LocalAssemblerInterface, LocalAssemblerImplementation, IntegrationMethodProvider, GlobalDim, ConstructorArgs... > LocalAssemblerFactoryHM
HM processes in OGS are defined for linear and higher order elements.
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)