OGS
CreateLocalAssemblersTaylorHood.h
Go to the documentation of this file.
1 
11 #pragma once
12 
13 #include <vector>
14 
15 #include "BaseLib/Logging.h"
18 
19 namespace ProcessLib
20 {
21 namespace detail
22 {
33 template <template <typename /*LocalAssemblerInterface*/,
34  template <typename /* shp fct */,
35  typename /* lower order shp fct */,
36  int /* global dim */>
37  class /*LocalAssemblerImplementation*/,
38  int /* global dim */, typename... /*ConstructorArgs*/>
40  int GlobalDim,
41  template <typename /* shp fct */, typename /* lower order shp fct */,
42  int /* global dim */>
43  class LocalAssemblerImplementation,
44  typename LocalAssemblerInterface, typename... ExtraCtorArgs>
46  std::vector<MeshLib::Element*> const& mesh_elements,
47  NumLib::LocalToGlobalIndexMap const& dof_table,
48  std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
49  NumLib::IntegrationOrder const integration_order,
50  ExtraCtorArgs&&... extra_ctor_args)
51 {
53  LocalAssemblerImplementation,
54  GlobalDim, ExtraCtorArgs...>;
55 
56  DBUG("Create local assemblers.");
57 
58  LocAsmFac factory(dof_table, integration_order);
59  local_assemblers.resize(mesh_elements.size());
60 
61  DBUG("Calling local assembler builder for all mesh elements.");
63  factory, mesh_elements, local_assemblers,
64  std::forward<ExtraCtorArgs>(extra_ctor_args)...);
65 }
66 
67 } // namespace detail
68 
69 template <int GlobalDim,
70  template <typename /* shp fct */, typename /* lower order shp fct */,
71  int /* global dim */>
72  class LocalAssemblerImplementation,
73  typename LocalAssemblerInterface, typename... ExtraCtorArgs>
75  std::vector<MeshLib::Element*> const& mesh_elements,
76  NumLib::LocalToGlobalIndexMap const& dof_table,
77  std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
78  NumLib::IntegrationOrder const integration_order,
79  ExtraCtorArgs&&... extra_ctor_args)
80 {
82  LocalAssemblerImplementation,
84  mesh_elements, dof_table, local_assemblers, integration_order,
85  std::forward<ExtraCtorArgs>(extra_ctor_args)...);
86 }
87 
88 template <int GlobalDim,
89  template <typename /* shp fct */, typename /* lower order shp fct */,
90  int /* global dim */>
91  class LocalAssemblerImplementation,
92  typename LocalAssemblerInterface, typename... ExtraCtorArgs>
94  std::vector<MeshLib::Element*> const& mesh_elements,
95  NumLib::LocalToGlobalIndexMap const& dof_table,
96  std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
97  NumLib::IntegrationOrder const integration_order,
98  ExtraCtorArgs&&... extra_ctor_args)
99 {
101  LocalAssemblerFactoryStokes, GlobalDim, LocalAssemblerImplementation,
103  mesh_elements, dof_table, local_assemblers, integration_order,
104  std::forward<ExtraCtorArgs>(extra_ctor_args)...);
105 }
106 
107 } // namespace ProcessLib
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition: Logging.h:29
void createLocalAssemblersTaylorHood(std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface >> &local_assemblers, NumLib::IntegrationOrder const integration_order, ExtraCtorArgs &&... extra_ctor_args)
LocalAssemblerFactoryTaylorHood< 1, 2, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs... > LocalAssemblerFactoryHM
HM processes in OGS are defined for linear and higher order elements.
LocalAssemblerFactoryForDimGreaterEqualN< 1, LocalAssemblerInterface, LocalAssemblerImplementation, 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, NumLib::IntegrationOrder const integration_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, NumLib::IntegrationOrder const integration_order, ExtraCtorArgs &&... extra_ctor_args)
LocalAssemblerFactoryTaylorHood< 2, 2, LocalAssemblerInterface, LocalAssemblerImplementation, GlobalDim, ConstructorArgs... > LocalAssemblerFactoryStokes
Stokes flow in OGS is defined for higher order elements only.
static void transformDereferenced(F const &f, C const &c, Data &data, Args_ &&... args)