From: Martin Kronbichler Date: Wed, 22 Mar 2017 19:20:30 +0000 (+0100) Subject: Work on review comments X-Git-Tag: v8.5.0-rc1~17^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=64cd8ee993ff976338b75d3ac306c040ed365a43;p=dealii.git Work on review comments --- diff --git a/doc/news/changes/minor/20170317MartinKronbichler b/doc/news/changes/minor/20170317MartinKronbichler index b1e6059331..41f920cfdc 100644 --- a/doc/news/changes/minor/20170317MartinKronbichler +++ b/doc/news/changes/minor/20170317MartinKronbichler @@ -5,8 +5,6 @@ implementation, a smoothing algorithm is invoked that interpolates from the whole perimeter of a cell's (or a face's) interior in case two or more manifolds are adjacent to the cell, like a Boundary object and the StraightBoundary in the interior. If only one manifold is present, the new -points are interpolated from the surrounding vertices only. In case the -smoothing is undesired, it can be disabled by an argument -@p smooth_support_points passed to the constructor of MappingQGeneric. +points are interpolated from the surrounding vertices only.
(Martin Kronbichler, 2017/03/17) diff --git a/doc/news/changes/minor/20170317MartinKronbichler-b b/doc/news/changes/minor/20170317MartinKronbichler-b index 691927892b..5dbc9b1ee9 100644 --- a/doc/news/changes/minor/20170317MartinKronbichler-b +++ b/doc/news/changes/minor/20170317MartinKronbichler-b @@ -2,7 +2,7 @@ New: The Manifold class and derived classes now provide a function Manifold::add_new_points that allows to compute multiple new points according to a matrix of weights that are appended to the last argument of the function. This function is used in MappingQGeneric and can be much more -efficient for ChartManifold where ChartManifold::pull_back is an expensive -operation. +efficient for ChartManifold because ChartManifold::pull_back() calls are +reused for several interpolation operations.
(Martin Kronbichler, 2017/03/17) diff --git a/include/deal.II/fe/mapping_q.h b/include/deal.II/fe/mapping_q.h index dd6946c3b6..298dc57716 100644 --- a/include/deal.II/fe/mapping_q.h +++ b/include/deal.II/fe/mapping_q.h @@ -1,6 +1,6 @@ // --------------------------------------------------------------------- // -// Copyright (C) 2001 - 2016 by the deal.II authors +// Copyright (C) 2001 - 2017 by the deal.II authors // // This file is part of the deal.II library. // @@ -71,50 +71,9 @@ DEAL_II_NAMESPACE_OPEN * *

Behavior along curved boundaries and with different manifolds

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