]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Added cylindrical Manifold and two tests.
authorLuca Heltai <luca.heltai@gmail.com>
Wed, 6 Aug 2014 12:56:16 +0000 (14:56 +0200)
committerLuca Heltai <luca.heltai@gmail.com>
Wed, 6 Aug 2014 12:58:20 +0000 (14:58 +0200)
doc/news/changes.h
include/deal.II/grid/manifold.h
include/deal.II/grid/manifold_lib.h
source/grid/CMakeLists.txt
source/grid/manifold.cc
source/grid/manifold_lib.cc
source/grid/manifold_lib.inst.in
tests/manifold/cylindrical_manifold_01.cc [new file with mode: 0644]
tests/manifold/cylindrical_manifold_01.output [new file with mode: 0644]
tests/manifold/cylindrical_manifold_02.cc [new file with mode: 0644]
tests/manifold/cylindrical_manifold_02.output [new file with mode: 0644]

index 0e92c848cb8265116547d596ebb8db05f18c6f6e..d24f09c434f4f08c96c16e6bfa9bad6474f07a0f 100644 (file)
@@ -98,6 +98,15 @@ inconvenience this causes.
 
 <ol>
 
+  <li> New: Added CylindricalManifold descritpion.
+  <br>
+  This class allows refinement of cylindrical manifolds. It is a good
+  companion for GridGenerator::cylinder() and the perfect companion
+  for GridGenerator::cylinder_shell().
+  <br>
+  (Luca Heltai, 2014/08/06)
+  </li>
+
   <li> New: Added support for curved interior cells for all Triangulation
   dimensions.
   <br>
index 3a8f51d855af254d14dd8ef1d0c9609c5c149fbf..b63c4aa9811f31111244d77b6326060c6cf5f4e4 100644 (file)
@@ -298,8 +298,8 @@ public:
    * to refine, the middle point is not too far from the manifold mid
    * point, i.e., as long as the coarse mesh size is small enough.
    */
-    virtual Point<spacedim>
-    get_new_point(const Quadrature<spacedim> &quad) const;
+  virtual Point<spacedim>
+  get_new_point(const Quadrature<spacedim> &quad) const;
   
   
   /**
@@ -312,6 +312,12 @@ public:
   virtual
   Point<spacedim> project_to_manifold (const std::vector<Point<spacedim> > &points, 
                                       const Point<spacedim> &candidate) const;
+protected:
+  /**
+   * Tolerance. This tolerance is used to compute distances in double
+   * precision. Anything below this tolerance is considered zero.
+   */
+  const double tolerance;
 
 private:
   /**
@@ -330,12 +336,6 @@ private:
    */
   const Point<spacedim> periodicity;
 
-  /**
-   * Tolerance. This tolerance is used to compute distances in double
-   * precision. Anything below this tolerance is considered zero.
-   */
-  const double tolerance;
-
   DeclException4(ExcPeriodicBox, int, Point<spacedim>, Point<spacedim>, double,
                 << "The component number " << arg1 << " of the point [ " << arg2 
                 << " ]  is not in the interval [ " << -arg4 
index 654c99ae05b0ea26832f5fa697eaeb32279b3b6e..8397511a05301d72c1d00688252f75f58ccaca58 100644 (file)
@@ -106,6 +106,72 @@ private:
 };
 
 
+/**
+ * Cylindrical Manifold description.  In three dimensions, points are
+ * transformed using a cylindrical coordinate system along the
+ * <tt>x-</tt>, <tt>y-</tt> or <tt>z</tt>-axis (when using the first
+ * constructor of this class), or an arbitrarily oriented cylinder
+ * described by the direction of its axis and a point located on the
+ * axis.
+ *
+ * This class was developed to be used in conjunction with the @p
+ * cylinder or @p cylinder_shell functions of GridGenerator. This
+ * function will throw an exception whenever spacedim is not equal to
+ * three. 
+ *
+ * @ingroup manifold
+ *
+ * @author Luca Heltai, 2014
+ */
+template <int dim, int spacedim = dim>
+class CylindricalManifold : public FlatManifold<dim,spacedim>
+{
+public:
+  /**
+   * Constructor. Using default values for the constructor arguments
+   * yields a cylinder along the x-axis (<tt>axis=0</tt>). Choose
+   * <tt>axis=1</tt> or <tt>axis=2</tt> for a tube along the y- or
+   * z-axis, respectively.
+   */
+  CylindricalManifold (const unsigned int axis = 0);
+
+  /**
+   * Constructor. If constructed with this constructor, the manifold
+   * described is a cylinder with an axis that points in direction
+   * #direction and goes through the given #point_on_axis. The
+   * direction may be arbitrarily scaled, and the given point may be
+   * any point on the axis.
+   */
+  CylindricalManifold (const Point<spacedim> &direction,
+                      const Point<spacedim> &point_on_axis);
+
+ /**
+   * Compute new points on the CylindricalManifold. See the documentation
+   * of the base class for a detailed description of what this
+   * function does.
+   */
+  virtual Point<spacedim>
+  get_new_point(const Quadrature<spacedim> &quad) const;
+
+protected:
+  /**
+   * The direction vector of the axis.
+   */
+  const Point<spacedim> direction;
+
+  /**
+   * An arbitrary point on the axis.
+   */
+  const Point<spacedim> point_on_axis;
+
+private:
+  /**
+   * Given a number for the axis, return a vector that denotes this
+   * direction.
+   */
+  static Point<spacedim> get_axis_vector (const unsigned int axis);
+};
+
 DEAL_II_NAMESPACE_CLOSE
 
 #endif
index 18e30fe8c7d52b9b46407b28aaa87908a9c32288..fff6739c6dbf28c00e6e2be3ad008af3ddd3e412 100644 (file)
@@ -44,6 +44,7 @@ SET(_inst
   grid_tools.inst.in
   intergrid_map.inst.in
   manifold.inst.in
+  manifold_lib.inst.in
   tria_accessor.inst.in
   tria_boundary.inst.in
   tria_boundary_lib.inst.in
index 6707cb27ef7f1a63f9fa4b00ce9383c4c4fa7562..b16ab5765fc6c35770a4c166bcf221ef7d84997b 100644 (file)
@@ -259,8 +259,8 @@ get_new_point_on_hex (const typename Triangulation<3, 3>::hex_iterator &hex) con
 template <int dim, int spacedim>
 FlatManifold<dim,spacedim>::FlatManifold (const Point<spacedim> periodicity, 
                                          const double tolerance) :
-  periodicity(periodicity),
-  tolerance(tolerance)
+  tolerance(tolerance),
+  periodicity(periodicity)
 {}
 
 template <int dim, int spacedim>
index 5f0483eee6ccb1f7dac7f33145af7ff0a76be2f9..efc765ff1768427ebd3778cb65fbafe268f9cc39 100644 (file)
@@ -125,11 +125,84 @@ SphericalManifold<dim,spacedim>::pull_back(const Point<spacedim> &space_point) c
   }
   return p;
 }
