]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Work on review comments 3886/head
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Wed, 22 Mar 2017 19:20:30 +0000 (20:20 +0100)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Wed, 22 Mar 2017 19:44:39 +0000 (20:44 +0100)
doc/news/changes/minor/20170317MartinKronbichler
doc/news/changes/minor/20170317MartinKronbichler-b
include/deal.II/fe/mapping_q.h
include/deal.II/fe/mapping_q_generic.h
source/fe/mapping_q.cc
source/fe/mapping_q_generic.cc
tests/mappings/data_out_curved_geometry_3d.output
tests/mappings/mapping_q_mixed_manifolds_01.output
tests/mappings/mapping_q_mixed_manifolds_02.output
tests/mappings/mapping_q_mixed_manifolds_03.cc [deleted file]
tests/mappings/mapping_q_mixed_manifolds_03.output [deleted file]

index b1e6059331635cb14dec361c72327e780f4fa43b..41f920cfdc2f83eb82a1e7e69ca0e74709464f94 100644 (file)
@@ -5,8 +5,6 @@ implementation, a smoothing algorithm is invoked that interpolates from the
 whole perimeter of a cell's (or a face's) interior in case two or more
 manifolds are adjacent to the cell, like a Boundary object and the
 StraightBoundary in the interior. If only one manifold is present, the new
-points are interpolated from the surrounding vertices only. In case the
-smoothing is undesired, it can be disabled by an argument
-@p smooth_support_points passed to the constructor of MappingQGeneric.
+points are interpolated from the surrounding vertices only.
 <br>
 (Martin Kronbichler, 2017/03/17)
index 691927892b55c8100989fbfd1fe386eb2c3aca7e..5dbc9b1ee9412fe501cd7a77918fc256bc945fd4 100644 (file)
@@ -2,7 +2,7 @@ New: The Manifold class and derived classes now provide a function
 Manifold::add_new_points that allows to compute multiple new points according
 to a matrix of weights that are appended to the last argument of the
 function. This function is used in MappingQGeneric and can be much more
-efficient for ChartManifold where ChartManifold::pull_back is an expensive
-operation.
+efficient for ChartManifold because ChartManifold::pull_back() calls are
+reused for several interpolation operations.
 <br>
 (Martin Kronbichler, 2017/03/17)
index dd6946c3b69035f6992394696dd3b864b5c9194e..298dc57716b21c92f5c047e91e6685ee6b811fca 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2001 - 2016 by the deal.II authors
+// Copyright (C) 2001 - 2017 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -71,50 +71,9 @@ DEAL_II_NAMESPACE_OPEN
  *
  * <h4>Behavior along curved boundaries and with different manifolds</h4>
  *
- * As described above, one often only knows a manifold description of a
- * surface but not the interior of the computational domain. In such a case, a
- * StraightBoundary object will be assigned to the interior entities that
- * describes a usual planar coordinate system where the additional points for
- * the higher order mapping are placed exactly according to a bi-/trilinear
- * mapping. When combined with a non-flat manifold on the boundary, for
- * example a circle, the two manifold descriptions are in general
- * incompatible. For example, a StraightBoundary defined solely through the
- * cell's vertices would put an interior point located at some small distance
- * epsilon away from the boundary along a flat line and thus in general
- * outside the concave part of a circle. If the polynomial degree of
- * MappingQGeneric is sufficiently high, the transformation from the reference
- * cell to such a cell would in general contain inverted regions close to the
- * boundary.
- *
- * In order to avoid this situation, this class applies a smoothing on cells
- * adjacent to the boundary by using so-called Laplace smoothing by
- * default. In the algorithm that computing additional points, the
- * compute_mapping_support_points() method, all the entities of the cells are
- * passed through hierarchically, starting from the lines to the quads and
- * finally hexes. The elements higher up in the hierarchy that sit on the
- * boundary will then get their points interpolated from all the surrounding
- * points and not just the corner points. If only a line is assigned a curved
- * boundary but the adjacent quad is on a flat manifold, the points inside the
- * quad will be computed according to the deformed line and thus always result
- * in a well-defined transformation. This smoothing can be disabled by setting
- * the optional argument @p smooth_support_points to false, placing the
- * additional points strictly according to the manifold. This is usually the
- * most efficient choice in case different manifolds are present that are
- * compatible with each other.
- *
- * While the smoothing approach works well for filling holes or avoiding
- * inversions with low and medium convergence orders up to approximately three
- * to four, there is nonetheless an inherent shortcoming because of a
- * discontinuous mapping that switches from a curved manifold to a flat
- * manifold within one layer of elements. This will cause the Jacobian
- * transformation to have jumps between the first and second element layer
- * that can reduce the order of convergence. For example, the convergence
- * rates for solving the Laplacian on a circle where only the boundary is
- * deformed and the above mesh smoothing algorithm is applied will typically
- * not exceed 3.5 (or 3 in the elements adjacent to the boundary), even for
- * fourth or fifth degree polynomials. In such a case, the curved manifold
- * needs to be switched to a flat manifold in a smooth way that does not
- * depend on the mesh size and eventuell covers a whole layer of cells.
+ * For the behavior of the mapping and convergence rates in case of mixing
+ * different manifolds, please consult the respective section of
+ * MappingQGeneric.
  *
  * @author Ralf Hartmann, 2000, 2001, 2005; Guido Kanschat 2000, 2001,
  * Wolfgang Bangerth, 2015
@@ -139,14 +98,9 @@ public:
    * The value of @p use_mapping_q_on_all_cells is ignored if @p dim is not
    * equal to @p spacedim, i.e., if we are considering meshes on surfaces
    * embedded into higher dimensional spaces.
-   *
-   * The optional parameter @p smooth_support_points controls whether
-   * smoothing on objects where different manifolds meet according to the
-   * general class description should be enabled (default) or not.
    */
   MappingQ (const unsigned int polynomial_degree,
-            const bool use_mapping_q_on_all_cells = false,
-            const bool smooth_support_points = true);
+            const bool use_mapping_q_on_all_cells = false);
 
   /**
    * Copy constructor.
index 4c604c5c45a036ba4e8e150b8b3fe880da3fa4f8..0028d9e95bfe02193c8d3fcf0ca91197c5fc74c5 100644 (file)
@@ -89,44 +89,47 @@ template <int,int> class MappingQ;
  * describes a usual planar coordinate system where the additional points for
  * the higher order mapping are placed exactly according to a bi-/trilinear
  * mapping. When combined with a non-flat manifold on the boundary, for
- * example a circle, the two manifold descriptions are in general
- * incompatible. For example, a StraightBoundary defined solely through the
- * cell's vertices would put an interior point located at some small distance
- * epsilon away from the boundary along a flat line and thus in general
- * outside the concave part of a circle. If the polynomial degree of
- * MappingQGeneric is sufficiently high, the transformation from the reference
- * cell to such a cell would in general contain inverted regions close to the
- * boundary.
+ * example a circle bulging into the interior of a square cell, the two
+ * manifold descriptions are in general incompatible. For example, a
+ * FlatManifold defined solely through the cell's vertices would put an
+ * interior point located at some small distance epsilon away from the
+ * boundary along a straight line and thus in general outside the concave part
+ * of a circle. If the polynomial degree of MappingQ is sufficiently high, the
+ * transformation from the reference cell to such a cell would in general
+ * contain inverted regions close to the boundary.
  *
  * In order to avoid this situation, this class applies a smoothing on cells
  * adjacent to the boundary by using so-called Laplace smoothing by
- * default. In the algorithm that computing additional points, the
+ * default. In the algorithm that computes additional points, the
  * compute_mapping_support_points() method, all the entities of the cells are
  * passed through hierarchically, starting from the lines to the quads and
- * finally hexes. The elements higher up in the hierarchy that sit on the
- * boundary will then get their points interpolated from all the surrounding
- * points and not just the corner points. If only a line is assigned a curved
- * boundary but the adjacent quad is on a flat manifold, the points inside the
- * quad will be computed according to the deformed line and thus always result
- * in a well-defined transformation. This smoothing can be disabled by setting
- * the optional argument @p smooth_support_points to false, placing the
- * additional points strictly according to the manifold. This is usually the
- * most efficient choice in case different manifolds are present that are
- * compatible with each other.
+ * finally hexes. Points on objects higher up in the hierarchy are obtained
+ * from the manifold associated with that object, taking into account all the
+ * points previously computed by the manifolds associated with the
+ * lower-dimensional objects, not just the vertices. If only a line is
+ * assigned a curved boundary but the adjacent quad is on a flat manifold, the
+ * flat manifold on the quad will take the points on the deformed line into
+ * account when interpolating the position of the additional points inside the
+ * quad and thus always result in a well-defined transformation.
  *
  * While the smoothing approach works well for filling holes or avoiding
  * inversions with low and medium convergence orders up to approximately three
- * to four, there is nonetheless an inherent shortcoming because of a
- * discontinuous mapping that switches from a curved manifold to a flat
- * manifold within one layer of elements. This will cause the Jacobian
- * transformation to have jumps between the first and second element layer
- * that can reduce the order of convergence. For example, the convergence
- * rates for solving the Laplacian on a circle where only the boundary is
- * deformed and the above mesh smoothing algorithm is applied will typically
- * not exceed 3.5 (or 3 in the elements adjacent to the boundary), even for
- * fourth or fifth degree polynomials. In such a case, the curved manifold
- * needs to be switched to a flat manifold in a smooth way that does not
- * depend on the mesh size and eventuell covers a whole layer of cells.
+ * to four, there is nonetheless an inherent shortcoming when switching from a
+ * curved manifold to a flat manifold over a face (and the associated
+ * smoothing). The finite element theory (see e.g. Strang and Fix, 1973,
+ * Sections 2.2 and 3.3 and in particular Theorem 3.6) requires the
+ * transformation to be globally C^0 continuous also over several elements and
+ * to be uniform as the mesh is refined. Even though the Laplace smoothing
+ * fixes the discontinuity within one layer of cells, it cannot provide
+ * uniformity as the change is always within one layer of elements only. For
+ * example, the convergence rates for solving the Laplacian on a circle where
+ * only the boundary is deformed and the above mesh smoothing algorithm is
+ * applied will typically not exceed 3.5 (or 3 in the elements adjacent to the
+ * boundary), even for fourth or fifth degree polynomials. In such a case, the
+ * curved manifold needs to be switched to a flat manifold in a smooth way
+ * that does not depend on the mesh size and eventually covers a region of
+ * cells instead of only those that are immediately adjacent to the circular
+ * boundary.
  *
  * @author Wolfgang Bangerth, 2015, Martin Kronbichler, 2017
  */
@@ -138,13 +141,8 @@ public:
    * Constructor.  @p polynomial_degree denotes the polynomial degree of the
    * polynomials that are used to map cells from the reference to the real
    * cell.
-   *
-   * The optional parameter @p smooth_support_points controls whether
-   * smoothing according to the general class description should be enabled
-   * (default) or not.
    */
-  MappingQGeneric (const unsigned int polynomial_degree,
-                   const bool         smooth_support_points = true);
+  MappingQGeneric (const unsigned int polynomial_degree);
 
   /**
    * Copy constructor.
@@ -441,6 +439,16 @@ public:
      */
     const unsigned int n_shape_functions;
 
+    /*
+     * The default line support points. Is used in when the shape function
+     * values are computed.
+     *
+     * The number of quadrature points depends on the degree of this
+     * class, and it matches the number of degrees of freedom of an
+     * FE_Q<1>(this->degree).
+     */
+    QGaussLobatto<1> line_support_points;
+
     /**
      * Tensors of covariant transformation at each of the quadrature points.
      * The matrix stored is the Jacobian * G^{-1}, where G = Jacobian^{t} *
@@ -546,12 +554,6 @@ protected:
    */
   const unsigned int polynomial_degree;
 
-  /**
-   * Stores whether we want to smooth the placement of interior points on flat
-   * manifolds.
-   */
-  const bool smooth_support_points;
-
   /*
    * The default line support points. These are used when computing
    * the location in real space of the support points on lines and
@@ -582,7 +584,7 @@ protected:
    * point weights from the perimeter to the interior of a hex.
    *
    * The table itself contains as many columns as there are surrounding points
-   * to a particular object (2 for a vertex, <code>4 + 4*(degree-1)</code> for
+   * to a particular object (2 for a line, <code>4 + 4*(degree-1)</code> for
    * a quad, <code>8 + 12*(degree-1) + 6*(degree-1)*(degree-1)</code> for a
    * hex) and as many rows as there are strictly interior points.
    *
@@ -591,29 +593,6 @@ protected:
    */
   std::vector<Table<2,double> > support_point_weights_perimeter_to_interior;
 
