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

Richardson preconditioner. More...

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

Inheritance diagram for Dune::Richardson< X, Y >:

## Public Types

typedef X | domain_type
| The domain type of the preconditioner.
typedef Y | range_type
| The range type of the preconditioner.
typedef X::field_type | field_type
| The field type of the preconditioner.
typedef Simd::Scalar< field_type > | scalar_field_type
| scalar type underlying the field_type
typedef FieldTraits< scalar_field_type >::real_type | real_field_type
| real scalar type underlying the field_type

## Public Member Functions

| Richardson (real_field_type w=1.0)
| Constructor.
| Richardson (const ParameterTree &configuration)
| Constructor.
void | pre (X &x, Y &b) override
| Prepare the preconditioner.
void | apply (X &v, const Y &d) override
| Apply the precondioner.
void | post (X &x) override
| Clean up.
SolverCategory::Category | category () const override
| Category of the preconditioner (see SolverCategory::Category).

## Detailed Description

template<class X, class Y>
class Dune::Richardson< X, Y >

Richardson preconditioner.

Multiply simply by a constant.

Template Parameters

  X | Type of the update
  Y | Type of the defect

## Member Typedef Documentation

## domain_type

template<class X, class Y>

typedef X Dune::Richardson< X, Y >::domain_type

The domain type of the preconditioner.

## field_type

template<class X, class Y>

typedef X::field_type Dune::Richardson< X, Y >::field_type

The field type of the preconditioner.

## range_type

template<class X, class Y>

typedef Y Dune::Richardson< X, Y >::range_type

The range type of the preconditioner.

## real_field_type

template<class X, class Y>

typedef FieldTraits<scalar_field_type>::real_type Dune::Richardson< X, Y >::real_field_type

real scalar type underlying the field_type

## scalar_field_type

template<class X, class Y>

typedef Simd::Scalar<field_type> Dune::Richardson< X, Y >::scalar_field_type

scalar type underlying the field_type

## Constructor & Destructor Documentation

## Richardson() [1/2]

template<class X, class Y>

Dune::Richardson< X, Y >::Richardson | ( | real_field_type | w = 1.0 | ) |

inline

Constructor.

Constructor gets all parameters to operate the prec.

Parameters

  w | The relaxation factor.

## Richardson() [2/2]

template<class X, class Y>

Dune::Richardson< X, Y >::Richardson | ( | const ParameterTree & | configuration | ) |

inline

Constructor.

Parameters

  configuration | ParameterTree containing preconditioner parameters.

ParameterTree Key | Meaning
--- | ---
relaxation | The relaxation factor. default=1.0

See ISTL_Factory for the ParameterTree layout and examples.

## Member Function Documentation

## apply()

template<class X, class Y>

void Dune::Richardson< X, Y >::apply | ( | X & | v,
|  | const Y & | d )

inline override virtual

Apply the precondioner.

Apply one step of the preconditioner to the system A(v)=d.

On entry v=0 and d=b-A(x) (although this might not be computed in that way. On exit v contains the update, i.e one step computes where is the approximate inverse of the operator characterizing the preconditioner.

Parameters

  [out] | v | The update to be computed
  | d | The current defect.

Implements Dune::Preconditioner< X, Y >.

## category()

template<class X, class Y>

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

inline override virtual

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

Implements Dune::Preconditioner< X, Y >.

## post()

template<class X, class Y>

void Dune::Richardson< X, Y >::post | ( | X & | x | ) |

inline override virtual

Clean up.

Clean up.

This method is called after the last apply call for the linear system to be solved. Memory may be deallocated safely here. x is the solution of the linear equation.

Parameters

  x | The right hand side of the equation.

Implements Dune::Preconditioner< X, Y >.

## pre()

template<class X, class Y>

void Dune::Richardson< X, Y >::pre | ( | X & | x,
|  | Y & | b )

inline override virtual

Prepare the preconditioner.

Prepare the preconditioner.

A solver solves a linear operator equation A(x)=b by applying one or several steps of the preconditioner. The method pre() is called before the first apply operation. b and x are right hand side and solution vector of the linear system respectively. It may. e.g., scale the system, allocate memory or compute a (I)LU decomposition. Note: The ILU decomposition could also be computed in the constructor or with a separate method of the derived method if several linear systems with the same matrix are to be solved.

Note
  if a preconditioner is copied (e.g. for a second thread) again the pre() method has to be called to ensure proper memory management.

X x(0.0);
Y b = ...; // rhs
Preconditioner<X,Y> prec(...);
prec.pre(x,b); // prepare the preconditioner
prec.apply(x,b); // can be called multiple times now...
prec.post(x); // cleanup internal state
Dune::Preconditioner
Base class for matrix free definition of preconditioners.
Definition preconditioner.hh:33

Parameters

  x | The left hand side of the equation.
  b | The right hand side of the equation.

Implements Dune::Preconditioner< X, Y >.

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

- preconditioners.hh