KASKADE 7 development version
|
An additive multigrid preconditioner for P1 elements. More...
#include <additiveMultigrid.hh>
An additive multigrid preconditioner for P1 elements.
This realizes an additive multigrid preconditioner. With a Jacobi smoother, the BPX preconditioner is obtained.
Smoother | a smoother type satisfying the SymmetricPreconditioner interface. The smoother must not rely on the matrix provided on construction to be available subsequently. Hence it should copy all required parts. |
Convenience functions for creating additive multigrid preconditioners are available as makeAdditiveMultiGrid and makeBPX.
Definition at line 46 of file additiveMultigrid.hh.
Public Types | |
using | domain_type = typename Smoother::domain_type |
using | range_type = typename Smoother::range_type |
using | Base = SymmetricPreconditioner< domain_type, range_type > |
typedef X::field_type | field_type |
Public Member Functions | |
AdditiveMultiGrid ()=default | |
Default constructor. More... | |
template<class Entry , class Index , class MakeSmoother , class MakeCoarsePreconditioner > | |
AdditiveMultiGrid (NumaBCRSMatrix< Entry, Index > A, std::vector< Prolongation > Ps, MakeSmoother const &makeSmoother, MakeCoarsePreconditioner const &makeCoarsePreconditioner, bool onlyLowerTriangle=false) | |
Constructor. More... | |
AdditiveMultiGrid (AdditiveMultiGrid &&other)=default | |
AdditiveMultiGrid & | operator= (AdditiveMultiGrid &&other)=default |
virtual void | apply (domain_type &x, range_type const &r) |
virtual Base::field_type | applyDp (domain_type &x, range_type const &r) |
Computes \( x \leftarrow By \) and returns \( \langle By, y \rangle \). More... | |
virtual bool | requiresInitializedInput () const |
Returns true if the target vector x has to be initialized to zero before calling apply or applyDp. More... | |
virtual void | pre (Smoother::domain_type &, Smoother::range_type &) |
Preconditioner preparation. More... | |
virtual void | post (Smoother::domain_type &x) |
Preconditioner cleanup. More... | |
virtual Dune::SolverCategory::Category | category () const override |
returns the category of the operator More... | |
using Kaskade::AdditiveMultiGrid< Smoother, Prolongation, CoarsePreconditioner >::Base = SymmetricPreconditioner<domain_type,range_type> |
Definition at line 51 of file additiveMultigrid.hh.
using Kaskade::AdditiveMultiGrid< Smoother, Prolongation, CoarsePreconditioner >::domain_type = typename Smoother::domain_type |
Definition at line 49 of file additiveMultigrid.hh.
|
inherited |
Definition at line 211 of file symmetricOperators.hh.
using Kaskade::AdditiveMultiGrid< Smoother, Prolongation, CoarsePreconditioner >::range_type = typename Smoother::range_type |
Definition at line 50 of file additiveMultigrid.hh.
|
default |
Default constructor.
|
inline |
Constructor.
Entry | the type of Galerkin matrix entries |
Index | the index type of Galerkin matrices (usually size_t) |
Definition at line 64 of file additiveMultigrid.hh.
|
default |
|
inlinevirtual |
Definition at line 80 of file additiveMultigrid.hh.
Referenced by Kaskade::AdditiveMultiGrid< Smoother, Prolongation, CoarsePreconditioner >::applyDp().
|
inlinevirtual |
Computes \( x \leftarrow By \) and returns \( \langle By, y \rangle \).
Implements Kaskade::SymmetricPreconditioner< Smoother::domain_type, Smoother::range_type >.
Definition at line 86 of file additiveMultigrid.hh.
|
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.
|
default |
|
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.
|
inlinevirtual |
Returns true if the target vector x has to be initialized to zero before calling apply or applyDp.
Implements Kaskade::SymmetricPreconditioner< Smoother::domain_type, Smoother::range_type >.
Definition at line 92 of file additiveMultigrid.hh.