OGS
CreateLocalAssemblers.h
Go to the documentation of this file.
1
10#pragma once
11
12#include <vector>
13
14#include "BaseLib/Logging.h"
17
18namespace ProcessLib
19{
20namespace LIE
21{
22namespace HydroMechanics
23{
24namespace detail
25{
26template <int DisplacementDim,
27 template <typename, typename, int>
28 class LocalAssemblerMatrixImplementation,
29 template <typename, typename, int>
30 class LocalAssemblerMatrixNearFractureImplementation,
31 template <typename, typename, int>
32 class LocalAssemblerFractureImplementation,
33 typename LocalAssemblerInterface, typename... ExtraCtorArgs>
35 NumLib::LocalToGlobalIndexMap const& dof_table,
36 std::vector<MeshLib::Element*> const& mesh_elements,
37 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
38 NumLib::IntegrationOrder const integration_order,
39 ExtraCtorArgs&&... extra_ctor_args)
40{
41 // Shape matrices initializer
44 LocalAssemblerMatrixImplementation,
45 LocalAssemblerMatrixNearFractureImplementation,
46 LocalAssemblerFractureImplementation,
47 DisplacementDim, ExtraCtorArgs...>;
48
49 DBUG("Create local assemblers.");
50 // Populate the vector of local assemblers.
51 local_assemblers.resize(mesh_elements.size());
52
53 LocalDataInitializer initializer(dof_table, integration_order);
54
55 DBUG("Calling local assembler builder for all mesh elements.");
57 initializer, mesh_elements, local_assemblers,
58 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
59}
60
61} // namespace detail
62
74template <int DisplacementDim,
75 template <typename, typename, int>
76 class LocalAssemblerMatrixImplementation,
77 template <typename, typename, int>
78 class LocalAssemblerMatrixNearFractureImplementation,
79 template <typename, typename, int>
80 class LocalAssemblerFractureImplementation,
81 typename LocalAssemblerInterface, typename... ExtraCtorArgs>
83 std::vector<MeshLib::Element*> const& mesh_elements,
84 NumLib::LocalToGlobalIndexMap const& dof_table,
85 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
86 NumLib::IntegrationOrder const integration_order,
87 ExtraCtorArgs&&... extra_ctor_args)
88{
89 DBUG("Create local assemblers.");
90
92 DisplacementDim, LocalAssemblerMatrixImplementation,
93 LocalAssemblerMatrixNearFractureImplementation,
94 LocalAssemblerFractureImplementation>(
95 dof_table, mesh_elements, local_assemblers, integration_order,
96 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
97}
98
99} // namespace HydroMechanics
100} // namespace LIE
101} // namespace ProcessLib
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:30
void createLocalAssemblers(NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< MeshLib::Element * > const &mesh_elements, std::vector< std::unique_ptr< LocalAssemblerInterface > > &local_assemblers, NumLib::IntegrationOrder const integration_order, ExtraCtorArgs &&... extra_ctor_args)
void createLocalAssemblers(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)
static void transformDereferenced(F const &f, C const &c, Data &data, Args_ &&... args)