]> https://gitweb.dealii.org/ - dealii.git/commitdiff
More doc updates. 1703/head
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 2 Oct 2015 04:26:03 +0000 (23:26 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 2 Oct 2015 04:26:03 +0000 (23:26 -0500)
include/deal.II/fe/mapping_q.h
include/deal.II/fe/mapping_q_generic.h

index f761d1c363c0d2ebeff5d82a705c6239c073265a..32eb88545df4de6f6d0a51cfb33d7baed7383a36 100644 (file)
@@ -57,7 +57,7 @@ template <int dim, typename POLY> class TensorProductPolynomials;
  *   achieve this by setting the second argument to the constructor
  *   to true. This only makes sense if you can actually provide
  *   information about how interior edges and faces of the mesh
- *   should be curved. This is typically done using by associating
+ *   should be curved. This is typically done by associating
  *   a Manifold with interior cells and edges. A simple example of this
  *   is discussed in the "Results" section of step-6; a full discussion
  *   of manifolds is provided in step-53.
index a96dbcb9f7c259ed9434befcaefc3bba19071560..923b4e9e8e649c6f534f9d3ccd3449daa36ff012 100644 (file)
@@ -39,20 +39,53 @@ template <int,int> class MappingQ;
 
 
 /**
- * A base class for all polynomial mappings. In particular, this class
- * provides the basis for the MappingQ1 and MappingQ classes that
- * implement (bi-, tri-)linear mappings and higher order mappings,
- * respectively.
+ * This class implements the functionality for polynomial mappings
+ * $Q_p$ of polynomial degree $p$ that will be used on all cells of
+ * the mesh. The MappingQ1 and MappingQ classes specialize this
+ * behavior slightly.
  *
+ * The class is poorly named. It should really have been called
+ * MappingQ because it consistently uses $Q_p$ mappings on all cells
+ * of a triangulation. However, the name MappingQ was already taken
+ * when we rewrote the entire class hierarchy for mappings. One might
+ * argue that one should always use MappingQGeneric over the existing
+ * class MappingQ (which, unless explicitly specified during the
+ * construction of the object, only uses mappings of degree $p$ <i>on
+ * cells at the boundary of the domain</i>). On the other hand, there
+ * are good reasons to use MappingQ in many situations: in many
+ * situations, curved domains are only provided with information about
+ * how exactly edges at the boundary are shaped, but we do not know
+ * anything about internal edges. Thus, in the absence of other
+ * information, we can only assume that internal edges are straight
+ * lines, and in that case internal cells may as well be treated is
+ * bilinear quadrilaterals or trilinear hexahedra. (An example of how
+ * such meshes look is shown in step-1 already, but it is also
+ * discussed in the "Results" section of step-6.)  Because
+ * bi-/trilinear mappings are significantly cheaper to compute than
+ * higher order mappings, it is advantageous in such situations to use
+ * the higher order mapping only on cells at the boundary of the
+ * domain -- i.e., the behavior of MappingQ. Of course,
+ * MappingQGeneric also uses bilinear mappings for interior cells as
+ * long as it has no knowledge about curvature of interior edges, but
+ * it implements this the expensive way: as a general $Q_p$ mapping
+ * where the mapping support points just <i>happen</i> to be arranged
+ * along linear or bilinear edges or faces.
  *
- * <h3>Implementation</h3>
- *
- * This class provides essentially the entire generic infrastructure
- * for polynomial mappings. What it requires to work from derived
- * classes is an implementation of the
- * compute_mapping_support_points() class that provides a list of
- * locations to which the support points of the mapping (e.g., the
- * vertices of the cell in the lowest order case) should be mapped.
+ * There are a number of special cases worth considering:
+ * - If you really want to use a higher order mapping for all cells,
+ *   you can do this using the current class, but this only makes
+ *   sense if you can actually provide information about how interior
+ *   edges and faces of the mesh should be curved. This is typically
+ *   done by associating a Manifold with interior cells and
+ *   edges. A simple example of this is discussed in the "Results"
+ *   section of step-6; a full discussion of manifolds is provided in
+ *   step-53.
+ * - If you are working on meshes that describe a (curved) manifold
+ *   embedded in higher space dimensions, i.e., if dim!=spacedim, then
+ *   every cell is at the boundary of the domain you will likely
+ *   already have attached a manifold object to all cells that can
+ *   then also be used by the mapping classes for higher order
+ *   mappings.
  *
  *
  * @author Wolfgang Bangerth, 2015

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.