PARALUTION  1.0.0
PARALUTION
preconditioner_multicolored_gs.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_PRECONDITIONER_MULTICOLORED_GS_HPP_
2 #define PARALUTION_PRECONDITIONER_MULTICOLORED_GS_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 
13 template <class OperatorType, class VectorType, typename ValueType>
14 class MultiColoredSGS : public MultiColored<OperatorType, VectorType, ValueType> {
15 
16 public:
17 
19  virtual ~MultiColoredSGS();
20 
21  virtual void Print(void) const;
22 
23  virtual void ReBuildNumeric(void);
24 
26  virtual void SetRelaxation(const ValueType omega);
27 
28 protected:
29 
30  virtual void PostAnalyse_(void);
31 
32  virtual void SolveL_(void);
33  virtual void SolveD_(void);
34  virtual void SolveR_(void);
35  virtual void Solve_(const VectorType &rhs,
36  VectorType *x);
37 
38  ValueType omega_;
39 
40 };
41 
42 template <class OperatorType, class VectorType, typename ValueType>
43 class MultiColoredGS : public MultiColoredSGS<OperatorType, VectorType, ValueType> {
44 
45 public:
46 
48  virtual ~MultiColoredGS();
49 
50  virtual void Print(void) const;
51 
52 protected:
53 
54  virtual void PostAnalyse_(void);
55 
56  virtual void SolveL_(void);
57  virtual void SolveD_(void);
58  virtual void SolveR_(void);
59  virtual void Solve_(const VectorType &rhs,
60  VectorType *x);
61 
62 };
63 
64 
65 }
66 
67 #endif // PARALUTION_PRECONDITIONER_MULTICOLORED_GS_HPP_
virtual ~MultiColoredSGS()
Definition: preconditioner_multicolored_gs.cpp:28
virtual void ReBuildNumeric(void)
Rebuild only with numerical computation (no allocation or data structure computation) ...
Definition: preconditioner_multicolored_gs.cpp:61
virtual void SolveD_(void)
Solve the diagonal part (only for SGS)
Definition: preconditioner_multicolored_gs.cpp:137
ValueType omega_
Definition: preconditioner_multicolored_gs.hpp:38
virtual void SolveR_(void)
Solve the upper-trianguler (right) matrix.
Definition: preconditioner_multicolored_gs.cpp:241
virtual void Print(void) const
Print information about the solver.
Definition: preconditioner_multicolored_gs.cpp:214
virtual void SolveR_(void)
Solve the upper-trianguler (right) matrix.
Definition: preconditioner_multicolored_gs.cpp:156
virtual void Print(void) const
Print information about the solver.
Definition: preconditioner_multicolored_gs.cpp:50
virtual void SolveL_(void)
Solve the lower-triangular (left) matrix.
Definition: preconditioner_multicolored_gs.cpp:111
Definition: preconditioner_multicolored_gs.hpp:14
virtual ~MultiColoredGS()
Definition: preconditioner_multicolored_gs.cpp:207
virtual void Solve_(const VectorType &rhs, VectorType *x)
Solve directly without block decomposition.
Definition: preconditioner_multicolored_gs.cpp:181
MultiColoredSGS()
Definition: preconditioner_multicolored_gs.cpp:18
Definition: backend_manager.cpp:43
virtual void SolveL_(void)
Solve the lower-triangular (left) matrix.
Definition: preconditioner_multicolored_gs.cpp:233
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 directly without block decomposition.
Definition: preconditioner_multicolored_gs.cpp:264
virtual void SolveD_(void)
Solve the diagonal part (only for SGS)
Definition: preconditioner_multicolored_gs.cpp:237
virtual void PostAnalyse_(void)
Post-analyzing if the preconditioner is not decomposed.
Definition: preconditioner_multicolored_gs.cpp:99
virtual void SetRelaxation(const ValueType omega)
Set the relaxation parameter for the SOR/SSOR scheme.
Definition: preconditioner_multicolored_gs.cpp:40
Definition: preconditioner_multicolored_gs.hpp:43
virtual void PostAnalyse_(void)
Post-analyzing if the preconditioner is not decomposed.
Definition: preconditioner_multicolored_gs.cpp:225
MultiColoredGS()
Definition: preconditioner_multicolored_gs.cpp:203
Definition: preconditioner_multicolored.hpp:13