From: Stefano Dominici Date: Mon, 3 Dec 2018 13:25:35 +0000 (+0100) Subject: Modified implementation in favor of a constant eccentricity manifold X-Git-Tag: v9.1.0-rc1~498^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bdb54a333144897339f75e8441f9ee2e5a79c2ca;p=dealii.git Modified implementation in favor of a constant eccentricity manifold 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. --- diff --git a/doc/doxygen/images/elliptical_hyper_shell.png b/doc/doxygen/images/elliptical_hyper_shell.png index c4e70c6278..7da426131d 100644 Binary files a/doc/doxygen/images/elliptical_hyper_shell.png and b/doc/doxygen/images/elliptical_hyper_shell.png differ diff --git a/include/deal.II/grid/manifold_lib.h b/include/deal.II/grid/manifold_lib.h index dfcc581858..6eb5d7e328 100644 --- a/include/deal.II/grid/manifold_lib.h +++ b/include/deal.II/grid/manifold_lib.h @@ -468,11 +468,25 @@ private: * href="https://en.wikipedia.org/wiki/Elliptic_coordinate_system">Wikipedia * . * + * 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 elliptical_manifold_01 produces the following * triangulation: * @image html elliptical_hyper_shell.png * @@ -486,19 +500,19 @@ class EllipticalManifold : public ChartManifold 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 x-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 & center, const Tensor<1, spacedim> &major_axis_direction, - const double c_parameter); + const double eccentricity); virtual std::unique_ptr> clone() const override; @@ -532,9 +546,10 @@ protected: */ const Point 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: /** diff --git a/source/grid/manifold_lib.cc b/source/grid/manifold_lib.cc index e809bcf27e..7387e35f89 100644 --- a/source/grid/manifold_lib.cc +++ b/source/grid/manifold_lib.cc @@ -1156,18 +1156,20 @@ template EllipticalManifold::EllipticalManifold( const Point & center, const Tensor<1, spacedim> &major_axis_direction, - const double c_parameter) + const double eccentricity) : ChartManifold( EllipticalManifold::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 std::unique_ptr> EllipticalManifold::clone() const { - return std::make_unique>(center, - direction, - c_parameter); + const double eccentricity = 1.0 / cosh_u; + return std_cxx14::make_unique>( + 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; } diff --git a/tests/manifold/elliptical_manifold_01.cc b/tests/manifold/elliptical_manifold_01.cc index a9a6b0affd..cc1bf38599 100644 --- a/tests/manifold/elliptical_manifold_01.cc +++ b/tests/manifold/elliptical_manifold_01.cc @@ -41,64 +41,27 @@ // 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> generate_shell_points(const Point<2> ¢er, const double radius0, const double radius1, - const double ellPar) + const double eccentricity) { - const std::array radii{{radius0, radius1}}; + const std::array radii{ + {radius0 * eccentricity, radius1 * eccentricity}}; const std::array angle{ {0, numbers::PI_4, numbers::PI_2, 3.0 * numbers::PI_4, numbers::PI}}; std::vector> 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 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> points = - generate_shell_points(center, inner_radius, outer_radius, c_param); + generate_shell_points(center, inner_radius, outer_radius, eccentricity); std::vector> 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 void test(unsigned int ref = 1) { - // deallog << "Testing dim " << dim << ", spacedim " << spacedim << std::endl; - Triangulation tria; switch (dim) { case 2: - build_simple_hyper_shell(tria, Point(), 1.5, 1.8, 1.4); + build_simple_hyper_shell(tria, Point(), 1.0, 2.0, 0.8); break; default: AssertThrow(0, ExcNotImplemented()); diff --git a/tests/manifold/elliptical_manifold_01.output b/tests/manifold/elliptical_manifold_01.output index d380473c18..edd50e266f 100644 --- a/tests/manifold/elliptical_manifold_01.output +++ b/tests/manifold/elliptical_manifold_01.output @@ -1,582 +1,582 @@ $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 diff --git a/tests/manifold/elliptical_manifold_02.cc b/tests/manifold/elliptical_manifold_02.cc index 17b8966091..e6b99121e5 100644 --- a/tests/manifold/elliptical_manifold_02.cc +++ b/tests/manifold/elliptical_manifold_02.cc @@ -28,7 +28,7 @@ #include #include -#define TOLERANCE 1e-12 +#define TOLERANCE 1e-14 @@ -36,13 +36,13 @@ template Point test_push(const Tensor<1, spacedim> &axis, - const double c_parameter, + const double eccentricity, const Point & space_point, unsigned int ref = 1) { EllipticalManifold manifold(Point(), axis, - c_parameter); + eccentricity); const Point 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 Point test_pull(const Tensor<1, spacedim> &axis, - const double c_parameter, + const double eccentricity, const Point & chart_point, unsigned int ref = 1) { EllipticalManifold manifold(Point(), axis, - c_parameter); + eccentricity); const Point 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)); } } diff --git a/tests/manifold/elliptical_manifold_02.output b/tests/manifold/elliptical_manifold_02.output index 755935b8f6..0cf687080f 100644 --- a/tests/manifold/elliptical_manifold_02.output +++ b/tests/manifold/elliptical_manifold_02.output @@ -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