From a8d40697bb622516c0de52e3db9682e831e04323 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Fri, 19 Apr 2024 13:27:28 -0600 Subject: [PATCH] Explain the term 'restriction' in FiniteElement. --- include/deal.II/fe/fe.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/deal.II/fe/fe.h b/include/deal.II/fe/fe.h index f55dbcf96b..1ca72ee06a 100644 --- a/include/deal.II/fe/fe.h +++ b/include/deal.II/fe/fe.h @@ -1040,6 +1040,21 @@ public: * FiniteElement::ExcProjectionVoid. You can check whether this would happen * by first calling the restriction_is_implemented() or the * isotropic_restriction_is_implemented() function. + * + * @note The term "restriction" is also used in the definition of multigrid + * methods, but in a different context. For the current function, we are + * interested in the interpolation of a finite element function from + * child cells to the parent cell, and this results in a situation where + * you have a function that is constant on a fine mesh, the function + * "restricted" to the coarse mesh will also be constant and have the same + * value. In contrast, in the multigrid context, the restriction operation + * is applied to residual (rather than solution) vectors, and is usually + * chosen as the transpose of the prolongation operation. For the multigrid + * restriction operation, one would consequently not typically expect + * that it maps a constant function to a constant function. In other words, + * the *meaning* of the term "restriction" in the current context and in + * the multigrid context is quite different, and the two should not + * be confused. */ virtual const FullMatrix & get_restriction_matrix(const unsigned int child, -- 2.39.5