]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Modified implementation in favor of a constant eccentricity manifold 7442/head
authorStefano Dominici <sfndmn@gmail.com>
Mon, 3 Dec 2018 13:25:35 +0000 (14:25 +0100)
committerStefano Dominici <sfndmn@gmail.com>
Mon, 10 Dec 2018 07:58:18 +0000 (08:58 +0100)
Unit tests, comments, and pictures were modified accordingly.

Minor modifications

 - Adjusted style.
 - Used `std_cxx14` instead of `std` for `make_unique()`.
 - Added guard in `pull_back()` to prevent NaNs in `std::acos()`. This
 may happen due to numerical errors: when the argument of acos() falls
 outside the range [-1,1].

Included a special case for pull_back()

If the first coordinate is exactly 0, the center of the manifold is
returned.

doc/doxygen/images/elliptical_hyper_shell.png
include/deal.II/grid/manifold_lib.h
source/grid/manifold_lib.cc
tests/manifold/elliptical_manifold_01.cc
tests/manifold/elliptical_manifold_01.output
tests/manifold/elliptical_manifold_02.cc
tests/manifold/elliptical_manifold_02.output

index c4e70c62783d021779e22e92624c45f63740fbac..7da426131d36809b098b53b4f3b4112f8e6685a3 100644 (file)
Binary files a/doc/doxygen/images/elliptical_hyper_shell.png and b/doc/doxygen/images/elliptical_hyper_shell.png differ
index dfcc581858a84e6b0090b0d4f6359a9947e3ef1d..6eb5d7e328783952c44bb9171dcd69fc3448359f 100644 (file)
@@ -468,11 +468,25 @@ private:
  * href="https://en.wikipedia.org/wiki/Elliptic_coordinate_system">Wikipedia
  * </a>.
  *
+ * This is based on the definition of elliptic coordinates $(u,v)$
+ * @f[
+ *  \left\lbrace\begin{align*}
+ *  x &=  x_0 + c \cosh(u) \cos(v) \\
+ *  y &=  y_0 + c \sinh(u) \sin(v)
+ *  \end{align*}\right.
+ * @f]
+ * in which $(x_0,y_0)$ are coordinates of the center of the cartesian system.
+ *
+ * The current implementation uses coordinates $(c,v)$, instead of $(u,v)$, and
+ * fixes $u$ according to a given eccentricity. Therefore, this choice
+ * of coordinates generates an elliptical manifold characterized by a constant
+ * eccentricity: $e=\frac{1}{\cosh(u)}$, with $e\in\left]0,1\right[$.
+ *
  * The constructor of this class will throw an exception if both dim and
  * spacedim are different from two.
  *
  * This manifold can be used to produce hyper_shells with elliptical curvature.
- * As an example, the test elliptical_manifold_01 produces the following
+ * As an example, the test <B>elliptical_manifold_01</B> produces the following
  * triangulation:
  * @image html elliptical_hyper_shell.png
  *
@@ -486,19 +500,19 @@ class EllipticalManifold : public ChartManifold<dim, spacedim, spacedim>
 public:
   /**
    * Constructor that takes the center of the manifold system, the direction of
-   * the major axis, and the eccentricity parameter.
+   * the major axis, and the manifold eccentricity.
    * The default major axis is the <tt>x</tt>-axis. The manifold is rotated in
    * order to align the major axis to the direction specified in input.
    * @param center Center of the manifold.
    * @param major_axis_direction Direction of the major axis of the
    * manifold.
-   * @param c_parameter Parameter controlling the eccentricity of the
-   * manifold.
+   * @param eccentricity Eccentricity of the
+   * manifold $e\in\left]0,1\right[$.
    *
    */
   EllipticalManifold(const Point<spacedim> &    center,
                      const Tensor<1, spacedim> &major_axis_direction,
-                     const double               c_parameter);
+                     const double               eccentricity);
 
   virtual std::unique_ptr<Manifold<dim, spacedim>>
   clone() const override;
@@ -532,9 +546,10 @@ protected:
    */
   const Point<spacedim> center;
   /**
-   * The parameter controlling the eccentricity of the manifold.
+   * Parameters deriving from the eccentricity of the manifold.
    */
