]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Move a few pieces to a more natural place. 1808/head
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 28 Oct 2015 21:54:51 +0000 (16:54 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 28 Oct 2015 21:54:51 +0000 (16:54 -0500)
include/deal.II/fe/mapping_q_eulerian.h
source/fe/mapping_q_eulerian.cc

index 9964d19c071ad37ddd4b1a6013819d295efb9825..a2c57827f648b5557916154093986fa4329e1af9 100644 (file)
@@ -175,41 +175,6 @@ protected:
 
 private:
 
-  /**
-   * Special quadrature rule used to define the support points in the
-   * reference configuration.
-   */
-
-  class SupportQuadrature : public Quadrature<dim>
-  {
-  public:
-    /**
-     * Constructor, with an argument defining the desired polynomial degree.
-     */
-
-    SupportQuadrature (const unsigned int map_degree);
-
-  };
-
-  /**
-   * A member variable holding the quadrature points in the right order.
-   */
-  const SupportQuadrature support_quadrature;
-
-  /**
-   * FEValues object used to query the the given finite element field at the
-   * support points in the reference configuration.
-   *
-   * The variable is marked as mutable since we have to call FEValues::reinit
-   * from compute_mapping_support_points, a function that is 'const'.
-   */
-  mutable FEValues<dim,spacedim> fe_values;
-
-  /**
-   * A variable to guard access to the fe_values variable.
-   */
-  mutable Threads::Mutex fe_values_mutex;
-
   /**
    * A class derived from MappingQGeneric that provides the generic
    * mapping with support points on boundary objects so that the
@@ -249,6 +214,42 @@ private:
      * Reference to the surrounding object off of which we live.
      */
     const MappingQEulerian<dim,VECTOR,spacedim> &mapping_q_eulerian;
+
+
+    /**
+     * Special quadrature rule used to define the support points in the
+     * reference configuration.
+     */
+
+    class SupportQuadrature : public Quadrature<dim>
+    {
+    public:
+      /**
+       * Constructor, with an argument defining the desired polynomial degree.
+       */
+
+      SupportQuadrature (const unsigned int map_degree);
+
+    };
+
+    /**
+     * A member variable holding the quadrature points in the right order.
+     */
+    const SupportQuadrature support_quadrature;
+
+    /**
+     * FEValues object used to query the the given finite element field at the
+     * support points in the reference configuration.
+     *
+     * The variable is marked as mutable since we have to call FEValues::reinit
+     * from compute_mapping_support_points, a function that is 'const'.
+     */
+    mutable FEValues<dim,spacedim> fe_values;
+
+    /**
+     * A variable to guard access to the fe_values variable.
+     */
+    mutable Threads::Mutex fe_values_mutex;
   };
 
 };
index 60213ecb6b45a432390bf7ec5ba79eb3c0ce0953..672328a5b3c56d70d2a45c1b166032f60ea5366c 100644 (file)
@@ -40,7 +40,11 @@ MappingQEulerianGeneric (const unsigned int degree,
                          const MappingQEulerian<dim, EulerVectorType, spacedim> &mapping_q_eulerian)
   :
   MappingQGeneric<dim,spacedim>(degree),
-  mapping_q_eulerian (mapping_q_eulerian)
+  mapping_q_eulerian (mapping_q_eulerian),
+  support_quadrature(degree),
+  fe_values(mapping_q_eulerian.euler_dof_handler->get_fe(),
+            support_quadrature,
+            update_values | update_q_points)
 {}
 
 template <int dim, class EulerVectorType, int spacedim>
@@ -51,11 +55,7 @@ MappingQEulerian (const unsigned int degree,
   :
   MappingQ<dim,spacedim>(degree, true),
   euler_vector(&euler_vector),
-  euler_dof_handler(&euler_dof_handler),
-  support_quadrature(degree),
-  fe_values(euler_dof_handler.get_fe(),
-            support_quadrature,
-            update_values | update_q_points)
+  euler_dof_handler(&euler_dof_handler)
 {
   // reset the q1 mapping we use for interior cells (and previously
   // set by the MappingQ constructor) to a MappingQ1Eulerian with the
@@ -77,11 +77,7 @@ MappingQEulerian (const unsigned int degree,
   :
   MappingQ<dim,spacedim>(degree, true),
   euler_vector(&euler_vector),
-  euler_dof_handler(&euler_dof_handler),
-  support_quadrature(degree),
-  fe_values(euler_dof_handler.get_fe(),
-            support_quadrature,
-            update_values | update_q_points)
+  euler_dof_handler(&euler_dof_handler)
 {
   // reset the q1 mapping we use for interior cells (and previously
   // set by the MappingQ constructor) to a MappingQ1Eulerian with the
@@ -109,7 +105,7 @@ MappingQEulerian<dim, EulerVectorType, spacedim>::clone () const
 // .... SUPPORT QUADRATURE CONSTRUCTOR
 
 template <int dim, class EulerVectorType, int spacedim>
-MappingQEulerian<dim,EulerVectorType,spacedim>::
+MappingQEulerian<dim,EulerVectorType,spacedim>::MappingQEulerianGeneric::
 SupportQuadrature::
 SupportQuadrature (const unsigned int map_degree)
   :
@@ -206,7 +202,7 @@ compute_mapping_support_points (const typename Triangulation<dim,spacedim>::cell
   // that.  this implies that the user should order components appropriately,
   // or create a separate dof handler for the displacements.
 
-  const unsigned int n_support_pts = mapping_q_eulerian.support_quadrature.size();
+  const unsigned int n_support_pts = support_quadrature.size();
   const unsigned int n_components  = mapping_q_eulerian.euler_dof_handler->get_fe().n_components();
 
   Assert (n_components >= spacedim, ExcDimensionMismatch(n_components, spacedim) );
@@ -218,16 +214,16 @@ compute_mapping_support_points (const typename Triangulation<dim,spacedim>::cell
   // fill shift vector for each support point using an fe_values object. make
   // sure that the fe_values variable isn't used simultaneously from different
   // threads
-  Threads::Mutex::ScopedLock lock(mapping_q_eulerian.fe_values_mutex);
-  mapping_q_eulerian.fe_values.reinit(dof_cell);
-  mapping_q_eulerian.fe_values.get_function_values(*mapping_q_eulerian.euler_vector, shift_vector);
+  Threads::Mutex::ScopedLock lock(fe_values_mutex);
+  fe_values.reinit(dof_cell);
+  fe_values.get_function_values(*mapping_q_eulerian.euler_vector, shift_vector);
 
   // and finally compute the positions of the support points in the deformed
   // configuration.
   std::vector<Point<spacedim> > a(n_support_pts);
   for (unsigned int q=0; q<n_support_pts; ++q)
     {
-      a[q] = mapping_q_eulerian.fe_values.quadrature_point(q);
+      a[q] = fe_values.quadrature_point(q);
       for (unsigned int d=0; d<spacedim; ++d)
         a[q](d) += shift_vector[q](d);
     }

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.