Loading...
Searching...
No Matches
Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication > Class Template Reference
Linear

Provides a convergence criterion for the linear solvers which looks at the weighted maximum of the difference between two iterations. More...

`#include <fixpointcriterion.hh>`

Inheritance diagram for Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >:

## Public Member Functions

| FixPointCriterion (const CollectiveCommunication &comm)
| FixPointCriterion (const CollectiveCommunication &comm, const Vector &weightVec, Scalar reduction)
void | setWeight (const Vector &weightVec)
| Sets the relative weight of a primary variable.
Scalar | weight (int outerIdx, int innerIdx) const
| Return the relative weight of a primary variable.
void | setTolerance (Scalar tol)
| Set the maximum allowed weighted maximum difference between two iterations.
Scalar | tolerance () const
| Return the maximum allowed weighted difference between two iterations for the solution considered to be converged.
void | setInitial (const Vector &curSol, const Vector &) override
| Set the initial solution of the linear system of equations.
void | update (const Vector &curSol, const Vector &, const Vector &) override
| Update the internal members of the convergence criterion with the current solution.
bool | converged () const override
| Returns true if and only if the convergence criterion is met.
Scalar | accuracy () const
| Returns the accuracy of the solution at the last update.
Public Member Functions inherited from Opm::Linear::ConvergenceCriterion< Vector >
virtual | ~ConvergenceCriterion ()
| Destructor.
virtual bool | failed () const
| Returns true if the convergence criterion cannot be met anymore because the solver has broken down.
virtual void | printInitial (std::ostream &=std::cout) const
| Prints the initial information about the convergence behaviour.
virtual void | print (Scalar, std::ostream &=std::cout) const
| Prints the information about the convergence behaviour for the current iteration.

## Detailed Description

template<class Vector, class CollectiveCommunication>
class Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >

Provides a convergence criterion for the linear solvers which looks at the weighted maximum of the difference between two iterations.

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

where is the difference between two consequtive iterative solution vectors and and is the weight of the -th degree of freedom.

This criterion requires that the block type of the vector is a Dune::FieldVector

## Member Function Documentation

## accuracy()

template<class Vector, class CollectiveCommunication>

Scalar Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >::accuracy | ( |  | ) | const

inline virtual

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 >.

## converged()

template<class Vector, class CollectiveCommunication>

bool Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >::converged | ( |  | ) | const

inline override virtual

Returns true if and only if the convergence criterion is met.

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

## setInitial()

template<class Vector, class CollectiveCommunication>

void Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >::setInitial | ( | const Vector & | curSol,
|  | const Vector & | )

inline override virtual

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

  curSol | The current iterative solution of the linear system of equations
  curResid | The residual vector of the current iterative solution of the linear system of equations

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

## setTolerance()

template<class Vector, class CollectiveCommunication>

void Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >::setTolerance | ( | Scalar | tol | ) |

inline

Set the maximum allowed weighted maximum difference between two iterations.

Set the maximum allowed maximum difference between two iterationsfor the solution considered to be converged.

## setWeight()

template<class Vector, class CollectiveCommunication>

void Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >::setWeight | ( | const Vector & | weightVec | ) |

inline

Sets the relative weight of a primary variable.

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

where is the difference between two consequtive iterative solution vectors and and is the weight of the -th degree of freedom.

This method is specific to the FixPointCriterion.

Parameters

  weightVec | A Dune::BlockVector<Dune::FieldVector<Scalar, n> > with the relative weights of the degrees of freedom

## update()

template<class Vector, class CollectiveCommunication>

void Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >::update | ( | const Vector & | curSol,
|  | const Vector & | ,
|  | const Vector & | )

inline override virtual

Update the internal members of the convergence criterion with the current solution.

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

  curSol | The current iterative solution of the linear system of equations
  changeIndicator | A vector where all non-zero values indicate that the solution has changed since the last iteration.
  curResid | The residual vector of the current iterative solution of the linear system of equations

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

## weight()

template<class Vector, class CollectiveCommunication>

Scalar Opm::Linear::FixPointCriterion< Vector, CollectiveCommunication >::weight | ( | int | outerIdx,
|  | int | innerIdx ) const

inline

Return the relative weight of a primary variable.

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

where is the difference between two consequtive iterative solution vectors and and is the weight of the -th degree of freedom.

This method is specific to the FixPointCriterion.

Parameters

  outerIdx | The index of the outer vector (i.e. Dune::BlockVector)
  innerIdx | The index of the inner vector (i.e. Dune::FieldVector)

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

- opm/simulators/linalg/fixpointcriterion.hh