PARALUTION  1.0.0
PARALUTION
preconditioner_multicolored_ilu.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_PRECONDITIONER_MULTICOLORED_ILU_HPP_
2 #define PARALUTION_PRECONDITIONER_MULTICOLORED_ILU_HPP_
3 
4 #include "../solver.hpp"
5 #include "preconditioner.hpp"
7 #include "../../base/local_vector.hpp"
8 
9 #include <vector>
10 
11 namespace paralution {
12 
16 template <class OperatorType, class VectorType, typename ValueType>
17 class MultiColoredILU : public MultiColored<OperatorType, VectorType, ValueType> {
18 
19 public:
20 
22  virtual ~MultiColoredILU();
23 
24  virtual void Print(void) const;
25 
26  virtual void ReBuildNumeric(void);
27 
29  virtual void Set(const int p);
30 
34  virtual void Set(const int p, const int q, const bool level=true);
35 
36 protected:
37 
38  virtual void Build_Analyser_(void);
39  virtual void Factorize_(void);
40  virtual void PostAnalyse_(void);
41 
42  virtual void SolveL_(void);
43  virtual void SolveD_(void);
44  virtual void SolveR_(void);
45  virtual void Solve_(const VectorType &rhs,
46  VectorType *x);
47 
48  int q_;
49  int p_;
50  bool level_;
51  int nnz_;
52 
53 };
54 
55 
56 }
57 
58 #endif // PARALUTION_PRECONDITIONER_MULTICOLORED_ILU_HPP_
virtual void Set(const int p)
Initialize a multi-colored ILU(p,p+1) preconditioner.
Definition: preconditioner_multicolored_ilu.cpp:52
virtual void Print(void) const
Print information about the solver.
Definition: preconditioner_multicolored_ilu.cpp:41
virtual void Build_Analyser_(void)
Build the analyzing matrix.
Definition: preconditioner_multicolored_ilu.cpp:84
virtual void SolveR_(void)
Solve the upper-trianguler (right) matrix.
Definition: preconditioner_multicolored_ilu.cpp:215
int nnz_
Definition: preconditioner_multicolored_ilu.hpp:51
virtual void PostAnalyse_(void)
Post-analyzing if the preconditioner is not decomposed.
Definition: preconditioner_multicolored_ilu.cpp:112
int p_
Definition: preconditioner_multicolored_ilu.hpp:49
MultiColoredILU()
Definition: preconditioner_multicolored_ilu.cpp:18
virtual void SolveL_(void)
Solve the lower-triangular (left) matrix.
Definition: preconditioner_multicolored_ilu.cpp:192
virtual ~MultiColoredILU()
Definition: preconditioner_multicolored_ilu.cpp:31
virtual void Solve_(const VectorType &rhs, VectorType *x)
Solve directly without block decomposition.
Definition: preconditioner_multicolored_ilu.cpp:237
virtual void Factorize_(void)
Factorize (i.e. build the preconditioner)
Definition: preconditioner_multicolored_ilu.cpp:123
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 SolveD_(void)
Solve the diagonal part (only for SGS)
Definition: preconditioner_multicolored_ilu.cpp:211
virtual void ReBuildNumeric(void)
Rebuild only with numerical computation (no allocation or data structure computation) ...
Definition: preconditioner_multicolored_ilu.cpp:135
bool level_
Definition: preconditioner_multicolored_ilu.hpp:50
int q_
Definition: preconditioner_multicolored_ilu.hpp:48
ILU(p,q) preconditioner (see power(q)-pattern method, D. Lukarski "Parallel Sparse Linear Algebra fo...
Definition: preconditioner_multicolored_ilu.hpp:17
Definition: preconditioner_multicolored.hpp:13