+
+
+// ============================================================
+// CylindricalManifold
+// ============================================================
+
+
+template <int dim, int spacedim>
+Point<spacedim>
+CylindricalManifold<dim,spacedim>::get_axis_vector (const unsigned int axis)
+{
+  Assert (axis < spacedim, ExcIndexRange (axis, 0, spacedim));
+  Point<spacedim> axis_vector;
+  axis_vector[axis] = 1;
+  return axis_vector;
+}
+
+
+template <int dim, int spacedim>
+CylindricalManifold<dim,spacedim>::CylindricalManifold(const unsigned int axis) :
+  direction (get_axis_vector (axis)),
+  point_on_axis (Point<spacedim>())
+{
+  Assert(spacedim > 1, ExcImpossibleInDim(1));
+}
+
+
+template <int dim, int spacedim>
+CylindricalManifold<dim,spacedim>::CylindricalManifold(const Point<spacedim> &direction,
+                                                      const Point<spacedim> &point_on_axis) :
+  direction (direction),
+  point_on_axis (point_on_axis)
+{
+  Assert(spacedim > 2, ExcImpossibleInDim(spacedim));
+}
+
+
+
+
+template <int dim, int spacedim>
+Point<spacedim>
+CylindricalManifold<dim,spacedim>::
+get_new_point (const Quadrature<spacedim> &quad) const
+{
+  const std::vector<Point<spacedim> > &surrounding_points = quad.get_points();
+  const std::vector<double> &weights = quad.get_weights();
+
+  // compute a proposed new point  
+  Point<spacedim> middle = FlatManifold<dim,spacedim>::get_new_point(quad);
+
+  double radius = 0;
+  Point<spacedim> on_plane;
+  
+  for(unsigned int i=0; i<surrounding_points.size(); ++i)
+    {
+      on_plane = surrounding_points[i]-point_on_axis;
+      on_plane = on_plane - (on_plane*direction) * direction;
+      radius += weights[i]*on_plane.norm();
+    }
+  
+  // we then have to project this point out to the given radius from
+  // the axis. to this end, we have to take into account the offset
+  // point_on_axis and the direction of the axis
+  const Point<spacedim> vector_from_axis = (middle-point_on_axis) -
+                                          ((middle-point_on_axis) * direction) * direction;
+
+  // scale it to the desired length and put everything back together,
+  // unless we have a point on the axis
+  if (vector_from_axis.norm() <= this->tolerance * middle.norm())
+    return middle;
+
+  else
+    return (vector_from_axis / vector_from_axis.norm() * radius +
+           ((middle-point_on_axis) * direction) * direction +
+           point_on_axis);
+}
                
 // explicit instantiations
-template class SphericalManifold<1,2>;
-template class SphericalManifold<2,2>;
-template class SphericalManifold<2,3>;
-template class SphericalManifold<3,3>;
+#include "manifold_lib.inst"
 
 DEAL_II_NAMESPACE_CLOSE
index 11bf4195a9d0b17a84f67aa39916b9d924c1f929..0d3616eb914e141fcf4f0f63922b0ede3d55bda9 100644 (file)
 // ---------------------------------------------------------------------
 
 
-for (deal_II_dimension : DIMENSIONS)
+for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS)
   {
-    template class PolarManifold<deal_II_dimension>;
-    template class CylinderManifold<deal_II_dimension>;
-//     template class ConeBoundary<deal_II_dimension>;
+#if deal_II_space_dimension > 1 && deal_II_dimension <= deal_II_space_dimension
+    template class SphericalManifold<deal_II_dimension, deal_II_space_dimension>;
+#endif
+#if deal_II_dimension <= deal_II_space_dimension
+    template class CylindricalManifold<deal_II_dimension, deal_II_space_dimension>;
+#endif
   }
 
 
