]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Added GridGenerator::generate_from_name_and_arguments 8654/head
authorLuca Heltai <luca.heltai@sissa.it>
Tue, 27 Aug 2019 13:06:47 +0000 (15:06 +0200)
committerLuca Heltai <luca.heltai@sissa.it>
Tue, 17 Sep 2019 14:14:37 +0000 (16:14 +0200)
doc/news/changes/minor/20190827LucaHeltai [new file with mode: 0644]
include/deal.II/base/mutable_bind.h
include/deal.II/grid/grid_generator.h
source/grid/CMakeLists.txt
source/grid/grid_generator_from_name.cc [new file with mode: 0644]
source/grid/grid_generator_from_name.inst.in [new file with mode: 0644]
source/numerics/vector_tools_project_qpmf.inst.in
tests/grid_generator_from_name_and_argument_01.cc [new file with mode: 0644]
tests/grid_generator_from_name_and_argument_01.output [new file with mode: 0644]

diff --git a/doc/news/changes/minor/20190827LucaHeltai b/doc/news/changes/minor/20190827LucaHeltai
new file mode 100644 (file)
index 0000000..dd0c86b
--- /dev/null
@@ -0,0 +1,5 @@
+New: Added a GridGenerator::generate_from_name_and_arguments() that leverages the MutableBind class
+to parse two strings, and generate a grid from them interpreting one as a GridGenerator function
+name to call, and the other as a tuple of arguments to pass to the function.
+<br>
+(Luca Heltai, 2019/08/27)
index eb0824d4a724494775ee085e4136679a689afb90..8abbaf6d1a31bdc8b0a124c005ef652524bf0077 100644 (file)
@@ -229,7 +229,8 @@ namespace Utilities
     FunctionType function,
     FunctionArgs &&... arguments)
     : function(function)
-    , arguments(std::make_tuple(std::move(arguments)...)){};
+    , arguments(std::make_tuple(std::move(arguments)...))
+  {}
 
 
 
@@ -238,14 +239,16 @@ namespace Utilities
   MutableBind<ReturnType, FunctionArgs...>::MutableBind(FunctionType function,
                                                         TupleType && arguments)
     : function(function)
-    , arguments(std::move(arguments)){};
+    , arguments(std::move(arguments))
+  {}
 
 
 
   template <typename ReturnType, class... FunctionArgs>
   template <class FunctionType>
   MutableBind<ReturnType, FunctionArgs...>::MutableBind(FunctionType function)
-    : function(function){};
+    : function(function)
+  {}
 
 
 
@@ -296,7 +299,7 @@ namespace Utilities
   {
     return MutableBind<ReturnType, FunctionArgs...>(function,
                                                     std::move(arguments)...);
-  };
+  }
 
 
 
index cb93c4f2b087e354dca740518d26fcce17f732ed..c8ffbbbad4c7a3d8092713172db8e2a712af324a 100644 (file)
@@ -1328,6 +1328,49 @@ namespace GridGenerator
                const double         R,
                const double         r);
 
