]> https://gitweb.dealii.org/ - dealii.git/commitdiff
QSimplex
authorLuca Heltai <luca.heltai@sissa.it>
Wed, 20 Dec 2017 23:57:26 +0000 (00:57 +0100)
committerLuca Heltai <luca.heltai@sissa.it>
Fri, 29 Dec 2017 11:15:13 +0000 (12:15 +0100)
doc/news/changes/minor/20171221LucaHeltai [new file with mode: 0644]
include/deal.II/base/quadrature_lib.h
source/base/quadrature_lib.cc
tests/base/quadrature_simplex_01.cc [new file with mode: 0644]
tests/base/quadrature_simplex_01.output [new file with mode: 0644]

diff --git a/doc/news/changes/minor/20171221LucaHeltai b/doc/news/changes/minor/20171221LucaHeltai
new file mode 100644 (file)
index 0000000..a785488
--- /dev/null
@@ -0,0 +1,3 @@
+New: Added QSimplex class to perform quadratures on reference simplices, and on their affine transformations. 
+<br> 
+(Luca Heltai, 2017/12/21)
index 3c938fc5ed68b8299ea90d7389693bb79e423048..9e8bf23a43a1f40e9b31ad8a2e43521c511535d9 100644 (file)
@@ -647,6 +647,43 @@ private:
 
 };
 
+/**
+ * Given an arbitrary quadrature formula, return one that chops the quadrature
+ * points above the principal diagonals.
+ *
+ * In general the resulting quadrature is not very useful, unless the
+ * quadrature you started from has been constructed specifically to integrate
+ * over triangles or tetrahedra. This class ensures that the resulting
+ * quadrature formula only has quadrature points in the reference simplex.
+ *
+ * @author Luca Heltai, 2017.
+ */
+template <int dim>
+class QSimplex : public Quadrature<dim>
+{
+public:
+  /**
+   * Construct a quadrature that only contains the points that are in the lower
+   * left reference simplex.
+   *
+   * @param[in] quad The input quadrature.
+   */
+  QSimplex(const Quadrature<dim> &quad);
+
+  /**
+   * Return an affine transformation of this quadrature, that can be used to integrate
+   * on the simplex identified by `vertices`.
+   *
+   * Both the quadrature point locations and the weights are transformed, so that you
+   * can effectively use the resulting quadrature to integrate on the simplex.
+   *
+   * @param[in] vertices The vertices of the simplex you wish to integrate on
+   * @return A quadrature object that can be used to integrate on the simplex
+   */
+  Quadrature<dim> affine_transformation(const std::array<Point<dim>, dim+1> &vertices);
+
+};
+
 /*@}*/
 
 /* -------------- declaration of explicit specializations ------------- */
index 64cdcba45083000ab366afb8e33abf6600ca0580..9c0393b435e8183d16edaa6055faebe85e66ffff 100644 (file)
@@ -1345,6 +1345,54 @@ QGaussLobattoChebyshev<dim>::QGaussLobattoChebyshev (const unsigned int n)
   Quadrature<dim> (QGaussLobattoChebyshev<1>(n))
 {}
 
+
+
+template<int dim>
+QSimplex<dim>::QSimplex(const Quadrature<dim> &quad)
+{
+  std::vector<Point<dim> > qpoints;
+  std::vector<double > weights;
+
+  for (unsigned int i=0; i<quad.size(); ++i)
+    {
+      double r=0;
+      for (unsigned int d=0; d<dim; ++d)
+        r += quad.point(i)[d];
+      if ((r-1) <= 0)
+        {
+          this->quadrature_points.push_back(quad.point(i));
+          this->weights.push_back(quad.weight(i));
+        }
+    }
+}
+
+
+
+template<int dim>
+Quadrature<dim>
+QSimplex<dim>::affine_transformation(const std::array<Point<dim>, dim+1>& vertices)
+{
+  std::vector<Point<dim> > qp(this->size());
+  std::vector<double> w(this->size());
+
+  unsigned int i=0;
+  Tensor<2,dim> B;
+  for (unsigned int d=0; d<dim; ++d)
+    B[d] = vertices[d+1]-vertices[0];
+
+  B = transpose(B);
+  auto J = determinant(B);
+
+  for (unsigned int i=0; i<this->size(); ++i)
+    {
+      qp[i] = Point<dim>(vertices[0]+B*this->point(i));
+      w[i] = J*this->weight(i);
+    }
+  return Quadrature<dim>(qp, w);
+}
+
+
+
 // explicit specialization
 // note that 1d formulae are specialized by implementation above
 template class QGauss<2>;
@@ -1383,4 +1431,8 @@ template class QGaussLobattoChebyshev<1>;
 template class QGaussLobattoChebyshev<2>;
 template class QGaussLobattoChebyshev<3>;
 
+template class QSimplex<1>;
+template class QSimplex<2>;
+template class QSimplex<3>;
+
 DEAL_II_NAMESPACE_CLOSE
