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 24 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 26 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 56 of file SolverByElementTypeRegistry.h.

57 {
58 auto const type_idx = std::type_index(typeid(e));
59 auto const it_type_solver = solvers_.find(type_idx);
60
61 if (it_type_solver != solvers_.end())
62 {
63 return *it_type_solver->second;
64 }
66 "You are trying to get a solver for an unknown mesh element "
67 "type "
68 "({:s}).",
69 type_idx.name());
70 }
#define OGS_FATAL(...)
Definition Error.h:19
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 53 of file SolverByElementTypeRegistry.h.

Referenced by getFor().


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