1#ifndef included_AMP_UAAMGSolver
2#define included_AMP_UAAMGSolver
4#include "AMP/solvers/SolverStrategy.h"
5#include "AMP/solvers/SolverStrategyParameters.h"
6#include "AMP/solvers/amg/Aggregation.h"
7#include "AMP/solvers/amg/Aggregator.h"
8#include "AMP/solvers/amg/Cycle.h"
9#include "AMP/solvers/amg/Relaxation.h"
14 explicit UASolver( std::shared_ptr<SolverStrategyParameters> );
15 std::string
type()
const override {
return "UASolver"; }
17 static std::unique_ptr<SolverStrategy>
20 return std::make_unique<UASolver>( params );
28 void apply( std::shared_ptr<const AMP::LinearAlgebra::Vector> f,
29 std::shared_ptr<AMP::LinearAlgebra::Vector>
u )
override;
34 std::shared_ptr<Operator::OperatorParameters> );
35 static std::unique_ptr<SolverStrategy>
37 std::shared_ptr<AMP::Operator::LinearOperator> A,
38 std::shared_ptr<RelaxationParameters> params );
std::shared_ptr< AMP::Solver::SolverStrategy > shared_ptr
std::tuple< std::shared_ptr< AMP::Operator::Operator >, std::shared_ptr< AMP::Operator::LinearOperator >, std::shared_ptr< AMP::Operator::Operator > > coarse_ops_type
MemoryType
Enum to store pointer type.
Settings for the Kappa K-cycle.
std::shared_ptr< RelaxationParameters > d_post_relax_params
KappaKCycle::settings d_cycle_settings
void registerOperator(std::shared_ptr< AMP::Operator::Operator >) override
std::unique_ptr< SolverStrategy > d_coarse_solver
Utilities::MemoryType d_mem_loc
static std::unique_ptr< SolverStrategy > createSolver(std::shared_ptr< SolverStrategyParameters > params)
std::string type() const override
Return the name of the solver.
void getFromInput(std::shared_ptr< AMP::Database >)
size_t d_min_coarse_global
std::shared_ptr< SolverStrategyParameters > d_coarse_solver_params
std::shared_ptr< RelaxationParameters > d_pre_relax_params
static std::unique_ptr< SolverStrategy > create_relaxation(size_t lvl, std::shared_ptr< AMP::Operator::LinearOperator > A, std::shared_ptr< RelaxationParameters > params)
PairwiseCoarsenSettings d_coarsen_settings
std::vector< KCycleLevel > d_levels
coarse_ops_type coarsen(std::shared_ptr< Operator::LinearOperator > A, const PairwiseCoarsenSettings &, std::shared_ptr< Operator::OperatorParameters >)
std::shared_ptr< Aggregator > d_aggregator
UASolver(std::shared_ptr< SolverStrategyParameters >)
void apply(std::shared_ptr< const AMP::LinearAlgebra::Vector > f, std::shared_ptr< AMP::LinearAlgebra::Vector > u) override