]> https://gitweb.dealii.org/ - dealii.git/commitdiff
MappingRelatedData: move to separate header and source files. 14539/head
authorDavid Wells <drwells@email.unc.edu>
Tue, 6 Dec 2022 20:55:04 +0000 (15:55 -0500)
committerDavid Wells <drwells@email.unc.edu>
Sun, 18 Dec 2022 20:32:57 +0000 (15:32 -0500)
include/deal.II/fe/fe.h
include/deal.II/fe/fe_update_flags.h
include/deal.II/fe/fe_values.h
include/deal.II/fe/mapping.h
include/deal.II/fe/mapping_related_data.h [new file with mode: 0644]
include/deal.II/non_matching/mapping_info.h
source/fe/CMakeLists.txt
source/fe/fe_values.cc
source/fe/fe_values.inst.in
source/fe/mapping_related_data.cc [new file with mode: 0644]
source/fe/mapping_related_data.inst.in [new file with mode: 0644]

index ac2b887bab6493e62342f197febe95a47ab2c0dc..dcbc1e6a07db3ede634f8346b2bf6283d7954946 100644 (file)
@@ -24,6 +24,7 @@
 #include <deal.II/fe/fe_update_flags.h>
 #include <deal.II/fe/fe_values_extractors.h>
 #include <deal.II/fe/mapping.h>
+#include <deal.II/fe/mapping_related_data.h>
 
 #include <deal.II/lac/full_matrix.h>
 #include <deal.II/lac/vector.h>
index b17d55053d186d0df3520ffea6a98b56085a0810..14ce6435f86c5b1bb201e67fe7741248ac6e8658 100644 (file)
@@ -19,8 +19,6 @@
 
 #include <deal.II/base/config.h>
 
-#include <deal.II/base/derivative_form.h>
-#include <deal.II/base/point.h>
 #include <deal.II/base/table.h>
 #include <deal.II/base/tensor.h>
 
