OGS
ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs > Class Template Referencefinal

Detailed Description

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
class ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >

The LocalDataInitializer is a functor creating a local assembler data with corresponding to the mesh element type shape functions and calling initialization of the new local assembler data. For example for MeshLib::Quad a local assembler data with template argument NumLib::ShapeQuad4 is created.

Definition at line 35 of file HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h.

#include <LocalDataInitializer.h>

Collaboration diagram for ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >:
[legend]

Classes

struct  IsNDElement

Public Types

using LADataIntfPtr = std::unique_ptr<LocalAssemblerInterface>

Public Member Functions

 LocalDataInitializer (NumLib::LocalToGlobalIndexMap const &dof_table, NumLib::IntegrationOrder const integration_order)
LADataIntfPtr operator() (std::size_t const, MeshLib::Element const &mesh_item, std::unordered_map< std::size_t, BHE::BHETypes * > const &element_to_bhe_map, ConstructorArgs &&... args) const

Private Types

using LADataBuilder

Static Private Member Functions

template<typename ShapeFunction>
static LADataBuilder makeLocalAssemblerBuilder (NumLib::IntegrationOrder const integration_order)
template<typename ShapeFunction>
static LADataBuilder makeLocalAssemblerBuilderBHE (NumLib::IntegrationOrder const integration_order)

Private Attributes

std::unordered_map< std::type_index, LADataBuilder_builder
 Mapping of element types to local assembler constructors.
NumLib::LocalToGlobalIndexMap const & _dof_table

Member Typedef Documentation

◆ LADataBuilder

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
using ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >::LADataBuilder
private
Initial value:
std::function<LADataIntfPtr(
MeshLib::Element const& e,
std::unordered_map<std::size_t, BHE::BHETypes*> const&
element_to_bhe_map,
ConstructorArgs&&...)>

Definition at line 119 of file HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h.

◆ LADataIntfPtr

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
using ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >::LADataIntfPtr = std::unique_ptr<LocalAssemblerInterface>

Constructor & Destructor Documentation

◆ LocalDataInitializer()

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >::LocalDataInitializer ( NumLib::LocalToGlobalIndexMap const & dof_table,
NumLib::IntegrationOrder const integration_order )
inlineexplicit

Definition at line 50 of file HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h.

54 {
55 // 3D soil elements
59
61 [this, integration_order]<typename ET>(ET*)
62 {
63 using MeshElement = typename ET::Element;
64 using ShapeFunction = typename ET::ShapeFunction;
65
68 });
69
70 // 1D BHE elements
74
76 [this, integration_order]<typename ET>(ET*)
77 {
78 using MeshElement = typename ET::Element;
79 using ShapeFunction = typename ET::ShapeFunction;
80
84 });
85 }
static LADataBuilder makeLocalAssemblerBuilderBHE(NumLib::IntegrationOrder const integration_order)
static LADataBuilder makeLocalAssemblerBuilder(NumLib::IntegrationOrder const integration_order)
std::unordered_map< std::type_index, LADataBuilder > _builder
Mapping of element types to local assembler constructors.
void foreach(Function &&f)
Definition TMP.h:150
decltype(auto) filter(Pred pred)
Definition TMP.h:71

References _builder, _dof_table, BaseLib::TMP::filter(), BaseLib::TMP::foreach(), makeLocalAssemblerBuilder(), and makeLocalAssemblerBuilderBHE().

Member Function Documentation

◆ makeLocalAssemblerBuilder()

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
template<typename ShapeFunction>
LADataBuilder ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >::makeLocalAssemblerBuilder ( NumLib::IntegrationOrder const integration_order)
inlinestaticprivate

Definition at line 126 of file HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h.

128 {
129 return [integration_order](
130 MeshLib::Element const& e,
132 /* unused */,
134 {
138
139 if (e.getDimension() == 3) // soil elements
140 {
144 }
145
146 return nullptr;
147 };
148 }

References MeshLib::Element::getDimension().

Referenced by LocalDataInitializer().

◆ makeLocalAssemblerBuilderBHE()

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
template<typename ShapeFunction>
LADataBuilder ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >::makeLocalAssemblerBuilderBHE ( NumLib::IntegrationOrder const integration_order)
inlinestaticprivate

Definition at line 151 of file HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h.

153 {
154 return [integration_order](
155 MeshLib::Element const& e,
159 {
163
164 auto& bhe = *element_to_bhe_map.at(e.getID());
165
167 {
168 return LADataIntfPtr{
172 }
173
175 {
176 return LADataIntfPtr{
180 }
181
183 {
184 return LADataIntfPtr{
188 }
189
191 {
192 return LADataIntfPtr{
196 }
197
199 {
200 return LADataIntfPtr{
204 }
205 OGS_FATAL(
206 "Trying to create local assembler for an unknown BHE type.");
207 };
208 }
#define OGS_FATAL(...)
Definition Error.h:19

References MeshLib::Element::getID(), and OGS_FATAL.

Referenced by LocalDataInitializer().

◆ operator()()

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
LADataIntfPtr ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >::operator() ( std::size_t const ,
MeshLib::Element const & mesh_item,
std::unordered_map< std::size_t, BHE::BHETypes * > const & element_to_bhe_map,
ConstructorArgs &&... args ) const
inline

Returns data pointer to the newly created local assembler data.

Attention
The index id is not necessarily the mesh item's id. Especially when having multiple meshes it will differ from the latter.

Definition at line 92 of file HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h.

98 {
99 auto const type_idx = std::type_index(typeid(mesh_item));
100 auto const it = _builder.find(type_idx);
101
102 if (it == _builder.end())
103 {
104 OGS_FATAL(
105 "You are trying to build a local assembler for an unknown mesh "
106 "element type ({:s})."
107 " Maybe you have disabled this mesh element type in your build "
108 "configuration, or a mesh element order does not match shape "
109 "function order given in the project file.",
110 type_idx.name());
111 }
112
113 return it->second(mesh_item,
116 }

References _builder, and OGS_FATAL.

Member Data Documentation

◆ _builder

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
std::unordered_map<std::type_index, LADataBuilder> ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >::_builder
private

Mapping of element types to local assembler constructors.

Definition at line 211 of file HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h.

Referenced by LocalDataInitializer(), and operator()().

◆ _dof_table

template<typename LocalAssemblerInterface, template< typename > class LocalAssemblerDataSoil, template< typename, typename > class LocalAssemblerDataBHE, typename... ConstructorArgs>
NumLib::LocalToGlobalIndexMap const& ProcessLib::HeatTransportBHE::LocalDataInitializer< LocalAssemblerInterface, LocalAssemblerDataSoil, LocalAssemblerDataBHE, ConstructorArgs >::_dof_table
private

The documentation for this class was generated from the following file: