KASKADE 7 development version
|
A simple single-level symmetric Gauss-Seidel preconditioner. More...
#include <GaussSeidelPreconditioner.hh>
A simple single-level symmetric Gauss-Seidel preconditioner.
For a square matrix \( A = L + D + R \), this solves \( (wL+D) x = wy \) in forward mode, \( (D+wR) x = wy \) in backward mode, or \( (wL+D)(D+wR) x = w^2y \) in symmetric mode for some stepsize (or damping factor) \( w \), and thus realizes a SOR or SSOR method as a generalization of the Gauss-Seidel method.
Matrix |
Definition at line 51 of file GaussSeidelPreconditioner.hh.
Public Member Functions | |
GaussSeidelPreconditioner (Matrix const &A_, field_type w_=1.0, GaussSeidelPreconditionerMode mode_=GaussSeidelPreconditionerMode::SYMMETRIC) | |
Constructor. More... | |
void | apply (Domain &x, Range const &y) override |
field_type | applyDp (Domain &x, Range const &y) override |
bool | requiresInitializedInput () const override |
Returns true if the target vector x has to be initialized to zero before calling apply or applyDp. More... | |
virtual void | pre (typename MatrixTraits< Matrix >::NaturalDomain &, typename MatrixTraits< Matrix >::NaturalRange &) |
Preconditioner preparation. More... | |
virtual void | post (typename MatrixTraits< Matrix >::NaturalDomain &x) |
Preconditioner cleanup. More... | |
virtual field_type | applyDp (typename MatrixTraits< Matrix >::NaturalDomain &x, typename MatrixTraits< Matrix >::NaturalRange const &y)=0 |
Computes \( x \leftarrow By \) and returns \( \langle By, y \rangle \). More... | |
virtual Dune::SolverCategory::Category | category () const override |
returns the category of the operator More... | |
|
inline |
Constructor.
A | the matrix to be preconditioned. This is copied and stored internally, such that the provided matrix need not exist after the constructor call. The matrix must be square (not necessarily symmetric, though) and must have invertible diagonal elements. |
w | the stepsize or damping factor |
Definition at line 65 of file GaussSeidelPreconditioner.hh.
|
inlineoverride |
Definition at line 77 of file GaussSeidelPreconditioner.hh.
Referenced by Kaskade::GaussSeidelPreconditioner< Matrix, Domain, Range >::applyDp().
|
inlineoverride |
Definition at line 113 of file GaussSeidelPreconditioner.hh.
|
pure virtualinherited |
Computes \( x \leftarrow By \) and returns \( \langle By, y \rangle \).
|
inlineoverridevirtualinherited |
returns the category of the operator
From the Dune doxygen documentation it is unclear what this is supposed to mean. We return a dummy here.
Definition at line 242 of file symmetricOperators.hh.
|
inlinevirtualinherited |
Preconditioner cleanup.
The provided default implementation does nothing.
Definition at line 225 of file symmetricOperators.hh.
|
inlinevirtualinherited |
Preconditioner preparation.
The provided default implementation does nothing.
Definition at line 218 of file symmetricOperators.hh.
|
inlineoverridevirtual |
Returns true if the target vector x has to be initialized to zero before calling apply or applyDp.
Definition at line 119 of file GaussSeidelPreconditioner.hh.