version 3.10-dev
Dumux::Detail::DirectIstlSolver< LSTraits, LATraits, Solver, convertMultiTypeVectorAndMatrix > Class Template Reference

Direct dune-istl linear solvers.

#include <dumux/linear/istlsolvers.hh>

Inheritance diagram for Dumux::Detail::DirectIstlSolver< LSTraits, LATraits, Solver, convertMultiTypeVectorAndMatrix >:

Public Types

using Scalar = double
 

Public Member Functions

IstlSolverResult solve (const Matrix &A, XVector &x, const BVector &b)
 Solve the linear system Ax = b. More...
 
IstlSolverResult solve (XVector &x, const BVector &b)
 Solve the linear system Ax = b using the matrix set with setMatrix. More...
 
void setMatrix (std::shared_ptr< Matrix > A)
 Set the matrix A of the linear system Ax = b for reuse. More...
 
void setMatrix (Matrix &A)
 Set the matrix A of the linear system Ax = b for reuse. More...
 
std::string name () const
 name of the linear solver More...
 
 LinearSolver (const std::string &paramGroup="")
 Construct the solver. More...
 
template<class Matrix , class Vector >
bool solve (const Matrix &A, Vector &x, const Vector &b)
 Solve the linear system Ax = b. More...
 
template<class Vector >
auto norm (const Vector &x) const
 
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...
 
Scalar residReduction () const
 the linear solver residual reduction More...
 
void setResidualReduction (Scalar r)
 set the linear solver residual reduction More...
 
Scalar relaxation () const
 the linear solver relaxation factor More...
 
void setRelaxation (Scalar 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...
 
int precondVerbosity () const
 the preconditioner verbosity More...
 
void setPrecondVerbosity (int verbosityLevel)
 set the preconditioner verbosity 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()

template<class LSTraits , class LATraits , template< class M > class Solver, bool convertMultiTypeVectorAndMatrix = isMultiTypeBlockVector<typename LATraits::Vector>::value>
Dumux::LinearSolver::LinearSolver ( const std::string &  paramGroup = "")
inline
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.Preconditioner.Relaxation precondition relaxation
  • LinearSolver.Preconditioner.Iterations the number of preconditioner iterations
  • LinearSolver.Preconditioner.Verbosity the preconditioner verbosity level

◆ maxIter()

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

◆ name()

template<class LSTraits , class LATraits , template< class M > class Solver, bool convertMultiTypeVectorAndMatrix = isMultiTypeBlockVector<typename LATraits::Vector>::value>
std::string Dumux::Detail::DirectIstlSolver< LSTraits, LATraits, Solver, convertMultiTypeVectorAndMatrix >::name ( ) const
inline

◆ norm()

template<class Vector >
auto Dumux::LinearSolver::norm ( const Vector &  x) const
inlineinherited

◆ paramGroup()

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

◆ precondIter()

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

◆ precondVerbosity()

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

◆ relaxation()

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

◆ residReduction()

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

◆ setMatrix() [1/2]

template<class LSTraits , class LATraits , template< class M > class Solver, bool convertMultiTypeVectorAndMatrix = isMultiTypeBlockVector<typename LATraits::Vector>::value>
void Dumux::Detail::DirectIstlSolver< LSTraits, LATraits, Solver, convertMultiTypeVectorAndMatrix >::setMatrix ( Matrix &  A)
inline
Note
The client has to take care of the lifetime management of A

◆ setMatrix() [2/2]

template<class LSTraits , class LATraits , template< class M > class Solver, bool convertMultiTypeVectorAndMatrix = isMultiTypeBlockVector<typename LATraits::Vector>::value>
void Dumux::Detail::DirectIstlSolver< LSTraits, LATraits, Solver, convertMultiTypeVectorAndMatrix >::setMatrix ( std::shared_ptr< Matrix >  A)
inline

◆ setMaxIter()

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

◆ setPrecondIter()

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

◆ setPrecondVerbosity()

void Dumux::LinearSolver::setPrecondVerbosity ( int  verbosityLevel)
inlineinherited

◆ setRelaxation()

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

◆ setResidualReduction()

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

◆ setVerbosity()

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

◆ solve() [1/3]

template<class Matrix , class Vector >
bool Dumux::LinearSolver::solve ( const Matrix &  A,
Vector &  x,
const Vector &  b 
)
inlineinherited
Note
This has to be overloaded by the actual solver

◆ solve() [2/3]

template<class LSTraits , class LATraits , template< class M > class Solver, bool convertMultiTypeVectorAndMatrix = isMultiTypeBlockVector<typename LATraits::Vector>::value>
IstlSolverResult Dumux::Detail::DirectIstlSolver< LSTraits, LATraits, Solver, convertMultiTypeVectorAndMatrix >::solve ( const Matrix &  A,
XVector &  x,
const BVector &  b 
)
inline

◆ solve() [3/3]

template<class LSTraits , class LATraits , template< class M > class Solver, bool convertMultiTypeVectorAndMatrix = isMultiTypeBlockVector<typename LATraits::Vector>::value>
IstlSolverResult Dumux::Detail::DirectIstlSolver< LSTraits, LATraits, Solver, convertMultiTypeVectorAndMatrix >::solve ( XVector &  x,
const BVector &  b 
)
inline

◆ verbosity()

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

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