1#ifndef included_AMP_TrilinosMLSolver
2#define included_AMP_TrilinosMLSolver
4#include "AMP/solvers/SolverStrategy.h"
5#include "AMP/solvers/SolverStrategyParameters.h"
6#include "AMP/solvers/trilinos/ml/MLoptions.h"
9#include "Teuchos_ParameterList.hpp"
14typedef struct ML_Struct
ML;
17class MultiLevelPreconditioner;
23class ManagedEpetraMatrix;
132 std::string
type()
const override {
return "TrilinosMLSolver"; }
135 static std::unique_ptr<SolverStrategy>
146 void apply( std::shared_ptr<const AMP::LinearAlgebra::Vector> f,
147 std::shared_ptr<AMP::LinearAlgebra::Vector>
u )
override;
152 inline std::shared_ptr<ML_Epetra::MultiLevelPreconditioner>
getMLSolver(
void )
167 void initialize( std::shared_ptr<const SolverStrategyParameters> parameters )
override;
180 void resetOperator( std::shared_ptr<const AMP::Operator::OperatorParameters> params )
override;
190 void reset( std::shared_ptr<SolverStrategyParameters> params )
override;
194 std::shared_ptr<AMP::LinearAlgebra::Vector>
u );
217 std::shared_ptr<ML_Epetra::MultiLevelPreconditioner>
d_mlSolver;
218 std::shared_ptr<AMP::LinearAlgebra::ManagedEpetraMatrix>
d_matrix;
struct ML_Aggregate_Struct ML_Aggregate
typedefDISABLE_WARNINGS ENABLE_WARNINGS struct ML_Struct ML
Provides C++ wrapper around MPI routines.
std::shared_ptr< AMP::Solver::SolverStrategy > shared_ptr
virtual ~TrilinosMLSolver()
std::shared_ptr< AMP::LinearAlgebra::ManagedEpetraMatrix > d_matrix
void convertMLoptionsToTeuchosParameterList()
std::vector< double > d_z_values
void registerOperator(std::shared_ptr< AMP::Operator::Operator > op) override
std::vector< double > d_x_values
std::vector< double > d_y_values
void initialize(std::shared_ptr< const SolverStrategyParameters > parameters) override
std::shared_ptr< ML_Epetra::MultiLevelPreconditioner > d_mlSolver
void resetOperator(std::shared_ptr< const AMP::Operator::OperatorParameters > params) override
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 > solverStrategyParameters)
static create routine that is used by SolverFactory
std::shared_ptr< ML_Epetra::MultiLevelPreconditioner > getMLSolver(void)
Teuchos::ParameterList d_MLParameterList
TrilinosMLSolver(std::shared_ptr< TrilinosMLSolverParameters > parameters)
void computeCoordinates(std::shared_ptr< AMP::Operator::Operator > op)
void computeNullSpace(std::shared_ptr< AMP::Operator::Operator > op)
ML_Aggregate * d_mlAggregate
std::shared_ptr< MLoptions > d_mlOptions
std::string type() const override
Return the name of the solver.
std::vector< double > d_null_space
void reSolveWithLU(std::shared_ptr< const AMP::LinearAlgebra::Vector > f, std::shared_ptr< AMP::LinearAlgebra::Vector > u)
void getFromInput(std::shared_ptr< AMP::Database > db)
void reset(std::shared_ptr< SolverStrategyParameters > params) override
#define DISABLE_WARNINGS
Re-enable warnings.
#define ENABLE_WARNINGS
Suppress all warnings.
SolverStrategyParameters TrilinosMLSolverParameters