Index

NAME

BiCGStab  - BiConjugate Gradient Stabilized method for nonsymmet­
ric systems


INCLUDE

include "BiCGStab.h"

SYNTAX

 //-----------------------------------------------------------------------------
 class BiCGStab : public KrylovItSolver
 //-----------------------------------------------------------------------------
 {

 protected:

   NUMT alpha, beta, rho, rho1, omega;

   LinEqVector r_bar0;
   LinEqVector p;
   LinEqVector u;
   LinEqVector v;
   LinEqVector t;

   Handle(LinEqVector) p_hat;
   Handle(LinEqVector) u_hat;

   virtual bool redim (LinEqSystem& system);

 public:

   BiCGStab ();
   BiCGStab (const LinEqSolver_prm& pm);
  ~BiCGStab () {}

   virtual bool ok () const;

   virtual bool solve (LinEqSystem& system);

   virtual String description () const;

   CLASS_INFO;
 };



KEYWORDS

iterative methods, linear systems, preconditioner, BICGSTAB, non­
symmetric systems



DESCRIPTION

The   class   implements  the  stabilized  biconjugate  gradients
(BICGSTAB) method for  solving  nonsymmetric  systems  of  linear
equations. The method is meant to avoid the irregular convergence
patterns of the Conjugate  Gradient  Squared  method  (see  class
CGS).



CONSTRUCTORS AND INITIALIZATION

There is a default constructor without arguments. For the sake of
comaptibility, there is also a  constructor  accepting  a  LinEq­
Solver_prm object, aimed to be used by LinEqSolver_prm::create.


MEMBER FUNCTIONS

ok  -  checks whether all the internal vectors are ready in addi­
tion to the standard KrylovItSolver::ok().

solve - takes an input argument of type LinEqSystem which must be
properly  filled.  The solution process is carried out inside the
function. If successful, a true value will be returned.




EXAMPLES

  Mat(real) A(4,4);
  Vec(real) x(4), b(4);
  A.scan("1 5 4 6 2 4 7 8 4 6 0 9 2 2 5 6");
  b.scan("47 63 52 45");

  LinEqSystemStd system(A,x,b);

  LinEqSolver_prm pm;
  pm.basic_method="BiCGStab";
  pm.max_iterations=20;

  LinEqSolver* bcg = createLinEqSolver (pm);
  bcg->solve(system);




SEE ALSO

class LinEqSystem, class KrylovItSolver, class LinEqSolver_prm.


DEVELOPED BY

SINTEF Applied Mathematics, Oslo, Norway, and University of Oslo,
Dept. of Mathematics, Norway


AUTHOR

Xing Cai, UiO/SINTEF Applied Mathematics.