From 801d38ded34f383fcc79bca634e9de41019ff083 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Thu, 6 Apr 2017 09:21:27 -0600 Subject: [PATCH] Update a glossary entry on node functionals. --- doc/doxygen/headers/glossary.h | 37 ++++++++++++++++++++++++---------- include/deal.II/fe/fe.h | 3 ++- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/doc/doxygen/headers/glossary.h b/doc/doxygen/headers/glossary.h index 7353a9f1e9..36193541dc 100644 --- a/doc/doxygen/headers/glossary.h +++ b/doc/doxygen/headers/glossary.h @@ -1282,22 +1282,30 @@ * *
@anchor GlossNodes Node values or node functionals
* - *
It is customary to define a FiniteElement as a pair consisting - * of a local function space and a set of node values $N_i$ on the - * mesh cells (usually defined on the @ref GlossReferenceCell - * "reference cell"). Then, the basis of the local function space is - * chosen such that $N_i(v_j) = \delta_{ij}$, the Kronecker delta. - * - * This splitting has several advantages, concerning analysis as well + *
It is customary to define a finite element as a triple + * $(K,P,\Psi)$ where + * - $K$ is the cell, where in deal.II this is always a line segment, + * quadrilateral, or hexahedron; + * - $P$ is a finite-dimensional space, e.g., a polynomial space mapped + * from the @ref GlossReferenceCell "reference cell" to $K$; + * - $\Psi$ is a set of "node functionals", i.e., functionals + * $\Psi_i : P \rightarrow {\mathbb R}$. + * The dimension of $P$ must be equal to the number of node functionals. + * With this definition, we can define a basis of the local function space, + * i.e., a set of "shape functions" $\varphi_j\in P$, by requiring that + * $\Psi_i(\varphi_j) = \delta_{ij}$, where $\delta$ is the Kronecker delta. + * + * This definition of what a finite element is has several advantages, + * concerning analysis as well * as implementation. For the analysis, it means that conformity with * certain spaces (FiniteElementData::Conformity), e.g. continuity, is - * up to the node values. In deal.II, it helps simplifying the + * up to the node functionals. In deal.II, it helps simplifying the * implementation of more complex elements like FE_RaviartThomas * considerably. * - * Examples for node functionals are values in @ref GlossSupport - * "support points" and moments with respect to Legendre - * polynomials. Let us give some examples: + * Examples for node functionals are values in + * @ref GlossSupport "support points" and moments with respect to Legendre + * polynomials. Examples: * * * @@ -1316,6 +1324,13 @@ * * *
ElementQk+1,k x Qk,k+1Gauss points on edges(faces) and anisotropic Gauss points in the interior
+ * + * The construction of finite elements as outlined above allows writing + * code that describes a finite element simply by providing a polynomial + * space (without having to give it any particular basis -- whatever is convenient + * is entirely sufficient) and the nodal functionals. This is used, for example + * in the FiniteElement::convert_generalized_support_point_values_to_nodal_values() + * function. *
* * diff --git a/include/deal.II/fe/fe.h b/include/deal.II/fe/fe.h index 1d7c58cbe0..1c8398f35c 100644 --- a/include/deal.II/fe/fe.h +++ b/include/deal.II/fe/fe.h @@ -1939,7 +1939,8 @@ public: * Given the values of a function $f(\mathbf x)$ at the (generalized) support * points, this function then computes what the nodal values of the element * are, i.e., $\Psi_i[f]$, where $\Psi_i$ are the node functionals of - * the element. The values $\Psi_i[f]$ are then the expansion coefficients + * the element (see also @ref GlossNodes "Node values or node functionals"). + * The values $\Psi_i[f]$ are then the expansion coefficients * for the shape functions of the finite element function that * interpolates the given function $f(x)$, i.e., * $ f_h(\mathbf x) = \sum_i \Psi_i[f] \varphi_i(\mathbf x) -- 2.39.5