From e72c7880eaba161e5de893cb301b668d7ebfd144 Mon Sep 17 00:00:00 2001 From: hartmann Date: Thu, 5 Apr 2001 19:07:49 +0000 Subject: [PATCH] Extensive class documentation. git-svn-id: https://svn.dealii.org/trunk@4386 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/fe/fe_q.h | 217 +++++++++++++++++++++++++++++- 1 file changed, 213 insertions(+), 4 deletions(-) diff --git a/deal.II/deal.II/include/fe/fe_q.h b/deal.II/deal.II/include/fe/fe_q.h index 9e3c72af7e..463071a48b 100644 --- a/deal.II/deal.II/include/fe/fe_q.h +++ b/deal.II/deal.II/include/fe/fe_q.h @@ -22,8 +22,217 @@ template class MappingQ; /** - * Tensor product elements based on equidistant support points. -//TODO:[RH,GK] Document node numbering etc. copy from old documentation + * Implementation of Lagrange finite elements @p{Qp} that yield the + * finite element space of continuous, piecewise polynomials of degree + * @p{p}. This class is realized using tensor product polynomials + * based on equidistant support points. + * + * The constructor of this class takes the degree @p{p} of this finite + * element. + * + * @sect3{Implementation} + * + * The constructor creates a @ref{TensorProductPolynomials} object + * that includes the tensor product of @p{LagrangeEquidistant} + * polynomials of degree @p{p}. This @p{TensorProductPolynomials} + * object provides all values and derivatives of the shape functions. + * + * Furthermore the constructor filles the @p{interface_constraints}, + * the @p{prolongation} (embedding) and the @p{restriction} + * matrices. These are implemented only up to a certain degree, that + * is listed in the following: + * + * @begin{itemize} + * @item @p{dim==1} + * @begin{itemize} + * @item the @p{interface_constraints} are not needed + * @item the @p{prolongation} matrices up to degree 4, and + * @item the @p{restriction} matrices up to degree 4. + * @end{itemize} + * @item @p{dim==2} + * @begin{itemize} + * @item the @p{interface_constraints} up to degree 4, + * @item the @p{prolongation} matrices up to degree 3, and + * @item the @p{restriction} matrices up to degree 4. + * @end{itemize} + * @item @p{dim==3} + * @begin{itemize} + * @item the @p{interface_constraints} up to degree 2, + * @item the @p{prolongation} matrices up to degree 2, and + * @item the @p{restriction} matrices up to degree 4. + * @end{itemize} + * @end{itemize} + * + * @sect3{Numbering of the degrees of freedom (DoFs)} + * + * The original ordering of the shape functions represented by the + * @ref{TensorProductPolynomials} is a tensor product + * numbering. However, the shape functions on a cell are renumbered + * beginning with the shape functions whose support points are at the + * vertices, then on the line, on the quads, and finally (for 3d) on + * the hexes. To be explicite, these numberings are listed in the + * following: + * + * @sect4{Q1 elements} + * @begin{itemize} + * @item 1D case: + * @begin{verbatim} + * 0-------1 + * @end{verbatim} + * + * @item 2D case: + * @begin{verbatim} + * 3-------2 + * | | + * | | + * | | + * 0-------1 + * @end{verbatim} + * + * @item 3D case: + * @begin{verbatim} + * 7-------6 7-------6 + * /| | / /| + * / | | / / | + * / | | / / | + * 3 | | 3-------2 | + * | 4-------5 | | 5 + * | / / | | / + * | / / | | / + * |/ / | |/ + * 0-------1 0-------1 + * + * The respective coordinate values of the support points of the degrees + * of freedom are as follows: + * @begin{itemize} + * @item Index 0: @p{[0, 0, 0]}; + * @item Index 1: @p{[1, 0, 0]}; + * @item Index 2: @p{[1, 0, 1]}; + * @item Index 3: @p{[0, 0, 1]}; + * @item Index 4: @p{[0, 1, 0]}; + * @item Index 5: @p{[1, 1, 0]}; + * @item Index 6: @p{[1, 1, 1]}; + * @item Index 7: @p{[0, 1, 1]}; + * @end{itemize} + * @end{itemize} + * @sect4{Q2 elements} + * @begin{itemize} + * @item 1D case: + * @begin{verbatim} + * 0---2---1 + * @end{verbatim} + * + * @item 2D case: + * @begin{verbatim} + * 3---6---2 + * | | + * 7 8 5 + * | | + * 0---4---1 + * @end{verbatim} + * + * @item 3D case: + * @begin{verbatim} + * 7--14---6 7--14---6 + * /| | / /| + * 19 | 13 19 1813 + * / 15 | / / | + * 3 | | 3---10--2 | + * | 4--12---5 | | 5 + * | / / | 9 / + * 11 16 17 11 | 17 + * |/ / | |/ + * 0---8---1 0---8---1 + * + * *-------* *-------* + * /| | / /| + * / | 21 | / 24 / | + * / | | / / | + * * | | *-------* | + * |25 *-------* | |23 * + * | / / | 20 | / + * | / 22 / | | / + * |/ / | |/ + * *-------* *-------* + * @end{verbatim} + * The center vertex has number 26. + * + * The respective coordinate values of the support points of the degrees + * of freedom are as follows: + * @begin{itemize} + * @item Index 0: @p{[0, 0, 0]}; + * @item Index 1: @p{[1, 0, 0]}; + * @item Index 2: @p{[1, 0, 1]}; + * @item Index 3: @p{[0, 0, 1]}; + * @item Index 4: @p{[0, 1, 0]}; + * @item Index 5: @p{[1, 1, 0]}; + * @item Index 6: @p{[1, 1, 1]}; + * @item Index 7: @p{[0, 1, 1]}; + * @item Index 8: @p{[1/2, 0, 0]}; + * @item Index 9: @p{[1, 0, 1/2]}; + * @item Index 10: @p{[1/2, 0, 1]}; + * @item Index 11: @p{[0, 0, 1/2]}; + * @item Index 12: @p{[1/2, 1, 0]}; + * @item Index 13: @p{[1, 1, 1/2]}; + * @item Index 14: @p{[1/2, 1, 1]}; + * @item Index 15: @p{[0, 1, 1/2]}; + * @item Index 16: @p{[0, 1/2, 0]}; + * @item Index 17: @p{[1, 1/2, 0]}; + * @item Index 18: @p{[1, 1/2, 1]}; + * @item Index 19: @p{[0, 1/2, 1]}; + * @item Index 20: @p{[1/2, 0, 1/2]}; + * @item Index 21: @p{[1/2, 1, 1/2]}; + * @item Index 22: @p{[1/2, 1/2, 0]}; + * @item Index 23: @p{[1, 1/2, 1/2]}; + * @item Index 24: @p{[1/2, 1/2, 1]}; + * @item Index 25: @p{[0, 1/2, 1/2]}; + * @item Index 26: @p{[1/2, 1/2, 1/2]}; + * @end{itemize} + * @end{itemize} + * @sect4{Q3 elements} + * @begin{itemize} + * @item 1D case: + * @begin{verbatim} + * 0--2--3--1 + * @end{verbatim} + * + * @item 2D case: + * @begin{verbatim} + * 3--8--9--2 + * | | + * 11 14 15 7 + * | | + * 10 12 13 6 + * | | + * 0--4--5--1 + * @end{verbatim} + * Note the reverse ordering of degrees of freedom on the left and + * upper line. + * @end{itemize} + * @sect4{Q4 elements} + * @begin{itemize} + * @item 1D case: + * @begin{verbatim} + * 0--2--3--4--1 + * @end{verbatim} + * + * @item 2D case: + * @begin{verbatim} + * 3--10-11-12-2 + * | | + * 15 22 23 24 9 + * | | + * 14 19 20 21 8 + * | | + * 13 16 17 18 7 + * | | + * 0--4--5--6--1 + * @end{verbatim} + * @end{itemize} + * Note the reverse ordering of degrees of freedom on the left and upper + * line. + * + * @author Wolfgang Bangerth, 1998, Ralf Hartmann, Guido Kanschat, 2001 */ template class FE_Q : public FiniteElement @@ -31,9 +240,9 @@ class FE_Q : public FiniteElement public: /** * Constructor for tensor product - * polynomials of degree @p{k}. + * polynomials of degree @p{p}. */ - FE_Q (const unsigned int k); + FE_Q (const unsigned int p); /** * Destructor. -- 2.39.5