]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Change architecture to use a std::vector instead
authorBruno Blais <blais.bruno@gmail.com>
Mon, 30 Jun 2025 13:55:05 +0000 (09:55 -0400)
committerBruno Blais <blais.bruno@gmail.com>
Mon, 30 Jun 2025 13:55:05 +0000 (09:55 -0400)
include/deal.II/grid/grid_generator.h
source/grid/grid_generator.cc
source/grid/grid_generator_from_name.cc
tests/grid/grid_generator_custom_channel_with_cylinder.cc
tests/grid/grid_generator_custom_channel_with_cylinder.output

index f238d5b46f4b1330ae7eceb2f25be82a1339032b..587563802d32f0e800393054069b3e43bfb62384 100644 (file)
@@ -548,20 +548,22 @@ namespace GridGenerator
                         const bool          colorize           = false);
 
   /**
-   * Generate a grid consisting of a channel with a cylinder where the length
-   * and the height of the channel can be defined by the user. This generator is
-   * a generalized version of GridGenerator::channel_with_cylinder. It can be
-   * used for benchmarking Navier-Stokes solvers for various flows around a
-   * cylinder cases in 2D or 3D. The main limitation of this generator is that
-   * the diameter of the cylinder is fixed at one and that the dimensions of the
-   * channel must be an integer multiple of this diameter. Consequently, the
-   * length before the cylinder
-   * (length_pre, $L_{pre}$), the length after the cylinder (length_post,
-   * $L_{post}$) and the half height of the channel (half_height, $H$) must be
-   * integer values. The geometry consists of a channel of size $[-L_{pre}, -H]
-   * \times [L_{post}, H] \times [0, W] $ (where the $z$ dimension is omitted in
-   * 2d) with a cylinder, parallel to the $z$ axis with diameter $1$, centered
-   * at $(0, 0, 0)$. The channel has three distinct regions: <ol>
+   * Generate a grid consisting of a channel with a cylinder where the length,
+   * the height and the depth (in 3D) of the channel can be defined by the user.
+   * This generator is a generalized version of
+   * GridGenerator::channel_with_cylinder. It can be used for benchmarking
+   * Navier-Stokes solvers for various flows around a cylinder cases in 2D or
+   * 3D. The main limitation of this generator is that the diameter of the
+   * cylinder is fixed at one and that the dimensions of the channel along the x
+   * and y dimensions must be an integer multiple of this diameter.
+   * Consequently, the length before the cylinder
+   * ($L_{pre}$), the length after the cylinder ($L_{post}$), the height below
+   * ($H_{below}$) and the height above ($H_{above}$) must be integer values.
+   * The depth of the channel ($W$) can be any real positive number. The
+   * geometry consists of a channel of size $[-L_{pre}, -H_{below}] \times
+   * [L_{post}, H_{above}] \times [0, W] $ (where the $z$ dimension is omitted
+   * in 2d) with a cylinder, parallel to the $z$ axis with diameter $1$,
+   * centered at $(0, 0, 0)$. The channel has three distinct regions: <ol>
    *   <li>If @p n_shells is greater than zero, then there are that many shells
    *   centered around the cylinder,</li>
    *   <li>a blending region between the shells and the rest of the
@@ -569,7 +571,7 @@ namespace GridGenerator
    *   <li>a bulk region consisting of Cartesian cells.</li>
    * </ol>
    * Here is an example of a grid (without additional global refinement)
-   * where the arguments were length_pre=8, length_post=16, half_height=8 and
+   * where the arguments were {8,16,8,8} and
    * the default arguments are used for the number of shells and skewness:
    *
    * @image html custom_channel_with_cylinder.png
@@ -594,11 +596,14 @@ namespace GridGenerator
    * @param tria Triangulation to be created. Must be empty upon calling this
    * function.
    *
-   * @param half_height The half height of the channel (y- to 0 or 0 to y+).
+   * @param lengths_and_heights  A vector containing the distance of the domain to the center of the cylinder.
+   * The vector must contain 4 unsigned integers which consist in the length (in
+   * number of cylinder diameter) before the cylinder, after the cylinder, below
+   * the cylinder and above the cylinder.
    *
-   * @param length_pre The length of the channel from the left side (x-) to the center of the cylinder (0)
+   * @param depth The depth of the simulation domain (in 3D, the z axis)
    *
-   * @param length_post The length of the channel from the cylinder (0) to the right side (x+)
+   * @param depth_division The number of division along the z axis
    *
    * @param shell_region_radius Radius of the layer of shells around the cylinder.
    * This value should be between larger than 0.5 (the radius of the cylinder)
@@ -606,10 +611,6 @@ namespace GridGenerator
    *
    * @param n_shells Number of shells to use in the shell layer.
    *
-   * @param depth The depth of the simulation domaine (in 3D, the z axis)
-   *
-   * @param depth_division The number of division along the z axis
-   *
    * @param skewness Parameter controlling how close the shells are
    * to the cylinder: see the mathematical definition given in
    * GridGenerator::concentric_hyper_shells.
@@ -632,17 +633,16 @@ namespace GridGenerator
    */
   template <int dim>
   void