-  const double c_parameter;
+  const double cosh_u;
+  const double sinh_u;
 
 private:
   /**
index e809bcf27eff51f4754295fbd3f23359a67aa318..7387e35f89abfabaebfa33e262165665e1c6756a 100644 (file)
@@ -1156,18 +1156,20 @@ template <int dim, int spacedim>
 EllipticalManifold<dim, spacedim>::EllipticalManifold(
   const Point<spacedim> &    center,
   const Tensor<1, spacedim> &major_axis_direction,
-  const double               c_parameter)
+  const double               eccentricity)
   : ChartManifold<dim, spacedim, spacedim>(
       EllipticalManifold<dim, spacedim>::get_periodicity())
   , direction(major_axis_direction)
   , center(center)
-  , c_parameter(c_parameter)
+  , cosh_u(1.0 / eccentricity)
+  , sinh_u(std::sqrt(cosh_u * cosh_u - 1.0))
 {
-  // throws an exception if dim!=2 || spacedim!=2.
+  // Throws an exception if dim!=2 || spacedim!=2.
   Assert(dim == 2 && spacedim == 2, ExcNotImplemented());
-  Assert(this->c_parameter > 0.0,
+  // Throws an exception if eccentricity is not in range.
+  Assert(std::signbit(cosh_u * cosh_u - 1.0) == false,
          ExcMessage(
-           "Invalid ellipsis parameter 'c': It must satisfy c > 0.0."));
+           "Invalid eccentricity: It must satisfy 0 < eccentricity < 1."));
   const double direction_norm = direction.norm();
   Assert(direction_norm != 0.0,
          ExcMessage(
@@ -1181,9 +1183,9 @@ template <int dim, int spacedim>
 std::unique_ptr<Manifold<dim, spacedim>>
 EllipticalManifold<dim, spacedim>::clone() const
 {
-  return std::make_unique<EllipticalManifold<dim, spacedim>>(center,
-                                                             direction,
-                                                             c_parameter);
+  const double eccentricity = 1.0 / cosh_u;
+  return std_cxx14::make_unique<EllipticalManifold<dim, spacedim>>(
+    center, direction, eccentricity);
 }
 
 
@@ -1215,14 +1217,12 @@ template <>
 Point<2>
 EllipticalManifold<2, 2>::push_forward(const Point<2> &chart_point) const
 {
-  const double ch = std::cosh(chart_point[0]);
-  const double sh = std::sinh(chart_point[0]);
   const double cs = std::cos(chart_point[1]);
   const double sn = std::sin(chart_point[1]);
   // Coordinates in the reference frame (i.e. major axis direction is
   // x-axis)
-  const double x = c_parameter * ch * cs;
-  const double y = c_parameter * sh * sn;
+  const double x = chart_point[0] * cosh_u * cs;
+  const double y = chart_point[0] * sinh_u * sn;
   // Rotate them according to the major axis direction
   const Point<2> p(direction[0] * x - direction[1] * y,
                    direction[1] * x + direction[0] * y);
@@ -1246,45 +1246,29 @@ Point<2>
 EllipticalManifold<2, 2>::pull_back(const Point<2> &space_point) const
 {
   // Moving space_point in the reference coordinate system.
-  const double c2 = c_parameter * c_parameter;
   const double x0 = space_point[0] - center[0];
   const double y0 = space_point[1] - center[1];
   const double x  = direction[0] * x0 + direction[1] * y0;
   const double y  = -direction[1] * x0 + direction[0] * y0;
-  // From here we try to find solutions of two equations:
-  // x^2/(1-q)-y^2/q = c^2 for q, given q = -sinh^2(pt[0]),
-  // and
-  // x^2/(1-p)-y^2/p = c^2 for p, given p = sin^2(pt[1]).
-  // Note that, in the end, p and q are solutions to the same quadratic
-  // equation.
-  const double x2 = x * x;
-  const double y2 = y * y;
-  //
-  const double b       = x2 + y2 - c2;
-  const double srdelta = std::sqrt(b * b + 4.0 * c2 * y2);
-  double       p       = (-b + srdelta) / (2.0 * c2);
-  // Since p=sin^2(pt[1]) is bounded in [0,1],
-  // guard against numerical overflows.
-  if (p < 0.0)
-    p = 0.0;
-  if (p > 1.0)
-    p = 1.0;
-  const double q             = (-b - srdelta) / (2.0 * c2);
-  const bool   x_is_positive = !std::signbit(x);
-  const bool   y_is_positive = !std::signbit(y);
-  const double eta0          = std::asin(std::sqrt(p));
-  // Given q = -sinh^2(pt[0]),
-  // pt[0] is calculated by straight inversion since q <= 0 for any
-  // pt[0].
-  Point<2> pt(std::log(std::sqrt(-q) + std::sqrt(1.0 - q)), eta0);
-  // Unfolding pt[1] according to the quadrant.
-  if (x_is_positive && !y_is_positive)
-    pt[1] = 2.0 * numbers::PI - eta0;
-  else if (!x_is_positive && y_is_positive)
-    pt[1] = numbers::PI - eta0;
-  else if (!x_is_positive && !y_is_positive)
-    pt[1] = numbers::PI + eta0;
-  return pt;
+  const double pt0 =
+    std::sqrt((x * x) / (cosh_u * cosh_u) + (y * y) / (sinh_u * sinh_u));
+  // If the radius is exactly zero, the point coincides with the origin.
+  if (pt0 == 0.0)
+    {
+      return center;
+    }
+  double cos_eta = x / (pt0 * cosh_u);
+  if (cos_eta < -1.0)
+    {
+      cos_eta = -1.0;
+    }
+  if (cos_eta > 1.0)
+    {
+      cos_eta = 1.0;
+    }
+  const double eta = std::acos(cos_eta);
+  const double pt1 = (std::signbit(y) ? 2.0 * numbers::PI - eta : eta);
+  return Point<2>(pt0, pt1);
 }
 
 
@@ -1305,15 +1289,13 @@ DerivativeForm<1, 2, 2>
 EllipticalManifold<2, 2>::push_forward_gradient(
   const Point<2> &chart_point) const
 {
-  const double            ch = std::cosh(chart_point[0]);
-  const double            sh = std::sinh(chart_point[0]);
   const double            cs = std::cos(chart_point[1]);
   const double            sn = std::sin(chart_point[1]);
   DerivativeForm<1, 2, 2> dX;
-  dX[0][0] = c_parameter * sh * cs;
-  dX[0][1] = -c_parameter * ch * sn;
-  dX[1][0] = c_parameter * ch * sn;
-  dX[1][1] = c_parameter * sh * cs;
+  dX[0][0] = cosh_u * cs;
+  dX[0][1] = -chart_point[0] * cosh_u * sn;
+  dX[1][0] = sinh_u * sn;
+  dX[1][1] = chart_point[1] * sinh_u * cs;
   return dX;
 }
 
index a9a6b0affd975c6bcaa0f00dd114711c61072286..cc1bf385995cf1698439a4928525cfc512c4a7ca 100644 (file)
 // hyper_shell made of 8 elements.
 namespace
 {
-  /* The following system of equations
-  // /
-  // |x = ellPar*cosh(u)*cos(v)
-  // |y = ellPar*sinh(u)*sin(v)
-  // \
-  // allows to transform a point (u,v) in the chart space to a
-  // point (x,y) in the cartesian space.
-  //
-  // Setting v=0, the system of equations becomes
-  // /
-  // |x = x_0 = ellPar*cosh(u)
-  // |y = 0
-  // \
-  // which represents the crossing point of an ellipsis, non-rotated and
-  // centered at the origin of the cartesian system, with its major axis.
-  //
-  // For the sake of completeness, by setting v=pi/2, one finds y_0 =
-  // ellPar*sinh(u) as the crossing point on the minor axis.
-  //
-  // This function takes in input a point pt={x_0,v}
-  // and transforms it into (x,y) in accordance with the first system of
-  // equations above.
-  //
-  // On a final note, the condition x_0 >= ellPar has to be satisfied. This is
-  // required because min(cosh(u)) = 1 is obtained for u = 0, and imposing v = 0
-  // the minimum value that x can assume is x = ellPar.
-  // For the sake of completeness, it's worth to notice that there would be no
-  // restrictions on the input if we passed y_0, instead of x_0, as pt[0].
-  */
-  Point<2>
-  chart_to_cartesian(const Point<2> &pt, const double ellPar)
-  {
-    Point<2>     c;
-    const double ch = pt[0] / ellPar;
-    const double sh = std::sqrt(ch * ch - 1.0);
-    c[0]            = ellPar * ch * std::cos(pt[1]);
-    c[1]            = ellPar * sh * std::sin(pt[1]);
-    return c;
-  }
-
-
-
   std::vector<Point<2>>
   generate_shell_points(const Point<2> &center,
                         const double    radius0,
                         const double    radius1,
-                        const double    ellPar)
+                        const double    eccentricity)
   {
-    const std::array<double, 2> radii{{radius0, radius1}};
+    const std::array<double, 2> radii{
+      {radius0 * eccentricity, radius1 * eccentricity}};
     const std::array<double, 5> angle{
       {0, numbers::PI_4, numbers::PI_2, 3.0 * numbers::PI_4, numbers::PI}};
     std::vector<Point<2>> points;
+    // Create an elliptical manifold to use push_forward()
+    Tensor<1, 2> axis;
+    axis[0] = 1.0;
+    axis[1] = 0.0;
+    EllipticalManifold<2, 2> mani(center, axis, eccentricity);
     for (auto &i : radii)
       {
         for (auto &j : angle)
           {
-            points.emplace_back(chart_to_cartesian(Point<2>(i, j), ellPar) +
-                                center);
+            points.emplace_back(mani.push_forward(Point<2>(i, j)) + center);
           }
       }
     std::array<int, 6> dup{{1, 2, 3, 6, 7, 8}};
@@ -117,19 +80,15 @@ namespace
   // center, and the major axis oriented in the direction of the x-axis.
   //
   // inner_radius and outer_radius parameters correspond to the
-  // distances from the center of the manifold of the
-  // crossing points of two concentric ellipsis with their major axis.
+  // semi-major axis length for the inner and outer ellipsis.
   //
-  // Input parameters must respect the following constrains:
-  // c_parameter < inner_radius < outer_radius.
+  // Eccentricity must be in range ]0,1[
   //
-  // To understand the constrain on the c_parameter refer to the
-  // documentation of function chart_to_cartesian() whithin this namespace.
   void build_simple_hyper_shell(Triangulation<2, 2> &grid,
                                 const Point<2> &     center,
                                 const double         inner_radius,
                                 const double         outer_radius,
-                                const double         c_param)
+                                const double         eccentricity)
   {
     unsigned int          cell[][4] = {{5, 6, 0, 1},
                               {6, 7, 1, 2},
@@ -140,7 +99,7 @@ namespace
                               {15, 14, 12, 11},
                               {9, 15, 4, 12}};
     std::vector<Point<2>> points =
-      generate_shell_points(center, inner_radius, outer_radius, c_param);
+      generate_shell_points(center, inner_radius, outer_radius, eccentricity);
     std::vector<CellData<2>> cells(8, CellData<2>());
     for (int i = 0; i < 8; ++i)
       for (int j = 0; j < 4; ++j)
@@ -151,7 +110,7 @@ namespace
     Tensor<1, 2> axis;
     axis[0] = 1.0;
     axis[1] = 0.0;
-    grid.set_manifold(0, EllipticalManifold<2, 2>(center, axis, c_param));
+    grid.set_manifold(0, EllipticalManifold<2, 2>(center, axis, eccentricity));
     grid.set_all_manifold_ids(0);
   }
 
