1#ifndef included_AMP_BoomerAMGSolver
2#define included_AMP_BoomerAMGSolver
5#include "AMP/matrices/Matrix.h"
6#include "AMP/solvers/SolverStrategy.h"
7#include "AMP/solvers/SolverStrategyParameters.h"
8#include "AMP/solvers/hypre/HypreSolver.h"
11class HypreMatrixAdaptor;
42 explicit BoomerAMGSolver( std::shared_ptr<BoomerAMGSolverParameters> parameters );
49 std::string
type()
const override {
return "BoomerAMGSolver"; }
52 static std::unique_ptr<SolverStrategy>
63 void apply( std::shared_ptr<const AMP::LinearAlgebra::Vector> f,
64 std::shared_ptr<AMP::LinearAlgebra::Vector>
u )
override;
75 void initialize( std::shared_ptr<const SolverStrategyParameters> parameters )
override;
85 void reset( std::shared_ptr<SolverStrategyParameters> params )
override;
void setupBoomerAMG(void)
int d_agg_P12_max_elements
double d_chebyshev_fraction
int d_mult_additive_level
void reset(std::shared_ptr< SolverStrategyParameters > params) override
virtual ~BoomerAMGSolver()
int d_smooth_number_sweeps
void setHypreFunctionPointers()
double d_agg_trunc_factor
std::string type() const override
Return the name of the solver.
int d_smooth_number_levels
int d_schwarz_domain_type
static std::unique_ptr< SolverStrategy > createSolver(std::shared_ptr< SolverStrategyParameters > solverStrategyParameters)
static create routine that is used by SolverFactory
void getFromInput(std::shared_ptr< const AMP::Database > db)
void initialize(std::shared_ptr< const SolverStrategyParameters > parameters) override
double d_agg_P12_trunc_factor
double d_non_galerkin_tol
double d_additive_trunc_factor
int d_schwarz_nonsymmetric
BoomerAMGSolver(std::shared_ptr< BoomerAMGSolverParameters > parameters)
double d_strong_threshold
void apply(std::shared_ptr< const AMP::LinearAlgebra::Vector > f, std::shared_ptr< AMP::LinearAlgebra::Vector > u) override
std::shared_ptr< AMP::Solver::SolverStrategy > shared_ptr