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

Preconditioned loop solver. More...

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

Inheritance diagram for Dune::LoopSolver< 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::LoopSolver< X >

Preconditioned loop solver.

Implements a preconditioned loop. Using this class every Preconditioner can be turned into a solver. The solver will apply one preconditioner step in each iteration loop.

## 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::LoopSolver< 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::LoopSolver< X >::apply | ( | X & | x,
|  | X & | b,
|  | InverseOperatorResult & | res )

inline override virtual

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