Opm::Linear::ResidReductionCriterion< Vector > Class Template Reference

Provides a convergence criterion which looks at the reduction of the two-norm of the residual for the linear solvers. More...

#include <residreductioncriterion.hh>

Inheritance diagram for Opm::Linear::ResidReductionCriterion< Vector >:
Inheritance graph

Public Member Functions

 ResidReductionCriterion (Dune::ScalarProduct< Vector > &scalarProduct, Scalar tolerance=1e-6)
 
void setTolerance (Scalar tol)
 Set the maximum allowed weighted maximum of the reduction of the linear residual. More...
 
Scalar tolerance () const
 Return the maximum allowed weighted maximum of the reduction of the linear residual. More...
 
void setInitial (const Vector &, const Vector &curResid)
 Set the initial solution of the linear system of equations. More...
 
void update (const Vector &, const Vector &, const Vector &curResid)
 
bool converged () const
 Returns true if and only if the convergence criterion is met. More...
 
Scalar accuracy () const
 Returns the accuracy of the solution at the last update. More...
 
void printInitial (std::ostream &os=std::cout) const
 Prints the initial information about the convergence behaviour. More...
 
void print (Scalar iter, std::ostream &os=std::cout) const
 Prints the information about the convergence behaviour for the current iteration. More...
 
virtual bool failed () const
 Returns true if the convergence criterion cannot be met anymore because the solver has broken down. More...
 

Detailed Description

template<class Vector>
class Opm::Linear::ResidReductionCriterion< Vector >

Provides a convergence criterion which looks at the reduction of the two-norm of the residual for the linear solvers.

For the ResidReductionCriterion, the error of the solution is defined as

\[ e^k = \frac{\left| A x_k - b \right|}{\left| A x_0 - b \right|}\;, \]

Constructor & Destructor Documentation

◆ ResidReductionCriterion()

template<class Vector >
Opm::Linear::ResidReductionCriterion< Vector >::ResidReductionCriterion ( Dune::ScalarProduct< Vector > &  scalarProduct,
Scalar  tolerance = 1e-6 
)
inline

Member Function Documentation

◆ accuracy()

template<class Vector >
Scalar Opm::Linear::ResidReductionCriterion< Vector >::accuracy ( ) const
inlinevirtual

Returns the accuracy of the solution at the last update.

A value of zero means that the solution was exact.

Implements Opm::Linear::ConvergenceCriterion< Vector >.

Referenced by Opm::Linear::ResidReductionCriterion< Vector >::converged(), and Opm::Linear::ResidReductionCriterion< Vector >::print().

◆ converged()

template<class Vector >
bool Opm::Linear::ResidReductionCriterion< Vector >::converged ( ) const
inlinevirtual

◆ failed()

template<class Vector >
virtual bool Opm::Linear::ConvergenceCriterion< Vector >::failed ( ) const
inlinevirtualinherited

◆ print()

template<class Vector >
void Opm::Linear::ResidReductionCriterion< Vector >::print ( Scalar  iter,
std::ostream &  os = std::cout 
) const
inlinevirtual

Prints the information about the convergence behaviour for the current iteration.

Parameters
iterThe iteration number. The semantics of this parameter are chosen by the linear solver.
osThe output stream to which the message gets written.

Reimplemented from Opm::Linear::ConvergenceCriterion< Vector >.

References Opm::Linear::ResidReductionCriterion< Vector >::accuracy().

◆ printInitial()

template<class Vector >
void Opm::Linear::ResidReductionCriterion< Vector >::printInitial ( std::ostream &  os = std::cout) const
inlinevirtual

Prints the initial information about the convergence behaviour.

This method is called after setInitial() if the solver thinks it's a good idea to be verbose. In practice, "printing the initial information" means printing column headers and the initial state.

Parameters
osThe output stream to which the message gets written.

Reimplemented from Opm::Linear::ConvergenceCriterion< Vector >.

◆ setInitial()

template<class Vector >
void Opm::Linear::ResidReductionCriterion< Vector >::setInitial ( const Vector &  ,
const Vector &  curResid 
)
inlinevirtual

Set the initial solution of the linear system of equations.

This version of the method does NOT take the two-norm of the residual as argument. If the two-norm of the defect is available for the linear solver, the version of the update() method with it should be called.

Parameters
curSolThe current iterative solution of the linear system of equations
curResidThe residual vector of the current iterative solution of the linear system of equations

Implements Opm::Linear::ConvergenceCriterion< Vector >.

◆ setTolerance()

template<class Vector >
void Opm::Linear::ResidReductionCriterion< Vector >::setTolerance ( Scalar  tol)
inline

Set the maximum allowed weighted maximum of the reduction of the linear residual.

◆ tolerance()

template<class Vector >
Scalar Opm::Linear::ResidReductionCriterion< Vector >::tolerance ( ) const
inline

Return the maximum allowed weighted maximum of the reduction of the linear residual.

Referenced by Opm::Linear::ResidReductionCriterion< Vector >::converged().

◆ update()

template<class Vector >
void Opm::Linear::ResidReductionCriterion< Vector >::update ( const Vector &  ,
const Vector &  ,
const Vector &  curResid 
)
inlinevirtual

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