Loading...
Searching...
No Matches
Dune::MINRESSolver< X > Class Template Referenceabstract
Iterative Solvers Template Library (ISTL) » Iterative Solvers

Minimal Residual Method (MINRES). More...

`#include <dune/istl/solvers.hh>`

Inheritance diagram for Dune::MINRESSolver< X >:

## Public Types

typedef X | domain_type
| Type of the domain of the operator to be inverted.
typedef X | domain_type
| Type of the domain of the operator to be inverted.
typedef X | range_type
| Type of the range of the operator to be inverted.
typedef X | range_type
| Type of the range of the operator to be inverted.
typedef X::field_type | field_type
| The field type of the operator.
typedef X::field_type | field_type
| The field type of the operator.
typedef FieldTraits< field_type >::real_type | real_type
| The real type of the field type (is the same if using real numbers, but differs for std::complex).
typedef FieldTraits< field_type >::real_type | real_type
| The real type of the field type (is the same if using real numbers, but differs for std::complex).
typedef Simd::Scalar< real_type > | scalar_real_type
| scalar type underlying the field_type
typedef Simd::Scalar< real_type > | scalar_real_type
| scalar type underlying the field_type

## Public Member Functions

void | apply (X &x, X &b, InverseOperatorResult &res) override
| Apply inverse operator.
void | apply (X &x, X &b, double reduction, InverseOperatorResult &res) override
| Apply inverse operator with given reduction factor.
virtual void | apply (X &x, X &b, double reduction, InverseOperatorResult &res)=0
| apply inverse operator, with given convergence criteria.
SolverCategory::Category | category () const override
| Category of the solver (see SolverCategory::Category).
std::string | name () const

## Protected Types

using | Iteration = typename IterativeSolver<X,X>::template Iteration<unsigned int>
enum |
enum |

## Protected Member Functions

void | printHeader (std::ostream &s) const
| helper function for printing header of solver output
void | printHeader (std::ostream &s) const
| helper function for printing header of solver output
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm, const DataType &norm_old) const
| helper function for printing solver output
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm) const
| helper function for printing solver output
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm, const DataType &norm_old) const
| helper function for printing solver output
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm) const
| helper function for printing solver output

## Protected Attributes

std::shared_ptr< const LinearOperator< X, X > > | _op
std::shared_ptr< Preconditioner< X, X > > | _prec
std::shared_ptr< const ScalarProduct< X > > | _sp
scalar_real_type | _reduction
int | _maxit
int | _verbose
SolverCategory::Category | _category

## Detailed Description

template<class X>
class Dune::MINRESSolver< X >

Minimal Residual Method (MINRES).

Symmetrically Preconditioned MINRES as in A. Greenbaum, 'Iterative Methods for Solving Linear Systems', pp. 121 Iterative solver for symmetric indefinite operators. Note that in order to ensure the (symmetrically) preconditioned system to remain symmetric, the preconditioner has to be spd.

## Member Typedef Documentation

## domain_type [1/2]

typedef X Dune::InverseOperator< X, X >::domain_type

inherited

Type of the domain of the operator to be inverted.

## domain_type [2/2]

typedef X Dune::InverseOperator< X, X >::domain_type

inherited

Type of the domain of the operator to be inverted.

## field_type [1/2]

typedef X::field_type Dune::InverseOperator< X, X >::field_type

inherited

The field type of the operator.

## field_type [2/2]

typedef X::field_type Dune::InverseOperator< X, X >::field_type

inherited

The field type of the operator.

## Iteration

template<class X>

using Dune::MINRESSolver< X >::Iteration = typename IterativeSolver<X,X>::template Iteration<unsigned int>

protected

## range_type [1/2]

typedef X Dune::InverseOperator< X, X >::range_type

inherited

Type of the range of the operator to be inverted.

## range_type [2/2]

typedef X Dune::InverseOperator< X, X >::range_type

inherited

Type of the range of the operator to be inverted.

## real_type [1/2]

typedef FieldTraits<field_type>::real_type Dune::InverseOperator< X, X >::real_type

inherited

The real type of the field type (is the same if using real numbers, but differs for std::complex).

## real_type [2/2]

typedef FieldTraits<field_type>::real_type Dune::InverseOperator< X, X >::real_type

inherited

The real type of the field type (is the same if using real numbers, but differs for std::complex).

## scalar_real_type [1/2]

typedef Simd::Scalar<real_type> Dune::InverseOperator< X, X >::scalar_real_type

inherited

scalar type underlying the field_type

## scalar_real_type [2/2]