@@ -168,13 +127,11 @@ template <int dim, int spacedim>
 void
 test(unsigned int ref = 1)
 {
-  // deallog << "Testing dim " << dim << ", spacedim " << spacedim << std::endl;
-
   Triangulation<dim, spacedim> tria;
   switch (dim)
     {
       case 2:
-        build_simple_hyper_shell(tria, Point<spacedim>(), 1.5, 1.8, 1.4);
+        build_simple_hyper_shell(tria, Point<spacedim>(), 1.0, 2.0, 0.8);
         break;
       default:
         AssertThrow(0, ExcNotImplemented());
index d380473c18400d3411ffeb574375a5817c354d7e..edd50e266fb9e66cba94f36e11cfdfd260ccc02d 100644 (file)
 
 $NOD
 576
-1  1.50000 0.00000 0
-2  1.06066 0.380789 0
-3  9.18485e-17 0.538516 0
-4  -1.06066 0.380789 0
-5  -1.50000 6.59492e-17 0
-6  1.80000 0.00000 0
-7  1.27279 0.800000 0
-8  1.10218e-16 1.13137 0
-9  -1.27279 0.800000 0
-10  -1.80000 1.38553e-16 0
-11  1.06066 -0.380789 0
-12  9.18485e-17 -0.538516 0
-13  -1.06066 -0.380789 0
-14  1.27279 -0.800000 0
-15  1.10218e-16 -1.13137 0
-16  -1.27279 -0.800000 0
-17  1.38582 0.206081 0
-18  1.38582 -0.206081 0
-19  0.574025 0.497524 0
-20  -0.574025 0.497524 0
-21  -1.38582 0.206081 0
-22  -1.38582 -0.206081 0
-23  1.62315 0.00000 0
-24  1.66298 0.432957 0
-25  1.66298 -0.432957 0
-26  1.14774 0.580789 0
-27  0.688830 1.04525 0
-28  9.93896e-17 0.821359 0
-29  -1.14774 0.580789 0
-30  -0.688830 1.04525 0
-31  -1.62315 1.00587e-16 0
-32  -1.66298 0.432957 0
-33  -1.66298 -0.432957 0
-34  0.574025 -0.497524 0
-35  -0.574025 -0.497524 0
-36  1.14774 -0.580789 0
-37  0.688830 -1.04525 0
-38  -2.98169e-16 -0.821359 0
-39  -1.14774 -0.580789 0
-40  -0.688830 -1.04525 0
-41  1.49960 0.314321 0
-42  0.621154 0.758837 0
-43  -0.621154 0.758837 0
-44  -1.49960 0.314321 0
-45  1.49960 -0.314321 0
-46  0.621154 -0.758837 0
-47  -0.621154 -0.758837 0
-48  -1.49960 -0.314321 0
-49  1.47118 0.105059 0
-50  1.24720 0.299184 0
-51  1.47118 -0.105059 0
-52  1.24720 -0.299184 0
-53  0.833355 0.447760 0
-54  0.292635 0.528169 0
-55  -0.833355 0.447760 0
-56  -0.292635 0.528169 0
-57  -1.47118 0.105059 0
-58  -1.24720 0.299184 0
-59  -1.47118 -0.105059 0
-60  -1.24720 -0.299184 0
-61  1.70454 0.00000 0
-62  1.55516 0.00000 0
-63  1.76541 0.220720 0
-64  1.49665 0.628556 0
-65  1.76541 -0.220720 0
-66  1.49665 -0.628556 0
-67  1.20529 0.687557 0
-68  1.09966 0.478813 0
-69  1.00003 0.940700 0
-70  0.351163 1.10963 0
-71  1.04373e-16 0.972353 0
-72  9.52261e-17 0.677144 0
-73  -1.20529 0.687557 0
-74  -1.09966 0.478813 0
-75  -1.00003 0.940700 0
-76  -0.351163 1.10963 0
-77  -1.70454 1.19079e-16 0
-78  -1.55516 8.29262e-17 0
-79  -1.76541 0.220720 0
-80  -1.49665 0.628556 0
-81  -1.76541 -0.220720 0
-82  -1.49665 -0.628556 0
-83  0.833355 -0.447760 0
-84  0.292635 -0.528169 0
-85  -0.833355 -0.447760 0
-86  -0.292635 -0.528169 0
-87  1.20529 -0.687557 0
-88  1.09966 -0.478813 0
-89  1.00003 -0.940700 0
-90  0.351163 -1.10963 0
-91  -3.13120e-16 -0.972353 0
-92  -2.85678e-16 -0.677144 0
-93  -1.20529 -0.687557 0
-94  -1.09966 -0.478813 0
-95  -1.00003 -0.940700 0
-96  -0.351163 -1.10963 0
-97  1.57479 0.372103 0
-98  1.43678 0.259132 0
-99  1.59197 0.160239 0
-100  1.34960 0.456323 0
-101  0.652301 0.898337 0
-102  0.595134 0.625599 0
-103  0.901776 0.682935 0
-104  0.316662 0.805577 0
-105  -0.901776 0.682935 0
-106  -0.316662 0.805577 0
-107  -0.652301 0.898337 0
-108  -0.595134 0.625599 0
-109  -1.59197 0.160239 0
-110  -1.34960 0.456323 0
-111  -1.57479 0.372103 0
-112  -1.43678 0.259132 0
-113  1.59197 -0.160239 0
-114  1.34960 -0.456323 0
-115  1.57479 -0.372103 0
-116  1.43678 -0.259132 0
-117  0.901776 -0.682935 0
-118  0.316662 -0.805577 0
-119  0.652301 -0.898337 0
-120  0.595134 -0.625599 0
-121  -0.652301 -0.898337 0
-122  -0.595134 -0.625599 0
-123  -0.901776 -0.682935 0
-124  -0.316662 -0.805577 0
-125  -1.57479 -0.372103 0
-126  -1.43678 -0.259132 0
-127  -1.59197 -0.160239 0
-128  -1.34960 -0.456323 0
-129  1.67179 0.189697 0
-130  1.41728 0.540210 0
-131  1.52528 0.132104 0
-132  1.29307 0.376201 0
-133  0.946994 0.808482 0
-134  0.332540 0.953669 0
-135  0.864001 0.563024 0
-136  0.303397 0.664133 0
-137  -0.946994 0.808482 0
-138  -0.864001 0.563024 0
-139  -0.332540 0.953669 0
-140  -0.303397 0.664133 0
-141  -1.67179 0.189697 0
-142  -1.52528 0.132104 0
-143  -1.41728 0.540210 0
-144  -1.29307 0.376201 0
-145  1.67179 -0.189697 0
-146  1.52528 -0.132104 0
-147  1.41728 -0.540210 0
-148  1.29307 -0.376201 0
-149  0.946994 -0.808482 0
-150  0.864001 -0.563024 0
-151  0.332540 -0.953669 0
-152  0.303397 -0.664133 0
-153  -0.946994 -0.808482 0
-154  -0.332540 -0.953669 0
-155  -0.864001 -0.563024 0
-156  -0.303397 -0.664133 0
-157  -1.67179 -0.189697 0
-158  -1.41728 -0.540210 0
-159  -1.52528 -0.132104 0
-160  -1.29307 -0.376201 0
-161  1.49278 0.0527838 0
-162  1.43541 0.156323 0
-163  1.32288 0.253855 0
-164  1.15952 0.341631 0
-165  1.49278 -0.0527838 0
-166  1.43541 -0.156323 0
-167  1.32288 -0.253855 0
-168  1.15952 -0.341631 0
-169  0.951590 0.416279 0
-170  0.707095 0.474929 0
-171  0.435427 0.515328 0
-172  0.147026 0.535923 0
-173  -0.951590 0.416279 0
-174  -0.707095 0.474929 0
-175  -0.435427 0.515328 0
-176  -0.147026 0.535923 0
-177  -1.49278 0.0527838 0
-178  -1.43541 0.156323 0
-179  -1.32288 0.253855 0
-180  -1.15952 0.341631 0
-181  -1.49278 -0.0527838 0
-182  -1.43541 -0.156323 0
-183  -1.32288 -0.253855 0
-184  -1.15952 -0.341631 0
-185  1.75047 0.00000 0
-186  1.66214 0.00000 0
-187  1.58752 0.00000 0
-188  1.52601 0.00000 0
-189  1.79133 0.110894 0
-190  1.72249 0.328420 0
-191  1.58746 0.533325 0
-192  1.39142 0.717734 0
-193  1.79133 -0.110894 0
-194  1.72249 -0.328420 0
-195  1.58746 -0.533325 0
-196  1.39142 -0.717734 0
-197  1.23777 0.743013 0
-198  1.17531 0.633520 0
-199  1.12255 0.529255 0
-200  1.07905 0.429358 0
-201  1.14191 0.874561 0
-202  0.848514 0.997780 0
-203  0.522512 1.08265 0
-204  0.176431 1.12592 0
-205  1.30420e-08 1.05078 0
-206  1.23839e-08 0.895932 0
-207  9.72076e-17 0.748480 0
-208  9.34410e-17 0.607204 0
-209  -1.23777 0.743013 0
-210  -1.17531 0.633520 0
-211  -1.12255 0.529255 0
-212  -1.07905 0.429358 0
-213  -1.14191 0.874561 0
-214  -0.848514 0.997780 0
-215  -0.522512 1.08265 0
-216  -0.176431 1.12592 0
-217  -1.75047 1.28683e-16 0
-218  -1.66214 1.09720e-16 0
-219  -1.58752 9.16623e-17 0
-220  -1.52601 7.43611e-17 0
-221  -1.79133 0.110894 0
-222  -1.72249 0.328420 0
-223  -1.58746 0.533325 0
-224  -1.39142 0.717734 0
-225  -1.79133 -0.110894 0
-226  -1.72249 -0.328420 0
-227  -1.58746 -0.533325 0
-228  -1.39142 -0.717734 0
-229  0.951590 -0.416279 0
-230  0.707095 -0.474929 0
-231  0.435427 -0.515328 0
-232  0.147026 -0.535923 0
-233  -0.951590 -0.416279 0
-234  -0.707095 -0.474929 0
-235  -0.435427 -0.515328 0
-236  -0.147026 -0.535923 0
-237  1.23777 -0.743013 0
-238  1.17531 -0.633520 0
-239  1.12255 -0.529255 0
-240  1.07905 -0.429358 0
-241  1.14191 -0.874561 0
-242  0.848514 -0.997780 0
-243  0.522512 -1.08265 0
-244  0.176431 -1.12592 0
-245  -1.30420e-08 -1.05078 0
-246  -1.23839e-08 -0.895932 0
-247  -2.91623e-16 -0.748480 0
-248  -2.80323e-16 -0.607204 0
-249  -1.23777 -0.743013 0
-250  -1.17531 -0.633520 0
-251  -1.12255 -0.529255 0
-252  -1.07905 -0.429358 0
-253  -1.14191 -0.874561 0
-254  -0.848514 -0.997780 0
-255  -0.522512 -1.08265 0
-256  -0.176431 -1.12592 0
-257  1.61722 0.402116 0
-258  1.53561 0.342858 0
-259  1.46668 0.286431 0
-260  1.40985 0.232367 0
-261  1.61534 0.0805073 0
-262  1.55326 0.238428 0
-263  1.43149 0.387186 0
-264  1.25472 0.521065 0
-265  0.669875 0.970793 0
-266  0.636072 0.827734 0
-267  0.607518 0.691505 0
-268  0.583978 0.560983 0
-269  1.02972 0.634919 0
-270  0.765150 0.724374 0
-271  0.471177 0.785992 0
-272  0.159097 0.817404 0
-273  -1.02972 0.634919 0
-274  -0.765150 0.724374 0
-275  -0.471177 0.785992 0
-276  -0.159097 0.817404 0
-277  -0.669875 0.970793 0
-278  -0.636072 0.827734 0
-279  -0.607518 0.691505 0
-280  -0.583978 0.560983 0
-281  -1.61534 0.0805073 0
-282  -1.55326 0.238428 0
-283  -1.43149 0.387186 0
-284  -1.25472 0.521065 0
-285  -1.61722 0.402116 0
-286  -1.53561 0.342858 0
-287  -1.46668 0.286431 0
-288  -1.40985 0.232367 0
-289  1.61534 -0.0805073 0
-290  1.55326 -0.238428 0
-291  1.43149 -0.387186 0
-292  1.25472 -0.521065 0
-293  1.61722 -0.402116 0
-294  1.53561 -0.342858 0
-295  1.46668 -0.286431 0
-296  1.40985 -0.232367 0
-297  1.02972 -0.634919 0
-298  0.765150 -0.724374 0
-299  0.471177 -0.785992 0
-300  0.159097 -0.817404 0
-301  0.669875 -0.970793 0
-302  0.636072 -0.827734 0
-303  0.607518 -0.691505 0
-304  0.583978 -0.560983 0
-305  -0.669875 -0.970793 0
-306  -0.636072 -0.827734 0
-307  -0.607518 -0.691505 0
-308  -0.583978 -0.560983 0
-309  -1.02972 -0.634919 0
-310  -0.765150 -0.724374 0
-311  -0.471177 -0.785992 0
-312  -0.159097 -0.817404 0
-313  -1.61722 -0.402116 0
-314  -1.53561 -0.342858 0
-315  -1.46668 -0.286431 0
-316  -1.40985 -0.232367 0
-317  -1.61534 -0.0805073 0
-318  -1.55326 -0.238428 0
-319  -1.43149 -0.387186 0
-320  -1.25472 -0.521065 0
-321  1.71683 0.204997 0
-322  1.63020 0.174788 0
-323  1.69634 0.0953072 0
-324  1.63115 0.282259 0
-325  1.45546 0.583781 0
-326  1.38202 0.497753 0
-327  1.50327 0.458364 0
-328  1.31763 0.616854 0
-329  1.55702 0.146021 0
-330  1.49669 0.118460 0
-331  1.54767 0.0663717 0
-332  1.48820 0.196564 0
-333  1.31998 0.415833 0
-334  1.26883 0.337345 0
-335  1.37153 0.319203 0
-336  1.20216 0.429575 0
-337  0.972507 0.873690 0
-338  0.923433 0.744940 0
-339  1.08135 0.751639 0
-340  0.803516 0.857539 0
-341  0.341499 1.03059 0
-342  0.324267 0.878717 0
-343  0.494803 0.930484 0
-344  0.167075 0.967671 0
-345  0.881979 0.622338 0
-346  0.847804 0.504872 0
-347  0.986583 0.523439 0
-348  0.733098 0.597187 0
-349  0.309710 0.734098 0
-350  0.297709 0.595537 0
-351  0.451439 0.647986 0
-352  0.152432 0.673883 0
-353  -1.08135 0.751639 0
-354  -0.803516 0.857539 0
-355  -0.972507 0.873690 0
-356  -0.923433 0.744940 0
-357  -0.986583 0.523439 0
-358  -0.733098 0.597187 0
-359  -0.881979 0.622338 0
-360  -0.847804 0.504872 0
-361  -0.494803 0.930484 0
-362  -0.167075 0.967671 0
-363  -0.341499 1.03059 0
-364  -0.324267 0.878717 0
-365  -0.451439 0.647986 0
-366  -0.152432 0.673883 0
-367  -0.309710 0.734098 0
-368  -0.297709 0.595537 0
-369  -1.69634 0.0953072 0
-370  -1.63115 0.282259 0
-371  -1.71683 0.204997 0
-372  -1.63020 0.174788 0
-373  -1.54767 0.0663717 0
-374  -1.48820 0.196564 0
-375  -1.55702 0.146021 0
-376  -1.49669 0.118460 0
-377  -1.50327 0.458364 0
-378  -1.31763 0.616854 0
-379  -1.45546 0.583781 0
-380  -1.38202 0.497753 0
-381  -1.37153 0.319203 0
-382  -1.20216 0.429575 0
-383  -1.31998 0.415833 0
-384  -1.26883 0.337345 0
-385  1.69634 -0.0953072 0
-386  1.63115 -0.282259 0
-387  1.71683 -0.204997 0
-388  1.63020 -0.174788 0
-389  1.54767 -0.0663717 0
-390  1.48820 -0.196564 0
-391  1.55702 -0.146021 0
-392  1.49669 -0.118460 0
-393  1.50327 -0.458364 0
-394  1.31763 -0.616854 0
-395  1.45546 -0.583781 0
-396  1.38202 -0.497753 0
-397  1.37153 -0.319203 0
-398  1.20216 -0.429575 0
-399  1.31998 -0.415833 0
-400  1.26883 -0.337345 0
-401  1.08135 -0.751639 0
-402  0.803516 -0.857539 0
-403  0.972507 -0.873690 0
-404  0.923433 -0.744940 0
-405  0.986583 -0.523439 0
-406  0.733098 -0.597187 0
-407  0.881979 -0.622338 0
-408  0.847804 -0.504872 0
-409  0.494803 -0.930484 0
-410  0.167075 -0.967671 0
-411  0.341499 -1.03059 0
-412  0.324267 -0.878717 0
-413  0.451439 -0.647986 0
-414  0.152432 -0.673883 0
-415  0.309710 -0.734098 0
-416  0.297709 -0.595537 0
-417  -0.972507 -0.873690 0
-418  -0.923433 -0.744940 0
-419  -1.08135 -0.751639 0
-420  -0.803516 -0.857539 0
-421  -0.341499 -1.03059 0
-422  -0.324267 -0.878717 0
-423  -0.494803 -0.930484 0
-424  -0.167075 -0.967671 0
-425  -0.881979 -0.622338 0
-426  -0.847804 -0.504872 0
-427  -0.986583 -0.523439 0
-428  -0.733098 -0.597187 0
-429  -0.309710 -0.734098 0
-430  -0.297709 -0.595537 0
-431  -0.451439 -0.647986 0
-432  -0.152432 -0.673883 0
-433  -1.71683 -0.204997 0
-434  -1.63020 -0.174788 0
-435  -1.69634 -0.0953072 0
-436  -1.63115 -0.282259 0
-437  -1.45546 -0.583781 0
-438  -1.38202 -0.497753 0
-439  -1.50327 -0.458364 0
-440  -1.31763 -0.616854 0
-441  -1.55702 -0.146021 0
-442  -1.49669 -0.118460 0
-443  -1.54767 -0.0663717 0
-444  -1.48820 -0.196564 0
-445  -1.31998 -0.415833 0
-446  -1.26883 -0.337345 0
-447  -1.37153 -0.319203 0
-448  -1.20216 -0.429575 0
-449  1.74204 0.102994 0
-450  1.67509 0.305025 0
-451  1.65413 0.0878167 0
-452  1.59056 0.260075 0
-453  1.54377 0.495334 0
-454  1.35313 0.666607 0
-455  1.46587 0.422340 0
-456  1.28485 0.568373 0
-457  1.57988 0.0733638 0
-458  1.51916 0.217272 0
-459  1.51866 0.0595164 0
-460  1.46030 0.176262 0
-461  1.40007 0.352831 0
-462  1.22717 0.474831 0
-463  1.34582 0.286234 0
-464  1.17962 0.385206 0
-465  1.11048 0.812263 0
-466  0.825165 0.926704 0
-467  1.05445 0.692565 0
-468  0.783525 0.790142 0
-469  0.508134 1.00553 0
-470  0.171576 1.04572 0
-471  0.482492 0.857354 0
-472  0.162918 0.891618 0
-473  1.00711 0.578583 0
-474  0.748352 0.660100 0
-475  0.968088 0.469375 0
-476  0.719355 0.535506 0
-477  0.460833 0.716250 0
-478  0.155604 0.744876 0
-479  0.442976 0.581058 0
-480  0.149575 0.604280 0
-481  -1.11048 0.812263 0
-482  -1.05445 0.692565 0
-483  -0.825165 0.926704 0
-484  -0.783525 0.790142 0
-485  -1.00711 0.578583 0
-486  -0.968088 0.469375 0
-487  -0.748352 0.660100 0
-488  -0.719355 0.535506 0
-489  -0.508134 1.00553 0
-490  -0.482492 0.857354 0
-491  -0.171576 1.04572 0
-492  -0.162918 0.891618 0
-493  -0.460833 0.716250 0
-494  -0.442976 0.581058 0
-495  -0.155604 0.744876 0
-496  -0.149575 0.604280 0
-497  -1.74204 0.102994 0
-498  -1.65413 0.0878167 0
-499  -1.67509 0.305025 0
-500  -1.59056 0.260075 0
-501  -1.57988 0.0733638 0
-502  -1.51866 0.0595164 0
-503  -1.51916 0.217272 0
-504  -1.46030 0.176262 0
-505  -1.54377 0.495334 0
-506  -1.46587 0.422340 0
-507  -1.35313 0.666607 0
-508  -1.28485 0.568373 0
-509  -1.40007 0.352831 0
-510  -1.34582 0.286234 0
-511  -1.22717 0.474831 0
-512  -1.17962 0.385206 0
-513  1.74204 -0.102994 0
-514  1.65413 -0.0878167 0
-515  1.67509 -0.305025 0
-516  1.59056 -0.260075 0
-517  1.57988 -0.0733638 0
-518  1.51866 -0.0595164 0
-519  1.51916 -0.217272 0
-520  1.46030 -0.176262 0
-521  1.54377 -0.495334 0
-522  1.46587 -0.422340 0
-523  1.35313 -0.666607 0
-524  1.28485 -0.568373 0
-525  1.40007 -0.352831 0
-526  1.34582 -0.286234 0
-527  1.22717 -0.474831 0
-528  1.17962 -0.385206 0
-529  1.11048 -0.812263 0
-530  1.05445 -0.692565 0
-531  0.825165 -0.926704 0
-532  0.783525 -0.790142 0
-533  1.00711 -0.578583 0
-534  0.968088 -0.469375 0
-535  0.748352 -0.660100 0
-536  0.719355 -0.535506 0
-537  0.508134 -1.00553 0
-538  0.482492 -0.857354 0
-539  0.171576 -1.04572 0
-540  0.162918 -0.891618 0
-541  0.460833 -0.716250 0
-542  0.442976 -0.581058 0
-543  0.155604 -0.744876 0
-544  0.149575 -0.604280 0
-545  -1.11048 -0.812263 0
-546  -0.825165 -0.926704 0
-547  -1.05445 -0.692565 0
-548  -0.783525 -0.790142 0
-549  -0.508134 -1.00553 0
-550  -0.171576 -1.04572 0
-551  -0.482492 -0.857354 0
-552  -0.162918 -0.891618 0
-553  -1.00711 -0.578583 0
-554  -0.748352 -0.660100 0
-555  -0.968088 -0.469375 0
-556  -0.719355 -0.535506 0
-557  -0.460833 -0.716250 0
-558  -0.155604 -0.744876 0
-559  -0.442976 -0.581058 0
-560  -0.149575 -0.604280 0
-561  -1.74204 -0.102994 0
-562  -1.67509 -0.305025 0
-563  -1.65413 -0.0878167 0
-564  -1.59056 -0.260075 0
-565  -1.54377 -0.495334 0
-566  -1.35313 -0.666607 0
-567  -1.46587 -0.422340 0
-568  -1.28485 -0.568373 0
-569  -1.57988 -0.0733638 0
-570  -1.51916 -0.217272 0
-571  -1.51866 -0.0595164 0
-572  -1.46030 -0.176262 0
-573  -1.40007 -0.352831 0
-574  -1.22717 -0.474831 0
-575  -1.34582 -0.286234 0
-576  -1.17962 -0.385206 0
+1  1.00000 0.00000 0
+2  0.707107 0.424264 0
+3  6.12323e-17 0.600000 0
+4  -0.707107 0.424264 0
+5  -1.00000 7.34788e-17 0
+6  2.00000 0.00000 0
+7  1.41421 0.848528 0
+8  1.22465e-16 1.20000 0
+9  -1.41421 0.848528 0
+10  -2.00000 1.46958e-16 0
+11  0.707107 -0.424264 0
+12  6.12323e-17 -0.600000 0
+13  -0.707107 -0.424264 0
+14  1.41421 -0.848528 0
+15  1.22465e-16 -1.20000 0
+16  -1.41421 -0.848528 0
+17  0.923880 0.229610 0
+18  0.923880 -0.229610 0
+19  0.382683 0.554328 0
+20  -0.382683 0.554328 0
+21  -0.923880 0.229610 0
+22  -0.923880 -0.229610 0
+23  1.50000 0.00000 0
+24  1.84776 0.459220 0
+25  1.84776 -0.459220 0
+26  1.06066 0.636396 0
+27  0.765367 1.10866 0
+28  9.18485e-17 0.900000 0
+29  -1.06066 0.636396 0
+30  -0.765367 1.10866 0
+31  -1.50000 1.10218e-16 0
+32  -1.84776 0.459220 0
+33  -1.84776 -0.459220 0
+34  0.382683 -0.554328 0
+35  -0.382683 -0.554328 0
+36  1.06066 -0.636396 0
+37  0.765367 -1.10866 0
+38  -2.75546e-16 -0.900000 0
+39  -1.06066 -0.636396 0
+40  -0.765367 -1.10866 0
+41  1.38582 0.344415 0
+42  0.574025 0.831492 0
+43  -0.574025 0.831492 0
+44  -1.38582 0.344415 0
+45  1.38582 -0.344415 0
+46  0.574025 -0.831492 0
+47  -0.574025 -0.831492 0
+48  -1.38582 -0.344415 0
+49  0.980785 0.117054 0
+50  0.831470 0.333342 0
+51  0.980785 -0.117054 0
+52  0.831470 -0.333342 0
+53  0.555570 0.498882 0
+54  0.195090 0.588471 0
+55  -0.555570 0.498882 0
+56  -0.195090 0.588471 0
+57  -0.980785 0.117054 0
+58  -0.831470 0.333342 0
+59  -0.980785 -0.117054 0
+60  -0.831470 -0.333342 0
+61  1.75000 0.00000 0
+62  1.25000 0.00000 0
+63  1.96157 0.234108 0
+64  1.66294 0.666684 0
+65  1.96157 -0.234108 0
+66  1.66294 -0.666684 0
+67  1.23744 0.742462 0
+68  0.883883 0.530330 0
+69  1.11114 0.997764 0
+70  0.390181 1.17694 0
+71  1.07157e-16 1.05000 0
+72  7.65404e-17 0.750000 0
+73  -1.23744 0.742462 0
+74  -0.883883 0.530330 0
+75  -1.11114 0.997764 0
+76  -0.390181 1.17694 0
+77  -1.75000 1.28588e-16 0
+78  -1.25000 9.18485e-17 0
+79  -1.96157 0.234108 0
+80  -1.66294 0.666684 0
+81  -1.96157 -0.234108 0
+82  -1.66294 -0.666684 0
+83  0.555570 -0.498882 0
+84  0.195090 -0.588471 0
+85  -0.555570 -0.498882 0
+86  -0.195090 -0.588471 0
+87  1.23744 -0.742462 0
+88  0.883883 -0.530330 0
+89  1.11114 -0.997764 0
+90  0.390181 -1.17694 0
+91  -3.21470e-16 -1.05000 0
+92  -2.29621e-16 -0.750000 0
+93  -1.23744 -0.742462 0
+94  -0.883883 -0.530330 0
+95  -1.11114 -0.997764 0
+96  -0.390181 -1.17694 0
+97  1.61679 0.401818 0
+98  1.15485 0.287013 0
+99  1.47118 0.175581 0
+100  1.24720 0.500013 0
+101  0.669696 0.970074 0
+102  0.478354 0.692910 0
+103  0.833355 0.748323 0
+104  0.292635 0.882707 0
+105  -0.833355 0.748323 0
+106  -0.292635 0.882707 0
+107  -0.669696 0.970074 0
+108  -0.478354 0.692910 0
+109  -1.47118 0.175581 0
+110  -1.24720 0.500013 0
+111  -1.61679 0.401818 0
+112  -1.15485 0.287013 0
+113  1.47118 -0.175581 0
+114  1.24720 -0.500013 0
+115  1.61679 -0.401818 0
+116  1.15485 -0.287013 0
+117  0.833355 -0.748323 0
+118  0.292635 -0.882707 0
+119  0.669696 -0.970074 0
+120  0.478354 -0.692910 0
+121  -0.669696 -0.970074 0
+122  -0.478354 -0.692910 0
+123  -0.833355 -0.748323 0
+124  -0.292635 -0.882707 0
+125  -1.61679 -0.401818 0
+126  -1.15485 -0.287013 0
+127  -1.47118 -0.175581 0
+128  -1.24720 -0.500013 0
+129  1.71637 0.204845 0
+130  1.45507 0.583349 0
+131  1.22598 0.146318 0
+132  1.03934 0.416678 0
+133  0.972248 0.873043 0
+134  0.341408 1.02982 0
+135  0.694463 0.623602 0
+136  0.243863 0.735589 0
+137  -0.972248 0.873043 0
+138  -0.694463 0.623602 0
+139  -0.341408 1.02982 0
+140  -0.243863 0.735589 0
+141  -1.71637 0.204845 0
+142  -1.22598 0.146318 0
+143  -1.45507 0.583349 0
+144  -1.03934 0.416678 0
+145  1.71637 -0.204845 0
+146  1.22598 -0.146318 0
+147  1.45507 -0.583349 0
+148  1.03934 -0.416678 0
+149  0.972248 -0.873043 0
+150  0.694463 -0.623602 0
+151  0.341408 -1.02982 0
+152  0.243863 -0.735589 0
+153  -0.972248 -0.873043 0
+154  -0.341408 -1.02982 0
+155  -0.694463 -0.623602 0
+156  -0.243863 -0.735589 0
+157  -1.71637 -0.204845 0
+158  -1.45507 -0.583349 0
+159  -1.22598 -0.146318 0
+160  -1.03934 -0.416678 0
+161  0.995185 0.0588103 0
+162  0.956940 0.174171 0
+163  0.881921 0.282838 0
+164  0.773010 0.380636 0
+165  0.995185 -0.0588103 0
+166  0.956940 -0.174171 0
+167  0.881921 -0.282838 0
+168  0.773010 -0.380636 0
+169  0.634393 0.463806 0
+170  0.471397 0.529153 0
+171  0.290285 0.574164 0
+172  0.0980171 0.597111 0
+173  -0.634393 0.463806 0
+174  -0.471397 0.529153 0
+175  -0.290285 0.574164 0
+176  -0.0980171 0.597111 0
+177  -0.995185 0.0588103 0
+178  -0.956940 0.174171 0
+179  -0.881921 0.282838 0
+180  -0.773010 0.380636 0
+181  -0.995185 -0.0588103 0
+182  -0.956940 -0.174171 0
+183  -0.881921 -0.282838 0
+184  -0.773010 -0.380636 0
+185  1.87500 0.00000 0
+186  1.62500 0.00000 0
+187  1.37500 0.00000 0
+188  1.12500 0.00000 0
+189  1.99037 0.117621 0
+190  1.91388 0.348342 0
+191  1.76384 0.565676 0
+192  1.54602 0.761272 0
+193  1.99037 -0.117621 0
+194  1.91388 -0.348342 0
+195  1.76384 -0.565676 0
+196  1.54602 -0.761272 0
+197  1.32583 0.795495 0
+198  1.14905 0.689429 0
+199  0.972272 0.583363 0
+200  0.795495 0.477297 0
+201  1.26879 0.927613 0
+202  0.942793 1.05831 0
+203  0.580569 1.14833 0
+204  0.196034 1.19422 0
+205  1.14811e-16 1.12500 0
+206  9.95026e-17 0.975000 0
+207  8.41945e-17 0.825000 0
+208  6.88864e-17 0.675000 0
+209  -1.32583 0.795495 0
+210  -1.14905 0.689429 0
+211  -0.972272 0.583363 0
+212  -0.795495 0.477297 0
+213  -1.26879 0.927613 0
+214  -0.942793 1.05831 0
+215  -0.580569 1.14833 0
+216  -0.196034 1.19422 0
+217  -1.87500 1.37773e-16 0
+218  -1.62500 1.19403e-16 0
+219  -1.37500 1.01033e-16 0
+220  -1.12500 8.26637e-17 0
+221  -1.99037 0.117621 0
+222  -1.91388 0.348342 0
+223  -1.76384 0.565676 0
+224  -1.54602 0.761272 0
+225  -1.99037 -0.117621 0
+226  -1.91388 -0.348342 0
+227  -1.76384 -0.565676 0
+228  -1.54602 -0.761272 0
+229  0.634393 -0.463806 0
+230  0.471397 -0.529153 0
+231  0.290285 -0.574164 0
+232  0.0980171 -0.597111 0
+233  -0.634393 -0.463806 0
+234  -0.471397 -0.529153 0
+235  -0.290285 -0.574164 0
+236  -0.0980171 -0.597111 0
+237  1.32583 -0.795495 0
+238  1.14905 -0.689429 0
+239  0.972272 -0.583363 0
+240  0.795495 -0.477297 0
+241  1.26879 -0.927613 0
+242  0.942793 -1.05831 0
+243  0.580569 -1.14833 0
+244  0.196034 -1.19422 0
+245  -3.44432e-16 -1.12500 0
+246  -2.98508e-16 -0.975000 0
+247  -2.52583e-16 -0.825000 0
+248  -2.06659e-16 -0.675000 0
+249  -1.32583 -0.795495 0
+250  -1.14905 -0.689429 0
+251  -0.972272 -0.583363 0
+252  -0.795495 -0.477297 0
+253  -1.26879 -0.927613 0
+254  -0.942793 -1.05831 0
+255  -0.580569 -1.14833 0
+256  -0.196034 -1.19422 0
+257  1.73227 0.430519 0
+258  1.50130 0.373116 0
+259  1.27033 0.315714 0
+260  1.03936 0.258311 0
+261  1.49278 0.0882154 0
+262  1.43541 0.261256 0
+263  1.32288 0.424257 0
+264  1.15952 0.570954 0
+265  0.717531 1.03936 0
+266  0.621861 0.900783 0
+267  0.526190 0.762201 0
+268  0.430519 0.623619 0
+269  0.951590 0.695709 0
+270  0.707095 0.793729 0
+271  0.435427 0.861246 0
+272  0.147026 0.895666 0
+273  -0.951590 0.695709 0
+274  -0.707095 0.793729 0
+275  -0.435427 0.861246 0
+276  -0.147026 0.895666 0
+277  -0.717531 1.03936 0
+278  -0.621861 0.900783 0
+279  -0.526190 0.762201 0
+280  -0.430519 0.623619 0
+281  -1.49278 0.0882154 0
+282  -1.43541 0.261256 0
+283  -1.32288 0.424257 0
+284  -1.15952 0.570954 0
+285  -1.73227 0.430519 0
+286  -1.50130 0.373116 0
+287  -1.27033 0.315714 0
+288  -1.03936 0.258311 0
+289  1.49278 -0.0882154 0
+290  1.43541 -0.261256 0
+291  1.32288 -0.424257 0
+292  1.15952 -0.570954 0
+293  1.73227 -0.430519 0
+294  1.50130 -0.373116 0
+295  1.27033 -0.315714 0
+296  1.03936 -0.258311 0
+297  0.951590 -0.695709 0
+298  0.707095 -0.793729 0
+299  0.435427 -0.861246 0
+300  0.147026 -0.895666 0
+301  0.717531 -1.03936 0
+302  0.621861 -0.900783 0
+303  0.526190 -0.762201 0
+304  0.430519 -0.623619 0
+305  -0.717531 -1.03936 0
+306  -0.621861 -0.900783 0
+307  -0.526190 -0.762201 0
+308  -0.430519 -0.623619 0
+309  -0.951590 -0.695709 0
+310  -0.707095 -0.793729 0
+311  -0.435427 -0.861246 0
+312  -0.147026 -0.895666 0
+313  -1.73227 -0.430519 0
+314  -1.50130 -0.373116 0
+315  -1.27033 -0.315714 0
+316  -1.03936 -0.258311 0
+317  -1.49278 -0.0882154 0
+318  -1.43541 -0.261256 0
+319  -1.32288 -0.424257 0
+320  -1.15952 -0.570954 0
+321  1.83897 0.219477 0
+322  1.59378 0.190213 0
+323  1.74157 0.102918 0
+324  1.67465 0.304799 0
+325  1.55901 0.625017 0
+326  1.35114 0.541681 0
+327  1.54336 0.494967 0
+328  1.35277 0.666113 0
+329  1.34858 0.160950 0
+330  1.10338 0.131686 0
+331  1.24398 0.0735129 0
+332  1.19618 0.217714 0
+333  1.14327 0.458345 0
+334  0.935403 0.375010 0
+335  1.10240 0.353548 0
+336  0.966263 0.475795 0
+337  1.04169 0.935403 0
+338  0.902802 0.810683 0
+339  1.11019 0.811661 0
+340  0.824944 0.926017 0
+341  0.365794 1.10338 0
+342  0.317022 0.956266 0
+343  0.507998 1.00479 0
+344  0.171530 1.04494 0
+345  0.763909 0.685962 0
+346  0.625017 0.561242 0
+347  0.792992 0.579758 0
+348  0.589246 0.661441 0
+349  0.268249 0.809148 0
+350  0.219477 0.662030 0
+351  0.362856 0.717705 0
+352  0.122521 0.746389 0
+353  -1.11019 0.811661 0
+354  -0.824944 0.926017 0
+355  -1.04169 0.935403 0
+356  -0.902802 0.810683 0
+357  -0.792992 0.579758 0
+358  -0.589246 0.661441 0
+359  -0.763909 0.685962 0
+360  -0.625017 0.561242 0
+361  -0.507998 1.00479 0
+362  -0.171530 1.04494 0
+363  -0.365794 1.10338 0
+364  -0.317022 0.956266 0
+365  -0.362856 0.717705 0
+366  -0.122521 0.746389 0
+367  -0.268249 0.809148 0
+368  -0.219477 0.662030 0
+369  -1.74157 0.102918 0
+370  -1.67465 0.304799 0
+371  -1.83897 0.219477 0
+372  -1.59378 0.190213 0
+373  -1.24398 0.0735129 0
+374  -1.19618 0.217714 0
+375  -1.34858 0.160950 0
+376  -1.10338 0.131686 0
+377  -1.54336 0.494967 0
+378  -1.35277 0.666113 0
+379  -1.55901 0.625017 0
+380  -1.35114 0.541681 0
+381  -1.10240 0.353548 0
+382  -0.966263 0.475795 0
+383  -1.14327 0.458345 0
+384  -0.935403 0.375010 0
+385  1.74157 -0.102918 0
+386  1.67465 -0.304799 0
+387  1.83897 -0.219477 0
+388  1.59378 -0.190213 0
+389  1.24398 -0.0735129 0
+390  1.19618 -0.217714 0
+391  1.34858 -0.160950 0
+392  1.10338 -0.131686 0
+393  1.54336 -0.494967 0
+394  1.35277 -0.666113 0
+395  1.55901 -0.625017 0
+396  1.35114 -0.541681 0
+397  1.10240 -0.353548 0
+398  0.966263 -0.475795 0
+399  1.14327 -0.458345 0
+400  0.935403 -0.375010 0
+401  1.11019 -0.811661 0
+402  0.824944 -0.926017 0
+403  1.04169 -0.935403 0
+404  0.902802 -0.810683 0
+405  0.792992 -0.579758 0
+406  0.589246 -0.661441 0
+407  0.763909 -0.685962 0
+408  0.625017 -0.561242 0
+409  0.507998 -1.00479 0
+410  0.171530 -1.04494 0
+411  0.365794 -1.10338 0
+412  0.317022 -0.956266 0
+413  0.362856 -0.717705 0
+414  0.122521 -0.746389 0
+415  0.268249 -0.809148 0
+416  0.219477 -0.662030 0
+417  -1.04169 -0.935403 0
+418  -0.902802 -0.810683 0
+419  -1.11019 -0.811661 0
+420  -0.824944 -0.926017 0
+421  -0.365794 -1.10338 0
+422  -0.317022 -0.956266 0
+423  -0.507998 -1.00479 0
+424  -0.171530 -1.04494 0
+425  -0.763909 -0.685962 0
+426  -0.625017 -0.561242 0
+427  -0.792992 -0.579758 0
+428  -0.589246 -0.661441 0
+429  -0.268249 -0.809148 0
+430  -0.219477 -0.662030 0
+431  -0.362856 -0.717705 0
+432  -0.122521 -0.746389 0
+433  -1.83897 -0.219477 0
+434  -1.59378 -0.190213 0
+435  -1.74157 -0.102918 0
+436  -1.67465 -0.304799 0
+437  -1.55901 -0.625017 0
+438  -1.35114 -0.541681 0
+439  -1.54336 -0.494967 0
+440  -1.35277 -0.666113 0
+441  -1.34858 -0.160950 0
+442  -1.10338 -0.131686 0
+443  -1.24398 -0.0735129 0
+444  -1.19618 -0.217714 0
+445  -1.14327 -0.458345 0
+446  -0.935403 -0.375010 0
+447  -1.10240 -0.353548 0
+448  -0.966263 -0.475795 0
+449  1.86597 0.110269 0
+450  1.79426 0.326570 0
+451  1.61718 0.0955667 0
+452  1.55503 0.283028 0
+453  1.65360 0.530321 0
+454  1.44939 0.713692 0
+455  1.43312 0.459612 0
+456  1.25614 0.618533 0
+457  1.36838 0.0808641 0
+458  1.31579 0.239485 0
+459  1.11958 0.0661616 0
+460  1.07656 0.195942 0
+461  1.21264 0.388902 0
+462  1.06289 0.523374 0
+463  0.992161 0.318193 0
+464  0.869637 0.428215 0
+465  1.18949 0.869637 0
+466  0.883869 0.992161 0
+467  1.03089 0.753685 0
+468  0.766020 0.859873 0
+469  0.544284 1.07656 0
+470  0.183782 1.11958 0
+471  0.471713 0.933017 0
+472  0.159278 0.970305 0
+473  0.872291 0.637734 0
+474  0.648171 0.727585 0
+475  0.713692 0.521782 0
+476  0.530321 0.595297 0
+477  0.399141 0.789476 0
+478  0.134774 0.821027 0
+479  0.326570 0.645935 0
+480  0.110269 0.671750 0
+481  -1.18949 0.869637 0
+482  -1.03089 0.753685 0
+483  -0.883869 0.992161 0
+484  -0.766020 0.859873 0
+485  -0.872291 0.637734 0
+486  -0.713692 0.521782 0
+487  -0.648171 0.727585 0
+488  -0.530321 0.595297 0
+489  -0.544284 1.07656 0
+490  -0.471713 0.933017 0
+491  -0.183782 1.11958 0
+492  -0.159278 0.970305 0
+493  -0.399141 0.789476 0
+494  -0.326570 0.645935 0
+495  -0.134774 0.821027 0
+496  -0.110269 0.671750 0
+497  -1.86597 0.110269 0
+498  -1.61718 0.0955667 0
+499  -1.79426 0.326570 0
+500  -1.55503 0.283028 0
+501  -1.36838 0.0808641 0
+502  -1.11958 0.0661616 0
+503  -1.31579 0.239485 0
+504  -1.07656 0.195942 0
+505  -1.65360 0.530321 0
+506  -1.43312 0.459612 0
+507  -1.44939 0.713692 0
+508  -1.25614 0.618533 0
+509  -1.21264 0.388902 0
+510  -0.992161 0.318193 0
+511  -1.06289 0.523374 0
+512  -0.869637 0.428215 0
+513  1.86597 -0.110269 0
+514  1.61718 -0.0955667 0
+515  1.79426 -0.326570 0
+516  1.55503 -0.283028 0
+517  1.36838 -0.0808641 0
+518  1.11958 -0.0661616 0
+519  1.31579 -0.239485 0
+520  1.07656 -0.195942 0
+521  1.65360 -0.530321 0
+522  1.43312 -0.459612 0
+523  1.44939 -0.713692 0
+524  1.25614 -0.618533 0
+525  1.21264 -0.388902 0
+526  0.992161 -0.318193 0
+527  1.06289 -0.523374 0
+528  0.869637 -0.428215 0
+529  1.18949 -0.869637 0
+530  1.03089 -0.753685 0
+531  0.883869 -0.992161 0
+532  0.766020 -0.859873 0
+533  0.872291 -0.637734 0
+534  0.713692 -0.521782 0
+535  0.648171 -0.727585 0
+536  0.530321 -0.595297 0
+537  0.544284 -1.07656 0
+538  0.471713 -0.933017 0
+539  0.183782 -1.11958 0
+540  0.159278 -0.970305 0
+541  0.399141 -0.789476 0
+542  0.326570 -0.645935 0
+543  0.134774 -0.821027 0
+544  0.110269 -0.671750 0
+545  -1.18949 -0.869637 0
+546  -0.883869 -0.992161 0
+547  -1.03089 -0.753685 0
+548  -0.766020 -0.859873 0
+549  -0.544284 -1.07656 0
+550  -0.183782 -1.11958 0
+551  -0.471713 -0.933017 0
+552  -0.159278 -0.970305 0
+553  -0.872291 -0.637734 0
+554  -0.648171 -0.727585 0
+555  -0.713692 -0.521782 0
+556  -0.530321 -0.595297 0
+557  -0.399141 -0.789476 0
+558  -0.134774 -0.821027 0
+559  -0.326570 -0.645935 0
+560  -0.110269 -0.671750 0
+561  -1.86597 -0.110269 0
+562  -1.79426 -0.326570 0
+563  -1.61718 -0.0955667 0
+564  -1.55503 -0.283028 0
+565  -1.65360 -0.530321 0
+566  -1.44939 -0.713692 0
+567  -1.43312 -0.459612 0
+568  -1.25614 -0.618533 0
+569  -1.36838 -0.0808641 0
+570  -1.31579 -0.239485 0
+571  -1.11958 -0.0661616 0
+572  -1.07656 -0.195942 0
+573  -1.21264 -0.388902 0
+574  -1.06289 -0.523374 0
+575  -0.992161 -0.318193 0
+576  -0.869637 -0.428215 0
 $ENDNOD
 $ELM
 512
index 17b89660915058b6ee6813e570c14c4fc8275df0..e6b99121e5477cee499c45089513739fa35d344b 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/grid/tria_accessor.h>
 #include <deal.II/grid/tria_iterator.h>
 
-#define TOLERANCE 1e-12
+#define TOLERANCE 1e-14
 
 
 
 template <int dim, int spacedim>
 Point<spacedim>
 test_push(const Tensor<1, spacedim> &axis,
-          const double               c_parameter,
+          const double               eccentricity,
           const Point<spacedim> &    space_point,
           unsigned int               ref = 1)
 {
   EllipticalManifold<dim, spacedim> manifold(Point<spacedim>(),
                                              axis,
-                                             c_parameter);
+                                             eccentricity);
   const Point<spacedim> chart_point(manifold.push_forward(space_point));
   deallog << space_point << " -> ";
   deallog << chart_point << std::endl;
@@ -54,13 +54,13 @@ test_push(const Tensor<1, spacedim> &axis,
 template <int dim, int spacedim>
 Point<spacedim>
 test_pull(const Tensor<1, spacedim> &axis,
-          const double               c_parameter,
+          const double               eccentricity,
           const Point<spacedim> &    chart_point,
           unsigned int               ref = 1)
 {
   EllipticalManifold<dim, spacedim> manifold(Point<spacedim>(),
                                              axis,
-                                             c_parameter);
+                                             eccentricity);
   const Point<spacedim> space_point(manifold.pull_back(chart_point));
   deallog << space_point << " <- ";
   deallog << chart_point << std::endl;
@@ -72,11 +72,11 @@ test_pull(const Tensor<1, spacedim> &axis,
 // Function that tests pull_back() and push_forward().
 void
 local_test(const Tensor<1, 2> &axis,
-           const double        c_parameter,
+           const double        eccentricity,
            const Point<2> &    space_point)
 {
-  const Point<2> pt1 = test_push<2, 2>(axis, c_parameter, space_point);
-  const Point<2> pt2 = test_pull<2, 2>(axis, c_parameter, pt1);
+  const Point<2> pt1 = test_push<2, 2>(axis, eccentricity, space_point);
+  const Point<2> pt2 = test_pull<2, 2>(axis, eccentricity, pt1);
   if ((space_point - pt2).norm() < TOLERANCE)
     {
       deallog << "OK" << std::endl;
@@ -95,20 +95,20 @@ test()
   {
     // test on a default manifold
     const Tensor<1, 2> axis({1.0, 0.0});
-    const double       c_parameter(0.1);
-    local_test(axis, c_parameter, Point<2>(1.1, 0.0));
-    local_test(axis, c_parameter, Point<2>(2.0, 0.0));
-    local_test(axis, c_parameter, Point<2>(3.0, 0.0));
-    local_test(axis, c_parameter, Point<2>(4.0, 2.0));
+    const double       eccentricity(0.1);
+    local_test(axis, eccentricity, Point<2>(1.1, 0.0));
+    local_test(axis, eccentricity, Point<2>(2.0, 0.0));
+    local_test(axis, eccentricity, Point<2>(3.0, 0.0));
+    local_test(axis, eccentricity, Point<2>(4.0, 2.0));
   }
   {
     // test on a rotated manifold
     const Tensor<1, 2> axis({1.0, -1.0});
-    const double       c_parameter(0.1);
-    local_test(axis, c_parameter, Point<2>(1.1, 0.0));
-    local_test(axis, c_parameter, Point<2>(2.0, 0.0));
-    local_test(axis, c_parameter, Point<2>(3.0, 0.0));
-    local_test(axis, c_parameter, Point<2>(4.0, 2.0));
+    const double       eccentricity(0.1);
+    local_test(axis, eccentricity, Point<2>(1.1, 0.0));
+    local_test(axis, eccentricity, Point<2>(2.0, 0.0));
+    local_test(axis, eccentricity, Point<2>(3.0, 0.0));
+    local_test(axis, eccentricity, Point<2>(4.0, 2.0));
   }
 }
 
index 755935b8f60e1141dc5f347a2388206d1c38caba..0cf687080f50759e77066df0adad4be2069ca38c 100644 (file)
@@ -1,25 +1,25 @@
 
-DEAL::1.10000 0.00000 -> 0.166852 0.00000
-DEAL::1.10000 0.00000 <- 0.166852 0.00000
+DEAL::1.10000 0.00000 -> 11.0000 0.00000
+DEAL::1.10000 0.00000 <- 11.0000 0.00000
 DEAL::OK
-DEAL::2.00000 0.00000 -> 0.376220 0.00000
-DEAL::2.00000 0.00000 <- 0.376220 0.00000
+DEAL::2.00000 0.00000 -> 20.0000 0.00000
+DEAL::2.00000 0.00000 <- 20.0000 0.00000
 DEAL::OK
-DEAL::3.00000 0.00000 -> 1.00677 0.00000
-DEAL::3.00000 0.00000 <- 1.00677 0.00000
+DEAL::3.00000 0.00000 -> 30.0000 0.00000
+DEAL::3.00000 0.00000 <- 30.0000 0.00000
 DEAL::OK
-DEAL::4.00000 2.00000 -> -1.13642 2.48147
-DEAL::4.00000 2.00000 <- -1.13642 2.48147
+DEAL::4.00000 2.00000 -> -16.6459 36.1896
+DEAL::4.00000 2.00000 <- -16.6459 36.1896
 DEAL::OK
-DEAL::1.10000 0.00000 -> 0.117982 -0.117982
-DEAL::1.10000 0.00000 <- 0.117982 -0.117982
+DEAL::1.10000 0.00000 -> 7.77817 -7.77817
+DEAL::1.10000 0.00000 <- 7.77817 -7.77817
 DEAL::OK
-DEAL::2.00000 0.00000 -> 0.266027 -0.266027
-DEAL::2.00000 0.00000 <- 0.266027 -0.266027
+DEAL::2.00000 0.00000 -> 14.1421 -14.1421
+DEAL::2.00000 0.00000 <- 14.1421 -14.1421
 DEAL::OK
-DEAL::3.00000 0.00000 -> 0.711891 -0.711891
-DEAL::3.00000 0.00000 <- 0.711891 -0.711891
+DEAL::3.00000 0.00000 -> 21.2132 -21.2132
+DEAL::3.00000 0.00000 <- 21.2132 -21.2132
 DEAL::OK
-DEAL::4.00000 2.00000 -> 0.951088 2.55823
-DEAL::4.00000 2.00000 <- 0.951088 2.55823
+DEAL::4.00000 2.00000 -> 13.8195 37.3603
+DEAL::4.00000 2.00000 <- 13.8195 37.3603
 DEAL::OK

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.