@@ -387,116 +385,6 @@ namespace internal
 {
   namespace FEValuesImplementation
   {
-    /**
-     * A class that stores all of the mapping related data used in
-     * dealii::FEValues, dealii::FEFaceValues, and dealii::FESubfaceValues
-     * objects. Objects of this kind will be given as <i>output</i> argument
-     * when dealii::FEValues::reinit() calls Mapping::fill_fe_values() for a
-     * given cell, face, or subface.
-     *
-     * The data herein will then be provided as <i>input</i> argument in the
-     * following call to FiniteElement::fill_fe_values().
-     *
-     * @ingroup feaccess
-     */
-    template <int dim, int spacedim = dim>
-    class MappingRelatedData
-    {
-    public:
-      /**
-       * Initialize all vectors to correct size.
-       */
-      void
-      initialize(const unsigned int n_quadrature_points,
-                 const UpdateFlags  flags);
-
-      /**
-       * Compute and return an estimate for the memory consumption (in bytes)
-       * of this object.
-       */
-      std::size_t
-      memory_consumption() const;
-
-      /**
-       * Store an array of weights times the Jacobi determinant at the
-       * quadrature points. This function is reset each time reinit() is
-       * called. The Jacobi determinant is actually the reciprocal value of
-       * the Jacobi matrices stored in this class, see the general
-       * documentation of this class for more information.
-       *
-       * However, if this object refers to an FEFaceValues or FESubfaceValues
-       * object, then the JxW_values correspond to the Jacobian of the
-       * transformation of the face, not the cell, i.e. the dimensionality is
-       * that of a surface measure, not of a volume measure. In this case, it
-       * is computed from the boundary forms, rather than the Jacobian matrix.
-       */
-      std::vector<double> JxW_values;
-
-      /**
-       * Array of the Jacobian matrices at the quadrature points.
-       */
-      std::vector<DerivativeForm<1, dim, spacedim>> jacobians;
-
-      /**
-       * Array of the derivatives of the Jacobian matrices at the quadrature
-       * points.
-       */
-      std::vector<DerivativeForm<2, dim, spacedim>> jacobian_grads;
-
-      /**
-       * Array of the inverse Jacobian matrices at the quadrature points.
-       */
-      std::vector<DerivativeForm<1, spacedim, dim>> inverse_jacobians;
-
-      /**
-       * Array of the derivatives of the Jacobian matrices at the quadrature
-       * points, pushed forward to the real cell coordinates.
-       */
-      std::vector<Tensor<3, spacedim>> jacobian_pushed_forward_grads;
-
-      /**
-       * Array of the second derivatives of the Jacobian matrices at the
-       * quadrature points.
-       */
-      std::vector<DerivativeForm<3, dim, spacedim>> jacobian_2nd_derivatives;
-
-      /**
-       * Array of the  second derivatives of the Jacobian matrices at the
-       * quadrature points, pushed forward to the real cell coordinates.
-       */
-      std::vector<Tensor<4, spacedim>> jacobian_pushed_forward_2nd_derivatives;
-
-      /**
-       * Array of the  third derivatives of the Jacobian matrices at the
-       * quadrature points.
-       */
-      std::vector<DerivativeForm<4, dim, spacedim>> jacobian_3rd_derivatives;
-
-      /**
-       * Array of the  third derivatives of the Jacobian matrices at the
-       * quadrature points, pushed forward to the real cell coordinates.
-       */
-      std::vector<Tensor<5, spacedim>> jacobian_pushed_forward_3rd_derivatives;
-
-      /**
-       * Array of quadrature points. This array is set up upon calling
-       * reinit() and contains the quadrature points on the real element,
-       * rather than on the reference element.
-       */
-      std::vector<Point<spacedim>> quadrature_points;
-
-      /**
-       * List of outward normal vectors at the quadrature points.
-       */
-      std::vector<Tensor<1, spacedim>> normal_vectors;
-
-      /**
-       * List of boundary forms at the quadrature points.
-       */
-      std::vector<Tensor<1, spacedim>> boundary_forms;
-    };
-
-
     /**
      * A class that stores all of the shape function related data used in
      * dealii::FEValues, dealii::FEFaceValues, and dealii::FESubfaceValues
index 89279498fc05a16a524bf30373de7822731489be..683a802a8068ccbc5ce0f3eb5b337db7263325fd 100644 (file)
@@ -34,6 +34,7 @@
 #include <deal.II/fe/fe_update_flags.h>
 #include <deal.II/fe/fe_values_extractors.h>
 #include <deal.II/fe/mapping.h>
+#include <deal.II/fe/mapping_related_data.h>
 
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/tria_iterator.h>
index ef42a7d6d81763f533c8b3cf1db274c2ff2a81d2..9c2568abc6704378b0c1c213c73d911d4643d47f 100644 (file)
@@ -23,6 +23,7 @@
 #include <deal.II/base/derivative_form.h>
 
 #include <deal.II/fe/fe_update_flags.h>
+#include <deal.II/fe/mapping_related_data.h>
 
 #include <deal.II/grid/tria.h>
 
diff --git a/include/deal.II/fe/mapping_related_data.h b/include/deal.II/fe/mapping_related_data.h
new file mode 100644 (file)
index 0000000..ab525b9
--- /dev/null
@@ -0,0 +1,157 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2022 - 2022 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#ifndef dealii_fe_mapping_related_data_h
+#define dealii_fe_mapping_related_data_h
+
+#include <deal.II/base/config.h>
+
+#include <deal.II/base/derivative_form.h>
+#include <deal.II/base/point.h>
+#include <deal.II/base/tensor.h>
+
+#include <deal.II/fe/fe_update_flags.h>
+
+#include <vector>
+
+
+DEAL_II_NAMESPACE_OPEN
+
+/** @addtogroup feaccess */
+/** @{ */
+
+namespace internal
+{
+  namespace FEValuesImplementation
+  {
+    /**
+     * A class that stores all of the mapping related data used in
+     * dealii::FEValues, dealii::FEFaceValues, and dealii::FESubfaceValues
+     * objects. Objects of this kind will be given as <i>output</i> argument
+     * when dealii::FEValues::reinit() calls Mapping::fill_fe_values() for a
+     * given cell, face, or subface.
+     *
+     * The data herein will then be provided as <i>input</i> argument in the
+     * following call to FiniteElement::fill_fe_values().
+     *
+     * @ingroup feaccess
+     */
+    template <int dim, int spacedim = dim>
+    class MappingRelatedData
+    {
+    public:
+      /**
+       * Initialize all vectors to correct size.
+       */
+      void
+      initialize(const unsigned int n_quadrature_points,
+                 const UpdateFlags  flags);
+
+      /**
+       * Compute and return an estimate for the memory consumption (in bytes)
+       * of this object.
+       */
+      std::size_t
+      memory_consumption() const;
+
+      /**
+       * Store an array of weights times the Jacobi determinant at the
+       * quadrature points. This function is reset each time reinit() is
+       * called. The Jacobi determinant is actually the reciprocal value of
+       * the Jacobi matrices stored in this class, see the general
+       * documentation of this class for more information.
+       *
+       * However, if this object refers to an FEFaceValues or FESubfaceValues
+       * object, then the JxW_values correspond to the Jacobian of the
+       * transformation of the face, not the cell, i.e. the dimensionality is
+       * that of a surface measure, not of a volume measure. In this case, it
+       * is computed from the boundary forms, rather than the Jacobian matrix.
+       */
+      std::vector<double> JxW_values;
+
+      /**
+       * Array of the Jacobian matrices at the quadrature points.
+       */
+      std::vector<DerivativeForm<1, dim, spacedim>> jacobians;
+
+      /**
+       * Array of the derivatives of the Jacobian matrices at the quadrature
+       * points.
+       */
+      std::vector<DerivativeForm<2, dim, spacedim>> jacobian_grads;
+
+      /**
+       * Array of the inverse Jacobian matrices at the quadrature points.
+       */
+      std::vector<DerivativeForm<1, spacedim, dim>> inverse_jacobians;
+
+      /**
+       * Array of the derivatives of the Jacobian matrices at the quadrature
+       * points, pushed forward to the real cell coordinates.
+       */
+      std::vector<Tensor<3, spacedim>> jacobian_pushed_forward_grads;
+
+      /**
+       * Array of the second derivatives of the Jacobian matrices at the
+       * quadrature points.
+       */
+      std::vector<DerivativeForm<3, dim, spacedim>> jacobian_2nd_derivatives;
+
+      /**
+       * Array of the  second derivatives of the Jacobian matrices at the
+       * quadrature points, pushed forward to the real cell coordinates.
+       */
+      std::vector<Tensor<4, spacedim>> jacobian_pushed_forward_2nd_derivatives;
+
+      /**
+       * Array of the  third derivatives of the Jacobian matrices at the
+       * quadrature points.
+       */
+      std::vector<DerivativeForm<4, dim, spacedim>> jacobian_3rd_derivatives;
+
+      /**
+       * Array of the  third derivatives of the Jacobian matrices at the
+       * quadrature points, pushed forward to the real cell coordinates.
+       */
+      std::vector<Tensor<5, spacedim>> jacobian_pushed_forward_3rd_derivatives;
+
+      /**
+       * Array of quadrature points. This array is set up upon calling
+       * reinit() and contains the quadrature points on the real element,
+       * rather than on the reference element.
+       */
+      std::vector<Point<spacedim>> quadrature_points;
+
+      /**
+       * List of outward normal vectors at the quadrature points.
+       */
+      std::vector<Tensor<1, spacedim>> normal_vectors;
+
+      /**
+       * List of boundary forms at the quadrature points.
+       */
+      std::vector<Tensor<1, spacedim>> boundary_forms;
+    };
+  } // namespace FEValuesImplementation
+} // namespace internal
+
+
+/** @} */
+
+
+
+DEAL_II_NAMESPACE_CLOSE
+
+#endif
index 1a70680da996d4d58b3487c9118370a9abbaa684..241622d3264b741433b7bbde3de91616483ff620 100644 (file)
@@ -28,6 +28,7 @@
 #include <deal.II/fe/fe_update_flags.h>
 #include <deal.II/fe/mapping_cartesian.h>
 #include <deal.II/fe/mapping_q.h>
+#include <deal.II/fe/mapping_related_data.h>
 
 #include <memory>
 
index 177a8c2df85c83160fc34ec1a09d724a67e8ad28..776c82fe45fbb1d5226bb3124419101c0b8ece8f 100644 (file)
@@ -65,6 +65,7 @@ set(_unity_include_src
   mapping_q.cc
   mapping_q_cache.cc
   mapping_manifold.cc
+  mapping_related_data.cc
   )
 
 set(_separate_src
@@ -142,6 +143,7 @@ set(_inst
   mapping_q_eulerian.inst.in
   mapping_q.inst.in
   mapping_manifold.inst.in
+  mapping_related_data.inst.in
   )
 
 file(GLOB _header
index d742414a27c936b205cc2218f153ebf3a0981307..cff0ae89ef7115d0f892fe761188d27ab0d026af 100644 (file)
@@ -2699,90 +2699,6 @@ namespace internal
 {
   namespace FEValuesImplementation
   {
-    template <int dim, int spacedim>
-    void
-    MappingRelatedData<dim, spacedim>::initialize(
-      const unsigned int n_quadrature_points,
-      const UpdateFlags  flags)
-    {
-      if (flags & update_quadrature_points)
-        this->quadrature_points.resize(
-          n_quadrature_points,
-          Point<spacedim>(numbers::signaling_nan<Tensor<1, spacedim>>()));
-
-      if (flags & update_JxW_values)
-        this->JxW_values.resize(n_quadrature_points,
-                                numbers::signaling_nan<double>());
-
-      if (flags & update_jacobians)
-        this->jacobians.resize(
-          n_quadrature_points,
-          numbers::signaling_nan<DerivativeForm<1, dim, spacedim>>());
-
-      if (flags & update_jacobian_grads)
-        this->jacobian_grads.resize(
-          n_quadrature_points,
-          numbers::signaling_nan<DerivativeForm<2, dim, spacedim>>());
-
-      if (flags & update_jacobian_pushed_forward_grads)
-        this->jacobian_pushed_forward_grads.resize(
-          n_quadrature_points, numbers::signaling_nan<Tensor<3, spacedim>>());
-
-      if (flags & update_jacobian_2nd_derivatives)
-        this->jacobian_2nd_derivatives.resize(
-          n_quadrature_points,
-          numbers::signaling_nan<DerivativeForm<3, dim, spacedim>>());
-
-      if (flags & update_jacobian_pushed_forward_2nd_derivatives)
-        this->jacobian_pushed_forward_2nd_derivatives.resize(
-          n_quadrature_points, numbers::signaling_nan<Tensor<4, spacedim>>());
-
-      if (flags & update_jacobian_3rd_derivatives)
-        this->jacobian_3rd_derivatives.resize(n_quadrature_points);
-
-      if (flags & update_jacobian_pushed_forward_3rd_derivatives)
-        this->jacobian_pushed_forward_3rd_derivatives.resize(
-          n_quadrature_points, numbers::signaling_nan<Tensor<5, spacedim>>());
-
-      if (flags & update_inverse_jacobians)
-        this->inverse_jacobians.resize(
-          n_quadrature_points,
-          numbers::signaling_nan<DerivativeForm<1, spacedim, dim>>());
-
-      if (flags & update_boundary_forms)
-        this->boundary_forms.resize(
-          n_quadrature_points, numbers::signaling_nan<Tensor<1, spacedim>>());
-
-      if (flags & update_normal_vectors)
-        this->normal_vectors.resize(
-          n_quadrature_points, numbers::signaling_nan<Tensor<1, spacedim>>());
-    }
-
-
-
-    template <int dim, int spacedim>
-    std::size_t
-    MappingRelatedData<dim, spacedim>::memory_consumption() const
-    {
-      return (
-        MemoryConsumption::memory_consumption(JxW_values) +
-        MemoryConsumption::memory_consumption(jacobians) +
-        MemoryConsumption::memory_consumption(jacobian_grads) +
-        MemoryConsumption::memory_consumption(jacobian_pushed_forward_grads) +
-        MemoryConsumption::memory_consumption(jacobian_2nd_derivatives) +
-        MemoryConsumption::memory_consumption(
-          jacobian_pushed_forward_2nd_derivatives) +
-        MemoryConsumption::memory_consumption(jacobian_3rd_derivatives) +
-        MemoryConsumption::memory_consumption(
-          jacobian_pushed_forward_3rd_derivatives) +
-        MemoryConsumption::memory_consumption(inverse_jacobians) +
-        MemoryConsumption::memory_consumption(quadrature_points) +
-        MemoryConsumption::memory_consumption(normal_vectors) +
-        MemoryConsumption::memory_consumption(boundary_forms));
-    }
-
-
-
     template <int dim, int spacedim>
     void
     FiniteElementRelatedData<dim, spacedim>::initialize(
index 8d5cd661f124bdad603e87752f07ea54a79eeb0f..63d6b4362b4fc5c34863ff335e5b00a5868eda9b 100644 (file)
@@ -40,8 +40,6 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS)
     \{
       namespace FEValuesImplementation
       \{
-        template class MappingRelatedData<deal_II_dimension,
-                                          deal_II_space_dimension>;
         template class FiniteElementRelatedData<deal_II_dimension,
                                                 deal_II_space_dimension>;
       \}
diff --git a/source/fe/mapping_related_data.cc b/source/fe/mapping_related_data.cc
new file mode 100644 (file)
index 0000000..9c9dfd1
--- /dev/null
@@ -0,0 +1,114 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2022 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/base/memory_consumption.h>
+#include <deal.II/base/numbers.h>
+#include <deal.II/base/signaling_nan.h>
+
+#include <deal.II/fe/mapping_related_data.h>
+
+DEAL_II_NAMESPACE_OPEN
+
+namespace internal
+{
+  namespace FEValuesImplementation
+  {
+    template <int dim, int spacedim>
+    void
+    MappingRelatedData<dim, spacedim>::initialize(
+      const unsigned int n_quadrature_points,
+      const UpdateFlags  flags)
+    {
+      if (flags & update_quadrature_points)
+        this->quadrature_points.resize(
+          n_quadrature_points,
+          Point<spacedim>(numbers::signaling_nan<Tensor<1, spacedim>>()));
+
+      if (flags & update_JxW_values)
+        this->JxW_values.resize(n_quadrature_points,
+                                numbers::signaling_nan<double>());
+
+      if (flags & update_jacobians)
+        this->jacobians.resize(
+          n_quadrature_points,
+          numbers::signaling_nan<DerivativeForm<1, dim, spacedim>>());
+
+      if (flags & update_jacobian_grads)
+        this->jacobian_grads.resize(
+          n_quadrature_points,
+          numbers::signaling_nan<DerivativeForm<2, dim, spacedim>>());
+
+      if (flags & update_jacobian_pushed_forward_grads)
+        this->jacobian_pushed_forward_grads.resize(
+          n_quadrature_points, numbers::signaling_nan<Tensor<3, spacedim>>());
+
+      if (flags & update_jacobian_2nd_derivatives)
+        this->jacobian_2nd_derivatives.resize(
+          n_quadrature_points,
+          numbers::signaling_nan<DerivativeForm<3, dim, spacedim>>());
+
+      if (flags & update_jacobian_pushed_forward_2nd_derivatives)
+        this->jacobian_pushed_forward_2nd_derivatives.resize(
+          n_quadrature_points, numbers::signaling_nan<Tensor<4, spacedim>>());
+
+      if (flags & update_jacobian_3rd_derivatives)
+        this->jacobian_3rd_derivatives.resize(n_quadrature_points);
+
+      if (flags & update_jacobian_pushed_forward_3rd_derivatives)
+        this->jacobian_pushed_forward_3rd_derivatives.resize(
+          n_quadrature_points, numbers::signaling_nan<Tensor<5, spacedim>>());
+
+      if (flags & update_inverse_jacobians)
+        this->inverse_jacobians.resize(
+          n_quadrature_points,
+          numbers::signaling_nan<DerivativeForm<1, spacedim, dim>>());
+
+      if (flags & update_boundary_forms)
+        this->boundary_forms.resize(
+          n_quadrature_points, numbers::signaling_nan<Tensor<1, spacedim>>());
+
+      if (flags & update_normal_vectors)
+        this->normal_vectors.resize(
+          n_quadrature_points, numbers::signaling_nan<Tensor<1, spacedim>>());
+    }
+
+
+
+    template <int dim, int spacedim>
+    std::size_t
+    MappingRelatedData<dim, spacedim>::memory_consumption() const
+    {
+      return (
+        MemoryConsumption::memory_consumption(JxW_values) +
+        MemoryConsumption::memory_consumption(jacobians) +
+        MemoryConsumption::memory_consumption(jacobian_grads) +
+        MemoryConsumption::memory_consumption(jacobian_pushed_forward_grads) +
+        MemoryConsumption::memory_consumption(jacobian_2nd_derivatives) +
+        MemoryConsumption::memory_consumption(
+          jacobian_pushed_forward_2nd_derivatives) +
+        MemoryConsumption::memory_consumption(jacobian_3rd_derivatives) +
+        MemoryConsumption::memory_consumption(
+          jacobian_pushed_forward_3rd_derivatives) +
+        MemoryConsumption::memory_consumption(inverse_jacobians) +
+        MemoryConsumption::memory_consumption(quadrature_points) +
+        MemoryConsumption::memory_consumption(normal_vectors) +
+        MemoryConsumption::memory_consumption(boundary_forms));
+    }
+  } // namespace FEValuesImplementation
+} // namespace internal
+
+#include "mapping_related_data.inst"
+
+DEAL_II_NAMESPACE_CLOSE
diff --git a/source/fe/mapping_related_data.inst.in b/source/fe/mapping_related_data.inst.in
new file mode 100644 (file)
index 0000000..6d586bb
--- /dev/null
@@ -0,0 +1,31 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2022 - 2022 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#ifndef DOXYGEN
+
+for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS)
+  {
+#  if deal_II_dimension <= deal_II_space_dimension
+    namespace internal
+    \{
+      namespace FEValuesImplementation
+      \{
+        template class MappingRelatedData<deal_II_dimension,
+                                          deal_II_space_dimension>;
+      \}
+    \}
+#  endif
+  }
+#endif

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.