]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Correctly account for inhomogeneous boundary conditions in VectorTools::project
authorDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Mon, 30 Oct 2017 17:01:19 +0000 (18:01 +0100)
committerDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Mon, 30 Oct 2017 17:15:33 +0000 (18:15 +0100)
include/deal.II/numerics/vector_tools.templates.h
tests/numerics/project_03.cc [new file with mode: 0644]
tests/numerics/project_03.output [new file with mode: 0644]

index b1eb9a1cfa7a4dfaf51c8a672a027dff69774a80..3694ce4be2bf0c6fa5cca3213c6d38c837f309cc 100644 (file)
@@ -1308,8 +1308,25 @@ namespace VectorTools
       constraints.distribute(inhomogeneities);
       inhomogeneities*=-1.;
 
-      create_right_hand_side (mapping, dof, quadrature, function, rhs, constraints);
-      mass_matrix.vmult_add(rhs, inhomogeneities);
+      {
+        create_right_hand_side (mapping, dof, quadrature, function, rhs, constraints);
+
+        // account for inhomogeneous constraints
+        inhomogeneities.update_ghost_values();
+        FEEvaluation<dim,fe_degree, fe_degree+2, components, Number> phi(*matrix_free);
+        for (unsigned int cell=0; cell<matrix_free->n_macro_cells(); ++cell)
+          {
+            phi.reinit(cell);
+            phi.read_dof_values_plain(inhomogeneities);
+            phi.evaluate(true, false);
+            for (unsigned int q=0; q<phi.n_q_points; ++q)
+              phi.submit_value(phi.get_value(q), q);
+
+            phi.integrate(true, false);
+            phi.distribute_local_to_global(rhs);
+          }
+        rhs.compress(VectorOperation::add);
+      }
 
       // now invert the matrix
       // Allow for a maximum of 5*n steps to reduce the residual by 10^-12. n
