]> https://gitweb.dealii.org/ - dealii.git/commitdiff
allow zero padding in plate_with_a_hole 7732/head
authorDenis Davydov <davydden@gmail.com>
Fri, 15 Feb 2019 17:00:02 +0000 (18:00 +0100)
committerDenis Davydov <davydden@gmail.com>
Sat, 16 Feb 2019 20:59:07 +0000 (21:59 +0100)
include/deal.II/grid/grid_generator.h
source/grid/grid_generator.cc
tests/grid/grid_generator_plate_with_a_hole_4.cc [new file with mode: 0644]
tests/grid/grid_generator_plate_with_a_hole_4.output [new file with mode: 0644]

index 318646b14c96ca71a81dbb5f7cdc1123d028114d..caa95daf80dc39338891019651048dbb2d675c1b 100644 (file)
@@ -327,8 +327,7 @@ namespace GridGenerator
    * All cells in this region will have a FlatManifold attached to them.
    * The final width of the plate will be <code>padding_left + 2*outer_radius +
    * padding_right</code>, while its length is <code>padding_top +
-   * 2*outer_radius + padding_bottom</code>. Three out of four paddings are
-   * allowed to be zero.
+   * 2*outer_radius + padding_bottom</code>.
    *
    * Here is the non-symmetric grid (after one global refinement, colored
    * according to manifold id) in 2D and 3D, respectively:
index 08eb9c701fb2d5274c5da4527302dd0231c1d40a..e774a7368ae22ed2d527e90ae955c4b0091091ee 100644 (file)
@@ -1966,8 +1966,9 @@ namespace GridGenerator
                          const unsigned int /*n_slices*/,
                          const bool colorize)
   {
-    Assert((pad_bottom > 0 || pad_top > 0 || pad_left > 0 || pad_right > 0),
-           ExcMessage("At least one padding parameter has to be non-zero."));
+    const bool with_padding =
+      pad_bottom > 0 || pad_top > 0 || pad_left > 0 || pad_right > 0;
+
     Assert(pad_bottom >= 0., ExcMessage("Negative bottom padding."));
     Assert(pad_top >= 0., ExcMessage("Negative top padding."));
     Assert(pad_left >= 0., ExcMessage("Negative left padding."));
@@ -1984,7 +1985,8 @@ namespace GridGenerator
     };
 
     // start by setting up the cylinder triangulation
