]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Simplify code.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 18 Sep 2015 21:45:04 +0000 (16:45 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Thu, 1 Oct 2015 20:15:27 +0000 (15:15 -0500)
Instead of setting up an InternalData object everywhere, move this
into the transform_real_to_unit_cell_internal() function.

include/deal.II/fe/mapping_q_generic.h
source/fe/mapping_q.cc
source/fe/mapping_q1.cc
source/fe/mapping_q_generic.cc

index 0a5838766cdf6326fbfb06df822a1c3928f5a52f..8b876feebff73411029f5ae825cca379bc84c2f9 100644 (file)
@@ -546,14 +546,11 @@ protected:
    * transformation @p initial_p_unit.  Hence this function assumes that @p
    * mdata already includes the transformation shape values and gradients
    * computed at @p initial_p_unit.
-   *
-   * @p mdata will be changed by this function.
    */
   Point<dim>
   transform_real_to_unit_cell_internal (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
                                         const Point<spacedim> &p,
-                                        const Point<dim> &initial_p_unit,
-                                        InternalData &mdata) const;
+                                        const Point<dim> &initial_p_unit) const;
 
   /**
    * For <tt>dim=2,3</tt>. Append the support points of all shape
index fc3b674652e0d09c34dba11a542d1394246525a8..400d2998d6282f04765b01376776cccf8b64fcaf 100644 (file)
@@ -495,17 +495,7 @@ transform_real_to_unit_cell (const typename Triangulation<dim,spacedim>::cell_it
       // a better starting point to the following iteration
       initial_p_unit = GeometryInfo<dim>::project_to_unit_cell(initial_p_unit);
 
-      const Quadrature<dim> point_quadrature(initial_p_unit);
-
-      UpdateFlags update_flags = update_quadrature_points | update_jacobians;
-      if (spacedim>dim)
-        update_flags |= update_jacobian_grads;
-      std_cxx11::unique_ptr<InternalData> mdata (get_data(update_flags,
-                                                          point_quadrature));
-
-      compute_mapping_support_points (cell, mdata->mapping_support_points);
-
-      return this->transform_real_to_unit_cell_internal(cell, p, initial_p_unit, *mdata);
+      return this->transform_real_to_unit_cell_internal(cell, p, initial_p_unit);
     }
   else
     return initial_p_unit;
index 7e7edcd9efe30fe21ba148628dff756cf28ab736..54001d53b2af58b7ac3019db56d990c8a454ddf5 100644 (file)
@@ -430,23 +430,12 @@ transform_real_to_unit_cell (const typename Triangulation<dim,spacedim>::cell_it
       // cell), then project it back into the reference cell in hopes
       // that this gives a better starting point to the following
       // iteration
-      const Quadrature<dim> point_quadrature(initial_p_unit);
-
-      UpdateFlags update_flags = update_quadrature_points | update_jacobians;
-      if (spacedim>dim)
-        update_flags |= update_jacobian_grads;
-
-      std_cxx11::unique_ptr<typename MappingQGeneric<dim,spacedim>::InternalData>
-      mdata (this->get_data(update_flags,
-                            point_quadrature));
-      mdata->mapping_support_points = a;
 
       // perform the Newton iteration and
       // return the result. note that this
       // statement may throw an exception, which
       // we simply pass up to the caller
-      return this->transform_real_to_unit_cell_internal(cell, p, initial_p_unit,
-                                                        *mdata);
+      return this->transform_real_to_unit_cell_internal(cell, p, initial_p_unit);
     }
 }
 
index 1e58ee3b8206558354fcc9e19144fa47c44577c9..cefa8671c8fc191d5252430d87f8ec062ee935b0 100644 (file)
@@ -1409,26 +1409,23 @@ template<int dim, int spacedim>
 Point<dim>
 MappingQGeneric<dim,spacedim>::
 transform_real_to_unit_cell_internal
-(const typename Triangulation<dim,spacedim>::cell_iterator &/*cell*/,
- const Point<spacedim>                            &/*p*/,
- const Point<dim>                                 &/*initial_p_unit*/,
- InternalData                                     &/*mdata*/) const
+(const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const Point<spacedim>                            &p,
+ const Point<dim>                                 &initial_p_unit) const
 {
-  // default implementation (should never be called)
-  Assert(false, ExcInternalError());
-  return Point<dim>();
-}
+  const Quadrature<dim> point_quadrature(initial_p_unit);
 
-template<>
-Point<1>
-MappingQGeneric<1, 1>::
-transform_real_to_unit_cell_internal
-(const Triangulation<1, 1>::cell_iterator &cell,
- const Point<1>                            &p,
- const Point<1>                                 &initial_p_unit,
- InternalData                                     &mdata) const
-{
-  return do_transform_real_to_unit_cell_internal(cell, p, initial_p_unit, mdata);
+  UpdateFlags update_flags = update_quadrature_points | update_jacobians;
+  if (spacedim>dim)
+    update_flags |= update_jacobian_grads;
+  std_cxx11::unique_ptr<InternalData> mdata (get_data(update_flags,
+                                                      point_quadrature));
+
+  compute_mapping_support_points (cell, mdata->mapping_support_points);
+
+  // dispatch to the various specializations for spacedim=dim,
+  // spacedim=dim+1, etc
+  return do_transform_real_to_unit_cell_internal (cell, p, initial_p_unit, *mdata);
 }
 
 template<>

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.