3.1-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Public Member Functions | List of all members
Dumux::GSBiCGSTABBackend Class Reference

Sequential GS-preconditioned BiCGSTAB solver. More...

#include <dumux/linear/seqsolverbackend.hh>

Inheritance diagram for Dumux::GSBiCGSTABBackend:
Inheritance graph

Description

Sequential GS-preconditioned BiCGSTAB solver.

Solver: The BiCGSTAB (stabilized biconjugate gradients method) solver has faster and smoother convergence than the original BiCG. While, it can be applied to nonsymmetric matrices, the preconditioner SSOR assumes symmetry.
See: Van der Vorst, H. A. (1992). "Bi-CGSTAB: A Fast and Smoothly Converging Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems". SIAM J. Sci. and Stat. Comput. 13 (2): 631–644. doi:10.1137/0913035.

Preconditioner: GS Gauss-Seidel method. It can be damped by the relaxation parameter LinearSolver.PreconditionerRelaxation. In each preconditioning step, it is applied as often as given by the parameter LinearSolver.PreconditionerIterations.
See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.

Public Types

using Scalar = double
 

Public Member Functions

template<int precondBlockLevel = 1, class Matrix , class Vector >
bool solve (const Matrix &A, Vector &x, const Vector &b)
 
std::string name () const
 
 LinearSolver (const std::string &paramGroup="")
 Contruct the solver. More...
 
const std::string & paramGroup () const
 the parameter group for getting parameter from the parameter tree More...
 
int verbosity () const
 the verbosity level More...
 
void setVerbosity (int v)
 set the verbosity level More...
 
int maxIter () const
 the maximum number of linear solver iterations More...
 
void setMaxIter (int i)
 set the maximum number of linear solver iterations More...
 
double residReduction () const
 the linear solver residual reduction More...
 
void setResidualReduction (double r)
 set the linear solver residual reduction More...
 
double relaxation () const
 the linear solver relaxation factor More...
 
void setRelaxation (double r)
 set the linear solver relaxation factor More...
 
int precondIter () const
 the number of preconditioner iterations More...
 
void setPrecondIter (int i)
 set the number of preconditioner iterations More...
 

Member Typedef Documentation

◆ Scalar

using Dumux::LinearSolver::Scalar = double
inherited

export Scalar type (might be needed to set parameters from output) TODO: Do we need this?

Member Function Documentation

◆ LinearSolver()

Dumux::LinearSolver::LinearSolver ( const std::string &  paramGroup = "")
inline

Contruct the solver.

Note
Read parameters from the parameter tree
  • LinearSolver.Verbosity the verbosity level of the linear solver
  • LinearSolver.MaxIterations the maximum iterations of the solver
  • LinearSolver.ResidualReduction the residual reduction threshold, i.e. stopping criterion
  • LinearSolver.PreconditionerRelaxation precondition relaxation
  • LinearSolver.PreconditionerIterations the number of preconditioner iterations

◆ maxIter()

int Dumux::LinearSolver::maxIter ( ) const
inlineinherited

the maximum number of linear solver iterations

◆ name()

std::string Dumux::GSBiCGSTABBackend::name ( ) const
inline

◆ paramGroup()

const std::string & Dumux::LinearSolver::paramGroup ( ) const
inlineinherited

the parameter group for getting parameter from the parameter tree

◆ precondIter()

int Dumux::LinearSolver::precondIter ( ) const
inlineinherited

the number of preconditioner iterations

◆ relaxation()

double Dumux::LinearSolver::relaxation ( ) const
inlineinherited

the linear solver relaxation factor

◆ residReduction()

double Dumux::LinearSolver::residReduction ( ) const
inlineinherited

the linear solver residual reduction

◆ setMaxIter()

void Dumux::LinearSolver::setMaxIter ( int  i)
inlineinherited

set the maximum number of linear solver iterations

◆ setPrecondIter()

void Dumux::LinearSolver::setPrecondIter ( int  i)
inlineinherited

set the number of preconditioner iterations

◆ setRelaxation()

void Dumux::LinearSolver::setRelaxation ( double  r)
inlineinherited

set the linear solver relaxation factor

◆ setResidualReduction()

void Dumux::LinearSolver::setResidualReduction ( double  r)
inlineinherited

set the linear solver residual reduction

◆ setVerbosity()

void Dumux::LinearSolver::setVerbosity ( int  v)
inlineinherited

set the verbosity level

◆ solve()

template<int precondBlockLevel = 1, class Matrix , class Vector >
bool Dumux::GSBiCGSTABBackend::solve ( const Matrix &  A,
Vector &  x,
const Vector &  b 
)
inline

◆ verbosity()

int Dumux::LinearSolver::verbosity ( ) const
inlineinherited

the verbosity level


The documentation for this class was generated from the following file: