]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
cell_JxW_values, which was not really the right concept, has been removed
authorkanschat <kanschat@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 13 Jan 2009 00:19:17 +0000 (00:19 +0000)
committerkanschat <kanschat@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 13 Jan 2009 00:19:17 +0000 (00:19 +0000)
git-svn-id: https://svn.dealii.org/trunk@18191 0785d39b-7218-0410-832d-ea1e28bc413d

15 files changed:
deal.II/deal.II/include/fe/fe_update_flags.h
deal.II/deal.II/include/fe/fe_values.h
deal.II/deal.II/include/fe/mapping.h
deal.II/deal.II/include/fe/mapping_cartesian.h
deal.II/deal.II/include/fe/mapping_q.h
deal.II/deal.II/include/fe/mapping_q1.h
deal.II/deal.II/source/fe/fe_abf.cc
deal.II/deal.II/source/fe/fe_poly_tensor.cc
deal.II/deal.II/source/fe/fe_raviart_thomas.cc
deal.II/deal.II/source/fe/fe_raviart_thomas_nodal.cc
deal.II/deal.II/source/fe/fe_system.cc
deal.II/deal.II/source/fe/fe_values.cc
deal.II/deal.II/source/fe/mapping_cartesian.cc
deal.II/deal.II/source/fe/mapping_q.cc
deal.II/deal.II/source/fe/mapping_q1.cc

index b81bd855ff50c8a684fe25ec803388f2f7fe6488..9eb404b7a7e29695c67dda2d759ab9aa402fceee 100644 (file)
@@ -227,16 +227,6 @@ enum UpdateFlags
                                        * in each quadrature point.
                                        */
       update_volume_elements              = 0x4000,
-                                      /**
-                                       * Compute the JxW values
-                                       * on faces for the cell mapping
-                                       * and not the face mapping!
-                                       * This functionality is required
-                                       * for the Piola mapping which
-                                       * is used in conjunction with
-                                       * H_div subspaces like RT and ABF.
-                                       */
-      update_cell_JxW_values              = 0x8000,
                                       /**
                                        * Update the location of the
                                        * mapped generalized support
index b6584a454c04f331b8e74f1d3d424b913d7aea06..324b5082132dc8c70fc3dc95df73116305ecba55 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name:  $
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -984,31 +984,6 @@ class FEValuesData
                                      */
     std::vector<Tensor<2,spacedim> > inverse_jacobians;
 
-                                    /**
-                                     * 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.
-                                     *
-                                     * In contrast to JxW_values,
-                                     * this vector uses the transformation
-                                     * of the cell even in case the
-                                     * corresponding FEValues object
-                                     * refers to a face. Currently the
-                                     * only purpose is to provide
-                                     * exactly this value to the
-                                     * transformation which is used
-                                     * for the PolyTensor elements.
-                                     */
-    std::vector<double>       cell_JxW_values;
-
                                     /**
                                      * Array of quadrature points. This array
                                      * is set up upon calling reinit() and
index 095d4e6204387bec8c4e9b5223d057f119b29abb..9e042adb34d220faf6a4524b93329b76ad8cc244 100644 (file)
@@ -586,8 +586,7 @@ class Mapping : public Subscriptor
                         std::vector<Point<dim> >                                  &quadrature_points,
                         std::vector<double>                                       &JxW_values,
                         std::vector<Tensor<1,dim> >                               &boundary_form,
-                        std::vector<Point<spacedim> >                             &normal_vectors,
-                        std::vector<double>                                       &cell_JxW_values) const = 0;
+                        std::vector<Point<spacedim> >                             &normal_vectors) const = 0;
 
                                     /**
                                      * See above.
@@ -601,8 +600,7 @@ class Mapping : public Subscriptor
                            std::vector<Point<dim> >        &quadrature_points,
                            std::vector<double>                      &JxW_values,
                            std::vector<Tensor<1,dim> >     &boundary_form,
-                           std::vector<Point<spacedim> >        &normal_vectors,
-                           std::vector<double>             &cell_JxW_values) const = 0;
+                           std::vector<Point<spacedim> >        &normal_vectors) const = 0;
 
                                     /**
                                      * Give class @p FEValues access
index e15022238b3342216851bc5e5672fe69a4c30975..dff1212763e8bc221e6dc3bc90cf272406d01423 100644 (file)
@@ -78,8 +78,7 @@ class MappingCartesian : public Mapping<dim,spacedim>
                         std::vector<Point<dim> >        &quadrature_points,
                         std::vector<double>             &JxW_values,
                         std::vector<Tensor<1,dim> >        &boundary_form,
-                        std::vector<Point<dim> >        &normal_vectors,
-                        std::vector<double>             &cell_JxW_values) const ;
+                        std::vector<Point<spacedim> >        &normal_vectors) const ;
     virtual void
     fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
                            const unsigned int face_no,
@@ -89,8 +88,7 @@ class MappingCartesian : public Mapping<dim,spacedim>
                            std::vector<Point<dim> >        &quadrature_points,
                            std::vector<double>             &JxW_values,
                            std::vector<Tensor<1,dim> >        &boundary_form,
-                           std::vector<Point<dim> >        &normal_vectors,
-                           std::vector<double>             &cell_JxW_values) const ;
+                           std::vector<Point<spacedim> >        &normal_vectors) const ;
 
     virtual void
     transform (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
@@ -202,33 +200,6 @@ class MappingCartesian : public Mapping<dim,spacedim>
 
 /* -------------- declaration of explicit specializations ------------- */
 
-#ifndef DOXYGEN
-
-template <> void MappingCartesian<1>::fill_fe_face_values (
-  const Triangulation<1>::cell_iterator &,
-  const unsigned,
-  const Quadrature<0>&,
-  Mapping<1>::InternalDataBase&,
-  std::vector<Point<1> >&,
-  std::vector<double>&,
-  std::vector<Tensor<1,1> >&,
-  std::vector<Point<1> >&,
-  std::vector<double>&) const;
-
-template <> void MappingCartesian<1>::fill_fe_subface_values (
-  const Triangulation<1>::cell_iterator &,
-  const unsigned,
-  const unsigned,
-  const Quadrature<0>&,
-  Mapping<1>::InternalDataBase&,
-  std::vector<Point<1> >&,
-  std::vector<double>&,
-  std::vector<Tensor<1,1> >&,
-  std::vector<Point<1> >&,
-  std::vector<double>&) const;
-
-#endif // DOXYGEN  
-
 DEAL_II_NAMESPACE_CLOSE
 
 #endif
index 13e7a4546a8e41c06159074fc3bcf498df8206df..24c8d11e6019fe89844970ec9112191bd6984869 100644 (file)
@@ -225,8 +225,7 @@ class MappingQ : public MappingQ1<dim,spacedim>
                         typename std::vector<Point<dim> >        &quadrature_points,
                         std::vector<double>             &JxW_values,
                         typename std::vector<Tensor<1,dim> >        &exterior_form,
-                        typename std::vector<Point<dim> >        &normal_vectors,
-                        std::vector<double>             &cell_JxW_values) const ;
+                        typename std::vector<Point<dim> >        &normal_vectors) const ;
 
                                     /**
                                      * Implementation of the interface in
@@ -241,8 +240,7 @@ class MappingQ : public MappingQ1<dim,spacedim>
                            typename std::vector<Point<dim> >        &quadrature_points,
                            std::vector<double>             &JxW_values,
                            typename std::vector<Tensor<1,dim> >        &exterior_form,
-                           typename std::vector<Point<dim> >        &normal_vectors,
-                           std::vector<double>             &cell_JxW_values) const ;
+                           typename std::vector<Point<dim> >        &normal_vectors) const ;
 
                                     /**
                                      * For <tt>dim=2,3</tt>. Append the
index 0e059bb1dc74f8432cf58e321403e006ae122ea4..4afe9df44bb5cb7f7c8f198d529cb81d83132fee 100644 (file)
@@ -277,8 +277,6 @@ class MappingQ1 : public Mapping<dim,spacedim>
        unsigned int n_shape_functions;
     };
 
-  protected:
-
                                      /**
                                       * Declare a convenience typedef
                                       * for the class that describes
@@ -317,8 +315,7 @@ class MappingQ1 : public Mapping<dim,spacedim>
                         typename std::vector<Point<dim> >                &quadrature_points,
                         std::vector<double>                              &JxW_values,
                         typename std::vector<Tensor<1,dim> >             &boundary_form,
-                        typename std::vector<Point<spacedim> >           &normal_vectors,
-                        std::vector<double>                              &cell_JxW_values) const ;
+                        typename std::vector<Point<spacedim> >           &normal_vectors) const ;
 
                                     /**
                                      * Implementation of the interface in
@@ -333,8 +330,7 @@ class MappingQ1 : public Mapping<dim,spacedim>
                            typename std::vector<Point<dim> >        &quadrature_points,
                            std::vector<double>             &JxW_values,
                            typename std::vector<Tensor<1,dim> >        &boundary_form,
-                           typename std::vector<Point<spacedim> >        &normal_vectors,
-                           std::vector<double>             &cell_JxW_values) const ;
+                           typename std::vector<Point<spacedim> >        &normal_vectors) const ;
     
                                     /**
                                      * Compute shape values and/or
@@ -405,8 +401,7 @@ class MappingQ1 : public Mapping<dim,spacedim>
                            std::vector<Point<dim> >    &quadrature_points,
                            std::vector<double>         &JxW_values,
                            std::vector<Tensor<1,dim> > &boundary_form,
-                           std::vector<Point<spacedim> > &normal_vectors,
-                           std::vector<double>         &cell_JxW_values) const;
+                           std::vector<Point<spacedim> > &normal_vectors) const;
     
                                     /**
                                      * Compute shape values and/or
@@ -705,46 +700,6 @@ MappingQ1<dim,spacedim>::InternalData::second_derivative (const unsigned int qpo
 
 /* -------------- declaration of explicit specializations ------------- */
 
