]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
New tests
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Sun, 19 Oct 2003 22:32:36 +0000 (22:32 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Sun, 19 Oct 2003 22:32:36 +0000 (22:32 +0000)
git-svn-id: https://svn.dealii.org/trunk@8114 0785d39b-7218-0410-832d-ea1e28bc413d

47 files changed:
tests/bits/Makefile
tests/bits/mapping_cartesian_1.cc [new file with mode: 0644]
tests/bits/normals_1.cc [new file with mode: 0644]
tests/bits/normals_2.cc [new file with mode: 0644]
tests/bits/normals_3.cc [new file with mode: 0644]
tests/bits/normals_4.cc [new file with mode: 0644]
tests/bits/q_point_sum_1.cc [new file with mode: 0644]
tests/bits/q_point_sum_2.cc [new file with mode: 0644]
tests/bits/q_point_sum_3.cc [new file with mode: 0644]
tests/bits/q_point_sum_4.cc [new file with mode: 0644]
tests/bits/volume_1.cc [new file with mode: 0644]
tests/bits/volume_2.cc [new file with mode: 0644]
tests/bits/volume_3.cc [new file with mode: 0644]
tests/bits/volume_4.cc [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/mesh_3d_16.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_1.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_2.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_3.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_4.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_1.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_3.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_4.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_1.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_3.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_4.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/mesh_3d_16.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_1.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_2.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_3.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_4.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_1.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_3.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_4.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_1.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_3.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_4.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/mesh_3d_16.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_1.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_2.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_3.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_4.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_1.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_3.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_4.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_1.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_3.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_4.output [new file with mode: 0644]

index e423ca1505d2e182ffe5be3962483a69ec789034..43a0f890558b0d2bb8e1277f84a50a7c856ed874 100644 (file)
@@ -118,7 +118,21 @@ mesh_3d_12.exe          : mesh_3d_12.g.$(OBJEXT)           $(libraries)
 mesh_3d_13.exe          : mesh_3d_13.g.$(OBJEXT)           $(libraries)
 mesh_3d_14.exe          : mesh_3d_14.g.$(OBJEXT)           $(libraries)
 mesh_3d_15.exe          : mesh_3d_15.g.$(OBJEXT)           $(libraries)
+mesh_3d_16.exe          : mesh_3d_16.g.$(OBJEXT)           $(libraries)
+normals_1.exe           : normals_1.g.$(OBJEXT)            $(libraries)
+normals_2.exe           : normals_2.g.$(OBJEXT)            $(libraries)
+normals_3.exe           : normals_3.g.$(OBJEXT)            $(libraries)
+normals_4.exe           : normals_4.g.$(OBJEXT)            $(libraries)
+mapping_cartesian_1.exe : mapping_cartesian_1.g.$(OBJEXT)  $(libraries)
 q_points.exe            : q_points.g.$(OBJEXT)             $(libraries)
+q_point_sum_1.exe       : q_point_sum_1.g.$(OBJEXT)        $(libraries)
+q_point_sum_2.exe       : q_point_sum_2.g.$(OBJEXT)        $(libraries)
+q_point_sum_3.exe       : q_point_sum_3.g.$(OBJEXT)        $(libraries)
+q_point_sum_4.exe       : q_point_sum_4.g.$(OBJEXT)        $(libraries)
+volume_1.exe            : volume_1.g.$(OBJEXT)             $(libraries)
+volume_2.exe            : volume_2.g.$(OBJEXT)             $(libraries)
+volume_3.exe            : volume_3.g.$(OBJEXT)             $(libraries)
+volume_4.exe            : volume_4.g.$(OBJEXT)             $(libraries)
 
 
 tests = anna_1 anna_2 anna_3 anna_4 anna_5 anna_6 \
@@ -151,6 +165,11 @@ tests = anna_1 anna_2 anna_3 anna_4 anna_5 anna_6 \
        mesh_3d_1 mesh_3d_2 mesh_3d_3 mesh_3d_4 mesh_3d_5 \
        mesh_3d_6 mesh_3d_7 mesh_3d_8 mesh_3d_9 mesh_3d_10 \
        mesh_3d_11 mesh_3d_12 mesh_3d_13 mesh_3d_14 mesh_3d_15 \
+       mesh_3d_16 \
+       normals_1 normals_2 normals_3 normals_4 \
+       q_point_sum_1 q_point_sum_2 q_point_sum_3 q_point_sum_4 \
+       volume_1 volume_2 volume_3 volume_4 \
+       mapping_cartesian_1 \
        q_points
 
 ############################################################
diff --git a/tests/bits/mapping_cartesian_1.cc b/tests/bits/mapping_cartesian_1.cc
new file mode 100644 (file)
index 0000000..85e1b9f
--- /dev/null
@@ -0,0 +1,73 @@
+//----------------------------  mapping_cartesian_1.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  mapping_cartesian_1.cc  ---------------------------
+
+
+// there used to be a bug in MappingCartesian, where we used the size
+// of the quadrature points array to initialize something else. this
+// yielded a wrong result and after factoring out some code an abort
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_cartesian.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  MappingCartesian<dim> mapping;
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_normal_vectors);
+  fe_face_values.reinit (dof_handler.begin_active(), 0);
+
+  deallog << "OK" << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("mapping_cartesian_1.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }
+
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }  
+}
+
+  
+  
diff --git a/tests/bits/normals_1.cc b/tests/bits/normals_1.cc
new file mode 100644 (file)
index 0000000..bbacfb6
--- /dev/null
@@ -0,0 +1,122 @@
+//----------------------------  normals_1.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  normals_1.cc  ---------------------------
+
+
+// integrating the normals over the surface of any cell (distorted or
+// not) should yield a zero vector. (To prove this, use the divergence
+// theorem.) check that this is indeed so for the hypercube and
+// hyperball in 2d and 3d
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (fe, q_face,
+                                       update_normal_vectors | update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (fe, q_face,
+                                          update_normal_vectors | update_JxW_values);
+
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+      Tensor<1,dim> n1, n2;
+
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        {
+          fe_face_values.reinit (cell, f);
+          for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+            n1 += fe_face_values.normal_vector(q) *
+                  fe_face_values.JxW(q);
+        }
+      Assert (n1*n1 < 1e-24, ExcInternalError());
+      deallog << cell << " face integration is ok: "
+              << std::sqrt (n1*n1)
+              << std::endl;
+
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+          {
+            fe_subface_values.reinit (cell, f, sf);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              n2 += fe_subface_values.normal_vector(q) *
+                    fe_subface_values.JxW(q);
+          }
+      Assert (n2*n2 < 1e-24, ExcInternalError());
+      deallog << cell << " subface integration is ok: "
+              << std::sqrt (n2*n2)
+              << std::endl;
+    }
+}
+
+
+int main () 
+{
+  std::ofstream logfile("normals_1.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }
+
+  
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    check (coarse_grid);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    check (coarse_grid);
+  }
+  
+}
+
+  
+  
diff --git a/tests/bits/normals_2.cc b/tests/bits/normals_2.cc
new file mode 100644 (file)
index 0000000..0aaf3fe
--- /dev/null
@@ -0,0 +1,126 @@
+//----------------------------  normals_2.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  normals_2.cc  ---------------------------
+
+
+// integrating the normals over the surface of any cell (distorted or
+// not) should yield a zero vector. (To prove this, use the divergence
+// theorem.) check that this is indeed so for the hyperball in 2d and 3d
+//
+// in contrast to normals_1, do this with a Q1, Q2, and Q4 mapping
+// associated with the geometry
+//
+// this used to fail in 3d, since there were assumptions on face
+// orientations present that had to be weeded out
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_q.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria,
+            const unsigned int        order)
+{
+  MappingQ<dim> mapping(order);
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_normal_vectors | update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_normal_vectors | update_JxW_values);
+
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+      Tensor<1,dim> n1, n2;
+
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        {
+          fe_face_values.reinit (cell, f);
+          for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+            n1 += fe_face_values.normal_vector(q) *
+                  fe_face_values.JxW(q);
+        }
+      Assert (n1*n1 < 1e-24, ExcInternalError());
+      deallog << cell << " face integration is ok: "
+              << std::sqrt (n1*n1)
+              << std::endl;
+
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+          {
+            fe_subface_values.reinit (cell, f, sf);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              n2 += fe_subface_values.normal_vector(q) *
+                    fe_subface_values.JxW(q);
+          }
+      Assert (n2*n2 < 1e-24, ExcInternalError());
+      deallog << cell << " subface integration is ok: "
+              << std::sqrt (n2*n2)
+              << std::endl;
+    }
+}
+
+
+int main () 
+{
+  std::ofstream logfile("normals_2.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<2> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid, 1);
+    check (coarse_grid, 2);
+    check (coarse_grid, 4);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<3> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid, 1);
+    check (coarse_grid, 2);
+    check (coarse_grid, 4);
+  }
+  
+}
+
+  
+  
diff --git a/tests/bits/normals_3.cc b/tests/bits/normals_3.cc
new file mode 100644 (file)
index 0000000..f5ca9fc
--- /dev/null
@@ -0,0 +1,119 @@
+//----------------------------  normals_3.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  normals_3.cc  ---------------------------
+
+
+// integrating the normals over the surface of any cell (distorted or
+// not) should yield a zero vector. (To prove this, use the divergence
+// theorem.) check that this is indeed so for the hyperball in 2d and 3d
+//
+// in contrast to normals_1, do this with a C1 mapping
+// associated with the geometry
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_c1.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  MappingC1<dim> mapping;
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_normal_vectors | update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_normal_vectors | update_JxW_values);
+
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+      Tensor<1,dim> n1, n2;
+
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        {
+          fe_face_values.reinit (cell, f);
+          for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+            n1 += fe_face_values.normal_vector(q) *
+                  fe_face_values.JxW(q);
+        }
+      Assert (n1*n1 < 1e-24, ExcInternalError());
+      deallog << cell << " face integration is ok: "
+              << std::sqrt (n1*n1)
+              << std::endl;
+
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+          {
+            fe_subface_values.reinit (cell, f, sf);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              n2 += fe_subface_values.normal_vector(q) *
+                    fe_subface_values.JxW(q);
+          }
+      Assert (n2*n2 < 1e-24, ExcInternalError());
+      deallog << cell << " subface integration is ok: "
+              << std::sqrt (n2*n2)
+              << std::endl;
+    }
+}
+
+
+int main () 
+{
+  std::ofstream logfile("normals_3.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<2> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid);
+  }
+
+                                   // the C1 mapping is not fully
+                                   // implemented in 3d, unfortunately
+//   {  
+//     Triangulation<3> coarse_grid;
+//     GridGenerator::hyper_ball (coarse_grid);
+//     static const HyperBallBoundary<3> boundary;
+//     coarse_grid.set_boundary (0, boundary);
+//     check (coarse_grid);
+//   }  
+}
+
+  
+  
diff --git a/tests/bits/normals_4.cc b/tests/bits/normals_4.cc
new file mode 100644 (file)
index 0000000..39e4032
--- /dev/null
@@ -0,0 +1,113 @@
+//----------------------------  normals_4.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  normals_4.cc  ---------------------------
+
+
+// integrating the normals over the surface of any cell (distorted or
+// not) should yield a zero vector. (To prove this, use the divergence
+// theorem.) check that this is indeed so for the hypercube in 2d and 3d
+//
+// in contrast to normals_1, do this with a cartesian mapping
+// associated with the geometry
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_cartesian.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  MappingCartesian<dim> mapping;
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_normal_vectors | update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_normal_vectors | update_JxW_values);
+
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+      Tensor<1,dim> n1, n2;
+
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        {
+          fe_face_values.reinit (cell, f);
+          for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+            n1 += fe_face_values.normal_vector(q) *
+                  fe_face_values.JxW(q);
+        }
+      Assert (n1*n1 < 1e-24, ExcInternalError());
+      deallog << cell << " face integration is ok: "
+              << std::sqrt (n1*n1)
+              << std::endl;
+
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+          {
+            fe_subface_values.reinit (cell, f, sf);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              n2 += fe_subface_values.normal_vector(q) *
+                    fe_subface_values.JxW(q);
+          }
+      Assert (n2*n2 < 1e-24, ExcInternalError());
+      deallog << cell << " subface integration is ok: "
+              << std::sqrt (n2*n2)
+              << std::endl;
+    }
+}
+
+
+int main () 
+{
+  std::ofstream logfile("normals_4.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }
+
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }  
+}
+
+  
+  
diff --git a/tests/bits/q_point_sum_1.cc b/tests/bits/q_point_sum_1.cc
new file mode 100644 (file)
index 0000000..40877ca
--- /dev/null
@@ -0,0 +1,122 @@
+//----------------------------  q_point_sum_1.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  q_point_sum_1.cc  ---------------------------
+
+
+// integrating \vec x over the surface of the [-1,1] hypercube and
+// hyperball in 2d and 3d should yield zero
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (fe, q_face,
+                                       update_q_points | update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (fe, q_face,
+                                          update_q_points | update_JxW_values);
+
+  Point<dim> n1, n2;
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          {
+            fe_face_values.reinit (cell, f);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              n1 += fe_face_values.quadrature_point(q) *
+                    fe_face_values.JxW(q);
+          }
+      
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+            {
+              fe_subface_values.reinit (cell, f, sf);
+              for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+                n2 += fe_subface_values.quadrature_point(q) *
+                      fe_subface_values.JxW(q);
+            }
+    }
+  
+  Assert (n1*n1 < 1e-24, ExcInternalError());
+  deallog << " face integration is ok: "
+          << std::sqrt (n1*n1)
+          << std::endl;
+  Assert (n2*n2 < 1e-24, ExcInternalError());
+  deallog << " subface integration is ok: "
+          << std::sqrt (n2*n2)
+          << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("q_point_sum_1.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid, -1, 1);
+    check (coarse_grid);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid, -1, 1);
+    check (coarse_grid);
+  }
+
+  
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    check (coarse_grid);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    check (coarse_grid);
+  }
+  
+}
+
+  
+  
diff --git a/tests/bits/q_point_sum_2.cc b/tests/bits/q_point_sum_2.cc
new file mode 100644 (file)
index 0000000..cb7c365
--- /dev/null
@@ -0,0 +1,142 @@
+//----------------------------  q_point_sum_2.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  q_point_sum_2.cc  ---------------------------
+
+
+// integrating \vec x over the surface of the [-1,1] hypercube and
+// hyperball in 2d and 3d should yield zero
+//
+// same as q_point_sum_1, but with different mappings
+
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/mapping_q.h>
+#include <fe/fe_values.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria,
+            const unsigned int        order)
+{
+  MappingQ<dim> mapping(order);
+
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_q_points | update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_q_points | update_JxW_values);
+
+  Point<dim> n1, n2;
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          {
+            fe_face_values.reinit (cell, f);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              n1 += fe_face_values.quadrature_point(q) *
+                    fe_face_values.JxW(q);
+          }
+      
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+            {
+              fe_subface_values.reinit (cell, f, sf);
+              for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+                n2 += fe_subface_values.quadrature_point(q) *
+                      fe_subface_values.JxW(q);
+            }
+    }
+  
+  Assert (n1*n1 < 1e-24, ExcInternalError());
+  deallog << " face integration is ok: "
+          << std::sqrt (n1*n1)
+          << std::endl;
+  Assert (n2*n2 < 1e-24, ExcInternalError());
+  deallog << " subface integration is ok: "
+          << std::sqrt (n2*n2)
+          << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("q_point_sum_2.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid, -1, 1);
+    check (coarse_grid, 1);
+    check (coarse_grid, 2);
+    check (coarse_grid, 4);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid, -1, 1);
+    check (coarse_grid, 1);
+    check (coarse_grid, 2);
+    check (coarse_grid, 4);
+  }
+
+  
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<2> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid, 1);
+    check (coarse_grid, 2);
+    check (coarse_grid, 4);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<3> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid, 1);
+    check (coarse_grid, 2);
+    check (coarse_grid, 4);
+  }
+  
+}
+
+  
+  
diff --git a/tests/bits/q_point_sum_3.cc b/tests/bits/q_point_sum_3.cc
new file mode 100644 (file)
index 0000000..7bdde84
--- /dev/null
@@ -0,0 +1,137 @@
+//----------------------------  q_point_sum_3.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  q_point_sum_3.cc  ---------------------------
+
+
+// integrating \vec x over the surface of the [-1,1] hypercube and
+// hyperball in 2d and 3d should yield zero
+//
+// same as q_point_sum_1, but with a C1 mapping
+
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/mapping_c1.h>
+#include <fe/fe_values.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  MappingC1<dim> mapping;
+
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_q_points | update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_q_points | update_JxW_values);
+
+  Point<dim> n1, n2;
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          {
+            fe_face_values.reinit (cell, f);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              n1 += fe_face_values.quadrature_point(q) *
+                    fe_face_values.JxW(q);
+          }
+      
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+            {
+              fe_subface_values.reinit (cell, f, sf);
+              for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+                n2 += fe_subface_values.quadrature_point(q) *
+                      fe_subface_values.JxW(q);
+            }
+    }
+  
+  Assert (n1*n1 < 1e-24, ExcInternalError());
+  deallog << " face integration is ok: "
+          << std::sqrt (n1*n1)
+          << std::endl;
+  Assert (n2*n2 < 1e-24, ExcInternalError());
+  deallog << " subface integration is ok: "
+          << std::sqrt (n2*n2)
+          << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("q_point_sum_3.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid, -1, 1);
+    check (coarse_grid);
+  }
+  
+                                   // the C1 mapping is not fully
+                                   // implemented in 3d, unfortunately  
+//   {  
+//     Triangulation<3> coarse_grid;
+//     GridGenerator::hyper_cube (coarse_grid, -1, 1);
+//     check (coarse_grid);
+//   }
+
+  
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<2> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid);
+  }
+
+                                   // the C1 mapping is not fully
+                                   // implemented in 3d, unfortunately  
+//   {  
+//     Triangulation<3> coarse_grid;
+//     GridGenerator::hyper_ball (coarse_grid);
+//     static const HyperBallBoundary<3> boundary;
+//     coarse_grid.set_boundary (0, boundary);
+//     check (coarse_grid);
+//   }
+  
+}
+
+  
+  
diff --git a/tests/bits/q_point_sum_4.cc b/tests/bits/q_point_sum_4.cc
new file mode 100644 (file)
index 0000000..906e45b
--- /dev/null
@@ -0,0 +1,115 @@
+//----------------------------  q_point_sum_4.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  q_point_sum_4.cc  ---------------------------
+
+
+// integrating \vec x over the surface of the [-1,1] hypercube and
+// hyperball in 2d and 3d should yield zero
+//
+// same as q_point_sum_1, but with a Cartesian mapping
+
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/mapping_cartesian.h>
+#include <fe/fe_values.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  MappingCartesian<dim> mapping;
+
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_q_points | update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_q_points | update_JxW_values);
+
+  Point<dim> n1, n2;
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          {
+            fe_face_values.reinit (cell, f);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              n1 += fe_face_values.quadrature_point(q) *
+                    fe_face_values.JxW(q);
+          }
+      
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+            {
+              fe_subface_values.reinit (cell, f, sf);
+              for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+                n2 += fe_subface_values.quadrature_point(q) *
+                      fe_subface_values.JxW(q);
+            }
+    }
+  
+  Assert (n1*n1 < 1e-24, ExcInternalError());
+  deallog << " face integration is ok: "
+          << std::sqrt (n1*n1)
+          << std::endl;
+  Assert (n2*n2 < 1e-24, ExcInternalError());
+  deallog << " subface integration is ok: "
+          << std::sqrt (n2*n2)
+          << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("q_point_sum_4.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid, -1, 1);
+    check (coarse_grid);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid, -1, 1);
+    check (coarse_grid);
+  }
+}
+
+  
+  
diff --git a/tests/bits/volume_1.cc b/tests/bits/volume_1.cc
new file mode 100644 (file)
index 0000000..8ea88fa
--- /dev/null
@@ -0,0 +1,129 @@
+//----------------------------  volume_1.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  volume_1.cc  ---------------------------
+
+
+// like a union of the normals_* and q_point_sum_* tests: integrating
+// \vec x times the normal over the surface of any body should yield
+// the volume of this body times the space dimension
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (fe, q_face,
+                                       update_normal_vectors |
+                                       update_q_points |
+                                       update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (fe, q_face,
+                                          update_normal_vectors |
+                                          update_q_points |
+                                          update_JxW_values);
+
+  double v1=0, v2=0;
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          {
+            fe_face_values.reinit (cell, f);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              v1 += (fe_face_values.normal_vector(q) *
+                     fe_face_values.quadrature_point(q)) *
+                    fe_face_values.JxW(q);
+          }
+
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+            {
+              fe_subface_values.reinit (cell, f, sf);
+              for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+                v2 += (fe_subface_values.normal_vector(q) *
+                       fe_subface_values.quadrature_point(q)) *
+                      fe_subface_values.JxW(q);
+            }
+    }
+
+  Assert (std::fabs(v1-v2) < 1e-12, ExcInternalError());
+  deallog << " face integration: "
+          << v1 / dim
+          << std::endl;
+  deallog << " subface integration: "
+          << v2 / dim
+          << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("volume_1.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }
+
+  
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    check (coarse_grid);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    check (coarse_grid);
+  }
+  
+}
+
+  
+  
diff --git a/tests/bits/volume_2.cc b/tests/bits/volume_2.cc
new file mode 100644 (file)
index 0000000..59eff53
--- /dev/null
@@ -0,0 +1,134 @@
+//----------------------------  volume_2.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  volume_2.cc  ---------------------------
+
+
+// like a union of the normals_* and q_point_sum_* tests: integrating
+// \vec x times the normal over the surface of any body should yield
+// the volume of this body times the space dimension
+//
+// in contrast to volume_1, do this with a Q1, Q2, and Q4 mapping
+// associated with the geometry
+//
+// this used to fail in 3d, since there were assumptions on face
+// orientations present that had to be weeded out
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_q.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria,
+            const unsigned int        order)
+{
+  MappingQ<dim> mapping(order);
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_normal_vectors |
+                                       update_q_points |
+                                       update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_normal_vectors |
+                                          update_q_points |
+                                          update_JxW_values);
+
+  double v1=0, v2=0;
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          {
+            fe_face_values.reinit (cell, f);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              v1 += (fe_face_values.normal_vector(q) *
+                     fe_face_values.quadrature_point(q)) *
+                    fe_face_values.JxW(q);
+          }
+
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+            {
+              fe_subface_values.reinit (cell, f, sf);
+              for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+                v2 += (fe_subface_values.normal_vector(q) *
+                       fe_subface_values.quadrature_point(q)) *
+                      fe_subface_values.JxW(q);
+            }
+    }
+
+  Assert (std::fabs(v1-v2)/v1 < 1e-4, ExcInternalError());
+  deallog << " face integration: "
+          << v1 / dim
+          << std::endl;
+  deallog << " subface integration: "
+          << v2 / dim
+          << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("volume_2.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<2> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid, 1);
+    check (coarse_grid, 2);
+    check (coarse_grid, 4);
+  }
+  
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<3> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid, 1);
+    check (coarse_grid, 2);
+    check (coarse_grid, 4);
+  }
+  
+}
+
+  
+  
diff --git a/tests/bits/volume_3.cc b/tests/bits/volume_3.cc
new file mode 100644 (file)
index 0000000..55ff729
--- /dev/null
@@ -0,0 +1,127 @@
+//----------------------------  volume_3.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  volume_3.cc  ---------------------------
+
+
+// like a union of the normals_* and q_point_sum_* tests: integrating
+// \vec x times the normal over the surface of any body should yield
+// the volume of this body times the space dimension
+//
+// in contrast to volume_1, do this with a C1 mapping
+// associated with the geometry
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_c1.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  MappingC1<dim> mapping;
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_normal_vectors |
+                                       update_q_points |
+                                       update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_normal_vectors |
+                                          update_q_points |
+                                          update_JxW_values);
+
+  double v1=0, v2=0;
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          {
+            fe_face_values.reinit (cell, f);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              v1 += (fe_face_values.normal_vector(q) *
+                     fe_face_values.quadrature_point(q)) *
+                    fe_face_values.JxW(q);
+          }
+
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+            {
+              fe_subface_values.reinit (cell, f, sf);
+              for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+                v2 += (fe_subface_values.normal_vector(q) *
+                       fe_subface_values.quadrature_point(q)) *
+                      fe_subface_values.JxW(q);
+            }
+    }
+
+  Assert (std::fabs(v1-v2)/v1 < 1e-4, ExcInternalError());
+  deallog << " face integration: "
+          << v1 / dim
+          << std::endl;
+  deallog << " subface integration: "
+          << v2 / dim
+          << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("volume_3.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_ball (coarse_grid);
+    static const HyperBallBoundary<2> boundary;
+    coarse_grid.set_boundary (0, boundary);
+    check (coarse_grid);
+  }
+
+                                   // the C1 mapping is not fully
+                                   // implemented in 3d, unfortunately
+//   {  
+//     Triangulation<3> coarse_grid;
+//     GridGenerator::hyper_ball (coarse_grid);
+//     static const HyperBallBoundary<3> boundary;
+//     coarse_grid.set_boundary (0, boundary);
+//     check (coarse_grid);
+//   }  
+}
+
+  
+  
diff --git a/tests/bits/volume_4.cc b/tests/bits/volume_4.cc
new file mode 100644 (file)
index 0000000..3dc77d7
--- /dev/null
@@ -0,0 +1,121 @@
+//----------------------------  volume_4.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 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.
+//
+//----------------------------  volume_4.cc  ---------------------------
+
+
+// like a union of the normals_* and q_point_sum_* tests: integrating
+// \vec x times the normal over the surface of any body should yield
+// the volume of this body times the space dimension
+//
+// in contrast to volume_1, do this with a cartesian mapping
+// associated with the geometry
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <grid/tria.h>
+#include <grid/tria_boundary_lib.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_generator.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <fe/mapping_cartesian.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void check (const Triangulation<dim> &tria)
+{
+  MappingCartesian<dim> mapping;
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dof_handler (tria);
+  dof_handler.distribute_dofs (fe);
+
+  QGauss3<dim-1> q_face;
+  
+  FEFaceValues<dim>    fe_face_values (mapping, fe, q_face,
+                                       update_normal_vectors |
+                                       update_q_points |
+                                       update_JxW_values);
+  FESubfaceValues<dim> fe_subface_values (mapping, fe, q_face,
+                                          update_normal_vectors |
+                                          update_q_points |
+                                          update_JxW_values);
+
+  double v1=0, v2=0;
+  for (typename DoFHandler<dim>::active_cell_iterator
+         cell = dof_handler.begin_active();
+       cell!=dof_handler.end(); ++cell)
+    {
+
+                                       // first integrate over faces
+                                       // and make sure that the
+                                       // result of the integration is
+                                       // close to zero
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          {
+            fe_face_values.reinit (cell, f);
+            for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+              v1 += (fe_face_values.normal_vector(q) *
+                     fe_face_values.quadrature_point(q)) *
+                    fe_face_values.JxW(q);
+          }
+
+                                       // now same for subface
+                                       // integration
+      for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+        if (cell->at_boundary(f))
+          for (unsigned int sf=0; sf<GeometryInfo<dim>::subfaces_per_face; ++sf)
+            {
+              fe_subface_values.reinit (cell, f, sf);
+              for (unsigned int q=0; q<q_face.n_quadrature_points; ++q)
+                v2 += (fe_subface_values.normal_vector(q) *
+                       fe_subface_values.quadrature_point(q)) *
+                      fe_subface_values.JxW(q);
+            }
+    }
+
+  Assert (std::fabs(v1-v2)/v1 < 1e-14, ExcInternalError());
+  deallog << " face integration: "
+          << v1 / dim
+          << std::endl;
+  deallog << " subface integration: "
+          << v2 / dim
+          << std::endl;
+}
+
+
+int main () 
+{
+  std::ofstream logfile("volume_4.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  {  
+    Triangulation<2> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }
+
+  {  
+    Triangulation<3> coarse_grid;
+    GridGenerator::hyper_cube (coarse_grid);
+    check (coarse_grid);
+  }  
+}
+
+  
+  
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/mesh_3d_16.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/mesh_3d_16.output
new file mode 100644 (file)
index 0000000..b9aa35e
--- /dev/null
@@ -0,0 +1,25 @@
+
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.1 face integration is ok: 0.00000
+DEAL::0.1 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.1 face integration is ok: 0.00000
+DEAL::0.1 subface integration is ok: 0.00000
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.18061e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64981e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65022e-15
+DEAL::0.4 face integration is ok: 4.24584e-16
+DEAL::0.4 subface integration is ok: 2.32999e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64981e-15
+DEAL::0.6 face integration is ok: 4.21730e-16
+DEAL::0.6 subface integration is ok: 2.35268e-16
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_1.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_1.output
new file mode 100644 (file)
index 0000000..44ad408
--- /dev/null
@@ -0,0 +1,29 @@
+
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 1.53285e-16
+DEAL::0.0 subface integration is ok: 1.90536e-16
+DEAL::0.1 face integration is ok: 2.77902e-16
+DEAL::0.1 subface integration is ok: 3.62487e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 1.53285e-16
+DEAL::0.3 subface integration is ok: 1.90536e-16
+DEAL::0.4 face integration is ok: 2.77902e-16
+DEAL::0.4 subface integration is ok: 3.62487e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.18061e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64981e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65022e-15
+DEAL::0.4 face integration is ok: 4.24584e-16
+DEAL::0.4 subface integration is ok: 2.32999e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64981e-15
+DEAL::0.6 face integration is ok: 4.21730e-16
+DEAL::0.6 subface integration is ok: 2.35268e-16
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_2.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_2.output
new file mode 100644 (file)
index 0000000..a4a2e22
--- /dev/null
@@ -0,0 +1,51 @@
+JobId Sat Oct 18 22:36:39 2003
+DEAL::0.0 face integration is ok: 1.53285e-16
+DEAL::0.0 subface integration is ok: 1.90536e-16
+DEAL::0.1 face integration is ok: 2.77902e-16
+DEAL::0.1 subface integration is ok: 3.62487e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 1.53285e-16
+DEAL::0.3 subface integration is ok: 1.90536e-16
+DEAL::0.4 face integration is ok: 2.77902e-16
+DEAL::0.4 subface integration is ok: 3.62487e-16
+DEAL::0.0 face integration is ok: 3.33067e-16
+DEAL::0.0 subface integration is ok: 2.08629e-16
+DEAL::0.1 face integration is ok: 1.11022e-16
+DEAL::0.1 subface integration is ok: 3.70306e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 3.33067e-16
+DEAL::0.3 subface integration is ok: 2.08629e-16
+DEAL::0.4 face integration is ok: 1.11022e-16
+DEAL::0.4 subface integration is ok: 3.77517e-16
+DEAL::0.0 face integration is ok: 2.28651e-15
+DEAL::0.0 subface integration is ok: 2.29385e-15
+DEAL::0.1 face integration is ok: 2.39664e-15
+DEAL::0.1 subface integration is ok: 2.40498e-15
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 2.28651e-15
+DEAL::0.3 subface integration is ok: 2.09516e-15
+DEAL::0.4 face integration is ok: 2.24203e-15
+DEAL::0.4 subface integration is ok: 2.23859e-15
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.17844e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64983e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65023e-15
+DEAL::0.4 face integration is ok: 4.18073e-16
+DEAL::0.4 subface integration is ok: 2.45242e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64980e-15
+DEAL::0.6 face integration is ok: 4.17117e-16
+DEAL::0.6 subface integration is ok: 2.45521e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 8.10440e-17
+DEAL::0.1 subface integration is ok: 2.62062e-16
+DEAL::0.2 face integration is ok: 9.63467e-16
+DEAL::0.2 subface integration is ok: 2.08624e-15
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_3.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_3.output
new file mode 100644 (file)
index 0000000..117cc9b
--- /dev/null
@@ -0,0 +1,13 @@
+JobId Sat Oct 18 22:43:43 2003
+DEAL::0.0 face integration is ok: 7.07631e-16
+DEAL::0.0 subface integration is ok: 3.19491e-16
+DEAL::0.1 face integration is ok: 7.21645e-16
+DEAL::0.1 subface integration is ok: 2.98937e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 7.07631e-16
+DEAL::0.3 subface integration is ok: 3.19491e-16
+DEAL::0.4 face integration is ok: 7.21645e-16
+DEAL::0.4 subface integration is ok: 2.98937e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_4.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/normals_4.output
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_1.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_1.output
new file mode 100644 (file)
index 0000000..a1276de
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:: face integration is ok: 0.00000
+DEAL:: subface integration is ok: 2.77556e-17
+DEAL:: face integration is ok: 8.88178e-16
+DEAL:: subface integration is ok: 1.13208e-15
+DEAL:: face integration is ok: 2.83052e-16
+DEAL:: subface integration is ok: 1.82534e-16
+DEAL:: face integration is ok: 8.63885e-17
+DEAL:: subface integration is ok: 2.05409e-16
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_3.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_3.output
new file mode 100644 (file)
index 0000000..c4d27b8
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration is ok: 3.51083e-16
+DEAL:: subface integration is ok: 5.11788e-16
+DEAL:: face integration is ok: 5.11788e-16
+DEAL:: subface integration is ok: 2.77556e-17
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_4.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/q_point_sum_4.output
new file mode 100644 (file)
index 0000000..13c520c
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration is ok: 0.00000
+DEAL:: subface integration is ok: 2.77556e-17
+DEAL:: face integration is ok: 8.88178e-16
+DEAL:: subface integration is ok: 1.13208e-15
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_1.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_1.output
new file mode 100644 (file)
index 0000000..5295a42
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 2.00000
+DEAL:: subface integration: 2.00000
+DEAL:: face integration: 1.53960
+DEAL:: subface integration: 1.53960
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_3.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_3.output
new file mode 100644 (file)
index 0000000..297c379
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL:: face integration: 3.33333
+DEAL:: subface integration: 3.33333
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_4.output b/tests/results/i686-pc-linux-gnu+gcc2.95/bits/volume_4.output
new file mode 100644 (file)
index 0000000..b342fdc
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/mesh_3d_16.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/mesh_3d_16.output
new file mode 100644 (file)
index 0000000..b9aa35e
--- /dev/null
@@ -0,0 +1,25 @@
+
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.1 face integration is ok: 0.00000
+DEAL::0.1 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.1 face integration is ok: 0.00000
+DEAL::0.1 subface integration is ok: 0.00000
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.18061e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64981e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65022e-15
+DEAL::0.4 face integration is ok: 4.24584e-16
+DEAL::0.4 subface integration is ok: 2.32999e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64981e-15
+DEAL::0.6 face integration is ok: 4.21730e-16
+DEAL::0.6 subface integration is ok: 2.35268e-16
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_1.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_1.output
new file mode 100644 (file)
index 0000000..44ad408
--- /dev/null
@@ -0,0 +1,29 @@
+
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 1.53285e-16
+DEAL::0.0 subface integration is ok: 1.90536e-16
+DEAL::0.1 face integration is ok: 2.77902e-16
+DEAL::0.1 subface integration is ok: 3.62487e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 1.53285e-16
+DEAL::0.3 subface integration is ok: 1.90536e-16
+DEAL::0.4 face integration is ok: 2.77902e-16
+DEAL::0.4 subface integration is ok: 3.62487e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.18061e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64981e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65022e-15
+DEAL::0.4 face integration is ok: 4.24584e-16
+DEAL::0.4 subface integration is ok: 2.32999e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64981e-15
+DEAL::0.6 face integration is ok: 4.21730e-16
+DEAL::0.6 subface integration is ok: 2.35268e-16
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_2.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_2.output
new file mode 100644 (file)
index 0000000..a4a2e22
--- /dev/null
@@ -0,0 +1,51 @@
+JobId Sat Oct 18 22:36:39 2003
+DEAL::0.0 face integration is ok: 1.53285e-16
+DEAL::0.0 subface integration is ok: 1.90536e-16
+DEAL::0.1 face integration is ok: 2.77902e-16
+DEAL::0.1 subface integration is ok: 3.62487e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 1.53285e-16
+DEAL::0.3 subface integration is ok: 1.90536e-16
+DEAL::0.4 face integration is ok: 2.77902e-16
+DEAL::0.4 subface integration is ok: 3.62487e-16
+DEAL::0.0 face integration is ok: 3.33067e-16
+DEAL::0.0 subface integration is ok: 2.08629e-16
+DEAL::0.1 face integration is ok: 1.11022e-16
+DEAL::0.1 subface integration is ok: 3.70306e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 3.33067e-16
+DEAL::0.3 subface integration is ok: 2.08629e-16
+DEAL::0.4 face integration is ok: 1.11022e-16
+DEAL::0.4 subface integration is ok: 3.77517e-16
+DEAL::0.0 face integration is ok: 2.28651e-15
+DEAL::0.0 subface integration is ok: 2.29385e-15
+DEAL::0.1 face integration is ok: 2.39664e-15
+DEAL::0.1 subface integration is ok: 2.40498e-15
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 2.28651e-15
+DEAL::0.3 subface integration is ok: 2.09516e-15
+DEAL::0.4 face integration is ok: 2.24203e-15
+DEAL::0.4 subface integration is ok: 2.23859e-15
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.17844e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64983e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65023e-15
+DEAL::0.4 face integration is ok: 4.18073e-16
+DEAL::0.4 subface integration is ok: 2.45242e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64980e-15
+DEAL::0.6 face integration is ok: 4.17117e-16
+DEAL::0.6 subface integration is ok: 2.45521e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 8.10440e-17
+DEAL::0.1 subface integration is ok: 2.62062e-16
+DEAL::0.2 face integration is ok: 9.63467e-16
+DEAL::0.2 subface integration is ok: 2.08624e-15
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_3.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_3.output
new file mode 100644 (file)
index 0000000..117cc9b
--- /dev/null
@@ -0,0 +1,13 @@
+JobId Sat Oct 18 22:43:43 2003
+DEAL::0.0 face integration is ok: 7.07631e-16
+DEAL::0.0 subface integration is ok: 3.19491e-16
+DEAL::0.1 face integration is ok: 7.21645e-16
+DEAL::0.1 subface integration is ok: 2.98937e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 7.07631e-16
+DEAL::0.3 subface integration is ok: 3.19491e-16
+DEAL::0.4 face integration is ok: 7.21645e-16
+DEAL::0.4 subface integration is ok: 2.98937e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_4.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/normals_4.output
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_1.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_1.output
new file mode 100644 (file)
index 0000000..a1276de
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:: face integration is ok: 0.00000
+DEAL:: subface integration is ok: 2.77556e-17
+DEAL:: face integration is ok: 8.88178e-16
+DEAL:: subface integration is ok: 1.13208e-15
+DEAL:: face integration is ok: 2.83052e-16
+DEAL:: subface integration is ok: 1.82534e-16
+DEAL:: face integration is ok: 8.63885e-17
+DEAL:: subface integration is ok: 2.05409e-16
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_3.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_3.output
new file mode 100644 (file)
index 0000000..c4d27b8
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration is ok: 3.51083e-16
+DEAL:: subface integration is ok: 5.11788e-16
+DEAL:: face integration is ok: 5.11788e-16
+DEAL:: subface integration is ok: 2.77556e-17
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_4.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/q_point_sum_4.output
new file mode 100644 (file)
index 0000000..13c520c
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration is ok: 0.00000
+DEAL:: subface integration is ok: 2.77556e-17
+DEAL:: face integration is ok: 8.88178e-16
+DEAL:: subface integration is ok: 1.13208e-15
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_1.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_1.output
new file mode 100644 (file)
index 0000000..5295a42
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 2.00000
+DEAL:: subface integration: 2.00000
+DEAL:: face integration: 1.53960
+DEAL:: subface integration: 1.53960
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_3.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_3.output
new file mode 100644 (file)
index 0000000..297c379
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL:: face integration: 3.33333
+DEAL:: subface integration: 3.33333
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_4.output b/tests/results/i686-pc-linux-gnu+gcc3.2/bits/volume_4.output
new file mode 100644 (file)
index 0000000..b342fdc
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/mesh_3d_16.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/mesh_3d_16.output
new file mode 100644 (file)
index 0000000..b9aa35e
--- /dev/null
@@ -0,0 +1,25 @@
+
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.1 face integration is ok: 0.00000
+DEAL::0.1 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.1 face integration is ok: 0.00000
+DEAL::0.1 subface integration is ok: 0.00000
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.18061e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64981e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65022e-15
+DEAL::0.4 face integration is ok: 4.24584e-16
+DEAL::0.4 subface integration is ok: 2.32999e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64981e-15
+DEAL::0.6 face integration is ok: 4.21730e-16
+DEAL::0.6 subface integration is ok: 2.35268e-16
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_1.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_1.output
new file mode 100644 (file)
index 0000000..44ad408
--- /dev/null
@@ -0,0 +1,29 @@
+
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 0.00000
+DEAL::0.0 subface integration is ok: 0.00000
+DEAL::0.0 face integration is ok: 1.53285e-16
+DEAL::0.0 subface integration is ok: 1.90536e-16
+DEAL::0.1 face integration is ok: 2.77902e-16
+DEAL::0.1 subface integration is ok: 3.62487e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 1.53285e-16
+DEAL::0.3 subface integration is ok: 1.90536e-16
+DEAL::0.4 face integration is ok: 2.77902e-16
+DEAL::0.4 subface integration is ok: 3.62487e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.18061e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64981e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65022e-15
+DEAL::0.4 face integration is ok: 4.24584e-16
+DEAL::0.4 subface integration is ok: 2.32999e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64981e-15
+DEAL::0.6 face integration is ok: 4.21730e-16
+DEAL::0.6 subface integration is ok: 2.35268e-16
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_2.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_2.output
new file mode 100644 (file)
index 0000000..a4a2e22
--- /dev/null
@@ -0,0 +1,51 @@
+JobId Sat Oct 18 22:36:39 2003
+DEAL::0.0 face integration is ok: 1.53285e-16
+DEAL::0.0 subface integration is ok: 1.90536e-16
+DEAL::0.1 face integration is ok: 2.77902e-16
+DEAL::0.1 subface integration is ok: 3.62487e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 1.53285e-16
+DEAL::0.3 subface integration is ok: 1.90536e-16
+DEAL::0.4 face integration is ok: 2.77902e-16
+DEAL::0.4 subface integration is ok: 3.62487e-16
+DEAL::0.0 face integration is ok: 3.33067e-16
+DEAL::0.0 subface integration is ok: 2.08629e-16
+DEAL::0.1 face integration is ok: 1.11022e-16
+DEAL::0.1 subface integration is ok: 3.70306e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 3.33067e-16
+DEAL::0.3 subface integration is ok: 2.08629e-16
+DEAL::0.4 face integration is ok: 1.11022e-16
+DEAL::0.4 subface integration is ok: 3.77517e-16
+DEAL::0.0 face integration is ok: 2.28651e-15
+DEAL::0.0 subface integration is ok: 2.29385e-15
+DEAL::0.1 face integration is ok: 2.39664e-15
+DEAL::0.1 subface integration is ok: 2.40498e-15
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 2.28651e-15
+DEAL::0.3 subface integration is ok: 2.09516e-15
+DEAL::0.4 face integration is ok: 2.24203e-15
+DEAL::0.4 subface integration is ok: 2.23859e-15
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 1.14608e-16
+DEAL::0.1 subface integration is ok: 1.17844e-16
+DEAL::0.2 face integration is ok: 4.58190e-16
+DEAL::0.2 subface integration is ok: 1.64983e-15
+DEAL::0.3 face integration is ok: 4.58190e-16
+DEAL::0.3 subface integration is ok: 1.65023e-15
+DEAL::0.4 face integration is ok: 4.18073e-16
+DEAL::0.4 subface integration is ok: 2.45242e-16
+DEAL::0.5 face integration is ok: 4.58190e-16
+DEAL::0.5 subface integration is ok: 1.64980e-15
+DEAL::0.6 face integration is ok: 4.17117e-16
+DEAL::0.6 subface integration is ok: 2.45521e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
+DEAL::0.1 face integration is ok: 8.10440e-17
+DEAL::0.1 subface integration is ok: 2.62062e-16
+DEAL::0.2 face integration is ok: 9.63467e-16
+DEAL::0.2 subface integration is ok: 2.08624e-15
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_3.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_3.output
new file mode 100644 (file)
index 0000000..117cc9b
--- /dev/null
@@ -0,0 +1,13 @@
+JobId Sat Oct 18 22:43:43 2003
+DEAL::0.0 face integration is ok: 7.07631e-16
+DEAL::0.0 subface integration is ok: 3.19491e-16
+DEAL::0.1 face integration is ok: 7.21645e-16
+DEAL::0.1 subface integration is ok: 2.98937e-16
+DEAL::0.2 face integration is ok: 0.00000
+DEAL::0.2 subface integration is ok: 0.00000
+DEAL::0.3 face integration is ok: 7.07631e-16
+DEAL::0.3 subface integration is ok: 3.19491e-16
+DEAL::0.4 face integration is ok: 7.21645e-16
+DEAL::0.4 subface integration is ok: 2.98937e-16
+DEAL::0.0 face integration is ok: 2.57014e-17
+DEAL::0.0 subface integration is ok: 4.79657e-17
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_4.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/normals_4.output
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_1.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_1.output
new file mode 100644 (file)
index 0000000..a1276de
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:: face integration is ok: 0.00000
+DEAL:: subface integration is ok: 2.77556e-17
+DEAL:: face integration is ok: 8.88178e-16
+DEAL:: subface integration is ok: 1.13208e-15
+DEAL:: face integration is ok: 2.83052e-16
+DEAL:: subface integration is ok: 1.82534e-16
+DEAL:: face integration is ok: 8.63885e-17
+DEAL:: subface integration is ok: 2.05409e-16
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_3.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_3.output
new file mode 100644 (file)
index 0000000..c4d27b8
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration is ok: 3.51083e-16
+DEAL:: subface integration is ok: 5.11788e-16
+DEAL:: face integration is ok: 5.11788e-16
+DEAL:: subface integration is ok: 2.77556e-17
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_4.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/q_point_sum_4.output
new file mode 100644 (file)
index 0000000..13c520c
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration is ok: 0.00000
+DEAL:: subface integration is ok: 2.77556e-17
+DEAL:: face integration is ok: 8.88178e-16
+DEAL:: subface integration is ok: 1.13208e-15
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_1.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_1.output
new file mode 100644 (file)
index 0000000..5295a42
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 2.00000
+DEAL:: subface integration: 2.00000
+DEAL:: face integration: 1.53960
+DEAL:: subface integration: 1.53960
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_3.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_3.output
new file mode 100644 (file)
index 0000000..297c379
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL:: face integration: 3.33333
+DEAL:: subface integration: 3.33333
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_4.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/bits/volume_4.output
new file mode 100644 (file)
index 0000000..b342fdc
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000
+DEAL:: face integration: 1.00000
+DEAL:: subface integration: 1.00000

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.