Biconjugate gradient stabilized method
From CFDWiki
(Difference between revisions)
(replact \bullet by \cdot denoting a dot product) 
m (→Algorithm: * > \cdot) 

(2 intermediate revisions not shown)  
Line 8:  Line 8:  
A = coefficient matrix <br>  A = coefficient matrix <br>  
  M = the  +  M = the preconditioning matrix constructed by matrix A <br> 
  +  
=== Algorithm ===  === Algorithm ===  
Line 30:  Line 29:  
:: s = r  alpha * v <br>  :: s = r  alpha * v <br>  
:: solve (M<math>\cdot</math>shat = s ) <br>  :: solve (M<math>\cdot</math>shat = s ) <br>  
  :: t = A  +  :: t = A<math>\cdot</math>shat; 
:: omega = (t<math>\cdot</math>s) / (t<math>\cdot</math>t) <br>  :: omega = (t<math>\cdot</math>s) / (t<math>\cdot</math>t) <br>  
:: x = x + alpha * phat + omega * shat <br>  :: x = x + alpha * phat + omega * shat <br>  
Line 42:  Line 41:  
=== Reference ===  === Reference ===  
  #'''Richard Barret, Michael Berry, Tony F. Chan, James Demmel, June M. Donato, Jack Dongarra, Victor Eijihout, Roldan Pozo, Charles Romine, Henk Van der Vorst''', "Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods"  +  #'''Richard Barret, Michael Berry, Tony F. Chan, James Demmel, June M. Donato, Jack Dongarra, Victor Eijihout, Roldan Pozo, Charles Romine, Henk Van der Vorst''', "Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods" [http://www.netlib.org/linalg/html_templates/node41.html  http://www.netlib.org/linalg/html_templates/] 
    
<i> Return to [[Numerical methods  Numerical Methods]] </i>  <i> Return to [[Numerical methods  Numerical Methods]] </i> 
Revision as of 18:07, 28 July 2006
Contents 
Biconjugate gradient stabilized method
Biconjugate gradient stabilized 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 preconditioning matrix constructed by matrix A
Algorithm
 Allocate temperary vectors p, phat, s, shat, t, v, rtilde
 Allocate temerary reals rho_1, rho_2 , alpha, beta, omega

 r := b  Ax
 rtilde = r

 for i := 1 step 1 until max_itr do
 rho_1 = rtilder
 if i = 1 then p := r else
 beta = (rho_1/rho_2) * (alpha/omega)
 p = r + beta * (p  omega * v)
 beta = (rho_1/rho_2) * (alpha/omega)
 end if
 solve (Mphat = p )
 v = Aphat
 alpha = rho_1 / (rtildev)
 s = r  alpha * v
 solve (Mshat = s )
 t = Ashat;
 omega = (ts) / (tt)
 x = x + alpha * phat + omega * shat
 r = s  omega * t
 rho_2 = rho_1
 rho_1 = rtilder
 end (iloop)

 deallocate all temp memory
 return TRUE
Reference
 Richard Barret, Michael Berry, Tony F. Chan, James Demmel, June M. Donato, Jack Dongarra, Victor Eijihout, Roldan Pozo, Charles Romine, Henk Van der Vorst, "Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods"  http://www.netlib.org/linalg/html_templates/
Return to Numerical Methods