Loading...
Searching...
No Matches
Dune::RestartedFlexibleGMResSolver< X, Y, F > Class Template Reference
Iterative Solvers Template Library (ISTL) » Iterative Solvers

implements the Flexible Generalized Minimal Residual (FGMRes) method (right preconditioned) More...

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

Inheritance diagram for Dune::RestartedFlexibleGMResSolver< X, Y, F >:

## 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, Y &b, double reduction, InverseOperatorResult &res) override
| Apply inverse operator.
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.
SolverCategory::Category | category () const override
| Category of the solver (see SolverCategory::Category).
std::string | name () const

## Protected Types

enum |
enum |

## Protected Member Functions

void | update (X &w, int i, const std::vector< std::vector< field_type, fAlloc > > &H, const std::vector< field_type, fAlloc > &s, const std::vector< X > &v)
std::enable_if< std::is_same< field_type, real_type >::value, T >::type | conjugate (const T &t)
void | generatePlaneRotation (field_type &dx, field_type &dy, real_type &cs, field_type &sn)
void | applyPlaneRotation (field_type &dx, field_type &dy, real_type &cs, field_type &sn)
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

int | _restart
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 Y = X, class F = Y>
class Dune::RestartedFlexibleGMResSolver< X, Y, F >

implements the Flexible Generalized Minimal Residual (FGMRes) method (right preconditioned)

FGMRes solves the right-preconditioned unsymmetric linear system Ax = b using the Flexible Generalized Minimal Residual method. It is flexible because the preconditioner can change in every iteration, which allows to use Krylov solvers without fixed number of iterations as preconditioners. Needs more memory than GMRes.

Template Parameters

  X | trial vector, vector type of the solution
  Y | test vector, vector type of the RHS
  F | vector type for orthonormal basis of Krylov space

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

## 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]

template<class X, class Y = X, class F = Y>

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

inline override

Apply inverse operator.

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

Note
  Currently, the RestartedFlexibleGMResSolver aborts when it detects a breakdown.

## apply() [3/3]

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

inline override virtual inherited

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

Note
  Currently, the RestartedGMResSolver aborts when it detects a breakdown.

Implements Dune::InverseOperator< X, X >.

## applyPlaneRotation()

void Dune::RestartedGMResSolver< X, X, X >::applyPlaneRotation | ( | field_type & | dx,
|  | field_type & | dy,
|  | real_type & | cs,
|  | field_type & | sn )

inline protected inherited

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

## conjugate()

std::enable_if< std::is_same< field_type, real_type >::value, T >::type Dune::RestartedGMResSolver< X, X, X >::conjugate | ( | const T & | t | ) |

inline protected inherited

## generatePlaneRotation()

void Dune::RestartedGMResSolver< X, X, X >::generatePlaneRotation | ( | field_type & | dx,
|  | field_type & | dy,
|  | real_type & | cs,
|  | field_type & | sn )

inline protected inherited

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

## update()

void Dune::RestartedGMResSolver< X, X, X >::update | ( | X & | w,
|  | int | i,
|  | const std::vector< std::vector< field_type, fAlloc > > & | H,
|  | const std::vector< field_type, fAlloc > & | s,
|  | const std::vector< X > & | v )

inline protected inherited

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

## _restart

int Dune::RestartedGMResSolver< X, X, X >::_restart

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