]> https://gitweb.dealii.org/ - dealii.git/commitdiff
First version of get_function_* for Vector extractors. The code is not optimized...
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Sat, 13 Dec 2008 20:29:16 +0000 (20:29 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Sat, 13 Dec 2008 20:29:16 +0000 (20:29 +0000)
git-svn-id: https://svn.dealii.org/trunk@17933 0785d39b-7218-0410-832d-ea1e28bc413d

14 files changed:
deal.II/deal.II/include/fe/fe_values.h
tests/deal.II/fe_values_view_11.cc [new file with mode: 0644]
tests/deal.II/fe_values_view_11/cmp/generic [new file with mode: 0644]
tests/deal.II/fe_values_view_12.cc [new file with mode: 0644]
tests/deal.II/fe_values_view_12/cmp/generic [new file with mode: 0644]
tests/deal.II/fe_values_view_13.cc [new file with mode: 0644]
tests/deal.II/fe_values_view_13/cmp/generic [new file with mode: 0644]
tests/deal.II/fe_values_view_14.cc [new file with mode: 0644]
tests/deal.II/fe_values_view_14/cmp/generic [new file with mode: 0644]
tests/deal.II/fe_values_view_15.cc [new file with mode: 0644]
tests/deal.II/fe_values_view_15/cmp/generic [new file with mode: 0644]
tests/deal.II/fe_values_view_15/fe_values_view_09/cmp/generic [new file with mode: 0644]
tests/deal.II/fe_values_view_16.cc [new file with mode: 0644]
tests/deal.II/fe_values_view_16/cmp/generic [new file with mode: 0644]

index 6be9c7dd5233d4cb23e660b84eb3fae431fcb752..df85b3bd3d57a742506bc50f84a8b5e29821609f 100644 (file)
@@ -275,7 +275,7 @@ namespace FEValuesViews
                                        *
                                        * This function is the equivalent of
                                        * the
-                                       * FEValuesBase::get_function_values
+                                       * FEValuesBase::get_function_gradients
                                        * function but it only works on the
                                        * selected scalar component.
                                        */
@@ -296,7 +296,7 @@ namespace FEValuesViews
                                        *
                                        * This function is the equivalent of
                                        * the
-                                       * FEValuesBase::get_function_values
+                                       * FEValuesBase::get_function_hessians
                                        * function but it only works on the
                                        * selected scalar component.
                                        */
@@ -532,6 +532,69 @@ namespace FEValuesViews
       hessian_type
       hessian (const unsigned int shape_function,
               const unsigned int q_point) const;
+
+                                      /**
+                                       * Return the values of the selected
+                                       * vector components of the finite
+                                       * element function characterized by
+                                       * <tt>fe_function</tt> at the
+                                       * quadrature points of the cell, face
+                                       * or subface selected the last time
+                                       * the <tt>reinit</tt> function of the
+                                       * FEValues object was called, at the
+                                       * quadrature points.
+                                       *
+                                       * This function is the equivalent of
+                                       * the
+                                       * FEValuesBase::get_function_values
+                                       * function but it only works on the
+                                       * selected vector components.
+                                       */
+      template <class InputVector>
+      void get_function_values (const InputVector& fe_function,
+                               std::vector<value_type>& values) const;
+
+                                      /**
+                                       * Return the gradients of the selected
+                                       * vector components of the finite
+                                       * element function characterized by
+                                       * <tt>fe_function</tt> at the
+                                       * quadrature points of the cell, face
+                                       * or subface selected the last time
+                                       * the <tt>reinit</tt> function of the
+                                       * FEValues object was called, at the
+                                       * quadrature points.
+                                       *
+                                       * This function is the equivalent of
+                                       * the
+                                       * FEValuesBase::get_function_gradients
+                                       * function but it only works on the
+                                       * selected vector components.
+                                       */
+      template <class InputVector>
+      void get_function_gradients (const InputVector& fe_function,
+                                  std::vector<gradient_type>& values) const;
+
+                                      /**
+                                       * Return the Hessians of the selected
+                                       * vector components of the finite
+                                       * element function characterized by
+                                       * <tt>fe_function</tt> at the
+                                       * quadrature points of the cell, face
+                                       * or subface selected the last time
+                                       * the <tt>reinit</tt> function of the
+                                       * FEValues object was called, at the
+                                       * quadrature points.
+                                       *
+                                       * This function is the equivalent of
+                                       * the
+                                       * FEValuesBase::get_function_hessians
+                                       * function but it only works on the
+                                       * selected vector components.
+                                       */
+      template <class InputVector>
+      void get_function_hessians (const InputVector& fe_function,
+                                 std::vector<hessian_type>& values) const;
       
     private:
                                       /**
@@ -3222,7 +3285,7 @@ namespace FEValuesViews
     dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
     fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
 
-    std::fill (values.begin(), values.end(), value_type());
+    std::fill (values.begin(), values.end(), gradient_type());
   
     for (unsigned int shape_function=0;
         shape_function<fe_values.fe->dofs_per_cell; ++shape_function)
@@ -3260,7 +3323,7 @@ namespace FEValuesViews
     dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
     fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
 
-    std::fill (values.begin(), values.end(), value_type());
+    std::fill (values.begin(), values.end(), hessian_type());
 
     for (unsigned int shape_function=0;
         shape_function<fe_values.fe->dofs_per_cell; ++shape_function)
@@ -3535,16 +3598,120 @@ namespace FEValuesViews
        return symmetrize(return_value);
       }
   }
-}
 
 
 
+  template <int dim, int spacedim>
+  template <class InputVector>
+  inline
+  void
+  Vector<dim,spacedim>::
+  get_function_values (const InputVector &fe_function, 
+                      std::vector<value_type> &values) const
+  {
+    typedef FEValuesBase<dim,spacedim> FVB;
+    Assert (fe_values.update_flags & update_values,
+           typename FVB::ExcAccessToUninitializedField());    
+    Assert (values.size() == fe_values.n_quadrature_points,
+           ExcDimensionMismatch(values.size(), fe_values.n_quadrature_points));
+    Assert (fe_values.present_cell.get() != 0,
+           ExcMessage ("FEValues object is not reinit'ed to any cell"));
+    Assert (fe_function.size() == fe_values.present_cell->n_dofs_for_dof_handler(),
+           ExcDimensionMismatch(fe_function.size(),
+                                fe_values.present_cell->n_dofs_for_dof_handler()));
 
+                                    // get function values of dofs
+                                    // on this cell
+    dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
+    fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
 
+    std::fill (values.begin(), values.end(), value_type());
 
-/*------------------------ Inline functions: FEValuesBase ------------------------*/
+    for (unsigned int shape_function=0;
+        shape_function<fe_values.fe->dofs_per_cell; ++shape_function)
+      for (unsigned int q_point=0; q_point<fe_values.n_quadrature_points; ++q_point)
+       values[q_point] +=
+         dof_values(shape_function) *
+         value (shape_function, q_point);
+  }
+  
+
+
+
+  template <int dim, int spacedim>  
+  template <class InputVector>
+  inline
+  void
+  Vector<dim,spacedim>::
+  get_function_gradients (const InputVector &fe_function, 
+                         std::vector<gradient_type> &values) const
+  {
+    typedef FEValuesBase<dim,spacedim> FVB;
+    Assert (fe_values.update_flags & update_gradients,
+           typename FVB::ExcAccessToUninitializedField());    
+    Assert (values.size() == fe_values.n_quadrature_points,
+           ExcDimensionMismatch(values.size(), fe_values.n_quadrature_points));
+    Assert (fe_values.present_cell.get() != 0,
+           ExcMessage ("FEValues object is not reinit'ed to any cell"));
+    Assert (fe_function.size() == fe_values.present_cell->n_dofs_for_dof_handler(),
+           ExcDimensionMismatch(fe_function.size(),
+                                fe_values.present_cell->n_dofs_for_dof_handler()));
+
+                                    // get function values of dofs
+                                    // on this cell
+    dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
+    fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
+
+    std::fill (values.begin(), values.end(), gradient_type());
+  
+    for (unsigned int shape_function=0;
+        shape_function<fe_values.fe->dofs_per_cell; ++shape_function)
+      for (unsigned int q_point=0; q_point<fe_values.n_quadrature_points; ++q_point)
+       values[q_point] +=
+         dof_values(shape_function) *
+         gradient (shape_function, q_point);
+  }
+
+
+
+  template <int dim, int spacedim>  
+  template <class InputVector>
+  inline
+  void
+  Vector<dim,spacedim>::
+  get_function_hessians (const InputVector &fe_function, 
+                        std::vector<hessian_type> &values) const
+  {
+    typedef FEValuesBase<dim,spacedim> FVB;
+    Assert (fe_values.update_flags & update_hessians,
+           typename FVB::ExcAccessToUninitializedField());
+    Assert (values.size() == fe_values.n_quadrature_points,
+           ExcDimensionMismatch(values.size(), fe_values.n_quadrature_points));
+    Assert (fe_values.present_cell.get() != 0,
+           ExcMessage ("FEValues object is not reinit'ed to any cell"));
+    Assert (fe_function.size() == fe_values.present_cell->n_dofs_for_dof_handler(),
+           ExcDimensionMismatch(fe_function.size(),
+                                fe_values.present_cell->n_dofs_for_dof_handler()));
+    
+                                    // get function values of dofs
+                                    // on this cell
+    dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
+    fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
 
+    std::fill (values.begin(), values.end(), hessian_type());
 
+    for (unsigned int shape_function=0;
+        shape_function<fe_values.fe->dofs_per_cell; ++shape_function)
+      for (unsigned int q_point=0; q_point<fe_values.n_quadrature_points; ++q_point)
+       values[q_point] +=
+         dof_values(shape_function) *
+         hessian (shape_function, q_point);
+  }
+}
+
+
+
+/*------------------------ Inline functions: FEValuesBase ------------------------*/
 
 
 
