1#ifndef included_AMP_DiagonalSolver
2#define included_AMP_DiagonalSolver
4#include "AMP/solvers/SolverStrategy.h"
5#include "AMP/solvers/SolverStrategyParameters.h"
6#include "AMP/utils/AMP_MPI.h"
16template<
typename T =
double>
45 static std::unique_ptr<SolverStrategy>
48 return std::make_unique<DiagonalSolver<T>>( params );
56 std::string
type()
const override {
return "DiagonalSolver"; }
63 void apply( std::shared_ptr<const AMP::LinearAlgebra::Vector> f,
64 std::shared_ptr<AMP::LinearAlgebra::Vector>
u )
override;
70 void initialize( std::shared_ptr<const SolverStrategyParameters> params )
override;
std::string type() const override
Return the name of the solver.
DiagonalSolver(std::shared_ptr< SolverStrategyParameters > params)
std::shared_ptr< AMP::LinearAlgebra::Vector > d_pDiagonalInverse
virtual ~DiagonalSolver()=default
void registerOperator(std::shared_ptr< AMP::Operator::Operator > op) override
void initialize(std::shared_ptr< const SolverStrategyParameters > params) override
void getFromInput(std::shared_ptr< AMP::Database > db)
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)
std::shared_ptr< AMP::Solver::SolverStrategy > shared_ptr