-#ifndef DOXYGEN
-
-template <> void MappingQ1<1>::compute_fill_face (
-  const Triangulation<1>::cell_iterator &,
-  const unsigned int,
-  const unsigned int,
-  const unsigned int,
-  const DataSetDescriptor,
-  const std::vector<double> &,
-  InternalData &,
-  std::vector<Point<1> > &,
-  std::vector<double> &,
-  std::vector<Tensor<1,1> > &,
-  std::vector<Point<1> > &,
-  std::vector<double> &) const;
-
-template <> void MappingQ1<1>::fill_fe_face_values (
-  const Triangulation<1>::cell_iterator &,
-  const unsigned,
-  const Quadrature<0>&,
-  Mapping<1>::InternalDataBase&,
-  std::vector<Point<1> >&,
-  std::vector<double>&,
-  std::vector<Tensor<1,1> >&,
-  std::vector<Point<1> >&,
-  std::vector<double>&) const;
-
-template <> void MappingQ1<1>::fill_fe_subface_values (
-  const Triangulation<1>::cell_iterator &,
-  const unsigned,
-  const unsigned,
-  const Quadrature<0>&,
-  Mapping<1>::InternalDataBase&,
-  std::vector<Point<1> >&,
-  std::vector<double>&,
-  std::vector<Tensor<1,1> >&,
-  std::vector<Point<1> >&,
-  std::vector<double>&) const;
-
-#endif // DOXYGEN
 
 DEAL_II_NAMESPACE_CLOSE
 
index 55d99e23e33d976591bdb58744c6e705cfa5780f..240ce63e1823db9c779d04fde5119178fee3f9b0 100644 (file)
@@ -540,12 +540,10 @@ FE_ABF<dim>::update_each (const UpdateFlags flags) const
   if (flags & update_values)
     out |= update_values             | update_covariant_transformation
                                      | update_piola
-                                     | update_cell_JxW_values
                                      | update_JxW_values;
   if (flags & update_gradients)
     out |= update_gradients          | update_covariant_transformation 
                                      | update_piola
-                                     | update_cell_JxW_values
                                      | update_JxW_values;
   //TODO: Set update flags appropriately and figure out, how the second
   // derivatives for the RT elements can be computed correctly.