-  custom_channel_with_cylinder(Triangulation<dim> &tria,
-                               const unsigned int  half_height,
-                               const unsigned int  length_pre,
-                               const unsigned int  length_post,
-                               const double        depth               = 1,
-                               const unsigned int  depth_division      = 1,
-                               const double        shell_region_radius = 0.75,
-                               const unsigned int  n_shells            = 2,
-                               const double        skewness            = 2.0,
-                               const bool use_transfinite_region       = false,
-                               const bool colorize                     = false);
+  custom_channel_with_cylinder(
+    Triangulation<dim>             &tria,
+    const std::vector<unsigned int> lengths_and_heights,
+    const double                    depth                  = 1,
+    const unsigned int              depth_division         = 1,
+    const double                    shell_region_radius    = 0.75,
+    const unsigned int              n_shells               = 2,
+    const double                    skewness               = 2.0,
+    const bool                      use_transfinite_region = false,
+    const bool                      colorize               = false);
 
   /**
    * A general @p dim -dimensional cell (a segment if dim is 1, a quadrilateral
index e72d1f627318db69db7debc713da15551432e6a6..d412431c2aa13c6c0a15f5a5709f62465d0cc240 100644 (file)
@@ -3832,9 +3832,7 @@ namespace GridGenerator
   template <>
   void
   custom_channel_with_cylinder(Triangulation<1> &,
-                               const unsigned int,
-                               const unsigned int,
-                               const unsigned int,
+                               const std::vector<unsigned int>,
                                const double,
                                unsigned int,
                                const double,
@@ -3848,17 +3846,16 @@ namespace GridGenerator
 
   template <>
   void
-  custom_channel_with_cylinder(Triangulation<2>  &tria,
-                               const unsigned int half_height,
-                               const unsigned int length_pre,
-                               const unsigned int length_post,
-                               const double,
-                               unsigned int,
-                               const double       shell_region_radius,
-                               const unsigned int n_shells,
-                               const double       skewness,
-                               const bool         use_transfinite_region,
-                               const bool         colorize)
+  custom_channel_with_cylinder(
+    Triangulation<2>               &tria,
+    const std::vector<unsigned int> lengths_and_heights,
+    const double,
+    unsigned int,
+    const double       shell_region_radius,
+    const unsigned int n_shells,
+    const double       skewness,
+    const bool         use_transfinite_region,
+    const bool         colorize)
   {
     const types::manifold_id polar_manifold_id = 0;
     const types::manifold_id tfi_manifold_id   = 1;
@@ -3872,8 +3869,13 @@ namespace GridGenerator
     // The number of repetitions is chosen to ensure that the cylinder
     // occupies four cells.
 
+    const unsigned int length_pre   = lengths_and_heights[0];
+    const unsigned int length_post  = lengths_and_heights[1];
+    const unsigned int height_below = lengths_and_heights[2];
+    const unsigned int height_above = lengths_and_heights[3];
+
     const unsigned int length_repetitions = length_pre + length_post;
-    const unsigned int height_repetitions = 2 * half_height;
+    const unsigned int height_repetitions = height_above + height_below;
 
     // We begin by setting up a grid that is length_repetition by
     // height_repetitions cells. These cells are all square
@@ -3881,8 +3883,8 @@ namespace GridGenerator
     GridGenerator::subdivided_hyper_rectangle(
       bulk_tria,
       {(length_repetitions), height_repetitions},
-      Point<2>(-double(length_pre), -double(half_height)),
-      Point<2>(double(length_post), double(half_height)));
+      Point<2>(-double(length_pre), -double(height_below)),
+      Point<2>(double(length_post), double(height_above)));
 
     // bulk_tria now looks like this:
     //
@@ -4010,8 +4012,8 @@ namespace GridGenerator
             else if (face->manifold_id() == polar_manifold_id)
               face->set_boundary_id(2);
             // bottom side
-            else if (std::abs(center[1] - (-static_cast<double>(half_height))) <
-                     1e-10)
+            else if (std::abs(center[1] -
+                              (-static_cast<double>(height_below))) < 1e-10)
               face->set_boundary_id(3);
             // top side
             else
@@ -4021,23 +4023,20 @@ namespace GridGenerator
 
   template <>
   void
-  custom_channel_with_cylinder(Triangulation<3>  &tria,
-                               const unsigned int half_height,
-                               const unsigned int length_pre,
-                               const unsigned int length_post,
-                               const double       depth,
-                               unsigned int       depth_division,
-                               const double       shell_region_radius,
-                               const unsigned int n_shells,
-                               const double       skewness,
-                               const bool         use_transfinite_region,
-                               const bool         colorize)
+  custom_channel_with_cylinder(
+    Triangulation<3>               &tria,
+    const std::vector<unsigned int> lengths_and_heights,
+    const double                    depth,
+    unsigned int                    depth_division,
+    const double                    shell_region_radius,
+    const unsigned int              n_shells,
+    const double                    skewness,
+    const bool                      use_transfinite_region,
+    const bool                      colorize)
   {
     Triangulation<2> tria_2;
     custom_channel_with_cylinder(tria_2,
-                                 half_height,
-                                 length_pre,
-                                 length_post,
+                                 lengths_and_heights,
                                  depth,
                                  depth_division,
                                  shell_region_radius,
index 7f5deca623b061e4856a916270a404131f8e0c9e..d603fc4caa434f25bf66b0984cc199ee22dde99b 100644 (file)
@@ -122,9 +122,7 @@ namespace GridGenerator
       else if (name == "custom_channel_with_cylinder")
         parse_and_create<dim,
                          dim,
-                         unsigned int,
-                         unsigned int,
-                         unsigned int,
+                         std::vector<unsigned int>,
                          double,
                          unsigned int,
                          double,
index e15b5d9e446b3ebe7470a0031c786ada00bee527..9ef899c228e403ea7c871e95a34377d7a8a0f10a 100644 (file)
@@ -31,7 +31,7 @@ dim_2(std::ostream &os)
   Triangulation<d>   tr;
 
   GridGenerator::custom_channel_with_cylinder(
-    tr, 4, 3, 5, 1, 2, 0.75, 4, 2, true, true);
+    tr, {3, 5, 4, 4}, 1, 2, 0.75, 4, 2, true, true);
 
   GridOut gout;
   gout.write_vtk(tr, os);
@@ -43,7 +43,7 @@ dim_3(std::ostream &os)
   const unsigned int d = 3;
   Triangulation<d>   tr;
   GridGenerator::custom_channel_with_cylinder(
-    tr, 4, 3, 5, 1, 2, 0.75, 4, 2, true, true);
+    tr, {3, 5, 4, 4}, 1, 2, 0.75, 4, 2, true, true);
   GridOut gout;
   gout.write_vtk(tr, os);
 }
index 28ac23dcdb7e36bcace97a270d0001e390045bc2..f9c0e3935d9aace93ec325b4854dbc6453d1e6d6 100644 (file)
@@ -125,7 +125,7 @@ POINTS 120 double
 -9.18485e-17 -0.500000 0
 0.353553 -0.353553 0
 
-CELLS 196 788
+CELLS 204 812
 4 10 9 0 1
 4 11 10 1 2
 4 12 11 2 3
@@ -226,6 +226,14 @@ CELLS 196 788
 4 86 85 29 30
 4 87 86 30 31
 4 80 87 31 39
+2 1 0
+2 2 1
+2 3 2
+2 4 3
+2 5 4
+2 6 5
+2 7 6
+2 8 7
 2 17 8
 2 26 17
 2 35 26
@@ -323,22 +331,22 @@ CELLS 196 788
 2 119 111
 2 119 118
 
-CELL_TYPES 196
+CELL_TYPES 204
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 
-3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
+3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
 
 
-CELL_DATA 196
+CELL_DATA 204
 SCALARS MaterialID int 1
 LOOKUP_TABLE default
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-1 1 1 1 1 1 1 4 4 4 4 4 4 4 1 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 -1 2 2 -1 2 -1 2 -1 2 -1 -1 2 -1 2 
+3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 4 4 4 4 4 4 4 1 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 -1 2 2 -1 2 -1 2 -1 2 -1 -1 2 -1 2 
 
 
 SCALARS ManifoldID int 1
 LOOKUP_TABLE default
 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 
--1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 
 # vtk DataFile Version 3.0
 Triangulation generated with deal.II
@@ -586,7 +594,7 @@ POINTS 240 double
 -9.18485e-17 -0.500000 1.00000
 0.353553 -0.353553 1.00000
 
-CELLS 596 2980
+CELLS 604 3020
 8 10 9 0 1 130 129 120 121
 8 11 10 1 2 131 130 121 122
 8 12 11 2 3 132 131 122 123
@@ -687,6 +695,14 @@ CELLS 596 2980
 8 86 85 29 30 206 205 149 150
 8 87 86 30 31 207 206 150 151
 8 80 87 31 39 200 207 151 159
+4 1 121 120 0
+4 2 122 121 1
+4 3 123 122 2
+4 4 124 123 3
+4 5 125 124 4
+4 6 126 125 5
+4 7 127 126 6
+4 8 128 127 7
 4 10 9 0 1
 4 11 10 1 2
 4 12 11 2 3
@@ -1184,20 +1200,20 @@ CELLS 596 2980
 2 239 238
 2 239 231
 
-CELL_TYPES 596
+CELL_TYPES 604
 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 
-9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 
+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
 
-CELL_DATA 596
+CELL_DATA 604
 SCALARS MaterialID int 1
 LOOKUP_TABLE default
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 1 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 1 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 1 5 -1 -1 5 -1 5 -1 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 5 -1 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 5 -1 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 5 -1 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 2 -1 5 2 5 -1 2 -1 5 2 -1 5 2 -1 5 2 -1 5 2 -1 5 2 -1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
+3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 1 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 1 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 1 5 -1 -1 5 -1 5 -1 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 5 -1 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 5 -1 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 5 -1 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 -1 -1 5 2 -1 5 2 5 -1 2 -1 5 2 -1 5 2 -1 5 2 -1 5 2 -1 5 2 -1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 
 SCALARS ManifoldID int 1
 LOOKUP_TABLE default
 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 
--1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

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.