5.3 Iterative Methods
111
Advance the counter: k = k + 1
Solve the systems: M Z ~
= pk-l, ~~t~ = pk-'
Calculate: sk = z k . pk-l
p k = s k l s k - 1
p k = zz" + p"k-1
pk = =k + p k j j k - 1
ak = s k / ( j j k ~ p k )
@k = @k-1 + akpk
pk = p k - ~ - akApk
-k - -k-1 - a k ~ T j j k
P - P
Repeat until convergence.
The above algorithm was published by Fletcher (1976). It requires almost
exactly twice as much effort per iteration as the standard conjugate gradient
method but converges in about the same number of iterations. It has not been
widely used in CFD applications but it appears to be very robust (meaning
that it handles a wide range of problems without difficulty).
Other variants of the biconjugate gradient method type which are more
stable and robust have been developed. We mention here the CGS (conjugate
gradient squared) algorithm, proposed by Sonneveld (1989); CGSTAB (CGS
stabilized), proposed by Van den Vorst and Sonneveld (1990) and another
version by Van den Vorst (1992); and GMRES, proposed by Saad and Schultz
(1986). All of these can be applied to non-symmetric matrices and to both
structured and unstructured grids. We give below the CGSTAB algorithm
without formal derivation:
Initialize by setting: k = 0, @O = @in, p0 = Q - A&, u 0 = p0 = 0
Advance the counter k = k + 1 and calculate:
p k =
. pk-l
w k = ((Bkyk--')/(ak--'pk--')
pk = pk-l + W k ( p k - l - a k - l k-1
u
)
Solve the system: M z = pk
Calculate: u k = Az
yk = p k / ( u k . pO)
W =
- y k U k
Solve the system: M y = w
Calculate: v = Ay
ak = (v . p k ) / ( v . v)
@ k = @k-1 + y k z + a k y
pk = w - a k v
Repeat until convergence.
Note that u , v , w , y and z are auxiliary vectors and have nothing to do with
the velocity vector or the coordinates y and z. The algorithm can be programmed as given above; computer codes for the conjugate gradient method
with incomplete Cholesky preconditioning (ICCG, for symmetric matrices,
Précédent

- 122/779

Suivant