|
dune-istl 2.11
|
Loading...
Searching...
No Matches
solverfactory.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
31 using PreconditionerSignature = std::shared_ptr<Preconditioner<typename OP::domain_type,typename OP::range_type>>(const std::shared_ptr<OP>&, const ParameterTree&);
33 using PreconditionerFactory = Singleton<ParameterizedObjectFactory<PreconditionerSignature<OP>>>;
37 using SolverSignature = std::shared_ptr<InverseOperator<typename OP::domain_type,typename OP::range_type>>(const std::shared_ptr<OP>&, const ParameterTree&);
64 DUNE_THROW(NoAssembledOperator, "Failed to cast to AssembledLinearOperator. Please pass in an AssembledLinearOperator.");
67 static const comm_type& getCommOrThrow(std::shared_ptr<LinearOperator<domain_type, range_type>> op){
73 DUNE_THROW(NoAssembledOperator, "Could not obtain communication object from operator. Please pass in a parallel operator.");
163 typename Operator::range_type>> prec = PreconditionerFactory<Operator>::instance().create(prec_type, op, config);
167 if(op->category() == SolverCategory::overlapping && prec->category() == SolverCategory::sequential)
169 else if(op->category() == SolverCategory::nonoverlapping && prec->category() == SolverCategory::sequential)
170 return std::make_shared<NonoverlappingBlockPreconditioner<Comm, Preconditioner<Domain, Range>> >(prec, comm);
Define general, extensible interface for inverse operators.
std::shared_ptr< Preconditioner< typename Operator::domain_type, typename Operator::range_type > > getPreconditionerFromFactory(std::shared_ptr< Operator > op, const ParameterTree &config)
Construct a Preconditioner for a given Operator.
Definition solverfactory.hh:157
std::shared_ptr< Preconditioner< typename OP::domain_type, typename OP::range_type > >(const std::shared_ptr< OP > &, const ParameterTree &) PreconditionerSignature
Definition solverfactory.hh:31
std::shared_ptr< InverseOperator< typename Operator::domain_type, typename Operator::range_type > > getSolverFromFactory(std::shared_ptr< Operator > op, const ParameterTree &config, std::shared_ptr< Preconditioner< typename Operator::domain_type, typename Operator::range_type > > prec=nullptr)
Instantiates an InverseOperator from an Operator and a configuration given as a ParameterTree.
Definition solverfactory.hh:133
std::shared_ptr< InverseOperator< typename OP::domain_type, typename OP::range_type > >(const std::shared_ptr< OP > &, const ParameterTree &) SolverSignature
Definition solverfactory.hh:37
typename detected_or< Default, Op, Args... >::type detected_or_t
#define DUNE_THROW(E,...)
std::string get(const std::string &key, const std::string &defaultValue) const
ParameterTree & sub(const std::string &sub)
Nonoverlapping parallel preconditioner.
Definition novlpschwarz.hh:276
static DUNE_EXPORT T & instance()
Base class for matrix free definition of preconditioners.
Definition preconditioner.hh:33
@ sequential
Category for sequential solvers.
Definition solvercategory.hh:25
@ nonoverlapping
Category for non-overlapping solvers.
Definition solvercategory.hh:27
@ overlapping
Category for overlapping solvers.
Definition solvercategory.hh:29
Definition solverfactory.hh:42
Std::detected_or_t< int, _matrix_type, Operator > matrix_type
Definition solverfactory.hh:53
typename Operator::domain_type domain_type
Definition solverfactory.hh:49
typename Operator::range_type range_type
Definition solverfactory.hh:50
static const comm_type & getCommOrThrow(std::shared_ptr< LinearOperator< domain_type, range_type > > op)
Definition solverfactory.hh:67
Std::detected_or_t< int, _comm_type, Operator > comm_type
Definition solverfactory.hh:55
static const std::shared_ptr< AssembledLinearOperator< matrix_type, domain_type, range_type > > getAssembledOpOrThrow(std::shared_ptr< LinearOperator< domain_type, range_type > > op)
Definition solverfactory.hh:59
static std::shared_ptr< ScalarProduct< domain_type > > getScalarProduct(std::shared_ptr< LinearOperator< domain_type, range_type > > op)
Definition solverfactory.hh:77
Definition solverfactory.hh:150
This exception is thrown if the requested solver or preconditioner needs an assembled matrix.
Definition solverregistry.hh:31
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8