diff --git a/tests/numerics/project_03.cc b/tests/numerics/project_03.cc
new file mode 100644 (file)
index 0000000..2f1f2d9
--- /dev/null
@@ -0,0 +1,110 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2006 - 2015 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.
+//
+// ---------------------------------------------------------------------
+
+
+// check VectorTools::project for Vector<double> arguments
+// and inhomogeneous constraints
+
+
+#include "../tests.h"
+#include <deal.II/base/function.h>
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/hp/dof_handler.h>
+#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/dofs/dof_accessor.h>
+
+
+
+// define the multi-linear function x or x*y or x*y*z that we will
+// subsequently project onto the ansatz space
+template <int dim>
+class F : public Function<dim>
+{
+public:
+  virtual double value (const Point<dim> &p,
+                        const unsigned int = 0) const
+  {
+    double s = 1;
+    for (unsigned int i=0; i<dim; ++i)
+      s *= p[i];
+    return s;
+  }
+};
+
+
+template <int dim>
+void test()
+{
+  // create 2 triangulations with the
+  // same coarse grid, and refine
+  // them differently
+  Triangulation<dim> tria;
+
+  GridGenerator::hyper_cube (tria);
+  tria.refine_global (2);
+
+  FE_Q<dim> fe(1);
+  DoFHandler<dim> dh (tria);
+  dh.distribute_dofs (fe);
+
+  Vector<double> v(dh.n_dofs());
+
+  const F<dim> approximated_function;
+
+  ConstraintMatrix cm;
+  VectorTools::interpolate_boundary_values (dh, 0, approximated_function, cm);
+  cm.close ();
+
+  VectorTools::project (dh, cm, QGauss<dim>(3), approximated_function, v);
+
+  for (typename DoFHandler<dim>::active_cell_iterator cell=dh.begin_active();
+       cell != dh.end(); ++cell)
+    for (unsigned int i=0; i<GeometryInfo<dim>::vertices_per_cell; ++i)
+      {
+        deallog << cell->vertex(i) << ' ' << v(cell->vertex_dof_index(i,0))
+                << std::endl;
+
+        // check that the error is
+        // somewhat small. it won't
+        // be zero since we project
+        // and do not interpolate
+        if (std::fabs(v(cell->vertex_dof_index(i,0)) -
+                      F<dim>().value (cell->vertex(i)))
+            > 1e-4)
+          {
+            deallog << "expected value: " << F<dim>().value (cell->vertex(i)) << std::endl;
+            AssertThrow(false, ExcInternalError());
+          }
+      }
+}
+
+
+int main()
+{
+  std::ofstream logfile ("output");
+  deallog.attach(logfile);
+
+  test<1>();
+  test<2>();
+  test<3>();
+}
+
diff --git a/tests/numerics/project_03.output b/tests/numerics/project_03.output
new file mode 100644 (file)
index 0000000..8889fb7
--- /dev/null
@@ -0,0 +1,585 @@
+
+DEAL::0.00000 0
+DEAL::0.250000 0.250000
+DEAL::0.250000 0.250000
+DEAL::0.500000 0.500000
+DEAL::0.500000 0.500000
+DEAL::0.750000 0.750000
+DEAL::0.750000 0.750000
+DEAL::1.00000 1.00000
+DEAL::0.00000 0.00000 0
+DEAL::0.250000 0.00000 0
+DEAL::0.00000 0.250000 0
+DEAL::0.250000 0.250000 0.0625000
+DEAL::0.250000 0.00000 0
+DEAL::0.500000 0.00000 0
+DEAL::0.250000 0.250000 0.0625000
+DEAL::0.500000 0.250000 0.125000
+DEAL::0.00000 0.250000 0
+DEAL::0.250000 0.250000 0.0625000
+DEAL::0.00000 0.500000 0
+DEAL::0.250000 0.500000 0.125000
+DEAL::0.250000 0.250000 0.0625000
+DEAL::0.500000 0.250000 0.125000
+DEAL::0.250000 0.500000 0.125000
+DEAL::0.500000 0.500000 0.250000
+DEAL::0.500000 0.00000 0
+DEAL::0.750000 0.00000 0
+DEAL::0.500000 0.250000 0.125000
+DEAL::0.750000 0.250000 0.187500
+DEAL::0.750000 0.00000 0
+DEAL::1.00000 0.00000 0
+DEAL::0.750000 0.250000 0.187500
+DEAL::1.00000 0.250000 0.250000
+DEAL::0.500000 0.250000 0.125000
+DEAL::0.750000 0.250000 0.187500
+DEAL::0.500000 0.500000 0.250000
+DEAL::0.750000 0.500000 0.375000
+DEAL::0.750000 0.250000 0.187500
+DEAL::1.00000 0.250000 0.250000
+DEAL::0.750000 0.500000 0.375000
+DEAL::1.00000 0.500000 0.500000
+DEAL::0.00000 0.500000 0
+DEAL::0.250000 0.500000 0.125000
+DEAL::0.00000 0.750000 0
+DEAL::0.250000 0.750000 0.187500
+DEAL::0.250000 0.500000 0.125000
+DEAL::0.500000 0.500000 0.250000
+DEAL::0.250000 0.750000 0.187500
+DEAL::0.500000 0.750000 0.375000
+DEAL::0.00000 0.750000 0
+DEAL::0.250000 0.750000 0.187500
+DEAL::0.00000 1.00000 0
+DEAL::0.250000 1.00000 0.250000
+DEAL::0.250000 0.750000 0.187500
+DEAL::0.500000 0.750000 0.375000
+DEAL::0.250000 1.00000 0.250000
+DEAL::0.500000 1.00000 0.500000
+DEAL::0.500000 0.500000 0.250000
+DEAL::0.750000 0.500000 0.375000
+DEAL::0.500000 0.750000 0.375000
+DEAL::0.750000 0.750000 0.562500
+DEAL::0.750000 0.500000 0.375000
+DEAL::1.00000 0.500000 0.500000
+DEAL::0.750000 0.750000 0.562500
+DEAL::1.00000 0.750000 0.750000
+DEAL::0.500000 0.750000 0.375000
+DEAL::0.750000 0.750000 0.562500
+DEAL::0.500000 1.00000 0.500000
+DEAL::0.750000 1.00000 0.750000
+DEAL::0.750000 0.750000 0.562500
+DEAL::1.00000 0.750000 0.750000
+DEAL::0.750000 1.00000 0.750000
+DEAL::1.00000 1.00000 1.00000
+DEAL::0.00000 0.00000 0.00000 0
+DEAL::0.250000 0.00000 0.00000 0
+DEAL::0.00000 0.250000 0.00000 0
+DEAL::0.250000 0.250000 0.00000 0
+DEAL::0.00000 0.00000 0.250000 0
+DEAL::0.250000 0.00000 0.250000 0
+DEAL::0.00000 0.250000 0.250000 0
+DEAL::0.250000 0.250000 0.250000 0.0156250
+DEAL::0.250000 0.00000 0.00000 0
+DEAL::0.500000 0.00000 0.00000 0
+DEAL::0.250000 0.250000 0.00000 0
+DEAL::0.500000 0.250000 0.00000 0
+DEAL::0.250000 0.00000 0.250000 0
+DEAL::0.500000 0.00000 0.250000 0
+DEAL::0.250000 0.250000 0.250000 0.0156250
+DEAL::0.500000 0.250000 0.250000 0.0312500
+DEAL::0.00000 0.250000 0.00000 0
+DEAL::0.250000 0.250000 0.00000 0
+DEAL::0.00000 0.500000 0.00000 0
+DEAL::0.250000 0.500000 0.00000 0
+DEAL::0.00000 0.250000 0.250000 0
+DEAL::0.250000 0.250000 0.250000 0.0156250
+DEAL::0.00000 0.500000 0.250000 0
+DEAL::0.250000 0.500000 0.250000 0.0312500
+DEAL::0.250000 0.250000 0.00000 0
+DEAL::0.500000 0.250000 0.00000 0
+DEAL::0.250000 0.500000 0.00000 0
+DEAL::0.500000 0.500000 0.00000 0
+DEAL::0.250000 0.250000 0.250000 0.0156250
+DEAL::0.500000 0.250000 0.250000 0.0312500
+DEAL::0.250000 0.500000 0.250000 0.0312500
+DEAL::0.500000 0.500000 0.250000 0.0625000
+DEAL::0.00000 0.00000 0.250000 0
+DEAL::0.250000 0.00000 0.250000 0
+DEAL::0.00000 0.250000 0.250000 0
+DEAL::0.250000 0.250000 0.250000 0.0156250
+DEAL::0.00000 0.00000 0.500000 0
+DEAL::0.250000 0.00000 0.500000 0
+DEAL::0.00000 0.250000 0.500000 0
+DEAL::0.250000 0.250000 0.500000 0.0312500
+DEAL::0.250000 0.00000 0.250000 0
+DEAL::0.500000 0.00000 0.250000 0
+DEAL::0.250000 0.250000 0.250000 0.0156250
+DEAL::0.500000 0.250000 0.250000 0.0312500
+DEAL::0.250000 0.00000 0.500000 0
+DEAL::0.500000 0.00000 0.500000 0
+DEAL::0.250000 0.250000 0.500000 0.0312500
+DEAL::0.500000 0.250000 0.500000 0.0625000
+DEAL::0.00000 0.250000 0.250000 0
+DEAL::0.250000 0.250000 0.250000 0.0156250
+DEAL::0.00000 0.500000 0.250000 0
+DEAL::0.250000 0.500000 0.250000 0.0312500
+DEAL::0.00000 0.250000 0.500000 0
+DEAL::0.250000 0.250000 0.500000 0.0312500
+DEAL::0.00000 0.500000 0.500000 0
+DEAL::0.250000 0.500000 0.500000 0.0625000
+DEAL::0.250000 0.250000 0.250000 0.0156250
+DEAL::0.500000 0.250000 0.250000 0.0312500
+DEAL::0.250000 0.500000 0.250000 0.0312500
+DEAL::0.500000 0.500000 0.250000 0.0625000
+DEAL::0.250000 0.250000 0.500000 0.0312500
+DEAL::0.500000 0.250000 0.500000 0.0625000
+DEAL::0.250000 0.500000 0.500000 0.0625000
+DEAL::0.500000 0.500000 0.500000 0.125000
+DEAL::0.500000 0.00000 0.00000 0
+DEAL::0.750000 0.00000 0.00000 0
+DEAL::0.500000 0.250000 0.00000 0
+DEAL::0.750000 0.250000 0.00000 0
+DEAL::0.500000 0.00000 0.250000 0
+DEAL::0.750000 0.00000 0.250000 0
+DEAL::0.500000 0.250000 0.250000 0.0312500
+DEAL::0.750000 0.250000 0.250000 0.0468750
+DEAL::0.750000 0.00000 0.00000 0
+DEAL::1.00000 0.00000 0.00000 0
+DEAL::0.750000 0.250000 0.00000 0
+DEAL::1.00000 0.250000 0.00000 0
+DEAL::0.750000 0.00000 0.250000 0
+DEAL::1.00000 0.00000 0.250000 0
+DEAL::0.750000 0.250000 0.250000 0.0468750
+DEAL::1.00000 0.250000 0.250000 0.0625000
+DEAL::0.500000 0.250000 0.00000 0
+DEAL::0.750000 0.250000 0.00000 0
+DEAL::0.500000 0.500000 0.00000 0
+DEAL::0.750000 0.500000 0.00000 0
+DEAL::0.500000 0.250000 0.250000 0.0312500
+DEAL::0.750000 0.250000 0.250000 0.0468750
+DEAL::0.500000 0.500000 0.250000 0.0625000
+DEAL::0.750000 0.500000 0.250000 0.0937500
+DEAL::0.750000 0.250000 0.00000 0
+DEAL::1.00000 0.250000 0.00000 0
+DEAL::0.750000 0.500000 0.00000 0
+DEAL::1.00000 0.500000 0.00000 0
+DEAL::0.750000 0.250000 0.250000 0.0468750
+DEAL::1.00000 0.250000 0.250000 0.0625000
+DEAL::0.750000 0.500000 0.250000 0.0937500
+DEAL::1.00000 0.500000 0.250000 0.125000
+DEAL::0.500000 0.00000 0.250000 0
+DEAL::0.750000 0.00000 0.250000 0
+DEAL::0.500000 0.250000 0.250000 0.0312500
+DEAL::0.750000 0.250000 0.250000 0.0468750
+DEAL::0.500000 0.00000 0.500000 0
+DEAL::0.750000 0.00000 0.500000 0
+DEAL::0.500000 0.250000 0.500000 0.0625000
+DEAL::0.750000 0.250000 0.500000 0.0937500
+DEAL::0.750000 0.00000 0.250000 0
+DEAL::1.00000 0.00000 0.250000 0
+DEAL::0.750000 0.250000 0.250000 0.0468750
+DEAL::1.00000 0.250000 0.250000 0.0625000
+DEAL::0.750000 0.00000 0.500000 0
+DEAL::1.00000 0.00000 0.500000 0
+DEAL::0.750000 0.250000 0.500000 0.0937500
+DEAL::1.00000 0.250000 0.500000 0.125000
+DEAL::0.500000 0.250000 0.250000 0.0312500
+DEAL::0.750000 0.250000 0.250000 0.0468750
+DEAL::0.500000 0.500000 0.250000 0.0625000
+DEAL::0.750000 0.500000 0.250000 0.0937500
+DEAL::0.500000 0.250000 0.500000 0.0625000
+DEAL::0.750000 0.250000 0.500000 0.0937500
+DEAL::0.500000 0.500000 0.500000 0.125000
+DEAL::0.750000 0.500000 0.500000 0.187500
+DEAL::0.750000 0.250000 0.250000 0.0468750
+DEAL::1.00000 0.250000 0.250000 0.0625000
+DEAL::0.750000 0.500000 0.250000 0.0937500
+DEAL::1.00000 0.500000 0.250000 0.125000
+DEAL::0.750000 0.250000 0.500000 0.0937500
+DEAL::1.00000 0.250000 0.500000 0.125000
+DEAL::0.750000 0.500000 0.500000 0.187500
+DEAL::1.00000 0.500000 0.500000 0.250000
+DEAL::0.00000 0.500000 0.00000 0
+DEAL::0.250000 0.500000 0.00000 0
+DEAL::0.00000 0.750000 0.00000 0
+DEAL::0.250000 0.750000 0.00000 0
+DEAL::0.00000 0.500000 0.250000 0
+DEAL::0.250000 0.500000 0.250000 0.0312500
+DEAL::0.00000 0.750000 0.250000 0
+DEAL::0.250000 0.750000 0.250000 0.0468750
+DEAL::0.250000 0.500000 0.00000 0
+DEAL::0.500000 0.500000 0.00000 0
+DEAL::0.250000 0.750000 0.00000 0
+DEAL::0.500000 0.750000 0.00000 0
+DEAL::0.250000 0.500000 0.250000 0.0312500
+DEAL::0.500000 0.500000 0.250000 0.0625000
+DEAL::0.250000 0.750000 0.250000 0.0468750
+DEAL::0.500000 0.750000 0.250000 0.0937500
+DEAL::0.00000 0.750000 0.00000 0
+DEAL::0.250000 0.750000 0.00000 0
+DEAL::0.00000 1.00000 0.00000 0
+DEAL::0.250000 1.00000 0.00000 0
+DEAL::0.00000 0.750000 0.250000 0
+DEAL::0.250000 0.750000 0.250000 0.0468750
+DEAL::0.00000 1.00000 0.250000 0
+DEAL::0.250000 1.00000 0.250000 0.0625000
+DEAL::0.250000 0.750000 0.00000 0
+DEAL::0.500000 0.750000 0.00000 0
+DEAL::0.250000 1.00000 0.00000 0
+DEAL::0.500000 1.00000 0.00000 0
+DEAL::0.250000 0.750000 0.250000 0.0468750
+DEAL::0.500000 0.750000 0.250000 0.0937500
+DEAL::0.250000 1.00000 0.250000 0.0625000
+DEAL::0.500000 1.00000 0.250000 0.125000
+DEAL::0.00000 0.500000 0.250000 0
+DEAL::0.250000 0.500000 0.250000 0.0312500
+DEAL::0.00000 0.750000 0.250000 0
+DEAL::0.250000 0.750000 0.250000 0.0468750
+DEAL::0.00000 0.500000 0.500000 0
+DEAL::0.250000 0.500000 0.500000 0.0625000
+DEAL::0.00000 0.750000 0.500000 0
+DEAL::0.250000 0.750000 0.500000 0.0937500
+DEAL::0.250000 0.500000 0.250000 0.0312500
+DEAL::0.500000 0.500000 0.250000 0.0625000
+DEAL::0.250000 0.750000 0.250000 0.0468750
+DEAL::0.500000 0.750000 0.250000 0.0937500
+DEAL::0.250000 0.500000 0.500000 0.0625000
+DEAL::0.500000 0.500000 0.500000 0.125000
+DEAL::0.250000 0.750000 0.500000 0.0937500
+DEAL::0.500000 0.750000 0.500000 0.187500
+DEAL::0.00000 0.750000 0.250000 0
+DEAL::0.250000 0.750000 0.250000 0.0468750
+DEAL::0.00000 1.00000 0.250000 0
+DEAL::0.250000 1.00000 0.250000 0.0625000
+DEAL::0.00000 0.750000 0.500000 0
+DEAL::0.250000 0.750000 0.500000 0.0937500
+DEAL::0.00000 1.00000 0.500000 0
+DEAL::0.250000 1.00000 0.500000 0.125000
+DEAL::0.250000 0.750000 0.250000 0.0468750
+DEAL::0.500000 0.750000 0.250000 0.0937500
+DEAL::0.250000 1.00000 0.250000 0.0625000
+DEAL::0.500000 1.00000 0.250000 0.125000
+DEAL::0.250000 0.750000 0.500000 0.0937500
+DEAL::0.500000 0.750000 0.500000 0.187500
+DEAL::0.250000 1.00000 0.500000 0.125000
+DEAL::0.500000 1.00000 0.500000 0.250000
+DEAL::0.500000 0.500000 0.00000 0
+DEAL::0.750000 0.500000 0.00000 0
+DEAL::0.500000 0.750000 0.00000 0
+DEAL::0.750000 0.750000 0.00000 0
+DEAL::0.500000 0.500000 0.250000 0.0625000
+DEAL::0.750000 0.500000 0.250000 0.0937500
+DEAL::0.500000 0.750000 0.250000 0.0937500
+DEAL::0.750000 0.750000 0.250000 0.140625
+DEAL::0.750000 0.500000 0.00000 0
+DEAL::1.00000 0.500000 0.00000 0
+DEAL::0.750000 0.750000 0.00000 0
+DEAL::1.00000 0.750000 0.00000 0
+DEAL::0.750000 0.500000 0.250000 0.0937500
+DEAL::1.00000 0.500000 0.250000 0.125000
+DEAL::0.750000 0.750000 0.250000 0.140625
+DEAL::1.00000 0.750000 0.250000 0.187500
+DEAL::0.500000 0.750000 0.00000 0
+DEAL::0.750000 0.750000 0.00000 0
+DEAL::0.500000 1.00000 0.00000 0
+DEAL::0.750000 1.00000 0.00000 0
+DEAL::0.500000 0.750000 0.250000 0.0937500
+DEAL::0.750000 0.750000 0.250000 0.140625
+DEAL::0.500000 1.00000 0.250000 0.125000
+DEAL::0.750000 1.00000 0.250000 0.187500
+DEAL::0.750000 0.750000 0.00000 0
+DEAL::1.00000 0.750000 0.00000 0
+DEAL::0.750000 1.00000 0.00000 0
+DEAL::1.00000 1.00000 0.00000 0
+DEAL::0.750000 0.750000 0.250000 0.140625
+DEAL::1.00000 0.750000 0.250000 0.187500
+DEAL::0.750000 1.00000 0.250000 0.187500
+DEAL::1.00000 1.00000 0.250000 0.250000
+DEAL::0.500000 0.500000 0.250000 0.0625000
+DEAL::0.750000 0.500000 0.250000 0.0937500
+DEAL::0.500000 0.750000 0.250000 0.0937500
+DEAL::0.750000 0.750000 0.250000 0.140625
+DEAL::0.500000 0.500000 0.500000 0.125000
+DEAL::0.750000 0.500000 0.500000 0.187500
+DEAL::0.500000 0.750000 0.500000 0.187500
+DEAL::0.750000 0.750000 0.500000 0.281250
+DEAL::0.750000 0.500000 0.250000 0.0937500
+DEAL::1.00000 0.500000 0.250000 0.125000
+DEAL::0.750000 0.750000 0.250000 0.140625
+DEAL::1.00000 0.750000 0.250000 0.187500
+DEAL::0.750000 0.500000 0.500000 0.187500
+DEAL::1.00000 0.500000 0.500000 0.250000
+DEAL::0.750000 0.750000 0.500000 0.281250
+DEAL::1.00000 0.750000 0.500000 0.375000
+DEAL::0.500000 0.750000 0.250000 0.0937500
+DEAL::0.750000 0.750000 0.250000 0.140625
+DEAL::0.500000 1.00000 0.250000 0.125000
+DEAL::0.750000 1.00000 0.250000 0.187500
+DEAL::0.500000 0.750000 0.500000 0.187500
+DEAL::0.750000 0.750000 0.500000 0.281250
+DEAL::0.500000 1.00000 0.500000 0.250000
+DEAL::0.750000 1.00000 0.500000 0.375000
+DEAL::0.750000 0.750000 0.250000 0.140625
+DEAL::1.00000 0.750000 0.250000 0.187500
+DEAL::0.750000 1.00000 0.250000 0.187500
+DEAL::1.00000 1.00000 0.250000 0.250000
+DEAL::0.750000 0.750000 0.500000 0.281250
+DEAL::1.00000 0.750000 0.500000 0.375000
+DEAL::0.750000 1.00000 0.500000 0.375000
+DEAL::1.00000 1.00000 0.500000 0.500000
+DEAL::0.00000 0.00000 0.500000 0
+DEAL::0.250000 0.00000 0.500000 0
+DEAL::0.00000 0.250000 0.500000 0
+DEAL::0.250000 0.250000 0.500000 0.0312500
+DEAL::0.00000 0.00000 0.750000 0
+DEAL::0.250000 0.00000 0.750000 0
+DEAL::0.00000 0.250000 0.750000 0
+DEAL::0.250000 0.250000 0.750000 0.0468750
+DEAL::0.250000 0.00000 0.500000 0
+DEAL::0.500000 0.00000 0.500000 0
+DEAL::0.250000 0.250000 0.500000 0.0312500
+DEAL::0.500000 0.250000 0.500000 0.0625000
+DEAL::0.250000 0.00000 0.750000 0
+DEAL::0.500000 0.00000 0.750000 0
+DEAL::0.250000 0.250000 0.750000 0.0468750
+DEAL::0.500000 0.250000 0.750000 0.0937500
+DEAL::0.00000 0.250000 0.500000 0
+DEAL::0.250000 0.250000 0.500000 0.0312500
+DEAL::0.00000 0.500000 0.500000 0
+DEAL::0.250000 0.500000 0.500000 0.0625000
+DEAL::0.00000 0.250000 0.750000 0
+DEAL::0.250000 0.250000 0.750000 0.0468750
+DEAL::0.00000 0.500000 0.750000 0
+DEAL::0.250000 0.500000 0.750000 0.0937500
+DEAL::0.250000 0.250000 0.500000 0.0312500
+DEAL::0.500000 0.250000 0.500000 0.0625000
+DEAL::0.250000 0.500000 0.500000 0.0625000
+DEAL::0.500000 0.500000 0.500000 0.125000
+DEAL::0.250000 0.250000 0.750000 0.0468750
+DEAL::0.500000 0.250000 0.750000 0.0937500
+DEAL::0.250000 0.500000 0.750000 0.0937500
+DEAL::0.500000 0.500000 0.750000 0.187500
+DEAL::0.00000 0.00000 0.750000 0
+DEAL::0.250000 0.00000 0.750000 0
+DEAL::0.00000 0.250000 0.750000 0
+DEAL::0.250000 0.250000 0.750000 0.0468750
+DEAL::0.00000 0.00000 1.00000 0
+DEAL::0.250000 0.00000 1.00000 0
+DEAL::0.00000 0.250000 1.00000 0
+DEAL::0.250000 0.250000 1.00000 0.0625000
+DEAL::0.250000 0.00000 0.750000 0
+DEAL::0.500000 0.00000 0.750000 0
+DEAL::0.250000 0.250000 0.750000 0.0468750
+DEAL::0.500000 0.250000 0.750000 0.0937500
+DEAL::0.250000 0.00000 1.00000 0
+DEAL::0.500000 0.00000 1.00000 0
+DEAL::0.250000 0.250000 1.00000 0.0625000
+DEAL::0.500000 0.250000 1.00000 0.125000
+DEAL::0.00000 0.250000 0.750000 0
+DEAL::0.250000 0.250000 0.750000 0.0468750
+DEAL::0.00000 0.500000 0.750000 0
+DEAL::0.250000 0.500000 0.750000 0.0937500
+DEAL::0.00000 0.250000 1.00000 0
+DEAL::0.250000 0.250000 1.00000 0.0625000
+DEAL::0.00000 0.500000 1.00000 0
+DEAL::0.250000 0.500000 1.00000 0.125000
+DEAL::0.250000 0.250000 0.750000 0.0468750
+DEAL::0.500000 0.250000 0.750000 0.0937500
+DEAL::0.250000 0.500000 0.750000 0.0937500
+DEAL::0.500000 0.500000 0.750000 0.187500
+DEAL::0.250000 0.250000 1.00000 0.0625000
+DEAL::0.500000 0.250000 1.00000 0.125000
+DEAL::0.250000 0.500000 1.00000 0.125000
+DEAL::0.500000 0.500000 1.00000 0.250000
+DEAL::0.500000 0.00000 0.500000 0
+DEAL::0.750000 0.00000 0.500000 0
+DEAL::0.500000 0.250000 0.500000 0.0625000
+DEAL::0.750000 0.250000 0.500000 0.0937500
+DEAL::0.500000 0.00000 0.750000 0
+DEAL::0.750000 0.00000 0.750000 0
+DEAL::0.500000 0.250000 0.750000 0.0937500
+DEAL::0.750000 0.250000 0.750000 0.140625
+DEAL::0.750000 0.00000 0.500000 0
+DEAL::1.00000 0.00000 0.500000 0
+DEAL::0.750000 0.250000 0.500000 0.0937500
+DEAL::1.00000 0.250000 0.500000 0.125000
+DEAL::0.750000 0.00000 0.750000 0
+DEAL::1.00000 0.00000 0.750000 0
+DEAL::0.750000 0.250000 0.750000 0.140625
+DEAL::1.00000 0.250000 0.750000 0.187500
+DEAL::0.500000 0.250000 0.500000 0.0625000
+DEAL::0.750000 0.250000 0.500000 0.0937500
+DEAL::0.500000 0.500000 0.500000 0.125000
+DEAL::0.750000 0.500000 0.500000 0.187500
+DEAL::0.500000 0.250000 0.750000 0.0937500
+DEAL::0.750000 0.250000 0.750000 0.140625
+DEAL::0.500000 0.500000 0.750000 0.187500
+DEAL::0.750000 0.500000 0.750000 0.281250
+DEAL::0.750000 0.250000 0.500000 0.0937500
+DEAL::1.00000 0.250000 0.500000 0.125000
+DEAL::0.750000 0.500000 0.500000 0.187500
+DEAL::1.00000 0.500000 0.500000 0.250000
+DEAL::0.750000 0.250000 0.750000 0.140625
+DEAL::1.00000 0.250000 0.750000 0.187500
+DEAL::0.750000 0.500000 0.750000 0.281250
+DEAL::1.00000 0.500000 0.750000 0.375000
+DEAL::0.500000 0.00000 0.750000 0
+DEAL::0.750000 0.00000 0.750000 0
+DEAL::0.500000 0.250000 0.750000 0.0937500
+DEAL::0.750000 0.250000 0.750000 0.140625
+DEAL::0.500000 0.00000 1.00000 0
+DEAL::0.750000 0.00000 1.00000 0
+DEAL::0.500000 0.250000 1.00000 0.125000
+DEAL::0.750000 0.250000 1.00000 0.187500
+DEAL::0.750000 0.00000 0.750000 0
+DEAL::1.00000 0.00000 0.750000 0
+DEAL::0.750000 0.250000 0.750000 0.140625
+DEAL::1.00000 0.250000 0.750000 0.187500
+DEAL::0.750000 0.00000 1.00000 0
+DEAL::1.00000 0.00000 1.00000 0
+DEAL::0.750000 0.250000 1.00000 0.187500
+DEAL::1.00000 0.250000 1.00000 0.250000
+DEAL::0.500000 0.250000 0.750000 0.0937500
+DEAL::0.750000 0.250000 0.750000 0.140625
+DEAL::0.500000 0.500000 0.750000 0.187500
+DEAL::0.750000 0.500000 0.750000 0.281250
+DEAL::0.500000 0.250000 1.00000 0.125000
+DEAL::0.750000 0.250000 1.00000 0.187500
+DEAL::0.500000 0.500000 1.00000 0.250000
+DEAL::0.750000 0.500000 1.00000 0.375000
+DEAL::0.750000 0.250000 0.750000 0.140625
+DEAL::1.00000 0.250000 0.750000 0.187500
+DEAL::0.750000 0.500000 0.750000 0.281250
+DEAL::1.00000 0.500000 0.750000 0.375000
+DEAL::0.750000 0.250000 1.00000 0.187500
+DEAL::1.00000 0.250000 1.00000 0.250000
+DEAL::0.750000 0.500000 1.00000 0.375000
+DEAL::1.00000 0.500000 1.00000 0.500000
+DEAL::0.00000 0.500000 0.500000 0
+DEAL::0.250000 0.500000 0.500000 0.0625000
+DEAL::0.00000 0.750000 0.500000 0
+DEAL::0.250000 0.750000 0.500000 0.0937500
+DEAL::0.00000 0.500000 0.750000 0
+DEAL::0.250000 0.500000 0.750000 0.0937500
+DEAL::0.00000 0.750000 0.750000 0
+DEAL::0.250000 0.750000 0.750000 0.140625
+DEAL::0.250000 0.500000 0.500000 0.0625000
+DEAL::0.500000 0.500000 0.500000 0.125000
+DEAL::0.250000 0.750000 0.500000 0.0937500
+DEAL::0.500000 0.750000 0.500000 0.187500
+DEAL::0.250000 0.500000 0.750000 0.0937500
+DEAL::0.500000 0.500000 0.750000 0.187500
+DEAL::0.250000 0.750000 0.750000 0.140625
+DEAL::0.500000 0.750000 0.750000 0.281250
+DEAL::0.00000 0.750000 0.500000 0
+DEAL::0.250000 0.750000 0.500000 0.0937500
+DEAL::0.00000 1.00000 0.500000 0
+DEAL::0.250000 1.00000 0.500000 0.125000
+DEAL::0.00000 0.750000 0.750000 0
+DEAL::0.250000 0.750000 0.750000 0.140625
+DEAL::0.00000 1.00000 0.750000 0
+DEAL::0.250000 1.00000 0.750000 0.187500
+DEAL::0.250000 0.750000 0.500000 0.0937500
+DEAL::0.500000 0.750000 0.500000 0.187500
+DEAL::0.250000 1.00000 0.500000 0.125000
+DEAL::0.500000 1.00000 0.500000 0.250000
+DEAL::0.250000 0.750000 0.750000 0.140625
+DEAL::0.500000 0.750000 0.750000 0.281250
+DEAL::0.250000 1.00000 0.750000 0.187500
+DEAL::0.500000 1.00000 0.750000 0.375000
+DEAL::0.00000 0.500000 0.750000 0
+DEAL::0.250000 0.500000 0.750000 0.0937500
+DEAL::0.00000 0.750000 0.750000 0
+DEAL::0.250000 0.750000 0.750000 0.140625
+DEAL::0.00000 0.500000 1.00000 0
+DEAL::0.250000 0.500000 1.00000 0.125000
+DEAL::0.00000 0.750000 1.00000 0
+DEAL::0.250000 0.750000 1.00000 0.187500
+DEAL::0.250000 0.500000 0.750000 0.0937500
+DEAL::0.500000 0.500000 0.750000 0.187500
+DEAL::0.250000 0.750000 0.750000 0.140625
+DEAL::0.500000 0.750000 0.750000 0.281250
+DEAL::0.250000 0.500000 1.00000 0.125000
+DEAL::0.500000 0.500000 1.00000 0.250000
+DEAL::0.250000 0.750000 1.00000 0.187500
+DEAL::0.500000 0.750000 1.00000 0.375000
+DEAL::0.00000 0.750000 0.750000 0
+DEAL::0.250000 0.750000 0.750000 0.140625
+DEAL::0.00000 1.00000 0.750000 0
+DEAL::0.250000 1.00000 0.750000 0.187500
+DEAL::0.00000 0.750000 1.00000 0
+DEAL::0.250000 0.750000 1.00000 0.187500
+DEAL::0.00000 1.00000 1.00000 0
+DEAL::0.250000 1.00000 1.00000 0.250000
+DEAL::0.250000 0.750000 0.750000 0.140625
+DEAL::0.500000 0.750000 0.750000 0.281250
+DEAL::0.250000 1.00000 0.750000 0.187500
+DEAL::0.500000 1.00000 0.750000 0.375000
+DEAL::0.250000 0.750000 1.00000 0.187500
+DEAL::0.500000 0.750000 1.00000 0.375000
+DEAL::0.250000 1.00000 1.00000 0.250000
+DEAL::0.500000 1.00000 1.00000 0.500000
+DEAL::0.500000 0.500000 0.500000 0.125000
+DEAL::0.750000 0.500000 0.500000 0.187500
+DEAL::0.500000 0.750000 0.500000 0.187500
+DEAL::0.750000 0.750000 0.500000 0.281250
+DEAL::0.500000 0.500000 0.750000 0.187500
+DEAL::0.750000 0.500000 0.750000 0.281250
+DEAL::0.500000 0.750000 0.750000 0.281250
+DEAL::0.750000 0.750000 0.750000 0.421875
+DEAL::0.750000 0.500000 0.500000 0.187500
+DEAL::1.00000 0.500000 0.500000 0.250000
+DEAL::0.750000 0.750000 0.500000 0.281250
+DEAL::1.00000 0.750000 0.500000 0.375000
+DEAL::0.750000 0.500000 0.750000 0.281250
+DEAL::1.00000 0.500000 0.750000 0.375000
+DEAL::0.750000 0.750000 0.750000 0.421875
+DEAL::1.00000 0.750000 0.750000 0.562500
+DEAL::0.500000 0.750000 0.500000 0.187500
+DEAL::0.750000 0.750000 0.500000 0.281250
+DEAL::0.500000 1.00000 0.500000 0.250000
+DEAL::0.750000 1.00000 0.500000 0.375000
+DEAL::0.500000 0.750000 0.750000 0.281250
+DEAL::0.750000 0.750000 0.750000 0.421875
+DEAL::0.500000 1.00000 0.750000 0.375000
+DEAL::0.750000 1.00000 0.750000 0.562500
+DEAL::0.750000 0.750000 0.500000 0.281250
+DEAL::1.00000 0.750000 0.500000 0.375000
+DEAL::0.750000 1.00000 0.500000 0.375000
+DEAL::1.00000 1.00000 0.500000 0.500000
+DEAL::0.750000 0.750000 0.750000 0.421875
+DEAL::1.00000 0.750000 0.750000 0.562500
+DEAL::0.750000 1.00000 0.750000 0.562500
+DEAL::1.00000 1.00000 0.750000 0.750000
+DEAL::0.500000 0.500000 0.750000 0.187500
+DEAL::0.750000 0.500000 0.750000 0.281250
+DEAL::0.500000 0.750000 0.750000 0.281250
+DEAL::0.750000 0.750000 0.750000 0.421875
+DEAL::0.500000 0.500000 1.00000 0.250000
+DEAL::0.750000 0.500000 1.00000 0.375000
+DEAL::0.500000 0.750000 1.00000 0.375000
+DEAL::0.750000 0.750000 1.00000 0.562500
+DEAL::0.750000 0.500000 0.750000 0.281250
+DEAL::1.00000 0.500000 0.750000 0.375000
+DEAL::0.750000 0.750000 0.750000 0.421875
+DEAL::1.00000 0.750000 0.750000 0.562500
+DEAL::0.750000 0.500000 1.00000 0.375000
+DEAL::1.00000 0.500000 1.00000 0.500000
+DEAL::0.750000 0.750000 1.00000 0.562500
+DEAL::1.00000 0.750000 1.00000 0.750000
+DEAL::0.500000 0.750000 0.750000 0.281250
+DEAL::0.750000 0.750000 0.750000 0.421875
+DEAL::0.500000 1.00000 0.750000 0.375000
+DEAL::0.750000 1.00000 0.750000 0.562500
+DEAL::0.500000 0.750000 1.00000 0.375000
+DEAL::0.750000 0.750000 1.00000 0.562500
+DEAL::0.500000 1.00000 1.00000 0.500000
+DEAL::0.750000 1.00000 1.00000 0.750000
+DEAL::0.750000 0.750000 0.750000 0.421875
+DEAL::1.00000 0.750000 0.750000 0.562500
+DEAL::0.750000 1.00000 0.750000 0.562500
+DEAL::1.00000 1.00000 0.750000 0.750000
+DEAL::0.750000 0.750000 1.00000 0.562500
+DEAL::1.00000 0.750000 1.00000 0.750000
+DEAL::0.750000 1.00000 1.00000 0.750000
+DEAL::1.00000 1.00000 1.00000 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.