]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Move and group mapping member functions. 1376/head
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 17 Aug 2015 02:48:58 +0000 (21:48 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Tue, 18 Aug 2015 11:33:19 +0000 (06:33 -0500)
This patch simply moves the InternalDataBase, get_*_data() and fill_fe_*_values()
members of the derived mapping classes into a doxygen group. No changes in
functionality. No changes in text either.

include/deal.II/fe/mapping_cartesian.h
include/deal.II/fe/mapping_fe_field.h
include/deal.II/fe/mapping_q.h
include/deal.II/fe/mapping_q1.h
source/fe/mapping_q1.cc

index 25044e317e229f2cb71602dbff47a5b76a0cd2e9..120c62047ac41e2d50c052e48aa1877b2c8542f3 100644 (file)
@@ -54,6 +54,13 @@ template <int dim, int spacedim=dim>
 class MappingCartesian : public Mapping<dim,spacedim>
 {
 public:
+private:
+
+  /**
+   * @name Interface with FEValues
+   * @{
+   */
+
   // documentation can be found in Mapping::get_data()
   virtual
   typename Mapping<dim, spacedim>::InternalDataBase *
@@ -72,11 +79,7 @@ public:
   get_subface_data (const UpdateFlags flags,
                     const Quadrature<dim-1>& quadrature) const;
 
-  /**
-   * Compute mapping-related information for a cell.
-   * See the documentation of Mapping::fill_fe_values() for
-   * a discussion of purpose, arguments, and return value of this function.
-   */
+  // documentation can be found in Mapping::fill_fe_values()
   virtual
   CellSimilarity::Similarity
   fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
@@ -85,11 +88,7 @@ public:
                   const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
                   internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
 
-  /**
-   * Compute mapping-related information for a face of a cell.
-   * See the documentation of Mapping::fill_fe_face_values() for
-   * a discussion of purpose and arguments of this function.
-   */
+  // documentation can be found in Mapping::fill_fe_face_values()
   virtual void
   fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
                        const unsigned int                                         face_no,
@@ -97,11 +96,7 @@ public:
                        const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
                        internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
 
-  /**
-   * Compute mapping-related information for a child of a face of a cell.
-   * See the documentation of Mapping::fill_fe_subface_values() for
-   * a discussion of purpose and arguments of this function.
-   */
+  // documentation can be found in Mapping::fill_fe_subface_values()
   virtual void
   fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
                           const unsigned int                                         face_no,
@@ -110,6 +105,10 @@ public:
                           const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
                           internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
 
+  /**
+   * @}
+   */
+
   virtual void
   transform (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
              VectorSlice<std::vector<Tensor<1,spacedim> > > output,
index 3a65b0ff35910447bdab1e05cc7872a6565290c3..3a917125ab02f6b6c1f9dae7c6f5e01a3bc99797 100644 (file)
@@ -206,6 +206,78 @@ public:
   Mapping<dim,spacedim> *clone () const;
 
 
+
+  /**
+   * Always returns @p false.
+   */
+  virtual
+  bool preserves_vertex_locations () const;
+
+  DeclException0(ExcInactiveCell);
+
+protected:
+
+  /**
+   * This function and the next allow to generate the transform require by the
+   * virtual transform() in mapping, but unfortunately in C++ one cannot
+   * declare a virtual template function.
+   */
+  template < int rank >
+  void
+  transform_fields(const VectorSlice<const std::vector<Tensor<rank,dim>      > > input,
+                   VectorSlice<      std::vector<Tensor<rank,spacedim> > > output,
+                   const typename Mapping<dim,spacedim>::InternalDataBase &internal,
+                   const MappingType type) const;
+
+
+  /**
+   * see doc in transform_fields
+   */
+  template < int rank >
+  void
+  transform_differential_forms(
+    const VectorSlice<const std::vector<DerivativeForm<rank, dim,spacedim> > >    input,
+    VectorSlice<std::vector<Tensor<rank+1, spacedim> > > output,
+    const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
+    const MappingType mapping_type) const;
+
+
+protected:
+  /**
+   * Reference to the vector of shifts.
+   */
+
+  SmartPointer<const VECTOR, MappingFEField<dim,spacedim,DH,VECTOR> >euler_vector;
+  /**
+   * A FiniteElement object which is only needed in 3D, since it knows how to
+   * reorder shape functions/DoFs on non-standard faces. This is used to
+   * reorder support points in the same way. We could make this a pointer to
+   * prevent construction in 1D and 2D, but since memory and time requirements
+   * are not particularly high this seems unnecessary at the moment.
+   */
+  SmartPointer<const FiniteElement<dim,spacedim>, MappingFEField<dim,spacedim,DH,VECTOR> > fe;
+
+
+  /**
+   * Pointer to the DoFHandler to which the mapping vector is associated.
+   */
+  SmartPointer<const DH,MappingFEField<dim,spacedim,DH,VECTOR> >euler_dof_handler;
+
+
+
+private:
+
+  /**
+   * @name Interface with FEValues
+   * @{
+   */
+
+  // documentation can be found in Mapping::requires_update_flags()
+  virtual
+  UpdateFlags
+  requires_update_flags (const UpdateFlags update_flags) const;
+
+public:
   /**
    * Storage for internal data of this mapping. See Mapping::InternalDataBase
    * for an extensive description.
@@ -369,7 +441,57 @@ public:
     mutable std::vector<double> local_dof_values;
   };
 
+private:
 
+  // documentation can be found in Mapping::get_data()
+  virtual
+  InternalData *
+  get_data (const UpdateFlags,
+            const Quadrature<dim> &quadrature) const;
+
+  // documentation can be found in Mapping::get_face_data()
+  virtual
+  typename Mapping<dim,spacedim>::InternalDataBase *
+  get_face_data (const UpdateFlags flags,
+                 const Quadrature<dim-1>& quadrature) const;
+
+  // documentation can be found in Mapping::get_subface_data()
+  virtual
+  typename Mapping<dim,spacedim>::InternalDataBase *
+  get_subface_data (const UpdateFlags flags,
+                    const Quadrature<dim-1>& quadrature) const;
+
+  // documentation can be found in Mapping::fill_fe_values()
+  virtual
+  CellSimilarity::Similarity
+  fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                  const CellSimilarity::Similarity                           cell_similarity,
+                  const Quadrature<dim>                                     &quadrature,
+                  const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
+                  internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
+
+  // documentation can be found in Mapping::fill_fe_face_values()
+  virtual void
+  fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                       const unsigned int                                         face_no,
+                       const Quadrature<dim-1>                                   &quadrature,
+                       const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
+                       internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
+
+  // documentation can be found in Mapping::fill_fe_subface_values()
+  virtual void
+  fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                          const unsigned int                                         face_no,
+                          const unsigned int                                         subface_no,
+                          const Quadrature<dim-1>                                   &quadrature,
+                          const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
+                          internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
+
+  /**
+   * @}
+   */
+
+private:
   /**
    * Transforms a point @p p on the unit cell to the point @p p_real on the
    * real cell @p cell and returns @p p_real.
@@ -409,102 +531,6 @@ public:
                                         const Point<dim> &initial_p_unit,
                                         InternalData &mdata) const;
 
-  /**
-   * Always returns @p false.
-   */
-  virtual
-  bool preserves_vertex_locations () const;
-
-  DeclException0(ExcInactiveCell);
-
-protected:
-  /**
-   * Compute mapping-related information for a cell.
-   * See the documentation of Mapping::fill_fe_values() for
-   * a discussion of purpose, arguments, and return value of this function.
-   */
-  virtual
-  CellSimilarity::Similarity
-  fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                  const CellSimilarity::Similarity                           cell_similarity,
-                  const Quadrature<dim>                                     &quadrature,
-                  const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
-                  internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
-
-  /**
-   * Compute mapping-related information for a face of a cell.
-   * See the documentation of Mapping::fill_fe_face_values() for
-   * a discussion of purpose and arguments of this function.
-   */
-  virtual void
-  fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                       const unsigned int                                         face_no,
-                       const Quadrature<dim-1>                                   &quadrature,
-                       const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
-                       internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
-
-  /**
-   * Compute mapping-related information for a child of a face of a cell.
-   * See the documentation of Mapping::fill_fe_subface_values() for
-   * a discussion of purpose and arguments of this function.
-   */
-  virtual void
-  fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                          const unsigned int                                         face_no,
-                          const unsigned int                                         subface_no,
-                          const Quadrature<dim-1>                                   &quadrature,
-                          const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
-                          internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
-
-  /**
-   * This function and the next allow to generate the transform require by the
-   * virtual transform() in mapping, but unfortunately in C++ one cannot
-   * declare a virtual template function.
-   */
-  template < int rank >
-  void
-  transform_fields(const VectorSlice<const std::vector<Tensor<rank,dim>      > > input,
-                   VectorSlice<      std::vector<Tensor<rank,spacedim> > > output,
-                   const typename Mapping<dim,spacedim>::InternalDataBase &internal,
-                   const MappingType type) const;
-
-
-  /**
-   * see doc in transform_fields
-   */
-  template < int rank >
-  void
-  transform_differential_forms(
-    const VectorSlice<const std::vector<DerivativeForm<rank, dim,spacedim> > >    input,
-    VectorSlice<std::vector<Tensor<rank+1, spacedim> > > output,
-    const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
-    const MappingType mapping_type) const;
-
-
-protected:
-  /**
-   * Reference to the vector of shifts.
-   */
-
-  SmartPointer<const VECTOR, MappingFEField<dim,spacedim,DH,VECTOR> >euler_vector;
-  /**
-   * A FiniteElement object which is only needed in 3D, since it knows how to
-   * reorder shape functions/DoFs on non-standard faces. This is used to
-   * reorder support points in the same way. We could make this a pointer to
-   * prevent construction in 1D and 2D, but since memory and time requirements
-   * are not particularly high this seems unnecessary at the moment.
-   */
-  SmartPointer<const FiniteElement<dim,spacedim>, MappingFEField<dim,spacedim,DH,VECTOR> > fe;
-
-
-  /**
-   * Pointer to the DoFHandler to which the mapping vector is associated.
-   */
-  SmartPointer<const DH,MappingFEField<dim,spacedim,DH,VECTOR> >euler_dof_handler;
-
-
-
-private:
   /**
    * Update internal degrees of freedom.
    */
@@ -519,10 +545,22 @@ private:
   compute_shapes_virtual (const std::vector<Point<dim> > &unit_points,
                           typename MappingFEField<dim, spacedim>::InternalData &data) const;
 
-  // documentation can be found in Mapping::requires_update_flags()
-  virtual
-  UpdateFlags
-  requires_update_flags (const UpdateFlags update_flags) const;
+  /*
+   * Which components to use for the mapping.
+   */
+  const ComponentMask fe_mask;
+
+
+  /**
+   * Mapping between indices in the FE space and the real space. This vector
+   * contains one index for each component of the finite element space. If the
+   * index is one for which the ComponentMask which is used to construct this
+   * element is false, then numbers::invalid_unsigned_int is returned,
+   * otherwise the component in real space is returned. For example, if we
+   * construct the mapping using ComponentMask(spacedim, true), then this
+   * vector contains {0,1,2} in spacedim = 3.
+   */
+  std::vector<unsigned int> fe_to_real;
 
   /**
    * Reimplemented from Mapping. See the documentation of the base class for
@@ -544,42 +582,6 @@ private:
                      const unsigned int     n_original_q_points,
                      InternalData           &data) const;
 
-  // documentation can be found in Mapping::get_data()
-  virtual
-  InternalData *
-  get_data (const UpdateFlags,
-            const Quadrature<dim> &quadrature) const;
-
-  // documentation can be found in Mapping::get_face_data()
-  virtual
-  typename Mapping<dim,spacedim>::InternalDataBase *
-  get_face_data (const UpdateFlags flags,
-                 const Quadrature<dim-1>& quadrature) const;
-
-  // documentation can be found in Mapping::get_subface_data()
-  virtual
-  typename Mapping<dim,spacedim>::InternalDataBase *
-  get_subface_data (const UpdateFlags flags,
-                    const Quadrature<dim-1>& quadrature) const;
-
-
-  /*
-   * Which components to use for the mapping.
-   */
-  const ComponentMask fe_mask;
-
-
-  /**
-   * Mapping between indices in the FE space and the real space. This vector
-   * contains one index for each component of the finite element space. If the
-   * index is one for which the ComponentMask which is used to construct this
-   * element is false, then numbers::invalid_unsigned_int is returned,
-   * otherwise the component in real space is returned. For example, if we
-   * construct the mapping using ComponentMask(spacedim, true), then this
-   * vector contains {0,1,2} in spacedim = 3.
-   */
-  std::vector<unsigned int> fe_to_real;
-
 
   /**
    * Declare other MappingFEField classes friends.
index e0261146c5b3ccd1bf38c7aceb11d9113128ffcb..a02259e448f0eb3d5507213830b28037f98564a2 100644 (file)
@@ -150,88 +150,8 @@ public:
   virtual
   Mapping<dim,spacedim> *clone () const;
 
-  /**
-   * Storage for internal data of this mapping. See Mapping::InternalDataBase
-   * for an extensive description.
-   *
-   * This includes data that is computed once when the object is created
-   * (in get_data()) as well as data the class wants to store from between
-   * the call to fill_fe_values(), fill_fe_face_values(), or
-   * fill_fe_subface_values() until possible later calls from the finite
-   * element to functions such as transform(). The latter class of
-   * member variables are marked as 'mutable'.
-   *
-   * The current class uses essentially the same fields for storage
-   * as the MappingQ1 class. Consequently, it inherits from
-   * MappingQ1::InternalData, rather than from Mapping::InternalDataBase.
-   */
-  class InternalData : public MappingQ1<dim,spacedim>::InternalData
-  {
-  public:
-    /**
-     * Constructor.
-     */
-    InternalData (const unsigned int n_shape_functions);
-
-
-    /**
-     * Return an estimate (in bytes) or the memory consumption of this object.
-     */
-    virtual std::size_t memory_consumption () const;
-
-    /**
-     * Flag that is set by the <tt>fill_fe_[[sub]face]_values</tt> function.
-     *
-     * If this flag is @p true we are on an interior cell and the @p
-     * mapping_q1_data is used.
-     */
-    mutable bool use_mapping_q1_on_current_cell;
-
-    /**
-     * A structure to store the corresponding information for the pure
-     * $Q_1$ mapping that is, by default, used on all interior cells.
-     */
-    typename MappingQ1<dim,spacedim>::InternalData mapping_q1_data;
-  };
 
 protected:
-  /**
-   * Compute mapping-related information for a cell.
-   * See the documentation of Mapping::fill_fe_values() for
-   * a discussion of purpose, arguments, and return value of this function.
-   */
-  virtual
-  CellSimilarity::Similarity
-  fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                  const CellSimilarity::Similarity                           cell_similarity,
-                  const Quadrature<dim>                                     &quadrature,
-                  const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
-                  internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
-
-  /**
-   * Compute mapping-related information for a face of a cell.
-   * See the documentation of Mapping::fill_fe_face_values() for
-   * a discussion of purpose and arguments of this function.
-   */
-  virtual void
-  fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                       const unsigned int                                         face_no,
-                       const Quadrature<dim-1>                                   &quadrature,
-                       const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
-                       internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
-
-  /**
-   * Compute mapping-related information for a child of a face of a cell.
-   * See the documentation of Mapping::fill_fe_subface_values() for
-   * a discussion of purpose and arguments of this function.
-   */
-  virtual void
-  fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                          const unsigned int                                         face_no,
-                          const unsigned int                                         subface_no,
-                          const Quadrature<dim-1>                                   &quadrature,
-                          const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
-                          internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
 
   /**
    * For <tt>dim=2,3</tt>. Append the support points of all shape functions
@@ -293,6 +213,57 @@ private:
                                          const TriaIterator &iter,
                                          std::vector<Point<spacedim> > &points) const;
 
+  /**
+   * @name Interface with FEValues
+   * @{
+   */
+
+protected:
+
+  /**
+   * Storage for internal data of this mapping. See Mapping::InternalDataBase
+   * for an extensive description.
+   *
+   * This includes data that is computed once when the object is created
+   * (in get_data()) as well as data the class wants to store from between
+   * the call to fill_fe_values(), fill_fe_face_values(), or
+   * fill_fe_subface_values() until possible later calls from the finite
+   * element to functions such as transform(). The latter class of
+   * member variables are marked as 'mutable'.
+   *
+   * The current class uses essentially the same fields for storage
+   * as the MappingQ1 class. Consequently, it inherits from
+   * MappingQ1::InternalData, rather than from Mapping::InternalDataBase.
+   */
+  class InternalData : public MappingQ1<dim,spacedim>::InternalData
+  {
+  public:
+    /**
+     * Constructor.
+     */
+    InternalData (const unsigned int n_shape_functions);
+
+
+    /**
+     * Return an estimate (in bytes) or the memory consumption of this object.
+     */
+    virtual std::size_t memory_consumption () const;
+
+    /**
+     * Flag that is set by the <tt>fill_fe_[[sub]face]_values</tt> function.
+     *
+     * If this flag is @p true we are on an interior cell and the @p
+     * mapping_q1_data is used.
+     */
+    mutable bool use_mapping_q1_on_current_cell;
+
+    /**
+     * A structure to store the corresponding information for the pure
+     * $Q_1$ mapping that is, by default, used on all interior cells.
+     */
+    typename MappingQ1<dim,spacedim>::InternalData mapping_q1_data;
+  };
+
   // documentation can be found in Mapping::get_data()
   virtual
   InternalData *
@@ -311,6 +282,36 @@ private:
   get_subface_data (const UpdateFlags flags,
                     const Quadrature<dim-1>& quadrature) const;
 
+  // documentation can be found in Mapping::fill_fe_values()
+  virtual
+  CellSimilarity::Similarity
+  fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                  const CellSimilarity::Similarity                           cell_similarity,
+                  const Quadrature<dim>                                     &quadrature,
+                  const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
+                  internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
+
+  // documentation can be found in Mapping::fill_fe_face_values()
+  virtual void
+  fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                       const unsigned int                                         face_no,
+                       const Quadrature<dim-1>                                   &quadrature,
+                       const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
+                       internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
+
+  // documentation can be found in Mapping::fill_fe_subface_values()
+  virtual void
+  fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                          const unsigned int                                         face_no,
+                          const unsigned int                                         subface_no,
+                          const Quadrature<dim-1>                                   &quadrature,
+                          const typename Mapping<dim,spacedim>::InternalDataBase    &internal_data,
+                          internal::FEValues::MappingRelatedData<dim,spacedim>      &output_data) const;
+
+  /**
+   * @}
+   */
+
   /**
    * Compute shape values and/or derivatives.
    */
index cc4dd0358a98c2911c8cb781defd5d87923c030c..b2663d9122d4e1b2cf0ef53d2a31edd9146a8b68 100644 (file)
@@ -83,18 +83,20 @@ public:
    * the reference cell (e.g., using GeometryInfo::is_inside_unit_cell) or
    * whether the exception mentioned above has been thrown.
    */
-  virtual Point<dim>
-  transform_real_to_unit_cell (
-    const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-    const Point<spacedim>                            &p) const;
+  virtual
+  Point<dim>
+  transform_real_to_unit_cell (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                               const Point<spacedim>                            &p) const;
 
-  virtual void
+  virtual
+  void
   transform (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
              VectorSlice<std::vector<Tensor<1,spacedim> > > output,
              const typename Mapping<dim,spacedim>::InternalDataBase &internal,
              const MappingType type) const;
 
-  virtual void
+  virtual
+  void
   transform (const VectorSlice<const std::vector<DerivativeForm<1, dim,spacedim> > >    input,
              VectorSlice<std::vector<Tensor<2,spacedim> > > output,
              const typename Mapping<dim,spacedim>::InternalDataBase &internal,
@@ -124,7 +126,7 @@ public:
 
 protected:
   /**
-   * This function and the next allow to generate the transform require by the
+   * This function and the next ones allow to generate the transform required by the
    * virtual transform() in mapping, but unfortunately in C++ one cannot
    * declare a virtual template function.
    */
@@ -134,6 +136,7 @@ protected:
                    VectorSlice<      std::vector<Tensor<rank,spacedim> > > output,
                    const typename Mapping<dim,spacedim>::InternalDataBase &internal,
                    const MappingType type) const;
+
   /**
    * see doc in transform_fields
    */
@@ -144,6 +147,9 @@ protected:
                       const typename Mapping<dim,spacedim>::InternalDataBase &internal,
                       const MappingType type) const;
 
+  /**
+   * see doc in transform_fields
+   */
   void
   transform_hessians(const VectorSlice<const std::vector<Tensor<3,dim> > > input,
                      VectorSlice<std::vector<Tensor<3,spacedim> > > output,
@@ -163,9 +169,6 @@ protected:
 
 public:
 
-
-
-
   /**
    * Return a pointer to a copy of the present object. The caller of this copy
    * then assumes ownership of it.
@@ -173,6 +176,20 @@ public:
   virtual
   Mapping<dim,spacedim> *clone () const;
 
+
+  /**
+   * Always returns @p true because MappingQ1 preserves vertex locations.
+   */
+  virtual
+  bool preserves_vertex_locations () const;
+
+
+  /**
+   * @name Interface with FEValues
+   * @{
+   */
+
+public:
   /**
    * Storage for internal data of d-linear mappings. See Mapping::InternalDataBase
    * for an extensive description.
@@ -331,19 +348,32 @@ public:
     mutable std::vector<double> volume_elements;
   };
 
-  /**
-   * Declare a convenience typedef for the class that describes offsets into
-   * quadrature formulas projected onto faces and subfaces.
-   */
-  typedef
-  typename QProjector<dim>::DataSetDescriptor
-  DataSetDescriptor;
+protected:
 
-  /**
-   * Compute mapping-related information for a cell.
-   * See the documentation of Mapping::fill_fe_values() for
-   * a discussion of purpose, arguments, and return value of this function.
-   */
+  // documentation can be found in Mapping::requires_update_flags()
+  virtual
+  UpdateFlags
+  requires_update_flags (const UpdateFlags update_flags) const;
+
+  // documentation can be found in Mapping::get_data()
+  virtual
+  InternalData *
+  get_data (const UpdateFlags,
+            const Quadrature<dim> &quadrature) const;
+
+  // documentation can be found in Mapping::get_face_data()
+  virtual
+  typename Mapping<dim,spacedim>::InternalDataBase *
+  get_face_data (const UpdateFlags flags,
+                 const Quadrature<dim-1>& quadrature) const;
+
+  // documentation can be found in Mapping::get_subface_data()
+  virtual
+  typename Mapping<dim,spacedim>::InternalDataBase *
+  get_subface_data (const UpdateFlags flags,
+                    const Quadrature<dim-1>& quadrature) const;
+
+  // documentation can be found in Mapping::fill_fe_values()
   virtual
   CellSimilarity::Similarity
   fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator     &cell,
@@ -352,11 +382,7 @@ public:
                   const typename Mapping<dim,spacedim>::InternalDataBase        &internal_data,
                   dealii::internal::FEValues::MappingRelatedData<dim, spacedim> &output_data) const;
 
-  /**
-   * Compute mapping-related information for a face of a cell.
-   * See the documentation of Mapping::fill_fe_face_values() for
-   * a discussion of purpose and arguments of this function.
-   */
+  // documentation can be found in Mapping::fill_fe_face_values()
   virtual void
   fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator     &cell,
                        const unsigned int                                             face_no,
@@ -364,11 +390,7 @@ public:
                        const typename Mapping<dim,spacedim>::InternalDataBase        &internal_data,
                        dealii::internal::FEValues::MappingRelatedData<dim, spacedim> &output_data) const;
 