-  /**
-   * A vector of tables of weights by which we multiply the locations of the
-   * vertex points of an object (line, quad, hex) to get the location of
-   * interior support points.
-   *
-   * As opposed to @p support_point_weights_perimeter_to_interior, this table
-   * takes only the vertex points into account and not intermediate points
-   * inside the objects. Thus, the content of this table simply corresponds to
-   * the evaluation of the linear shape functions in the dimension of the
-   * object.
-   *
-   * Access into the vector of tables is by @p [structdim-1], i.e., use 0 to
-   * access the support point weights on a line (i.e., the interior points of
-   * the GaussLobatto quadrature), use 1 to access the support point weights
-   * from to perimeter to the interior of a quad, and use 2 to access the
-   * support point weights from the perimeter to the interior of a hex.
-   *
-   * The table itself contains as many columns as there are vertices on a
-   * particular object (2 for a vertex, 4 for a quad, 8 for a hex) and as many
-   * rows as there are strictly interior points.
-   */
-  std::vector<Table<2,double> > support_point_weights_interior;
-
   /**
    * A table of weights by which we multiply the locations of the vertex
    * points of the cell to get the location of all additional support points,
index 4b0b849ac7b8a32bb66c42adbeed7b49dc3f40fd..12d4ea6e03d272481823fea99afd256685aa1780 100644 (file)
@@ -54,8 +54,7 @@ MappingQ<dim,spacedim>::InternalData::memory_consumption () const
 
 template<int dim, int spacedim>
 MappingQ<dim,spacedim>::MappingQ (const unsigned int degree,
-                                  const bool use_mapping_q_on_all_cells,
-                                  const bool smooth_support_points)
+                                  const bool use_mapping_q_on_all_cells)
   :
   polynomial_degree (degree),
 
@@ -77,7 +76,7 @@ MappingQ<dim,spacedim>::MappingQ (const unsigned int degree,
   // created via the shared_ptr objects
   qp_mapping (this->polynomial_degree>1
               ?
-              std_cxx11::shared_ptr<const MappingQGeneric<dim,spacedim> >(new MappingQGeneric<dim,spacedim>(degree, smooth_support_points))
+              std_cxx11::shared_ptr<const MappingQGeneric<dim,spacedim> >(new MappingQGeneric<dim,spacedim>(degree))
               :
               q1_mapping)
 {}
index 4392dd8551fc32beb5219d3413ea4956a6b784e5..6369fab4d131c1378bd55b4048fa7e539fe8385b 100644 (file)
@@ -353,9 +353,8 @@ namespace internal
 
         // Construct the tensor product polynomials used as shape functions for the
         // Qp mapping of cells at the boundary.
-        QGaussLobatto<1> line_support_points(data.polynomial_degree+1);
         const TensorProductPolynomials<dim>
-        tensor_pols (Polynomials::generate_complete_Lagrange_basis(line_support_points.get_points()));
+        tensor_pols (Polynomials::generate_complete_Lagrange_basis(data.line_support_points.get_points()));
         Assert (n_shape_functions==tensor_pols.n(),
                 ExcInternalError());
 
@@ -747,13 +746,12 @@ namespace internal
 
 
 
-
-
 template<int dim, int spacedim>
 MappingQGeneric<dim,spacedim>::InternalData::InternalData (const unsigned int polynomial_degree)
   :
   polynomial_degree (polynomial_degree),
-  n_shape_functions (Utilities::fixed_power<dim>(polynomial_degree+1))
+  n_shape_functions (Utilities::fixed_power<dim>(polynomial_degree+1)),
+  line_support_points(QGaussLobatto<1>(polynomial_degree+1))
 {}
 
 
@@ -1221,61 +1219,6 @@ namespace
     return output;
   }
 
-  /**
-   * Collects all interior points for the various dimensions.
-   */
-  std::vector<Table<2,double> >
-  compute_support_point_weights_interior(const unsigned int polynomial_degree,
-                                         const unsigned int dim)
-  {
-    Assert(dim > 0 && dim <= 3, ExcImpossibleInDim(dim));
-    std::vector<Table<2,double> > output(dim);
-    if (polynomial_degree <= 1)
-      return output;
-
-    // fill the 1D interior weights
-    QGaussLobatto<1> quadrature(polynomial_degree+1);
-    output[0].reinit(polynomial_degree-1, GeometryInfo<1>::vertices_per_cell);
-    for (unsigned int q=0; q<polynomial_degree-1; ++q)
-      for (unsigned int i=0; i<GeometryInfo<1>::vertices_per_cell; ++i)
-        output[0](q,i) = GeometryInfo<1>::d_linear_shape_function(quadrature.point(q+1),
-                                                                  i);
-
-    // fill the 2D interior points
-    if (dim > 1)
-      {
-        output[1].reinit(Utilities::fixed_power<2>(polynomial_degree-1),
-                         GeometryInfo<2>::vertices_per_cell);
-        for (unsigned int q=0, q2=0; q2<polynomial_degree-1; ++q2)
-          for (unsigned int q1=0; q1<polynomial_degree-1; ++q1, ++q)
-            {
-              Point<2> point(quadrature.point(q1+1)[0],
-                             quadrature.point(q2+1)[0]);
-              for (unsigned int i=0; i<GeometryInfo<2>::vertices_per_cell; ++i)
-                output[1](q,i) = GeometryInfo<2>::d_linear_shape_function(point, i);
-            }
-      }
-
-    // fill the 3D interior points
-    if (dim > 2)
-      {
-        output[2].reinit(Utilities::fixed_power<3>(polynomial_degree-1),
-                         GeometryInfo<3>::vertices_per_cell);
-        for (unsigned int q=0, q3=0; q3<polynomial_degree-1; ++q3)
-          for (unsigned int q2=0; q2<polynomial_degree-1; ++q2)
-            for (unsigned int q1=0; q1<polynomial_degree-1; ++q1, ++q)
-              {
-                Point<3> point(quadrature.point(q1+1)[0],
-                               quadrature.point(q2+1)[0],
-                               quadrature.point(q3+1)[0]);
-                for (unsigned int i=0; i<GeometryInfo<3>::vertices_per_cell; ++i)
-                  output[2](q,i) = GeometryInfo<3>::d_linear_shape_function(point, i);
-              }
-      }
-
-    return output;
-  }
-
   /**
    * Collects all interior points for the various dimensions.
    */
@@ -1287,14 +1230,15 @@ namespace
     if (polynomial_degree <= 1)
       return Table<2,double>();
 
-    FE_Q<dim> fe(polynomial_degree);
-    std::vector<Point<dim> > unit_support_points = fe.get_unit_support_points();
+    QGaussLobatto<dim> quadrature(polynomial_degree+1);
+    std::vector<unsigned int> h2l(quadrature.size());
+    FETools::hierarchic_to_lexicographic_numbering<dim>(polynomial_degree, h2l);
 