+  /**
+   * Call one of the other GridGenerator functions, parsing the name of the
+   * function to call from the string @p grid_generator_function_name, and
+   * the arguments to the function from the string
+   * @p grid_generator_function_arguments.
+   *
+   * The string that supplies the arguments is passed to the function
+   * Patterns::Tools::Convert<TupleTyple>::to_value(), where `TupleType` here is
+   * a tuple containing **all** the arguments of the GridGenerator function,
+   * including all optional arguments.
+   *
+   * An example usage of this function is given by:
+   * @code
+   * GridGenerator::generate_from_name_and_arguments(
+   *   tria,
+   *   "hyper_ball",
+   *   "0.0, 0.0 : 1 : false");
+   * @endcode
+   * Here, the colon separates the function arguments, and the comma separates
+   * the coordinates of a Point<2> argument.
+   *
+   * According to the arity of the `TupleType`, the arguments of the function
+   * may be separated by different separators (see the documentation of
+   * Patterns::Tuple for the details of how the conversion is
+   * performed). If a wrong format is used, an exception is thrown, and the
+   * expected format is output as an error message.
+   *
+   * All GridGenerator functions are supported. If you find some that are
+   * missing, please open an issue on GitHub.
+   *
+   * @param tria                              The triangulation to be worked on
+   * @param grid_generator_function_name      The name of the function to call
+   * @param grid_generator_function_arguments The arguments of the function, in
+   * the format of a tuple-convertible string
+   *
+   * @author Luca Heltai, 2019.
+   */
+  template <int dim, int spacedim>
+  void
+  generate_from_name_and_arguments(
+    Triangulation<dim, spacedim> &tria,
+    const std::string &           grid_generator_function_name,
+    const std::string &           grid_generator_function_arguments);
   ///@}
 
   /**
index b4aebcc298bde909861cc10679bd20712fb906d6..d23cd2d9fcae49d2a37bb6fac293098c9f1f4a77 100644 (file)
@@ -18,6 +18,7 @@ INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
 SET(_unity_include_src
   cell_id.cc
   grid_generator.cc
+  grid_generator_from_name.cc
   grid_in.cc
   grid_out.cc
   grid_refinement.cc
@@ -51,6 +52,7 @@ SETUP_SOURCE_LIST("${_unity_include_src}"
 SET(_inst
   cell_id.inst.in
   grid_generator.inst.in
+  grid_generator_from_name.inst.in
   grid_in.inst.in
   grid_out.inst.in
   grid_refinement.inst.in
diff --git a/source/grid/grid_generator_from_name.cc b/source/grid/grid_generator_from_name.cc
new file mode 100644 (file)
index 0000000..693b8c1
--- /dev/null
@@ -0,0 +1,367 @@
+// ---------------------------------------------------------------------
+//
+// 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.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/base/mutable_bind.h>
+
+#include <deal.II/grid/grid_generator.h>
+
+DEAL_II_NAMESPACE_OPEN
+
+namespace GridGenerator
+{
+  namespace
+  {
+    /**
+     * Given a GridGenerator function pointer, a  string containig a text
+     * version of the function arguments and an empty Triangulation, calls the
+     * corresponding function, after parsing the arguments from the given
+     * string.
+     */
+    template <int dim, int spacedim, class... Arguments>
+    void
+    parse_and_create(void (*generator)(Triangulation<dim, spacedim> &,
+                                       Arguments...),
+                     const std::string &           arguments,
+                     Triangulation<dim, spacedim> &tria)
+    {
+      std::function<void(Arguments...)> wrapper =
+        [&tria, &generator](Arguments... args) { generator(tria, args...); };
+      auto bound_function = Utilities::mutable_bind(wrapper);
+      bound_function.parse_arguments(arguments);
+      bound_function();
+    }
+
+
+    /**
+     * Create grids that only exist for codimension zero combinations.
+     *
+     * Return true if a grid was actually generated, false otherwise.
+     */
+    template <int dim, int spacedim>
+    typename std::enable_if<dim != spacedim, bool>::type
+    generate_codimension_zero_grid(const std::string &,
+                                   const std::string &,
+                                   Triangulation<dim, spacedim> &)
+    {
+      return false;
+    }
+
+    /**
+     * Create grids that only exist for codimension zero combinations.
+     *
+     * Return true if a grid was actually generated, false otherwise.
+     */
+    template <int dim>
+    bool
+    generate_codimension_zero_grid(const std::string & name,
+                                   const std::string & arguments,
+                                   Triangulation<dim> &tria)
+    {
+      if (name == "simplex")
+        parse_and_create<dim, dim, const std::vector<Point<dim>> &>(simplex,
+                                                                    arguments,
+                                                                    tria);
+      else if (name == "subdivided_hyper_rectangle")
+        {
+          // subdivided_hyper_rectangle is polymorphic, and can be called with
+          // different sets of arguments. We support two of these function
+          // calls. We try the first one, and if parsing fails, we go to the
+          // second one.
+          try
+            {
+              parse_and_create<dim,
+                               dim,
+                               const std::vector<unsigned int> &,
+                               const Point<dim> &,
+                               const Point<dim> &,
+                               bool>(subdivided_hyper_rectangle,
+                                     arguments,
+                                     tria);
+            }
+          catch (Patterns::Tools::ExcNoMatch)
+            {
+              parse_and_create<dim,
+                               dim,
+                               const std::vector<std::vector<double>> &,
+                               const Point<dim> &,
+                               const Point<dim> &,
+                               bool>(subdivided_hyper_rectangle,
+                                     arguments,
+                                     tria);
+            }
+        }
+      else if (name == "plate_with_a_hole")
+        parse_and_create<dim,
+                         dim,
+                         double,
+                         double,
+                         double,
+                         double,
+                         double,
+                         double,
+                         const Point<dim>,
+                         types::manifold_id,
+                         types::manifold_id,
+                         double,
+                         unsigned int,
+                         bool>(plate_with_a_hole, arguments, tria);
+      else if (name == "channel_with_cylinder")
+        parse_and_create<dim, dim, double, unsigned int, double, bool>(
+          channel_with_cylinder, arguments, tria);
+
+      else if (name == "enclosed_hyper_cube")
+        parse_and_create<dim, dim, double, double, double, bool>(
+          enclosed_hyper_cube, arguments, tria);
+
+      else if (name == "hyper_ball")
+        parse_and_create<dim, dim, const Point<dim> &, double, bool>(hyper_ball,
+                                                                     arguments,
+                                                                     tria);
+
+      else if (name == "quarter_hyper_ball")
+        parse_and_create<dim, dim, const Point<dim> &, double>(
+          quarter_hyper_ball, arguments, tria);
+
+      else if (name == "half_hyper_ball")
+        parse_and_create<dim, dim, const Point<dim> &, double>(half_hyper_ball,
+                                                               arguments,
+                                                               tria);
+
+      else if (name == "cylinder")
+        parse_and_create<dim, dim, double, double>(cylinder, arguments, tria);
+
+      else if (name == "truncated_cone")
+        parse_and_create<dim, dim, double, double, double>(truncated_cone,
+                                                           arguments,
+                                                           tria);
+
+      else if (name == "hyper_L")
+        parse_and_create<dim, dim, double, double, bool>(hyper_L,
+                                                         arguments,
+                                                         tria);
+
+      else if (name == "hyper_cube_slit")
+        parse_and_create<dim, dim, double, double, bool>(hyper_cube_slit,
+                                                         arguments,
+                                                         tria);
+
+      else if (name == "hyper_shell")
+        parse_and_create<dim,
+                         dim,
+                         const Point<dim> &,
+                         double,
+                         double,
+                         unsigned int,
+                         bool>(hyper_shell, arguments, tria);
+
+      else if (name == "half_hyper_shell")
+        parse_and_create<dim,
+                         dim,
+                         const Point<dim> &,
+                         double,
+                         double,
+                         unsigned int,
+                         bool>(half_hyper_shell, arguments, tria);
+
+      else if (name == "quarter_hyper_shell")
+        parse_and_create<dim,
+                         dim,
+                         const Point<dim> &,
+                         double,
+                         double,
+                         unsigned int,
+                         bool>(quarter_hyper_shell, arguments, tria);
+
+      else if (name == "cylinder_shell")
+        parse_and_create<dim,
+                         dim,
+                         double,
+                         double,
+                         double,
+                         unsigned int,
+                         unsigned int>(cylinder_shell, arguments, tria);
+
+      else if (name == "hyper_cube_with_cylindrical_hole")
+        parse_and_create<dim, dim, double, double, double, unsigned int, bool>(
+          hyper_cube_with_cylindrical_hole, arguments, tria);
+
+      else if (name == "concentric_hyper_shells")
+        parse_and_create<dim,
+                         dim,
+                         const Point<dim> &,
+                         double,
+                         double,
+                         unsigned int,
+                         double,
+                         unsigned int,
+                         bool>(concentric_hyper_shells, arguments, tria);
+      else
+        return false;
+
+      return true;
+    }
+
+
+    /**
+     * Create grids that only exist for codimension one combinations.
+     *
+     * Return true if a grid was actually generated, false otherwise.
+     */
+    template <int dim, int spacedim>
+    typename std::enable_if<dim != spacedim - 1, bool>::type
+    generate_codimension_one_grid(const std::string &,
+                                  const std::string &,
+                                  Triangulation<dim, spacedim> &)
+    {
+      return false;
+    }
+
+    /**
+     * Create grids that only exist for codimension one combinations.
+     *
+     * Return true if a grid was actually generated, false otherwise.
+     */
+    template <int dim>
+    bool
+    generate_codimension_one_grid(const std::string &          name,
+                                  const std::string &          arguments,
+                                  Triangulation<dim, dim + 1> &tria)
+    {
+      if (name == "hyper_sphere")
+        parse_and_create<dim, dim + 1, const Point<dim + 1> &, double>(
+          hyper_sphere, arguments, tria);
+      else
+        return false;
+      return true;
+    }
+
+    /**
+     * Methods only implemented for special combinations of dim and spacedim.
+     *
+     * Return true if a grid was actually generated, false otherwise.
+     */
+    template <int dim, int spacedim>
+    bool
+    generate_special(const std::string &,
+                     const std::string &,
+                     Triangulation<dim, spacedim> &)
+    {
+      return false;
+    }
+
+    /**
+     * Methods implemented only for Triangulation<3,3>.
+     *
+     * Return true if a grid was actually generated, false otherwise.
+     */
+    bool
+    generate_special(const std::string &  name,
+                     const std::string &  arguments,
+                     Triangulation<3, 3> &tria)
+    {
+      if (name == "moebius")
+        parse_and_create<3, 3, unsigned int, unsigned int, double, double>(
+          moebius, arguments, tria);
+      else if (name == "torus")
+        parse_and_create<3, 3, double, double, unsigned int>(torus,
+                                                             arguments,
+                                                             tria);
+      else
+        {
+          return false;
+        }
+      return true;
+    }
+
+    /**
+     * Methods implemented only for Triangulation<2,3>.
+     *
+     * Return true if a grid was actually generated, false otherwise.
+     */
+    bool
+    generate_special(const std::string &  name,
+                     const std::string &  arguments,
+                     Triangulation<2, 3> &tria)
+    {
+      if (name == "torus")
+        parse_and_create<2, 3, double, double, unsigned int>(torus,
+                                                             arguments,
+                                                             tria);
+      else
+        {
+          return false;
+        }
+      return true;
+    }
+  } // namespace
+
+
+
+  template <int dim, int spacedim>
+  void
+  generate_from_name_and_arguments(Triangulation<dim, spacedim> &tria,
+                                   const std::string &           name,
+                                   const std::string &           arguments)
+  {
+    // We begin with all function calls that are implemented for all
+    // combinations of dim and spacedim.
+    if (name == "hyper_cube")
+      parse_and_create<dim, spacedim, double, double, bool>(hyper_cube,
+                                                            arguments,
+                                                            tria);
+    else if (name == "subdivided_hyper_cube")
+      parse_and_create<dim, spacedim, unsigned int, double, double>(
+        subdivided_hyper_cube, arguments, tria);
+    else if (name == "hyper_rectangle")
+      parse_and_create<dim,
+                       spacedim,
+                       const Point<dim> &,
+                       const Point<dim> &,
+                       bool>(hyper_rectangle, arguments, tria);
+    else if (name == "cheese")
+      parse_and_create<dim, spacedim, const std::vector<unsigned int> &>(
+        cheese, arguments, tria);
+    else if (name == "general_cell")
+      parse_and_create<dim,
+                       spacedim,
+                       const std::vector<Point<spacedim>> &,
+                       bool>(general_cell, arguments, tria);
+    else if (name == "hyper_cross")
+      parse_and_create<dim, spacedim, const std::vector<unsigned int> &, bool>(
+        hyper_cross, arguments, tria);
+    // If none of the above worked, than we try with more specific function
+    // calls. First we try to call functions that are only implemented when
+    // dim == spacedim, then when dim == spacedim-1, and lastly, we try to see
+    // if the name, dim, and spacedim match some of the very special grid
+    // generator functions, like torus, moebius, etc.
+    //
+    // If one of the function call succeeds, we skip the rest and return.
+    else if (generate_codimension_zero_grid(name, arguments, tria))
+      {}
+    else if (generate_codimension_one_grid(name, arguments, tria))
+      {}
+    else if (generate_special(name, arguments, tria))
+      {}
+    else
+      // If we got here, we really have no idea what grid the user wants to
+      // generate.
+      AssertThrow(false,
+                  ExcMessage(name + "(" + arguments + ") not implemented"));
+  }
+} // namespace GridGenerator
+
+#include "grid_generator_from_name.inst"
+
+DEAL_II_NAMESPACE_CLOSE
diff --git a/source/grid/grid_generator_from_name.inst.in b/source/grid/grid_generator_from_name.inst.in
new file mode 100644 (file)
index 0000000..fa209b0
--- /dev/null
@@ -0,0 +1,30 @@
+// ---------------------------------------------------------------------
+//
+// 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.
+//
+// ---------------------------------------------------------------------
+
+
+for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS)
+  {
+    namespace GridGenerator
+    \{
+#if deal_II_dimension <= deal_II_space_dimension
+      template void
+      generate_from_name_and_arguments<deal_II_dimension,
+                                       deal_II_space_dimension>(
+        Triangulation<deal_II_dimension, deal_II_space_dimension> &,
+        const std::string &,
+        const std::string &);
+#endif
+    \}
+  }
index 12526638f1efa63cf140765e677f8e18ffbae168..08699b2c64a0f081269b3ac08f3a1a5e670fda1b 100644 (file)
@@ -46,4 +46,4 @@ for (VEC : REAL_NONBLOCK_VECTORS; deal_II_dimension : DIMENSIONS)
 
 
     \}
-  }
\ No newline at end of file
+  }
diff --git a/tests/grid_generator_from_name_and_argument_01.cc b/tests/grid_generator_from_name_and_argument_01.cc
new file mode 100644 (file)
index 0000000..058d15b
--- /dev/null
@@ -0,0 +1,71 @@
+// ---------------------------------------------------------------------
+//
+// 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::generate_from_name_and_arguments.
+
+#include <deal.II/base/tensor.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/grid/tria.h>
+
+#include "../tests.h"
+
+template <int dim, int spacedim>
+void
+test(const std::string &name, const std::string &arguments)
+{
+  Triangulation<dim, spacedim> tria;
+
+  deallog << "Generating Triangulation<" << dim << ", " << spacedim
+          << "> : " << name << "(" << arguments << ")" << std::endl;
+
+  GridGenerator::generate_from_name_and_arguments(tria, name, arguments);
+
+  GridOut go;
+  go.write_msh(tria, deallog.get_file_stream());
+
+  std::ofstream ofile(name + "_" + std::to_string(dim) + "_" +
+                      std::to_string(spacedim) + ".msh");
+  go.write_msh(tria, ofile);
+}
+
+
+int
+main()
+{
+  initlog();
+
+  test<2, 2>("cheese", "3, 2");
+  test<2, 3>("cheese", "3, 2");
+  test<3, 3>("cheese", "4, 3, 2");
+
+  test<1, 1>("general_cell", "0;     1    : true");
+  test<1, 2>("general_cell", "0,0  ; 1,0  : true");
+  test<1, 3>("general_cell", "0,0,0; 1,0,0: true");
+
+  test<2, 2>("general_cell", "0,0; 1,0; 0,1; 1,1: true");
+  test<2, 3>("general_cell", "0,0,0; 1,0,0; 0,1,0; 1,1,0: true");
+  test<3, 3>("general_cell",
+             "0,0,0; 1,0,0; 0,1,0; 1,1,0; "
+             "0,0,1; 1,0,1; 0,1,1; 1,1,1: true");
+
+  test<1, 1>("hyper_cube", "0: 1: true");
+  test<1, 2>("hyper_cube", "0: 1: true");
+  test<1, 3>("hyper_cube", "0: 1: true");
+  test<2, 2>("hyper_cube", "0: 1: true");
+  test<2, 3>("hyper_cube", "0: 1: true");
+  test<3, 3>("hyper_cube", "0: 1: true");
+}
diff --git a/tests/grid_generator_from_name_and_argument_01.output b/tests/grid_generator_from_name_and_argument_01.output
new file mode 100644 (file)
index 0000000..d0b3e8b
--- /dev/null
@@ -0,0 +1,1174 @@
+
+DEAL::Generating Triangulation<2, 2> : cheese(3, 2)
+$NOD
+48
+1  0.00000 0.00000 0
+2  1.00000 0.00000 0
+3  2.00000 0.00000 0
+4  3.00000 0.00000 0
+5  4.00000 0.00000 0
+6  5.00000 0.00000 0
+7  6.00000 0.00000 0
+8  7.00000 0.00000 0
+9  0.00000 1.00000 0
+10  1.00000 1.00000 0
+11  2.00000 1.00000 0
+12  3.00000 1.00000 0
+13  4.00000 1.00000 0
+14  5.00000 1.00000 0
+15  6.00000 1.00000 0
+16  7.00000 1.00000 0
+17  0.00000 2.00000 0
+18  1.00000 2.00000 0
+19  2.00000 2.00000 0
+20  3.00000 2.00000 0
+21  4.00000 2.00000 0
+22  5.00000 2.00000 0
+23  6.00000 2.00000 0
+24  7.00000 2.00000 0
+25  0.00000 3.00000 0
+26  1.00000 3.00000 0
+27  2.00000 3.00000 0
+28  3.00000 3.00000 0
+29  4.00000 3.00000 0
+30  5.00000 3.00000 0
+31  6.00000 3.00000 0
+32  7.00000 3.00000 0
+33  0.00000 4.00000 0
+34  1.00000 4.00000 0
+35  2.00000 4.00000 0
+36  3.00000 4.00000 0
+37  4.00000 4.00000 0
+38  5.00000 4.00000 0
+39  6.00000 4.00000 0
+40  7.00000 4.00000 0
+41  0.00000 5.00000 0
+42  1.00000 5.00000 0
+43  2.00000 5.00000 0
+44  3.00000 5.00000 0
+45  4.00000 5.00000 0
+46  5.00000 5.00000 0
+47  6.00000 5.00000 0
+48  7.00000 5.00000 0
+$ENDNOD
+$ELM
+29
+1 3 0 0 4 1 2 10 9 
+2 3 0 0 4 2 3 11 10 
+3 3 0 0 4 3 4 12 11 
+4 3 0 0 4 4 5 13 12 
+5 3 0 0 4 5 6 14 13 
+6 3 0 0 4 6 7 15 14 
+7 3 0 0 4 7 8 16 15 
+8 3 0 0 4 9 10 18 17 
+9 3 0 0 4 11 12 20 19 
+10 3 0 0 4 13 14 22 21 
+11 3 0 0 4 15 16 24 23 
+12 3 0 0 4 17 18 26 25 
+13 3 0 0 4 18 19 27 26 
+14 3 0 0 4 19 20 28 27 
+15 3 0 0 4 20 21 29 28 
+16 3 0 0 4 21 22 30 29 
+17 3 0 0 4 22 23 31 30 
+18 3 0 0 4 23 24 32 31 
+19 3 0 0 4 25 26 34 33 
+20 3 0 0 4 27 28 36 35 
+21 3 0 0 4 29 30 38 37 
+22 3 0 0 4 31 32 40 39 
+23 3 0 0 4 33 34 42 41 
+24 3 0 0 4 34 35 43 42 
+25 3 0 0 4 35 36 44 43 
+26 3 0 0 4 36 37 45 44 
+27 3 0 0 4 37 38 46 45 
+28 3 0 0 4 38 39 47 46 
+29 3 0 0 4 39 40 48 47 
+$ENDELM
+DEAL::Generating Triangulation<2, 3> : cheese(3, 2)
+$NOD
+48
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+3  2.00000 0.00000 0.00000
+4  3.00000 0.00000 0.00000
+5  4.00000 0.00000 0.00000
+6  5.00000 0.00000 0.00000
+7  6.00000 0.00000 0.00000
+8  7.00000 0.00000 0.00000
+9  0.00000 1.00000 0.00000
+10  1.00000 1.00000 0.00000
+11  2.00000 1.00000 0.00000
+12  3.00000 1.00000 0.00000
+13  4.00000 1.00000 0.00000
+14  5.00000 1.00000 0.00000
+15  6.00000 1.00000 0.00000
+16  7.00000 1.00000 0.00000
+17  0.00000 2.00000 0.00000
+18  1.00000 2.00000 0.00000
+19  2.00000 2.00000 0.00000
+20  3.00000 2.00000 0.00000
+21  4.00000 2.00000 0.00000
+22  5.00000 2.00000 0.00000
+23  6.00000 2.00000 0.00000
+24  7.00000 2.00000 0.00000
+25  0.00000 3.00000 0.00000
+26  1.00000 3.00000 0.00000
+27  2.00000 3.00000 0.00000
+28  3.00000 3.00000 0.00000
+29  4.00000 3.00000 0.00000
+30  5.00000 3.00000 0.00000
+31  6.00000 3.00000 0.00000
+32  7.00000 3.00000 0.00000
+33  0.00000 4.00000 0.00000
+34  1.00000 4.00000 0.00000
+35  2.00000 4.00000 0.00000
+36  3.00000 4.00000 0.00000
+37  4.00000 4.00000 0.00000
+38  5.00000 4.00000 0.00000
+39  6.00000 4.00000 0.00000
+40  7.00000 4.00000 0.00000
+41  0.00000 5.00000 0.00000
+42  1.00000 5.00000 0.00000
+43  2.00000 5.00000 0.00000
+44  3.00000 5.00000 0.00000
+45  4.00000 5.00000 0.00000
+46  5.00000 5.00000 0.00000
+47  6.00000 5.00000 0.00000
+48  7.00000 5.00000 0.00000
+$ENDNOD
+$ELM
+29
+1 3 0 0 4 1 2 10 9 
+2 3 0 0 4 2 3 11 10 
+3 3 0 0 4 3 4 12 11 
+4 3 0 0 4 4 5 13 12 
+5 3 0 0 4 5 6 14 13 
+6 3 0 0 4 6 7 15 14 
+7 3 0 0 4 7 8 16 15 
+8 3 0 0 4 9 10 18 17 
+9 3 0 0 4 11 12 20 19 
+10 3 0 0 4 13 14 22 21 
+11 3 0 0 4 15 16 24 23 
+12 3 0 0 4 17 18 26 25 
+13 3 0 0 4 18 19 27 26 
+14 3 0 0 4 19 20 28 27 
+15 3 0 0 4 20 21 29 28 
+16 3 0 0 4 21 22 30 29 
+17 3 0 0 4 22 23 31 30 
+18 3 0 0 4 23 24 32 31 
+19 3 0 0 4 25 26 34 33 
+20 3 0 0 4 27 28 36 35 
+21 3 0 0 4 29 30 38 37 
+22 3 0 0 4 31 32 40 39 
+23 3 0 0 4 33 34 42 41 
+24 3 0 0 4 34 35 43 42 
+25 3 0 0 4 35 36 44 43 
+26 3 0 0 4 36 37 45 44 
+27 3 0 0 4 37 38 46 45 
+28 3 0 0 4 38 39 47 46 
+29 3 0 0 4 39 40 48 47 
+$ENDELM
+DEAL::Generating Triangulation<3, 3> : cheese(4, 3, 2)
+$NOD
+480
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+3  2.00000 0.00000 0.00000
+4  3.00000 0.00000 0.00000
+5  4.00000 0.00000 0.00000
+6  5.00000 0.00000 0.00000
+7  6.00000 0.00000 0.00000
+8  7.00000 0.00000 0.00000
+9  8.00000 0.00000 0.00000
+10  9.00000 0.00000 0.00000
+11  0.00000 1.00000 0.00000
+12  1.00000 1.00000 0.00000
+13  2.00000 1.00000 0.00000
+14  3.00000 1.00000 0.00000
+15  4.00000 1.00000 0.00000
+16  5.00000 1.00000 0.00000
+17  6.00000 1.00000 0.00000
+18  7.00000 1.00000 0.00000
+19  8.00000 1.00000 0.00000
+20  9.00000 1.00000 0.00000
+21  0.00000 2.00000 0.00000
+22  1.00000 2.00000 0.00000
+23  2.00000 2.00000 0.00000
+24  3.00000 2.00000 0.00000
+25  4.00000 2.00000 0.00000
+26  5.00000 2.00000 0.00000
+27  6.00000 2.00000 0.00000
+28  7.00000 2.00000 0.00000
+29  8.00000 2.00000 0.00000
+30  9.00000 2.00000 0.00000
+31  0.00000 3.00000 0.00000
+32  1.00000 3.00000 0.00000
+33  2.00000 3.00000 0.00000
+34  3.00000 3.00000 0.00000
+35  4.00000 3.00000 0.00000
+36  5.00000 3.00000 0.00000
+37  6.00000 3.00000 0.00000
+38  7.00000 3.00000 0.00000
+39  8.00000 3.00000 0.00000
+40  9.00000 3.00000 0.00000
+41  0.00000 4.00000 0.00000
+42  1.00000 4.00000 0.00000
+43  2.00000 4.00000 0.00000
+44  3.00000 4.00000 0.00000
+45  4.00000 4.00000 0.00000
+46  5.00000 4.00000 0.00000
+47  6.00000 4.00000 0.00000
+48  7.00000 4.00000 0.00000
+49  8.00000 4.00000 0.00000
+50  9.00000 4.00000 0.00000
+51  0.00000 5.00000 0.00000
+52  1.00000 5.00000 0.00000
+53  2.00000 5.00000 0.00000
+54  3.00000 5.00000 0.00000
+55  4.00000 5.00000 0.00000
+56  5.00000 5.00000 0.00000
+57  6.00000 5.00000 0.00000
+58  7.00000 5.00000 0.00000
+59  8.00000 5.00000 0.00000
+60  9.00000 5.00000 0.00000
+61  0.00000 6.00000 0.00000
+62  1.00000 6.00000 0.00000
+63  2.00000 6.00000 0.00000
+64  3.00000 6.00000 0.00000
+65  4.00000 6.00000 0.00000
+66  5.00000 6.00000 0.00000
+67  6.00000 6.00000 0.00000
+68  7.00000 6.00000 0.00000
+69  8.00000 6.00000 0.00000
+70  9.00000 6.00000 0.00000
+71  0.00000 7.00000 0.00000
+72  1.00000 7.00000 0.00000
+73  2.00000 7.00000 0.00000
+74  3.00000 7.00000 0.00000
+75  4.00000 7.00000 0.00000
+76  5.00000 7.00000 0.00000
+77  6.00000 7.00000 0.00000
+78  7.00000 7.00000 0.00000
+79  8.00000 7.00000 0.00000
+80  9.00000 7.00000 0.00000
+81  0.00000 0.00000 1.00000
+82  1.00000 0.00000 1.00000
+83  2.00000 0.00000 1.00000
+84  3.00000 0.00000 1.00000
+85  4.00000 0.00000 1.00000
+86  5.00000 0.00000 1.00000
+87  6.00000 0.00000 1.00000
+88  7.00000 0.00000 1.00000
+89  8.00000 0.00000 1.00000
+90  9.00000 0.00000 1.00000
+91  0.00000 1.00000 1.00000
+92  1.00000 1.00000 1.00000
+93  2.00000 1.00000 1.00000
+94  3.00000 1.00000 1.00000
+95  4.00000 1.00000 1.00000
+96  5.00000 1.00000 1.00000
+97  6.00000 1.00000 1.00000
+98  7.00000 1.00000 1.00000
+99  8.00000 1.00000 1.00000
+100  9.00000 1.00000 1.00000
+101  0.00000 2.00000 1.00000
+102  1.00000 2.00000 1.00000
+103  2.00000 2.00000 1.00000
+104  3.00000 2.00000 1.00000
+105  4.00000 2.00000 1.00000
+106  5.00000 2.00000 1.00000
+107  6.00000 2.00000 1.00000
+108  7.00000 2.00000 1.00000
+109  8.00000 2.00000 1.00000
+110  9.00000 2.00000 1.00000
+111  0.00000 3.00000 1.00000
+112  1.00000 3.00000 1.00000
+113  2.00000 3.00000 1.00000
+114  3.00000 3.00000 1.00000
+115  4.00000 3.00000 1.00000
+116  5.00000 3.00000 1.00000
+117  6.00000 3.00000 1.00000
+118  7.00000 3.00000 1.00000
+119  8.00000 3.00000 1.00000
+120  9.00000 3.00000 1.00000
+121  0.00000 4.00000 1.00000
+122  1.00000 4.00000 1.00000
+123  2.00000 4.00000 1.00000
+124  3.00000 4.00000 1.00000
+125  4.00000 4.00000 1.00000
+126  5.00000 4.00000 1.00000
+127  6.00000 4.00000 1.00000
+128  7.00000 4.00000 1.00000
+129  8.00000 4.00000 1.00000
+130  9.00000 4.00000 1.00000
+131  0.00000 5.00000 1.00000
+132  1.00000 5.00000 1.00000
+133  2.00000 5.00000 1.00000
+134  3.00000 5.00000 1.00000
+135  4.00000 5.00000 1.00000
+136  5.00000 5.00000 1.00000
+137  6.00000 5.00000 1.00000
+138  7.00000 5.00000 1.00000
+139  8.00000 5.00000 1.00000
+140  9.00000 5.00000 1.00000
+141  0.00000 6.00000 1.00000
+142  1.00000 6.00000 1.00000
+143  2.00000 6.00000 1.00000
+144  3.00000 6.00000 1.00000
+145  4.00000 6.00000 1.00000
+146  5.00000 6.00000 1.00000
+147  6.00000 6.00000 1.00000
+148  7.00000 6.00000 1.00000
+149  8.00000 6.00000 1.00000
+150  9.00000 6.00000 1.00000
+151  0.00000 7.00000 1.00000
+152  1.00000 7.00000 1.00000
+153  2.00000 7.00000 1.00000
+154  3.00000 7.00000 1.00000
+155  4.00000 7.00000 1.00000
+156  5.00000 7.00000 1.00000
+157  6.00000 7.00000 1.00000
+158  7.00000 7.00000 1.00000
+159  8.00000 7.00000 1.00000
+160  9.00000 7.00000 1.00000
+161  0.00000 0.00000 2.00000
+162  1.00000 0.00000 2.00000
+163  2.00000 0.00000 2.00000
+164  3.00000 0.00000 2.00000
+165  4.00000 0.00000 2.00000
+166  5.00000 0.00000 2.00000
+167  6.00000 0.00000 2.00000
+168  7.00000 0.00000 2.00000
+169  8.00000 0.00000 2.00000
+170  9.00000 0.00000 2.00000
+171  0.00000 1.00000 2.00000
+172  1.00000 1.00000 2.00000
+173  2.00000 1.00000 2.00000
+174  3.00000 1.00000 2.00000
+175  4.00000 1.00000 2.00000
+176  5.00000 1.00000 2.00000
+177  6.00000 1.00000 2.00000
+178  7.00000 1.00000 2.00000
+179  8.00000 1.00000 2.00000
+180  9.00000 1.00000 2.00000
+181  0.00000 2.00000 2.00000
+182  1.00000 2.00000 2.00000
+183  2.00000 2.00000 2.00000
+184  3.00000 2.00000 2.00000
+185  4.00000 2.00000 2.00000
+186  5.00000 2.00000 2.00000
+187  6.00000 2.00000 2.00000
+188  7.00000 2.00000 2.00000
+189  8.00000 2.00000 2.00000
+190  9.00000 2.00000 2.00000
+191  0.00000 3.00000 2.00000
+192  1.00000 3.00000 2.00000
+193  2.00000 3.00000 2.00000
+194  3.00000 3.00000 2.00000
+195  4.00000 3.00000 2.00000
+196  5.00000 3.00000 2.00000
+197  6.00000 3.00000 2.00000
+198  7.00000 3.00000 2.00000
+199  8.00000 3.00000 2.00000
+200  9.00000 3.00000 2.00000
+201  0.00000 4.00000 2.00000
+202  1.00000 4.00000 2.00000
+203  2.00000 4.00000 2.00000
+204  3.00000 4.00000 2.00000
+205  4.00000 4.00000 2.00000
+206  5.00000 4.00000 2.00000
+207  6.00000 4.00000 2.00000
+208  7.00000 4.00000 2.00000
+209  8.00000 4.00000 2.00000
+210  9.00000 4.00000 2.00000
+211  0.00000 5.00000 2.00000
+212  1.00000 5.00000 2.00000
+213  2.00000 5.00000 2.00000
+214  3.00000 5.00000 2.00000
+215  4.00000 5.00000 2.00000
+216  5.00000 5.00000 2.00000
+217  6.00000 5.00000 2.00000
+218  7.00000 5.00000 2.00000
+219  8.00000 5.00000 2.00000
+220  9.00000 5.00000 2.00000
+221  0.00000 6.00000 2.00000
+222  1.00000 6.00000 2.00000
+223  2.00000 6.00000 2.00000
+224  3.00000 6.00000 2.00000
+225  4.00000 6.00000 2.00000
+226  5.00000 6.00000 2.00000
+227  6.00000 6.00000 2.00000
+228  7.00000 6.00000 2.00000
+229  8.00000 6.00000 2.00000
+230  9.00000 6.00000 2.00000
+231  0.00000 7.00000 2.00000
+232  1.00000 7.00000 2.00000
+233  2.00000 7.00000 2.00000
+234  3.00000 7.00000 2.00000
+235  4.00000 7.00000 2.00000
+236  5.00000 7.00000 2.00000
+237  6.00000 7.00000 2.00000
+238  7.00000 7.00000 2.00000
+239  8.00000 7.00000 2.00000
+240  9.00000 7.00000 2.00000
+241  0.00000 0.00000 3.00000
+242  1.00000 0.00000 3.00000
+243  2.00000 0.00000 3.00000
+244  3.00000 0.00000 3.00000
+245  4.00000 0.00000 3.00000
+246  5.00000 0.00000 3.00000
+247  6.00000 0.00000 3.00000
+248  7.00000 0.00000 3.00000
+249  8.00000 0.00000 3.00000
+250  9.00000 0.00000 3.00000
+251  0.00000 1.00000 3.00000
+252  1.00000 1.00000 3.00000
+253  2.00000 1.00000 3.00000
+254  3.00000 1.00000 3.00000
+255  4.00000 1.00000 3.00000
+256  5.00000 1.00000 3.00000
+257  6.00000 1.00000 3.00000
+258  7.00000 1.00000 3.00000
+259  8.00000 1.00000 3.00000
+260  9.00000 1.00000 3.00000
+261  0.00000 2.00000 3.00000
+262  1.00000 2.00000 3.00000
+263  2.00000 2.00000 3.00000
+264  3.00000 2.00000 3.00000
+265  4.00000 2.00000 3.00000
+266  5.00000 2.00000 3.00000
+267  6.00000 2.00000 3.00000
+268  7.00000 2.00000 3.00000
+269  8.00000 2.00000 3.00000
+270  9.00000 2.00000 3.00000
+271  0.00000 3.00000 3.00000
+272  1.00000 3.00000 3.00000
+273  2.00000 3.00000 3.00000
+274  3.00000 3.00000 3.00000
+275  4.00000 3.00000 3.00000
+276  5.00000 3.00000 3.00000
+277  6.00000 3.00000 3.00000
+278  7.00000 3.00000 3.00000
+279  8.00000 3.00000 3.00000
+280  9.00000 3.00000 3.00000
+281  0.00000 4.00000 3.00000
+282  1.00000 4.00000 3.00000
+283  2.00000 4.00000 3.00000
+284  3.00000 4.00000 3.00000
+285  4.00000 4.00000 3.00000
+286  5.00000 4.00000 3.00000
+287  6.00000 4.00000 3.00000
+288  7.00000 4.00000 3.00000
+289  8.00000 4.00000 3.00000
+290  9.00000 4.00000 3.00000
+291  0.00000 5.00000 3.00000
+292  1.00000 5.00000 3.00000
+293  2.00000 5.00000 3.00000
+294  3.00000 5.00000 3.00000
+295  4.00000 5.00000 3.00000
+296  5.00000 5.00000 3.00000
+297  6.00000 5.00000 3.00000
+298  7.00000 5.00000 3.00000
+299  8.00000 5.00000 3.00000
+300  9.00000 5.00000 3.00000
+301  0.00000 6.00000 3.00000
+302  1.00000 6.00000 3.00000
+303  2.00000 6.00000 3.00000
+304  3.00000 6.00000 3.00000
+305  4.00000 6.00000 3.00000
+306  5.00000 6.00000 3.00000
+307  6.00000 6.00000 3.00000
+308  7.00000 6.00000 3.00000
+309  8.00000 6.00000 3.00000
+310  9.00000 6.00000 3.00000
+311  0.00000 7.00000 3.00000
+312  1.00000 7.00000 3.00000
+313  2.00000 7.00000 3.00000
+314  3.00000 7.00000 3.00000
+315  4.00000 7.00000 3.00000
+316  5.00000 7.00000 3.00000
+317  6.00000 7.00000 3.00000
+318  7.00000 7.00000 3.00000
+319  8.00000 7.00000 3.00000
+320  9.00000 7.00000 3.00000
+321  0.00000 0.00000 4.00000
+322  1.00000 0.00000 4.00000
+323  2.00000 0.00000 4.00000
+324  3.00000 0.00000 4.00000
+325  4.00000 0.00000 4.00000
+326  5.00000 0.00000 4.00000
+327  6.00000 0.00000 4.00000
+328  7.00000 0.00000 4.00000
+329  8.00000 0.00000 4.00000
+330  9.00000 0.00000 4.00000
+331  0.00000 1.00000 4.00000
+332  1.00000 1.00000 4.00000
+333  2.00000 1.00000 4.00000
+334  3.00000 1.00000 4.00000
+335  4.00000 1.00000 4.00000
+336  5.00000 1.00000 4.00000
+337  6.00000 1.00000 4.00000
+338  7.00000 1.00000 4.00000
+339  8.00000 1.00000 4.00000
+340  9.00000 1.00000 4.00000
+341  0.00000 2.00000 4.00000
+342  1.00000 2.00000 4.00000
+343  2.00000 2.00000 4.00000
+344  3.00000 2.00000 4.00000
+345  4.00000 2.00000 4.00000
+346  5.00000 2.00000 4.00000
+347  6.00000 2.00000 4.00000
+348  7.00000 2.00000 4.00000
+349  8.00000 2.00000 4.00000
+350  9.00000 2.00000 4.00000
+351  0.00000 3.00000 4.00000
+352  1.00000 3.00000 4.00000
+353  2.00000 3.00000 4.00000
+354  3.00000 3.00000 4.00000
+355  4.00000 3.00000 4.00000
+356  5.00000 3.00000 4.00000
+357  6.00000 3.00000 4.00000
+358  7.00000 3.00000 4.00000
+359  8.00000 3.00000 4.00000
+360  9.00000 3.00000 4.00000
+361  0.00000 4.00000 4.00000
+362  1.00000 4.00000 4.00000
+363  2.00000 4.00000 4.00000
+364  3.00000 4.00000 4.00000
+365  4.00000 4.00000 4.00000
+366  5.00000 4.00000 4.00000
+367  6.00000 4.00000 4.00000
+368  7.00000 4.00000 4.00000
+369  8.00000 4.00000 4.00000
+370  9.00000 4.00000 4.00000
+371  0.00000 5.00000 4.00000
+372  1.00000 5.00000 4.00000
+373  2.00000 5.00000 4.00000
+374  3.00000 5.00000 4.00000
+375  4.00000 5.00000 4.00000
+376  5.00000 5.00000 4.00000
+377  6.00000 5.00000 4.00000
+378  7.00000 5.00000 4.00000
+379  8.00000 5.00000 4.00000
+380  9.00000 5.00000 4.00000
+381  0.00000 6.00000 4.00000
+382  1.00000 6.00000 4.00000
+383  2.00000 6.00000 4.00000
+384  3.00000 6.00000 4.00000
+385  4.00000 6.00000 4.00000
+386  5.00000 6.00000 4.00000
+387  6.00000 6.00000 4.00000
+388  7.00000 6.00000 4.00000
+389  8.00000 6.00000 4.00000
+390  9.00000 6.00000 4.00000
+391  0.00000 7.00000 4.00000
+392  1.00000 7.00000 4.00000
+393  2.00000 7.00000 4.00000
+394  3.00000 7.00000 4.00000
+395  4.00000 7.00000 4.00000
+396  5.00000 7.00000 4.00000
+397  6.00000 7.00000 4.00000
+398  7.00000 7.00000 4.00000
+399  8.00000 7.00000 4.00000
+400  9.00000 7.00000 4.00000
+401  0.00000 0.00000 5.00000
+402  1.00000 0.00000 5.00000
+403  2.00000 0.00000 5.00000
+404  3.00000 0.00000 5.00000
+405  4.00000 0.00000 5.00000
+406  5.00000 0.00000 5.00000
+407  6.00000 0.00000 5.00000
+408  7.00000 0.00000 5.00000
+409  8.00000 0.00000 5.00000
+410  9.00000 0.00000 5.00000
+411  0.00000 1.00000 5.00000
+412  1.00000 1.00000 5.00000
+413  2.00000 1.00000 5.00000
+414  3.00000 1.00000 5.00000
+415  4.00000 1.00000 5.00000
+416  5.00000 1.00000 5.00000
+417  6.00000 1.00000 5.00000
+418  7.00000 1.00000 5.00000
+419  8.00000 1.00000 5.00000
+420  9.00000 1.00000 5.00000
+421  0.00000 2.00000 5.00000
+422  1.00000 2.00000 5.00000
+423  2.00000 2.00000 5.00000
+424  3.00000 2.00000 5.00000
+425  4.00000 2.00000 5.00000
+426  5.00000 2.00000 5.00000
+427  6.00000 2.00000 5.00000
+428  7.00000 2.00000 5.00000
+429  8.00000 2.00000 5.00000
+430  9.00000 2.00000 5.00000
+431  0.00000 3.00000 5.00000
+432  1.00000 3.00000 5.00000
+433  2.00000 3.00000 5.00000
+434  3.00000 3.00000 5.00000
+435  4.00000 3.00000 5.00000
+436  5.00000 3.00000 5.00000
+437  6.00000 3.00000 5.00000
+438  7.00000 3.00000 5.00000
+439  8.00000 3.00000 5.00000
+440  9.00000 3.00000 5.00000
+441  0.00000 4.00000 5.00000
+442  1.00000 4.00000 5.00000
+443  2.00000 4.00000 5.00000
+444  3.00000 4.00000 5.00000
+445  4.00000 4.00000 5.00000
+446  5.00000 4.00000 5.00000
+447  6.00000 4.00000 5.00000
+448  7.00000 4.00000 5.00000
+449  8.00000 4.00000 5.00000
+450  9.00000 4.00000 5.00000
+451  0.00000 5.00000 5.00000
+452  1.00000 5.00000 5.00000
+453  2.00000 5.00000 5.00000
+454  3.00000 5.00000 5.00000
+455  4.00000 5.00000 5.00000
+456  5.00000 5.00000 5.00000
+457  6.00000 5.00000 5.00000
+458  7.00000 5.00000 5.00000
+459  8.00000 5.00000 5.00000
+460  9.00000 5.00000 5.00000
+461  0.00000 6.00000 5.00000
+462  1.00000 6.00000 5.00000
+463  2.00000 6.00000 5.00000
+464  3.00000 6.00000 5.00000
+465  4.00000 6.00000 5.00000
+466  5.00000 6.00000 5.00000
+467  6.00000 6.00000 5.00000
+468  7.00000 6.00000 5.00000
+469  8.00000 6.00000 5.00000
+470  9.00000 6.00000 5.00000
+471  0.00000 7.00000 5.00000
+472  1.00000 7.00000 5.00000
+473  2.00000 7.00000 5.00000
+474  3.00000 7.00000 5.00000
+475  4.00000 7.00000 5.00000
+476  5.00000 7.00000 5.00000
+477  6.00000 7.00000 5.00000
+478  7.00000 7.00000 5.00000
+479  8.00000 7.00000 5.00000
+480  9.00000 7.00000 5.00000
+$ENDNOD
+$ELM
+315
+1 5 0 0 8 1 2 82 81 11 12 92 91 
+2 5 0 0 8 2 3 83 82 12 13 93 92 
+3 5 0 0 8 3 4 84 83 13 14 94 93 
+4 5 0 0 8 4 5 85 84 14 15 95 94 
+5 5 0 0 8 5 6 86 85 15 16 96 95 
+6 5 0 0 8 6 7 87 86 16 17 97 96 
+7 5 0 0 8 7 8 88 87 17 18 98 97 
+8 5 0 0 8 8 9 89 88 18 19 99 98 
+9 5 0 0 8 9 10 90 89 19 20 100 99 
+10 5 0 0 8 11 12 92 91 21 22 102 101 
+11 5 0 0 8 12 13 93 92 22 23 103 102 
+12 5 0 0 8 13 14 94 93 23 24 104 103 
+13 5 0 0 8 14 15 95 94 24 25 105 104 
+14 5 0 0 8 15 16 96 95 25 26 106 105 
+15 5 0 0 8 16 17 97 96 26 27 107 106 
+16 5 0 0 8 17 18 98 97 27 28 108 107 
+17 5 0 0 8 18 19 99 98 28 29 109 108 
+18 5 0 0 8 19 20 100 99 29 30 110 109 
+19 5 0 0 8 21 22 102 101 31 32 112 111 
+20 5 0 0 8 22 23 103 102 32 33 113 112 
+21 5 0 0 8 23 24 104 103 33 34 114 113 
+22 5 0 0 8 24 25 105 104 34 35 115 114 
+23 5 0 0 8 25 26 106 105 35 36 116 115 
+24 5 0 0 8 26 27 107 106 36 37 117 116 
+25 5 0 0 8 27 28 108 107 37 38 118 117 
+26 5 0 0 8 28 29 109 108 38 39 119 118 
+27 5 0 0 8 29 30 110 109 39 40 120 119 
+28 5 0 0 8 31 32 112 111 41 42 122 121 
+29 5 0 0 8 32 33 113 112 42 43 123 122 
+30 5 0 0 8 33 34 114 113 43 44 124 123 
+31 5 0 0 8 34 35 115 114 44 45 125 124 
+32 5 0 0 8 35 36 116 115 45 46 126 125 
+33 5 0 0 8 36 37 117 116 46 47 127 126 
+34 5 0 0 8 37 38 118 117 47 48 128 127 
+35 5 0 0 8 38 39 119 118 48 49 129 128 
+36 5 0 0 8 39 40 120 119 49 50 130 129 
+37 5 0 0 8 41 42 122 121 51 52 132 131 
+38 5 0 0 8 42 43 123 122 52 53 133 132 
+39 5 0 0 8 43 44 124 123 53 54 134 133 
+40 5 0 0 8 44 45 125 124 54 55 135 134 
+41 5 0 0 8 45 46 126 125 55 56 136 135 
+42 5 0 0 8 46 47 127 126 56 57 137 136 
+43 5 0 0 8 47 48 128 127 57 58 138 137 
+44 5 0 0 8 48 49 129 128 58 59 139 138 
+45 5 0 0 8 49 50 130 129 59 60 140 139 
+46 5 0 0 8 51 52 132 131 61 62 142 141 
+47 5 0 0 8 52 53 133 132 62 63 143 142 
+48 5 0 0 8 53 54 134 133 63 64 144 143 
+49 5 0 0 8 54 55 135 134 64 65 145 144 
+50 5 0 0 8 55 56 136 135 65 66 146 145 
+51 5 0 0 8 56 57 137 136 66 67 147 146 
+52 5 0 0 8 57 58 138 137 67 68 148 147 
+53 5 0 0 8 58 59 139 138 68 69 149 148 
+54 5 0 0 8 59 60 140 139 69 70 150 149 
+55 5 0 0 8 61 62 142 141 71 72 152 151 
+56 5 0 0 8 62 63 143 142 72 73 153 152 
+57 5 0 0 8 63 64 144 143 73 74 154 153 
+58 5 0 0 8 64 65 145 144 74 75 155 154 
+59 5 0 0 8 65 66 146 145 75 76 156 155 
+60 5 0 0 8 66 67 147 146 76 77 157 156 
+61 5 0 0 8 67 68 148 147 77 78 158 157 
+62 5 0 0 8 68 69 149 148 78 79 159 158 
+63 5 0 0 8 69 70 150 149 79 80 160 159 
+64 5 0 0 8 81 82 162 161 91 92 172 171 
+65 5 0 0 8 82 83 163 162 92 93 173 172 
+66 5 0 0 8 83 84 164 163 93 94 174 173 
+67 5 0 0 8 84 85 165 164 94 95 175 174 
+68 5 0 0 8 85 86 166 165 95 96 176 175 
+69 5 0 0 8 86 87 167 166 96 97 177 176 
+70 5 0 0 8 87 88 168 167 97 98 178 177 
+71 5 0 0 8 88 89 169 168 98 99 179 178 
+72 5 0 0 8 89 90 170 169 99 100 180 179 
+73 5 0 0 8 91 92 172 171 101 102 182 181 
+74 5 0 0 8 92 93 173 172 102 103 183 182 
+75 5 0 0 8 93 94 174 173 103 104 184 183 
+76 5 0 0 8 94 95 175 174 104 105 185 184 
+77 5 0 0 8 95 96 176 175 105 106 186 185 
+78 5 0 0 8 96 97 177 176 106 107 187 186 
+79 5 0 0 8 97 98 178 177 107 108 188 187 
+80 5 0 0 8 98 99 179 178 108 109 189 188 
+81 5 0 0 8 99 100 180 179 109 110 190 189 
+82 5 0 0 8 101 102 182 181 111 112 192 191 
+83 5 0 0 8 102 103 183 182 112 113 193 192 
+84 5 0 0 8 103 104 184 183 113 114 194 193 
+85 5 0 0 8 104 105 185 184 114 115 195 194 
+86 5 0 0 8 105 106 186 185 115 116 196 195 
+87 5 0 0 8 106 107 187 186 116 117 197 196 
+88 5 0 0 8 107 108 188 187 117 118 198 197 
+89 5 0 0 8 108 109 189 188 118 119 199 198 
+90 5 0 0 8 109 110 190 189 119 120 200 199 
+91 5 0 0 8 111 112 192 191 121 122 202 201 
+92 5 0 0 8 112 113 193 192 122 123 203 202 
+93 5 0 0 8 113 114 194 193 123 124 204 203 
+94 5 0 0 8 114 115 195 194 124 125 205 204 
+95 5 0 0 8 115 116 196 195 125 126 206 205 
+96 5 0 0 8 116 117 197 196 126 127 207 206 
+97 5 0 0 8 117 118 198 197 127 128 208 207 
+98 5 0 0 8 118 119 199 198 128 129 209 208 
+99 5 0 0 8 119 120 200 199 129 130 210 209 
+100 5 0 0 8 121 122 202 201 131 132 212 211 
+101 5 0 0 8 122 123 203 202 132 133 213 212 
+102 5 0 0 8 123 124 204 203 133 134 214 213 
+103 5 0 0 8 124 125 205 204 134 135 215 214 
+104 5 0 0 8 125 126 206 205 135 136 216 215 
+105 5 0 0 8 126 127 207 206 136 137 217 216 
+106 5 0 0 8 127 128 208 207 137 138 218 217 
+107 5 0 0 8 128 129 209 208 138 139 219 218 
+108 5 0 0 8 129 130 210 209 139 140 220 219 
+109 5 0 0 8 131 132 212 211 141 142 222 221 
+110 5 0 0 8 132 133 213 212 142 143 223 222 
+111 5 0 0 8 133 134 214 213 143 144 224 223 
+112 5 0 0 8 134 135 215 214 144 145 225 224 
+113 5 0 0 8 135 136 216 215 145 146 226 225 
+114 5 0 0 8 136 137 217 216 146 147 227 226 
+115 5 0 0 8 137 138 218 217 147 148 228 227 
+116 5 0 0 8 138 139 219 218 148 149 229 228 
+117 5 0 0 8 139 140 220 219 149 150 230 229 
+118 5 0 0 8 141 142 222 221 151 152 232 231 
+119 5 0 0 8 142 143 223 222 152 153 233 232 
+120 5 0 0 8 143 144 224 223 153 154 234 233 
+121 5 0 0 8 144 145 225 224 154 155 235 234 
+122 5 0 0 8 145 146 226 225 155 156 236 235 
+123 5 0 0 8 146 147 227 226 156 157 237 236 
+124 5 0 0 8 147 148 228 227 157 158 238 237 
+125 5 0 0 8 148 149 229 228 158 159 239 238 
+126 5 0 0 8 149 150 230 229 159 160 240 239 
+127 5 0 0 8 161 162 242 241 171 172 252 251 
+128 5 0 0 8 162 163 243 242 172 173 253 252 
+129 5 0 0 8 163 164 244 243 173 174 254 253 
+130 5 0 0 8 164 165 245 244 174 175 255 254 
+131 5 0 0 8 165 166 246 245 175 176 256 255 
+132 5 0 0 8 166 167 247 246 176 177 257 256 
+133 5 0 0 8 167 168 248 247 177 178 258 257 
+134 5 0 0 8 168 169 249 248 178 179 259 258 
+135 5 0 0 8 169 170 250 249 179 180 260 259 
+136 5 0 0 8 171 172 252 251 181 182 262 261 
+137 5 0 0 8 172 173 253 252 182 183 263 262 
+138 5 0 0 8 173 174 254 253 183 184 264 263 
+139 5 0 0 8 174 175 255 254 184 185 265 264 
+140 5 0 0 8 175 176 256 255 185 186 266 265 
+141 5 0 0 8 176 177 257 256 186 187 267 266 
+142 5 0 0 8 177 178 258 257 187 188 268 267 
+143 5 0 0 8 178 179 259 258 188 189 269 268 
+144 5 0 0 8 179 180 260 259 189 190 270 269 
+145 5 0 0 8 181 182 262 261 191 192 272 271 
+146 5 0 0 8 182 183 263 262 192 193 273 272 
+147 5 0 0 8 183 184 264 263 193 194 274 273 
+148 5 0 0 8 184 185 265 264 194 195 275 274 
+149 5 0 0 8 185 186 266 265 195 196 276 275 
+150 5 0 0 8 186 187 267 266 196 197 277 276 
+151 5 0 0 8 187 188 268 267 197 198 278 277 
+152 5 0 0 8 188 189 269 268 198 199 279 278 
+153 5 0 0 8 189 190 270 269 199 200 280 279 
+154 5 0 0 8 191 192 272 271 201 202 282 281 
+155 5 0 0 8 192 193 273 272 202 203 283 282 
+156 5 0 0 8 193 194 274 273 203 204 284 283 
+157 5 0 0 8 194 195 275 274 204 205 285 284 
+158 5 0 0 8 195 196 276 275 205 206 286 285 
+159 5 0 0 8 196 197 277 276 206 207 287 286 
+160 5 0 0 8 197 198 278 277 207 208 288 287 
+161 5 0 0 8 198 199 279 278 208 209 289 288 
+162 5 0 0 8 199 200 280 279 209 210 290 289 
+163 5 0 0 8 201 202 282 281 211 212 292 291 
+164 5 0 0 8 202 203 283 282 212 213 293 292 
+165 5 0 0 8 203 204 284 283 213 214 294 293 
+166 5 0 0 8 204 205 285 284 214 215 295 294 
+167 5 0 0 8 205 206 286 285 215 216 296 295 
+168 5 0 0 8 206 207 287 286 216 217 297 296 
+169 5 0 0 8 207 208 288 287 217 218 298 297 
+170 5 0 0 8 208 209 289 288 218 219 299 298 
+171 5 0 0 8 209 210 290 289 219 220 300 299 
+172 5 0 0 8 211 212 292 291 221 222 302 301 
+173 5 0 0 8 212 213 293 292 222 223 303 302 
+174 5 0 0 8 213 214 294 293 223 224 304 303 
+175 5 0 0 8 214 215 295 294 224 225 305 304 
+176 5 0 0 8 215 216 296 295 225 226 306 305 
+177 5 0 0 8 216 217 297 296 226 227 307 306 
+178 5 0 0 8 217 218 298 297 227 228 308 307 
+179 5 0 0 8 218 219 299 298 228 229 309 308 
+180 5 0 0 8 219 220 300 299 229 230 310 309 
+181 5 0 0 8 221 222 302 301 231 232 312 311 
+182 5 0 0 8 222 223 303 302 232 233 313 312 
+183 5 0 0 8 223 224 304 303 233 234 314 313 
+184 5 0 0 8 224 225 305 304 234 235 315 314 
+185 5 0 0 8 225 226 306 305 235 236 316 315 
+186 5 0 0 8 226 227 307 306 236 237 317 316 
+187 5 0 0 8 227 228 308 307 237 238 318 317 
+188 5 0 0 8 228 229 309 308 238 239 319 318 
+189 5 0 0 8 229 230 310 309 239 240 320 319 
+190 5 0 0 8 241 242 322 321 251 252 332 331 
+191 5 0 0 8 242 243 323 322 252 253 333 332 
+192 5 0 0 8 243 244 324 323 253 254 334 333 
+193 5 0 0 8 244 245 325 324 254 255 335 334 
+194 5 0 0 8 245 246 326 325 255 256 336 335 
+195 5 0 0 8 246 247 327 326 256 257 337 336 
+196 5 0 0 8 247 248 328 327 257 258 338 337 
+197 5 0 0 8 248 249 329 328 258 259 339 338 
+198 5 0 0 8 249 250 330 329 259 260 340 339 
+199 5 0 0 8 251 252 332 331 261 262 342 341 
+200 5 0 0 8 252 253 333 332 262 263 343 342 
+201 5 0 0 8 253 254 334 333 263 264 344 343 
+202 5 0 0 8 254 255 335 334 264 265 345 344 
+203 5 0 0 8 255 256 336 335 265 266 346 345 
+204 5 0 0 8 256 257 337 336 266 267 347 346 
+205 5 0 0 8 257 258 338 337 267 268 348 347 
+206 5 0 0 8 258 259 339 338 268 269 349 348 
+207 5 0 0 8 259 260 340 339 269 270 350 349 
+208 5 0 0 8 261 262 342 341 271 272 352 351 
+209 5 0 0 8 262 263 343 342 272 273 353 352 
+210 5 0 0 8 263 264 344 343 273 274 354 353 
+211 5 0 0 8 264 265 345 344 274 275 355 354 
+212 5 0 0 8 265 266 346 345 275 276 356 355 
+213 5 0 0 8 266 267 347 346 276 277 357 356 
+214 5 0 0 8 267 268 348 347 277 278 358 357 
+215 5 0 0 8 268 269 349 348 278 279 359 358 
+216 5 0 0 8 269 270 350 349 279 280 360 359 
+217 5 0 0 8 271 272 352 351 281 282 362 361 
+218 5 0 0 8 272 273 353 352 282 283 363 362 
+219 5 0 0 8 273 274 354 353 283 284 364 363 
+220 5 0 0 8 274 275 355 354 284 285 365 364 
+221 5 0 0 8 275 276 356 355 285 286 366 365 
+222 5 0 0 8 276 277 357 356 286 287 367 366 
+223 5 0 0 8 277 278 358 357 287 288 368 367 
+224 5 0 0 8 278 279 359 358 288 289 369 368 
+225 5 0 0 8 279 280 360 359 289 290 370 369 
+226 5 0 0 8 281 282 362 361 291 292 372 371 
+227 5 0 0 8 282 283 363 362 292 293 373 372 
+228 5 0 0 8 283 284 364 363 293 294 374 373 
+229 5 0 0 8 284 285 365 364 294 295 375 374 
+230 5 0 0 8 285 286 366 365 295 296 376 375 
+231 5 0 0 8 286 287 367 366 296 297 377 376 
+232 5 0 0 8 287 288 368 367 297 298 378 377 
+233 5 0 0 8 288 289 369 368 298 299 379 378 
+234 5 0 0 8 289 290 370 369 299 300 380 379 
+235 5 0 0 8 291 292 372 371 301 302 382 381 
+236 5 0 0 8 292 293 373 372 302 303 383 382 
+237 5 0 0 8 293 294 374 373 303 304 384 383 
+238 5 0 0 8 294 295 375 374 304 305 385 384 
+239 5 0 0 8 295 296 376 375 305 306 386 385 
+240 5 0 0 8 296 297 377 376 306 307 387 386 
+241 5 0 0 8 297 298 378 377 307 308 388 387 
+242 5 0 0 8 298 299 379 378 308 309 389 388 
+243 5 0 0 8 299 300 380 379 309 310 390 389 
+244 5 0 0 8 301 302 382 381 311 312 392 391 
+245 5 0 0 8 302 303 383 382 312 313 393 392 
+246 5 0 0 8 303 304 384 383 313 314 394 393 
+247 5 0 0 8 304 305 385 384 314 315 395 394 
+248 5 0 0 8 305 306 386 385 315 316 396 395 
+249 5 0 0 8 306 307 387 386 316 317 397 396 
+250 5 0 0 8 307 308 388 387 317 318 398 397 
+251 5 0 0 8 308 309 389 388 318 319 399 398 
+252 5 0 0 8 309 310 390 389 319 320 400 399 
+253 5 0 0 8 321 322 402 401 331 332 412 411 
+254 5 0 0 8 322 323 403 402 332 333 413 412 
+255 5 0 0 8 323 324 404 403 333 334 414 413 
+256 5 0 0 8 324 325 405 404 334 335 415 414 
+257 5 0 0 8 325 326 406 405 335 336 416 415 
+258 5 0 0 8 326 327 407 406 336 337 417 416 
+259 5 0 0 8 327 328 408 407 337 338 418 417 
+260 5 0 0 8 328 329 409 408 338 339 419 418 
+261 5 0 0 8 329 330 410 409 339 340 420 419 
+262 5 0 0 8 331 332 412 411 341 342 422 421 
+263 5 0 0 8 332 333 413 412 342 343 423 422 
+264 5 0 0 8 333 334 414 413 343 344 424 423 
+265 5 0 0 8 334 335 415 414 344 345 425 424 
+266 5 0 0 8 335 336 416 415 345 346 426 425 
+267 5 0 0 8 336 337 417 416 346 347 427 426 
+268 5 0 0 8 337 338 418 417 347 348 428 427 
+269 5 0 0 8 338 339 419 418 348 349 429 428 
+270 5 0 0 8 339 340 420 419 349 350 430 429 
+271 5 0 0 8 341 342 422 421 351 352 432 431 
+272 5 0 0 8 342 343 423 422 352 353 433 432 
+273 5 0 0 8 343 344 424 423 353 354 434 433 
+274 5 0 0 8 344 345 425 424 354 355 435 434 
+275 5 0 0 8 345 346 426 425 355 356 436 435 
+276 5 0 0 8 346 347 427 426 356 357 437 436 
+277 5 0 0 8 347 348 428 427 357 358 438 437 
+278 5 0 0 8 348 349 429 428 358 359 439 438 
+279 5 0 0 8 349 350 430 429 359 360 440 439 
+280 5 0 0 8 351 352 432 431 361 362 442 441 
+281 5 0 0 8 352 353 433 432 362 363 443 442 
+282 5 0 0 8 353 354 434 433 363 364 444 443 
+283 5 0 0 8 354 355 435 434 364 365 445 444 
+284 5 0 0 8 355 356 436 435 365 366 446 445 
+285 5 0 0 8 356 357 437 436 366 367 447 446 
+286 5 0 0 8 357 358 438 437 367 368 448 447 
+287 5 0 0 8 358 359 439 438 368 369 449 448 
+288 5 0 0 8 359 360 440 439 369 370 450 449 
+289 5 0 0 8 361 362 442 441 371 372 452 451 
+290 5 0 0 8 362 363 443 442 372 373 453 452 
+291 5 0 0 8 363 364 444 443 373 374 454 453 
+292 5 0 0 8 364 365 445 444 374 375 455 454 
+293 5 0 0 8 365 366 446 445 375 376 456 455 
+294 5 0 0 8 366 367 447 446 376 377 457 456 
+295 5 0 0 8 367 368 448 447 377 378 458 457 
+296 5 0 0 8 368 369 449 448 378 379 459 458 
+297 5 0 0 8 369 370 450 449 379 380 460 459 
+298 5 0 0 8 371 372 452 451 381 382 462 461 
+299 5 0 0 8 372 373 453 452 382 383 463 462 
+300 5 0 0 8 373 374 454 453 383 384 464 463 
+301 5 0 0 8 374 375 455 454 384 385 465 464 
+302 5 0 0 8 375 376 456 455 385 386 466 465 
+303 5 0 0 8 376 377 457 456 386 387 467 466 
+304 5 0 0 8 377 378 458 457 387 388 468 467 
+305 5 0 0 8 378 379 459 458 388 389 469 468 
+306 5 0 0 8 379 380 460 459 389 390 470 469 
+307 5 0 0 8 381 382 462 461 391 392 472 471 
+308 5 0 0 8 382 383 463 462 392 393 473 472 
+309 5 0 0 8 383 384 464 463 393 394 474 473 
+310 5 0 0 8 384 385 465 464 394 395 475 474 
+311 5 0 0 8 385 386 466 465 395 396 476 475 
+312 5 0 0 8 386 387 467 466 396 397 477 476 
+313 5 0 0 8 387 388 468 467 397 398 478 477 
+314 5 0 0 8 388 389 469 468 398 399 479 478 
+315 5 0 0 8 389 390 470 469 399 400 480 479 
+$ENDELM
+DEAL::Generating Triangulation<1, 1> : general_cell(0;     1    : true)
+$NOD
+2
+1  0.00000 0 0
+2  1.00000 0 0
+$ENDNOD
+$ELM
+1
+1 1 0 0 2 1 2 
+$ENDELM
+DEAL::Generating Triangulation<1, 2> : general_cell(0,0  ; 1,0  : true)
+$NOD
+2
+1  0.00000 0.00000 0
+2  1.00000 0.00000 0
+$ENDNOD
+$ELM
+1
+1 1 0 0 2 1 2 
+$ENDELM
+DEAL::Generating Triangulation<1, 3> : general_cell(0,0,0; 1,0,0: true)
+$NOD
+2
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+$ENDNOD
+$ELM
+1
+1 1 0 0 2 1 2 
+$ENDELM
+DEAL::Generating Triangulation<2, 2> : general_cell(0,0; 1,0; 0,1; 1,1: true)
+$NOD
+4
+1  0.00000 0.00000 0
+2  1.00000 0.00000 0
+3  0.00000 1.00000 0
+4  1.00000 1.00000 0
+$ENDNOD
+$ELM
+1
+1 3 0 0 4 1 2 4 3 
+$ENDELM
+DEAL::Generating Triangulation<2, 3> : general_cell(0,0,0; 1,0,0; 0,1,0; 1,1,0: true)
+$NOD
+4
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+3  0.00000 1.00000 0.00000
+4  1.00000 1.00000 0.00000
+$ENDNOD
+$ELM
+1
+1 3 0 0 4 1 2 4 3 
+$ENDELM
+DEAL::Generating Triangulation<3, 3> : general_cell(0,0,0; 1,0,0; 0,1,0; 1,1,0; 0,0,1; 1,0,1; 0,1,1; 1,1,1: true)
+$NOD
+8
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+3  0.00000 1.00000 0.00000
+4  1.00000 1.00000 0.00000
+5  0.00000 0.00000 1.00000
+6  1.00000 0.00000 1.00000
+7  0.00000 1.00000 1.00000
+8  1.00000 1.00000 1.00000
+$ENDNOD
+$ELM
+1
+1 5 0 0 8 1 2 6 5 3 4 8 7 
+$ENDELM
+DEAL::Generating Triangulation<1, 1> : hyper_cube(0: 1: true)
+$NOD
+2
+1  0.00000 0 0
+2  1.00000 0 0
+$ENDNOD
+$ELM
+1
+1 1 0 0 2 1 2 
+$ENDELM
+DEAL::Generating Triangulation<1, 2> : hyper_cube(0: 1: true)
+$NOD
+2
+1  0.00000 0.00000 0
+2  1.00000 0.00000 0
+$ENDNOD
+$ELM
+1
+1 1 0 0 2 1 2 
+$ENDELM
+DEAL::Generating Triangulation<1, 3> : hyper_cube(0: 1: true)
+$NOD
+2
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+$ENDNOD
+$ELM
+1
+1 1 0 0 2 1 2 
+$ENDELM
+DEAL::Generating Triangulation<2, 2> : hyper_cube(0: 1: true)
+$NOD
+4
+1  0.00000 0.00000 0
+2  1.00000 0.00000 0
+3  0.00000 1.00000 0
+4  1.00000 1.00000 0
+$ENDNOD
+$ELM
+1
+1 3 0 0 4 1 2 4 3 
+$ENDELM
+DEAL::Generating Triangulation<2, 3> : hyper_cube(0: 1: true)
+$NOD
+4
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+3  0.00000 1.00000 0.00000
+4  1.00000 1.00000 0.00000
+$ENDNOD
+$ELM
+1
+1 3 0 0 4 1 2 4 3 
+$ENDELM
+DEAL::Generating Triangulation<3, 3> : hyper_cube(0: 1: true)
+$NOD
+8
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+3  0.00000 1.00000 0.00000
+4  1.00000 1.00000 0.00000
+5  0.00000 0.00000 1.00000
+6  1.00000 0.00000 1.00000
+7  0.00000 1.00000 1.00000
+8  1.00000 1.00000 1.00000
+$ENDNOD
+$ELM
+1
+1 5 0 0 8 1 2 6 5 3 4 8 7 
+$ENDELM
+DEAL::Generating Triangulation<2, 2> : hyper_ball(0,0: 1: false)
+$NOD
+8
+1  -0.707107 -0.707107 0
+2  0.707107 -0.707107 0
+3  -0.292893 -0.292893 0
+4  0.292893 -0.292893 0
+5  -0.292893 0.292893 0
+6  0.292893 0.292893 0
+7  -0.707107 0.707107 0
+8  0.707107 0.707107 0
+$ENDNOD
+$ELM
+5
+1 3 0 0 4 1 2 4 3 
+2 3 0 0 4 1 3 5 7 
+3 3 0 0 4 3 4 6 5 
+4 3 0 0 4 2 8 6 4 
+5 3 0 0 4 7 5 6 8 
+$ENDELM
+DEAL::Generating Triangulation<2, 2> : simplex(0,0; 1,0; 0,1)
+$NOD
+7
+1  0.00000 0.00000 0
+2  1.00000 0.00000 0
+3  0.00000 1.00000 0
+4  0.500000 0.00000 0
+5  0.500000 0.500000 0
+6  0.00000 0.500000 0
+7  0.333333 0.333333 0
+$ENDNOD
+$ELM
+3
+1 3 0 0 4 1 4 7 6 
+2 3 0 0 4 4 2 5 7 
+3 3 0 0 4 6 7 5 3 
+$ENDELM
+DEAL::Generating Triangulation<3, 3> : simplex(0,0,0; 1,0,0; 0,1,0; 0,0,1)
+$NOD
+15
+1  0.00000 0.00000 0.00000
+2  1.00000 0.00000 0.00000
+3  0.00000 1.00000 0.00000
+4  0.00000 0.00000 1.00000
+5  0.500000 0.00000 0.00000
+6  0.500000 0.500000 0.00000
+7  0.00000 0.500000 0.500000
+8  0.00000 0.00000 0.500000
+9  0.00000 0.500000 0.00000
+10  0.500000 0.00000 0.500000
+11  0.333333 0.333333 0.00000
+12  0.333333 0.333333 0.333333
+13  0.00000 0.333333 0.333333
+14  0.333333 0.00000 0.333333
+15  0.250000 0.250000 0.250000
+$ENDNOD
+$ELM
+4
+1 5 0 0 8 1 5 14 8 9 11 15 13 
+2 5 0 0 8 5 2 10 14 11 6 12 15 
+3 5 0 0 8 9 11 15 13 3 6 12 7 
+4 5 0 0 8 8 14 10 4 13 15 12 7 
+$ENDELM

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.