-  /**
-   * Compute mapping-related information for a child of a face of a cell.
-   * See the documentation of Mapping::fill_fe_subface_values() for
-   * a discussion of purpose and arguments of this function.
-   */
+  // documentation can be found in Mapping::fill_fe_subface_values()
   virtual void
   fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator     &cell,
                           const unsigned int                                             face_no,
@@ -377,6 +399,56 @@ public:
                           const typename Mapping<dim,spacedim>::InternalDataBase        &internal_data,
                           dealii::internal::FEValues::MappingRelatedData<dim, spacedim> &output_data) const;
 
+  /**
+   * @}
+   */
+
+protected:
+  /* Trick to templatize transform_real_to_unit_cell<dim, dim+1> */
+  template<int dim_>
+  Point<dim_>
+  transform_real_to_unit_cell_internal_codim1
+  (const typename Triangulation<dim_,dim_+1>::cell_iterator &cell,
+   const Point<dim_+1> &p,
+   const Point<dim_>         &initial_p_unit,
+   InternalData        &mdata) const;
+
+  /**
+   * Compute an initial guess to pass to the Newton method in
+   * transform_real_to_unit_cell.  For the initial guess we proceed in the
+   * following way:
+   * <ul>
+   * <li> find the least square dim-dimensional plane approximating the cell
+   * vertices, i.e. we find and affine map A x_hat + b from the reference cell
+   * to the real space.
+   * <li> Solve the equation A x_hat + b = p for x_hat
+   * <li> This x_hat is the initial solution used for the Newton Method.
+   * </ul>
+   * @note if dim<spacedim we first project p onto the plane. @note if dim==1
+   * (for any spacedim) the initial guess is the exact solution and no Newton
+   * iteration is needed.   Some details about how we compute the least square
+   * plane. We look for a  spacedim x (dim + 1) matrix  X such that  X * M = Y
+   * where M is a (dim+1) x n_vertices  matrix and Y a spacedim x n_vertices.
+   * And: The i-th column of M is unit_vertex[i] and the last row all 1's. The
+   * i-th column of Y is real_vertex[i].  If we split X=[A|b], the least
+   * square approx is A x_hat+b  Classically  X = Y * (M^t (M M^t)^{-1})  Let
+   * K = M^t * (M M^t)^{-1} = [KA Kb] this can be precomputed, and that is
+   * exactly what we do.  Finally A = Y*KA  and  b = Y*Kb.
+   */
+  Point<dim>
+  transform_real_to_unit_cell_initial_guess (const std::vector<Point<spacedim> > &vertex,
+                                             const Point<spacedim>                            &p) const;
+
+
+  /**
+   * Declare a convenience typedef for the class that describes offsets into
+   * quadrature formulas projected onto faces and subfaces.
+   */
+  typedef
+  typename QProjector<dim>::DataSetDescriptor
+  DataSetDescriptor;
+
+
   /**
    * Compute shape values and/or derivatives.
    *
@@ -452,74 +524,6 @@ public:
                                         const Point<dim> &initial_p_unit,
                                         InternalData &mdata) const;
 
-  /**
-   * Always returns @p true because MappingQ1 preserves vertex locations.
-   */
-  virtual
-  bool preserves_vertex_locations () const;
-
-protected:
-  /* Trick to templatize transform_real_to_unit_cell<dim, dim+1> */
-  template<int dim_>
-  Point<dim_>
-  transform_real_to_unit_cell_internal_codim1
-  (const typename Triangulation<dim_,dim_+1>::cell_iterator &cell,
-   const Point<dim_+1> &p,
-   const Point<dim_>         &initial_p_unit,
-   InternalData        &mdata) const;
-
-  /**
-   * Compute an initial guess to pass to the Newton method in
-   * transform_real_to_unit_cell.  For the initial guess we proceed in the
-   * following way:
-   * <ul>
-   * <li> find the least square dim-dimensional plane approximating the cell
-   * vertices, i.e. we find and affine map A x_hat + b from the reference cell
-   * to the real space.
-   * <li> Solve the equation A x_hat + b = p for x_hat
-   * <li> This x_hat is the initial solution used for the Newton Method.
-   * </ul>
-   * @note if dim<spacedim we first project p onto the plane. @note if dim==1
-   * (for any spacedim) the initial guess is the exact solution and no Newton
-   * iteration is needed.   Some details about how we compute the least square
-   * plane. We look for a  spacedim x (dim + 1) matrix  X such that  X * M = Y
-   * where M is a (dim+1) x n_vertices  matrix and Y a spacedim x n_vertices.
-   * And: The i-th column of M is unit_vertex[i] and the last row all 1's. The
-   * i-th column of Y is real_vertex[i].  If we split X=[A|b], the least
-   * square approx is A x_hat+b  Classically  X = Y * (M^t (M M^t)^{-1})  Let
-   * K = M^t * (M M^t)^{-1} = [KA Kb] this can be precomputed, and that is
-   * exactly what we do.  Finally A = Y*KA  and  b = Y*Kb.
-   */
-  Point<dim>
-  transform_real_to_unit_cell_initial_guess (const std::vector<Point<spacedim> > &vertex,
-                                             const Point<spacedim>                            &p) const;
-
-
-private:
-
-  // documentation can be found in Mapping::requires_update_flags()
-  virtual
-  UpdateFlags
-  requires_update_flags (const UpdateFlags update_flags) const;
-
-  // documentation can be found in Mapping::get_data()
-  virtual
-  InternalData *
-  get_data (const UpdateFlags,
-            const Quadrature<dim> &quadrature) const;
-
-  // documentation can be found in Mapping::get_face_data()
-  virtual
-  typename Mapping<dim,spacedim>::InternalDataBase *
-  get_face_data (const UpdateFlags flags,
-                 const Quadrature<dim-1>& quadrature) const;
-
-  // documentation can be found in Mapping::get_subface_data()
-  virtual
-  typename Mapping<dim,spacedim>::InternalDataBase *
-  get_subface_data (const UpdateFlags flags,
-                    const Quadrature<dim-1>& quadrature) const;
-
   /**
    * Computes the support points of the mapping. For @p MappingQ1 these are
    * the vertices. However, other classes may override this function. In
index 52eeb241d635546967bc40c65062572e79aef5a5..ab5259255daea4e2f7b15b3149c7f8cb146f94cb 100644 (file)
@@ -699,7 +699,7 @@ namespace internal
      */
     template <int dim, int spacedim>
     void
