16 #ifndef dealii_mg_base_h 17 #define dealii_mg_base_h 24 #include <deal.II/base/config.h> 26 #include <deal.II/base/smartpointer.h> 27 #include <deal.II/base/subscriptor.h> 29 #include <deal.II/lac/vector.h> 32 DEAL_II_NAMESPACE_OPEN
48 template <
typename VectorType>
61 vmult(
const unsigned int level,
63 const VectorType & src)
const = 0;
71 const VectorType & src)
const = 0;
77 Tvmult(
const unsigned int level,
79 const VectorType & src)
const = 0;
87 const VectorType & src)
const = 0;
110 template <
typename VectorType>
125 const VectorType & src)
const = 0;
176 template <
typename VectorType>
198 const VectorType & src)
const = 0;
218 const VectorType & src)
const = 0;
244 template <
typename VectorType>
264 smooth(
const unsigned int level,
266 const VectorType & rhs)
const = 0;
287 apply(
const unsigned int level, VectorType &u,
const VectorType &rhs)
const;
292 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 ~MGCoarseGridBase() override=default
virtual void Tvmult(const unsigned int level, VectorType &dst, const VectorType &src) const =0
virtual ~MGSmootherBase() override=default
virtual void vmult(const unsigned int level, VectorType &dst, const VectorType &src) const =0
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 ~MGTransferBase() override=default
virtual unsigned int get_minlevel() const =0