diff --git a/tests/base/quadrature_simplex_01.cc b/tests/base/quadrature_simplex_01.cc
new file mode 100644 (file)
index 0000000..1442381
--- /dev/null
@@ -0,0 +1,69 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2017 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.
+//
+// ---------------------------------------------------------------------
+
+// construct a simplex simplex quadrature, and check that we can
+// get an affine transformation out of it.
+
+
+#include "../tests.h"
+
+#include <deal.II/base/quadrature_lib.h>
+
+#include <numeric>
+
+using namespace dealii;
+
+template<int dim>
+void test(int n)
+{
+  QSimplex<dim> quad(QIterated<dim>(QTrapez<1>(), n));
+
+  deallog << "# dim = " << dim << std::endl;
+
+  for (auto p:quad.get_points())
+    deallog << p << std::endl;
+
+  deallog << std::endl << "# Area: " << std::accumulate(quad.get_weights().begin(),
+                                                        quad.get_weights().end(),
+                                                        0.0) << std::endl << std::endl;
+
+  std::array<Point<dim>, dim+1> v;
+  for (unsigned int i=0; i<dim; ++i)
+    {
+      v[i] = 2*Point<dim>::unit_vector(i);
+      v[dim] += 2*v[i];
+    }
+
+  auto quad2 = quad.affine_transformation(v);
+
+  for (auto p:quad2.get_points())
+    deallog << p << std::endl;
+
+
+  deallog << std::endl << "# Area 2: " << std::accumulate(quad2.get_weights().begin(),
+                                                          quad2.get_weights().end(),
+                                                          0.0) << std::endl << std::endl;
+
+}
+
+
+int main()
+{
+  initlog();
+
+  test<1>(10);
+  test<2>(10);
+  test<3>(10);
+}
diff --git a/tests/base/quadrature_simplex_01.output b/tests/base/quadrature_simplex_01.output
new file mode 100644 (file)
index 0000000..18ea2a1
--- /dev/null
@@ -0,0 +1,748 @@
+
+DEAL::# dim = 1
+DEAL::0.00000
+DEAL::0.100000
+DEAL::0.200000
+DEAL::0.300000
+DEAL::0.400000
+DEAL::0.500000
+DEAL::0.600000
+DEAL::0.700000
+DEAL::0.800000
+DEAL::0.900000
+DEAL::1.00000
+DEAL::
+DEAL::# Area: 1.00000
+DEAL::
+DEAL::2.00000
+DEAL::2.20000
+DEAL::2.40000
+DEAL::2.60000
+DEAL::2.80000
+DEAL::3.00000
+DEAL::3.20000
+DEAL::3.40000
+DEAL::3.60000
+DEAL::3.80000
+DEAL::4.00000
+DEAL::
+DEAL::# Area 2: 2.00000
+DEAL::
+DEAL::# dim = 2
+DEAL::0.00000 0.00000
+DEAL::0.100000 0.00000
+DEAL::0.200000 0.00000
+DEAL::0.300000 0.00000
+DEAL::0.400000 0.00000
+DEAL::0.500000 0.00000
+DEAL::0.600000 0.00000
+DEAL::0.700000 0.00000
+DEAL::0.800000 0.00000
+DEAL::0.900000 0.00000
+DEAL::1.00000 0.00000
+DEAL::0.00000 0.100000
+DEAL::0.100000 0.100000
+DEAL::0.200000 0.100000
+DEAL::0.300000 0.100000
+DEAL::0.400000 0.100000
+DEAL::0.500000 0.100000
+DEAL::0.600000 0.100000
+DEAL::0.700000 0.100000
+DEAL::0.800000 0.100000
+DEAL::0.900000 0.100000
+DEAL::0.00000 0.200000
+DEAL::0.100000 0.200000
+DEAL::0.200000 0.200000
+DEAL::0.300000 0.200000
+DEAL::0.400000 0.200000
+DEAL::0.500000 0.200000
+DEAL::0.600000 0.200000
+DEAL::0.700000 0.200000
+DEAL::0.800000 0.200000
+DEAL::0.00000 0.300000
+DEAL::0.100000 0.300000
+DEAL::0.200000 0.300000
+DEAL::0.300000 0.300000
+DEAL::0.400000 0.300000
+DEAL::0.500000 0.300000
+DEAL::0.600000 0.300000
+DEAL::0.700000 0.300000
+DEAL::0.00000 0.400000
+DEAL::0.100000 0.400000
+DEAL::0.200000 0.400000
+DEAL::0.300000 0.400000
+DEAL::0.400000 0.400000
+DEAL::0.500000 0.400000
+DEAL::0.600000 0.400000
+DEAL::0.00000 0.500000
+DEAL::0.100000 0.500000
+DEAL::0.200000 0.500000
+DEAL::0.300000 0.500000
+DEAL::0.400000 0.500000
+DEAL::0.500000 0.500000
+DEAL::0.00000 0.600000
+DEAL::0.100000 0.600000
+DEAL::0.200000 0.600000
+DEAL::0.300000 0.600000
+DEAL::0.400000 0.600000
+DEAL::0.00000 0.700000
+DEAL::0.100000 0.700000
+DEAL::0.200000 0.700000
+DEAL::0.300000 0.700000
+DEAL::0.00000 0.800000
+DEAL::0.100000 0.800000
+DEAL::0.200000 0.800000
+DEAL::0.00000 0.900000
+DEAL::0.100000 0.900000
+DEAL::0.00000 1.00000
+DEAL::
+DEAL::# Area: 0.547500
+DEAL::
+DEAL::2.00000 0.00000
+DEAL::1.80000 0.200000
+DEAL::1.60000 0.400000
+DEAL::1.40000 0.600000
+DEAL::1.20000 0.800000
+DEAL::1.00000 1.00000
+DEAL::0.800000 1.20000
+DEAL::0.600000 1.40000
+DEAL::0.400000 1.60000
+DEAL::0.200000 1.80000
+DEAL::0.00000 2.00000
+DEAL::2.20000 0.400000
+DEAL::2.00000 0.600000
+DEAL::1.80000 0.800000
+DEAL::1.60000 1.00000
+DEAL::1.40000 1.20000
+DEAL::1.20000 1.40000
+DEAL::1.00000 1.60000
+DEAL::0.800000 1.80000
+DEAL::0.600000 2.00000
+DEAL::0.400000 2.20000
+DEAL::2.40000 0.800000
+DEAL::2.20000 1.00000
+DEAL::2.00000 1.20000
+DEAL::1.80000 1.40000
+DEAL::1.60000 1.60000
+DEAL::1.40000 1.80000
+DEAL::1.20000 2.00000
+DEAL::1.00000 2.20000
+DEAL::0.800000 2.40000
+DEAL::2.60000 1.20000
+DEAL::2.40000 1.40000
+DEAL::2.20000 1.60000
+DEAL::2.00000 1.80000
+DEAL::1.80000 2.00000
+DEAL::1.60000 2.20000
+DEAL::1.40000 2.40000
+DEAL::1.20000 2.60000
+DEAL::2.80000 1.60000
+DEAL::2.60000 1.80000
+DEAL::2.40000 2.00000
+DEAL::2.20000 2.20000
+DEAL::2.00000 2.40000
+DEAL::1.80000 2.60000
+DEAL::1.60000 2.80000
+DEAL::3.00000 2.00000
+DEAL::2.80000 2.20000
+DEAL::2.60000 2.40000
+DEAL::2.40000 2.60000
+DEAL::2.20000 2.80000
+DEAL::2.00000 3.00000
+DEAL::3.20000 2.40000
+DEAL::3.00000 2.60000
+DEAL::2.80000 2.80000
+DEAL::2.60000 3.00000
+DEAL::2.40000 3.20000
+DEAL::3.40000 2.80000
+DEAL::3.20000 3.00000
+DEAL::3.00000 3.20000
+DEAL::2.80000 3.40000
+DEAL::3.60000 3.20000
+DEAL::3.40000 3.40000
+DEAL::3.20000 3.60000
+DEAL::3.80000 3.60000
+DEAL::3.60000 3.80000
+DEAL::4.00000 4.00000
+DEAL::
+DEAL::# Area 2: -6.57000
+DEAL::
+DEAL::# dim = 3
+DEAL::0.00000 0.00000 0.00000
+DEAL::0.100000 0.00000 0.00000
+DEAL::0.200000 0.00000 0.00000
+DEAL::0.300000 0.00000 0.00000
+DEAL::0.400000 0.00000 0.00000
+DEAL::0.500000 0.00000 0.00000
+DEAL::0.600000 0.00000 0.00000
+DEAL::0.700000 0.00000 0.00000
+DEAL::0.800000 0.00000 0.00000
+DEAL::0.900000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::0.00000 0.100000 0.00000
+DEAL::0.100000 0.100000 0.00000
+DEAL::0.200000 0.100000 0.00000
+DEAL::0.300000 0.100000 0.00000
+DEAL::0.400000 0.100000 0.00000
+DEAL::0.500000 0.100000 0.00000
+DEAL::0.600000 0.100000 0.00000
+DEAL::0.700000 0.100000 0.00000
+DEAL::0.800000 0.100000 0.00000
+DEAL::0.900000 0.100000 0.00000
+DEAL::0.00000 0.200000 0.00000
+DEAL::0.100000 0.200000 0.00000
+DEAL::0.200000 0.200000 0.00000
+DEAL::0.300000 0.200000 0.00000
+DEAL::0.400000 0.200000 0.00000
+DEAL::0.500000 0.200000 0.00000
+DEAL::0.600000 0.200000 0.00000
+DEAL::0.700000 0.200000 0.00000
+DEAL::0.800000 0.200000 0.00000
+DEAL::0.00000 0.300000 0.00000
+DEAL::0.100000 0.300000 0.00000
+DEAL::0.200000 0.300000 0.00000
+DEAL::0.300000 0.300000 0.00000
+DEAL::0.400000 0.300000 0.00000
+DEAL::0.500000 0.300000 0.00000
+DEAL::0.600000 0.300000 0.00000
+DEAL::0.700000 0.300000 0.00000
+DEAL::0.00000 0.400000 0.00000
+DEAL::0.100000 0.400000 0.00000
+DEAL::0.200000 0.400000 0.00000
+DEAL::0.300000 0.400000 0.00000
+DEAL::0.400000 0.400000 0.00000
+DEAL::0.500000 0.400000 0.00000
+DEAL::0.600000 0.400000 0.00000
+DEAL::0.00000 0.500000 0.00000
+DEAL::0.100000 0.500000 0.00000
+DEAL::0.200000 0.500000 0.00000
+DEAL::0.300000 0.500000 0.00000
+DEAL::0.400000 0.500000 0.00000
+DEAL::0.500000 0.500000 0.00000
+DEAL::0.00000 0.600000 0.00000
+DEAL::0.100000 0.600000 0.00000
+DEAL::0.200000 0.600000 0.00000
+DEAL::0.300000 0.600000 0.00000
+DEAL::0.400000 0.600000 0.00000
+DEAL::0.00000 0.700000 0.00000
+DEAL::0.100000 0.700000 0.00000
+DEAL::0.200000 0.700000 0.00000
+DEAL::0.300000 0.700000 0.00000
+DEAL::0.00000 0.800000 0.00000
+DEAL::0.100000 0.800000 0.00000
+DEAL::0.200000 0.800000 0.00000
+DEAL::0.00000 0.900000 0.00000
+DEAL::0.100000 0.900000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 0.00000 0.100000
+DEAL::0.100000 0.00000 0.100000
+DEAL::0.200000 0.00000 0.100000
+DEAL::0.300000 0.00000 0.100000
+DEAL::0.400000 0.00000 0.100000
+DEAL::0.500000 0.00000 0.100000
+DEAL::0.600000 0.00000 0.100000
+DEAL::0.700000 0.00000 0.100000
+DEAL::0.800000 0.00000 0.100000
+DEAL::0.900000 0.00000 0.100000
+DEAL::0.00000 0.100000 0.100000
+DEAL::0.100000 0.100000 0.100000
+DEAL::0.200000 0.100000 0.100000
+DEAL::0.300000 0.100000 0.100000
+DEAL::0.400000 0.100000 0.100000
+DEAL::0.500000 0.100000 0.100000
+DEAL::0.600000 0.100000 0.100000
+DEAL::0.700000 0.100000 0.100000
+DEAL::0.800000 0.100000 0.100000
+DEAL::0.00000 0.200000 0.100000
+DEAL::0.100000 0.200000 0.100000
+DEAL::0.200000 0.200000 0.100000
+DEAL::0.300000 0.200000 0.100000
+DEAL::0.400000 0.200000 0.100000
+DEAL::0.500000 0.200000 0.100000
+DEAL::0.600000 0.200000 0.100000
+DEAL::0.700000 0.200000 0.100000
+DEAL::0.00000 0.300000 0.100000
+DEAL::0.100000 0.300000 0.100000
+DEAL::0.200000 0.300000 0.100000
+DEAL::0.300000 0.300000 0.100000
+DEAL::0.400000 0.300000 0.100000
+DEAL::0.500000 0.300000 0.100000
+DEAL::0.600000 0.300000 0.100000
+DEAL::0.00000 0.400000 0.100000
+DEAL::0.100000 0.400000 0.100000
+DEAL::0.200000 0.400000 0.100000
+DEAL::0.300000 0.400000 0.100000
+DEAL::0.400000 0.400000 0.100000
+DEAL::0.500000 0.400000 0.100000
+DEAL::0.00000 0.500000 0.100000
+DEAL::0.100000 0.500000 0.100000
+DEAL::0.200000 0.500000 0.100000
+DEAL::0.300000 0.500000 0.100000
+DEAL::0.400000 0.500000 0.100000
+DEAL::0.00000 0.600000 0.100000
+DEAL::0.100000 0.600000 0.100000
+DEAL::0.200000 0.600000 0.100000
+DEAL::0.300000 0.600000 0.100000
+DEAL::0.00000 0.700000 0.100000
+DEAL::0.100000 0.700000 0.100000
+DEAL::0.200000 0.700000 0.100000
+DEAL::0.00000 0.800000 0.100000
+DEAL::0.100000 0.800000 0.100000
+DEAL::0.00000 0.900000 0.100000
+DEAL::0.00000 0.00000 0.200000
+DEAL::0.100000 0.00000 0.200000
+DEAL::0.200000 0.00000 0.200000
+DEAL::0.300000 0.00000 0.200000
+DEAL::0.400000 0.00000 0.200000
+DEAL::0.500000 0.00000 0.200000
+DEAL::0.600000 0.00000 0.200000
+DEAL::0.700000 0.00000 0.200000
+DEAL::0.800000 0.00000 0.200000
+DEAL::0.00000 0.100000 0.200000
+DEAL::0.100000 0.100000 0.200000
+DEAL::0.200000 0.100000 0.200000
+DEAL::0.300000 0.100000 0.200000
+DEAL::0.400000 0.100000 0.200000
+DEAL::0.500000 0.100000 0.200000
+DEAL::0.600000 0.100000 0.200000
+DEAL::0.700000 0.100000 0.200000
+DEAL::0.00000 0.200000 0.200000
+DEAL::0.100000 0.200000 0.200000
+DEAL::0.200000 0.200000 0.200000
+DEAL::0.300000 0.200000 0.200000
+DEAL::0.400000 0.200000 0.200000
+DEAL::0.500000 0.200000 0.200000
+DEAL::0.600000 0.200000 0.200000
+DEAL::0.00000 0.300000 0.200000
+DEAL::0.100000 0.300000 0.200000
+DEAL::0.200000 0.300000 0.200000
+DEAL::0.300000 0.300000 0.200000
+DEAL::0.400000 0.300000 0.200000
+DEAL::0.500000 0.300000 0.200000
+DEAL::0.00000 0.400000 0.200000
+DEAL::0.100000 0.400000 0.200000
+DEAL::0.200000 0.400000 0.200000
+DEAL::0.300000 0.400000 0.200000
+DEAL::0.400000 0.400000 0.200000
+DEAL::0.00000 0.500000 0.200000
+DEAL::0.100000 0.500000 0.200000
+DEAL::0.200000 0.500000 0.200000
+DEAL::0.300000 0.500000 0.200000
+DEAL::0.00000 0.600000 0.200000
+DEAL::0.100000 0.600000 0.200000
+DEAL::0.200000 0.600000 0.200000
+DEAL::0.00000 0.700000 0.200000
+DEAL::0.100000 0.700000 0.200000
+DEAL::0.00000 0.800000 0.200000
+DEAL::0.00000 0.00000 0.300000
+DEAL::0.100000 0.00000 0.300000
+DEAL::0.200000 0.00000 0.300000
+DEAL::0.300000 0.00000 0.300000
+DEAL::0.400000 0.00000 0.300000
+DEAL::0.500000 0.00000 0.300000
+DEAL::0.600000 0.00000 0.300000
+DEAL::0.700000 0.00000 0.300000
+DEAL::0.00000 0.100000 0.300000
+DEAL::0.100000 0.100000 0.300000
+DEAL::0.200000 0.100000 0.300000
+DEAL::0.300000 0.100000 0.300000
+DEAL::0.400000 0.100000 0.300000
+DEAL::0.500000 0.100000 0.300000
+DEAL::0.600000 0.100000 0.300000
+DEAL::0.00000 0.200000 0.300000
+DEAL::0.100000 0.200000 0.300000
+DEAL::0.200000 0.200000 0.300000
+DEAL::0.300000 0.200000 0.300000
+DEAL::0.400000 0.200000 0.300000
+DEAL::0.500000 0.200000 0.300000
+DEAL::0.00000 0.300000 0.300000
+DEAL::0.100000 0.300000 0.300000
+DEAL::0.200000 0.300000 0.300000
+DEAL::0.300000 0.300000 0.300000
+DEAL::0.400000 0.300000 0.300000
+DEAL::0.00000 0.400000 0.300000
+DEAL::0.100000 0.400000 0.300000
+DEAL::0.200000 0.400000 0.300000
+DEAL::0.300000 0.400000 0.300000
+DEAL::0.00000 0.500000 0.300000
+DEAL::0.100000 0.500000 0.300000
+DEAL::0.200000 0.500000 0.300000
+DEAL::0.00000 0.600000 0.300000
+DEAL::0.100000 0.600000 0.300000
+DEAL::0.00000 0.700000 0.300000
+DEAL::0.00000 0.00000 0.400000
+DEAL::0.100000 0.00000 0.400000
+DEAL::0.200000 0.00000 0.400000
+DEAL::0.300000 0.00000 0.400000
+DEAL::0.400000 0.00000 0.400000
+DEAL::0.500000 0.00000 0.400000
+DEAL::0.600000 0.00000 0.400000
+DEAL::0.00000 0.100000 0.400000
+DEAL::0.100000 0.100000 0.400000
+DEAL::0.200000 0.100000 0.400000
+DEAL::0.300000 0.100000 0.400000
+DEAL::0.400000 0.100000 0.400000
+DEAL::0.500000 0.100000 0.400000
+DEAL::0.00000 0.200000 0.400000
+DEAL::0.100000 0.200000 0.400000
+DEAL::0.200000 0.200000 0.400000
+DEAL::0.300000 0.200000 0.400000
+DEAL::0.400000 0.200000 0.400000
+DEAL::0.00000 0.300000 0.400000
+DEAL::0.100000 0.300000 0.400000
+DEAL::0.200000 0.300000 0.400000
+DEAL::0.300000 0.300000 0.400000
+DEAL::0.00000 0.400000 0.400000
+DEAL::0.100000 0.400000 0.400000
+DEAL::0.200000 0.400000 0.400000
+DEAL::0.00000 0.500000 0.400000
+DEAL::0.100000 0.500000 0.400000
+DEAL::0.00000 0.600000 0.400000
+DEAL::0.00000 0.00000 0.500000
+DEAL::0.100000 0.00000 0.500000
+DEAL::0.200000 0.00000 0.500000
+DEAL::0.300000 0.00000 0.500000
+DEAL::0.400000 0.00000 0.500000
+DEAL::0.500000 0.00000 0.500000
+DEAL::0.00000 0.100000 0.500000
+DEAL::0.100000 0.100000 0.500000
+DEAL::0.200000 0.100000 0.500000
+DEAL::0.300000 0.100000 0.500000
+DEAL::0.400000 0.100000 0.500000
+DEAL::0.00000 0.200000 0.500000
+DEAL::0.100000 0.200000 0.500000
+DEAL::0.200000 0.200000 0.500000
+DEAL::0.300000 0.200000 0.500000
+DEAL::0.00000 0.300000 0.500000
+DEAL::0.100000 0.300000 0.500000
+DEAL::0.200000 0.300000 0.500000
+DEAL::0.00000 0.400000 0.500000
+DEAL::0.100000 0.400000 0.500000
+DEAL::0.00000 0.500000 0.500000
+DEAL::0.00000 0.00000 0.600000
+DEAL::0.100000 0.00000 0.600000
+DEAL::0.200000 0.00000 0.600000
+DEAL::0.300000 0.00000 0.600000
+DEAL::0.400000 0.00000 0.600000
+DEAL::0.00000 0.100000 0.600000
+DEAL::0.100000 0.100000 0.600000
+DEAL::0.200000 0.100000 0.600000
+DEAL::0.300000 0.100000 0.600000
+DEAL::0.00000 0.200000 0.600000
+DEAL::0.100000 0.200000 0.600000
+DEAL::0.200000 0.200000 0.600000
+DEAL::0.00000 0.300000 0.600000
+DEAL::0.100000 0.300000 0.600000
+DEAL::0.00000 0.400000 0.600000
+DEAL::0.00000 0.00000 0.700000
+DEAL::0.100000 0.00000 0.700000
+DEAL::0.200000 0.00000 0.700000
+DEAL::0.300000 0.00000 0.700000
+DEAL::0.00000 0.100000 0.700000
+DEAL::0.100000 0.100000 0.700000
+DEAL::0.200000 0.100000 0.700000
+DEAL::0.00000 0.200000 0.700000
+DEAL::0.100000 0.200000 0.700000
+DEAL::0.00000 0.300000 0.700000
+DEAL::0.00000 0.00000 0.800000
+DEAL::0.100000 0.00000 0.800000
+DEAL::0.200000 0.00000 0.800000
+DEAL::0.00000 0.100000 0.800000
+DEAL::0.100000 0.100000 0.800000
+DEAL::0.00000 0.200000 0.800000
+DEAL::0.00000 0.00000 0.900000
+DEAL::0.100000 0.00000 0.900000
+DEAL::0.00000 0.100000 0.900000
+DEAL::0.00000 0.00000 1.00000
+DEAL::
+DEAL::# Area: 0.194750
+DEAL::
+DEAL::2.00000 0.00000 0.00000
+DEAL::1.80000 0.200000 0.00000
+DEAL::1.60000 0.400000 0.00000
+DEAL::1.40000 0.600000 0.00000
+DEAL::1.20000 0.800000 0.00000
+DEAL::1.00000 1.00000 0.00000
+DEAL::0.800000 1.20000 0.00000
+DEAL::0.600000 1.40000 0.00000
+DEAL::0.400000 1.60000 0.00000
+DEAL::0.200000 1.80000 0.00000
+DEAL::0.00000 2.00000 0.00000
+DEAL::1.80000 0.00000 0.200000
+DEAL::1.60000 0.200000 0.200000
+DEAL::1.40000 0.400000 0.200000
+DEAL::1.20000 0.600000 0.200000
+DEAL::1.00000 0.800000 0.200000
+DEAL::0.800000 1.00000 0.200000
+DEAL::0.600000 1.20000 0.200000
+DEAL::0.400000 1.40000 0.200000
+DEAL::0.200000 1.60000 0.200000
+DEAL::0.00000 1.80000 0.200000
+DEAL::1.60000 0.00000 0.400000
+DEAL::1.40000 0.200000 0.400000
+DEAL::1.20000 0.400000 0.400000
+DEAL::1.00000 0.600000 0.400000
+DEAL::0.800000 0.800000 0.400000
+DEAL::0.600000 1.00000 0.400000
+DEAL::0.400000 1.20000 0.400000
+DEAL::0.200000 1.40000 0.400000
+DEAL::0.00000 1.60000 0.400000
+DEAL::1.40000 0.00000 0.600000
+DEAL::1.20000 0.200000 0.600000
+DEAL::1.00000 0.400000 0.600000
+DEAL::0.800000 0.600000 0.600000
+DEAL::0.600000 0.800000 0.600000
+DEAL::0.400000 1.00000 0.600000
+DEAL::0.200000 1.20000 0.600000
+DEAL::0.00000 1.40000 0.600000
+DEAL::1.20000 0.00000 0.800000
+DEAL::1.00000 0.200000 0.800000
+DEAL::0.800000 0.400000 0.800000
+DEAL::0.600000 0.600000 0.800000
+DEAL::0.400000 0.800000 0.800000
+DEAL::0.200000 1.00000 0.800000
+DEAL::0.00000 1.20000 0.800000
+DEAL::1.00000 0.00000 1.00000
+DEAL::0.800000 0.200000 1.00000
+DEAL::0.600000 0.400000 1.00000
+DEAL::0.400000 0.600000 1.00000
+DEAL::0.200000 0.800000 1.00000
+DEAL::0.00000 1.00000 1.00000
+DEAL::0.800000 0.00000 1.20000
+DEAL::0.600000 0.200000 1.20000
+DEAL::0.400000 0.400000 1.20000
+DEAL::0.200000 0.600000 1.20000
+DEAL::0.00000 0.800000 1.20000
+DEAL::0.600000 0.00000 1.40000
+DEAL::0.400000 0.200000 1.40000
+DEAL::0.200000 0.400000 1.40000
+DEAL::0.00000 0.600000 1.40000
+DEAL::0.400000 0.00000 1.60000
+DEAL::0.200000 0.200000 1.60000
+DEAL::0.00000 0.400000 1.60000
+DEAL::0.200000 0.00000 1.80000
+DEAL::0.00000 0.200000 1.80000
+DEAL::0.00000 0.00000 2.00000
+DEAL::2.20000 0.400000 0.400000
+DEAL::2.00000 0.600000 0.400000
+DEAL::1.80000 0.800000 0.400000
+DEAL::1.60000 1.00000 0.400000
+DEAL::1.40000 1.20000 0.400000
+DEAL::1.20000 1.40000 0.400000
+DEAL::1.00000 1.60000 0.400000
+DEAL::0.800000 1.80000 0.400000
+DEAL::0.600000 2.00000 0.400000
+DEAL::0.400000 2.20000 0.400000
+DEAL::2.00000 0.400000 0.600000
+DEAL::1.80000 0.600000 0.600000
+DEAL::1.60000 0.800000 0.600000
+DEAL::1.40000 1.00000 0.600000
+DEAL::1.20000 1.20000 0.600000
+DEAL::1.00000 1.40000 0.600000
+DEAL::0.800000 1.60000 0.600000
+DEAL::0.600000 1.80000 0.600000
+DEAL::0.400000 2.00000 0.600000
+DEAL::1.80000 0.400000 0.800000
+DEAL::1.60000 0.600000 0.800000
+DEAL::1.40000 0.800000 0.800000
+DEAL::1.20000 1.00000 0.800000
+DEAL::1.00000 1.20000 0.800000
+DEAL::0.800000 1.40000 0.800000
+DEAL::0.600000 1.60000 0.800000
+DEAL::0.400000 1.80000 0.800000
+DEAL::1.60000 0.400000 1.00000
+DEAL::1.40000 0.600000 1.00000
+DEAL::1.20000 0.800000 1.00000
+DEAL::1.00000 1.00000 1.00000
+DEAL::0.800000 1.20000 1.00000
+DEAL::0.600000 1.40000 1.00000
+DEAL::0.400000 1.60000 1.00000
+DEAL::1.40000 0.400000 1.20000
+DEAL::1.20000 0.600000 1.20000
+DEAL::1.00000 0.800000 1.20000
+DEAL::0.800000 1.00000 1.20000
+DEAL::0.600000 1.20000 1.20000
+DEAL::0.400000 1.40000 1.20000
+DEAL::1.20000 0.400000 1.40000
+DEAL::1.00000 0.600000 1.40000
+DEAL::0.800000 0.800000 1.40000
+DEAL::0.600000 1.00000 1.40000
+DEAL::0.400000 1.20000 1.40000
+DEAL::1.00000 0.400000 1.60000
+DEAL::0.800000 0.600000 1.60000
+DEAL::0.600000 0.800000 1.60000
+DEAL::0.400000 1.00000 1.60000
+DEAL::0.800000 0.400000 1.80000
+DEAL::0.600000 0.600000 1.80000
+DEAL::0.400000 0.800000 1.80000
+DEAL::0.600000 0.400000 2.00000
+DEAL::0.400000 0.600000 2.00000
+DEAL::0.400000 0.400000 2.20000
+DEAL::2.40000 0.800000 0.800000
+DEAL::2.20000 1.00000 0.800000
+DEAL::2.00000 1.20000 0.800000
+DEAL::1.80000 1.40000 0.800000
+DEAL::1.60000 1.60000 0.800000
+DEAL::1.40000 1.80000 0.800000
+DEAL::1.20000 2.00000 0.800000
+DEAL::1.00000 2.20000 0.800000
+DEAL::0.800000 2.40000 0.800000
+DEAL::2.20000 0.800000 1.00000
+DEAL::2.00000 1.00000 1.00000
+DEAL::1.80000 1.20000 1.00000
+DEAL::1.60000 1.40000 1.00000
+DEAL::1.40000 1.60000 1.00000
+DEAL::1.20000 1.80000 1.00000
+DEAL::1.00000 2.00000 1.00000
+DEAL::0.800000 2.20000 1.00000
+DEAL::2.00000 0.800000 1.20000
+DEAL::1.80000 1.00000 1.20000
+DEAL::1.60000 1.20000 1.20000
+DEAL::1.40000 1.40000 1.20000
+DEAL::1.20000 1.60000 1.20000
+DEAL::1.00000 1.80000 1.20000
+DEAL::0.800000 2.00000 1.20000
+DEAL::1.80000 0.800000 1.40000
+DEAL::1.60000 1.00000 1.40000
+DEAL::1.40000 1.20000 1.40000
+DEAL::1.20000 1.40000 1.40000
+DEAL::1.00000 1.60000 1.40000
+DEAL::0.800000 1.80000 1.40000
+DEAL::1.60000 0.800000 1.60000
+DEAL::1.40000 1.00000 1.60000
+DEAL::1.20000 1.20000 1.60000
+DEAL::1.00000 1.40000 1.60000
+DEAL::0.800000 1.60000 1.60000
+DEAL::1.40000 0.800000 1.80000
+DEAL::1.20000 1.00000 1.80000
+DEAL::1.00000 1.20000 1.80000
+DEAL::0.800000 1.40000 1.80000
+DEAL::1.20000 0.800000 2.00000
+DEAL::1.00000 1.00000 2.00000
+DEAL::0.800000 1.20000 2.00000
+DEAL::1.00000 0.800000 2.20000
+DEAL::0.800000 1.00000 2.20000
+DEAL::0.800000 0.800000 2.40000
+DEAL::2.60000 1.20000 1.20000
+DEAL::2.40000 1.40000 1.20000
+DEAL::2.20000 1.60000 1.20000
+DEAL::2.00000 1.80000 1.20000
+DEAL::1.80000 2.00000 1.20000
+DEAL::1.60000 2.20000 1.20000
+DEAL::1.40000 2.40000 1.20000
+DEAL::1.20000 2.60000 1.20000
+DEAL::2.40000 1.20000 1.40000
+DEAL::2.20000 1.40000 1.40000
+DEAL::2.00000 1.60000 1.40000
+DEAL::1.80000 1.80000 1.40000
+DEAL::1.60000 2.00000 1.40000
+DEAL::1.40000 2.20000 1.40000
+DEAL::1.20000 2.40000 1.40000
+DEAL::2.20000 1.20000 1.60000
+DEAL::2.00000 1.40000 1.60000
+DEAL::1.80000 1.60000 1.60000
+DEAL::1.60000 1.80000 1.60000
+DEAL::1.40000 2.00000 1.60000
+DEAL::1.20000 2.20000 1.60000
+DEAL::2.00000 1.20000 1.80000
+DEAL::1.80000 1.40000 1.80000
+DEAL::1.60000 1.60000 1.80000
+DEAL::1.40000 1.80000 1.80000
+DEAL::1.20000 2.00000 1.80000
+DEAL::1.80000 1.20000 2.00000
+DEAL::1.60000 1.40000 2.00000
+DEAL::1.40000 1.60000 2.00000
+DEAL::1.20000 1.80000 2.00000
+DEAL::1.60000 1.20000 2.20000
+DEAL::1.40000 1.40000 2.20000
+DEAL::1.20000 1.60000 2.20000
+DEAL::1.40000 1.20000 2.40000
+DEAL::1.20000 1.40000 2.40000
+DEAL::1.20000 1.20000 2.60000
+DEAL::2.80000 1.60000 1.60000
+DEAL::2.60000 1.80000 1.60000
+DEAL::2.40000 2.00000 1.60000
+DEAL::2.20000 2.20000 1.60000
+DEAL::2.00000 2.40000 1.60000
+DEAL::1.80000 2.60000 1.60000
+DEAL::1.60000 2.80000 1.60000
+DEAL::2.60000 1.60000 1.80000
+DEAL::2.40000 1.80000 1.80000
+DEAL::2.20000 2.00000 1.80000
+DEAL::2.00000 2.20000 1.80000
+DEAL::1.80000 2.40000 1.80000
+DEAL::1.60000 2.60000 1.80000
+DEAL::2.40000 1.60000 2.00000
+DEAL::2.20000 1.80000 2.00000
+DEAL::2.00000 2.00000 2.00000
+DEAL::1.80000 2.20000 2.00000
+DEAL::1.60000 2.40000 2.00000
+DEAL::2.20000 1.60000 2.20000
+DEAL::2.00000 1.80000 2.20000
+DEAL::1.80000 2.00000 2.20000
+DEAL::1.60000 2.20000 2.20000
+DEAL::2.00000 1.60000 2.40000
+DEAL::1.80000 1.80000 2.40000
+DEAL::1.60000 2.00000 2.40000
+DEAL::1.80000 1.60000 2.60000
+DEAL::1.60000 1.80000 2.60000
+DEAL::1.60000 1.60000 2.80000
+DEAL::3.00000 2.00000 2.00000
+DEAL::2.80000 2.20000 2.00000
+DEAL::2.60000 2.40000 2.00000
+DEAL::2.40000 2.60000 2.00000
+DEAL::2.20000 2.80000 2.00000
+DEAL::2.00000 3.00000 2.00000
+DEAL::2.80000 2.00000 2.20000
+DEAL::2.60000 2.20000 2.20000
+DEAL::2.40000 2.40000 2.20000
+DEAL::2.20000 2.60000 2.20000
+DEAL::2.00000 2.80000 2.20000
+DEAL::2.60000 2.00000 2.40000
+DEAL::2.40000 2.20000 2.40000
+DEAL::2.20000 2.40000 2.40000
+DEAL::2.00000 2.60000 2.40000
+DEAL::2.40000 2.00000 2.60000
+DEAL::2.20000 2.20000 2.60000
+DEAL::2.00000 2.40000 2.60000
+DEAL::2.20000 2.00000 2.80000
+DEAL::2.00000 2.20000 2.80000
+DEAL::2.00000 2.00000 3.00000
+DEAL::3.20000 2.40000 2.40000
+DEAL::3.00000 2.60000 2.40000
+DEAL::2.80000 2.80000 2.40000
+DEAL::2.60000 3.00000 2.40000
+DEAL::2.40000 3.20000 2.40000
+DEAL::3.00000 2.40000 2.60000
+DEAL::2.80000 2.60000 2.60000
+DEAL::2.60000 2.80000 2.60000
+DEAL::2.40000 3.00000 2.60000
+DEAL::2.80000 2.40000 2.80000
+DEAL::2.60000 2.60000 2.80000
+DEAL::2.40000 2.80000 2.80000
+DEAL::2.60000 2.40000 3.00000
+DEAL::2.40000 2.60000 3.00000
+DEAL::2.40000 2.40000 3.20000
+DEAL::3.40000 2.80000 2.80000
+DEAL::3.20000 3.00000 2.80000
+DEAL::3.00000 3.20000 2.80000
+DEAL::2.80000 3.40000 2.80000
+DEAL::3.20000 2.80000 3.00000
+DEAL::3.00000 3.00000 3.00000
+DEAL::2.80000 3.20000 3.00000
+DEAL::3.00000 2.80000 3.20000
+DEAL::2.80000 3.00000 3.20000
+DEAL::2.80000 2.80000 3.40000
+DEAL::3.60000 3.20000 3.20000
+DEAL::3.40000 3.40000 3.20000
+DEAL::3.20000 3.60000 3.20000
+DEAL::3.40000 3.20000 3.40000
+DEAL::3.20000 3.40000 3.40000
+DEAL::3.20000 3.20000 3.60000
+DEAL::3.80000 3.60000 3.60000
+DEAL::3.60000 3.80000 3.60000
+DEAL::3.60000 3.60000 3.80000
+DEAL::4.00000 4.00000 4.00000
+DEAL::
+DEAL::# Area 2: 7.79000
+DEAL::

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.