]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Remove a whole lot of uses of MappingQ1. 1725/head
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Tue, 6 Oct 2015 22:47:24 +0000 (17:47 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 7 Oct 2015 19:44:13 +0000 (14:44 -0500)
Rather, directly use MappingQGeneric, given that MappingQ1 is now
simply a shell to MappingQGeneric to preserve the name.

21 files changed:
include/deal.II/fe/mapping_q.h
include/deal.II/fe/mapping_q1.h
include/deal.II/fe/mapping_q1_eulerian.h
include/deal.II/fe/mapping_q_generic.h
include/deal.II/matrix_free/matrix_free.h
include/deal.II/numerics/derivative_approximation.h
include/deal.II/numerics/error_estimator.h
include/deal.II/numerics/matrix_tools.h
include/deal.II/numerics/vector_tools.h
source/fe/fe_q_bubbles.cc
source/fe/fe_tools.cc
source/fe/mapping_q.cc
source/fe/mapping_q1.cc
source/fe/mapping_q1_eulerian.cc
source/fe/mapping_q_generic.cc
source/grid/grid_tools.cc
source/hp/mapping_collection.cc
source/numerics/data_out_rotation.cc
source/numerics/point_value_history.cc
tests/bits/find_cell_10.cc
tests/bits/find_cell_10a.cc

index 32eb88545df4de6f6d0a51cfb33d7baed7383a36..8c44597f286806eb8d4ebdefe485e5994741b46e 100644 (file)
@@ -211,7 +211,7 @@ protected:
    * as the MappingQ1 class. Consequently, it inherits from
    * MappingQ1::InternalData, rather than from Mapping::InternalDataBase.
    */
-  class InternalData : public MappingQ1<dim,spacedim>::InternalData
+  class InternalData : public MappingQGeneric<dim,spacedim>::InternalData
   {
   public:
     /**
@@ -237,7 +237,7 @@ protected:
      * A pointer to a structure to store the information for the pure
      * $Q_1$ mapping that is, by default, used on all interior cells.
      */
-    std_cxx11::unique_ptr<typename MappingQ1<dim,spacedim>::InternalData> mapping_q1_data;
+    std_cxx11::unique_ptr<typename MappingQGeneric<dim,spacedim>::InternalData> mapping_q1_data;
   };
 
 protected:
@@ -313,7 +313,7 @@ protected:
    *   our own Q1 mapping here, rather than simply resorting to
    *   StaticMappingQ1::mapping.
    */
-  std_cxx11::unique_ptr<const MappingQ1<dim,spacedim> > q1_mapping;
+  std_cxx11::unique_ptr<const MappingQGeneric<dim,spacedim> > q1_mapping;
 
   /**
    * Declare other MappingQ classes friends.
index 90180f21e83b29a143928a1e56153a8405ea4893..459a1542041cee3c18de96dd4e4550905a9c8607 100644 (file)
@@ -81,7 +81,7 @@ public:
 template <int dim, int spacedim=dim>
 struct StaticMappingQ1
 {
-  static MappingQ1<dim, spacedim> mapping;
+  static MappingQGeneric<dim, spacedim> mapping;
 };
 
 
index af7dc1771b9a28106904e6cd3c434f5d718a28d0..796a1bd85c85450fe168f2074d378a658df09b0b 100644 (file)
@@ -27,7 +27,7 @@ DEAL_II_NAMESPACE_OPEN
 /*@{*/
 
 /**
- * Eulerian mapping of general unit cells by d-linear shape functions. Each
+ * Eulerian mapping of general unit cells by $d$-linear shape functions. Each
  * cell is thus shifted in space by values given to the mapping through a
  * finite element field.
  *
@@ -83,7 +83,7 @@ DEAL_II_NAMESPACE_OPEN
  * @author Michael Stadler, 2001
  */
 template <int dim, class VECTOR = Vector<double>, int spacedim=dim >
-class MappingQ1Eulerian : public MappingQ1<dim,spacedim>
+class MappingQ1Eulerian : public MappingQGeneric<dim,spacedim>
 {
 public:
 
index 923b4e9e8e649c6f534f9d3ccd3449daa36ff012..d02844fb7b49ca9e1f7c113a91f16f09d6331c74 100644 (file)
@@ -106,6 +106,10 @@ public:
    */
   MappingQGeneric (const MappingQGeneric<dim,spacedim> &mapping);
 
+  // for documentation, see the Mapping base class
+  virtual
+  Mapping<dim,spacedim> *clone () const;
+
   /**
    * Return the degree of the mapping, i.e. the value which was passed to the
    * constructor.
index e4929e663fde95c423ebc31507cbf8718f45f12d..af6ee41f6bdc9148e895f5044daed50e9575ff79 100644 (file)
@@ -312,8 +312,7 @@ public:
                const AdditionalData    additional_data = AdditionalData());
 
   /**
-   * Initializes the data structures. Same as above, but with mapping @p
-   * MappingQ1.
+   * Initializes the data structures. Same as above, but using a $Q_1$ mapping.
    */
   template <typename DH, typename Quadrature>
   void reinit (const DH               &dof_handler,
@@ -368,8 +367,7 @@ public:
                const AdditionalData                        additional_data = AdditionalData());
 
   /**
-   * Initializes the data structures. Same as above, but with mapping @p
-   * MappingQ1.
+   * Initializes the data structures. Same as above, but  using a $Q_1$ mapping.
    */
   template <typename DH, typename Quadrature>
   void reinit (const std::vector<const DH *>               &dof_handler,
@@ -392,8 +390,7 @@ public:
                const AdditionalData                        additional_data = AdditionalData());
 
   /**
-   * Initializes the data structures. Same as above, but with mapping @p
-   * MappingQ1.
+   * Initializes the data structures. Same as above, but  using a $Q_1$ mapping.
    */
   template <typename DH, typename Quadrature>
   void reinit (const std::vector<const DH *>               &dof_handler,
@@ -1472,7 +1469,6 @@ reinit(const DH               &dof_handler,
        const Quad             &quad,
        const typename MatrixFree<dim,Number>::AdditionalData additional_data)
 {
-  MappingQ1<dim>                       mapping;
   std::vector<const DH *>               dof_handlers;
   std::vector<const ConstraintMatrix *> constraints;
   std::vector<Quad>          quads;
@@ -1484,7 +1480,7 @@ reinit(const DH               &dof_handler,
   std::vector<IndexSet> locally_owned_sets =
     internal::MatrixFree::extract_locally_owned_index_sets
     (dof_handlers, additional_data.level_mg_handler);
-  reinit(mapping, dof_handlers,constraints, locally_owned_sets, quads,
+  reinit(StaticMappingQ1<dim>::mapping, dof_handlers,constraints, locally_owned_sets, quads,
          additional_data);
 }
 
@@ -1524,11 +1520,10 @@ reinit(const std::vector<const DH *>               &dof_handler,
        const std::vector<Quad>                    &quad,
        const typename MatrixFree<dim,Number>::AdditionalData additional_data)
 {
-  MappingQ1<dim> mapping;
   std::vector<IndexSet> locally_owned_set =
     internal::MatrixFree::extract_locally_owned_index_sets
     (dof_handler, additional_data.level_mg_handler);
-  reinit(mapping, dof_handler,constraint,locally_owned_set,
+  reinit(StaticMappingQ1<dim>::mapping, dof_handler,constraint,locally_owned_set,
          static_cast<const std::vector<Quadrature<1> >&>(quad),
          additional_data);
 }
@@ -1543,13 +1538,12 @@ reinit(const std::vector<const DH *>               &dof_handler,
        const Quad                                 &quad,
        const typename MatrixFree<dim,Number>::AdditionalData additional_data)
 {
-  MappingQ1<dim> mapping;
   std::vector<Quad> quads;
   quads.push_back(quad);
   std::vector<IndexSet> locally_owned_set =
     internal::MatrixFree::extract_locally_owned_index_sets
     (dof_handler, additional_data.level_mg_handler);
-  reinit(mapping, dof_handler,constraint,locally_owned_set, quads,
+  reinit(StaticMappingQ1<dim>::mapping, dof_handler,constraint,locally_owned_set, quads,
          additional_data);
 }
 
index 356ef571506fc45fc175bbf5fca6d1e10f344beb..d3c55ec25ea44d8c4617c65fc6a01780b0a905df 100644 (file)
@@ -188,7 +188,7 @@ namespace DerivativeApproximation
 
   /**
    * Calls the @p interpolate function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, template <int, int> class DH, class InputVector, int spacedim>
   void
@@ -224,7 +224,7 @@ namespace DerivativeApproximation
 
   /**
    * Calls the @p interpolate function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, template <int, int> class DH, class InputVector, int spacedim>
   void
@@ -260,7 +260,7 @@ namespace DerivativeApproximation
                                 const unsigned int                            component = 0);
 
   /**
-   * Same as above, with <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * Same as above, with <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <class DH, int dim, int spacedim, class InputVector, int order>
   void
index d79b29e80babb1bc5baa8b2c82dd71046a75de38..b14bb33c7331ef97c2a9388d5717400658a05737 100644 (file)
@@ -341,7 +341,7 @@ public:
 
   /**
    * Calls the @p estimate function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <typename InputVector, class DH>
   static void estimate (const DH                &dof,
@@ -385,7 +385,7 @@ public:
 
   /**
    * Calls the @p estimate function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <typename InputVector, class DH>
   static void estimate (const DH                    &dof,
@@ -578,7 +578,7 @@ public:
 
   /**
    * Calls the @p estimate function, see above, with
-   * <tt>mapping=MappingQ1<1>()</tt>.
+   * <tt>mapping=MappingQGeneric1<1>()</tt>.
    */
   template <typename InputVector, class DH>
   static void estimate (const DH   &dof,
@@ -620,7 +620,7 @@ public:
 
   /**
    * Calls the @p estimate function, see above, with
-   * <tt>mapping=MappingQ1<1>()</tt>.
+   * <tt>mapping=MappingQGeneric1<1>()</tt>.
    */
   template <typename InputVector, class DH>
   static void estimate (const DH       &dof,
index 7c4ad805a654cfb3e92f8738ea373d46e57110ac..028af5862df12320a84919b6b3c5a63a2a790b9d 100644 (file)
@@ -242,7 +242,7 @@ namespace MatrixCreator
 
   /**
    * Calls the create_mass_matrix() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, typename number, int spacedim>
   void create_mass_matrix (const DoFHandler<dim,spacedim>    &dof,
@@ -279,7 +279,7 @@ namespace MatrixCreator
 
   /**
    * Calls the create_mass_matrix() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, typename number, int spacedim>
   void create_mass_matrix (const DoFHandler<dim,spacedim> &dof,
@@ -373,7 +373,7 @@ namespace MatrixCreator
 
   /**
    * Calls the create_boundary_mass_matrix() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, int spacedim>
   void create_boundary_mass_matrix (const DoFHandler<dim,spacedim>    &dof,
@@ -438,7 +438,7 @@ namespace MatrixCreator
 
   /**
    * Calls the create_laplace_matrix() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, int spacedim>
   void create_laplace_matrix (const DoFHandler<dim,spacedim> &dof,
@@ -474,7 +474,7 @@ namespace MatrixCreator
 
   /**
    * Calls the create_laplace_matrix() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, int spacedim>
   void create_laplace_matrix (const DoFHandler<dim,spacedim> &dof,
index db9f9fe2350fb7160637869c10515063a0f43814..7a8fa5fb064bee767540ca51ffef4e683c998fbe 100644 (file)
@@ -413,7 +413,7 @@ namespace VectorTools
 
   /**
    * Calls the @p interpolate() function above with
-   * <tt>mapping=MappingQ1@<dim>@()</tt>.
+   * <tt>mapping=MappingQGeneric1@<dim>@()</tt>.
    */
   template <class VECTOR, class DH>
   void interpolate (const DH              &dof,
@@ -605,7 +605,7 @@ namespace VectorTools
 
   /**
    * Calls the project() function above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, class VECTOR, int spacedim>
   void project (const DoFHandler<dim,spacedim>    &dof,
@@ -741,7 +741,7 @@ namespace VectorTools
 
   /**
    * Calls the other interpolate_boundary_values() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>. The same comments apply as for the
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>. The same comments apply as for the
    * previous function, in particular about the use of the component mask and
    * the requires size of the function object.
    *
@@ -759,7 +759,7 @@ namespace VectorTools
 
   /**
    * Calls the other interpolate_boundary_values() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>. The same comments apply as for the
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>. The same comments apply as for the
    * previous function, in particular about the use of the component mask and
    * the requires size of the function object.
    */
@@ -862,7 +862,7 @@ namespace VectorTools
 
   /**
    * Calls the other interpolate_boundary_values() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>. The same comments apply as for the
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>. The same comments apply as for the
    * previous function, in particular about the use of the component mask and
    * the requires size of the function object.
    *
@@ -882,7 +882,7 @@ namespace VectorTools
 
   /**
    * Calls the other interpolate_boundary_values() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>. The same comments apply as for the
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>. The same comments apply as for the
    * previous function, in particular about the use of the component mask and
    * the requires size of the function object.
    *
@@ -953,7 +953,7 @@ namespace VectorTools
 
   /**
    * Calls the project_boundary_values() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, int spacedim>
   void project_boundary_values (const DoFHandler<dim,spacedim>    &dof,
@@ -975,7 +975,7 @@ namespace VectorTools
 
   /**
    * Calls the project_boundary_values() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, int spacedim>
   void project_boundary_values (const hp::DoFHandler<dim,spacedim>    &dof,
@@ -1032,7 +1032,7 @@ namespace VectorTools
 
   /**
    * Calls the project_boundary_values() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    *
    * @ingroup constraints
    */
@@ -1604,7 +1604,7 @@ namespace VectorTools
 
   /**
    * Calls the create_right_hand_side() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, int spacedim>
   void create_right_hand_side (const DoFHandler<dim,spacedim> &dof,
@@ -1647,7 +1647,7 @@ namespace VectorTools
 
   /**
    * Calls the create_point_source_vector() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, int spacedim>
   void create_point_source_vector(const DoFHandler<dim,spacedim> &dof,
@@ -1700,7 +1700,7 @@ namespace VectorTools
 
   /**
    * Calls the create_point_source_vector() function for vector-valued finite
-   * elements, see above, with <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * elements, see above, with <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, int spacedim>
   void create_point_source_vector(const DoFHandler<dim,spacedim> &dof,
@@ -1749,7 +1749,7 @@ namespace VectorTools
 
   /**
    * Calls the create_boundary_right_hand_side() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    *
    * @see
    * @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
@@ -1916,7 +1916,7 @@ namespace VectorTools
 
   /**
    * Calls the integrate_difference() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, class InVector, class OutVector, int spacedim>
   void integrate_difference (const DoFHandler<dim,spacedim> &dof,
@@ -1944,7 +1944,7 @@ namespace VectorTools
 
   /**
    * Calls the integrate_difference() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, class InVector, class OutVector, int spacedim>
   void integrate_difference (const hp::DoFHandler<dim,spacedim> &dof,
@@ -2335,7 +2335,7 @@ namespace VectorTools
 
   /**
    * Calls the other compute_mean_value() function, see above, with
-   * <tt>mapping=MappingQ1@<dim@>()</tt>.
+   * <tt>mapping=MappingQGeneric@<dim@>(1)</tt>.
    */
   template <int dim, class InVector, int spacedim>
   double compute_mean_value (const DoFHandler<dim,spacedim> &dof,
index 05b0cdf1300a7546260766ca7cc4bb7a8980acef..73056608de8152a2bd574a0d5429a2e0acfee2fd 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2012 - 2013 by the deal.II authors
+// Copyright (C) 2012 - 2013, 2015 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -53,8 +53,6 @@ namespace FE_Q_Bubbles_Helper
       const unsigned int degree = fe.degree;
 
       // Initialize quadrature formula on fine cells
-      MappingQ1<dim, spacedim> mapping;
-
       std_cxx11::unique_ptr<Quadrature<dim> > q_fine;
       Quadrature<1> q_dummy(std::vector<Point<1> >(1), std::vector<double> (1,1.));
       switch (dim)
@@ -109,7 +107,7 @@ namespace FE_Q_Bubbles_Helper
           DoFHandler<dim, spacedim> dh(tr);
           dh.distribute_dofs(fe);
 
-          FEValues<dim, spacedim> fine (mapping, fe, *q_fine,
+          FEValues<dim, spacedim> fine (StaticMappingQ1<dim,spacedim>::mapping, fe, *q_fine,
                                         update_quadrature_points
                                         | update_JxW_values | update_values);
 
index ea8d480397dee0a922e58ebd98aa82b534ccf783..f13f1b39cc6e1bddddc8de96f34f63d5ccd9310c 100644 (file)
@@ -785,12 +785,11 @@ namespace FETools
       tria.begin_active()->set_refine_flag (RefinementCase<dim>(ref_case));
       tria.execute_coarsening_and_refinement ();
 
-      MappingQ1<dim,spacedim> mapping;
       const unsigned int degree = fe.degree;
       QGauss<dim> q_fine (degree+1);
       const unsigned int nq = q_fine.size();
 
-      FEValues<dim,spacedim> fine (mapping, fe, q_fine,
+      FEValues<dim,spacedim> fine (fe, q_fine,
                                    update_quadrature_points |
                                    update_JxW_values |
                                    update_values);
@@ -839,7 +838,7 @@ namespace FETools
               q_points_coarse[i](j) = q_points_fine[i](j);
           const Quadrature<dim> q_coarse (q_points_coarse,
                                           fine.get_JxW_values ());
-          FEValues<dim,spacedim> coarse (mapping, fe, q_coarse, update_values);
+          FEValues<dim,spacedim> coarse (fe, q_coarse, update_values);
 
           coarse.reinit (tria.begin (0));
 
@@ -1124,7 +1123,6 @@ namespace FETools
 
     // prepare FEValues, quadrature etc on
     // coarse cell
-    MappingQ1<dim,spacedim> mapping;
     QGauss<dim> q_fine(degree+1);
     const unsigned int nq = q_fine.size();
 
@@ -1135,7 +1133,7 @@ namespace FETools
       Triangulation<dim,spacedim> tr;
       GridGenerator::hyper_cube (tr, 0, 1);
 
-      FEValues<dim,spacedim> coarse (mapping, fe, q_fine,
+      FEValues<dim,spacedim> coarse (fe, q_fine,
                                      update_JxW_values | update_values);
 
       typename Triangulation<dim,spacedim>::cell_iterator coarse_cell
@@ -1193,7 +1191,7 @@ namespace FETools
         tr.begin_active()->set_refine_flag(RefinementCase<dim>(ref_case));
         tr.execute_coarsening_and_refinement();
 
-        FEValues<dim,spacedim> fine (mapping, fe, q_fine,
+        FEValues<dim,spacedim> fine (StaticMappingQ1<dim,spacedim>::mapping, fe, q_fine,
                                      update_quadrature_points | update_JxW_values |
                                      update_values);
 
@@ -1219,7 +1217,7 @@ namespace FETools
                 q_points_coarse[q](j) = q_points_fine[q](j);
             Quadrature<dim> q_coarse (q_points_coarse,
                                       fine.get_JxW_values());
-            FEValues<dim,spacedim> coarse (mapping, fe, q_coarse, update_values);
+            FEValues<dim,spacedim> coarse (StaticMappingQ1<dim,spacedim>::mapping, fe, q_coarse, update_values);
             coarse.reinit(coarse_cell);
 
             // Build RHS
index ed051a5ad4a759bf14a31e65b147c3f9399cbffe..7236647f744bf705d3c38136bce37f014f7fbcef 100644 (file)
@@ -70,7 +70,7 @@ MappingQ<dim,spacedim>::MappingQ (const unsigned int degree,
                               (dim != spacedim)),
   // create a Q1 mapping for use on interior cells (if necessary)
   // or to create a good initial guess in transform_real_to_unit_cell()
-  q1_mapping (new MappingQ1<dim,spacedim>())
+  q1_mapping (new MappingQGeneric<dim,spacedim>(1))
 {}
 
 
@@ -82,7 +82,7 @@ MappingQ<dim,spacedim>::MappingQ (const MappingQ<dim,spacedim> &mapping)
   use_mapping_q_on_all_cells (mapping.use_mapping_q_on_all_cells),
   // clone the Q1 mapping for use on interior cells (if necessary)
   // or to create a good initial guess in transform_real_to_unit_cell()
-  q1_mapping (mapping.q1_mapping->clone())
+  q1_mapping (dynamic_cast<MappingQGeneric<dim,spacedim>*>(mapping.q1_mapping->clone()))
 {}
 
 
index e61f37e3399723d9035fad20260a1ff3f2d0a08d..fdbda6f56e7868c84316f3a4df8e61bd464fc163 100644 (file)
@@ -59,7 +59,8 @@ MappingQ1<dim,spacedim>::clone () const
 
 
 template<int dim, int spacedim>
-MappingQ1<dim,spacedim> StaticMappingQ1<dim,spacedim>::mapping;
+MappingQGeneric<dim,spacedim>
+StaticMappingQ1<dim,spacedim>::mapping = MappingQGeneric<dim,spacedim>(1);
 
 
 
index 08dedcf0243752b595c9ce77aee934e706aba593..35919e3493a856b204bbfb100fbd3270159cf3ae 100644 (file)
@@ -33,6 +33,7 @@ MappingQ1Eulerian<dim, EulerVectorType, spacedim>::
 MappingQ1Eulerian (const EulerVectorType  &euler_transform_vectors,
                    const DoFHandler<dim,spacedim> &shiftmap_dof_handler)
   :
+  MappingQGeneric<dim,spacedim>(1),
   euler_transform_vectors(&euler_transform_vectors),
   shiftmap_dof_handler(&shiftmap_dof_handler)
 {}
@@ -128,11 +129,11 @@ fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
   // call the function of the base class, but ignoring
   // any potentially detected cell similarity between
   // the current and the previous cell
-  MappingQ1<dim,spacedim>::fill_fe_values (cell,
-                                           CellSimilarity::invalid_next_cell,
-                                           quadrature,
-                                           internal_data,
-                                           output_data);
+  MappingQGeneric<dim,spacedim>::fill_fe_values (cell,
+                                                 CellSimilarity::invalid_next_cell,
+                                                 quadrature,
+                                                 internal_data,
+                                                 output_data);
   // also return the updated flag since any detected
   // similarity wasn't based on the mapped field, but
   // the original vertices which are meaningless
index 5a99c5827a62a3ffd0c2697e20b842c17be1becd..b2cf9d06bb20b1df96c353bedf7a5a475d4a9c40 100644 (file)
@@ -1013,6 +1013,17 @@ MappingQGeneric<dim,spacedim>::MappingQGeneric (const MappingQGeneric<dim,spaced
 
 
 
+
+template<int dim, int spacedim>
+Mapping<dim,spacedim> *
+MappingQGeneric<dim,spacedim>::clone () const
+{
+  return new MappingQGeneric<dim,spacedim>(*this);
+}
+
+
+
+
 template<int dim, int spacedim>
 unsigned int
 MappingQGeneric<dim,spacedim>::get_degree() const
index 71f0dadbeb0f40fd0454c1cfd07487ed1c0d5ff6..d4077480e7042bd0029e6f1832edffbcd84f8fd1 100644 (file)
@@ -668,10 +668,8 @@ namespace GridTools
                      Triangulation<dim> &triangulation,
                      const Function<dim> *coefficient)
   {
-    // first provide everything that is
-    // needed for solving a Laplace
+    // first provide everything that is needed for solving a Laplace
     // equation.
-    MappingQ1<dim> mapping_q1;
     FE_Q<dim> q1(1);
 
     DoFHandler<dim> dof_handler(triangulation);
@@ -690,7 +688,7 @@ namespace GridTools
 
     QGauss<dim> quadrature(4);
 
-    MatrixCreator::create_laplace_matrix(mapping_q1, dof_handler, quadrature, S,coefficient);
+    MatrixCreator::create_laplace_matrix(StaticMappingQ1<dim>::mapping, dof_handler, quadrature, S, coefficient);
 
     // set up the boundary values for
     // the laplace problem
@@ -1337,7 +1335,7 @@ next_cell:
                     best_cell     = std::make_pair(*cell, p_cell);
                   }
               }
-            catch (typename MappingQ1<dim,spacedim>::ExcTransformationFailed &)
+            catch (typename MappingQGeneric<dim,spacedim>::ExcTransformationFailed &)
               {
                 // ok, the transformation
                 // failed presumably
@@ -1463,7 +1461,7 @@ next_cell:
                         best_cell     = std::make_pair(*cell, p_cell);
                       }
                   }
-                catch (typename MappingQ1<dim,spacedim>::ExcTransformationFailed &)
+                catch (typename MappingQGeneric<dim,spacedim>::ExcTransformationFailed &)
                   {
                     // ok, the transformation
                     // failed presumably
index 0c4536ad99d0688581f99f0ed39c67beb28d8cf9..b1bc5f0cd8f73d983fd10e72b31234b478972c83 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2003 - 2014 by the deal.II authors
+// Copyright (C) 2003 - 2015 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -93,7 +93,7 @@ namespace hp
      * this function is called.
      */
     template<int dim, int spacedim>
-    MappingQ1<dim,spacedim> &
+    MappingQGeneric<dim,spacedim> &
     get_static_mapping_q1()
     {
       static MappingQ1<dim,spacedim> mapping;
index b643365b804f42d60940fa7553ff17a531d6cf0f..701f8c058aae3bde8e9ef0fe37a1f1a8df6a9b28 100644 (file)
@@ -453,11 +453,12 @@ void DataOutRotation<dim,DH>::build_patches (const unsigned int n_patches_per_ci
     else
       n_postprocessor_outputs[dataset] = 0;
 
-  const MappingQ1<dimension, space_dimension> mapping;
   internal::DataOutRotation::ParallelData<dimension, space_dimension>
   thread_data (n_datasets,
                n_subdivisions, n_patches_per_circle,
-               n_postprocessor_outputs, mapping, this->get_finite_elements(),
+               n_postprocessor_outputs,
+               StaticMappingQ1<dimension,space_dimension>::mapping,
+               this->get_finite_elements(),
                update_flags);
   std::vector<DataOutBase::Patch<dimension+1,space_dimension+1> >
   new_patches (n_patches_per_circle);
index 48944781582e4581e73c1725be1a81a72844dbb3..018ca17ce9074961071ed5f3cfc444b7e72c6a1a 100644 (file)
@@ -647,7 +647,7 @@ void PointValueHistory<dim>
       // we now have a point to query,
       // need to know what cell it is in
       Point <dim> requested_location = point->requested_location;
-      typename DoFHandler<dim>::active_cell_iterator cell = GridTools::find_active_cell_around_point (MappingQ1<dim>(), *dof_handler, requested_location).first;
+      typename DoFHandler<dim>::active_cell_iterator cell = GridTools::find_active_cell_around_point (StaticMappingQ1<dim>::mapping, *dof_handler, requested_location).first;
 
 
       fe_values.reinit (cell);
@@ -1139,7 +1139,7 @@ void PointValueHistory<dim>
       // we now have a point to query,
       // need to know what cell it is in
       Point <dim> requested_location = point->requested_location;
-      typename DoFHandler<dim>::active_cell_iterator cell = GridTools::find_active_cell_around_point (MappingQ1<dim>(), *dof_handler, requested_location).first;
+      typename DoFHandler<dim>::active_cell_iterator cell = GridTools::find_active_cell_around_point (StaticMappingQ1<dim>::mapping, *dof_handler, requested_location).first;
       fe_values.reinit (cell);
 
       evaluation_points = fe_values.get_quadrature_points();
index ab490ab26e70a97c3d37a5da1bea62101aee59a5..869b866d141fabca8199b02a9da97c407651a553 100644 (file)
@@ -86,7 +86,7 @@ void test()
   ePos(1) = 1125.59175030825804242340382189;
 
   MappingQ<2> mapping(1);
-  MappingQ1<2> &mapping2 = StaticMappingQ1< 2 >::mapping;
+  MappingQGeneric<2> &mapping2 = StaticMappingQ1< 2 >::mapping;
   deallog << "1:" << std::endl;
   GridTools::find_active_cell_around_point (mapping, triangulation, ePos);
   deallog << "2:" << std::endl;
index 0772d5ff0968d21414857defad3c43434a4f4819..50c696ae2fbbff7bafe115fce05657daae6ea7aa 100644 (file)
@@ -97,7 +97,7 @@ void test()
   ePos(1) = 1125.59175030825804242340382189;
 
   MappingQ<2> mapping(1);
-  MappingQ1<2> &mapping2 = StaticMappingQ1< 2 >::mapping;
+  MappingQGeneric<2> &mapping2 = StaticMappingQ1< 2 >::mapping;
 
   Triangulation<2>     triangulation;
   create_coarse_grid(triangulation); // first Tria with just one cell

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.