Rodin/Solver/IDRS.h file

IDRS(s) solver for (generally) non-symmetric linear systems.

This header provides the IDRS(s) (Induced Dimension Reduction) solver class, an iterative method for solving linear systems:

\[ Ax = b \]

for general (possibly non-symmetric) matrices.

IDR(s) is typically competitive with BiCGSTAB/GMRES for certain nonsymmetric problems, with short recurrences and modest memory footprint.

Notes

  • This implementation uses Eigen's unsupported IDRS.

Usage Example

Solver::IDRS solver(problem);
solver.setTolerance(1e-10).setMaxIterations(1000).setS(8).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::IDRS<Math::LinearSystem<Math::SparseMatrix<Scalar>, Math::Vector<Scalar>>>
IDRS(s) solver for sparse systems.
template<class Scalar>
class Rodin::Solver::IDRS<Math::LinearSystem<Math::Matrix<Scalar>, Math::Vector<Scalar>>>
IDRS(s) solver for dense systems.