-    Table<2,double> output(fe.dofs_per_cell - GeometryInfo<dim>::vertices_per_cell,
+    Table<2,double> output(quadrature.size() - GeometryInfo<dim>::vertices_per_cell,
                            GeometryInfo<dim>::vertices_per_cell);
     for (unsigned int q=0; q<output.size(0); ++q)
       for (unsigned int i=0; i<GeometryInfo<dim>::vertices_per_cell; ++i)
-        output(q,i) = GeometryInfo<dim>::d_linear_shape_function(unit_support_points[q+GeometryInfo<dim>::vertices_per_cell],
+        output(q,i) = GeometryInfo<dim>::d_linear_shape_function(quadrature.point(h2l[q+GeometryInfo<dim>::vertices_per_cell]),
                                                                  i);
 
     return output;
@@ -1305,15 +1249,12 @@ namespace
 
 
 template<int dim, int spacedim>
-MappingQGeneric<dim,spacedim>::MappingQGeneric (const unsigned int p,
-                                                const bool smooth_support_points)
+MappingQGeneric<dim,spacedim>::MappingQGeneric (const unsigned int p)
   :
   polynomial_degree(p),
-  smooth_support_points(smooth_support_points),
   line_support_points(this->polynomial_degree+1),
   fe_q(dim == 3 ? new FE_Q<dim>(this->polynomial_degree) : 0),
   support_point_weights_perimeter_to_interior (compute_support_point_weights_perimeter_to_interior(this->polynomial_degree, dim)),
-  support_point_weights_interior (compute_support_point_weights_interior(this->polynomial_degree, dim)),
   support_point_weights_cell (compute_support_point_weights_cell<dim>(this->polynomial_degree))
 {
   Assert (p >= 1, ExcMessage ("It only makes sense to create polynomial mappings "
@@ -1326,11 +1267,9 @@ template<int dim, int spacedim>
 MappingQGeneric<dim,spacedim>::MappingQGeneric (const MappingQGeneric<dim,spacedim> &mapping)
   :
   polynomial_degree(mapping.polynomial_degree),
-  smooth_support_points(mapping.smooth_support_points),
   line_support_points(mapping.line_support_points),
   fe_q(dim == 3 ? new FE_Q<dim>(*mapping.fe_q) : 0),
   support_point_weights_perimeter_to_interior (mapping.support_point_weights_perimeter_to_interior),
-  support_point_weights_interior (mapping.support_point_weights_interior),
   support_point_weights_cell (mapping.support_point_weights_cell)
 {}
 
@@ -1363,7 +1302,6 @@ transform_unit_to_real_cell (const typename Triangulation<dim,spacedim>::cell_it
                              const Point<dim> &p) const
 {
   // set up the polynomial space
-  const QGaussLobatto<1> line_support_points (polynomial_degree + 1);
   const TensorProductPolynomials<dim>
   tensor_pols (Polynomials::generate_complete_Lagrange_basis(line_support_points.get_points()));
   Assert (tensor_pols.n() == Utilities::fixed_power<dim>(polynomial_degree+1),
@@ -3614,61 +3552,8 @@ transform (const ArrayView<const  Tensor<3,dim> >                  &input,
 
 namespace
 {
-  /**
-   * Ask the manifold descriptor to return intermediate points on the object
-   * pointed to by the TriaIterator @p iter. This function tries to be
-   * backward compatible with respect to the differences between
-   * Boundary<dim,spacedim> and Manifold<dim,spacedim>, querying the first
-   * whenever the passed @p manifold can be upgraded to a
-   * Boundary<dim,spacedim>.
-   */
-  template <int dim, int spacedim, class TriaIterator>
-  void add_intermediate_points(const Manifold<dim, spacedim> &manifold,
-                               const Table<2,double>         &weight_table,
-                               const TriaIterator            &iter,
-                               std::vector<Point<spacedim> > &points)
-  {
-    const unsigned int structdim = TriaIterator::AccessorType::structure_dimension;
-
-    // Try backward compatibility option.
-    const Boundary<dim,spacedim> *boundary
-      = dynamic_cast<const Boundary<dim,spacedim> *>(&manifold);
-    if (structdim < spacedim && boundary != NULL)
-      // This is actually a boundary. Call old methods.
-      {
-        std::vector<Point<spacedim> > new_points(weight_table.size(0));
-        switch (structdim)
-          {
-          case 1:
-          {
-            const typename Triangulation<dim,spacedim>::line_iterator line = iter;
-            boundary->get_intermediate_points_on_line(line, new_points);
-            break;
-          }
-          case 2:
-          {
-            const typename Triangulation<dim,spacedim>::quad_iterator quad = iter;
-            boundary->get_intermediate_points_on_quad(quad, new_points);
-            break;
-          }
-          default:
-            Assert(false, ExcInternalError());
-            break;
-          }
-        for (unsigned int i=0; i<new_points.size(); ++i)
-          points.push_back(new_points[i]);
-      }
-    else
-      {
-        std::vector<Point<spacedim> > sp(GeometryInfo<structdim>::vertices_per_cell);
-        for (unsigned int i=0; i<sp.size(); ++i)
-          sp[i] = iter->vertex(i);
-        manifold.add_new_points(sp, weight_table, points);
-      }
-  }
-
-
-
+  // We cannot query a manifold from the faces of a 1D elements (i.e.,
+  // vertices), which is why we add a specialization for the 3D case here
   template <typename Iterator>
   bool check_identical_manifolds_of_quads(const Iterator &)
   {
@@ -3717,7 +3602,7 @@ add_line_support_points (const typename Triangulation<dim,spacedim>::cell_iterat
     // otherwise call the more complicated functions and ask for inner points
     // from the boundary description
     {
-      std::vector<Point<spacedim> > line_points (this->polynomial_degree-1);
+      std::vector<Point<spacedim> > tmp_points;
       // loop over each of the lines, and if it is at the boundary, then first
       // get the boundary description and second compute the points on it
       for (unsigned int line_no=0; line_no<GeometryInfo<dim>::lines_per_cell; ++line_no)
@@ -3736,23 +3621,24 @@ add_line_support_points (const typename Triangulation<dim,spacedim>::cell_iterat
               cell->get_manifold() :
               line->get_manifold() );
 
-          line_points.resize(0);
-          add_intermediate_points (manifold, support_point_weights_interior[0],
-                                   line, line_points);
-
-          if (dim==3)
+          if (const Boundary<dim,spacedim> *boundary
+              = dynamic_cast<const Boundary<dim,spacedim> *>(&manifold))
             {
-              // in 3D, lines might be in wrong orientation. if so, reverse
-              // the vector
-              if (cell->line_orientation(line_no))
-                a.insert (a.end(), line_points.begin(), line_points.end());
+              tmp_points.resize(this->polynomial_degree-1);
+              boundary->get_intermediate_points_on_line(line, tmp_points);
+              if (dim != 3 || cell->line_orientation(line_no))
+                a.insert (a.end(), tmp_points.begin(), tmp_points.end());
               else
-                a.insert (a.end(), line_points.rbegin(), line_points.rend());
+                a.insert (a.end(), tmp_points.rbegin(), tmp_points.rend());
             }
           else
-            // in 2D, lines always have the correct orientation. simply append
-            // all points
-            a.insert (a.end(), line_points.begin(), line_points.end());
+            {
+              tmp_points.resize(2);
+              tmp_points[0] = cell->vertex(GeometryInfo<dim>::line_to_cell_vertices(line_no, 0));
+              tmp_points[1] = cell->vertex(GeometryInfo<dim>::line_to_cell_vertices(line_no, 1));
+              manifold.add_new_points(tmp_points,
+                                      support_point_weights_perimeter_to_interior[0], a);
+            }
         }
     }
 }
@@ -3768,7 +3654,6 @@ add_quad_support_points(const Triangulation<3,3>::cell_iterator &cell,
   const unsigned int faces_per_cell    = GeometryInfo<3>::faces_per_cell;
 
   // used if face quad at boundary or entirely in the interior of the domain
-  std::vector<Point<3> > quad_points;
   std::vector<Point<3> > tmp_points;
 
   // loop over all faces and collect points on them
@@ -3803,36 +3688,28 @@ add_quad_support_points(const Triangulation<3,3>::cell_iterator &cell,
 #endif
 
       // On a quad, we have to check whether the manifold should determine the
-      // point distribution or rather a weighted sum should be created. This
-      // is the same logic as in the compute_mapping_support_points function
-      // below
-      bool all_manifold_ids_are_equal = true;
-      for (unsigned int l=0; l<GeometryInfo<3>::lines_per_face; ++l)
-        if (&face->line(l)->get_manifold() != &face->get_manifold())
-          all_manifold_ids_are_equal = false;
-      if (smooth_support_points == false || all_manifold_ids_are_equal ||
-          (dynamic_cast<const Boundary<3,3> *>(&face->get_manifold()) &&
+      // point distribution from all surrounding points (new manifold code) or
+      // the old-style Boundary code should simply return the intermediate
+      // points. The second check is to find out whether the Boundary object
+      // is actually a StraightBoundary (the default flat manifold assigned to
+      // the triangulation if no manifold is assigned).
+      if ((dynamic_cast<const Boundary<3,3> *>(&face->get_manifold()) &&
            std::string(typeid(face->get_manifold()).name()).find("StraightBoundary") ==
            std::string::npos))
         {
           // ask the boundary/manifold object to return intermediate points on it
-          quad_points.resize(0);
-          add_intermediate_points(face->get_manifold(), support_point_weights_interior[1],
-                                  face, quad_points);
-
-          // in 3D, the orientation, flip and rotation of the face might not
-          // match what we expect here, namely the standard orientation. thus
-          // reorder points accordingly. since a Mapping uses the same shape
-          // function as an FE_Q, we can ask a FE_Q to do the reordering for us.
-          for (unsigned int i=0; i<quad_points.size(); ++i)
-            a.push_back(quad_points[fe_q->adjust_quad_dof_index_for_face_orientation(i,
-                                    face_orientation,
-                                    face_flip,
-                                    face_rotation)]);
+          tmp_points.resize((polynomial_degree-1)*(polynomial_degree-1));
+          const Boundary<3,3> *boundary = dynamic_cast<const Boundary<3,3> *>(&face->get_manifold());
+          boundary->get_intermediate_points_on_quad(face, tmp_points);
+          for (unsigned int i=0; i<tmp_points.size(); ++i)
+            a.push_back(tmp_points[fe_q->adjust_quad_dof_index_for_face_orientation(i,
+                                   face_orientation,
+                                   face_flip,
+                                   face_rotation)]);
         }
       else
         {
-          // need to extract the points surrounding a quad from the points
+          // extract the points surrounding a quad from the points
           // already computed. First get the 4 vertices and then the points on
           // the four lines
           tmp_points.resize(4 + 4*(polynomial_degree-1));
@@ -3860,8 +3737,31 @@ MappingQGeneric<2,3>::
 add_quad_support_points(const Triangulation<2,3>::cell_iterator &cell,
                         std::vector<Point<3> >                  &a) const
 {
-  add_intermediate_points (cell->get_manifold(), support_point_weights_interior[1],
-                           cell, a);
+  if (const Boundary<2,3> *boundary =
+        dynamic_cast<const Boundary<2,3> *>(&cell->get_manifold()))
+    {
+      std::vector<Point<3> > points((polynomial_degree-1)*(polynomial_degree-1));
+      boundary->get_intermediate_points_on_quad(cell, points);
+      a.insert(a.end(), points.begin(), points.end());
+    }
+  else
+    {
+      std::vector<Point<3> > vertices;
+      for (unsigned int i=0; i<GeometryInfo<2>::vertices_per_cell; ++i)
+        vertices.push_back(cell->vertex(i));
+      Table<2,double> weights(Utilities::fixed_power<2>(polynomial_degree-1),
+                              GeometryInfo<2>::vertices_per_cell);
+      for (unsigned int q=0, q2=0; q2<polynomial_degree-1; ++q2)
+        for (unsigned int q1=0; q1<polynomial_degree-1; ++q1, ++q)
+          {
+            Point<2> point(line_support_points.point(q1+1)[0],
+                           line_support_points.point(q2+1)[0]);
+            for (unsigned int i=0; i<GeometryInfo<2>::vertices_per_cell; ++i)
+              weights(q,i) = GeometryInfo<2>::d_linear_shape_function(point, i);
+          }
+      // TODO: use all surrounding points once Boundary path is removed
+      cell->get_manifold().add_new_points(vertices, weights, a);
+    }
 }
 
 
@@ -3905,60 +3805,48 @@ compute_mapping_support_points(const typename Triangulation<dim,spacedim>::cell_
         {
           std::vector<Point<spacedim> > vertices(a);
           cell->get_manifold().add_new_points(vertices, support_point_weights_cell, a);
-          return a;
         }
+      else
+        switch (dim)
+          {
+          case 1:
+            add_line_support_points(cell, a);
+            break;
+          case 2:
+            // in 2d, add the points on the four bounding lines to the exterior
+            // (outer) points
+            add_line_support_points(cell, a);
 
-      switch (dim)
-        {
-        case 1:
-          add_line_support_points(cell, a);
-          break;
-        case 2:
-          // in 2d, add the points on the four bounding lines to the exterior
-          // (outer) points
-          add_line_support_points(cell, a);
-
-          // then get the support points on the quad. decide whether to choose
-          // the smoothed variant that include all points and goes directly
-          // through the manifold or only the vertex points.
-          if (dim != spacedim)
-            add_quad_support_points(cell, a);
-          else if (smooth_support_points == false)
-            add_intermediate_points(cell->get_manifold(), support_point_weights_interior[1],
-                                    cell, a);
-          else
-            {
-              std::vector<Point<spacedim> > tmp_points(a);
-              cell->get_manifold().add_new_points(tmp_points,
-                                                  support_point_weights_perimeter_to_interior[1],
-                                                  a);
-            }
-          break;
-
-        case 3:
-          // in 3d also add the points located on the boundary faces
-          add_line_support_points (cell, a);
-          add_quad_support_points (cell, a);
-
-          // then compute the interior points. decide whether to choose
-          // the smoothed variant that include all points and goes directly
-          // through the manifold or only the vertex points.
-          if (smooth_support_points == false)
-            add_intermediate_points(cell->get_manifold(), support_point_weights_interior[2],
-                                    cell, a);
-          else
+            // then get the interior support points
+            if (dim != spacedim)
+              add_quad_support_points(cell, a);
+            else
+              {
+                std::vector<Point<spacedim> > tmp_points(a);
+                cell->get_manifold().add_new_points(tmp_points,
+                                                    support_point_weights_perimeter_to_interior[1],
+                                                    a);
+              }
+            break;
+
+          case 3:
+            // in 3d also add the points located on the boundary faces
+            add_line_support_points (cell, a);
+            add_quad_support_points (cell, a);
+
+            // then compute the interior points
             {
               std::vector<Point<spacedim> > tmp_points(a);
               cell->get_manifold().add_new_points(tmp_points,
                                                   support_point_weights_perimeter_to_interior[2],
                                                   a);
             }
-          break;
+            break;
 
-        default:
-          Assert(false, ExcNotImplemented());
-          break;
-        }
+          default:
+            Assert(false, ExcNotImplemented());
+            break;
+          }
     }
 
   return a;
index 781c7be9377572dcb42ae79510afe544a4d10daa..8c96cee32c5095bd6add795b5c19bc7991e4bda7 100644 (file)
@@ -382,13 +382,13 @@ POINTS 270 double
 0.00000 0.00000 -1.00000
 0.00000 -0.707107 -0.707107
 -1.00000 0.500000 -0.500000
--1.00000 1.96262e-17 -0.707107
+-1.00000 0.00000 -0.707107
 -1.00000 -0.500000 -0.500000
 -0.500000 0.500000 -0.500000
 -0.500000 0.00000 -0.707107
 -0.500000 -0.500000 -0.500000
 0.00000 0.500000 -0.500000
-0.00000 1.96262e-17 -0.707107
+0.00000 0.00000 -0.707107
 0.00000 -0.500000 -0.500000
 -1.00000 0.292893 -0.292893
 -1.00000 0.00000 -0.414214
@@ -409,13 +409,13 @@ POINTS 270 double
 0.00000 0.500000 -0.500000
 0.00000 0.292893 -0.292893
 -1.00000 1.00000 0.00000
--1.00000 0.707107 0.00000
+-1.00000 0.707107 -1.96262e-17
 -1.00000 0.414214 0.00000
 -0.500000 1.00000 0.00000
 -0.500000 0.707107 -9.81308e-18
 -0.500000 0.414214 0.00000
 0.00000 1.00000 0.00000
-0.00000 0.707107 0.00000
+0.00000 0.707107 -1.96262e-17
 0.00000 0.414214 0.00000
 -1.00000 0.707107 0.707107
 -1.00000 0.500000 0.500000
@@ -439,7 +439,7 @@ POINTS 270 double
 -1.00000 0.00000 0.00000
 -1.00000 -0.414214 0.00000
 -0.500000 0.414214 0.00000
--0.500000 0.00000 -6.93889e-18
+-0.500000 0.00000 0.00000
 -0.500000 -0.414214 0.00000
 0.00000 0.414214 0.00000
 0.00000 0.00000 0.00000
@@ -463,13 +463,13 @@ POINTS 270 double
 0.00000 -1.00000 0.00000
 0.00000 -0.707107 0.707107
 -1.00000 -0.500000 -0.500000
--1.00000 -0.707107 -1.96262e-17
+-1.00000 -0.707107 0.00000
 -1.00000 -0.500000 0.500000
 -0.500000 -0.500000 -0.500000
 -0.500000 -0.707107 0.00000
 -0.500000 -0.500000 0.500000
 0.00000 -0.500000 -0.500000
-0.00000 -0.707107 -1.96262e-17
+0.00000 -0.707107 0.00000
 0.00000 -0.500000 0.500000
 -1.00000 -0.292893 -0.292893
 -1.00000 -0.414214 0.00000
@@ -490,13 +490,13 @@ POINTS 270 double
 0.00000 0.500000 0.500000
 0.00000 0.292893 0.292893
 -1.00000 0.00000 1.00000
--1.00000 0.00000 0.707107
+-1.00000 1.96262e-17 0.707107
 -1.00000 0.00000 0.414214
 -0.500000 0.00000 1.00000
 -0.500000 9.81308e-18 0.707107
 -0.500000 0.00000 0.414214
 0.00000 0.00000 1.00000
-0.00000 0.00000 0.707107
+0.00000 1.96262e-17 0.707107
 0.00000 0.00000 0.414214
 -1.00000 -0.707107 0.707107
 -1.00000 -0.500000 0.500000
@@ -517,13 +517,13 @@ POINTS 270 double
 1.00000 0.00000 -1.00000
 1.00000 -0.707107 -0.707107
 0.00000 0.500000 -0.500000
-0.00000 1.96262e-17 -0.707107
+0.00000 0.00000 -0.707107
 0.00000 -0.500000 -0.500000
 0.500000 0.500000 -0.500000
 0.500000 0.00000 -0.707107
 0.500000 -0.500000 -0.500000
 1.00000 0.500000 -0.500000
-1.00000 1.96262e-17 -0.707107
+1.00000 0.00000 -0.707107
 1.00000 -0.500000 -0.500000
 0.00000 0.292893 -0.292893
 0.00000 0.00000 -0.414214
@@ -544,13 +544,13 @@ POINTS 270 double
 1.00000 0.500000 -0.500000
 1.00000 0.292893 -0.292893
 0.00000 1.00000 0.00000
-0.00000 0.707107 0.00000
+0.00000 0.707107 -1.96262e-17
 0.00000 0.414214 0.00000
 0.500000 1.00000 0.00000
 0.500000 0.707107 -9.81308e-18
 0.500000 0.414214 0.00000
 1.00000 1.00000 0.00000
-1.00000 0.707107 0.00000
+1.00000 0.707107 -1.96262e-17
 1.00000 0.414214 0.00000
 0.00000 0.707107 0.707107
 0.00000 0.500000 0.500000
@@ -574,7 +574,7 @@ POINTS 270 double
 0.00000 0.00000 0.00000
 0.00000 -0.414214 0.00000
 0.500000 0.414214 0.00000
-0.500000 0.00000 -6.93889e-18
+0.500000 0.00000 0.00000
 0.500000 -0.414214 0.00000
 1.00000 0.414214 0.00000
 1.00000 0.00000 0.00000
@@ -598,13 +598,13 @@ POINTS 270 double
 1.00000 -1.00000 0.00000
 1.00000 -0.707107 0.707107
 0.00000 -0.500000 -0.500000
-0.00000 -0.707107 -1.96262e-17
+0.00000 -0.707107 0.00000
 0.00000 -0.500000 0.500000
 0.500000 -0.500000 -0.500000
 0.500000 -0.707107 0.00000
 0.500000 -0.500000 0.500000
 1.00000 -0.500000 -0.500000
-1.00000 -0.707107 -1.96262e-17
+1.00000 -0.707107 0.00000
 1.00000 -0.500000 0.500000
 0.00000 -0.292893 -0.292893
 0.00000 -0.414214 0.00000
@@ -625,13 +625,13 @@ POINTS 270 double
 1.00000 0.500000 0.500000
 1.00000 0.292893 0.292893
 0.00000 0.00000 1.00000
-0.00000 0.00000 0.707107
+0.00000 1.96262e-17 0.707107
 0.00000 0.00000 0.414214
 0.500000 0.00000 1.00000
 0.500000 9.81308e-18 0.707107
 0.500000 0.00000 0.414214
 1.00000 0.00000 1.00000
-1.00000 0.00000 0.707107
+1.00000 1.96262e-17 0.707107
 1.00000 0.00000 0.414214
 0.00000 -0.707107 0.707107
 0.00000 -0.500000 0.500000
@@ -748,13 +748,13 @@ POINTS 270 double
 0.00000 0.00000 -0.964312
 0.00000 -0.707107 -0.707107
 -1.00000 0.500000 -0.500000
--1.00000 4.16334e-17 -0.681872
+-1.00000 1.38778e-17 -0.681872
 -1.00000 -0.500000 -0.500000
 -0.500000 0.500000 -0.500000
--0.500000 1.38778e-17 -0.681872
+-0.500000 2.77556e-17 -0.681872
 -0.500000 -0.500000 -0.500000
 0.00000 0.500000 -0.500000
-0.00000 4.16334e-17 -0.681872
+0.00000 1.38778e-17 -0.681872
 0.00000 -0.500000 -0.500000
 -1.00000 0.292893 -0.292893
 -1.00000 0.00000 -0.399431
@@ -775,13 +775,13 @@ POINTS 270 double
 0.00000 0.500000 -0.500000
 0.00000 0.292893 -0.292893
 -1.00000 0.964312 0.00000
--1.00000 0.681872 -1.38778e-17
+-1.00000 0.681872 -2.77556e-17
 -1.00000 0.399431 0.00000
 -0.500000 0.964312 0.00000
 -0.500000 0.681872 -1.04083e-16
 -0.500000 0.399431 0.00000
 0.00000 0.964312 0.00000
-0.00000 0.681872 -1.38778e-17
+0.00000 0.681872 -2.77556e-17
 0.00000 0.399431 0.00000
 -1.00000 0.707107 0.707107
 -1.00000 0.500000 0.500000
@@ -796,25 +796,25 @@ POINTS 270 double
 -1.00000 0.00000 -0.399431
 -1.00000 -0.292893 -0.292893
 -0.500000 0.292893 -0.292893
--0.500000 0.00000 -0.399431
+-0.500000 -2.08167e-17 -0.406969
 -0.500000 -0.292893 -0.292893
 0.00000 0.292893 -0.292893
 0.00000 0.00000 -0.399431
 0.00000 -0.292893 -0.292893
 -1.00000 0.399431 0.00000
--1.00000 0.00000 0.00000
+-1.00000 0.00000 1.38778e-17
 -1.00000 -0.399431 0.00000
--0.500000 0.399431 0.00000
--0.500000 6.93889e-18 1.38778e-17
--0.500000 -0.399431 0.00000
+-0.500000 0.406969 2.77556e-17
+-0.500000 -1.38778e-17 2.77556e-17
+-0.500000 -0.406969 2.77556e-17
 0.00000 0.399431 0.00000
-0.00000 0.00000 0.00000
+0.00000 0.00000 1.38778e-17
 0.00000 -0.399431 0.00000
 -1.00000 0.292893 0.292893
 -1.00000 0.00000 0.399431
 -1.00000 -0.292893 0.292893
 -0.500000 0.292893 0.292893
--0.500000 0.00000 0.399431
+-0.500000 -2.08167e-17 0.406969
 -0.500000 -0.292893 0.292893
 0.00000 0.292893 0.292893
 0.00000 0.00000 0.399431
@@ -829,13 +829,13 @@ POINTS 270 double
 0.00000 -0.964312 0.00000
 0.00000 -0.707107 0.707107
 -1.00000 -0.500000 -0.500000
--1.00000 -0.681872 -4.16334e-17
+-1.00000 -0.681872 -1.38778e-17
 -1.00000 -0.500000 0.500000
 -0.500000 -0.500000 -0.500000
--0.500000 -0.681872 -1.38778e-17
+-0.500000 -0.681872 -2.77556e-17
 -0.500000 -0.500000 0.500000
 0.00000 -0.500000 -0.500000
-0.00000 -0.681872 -4.16334e-17
+0.00000 -0.681872 -1.38778e-17
 0.00000 -0.500000 0.500000
 -1.00000 -0.292893 -0.292893
 -1.00000 -0.399431 0.00000
@@ -856,13 +856,13 @@ POINTS 270 double
 0.00000 0.500000 0.500000
 0.00000 0.292893 0.292893
 -1.00000 0.00000 0.964312
--1.00000 1.38778e-17 0.681872
+-1.00000 2.77556e-17 0.681872
 -1.00000 0.00000 0.399431
 -0.500000 0.00000 0.964312
 -0.500000 1.04083e-16 0.681872
 -0.500000 0.00000 0.399431
 0.00000 0.00000 0.964312
-0.00000 1.38778e-17 0.681872
+0.00000 2.77556e-17 0.681872
 0.00000 0.00000 0.399431
 -1.00000 -0.707107 0.707107
 -1.00000 -0.500000 0.500000
@@ -883,13 +883,13 @@ POINTS 270 double
 1.00000 0.00000 -0.964312
 1.00000 -0.707107 -0.707107
 0.00000 0.500000 -0.500000
-0.00000 4.16334e-17 -0.681872
+0.00000 1.38778e-17 -0.681872
 0.00000 -0.500000 -0.500000
 0.500000 0.500000 -0.500000
-0.500000 1.38778e-17 -0.681872
+0.500000 2.77556e-17 -0.681872
 0.500000 -0.500000 -0.500000
 1.00000 0.500000 -0.500000
-1.00000 4.16334e-17 -0.681872
+1.00000 1.38778e-17 -0.681872
 1.00000 -0.500000 -0.500000
 0.00000 0.292893 -0.292893
 0.00000 0.00000 -0.399431
@@ -910,13 +910,13 @@ POINTS 270 double
 1.00000 0.500000 -0.500000
 1.00000 0.292893 -0.292893
 0.00000 0.964312 0.00000
-0.00000 0.681872 -1.38778e-17
+0.00000 0.681872 -2.77556e-17
 0.00000 0.399431 0.00000
 0.500000 0.964312 0.00000
 0.500000 0.681872 -1.04083e-16
 0.500000 0.399431 0.00000
 1.00000 0.964312 0.00000
-1.00000 0.681872 -1.38778e-17
+1.00000 0.681872 -2.77556e-17
 1.00000 0.399431 0.00000
 0.00000 0.707107 0.707107
 0.00000 0.500000 0.500000
@@ -931,25 +931,25 @@ POINTS 270 double
 0.00000 0.00000 -0.399431
 0.00000 -0.292893 -0.292893
 0.500000 0.292893 -0.292893
-0.500000 0.00000 -0.399431
+0.500000 -2.08167e-17 -0.406969
 0.500000 -0.292893 -0.292893
 1.00000 0.292893 -0.292893
 1.00000 0.00000 -0.399431
 1.00000 -0.292893 -0.292893
 0.00000 0.399431 0.00000
-0.00000 0.00000 0.00000
+0.00000 0.00000 1.38778e-17
 0.00000 -0.399431 0.00000
-0.500000 0.399431 0.00000
-0.500000 6.93889e-18 1.38778e-17
-0.500000 -0.399431 0.00000
+0.500000 0.406969 2.77556e-17
+0.500000 -1.38778e-17 2.77556e-17
+0.500000 -0.406969 2.77556e-17
 1.00000 0.399431 0.00000
-1.00000 0.00000 0.00000
+1.00000 0.00000 1.38778e-17
 1.00000 -0.399431 0.00000
 0.00000 0.292893 0.292893
 0.00000 0.00000 0.399431
 0.00000 -0.292893 0.292893
 0.500000 0.292893 0.292893
-0.500000 0.00000 0.399431
+0.500000 -2.08167e-17 0.406969
 0.500000 -0.292893 0.292893
 1.00000 0.292893 0.292893
 1.00000 0.00000 0.399431
@@ -964,13 +964,13 @@ POINTS 270 double
 1.00000 -0.964312 0.00000
 1.00000 -0.707107 0.707107
 0.00000 -0.500000 -0.500000
-0.00000 -0.681872 -4.16334e-17
+0.00000 -0.681872 -1.38778e-17
 0.00000 -0.500000 0.500000
 0.500000 -0.500000 -0.500000
-0.500000 -0.681872 -1.38778e-17
+0.500000 -0.681872 -2.77556e-17
 0.500000 -0.500000 0.500000
 1.00000 -0.500000 -0.500000
-1.00000 -0.681872 -4.16334e-17
+1.00000 -0.681872 -1.38778e-17
 1.00000 -0.500000 0.500000
 0.00000 -0.292893 -0.292893
 0.00000 -0.399431 0.00000
@@ -991,13 +991,13 @@ POINTS 270 double
 1.00000 0.500000 0.500000
 1.00000 0.292893 0.292893
 0.00000 0.00000 0.964312
-0.00000 1.38778e-17 0.681872
+0.00000 2.77556e-17 0.681872
 0.00000 0.00000 0.399431
 0.500000 0.00000 0.964312
 0.500000 1.04083e-16 0.681872
 0.500000 0.00000 0.399431
 1.00000 0.00000 0.964312
-1.00000 1.38778e-17 0.681872
+1.00000 2.77556e-17 0.681872
 1.00000 0.00000 0.399431
 0.00000 -0.707107 0.707107
 0.00000 -0.500000 0.500000
@@ -1114,13 +1114,13 @@ POINTS 270 double
 0.00000 0.00000 -1.00000
 0.00000 -0.707107 -0.707107
 -1.00000 0.500000 -0.500000
--1.00000 1.96262e-17 -0.707107
+-1.00000 0.00000 -0.707107
 -1.00000 -0.500000 -0.500000
 -0.500000 0.500000 -0.500000
 -0.500000 0.00000 -0.707107
 -0.500000 -0.500000 -0.500000
 0.00000 0.500000 -0.500000
-0.00000 1.96262e-17 -0.707107
+0.00000 0.00000 -0.707107
 0.00000 -0.500000 -0.500000
 -1.00000 0.292893 -0.292893
 -1.00000 0.00000 -0.414214
@@ -1141,13 +1141,13 @@ POINTS 270 double
 0.00000 0.500000 -0.500000
 0.00000 0.292893 -0.292893
 -1.00000 1.00000 0.00000
--1.00000 0.707107 0.00000
+-1.00000 0.707107 -1.96262e-17
 -1.00000 0.414214 0.00000
 -0.500000 1.00000 0.00000
 -0.500000 0.707107 -9.81308e-18
 -0.500000 0.414214 0.00000
 0.00000 1.00000 0.00000
-0.00000 0.707107 0.00000
+0.00000 0.707107 -1.96262e-17
 0.00000 0.414214 0.00000
 -1.00000 0.707107 0.707107
 -1.00000 0.500000 0.500000
@@ -1162,25 +1162,25 @@ POINTS 270 double
 -1.00000 0.00000 -0.414214
 -1.00000 -0.292893 -0.292893
 -0.500000 0.292893 -0.292893
--0.500000 0.00000 -0.414214
+-0.500000 -1.10088e-16 -0.414214
 -0.500000 -0.292893 -0.292893
 0.00000 0.292893 -0.292893
 0.00000 0.00000 -0.414214
 0.00000 -0.292893 -0.292893
 -1.00000 0.414214 0.00000
--1.00000 0.00000 0.00000
+-1.00000 -9.71445e-17 9.19403e-17
 -1.00000 -0.414214 0.00000
--0.500000 0.414214 0.00000
--0.500000 -7.04731e-17 6.11490e-17
--0.500000 -0.414214 0.00000
+-0.500000 0.414214 9.95024e-17
+-0.500000 -1.18829e-16 9.45424e-17
+-0.500000 -0.414214 9.95024e-17
 0.00000 0.414214 0.00000
-0.00000 0.00000 0.00000
+0.00000 -9.71445e-17 9.19403e-17
 0.00000 -0.414214 0.00000
 -1.00000 0.292893 0.292893
 -1.00000 0.00000 0.414214
 -1.00000 -0.292893 0.292893
 -0.500000 0.292893 0.292893
--0.500000 0.00000 0.414214
+-0.500000 -1.10088e-16 0.414214
 -0.500000 -0.292893 0.292893
 0.00000 0.292893 0.292893
 0.00000 0.00000 0.414214
@@ -1195,13 +1195,13 @@ POINTS 270 double
 0.00000 -1.00000 0.00000
 0.00000 -0.707107 0.707107
 -1.00000 -0.500000 -0.500000
--1.00000 -0.707107 -1.96262e-17
+-1.00000 -0.707107 0.00000
 -1.00000 -0.500000 0.500000
 -0.500000 -0.500000 -0.500000
 -0.500000 -0.707107 0.00000
 -0.500000 -0.500000 0.500000
 0.00000 -0.500000 -0.500000
-0.00000 -0.707107 -1.96262e-17
+0.00000 -0.707107 0.00000
 0.00000 -0.500000 0.500000
 -1.00000 -0.292893 -0.292893
 -1.00000 -0.414214 0.00000
@@ -1222,13 +1222,13 @@ POINTS 270 double
 0.00000 0.500000 0.500000
 0.00000 0.292893 0.292893
 -1.00000 0.00000 1.00000
--1.00000 0.00000 0.707107
+-1.00000 1.96262e-17 0.707107
 -1.00000 0.00000 0.414214
 -0.500000 0.00000 1.00000
 -0.500000 9.81308e-18 0.707107
 -0.500000 0.00000 0.414214
 0.00000 0.00000 1.00000
-0.00000 0.00000 0.707107
+0.00000 1.96262e-17 0.707107
 0.00000 0.00000 0.414214
 -1.00000 -0.707107 0.707107
 -1.00000 -0.500000 0.500000
@@ -1249,13 +1249,13 @@ POINTS 270 double
 1.00000 0.00000 -1.00000
 1.00000 -0.707107 -0.707107
 0.00000 0.500000 -0.500000
-0.00000 1.96262e-17 -0.707107
+0.00000 0.00000 -0.707107
 0.00000 -0.500000 -0.500000
 0.500000 0.500000 -0.500000
 0.500000 0.00000 -0.707107
 0.500000 -0.500000 -0.500000
 1.00000 0.500000 -0.500000
-1.00000 1.96262e-17 -0.707107
+1.00000 0.00000 -0.707107
 1.00000 -0.500000 -0.500000
 0.00000 0.292893 -0.292893
 0.00000 0.00000 -0.414214
@@ -1276,13 +1276,13 @@ POINTS 270 double
 1.00000 0.500000 -0.500000
 1.00000 0.292893 -0.292893
 0.00000 1.00000 0.00000
-0.00000 0.707107 0.00000
+0.00000 0.707107 -1.96262e-17
 0.00000 0.414214 0.00000
 0.500000 1.00000 0.00000
 0.500000 0.707107 -9.81308e-18
 0.500000 0.414214 0.00000
 1.00000 1.00000 0.00000
-1.00000 0.707107 0.00000
+1.00000 0.707107 -1.96262e-17
 1.00000 0.414214 0.00000
 0.00000 0.707107 0.707107
 0.00000 0.500000 0.500000
@@ -1297,25 +1297,25 @@ POINTS 270 double
 0.00000 0.00000 -0.414214
 0.00000 -0.292893 -0.292893
 0.500000 0.292893 -0.292893
-0.500000 0.00000 -0.414214
+0.500000 -1.10088e-16 -0.414214
 0.500000 -0.292893 -0.292893
 1.00000 0.292893 -0.292893
 1.00000 0.00000 -0.414214
 1.00000 -0.292893 -0.292893
 0.00000 0.414214 0.00000
-0.00000 0.00000 0.00000
+0.00000 -9.71445e-17 9.19403e-17
 0.00000 -0.414214 0.00000
-0.500000 0.414214 0.00000
-0.500000 -7.04731e-17 6.11490e-17
-0.500000 -0.414214 0.00000
+0.500000 0.414214 9.95024e-17
+0.500000 -1.18829e-16 9.45424e-17
+0.500000 -0.414214 9.95024e-17
 1.00000 0.414214 0.00000
-1.00000 0.00000 0.00000
+1.00000 -9.71445e-17 9.19403e-17
 1.00000 -0.414214 0.00000
 0.00000 0.292893 0.292893
 0.00000 0.00000 0.414214
 0.00000 -0.292893 0.292893
 0.500000 0.292893 0.292893
-0.500000 0.00000 0.414214
+0.500000 -1.10088e-16 0.414214
 0.500000 -0.292893 0.292893
 1.00000 0.292893 0.292893
 1.00000 0.00000 0.414214
@@ -1330,13 +1330,13 @@ POINTS 270 double
 1.00000 -1.00000 0.00000
 1.00000 -0.707107 0.707107
 0.00000 -0.500000 -0.500000
-0.00000 -0.707107 -1.96262e-17
+0.00000 -0.707107 0.00000
 0.00000 -0.500000 0.500000
 0.500000 -0.500000 -0.500000
 0.500000 -0.707107 0.00000
 0.500000 -0.500000 0.500000
 1.00000 -0.500000 -0.500000
-1.00000 -0.707107 -1.96262e-17
+1.00000 -0.707107 0.00000
 1.00000 -0.500000 0.500000
 0.00000 -0.292893 -0.292893
 0.00000 -0.414214 0.00000
@@ -1357,13 +1357,13 @@ POINTS 270 double
 1.00000 0.500000 0.500000
 1.00000 0.292893 0.292893
 0.00000 0.00000 1.00000
-0.00000 0.00000 0.707107
+0.00000 1.96262e-17 0.707107
 0.00000 0.00000 0.414214
 0.500000 0.00000 1.00000
 0.500000 9.81308e-18 0.707107
 0.500000 0.00000 0.414214
 1.00000 0.00000 1.00000
-1.00000 0.00000 0.707107
+1.00000 1.96262e-17 0.707107
 1.00000 0.00000 0.414214
 0.00000 -0.707107 0.707107
 0.00000 -0.500000 0.500000
index f81c33011b06a28b5064f8f97b6ec63b566711ac..655493e2c7e6656b526079efd07547d5df978007 100644 (file)
@@ -1,3 +1,3 @@
 
 DEAL::Volume 2D mapping degree 6: 0.857305 error: 5.06446e-06
-DEAL::Volume 3D mapping degree 6: 0.857305 error: 5.06446e-06
+DEAL::Volume 3D mapping degree 6: 0.857302 error: 1.46779e-06
index 572b9a7caa13429cafae56a036a2f9f32e0885c3..63115b7652b63326ead6e1e47e588562cf0ec2f9 100644 (file)
@@ -4,10 +4,10 @@ DEAL::Volume 2D mapping degree 2: 0.156152 error: 3.91474e-05
 DEAL::Volume 2D mapping degree 3: 0.156147 error: 6.04868e-06
 DEAL::Volume 2D mapping degree 4: 0.156146 error: 5.88206e-08
 DEAL::Volume 2D mapping degree 5: 0.156146 error: 8.80543e-09
-DEAL::Volume 2D mapping degree 6: 0.156146 error: 8.99033e-11
+DEAL::Volume 2D mapping degree 6: 0.156146 error: 8.99035e-11
 DEAL::Volume 3D mapping degree 1: 0.0643409 error: 0.00501399
 DEAL::Volume 3D mapping degree 2: 0.0640224 error: 3.91474e-05
-DEAL::Volume 3D mapping degree 3: 0.0640203 error: 6.04868e-06
-DEAL::Volume 3D mapping degree 4: 0.0640199 error: 5.88206e-08
-DEAL::Volume 3D mapping degree 5: 0.0640199 error: 8.80543e-09
-DEAL::Volume 3D mapping degree 6: 0.0640199 error: 8.99041e-11
+DEAL::Volume 3D mapping degree 3: 0.0640197 error: -3.27847e-06
+DEAL::Volume 3D mapping degree 4: 0.0640199 error: -1.41198e-08
+DEAL::Volume 3D mapping degree 5: 0.0640199 error: 5.05984e-10
+DEAL::Volume 3D mapping degree 6: 0.0640199 error: 8.74883e-11
diff --git a/tests/mappings/mapping_q_mixed_manifolds_03.cc b/tests/mappings/mapping_q_mixed_manifolds_03.cc
deleted file mode 100644 (file)
index 7bd4ad9..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// ---------------------------------------------------------------------
-//
-// Copyright (C) 2017 by the deal.II authors
-//
-// This file is part of the deal.II library.
-//
-// The deal.II library is free software; you can use it, redistribute
-// it, and/or modify it under the terms of the GNU Lesser General
-// Public License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-// The full text of the license can be found in the file LICENSE at
-// the top level of the deal.II distribution.
-//
-// ---------------------------------------------------------------------
-
-
-// Prints the mapped points (quadrature points) of the mesh in
-// mapping_q_mixed_manifolds_01, once using smoothing and once without.
-
-#include "../tests.h"
-#include <deal.II/base/quadrature_lib.h>
-#include <deal.II/base/logstream.h>
-#include <deal.II/lac/vector.h>
-#include <deal.II/grid/tria.h>
-#include <deal.II/grid/tria_iterator.h>
-#include <deal.II/dofs/dof_accessor.h>
-#include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/grid_tools.h>
-#include <deal.II/fe/mapping_q_generic.h>
-#include <deal.II/fe/fe_values.h>
-#include <deal.II/fe/fe_nothing.h>
-#include <deal.II/grid/manifold_lib.h>
-#include <vector>
-#include <fstream>
-#include <iomanip>
-#include <string>
-#include <sstream>
-
-
-
-template <int dim>
-void test()
-{
-  Point<dim> direction;
-  direction[dim-1] = 1.;
-
-  std_cxx11::shared_ptr<Manifold<dim> > cylinder_manifold
-  (dim == 2 ? static_cast<Manifold<dim>*>(new SphericalManifold<dim>(Point<dim>())) :
-   static_cast<Manifold<dim>*>(new CylindricalManifold<dim>(direction, Point<dim>())));
-
-  // create cube and shift it to position 0.7
-  Triangulation<dim> tria;
-  GridGenerator::hyper_cube(tria, -0.5, 0.5);
-  Tensor<1,dim> shift;
-  shift[0] = 1.;
-  GridTools::shift(shift, tria);
-  tria.begin()->face(0)->set_all_manifold_ids(1);
-  tria.set_manifold(1, *cylinder_manifold);
-
-  FE_Nothing<dim> fe;
-  for (unsigned int degree = 6; degree < 7; ++degree)
-    {
-      QIterated<dim> quad(QTrapez<1>(), degree);
-      {
-        MappingQGeneric<dim> mapping(degree, true);
-        FEValues<dim> fe_values(mapping, fe, quad, update_quadrature_points);
-        fe_values.reinit(tria.begin());
-        deallog << "Points with smoothing in " << dim << "D" << std::endl;
-        for (unsigned int q=0; q<quad.size(); ++q)
-          deallog << fe_values.quadrature_point(q) << std::endl;
-      }
-      {
-        MappingQGeneric<dim> mapping(degree, false);
-        FEValues<dim> fe_values(mapping, fe, quad, update_quadrature_points);
-        fe_values.reinit(tria.begin());
-        deallog << "Points without smoothing in " << dim << "D" << std::endl;
-        for (unsigned int q=0; q<quad.size(); ++q)
-          deallog << fe_values.quadrature_point(q) << std::endl;
-      }
-    }
-}
-
-
-int main()
-{
-  std::ofstream logfile ("output");
-  deallog.attach(logfile);
-  deallog.threshold_double(1.e-14);
-
-  test<2>();
-  test<3>();
-}
diff --git a/tests/mappings/mapping_q_mixed_manifolds_03.output b/tests/mappings/mapping_q_mixed_manifolds_03.output
deleted file mode 100644 (file)
index e41e8cf..0000000
+++ /dev/null
@@ -1,789 +0,0 @@
-
-DEAL::Points with smoothing in 2D
-DEAL::0.500000 -0.500000
-DEAL::0.666667 -0.500000
-DEAL::0.833333 -0.500000
-DEAL::1.00000 -0.500000
-DEAL::1.16667 -0.500000
-DEAL::1.33333 -0.500000
-DEAL::1.50000 -0.500000
-DEAL::0.587827 -0.393172
-DEAL::0.722669 -0.353932
-DEAL::0.866961 -0.340608
-DEAL::1.01955 -0.335844
-DEAL::1.17733 -0.334173
-DEAL::1.33798 -0.333653
-DEAL::1.50000 -0.333333
-DEAL::0.671122 -0.222531
-DEAL::0.767514 -0.186618
-DEAL::0.892464 -0.173730
-DEAL::1.03402 -0.169134
-DEAL::1.18513 -0.167502
-DEAL::1.34144 -0.166957
-DEAL::1.50000 -0.166667
-DEAL::0.707107 0.00000
-DEAL::0.785071 -2.55335e-17
-DEAL::0.902057 -3.40697e-17
-DEAL::1.03936 -2.60209e-17
-DEAL::1.18799 -2.79126e-17
-DEAL::1.34272 -3.20115e-17
-DEAL::1.50000 0.00000
-DEAL::0.671122 0.222531
-DEAL::0.767514 0.186618
-DEAL::0.892464 0.173730
-DEAL::1.03402 0.169134
-DEAL::1.18513 0.167502
-DEAL::1.34144 0.166957
-DEAL::1.50000 0.166667
-DEAL::0.587827 0.393172
-DEAL::0.722669 0.353932
-DEAL::0.866961 0.340608
-DEAL::1.01955 0.335844
-DEAL::1.17733 0.334173
-DEAL::1.33798 0.333653
-DEAL::1.50000 0.333333
-DEAL::0.500000 0.500000
-DEAL::0.666667 0.500000
-DEAL::0.833333 0.500000
-DEAL::1.00000 0.500000
-DEAL::1.16667 0.500000
-DEAL::1.33333 0.500000
-DEAL::1.50000 0.500000
-DEAL::Points without smoothing in 2D
-DEAL::0.500000 -0.500000
-DEAL::0.666667 -0.500000
-DEAL::0.833333 -0.500000
-DEAL::1.00000 -0.500000
-DEAL::1.16667 -0.500000
-DEAL::1.33333 -0.500000
-DEAL::1.50000 -0.500000
-DEAL::0.587827 -0.393172
-DEAL::0.655598 -0.325792
-DEAL::0.838393 -0.336781
-DEAL::1.00000 -0.333333
-DEAL::1.16414 -0.331610
-DEAL::1.33555 -0.334842
-DEAL::1.50000 -0.333333
-DEAL::0.671122 -0.222531
-DEAL::0.645100 -0.159626
-DEAL::0.843192 -0.169885
-DEAL::1.00000 -0.166667
-DEAL::1.16174 -0.165057
-DEAL::1.33765 -0.168075
-DEAL::1.50000 -0.166667
-DEAL::0.707107 0.00000
-DEAL::0.640565 8.59433e-18
-DEAL::0.845265 -2.58644e-18
-DEAL::1.00000 0.00000
-DEAL::1.16070 1.10453e-18
-DEAL::1.33855 -9.39057e-19
-DEAL::1.50000 0.00000
-DEAL::0.671122 0.222531
-DEAL::0.645100 0.159626
-DEAL::0.843192 0.169885
-DEAL::1.00000 0.166667
-DEAL::1.16174 0.165057
-DEAL::1.33765 0.168075
-DEAL::1.50000 0.166667
-DEAL::0.587827 0.393172
-DEAL::0.655598 0.325792
-DEAL::0.838393 0.336781
-DEAL::1.00000 0.333333
-DEAL::1.16414 0.331610
-DEAL::1.33555 0.334842
-DEAL::1.50000 0.333333
-DEAL::0.500000 0.500000
-DEAL::0.666667 0.500000
-DEAL::0.833333 0.500000
-DEAL::1.00000 0.500000
-DEAL::1.16667 0.500000
-DEAL::1.33333 0.500000
-DEAL::1.50000 0.500000
-DEAL::Points with smoothing in 3D
-DEAL::0.500000 -0.500000 -0.500000
-DEAL::0.666667 -0.500000 -0.500000
-DEAL::0.833333 -0.500000 -0.500000
-DEAL::1.00000 -0.500000 -0.500000
-DEAL::1.16667 -0.500000 -0.500000
-DEAL::1.33333 -0.500000 -0.500000
-DEAL::1.50000 -0.500000 -0.500000
-DEAL::0.587827 -0.393172 -0.500000
-DEAL::0.722669 -0.353932 -0.500000
-DEAL::0.866961 -0.340608 -0.500000
-DEAL::1.01955 -0.335844 -0.500000
-DEAL::1.17733 -0.334173 -0.500000
-DEAL::1.33798 -0.333653 -0.500000
-DEAL::1.50000 -0.333333 -0.500000
-DEAL::0.671122 -0.222531 -0.500000
-DEAL::0.767514 -0.186618 -0.500000
-DEAL::0.892464 -0.173730 -0.500000
-DEAL::1.03402 -0.169134 -0.500000
-DEAL::1.18513 -0.167502 -0.500000
-DEAL::1.34144 -0.166957 -0.500000
-DEAL::1.50000 -0.166667 -0.500000
-DEAL::0.707107 0.00000 -0.500000
-DEAL::0.785071 -2.55335e-17 -0.500000
-DEAL::0.902057 -3.40697e-17 -0.500000
-DEAL::1.03936 -2.60209e-17 -0.500000
-DEAL::1.18799 -2.79126e-17 -0.500000
-DEAL::1.34272 -3.20115e-17 -0.500000
-DEAL::1.50000 0.00000 -0.500000
-DEAL::0.671122 0.222531 -0.500000
-DEAL::0.767514 0.186618 -0.500000
-DEAL::0.892464 0.173730 -0.500000
-DEAL::1.03402 0.169134 -0.500000
-DEAL::1.18513 0.167502 -0.500000
-DEAL::1.34144 0.166957 -0.500000
-DEAL::1.50000 0.166667 -0.500000
-DEAL::0.587827 0.393172 -0.500000
-DEAL::0.722669 0.353932 -0.500000
-DEAL::0.866961 0.340608 -0.500000
-DEAL::1.01955 0.335844 -0.500000
-DEAL::1.17733 0.334173 -0.500000
-DEAL::1.33798 0.333653 -0.500000
-DEAL::1.50000 0.333333 -0.500000
-DEAL::0.500000 0.500000 -0.500000
-DEAL::0.666667 0.500000 -0.500000
-DEAL::0.833333 0.500000 -0.500000
-DEAL::1.00000 0.500000 -0.500000
-DEAL::1.16667 0.500000 -0.500000
-DEAL::1.33333 0.500000 -0.500000
-DEAL::1.50000 0.500000 -0.500000
-DEAL::0.500000 -0.500000 -0.333333
-DEAL::0.666667 -0.500000 -0.333333
-DEAL::0.833333 -0.500000 -0.333333
-DEAL::1.00000 -0.500000 -0.333333
-DEAL::1.16667 -0.500000 -0.333333
-DEAL::1.33333 -0.500000 -0.333333
-DEAL::1.50000 -0.500000 -0.333333
-DEAL::0.587827 -0.393172 -0.333333
-DEAL::0.722669 -0.353932 -0.333333
-DEAL::0.866961 -0.340608 -0.333333
-DEAL::1.01955 -0.335844 -0.333333
-DEAL::1.17733 -0.334173 -0.333333
-DEAL::1.33798 -0.333653 -0.333333
-DEAL::1.50000 -0.333333 -0.333333
-DEAL::0.671122 -0.222531 -0.333333
-DEAL::0.767514 -0.186618 -0.333333
-DEAL::0.892464 -0.173730 -0.333333
-DEAL::1.03402 -0.169134 -0.333333
-DEAL::1.18513 -0.167502 -0.333333
-DEAL::1.34144 -0.166957 -0.333333
-DEAL::1.50000 -0.166667 -0.333333
-DEAL::0.707107 0.00000 -0.333333
-DEAL::0.785071 -2.39549e-17 -0.333333
-DEAL::0.902057 -3.82823e-17 -0.333333
-DEAL::1.03936 -3.78350e-17 -0.333333
-DEAL::1.18799 -3.77706e-17 -0.333333
-DEAL::1.34272 -3.47284e-17 -0.333333
-DEAL::1.50000 0.00000 -0.333333
-DEAL::0.671122 0.222531 -0.333333
-DEAL::0.767514 0.186618 -0.333333
-DEAL::0.892464 0.173730 -0.333333
-DEAL::1.03402 0.169134 -0.333333
-DEAL::1.18513 0.167502 -0.333333
-DEAL::1.34144 0.166957 -0.333333
-DEAL::1.50000 0.166667 -0.333333
-DEAL::0.587827 0.393172 -0.333333
-DEAL::0.722669 0.353932 -0.333333
-DEAL::0.866961 0.340608 -0.333333
-DEAL::1.01955 0.335844 -0.333333
-DEAL::1.17733 0.334173 -0.333333
-DEAL::1.33798 0.333653 -0.333333
-DEAL::1.50000 0.333333 -0.333333
-DEAL::0.500000 0.500000 -0.333333
-DEAL::0.666667 0.500000 -0.333333
-DEAL::0.833333 0.500000 -0.333333
-DEAL::1.00000 0.500000 -0.333333
-DEAL::1.16667 0.500000 -0.333333
-DEAL::1.33333 0.500000 -0.333333
-DEAL::1.50000 0.500000 -0.333333
-DEAL::0.500000 -0.500000 -0.166667
-DEAL::0.666667 -0.500000 -0.166667
-DEAL::0.833333 -0.500000 -0.166667
-DEAL::1.00000 -0.500000 -0.166667
-DEAL::1.16667 -0.500000 -0.166667
-DEAL::1.33333 -0.500000 -0.166667
-DEAL::1.50000 -0.500000 -0.166667
-DEAL::0.587827 -0.393172 -0.166667
-DEAL::0.722669 -0.353932 -0.166667
-DEAL::0.866961 -0.340608 -0.166667
-DEAL::1.01955 -0.335844 -0.166667
-DEAL::1.17733 -0.334173 -0.166667
-DEAL::1.33798 -0.333653 -0.166667
-DEAL::1.50000 -0.333333 -0.166667
-DEAL::0.671122 -0.222531 -0.166667
-DEAL::0.767514 -0.186618 -0.166667
-DEAL::0.892464 -0.173730 -0.166667
-DEAL::1.03402 -0.169134 -0.166667
-DEAL::1.18513 -0.167502 -0.166667
-DEAL::1.34144 -0.166957 -0.166667
-DEAL::1.50000 -0.166667 -0.166667
-DEAL::0.707107 0.00000 -0.166667
-DEAL::0.785071 -1.29394e-17 -0.166667
-DEAL::0.902057 -3.54716e-17 -0.166667
-DEAL::1.03936 -4.29928e-17 -0.166667
-DEAL::1.18799 -3.82115e-17 -0.166667
-DEAL::1.34272 -3.38949e-17 -0.166667
-DEAL::1.50000 0.00000 -0.166667
-DEAL::0.671122 0.222531 -0.166667
-DEAL::0.767514 0.186618 -0.166667
-DEAL::0.892464 0.173730 -0.166667
-DEAL::1.03402 0.169134 -0.166667
-DEAL::1.18513 0.167502 -0.166667
-DEAL::1.34144 0.166957 -0.166667
-DEAL::1.50000 0.166667 -0.166667
-DEAL::0.587827 0.393172 -0.166667
-DEAL::0.722669 0.353932 -0.166667
-DEAL::0.866961 0.340608 -0.166667
-DEAL::1.01955 0.335844 -0.166667
-DEAL::1.17733 0.334173 -0.166667
-DEAL::1.33798 0.333653 -0.166667
-DEAL::1.50000 0.333333 -0.166667
-DEAL::0.500000 0.500000 -0.166667
-DEAL::0.666667 0.500000 -0.166667
-DEAL::0.833333 0.500000 -0.166667
-DEAL::1.00000 0.500000 -0.166667
-DEAL::1.16667 0.500000 -0.166667
-DEAL::1.33333 0.500000 -0.166667
-DEAL::1.50000 0.500000 -0.166667
-DEAL::0.500000 -0.500000 0.00000
-DEAL::0.666667 -0.500000 -2.68594e-17
-DEAL::0.833333 -0.500000 -2.74398e-17
-DEAL::1.00000 -0.500000 -1.64799e-17
-DEAL::1.16667 -0.500000 -2.79378e-17
-DEAL::1.33333 -0.500000 -3.23056e-17
-DEAL::1.50000 -0.500000 0.00000
-DEAL::0.587827 -0.393172 8.59433e-18
-DEAL::0.722669 -0.353932 -2.81303e-17
-DEAL::0.866961 -0.340608 -4.21869e-17
-DEAL::1.01955 -0.335844 -3.74290e-17
-DEAL::1.17733 -0.334173 -3.95892e-17
-DEAL::1.33798 -0.333653 -3.26248e-17
-DEAL::1.50000 -0.333333 8.59433e-18
-DEAL::0.671122 -0.222531 -2.58644e-18
-DEAL::0.767514 -0.186618 -2.20058e-17
-DEAL::0.892464 -0.173730 -4.06021e-17
-DEAL::1.03402 -0.169134 -4.97938e-17
-DEAL::1.18513 -0.167502 -5.07754e-17
-DEAL::1.34144 -0.166957 -3.11118e-17
-DEAL::1.50000 -0.166667 -2.58644e-18
-DEAL::0.707107 0.00000 0.00000
-DEAL::0.785071 -5.69448e-18 -1.57305e-17
-DEAL::0.902057 -3.98063e-17 -3.29490e-17
-DEAL::1.03936 -4.68646e-17 -4.40186e-17
-DEAL::1.18799 -3.11708e-17 -4.03511e-17
-DEAL::1.34272 -2.53485e-17 -2.45508e-17
-DEAL::1.50000 0.00000 0.00000
-DEAL::0.671122 0.222531 1.10453e-18
-DEAL::0.767514 0.186618 -2.35450e-17
-DEAL::0.892464 0.173730 -3.62829e-17
-DEAL::1.03402 0.169134 -3.45046e-17
-DEAL::1.18513 0.167502 -3.43254e-17
-DEAL::1.34144 0.166957 -2.54434e-17
-DEAL::1.50000 0.166667 1.10453e-18
-DEAL::0.587827 0.393172 -9.39057e-19
-DEAL::0.722669 0.353932 -2.47693e-17
-DEAL::0.866961 0.340608 -3.90329e-17
-DEAL::1.01955 0.335844 -4.19113e-17
-DEAL::1.17733 0.334173 -3.66800e-17
-DEAL::1.33798 0.333653 -2.44504e-17
-DEAL::1.50000 0.333333 -9.39057e-19
-DEAL::0.500000 0.500000 0.00000
-DEAL::0.666667 0.500000 -2.68594e-17
-DEAL::0.833333 0.500000 -2.74398e-17
-DEAL::1.00000 0.500000 -1.64799e-17
-DEAL::1.16667 0.500000 -2.79378e-17
-DEAL::1.33333 0.500000 -3.23056e-17
-DEAL::1.50000 0.500000 0.00000
-DEAL::0.500000 -0.500000 0.166667
-DEAL::0.666667 -0.500000 0.166667
-DEAL::0.833333 -0.500000 0.166667
-DEAL::1.00000 -0.500000 0.166667
-DEAL::1.16667 -0.500000 0.166667
-DEAL::1.33333 -0.500000 0.166667
-DEAL::1.50000 -0.500000 0.166667
-DEAL::0.587827 -0.393172 0.166667
-DEAL::0.722669 -0.353932 0.166667
-DEAL::0.866961 -0.340608 0.166667
-DEAL::1.01955 -0.335844 0.166667
-DEAL::1.17733 -0.334173 0.166667
-DEAL::1.33798 -0.333653 0.166667
-DEAL::1.50000 -0.333333 0.166667
-DEAL::0.671122 -0.222531 0.166667
-DEAL::0.767514 -0.186618 0.166667
-DEAL::0.892464 -0.173730 0.166667
-DEAL::1.03402 -0.169134 0.166667
-DEAL::1.18513 -0.167502 0.166667
-DEAL::1.34144 -0.166957 0.166667
-DEAL::1.50000 -0.166667 0.166667
-DEAL::0.707107 0.00000 0.166667
-DEAL::0.785071 -9.14942e-18 0.166667
-DEAL::0.902057 -4.22538e-17 0.166667
-DEAL::1.03936 -4.67341e-17 0.166667
-DEAL::1.18799 -3.58527e-17 0.166667
-DEAL::1.34272 -2.85521e-17 0.166667
-DEAL::1.50000 0.00000 0.166667
-DEAL::0.671122 0.222531 0.166667
-DEAL::0.767514 0.186618 0.166667
-DEAL::0.892464 0.173730 0.166667
-DEAL::1.03402 0.169134 0.166667
-DEAL::1.18513 0.167502 0.166667
-DEAL::1.34144 0.166957 0.166667
-DEAL::1.50000 0.166667 0.166667
-DEAL::0.587827 0.393172 0.166667
-DEAL::0.722669 0.353932 0.166667
-DEAL::0.866961 0.340608 0.166667
-DEAL::1.01955 0.335844 0.166667
-DEAL::1.17733 0.334173 0.166667
-DEAL::1.33798 0.333653 0.166667
-DEAL::1.50000 0.333333 0.166667
-DEAL::0.500000 0.500000 0.166667
-DEAL::0.666667 0.500000 0.166667
-DEAL::0.833333 0.500000 0.166667
-DEAL::1.00000 0.500000 0.166667
-DEAL::1.16667 0.500000 0.166667
-DEAL::1.33333 0.500000 0.166667
-DEAL::1.50000 0.500000 0.166667
-DEAL::0.500000 -0.500000 0.333333
-DEAL::0.666667 -0.500000 0.333333
-DEAL::0.833333 -0.500000 0.333333
-DEAL::1.00000 -0.500000 0.333333
-DEAL::1.16667 -0.500000 0.333333
-DEAL::1.33333 -0.500000 0.333333
-DEAL::1.50000 -0.500000 0.333333
-DEAL::0.587827 -0.393172 0.333333
-DEAL::0.722669 -0.353932 0.333333
-DEAL::0.866961 -0.340608 0.333333
-DEAL::1.01955 -0.335844 0.333333
-DEAL::1.17733 -0.334173 0.333333
-DEAL::1.33798 -0.333653 0.333333
-DEAL::1.50000 -0.333333 0.333333
-DEAL::0.671122 -0.222531 0.333333
-DEAL::0.767514 -0.186618 0.333333
-DEAL::0.892464 -0.173730 0.333333
-DEAL::1.03402 -0.169134 0.333333
-DEAL::1.18513 -0.167502 0.333333
-DEAL::1.34144 -0.166957 0.333333
-DEAL::1.50000 -0.166667 0.333333
-DEAL::0.707107 0.00000 0.333333
-DEAL::0.785071 -1.62597e-17 0.333333
-DEAL::0.902057 -4.41422e-17 0.333333
-DEAL::1.03936 -4.97992e-17 0.333333
-DEAL::1.18799 -4.24350e-17 0.333333
-DEAL::1.34272 -3.63271e-17 0.333333
-DEAL::1.50000 0.00000 0.333333
-DEAL::0.671122 0.222531 0.333333
-DEAL::0.767514 0.186618 0.333333
-DEAL::0.892464 0.173730 0.333333
-DEAL::1.03402 0.169134 0.333333
-DEAL::1.18513 0.167502 0.333333
-DEAL::1.34144 0.166957 0.333333
-DEAL::1.50000 0.166667 0.333333
-DEAL::0.587827 0.393172 0.333333
-DEAL::0.722669 0.353932 0.333333
-DEAL::0.866961 0.340608 0.333333
-DEAL::1.01955 0.335844 0.333333
-DEAL::1.17733 0.334173 0.333333
-DEAL::1.33798 0.333653 0.333333
-DEAL::1.50000 0.333333 0.333333
-DEAL::0.500000 0.500000 0.333333
-DEAL::0.666667 0.500000 0.333333
-DEAL::0.833333 0.500000 0.333333
-DEAL::1.00000 0.500000 0.333333
-DEAL::1.16667 0.500000 0.333333
-DEAL::1.33333 0.500000 0.333333
-DEAL::1.50000 0.500000 0.333333
-DEAL::0.500000 -0.500000 0.500000
-DEAL::0.666667 -0.500000 0.500000
-DEAL::0.833333 -0.500000 0.500000
-DEAL::1.00000 -0.500000 0.500000
-DEAL::1.16667 -0.500000 0.500000
-DEAL::1.33333 -0.500000 0.500000
-DEAL::1.50000 -0.500000 0.500000
-DEAL::0.587827 -0.393172 0.500000
-DEAL::0.722669 -0.353932 0.500000
-DEAL::0.866961 -0.340608 0.500000
-DEAL::1.01955 -0.335844 0.500000
-DEAL::1.17733 -0.334173 0.500000
-DEAL::1.33798 -0.333653 0.500000
-DEAL::1.50000 -0.333333 0.500000
-DEAL::0.671122 -0.222531 0.500000
-DEAL::0.767514 -0.186618 0.500000
-DEAL::0.892464 -0.173730 0.500000
-DEAL::1.03402 -0.169134 0.500000
-DEAL::1.18513 -0.167502 0.500000
-DEAL::1.34144 -0.166957 0.500000
-DEAL::1.50000 -0.166667 0.500000
-DEAL::0.707107 0.00000 0.500000
-DEAL::0.785071 -2.55335e-17 0.500000
-DEAL::0.902057 -3.40697e-17 0.500000
-DEAL::1.03936 -2.60209e-17 0.500000
-DEAL::1.18799 -2.79126e-17 0.500000
-DEAL::1.34272 -3.20115e-17 0.500000
-DEAL::1.50000 0.00000 0.500000
-DEAL::0.671122 0.222531 0.500000
-DEAL::0.767514 0.186618 0.500000
-DEAL::0.892464 0.173730 0.500000
-DEAL::1.03402 0.169134 0.500000
-DEAL::1.18513 0.167502 0.500000
-DEAL::1.34144 0.166957 0.500000
-DEAL::1.50000 0.166667 0.500000
-DEAL::0.587827 0.393172 0.500000
-DEAL::0.722669 0.353932 0.500000
-DEAL::0.866961 0.340608 0.500000
-DEAL::1.01955 0.335844 0.500000
-DEAL::1.17733 0.334173 0.500000
-DEAL::1.33798 0.333653 0.500000
-DEAL::1.50000 0.333333 0.500000
-DEAL::0.500000 0.500000 0.500000
-DEAL::0.666667 0.500000 0.500000
-DEAL::0.833333 0.500000 0.500000
-DEAL::1.00000 0.500000 0.500000
-DEAL::1.16667 0.500000 0.500000
-DEAL::1.33333 0.500000 0.500000
-DEAL::1.50000 0.500000 0.500000
-DEAL::Points without smoothing in 3D
-DEAL::0.500000 -0.500000 -0.500000
-DEAL::0.666667 -0.500000 -0.500000
-DEAL::0.833333 -0.500000 -0.500000
-DEAL::1.00000 -0.500000 -0.500000
-DEAL::1.16667 -0.500000 -0.500000
-DEAL::1.33333 -0.500000 -0.500000
-DEAL::1.50000 -0.500000 -0.500000
-DEAL::0.587827 -0.393172 -0.500000
-DEAL::0.655598 -0.325792 -0.500000
-DEAL::0.838393 -0.336781 -0.500000
-DEAL::1.00000 -0.333333 -0.500000
-DEAL::1.16414 -0.331610 -0.500000
-DEAL::1.33555 -0.334842 -0.500000
-DEAL::1.50000 -0.333333 -0.500000
-DEAL::0.671122 -0.222531 -0.500000
-DEAL::0.645100 -0.159626 -0.500000
-DEAL::0.843192 -0.169885 -0.500000
-DEAL::1.00000 -0.166667 -0.500000
-DEAL::1.16174 -0.165057 -0.500000
-DEAL::1.33765 -0.168075 -0.500000
-DEAL::1.50000 -0.166667 -0.500000
-DEAL::0.707107 0.00000 -0.500000
-DEAL::0.640565 8.59433e-18 -0.500000
-DEAL::0.845265 -2.58644e-18 -0.500000
-DEAL::1.00000 0.00000 -0.500000
-DEAL::1.16070 1.10453e-18 -0.500000
-DEAL::1.33855 -9.39057e-19 -0.500000
-DEAL::1.50000 0.00000 -0.500000
-DEAL::0.671122 0.222531 -0.500000
-DEAL::0.645100 0.159626 -0.500000
-DEAL::0.843192 0.169885 -0.500000
-DEAL::1.00000 0.166667 -0.500000
-DEAL::1.16174 0.165057 -0.500000
-DEAL::1.33765 0.168075 -0.500000
-DEAL::1.50000 0.166667 -0.500000
-DEAL::0.587827 0.393172 -0.500000
-DEAL::0.655598 0.325792 -0.500000
-DEAL::0.838393 0.336781 -0.500000
-DEAL::1.00000 0.333333 -0.500000
-DEAL::1.16414 0.331610 -0.500000
-DEAL::1.33555 0.334842 -0.500000
-DEAL::1.50000 0.333333 -0.500000
-DEAL::0.500000 0.500000 -0.500000
-DEAL::0.666667 0.500000 -0.500000
-DEAL::0.833333 0.500000 -0.500000
-DEAL::1.00000 0.500000 -0.500000
-DEAL::1.16667 0.500000 -0.500000
-DEAL::1.33333 0.500000 -0.500000
-DEAL::1.50000 0.500000 -0.500000
-DEAL::0.500000 -0.500000 -0.333333
-DEAL::0.666667 -0.500000 -0.333333
-DEAL::0.833333 -0.500000 -0.333333
-DEAL::1.00000 -0.500000 -0.333333
-DEAL::1.16667 -0.500000 -0.333333
-DEAL::1.33333 -0.500000 -0.333333
-DEAL::1.50000 -0.500000 -0.333333
-DEAL::0.587827 -0.393172 -0.333333
-DEAL::0.655598 -0.325792 -0.333333
-DEAL::0.838393 -0.336781 -0.333333
-DEAL::1.00000 -0.333333 -0.333333
-DEAL::1.16414 -0.331610 -0.333333
-DEAL::1.33555 -0.334842 -0.333333
-DEAL::1.50000 -0.333333 -0.333333
-DEAL::0.671122 -0.222531 -0.333333
-DEAL::0.645100 -0.159626 -0.333333
-DEAL::0.843192 -0.169885 -0.333333
-DEAL::1.00000 -0.166667 -0.333333
-DEAL::1.16174 -0.165057 -0.333333
-DEAL::1.33765 -0.168075 -0.333333
-DEAL::1.50000 -0.166667 -0.333333
-DEAL::0.707107 0.00000 -0.333333
-DEAL::0.640565 -8.41572e-18 -0.333333
-DEAL::0.845265 -6.09993e-18 -0.333333
-DEAL::1.00000 0.00000 -0.333333
-DEAL::1.16070 -1.16938e-17 -0.333333
-DEAL::1.33855 -1.08470e-17 -0.333333
-DEAL::1.50000 0.00000 -0.333333
-DEAL::0.671122 0.222531 -0.333333
-DEAL::0.645100 0.159626 -0.333333
-DEAL::0.843192 0.169885 -0.333333
-DEAL::1.00000 0.166667 -0.333333
-DEAL::1.16174 0.165057 -0.333333
-DEAL::1.33765 0.168075 -0.333333
-DEAL::1.50000 0.166667 -0.333333
-DEAL::0.587827 0.393172 -0.333333
-DEAL::0.655598 0.325792 -0.333333
-DEAL::0.838393 0.336781 -0.333333
-DEAL::1.00000 0.333333 -0.333333
-DEAL::1.16414 0.331610 -0.333333
-DEAL::1.33555 0.334842 -0.333333
-DEAL::1.50000 0.333333 -0.333333
-DEAL::0.500000 0.500000 -0.333333
-DEAL::0.666667 0.500000 -0.333333
-DEAL::0.833333 0.500000 -0.333333
-DEAL::1.00000 0.500000 -0.333333
-DEAL::1.16667 0.500000 -0.333333
-DEAL::1.33333 0.500000 -0.333333
-DEAL::1.50000 0.500000 -0.333333
-DEAL::0.500000 -0.500000 -0.166667
-DEAL::0.666667 -0.500000 -0.166667
-DEAL::0.833333 -0.500000 -0.166667
-DEAL::1.00000 -0.500000 -0.166667
-DEAL::1.16667 -0.500000 -0.166667
-DEAL::1.33333 -0.500000 -0.166667
-DEAL::1.50000 -0.500000 -0.166667
-DEAL::0.587827 -0.393172 -0.166667
-DEAL::0.655598 -0.325792 -0.166667
-DEAL::0.838393 -0.336781 -0.166667
-DEAL::1.00000 -0.333333 -0.166667
-DEAL::1.16414 -0.331610 -0.166667
-DEAL::1.33555 -0.334842 -0.166667
-DEAL::1.50000 -0.333333 -0.166667
-DEAL::0.671122 -0.222531 -0.166667
-DEAL::0.645100 -0.159626 -0.166667
-DEAL::0.843192 -0.169885 -0.166667
-DEAL::1.00000 -0.166667 -0.166667
-DEAL::1.16174 -0.165057 -0.166667
-DEAL::1.33765 -0.168075 -0.166667
-DEAL::1.50000 -0.166667 -0.166667
-DEAL::0.707107 0.00000 -0.166667
-DEAL::0.640565 2.18388e-18 -0.166667
-DEAL::0.845265 -2.53200e-18 -0.166667
-DEAL::1.00000 0.00000 -0.166667
-DEAL::1.16070 3.10242e-18 -0.166667
-DEAL::1.33855 1.42459e-18 -0.166667
-DEAL::1.50000 0.00000 -0.166667
-DEAL::0.671122 0.222531 -0.166667
-DEAL::0.645100 0.159626 -0.166667
-DEAL::0.843192 0.169885 -0.166667
-DEAL::1.00000 0.166667 -0.166667
-DEAL::1.16174 0.165057 -0.166667
-DEAL::1.33765 0.168075 -0.166667
-DEAL::1.50000 0.166667 -0.166667
-DEAL::0.587827 0.393172 -0.166667
-DEAL::0.655598 0.325792 -0.166667
-DEAL::0.838393 0.336781 -0.166667
-DEAL::1.00000 0.333333 -0.166667
-DEAL::1.16414 0.331610 -0.166667
-DEAL::1.33555 0.334842 -0.166667
-DEAL::1.50000 0.333333 -0.166667
-DEAL::0.500000 0.500000 -0.166667
-DEAL::0.666667 0.500000 -0.166667
-DEAL::0.833333 0.500000 -0.166667
-DEAL::1.00000 0.500000 -0.166667
-DEAL::1.16667 0.500000 -0.166667
-DEAL::1.33333 0.500000 -0.166667
-DEAL::1.50000 0.500000 -0.166667
-DEAL::0.500000 -0.500000 0.00000
-DEAL::0.666667 -0.500000 0.00000
-DEAL::0.833333 -0.500000 0.00000
-DEAL::1.00000 -0.500000 0.00000
-DEAL::1.16667 -0.500000 0.00000
-DEAL::1.33333 -0.500000 0.00000
-DEAL::1.50000 -0.500000 0.00000
-DEAL::0.587827 -0.393172 8.59433e-18
-DEAL::0.655598 -0.325792 -3.70471e-19
-DEAL::0.838393 -0.336781 1.33093e-18
-DEAL::1.00000 -0.333333 1.43766e-17
-DEAL::1.16414 -0.331610 2.94637e-19
-DEAL::1.33555 -0.334842 -5.88518e-18
-DEAL::1.50000 -0.333333 8.59433e-18
-DEAL::0.671122 -0.222531 -2.58644e-18
-DEAL::0.645100 -0.159626 -1.24436e-18
-DEAL::0.843192 -0.169885 5.60461e-18
-DEAL::1.00000 -0.166667 1.32588e-17
-DEAL::1.16174 -0.165057 4.79169e-18
-DEAL::1.33765 -0.168075 -1.23802e-18
-DEAL::1.50000 -0.166667 -2.58644e-18
-DEAL::0.707107 0.00000 0.00000
-DEAL::0.640565 4.29717e-18 1.31713e-17
-DEAL::0.845265 -1.29322e-18 1.05504e-17
-DEAL::1.00000 0.00000 0.00000
-DEAL::1.16070 5.52263e-19 -1.44853e-18
-DEAL::1.33855 -4.69528e-19 1.07644e-18
-DEAL::1.50000 0.00000 0.00000
-DEAL::0.671122 0.222531 1.10453e-18
-DEAL::0.645100 0.159626 1.31579e-17
-DEAL::0.843192 0.169885 -4.74188e-18
-DEAL::1.00000 0.166667 -2.45836e-17
-DEAL::1.16174 0.165057 -2.39519e-18
-DEAL::1.33765 0.168075 -5.74254e-18
-DEAL::1.50000 0.166667 1.10453e-18
-DEAL::0.587827 0.393172 -9.39057e-19
-DEAL::0.655598 0.325792 -5.45681e-18
-DEAL::0.838393 0.336781 -1.52649e-17
-DEAL::1.00000 0.333333 -1.71414e-17
-DEAL::1.16414 0.331610 -1.51538e-17
-DEAL::1.33555 0.334842 -1.96230e-17
-DEAL::1.50000 0.333333 -9.39057e-19
-DEAL::0.500000 0.500000 0.00000
-DEAL::0.666667 0.500000 0.00000
-DEAL::0.833333 0.500000 0.00000
-DEAL::1.00000 0.500000 0.00000
-DEAL::1.16667 0.500000 0.00000
-DEAL::1.33333 0.500000 0.00000
-DEAL::1.50000 0.500000 0.00000
-DEAL::0.500000 -0.500000 0.166667
-DEAL::0.666667 -0.500000 0.166667
-DEAL::0.833333 -0.500000 0.166667
-DEAL::1.00000 -0.500000 0.166667
-DEAL::1.16667 -0.500000 0.166667
-DEAL::1.33333 -0.500000 0.166667
-DEAL::1.50000 -0.500000 0.166667
-DEAL::0.587827 -0.393172 0.166667
-DEAL::0.655598 -0.325792 0.166667
-DEAL::0.838393 -0.336781 0.166667
-DEAL::1.00000 -0.333333 0.166667
-DEAL::1.16414 -0.331610 0.166667
-DEAL::1.33555 -0.334842 0.166667
-DEAL::1.50000 -0.333333 0.166667
-DEAL::0.671122 -0.222531 0.166667
-DEAL::0.645100 -0.159626 0.166667
-DEAL::0.843192 -0.169885 0.166667
-DEAL::1.00000 -0.166667 0.166667
-DEAL::1.16174 -0.165057 0.166667
-DEAL::1.33765 -0.168075 0.166667
-DEAL::1.50000 -0.166667 0.166667
-DEAL::0.707107 0.00000 0.166667
-DEAL::0.640565 2.07509e-18 0.166667
-DEAL::0.845265 1.12059e-18 0.166667
-DEAL::1.00000 0.00000 0.166667
-DEAL::1.16070 2.30501e-18 0.166667
-DEAL::1.33855 2.06386e-18 0.166667
-DEAL::1.50000 0.00000 0.166667
-DEAL::0.671122 0.222531 0.166667
-DEAL::0.645100 0.159626 0.166667
-DEAL::0.843192 0.169885 0.166667
-DEAL::1.00000 0.166667 0.166667
-DEAL::1.16174 0.165057 0.166667
-DEAL::1.33765 0.168075 0.166667
-DEAL::1.50000 0.166667 0.166667
-DEAL::0.587827 0.393172 0.166667
-DEAL::0.655598 0.325792 0.166667
-DEAL::0.838393 0.336781 0.166667
-DEAL::1.00000 0.333333 0.166667
-DEAL::1.16414 0.331610 0.166667
-DEAL::1.33555 0.334842 0.166667
-DEAL::1.50000 0.333333 0.166667
-DEAL::0.500000 0.500000 0.166667
-DEAL::0.666667 0.500000 0.166667
-DEAL::0.833333 0.500000 0.166667
-DEAL::1.00000 0.500000 0.166667
-DEAL::1.16667 0.500000 0.166667
-DEAL::1.33333 0.500000 0.166667
-DEAL::1.50000 0.500000 0.166667
-DEAL::0.500000 -0.500000 0.333333
-DEAL::0.666667 -0.500000 0.333333
-DEAL::0.833333 -0.500000 0.333333
-DEAL::1.00000 -0.500000 0.333333
-DEAL::1.16667 -0.500000 0.333333
-DEAL::1.33333 -0.500000 0.333333
-DEAL::1.50000 -0.500000 0.333333
-DEAL::0.587827 -0.393172 0.333333
-DEAL::0.655598 -0.325792 0.333333
-DEAL::0.838393 -0.336781 0.333333
-DEAL::1.00000 -0.333333 0.333333
-DEAL::1.16414 -0.331610 0.333333
-DEAL::1.33555 -0.334842 0.333333
-DEAL::1.50000 -0.333333 0.333333
-DEAL::0.671122 -0.222531 0.333333
-DEAL::0.645100 -0.159626 0.333333
-DEAL::0.843192 -0.169885 0.333333
-DEAL::1.00000 -0.166667 0.333333
-DEAL::1.16174 -0.165057 0.333333
-DEAL::1.33765 -0.168075 0.333333
-DEAL::1.50000 -0.166667 0.333333
-DEAL::0.707107 0.00000 0.333333
-DEAL::0.640565 -7.91754e-18 0.333333
-DEAL::0.845265 -4.33378e-18 0.333333
-DEAL::1.00000 0.00000 0.333333
-DEAL::1.16070 -1.20445e-17 0.333333
-DEAL::1.33855 -1.05693e-17 0.333333
-DEAL::1.50000 0.00000 0.333333
-DEAL::0.671122 0.222531 0.333333
-DEAL::0.645100 0.159626 0.333333
-DEAL::0.843192 0.169885 0.333333
-DEAL::1.00000 0.166667 0.333333
-DEAL::1.16174 0.165057 0.333333
-DEAL::1.33765 0.168075 0.333333
-DEAL::1.50000 0.166667 0.333333
-DEAL::0.587827 0.393172 0.333333
-DEAL::0.655598 0.325792 0.333333
-DEAL::0.838393 0.336781 0.333333
-DEAL::1.00000 0.333333 0.333333
-DEAL::1.16414 0.331610 0.333333
-DEAL::1.33555 0.334842 0.333333
-DEAL::1.50000 0.333333 0.333333
-DEAL::0.500000 0.500000 0.333333
-DEAL::0.666667 0.500000 0.333333
-DEAL::0.833333 0.500000 0.333333
-DEAL::1.00000 0.500000 0.333333
-DEAL::1.16667 0.500000 0.333333
-DEAL::1.33333 0.500000 0.333333
-DEAL::1.50000 0.500000 0.333333
-DEAL::0.500000 -0.500000 0.500000
-DEAL::0.666667 -0.500000 0.500000
-DEAL::0.833333 -0.500000 0.500000
-DEAL::1.00000 -0.500000 0.500000
-DEAL::1.16667 -0.500000 0.500000
-DEAL::1.33333 -0.500000 0.500000
-DEAL::1.50000 -0.500000 0.500000
-DEAL::0.587827 -0.393172 0.500000
-DEAL::0.655598 -0.325792 0.500000
-DEAL::0.838393 -0.336781 0.500000
-DEAL::1.00000 -0.333333 0.500000
-DEAL::1.16414 -0.331610 0.500000
-DEAL::1.33555 -0.334842 0.500000
-DEAL::1.50000 -0.333333 0.500000
-DEAL::0.671122 -0.222531 0.500000
-DEAL::0.645100 -0.159626 0.500000
-DEAL::0.843192 -0.169885 0.500000
-DEAL::1.00000 -0.166667 0.500000
-DEAL::1.16174 -0.165057 0.500000
-DEAL::1.33765 -0.168075 0.500000
-DEAL::1.50000 -0.166667 0.500000
-DEAL::0.707107 0.00000 0.500000
-DEAL::0.640565 8.59433e-18 0.500000
-DEAL::0.845265 -2.58644e-18 0.500000
-DEAL::1.00000 0.00000 0.500000
-DEAL::1.16070 1.10453e-18 0.500000
-DEAL::1.33855 -9.39057e-19 0.500000
-DEAL::1.50000 0.00000 0.500000
-DEAL::0.671122 0.222531 0.500000
-DEAL::0.645100 0.159626 0.500000
-DEAL::0.843192 0.169885 0.500000
-DEAL::1.00000 0.166667 0.500000
-DEAL::1.16174 0.165057 0.500000
-DEAL::1.33765 0.168075 0.500000
-DEAL::1.50000 0.166667 0.500000
-DEAL::0.587827 0.393172 0.500000
-DEAL::0.655598 0.325792 0.500000
-DEAL::0.838393 0.336781 0.500000
-DEAL::1.00000 0.333333 0.500000
-DEAL::1.16414 0.331610 0.500000
-DEAL::1.33555 0.334842 0.500000
-DEAL::1.50000 0.333333 0.500000
-DEAL::0.500000 0.500000 0.500000
-DEAL::0.666667 0.500000 0.500000
-DEAL::0.833333 0.500000 0.500000
-DEAL::1.00000 0.500000 0.500000
-DEAL::1.16667 0.500000 0.500000
-DEAL::1.33333 0.500000 0.500000
-DEAL::1.50000 0.500000 0.500000

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.