typedef Simd::Scalar<real_type> Dune::InverseOperator< X, X >::scalar_real_type

inherited

scalar type underlying the field_type

## Member Enumeration Documentation

## anonymous enum [1/2]

anonymous enum

protected inherited

## anonymous enum [2/2]

anonymous enum

protected inherited

## Member Function Documentation

## apply() [1/3]

void Dune::IterativeSolver< X, X >::apply | ( | X & | x,
|  | X & | b,
|  | double | reduction,
|  | InverseOperatorResult & | res )

inline override virtual inherited

Apply inverse operator with given reduction factor.

apply inverse operator, with given convergence criteria.

Warning
  Right hand side b may be overwritten!

Parameters

  x | The left hand side to store the result in.
  b | The right hand side
  reduction | The minimum defect reduction to achieve.
  res | Object to store the statistics about applying the operator.

Exceptions

  SolverAbort | When the solver detects a problem and cannot continue

Implements Dune::InverseOperator< X, X >.

## apply() [2/3]

virtual void Dune::InverseOperator< X, X >::apply | ( | X & | x,
|  | X & | b,
|  | double | reduction,
|  | InverseOperatorResult & | res )

pure virtual inherited

apply inverse operator, with given convergence criteria.

Warning
  Right hand side b may be overwritten!

Parameters

  x | The left hand side to store the result in.
  b | The right hand side
  reduction | The minimum defect reduction to achieve.
  res | Object to store the statistics about applying the operator.

Exceptions

  SolverAbort | When the solver detects a problem and cannot continue

## apply() [3/3]

template<class X>

void Dune::MINRESSolver< X >::apply | ( | X & | x,
|  | X & | b,
|  | InverseOperatorResult & | res )

inline override virtual

Apply inverse operator.

Apply inverse operator,.

Warning
  Note: right hand side b may be overwritten!

Parameters

  x | The left hand side to store the result in.
  b | The right hand side
  res | Object to store the statistics about applying the operator.

Exceptions

  SolverAbort | When the solver detects a problem and cannot continue

Implements Dune::InverseOperator< X, X >.

## category()

SolverCategory::Category Dune::IterativeSolver< X, X >::category | ( |  | ) | const

inline override virtual inherited

Category of the solver (see SolverCategory::Category).

Implements Dune::InverseOperator< X, X >.

## name()

std::string Dune::IterativeSolver< X, X >::name | ( |  | ) | const

inline inherited

## printHeader() [1/2]

void Dune::InverseOperator< X, X >::printHeader | ( | std::ostream & | s | ) | const

inline protected inherited

helper function for printing header of solver output

## printHeader() [2/2]

void Dune::InverseOperator< X, X >::printHeader | ( | std::ostream & | s | ) | const

inline protected inherited

helper function for printing header of solver output

## printOutput() [1/4]

void Dune::InverseOperator< X, X >::printOutput | ( | std::ostream & | s,
|  | const CountType & | iter,
|  | const DataType & | norm ) const

inline protected inherited

helper function for printing solver output

## printOutput() [2/4]

void Dune::InverseOperator< X, X >::printOutput | ( | std::ostream & | s,
|  | const CountType & | iter,
|  | const DataType & | norm,
|  | const DataType & | norm_old ) const

inline protected inherited

helper function for printing solver output

## printOutput() [3/4]

void Dune::InverseOperator< X, X >::printOutput | ( | std::ostream & | s,
|  | const CountType & | iter,
|  | const DataType & | norm ) const

inline protected inherited

helper function for printing solver output

## printOutput() [4/4]

void Dune::InverseOperator< X, X >::printOutput | ( | std::ostream & | s,
|  | const CountType & | iter,
|  | const DataType & | norm,
|  | const DataType & | norm_old ) const

inline protected inherited

helper function for printing solver output

## Member Data Documentation

## _category

SolverCategory::Category Dune::IterativeSolver< X, X >::_category

protected inherited

## _maxit

int Dune::IterativeSolver< X, X >::_maxit

protected inherited

## _op

std::shared_ptr<const LinearOperator<X,X> > Dune::IterativeSolver< X, X >::_op

protected inherited

## _prec

std::shared_ptr<Preconditioner<X,X> > Dune::IterativeSolver< X, X >::_prec

protected inherited

## _reduction

scalar_real_type Dune::IterativeSolver< X, X >::_reduction

protected inherited

## _sp

std::shared_ptr<const ScalarProduct<X> > Dune::IterativeSolver< X, X >::_sp

protected inherited

## _verbose

int Dune::IterativeSolver< X, X >::_verbose

protected inherited

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

- solvers.hh