5.16 Preconditioning and asymmetry
The conjugate gradient (CG) method provides a good basis for a matrix solver in CFD. In theory, it provides an exact solution in steps for a problem with values. In practice, there is an accumulation of rounding errors from finite precision arithmetic, such that an exact solution is not attained. Problems are also too large for it to be feasible to run steps.
CG is instead used as an iterative method, aiming to get the solution residual within an acceptable tolerance. The rate of convergence is therefore critical, which can be shown to be slower for increasing condition number of the matrix, , where and are its largest eigenvalues.
In the example with two values, the eigenvalues correspond to the gradients of the principal axes of the paraboloid described by the quadratic function. Lower corresponds to closer gradients, i.e. to a rounder “bowl” shape.
The best convergence corresponds to when ( is the identity matrix). Preconditioning finds a matrix , similar to , which can be inverted and multiplied to the equation as follows:
|
(5.35) |
- diagonal-based incomplete Cholesky (DIC) for symmetric ;
- diagonal-based incomplete LU (DILU) for an asymmetric .
Biconjugate gradient stabilised method
The preconditioned CG (PCG) method minimises the quadratic form which requires that is symmetric. However, any equation containing an advection term produces an asymmetric matrix (see Sec. 5.1 ), when PCG is unsuitable.
The preconditioned biconjugate gradient (PBiCG) method is designed for asymmetric matrices. It augments the calculations of residuals and line search directions in the CG method with a second set of calculations relating to the transpose matrix . The computational cost is approximately 2 the cost of PCG.
The convergence behaviour of PBiCG is somewhat erratic, with large variations in the reduction of the residual between successive iterations. Sometimes the method breaks down and fails.
The preconditioned biconjugate gradient stabilised method (PBiCGStab) is a modification of PBiCG. It is exhibits much smoother convergence and robustness than PBiCG so it is far more preferable for CFD applications.
Recommended CG-based methods are summarised below.
- symmetric: PCG with DIC preconditioning.
- asymmetric: PBiCGStab with DILU preconditioning.
The implementation of preconditioning and CG-based methods can be found in: Barrett R. et al. Templates for the solution of linear systems, available at http://www.netlib.org.