1#ifndef included_AMP_QMRCGSTABSolver
2#define included_AMP_QMRCGSTABSolver
4#include "AMP/solvers/SolverStrategy.h"
5#include "AMP/utils/AMP_MPI.h"
18template<
typename T =
double>
51 static std::unique_ptr<SolverStrategy>
54 return std::make_unique<QMRCGSTABSolver<T>>( params );
62 std::string
type()
const override {
return "QMRCGSTABSolver"; }
69 void apply( std::shared_ptr<const AMP::LinearAlgebra::Vector> f,
70 std::shared_ptr<AMP::LinearAlgebra::Vector>
u )
override;
76 void initialize( std::shared_ptr<const SolverStrategyParameters> params )
override;
QMRCGSTABSolver()=default
virtual ~QMRCGSTABSolver()=default
QMRCGSTABSolver(std::shared_ptr< SolverStrategyParameters > params)
void initialize(std::shared_ptr< const SolverStrategyParameters > params) override
std::string type() const override
Return the name of the solver.
void apply(std::shared_ptr< const AMP::LinearAlgebra::Vector > f, std::shared_ptr< AMP::LinearAlgebra::Vector > u) override
static std::unique_ptr< SolverStrategy > createSolver(std::shared_ptr< SolverStrategyParameters > params)
bool d_bUsesPreconditioner
void getFromInput(std::shared_ptr< const AMP::Database > db)
std::string d_preconditioner_side
std::shared_ptr< AMP::Solver::SolverStrategy > shared_ptr