-    Triangulation<2> cylinder_tria;
+    Triangulation<2>  cylinder_tria_maybe;
+    Triangulation<2> &cylinder_tria = with_padding ? cylinder_tria_maybe : tria;
     GridGenerator::hyper_cube_with_cylindrical_hole(cylinder_tria,
                                                     inner_radius,
                                                     outer_radius,
@@ -1996,65 +1998,70 @@ namespace GridGenerator
     for (const auto &cell : cylinder_tria.active_cell_iterators())
       cell->set_manifold_id(tfi_manifold_id);
 
-    // hyper_cube_with_cylindrical_hole will have 2 cells along
-    // each face, so he element size is outer_radius
-
-    auto add_sizes = [](std::vector<double> &step_sizes,
-                        const double         padding,
-                        const double         h) -> void {
-      // use std::round instead of std::ceil to improve aspect ratio
-      // in case padding is only slightly larger than h.
-      const auto rounded = static_cast<unsigned int>(std::round(padding / h));
-      // in case padding is much smaller than h, make sure we
-      // have at least 1 element
-      const unsigned int num = (padding > 0. && rounded == 0) ? 1 : rounded;
-      for (unsigned int i = 0; i < num; ++i)
-        step_sizes.push_back(padding / num);
-    };
-
-    std::vector<std::vector<double>> step_sizes(2);
-    // x-coord
-    // left:
-    add_sizes(step_sizes[0], pad_left, outer_radius);
-    // center
-    step_sizes[0].push_back(outer_radius);
-    step_sizes[0].push_back(outer_radius);
-    // right
-    add_sizes(step_sizes[0], pad_right, outer_radius);
-    // y-coord
-    //   bottom
-    add_sizes(step_sizes[1], pad_bottom, outer_radius);
-    //   center
-    step_sizes[1].push_back(outer_radius);
-    step_sizes[1].push_back(outer_radius);
-    //   top
-    add_sizes(step_sizes[1], pad_top, outer_radius);
-
-    // now create bulk
-    Triangulation<2> bulk_tria;
-    const Point<2>   bl(-outer_radius - pad_left, -outer_radius - pad_bottom);
-    const Point<2>   tr(outer_radius + pad_right, outer_radius + pad_top);
-    GridGenerator::subdivided_hyper_rectangle(
-      bulk_tria, step_sizes, bl, tr, colorize);
-
-    // now remove cells reserved from the cylindrical hole
-    std::set<Triangulation<2>::active_cell_iterator> cells_to_remove;
-    for (const auto &cell : bulk_tria.active_cell_iterators())
-      if (internal::point_in_2d_box(cell->center(), center, outer_radius))
-        cells_to_remove.insert(cell);
-
-    Triangulation<2> tria_without_cylinder;
-    GridGenerator::create_triangulation_with_removed_cells(
-      bulk_tria, cells_to_remove, tria_without_cylinder);
-
-    const double tolerance = std::min(min_line_length(tria_without_cylinder),
-                                      min_line_length(cylinder_tria)) /
-                             2.0;
+    const Point<2> bl(-outer_radius - pad_left, -outer_radius - pad_bottom);
+    const Point<2> tr(outer_radius + pad_right, outer_radius + pad_top);
+    if (with_padding)
+      {
+        // hyper_cube_with_cylindrical_hole will have 2 cells along
+        // each face, so he element size is outer_radius
+
+        auto add_sizes = [](std::vector<double> &step_sizes,
+                            const double         padding,
+                            const double         h) -> void {
+          // use std::round instead of std::ceil to improve aspect ratio
+          // in case padding is only slightly larger than h.
+          const auto rounded =
+            static_cast<unsigned int>(std::round(padding / h));
+          // in case padding is much smaller than h, make sure we
+          // have at least 1 element
+          const unsigned int num = (padding > 0. && rounded == 0) ? 1 : rounded;
+          for (unsigned int i = 0; i < num; ++i)
+            step_sizes.push_back(padding / num);
+        };
 
-    GridGenerator::merge_triangulations(tria_without_cylinder,
-                                        cylinder_tria,
-                                        tria,
-                                        tolerance);
+        std::vector<std::vector<double>> step_sizes(2);
+        // x-coord
+        // left:
+        add_sizes(step_sizes[0], pad_left, outer_radius);
+        // center
+        step_sizes[0].push_back(outer_radius);
+        step_sizes[0].push_back(outer_radius);
+        // right
+        add_sizes(step_sizes[0], pad_right, outer_radius);
+        // y-coord
+        //   bottom
+        add_sizes(step_sizes[1], pad_bottom, outer_radius);
+        //   center
+        step_sizes[1].push_back(outer_radius);
+        step_sizes[1].push_back(outer_radius);
+        //   top
+        add_sizes(step_sizes[1], pad_top, outer_radius);
+
+        // now create bulk
+        Triangulation<2> bulk_tria;
+        GridGenerator::subdivided_hyper_rectangle(
+          bulk_tria, step_sizes, bl, tr, colorize);
+
+        // now remove cells reserved from the cylindrical hole
+        std::set<Triangulation<2>::active_cell_iterator> cells_to_remove;
+        for (const auto &cell : bulk_tria.active_cell_iterators())
+          if (internal::point_in_2d_box(cell->center(), center, outer_radius))
+            cells_to_remove.insert(cell);
+
+        Triangulation<2> tria_without_cylinder;
+        GridGenerator::create_triangulation_with_removed_cells(
+          bulk_tria, cells_to_remove, tria_without_cylinder);
+
+        const double tolerance =
+          std::min(min_line_length(tria_without_cylinder),
+                   min_line_length(cylinder_tria)) /
+          2.0;
+
+        GridGenerator::merge_triangulations(tria_without_cylinder,
+                                            cylinder_tria,
+                                            tria,
+                                            tolerance);
+      }
 
     // now set manifold ids:
     for (const auto &cell : tria.active_cell_iterators())
diff --git a/tests/grid/grid_generator_plate_with_a_hole_4.cc b/tests/grid/grid_generator_plate_with_a_hole_4.cc
new file mode 100644 (file)
index 0000000..7631d24
--- /dev/null
@@ -0,0 +1,121 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2019 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+
+
+// Test GridGenerator::plate_with_a_hole() with zero padding
+
+#include <deal.II/dofs/dof_handler.h>
+
+#include <deal.II/fe/fe_q.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/tria.h>
+
+#include <deal.II/numerics/data_out.h>
+
+#include "../tests.h"
+
+template <int dim>
+void
+test()
+{
+  Triangulation<dim> triangulation;
+  GridGenerator::plate_with_a_hole(
+    triangulation, 0.4, 1., 0, 0, 0, 0, Point<dim>(), 0, 1, 1., 2, true);
+
+  triangulation.refine_global(1);
+
+  using Tuple = std::tuple<Point<dim>, types::boundary_id, types::manifold_id>;
+  std::vector<Tuple> boundary_faces;
+
+  for (const auto &cell : triangulation.active_cell_iterators())
+    for (unsigned int face_n = 0; face_n < GeometryInfo<dim>::faces_per_cell;
+         ++face_n)
+      if (cell->face(face_n)->at_boundary())
+        boundary_faces.push_back(
+          std::make_tuple(cell->face(face_n)->center(),
+                          cell->face(face_n)->boundary_id(),
+                          cell->face(face_n)->manifold_id()));
+
+  // see dof_tools.cc internal::ComparisonHelper
+  std::sort(begin(boundary_faces),
+            end(boundary_faces),
+            [](const Tuple &t1, const Tuple &t2) {
+              const auto &b1 = std::get<1>(t1);
+              const auto &b2 = std::get<1>(t2);
+              if (b1 != b2)
+                return b1 < b2;
+
+              const auto &p1 = std::get<0>(t1);
+              const auto &p2 = std::get<0>(t2);
+
+              for (unsigned int d = 0; d < dim; ++d)
+                if (std::abs(p1[d] - p2[d]) > 1e-8)
+                  return p1[d] < p2[d];
+
+              return std::get<2>(t1) < std::get<2>(t2);
+            });
+
+  for (const auto el : boundary_faces)
+    deallog << "center: " << std::get<0>(el)
+            << " boundary id: " << std::get<1>(el)
+            << " manifold id: " << std::get<2>(el) << std::endl;
+
+  deallog << std::endl << std::endl;
+  Vector<float> manifold_id(triangulation.n_active_cells());
+  unsigned int  index = 0;
+  for (const auto &cell : triangulation.active_cell_iterators())
+    {
+      deallog << "center: " << cell->center()
+              << " manifold id: " << cell->manifold_id() << std::endl;
+      manifold_id[index] = cell->manifold_id();
+      index++;
+    }
+
+  // write in vtk for visual inspection
+  if (false)
+    {
+      DoFHandler<dim> dof_handler(triangulation);
+      FE_Q<dim>       fe(1);
+      dof_handler.distribute_dofs(fe);
+
+      DataOut<dim> data_out;
+
+      data_out.attach_dof_handler(dof_handler);
+      data_out.add_data_vector(manifold_id, "manifold_id");
+      data_out.build_patches();
+
+      const std::string filename =
+        "output_" + Utilities::int_to_string(dim) + ".vtu";
+      std::ofstream output(filename.c_str());
+      data_out.write_vtu(output);
+    }
+}
+
+
+int
+main()
+{
+  initlog();
+
+  deallog.push("2d");
+  test<2>();
+  deallog.pop();
+
+  deallog.push("3d");
+  test<3>();
+  deallog.pop();
+}
diff --git a/tests/grid/grid_generator_plate_with_a_hole_4.output b/tests/grid/grid_generator_plate_with_a_hole_4.output
new file mode 100644 (file)
index 0000000..8f7500c
--- /dev/null
@@ -0,0 +1,261 @@
+
+DEAL:2d::center: -1.00000 -0.750000 boundary id: 0 manifold id: 1
+DEAL:2d::center: -1.00000 -0.250000 boundary id: 0 manifold id: 1
+DEAL:2d::center: -1.00000 0.250000 boundary id: 0 manifold id: 1
+DEAL:2d::center: -1.00000 0.750000 boundary id: 0 manifold id: 1
+DEAL:2d::center: 1.00000 -0.750000 boundary id: 1 manifold id: 1
+DEAL:2d::center: 1.00000 -0.250000 boundary id: 1 manifold id: 1
+DEAL:2d::center: 1.00000 0.250000 boundary id: 1 manifold id: 1
+DEAL:2d::center: 1.00000 0.750000 boundary id: 1 manifold id: 1
+DEAL:2d::center: -0.750000 -1.00000 boundary id: 2 manifold id: 1
+DEAL:2d::center: -0.250000 -1.00000 boundary id: 2 manifold id: 1
+DEAL:2d::center: 0.250000 -1.00000 boundary id: 2 manifold id: 1
+DEAL:2d::center: 0.750000 -1.00000 boundary id: 2 manifold id: 1
+DEAL:2d::center: -0.750000 1.00000 boundary id: 3 manifold id: 1
+DEAL:2d::center: -0.250000 1.00000 boundary id: 3 manifold id: 1
+DEAL:2d::center: 0.250000 1.00000 boundary id: 3 manifold id: 1
+DEAL:2d::center: 0.750000 1.00000 boundary id: 3 manifold id: 1
+DEAL:2d::center: -0.384776 -0.0765367 boundary id: 4 manifold id: 0
+DEAL:2d::center: -0.384776 0.0765367 boundary id: 4 manifold id: 0
+DEAL:2d::center: -0.326197 -0.217958 boundary id: 4 manifold id: 0
+DEAL:2d::center: -0.326197 0.217958 boundary id: 4 manifold id: 0
+DEAL:2d::center: -0.217958 -0.326197 boundary id: 4 manifold id: 0
+DEAL:2d::center: -0.217958 0.326197 boundary id: 4 manifold id: 0
+DEAL:2d::center: -0.0765367 -0.384776 boundary id: 4 manifold id: 0
+DEAL:2d::center: -0.0765367 0.384776 boundary id: 4 manifold id: 0
+DEAL:2d::center: 0.0765367 -0.384776 boundary id: 4 manifold id: 0
+DEAL:2d::center: 0.0765367 0.384776 boundary id: 4 manifold id: 0
+DEAL:2d::center: 0.217958 -0.326197 boundary id: 4 manifold id: 0
+DEAL:2d::center: 0.217958 0.326197 boundary id: 4 manifold id: 0
+DEAL:2d::center: 0.326197 -0.217958 boundary id: 4 manifold id: 0
+DEAL:2d::center: 0.326197 0.217958 boundary id: 4 manifold id: 0
+DEAL:2d::center: 0.384776 -0.0765367 boundary id: 4 manifold id: 0
+DEAL:2d::center: 0.384776 0.0765367 boundary id: 4 manifold id: 0
+DEAL:2d::
+DEAL:2d::
+DEAL:2d::center: 0.846194 0.206634 manifold id: 1
+DEAL:2d::center: 0.831549 0.616990 manifold id: 1
+DEAL:2d::center: 0.538582 0.119903 manifold id: 1
+DEAL:2d::center: 0.494648 0.350969 manifold id: 1
+DEAL:2d::center: 0.616990 0.831549 manifold id: 1
+DEAL:2d::center: 0.206634 0.846194 manifold id: 1
+DEAL:2d::center: 0.350969 0.494648 manifold id: 1
+DEAL:2d::center: 0.119903 0.538582 manifold id: 1
+DEAL:2d::center: -0.206634 0.846194 manifold id: 1
+DEAL:2d::center: -0.616990 0.831549 manifold id: 1
+DEAL:2d::center: -0.119903 0.538582 manifold id: 1
+DEAL:2d::center: -0.350969 0.494648 manifold id: 1
+DEAL:2d::center: -0.831549 0.616990 manifold id: 1
+DEAL:2d::center: -0.846194 0.206634 manifold id: 1
+DEAL:2d::center: -0.494648 0.350969 manifold id: 1
+DEAL:2d::center: -0.538582 0.119903 manifold id: 1
+DEAL:2d::center: -0.846194 -0.206634 manifold id: 1
+DEAL:2d::center: -0.831549 -0.616990 manifold id: 1
+DEAL:2d::center: -0.538582 -0.119903 manifold id: 1
+DEAL:2d::center: -0.494648 -0.350969 manifold id: 1
+DEAL:2d::center: -0.616990 -0.831549 manifold id: 1
+DEAL:2d::center: -0.206634 -0.846194 manifold id: 1
+DEAL:2d::center: -0.350969 -0.494648 manifold id: 1
+DEAL:2d::center: -0.119903 -0.538582 manifold id: 1
+DEAL:2d::center: 0.206634 -0.846194 manifold id: 1
+DEAL:2d::center: 0.616990 -0.831549 manifold id: 1
+DEAL:2d::center: 0.119903 -0.538582 manifold id: 1
+DEAL:2d::center: 0.350969 -0.494648 manifold id: 1
+DEAL:2d::center: 0.831549 -0.616990 manifold id: 1
+DEAL:2d::center: 0.846194 -0.206634 manifold id: 1
+DEAL:2d::center: 0.494648 -0.350969 manifold id: 1
+DEAL:2d::center: 0.538582 -0.119903 manifold id: 1
+DEAL:3d::center: -1.00000 -0.750000 -0.250000 boundary id: 0 manifold id: 1
+DEAL:3d::center: -1.00000 -0.750000 0.250000 boundary id: 0 manifold id: 1
+DEAL:3d::center: -1.00000 -0.250000 -0.250000 boundary id: 0 manifold id: 1
+DEAL:3d::center: -1.00000 -0.250000 0.250000 boundary id: 0 manifold id: 1
+DEAL:3d::center: -1.00000 0.250000 -0.250000 boundary id: 0 manifold id: 1
+DEAL:3d::center: -1.00000 0.250000 0.250000 boundary id: 0 manifold id: 1
+DEAL:3d::center: -1.00000 0.750000 -0.250000 boundary id: 0 manifold id: 1
+DEAL:3d::center: -1.00000 0.750000 0.250000 boundary id: 0 manifold id: 1
+DEAL:3d::center: 1.00000 -0.750000 -0.250000 boundary id: 1 manifold id: 1
+DEAL:3d::center: 1.00000 -0.750000 0.250000 boundary id: 1 manifold id: 1
+DEAL:3d::center: 1.00000 -0.250000 -0.250000 boundary id: 1 manifold id: 1
+DEAL:3d::center: 1.00000 -0.250000 0.250000 boundary id: 1 manifold id: 1
+DEAL:3d::center: 1.00000 0.250000 -0.250000 boundary id: 1 manifold id: 1
+DEAL:3d::center: 1.00000 0.250000 0.250000 boundary id: 1 manifold id: 1
+DEAL:3d::center: 1.00000 0.750000 -0.250000 boundary id: 1 manifold id: 1
+DEAL:3d::center: 1.00000 0.750000 0.250000 boundary id: 1 manifold id: 1
+DEAL:3d::center: -0.750000 -1.00000 -0.250000 boundary id: 2 manifold id: 1
+DEAL:3d::center: -0.750000 -1.00000 0.250000 boundary id: 2 manifold id: 1
+DEAL:3d::center: -0.250000 -1.00000 -0.250000 boundary id: 2 manifold id: 1
+DEAL:3d::center: -0.250000 -1.00000 0.250000 boundary id: 2 manifold id: 1
+DEAL:3d::center: 0.250000 -1.00000 -0.250000 boundary id: 2 manifold id: 1
+DEAL:3d::center: 0.250000 -1.00000 0.250000 boundary id: 2 manifold id: 1
+DEAL:3d::center: 0.750000 -1.00000 -0.250000 boundary id: 2 manifold id: 1
+DEAL:3d::center: 0.750000 -1.00000 0.250000 boundary id: 2 manifold id: 1
+DEAL:3d::center: -0.750000 1.00000 -0.250000 boundary id: 3 manifold id: 1
+DEAL:3d::center: -0.750000 1.00000 0.250000 boundary id: 3 manifold id: 1
+DEAL:3d::center: -0.250000 1.00000 -0.250000 boundary id: 3 manifold id: 1
+DEAL:3d::center: -0.250000 1.00000 0.250000 boundary id: 3 manifold id: 1
+DEAL:3d::center: 0.250000 1.00000 -0.250000 boundary id: 3 manifold id: 1
+DEAL:3d::center: 0.250000 1.00000 0.250000 boundary id: 3 manifold id: 1
+DEAL:3d::center: 0.750000 1.00000 -0.250000 boundary id: 3 manifold id: 1
+DEAL:3d::center: 0.750000 1.00000 0.250000 boundary id: 3 manifold id: 1
+DEAL:3d::center: -0.384776 -0.0765367 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.384776 -0.0765367 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.384776 0.0765367 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.384776 0.0765367 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.326197 -0.217958 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.326197 -0.217958 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.326197 0.217958 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.326197 0.217958 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.217958 -0.326197 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.217958 -0.326197 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.217958 0.326197 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.217958 0.326197 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.0765367 -0.384776 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.0765367 -0.384776 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.0765367 0.384776 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.0765367 0.384776 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.0765367 -0.384776 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.0765367 -0.384776 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.0765367 0.384776 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.0765367 0.384776 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.217958 -0.326197 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.217958 -0.326197 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.217958 0.326197 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.217958 0.326197 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.326197 -0.217958 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.326197 -0.217958 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.326197 0.217958 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.326197 0.217958 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.384776 -0.0765367 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.384776 -0.0765367 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.384776 0.0765367 -0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: 0.384776 0.0765367 0.250000 boundary id: 4 manifold id: 0
+DEAL:3d::center: -0.846194 -0.206634 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.846194 0.206634 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.831549 -0.616990 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.831549 0.616990 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.616990 -0.831549 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.616990 0.831549 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.538582 -0.119903 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.538582 0.119903 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.494648 -0.350969 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.494648 0.350969 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.350969 -0.494648 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.350969 0.494648 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.206634 -0.846194 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.206634 0.846194 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.119903 -0.538582 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.119903 0.538582 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.119903 -0.538582 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.119903 0.538582 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.206634 -0.846194 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.206634 0.846194 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.350969 -0.494648 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.350969 0.494648 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.494648 -0.350969 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.494648 0.350969 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.538582 -0.119903 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.538582 0.119903 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.616990 -0.831549 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.616990 0.831549 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.831549 -0.616990 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.831549 0.616990 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.846194 -0.206634 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: 0.846194 0.206634 -0.500000 boundary id: 5 manifold id: 1
+DEAL:3d::center: -0.846194 -0.206634 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.846194 0.206634 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.831549 -0.616990 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.831549 0.616990 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.616990 -0.831549 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.616990 0.831549 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.538582 -0.119903 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.538582 0.119903 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.494648 -0.350969 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.494648 0.350969 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.350969 -0.494648 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.350969 0.494648 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.206634 -0.846194 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.206634 0.846194 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.119903 -0.538582 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: -0.119903 0.538582 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.119903 -0.538582 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.119903 0.538582 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.206634 -0.846194 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.206634 0.846194 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.350969 -0.494648 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.350969 0.494648 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.494648 -0.350969 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.494648 0.350969 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.538582 -0.119903 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.538582 0.119903 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.616990 -0.831549 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.616990 0.831549 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.831549 -0.616990 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.831549 0.616990 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.846194 -0.206634 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::center: 0.846194 0.206634 0.500000 boundary id: 6 manifold id: 1
+DEAL:3d::
+DEAL:3d::
+DEAL:3d::center: 0.846194 0.206634 -0.250000 manifold id: 1
+DEAL:3d::center: 0.831549 0.616990 -0.250000 manifold id: 1
+DEAL:3d::center: 0.538582 0.119903 -0.250000 manifold id: 1
+DEAL:3d::center: 0.494648 0.350969 -0.250000 manifold id: 1
+DEAL:3d::center: 0.846194 0.206634 0.250000 manifold id: 1
+DEAL:3d::center: 0.831549 0.616990 0.250000 manifold id: 1
+DEAL:3d::center: 0.538582 0.119903 0.250000 manifold id: 1
+DEAL:3d::center: 0.494648 0.350969 0.250000 manifold id: 1
+DEAL:3d::center: 0.616990 0.831549 -0.250000 manifold id: 1
+DEAL:3d::center: 0.206634 0.846194 -0.250000 manifold id: 1
+DEAL:3d::center: 0.350969 0.494648 -0.250000 manifold id: 1
+DEAL:3d::center: 0.119903 0.538582 -0.250000 manifold id: 1
+DEAL:3d::center: 0.616990 0.831549 0.250000 manifold id: 1
+DEAL:3d::center: 0.206634 0.846194 0.250000 manifold id: 1
+DEAL:3d::center: 0.350969 0.494648 0.250000 manifold id: 1
+DEAL:3d::center: 0.119903 0.538582 0.250000 manifold id: 1
+DEAL:3d::center: -0.206634 0.846194 -0.250000 manifold id: 1
+DEAL:3d::center: -0.616990 0.831549 -0.250000 manifold id: 1
+DEAL:3d::center: -0.119903 0.538582 -0.250000 manifold id: 1
+DEAL:3d::center: -0.350969 0.494648 -0.250000 manifold id: 1
+DEAL:3d::center: -0.206634 0.846194 0.250000 manifold id: 1
+DEAL:3d::center: -0.616990 0.831549 0.250000 manifold id: 1
+DEAL:3d::center: -0.119903 0.538582 0.250000 manifold id: 1
+DEAL:3d::center: -0.350969 0.494648 0.250000 manifold id: 1
+DEAL:3d::center: -0.831549 0.616990 -0.250000 manifold id: 1
+DEAL:3d::center: -0.846194 0.206634 -0.250000 manifold id: 1
+DEAL:3d::center: -0.494648 0.350969 -0.250000 manifold id: 1
+DEAL:3d::center: -0.538582 0.119903 -0.250000 manifold id: 1
+DEAL:3d::center: -0.831549 0.616990 0.250000 manifold id: 1
+DEAL:3d::center: -0.846194 0.206634 0.250000 manifold id: 1
+DEAL:3d::center: -0.494648 0.350969 0.250000 manifold id: 1
+DEAL:3d::center: -0.538582 0.119903 0.250000 manifold id: 1
+DEAL:3d::center: -0.846194 -0.206634 -0.250000 manifold id: 1
+DEAL:3d::center: -0.831549 -0.616990 -0.250000 manifold id: 1
+DEAL:3d::center: -0.538582 -0.119903 -0.250000 manifold id: 1
+DEAL:3d::center: -0.494648 -0.350969 -0.250000 manifold id: 1
+DEAL:3d::center: -0.846194 -0.206634 0.250000 manifold id: 1
+DEAL:3d::center: -0.831549 -0.616990 0.250000 manifold id: 1
+DEAL:3d::center: -0.538582 -0.119903 0.250000 manifold id: 1
+DEAL:3d::center: -0.494648 -0.350969 0.250000 manifold id: 1
+DEAL:3d::center: -0.616990 -0.831549 -0.250000 manifold id: 1
+DEAL:3d::center: -0.206634 -0.846194 -0.250000 manifold id: 1
+DEAL:3d::center: -0.350969 -0.494648 -0.250000 manifold id: 1
+DEAL:3d::center: -0.119903 -0.538582 -0.250000 manifold id: 1
+DEAL:3d::center: -0.616990 -0.831549 0.250000 manifold id: 1
+DEAL:3d::center: -0.206634 -0.846194 0.250000 manifold id: 1
+DEAL:3d::center: -0.350969 -0.494648 0.250000 manifold id: 1
+DEAL:3d::center: -0.119903 -0.538582 0.250000 manifold id: 1
+DEAL:3d::center: 0.206634 -0.846194 -0.250000 manifold id: 1
+DEAL:3d::center: 0.616990 -0.831549 -0.250000 manifold id: 1
+DEAL:3d::center: 0.119903 -0.538582 -0.250000 manifold id: 1
+DEAL:3d::center: 0.350969 -0.494648 -0.250000 manifold id: 1
+DEAL:3d::center: 0.206634 -0.846194 0.250000 manifold id: 1
+DEAL:3d::center: 0.616990 -0.831549 0.250000 manifold id: 1
+DEAL:3d::center: 0.119903 -0.538582 0.250000 manifold id: 1
+DEAL:3d::center: 0.350969 -0.494648 0.250000 manifold id: 1
+DEAL:3d::center: 0.831549 -0.616990 -0.250000 manifold id: 1
+DEAL:3d::center: 0.846194 -0.206634 -0.250000 manifold id: 1
+DEAL:3d::center: 0.494648 -0.350969 -0.250000 manifold id: 1
+DEAL:3d::center: 0.538582 -0.119903 -0.250000 manifold id: 1
+DEAL:3d::center: 0.831549 -0.616990 0.250000 manifold id: 1
+DEAL:3d::center: 0.846194 -0.206634 0.250000 manifold id: 1
+DEAL:3d::center: 0.494648 -0.350969 0.250000 manifold id: 1
+DEAL:3d::center: 0.538582 -0.119903 0.250000 manifold id: 1

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.