OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
MueLuPreconditioner.h
Go to the documentation of this file.
1 #ifndef MUELU_PRECONDITIONER_H
2 #define MUELU_PRECONDITIONER_H
3 
4 #include "AmrPreconditioner.h"
5 #include "Amr/AmrDefs.h"
6 
7 #include <MueLu.hpp>
8 #include <MueLu_TpetraOperator.hpp>
9 
10 template <class Level>
11 class MueLuPreconditioner : public AmrPreconditioner<amr::matrix_t, Level>
12 {
13 public:
15 
20 
21  typedef MueLu::TpetraOperator<
22  scalar_t,
23  lo_t,
24  go_t,
27 
29 
30  typedef std::map<std::string, Preconditioner> map_t;
31 
32 public:
33 
34  MueLuPreconditioner(const bool& rebalance,
35  const std::string& reuse);
36 
37  void create(const Teuchos::RCP<amr::matrix_t>& A, Level* level_p = nullptr);
38 
39  Teuchos::RCP<amr::operator_t> get();
40 
41  static void fillMap(map_t& map);
42 
43  static std::string convertToMueLuReuseOption(const std::string& reuse);
44 
45 private:
46  void init_m(const std::string& reuse);
47 
48 private:
49  Teuchos::ParameterList params_m;
50 
51  Teuchos::RCP<precond_t> prec_mp;
52 
53  Teuchos::RCP<amr::multivector_t> coords_mp;
54 
55  const bool rebalance_m;
56 };
57 
58 #include "MueLuPreconditioner.hpp"
59 
60 #endif
amr::Preconditioner Preconditioner
amr::local_ordinal_t lo_t
Teuchos::ParameterList params_m
MueLuPreconditioner(const bool &rebalance, const std::string &reuse)
static void fillMap(map_t &map)
Bottom solver preconditioners.
void init_m(const std::string &reuse)
Teuchos::RCP< precond_t > prec_mp
int local_ordinal_t
amrex::IntVect AmrIntVect_t
Definition: AmrDefs.h:28
MueLu::TpetraOperator< scalar_t, lo_t, go_t, amr::node_t > precond_t
KokkosClassic::DefaultNode::DefaultNodeType node_t
amr::global_ordinal_t go_t
std::map< std::string, Preconditioner > map_t
Teuchos::RCP< amr::multivector_t > coords_mp
void create(const Teuchos::RCP< amr::matrix_t > &A, Level *level_p=nullptr)
amrex::Box AmrBox_t
Definition: AmrDefs.h:30
static std::string convertToMueLuReuseOption(const std::string &reuse)
amr::AmrIntVect_t AmrIntVect_t
long global_ordinal_t
double scalar_t