]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Extensive class documentation.
authorRalf Hartmann <Ralf.Hartmann@dlr.de>
Thu, 5 Apr 2001 19:07:49 +0000 (19:07 +0000)
committerRalf Hartmann <Ralf.Hartmann@dlr.de>
Thu, 5 Apr 2001 19:07:49 +0000 (19:07 +0000)
git-svn-id: https://svn.dealii.org/trunk@4386 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/fe/fe_q.h

index 9e3c72af7eb771cac39a6a5f41f60d6dee1f0a54..463071a48bf907a738b9403c687a6653f51be9d5 100644 (file)
@@ -22,8 +22,217 @@ template <int dim> 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 <int dim>
 class FE_Q : public FiniteElement<dim>
@@ -31,9 +240,9 @@ class FE_Q : public FiniteElement<dim>
   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.

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.