OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
AmrPreconditioner.h
Go to the documentation of this file.
1 //
2 // Class AmrPreconditioner
3 // Bottom solver preconditioners. Used with Belos bottom solvers.
4 //
5 // Copyright (c) 2017 - 2020, Matthias Frey, Paul Scherrer Institut, Villigen PSI, Switzerland
6 // All rights reserved
7 //
8 // Implemented as part of the PhD thesis
9 // "Precise Simulations of Multibunches in High Intensity Cyclotrons"
10 //
11 // This file is part of OPAL.
12 //
13 // OPAL is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with OPAL. If not, see <https://www.gnu.org/licenses/>.
20 //
21 #ifndef AMR_PRECONDITIONER_H
22 #define AMR_PRECONDITIONER_H
23 
24 #include "AmrMultiGridDefs.h"
25 
26 namespace amr {
29  ILUT,
32  SA,
35  GS,
36  BLOCK_GS
37  };
38 }
39 
40 template <class Matrix, class Level>
42 {
43 public:
45 
46 public:
47 
53  virtual void create(const Teuchos::RCP<Matrix>& A, Level* level_p = nullptr) = 0;
54 
58  virtual Teuchos::RCP<operator_t> get() = 0;
59 };
60 
61 
62 #endif
Some AMR types used a lot.
Definition: AmrDefs.h:33
Tpetra::Operator< scalar_t, local_ordinal_t, global_ordinal_t, node_t > operator_t
@ GS
Gauss-Seidel point relaxation.
@ JACOBI
Jacobi point relaxation.
@ RILUK
ILU(k)
@ ILUT
incomplete LU
@ SA
smoothed aggregation multigrid
@ BLOCK_JACOBI
Jacobi block relaxation.
@ BLOCK_GS
Gauss-Seidel block relaxation.
amr::operator_t operator_t
virtual Teuchos::RCP< operator_t> get()=0
virtual void create(const Teuchos::RCP< Matrix > &A, Level *level_p=nullptr)=0