index 9e1dc328fc2e68dfc800b71af97d5994f5066ec2..04aa19b5016c3cdb9e0c3cecf35da8e663b24b1a 100644 (file)
@@ -530,10 +530,6 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_face_values (
   
   const UpdateFlags flags(fe_data.update_once | fe_data.update_each);
 
-//   Assert(mapping_type == independent
-//      || ( mapping_type == independent_on_cartesian
-//           && dynamic_cast<const MappingCartesian<dim>*>(&mapping) != 0),
-//      ExcNotImplemented());
 //TODO: Size assertions
 
 // Create table with sign changes, due to the special structure of the RT elements.
index 4ab6e9f1b0408a311a1a068fd0df49be493d7940..58cf5477412e275b35c404065fe65d743f75efeb 100644 (file)
@@ -497,6 +497,8 @@ FE_RaviartThomas<dim>::has_support_on_face (const unsigned int shape_index,
 }
 
 
+// Since this is a vector valued element, we cannot interpolate a
+// scalar function
 template <int dim>
 void
 FE_RaviartThomas<dim>::interpolate(
index 738fad80ff1282ab86560195bcffe13d737a4352..10221ca74cb2c96b4027b599db4f3349ca331536 100644 (file)
@@ -416,8 +416,8 @@ FE_RaviartThomasNodal<dim>::hp_constraints_are_implemented () const
 
 template <int dim>
 std::vector<std::pair<unsigned int, unsigned int> >
-FE_RaviartThomasNodal<dim>::
-hp_vertex_dof_identities (const FiniteElement<dim> &fe_other) const
+FE_RaviartThomasNodal<dim>::hp_vertex_dof_identities (
+  const FiniteElement<dim> &fe_other) const
 {
                                   // we can presently only compute these
                                   // identities if both FEs are
@@ -495,8 +495,8 @@ hp_line_dof_identities (const FiniteElement<dim> &fe_other) const
 
 template <int dim>
 std::vector<std::pair<unsigned int, unsigned int> >
-FE_RaviartThomasNodal<dim>::
-hp_quad_dof_identities (const FiniteElement<dim>        &fe_other) const
+FE_RaviartThomasNodal<dim>::hp_quad_dof_identities (
+  const FiniteElement<dim>& fe_other) const
 {
                                   // we can presently only compute
                                   // these identities if both FEs are
@@ -536,8 +536,8 @@ hp_quad_dof_identities (const FiniteElement<dim>        &fe_other) const
 
 template <int dim>
 FiniteElementDomination::Domination
-FE_RaviartThomasNodal<dim>::
-compare_for_face_domination (const FiniteElement<dim> &fe_other) const
+FE_RaviartThomasNodal<dim>::compare_for_face_domination (
+  const FiniteElement<dim>& fe_other) const
 {
   if (const FE_RaviartThomasNodal<dim> *fe_q_other
       = dynamic_cast<const FE_RaviartThomasNodal<dim>*>(&fe_other))
@@ -559,26 +559,22 @@ compare_for_face_domination (const FiniteElement<dim> &fe_other) const
 
 template <>
 void
-FE_RaviartThomasNodal<1>::
-get_face_interpolation_matrix (const FiniteElement<1> &/*x_source_fe*/,
-                              FullMatrix<double>     &/*interpolation_matrix*/) const
+FE_RaviartThomasNodal<1>::get_face_interpolation_matrix (
+  const FiniteElement<1> &/*x_source_fe*/,
+  FullMatrix<double>     &/*interpolation_matrix*/) const
 {
-  Assert (false,
-         FiniteElement<1>::
-         ExcInterpolationNotImplemented ());
+  Assert (false, ExcImpossibleInDim(1));
 }
 
 
 template <>
 void
-FE_RaviartThomasNodal<1>::
-get_subface_interpolation_matrix (const FiniteElement<1> &/*x_source_fe*/,
-                                 const unsigned int      /*subface*/,
-                                 FullMatrix<double>     &/*interpolation_matrix*/) const
+FE_RaviartThomasNodal<1>::get_subface_interpolation_matrix (
+  const FiniteElement<1> &/*x_source_fe*/,
+  const unsigned int      /*subface*/,
+  FullMatrix<double>     &/*interpolation_matrix*/) const
 {
-  Assert (false,
-         FiniteElement<1>::
-         ExcInterpolationNotImplemented ());
+  Assert (false, ExcImpossibleInDim(1));
 }
 
 #endif
@@ -588,9 +584,9 @@ get_subface_interpolation_matrix (const FiniteElement<1> &/*x_source_fe*/,
 
 template <int dim>
 void
-FE_RaviartThomasNodal<dim>::
-get_face_interpolation_matrix (const FiniteElement<dim> &x_source_fe,
-                               FullMatrix<double>       &interpolation_matrix) const
+FE_RaviartThomasNodal<dim>::get_face_interpolation_matrix (
+  const FiniteElement<dim> &x_source_fe,
+  FullMatrix<double>       &interpolation_matrix) const
 {
                                   // this is only implemented, if the
                                   // source FE is also a
@@ -694,10 +690,10 @@ get_face_interpolation_matrix (const FiniteElement<dim> &x_source_fe,
 
 template <int dim>
 void
-FE_RaviartThomasNodal<dim>::
-get_subface_interpolation_matrix (const FiniteElement<dim> &x_source_fe,
-                                  const unsigned int subface,
-                                 FullMatrix<double>       &interpolation_matrix) const
+FE_RaviartThomasNodal<dim>::get_subface_interpolation_matrix (
+  const FiniteElement<dim> &x_source_fe,
+  const unsigned int subface,
+  FullMatrix<double>       &interpolation_matrix) const
 {
                                   // this is only implemented, if the
                                   // source FE is also a
index f5365dad0407cdf0db7a910c4026978a57a139d0..0290b28e697036c574746ae68a61d29eab79705c 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by the deal.II authors
+//    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -834,7 +834,6 @@ compute_fill (const Mapping<dim,spacedim>                   &mapping,
                                           // the reference element to the global
                                           // coordinate system.
          base_data.JxW_values = data.JxW_values;
-         base_data.cell_JxW_values = data.cell_JxW_values;
 
 
                                            // Make sure that in the
index fad84c5413e19be39fa92606c8a73c4a6a3b40d7..566ccff8311657b2c236954a772fe4002cbf9990 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -1655,9 +1655,6 @@ FEValuesData<dim,spacedim>::initialize (const unsigned int        n_quadrature_p
   if (flags & update_normal_vectors)
     this->normal_vectors.resize(n_quadrature_points);
 
-  if (flags & update_cell_JxW_values)
-    this->cell_JxW_values.resize(n_quadrature_points);
-
   if (flags & update_cell_normal_vectors)
     this->cell_normal_vectors.resize(n_quadrature_points);
 }
@@ -3138,7 +3135,6 @@ FEValuesBase<dim,spacedim>::memory_consumption () const
          MemoryConsumption::memory_consumption (this->quadrature_points) +
          MemoryConsumption::memory_consumption (this->normal_vectors) +
          MemoryConsumption::memory_consumption (this->boundary_forms) +
-         MemoryConsumption::memory_consumption (this->cell_JxW_values) +
          sizeof(this->update_flags) +
          MemoryConsumption::memory_consumption (n_quadrature_points) +
          MemoryConsumption::memory_consumption (dofs_per_cell) +
@@ -3714,8 +3710,7 @@ void FEFaceValues<dim,spacedim>::do_reinit (const unsigned int face_no)
                                          this->quadrature_points,
                                          this->JxW_values,
                                          this->boundary_forms,
-                                         this->normal_vectors,
-                                         this->cell_JxW_values);
+                                         this->normal_vectors);
   
   this->get_fe().fill_fe_face_values(this->get_mapping(),
                                     *this->present_cell, face_no,
@@ -4036,8 +4031,7 @@ void FESubfaceValues<dim,spacedim>::do_reinit (const unsigned int face_no,
                                             this->quadrature_points,
                                             this->JxW_values,
                                             this->boundary_forms,
-                                            this->normal_vectors,
-                                            this->cell_JxW_values);
+                                            this->normal_vectors);
   
   this->get_fe().fill_fe_subface_values(this->get_mapping(),
                                        *this->present_cell,
index 20fad4a21d054e24f9e9aa734fc66b51c4bd772d..f908b2bb8bdf422087ed2389e7e28c209f4268a5 100644 (file)
@@ -364,17 +364,56 @@ fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator& cell,
 
 
 
+#if (deal_II_dimension == 1)
+
+template <int dim, int spacedim>
+void
+MappingCartesian<dim,spacedim>::fill_fe_face_values (
+  const typename Triangulation<dim,spacedim>::cell_iterator &,
+  const unsigned int,
+  const Quadrature<dim-1>&,
+  typename Mapping<dim,spacedim>::InternalDataBase&,
+  std::vector<Point<dim> >&,
+  std::vector<double>&,
+  std::vector<Tensor<1,dim> >&,
+  std::vector<Point<spacedim> >&) const
+{
+  Assert(false, ExcNotImplemented());
+}
+
+
+template <int dim, int spacedim>
+void
+MappingCartesian<dim,spacedim>::fill_fe_subface_values (
+  const typename Triangulation<dim,spacedim>::cell_iterator &,
+  const unsigned int,
+  const unsigned int,
+  const Quadrature<dim-1>&,
+  typename Mapping<dim,spacedim>::InternalDataBase&,
+  std::vector<Point<dim> >&,
+  std::vector<double>&,
+  std::vector<Tensor<1,dim> >&,
+  std::vector<Point<spacedim> >&) const
+{
+  Assert(false, ExcNotImplemented());
+}
+
+
+#else
+
+// Implementation for dim != 1
+  
 template<int dim, int spacedim>
 void
-MappingCartesian<dim, spacedim>::fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                                           const unsigned int            face_no,
-                                           const Quadrature<dim-1>      &q,
-                                           typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
-                                           std::vector<Point<dim> >     &quadrature_points,
-                                           std::vector<double>          &JxW_values,
-                                           std::vector<Tensor<1,dim> >  &boundary_forms,
-                                           std::vector<Point<dim> >     &normal_vectors,
-                                           std::vector<double>          &/*cell_JxW_values*/) const
+MappingCartesian<dim, spacedim>::fill_fe_face_values (
+  const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+  const unsigned int            face_no,
+  const Quadrature<dim-1>      &q,
+  typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
+  std::vector<Point<dim> >     &quadrature_points,
+  std::vector<double>          &JxW_values,
+  std::vector<Tensor<1,dim> >  &boundary_forms,
+  std::vector<Point<spacedim> >     &normal_vectors) const
 {
                                   // convert data object to internal
                                   // data for this class. fails with
@@ -417,16 +456,16 @@ MappingCartesian<dim, spacedim>::fill_fe_face_values (const typename Triangulati
 
 template<int dim, int spacedim>
 void
-MappingCartesian<dim, spacedim>::fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                                              const unsigned int       face_no,
-                                              const unsigned int       sub_no,
-                                              const Quadrature<dim-1> &q,
-                                              typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
-                                              std::vector<Point<dim> >     &quadrature_points,
-                                              std::vector<double>          &JxW_values,
-                                              std::vector<Tensor<1,dim> >  &boundary_forms,
-                                              std::vector<Point<dim> >     &normal_vectors,
-                                              std::vector<double>          &/*cell_JxW_values*/) const
+MappingCartesian<dim, spacedim>::fill_fe_subface_values (
+  const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+  const unsigned int       face_no,
+  const unsigned int       sub_no,
+  const Quadrature<dim-1> &q,
+  typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
+  std::vector<Point<dim> >     &quadrature_points,
+  std::vector<double>          &JxW_values,
+  std::vector<Tensor<1,dim> >  &boundary_forms,
+  std::vector<Point<spacedim> >     &normal_vectors) const
 {
                                   // convert data object to internal
                                   // data for this class. fails with
@@ -481,43 +520,10 @@ MappingCartesian<dim, spacedim>::fill_fe_subface_values (const typename Triangul
     }
 }
 
-
-#if (deal_II_dimension == 1)
-
-template <>
-void
-MappingCartesian<1>::fill_fe_face_values (const Triangulation<1>::cell_iterator &,
-                                         const unsigned,
-                                         const Quadrature<0>&,
-                                         Mapping<1>::InternalDataBase&,
-                                         std::vector<Point<1> >&,
-                                         std::vector<double>&,
-                                         std::vector<Tensor<1,1> >&,
-                                         std::vector<Point<1> >&,
-                                         std::vector<double>          &/*cell_JxW_values*/) const
-{
-  Assert(false, ExcNotImplemented());
-}
-
-
-template <>
-void
-MappingCartesian<1>::fill_fe_subface_values (const Triangulation<1>::cell_iterator &,
-                                            const unsigned,
-                                            const unsigned,
-                                            const Quadrature<0>&,
-                                            Mapping<1>::InternalDataBase&,
-                                            std::vector<Point<1> >&,
-                                            std::vector<double>&,
-                                            std::vector<Tensor<1,1> >&,
-                                            std::vector<Point<1> >&,
-                                            std::vector<double>          &/*cell_JxW_values*/) const
-{
-  Assert(false, ExcNotImplemented());
-}
+  
 #endif
 
-
+  
 template<int dim, int spacedim>
 void
 MappingCartesian<dim,spacedim>::transform (
index 22940c648616f385de668a0641199a7d8d318a61..658eb90f329b9bbeb4c9ffaa9c7c6884605e4497 100644 (file)
@@ -353,8 +353,7 @@ MappingQ<dim,spacedim>::fill_fe_face_values (
   std::vector<Point<dim> >     &quadrature_points,
   std::vector<double>          &JxW_values,
   std::vector<Tensor<1,dim> >  &exterior_forms,
-  std::vector<Point<dim> >     &normal_vectors,
-  std::vector<double>          &cell_JxW_values) const
+  std::vector<Point<dim> >     &normal_vectors) const
 {
                                   // convert data object to internal
                                   // data for this class. fails with
@@ -400,10 +399,7 @@ MappingQ<dim,spacedim>::fill_fe_face_values (
                            q.get_weights(),
                            *p_data,
                            quadrature_points, JxW_values,
-                           exterior_forms, normal_vectors,
-                          cell_JxW_values);
-
-  // TODO: Verify implementation of cell_JxW_values
+                           exterior_forms, normal_vectors);
 }
 
 
@@ -417,8 +413,7 @@ MappingQ<dim,spacedim>::fill_fe_subface_values (const typename Triangulation<dim
                                       std::vector<Point<dim> >     &quadrature_points,
                                       std::vector<double>          &JxW_values,
                                       std::vector<Tensor<1,dim> >  &exterior_forms,
-                                      std::vector<Point<dim> >     &normal_vectors,
-                                      std::vector<double>          &cell_JxW_values) const
+                                      std::vector<Point<dim> >     &normal_vectors) const
 {
                                   // convert data object to internal
                                   // data for this class. fails with
@@ -464,10 +459,7 @@ MappingQ<dim,spacedim>::fill_fe_subface_values (const typename Triangulation<dim
                            q.get_weights(),
                            *p_data,
                            quadrature_points, JxW_values,
-                           exterior_forms, normal_vectors,
-                          cell_JxW_values);
-
-  // TODO: Verify implementation of cell_JxW_values ...
+                           exterior_forms, normal_vectors);
 }
 
 
index 740274e8c6f45a393dd5e7c9f20be9542beb2ba9..6ac2276306614960997417d34e05d081c4ca8720 100644 (file)
@@ -390,7 +390,6 @@ MappingQ1<dim,spacedim>::update_each (const UpdateFlags in) const
                                      | update_contravariant_transformation
                                      | update_JxW_values
                                      | update_cell_normal_vectors
-                                     | update_cell_JxW_values
                                      | update_boundary_forms
                                      | update_normal_vectors
                                      | update_volume_elements
@@ -441,7 +440,7 @@ MappingQ1<dim,spacedim>::update_each (const UpdateFlags in) const
                                       // Therefore these values have to
                                       // updated for each cell.
       if (out & update_contravariant_transformation)
-       out |= update_JxW_values | update_cell_JxW_values;
+       out |= update_JxW_values;
 
       if (out & update_cell_normal_vectors)
        out |= update_JxW_values | update_cell_normal_vectors;
@@ -869,28 +868,84 @@ MappingQ1<2,3>::compute_fill_face (const Triangulation<2,3>::cell_iterator &,
                                   std::vector<Point<2> >&,
                                   std::vector<double>&,
                                   std::vector<Tensor<1,2> > &,
-                                  std::vector<Point<3> > &,
-                                  std::vector<double>&) const 
+                                  std::vector<Point<3> > &) const 
 {
        Assert(false, ExcNotImplemented());
 }
 
 #endif
 
+#if (deal_II_dimension == 1)
+
+template <int dim, int spacedim>
+void
+MappingQ1<dim,spacedim>::compute_fill_face (
+  const typename Triangulation<dim,spacedim>::cell_iterator &,
+  const unsigned int,
+  const unsigned int,
+  const unsigned int,
+  const DataSetDescriptor,
+  const std::vector<double> &,
+  InternalData &,
+  std::vector<Point<dim> > &,
+  std::vector<double> &,
+  std::vector<Tensor<1,dim> > &,
+  std::vector<Point<spacedim> > &) const
+{
+  Assert(false, ExcNotImplemented());
+}
+
+
+template <int dim,int spacedim>
+void
+MappingQ1<dim,spacedim>::fill_fe_face_values (
+  const typename Triangulation<dim,spacedim>::cell_iterator &,
+  const unsigned,
+  const Quadrature<dim-1>&,
+  typename Mapping<dim,spacedim>::InternalDataBase&,
+  std::vector<Point<dim> >&,
+  std::vector<double>&,
+  std::vector<Tensor<1,dim> >&,
+  std::vector<Point<spacedim> >&) const
+{
+  Assert(false, ExcNotImplemented());
+}
+
+
+template <int dim,int spacedim>
+void
+MappingQ1<dim,spacedim>::fill_fe_subface_values (
+  const typename Triangulation<dim,spacedim>::cell_iterator &,
+  const unsigned,
+  const unsigned,
+  const Quadrature<dim-1>&,
+  typename Mapping<dim,spacedim>::InternalDataBase&,
+  std::vector<Point<dim> >&,
+  std::vector<double>&,
+  std::vector<Tensor<1,dim> >&,
+  std::vector<Point<spacedim> >&) const
+{
+  Assert(false, ExcNotImplemented());
+}
+
+
+#else
+// Implementation for 2D and 3D
+
 template<int dim, int spacedim>
 void
-MappingQ1<dim,spacedim>::compute_fill_face (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                                  const unsigned int               face_no,
-                                  const unsigned int               subface_no,
-                                  const unsigned int               n_q_points,
-                                  const DataSetDescriptor          data_set,
-                                  const std::vector<double>        &weights,
-                                  InternalData                     &data,
-                                  std::vector<Point<dim> >         &quadrature_points,
-                                  std::vector<double>              &JxW_values,
-                                  std::vector<Tensor<1,dim> > &boundary_forms,
-                                  std::vector<Point<spacedim> >    &normal_vectors,
-                                  std::vector<double>              &cell_JxW_values) const
+MappingQ1<dim,spacedim>::compute_fill_face (
+  const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+  const unsigned int               face_no,
+  const unsigned int               subface_no,
+  const unsigned int               n_q_points,
+  const DataSetDescriptor          data_set,
+  const std::vector<double>        &weights,
+  InternalData                     &data,
+  std::vector<Point<dim> >         &quadrature_points,
+  std::vector<double>              &JxW_values,
+  std::vector<Tensor<1,dim> > &boundary_forms,
+  std::vector<Point<spacedim> >    &normal_vectors) const
 {
   compute_fill (cell, n_q_points, data_set, data, quadrature_points);
 
@@ -964,23 +1019,6 @@ MappingQ1<dim,spacedim>::compute_fill_face (const typename Triangulation<dim,spa
               normal_vectors[i] = boundary_forms[i] / f;
          }
     }
-
-  // If the Piola transformation is to be used, the
-  // new flag, update_cell_JxW_values has to be set.
-  // It triggers the creation of values for the determinant
-  // of the mapping function on 
-  if (update_flags & update_cell_JxW_values)
-    {      
-      Assert (cell_JxW_values.size() == n_q_points,
-             ExcDimensionMismatch(cell_JxW_values.size(), n_q_points));
-      Assert (data.contravariant.size() == n_q_points,
-             ExcDimensionMismatch(data.contravariant.size(), n_q_points));
-      Assert (weights.size() == n_q_points,
-             ExcDimensionMismatch(weights.size(), n_q_points));
-      for (unsigned int point=0; point<n_q_points; ++point)
-       cell_JxW_values[point]
-         = determinant(data.contravariant[point])*weights[point];
-    }
 }
 
 
@@ -993,8 +1031,7 @@ MappingQ1<dim,spacedim>::fill_fe_face_values (const typename Triangulation<dim,s
                                     std::vector<Point<dim> >                         &quadrature_points,
                                     std::vector<double>                              &JxW_values,
                                     std::vector<Tensor<1,dim> >                      &boundary_forms,
-                                    std::vector<Point<spacedim> >                    &normal_vectors,
-                                    std::vector<double>                              &cell_JxW_values) const
+                                    std::vector<Point<spacedim> >                    &normal_vectors) const
 {
   // ensure that the following cast is really correct:
   Assert (dynamic_cast<InternalData *>(&mapping_data) != 0, 
@@ -1015,8 +1052,7 @@ MappingQ1<dim,spacedim>::fill_fe_face_values (const typename Triangulation<dim,s
                     quadrature_points,
                     JxW_values,
                     boundary_forms,
-                    normal_vectors,
-                    cell_JxW_values);
+                    normal_vectors);
 }
 
 
@@ -1030,8 +1066,7 @@ MappingQ1<dim,spacedim>::fill_fe_subface_values (const typename Triangulation<di
                                        std::vector<Point<dim> >     &quadrature_points,
                                        std::vector<double>          &JxW_values,
                                        std::vector<Tensor<1,dim> >  &boundary_forms,
-                                       std::vector<Point<spacedim> >     &normal_vectors,
-                                       std::vector<double>          &cell_JxW_values) const
+                                       std::vector<Point<spacedim> >     &normal_vectors) const
 {
   // ensure that the following cast is really correct:
   Assert (dynamic_cast<InternalData *>(&mapping_data) != 0, 
@@ -1053,114 +1088,7 @@ MappingQ1<dim,spacedim>::fill_fe_subface_values (const typename Triangulation<di
                     quadrature_points,
                     JxW_values,
                     boundary_forms,
-                    normal_vectors,
-                    cell_JxW_values);
-}
-
-
-#if (deal_II_dimension == 1)
-
-template <>
-void
-MappingQ1<1>::compute_fill_face (const Triangulation<1>::cell_iterator &,
-                                const unsigned int,
-                                const unsigned int,
-                                const unsigned int,
-                                const DataSetDescriptor,
-                                const std::vector<double> &,
-                                InternalData &,
-                                std::vector<Point<1> > &,
-                                std::vector<double> &,
-                                std::vector<Tensor<1,1> > &,
-                                std::vector<Point<1> > &,
-                                std::vector<double>          &/*cell_JxW_values*/) const
-{
-  Assert(false, ExcNotImplemented());
-}
-
-
-template <>
-void
-MappingQ1<1>::fill_fe_face_values (const Triangulation<1>::cell_iterator &,
-                                  const unsigned,
-                                  const Quadrature<0>&,
-                                  Mapping<1>::InternalDataBase&,
-                                  std::vector<Point<1> >&,
-                                  std::vector<double>&,
-                                  std::vector<Tensor<1,1> >&,
-                                  std::vector<Point<1> >&,
-                                  std::vector<double>          &/*cell_JxW_values*/) const
-{
-  Assert(false, ExcNotImplemented());
-}
-
-
-template <>
-void
-MappingQ1<1>::fill_fe_subface_values (const Triangulation<1>::cell_iterator &,
-                                     const unsigned,
-                                     const unsigned,
-                                     const Quadrature<0>&,
-                                     Mapping<1>::InternalDataBase&,
-                                     std::vector<Point<1> >&,
-                                     std::vector<double>&,
-                                     std::vector<Tensor<1,1> >&,
-                                     std::vector<Point<1> >&,
-                                     std::vector<double>          &/*cell_JxW_values*/) const
-{
-  Assert(false, ExcNotImplemented());
-}
-
-
-template <>
-void
-MappingQ1<1,2>::compute_fill_face (const Triangulation<1,2>::cell_iterator &,
-                                const unsigned int,
-                                const unsigned int,
-                                const unsigned int,
-                                const DataSetDescriptor,
-                                const std::vector<double> &,
-                                InternalData &,
-                                std::vector<Point<1> > &,
-                                std::vector<double> &,
-                                std::vector<Tensor<1,1> > &,
-                                std::vector<Point<2> > &,
-                                std::vector<double>          &/*cell_JxW_values*/) const
-{
-  Assert(false, ExcNotImplemented());
-}
-
-
-template <>
-void
-MappingQ1<1,2>::fill_fe_face_values (const Triangulation<1,2>::cell_iterator &,
-                                  const unsigned,
-                                  const Quadrature<0>&,
-                                  Mapping<1,2>::InternalDataBase&,
-                                  std::vector<Point<1> >&,
-                                  std::vector<double>&,
-                                  std::vector<Tensor<1,1> >&,
-                                  std::vector<Point<2> >&,
-                                  std::vector<double>          &/*cell_JxW_values*/) const
-{
-  Assert(false, ExcNotImplemented());
-}
-
-
-template <>
-void
-MappingQ1<1,2>::fill_fe_subface_values (const Triangulation<1,2>::cell_iterator &,
-                                     const unsigned,
-                                     const unsigned,
-                                     const Quadrature<0>&,
-                                     Mapping<1,2>::InternalDataBase&,
-                                     std::vector<Point<1> >&,
-                                     std::vector<double>&,
-                                     std::vector<Tensor<1,1> >&,
-                                     std::vector<Point<2> >&,
-                                     std::vector<double>          &/*cell_JxW_values*/) const
-{
-  Assert(false, ExcNotImplemented());
+                    normal_vectors);
 }
 
 

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.