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.