next up previous contents index
Next: QMATRIX(3LAS) Up: Manual Pages Previous: OPERATS(3LAS)

  PRECOND(3LAS)

NAME

JacobiPrecond, SSORPrecond, ILUPrecond -- pre-defined preconditioners

SYNOPSIS

#include <laspack/precond.h>

typedef Vector *(*PrecondProcType)(QMatrix *, Vector *, Vector *, double)

Vector *JacobiPrecond(QMatrix *A, Vector *y, Vector *c, double Omega); 
Vector *SSORPrecond(QMatrix *A, Vector *y, Vector *c, double Omega); 
Vector *ILUPrecond(QMatrix *A, Vector *y, Vector *c, double Omega);

DESCRIPTION

In LASPack , three preconditioners are currently available. They will be applied to the system

    W y = c

which arises during the solution of the preconditioned systems of equations

    W^{-1} A x = W^{-1} b.

The matrix W is in all three cases derived from the matrix A . The parameter Omega is used as relaxation parameter.

 
The procedure JacobiPrecond performs the preconditioning by means of weighted diagonal of the original matrix
    W = 1 / Omega . diag(A)

so that

    y = Omega diag(A)^{-1} c.

 
For preconditioning by the Symmetric Successive Over-relaxation Method, the matrix A is decomposed in the diagonal D, the lower triangular part L, and the upper triangular part U :
    A = D + L + U.

The procedure SSORPrecond uses then

    W = 1 / (2 - Omega) . (D / Omega + L) (D / Omega)^{-1} (D / Omega + U).

Hence follows

    y = (2 - Omega) / Omega . (D / Omega + U)^{-1} D (D / Omega + L)^{-1} c.

 
The usage of ILUPrecond assumes an incomplete factorization of the matrix A in the form
    A = W + R = (D + L) D^{-1} (D + U) + R

Here D, U, and L are certain diagonal, upper, and lower triangular matrices, respectively, the remainder matrix R contains fill elements, which have been ignored during the factorization process.

The matrix W can be inverted exactly so that

    y = (D + U)^{-1} D (D + L)^{-1} c.

All three preconditioners are applicable for both, symmetric and non-symmetric matrices. For symmetric matrices, the symmetry condition L = U^T is taken into account.

REFERENCES

For description and theoretical foundation of above preconditioners see e.g.:

W. Hackbusch: Iterative Solution of Large Sparse Systems of Equations, Springer-Verlag, Berlin, 1994.

FILES

precond.h ... header file
precond.c ... source file

EXAMPLES

Preconditioners as well as iterative solvers are defined in LASPack by means of matrix-vector operations, especially the procedures Mul_QV and MulInv_QV from module OPERATS. This keep they independently on the matrix storage format. The Jacobi preconditioner is e.g. implemented by the following one-line statement:

Vector *JacobiPrecond(QMatrix *A, Vector *y, Vector *c, double Omega)
{
    Q_Lock(A);
    V_Lock(y);
    V_Lock(c);

    Asgn_VV(y, Mul_SV(Omega, MulInv_QV(Diag_Q(A), c)));

    Q_Unlock(A);
    V_Unlock(y);
    V_Unlock(c);

    return(y);
}

SEE ALSO

qmatrix(3LAS), vector(3LAS), factor(3LAS), itersolv(3LAS), mgsolv(3LAS), operats(3LAS)



next up previous contents index
Next: QMATRIX(3LAS) Up: Manual Pages Previous: OPERATS(3LAS)



Tomas Skalicky (skalicky@msmfs1.mw.tu-dresden.de)