diff --git a/tests/manifold/cylindrical_manifold_01.cc b/tests/manifold/cylindrical_manifold_01.cc
new file mode 100644 (file)
index 0000000..6238725
--- /dev/null
@@ -0,0 +1,62 @@
+//----------------------------  cylindrical_manifold_01.cc  ---------------------------
+//    Copyright (C) 2011, 2013 by the mathLab team.
+//
+//    This file is subject to LGPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  cylindrical_manifold_01.cc  ---------------------------
+
+
+// Test cylindrical manifold on a cylinder
+
+#include "../tests.h"
+#include <fstream>
+#include <base/logstream.h>
+
+
+// all include files you need here
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
+#include <deal.II/grid/grid_out.h>
+
+// Helper function
+template <int dim, int spacedim>
+void test(unsigned int ref=1)
+{
+  deallog << "Testing dim " << dim 
+         << ", spacedim " << spacedim << std::endl;
+
+  CylindricalManifold<dim,spacedim> manifold;
+  
+  Triangulation<dim,spacedim> tria;
+  GridGenerator::cylinder (tria);
+
+  for(auto cell = tria.begin_active(); cell != tria.end(); ++cell) {
+    cell->set_all_manifold_ids(1);
+  }
+  
+  tria.set_manifold(1, manifold);
+  tria.refine_global(1);
+  
+  GridOut gridout;
+  gridout.write_msh(tria, deallog.get_file_stream());
+}
+
+int main ()
+{
+  std::ofstream logfile("output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+  
+  test<3,3>();
+  
+  return 0;
+}
+
diff --git a/tests/manifold/cylindrical_manifold_01.output b/tests/manifold/cylindrical_manifold_01.output
new file mode 100644 (file)
index 0000000..637a2fe
--- /dev/null
@@ -0,0 +1,213 @@
+
+DEAL::Testing dim 3, spacedim 3
+$NOD
+125
+1  -1.00000 0.707107 -0.707107
+2  -1.00000 -0.707107 -0.707107
+3  -1.00000 0.292893 -0.292893
+4  -1.00000 -0.292893 -0.292893
+5  -1.00000 0.292893 0.292893
+6  -1.00000 -0.292893 0.292893
+7  -1.00000 0.707107 0.707107
+8  -1.00000 -0.707107 0.707107
+9  0.00000 0.707107 -0.707107
+10  0.00000 -0.707107 -0.707107
+11  0.00000 0.292893 -0.292893
+12  0.00000 -0.292893 -0.292893
+13  0.00000 0.292893 0.292893
+14  0.00000 -0.292893 0.292893
+15  0.00000 0.707107 0.707107
+16  0.00000 -0.707107 0.707107
+17  1.00000 0.707107 -0.707107
+18  1.00000 -0.707107 -0.707107
+19  1.00000 0.292893 -0.292893
+20  1.00000 -0.292893 -0.292893
+21  1.00000 0.292893 0.292893
+22  1.00000 -0.292893 0.292893
+23  1.00000 0.707107 0.707107
+24  1.00000 -0.707107 0.707107
+25  -1.00000 0.00000 -1.00000
+26  -1.00000 0.500000 -0.500000
+27  -1.00000 1.00000 0.00000
+28  -0.500000 0.707107 -0.707107
+29  -1.00000 -0.500000 -0.500000
+30  -1.00000 -1.00000 0.00000
+31  -0.500000 -0.707107 -0.707107
+32  -1.00000 0.00000 -0.414214
+33  -1.00000 0.414214 0.00000
+34  -0.500000 0.292893 -0.292893
+35  -1.00000 -0.414214 0.00000
+36  -0.500000 -0.292893 -0.292893
+37  -1.00000 0.00000 0.414214
+38  -0.500000 0.292893 0.292893
+39  -0.500000 -0.292893 0.292893
+40  -1.00000 0.500000 0.500000
+41  -1.00000 0.00000 1.00000
+42  -0.500000 0.707107 0.707107
+43  -1.00000 -0.500000 0.500000
+44  -0.500000 -0.707107 0.707107
+45  0.00000 0.00000 -1.00000
+46  0.00000 0.500000 -0.500000
+47  0.00000 1.00000 0.00000
+48  0.500000 0.707107 -0.707107
+49  0.00000 -0.500000 -0.500000
+50  0.00000 -1.00000 0.00000
+51  0.500000 -0.707107 -0.707107
+52  0.00000 0.00000 -0.414214
+53  0.00000 0.414214 0.00000
+54  0.500000 0.292893 -0.292893
+55  0.00000 -0.414214 0.00000
+56  0.500000 -0.292893 -0.292893
+57  0.00000 0.00000 0.414214
+58  0.500000 0.292893 0.292893
+59  0.500000 -0.292893 0.292893
+60  0.00000 0.500000 0.500000
+61  0.00000 0.00000 1.00000
+62  0.500000 0.707107 0.707107
+63  0.00000 -0.500000 0.500000
+64  0.500000 -0.707107 0.707107
+65  1.00000 0.00000 -1.00000
+66  1.00000 0.500000 -0.500000
+67  1.00000 1.00000 0.00000
+68  1.00000 -0.500000 -0.500000
+69  1.00000 -1.00000 0.00000
+70  1.00000 0.00000 -0.414214
+71  1.00000 0.414214 0.00000
+72  1.00000 -0.414214 0.00000
+73  1.00000 0.00000 0.414214
+74  1.00000 0.500000 0.500000
+75  1.00000 0.00000 1.00000
+76  1.00000 -0.500000 0.500000
+77  -1.00000 8.89225e-18 -0.707107
+78  -1.00000 0.707107 0.00000
+79  -0.500000 0.500000 -0.500000
+80  -0.500000 1.00000 0.00000
+81  -0.500000 0.00000 -1.00000
+82  -0.500000 -0.500000 -0.500000
+83  -1.00000 -0.707107 -8.89225e-18
+84  -0.500000 -1.00000 0.00000
+85  -1.00000 0.00000 0.00000
+86  -0.500000 0.414214 0.00000
+87  -0.500000 0.00000 -0.414214
+88  -0.500000 -0.414214 0.00000
+89  -0.500000 0.00000 0.414214
+90  -1.00000 0.00000 0.707107
+91  -0.500000 0.00000 1.00000
+92  -0.500000 0.500000 0.500000
+93  -0.500000 -0.500000 0.500000
+94  0.00000 8.89225e-18 -0.707107
+95  0.00000 0.707107 0.00000
+96  0.500000 0.500000 -0.500000
+97  0.500000 1.00000 0.00000
+98  0.500000 0.00000 -1.00000
+99  0.500000 -0.500000 -0.500000
+100  0.00000 -0.707107 -8.89225e-18
+101  0.500000 -1.00000 0.00000
+102  0.00000 0.00000 0.00000
+103  0.500000 0.414214 0.00000
+104  0.500000 0.00000 -0.414214
+105  0.500000 -0.414214 0.00000
+106  0.500000 0.00000 0.414214
+107  0.00000 0.00000 0.707107
+108  0.500000 0.00000 1.00000
+109  0.500000 0.500000 0.500000
+110  0.500000 -0.500000 0.500000
+111  1.00000 8.89225e-18 -0.707107
+112  1.00000 0.707107 0.00000
+113  1.00000 -0.707107 -8.89225e-18
+114  1.00000 0.00000 0.00000
+115  1.00000 0.00000 0.707107
+116  -0.500000 1.74882e-18 -0.707107
+117  -0.500000 0.707107 -8.18795e-18
+118  -0.500000 0.00000 0.00000
+119  -0.500000 -0.707107 -1.74882e-18
+120  -0.500000 -8.18795e-18 0.707107
+121  0.500000 1.74882e-18 -0.707107
+122  0.500000 0.707107 -8.18795e-18
+123  0.500000 0.00000 0.00000
+124  0.500000 -0.707107 -1.74882e-18
+125  0.500000 -8.18795e-18 0.707107
+$ENDNOD
+$ELM
+80
+1 5 0 0 8 1 25 77 26 28 81 116 79 
+2 5 0 0 8 25 2 29 77 81 31 82 116 
+3 5 0 0 8 28 81 116 79 9 45 94 46 
+4 5 0 0 8 81 31 82 116 45 10 49 94 
+5 5 0 0 8 26 77 32 3 79 116 87 34 
+6 5 0 0 8 77 29 4 32 116 82 36 87 
+7 5 0 0 8 79 116 87 34 46 94 52 11 
+8 5 0 0 8 116 82 36 87 94 49 12 52 
+9 5 0 0 8 1 26 78 27 28 79 117 80 
+10 5 0 0 8 26 3 33 78 79 34 86 117 
+11 5 0 0 8 28 79 117 80 9 46 95 47 
+12 5 0 0 8 79 34 86 117 46 11 53 95 
+13 5 0 0 8 27 78 40 7 80 117 92 42 
+14 5 0 0 8 78 33 5 40 117 86 38 92 
+15 5 0 0 8 80 117 92 42 47 95 60 15 
+16 5 0 0 8 117 86 38 92 95 53 13 60 
+17 5 0 0 8 3 32 85 33 34 87 118 86 
+18 5 0 0 8 32 4 35 85 87 36 88 118 
+19 5 0 0 8 34 87 118 86 11 52 102 53 
+20 5 0 0 8 87 36 88 118 52 12 55 102 
+21 5 0 0 8 33 85 37 5 86 118 89 38 
+22 5 0 0 8 85 35 6 37 118 88 39 89 
+23 5 0 0 8 86 118 89 38 53 102 57 13 
+24 5 0 0 8 118 88 39 89 102 55 14 57 
+25 5 0 0 8 2 30 83 29 31 84 119 82 
+26 5 0 0 8 30 8 43 83 84 44 93 119 
+27 5 0 0 8 31 84 119 82 10 50 100 49 
+28 5 0 0 8 84 44 93 119 50 16 63 100 
+29 5 0 0 8 29 83 35 4 82 119 88 36 
+30 5 0 0 8 83 43 6 35 119 93 39 88 
+31 5 0 0 8 82 119 88 36 49 100 55 12 
+32 5 0 0 8 119 93 39 88 100 63 14 55 
+33 5 0 0 8 7 40 90 41 42 92 120 91 
+34 5 0 0 8 40 5 37 90 92 38 89 120 
+35 5 0 0 8 42 92 120 91 15 60 107 61 
+36 5 0 0 8 92 38 89 120 60 13 57 107 
+37 5 0 0 8 41 90 43 8 91 120 93 44 
+38 5 0 0 8 90 37 6 43 120 89 39 93 
+39 5 0 0 8 91 120 93 44 61 107 63 16 
+40 5 0 0 8 120 89 39 93 107 57 14 63 
+41 5 0 0 8 9 45 94 46 48 98 121 96 
+42 5 0 0 8 45 10 49 94 98 51 99 121 
+43 5 0 0 8 48 98 121 96 17 65 111 66 
+44 5 0 0 8 98 51 99 121 65 18 68 111 
+45 5 0 0 8 46 94 52 11 96 121 104 54 
+46 5 0 0 8 94 49 12 52 121 99 56 104 
+47 5 0 0 8 96 121 104 54 66 111 70 19 
+48 5 0 0 8 121 99 56 104 111 68 20 70 
+49 5 0 0 8 9 46 95 47 48 96 122 97 
+50 5 0 0 8 46 11 53 95 96 54 103 122 
+51 5 0 0 8 48 96 122 97 17 66 112 67 
+52 5 0 0 8 96 54 103 122 66 19 71 112 
+53 5 0 0 8 47 95 60 15 97 122 109 62 
+54 5 0 0 8 95 53 13 60 122 103 58 109 
+55 5 0 0 8 97 122 109 62 67 112 74 23 
+56 5 0 0 8 122 103 58 109 112 71 21 74 
+57 5 0 0 8 11 52 102 53 54 104 123 103 
+58 5 0 0 8 52 12 55 102 104 56 105 123 
+59 5 0 0 8 54 104 123 103 19 70 114 71 
+60 5 0 0 8 104 56 105 123 70 20 72 114 
+61 5 0 0 8 53 102 57 13 103 123 106 58 
+62 5 0 0 8 102 55 14 57 123 105 59 106 
+63 5 0 0 8 103 123 106 58 71 114 73 21 
+64 5 0 0 8 123 105 59 106 114 72 22 73 
+65 5 0 0 8 10 50 100 49 51 101 124 99 
+66 5 0 0 8 50 16 63 100 101 64 110 124 
+67 5 0 0 8 51 101 124 99 18 69 113 68 
+68 5 0 0 8 101 64 110 124 69 24 76 113 
+69 5 0 0 8 49 100 55 12 99 124 105 56 
+70 5 0 0 8 100 63 14 55 124 110 59 105 
+71 5 0 0 8 99 124 105 56 68 113 72 20 
+72 5 0 0 8 124 110 59 105 113 76 22 72 
+73 5 0 0 8 15 60 107 61 62 109 125 108 
+74 5 0 0 8 60 13 57 107 109 58 106 125 
+75 5 0 0 8 62 109 125 108 23 74 115 75 
+76 5 0 0 8 109 58 106 125 74 21 73 115 
+77 5 0 0 8 61 107 63 16 108 125 110 64 
+78 5 0 0 8 107 57 14 63 125 106 59 110 
+79 5 0 0 8 108 125 110 64 75 115 76 24 
+80 5 0 0 8 125 106 59 110 115 73 22 76 
+$ENDELM
diff --git a/tests/manifold/cylindrical_manifold_02.cc b/tests/manifold/cylindrical_manifold_02.cc
new file mode 100644 (file)
index 0000000..77cc1e5
--- /dev/null
@@ -0,0 +1,63 @@
+//----------------------------  cylindrical_manifold_01.cc  ---------------------------
+//    Copyright (C) 2011, 2013 by the mathLab team.
+//
+//    This file is subject to LGPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  cylindrical_manifold_01.cc  ---------------------------
+
+
+// Test cylindrical manifold on cylinder shells.
+
+#include "../tests.h"
+#include <fstream>
+#include <base/logstream.h>
+
+
+// all include files you need here
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
+#include <deal.II/grid/grid_out.h>
+
+// Helper function
+template <int dim, int spacedim>
+void test(unsigned int ref=1)
+{
+  deallog << "Testing dim " << dim 
+         << ", spacedim " << spacedim << std::endl;
+  
+  // Here the only allowed axis is z. In cylinder the default is x.
+  CylindricalManifold<dim,spacedim> manifold(2);
+  
+  Triangulation<dim,spacedim> tria;
+  GridGenerator::cylinder_shell (tria, .5, .1, .25);
+
+  for(auto cell = tria.begin_active(); cell != tria.end(); ++cell) {
+    cell->set_all_manifold_ids(1);
+  }
+  
+  tria.set_manifold(1, manifold);
+  tria.refine_global(1);
+  
+  GridOut gridout;
+  gridout.write_msh(tria, deallog.get_file_stream());
+}
+
+int main ()
+{
+  std::ofstream logfile("output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+  
+  test<3,3>();
+  
+  return 0;
+}
+
diff --git a/tests/manifold/cylindrical_manifold_02.output b/tests/manifold/cylindrical_manifold_02.output
new file mode 100644 (file)
index 0000000..42e2755
--- /dev/null
@@ -0,0 +1,696 @@
+
+DEAL::Testing dim 3, spacedim 3
+$NOD
+432
+1  0.250000 0.00000 0.00000
+2  0.176777 0.176777 0.00000
+3  1.53081e-17 0.250000 0.00000
+4  -0.176777 0.176777 0.00000
+5  -0.250000 3.06162e-17 0.00000
+6  -0.176777 -0.176777 0.00000
+7  -4.59243e-17 -0.250000 0.00000
+8  0.176777 -0.176777 0.00000
+9  0.100000 0.00000 0.00000
+10  0.0707107 0.0707107 0.00000
+11  6.12323e-18 0.100000 0.00000
+12  -0.0707107 0.0707107 0.00000
+13  -0.100000 1.22465e-17 0.00000
+14  -0.0707107 -0.0707107 0.00000
+15  -1.83697e-17 -0.100000 0.00000
+16  0.0707107 -0.0707107 0.00000
+17  0.250000 0.00000 0.125000
+18  0.176777 0.176777 0.125000
+19  1.53081e-17 0.250000 0.125000
+20  -0.176777 0.176777 0.125000
+21  -0.250000 3.06162e-17 0.125000
+22  -0.176777 -0.176777 0.125000
+23  -4.59243e-17 -0.250000 0.125000
+24  0.176777 -0.176777 0.125000
+25  0.100000 0.00000 0.125000
+26  0.0707107 0.0707107 0.125000
+27  6.12323e-18 0.100000 0.125000
+28  -0.0707107 0.0707107 0.125000
+29  -0.100000 1.22465e-17 0.125000
+30  -0.0707107 -0.0707107 0.125000
+31  -1.83697e-17 -0.100000 0.125000
+32  0.0707107 -0.0707107 0.125000
+33  0.250000 0.00000 0.250000
+34  0.176777 0.176777 0.250000
+35  1.53081e-17 0.250000 0.250000
+36  -0.176777 0.176777 0.250000
+37  -0.250000 3.06162e-17 0.250000
+38  -0.176777 -0.176777 0.250000
+39  -4.59243e-17 -0.250000 0.250000
+40  0.176777 -0.176777 0.250000
+41  0.100000 0.00000 0.250000
+42  0.0707107 0.0707107 0.250000
+43  6.12323e-18 0.100000 0.250000
+44  -0.0707107 0.0707107 0.250000
+45  -0.100000 1.22465e-17 0.250000
+46  -0.0707107 -0.0707107 0.250000
+47  -1.83697e-17 -0.100000 0.250000
+48  0.0707107 -0.0707107 0.250000
+49  0.250000 0.00000 0.375000
+50  0.176777 0.176777 0.375000
+51  1.53081e-17 0.250000 0.375000
+52  -0.176777 0.176777 0.375000
+53  -0.250000 3.06162e-17 0.375000
+54  -0.176777 -0.176777 0.375000
+55  -4.59243e-17 -0.250000 0.375000
+56  0.176777 -0.176777 0.375000
+57  0.100000 0.00000 0.375000
+58  0.0707107 0.0707107 0.375000
+59  6.12323e-18 0.100000 0.375000
+60  -0.0707107 0.0707107 0.375000
+61  -0.100000 1.22465e-17 0.375000
+62  -0.0707107 -0.0707107 0.375000
+63  -1.83697e-17 -0.100000 0.375000
+64  0.0707107 -0.0707107 0.375000
+65  0.250000 0.00000 0.500000
+66  0.176777 0.176777 0.500000
+67  1.53081e-17 0.250000 0.500000
+68  -0.176777 0.176777 0.500000
+69  -0.250000 3.06162e-17 0.500000
+70  -0.176777 -0.176777 0.500000
+71  -4.59243e-17 -0.250000 0.500000
+72  0.176777 -0.176777 0.500000
+73  0.100000 0.00000 0.500000
+74  0.0707107 0.0707107 0.500000
+75  6.12323e-18 0.100000 0.500000
+76  -0.0707107 0.0707107 0.500000
+77  -0.100000 1.22465e-17 0.500000
+78  -0.0707107 -0.0707107 0.500000
+79  -1.83697e-17 -0.100000 0.500000
+80  0.0707107 -0.0707107 0.500000
+81  0.230970 0.0956709 0.00000
+82  0.175000 0.00000 0.00000
+83  0.0956709 0.230970 0.00000
+84  0.123744 0.123744 0.00000
+85  -0.0956709 0.230970 0.00000
+86  1.07157e-17 0.175000 0.00000
+87  -0.230970 0.0956709 0.00000
+88  -0.123744 0.123744 0.00000
+89  -0.230970 -0.0956709 0.00000
+90  -0.175000 2.14313e-17 0.00000
+91  -0.0956709 -0.230970 0.00000
+92  -0.123744 -0.123744 0.00000
+93  0.0956709 -0.230970 0.00000
+94  -3.21470e-17 -0.175000 0.00000
+95  0.230970 -0.0956709 0.00000
+96  0.123744 -0.123744 0.00000
+97  0.0923880 0.0382683 0.00000
+98  0.0382683 0.0923880 0.00000
+99  -0.0382683 0.0923880 0.00000
+100  -0.0923880 0.0382683 0.00000
+101  -0.0923880 -0.0382683 0.00000
+102  -0.0382683 -0.0923880 0.00000
+103  0.0382683 -0.0923880 0.00000
+104  0.0923880 -0.0382683 0.00000
+105  0.250000 0.00000 0.0625000
+106  0.230970 0.0956709 0.125000
+107  0.175000 0.00000 0.125000
+108  0.176777 0.176777 0.0625000
+109  0.0956709 0.230970 0.125000
+110  0.123744 0.123744 0.125000
+111  1.53081e-17 0.250000 0.0625000
+112  -0.0956709 0.230970 0.125000
+113  1.07157e-17 0.175000 0.125000
+114  -0.176777 0.176777 0.0625000
+115  -0.230970 0.0956709 0.125000
+116  -0.123744 0.123744 0.125000
+117  -0.250000 3.06162e-17 0.0625000
+118  -0.230970 -0.0956709 0.125000
+119  -0.175000 2.14313e-17 0.125000
+120  -0.176777 -0.176777 0.0625000
+121  -0.0956709 -0.230970 0.125000
+122  -0.123744 -0.123744 0.125000
+123  -4.59243e-17 -0.250000 0.0625000
+124  0.0956709 -0.230970 0.125000
+125  -3.21470e-17 -0.175000 0.125000
+126  0.176777 -0.176777 0.0625000
+127  0.230970 -0.0956709 0.125000
+128  0.123744 -0.123744 0.125000
+129  0.100000 0.00000 0.0625000
+130  0.0923880 0.0382683 0.125000
+131  0.0707107 0.0707107 0.0625000
+132  0.0382683 0.0923880 0.125000
+133  6.12323e-18 0.100000 0.0625000
+134  -0.0382683 0.0923880 0.125000
+135  -0.0707107 0.0707107 0.0625000
+136  -0.0923880 0.0382683 0.125000
+137  -0.100000 1.22465e-17 0.0625000
+138  -0.0923880 -0.0382683 0.125000
+139  -0.0707107 -0.0707107 0.0625000
+140  -0.0382683 -0.0923880 0.125000
+141  -1.83697e-17 -0.100000 0.0625000
+142  0.0382683 -0.0923880 0.125000
+143  0.0707107 -0.0707107 0.0625000
+144  0.0923880 -0.0382683 0.125000
+145  0.250000 0.00000 0.187500
+146  0.230970 0.0956709 0.250000
+147  0.175000 0.00000 0.250000
+148  0.176777 0.176777 0.187500
+149  0.0956709 0.230970 0.250000
+150  0.123744 0.123744 0.250000
+151  1.53081e-17 0.250000 0.187500
+152  -0.0956709 0.230970 0.250000
+153  1.07157e-17 0.175000 0.250000
+154  -0.176777 0.176777 0.187500
+155  -0.230970 0.0956709 0.250000
+156  -0.123744 0.123744 0.250000
+157  -0.250000 3.06162e-17 0.187500
+158  -0.230970 -0.0956709 0.250000
+159  -0.175000 2.14313e-17 0.250000
+160  -0.176777 -0.176777 0.187500
+161  -0.0956709 -0.230970 0.250000
+162  -0.123744 -0.123744 0.250000
+163  -4.59243e-17 -0.250000 0.187500
+164  0.0956709 -0.230970 0.250000
+165  -3.21470e-17 -0.175000 0.250000
+166  0.176777 -0.176777 0.187500
+167  0.230970 -0.0956709 0.250000
+168  0.123744 -0.123744 0.250000
+169  0.100000 0.00000 0.187500
+170  0.0923880 0.0382683 0.250000
+171  0.0707107 0.0707107 0.187500
+172  0.0382683 0.0923880 0.250000
+173  6.12323e-18 0.100000 0.187500
+174  -0.0382683 0.0923880 0.250000
+175  -0.0707107 0.0707107 0.187500
+176  -0.0923880 0.0382683 0.250000
+177  -0.100000 1.22465e-17 0.187500
+178  -0.0923880 -0.0382683 0.250000
+179  -0.0707107 -0.0707107 0.187500
+180  -0.0382683 -0.0923880 0.250000
+181  -1.83697e-17 -0.100000 0.187500
+182  0.0382683 -0.0923880 0.250000
+183  0.0707107 -0.0707107 0.187500
+184  0.0923880 -0.0382683 0.250000
+185  0.250000 0.00000 0.312500
+186  0.230970 0.0956709 0.375000
+187  0.175000 0.00000 0.375000
+188  0.176777 0.176777 0.312500
+189  0.0956709 0.230970 0.375000
+190  0.123744 0.123744 0.375000
+191  1.53081e-17 0.250000 0.312500
+192  -0.0956709 0.230970 0.375000
+193  1.07157e-17 0.175000 0.375000
+194  -0.176777 0.176777 0.312500
+195  -0.230970 0.0956709 0.375000
+196  -0.123744 0.123744 0.375000
+197  -0.250000 3.06162e-17 0.312500
+198  -0.230970 -0.0956709 0.375000
+199  -0.175000 2.14313e-17 0.375000
+200  -0.176777 -0.176777 0.312500
+201  -0.0956709 -0.230970 0.375000
+202  -0.123744 -0.123744 0.375000
+203  -4.59243e-17 -0.250000 0.312500
+204  0.0956709 -0.230970 0.375000
+205  -3.21470e-17 -0.175000 0.375000
+206  0.176777 -0.176777 0.312500
+207  0.230970 -0.0956709 0.375000
+208  0.123744 -0.123744 0.375000
+209  0.100000 0.00000 0.312500
+210  0.0923880 0.0382683 0.375000
+211  0.0707107 0.0707107 0.312500
+212  0.0382683 0.0923880 0.375000
+213  6.12323e-18 0.100000 0.312500
+214  -0.0382683 0.0923880 0.375000
+215  -0.0707107 0.0707107 0.312500
+216  -0.0923880 0.0382683 0.375000
+217  -0.100000 1.22465e-17 0.312500
+218  -0.0923880 -0.0382683 0.375000
+219  -0.0707107 -0.0707107 0.312500
+220  -0.0382683 -0.0923880 0.375000
+221  -1.83697e-17 -0.100000 0.312500
+222  0.0382683 -0.0923880 0.375000
+223  0.0707107 -0.0707107 0.312500
+224  0.0923880 -0.0382683 0.375000
+225  0.250000 0.00000 0.437500
+226  0.230970 0.0956709 0.500000
+227  0.175000 0.00000 0.500000
+228  0.176777 0.176777 0.437500
+229  0.0956709 0.230970 0.500000
+230  0.123744 0.123744 0.500000
+231  1.53081e-17 0.250000 0.437500
+232  -0.0956709 0.230970 0.500000
+233  1.07157e-17 0.175000 0.500000
+234  -0.176777 0.176777 0.437500
+235  -0.230970 0.0956709 0.500000
+236  -0.123744 0.123744 0.500000
+237  -0.250000 3.06162e-17 0.437500
+238  -0.230970 -0.0956709 0.500000
+239  -0.175000 2.14313e-17 0.500000
+240  -0.176777 -0.176777 0.437500
+241  -0.0956709 -0.230970 0.500000
+242  -0.123744 -0.123744 0.500000
+243  -4.59243e-17 -0.250000 0.437500
+244  0.0956709 -0.230970 0.500000
+245  -3.21470e-17 -0.175000 0.500000
+246  0.176777 -0.176777 0.437500
+247  0.230970 -0.0956709 0.500000
+248  0.123744 -0.123744 0.500000
+249  0.100000 0.00000 0.437500
+250  0.0923880 0.0382683 0.500000
+251  0.0707107 0.0707107 0.437500
+252  0.0382683 0.0923880 0.500000
+253  6.12323e-18 0.100000 0.437500
+254  -0.0382683 0.0923880 0.500000
+255  -0.0707107 0.0707107 0.437500
+256  -0.0923880 0.0382683 0.500000
+257  -0.100000 1.22465e-17 0.437500
+258  -0.0923880 -0.0382683 0.500000
+259  -0.0707107 -0.0707107 0.437500
+260  -0.0382683 -0.0923880 0.500000
+261  -1.83697e-17 -0.100000 0.437500
+262  0.0382683 -0.0923880 0.500000
+263  0.0707107 -0.0707107 0.437500
+264  0.0923880 -0.0382683 0.500000
+265  0.161679 0.0669696 0.00000
+266  0.0669696 0.161679 0.00000
+267  -0.0669696 0.161679 0.00000
+268  -0.161679 0.0669696 0.00000
+269  -0.161679 -0.0669696 0.00000
+270  -0.0669696 -0.161679 0.00000
+271  0.0669696 -0.161679 0.00000
+272  0.161679 -0.0669696 0.00000
+273  0.230970 0.0956709 0.0625000
+274  0.161679 0.0669696 0.125000
+275  0.175000 0.00000 0.0625000
+276  0.0956709 0.230970 0.0625000
+277  0.0669696 0.161679 0.125000
+278  0.123744 0.123744 0.0625000
+279  -0.0956709 0.230970 0.0625000
+280  -0.0669696 0.161679 0.125000
+281  1.07157e-17 0.175000 0.0625000
+282  -0.230970 0.0956709 0.0625000
+283  -0.161679 0.0669696 0.125000
+284  -0.123744 0.123744 0.0625000
+285  -0.230970 -0.0956709 0.0625000
+286  -0.161679 -0.0669696 0.125000
+287  -0.175000 2.14313e-17 0.0625000
+288  -0.0956709 -0.230970 0.0625000
+289  -0.0669696 -0.161679 0.125000
+290  -0.123744 -0.123744 0.0625000
+291  0.0956709 -0.230970 0.0625000
+292  0.0669696 -0.161679 0.125000
+293  -3.21470e-17 -0.175000 0.0625000
+294  0.230970 -0.0956709 0.0625000
+295  0.161679 -0.0669696 0.125000
+296  0.123744 -0.123744 0.0625000
+297  0.0923880 0.0382683 0.0625000
+298  0.0382683 0.0923880 0.0625000
+299  -0.0382683 0.0923880 0.0625000
+300  -0.0923880 0.0382683 0.0625000
+301  -0.0923880 -0.0382683 0.0625000
+302  -0.0382683 -0.0923880 0.0625000
+303  0.0382683 -0.0923880 0.0625000
+304  0.0923880 -0.0382683 0.0625000
+305  0.230970 0.0956709 0.187500
+306  0.161679 0.0669696 0.250000
+307  0.175000 0.00000 0.187500
+308  0.0956709 0.230970 0.187500
+309  0.0669696 0.161679 0.250000
+310  0.123744 0.123744 0.187500
+311  -0.0956709 0.230970 0.187500
+312  -0.0669696 0.161679 0.250000
+313  1.07157e-17 0.175000 0.187500
+314  -0.230970 0.0956709 0.187500
+315  -0.161679 0.0669696 0.250000
+316  -0.123744 0.123744 0.187500
+317  -0.230970 -0.0956709 0.187500
+318  -0.161679 -0.0669696 0.250000
+319  -0.175000 2.14313e-17 0.187500
+320  -0.0956709 -0.230970 0.187500
+321  -0.0669696 -0.161679 0.250000
+322  -0.123744 -0.123744 0.187500
+323  0.0956709 -0.230970 0.187500
+324  0.0669696 -0.161679 0.250000
+325  -3.21470e-17 -0.175000 0.187500
+326  0.230970 -0.0956709 0.187500
+327  0.161679 -0.0669696 0.250000
+328  0.123744 -0.123744 0.187500
+329  0.0923880 0.0382683 0.187500
+330  0.0382683 0.0923880 0.187500
+331  -0.0382683 0.0923880 0.187500
+332  -0.0923880 0.0382683 0.187500
+333  -0.0923880 -0.0382683 0.187500
+334  -0.0382683 -0.0923880 0.187500
+335  0.0382683 -0.0923880 0.187500
+336  0.0923880 -0.0382683 0.187500
+337  0.230970 0.0956709 0.312500
+338  0.161679 0.0669696 0.375000
+339  0.175000 0.00000 0.312500
+340  0.0956709 0.230970 0.312500
+341  0.0669696 0.161679 0.375000
+342  0.123744 0.123744 0.312500
+343  -0.0956709 0.230970 0.312500
+344  -0.0669696 0.161679 0.375000
+345  1.07157e-17 0.175000 0.312500
+346  -0.230970 0.0956709 0.312500
+347  -0.161679 0.0669696 0.375000
+348  -0.123744 0.123744 0.312500
+349  -0.230970 -0.0956709 0.312500
+350  -0.161679 -0.0669696 0.375000
+351  -0.175000 2.14313e-17 0.312500
+352  -0.0956709 -0.230970 0.312500
+353  -0.0669696 -0.161679 0.375000
+354  -0.123744 -0.123744 0.312500
+355  0.0956709 -0.230970 0.312500
+356  0.0669696 -0.161679 0.375000
+357  -3.21470e-17 -0.175000 0.312500
+358  0.230970 -0.0956709 0.312500
+359  0.161679 -0.0669696 0.375000
+360  0.123744 -0.123744 0.312500
+361  0.0923880 0.0382683 0.312500
+362  0.0382683 0.0923880 0.312500
+363  -0.0382683 0.0923880 0.312500
+364  -0.0923880 0.0382683 0.312500
+365  -0.0923880 -0.0382683 0.312500
+366  -0.0382683 -0.0923880 0.312500
+367  0.0382683 -0.0923880 0.312500
+368  0.0923880 -0.0382683 0.312500
+369  0.230970 0.0956709 0.437500
+370  0.161679 0.0669696 0.500000
+371  0.175000 0.00000 0.437500
+372  0.0956709 0.230970 0.437500
+373  0.0669696 0.161679 0.500000
+374  0.123744 0.123744 0.437500
+375  -0.0956709 0.230970 0.437500
+376  -0.0669696 0.161679 0.500000
+377  1.07157e-17 0.175000 0.437500
+378  -0.230970 0.0956709 0.437500
+379  -0.161679 0.0669696 0.500000
+380  -0.123744 0.123744 0.437500
+381  -0.230970 -0.0956709 0.437500
+382  -0.161679 -0.0669696 0.500000
+383  -0.175000 2.14313e-17 0.437500
+384  -0.0956709 -0.230970 0.437500
+385  -0.0669696 -0.161679 0.500000
+386  -0.123744 -0.123744 0.437500
+387  0.0956709 -0.230970 0.437500
+388  0.0669696 -0.161679 0.500000
+389  -3.21470e-17 -0.175000 0.437500
+390  0.230970 -0.0956709 0.437500
+391  0.161679 -0.0669696 0.500000
+392  0.123744 -0.123744 0.437500
+393  0.0923880 0.0382683 0.437500
+394  0.0382683 0.0923880 0.437500
+395  -0.0382683 0.0923880 0.437500
+396  -0.0923880 0.0382683 0.437500
+397  -0.0923880 -0.0382683 0.437500
+398  -0.0382683 -0.0923880 0.437500
+399  0.0382683 -0.0923880 0.437500
+400  0.0923880 -0.0382683 0.437500
+401  0.161679 0.0669696 0.0625000
+402  0.0669696 0.161679 0.0625000
+403  -0.0669696 0.161679 0.0625000
+404  -0.161679 0.0669696 0.0625000
+405  -0.161679 -0.0669696 0.0625000
+406  -0.0669696 -0.161679 0.0625000
+407  0.0669696 -0.161679 0.0625000
+408  0.161679 -0.0669696 0.0625000
+409  0.161679 0.0669696 0.187500
+410  0.0669696 0.161679 0.187500
+411  -0.0669696 0.161679 0.187500
+412  -0.161679 0.0669696 0.187500
+413  -0.161679 -0.0669696 0.187500
+414  -0.0669696 -0.161679 0.187500
+415  0.0669696 -0.161679 0.187500
+416  0.161679 -0.0669696 0.187500
+417  0.161679 0.0669696 0.312500
+418  0.0669696 0.161679 0.312500
+419  -0.0669696 0.161679 0.312500
+420  -0.161679 0.0669696 0.312500
+421  -0.161679 -0.0669696 0.312500
+422  -0.0669696 -0.161679 0.312500
+423  0.0669696 -0.161679 0.312500
+424  0.161679 -0.0669696 0.312500
+425  0.161679 0.0669696 0.437500
+426  0.0669696 0.161679 0.437500
+427  -0.0669696 0.161679 0.437500
+428  -0.161679 0.0669696 0.437500
+429  -0.161679 -0.0669696 0.437500
+430  -0.0669696 -0.161679 0.437500
+431  0.0669696 -0.161679 0.437500
+432  0.161679 -0.0669696 0.437500
+$ENDNOD
+$ELM
+256
+1 5 0 0 8 17 106 274 107 105 273 401 275 
+2 5 0 0 8 106 18 110 274 273 108 278 401 
+3 5 0 0 8 105 273 401 275 1 81 265 82 
+4 5 0 0 8 273 108 278 401 81 2 84 265 
+5 5 0 0 8 107 274 130 25 275 401 297 129 
+6 5 0 0 8 274 110 26 130 401 278 131 297 
+7 5 0 0 8 275 401 297 129 82 265 97 9 
+8 5 0 0 8 401 278 131 297 265 84 10 97 
+9 5 0 0 8 18 109 277 110 108 276 402 278 
+10 5 0 0 8 109 19 113 277 276 111 281 402 
+11 5 0 0 8 108 276 402 278 2 83 266 84 
+12 5 0 0 8 276 111 281 402 83 3 86 266 
+13 5 0 0 8 110 277 132 26 278 402 298 131 
+14 5 0 0 8 277 113 27 132 402 281 133 298 
+15 5 0 0 8 278 402 298 131 84 266 98 10 
+16 5 0 0 8 402 281 133 298 266 86 11 98 
+17 5 0 0 8 19 112 280 113 111 279 403 281 
+18 5 0 0 8 112 20 116 280 279 114 284 403 
+19 5 0 0 8 111 279 403 281 3 85 267 86 
+20 5 0 0 8 279 114 284 403 85 4 88 267 
+21 5 0 0 8 113 280 134 27 281 403 299 133 
+22 5 0 0 8 280 116 28 134 403 284 135 299 
+23 5 0 0 8 281 403 299 133 86 267 99 11 
+24 5 0 0 8 403 284 135 299 267 88 12 99 
+25 5 0 0 8 20 115 283 116 114 282 404 284 
+26 5 0 0 8 115 21 119 283 282 117 287 404 
+27 5 0 0 8 114 282 404 284 4 87 268 88 
+28 5 0 0 8 282 117 287 404 87 5 90 268 
+29 5 0 0 8 116 283 136 28 284 404 300 135 
+30 5 0 0 8 283 119 29 136 404 287 137 300 
+31 5 0 0 8 284 404 300 135 88 268 100 12 
+32 5 0 0 8 404 287 137 300 268 90 13 100 
+33 5 0 0 8 21 118 286 119 117 285 405 287 
+34 5 0 0 8 118 22 122 286 285 120 290 405 
+35 5 0 0 8 117 285 405 287 5 89 269 90 
+36 5 0 0 8 285 120 290 405 89 6 92 269 
+37 5 0 0 8 119 286 138 29 287 405 301 137 
+38 5 0 0 8 286 122 30 138 405 290 139 301 
+39 5 0 0 8 287 405 301 137 90 269 101 13 
+40 5 0 0 8 405 290 139 301 269 92 14 101 
+41 5 0 0 8 22 121 289 122 120 288 406 290 
+42 5 0 0 8 121 23 125 289 288 123 293 406 
+43 5 0 0 8 120 288 406 290 6 91 270 92 
+44 5 0 0 8 288 123 293 406 91 7 94 270 
+45 5 0 0 8 122 289 140 30 290 406 302 139 
+46 5 0 0 8 289 125 31 140 406 293 141 302 
+47 5 0 0 8 290 406 302 139 92 270 102 14 
+48 5 0 0 8 406 293 141 302 270 94 15 102 
+49 5 0 0 8 23 124 292 125 123 291 407 293 
+50 5 0 0 8 124 24 128 292 291 126 296 407 
+51 5 0 0 8 123 291 407 293 7 93 271 94 
+52 5 0 0 8 291 126 296 407 93 8 96 271 
+53 5 0 0 8 125 292 142 31 293 407 303 141 
+54 5 0 0 8 292 128 32 142 407 296 143 303 
+55 5 0 0 8 293 407 303 141 94 271 103 15 
+56 5 0 0 8 407 296 143 303 271 96 16 103 
+57 5 0 0 8 24 127 295 128 126 294 408 296 
+58 5 0 0 8 127 17 107 295 294 105 275 408 
+59 5 0 0 8 126 294 408 296 8 95 272 96 
+60 5 0 0 8 294 105 275 408 95 1 82 272 
+61 5 0 0 8 128 295 144 32 296 408 304 143 
+62 5 0 0 8 295 107 25 144 408 275 129 304 
+63 5 0 0 8 296 408 304 143 96 272 104 16 
+64 5 0 0 8 408 275 129 304 272 82 9 104 
+65 5 0 0 8 33 146 306 147 145 305 409 307 
+66 5 0 0 8 146 34 150 306 305 148 310 409 
+67 5 0 0 8 145 305 409 307 17 106 274 107 
+68 5 0 0 8 305 148 310 409 106 18 110 274 
+69 5 0 0 8 147 306 170 41 307 409 329 169 
+70 5 0 0 8 306 150 42 170 409 310 171 329 
+71 5 0 0 8 307 409 329 169 107 274 130 25 
+72 5 0 0 8 409 310 171 329 274 110 26 130 
+73 5 0 0 8 34 149 309 150 148 308 410 310 
+74 5 0 0 8 149 35 153 309 308 151 313 410 
+75 5 0 0 8 148 308 410 310 18 109 277 110 
+76 5 0 0 8 308 151 313 410 109 19 113 277 
+77 5 0 0 8 150 309 172 42 310 410 330 171 
+78 5 0 0 8 309 153 43 172 410 313 173 330 
+79 5 0 0 8 310 410 330 171 110 277 132 26 
+80 5 0 0 8 410 313 173 330 277 113 27 132 
+81 5 0 0 8 35 152 312 153 151 311 411 313 
+82 5 0 0 8 152 36 156 312 311 154 316 411 
+83 5 0 0 8 151 311 411 313 19 112 280 113 
+84 5 0 0 8 311 154 316 411 112 20 116 280 
+85 5 0 0 8 153 312 174 43 313 411 331 173 
+86 5 0 0 8 312 156 44 174 411 316 175 331 
+87 5 0 0 8 313 411 331 173 113 280 134 27 
+88 5 0 0 8 411 316 175 331 280 116 28 134 
+89 5 0 0 8 36 155 315 156 154 314 412 316 
+90 5 0 0 8 155 37 159 315 314 157 319 412 
+91 5 0 0 8 154 314 412 316 20 115 283 116 
+92 5 0 0 8 314 157 319 412 115 21 119 283 
+93 5 0 0 8 156 315 176 44 316 412 332 175 
+94 5 0 0 8 315 159 45 176 412 319 177 332 
+95 5 0 0 8 316 412 332 175 116 283 136 28 
+96 5 0 0 8 412 319 177 332 283 119 29 136 
+97 5 0 0 8 37 158 318 159 157 317 413 319 
+98 5 0 0 8 158 38 162 318 317 160 322 413 
+99 5 0 0 8 157 317 413 319 21 118 286 119 
+100 5 0 0 8 317 160 322 413 118 22 122 286 
+101 5 0 0 8 159 318 178 45 319 413 333 177 
+102 5 0 0 8 318 162 46 178 413 322 179 333 
+103 5 0 0 8 319 413 333 177 119 286 138 29 
+104 5 0 0 8 413 322 179 333 286 122 30 138 
+105 5 0 0 8 38 161 321 162 160 320 414 322 
+106 5 0 0 8 161 39 165 321 320 163 325 414 
+107 5 0 0 8 160 320 414 322 22 121 289 122 
+108 5 0 0 8 320 163 325 414 121 23 125 289 
+109 5 0 0 8 162 321 180 46 322 414 334 179 
+110 5 0 0 8 321 165 47 180 414 325 181 334 
+111 5 0 0 8 322 414 334 179 122 289 140 30 
+112 5 0 0 8 414 325 181 334 289 125 31 140 
+113 5 0 0 8 39 164 324 165 163 323 415 325 
+114 5 0 0 8 164 40 168 324 323 166 328 415 
+115 5 0 0 8 163 323 415 325 23 124 292 125 
+116 5 0 0 8 323 166 328 415 124 24 128 292 
+117 5 0 0 8 165 324 182 47 325 415 335 181 
+118 5 0 0 8 324 168 48 182 415 328 183 335 
+119 5 0 0 8 325 415 335 181 125 292 142 31 
+120 5 0 0 8 415 328 183 335 292 128 32 142 
+121 5 0 0 8 40 167 327 168 166 326 416 328 
+122 5 0 0 8 167 33 147 327 326 145 307 416 
+123 5 0 0 8 166 326 416 328 24 127 295 128 
+124 5 0 0 8 326 145 307 416 127 17 107 295 
+125 5 0 0 8 168 327 184 48 328 416 336 183 
+126 5 0 0 8 327 147 41 184 416 307 169 336 
+127 5 0 0 8 328 416 336 183 128 295 144 32 
+128 5 0 0 8 416 307 169 336 295 107 25 144 
+129 5 0 0 8 49 186 338 187 185 337 417 339 
+130 5 0 0 8 186 50 190 338 337 188 342 417 
+131 5 0 0 8 185 337 417 339 33 146 306 147 
+132 5 0 0 8 337 188 342 417 146 34 150 306 
+133 5 0 0 8 187 338 210 57 339 417 361 209 
+134 5 0 0 8 338 190 58 210 417 342 211 361 
+135 5 0 0 8 339 417 361 209 147 306 170 41 
+136 5 0 0 8 417 342 211 361 306 150 42 170 
+137 5 0 0 8 50 189 341 190 188 340 418 342 
+138 5 0 0 8 189 51 193 341 340 191 345 418 
+139 5 0 0 8 188 340 418 342 34 149 309 150 
+140 5 0 0 8 340 191 345 418 149 35 153 309 
+141 5 0 0 8 190 341 212 58 342 418 362 211 
+142 5 0 0 8 341 193 59 212 418 345 213 362 
+143 5 0 0 8 342 418 362 211 150 309 172 42 
+144 5 0 0 8 418 345 213 362 309 153 43 172 
+145 5 0 0 8 51 192 344 193 191 343 419 345 
+146 5 0 0 8 192 52 196 344 343 194 348 419 
+147 5 0 0 8 191 343 419 345 35 152 312 153 
+148 5 0 0 8 343 194 348 419 152 36 156 312 
+149 5 0 0 8 193 344 214 59 345 419 363 213 
+150 5 0 0 8 344 196 60 214 419 348 215 363 
+151 5 0 0 8 345 419 363 213 153 312 174 43 
+152 5 0 0 8 419 348 215 363 312 156 44 174 
+153 5 0 0 8 52 195 347 196 194 346 420 348 
+154 5 0 0 8 195 53 199 347 346 197 351 420 
+155 5 0 0 8 194 346 420 348 36 155 315 156 
+156 5 0 0 8 346 197 351 420 155 37 159 315 
+157 5 0 0 8 196 347 216 60 348 420 364 215 
+158 5 0 0 8 347 199 61 216 420 351 217 364 
+159 5 0 0 8 348 420 364 215 156 315 176 44 
+160 5 0 0 8 420 351 217 364 315 159 45 176 
+161 5 0 0 8 53 198 350 199 197 349 421 351 
+162 5 0 0 8 198 54 202 350 349 200 354 421 
+163 5 0 0 8 197 349 421 351 37 158 318 159 
+164 5 0 0 8 349 200 354 421 158 38 162 318 
+165 5 0 0 8 199 350 218 61 351 421 365 217 
+166 5 0 0 8 350 202 62 218 421 354 219 365 
+167 5 0 0 8 351 421 365 217 159 318 178 45 
+168 5 0 0 8 421 354 219 365 318 162 46 178 
+169 5 0 0 8 54 201 353 202 200 352 422 354 
+170 5 0 0 8 201 55 205 353 352 203 357 422 
+171 5 0 0 8 200 352 422 354 38 161 321 162 
+172 5 0 0 8 352 203 357 422 161 39 165 321 
+173 5 0 0 8 202 353 220 62 354 422 366 219 
+174 5 0 0 8 353 205 63 220 422 357 221 366 
+175 5 0 0 8 354 422 366 219 162 321 180 46 
+176 5 0 0 8 422 357 221 366 321 165 47 180 
+177 5 0 0 8 55 204 356 205 203 355 423 357 
+178 5 0 0 8 204 56 208 356 355 206 360 423 
+179 5 0 0 8 203 355 423 357 39 164 324 165 
+180 5 0 0 8 355 206 360 423 164 40 168 324 
+181 5 0 0 8 205 356 222 63 357 423 367 221 
+182 5 0 0 8 356 208 64 222 423 360 223 367 
+183 5 0 0 8 357 423 367 221 165 324 182 47 
+184 5 0 0 8 423 360 223 367 324 168 48 182 
+185 5 0 0 8 56 207 359 208 206 358 424 360 
+186 5 0 0 8 207 49 187 359 358 185 339 424 
+187 5 0 0 8 206 358 424 360 40 167 327 168 
+188 5 0 0 8 358 185 339 424 167 33 147 327 
+189 5 0 0 8 208 359 224 64 360 424 368 223 
+190 5 0 0 8 359 187 57 224 424 339 209 368 
+191 5 0 0 8 360 424 368 223 168 327 184 48 
+192 5 0 0 8 424 339 209 368 327 147 41 184 
+193 5 0 0 8 65 226 370 227 225 369 425 371 
+194 5 0 0 8 226 66 230 370 369 228 374 425 
+195 5 0 0 8 225 369 425 371 49 186 338 187 
+196 5 0 0 8 369 228 374 425 186 50 190 338 
+197 5 0 0 8 227 370 250 73 371 425 393 249 
+198 5 0 0 8 370 230 74 250 425 374 251 393 
+199 5 0 0 8 371 425 393 249 187 338 210 57 
+200 5 0 0 8 425 374 251 393 338 190 58 210 
+201 5 0 0 8 66 229 373 230 228 372 426 374 
+202 5 0 0 8 229 67 233 373 372 231 377 426 
+203 5 0 0 8 228 372 426 374 50 189 341 190 
+204 5 0 0 8 372 231 377 426 189 51 193 341 
+205 5 0 0 8 230 373 252 74 374 426 394 251 
+206 5 0 0 8 373 233 75 252 426 377 253 394 
+207 5 0 0 8 374 426 394 251 190 341 212 58 
+208 5 0 0 8 426 377 253 394 341 193 59 212 
+209 5 0 0 8 67 232 376 233 231 375 427 377 
+210 5 0 0 8 232 68 236 376 375 234 380 427 
+211 5 0 0 8 231 375 427 377 51 192 344 193 
+212 5 0 0 8 375 234 380 427 192 52 196 344 
+213 5 0 0 8 233 376 254 75 377 427 395 253 
+214 5 0 0 8 376 236 76 254 427 380 255 395 
+215 5 0 0 8 377 427 395 253 193 344 214 59 
+216 5 0 0 8 427 380 255 395 344 196 60 214 
+217 5 0 0 8 68 235 379 236 234 378 428 380 
+218 5 0 0 8 235 69 239 379 378 237 383 428 
+219 5 0 0 8 234 378 428 380 52 195 347 196 
+220 5 0 0 8 378 237 383 428 195 53 199 347 
+221 5 0 0 8 236 379 256 76 380 428 396 255 
+222 5 0 0 8 379 239 77 256 428 383 257 396 
+223 5 0 0 8 380 428 396 255 196 347 216 60 
+224 5 0 0 8 428 383 257 396 347 199 61 216 
+225 5 0 0 8 69 238 382 239 237 381 429 383 
+226 5 0 0 8 238 70 242 382 381 240 386 429 
+227 5 0 0 8 237 381 429 383 53 198 350 199 
+228 5 0 0 8 381 240 386 429 198 54 202 350 
+229 5 0 0 8 239 382 258 77 383 429 397 257 
+230 5 0 0 8 382 242 78 258 429 386 259 397 
+231 5 0 0 8 383 429 397 257 199 350 218 61 
+232 5 0 0 8 429 386 259 397 350 202 62 218 
+233 5 0 0 8 70 241 385 242 240 384 430 386 
+234 5 0 0 8 241 71 245 385 384 243 389 430 
+235 5 0 0 8 240 384 430 386 54 201 353 202 
+236 5 0 0 8 384 243 389 430 201 55 205 353 
+237 5 0 0 8 242 385 260 78 386 430 398 259 
+238 5 0 0 8 385 245 79 260 430 389 261 398 
+239 5 0 0 8 386 430 398 259 202 353 220 62 
+240 5 0 0 8 430 389 261 398 353 205 63 220 
+241 5 0 0 8 71 244 388 245 243 387 431 389 
+242 5 0 0 8 244 72 248 388 387 246 392 431 
+243 5 0 0 8 243 387 431 389 55 204 356 205 
+244 5 0 0 8 387 246 392 431 204 56 208 356 
+245 5 0 0 8 245 388 262 79 389 431 399 261 
+246 5 0 0 8 388 248 80 262 431 392 263 399 
+247 5 0 0 8 389 431 399 261 205 356 222 63 
+248 5 0 0 8 431 392 263 399 356 208 64 222 
+249 5 0 0 8 72 247 391 248 246 390 432 392 
+250 5 0 0 8 247 65 227 391 390 225 371 432 
+251 5 0 0 8 246 390 432 392 56 207 359 208 
+252 5 0 0 8 390 225 371 432 207 49 187 359 
+253 5 0 0 8 248 391 264 80 392 432 400 263 
+254 5 0 0 8 391 227 73 264 432 371 249 400 
+255 5 0 0 8 392 432 400 263 208 359 224 64 
+256 5 0 0 8 432 371 249 400 359 187 57 224 
+$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.