OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Amesos2BottomSolver.h
Go to the documentation of this file.
1 #ifndef AMESOS2_SOLVER_H
2 #define AMESOS2_SOLVER_H
3 
4 #include "BottomSolver.h"
5 
6 #include <Amesos2.hpp>
7 
8 #include <string>
9 
10 extern Inform* gmsg;
11 
13 template <class Level>
14 class Amesos2BottomSolver : public BottomSolver<Teuchos::RCP<amr::matrix_t>,
15  Teuchos::RCP<amr::multivector_t>,
16  Level>
17 {
18 public:
21 
22  typedef Amesos2::Solver<matrix_t, mv_t> solver_t;
23 
24 public:
25 
30  Amesos2BottomSolver(std::string solvertype = "klu2");
31 
32  void solve(const Teuchos::RCP<mv_t>& x,
33  const Teuchos::RCP<mv_t>& b);
34 
35  void setOperator(const Teuchos::RCP<matrix_t>& A,
36  Level* level_p = nullptr);
37 
38  std::size_t getNumIters();
39 
40 private:
41 
42  std::string solvertype_m;
43 
44  Teuchos::RCP<solver_t> solver_mp;
45 };
46 
47 #include "Amesos2BottomSolver.hpp"
48 
49 #endif
Interface to Amesos2 solvers of the Trilinos package.
Teuchos::RCP< solver_t > solver_mp
solver instance
Amesos2::Solver< matrix_t, mv_t > solver_t
Inform * gmsg
Definition: Main.cpp:21
amr::multivector_t mv_t
Abstract base class for all base level solvers.
Definition: BottomSolver.h:8
void solve(const Teuchos::RCP< mv_t > &x, const Teuchos::RCP< mv_t > &b)
Tpetra::CrsMatrix< scalar_t, local_ordinal_t, global_ordinal_t, node_t > matrix_t
Tpetra::MultiVector< scalar_t, local_ordinal_t, global_ordinal_t, node_t > multivector_t
Definition: Inform.h:41
std::string solvertype_m
kind of solver
Amesos2BottomSolver(std::string solvertype="klu2")
void setOperator(const Teuchos::RCP< matrix_t > &A, Level *level_p=nullptr)