13#ifndef dealii_solver_selector_h
14#define dealii_solver_selector_h
88template <
typename VectorType = Vector<
double>>
118 template <
typename MatrixType,
typename PreconditionerType>
122 void solve(
const MatrixType &A,
125 const PreconditionerType &precond)
const;
132 select(
const std::string &name);
196 <<
"Solver " << arg1 <<
" does not exist. Use one of "
250template <
typename VectorType>
260template <
typename VectorType>
269template <
typename VectorType>
271template <
typename MatrixType,
typename PreconditionerType>
278 const PreconditionerType &precond)
const
283 solver.
solve(A, x, b, precond);
288 solver.
solve(A, x, b, precond);
293 solver.
solve(A, x, b, precond);
298 solver.
solve(A, x, b, precond);
303 solver.
solve(A, x, b, precond);
308 solver.
solve(A, x, b, precond);
316template <
typename VectorType>
325template <
typename VectorType>
329 return "richardson|cg|bicgstab|gmres|fgmres|minres";
334template <
typename VectorType>
337 const typename
SolverGMRES<VectorType>::AdditionalData &data)
344template <
typename VectorType>
347 const typename
SolverFGMRES<VectorType>::AdditionalData &data)
354template <
typename VectorType>
364template <
typename VectorType>
367 const typename
SolverCG<VectorType>::AdditionalData &data)
374template <
typename VectorType>
377 const typename
SolverMinRes<VectorType>::AdditionalData &data)
384template <
typename VectorType>
friend class ObserverPointer
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner)
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner)
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerTypes &...preconditioners)
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner)
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner)
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner)
SolverGMRES< VectorType >::AdditionalData gmres_data
virtual ~SolverSelector() override=default
SolverBicgstab< VectorType >::AdditionalData bicgstab_data
void select(const std::string &name)
static std::string get_solver_names()
void set_control(SolverControl &ctrl)
SolverFGMRES< VectorType >::AdditionalData fgmres_data
SolverMinRes< VectorType >::AdditionalData minres_data
void set_data(const typename SolverRichardson< VectorType >::AdditionalData &data)
ObserverPointer< SolverControl, SolverSelector< VectorType > > control
SolverCG< VectorType >::AdditionalData cg_data
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &precond) const
SolverRichardson< VectorType >::AdditionalData richardson_data
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_CXX20_REQUIRES(condition)
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcSolverDoesNotExist(std::string arg1)
#define Assert(cond, exc)
#define DeclException1(Exception1, type1, outsequence)