diff --git a/tests/deal.II/fe_values_view_11.cc b/tests/deal.II/fe_values_view_11.cc
new file mode 100644 (file)
index 0000000..34740e3
--- /dev/null
@@ -0,0 +1,113 @@
+//----------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$ 
+//
+//    Copyright (C) 2007, 2008 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+
+// test the FEValues views and extractor classes. this test is for
+// get_function_values for vector components and a primitive element
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <base/function.h>
+#include <base/quadrature_lib.h>
+#include <lac/vector.h>
+#include <grid/grid_generator.h>
+#include <grid/tria_boundary_lib.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_dgq.h>
+#include <fe/fe_system.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_q1.h>
+
+#include <fstream>
+
+
+
+template<int dim>
+void test (const Triangulation<dim>& tr,
+          const FiniteElement<dim>& fe)
+{
+  deallog << "FE=" << fe.get_name()
+         << std::endl;
+
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  Vector<double> fe_function(dof.n_dofs());
+  for (unsigned int i=0; i<dof.n_dofs(); ++i)
+    fe_function(i) = i+1;
+  
+  const QGauss<dim> quadrature(2);
+  FEValues<dim> fe_values (fe, quadrature,
+                          update_values | update_gradients | update_hessians);
+  fe_values.reinit (dof.begin_active());
+
+  std::vector<Tensor<1,dim> > selected_vector_values (quadrature.n_quadrature_points);
+  std::vector<Vector<double> > vector_values (quadrature.n_quadrature_points,
+                                             Vector<double>(fe.n_components()));
+
+  fe_values.get_function_values (fe_function, vector_values);
+  
+  for (unsigned int c=0; c<fe.n_components(); ++c)
+                                    // use a vector extractor if there
+                                    // are sufficiently many components
+                                    // left after the current component
+                                    // 'c'
+    if (c+dim <= fe.n_components())
+      {
+       FEValuesExtractors::Vector vector_components (c);
+       fe_values[vector_components].get_function_values (fe_function,
+                                                        selected_vector_values);
+       deallog << "component=" << c << std::endl;
+      
+       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
+         for (unsigned int d=0; d<dim; ++d)
+           {
+             deallog << selected_vector_values[q][d] << std::endl;
+             Assert (std::fabs (selected_vector_values[q][d] - vector_values[q](c+d))
+                     <= 1e-12 * std::fabs (selected_vector_values[q][d]),
+                     ExcInternalError());
+           }
+      }
+}
+
+
+
+template<int dim>
+void test_hyper_sphere()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_ball(tr);
+
+  static const HyperBallBoundary<dim> boundary;
+  tr.set_boundary (0, boundary);
+
+  FESystem<dim> fe (FE_Q<dim>(1), 1,
+                   FE_Q<dim>(2), 2,
+                   FE_DGQ<dim>(3), dim);
+  test(tr, fe);
+}
+
+
+int main()
+{
+  std::ofstream logfile ("fe_values_view_11/output");
+  deallog << std::setprecision (3);
+
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+  deallog.threshold_double(1.e-10);
+
+  test_hyper_sphere<2>();
+  test_hyper_sphere<3>();
+}
diff --git a/tests/deal.II/fe_values_view_11/cmp/generic b/tests/deal.II/fe_values_view_11/cmp/generic
new file mode 100644 (file)
index 0000000..5fa1ab6
--- /dev/null
@@ -0,0 +1,139 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_Q<2>(2)^2-FE_DGQ<2>(3)^2]
+DEAL::component=0
+DEAL::2.90
+DEAL::15.5
+DEAL::4.63
+DEAL::16.9
+DEAL::6.37
+DEAL::17.5
+DEAL::8.10
+DEAL::18.8
+DEAL::component=1
+DEAL::15.5
+DEAL::16.5
+DEAL::16.9
+DEAL::17.9
+DEAL::17.5
+DEAL::18.5
+DEAL::18.8
+DEAL::19.8
+DEAL::component=2
+DEAL::16.5
+DEAL::26.2
+DEAL::17.9
+DEAL::27.9
+DEAL::18.5
+DEAL::33.1
+DEAL::19.8
+DEAL::34.8
+DEAL::component=3
+DEAL::26.2
+DEAL::42.2
+DEAL::27.9
+DEAL::43.9
+DEAL::33.1
+DEAL::49.1
+DEAL::34.8
+DEAL::50.8
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_Q<3>(2)^2-FE_DGQ<3>(3)^3]
+DEAL::component=0
+DEAL::5.44
+DEAL::47.4
+DEAL::48.4
+DEAL::7.17
+DEAL::48.6
+DEAL::49.6
+DEAL::8.90
+DEAL::49.1
+DEAL::50.1
+DEAL::10.6
+DEAL::50.3
+DEAL::51.3
+DEAL::12.4
+DEAL::50.8
+DEAL::51.8
+DEAL::14.1
+DEAL::52.0
+DEAL::53.0
+DEAL::15.8
+DEAL::52.4
+DEAL::53.4
+DEAL::17.6
+DEAL::53.6
+DEAL::54.6
+DEAL::component=1
+DEAL::47.4
+DEAL::48.4
+DEAL::76.3
+DEAL::48.6
+DEAL::49.6
+DEAL::78.0
+DEAL::49.1
+DEAL::50.1
+DEAL::83.2
+DEAL::50.3
+DEAL::51.3
+DEAL::85.0
+DEAL::50.8
+DEAL::51.8
+DEAL::104.
+DEAL::52.0
+DEAL::53.0
+DEAL::106.
+DEAL::52.4
+DEAL::53.4
+DEAL::111.
+DEAL::53.6
+DEAL::54.6
+DEAL::113.
+DEAL::component=2
+DEAL::48.4
+DEAL::76.3
+DEAL::140.
+DEAL::49.6
+DEAL::78.0
+DEAL::142.
+DEAL::50.1
+DEAL::83.2
+DEAL::147.
+DEAL::51.3
+DEAL::85.0
+DEAL::149.
+DEAL::51.8
+DEAL::104.
+DEAL::168.
+DEAL::53.0
+DEAL::106.
+DEAL::170.
+DEAL::53.4
+DEAL::111.
+DEAL::175.
+DEAL::54.6
+DEAL::113.
+DEAL::177.
+DEAL::component=3
+DEAL::76.3
+DEAL::140.
+DEAL::204.
+DEAL::78.0
+DEAL::142.
+DEAL::206.
+DEAL::83.2
+DEAL::147.
+DEAL::211.
+DEAL::85.0
+DEAL::149.
+DEAL::213.
+DEAL::104.
+DEAL::168.
+DEAL::232.
+DEAL::106.
+DEAL::170.
+DEAL::234.
+DEAL::111.
+DEAL::175.
+DEAL::239.
+DEAL::113.
+DEAL::177.
+DEAL::241.
diff --git a/tests/deal.II/fe_values_view_12.cc b/tests/deal.II/fe_values_view_12.cc
new file mode 100644 (file)
index 0000000..d7d4996
--- /dev/null
@@ -0,0 +1,114 @@
+//----------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$ 
+//
+//    Copyright (C) 2007, 2008 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+
+// test the FEValues views and extractor classes. this test is for
+// get_function_gradients for vector components and a primitive element
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <base/function.h>
+#include <base/quadrature_lib.h>
+#include <lac/vector.h>
+#include <grid/grid_generator.h>
+#include <grid/tria_boundary_lib.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_dgq.h>
+#include <fe/fe_system.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_q1.h>
+
+#include <fstream>
+
+
+
+template<int dim>
+void test (const Triangulation<dim>& tr,
+          const FiniteElement<dim>& fe)
+{
+  deallog << "FE=" << fe.get_name()
+         << std::endl;
+
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  Vector<double> fe_function(dof.n_dofs());
+  for (unsigned int i=0; i<dof.n_dofs(); ++i)
+    fe_function(i) = i+1;
+  
+  const QGauss<dim> quadrature(2);
+  FEValues<dim> fe_values (fe, quadrature,
+                          update_values | update_gradients | update_hessians);
+  fe_values.reinit (dof.begin_active());
+
+  std::vector<Tensor<2,dim> > selected_vector_values (quadrature.n_quadrature_points);
+  std::vector<std::vector<Tensor<1,dim> > >
+    vector_values (quadrature.n_quadrature_points,
+                  std::vector<Tensor<1,dim> >(fe.n_components()));
+
+  fe_values.get_function_gradients (fe_function, vector_values);
+  
+  for (unsigned int c=0; c<fe.n_components(); ++c)
+                                    // use a vector extractor if there
+                                    // are sufficiently many components
+                                    // left after the current component
+                                    // 'c'
+    if (c+dim <= fe.n_components())
+      {
+       FEValuesExtractors::Vector vector_components (c);
+       fe_values[vector_components].get_function_gradients (fe_function,
+                                                           selected_vector_values);
+       deallog << "component=" << c << std::endl;
+      
+       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
+         for (unsigned int d=0; d<dim; ++d)
+           {
+             deallog << selected_vector_values[q][d] << std::endl;
+             Assert ((selected_vector_values[q][d] - vector_values[q][c+d]).norm()
+                     <= 1e-12 * selected_vector_values[q][d].norm(),
+                     ExcInternalError());
+         }
+      }
+}
+
+
+
+template<int dim>
+void test_hyper_sphere()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_ball(tr);
+
+  static const HyperBallBoundary<dim> boundary;
+  tr.set_boundary (0, boundary);
+
+  FESystem<dim> fe (FE_Q<dim>(1), 1,
+                   FE_Q<dim>(2), 2,
+                   FE_DGQ<dim>(3), dim);
+  test(tr, fe);
+}
+
+
+int main()
+{
+  std::ofstream logfile ("fe_values_view_12/output");
+  deallog << std::setprecision (3);
+
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+  deallog.threshold_double(1.e-10);
+
+  test_hyper_sphere<2>();
+  test_hyper_sphere<3>();
+}
diff --git a/tests/deal.II/fe_values_view_12/cmp/generic b/tests/deal.II/fe_values_view_12/cmp/generic
new file mode 100644 (file)
index 0000000..89cef7d
--- /dev/null
@@ -0,0 +1,139 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_Q<2>(2)^2-FE_DGQ<2>(3)^2]
+DEAL::component=0
+DEAL::2.42 13.1
+DEAL::19.9 23.3
+DEAL::2.42 15.9
+DEAL::-16.1 22.2
+DEAL::3.94 12.2
+DEAL::25.4 -33.3
+DEAL::3.94 16.8
+DEAL::-19.2 -26.5
+DEAL::component=1
+DEAL::19.9 23.3
+DEAL::19.9 23.3
+DEAL::-16.1 22.2
+DEAL::-16.1 22.2
+DEAL::25.4 -33.3
+DEAL::25.4 -33.3
+DEAL::-19.2 -26.5
+DEAL::-19.2 -26.5
+DEAL::component=2
+DEAL::19.9 23.3
+DEAL::2.42 27.6
+DEAL::-16.1 22.2
+DEAL::2.42 30.4
+DEAL::25.4 -33.3
+DEAL::3.94 26.7
+DEAL::-19.2 -26.5
+DEAL::3.94 31.2
+DEAL::component=3
+DEAL::2.42 27.6
+DEAL::2.42 27.6
+DEAL::2.42 30.4
+DEAL::2.42 30.4
+DEAL::3.94 26.7
+DEAL::3.94 26.7
+DEAL::3.94 31.2
+DEAL::3.94 31.2
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_Q<3>(2)^2-FE_DGQ<3>(3)^3]
+DEAL::component=0
+DEAL::7.10 14.2 28.4
+DEAL::104. 79.8 90.2
+DEAL::104. 79.8 90.2
+DEAL::7.10 14.2 28.4
+DEAL::-93.5 78.8 89.2
+DEAL::-93.5 78.8 89.2
+DEAL::7.10 14.2 28.4
+DEAL::95.1 -66.2 88.1
+DEAL::95.1 -66.2 88.1
+DEAL::7.10 14.2 28.4
+DEAL::-85.1 -65.1 87.1
+DEAL::-85.1 -65.1 87.1
+DEAL::7.10 14.2 28.4
+DEAL::86.7 63.0 -62.9
+DEAL::86.7 63.0 -62.9
+DEAL::7.10 14.2 28.4
+DEAL::-76.7 61.9 -61.8
+DEAL::-76.7 61.9 -61.8
+DEAL::7.10 14.2 28.4
+DEAL::78.3 -49.3 -60.8
+DEAL::78.3 -49.3 -60.8
+DEAL::7.10 14.2 28.4
+DEAL::-68.3 -48.3 -59.7
+DEAL::-68.3 -48.3 -59.7
+DEAL::component=1
+DEAL::104. 79.8 90.2
+DEAL::104. 79.8 90.2
+DEAL::7.10 28.4 114.
+DEAL::-93.5 78.8 89.2
+DEAL::-93.5 78.8 89.2
+DEAL::7.10 28.4 114.
+DEAL::95.1 -66.2 88.1
+DEAL::95.1 -66.2 88.1
+DEAL::7.10 28.4 114.
+DEAL::-85.1 -65.1 87.1
+DEAL::-85.1 -65.1 87.1
+DEAL::7.10 28.4 114.
+DEAL::86.7 63.0 -62.9
+DEAL::86.7 63.0 -62.9
+DEAL::7.10 28.4 114.
+DEAL::-76.7 61.9 -61.8
+DEAL::-76.7 61.9 -61.8
+DEAL::7.10 28.4 114.
+DEAL::78.3 -49.3 -60.8
+DEAL::78.3 -49.3 -60.8
+DEAL::7.10 28.4 114.
+DEAL::-68.3 -48.3 -59.7
+DEAL::-68.3 -48.3 -59.7
+DEAL::7.10 28.4 114.
+DEAL::component=2
+DEAL::104. 79.8 90.2
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::-93.5 78.8 89.2
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::95.1 -66.2 88.1
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::-85.1 -65.1 87.1
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::86.7 63.0 -62.9
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::-76.7 61.9 -61.8
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::78.3 -49.3 -60.8
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::-68.3 -48.3 -59.7
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::component=3
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
+DEAL::7.10 28.4 114.
diff --git a/tests/deal.II/fe_values_view_13.cc b/tests/deal.II/fe_values_view_13.cc
new file mode 100644 (file)
index 0000000..e797921
--- /dev/null
@@ -0,0 +1,114 @@
+//----------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$ 
+//
+//    Copyright (C) 2007, 2008 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+
+// test the FEValues views and extractor classes. this test is for
+// get_function_hessians for vector components and a primitive element
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <base/function.h>
+#include <base/quadrature_lib.h>
+#include <lac/vector.h>
+#include <grid/grid_generator.h>
+#include <grid/tria_boundary_lib.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_dgq.h>
+#include <fe/fe_system.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_q1.h>
+
+#include <fstream>
+
+
+
+template<int dim>
+void test (const Triangulation<dim>& tr,
+          const FiniteElement<dim>& fe)
+{
+  deallog << "FE=" << fe.get_name()
+         << std::endl;
+
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  Vector<double> fe_function(dof.n_dofs());
+  for (unsigned int i=0; i<dof.n_dofs(); ++i)
+    fe_function(i) = i+1;
+  
+  const QGauss<dim> quadrature(2);
+  FEValues<dim> fe_values (fe, quadrature,
+                          update_values | update_gradients | update_hessians);
+  fe_values.reinit (dof.begin_active());
+
+  std::vector<Tensor<3,dim> > selected_vector_values (quadrature.n_quadrature_points);
+  std::vector<std::vector<Tensor<2,dim> > >
+    vector_values (quadrature.n_quadrature_points,
+                  std::vector<Tensor<2,dim> >(fe.n_components()));
+
+  fe_values.get_function_hessians (fe_function, vector_values);
+  
+  for (unsigned int c=0; c<fe.n_components(); ++c)
+                                    // use a vector extractor if there
+                                    // are sufficiently many components
+                                    // left after the current component
+                                    // 'c'
+    if (c+dim <= fe.n_components())
+      {
+       FEValuesExtractors::Vector vector_components (c);
+       fe_values[vector_components].get_function_hessians (fe_function,
+                                                          selected_vector_values);
+       deallog << "component=" << c << std::endl;
+      
+       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
+         for (unsigned int d=0; d<dim; ++d)
+           {
+             deallog << selected_vector_values[q][d] << std::endl;
+             Assert ((selected_vector_values[q][d] - vector_values[q][c+d]).norm()
+                     <= 1e-12 * selected_vector_values[q][d].norm(),
+                     ExcInternalError());
+           }
+      }
+}
+
+
+
+template<int dim>
+void test_hyper_sphere()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_ball(tr);
+
+  static const HyperBallBoundary<dim> boundary;
+  tr.set_boundary (0, boundary);
+
+  FESystem<dim> fe (FE_Q<dim>(1), 1,
+                   FE_Q<dim>(2), 2,
+                   FE_DGQ<dim>(3), dim);
+  test(tr, fe);
+}
+
+
+int main()
+{
+  std::ofstream logfile ("fe_values_view_13/output");
+  deallog << std::setprecision (3);
+
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+  deallog.threshold_double(1.e-10);
+
+  test_hyper_sphere<2>();
+  test_hyper_sphere<3>();
+}
diff --git a/tests/deal.II/fe_values_view_13/cmp/generic b/tests/deal.II/fe_values_view_13/cmp/generic
new file mode 100644 (file)
index 0000000..1daa2f7
--- /dev/null
@@ -0,0 +1,139 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_Q<2>(2)^2-FE_DGQ<2>(3)^2]
+DEAL::component=0
+DEAL::8.61e-17 3.91 3.91 -4.51
+DEAL::-50.3 -8.13 -8.13 -197.
+DEAL::1.68e-10 3.91 3.91 4.51
+DEAL::-50.3 5.21 5.21 -174.
+DEAL::1.95e-16 10.4 10.4 -12.0
+DEAL::-102. 179. 179. -397.
+DEAL::1.95e-16 10.4 10.4 12.0
+DEAL::-102. -149. -149. -334.
+DEAL::component=1
+DEAL::-50.3 -8.13 -8.13 -197.
+DEAL::-50.3 -8.13 -8.13 -197.
+DEAL::-50.3 5.21 5.21 -174.
+DEAL::-50.3 5.21 5.21 -174.
+DEAL::-102. 179. 179. -397.
+DEAL::-102. 179. 179. -397.
+DEAL::-102. -149. -149. -334.
+DEAL::-102. -149. -149. -334.
+DEAL::component=2
+DEAL::-50.3 -8.13 -8.13 -197.
+DEAL::2.83e-08 3.91 3.91 -4.51
+DEAL::-50.3 5.21 5.21 -174.
+DEAL::2.04e-08 3.91 3.91 4.51
+DEAL::-102. 179. 179. -397.
+DEAL::9.15e-08 10.4 10.4 -12.0
+DEAL::-102. -149. -149. -334.
+DEAL::3.88e-08 10.4 10.4 12.0
+DEAL::component=3
+DEAL::2.83e-08 3.91 3.91 -4.51
+DEAL::4.53e-08 3.91 3.91 -4.51
+DEAL::2.04e-08 3.91 3.91 4.51
+DEAL::3.21e-08 3.91 3.91 4.51
+DEAL::9.15e-08 10.4 10.4 -12.0
+DEAL::1.35e-07 10.4 10.4 -12.0
+DEAL::3.88e-08 10.4 10.4 12.0
+DEAL::5.70e-08 10.4 10.4 12.0
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_Q<3>(2)^2-FE_DGQ<3>(3)^3]
+DEAL::component=0
+DEAL::6.62e-26 -3.61e-10 -3.91e-09 -1.05e-09 -3.37e-26 -2.27e-09 -8.87e-10 -2.92e-09 9.21e-26
+DEAL::-808. 63.0 -543. 63.0 -598. -539. -543. -539. -627.
+DEAL::-808. 63.0 -543. 63.0 -598. -539. -543. -539. -627.
+DEAL::1.34e-25 -2.13e-09 -4.40e-09 -8.26e-09 3.84e-25 -4.07e-09 -2.64e-09 -4.12e-09 -3.57e-26
+DEAL::-808. -71.7 535. -71.7 -590. -522. 535. -522. -619.
+DEAL::-808. -71.7 535. -71.7 -590. -522. 535. -522. -619.
+DEAL::1.28e-09 -2.35e-09 -3.71e-09 -2.43e-09 -5.29e-09 -4.60e-09 9.33e-09 -1.53e-08 -5.32e-09
+DEAL::-739. -132. -509. -132. -598. 522. -509. 522. -610.
+DEAL::-739. -132. -509. -132. -598. 522. -509. 522. -610.
+DEAL::-1.28e-09 -1.86e-09 -4.20e-09 -9.47e-09 -1.51e-09 -6.16e-09 3.89e-09 -7.81e-09 -4.93e-09
+DEAL::-739. 141. 500. 141. -590. 505. 500. 505. -602.
+DEAL::-739. 141. 500. 141. -590. 505. 500. 505. -602.
+DEAL::5.61e-26 -1.25e-09 9.52e-10 3.94e-10 2.51e-26 -2.10e-09 1.21e-09 2.59e-09 -8.94e-26
+DEAL::-670. 28.6 405. 28.6 -460. 401. 405. 401. -627.
+DEAL::-670. 28.6 405. 28.6 -460. 401. 405. 401. -627.
+DEAL::8.04e-26 -1.74e-09 1.44e-09 5.06e-09 -2.55e-25 -1.89e-09 -2.00e-09 -5.75e-10 1.91e-26
+DEAL::-670. -37.2 -397. -37.2 -452. 384. -397. 384. -619.
+DEAL::-670. -37.2 -397. -37.2 -452. 384. -397. 384. -619.
+DEAL::1.76e-25 2.97e-09 4.25e-09 -5.91e-10 -4.84e-26 3.87e-09 -1.77e-09 -3.02e-09 7.42e-09
+DEAL::-601. -97.5 371. -97.5 -460. -384. 371. -384. -610.
+DEAL::-601. -97.5 371. -97.5 -460. -384. 371. -384. -610.
+DEAL::1.28e-09 4.74e-09 4.74e-09 4.22e-09 3.43e-09 2.64e-09 1.29e-08 2.45e-09 9.98e-09
+DEAL::-601. 106. -362. 106. -452. -367. -362. -367. -602.
+DEAL::-601. 106. -362. 106. -452. -367. -362. -367. -602.
+DEAL::component=1
+DEAL::-808. 63.0 -543. 63.0 -598. -539. -543. -539. -627.
+DEAL::-808. 63.0 -543. 63.0 -598. -539. -543. -539. -627.
+DEAL::8.01e-07 5.39e-08 2.65e-08 1.12e-07 8.24e-07 -5.99e-09 4.68e-08 4.19e-09 7.21e-07
+DEAL::-808. -71.7 535. -71.7 -590. -522. 535. -522. -619.
+DEAL::-808. -71.7 535. -71.7 -590. -522. 535. -522. -619.
+DEAL::3.10e-07 1.72e-08 -1.81e-08 1.37e-08 6.83e-07 -7.14e-08 2.03e-07 1.10e-07 7.10e-07
+DEAL::-739. -132. -509. -132. -598. 522. -509. 522. -610.
+DEAL::-739. -132. -509. -132. -598. 522. -509. 522. -610.
+DEAL::7.28e-07 -4.75e-08 -1.36e-07 -1.34e-08 2.98e-07 -3.38e-08 1.97e-07 1.40e-07 7.09e-07
+DEAL::-739. 141. 500. 141. -590. 505. 500. 505. -602.
+DEAL::-739. 141. 500. 141. -590. 505. 500. 505. -602.
+DEAL::4.24e-07 9.68e-08 1.58e-07 1.61e-07 2.62e-07 1.59e-07 1.39e-07 6.94e-08 7.48e-07
+DEAL::-670. 28.6 405. 28.6 -460. 401. 405. 401. -627.
+DEAL::-670. 28.6 405. 28.6 -460. 401. 405. 401. -627.
+DEAL::1.13e-06 -2.16e-07 2.50e-08 -1.21e-07 1.21e-06 -2.26e-08 1.62e-07 1.35e-07 1.58e-07
+DEAL::-670. -37.2 -397. -37.2 -452. 384. -397. 384. -619.
+DEAL::-670. -37.2 -397. -37.2 -452. 384. -397. 384. -619.
+DEAL::6.47e-07 2.88e-07 -6.84e-08 -2.35e-09 1.08e-06 2.16e-08 -1.13e-07 1.15e-07 2.41e-07
+DEAL::-601. -97.5 371. -97.5 -460. -384. 371. -384. -610.
+DEAL::-601. -97.5 371. -97.5 -460. -384. 371. -384. -610.
+DEAL::1.12e-06 -6.17e-09 -1.07e-07 3.06e-07 6.14e-07 -8.55e-08 7.02e-08 -1.69e-07 2.84e-07
+DEAL::-601. 106. -362. 106. -452. -367. -362. -367. -602.
+DEAL::-601. 106. -362. 106. -452. -367. -362. -367. -602.
+DEAL::6.43e-07 5.14e-08 4.20e-08 5.68e-08 5.93e-07 1.18e-07 8.27e-08 3.61e-08 4.62e-07
+DEAL::component=2
+DEAL::-808. 63.0 -543. 63.0 -598. -539. -543. -539. -627.
+DEAL::8.01e-07 5.39e-08 2.65e-08 1.12e-07 8.24e-07 -5.99e-09 4.68e-08 4.19e-09 7.21e-07
+DEAL::1.47e-06 8.73e-08 5.01e-08 1.88e-07 1.50e-06 -2.04e-08 1.08e-08 -5.89e-08 1.29e-06
+DEAL::-808. -71.7 535. -71.7 -590. -522. 535. -522. -619.
+DEAL::3.10e-07 1.72e-08 -1.81e-08 1.37e-08 6.83e-07 -7.14e-08 2.03e-07 1.10e-07 7.10e-07
+DEAL::5.71e-07 3.41e-08 -3.17e-08 2.75e-08 1.24e-06 -1.46e-07 3.33e-07 1.28e-07 1.24e-06
+DEAL::-739. -132. -509. -132. -598. 522. -509. 522. -610.
+DEAL::7.28e-07 -4.75e-08 -1.36e-07 -1.34e-08 2.98e-07 -3.38e-08 1.97e-07 1.40e-07 7.09e-07
+DEAL::1.29e-06 -8.50e-08 -2.47e-07 -2.15e-08 5.49e-07 -6.29e-08 2.58e-07 2.32e-07 1.23e-06
+DEAL::-739. 141. 500. 141. -590. 505. 500. 505. -602.
+DEAL::4.24e-07 9.68e-08 1.58e-07 1.61e-07 2.62e-07 1.59e-07 1.39e-07 6.94e-08 7.48e-07
+DEAL::7.49e-07 1.69e-07 2.79e-07 2.79e-07 4.87e-07 2.74e-07 2.22e-07 1.14e-07 1.29e-06
+DEAL::-670. 28.6 405. 28.6 -460. 401. 405. 401. -627.
+DEAL::1.13e-06 -2.16e-07 2.50e-08 -1.21e-07 1.21e-06 -2.26e-08 1.62e-07 1.35e-07 1.58e-07
+DEAL::1.83e-06 -3.56e-07 3.64e-08 -2.08e-07 1.95e-06 -4.72e-08 2.11e-07 1.67e-07 2.99e-07
+DEAL::-670. -37.2 -397. -37.2 -452. 384. -397. 384. -619.
+DEAL::6.47e-07 2.88e-07 -6.84e-08 -2.35e-09 1.08e-06 2.16e-08 -1.13e-07 1.15e-07 2.41e-07
+DEAL::1.04e-06 4.65e-07 -1.11e-07 -3.24e-08 1.74e-06 2.51e-08 -2.02e-07 1.37e-07 4.19e-07
+DEAL::-601. -97.5 371. -97.5 -460. -384. 371. -384. -610.
+DEAL::1.12e-06 -6.17e-09 -1.07e-07 3.06e-07 6.14e-07 -8.55e-08 7.02e-08 -1.69e-07 2.84e-07
+DEAL::1.77e-06 -1.49e-08 -1.74e-07 4.81e-07 9.79e-07 -1.51e-07 6.12e-08 -2.86e-07 4.67e-07
+DEAL::-601. 106. -362. 106. -452. -367. -362. -367. -602.
+DEAL::6.43e-07 5.14e-08 4.20e-08 5.68e-08 5.93e-07 1.18e-07 8.27e-08 3.61e-08 4.62e-07
+DEAL::1.01e-06 8.13e-08 6.43e-08 7.02e-08 9.33e-07 1.75e-07 7.92e-08 3.26e-08 7.35e-07
+DEAL::component=3
+DEAL::8.01e-07 5.39e-08 2.65e-08 1.12e-07 8.24e-07 -5.99e-09 4.68e-08 4.19e-09 7.21e-07
+DEAL::1.47e-06 8.73e-08 5.01e-08 1.88e-07 1.50e-06 -2.04e-08 1.08e-08 -5.89e-08 1.29e-06
+DEAL::2.13e-06 1.21e-07 7.36e-08 2.64e-07 2.18e-06 -3.48e-08 -2.52e-08 -1.22e-07 1.86e-06
+DEAL::3.10e-07 1.72e-08 -1.81e-08 1.37e-08 6.83e-07 -7.14e-08 2.03e-07 1.10e-07 7.10e-07
+DEAL::5.71e-07 3.41e-08 -3.17e-08 2.75e-08 1.24e-06 -1.46e-07 3.33e-07 1.28e-07 1.24e-06
+DEAL::8.32e-07 5.11e-08 -4.54e-08 4.13e-08 1.79e-06 -2.20e-07 4.63e-07 1.45e-07 1.78e-06
+DEAL::7.28e-07 -4.75e-08 -1.36e-07 -1.34e-08 2.98e-07 -3.38e-08 1.97e-07 1.40e-07 7.09e-07
+DEAL::1.29e-06 -8.50e-08 -2.47e-07 -2.15e-08 5.49e-07 -6.29e-08 2.58e-07 2.32e-07 1.23e-06
+DEAL::1.85e-06 -1.23e-07 -3.58e-07 -2.96e-08 8.01e-07 -9.20e-08 3.19e-07 3.24e-07 1.75e-06
+DEAL::4.24e-07 9.68e-08 1.58e-07 1.61e-07 2.62e-07 1.59e-07 1.39e-07 6.94e-08 7.48e-07
+DEAL::7.49e-07 1.69e-07 2.79e-07 2.79e-07 4.87e-07 2.74e-07 2.22e-07 1.14e-07 1.29e-06
+DEAL::1.07e-06 2.41e-07 4.01e-07 3.96e-07 7.11e-07 3.90e-07 3.05e-07 1.59e-07 1.84e-06
+DEAL::1.13e-06 -2.16e-07 2.50e-08 -1.21e-07 1.21e-06 -2.26e-08 1.62e-07 1.35e-07 1.58e-07
+DEAL::1.83e-06 -3.56e-07 3.64e-08 -2.08e-07 1.95e-06 -4.72e-08 2.11e-07 1.67e-07 2.99e-07
+DEAL::2.53e-06 -4.96e-07 4.78e-08 -2.96e-07 2.69e-06 -7.18e-08 2.59e-07 1.99e-07 4.40e-07
+DEAL::6.47e-07 2.88e-07 -6.84e-08 -2.35e-09 1.08e-06 2.16e-08 -1.13e-07 1.15e-07 2.41e-07
+DEAL::1.04e-06 4.65e-07 -1.11e-07 -3.24e-08 1.74e-06 2.51e-08 -2.02e-07 1.37e-07 4.19e-07
+DEAL::1.44e-06 6.41e-07 -1.54e-07 -6.24e-08 2.40e-06 2.86e-08 -2.91e-07 1.59e-07 5.97e-07
+DEAL::1.12e-06 -6.17e-09 -1.07e-07 3.06e-07 6.14e-07 -8.55e-08 7.02e-08 -1.69e-07 2.84e-07
+DEAL::1.77e-06 -1.49e-08 -1.74e-07 4.81e-07 9.79e-07 -1.51e-07 6.12e-08 -2.86e-07 4.67e-07
+DEAL::2.43e-06 -2.37e-08 -2.42e-07 6.56e-07 1.34e-06 -2.16e-07 5.22e-08 -4.02e-07 6.50e-07
+DEAL::6.43e-07 5.14e-08 4.20e-08 5.68e-08 5.93e-07 1.18e-07 8.27e-08 3.61e-08 4.62e-07
+DEAL::1.01e-06 8.13e-08 6.43e-08 7.02e-08 9.33e-07 1.75e-07 7.92e-08 3.26e-08 7.35e-07
+DEAL::1.38e-06 1.11e-07 8.66e-08 8.36e-08 1.27e-06 2.32e-07 7.56e-08 2.91e-08 1.01e-06
diff --git a/tests/deal.II/fe_values_view_14.cc b/tests/deal.II/fe_values_view_14.cc
new file mode 100644 (file)
index 0000000..638d846
--- /dev/null
@@ -0,0 +1,115 @@
+//----------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$ 
+//
+//    Copyright (C) 2007, 2008 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+
+// test the FEValues views and extractor classes. this test is for
+// get_function_values for vector components and a non-primitive element
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <base/function.h>
+#include <base/quadrature_lib.h>
+#include <lac/vector.h>
+#include <grid/grid_generator.h>
+#include <grid/tria_boundary_lib.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_dgq.h>
+#include <fe/fe_nedelec.h>
+#include <fe/fe_raviart_thomas.h>
+#include <fe/fe_system.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_q1.h>
+
+#include <fstream>
+
+
+
+template<int dim>
+void test (const Triangulation<dim>& tr,
+          const FiniteElement<dim>& fe)
+{
+  deallog << "FE=" << fe.get_name()
+         << std::endl;
+
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  Vector<double> fe_function(dof.n_dofs());
+  for (unsigned int i=0; i<dof.n_dofs(); ++i)
+    fe_function(i) = i+1;
+  
+  const QGauss<dim> quadrature(2);
+  FEValues<dim> fe_values (fe, quadrature,
+                          update_values | update_gradients | update_hessians);
+  fe_values.reinit (dof.begin_active());
+
+  std::vector<Tensor<1,dim> > selected_vector_values (quadrature.n_quadrature_points);
+  std::vector<Vector<double> > vector_values (quadrature.n_quadrature_points,
+                                             Vector<double>(fe.n_components()));
+
+  fe_values.get_function_values (fe_function, vector_values);
+  
+  for (unsigned int c=0; c<fe.n_components(); ++c)
+                                    // use a vector extractor if there
+                                    // are sufficiently many components
+                                    // left after the current component
+                                    // 'c'
+    if (c+dim <= fe.n_components())
+      {
+       FEValuesExtractors::Vector vector_components (c);
+       fe_values[vector_components].get_function_values (fe_function,
+                                                        selected_vector_values);
+       deallog << "component=" << c << std::endl;
+      
+       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
+         for (unsigned int d=0; d<dim; ++d)
+           {
+             deallog << selected_vector_values[q][d] << std::endl;
+             Assert (std::fabs (selected_vector_values[q][d] - vector_values[q](c+d))
+                     <= 1e-12 * std::fabs (selected_vector_values[q][d]),
+                     ExcInternalError());
+           }
+      }
+}
+
+
+
+template<int dim>
+void test_hyper_sphere()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_ball(tr);
+
+  static const HyperBallBoundary<dim> boundary;
+  tr.set_boundary (0, boundary);
+
+  FESystem<dim> fe (FE_Q<dim>(1), 1,
+                   FE_RaviartThomas<dim>(1), 1,
+                   FE_Nedelec<dim>(1), 1);
+  test(tr, fe);
+}
+
+
+int main()
+{
+  std::ofstream logfile ("fe_values_view_14/output");
+  deallog << std::setprecision (3);
+
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+  deallog.threshold_double(1.e-10);
+
+  test_hyper_sphere<2>();
+  test_hyper_sphere<3>();
+}
diff --git a/tests/deal.II/fe_values_view_14/cmp/generic b/tests/deal.II/fe_values_view_14/cmp/generic
new file mode 100644 (file)
index 0000000..52f8348
--- /dev/null
@@ -0,0 +1,91 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_RaviartThomas<2>(1)-FE_Nedelec<2>(1)]
+DEAL::component=0
+DEAL::1.63
+DEAL::2.21
+DEAL::2.79
+DEAL::3.37
+DEAL::component=1
+DEAL::-5.76
+DEAL::-21.7
+DEAL::81.2
+DEAL::60.9
+DEAL::component=2
+DEAL::-1.61
+DEAL::29.3
+DEAL::-2.63
+DEAL::52.2
+DEAL::component=3
+DEAL::11.0
+DEAL::11.0
+DEAL::20.2
+DEAL::20.2
+DEAL::component=4
+DEAL::12.1
+DEAL::29.0
+DEAL::6.77
+DEAL::34.3
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(1)]
+DEAL::component=0
+DEAL::2.48
+DEAL::3.06
+DEAL::3.63
+DEAL::4.21
+DEAL::4.79
+DEAL::5.37
+DEAL::5.94
+DEAL::6.52
+DEAL::component=1
+DEAL::0
+DEAL::0
+DEAL::-67.2
+DEAL::-67.2
+DEAL::-33.6
+DEAL::-33.6
+DEAL::1.08e+03
+DEAL::1.13e+03
+DEAL::component=2
+DEAL::0
+DEAL::-67.2
+DEAL::0
+DEAL::-67.2
+DEAL::-33.6
+DEAL::1.10e+03
+DEAL::-33.6
+DEAL::1.16e+03
+DEAL::component=3
+DEAL::0
+DEAL::-67.2
+DEAL::-33.6
+DEAL::1.13e+03
+DEAL::0
+DEAL::-67.2
+DEAL::-33.6
+DEAL::1.18e+03
+DEAL::component=4
+DEAL::28.5
+DEAL::28.5
+DEAL::29.9
+DEAL::29.9
+DEAL::34.0
+DEAL::34.0
+DEAL::35.4
+DEAL::35.4
+DEAL::component=5
+DEAL::23.8
+DEAL::25.2
+DEAL::23.8
+DEAL::25.2
+DEAL::29.3
+DEAL::30.6
+DEAL::29.3
+DEAL::30.6
+DEAL::component=6
+DEAL::41.7
+DEAL::43.1
+DEAL::44.5
+DEAL::45.8
+DEAL::41.7
+DEAL::43.1
+DEAL::44.5
+DEAL::45.8
diff --git a/tests/deal.II/fe_values_view_15.cc b/tests/deal.II/fe_values_view_15.cc
new file mode 100644 (file)
index 0000000..98023b7
--- /dev/null
@@ -0,0 +1,116 @@
+//----------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$ 
+//
+//    Copyright (C) 2007, 2008 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+
+// test the FEValues views and extractor classes. this test is for
+// get_function_gradients for vector components and a non-primitive element
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <base/function.h>
+#include <base/quadrature_lib.h>
+#include <lac/vector.h>
+#include <grid/grid_generator.h>
+#include <grid/tria_boundary_lib.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_dgq.h>
+#include <fe/fe_nedelec.h>
+#include <fe/fe_raviart_thomas.h>
+#include <fe/fe_system.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_q1.h>
+
+#include <fstream>
+
+
+
+template<int dim>
+void test (const Triangulation<dim>& tr,
+          const FiniteElement<dim>& fe)
+{
+  deallog << "FE=" << fe.get_name()
+         << std::endl;
+
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  Vector<double> fe_function(dof.n_dofs());
+  for (unsigned int i=0; i<dof.n_dofs(); ++i)
+    fe_function(i) = i+1;
+  
+  const QGauss<dim> quadrature(2);
+  FEValues<dim> fe_values (fe, quadrature,
+                          update_values | update_gradients | update_hessians);
+  fe_values.reinit (dof.begin_active());
+
+  std::vector<Tensor<2,dim> > selected_vector_values (quadrature.n_quadrature_points);
+  std::vector<std::vector<Tensor<1,dim> > >
+    vector_values (quadrature.n_quadrature_points,
+                  std::vector<Tensor<1,dim> >(fe.n_components()));
+
+  fe_values.get_function_gradients (fe_function, vector_values);
+  
+  for (unsigned int c=0; c<fe.n_components(); ++c)
+                                    // use a vector extractor if there
+                                    // are sufficiently many components
+                                    // left after the current component
+                                    // 'c'
+    if (c+dim <= fe.n_components())
+      {
+       FEValuesExtractors::Vector vector_components (c);
+       fe_values[vector_components].get_function_gradients (fe_function,
+                                                           selected_vector_values);
+       deallog << "component=" << c << std::endl;
+      
+       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
+         for (unsigned int d=0; d<dim; ++d)
+           {
+             deallog << selected_vector_values[q][d] << std::endl;
+             Assert ((selected_vector_values[q][d] - vector_values[q][c+d]).norm()
+                     <= 1e-12 * selected_vector_values[q][d].norm(),
+                     ExcInternalError());
+           }
+      }
+}
+
+
+
+template<int dim>
+void test_hyper_sphere()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_ball(tr);
+
+  static const HyperBallBoundary<dim> boundary;
+  tr.set_boundary (0, boundary);
+
+  FESystem<dim> fe (FE_Q<dim>(1), 1,
+                   FE_RaviartThomas<dim>(1), 1,
+                   FE_Nedelec<dim>(1), 1);
+  test(tr, fe);
+}
+
+
+int main()
+{
+  std::ofstream logfile ("fe_values_view_15/output");
+  deallog << std::setprecision (3);
+
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+  deallog.threshold_double(1.e-10);
+
+  test_hyper_sphere<2>();
+  test_hyper_sphere<3>();
+}
diff --git a/tests/deal.II/fe_values_view_15/cmp/generic b/tests/deal.II/fe_values_view_15/cmp/generic
new file mode 100644 (file)
index 0000000..fb7bba4
--- /dev/null
@@ -0,0 +1,164 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_RaviartThomas<2>(1)-FE_Nedelec<2>(1)]
+DEAL::component=0
+DEAL::0.807 4.36
+DEAL::18.2 352.
+DEAL::0.807 5.29
+DEAL::-18.2 337.
+DEAL::1.31 4.07
+DEAL::333. 180.
+DEAL::1.31 5.59
+DEAL::-295. 296.
+DEAL::component=1
+DEAL::18.2 352.
+DEAL::43.2 -31.7
+DEAL::-18.2 337.
+DEAL::43.2 118.
+DEAL::333. 180.
+DEAL::125. -61.1
+DEAL::-295. 296.
+DEAL::125. -40.8
+DEAL::component=2
+DEAL::43.2 -31.7
+DEAL::2.58e-16 5.84
+DEAL::43.2 118.
+DEAL::2.58e-16 5.84
+DEAL::125. -61.1
+DEAL::3.58e-16 9.52
+DEAL::125. -40.8
+DEAL::3.58e-16 9.52
+DEAL::component=3
+DEAL::2.58e-16 5.84
+DEAL::5.84 -6.75
+DEAL::2.58e-16 5.84
+DEAL::5.84 6.75
+DEAL::3.58e-16 9.52
+DEAL::9.52 -11.0
+DEAL::3.58e-16 9.52
+DEAL::9.52 11.0
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(1)]
+DEAL::component=0
+DEAL::2.37 4.73 9.46
+DEAL::8.18e-13 -275. -138.
+DEAL::-275. 1.30e-12 -138.
+DEAL::2.37 4.73 9.46
+DEAL::-5.71e-13 -275. -138.
+DEAL::-275. -459. 4.80e+03
+DEAL::2.37 4.73 9.46
+DEAL::-367. -275. 4.71e+03
+DEAL::-275. -1.40e-12 -138.
+DEAL::2.37 4.73 9.46
+DEAL::367. -275. 4.92e+03
+DEAL::-275. 459. 5.02e+03
+DEAL::2.37 4.73 9.46
+DEAL::-184. 4.57e+03 -138.
+DEAL::4.67e+03 -91.8 -138.
+DEAL::2.37 4.73 9.46
+DEAL::184. 4.79e+03 -138.
+DEAL::4.67e+03 3.52e+03 4.80e+03
+DEAL::2.37 4.73 9.46
+DEAL::4.80e+03 4.57e+03 4.71e+03
+DEAL::4.88e+03 91.8 -138.
+DEAL::2.37 4.73 9.46
+DEAL::-4.38e+03 4.79e+03 4.92e+03
+DEAL::4.88e+03 -3.09e+03 5.02e+03
+DEAL::component=1
+DEAL::8.18e-13 -275. -138.
+DEAL::-275. 1.30e-12 -138.
+DEAL::-275. -138. 1.36e-12
+DEAL::-5.71e-13 -275. -138.
+DEAL::-275. -459. 4.80e+03
+DEAL::-275. 4.90e+03 -367.
+DEAL::-367. -275. 4.71e+03
+DEAL::-275. -1.40e-12 -138.
+DEAL::4.76e+03 -138. -184.
+DEAL::367. -275. 4.92e+03
+DEAL::-275. 459. 5.02e+03
+DEAL::4.76e+03 4.90e+03 2.23e+03
+DEAL::-184. 4.57e+03 -138.
+DEAL::4.67e+03 -91.8 -138.
+DEAL::-275. -138. -3.64e-12
+DEAL::184. 4.79e+03 -138.
+DEAL::4.67e+03 3.52e+03 4.80e+03
+DEAL::-275. 5.11e+03 367.
+DEAL::4.80e+03 4.57e+03 4.71e+03
+DEAL::4.88e+03 91.8 -138.
+DEAL::4.97e+03 -138. 184.
+DEAL::-4.38e+03 4.79e+03 4.92e+03
+DEAL::4.88e+03 -3.09e+03 5.02e+03
+DEAL::4.97e+03 5.11e+03 -1.81e+03
+DEAL::component=2
+DEAL::-275. 1.30e-12 -138.
+DEAL::-275. -138. 1.36e-12
+DEAL::-7.70e-16 5.60 22.4
+DEAL::-275. -459. 4.80e+03
+DEAL::-275. 4.90e+03 -367.
+DEAL::-7.70e-16 5.60 22.4
+DEAL::-275. -1.40e-12 -138.
+DEAL::4.76e+03 -138. -184.
+DEAL::-6.69e-16 5.60 22.4
+DEAL::-275. 459. 5.02e+03
+DEAL::4.76e+03 4.90e+03 2.23e+03
+DEAL::-6.69e-16 5.60 22.4
+DEAL::4.67e+03 -91.8 -138.
+DEAL::-275. -138. -3.64e-12
+DEAL::1.58e-16 5.60 22.4
+DEAL::4.67e+03 3.52e+03 4.80e+03
+DEAL::-275. 5.11e+03 367.
+DEAL::1.58e-16 5.60 22.4
+DEAL::4.88e+03 91.8 -138.
+DEAL::4.97e+03 -138. 184.
+DEAL::9.52e-16 5.60 22.4
+DEAL::4.88e+03 -3.09e+03 5.02e+03
+DEAL::4.97e+03 5.11e+03 -1.81e+03
+DEAL::9.52e-16 5.60 22.4
+DEAL::component=3
+DEAL::-275. -138. 1.36e-12
+DEAL::-7.70e-16 5.60 22.4
+DEAL::5.60 5.78e-16 22.4
+DEAL::-275. 4.90e+03 -367.
+DEAL::-7.70e-16 5.60 22.4
+DEAL::5.60 -1.39e-15 22.4
+DEAL::4.76e+03 -138. -184.
+DEAL::-6.69e-16 5.60 22.4
+DEAL::5.60 5.78e-16 22.4
+DEAL::4.76e+03 4.90e+03 2.23e+03
+DEAL::-6.69e-16 5.60 22.4
+DEAL::5.60 -1.39e-15 22.4
+DEAL::-275. -138. -3.64e-12
+DEAL::1.58e-16 5.60 22.4
+DEAL::5.60 -6.60e-16 22.4
+DEAL::-275. 5.11e+03 367.
+DEAL::1.58e-16 5.60 22.4
+DEAL::5.60 3.53e-16 22.4
+DEAL::4.97e+03 -138. 184.
+DEAL::9.52e-16 5.60 22.4
+DEAL::5.60 -6.60e-16 22.4
+DEAL::4.97e+03 5.11e+03 -1.81e+03
+DEAL::9.52e-16 5.60 22.4
+DEAL::5.60 3.53e-16 22.4
+DEAL::component=4
+DEAL::-7.70e-16 5.60 22.4
+DEAL::5.60 5.78e-16 22.4
+DEAL::5.60 11.2 -1.38e-15
+DEAL::-7.70e-16 5.60 22.4
+DEAL::5.60 -1.39e-15 22.4
+DEAL::5.60 11.2 1.96e-16
+DEAL::-6.69e-16 5.60 22.4
+DEAL::5.60 5.78e-16 22.4
+DEAL::5.60 11.2 1.23e-17
+DEAL::-6.69e-16 5.60 22.4
+DEAL::5.60 -1.39e-15 22.4
+DEAL::5.60 11.2 1.50e-15
+DEAL::1.58e-16 5.60 22.4
+DEAL::5.60 -6.60e-16 22.4
+DEAL::5.60 11.2 -1.38e-15
+DEAL::1.58e-16 5.60 22.4
+DEAL::5.60 3.53e-16 22.4
+DEAL::5.60 11.2 1.96e-16
+DEAL::9.52e-16 5.60 22.4
+DEAL::5.60 -6.60e-16 22.4
+DEAL::5.60 11.2 1.23e-17
+DEAL::9.52e-16 5.60 22.4
+DEAL::5.60 3.53e-16 22.4
+DEAL::5.60 11.2 1.50e-15
diff --git a/tests/deal.II/fe_values_view_15/fe_values_view_09/cmp/generic b/tests/deal.II/fe_values_view_15/fe_values_view_09/cmp/generic
new file mode 100644 (file)
index 0000000..977609c
--- /dev/null
@@ -0,0 +1,91 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_RaviartThomas<2>(1)-FE_Nedelec<2>(1)]
+DEAL::component=0
+DEAL::0.807 4.36
+DEAL::0.807 5.29
+DEAL::1.31 4.07
+DEAL::1.31 5.59
+DEAL::component=1
+DEAL::18.2 352.
+DEAL::-18.2 337.
+DEAL::333. 180.
+DEAL::-295. 296.
+DEAL::component=2
+DEAL::43.2 -31.7
+DEAL::43.2 118.
+DEAL::125. -61.1
+DEAL::125. -40.8
+DEAL::component=3
+DEAL::2.58e-16 5.84
+DEAL::2.58e-16 5.84
+DEAL::3.58e-16 9.52
+DEAL::3.58e-16 9.52
+DEAL::component=4
+DEAL::5.84 -6.75
+DEAL::5.84 6.75
+DEAL::9.52 -11.0
+DEAL::9.52 11.0
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(1)]
+DEAL::component=0
+DEAL::2.37 4.73 9.46
+DEAL::2.37 4.73 9.46
+DEAL::2.37 4.73 9.46
+DEAL::2.37 4.73 9.46
+DEAL::2.37 4.73 9.46
+DEAL::2.37 4.73 9.46
+DEAL::2.37 4.73 9.46
+DEAL::2.37 4.73 9.46
+DEAL::component=1
+DEAL::8.18e-13 -275. -138.
+DEAL::-5.71e-13 -275. -138.
+DEAL::-367. -275. 4.71e+03
+DEAL::367. -275. 4.92e+03
+DEAL::-184. 4.57e+03 -138.
+DEAL::184. 4.79e+03 -138.
+DEAL::4.80e+03 4.57e+03 4.71e+03
+DEAL::-4.38e+03 4.79e+03 4.92e+03
+DEAL::component=2
+DEAL::-275. 1.30e-12 -138.
+DEAL::-275. -459. 4.80e+03
+DEAL::-275. -1.40e-12 -138.
+DEAL::-275. 459. 5.02e+03
+DEAL::4.67e+03 -91.8 -138.
+DEAL::4.67e+03 3.52e+03 4.80e+03
+DEAL::4.88e+03 91.8 -138.
+DEAL::4.88e+03 -3.09e+03 5.02e+03
+DEAL::component=3
+DEAL::-275. -138. 1.36e-12
+DEAL::-275. 4.90e+03 -367.
+DEAL::4.76e+03 -138. -184.
+DEAL::4.76e+03 4.90e+03 2.23e+03
+DEAL::-275. -138. -3.64e-12
+DEAL::-275. 5.11e+03 367.
+DEAL::4.97e+03 -138. 184.
+DEAL::4.97e+03 5.11e+03 -1.81e+03
+DEAL::component=4
+DEAL::-7.70e-16 5.60 22.4
+DEAL::-7.70e-16 5.60 22.4
+DEAL::-6.69e-16 5.60 22.4
+DEAL::-6.69e-16 5.60 22.4
+DEAL::1.58e-16 5.60 22.4
+DEAL::1.58e-16 5.60 22.4
+DEAL::9.52e-16 5.60 22.4
+DEAL::9.52e-16 5.60 22.4
+DEAL::component=5
+DEAL::5.60 5.78e-16 22.4
+DEAL::5.60 -1.39e-15 22.4
+DEAL::5.60 5.78e-16 22.4
+DEAL::5.60 -1.39e-15 22.4
+DEAL::5.60 -6.60e-16 22.4
+DEAL::5.60 3.53e-16 22.4
+DEAL::5.60 -6.60e-16 22.4
+DEAL::5.60 3.53e-16 22.4
+DEAL::component=6
+DEAL::5.60 11.2 -1.38e-15
+DEAL::5.60 11.2 1.96e-16
+DEAL::5.60 11.2 1.23e-17
+DEAL::5.60 11.2 1.50e-15
+DEAL::5.60 11.2 -1.38e-15
+DEAL::5.60 11.2 1.96e-16
+DEAL::5.60 11.2 1.23e-17
+DEAL::5.60 11.2 1.50e-15
diff --git a/tests/deal.II/fe_values_view_16.cc b/tests/deal.II/fe_values_view_16.cc
new file mode 100644 (file)
index 0000000..50f1af0
--- /dev/null
@@ -0,0 +1,116 @@
+//----------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$ 
+//
+//    Copyright (C) 2007, 2008 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+
+// test the FEValues views and extractor classes. this test is for
+// get_function_hessians for vector components and a non-primitive element
+
+#include "../tests.h"
+#include <base/logstream.h>
+#include <base/function.h>
+#include <base/quadrature_lib.h>
+#include <lac/vector.h>
+#include <grid/grid_generator.h>
+#include <grid/tria_boundary_lib.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_dgq.h>
+#include <fe/fe_nedelec.h>
+#include <fe/fe_raviart_thomas.h>
+#include <fe/fe_system.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_q1.h>
+
+#include <fstream>
+
+
+
+template<int dim>
+void test (const Triangulation<dim>& tr,
+          const FiniteElement<dim>& fe)
+{
+  deallog << "FE=" << fe.get_name()
+         << std::endl;
+
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  Vector<double> fe_function(dof.n_dofs());
+  for (unsigned int i=0; i<dof.n_dofs(); ++i)
+    fe_function(i) = i+1;
+  
+  const QGauss<dim> quadrature(2);
+  FEValues<dim> fe_values (fe, quadrature,
+                          update_values | update_gradients | update_hessians);
+  fe_values.reinit (dof.begin_active());
+
+  std::vector<Tensor<3,dim> > selected_vector_values (quadrature.n_quadrature_points);
+  std::vector<std::vector<Tensor<2,dim> > >
+    vector_values (quadrature.n_quadrature_points,
+                  std::vector<Tensor<2,dim> >(fe.n_components()));
+
+  fe_values.get_function_hessians (fe_function, vector_values);
+  
+  for (unsigned int c=0; c<fe.n_components(); ++c)
+                                    // use a vector extractor if there
+                                    // are sufficiently many components
+                                    // left after the current component
+                                    // 'c'
+    if (c+dim <= fe.n_components())
+      {
+       FEValuesExtractors::Vector vector_components (c);
+       fe_values[vector_components].get_function_hessians (fe_function,
+                                                          selected_vector_values);
+       deallog << "component=" << c << std::endl;
+      
+       for (unsigned int q=0; q<fe_values.n_quadrature_points; ++q)
+         for (unsigned int d=0; d<dim; ++d)
+           {
+             deallog << selected_vector_values[q][d] << std::endl;
+             Assert ((selected_vector_values[q][d] - vector_values[q][c+d]).norm()
+                     <= 1e-12 * selected_vector_values[q][d].norm(),
+                     ExcInternalError());
+           }
+      }
+}
+
+
+
+template<int dim>
+void test_hyper_sphere()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_ball(tr);
+
+  static const HyperBallBoundary<dim> boundary;
+  tr.set_boundary (0, boundary);
+
+  FESystem<dim> fe (FE_Q<dim>(1), 1,
+                   FE_RaviartThomas<dim>(1), 1,
+                   FE_Nedelec<dim>(1), 1);
+  test(tr, fe);
+}
+
+
+int main()
+{
+  std::ofstream logfile ("fe_values_view_16/output");
+  deallog << std::setprecision (3);
+
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+  deallog.threshold_double(1.e-10);
+
+  test_hyper_sphere<2>();
+  test_hyper_sphere<3>();
+}
diff --git a/tests/deal.II/fe_values_view_16/cmp/generic b/tests/deal.II/fe_values_view_16/cmp/generic
new file mode 100644 (file)
index 0000000..dfcb626
--- /dev/null
@@ -0,0 +1,164 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_RaviartThomas<2>(1)-FE_Nedelec<2>(1)]
+DEAL::component=0
+DEAL::2.87e-17 1.30 1.30 -1.50
+DEAL::-50.8 877. 848. -953.
+DEAL::5.60e-11 1.30 1.30 1.50
+DEAL::-50.8 -779. -889. -641.
+DEAL::6.50e-17 3.45 3.45 -3.99
+DEAL::-1.43e+03 2.86e+03 2.65e+03 -2.63e+03
+DEAL::6.50e-17 3.45 3.45 3.99
+DEAL::-1.43e+03 -2.60e+03 -2.12e+03 -1.44e+03
+DEAL::component=1
+DEAL::-50.8 877. 848. -953.
+DEAL::5.72e-15 278. 209. -236.
+DEAL::-50.8 -779. -889. -641.
+DEAL::3.32e-09 278. 209. -247.
+DEAL::-1.43e+03 2.86e+03 2.65e+03 -2.63e+03
+DEAL::2.78e-14 374. 46.3 -122.
+DEAL::-1.43e+03 -2.60e+03 -2.12e+03 -1.44e+03
+DEAL::-1.17e-08 374. 46.3 -1.16e+03
+DEAL::component=2
+DEAL::5.72e-15 278. 209. -236.
+DEAL::-1.22e-26 -5.55e-10 4.16e-16 9.43
+DEAL::3.32e-09 278. 209. -247.
+DEAL::1.76e-26 -5.55e-10 1.08e-09 9.43
+DEAL::2.78e-14 374. 46.3 -122.
+DEAL::5.19e-27 2.75e-10 9.42e-16 25.0
+DEAL::-1.17e-08 374. 46.3 -1.16e+03
+DEAL::5.38e-26 2.75e-10 9.42e-16 25.0
+DEAL::component=3
+DEAL::-1.22e-26 -5.55e-10 4.16e-16 9.43
+DEAL::4.16e-16 9.43 18.9 -21.8
+DEAL::1.76e-26 -5.55e-10 1.08e-09 9.43
+DEAL::1.08e-09 9.43 18.9 21.8
+DEAL::5.19e-27 2.75e-10 9.42e-16 25.0
+DEAL::9.42e-16 25.0 50.0 -57.8
+DEAL::5.38e-26 2.75e-10 9.42e-16 25.0
+DEAL::9.42e-16 25.0 50.0 57.8
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(1)]
+DEAL::component=0
+DEAL::2.73e-26 -2.30e-10 -1.41e-09 -4.27e-10 -1.52e-26 -9.85e-10 -3.94e-10 -1.25e-09 3.96e-26
+DEAL::-1.67e-06 -1.50e+03 -752. -1.50e+03 -4.95e-09 1.99e+04 -752. 1.99e+04 -3.80e-09
+DEAL::1.90e-07 -1.88e+03 2.02e+04 -1.88e+03 1.09e-06 -376. 2.02e+04 -376. 2.63e-08
+DEAL::4.99e-26 -8.21e-10 -1.58e-09 -2.68e-09 1.34e-25 -1.64e-09 -8.70e-10 -1.43e-09 -1.31e-26
+DEAL::-3.75e-07 1.50e+03 752. 1.50e+03 7.20e-08 2.07e+04 752. 2.07e+04 -1.16e-07
+DEAL::-1.28e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 -1.31e-06
+DEAL::4.27e-10 -6.73e-10 -1.35e-09 -9.19e-10 -1.94e-09 -1.58e-09 3.22e-09 -5.25e-09 -1.67e-09
+DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 -3.64e-07 1.99e+04 2.12e+04 1.99e+04 -2.19e-06
+DEAL::6.37e-08 1.88e+03 2.11e+04 1.88e+03 -1.17e-06 376. 2.11e+04 376. -4.37e-07
+DEAL::-4.27e-10 -5.09e-10 -1.51e-09 -3.17e-09 -4.60e-10 -2.15e-09 1.53e-09 -2.56e-09 -1.64e-09
+DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 6.33e-07 2.07e+04 -1.94e+04 2.07e+04 -2.34e-06
+DEAL::1.87e-07 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -2.94e-06
+DEAL::2.41e-26 -5.25e-10 4.27e-10 6.57e-11 9.19e-27 -6.90e-10 4.60e-10 9.19e-10 -3.22e-26
+DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -8.50e-07 1.99e+04 -752. 1.99e+04 -2.56e-10
+DEAL::-1.29e-06 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. 2.42e-09
+DEAL::3.22e-26 -6.90e-10 5.91e-10 1.71e-09 -8.62e-26 -6.40e-10 -5.58e-10 -2.46e-10 3.76e-27
+DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 7.52e-08 2.07e+04 752. 2.07e+04 -2.88e-07
+DEAL::-5.48e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 2.42e-09
+DEAL::6.38e-26 1.10e-09 1.53e-09 -2.63e-10 -1.60e-26 1.35e-09 -6.90e-10 -9.52e-10 2.56e-09
+DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 3.29e-07 1.99e+04 2.12e+04 1.99e+04 1.18e-06
+DEAL::7.31e-08 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -8.66e-07
+DEAL::4.27e-10 1.69e-09 1.69e-09 1.33e-09 1.13e-09 8.70e-10 4.37e-09 7.39e-10 3.41e-09
+DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 1.33e-06 2.07e+04 -1.94e+04 2.07e+04 1.50e-06
+DEAL::2.70e-06 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 1.94e-06
+DEAL::component=1
+DEAL::-1.67e-06 -1.50e+03 -752. -1.50e+03 -4.95e-09 1.99e+04 -752. 1.99e+04 -3.80e-09
+DEAL::1.90e-07 -1.88e+03 2.02e+04 -1.88e+03 1.09e-06 -376. 2.02e+04 -376. 2.63e-08
+DEAL::1.22e-07 2.06e+04 -1.50e+03 2.06e+04 -3.64e-07 -752. -1.50e+03 -752. -5.14e-07
+DEAL::-3.75e-07 1.50e+03 752. 1.50e+03 7.20e-08 2.07e+04 752. 2.07e+04 -1.16e-07
+DEAL::-1.28e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 -1.31e-06
+DEAL::8.43e-08 2.06e+04 -1.50e+03 2.06e+04 -4.94e-09 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
+DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 -3.64e-07 1.99e+04 2.12e+04 1.99e+04 -2.19e-06
+DEAL::6.37e-08 1.88e+03 2.11e+04 1.88e+03 -1.17e-06 376. 2.11e+04 376. -4.37e-07
+DEAL::1.41e-06 2.06e+04 9.89e+03 2.06e+04 1.88e-07 -752. 9.89e+03 -752. 1.50e+03
+DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 6.33e-07 2.07e+04 -1.94e+04 2.07e+04 -2.34e-06
+DEAL::1.87e-07 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -2.94e-06
+DEAL::-3.22e-06 2.06e+04 9.89e+03 2.06e+04 -3.58e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
+DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -8.50e-07 1.99e+04 -752. 1.99e+04 -2.56e-10
+DEAL::-1.29e-06 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. 2.42e-09
+DEAL::-1.55e-07 2.15e+04 1.50e+03 2.15e+04 4.51e-07 752. 1.50e+03 752. -7.46e-07
+DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 7.52e-08 2.07e+04 752. 2.07e+04 -2.88e-07
+DEAL::-5.48e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 2.42e-09
+DEAL::-3.38e-07 2.15e+04 1.50e+03 2.15e+04 -1.15e-07 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
+DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 3.29e-07 1.99e+04 2.12e+04 1.99e+04 1.18e-06
+DEAL::7.31e-08 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -8.66e-07
+DEAL::-3.07e-07 2.15e+04 -8.16e+03 2.15e+04 5.81e-08 752. -8.16e+03 752. 1.50e+03
+DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 1.33e-06 2.07e+04 -1.94e+04 2.07e+04 1.50e-06
+DEAL::2.70e-06 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 1.94e-06
+DEAL::2.44e-06 2.15e+04 -8.16e+03 2.15e+04 2.41e-06 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
+DEAL::component=2
+DEAL::1.90e-07 -1.88e+03 2.02e+04 -1.88e+03 1.09e-06 -376. 2.02e+04 -376. 2.63e-08
+DEAL::1.22e-07 2.06e+04 -1.50e+03 2.06e+04 -3.64e-07 -752. -1.50e+03 -752. -5.14e-07
+DEAL::2.73e-25 -7.57e-10 -7.57e-10 -1.14e-25 1.11e-09 -1.51e-09 -3.15e-09 7.90e-09 -5.76e-09
+DEAL::-1.28e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 -1.31e-06
+DEAL::8.43e-08 2.06e+04 -1.50e+03 2.06e+04 -4.94e-09 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
+DEAL::7.87e-25 -7.57e-10 -7.57e-10 -2.63e-09 -2.01e-10 -1.51e-09 -1.05e-08 -1.56e-09 -5.76e-09
+DEAL::6.37e-08 1.88e+03 2.11e+04 1.88e+03 -1.17e-06 376. 2.11e+04 376. -4.37e-07
+DEAL::1.41e-06 2.06e+04 9.89e+03 2.06e+04 1.88e-07 -752. 9.89e+03 -752. 1.50e+03
+DEAL::-2.43e-25 2.53e-10 -1.42e-10 1.31e-09 -3.74e-09 -2.79e-09 1.05e-08 -2.31e-08 -9.97e-09
+DEAL::1.87e-07 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -2.94e-06
+DEAL::-3.22e-06 2.06e+04 9.89e+03 2.06e+04 -3.58e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
+DEAL::1.66e-25 2.53e-10 -1.42e-10 -8.14e-09 -3.74e-09 -6.99e-09 -5.25e-09 -1.33e-08 -2.65e-08
+DEAL::-1.29e-06 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. 2.42e-09
+DEAL::-1.55e-07 2.15e+04 1.50e+03 2.15e+04 4.51e-07 752. 1.50e+03 752. -7.46e-07
+DEAL::1.19e-25 5.11e-10 -3.99e-10 1.60e-25 2.70e-10 -5.01e-10 -7.36e-09 -1.38e-09 3.93e-10
+DEAL::-5.48e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 2.42e-09
+DEAL::-3.38e-07 2.15e+04 1.50e+03 2.15e+04 -1.15e-07 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
+DEAL::-4.75e-25 5.11e-10 -3.99e-10 -1.58e-09 2.70e-10 -5.01e-10 -4.20e-09 -4.53e-09 3.93e-10
+DEAL::7.31e-08 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -8.66e-07
+DEAL::-3.07e-07 2.15e+04 -8.16e+03 2.15e+04 5.81e-08 752. -8.16e+03 752. 1.50e+03
+DEAL::-3.38e-26 -6.96e-10 -6.96e-10 1.07e-25 1.11e-09 3.74e-09 7.55e-25 1.85e-08 1.54e-08
+DEAL::2.70e-06 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 1.94e-06
+DEAL::2.44e-06 2.15e+04 -8.16e+03 2.15e+04 2.41e-06 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
+DEAL::5.13e-25 -6.96e-10 -6.96e-10 7.88e-10 6.89e-09 3.74e-09 -1.05e-09 1.54e-08 1.54e-08
+DEAL::component=3
+DEAL::1.22e-07 2.06e+04 -1.50e+03 2.06e+04 -3.64e-07 -752. -1.50e+03 -752. -5.14e-07
+DEAL::2.73e-25 -7.57e-10 -7.57e-10 -1.14e-25 1.11e-09 -1.51e-09 -3.15e-09 7.90e-09 -5.76e-09
+DEAL::-2.63e-10 -2.10e-09 -1.36e-09 -1.89e-09 -1.15e-25 -5.85e-10 -1.67e-09 -2.63e-09 -6.19e-10
+DEAL::8.43e-08 2.06e+04 -1.50e+03 2.06e+04 -4.94e-09 1.06e+04 -1.50e+03 1.06e+04 3.01e+03
+DEAL::7.87e-25 -7.57e-10 -7.57e-10 -2.63e-09 -2.01e-10 -1.51e-09 -1.05e-08 -1.56e-09 -5.76e-09
+DEAL::-1.91e-09 3.73e-25 -5.07e-09 -2.26e-09 7.73e-26 -2.24e-10 -9.67e-09 4.74e-25 5.40e-10
+DEAL::1.41e-06 2.06e+04 9.89e+03 2.06e+04 1.88e-07 -752. 9.89e+03 -752. 1.50e+03
+DEAL::-2.43e-25 2.53e-10 -1.42e-10 1.31e-09 -3.74e-09 -2.79e-09 1.05e-08 -2.31e-08 -9.97e-09
+DEAL::1.05e-09 -5.25e-10 -2.67e-09 -1.89e-09 -1.42e-25 -5.85e-10 6.21e-09 -1.31e-08 -1.11e-08
+DEAL::-3.22e-06 2.06e+04 9.89e+03 2.06e+04 -3.58e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04
+DEAL::1.66e-25 2.53e-10 -1.42e-10 -8.14e-09 -3.74e-09 -6.99e-09 -5.25e-09 -1.33e-08 -2.65e-08
+DEAL::-4.28e-09 -3.94e-09 -6.39e-09 -2.26e-09 1.83e-25 -2.24e-10 -8.62e-09 -1.05e-08 -2.39e-08
+DEAL::-1.55e-07 2.15e+04 1.50e+03 2.15e+04 4.51e-07 752. 1.50e+03 752. -7.46e-07
+DEAL::1.19e-25 5.11e-10 -3.99e-10 1.60e-25 2.70e-10 -5.01e-10 -7.36e-09 -1.38e-09 3.93e-10
+DEAL::3.53e-10 -1.06e-27 -4.91e-10 1.95e-09 -8.28e-27 -1.39e-09 2.30e-09 -6.30e-09 -4.16e-11
+DEAL::-3.38e-07 2.15e+04 1.50e+03 2.15e+04 -1.15e-07 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03
+DEAL::-4.75e-25 5.11e-10 -3.99e-10 -1.58e-09 2.70e-10 -5.01e-10 -4.20e-09 -4.53e-09 3.93e-10
+DEAL::1.65e-09 -5.40e-26 2.26e-09 2.68e-09 -1.09e-25 7.47e-11 8.96e-09 -1.47e-08 1.34e-09
+DEAL::-3.07e-07 2.15e+04 -8.16e+03 2.15e+04 5.81e-08 752. -8.16e+03 752. 1.50e+03
+DEAL::-3.38e-26 -6.96e-10 -6.96e-10 1.07e-25 1.11e-09 3.74e-09 7.55e-25 1.85e-08 1.54e-08
+DEAL::3.53e-10 3.68e-09 6.08e-09 1.95e-09 -4.95e-26 -1.39e-09 2.30e-09 -3.68e-09 1.05e-08
+DEAL::2.44e-06 2.15e+04 -8.16e+03 2.15e+04 2.41e-06 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04
+DEAL::5.13e-25 -6.96e-10 -6.96e-10 7.88e-10 6.89e-09 3.74e-09 -1.05e-09 1.54e-08 1.54e-08
+DEAL::6.90e-09 3.94e-09 3.84e-09 2.68e-09 -7.95e-25 7.47e-11 2.24e-08 1.29e-08 1.18e-08
+DEAL::component=4
+DEAL::2.73e-25 -7.57e-10 -7.57e-10 -1.14e-25 1.11e-09 -1.51e-09 -3.15e-09 7.90e-09 -5.76e-09
+DEAL::-2.63e-10 -2.10e-09 -1.36e-09 -1.89e-09 -1.15e-25 -5.85e-10 -1.67e-09 -2.63e-09 -6.19e-10
+DEAL::-3.72e-10 1.11e-09 -1.31e-09 -5.19e-09 -3.72e-10 1.22e-25 -1.92e-09 -1.48e-09 5.54e-25
+DEAL::7.87e-25 -7.57e-10 -7.57e-10 -2.63e-09 -2.01e-10 -1.51e-09 -1.05e-08 -1.56e-09 -5.76e-09
+DEAL::-1.91e-09 3.73e-25 -5.07e-09 -2.26e-09 7.73e-26 -2.24e-10 -9.67e-09 4.74e-25 5.40e-10
+DEAL::-7.71e-10 -5.71e-09 -1.31e-09 -1.12e-09 -8.24e-11 2.98e-26 -6.31e-09 -1.56e-09 -2.63e-25
+DEAL::-2.43e-25 2.53e-10 -1.42e-10 1.31e-09 -3.74e-09 -2.79e-09 1.05e-08 -2.31e-08 -9.97e-09
+DEAL::1.05e-09 -5.25e-10 -2.67e-09 -1.89e-09 -1.42e-25 -5.85e-10 6.21e-09 -1.31e-08 -1.11e-08
+DEAL::2.54e-09 -4.87e-09 -2.63e-09 2.45e-09 -5.70e-09 1.47e-08 1.27e-09 -6.20e-09 -1.15e-25
+DEAL::1.66e-25 2.53e-10 -1.42e-10 -8.14e-09 -3.74e-09 -6.99e-09 -5.25e-09 -1.33e-08 -2.65e-08
+DEAL::-4.28e-09 -3.94e-09 -6.39e-09 -2.26e-09 1.83e-25 -2.24e-10 -8.62e-09 -1.05e-08 -2.39e-08
+DEAL::-6.14e-09 4.26e-10 -2.63e-09 -8.87e-10 -8.87e-10 1.58e-08 -1.09e-09 -1.09e-09 -1.64e-24
+DEAL::1.19e-25 5.11e-10 -3.99e-10 1.60e-25 2.70e-10 -5.01e-10 -7.36e-09 -1.38e-09 3.93e-10
+DEAL::3.53e-10 -1.06e-27 -4.91e-10 1.95e-09 -8.28e-27 -1.39e-09 2.30e-09 -6.30e-09 -4.16e-11
+DEAL::-3.72e-10 -2.00e-10 4.99e-09 -4.63e-10 -3.72e-10 2.75e-26 -1.92e-09 -1.48e-09 7.31e-26
+DEAL::-4.75e-25 5.11e-10 -3.99e-10 -1.58e-09 2.70e-10 -5.01e-10 -4.20e-09 -4.53e-09 3.93e-10
+DEAL::1.65e-09 -5.40e-26 2.26e-09 2.68e-09 -1.09e-25 7.47e-11 8.96e-09 -1.47e-08 1.34e-09
+DEAL::-7.71e-10 -5.71e-09 -8.28e-26 -2.18e-09 -8.24e-11 3.31e-26 -6.31e-09 -1.56e-09 6.47e-26
+DEAL::-3.38e-26 -6.96e-10 -6.96e-10 1.07e-25 1.11e-09 3.74e-09 7.55e-25 1.85e-08 1.54e-08
+DEAL::3.53e-10 3.68e-09 6.08e-09 1.95e-09 -4.95e-26 -1.39e-09 2.30e-09 -3.68e-09 1.05e-08
+DEAL::-8.24e-11 5.12e-09 3.94e-09 -1.73e-10 -4.45e-10 5.25e-09 1.27e-09 -6.20e-09 1.73e-25
+DEAL::5.13e-25 -6.96e-10 -6.96e-10 7.88e-10 6.89e-09 3.74e-09 -1.05e-09 1.54e-08 1.54e-08
+DEAL::6.90e-09 3.94e-09 3.84e-09 2.68e-09 -7.95e-25 7.47e-11 2.24e-08 1.29e-08 1.18e-08
+DEAL::8.57e-09 3.84e-09 3.94e-09 5.42e-09 1.63e-10 2.63e-10 -1.09e-09 -1.09e-09 1.83e-24

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.