Biconjugate gradient method
From CFD-Wiki
Biconjugate gradient method
Biconjugate gradient method could be summarized as follows
System of equation
For the given system of equation
Ax = b ;
b = source vector
x = solution variable for which we seek the solution
A = coefficient matrix
M = the precondioning matrix constructued by matrix A
Algorithm
- Allocate temperary vectors r,z,p,q, rtilde,ztilde,qtilde
- Allocate temerary reals rho_1, rho_2 , alpha, beta
-
- r := b - Ax
- rtilde = r
-
- for i := 1 step 1 until max_itr do
- solve (Mz = r )
- solve (MTztilde = rtilde )
- rho_1 = zrtilde
- if i = 1 then
- p := z
- ptilde := ztilde
- p := z
- else
- beta = (rho_1/rho_2)
- p = z + beta * p
- ptilde = ztilde + beta * ptilde
- beta = (rho_1/rho_2)
- end if
- q := Ap
- qtilde := ATptilde
- alpha = rho_1 / (ptildeq)
- x = x + alpha * p
- r = r - alpha * q
- rtilde = rtilde - alpha * qtilde
- rho_2 = rho_1
- solve (Mz = r )
- end (i-loop)
-
- deallocate all temp memory
- return TRUE