]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add to FEInterfaceValues what we already have in FEValues. 9144/head
authorWolfgang Bangerth <bangerth@colostate.edu>
Thu, 5 Dec 2019 20:05:15 +0000 (13:05 -0700)
committerWolfgang Bangerth <bangerth@colostate.edu>
Mon, 9 Dec 2019 17:54:18 +0000 (10:54 -0700)
include/deal.II/fe/fe_interface_values.h

index 6a7cbd524b934cdbb120e48171cbef71e001989d..f7a7b31225c17f4450271e139c7592c7045f047e 100644 (file)
@@ -51,6 +51,12 @@ template <int dim, int spacedim = dim>
 class FEInterfaceValues
 {
 public:
+  /**
+   * Number of quadrature points.
+   */
+  const unsigned int n_quadrature_points;
+
+
   /**
    * Construct the FEInterfaceValues with a single FiniteElement (same on both
    * sides of the facet). The FEFaceValues objects will be initialized with
@@ -162,6 +168,20 @@ public:
   bool
   at_boundary() const;
 
+  /**
+   * Mapped quadrature weight. This value equals the
+   * mapped surface element times the weight of the quadrature
+   * point.
+   *
+   * You can think of the quantity returned by this function as the
+   * surface element $ds$ in the integral that we implement here by
+   * quadrature.
+   *
+   * @dealiiRequiresUpdateFlags{update_JxW_values}
+   */
+  double
+  JxW(const unsigned int quadrature_point) const;
+
   /**
    * Return the vector of JxW values for each quadrature point.
    *
@@ -412,7 +432,8 @@ FEInterfaceValues<dim, spacedim>::FEInterfaceValues(
   const FiniteElement<dim, spacedim> &fe,
   const Quadrature<dim - 1> &         quadrature,
   const UpdateFlags                   update_flags)
-  : internal_fe_face_values(mapping, fe, quadrature, update_flags)
+  : n_quadrature_points(quadrature.size())
+  , internal_fe_face_values(mapping, fe, quadrature, update_flags)
   , internal_fe_subface_values(mapping, fe, quadrature, update_flags)
   , internal_fe_face_values_neighbor(mapping, fe, quadrature, update_flags)
   , internal_fe_subface_values_neighbor(mapping, fe, quadrature, update_flags)
@@ -427,7 +448,8 @@ FEInterfaceValues<dim, spacedim>::FEInterfaceValues(
   const FiniteElement<dim, spacedim> &fe,
   const Quadrature<dim - 1> &         quadrature,
   const UpdateFlags                   update_flags)
-  : internal_fe_face_values(StaticMappingQ1<dim, spacedim>::mapping,
+  : n_quadrature_points(quadrature.size())
+  , internal_fe_face_values(StaticMappingQ1<dim, spacedim>::mapping,
                             fe,
                             quadrature,
                             update_flags)
@@ -553,6 +575,17 @@ FEInterfaceValues<dim, spacedim>::reinit(const CellIteratorType &cell,
 
 
 
+template <int dim, int spacedim>
+inline double
+FEInterfaceValues<dim, spacedim>::JxW(const unsigned int q) const
+{
+  Assert(fe_face_values != nullptr,
+         ExcMessage("This call requires a call to reinit() first."));
+  return fe_face_values->JxW(q);
+}
+
+
+
 template <int dim, int spacedim>
 const std::vector<double> &
 FEInterfaceValues<dim, spacedim>::get_JxW_values() const

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.