OGS
ApplicationUtils::SolverByElementTypeRegistry< SolverInterface, SolverImplementationTplTpl > Class Template Referencefinal

Detailed Description

template<typename SolverInterface, template< typename ShapeFunction > class SolverImplementationTplTpl>
class ApplicationUtils::SolverByElementTypeRegistry< SolverInterface, SolverImplementationTplTpl >

Instantiates a given solver interface for all mesh element types (of dimension >= 1) and provides the correct solver implementation for a given mesh element.

Definition at line 30 of file SolverByElementTypeRegistry.h.

#include <SolverByElementTypeRegistry.h>

Static Public Member Functions

static SolverInterface const & getFor (MeshLib::Element const &e)

Private Types

using SolverIntfPtr = std::unique_ptr<SolverInterface>

Static Private Member Functions

static std::unordered_map< std::type_index, SolverIntfPtrinitSolvers ()

Static Private Attributes

static const std::unordered_map< std::type_index, SolverIntfPtrsolvers_

Member Typedef Documentation

◆ SolverIntfPtr

template<typename SolverInterface, template< typename ShapeFunction > class SolverImplementationTplTpl>
using ApplicationUtils::SolverByElementTypeRegistry< SolverInterface, SolverImplementationTplTpl >::SolverIntfPtr = std::unique_ptr<SolverInterface>
private

Definition at line 32 of file SolverByElementTypeRegistry.h.

Member Function Documentation

◆ getFor()

template<typename SolverInterface, template< typename ShapeFunction > class SolverImplementationTplTpl>
SolverInterface const & ApplicationUtils::SolverByElementTypeRegistry< SolverInterface, SolverImplementationTplTpl >::getFor ( MeshLib::Element const & e)
inlinestatic

Definition at line 62 of file SolverByElementTypeRegistry.h.

63 {
64 auto const type_idx = std::type_index(typeid(e));
65 auto const it_type_solver = solvers_.find(type_idx);
66
67 if (it_type_solver != solvers_.end())
68 {
69 return *it_type_solver->second;
70 }
72 "You are trying to get a solver for an unknown mesh element "
73 "type "
74 "({:s}).",
75 type_idx.name());
76 }
#define OGS_FATAL(...)
Definition Error.h:26
static const std::unordered_map< std::type_index, SolverIntfPtr > solvers_

References OGS_FATAL, and solvers_.

◆ initSolvers()

template<typename SolverInterface, template< typename ShapeFunction > class SolverImplementationTplTpl>
std::unordered_map< std::type_index, SolverIntfPtr > ApplicationUtils::SolverByElementTypeRegistry< SolverInterface, SolverImplementationTplTpl >::initSolvers ( )
inlinestaticprivate

Member Data Documentation

◆ solvers_

template<typename SolverInterface, template< typename ShapeFunction > class SolverImplementationTplTpl>
const std::unordered_map<std::type_index, SolverIntfPtr> ApplicationUtils::SolverByElementTypeRegistry< SolverInterface, SolverImplementationTplTpl >::solvers_
staticprivate

Definition at line 59 of file SolverByElementTypeRegistry.h.

Referenced by getFor().


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