From cd8f5f2cae521e430be951cadc1bc8c4ab72dece Mon Sep 17 00:00:00 2001 From: wolf Date: Fri, 20 Sep 2002 15:32:23 +0000 Subject: [PATCH] Add comment. git-svn-id: https://svn.dealii.org/trunk@6492 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/fe/fe_nedelec.h | 49 ++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/deal.II/deal.II/include/fe/fe_nedelec.h b/deal.II/deal.II/include/fe/fe_nedelec.h index 822e1caabf..01cda3c7d6 100644 --- a/deal.II/deal.II/include/fe/fe_nedelec.h +++ b/deal.II/deal.II/include/fe/fe_nedelec.h @@ -27,11 +27,58 @@ template class MappingQ; * Implementation of continuous Nedelec elements for the space H_curl. * * The constructor of this class takes the degree @p{p} of this finite - * element. + * element. However, presently, only lowest order elements + * (i.e. @p{p==1}) are implemented. * * * @sect3{Restriction on transformations} * + * In some sense, the implementation of this element is not complete, + * but you will rarely notice. Here is the fact: since the element is + * vector-valued already on the unit cell, the Jacobian matrix (or its + * inverse) is needed already to generate the @em{values} of the shape + * functions on the cells in real space. This is in contrast to most + * other elements, where you only need the Jacobian for the + * @em{gradients}. Thus, to generate the gradients of Nedelec shape + * functions, one would need to have the derivatives of the inverse of + * the Jacobian matrix. + * + * Basically, the Nedelec shape functions can be understood as the + * gradients of scalar shape functions on the real cell. They are thus + * the inverse Jacobian matrix times the gradients of scalar shape + * functions on the unit cell. The gradient of Nedelec shape functions + * is then, by the product rule, the sum of first the derovative (with + * respect to true coordinates) of the inverse Jacobian times the + * gradient (in unit coordinates) of the scalar shape function, plus + * second the inverse Jacobian times the derivative (in true + * coordinates) of the gradient (in unit coordinates) of the scalar + * shape functions. Note that each of the derivatives in true + * coordinates can be expressed as inverse Jacobian times gradient in + * unit coordinates. + * + * The problem is the derivative of the inverse Jacobian. * This + * rank-3 tensor can actually be computed (and we did so in very early + * versions of the library), but is a large task and very time + * consuming, so we dropped it. Since it is not available, we simply + * drop this first term. + * + * What this means for the present case: first the computation of + * gradients of Nedelec shape functions is wrong. Second, you will not + * notice this usually, for two reasons: + * + * The first reason is that the gradient of the Jacobian vanishes if + * the cells are mapped by an affine mapping, to which the usual + * bilinear mapping reduces if the cell is a parallelogram. Then the + * gradient of the shape functions is computed exact, since the first + * term is zero. + * + * Second, with the Nedelec elements, you will usually want to compute + * the curl, and extract and sum up the respective elements of the + * full gradient tensor. However, the curl of the Jacobian vanishes, + * so for the curl of shape functions the first term is irrelevant, + * and the curl will be computed correctly as well. + * + * * @sect3{Prolongation and restriction matrices} * * @sect3{Numbering of the degrees of freedom (DoFs)} -- 2.39.5