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 SmallDeformation
23{
24namespace detail
25{
26template <int DisplacementDim,
27 template <typename, int> class LocalAssemblerMatrixImplementation,
28 template <typename, int>
29 class LocalAssemblerMatrixNearFractureImplementation,
30 template <typename, int> class LocalAssemblerFractureImplementation,
31 typename LocalAssemblerInterface, typename... ExtraCtorArgs>
33 NumLib::LocalToGlobalIndexMap const& dof_table,
34 std::vector<MeshLib::Element*> const& mesh_elements,
35 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
36 NumLib::IntegrationOrder const integration_order,
37 ExtraCtorArgs&&... extra_ctor_args)
38{
39 // Shape matrices initializer
42 LocalAssemblerMatrixImplementation,
43 LocalAssemblerMatrixNearFractureImplementation,
44 LocalAssemblerFractureImplementation,
45 DisplacementDim, ExtraCtorArgs...>;
46
47 DBUG("Create local assemblers.");
48 // Populate the vector of local assemblers.
49 local_assemblers.resize(mesh_elements.size());
50
51 LocalDataInitializer initializer(dof_table, integration_order);
52
53 DBUG("Calling local assembler builder for all mesh elements.");
55 initializer, mesh_elements, local_assemblers,
56 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
57}
58
59} // namespace detail
60
72template <int DisplacementDim,
73 template <typename, int> class LocalAssemblerMatrixImplementation,
74 template <typename, int>
75 class LocalAssemblerMatrixNearFractureImplementation,
76 template <typename, int> class LocalAssemblerFractureImplementation,
77 typename LocalAssemblerInterface, typename... ExtraCtorArgs>
79 std::vector<MeshLib::Element*> const& mesh_elements,
80 NumLib::LocalToGlobalIndexMap const& dof_table,
81 std::vector<std::unique_ptr<LocalAssemblerInterface>>& local_assemblers,
82 NumLib::IntegrationOrder const integration_order,
83 ExtraCtorArgs&&... extra_ctor_args)
84{
85 DBUG("Create local assemblers.");
86
88 DisplacementDim, LocalAssemblerMatrixImplementation,
89 LocalAssemblerMatrixNearFractureImplementation,
90 LocalAssemblerFractureImplementation>(
91 dof_table, mesh_elements, local_assemblers, integration_order,
92 std::forward<ExtraCtorArgs>(extra_ctor_args)...);
93}
94
95} // namespace SmallDeformation
96} // namespace LIE
97} // 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)