Rodin/Solver/BiCGSTAB.h file

Bi-conjugate gradient stabilized solver for non-symmetric systems.

This header provides the BiCGSTAB solver class, an iterative method for solving non-symmetric linear systems with better convergence properties than the standard Bi-Conjugate Gradient method.

Algorithm

BiCGSTAB solves:

\[ Ax = b \]

for non-symmetric matrices $ A $ . It combines BiCG with stabilization to avoid the irregular convergence patterns often seen in BiCG.

Applicability

  • Non-symmetric sparse matrices
  • Large systems where direct solvers are expensive
  • Convection-dominated problems
  • Advection-diffusion equations

Usage Example

Problem problem(u, v);
problem = Integral(Grad(u), Grad(v)) + Integral(beta * Grad(u), v) - Integral(f, v);

Solver::BiCGSTAB solver(problem);
solver.setTolerance(1e-10).setMaxIterations(1000).solve();

Namespaces

namespace Rodin
The Rodin library for Shape and Topology Optimization.
namespace Rodin::Solver
Module for linear algebra systems.

Classes

template<class Scalar>
class Rodin::Solver::BiCGSTAB<Math::LinearSystem<Math::SparseMatrix<Scalar>, Math::Vector<Scalar>>>
Bi-conjugate gradient stabilized solver for non-symmetric sparse systems.