16 #ifndef dealii_mg_base_h 17 #define dealii_mg_base_h 24 #include <deal.II/base/config.h> 25 #include <deal.II/base/subscriptor.h> 26 #include <deal.II/base/smartpointer.h> 27 #include <deal.II/lac/vector.h> 30 DEAL_II_NAMESPACE_OPEN
46 template <
typename VectorType>
58 virtual void vmult (
const unsigned int level,
60 const VectorType &src)
const = 0;
65 virtual void vmult_add (
const unsigned int level,
67 const VectorType &src)
const = 0;
72 virtual void Tvmult (
const unsigned int level,
74 const VectorType &src)
const = 0;
79 virtual void Tvmult_add (
const unsigned int level,
81 const VectorType &src)
const = 0;
102 template <
typename VectorType>
114 virtual void operator() (
const unsigned int level,
116 const VectorType &src)
const = 0;
167 template <
typename VectorType>
186 virtual void prolongate (
const unsigned int to_level,
188 const VectorType &src)
const = 0;
207 const VectorType &src)
const = 0;
233 template <
typename VectorType>
245 virtual void clear() = 0;
251 virtual void smooth (
const unsigned int level,
253 const VectorType &rhs)
const = 0;
273 virtual void apply (
const unsigned int level,
275 const VectorType &rhs)
const;
280 DEAL_II_NAMESPACE_CLOSE
virtual void prolongate(const unsigned int to_level, VectorType &dst, const VectorType &src) const =0
virtual void operator()(const unsigned int level, VectorType &dst, const VectorType &src) const =0
virtual ~MGTransferBase()=default
virtual void Tvmult(const unsigned int level, VectorType &dst, const VectorType &src) const =0
virtual void vmult(const unsigned int level, VectorType &dst, const VectorType &src) const =0
virtual ~MGSmootherBase()=default
virtual void vmult_add(const unsigned int level, VectorType &dst, const VectorType &src) const =0
virtual void smooth(const unsigned int level, VectorType &u, const VectorType &rhs) const =0
virtual unsigned int get_maxlevel() const =0
virtual void apply(const unsigned int level, VectorType &u, const VectorType &rhs) const
virtual void Tvmult_add(const unsigned int level, VectorType &dst, const VectorType &src) const =0
virtual void restrict_and_add(const unsigned int from_level, VectorType &dst, const VectorType &src) const =0
virtual ~MGCoarseGridBase()=default
virtual unsigned int get_minlevel() const =0