1 #ifndef PARALUTION_PRECONDITIONER_MULTIELIMINATION_HPP_
2 #define PARALUTION_PRECONDITIONER_MULTIELIMINATION_HPP_
4 #include "../solver.hpp"
6 #include "../../base/local_vector.hpp"
15 template <
class OperatorType,
class VectorType,
typename ValueType>
29 virtual void Print(
void)
const;
30 virtual void Clear(
void);
36 const int level,
const double drop_off =
double(0.0));
42 virtual void Build(
void);
44 virtual void Solve(
const VectorType &rhs,
95 #endif // PARALUTION_PRECONDITIONER_MULTIELIMINATION_HPP_
OperatorType A_
A_ is decomposed into , where ; ;.
Definition: preconditioner_multielimination.hpp:52
virtual void Set(Solver< OperatorType, VectorType, ValueType > &AA_Solver, const int level, const double drop_off=double(0.0))
Initialize (recursively) ME-ILU with level (defines the depth of recursion); AA_Solvers - defines the...
Definition: preconditioner_multielimination.cpp:130
int AA_nnz_
Definition: preconditioner_multielimination.hpp:60
OperatorType C_
Definition: preconditioner_multielimination.hpp:55
VectorType x_1_
Definition: preconditioner_multielimination.hpp:68
VectorType vec_D_
Definition: preconditioner_multielimination.hpp:83
VectorType x_
Definition: preconditioner_multielimination.hpp:67
int AA_nrow_
The sizes of the AA_ matrix.
Definition: preconditioner_multielimination.hpp:60
int level_
Definition: preconditioner_multielimination.hpp:79
double drop_off_
Definition: preconditioner_multielimination.hpp:80
OperatorType D_
Diagonal part.
Definition: preconditioner_multielimination.hpp:54
LocalVector< int > permutation_
Definition: preconditioner_multielimination.hpp:84
VectorType x_2_
Definition: preconditioner_multielimination.hpp:69
unsigned int precond_mat_format_
Precond matrix format.
Definition: preconditioner_multielimination.hpp:65
int get_size_diag_block(void) const
Returns the size of the first (diagonal) block of the preconditioner.
Definition: preconditioner_multielimination.hpp:24
bool op_mat_format_
Keep the precond matrix in CSR or not.
Definition: preconditioner_multielimination.hpp:63
Base preconditioner class.
Definition: preconditioner.hpp:10
OperatorType F_
Definition: preconditioner_multielimination.hpp:55
MultiElimination< OperatorType, VectorType, ValueType > * AA_me_
Definition: preconditioner_multielimination.hpp:75
virtual void Print(void) const
Print information about the solver.
Definition: preconditioner_multielimination.cpp:108
VectorType rhs_1_
Definition: preconditioner_multielimination.hpp:72
bool diag_solver_init_
Definition: preconditioner_multielimination.hpp:78
virtual ~MultiElimination()
Definition: preconditioner_multielimination.cpp:40
MultiElimination()
Definition: preconditioner_multielimination.cpp:18
int size_
Definition: preconditioner_multielimination.hpp:85
int get_level(void) const
Return the depth of the current level.
Definition: preconditioner_multielimination.hpp:27
Definition: backend_manager.cpp:43
const IndexType const IndexType const IndexType const ValueType const ValueType const ValueType * x
Definition: cuda_kernels_coo.hpp:91
virtual void Solve(const VectorType &rhs, VectorType *x)
Solve Operator x = rhs.
Definition: preconditioner_multielimination.cpp:311
virtual void MoveToHostLocalData_(void)
Move all local data to the host.
Definition: preconditioner_multielimination.cpp:364
VectorType inv_vec_D_
Definition: preconditioner_multielimination.hpp:82
The base class for all solvers and preconditioners.
Definition: solver.hpp:12
virtual void Build(void)
Build the solver (data allocation, structure computation, numerical computation)
Definition: preconditioner_multielimination.cpp:157
VectorType rhs_
Definition: preconditioner_multielimination.hpp:71
virtual void MoveToAcceleratorLocalData_(void)
Move all local data to the accelerator.
Definition: preconditioner_multielimination.cpp:397
OperatorType AA_
;
Definition: preconditioner_multielimination.hpp:57
virtual void SetPrecondMatrixFormat(const unsigned int mat_format)
Set a specific matrix type of the decomposed block matrices; if not set, CSR matrix format will be us...
Definition: preconditioner_multielimination.cpp:146
Solver< OperatorType, VectorType, ValueType > * AA_solver_
Definition: preconditioner_multielimination.hpp:76
OperatorType E_
Definition: preconditioner_multielimination.hpp:55
virtual void Clear(void)
Clear (free all local data) the solver.
Definition: preconditioner_multielimination.cpp:50
MultiElimination (I)LU factorization (see 12.5.1 Multi-Elimination ILU from "Iterative Methods for Sp...
Definition: preconditioner_multielimination.hpp:16
VectorType rhs_2_
Definition: preconditioner_multielimination.hpp:73