]> https://gitweb.dealii.org/ - dealii.git/commitdiff
add another version of the dof_tools_21_b
authorMatthias Maier <tamiko@kyomu.43-1.org>
Sun, 30 Nov 2014 13:31:46 +0000 (14:31 +0100)
committerMatthias Maier <tamiko@kyomu.43-1.org>
Sun, 30 Nov 2014 14:42:53 +0000 (15:42 +0100)
that also tests for correct behaviour with hanging nodes. This is done by
additionally refining the second cube once. Test that constraining face_1
-> face_2 and the opposite direction face_2 -> face_1 give the exact same
result.

Manually verified that this is indeed the case

tests/bits/dof_tools_21_c.cc [new file with mode: 0644]
tests/bits/dof_tools_21_c.output [new file with mode: 0644]

diff --git a/tests/bits/dof_tools_21_c.cc b/tests/bits/dof_tools_21_c.cc
new file mode 100644 (file)
index 0000000..47730d3
--- /dev/null
@@ -0,0 +1,363 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2003 - 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/component_mask.h>
+#include <deal.II/fe/mapping_q.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/lac/constraint_matrix.h>
+
+#include <iostream>
+#include <utility>
+
+#include <fstream>
+std::ofstream logfile("output");
+
+using namespace dealii;
+
+//
+// Test
+//   DoFTools::
+//   make_periodicity_constraints (const FaceIterator       &,
+//                                 const FaceIterator       &,
+//                                 dealii::ConstraintMatrix &,
+//                                 const std::vector<bool>  &,
+//                                 bool, bool, bool)
+//
+// for correct behaviour with hanging nodes. This is done by additionally
+// refining the second cube once. Test that constraining face_1 -> face_2
+// and the opposite direction face_2 -> face_1 give the exact same result.
+//
+
+
+/*
+ * Generate a grid consisting of two disjoint cells, colorize the two
+ * outermost faces. They will be matched via collect_periodic_faces
+ *
+ * The integer orientation determines the orientation of the second cell
+ * to get something else than the boring default orientation.
+ */
+
+/* The 2D case */
+void generate_grid(Triangulation<2> &triangulation, int orientation)
+{
+  Point<2> vertices_1[]
+  =
+  {
+    Point<2> (-1.,-3.),
+    Point<2> (+1.,-3.),
+    Point<2> (-1.,-1.),
+    Point<2> (+1.,-1.),
+    Point<2> (-1.,+1.),
+    Point<2> (+1.,+1.),
+    Point<2> (-1.,+3.),
+    Point<2> (+1.,+3.),
+  };
+  std::vector<Point<2> > vertices (&vertices_1[0], &vertices_1[8]);
+
+  std::vector<CellData<2> > cells (2, CellData<2>());
+
+  /* cell 0 */
+  int cell_vertices_0[GeometryInfo<2>::vertices_per_cell] = {0, 1,  2,  3};
+
+  /* cell 1 */
+  int cell_vertices_1[2][GeometryInfo<2>::vertices_per_cell]
+  =
+  {
+    {4,5,6,7},
+    {7,6,5,4},
+  };
+
+  for (unsigned int j=0; j<GeometryInfo<2>::vertices_per_cell; ++j)
+    {
+      cells[0].vertices[j] = cell_vertices_0[j];
+      cells[1].vertices[j] = cell_vertices_1[orientation][j];
+    }
+  cells[0].material_id = 0;
+  cells[1].material_id = 0;
+
+  triangulation.create_triangulation(vertices, cells, SubCellData());
+
+  Triangulation<2>::cell_iterator cell_1 = triangulation.begin();
+  Triangulation<2>::cell_iterator cell_2 = cell_1++;
+  Triangulation<2>::face_iterator face_1;
+  Triangulation<2>::face_iterator face_2;
+
+  // Look for the two outermost faces:
+  for (unsigned int j=0; j<GeometryInfo<2>::faces_per_cell; ++j)
+    {
+      if (cell_1->face(j)->center()(1) > 2.9)
+        face_1 = cell_1->face(j);
+      if (cell_2->face(j)->center()(1) < -2.9)
+        face_2 = cell_2->face(j);
+    }
+  face_1->set_boundary_indicator(42);
+  face_2->set_boundary_indicator(43);
+
+  cell_2->set_refine_flag();
+  triangulation.execute_coarsening_and_refinement();
+}
+
+
+/* The 3D case */
+void generate_grid(Triangulation<3> &triangulation, int orientation)
+{
+  Point<3> vertices_1[]
+  =
+  {
+    Point<3> (-1.,-1.,-3.),
+    Point<3> (+1.,-1.,-3.),
+    Point<3> (-1.,+1.,-3.),
+    Point<3> (+1.,+1.,-3.),
+    Point<3> (-1.,-1.,-1.),
+    Point<3> (+1.,-1.,-1.),
+    Point<3> (-1.,+1.,-1.),
+    Point<3> (+1.,+1.,-1.),
+    Point<3> (-1.,-1.,+1.),
+    Point<3> (+1.,-1.,+1.),
+    Point<3> (-1.,+1.,+1.),
+    Point<3> (+1.,+1.,+1.),
+    Point<3> (-1.,-1.,+3.),
+    Point<3> (+1.,-1.,+3.),
+    Point<3> (-1.,+1.,+3.),
+    Point<3> (+1.,+1.,+3.)
+  };
+  std::vector<Point<3> > vertices (&vertices_1[0], &vertices_1[16]);
+
+  std::vector<CellData<3> > cells (2, CellData<3>());
+
+  /* cell 0 */
+  int cell_vertices_0[GeometryInfo<3>::vertices_per_cell] = {0, 1,  2,  3,  4,  5,  6,  7};
+
+  /* cell 1 */
+  int cell_vertices_1[8][GeometryInfo<3>::vertices_per_cell]
+  =
+  {
+    {8,9,10,11,12,13,14,15},
+    {9,11,8,10,13,15,12,14},
+    {11,10,9,8,15,14,13,12},
+    {10,8,11,9,14,12,15,13},
+    {13,12,15,14,9,8,11,10},
+    {12,14,13,15,8,10,9,11},
+    {14,15,12,13,10,11,8,9},
+    {15,13,14,12,11,9,10,8},
+  };
+
+  for (unsigned int j=0; j<GeometryInfo<3>::vertices_per_cell; ++j)
+    {
+      cells[0].vertices[j] = cell_vertices_0[j];
+      cells[1].vertices[j] = cell_vertices_1[orientation][j];
+    }
+  cells[0].material_id = 0;
+  cells[1].material_id = 0;
+
+
+  triangulation.create_triangulation(vertices, cells, SubCellData());
+
+  Triangulation<3>::cell_iterator cell_1 = triangulation.begin();
+  Triangulation<3>::cell_iterator cell_2 = cell_1++;
+  Triangulation<3>::face_iterator face_1;
+  Triangulation<3>::face_iterator face_2;
+
+  // Look for the two outermost faces:
+  for (unsigned int j=0; j<GeometryInfo<3>::faces_per_cell; ++j)
+    {
+      if (cell_1->face(j)->center()(2) > 2.9)
+        face_1 = cell_1->face(j);
+      if (cell_2->face(j)->center()(2) < -2.9)
+        face_2 = cell_2->face(j);
+    }
+  face_1->set_boundary_indicator(42);
+  face_2->set_boundary_indicator(43);
+
+  cell_2->set_refine_flag();
+  triangulation.execute_coarsening_and_refinement();
+}
+
+
+/*
+ * Print out all face DoFs and support points as well as the actual
+ * matching via make_periodicity_constraints
+ */
+template<int dim>
+void print_matching(DoFHandler<dim> &dof_handler, bool constrain_only_velocity = false)
+{
+  const FiniteElement<dim> &fe = dof_handler.get_fe();
+  MappingQ<dim> mapping(1);
+
+  ConstraintMatrix constraint_matrix;
+  ConstraintMatrix constraint_matrix_reverse;
+  std::vector<Point<dim> > support_points(dof_handler.n_dofs());
+  DoFTools::map_dofs_to_support_points<dim>(mapping, dof_handler, support_points);
+
+  FEValuesExtractors::Vector v(0);
+  FEValuesExtractors::Scalar v_1(0);
+  FEValuesExtractors::Scalar v_2(1);
+  FEValuesExtractors::Scalar v_3(2);
+  FEValuesExtractors::Scalar pressure(3);
+
+  ComponentMask velocity_mask;
+  if (constrain_only_velocity)
+    velocity_mask = fe.component_mask (v);
+
+  // Look for the two outermost faces:
+  typename DoFHandler<dim>::face_iterator face_1;
+  typename DoFHandler<dim>::face_iterator face_2;
+  for (typename DoFHandler<dim>::cell_iterator cell = dof_handler.begin(0);
+       cell != dof_handler.end(0); ++cell)
+    {
+      for (unsigned int j=0; j<GeometryInfo<dim>::faces_per_cell; ++j)
+        {
+          if (cell->face(j)->center()(dim==2 ? 1 : 2) > 2.9)
+            face_1 = cell->face(j);
+          if (cell->face(j)->center()(dim==2 ? 1 : 2) < -2.9)
+            face_2 = cell->face(j);
+        }
+    }
+
+  // Determine the orientation of the two faces:
+
+  std::vector<types::global_dof_index> dofs_1(fe.dofs_per_face);
+  std::vector<types::global_dof_index> dofs_2(fe.dofs_per_face);
+  const unsigned int face_1_index = face_1->nth_active_fe_index(0);
+  const unsigned int face_2_index = face_2->nth_active_fe_index(0);
+  face_1->get_dof_indices(dofs_1, face_1_index);
+  face_2->get_dof_indices(dofs_2, face_2_index);
+
+  // Print out all DoF support points on the two faces:
+  deallog << "DoFs of face_1:";
+  for (unsigned int c = 0; c < fe.n_components(); c++)
+    {
+      deallog << std::endl << " component " << c << ":";
+      for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
+        {
+          if (fe.face_system_to_component_index(i).first == c)
+            deallog << " (" << dofs_1[i] << " - "
+                    << support_points[dofs_1[i]] << ")";
+        }
+    }
+  deallog << std::endl;
+  deallog << "DoFs of face_2:";
+  for (unsigned int c = 0; c < fe.n_components(); c++)
+    {
+      deallog << std::endl << " component " << c << ":";
+      for (unsigned int i = 0; i < fe.dofs_per_face; ++i)
+        {
+          if (fe.face_system_to_component_index(i).first == c)
+            deallog << " (" << dofs_2[i] << " - "
+                    << support_points[dofs_2[i]] << ")";
+        }
+    }
+  deallog << std::endl;
+
+
+  std::bitset<3> orientation;
+  if (not GridTools::orthogonal_equality(orientation, face_1, face_2,
+                                         dim==2 ? 1 : 2,
+                                         dealii::Tensor<1,dim>()))
+    std::cerr << " not match! oh noze!! " << std::endl;
+  deallog << "Orientation: " << orientation[0] << orientation[1] << orientation[2] << std::endl;
+
+
+  DoFTools::make_periodicity_constraints (face_1,
+                                          face_2,
+                                          constraint_matrix,
+                                          velocity_mask,
+                                          orientation[0], orientation[1], orientation[2]);
+  deallog << "Matching:" << std::endl;
+  constraint_matrix.print(deallog.get_file_stream());
+  constraint_matrix.close();
+
+  DoFTools::make_periodicity_constraints (face_2,
+                                          face_1,
+                                          constraint_matrix_reverse,
+                                          velocity_mask,
+                                          orientation[0],
+                                          orientation[0] ? orientation[1] ^ orientation[2] : orientation[1],
+                                          orientation[2]);
+  deallog << "Reverse Matching:" << std::endl;
+  constraint_matrix_reverse.print(deallog.get_file_stream());
+  constraint_matrix_reverse.close();
+}
+
+
+
+int main()
+{
+  deallog << std::setprecision(4);
+  logfile << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  deallog << "Test for 2D, Q1:" << std::endl << std::endl;
+
+  for (int i = 0; i < 2; ++i)
+    {
+      // Generate a triangulation and match:
+      Triangulation<2> triangulation;
+      FE_Q<2> fe(1);
+      DoFHandler<2> dof_handler;
+
+      deallog << "Triangulation:" << i << std::endl;
+
+      generate_grid(triangulation, i);
+      dof_handler.initialize(triangulation, fe);
+      print_matching(dof_handler);
+    }
+
+  deallog << "Test for 3D, Q1:" << std::endl << std::endl;
+
+  for (int i = 0; i < 8; ++i)
+    {
+      // Generate a triangulation and match:
+      Triangulation<3> triangulation;
+      FE_Q<3> fe(1);
+      DoFHandler<3> dof_handler;
+
+      deallog << "Triangulation:" << i << std::endl;
+
+      generate_grid(triangulation, i);
+      dof_handler.initialize(triangulation, fe);
+      print_matching(dof_handler);
+    }
+
+
+  deallog << "Test for 3D, Q1, correct subface iteration:" << std::endl << std::endl;
+
+  for (int i = 0; i < 8; ++i)
+    {
+      // Generate a triangulation and match:
+      Triangulation<3> triangulation;
+      FE_Q<3> fe(1);
+      DoFHandler<3> dof_handler;
+
+      deallog << "Triangulation:" << i << std::endl;
+
+      generate_grid(triangulation, i);
+      triangulation.refine_global(1);
+      dof_handler.initialize(triangulation, fe);
+      print_matching(dof_handler);
+    }
+
+  return 0;
+}
diff --git a/tests/bits/dof_tools_21_c.output b/tests/bits/dof_tools_21_c.output
new file mode 100644 (file)
index 0000000..0f304ca
--- /dev/null
@@ -0,0 +1,1207 @@
+
+DEAL::Test for 2D, Q1:
+DEAL::
+DEAL::Triangulation:0
+DEAL::DoFs of face_1:
+DEAL:: component 0: (2 - -1.000 3.000) (3 - 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (4 - -1.000 -3.000) (8 - 1.000 -3.000)
+DEAL::Orientation: 100
+DEAL::Matching:
+    4 2:  1.000
+    5 2:  0.5000
+    5 3:  0.5000
+    8 3:  1.000
+DEAL::Reverse Matching:
+    4 2:  1.000
+    5 2:  0.5000
+    5 3:  0.5000
+    8 3:  1.000
+DEAL::Triangulation:1
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - 1.000 3.000) (1 - -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (4 - -1.000 -3.000) (8 - 1.000 -3.000)
+DEAL::Orientation: 110
+DEAL::Matching:
+    4 1:  1.000
+    5 1:  0.5000
+    5 0:  0.5000
+    8 0:  1.000
+DEAL::Reverse Matching:
+    4 1:  1.000
+    5 1:  0.5000
+    5 0:  0.5000
+    8 0:  1.000
+DEAL::Test for 3D, Q1:
+DEAL::
+DEAL::Triangulation:0
+DEAL::DoFs of face_1:
+DEAL:: component 0: (4 - -1.000 -1.000 3.000) (5 - 1.000 -1.000 3.000) (6 - -1.000 1.000 3.000) (7 - 1.000 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (8 - -1.000 -1.000 -3.000) (16 - 1.000 -1.000 -3.000) (20 - -1.000 1.000 -3.000) (24 - 1.000 1.000 -3.000)
+DEAL::Orientation: 100
+DEAL::Matching:
+    8 4:  1.000
+    9 4:  0.5000
+    9 5:  0.5000
+    10 4:  0.5000
+    10 6:  0.5000
+    11 4:  0.2500
+    11 5:  0.2500
+    11 6:  0.2500
+    11 7:  0.2500
+    16 5:  1.000
+    17 5:  0.5000
+    17 7:  0.5000
+    20 6:  1.000
+    21 6:  0.5000
+    21 7:  0.5000
+    24 7:  1.000
+DEAL::Reverse Matching:
+    8 4:  1.000
+    9 4:  0.5000
+    9 5:  0.5000
+    10 4:  0.5000
+    10 6:  0.5000
+    11 4:  0.2500
+    11 5:  0.2500
+    11 6:  0.2500
+    11 7:  0.2500
+    16 5:  1.000
+    17 5:  0.5000
+    17 7:  0.5000
+    20 6:  1.000
+    21 6:  0.5000
+    21 7:  0.5000
+    24 7:  1.000
+DEAL::Triangulation:1
+DEAL::DoFs of face_1:
+DEAL:: component 0: (4 - 1.000 -1.000 3.000) (5 - 1.000 1.000 3.000) (6 - -1.000 -1.000 3.000) (7 - -1.000 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (8 - -1.000 -1.000 -3.000) (16 - 1.000 -1.000 -3.000) (20 - -1.000 1.000 -3.000) (24 - 1.000 1.000 -3.000)
+DEAL::Orientation: 101
+DEAL::Matching:
+    8 6:  1.000
+    9 6:  0.5000
+    9 4:  0.5000
+    10 6:  0.5000
+    10 7:  0.5000
+    11 6:  0.2500
+    11 4:  0.2500
+    11 7:  0.2500
+    11 5:  0.2500
+    16 4:  1.000
+    17 4:  0.5000
+    17 5:  0.5000
+    20 7:  1.000
+    21 7:  0.5000
+    21 5:  0.5000
+    24 5:  1.000
+DEAL::Reverse Matching:
+    8 6:  1.000
+    9 6:  0.5000
+    9 4:  0.5000
+    10 6:  0.5000
+    10 7:  0.5000
+    11 6:  0.2500
+    11 4:  0.2500
+    11 7:  0.2500
+    11 5:  0.2500
+    16 4:  1.000
+    17 4:  0.5000
+    17 5:  0.5000
+    20 7:  1.000
+    21 7:  0.5000
+    21 5:  0.5000
+    24 5:  1.000
+DEAL::Triangulation:2
+DEAL::DoFs of face_1:
+DEAL:: component 0: (4 - 1.000 1.000 3.000) (5 - -1.000 1.000 3.000) (6 - 1.000 -1.000 3.000) (7 - -1.000 -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (8 - -1.000 -1.000 -3.000) (16 - 1.000 -1.000 -3.000) (20 - -1.000 1.000 -3.000) (24 - 1.000 1.000 -3.000)
+DEAL::Orientation: 110
+DEAL::Matching:
+    8 7:  1.000
+    9 7:  0.5000
+    9 6:  0.5000
+    10 7:  0.5000
+    10 5:  0.5000
+    11 7:  0.2500
+    11 6:  0.2500
+    11 5:  0.2500
+    11 4:  0.2500
+    16 6:  1.000
+    17 6:  0.5000
+    17 4:  0.5000
+    20 5:  1.000
+    21 5:  0.5000
+    21 4:  0.5000
+    24 4:  1.000
+DEAL::Reverse Matching:
+    8 7:  1.000
+    9 7:  0.5000
+    9 6:  0.5000
+    10 7:  0.5000
+    10 5:  0.5000
+    11 7:  0.2500
+    11 6:  0.2500
+    11 5:  0.2500
+    11 4:  0.2500
+    16 6:  1.000
+    17 6:  0.5000
+    17 4:  0.5000
+    20 5:  1.000
+    21 5:  0.5000
+    21 4:  0.5000
+    24 4:  1.000
+DEAL::Triangulation:3
+DEAL::DoFs of face_1:
+DEAL:: component 0: (4 - -1.000 1.000 3.000) (5 - -1.000 -1.000 3.000) (6 - 1.000 1.000 3.000) (7 - 1.000 -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (8 - -1.000 -1.000 -3.000) (16 - 1.000 -1.000 -3.000) (20 - -1.000 1.000 -3.000) (24 - 1.000 1.000 -3.000)
+DEAL::Orientation: 111
+DEAL::Matching:
+    8 5:  1.000
+    9 5:  0.5000
+    9 7:  0.5000
+    10 5:  0.5000
+    10 4:  0.5000
+    11 5:  0.2500
+    11 7:  0.2500
+    11 4:  0.2500
+    11 6:  0.2500
+    16 7:  1.000
+    17 7:  0.5000
+    17 6:  0.5000
+    20 4:  1.000
+    21 4:  0.5000
+    21 6:  0.5000
+    24 6:  1.000
+DEAL::Reverse Matching:
+    8 5:  1.000
+    9 5:  0.5000
+    9 7:  0.5000
+    10 5:  0.5000
+    10 4:  0.5000
+    11 5:  0.2500
+    11 7:  0.2500
+    11 4:  0.2500
+    11 6:  0.2500
+    16 7:  1.000
+    17 7:  0.5000
+    17 6:  0.5000
+    20 4:  1.000
+    21 4:  0.5000
+    21 6:  0.5000
+    24 6:  1.000
+DEAL::Triangulation:4
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - 1.000 -1.000 3.000) (1 - -1.000 -1.000 3.000) (2 - 1.000 1.000 3.000) (3 - -1.000 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (8 - -1.000 -1.000 -3.000) (16 - 1.000 -1.000 -3.000) (20 - -1.000 1.000 -3.000) (24 - 1.000 1.000 -3.000)
+DEAL::Orientation: 011
+DEAL::Matching:
+    8 1:  1.000
+    9 1:  0.5000
+    9 0:  0.5000
+    10 1:  0.5000
+    10 3:  0.5000
+    11 1:  0.2500
+    11 0:  0.2500
+    11 3:  0.2500
+    11 2:  0.2500
+    16 0:  1.000
+    17 0:  0.5000
+    17 2:  0.5000
+    20 3:  1.000
+    21 3:  0.5000
+    21 2:  0.5000
+    24 2:  1.000
+DEAL::Reverse Matching:
+    8 1:  1.000
+    9 1:  0.5000
+    9 0:  0.5000
+    10 1:  0.5000
+    10 3:  0.5000
+    11 1:  0.2500
+    11 0:  0.2500
+    11 3:  0.2500
+    11 2:  0.2500
+    16 0:  1.000
+    17 0:  0.5000
+    17 2:  0.5000
+    20 3:  1.000
+    21 3:  0.5000
+    21 2:  0.5000
+    24 2:  1.000
+DEAL::Triangulation:5
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - -1.000 -1.000 3.000) (1 - -1.000 1.000 3.000) (2 - 1.000 -1.000 3.000) (3 - 1.000 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (8 - -1.000 -1.000 -3.000) (16 - 1.000 -1.000 -3.000) (20 - -1.000 1.000 -3.000) (24 - 1.000 1.000 -3.000)
+DEAL::Orientation: 000
+DEAL::Matching:
+    8 0:  1.000
+    9 0:  0.5000
+    9 2:  0.5000
+    10 0:  0.5000
+    10 1:  0.5000
+    11 0:  0.2500
+    11 2:  0.2500
+    11 1:  0.2500
+    11 3:  0.2500
+    16 2:  1.000
+    17 2:  0.5000
+    17 3:  0.5000
+    20 1:  1.000
+    21 1:  0.5000
+    21 3:  0.5000
+    24 3:  1.000
+DEAL::Reverse Matching:
+    8 0:  1.000
+    9 0:  0.5000
+    9 2:  0.5000
+    10 0:  0.5000
+    10 1:  0.5000
+    11 0:  0.2500
+    11 2:  0.2500
+    11 1:  0.2500
+    11 3:  0.2500
+    16 2:  1.000
+    17 2:  0.5000
+    17 3:  0.5000
+    20 1:  1.000
+    21 1:  0.5000
+    21 3:  0.5000
+    24 3:  1.000
+DEAL::Triangulation:6
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - -1.000 1.000 3.000) (1 - 1.000 1.000 3.000) (2 - -1.000 -1.000 3.000) (3 - 1.000 -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (8 - -1.000 -1.000 -3.000) (16 - 1.000 -1.000 -3.000) (20 - -1.000 1.000 -3.000) (24 - 1.000 1.000 -3.000)
+DEAL::Orientation: 001
+DEAL::Matching:
+    8 2:  1.000
+    9 2:  0.5000
+    9 3:  0.5000
+    10 2:  0.5000
+    10 0:  0.5000
+    11 2:  0.2500
+    11 3:  0.2500
+    11 0:  0.2500
+    11 1:  0.2500
+    16 3:  1.000
+    17 3:  0.5000
+    17 1:  0.5000
+    20 0:  1.000
+    21 0:  0.5000
+    21 1:  0.5000
+    24 1:  1.000
+DEAL::Reverse Matching:
+    8 2:  1.000
+    9 2:  0.5000
+    9 3:  0.5000
+    10 2:  0.5000
+    10 0:  0.5000
+    11 2:  0.2500
+    11 3:  0.2500
+    11 0:  0.2500
+    11 1:  0.2500
+    16 3:  1.000
+    17 3:  0.5000
+    17 1:  0.5000
+    20 0:  1.000
+    21 0:  0.5000
+    21 1:  0.5000
+    24 1:  1.000
+DEAL::Triangulation:7
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - 1.000 1.000 3.000) (1 - 1.000 -1.000 3.000) (2 - -1.000 1.000 3.000) (3 - -1.000 -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (8 - -1.000 -1.000 -3.000) (16 - 1.000 -1.000 -3.000) (20 - -1.000 1.000 -3.000) (24 - 1.000 1.000 -3.000)
+DEAL::Orientation: 010
+DEAL::Matching:
+    8 3:  1.000
+    9 3:  0.5000
+    9 1:  0.5000
+    10 3:  0.5000
+    10 2:  0.5000
+    11 3:  0.2500
+    11 1:  0.2500
+    11 2:  0.2500
+    11 0:  0.2500
+    16 1:  1.000
+    17 1:  0.5000
+    17 0:  0.5000
+    20 2:  1.000
+    21 2:  0.5000
+    21 0:  0.5000
+    24 0:  1.000
+DEAL::Reverse Matching:
+    8 3:  1.000
+    9 3:  0.5000
+    9 1:  0.5000
+    10 3:  0.5000
+    10 2:  0.5000
+    11 3:  0.2500
+    11 1:  0.2500
+    11 2:  0.2500
+    11 0:  0.2500
+    16 1:  1.000
+    17 1:  0.5000
+    17 0:  0.5000
+    20 2:  1.000
+    21 2:  0.5000
+    21 0:  0.5000
+    24 0:  1.000
+DEAL::Test for 3D, Q1, correct subface iteration:
+DEAL::
+DEAL::Triangulation:0
+DEAL::DoFs of face_1:
+DEAL:: component 0: (18 - -1.000 -1.000 3.000) (22 - 1.000 -1.000 3.000) (24 - -1.000 1.000 3.000) (26 - 1.000 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (27 - -1.000 -1.000 -3.000) (58 - 1.000 -1.000 -3.000) (78 - -1.000 1.000 -3.000) (96 - 1.000 1.000 -3.000)
+DEAL::Orientation: 100
+DEAL::Matching:
+    27 18:  1.000
+    28 18:  0.5000
+    28 19:  0.5000
+    29 18:  0.5000
+    29 20:  0.5000
+    30 18:  0.2500
+    30 19:  0.2500
+    30 20:  0.2500
+    30 21:  0.2500
+    35 19:  1.000
+    36 19:  0.5000
+    36 21:  0.5000
+    39 20:  1.000
+    40 20:  0.5000
+    40 21:  0.5000
+    43 21:  1.000
+    54 19:  0.5000
+    54 22:  0.5000
+    55 19:  0.2500
+    55 22:  0.2500
+    55 21:  0.2500
+    55 23:  0.2500
+    58 22:  1.000
+    59 22:  0.5000
+    59 23:  0.5000
+    62 21:  0.5000
+    62 23:  0.5000
+    64 23:  1.000
+    72 20:  0.5000
+    72 24:  0.5000
+    73 20:  0.2500
+    73 21:  0.2500
+    73 24:  0.2500
+    73 25:  0.2500
+    76 21:  0.5000
+    76 25:  0.5000
+    78 24:  1.000
+    79 24:  0.5000
+    79 25:  0.5000
+    82 25:  1.000
+    90 21:  0.2500
+    90 23:  0.2500
+    90 25:  0.2500
+    90 26:  0.2500
+    92 23:  0.5000
+    92 26:  0.5000
+    94 25:  0.5000
+    94 26:  0.5000
+    96 26:  1.000
+DEAL::Reverse Matching:
+    27 18:  1.000
+    28 18:  0.5000
+    28 19:  0.5000
+    29 18:  0.5000
+    29 20:  0.5000
+    30 18:  0.2500
+    30 19:  0.2500
+    30 20:  0.2500
+    30 21:  0.2500
+    35 19:  1.000
+    36 19:  0.5000
+    36 21:  0.5000
+    39 20:  1.000
+    40 20:  0.5000
+    40 21:  0.5000
+    43 21:  1.000
+    54 19:  0.5000
+    54 22:  0.5000
+    55 19:  0.2500
+    55 22:  0.2500
+    55 21:  0.2500
+    55 23:  0.2500
+    58 22:  1.000
+    59 22:  0.5000
+    59 23:  0.5000
+    62 21:  0.5000
+    62 23:  0.5000
+    64 23:  1.000
+    72 20:  0.5000
+    72 24:  0.5000
+    73 20:  0.2500
+    73 21:  0.2500
+    73 24:  0.2500
+    73 25:  0.2500
+    76 21:  0.5000
+    76 25:  0.5000
+    78 24:  1.000
+    79 24:  0.5000
+    79 25:  0.5000
+    82 25:  1.000
+    90 21:  0.2500
+    90 23:  0.2500
+    90 25:  0.2500
+    90 26:  0.2500
+    92 23:  0.5000
+    92 26:  0.5000
+    94 25:  0.5000
+    94 26:  0.5000
+    96 26:  1.000
+DEAL::Triangulation:1
+DEAL::DoFs of face_1:
+DEAL:: component 0: (18 - 1.000 -1.000 3.000) (22 - 1.000 1.000 3.000) (24 - -1.000 -1.000 3.000) (26 - -1.000 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (27 - -1.000 -1.000 -3.000) (58 - 1.000 -1.000 -3.000) (78 - -1.000 1.000 -3.000) (96 - 1.000 1.000 -3.000)
+DEAL::Orientation: 101
+DEAL::Matching:
+    35 20:  1.000
+    54 20:  0.5000
+    54 18:  0.5000
+    36 20:  0.5000
+    36 21:  0.5000
+    55 20:  0.2500
+    55 18:  0.2500
+    55 21:  0.2500
+    55 19:  0.2500
+    58 18:  1.000
+    59 18:  0.5000
+    59 19:  0.5000
+    43 21:  1.000
+    62 21:  0.5000
+    62 19:  0.5000
+    64 19:  1.000
+    76 21:  0.5000
+    76 23:  0.5000
+    90 21:  0.2500
+    90 19:  0.2500
+    90 23:  0.2500
+    90 22:  0.2500
+    92 19:  0.5000
+    92 22:  0.5000
+    82 23:  1.000
+    94 23:  0.5000
+    94 22:  0.5000
+    96 22:  1.000
+    27 24:  1.000
+    28 24:  0.5000
+    28 20:  0.5000
+    29 24:  0.5000
+    29 25:  0.5000
+    30 24:  0.2500
+    30 20:  0.2500
+    30 25:  0.2500
+    30 21:  0.2500
+    39 25:  1.000
+    40 25:  0.5000
+    40 21:  0.5000
+    72 25:  0.5000
+    72 26:  0.5000
+    73 25:  0.2500
+    73 21:  0.2500
+    73 26:  0.2500
+    73 23:  0.2500
+    78 26:  1.000
+    79 26:  0.5000
+    79 23:  0.5000
+DEAL::Reverse Matching:
+    27 24:  1.000
+    28 24:  0.5000
+    28 20:  0.5000
+    29 24:  0.5000
+    29 25:  0.5000
+    30 24:  0.2500
+    30 20:  0.2500
+    30 25:  0.2500
+    30 21:  0.2500
+    35 20:  1.000
+    36 20:  0.5000
+    36 21:  0.5000
+    39 25:  1.000
+    40 25:  0.5000
+    40 21:  0.5000
+    43 21:  1.000
+    54 20:  0.5000
+    54 18:  0.5000
+    55 20:  0.2500
+    55 18:  0.2500
+    55 21:  0.2500
+    55 19:  0.2500
+    58 18:  1.000
+    59 18:  0.5000
+    59 19:  0.5000
+    62 21:  0.5000
+    62 19:  0.5000
+    64 19:  1.000
+    72 25:  0.5000
+    72 26:  0.5000
+    73 25:  0.2500
+    73 21:  0.2500
+    73 26:  0.2500
+    73 23:  0.2500
+    76 21:  0.5000
+    76 23:  0.5000
+    78 26:  1.000
+    79 26:  0.5000
+    79 23:  0.5000
+    82 23:  1.000
+    90 21:  0.2500
+    90 19:  0.2500
+    90 23:  0.2500
+    90 22:  0.2500
+    92 19:  0.5000
+    92 22:  0.5000
+    94 23:  0.5000
+    94 22:  0.5000
+    96 22:  1.000
+DEAL::Triangulation:2
+DEAL::DoFs of face_1:
+DEAL:: component 0: (18 - 1.000 1.000 3.000) (22 - -1.000 1.000 3.000) (24 - 1.000 -1.000 3.000) (26 - -1.000 -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (27 - -1.000 -1.000 -3.000) (58 - 1.000 -1.000 -3.000) (78 - -1.000 1.000 -3.000) (96 - 1.000 1.000 -3.000)
+DEAL::Orientation: 110
+DEAL::Matching:
+    43 21:  1.000
+    62 21:  0.5000
+    62 20:  0.5000
+    76 21:  0.5000
+    76 19:  0.5000
+    90 21:  0.2500
+    90 20:  0.2500
+    90 19:  0.2500
+    90 18:  0.2500
+    64 20:  1.000
+    92 20:  0.5000
+    92 18:  0.5000
+    82 19:  1.000
+    94 19:  0.5000
+    94 18:  0.5000
+    96 18:  1.000
+    39 23:  1.000
+    40 23:  0.5000
+    40 21:  0.5000
+    72 23:  0.5000
+    72 22:  0.5000
+    73 23:  0.2500
+    73 21:  0.2500
+    73 22:  0.2500
+    73 19:  0.2500
+    78 22:  1.000
+    79 22:  0.5000
+    79 19:  0.5000
+    35 25:  1.000
+    54 25:  0.5000
+    54 24:  0.5000
+    36 25:  0.5000
+    36 21:  0.5000
+    55 25:  0.2500
+    55 24:  0.2500
+    55 21:  0.2500
+    55 20:  0.2500
+    58 24:  1.000
+    59 24:  0.5000
+    59 20:  0.5000
+    27 26:  1.000
+    28 26:  0.5000
+    28 25:  0.5000
+    29 26:  0.5000
+    29 23:  0.5000
+    30 26:  0.2500
+    30 25:  0.2500
+    30 23:  0.2500
+    30 21:  0.2500
+DEAL::Reverse Matching:
+    27 26:  1.000
+    28 26:  0.5000
+    28 25:  0.5000
+    29 26:  0.5000
+    29 23:  0.5000
+    30 26:  0.2500
+    30 25:  0.2500
+    30 23:  0.2500
+    30 21:  0.2500
+    35 25:  1.000
+    36 25:  0.5000
+    36 21:  0.5000
+    39 23:  1.000
+    40 23:  0.5000
+    40 21:  0.5000
+    43 21:  1.000
+    54 25:  0.5000
+    54 24:  0.5000
+    55 25:  0.2500
+    55 24:  0.2500
+    55 21:  0.2500
+    55 20:  0.2500
+    58 24:  1.000
+    59 24:  0.5000
+    59 20:  0.5000
+    62 21:  0.5000
+    62 20:  0.5000
+    64 20:  1.000
+    72 23:  0.5000
+    72 22:  0.5000
+    73 23:  0.2500
+    73 21:  0.2500
+    73 22:  0.2500
+    73 19:  0.2500
+    76 21:  0.5000
+    76 19:  0.5000
+    78 22:  1.000
+    79 22:  0.5000
+    79 19:  0.5000
+    82 19:  1.000
+    90 21:  0.2500
+    90 20:  0.2500
+    90 19:  0.2500
+    90 18:  0.2500
+    92 20:  0.5000
+    92 18:  0.5000
+    94 19:  0.5000
+    94 18:  0.5000
+    96 18:  1.000
+DEAL::Triangulation:3
+DEAL::DoFs of face_1:
+DEAL:: component 0: (18 - -1.000 1.000 3.000) (22 - -1.000 -1.000 3.000) (24 - 1.000 1.000 3.000) (26 - 1.000 -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (27 - -1.000 -1.000 -3.000) (58 - 1.000 -1.000 -3.000) (78 - -1.000 1.000 -3.000) (96 - 1.000 1.000 -3.000)
+DEAL::Orientation: 111
+DEAL::Matching:
+    39 19:  1.000
+    40 19:  0.5000
+    40 21:  0.5000
+    72 19:  0.5000
+    72 18:  0.5000
+    73 19:  0.2500
+    73 21:  0.2500
+    73 18:  0.2500
+    73 20:  0.2500
+    43 21:  1.000
+    76 21:  0.5000
+    76 20:  0.5000
+    78 18:  1.000
+    79 18:  0.5000
+    79 20:  0.5000
+    82 20:  1.000
+    27 22:  1.000
+    28 22:  0.5000
+    28 23:  0.5000
+    29 22:  0.5000
+    29 19:  0.5000
+    30 22:  0.2500
+    30 23:  0.2500
+    30 19:  0.2500
+    30 21:  0.2500
+    35 23:  1.000
+    36 23:  0.5000
+    36 21:  0.5000
+    62 21:  0.5000
+    62 25:  0.5000
+    90 21:  0.2500
+    90 25:  0.2500
+    90 20:  0.2500
+    90 24:  0.2500
+    64 25:  1.000
+    92 25:  0.5000
+    92 24:  0.5000
+    94 20:  0.5000
+    94 24:  0.5000
+    96 24:  1.000
+    54 23:  0.5000
+    54 26:  0.5000
+    55 23:  0.2500
+    55 26:  0.2500
+    55 21:  0.2500
+    55 25:  0.2500
+    58 26:  1.000
+    59 26:  0.5000
+    59 25:  0.5000
+DEAL::Reverse Matching:
+    27 22:  1.000
+    28 22:  0.5000
+    28 23:  0.5000
+    29 22:  0.5000
+    29 19:  0.5000
+    30 22:  0.2500
+    30 23:  0.2500
+    30 19:  0.2500
+    30 21:  0.2500
+    35 23:  1.000
+    36 23:  0.5000
+    36 21:  0.5000
+    39 19:  1.000
+    40 19:  0.5000
+    40 21:  0.5000
+    43 21:  1.000
+    54 23:  0.5000
+    54 26:  0.5000
+    55 23:  0.2500
+    55 26:  0.2500
+    55 21:  0.2500
+    55 25:  0.2500
+    58 26:  1.000
+    59 26:  0.5000
+    59 25:  0.5000
+    62 21:  0.5000
+    62 25:  0.5000
+    64 25:  1.000
+    72 19:  0.5000
+    72 18:  0.5000
+    73 19:  0.2500
+    73 21:  0.2500
+    73 18:  0.2500
+    73 20:  0.2500
+    76 21:  0.5000
+    76 20:  0.5000
+    78 18:  1.000
+    79 18:  0.5000
+    79 20:  0.5000
+    82 20:  1.000
+    90 21:  0.2500
+    90 25:  0.2500
+    90 20:  0.2500
+    90 24:  0.2500
+    92 25:  0.5000
+    92 24:  0.5000
+    94 20:  0.5000
+    94 24:  0.5000
+    96 24:  1.000
+DEAL::Triangulation:4
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - 1.000 -1.000 3.000) (8 - -1.000 -1.000 3.000) (12 - 1.000 1.000 3.000) (16 - -1.000 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (27 - -1.000 -1.000 -3.000) (58 - 1.000 -1.000 -3.000) (78 - -1.000 1.000 -3.000) (96 - 1.000 1.000 -3.000)
+DEAL::Orientation: 011
+DEAL::Matching:
+    35 1:  1.000
+    54 1:  0.5000
+    54 0:  0.5000
+    36 1:  0.5000
+    36 3:  0.5000
+    55 1:  0.2500
+    55 0:  0.2500
+    55 3:  0.2500
+    55 2:  0.2500
+    58 0:  1.000
+    59 0:  0.5000
+    59 2:  0.5000
+    43 3:  1.000
+    62 3:  0.5000
+    62 2:  0.5000
+    64 2:  1.000
+    27 8:  1.000
+    28 8:  0.5000
+    28 1:  0.5000
+    29 8:  0.5000
+    29 9:  0.5000
+    30 8:  0.2500
+    30 1:  0.2500
+    30 9:  0.2500
+    30 3:  0.2500
+    39 9:  1.000
+    40 9:  0.5000
+    40 3:  0.5000
+    76 3:  0.5000
+    76 13:  0.5000
+    90 3:  0.2500
+    90 2:  0.2500
+    90 13:  0.2500
+    90 12:  0.2500
+    92 2:  0.5000
+    92 12:  0.5000
+    82 13:  1.000
+    94 13:  0.5000
+    94 12:  0.5000
+    96 12:  1.000
+    72 9:  0.5000
+    72 16:  0.5000
+    73 9:  0.2500
+    73 3:  0.2500
+    73 16:  0.2500
+    73 13:  0.2500
+    78 16:  1.000
+    79 16:  0.5000
+    79 13:  0.5000
+DEAL::Reverse Matching:
+    27 8:  1.000
+    28 8:  0.5000
+    28 1:  0.5000
+    29 8:  0.5000
+    29 9:  0.5000
+    30 8:  0.2500
+    30 1:  0.2500
+    30 9:  0.2500
+    30 3:  0.2500
+    35 1:  1.000
+    36 1:  0.5000
+    36 3:  0.5000
+    39 9:  1.000
+    40 9:  0.5000
+    40 3:  0.5000
+    43 3:  1.000
+    54 1:  0.5000
+    54 0:  0.5000
+    55 1:  0.2500
+    55 0:  0.2500
+    55 3:  0.2500
+    55 2:  0.2500
+    58 0:  1.000
+    59 0:  0.5000
+    59 2:  0.5000
+    62 3:  0.5000
+    62 2:  0.5000
+    64 2:  1.000
+    72 9:  0.5000
+    72 16:  0.5000
+    73 9:  0.2500
+    73 3:  0.2500
+    73 16:  0.2500
+    73 13:  0.2500
+    76 3:  0.5000
+    76 13:  0.5000
+    78 16:  1.000
+    79 16:  0.5000
+    79 13:  0.5000
+    82 13:  1.000
+    90 3:  0.2500
+    90 2:  0.2500
+    90 13:  0.2500
+    90 12:  0.2500
+    92 2:  0.5000
+    92 12:  0.5000
+    94 13:  0.5000
+    94 12:  0.5000
+    96 12:  1.000
+DEAL::Triangulation:5
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - -1.000 -1.000 3.000) (8 - -1.000 1.000 3.000) (12 - 1.000 -1.000 3.000) (16 - 1.000 1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (27 - -1.000 -1.000 -3.000) (58 - 1.000 -1.000 -3.000) (78 - -1.000 1.000 -3.000) (96 - 1.000 1.000 -3.000)
+DEAL::Orientation: 000
+DEAL::Matching:
+    27 0:  1.000
+    28 0:  0.5000
+    28 2:  0.5000
+    29 0:  0.5000
+    29 1:  0.5000
+    30 0:  0.2500
+    30 2:  0.2500
+    30 1:  0.2500
+    30 3:  0.2500
+    35 2:  1.000
+    36 2:  0.5000
+    36 3:  0.5000
+    39 1:  1.000
+    40 1:  0.5000
+    40 3:  0.5000
+    43 3:  1.000
+    72 1:  0.5000
+    72 8:  0.5000
+    73 1:  0.2500
+    73 3:  0.2500
+    73 8:  0.2500
+    73 9:  0.2500
+    76 3:  0.5000
+    76 9:  0.5000
+    78 8:  1.000
+    79 8:  0.5000
+    79 9:  0.5000
+    82 9:  1.000
+    54 2:  0.5000
+    54 12:  0.5000
+    55 2:  0.2500
+    55 12:  0.2500
+    55 3:  0.2500
+    55 13:  0.2500
+    58 12:  1.000
+    59 12:  0.5000
+    59 13:  0.5000
+    62 3:  0.5000
+    62 13:  0.5000
+    64 13:  1.000
+    90 3:  0.2500
+    90 13:  0.2500
+    90 9:  0.2500
+    90 16:  0.2500
+    92 13:  0.5000
+    92 16:  0.5000
+    94 9:  0.5000
+    94 16:  0.5000
+    96 16:  1.000
+DEAL::Reverse Matching:
+    27 0:  1.000
+    28 0:  0.5000
+    28 2:  0.5000
+    29 0:  0.5000
+    29 1:  0.5000
+    30 0:  0.2500
+    30 2:  0.2500
+    30 1:  0.2500
+    30 3:  0.2500
+    35 2:  1.000
+    36 2:  0.5000
+    36 3:  0.5000
+    39 1:  1.000
+    40 1:  0.5000
+    40 3:  0.5000
+    43 3:  1.000
+    54 2:  0.5000
+    54 12:  0.5000
+    55 2:  0.2500
+    55 12:  0.2500
+    55 3:  0.2500
+    55 13:  0.2500
+    58 12:  1.000
+    59 12:  0.5000
+    59 13:  0.5000
+    62 3:  0.5000
+    62 13:  0.5000
+    64 13:  1.000
+    72 1:  0.5000
+    72 8:  0.5000
+    73 1:  0.2500
+    73 3:  0.2500
+    73 8:  0.2500
+    73 9:  0.2500
+    76 3:  0.5000
+    76 9:  0.5000
+    78 8:  1.000
+    79 8:  0.5000
+    79 9:  0.5000
+    82 9:  1.000
+    90 3:  0.2500
+    90 13:  0.2500
+    90 9:  0.2500
+    90 16:  0.2500
+    92 13:  0.5000
+    92 16:  0.5000
+    94 9:  0.5000
+    94 16:  0.5000
+    96 16:  1.000
+DEAL::Triangulation:6
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - -1.000 1.000 3.000) (8 - 1.000 1.000 3.000) (12 - -1.000 -1.000 3.000) (16 - 1.000 -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (27 - -1.000 -1.000 -3.000) (58 - 1.000 -1.000 -3.000) (78 - -1.000 1.000 -3.000) (96 - 1.000 1.000 -3.000)
+DEAL::Orientation: 001
+DEAL::Matching:
+    39 2:  1.000
+    40 2:  0.5000
+    40 3:  0.5000
+    72 2:  0.5000
+    72 0:  0.5000
+    73 2:  0.2500
+    73 3:  0.2500
+    73 0:  0.2500
+    73 1:  0.2500
+    43 3:  1.000
+    76 3:  0.5000
+    76 1:  0.5000
+    78 0:  1.000
+    79 0:  0.5000
+    79 1:  0.5000
+    82 1:  1.000
+    62 3:  0.5000
+    62 9:  0.5000
+    90 3:  0.2500
+    90 9:  0.2500
+    90 1:  0.2500
+    90 8:  0.2500
+    64 9:  1.000
+    92 9:  0.5000
+    92 8:  0.5000
+    94 1:  0.5000
+    94 8:  0.5000
+    96 8:  1.000
+    27 12:  1.000
+    28 12:  0.5000
+    28 13:  0.5000
+    29 12:  0.5000
+    29 2:  0.5000
+    30 12:  0.2500
+    30 13:  0.2500
+    30 2:  0.2500
+    30 3:  0.2500
+    35 13:  1.000
+    36 13:  0.5000
+    36 3:  0.5000
+    54 13:  0.5000
+    54 16:  0.5000
+    55 13:  0.2500
+    55 16:  0.2500
+    55 3:  0.2500
+    55 9:  0.2500
+    58 16:  1.000
+    59 16:  0.5000
+    59 9:  0.5000
+DEAL::Reverse Matching:
+    27 12:  1.000
+    28 12:  0.5000
+    28 13:  0.5000
+    29 12:  0.5000
+    29 2:  0.5000
+    30 12:  0.2500
+    30 13:  0.2500
+    30 2:  0.2500
+    30 3:  0.2500
+    35 13:  1.000
+    36 13:  0.5000
+    36 3:  0.5000
+    39 2:  1.000
+    40 2:  0.5000
+    40 3:  0.5000
+    43 3:  1.000
+    54 13:  0.5000
+    54 16:  0.5000
+    55 13:  0.2500
+    55 16:  0.2500
+    55 3:  0.2500
+    55 9:  0.2500
+    58 16:  1.000
+    59 16:  0.5000
+    59 9:  0.5000
+    62 3:  0.5000
+    62 9:  0.5000
+    64 9:  1.000
+    72 2:  0.5000
+    72 0:  0.5000
+    73 2:  0.2500
+    73 3:  0.2500
+    73 0:  0.2500
+    73 1:  0.2500
+    76 3:  0.5000
+    76 1:  0.5000
+    78 0:  1.000
+    79 0:  0.5000
+    79 1:  0.5000
+    82 1:  1.000
+    90 3:  0.2500
+    90 9:  0.2500
+    90 1:  0.2500
+    90 8:  0.2500
+    92 9:  0.5000
+    92 8:  0.5000
+    94 1:  0.5000
+    94 8:  0.5000
+    96 8:  1.000
+DEAL::Triangulation:7
+DEAL::DoFs of face_1:
+DEAL:: component 0: (0 - 1.000 1.000 3.000) (8 - 1.000 -1.000 3.000) (12 - -1.000 1.000 3.000) (16 - -1.000 -1.000 3.000)
+DEAL::DoFs of face_2:
+DEAL:: component 0: (27 - -1.000 -1.000 -3.000) (58 - 1.000 -1.000 -3.000) (78 - -1.000 1.000 -3.000) (96 - 1.000 1.000 -3.000)
+DEAL::Orientation: 010
+DEAL::Matching:
+    43 3:  1.000
+    62 3:  0.5000
+    62 1:  0.5000
+    76 3:  0.5000
+    76 2:  0.5000
+    90 3:  0.2500
+    90 1:  0.2500
+    90 2:  0.2500
+    90 0:  0.2500
+    64 1:  1.000
+    92 1:  0.5000
+    92 0:  0.5000
+    82 2:  1.000
+    94 2:  0.5000
+    94 0:  0.5000
+    96 0:  1.000
+    35 9:  1.000
+    54 9:  0.5000
+    54 8:  0.5000
+    36 9:  0.5000
+    36 3:  0.5000
+    55 9:  0.2500
+    55 8:  0.2500
+    55 3:  0.2500
+    55 1:  0.2500
+    58 8:  1.000
+    59 8:  0.5000
+    59 1:  0.5000
+    39 13:  1.000
+    40 13:  0.5000
+    40 3:  0.5000
+    72 13:  0.5000
+    72 12:  0.5000
+    73 13:  0.2500
+    73 3:  0.2500
+    73 12:  0.2500
+    73 2:  0.2500
+    78 12:  1.000
+    79 12:  0.5000
+    79 2:  0.5000
+    27 16:  1.000
+    28 16:  0.5000
+    28 9:  0.5000
+    29 16:  0.5000
+    29 13:  0.5000
+    30 16:  0.2500
+    30 9:  0.2500
+    30 13:  0.2500
+    30 3:  0.2500
+DEAL::Reverse Matching:
+    27 16:  1.000
+    28 16:  0.5000
+    28 9:  0.5000
+    29 16:  0.5000
+    29 13:  0.5000
+    30 16:  0.2500
+    30 9:  0.2500
+    30 13:  0.2500
+    30 3:  0.2500
+    35 9:  1.000
+    36 9:  0.5000
+    36 3:  0.5000
+    39 13:  1.000
+    40 13:  0.5000
+    40 3:  0.5000
+    43 3:  1.000
+    54 9:  0.5000
+    54 8:  0.5000
+    55 9:  0.2500
+    55 8:  0.2500
+    55 3:  0.2500
+    55 1:  0.2500
+    58 8:  1.000
+    59 8:  0.5000
+    59 1:  0.5000
+    62 3:  0.5000
+    62 1:  0.5000
+    64 1:  1.000
+    72 13:  0.5000
+    72 12:  0.5000
+    73 13:  0.2500
+    73 3:  0.2500
+    73 12:  0.2500
+    73 2:  0.2500
+    76 3:  0.5000
+    76 2:  0.5000
+    78 12:  1.000
+    79 12:  0.5000
+    79 2:  0.5000
+    82 2:  1.000
+    90 3:  0.2500
+    90 1:  0.2500
+    90 2:  0.2500
+    90 0:  0.2500
+    92 1:  0.5000
+    92 0:  0.5000
+    94 2:  0.5000
+    94 0:  0.5000
+    96 0:  1.000

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.