1#ifndef included_AMP_GMRESRSolver
2#define included_AMP_GMRESRSolver
4#include "AMP/solvers/SolverStrategy.h"
5#include "AMP/solvers/SolverStrategyParameters.h"
6#include "AMP/utils/AMP_MPI.h"
7#include "AMP/utils/Array.h"
28template<
typename T =
double>
47 explicit GMRESRSolver( std::shared_ptr<SolverStrategyParameters> params );
54 static std::unique_ptr<SolverStrategy>
57 return std::make_unique<GMRESRSolver<T>>( params );
65 std::string
type()
const override {
return "GMRESRSolver"; }
79 void initialize( std::shared_ptr<const SolverStrategyParameters> params )
override;
97 std::vector<AMP::LinearAlgebra::Vector::shared_ptr>
d_c;
101 std::vector<AMP::LinearAlgebra::Vector::shared_ptr>
d_u;
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
std::shared_ptr< const Vector > const_shared_ptr
GMRESRSolver(std::shared_ptr< SolverStrategyParameters > params)
static std::unique_ptr< SolverStrategy > createSolver(std::shared_ptr< SolverStrategyParameters > params)
std::vector< AMP::LinearAlgebra::Vector::shared_ptr > d_u
void initialize(std::shared_ptr< const SolverStrategyParameters > params) override
void getFromInput(std::shared_ptr< AMP::Database > db)
std::string d_variant
logs number of times the solver is restarted
int d_iMaxKrylovDimension
whether to restart
void apply(AMP::LinearAlgebra::Vector::const_shared_ptr f, AMP::LinearAlgebra::Vector::shared_ptr u) override
std::string type() const override
Return the name of the solver.
std::vector< AMP::LinearAlgebra::Vector::shared_ptr > d_c
virtual ~GMRESRSolver()=default
std::shared_ptr< AMP::Solver::SolverStrategy > shared_ptr