-    maybe_compute_q_points (const typename dealii::MappingQ1<dim,spacedim>::DataSetDescriptor  data_set,
+    maybe_compute_q_points (const typename QProjector<dim>::DataSetDescriptor                 data_set,
                             const typename dealii::MappingQ1<dim,spacedim>::InternalData      &data,
                             std::vector<Point<spacedim> >                                     &quadrature_points)
     {
@@ -731,7 +731,7 @@ namespace internal
     template <int dim, int spacedim>
     void
     maybe_update_Jacobians (const CellSimilarity::Similarity                                   cell_similarity,
-                            const typename dealii::MappingQ1<dim,spacedim>::DataSetDescriptor  data_set,
+                            const typename dealii::QProjector<dim>::DataSetDescriptor          data_set,
                             const typename dealii::MappingQ1<dim,spacedim>::InternalData      &data)
     {
       const UpdateFlags update_flags = data.update_each;
@@ -808,7 +808,7 @@ namespace internal
     template <int dim, int spacedim>
     void
     maybe_update_jacobian_grads (const CellSimilarity::Similarity                                   cell_similarity,
-                                 const typename dealii::MappingQ1<dim,spacedim>::DataSetDescriptor  data_set,
+                                 const typename QProjector<dim>::DataSetDescriptor                  data_set,
                                  const typename dealii::MappingQ1<dim,spacedim>::InternalData      &data,
                                  std::vector<DerivativeForm<2,dim,spacedim> >                      &jacobian_grads)
     {
@@ -1181,7 +1181,7 @@ namespace internal
                             const typename dealii::Triangulation<dim,spacedim>::cell_iterator &cell,
                             const unsigned int                                                 face_no,
                             const unsigned int                                                 subface_no,
-                            const typename dealii::MappingQ1<dim,spacedim>::DataSetDescriptor  data_set,
+                            const typename QProjector<dim>::DataSetDescriptor                  data_set,
                             const Quadrature<dim-1>                                           &quadrature,
                             const typename dealii::MappingQ1<dim,spacedim>::InternalData      &data,
                             internal::FEValues::MappingRelatedData<dim,spacedim>              &output_data)

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.