1 #ifndef SHYLU_ITERATIVESOLVER_INTERFACE_DEF_HPP 2 #define SHYLU_ITERATIVESOLVER_INTERFACE_DEF_HPP 4 #include "ShyLUCore_config.h" 5 #include "shylu_iterativesolver_interface_decl.hpp" 13 template <
class Matrix,
class Vector>
14 IterativeSolverInterface<Matrix,Vector>::IterativeSolverInterface()
17 template <
class Matrix,
class Vector>
18 IterativeSolverInterface<Matrix,Vector>::IterativeSolverInterface(Matrix *inA,
Teuchos::ParameterList *inpList)
24 template <
class Matrix,
class Vector>
25 IterativeSolverInterface<Matrix,Vector>::~IterativeSolverInterface()
28 template <
class Matrix,
class Vector>
36 template <
class Matrix,
class Vector>
37 int IterativeSolverInterface<Matrix,Vector>::solveAztec(Vector *b, Vector *x)
39 printf(
"**Error** Aztec only supported by Epetra \n");
45 int IterativeSolverInterface<Epetra_CrsMatrix,Epetra_MultiVector>::solveAztec(Epetra_MultiVector *b, Epetra_MultiVector *x)
52 e_problem.SetOperator(A);
57 solver_aztec =
new AztecOO(e_problem);
58 solver_aztec->SetAztecOption(AZ_precond, AZ_none);
59 solver_aztec->SetAztecOption(AZ_solver, AZ_gmres);
60 solver_aztec->SetAztecOption(AZ_max_iter, 1000);
63 solver_aztec->Iterate(1000, 1e-5);
68 template <
class Matrix,
class Vector>
69 int IterativeSolverInterface<Matrix,Vector>::solveBelos(Vector *b, Vector *x)
74 typedef typename Matrix::global_ordinal_type global_ordinal_type;
75 typedef typename Matrix::node_type
node_type;
95 solver_name = belosList->
get<
string>(
"Solver");
107 printf(
"load belos parameters\n");
109 belos_problem =
Teuchos::rcp(
new Belos::LinearProblem<scalar_type, Vector, OP>());
114 belos_problem->setProblem();
118 Belos::SolverFactory<scalar_type, Vector, OP> factory;
122 solver_belos = factory.create(solver_name, belosList);
124 solver_belos->setProblem(belos_problem);
135 (void) solver_belos->solve();
141 int IterativeSolverInterface<Epetra_CrsMatrix,Epetra_MultiVector>::solveBelos(Epetra_MultiVector *b, Epetra_MultiVector *x)
202 template <
class Matrix,
class Vector>
203 int IterativeSolverInterface<Matrix,Vector>::solve(Vector *b, Vector* x)
205 string solverpackage = Teuchos::getParameter<string>(*pList,
"Iterative Solver Package");
207 cout <<
"found package " << solverpackage << endl;
209 if(solverpackage.compare(
"Aztec")==0)
211 printf(
"**Warning** Aztec is not preferred \n");
214 else if(solverpackage.compare(
"Belos")==0)
220 printf(
"**Error**Iterative Solver Package Not Provided\n");
229 #endif //end ifdef shylu_interative_fie KokkosClassic::DefaultNode::DefaultNodeType node_type
T & get(const std::string &name, T def_value)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
bool isParameter(const std::string &name) const
ParameterList & sublist(const std::string &name, bool mustAlreadyExist=false, const std::string &docString="")