I have a problem with impelementing SSOR precondtioner using RCI and hope you can help me with that.
I have written a cg solver using RCI for a symmetric matrix that is stored in CSR format 3 array version. I have also implemented the jacobi preconditioner and it works fine. Now I want to implement SSOR but unfortunately I am lost somehow. There is an example of SSOR in MKL example directory, but in that example the SSOR is implemented in a loop which I don't know why!
Here is the SSOR that I am aware of.
Let's say M is the preconditioner which works as follows:
M rho = r (eq.1)
where r is the current residual ( stored in &tmp[2n] in RCI) and rho is the modified residual (shall be stored in &tmp[3n] in RCI)
M is defined as follow [SAAD 2002]
M = 1/(w(2-w)) (D+wL) D^-1 (D+wU)
w = relaxation parameter 0<w<2
U = is the upper part of the matrix A
L = the lower part of the matrix A
D = diagonal of the matrix A
so A = L+D+U and since A is symmetric L= U'
To solve the eq. 1 the following is suggested
Q = 1/(w(2-w)) (D+wL) D^-1
G = (D+wU)
1. Solve Q z = r
2. Solve G rho = z
To perform the above steps we need to triangular solvers. Now my question, what function from mkl should I use to this end? Is it necessary to build Q and G explicitly or the mkl functions can do so?
I would be happy if somebody can give me some hints here.
With best regards.