diff --git a/applications/test/vectorTools/Make/files b/applications/test/vectorTools/Make/files deleted file mode 100644 index 0b30b98f8f3b0c0c1048846c8e90a62733a12dda..0000000000000000000000000000000000000000 --- a/applications/test/vectorTools/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -Test-vectorTools.C - -EXE = $(FOAM_USER_APPBIN)/Test-vectorTools diff --git a/applications/test/vectorTools/Make/options b/applications/test/vectorTools/Make/options deleted file mode 100644 index 9e015e6078873ee32ae6d53ac1590010819dcb69..0000000000000000000000000000000000000000 --- a/applications/test/vectorTools/Make/options +++ /dev/null @@ -1 +0,0 @@ -EXE_INC = -I$(FOAM_APP)/utilities/mesh/generation/cvMesh/vectorTools diff --git a/applications/test/vectorTools/Test-vectorTools.C b/applications/test/vectorTools/Test-vectorTools.C deleted file mode 100644 index 85d18ed98957073b2ab7130534cc21f0828740cf..0000000000000000000000000000000000000000 --- a/applications/test/vectorTools/Test-vectorTools.C +++ /dev/null @@ -1,71 +0,0 @@ -#include "vector.H" -#include "IOstreams.H" -#include "vectorTools.H" -#include "unitConversion.H" - -using namespace Foam; - - -void test(const vector& a, const vector& b, const scalar tolerance) -{ - Info<< "Vectors " << a << " and " << b - << " are (to tolerance of " << tolerance << "): "; - - if (vectorTools::areParallel(a, b, tolerance)) - Info<< " parallel "; - - if (vectorTools::areOrthogonal(a, b, tolerance)) - Info<< " orthogonal "; - - if (vectorTools::areAcute(a, b)) - Info<< " acute "; - - if (vectorTools::areObtuse(a, b)) - Info<< " obtuse "; - - Info<< ", angle = " << vectorTools::degAngleBetween(a, b); - - Info<< endl; -} - - -int main() -{ - vector a(1.0, 1.0, 1.0); - vector b(2.0, 2.0, 2.0); - - test(a, b, 0.0); - test(a, b, VSMALL); - test(a, b, SMALL); - test(a, b, 1e-3); - test(a, b, 1e-1); - - a = vector(1,0,0); - b = vector(0,2,0); - - test(a, b, 0.0); - test(a, b, VSMALL); - test(a, b, SMALL); - test(a, b, 1e-3); - test(a, b, 1e-1); - - a = vector(1,0,0); - b = vector(-1,0,0); - - test(a, b, 0.0); - test(a, b, VSMALL); - test(a, b, SMALL); - test(a, b, 1e-3); - test(a, b, 1e-1); - - a = vector(1,0,0); - b = vector(-1,2,0); - - test(a, b, 0.0); - test(a, b, VSMALL); - test(a, b, SMALL); - test(a, b, 1e-3); - test(a, b, 1e-1); - - return 0; -} diff --git a/applications/utilities/mesh/advanced/collapseEdges/collapseDict b/applications/utilities/mesh/advanced/collapseEdges/collapseDict index 78905475e33add919a8cc0ece968b737c26fea15..60f4cb2f43809aff6b09b4ab0057aec3b226ab9b 100644 --- a/applications/utilities/mesh/advanced/collapseEdges/collapseDict +++ b/applications/utilities/mesh/advanced/collapseEdges/collapseDict @@ -2,24 +2,16 @@ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: dev | -| \\ / A nd | Web: http://www.openfoam.org | +| \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ - FoamFile { - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object collapseDict; + version 2.0; + format ascii; + class dictionary; + object collapseDict; } - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // collapseEdgesCoeffs @@ -78,7 +70,11 @@ meshQualityCoeffs meshQualityCoeffDict meshQualityDict; // Maximum number of outer iterations is mesh quality checking is enabled - maximumIterations 30; + maximumIterations 10; + + // Maximum number of iterations deletion of a point can cause a bad face + // to be constructed before it is forced to not be deleted + maxPointErrorCount 5; } diff --git a/applications/utilities/mesh/generation/Allwmake b/applications/utilities/mesh/generation/Allwmake index 48ca530c96933f6c31bf4f126658efc9f607fd51..d557fa34f89e754385551f8d8bba0ef418d049e5 100755 --- a/applications/utilities/mesh/generation/Allwmake +++ b/applications/utilities/mesh/generation/Allwmake @@ -9,10 +9,5 @@ extrude2DMesh/Allwmake wmake snappyHexMesh -if [ -d "$CGAL_ARCH_PATH" ] -then - cvMesh/Allwmake - cv2DMesh/Allwmake -fi # ----------------------------------------------------------------- end-of-file diff --git a/applications/utilities/mesh/generation/cv2DMesh/Allwclean b/applications/utilities/mesh/generation/cv2DMesh/Allwclean deleted file mode 100755 index d0ae53e41503d0ccd189b47c40f83dc193030e03..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/Allwclean +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory -set -x - -wclean libso conformalVoronoi2DMesh -wclean - -# ----------------------------------------------------------------- end-of-file diff --git a/applications/utilities/mesh/generation/cv2DMesh/Allwmake b/applications/utilities/mesh/generation/cv2DMesh/Allwmake deleted file mode 100755 index 54868499573cf6b3ce989a211b0fd1be7944c490..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/Allwmake +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory -set -x - -wmake libso conformalVoronoi2DMesh -wmake - -# ----------------------------------------------------------------- end-of-file diff --git a/applications/utilities/mesh/generation/cv2DMesh/CGALTriangulation2DKernel.H b/applications/utilities/mesh/generation/cv2DMesh/CGALTriangulation2DKernel.H deleted file mode 100644 index 28002f962fd3935e9de325d4bba28da3746fdd96..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/CGALTriangulation2DKernel.H +++ /dev/null @@ -1,60 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Typedefs - CGALTriangulation2DKernel - -Description - -\*---------------------------------------------------------------------------*/ - -#ifndef CGALTriangulation2DKernel_H -#define CGALTriangulation2DKernel_H - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "CGAL/Delaunay_triangulation_2.h" - -#ifdef CGAL_INEXACT - - // Fast kernel using a double as the storage type but the triangulation - // may fail - #include "CGAL/Exact_predicates_inexact_constructions_kernel.h" - - typedef CGAL::Exact_predicates_inexact_constructions_kernel K; - -#else - - // Very robust but expensive kernel - #include "CGAL/Exact_predicates_exact_constructions_kernel.h" - - typedef CGAL::Exact_predicates_exact_constructions_kernel K; - -#endif - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/CGALTriangulation2Ddefs.H b/applications/utilities/mesh/generation/cv2DMesh/CGALTriangulation2Ddefs.H deleted file mode 100644 index 87319265483b63d1468fecf57a1be3edfde2fec0..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/CGALTriangulation2Ddefs.H +++ /dev/null @@ -1,76 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Typedefs - CGALTriangulation2Ddefs - -Description - CGAL data structures used for 2D Delaunay meshing. - - Define CGAL_INEXACT to use Exact_predicates_inexact_constructions kernel - otherwise the more robust but much less efficient - Exact_predicates_exact_constructions will be used. - - Define CGAL_HIERARCHY to use hierarchical Delaunay triangulation which is - faster but uses more memory than the standard Delaunay triangulation. - -\*---------------------------------------------------------------------------*/ - -#ifndef CGALTriangulation2Ddefs_H -#define CGALTriangulation2Ddefs_H - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "CGALTriangulation2DKernel.H" - -#include "indexedVertex.H" -#include "indexedFace.H" - -typedef CGAL::indexedVertex<K> Vb; -typedef CGAL::indexedFace<K> Fb; - -#ifdef CGAL_HIERARCHY - - // Data structures for hierarchical Delaunay triangulation which is more - // efficient but also uses more storage - #include "CGAL/Triangulation_hierarchy_2.h" - - typedef CGAL::Triangulation_hierarchy_vertex_base_2<Vb> Vbh; - typedef CGAL::Triangulation_data_structure_2<Vbh, Fb> Tds; - typedef CGAL::Delaunay_triangulation_2<K, Tds> DT; - typedef CGAL::Triangulation_hierarchy_2<DT> Delaunay; - -#else - - // Data structures for standard Delaunay triangulation - typedef CGAL::Triangulation_data_structure_2<Vb, Fb> Tds; - typedef CGAL::Delaunay_triangulation_2<K, Tds> Delaunay; - -#endif - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/CV2D.C b/applications/utilities/mesh/generation/cv2DMesh/CV2D.C deleted file mode 100644 index 8a5931df61229dfb523c3a584377d0652ae15e73..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/CV2D.C +++ /dev/null @@ -1,997 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*----------------------------------------------------------------------------*/ - -#include "CV2D.H" -#include "Random.H" -#include "transform.H" -#include "IFstream.H" -#include "uint.H" -#include "ulong.H" - -namespace Foam -{ - defineTypeNameAndDebug(CV2D, 0); -} - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -void Foam::CV2D::insertBoundingBox() -{ - Info<< "insertBoundingBox: creating bounding mesh" << endl; - scalar bigSpan = 10*meshControls().span(); - insertPoint(point2D(-bigSpan, -bigSpan), Vb::FAR_POINT); - insertPoint(point2D(-bigSpan, bigSpan), Vb::FAR_POINT); - insertPoint(point2D(bigSpan, -bigSpan), Vb::FAR_POINT); - insertPoint(point2D(bigSpan, bigSpan), Vb::FAR_POINT); -} - - -void Foam::CV2D::fast_restore_Delaunay(Vertex_handle vh) -{ - int i; - Face_handle f = vh->face(), next, start(f); - - do - { - i=f->index(vh); - if (!is_infinite(f)) - { - if (!internal_flip(f, cw(i))) external_flip(f, i); - if (f->neighbor(i) == start) start = f; - } - f = f->neighbor(cw(i)); - } while (f != start); -} - - -void Foam::CV2D::external_flip(Face_handle& f, int i) -{ - Face_handle n = f->neighbor(i); - - if - ( - CGAL::ON_POSITIVE_SIDE - != side_of_oriented_circle(n, f->vertex(i)->point()) - ) return; - - flip(f, i); - i = n->index(f->vertex(i)); - external_flip(n, i); -} - - -bool Foam::CV2D::internal_flip(Face_handle& f, int i) -{ - Face_handle n = f->neighbor(i); - - if - ( - CGAL::ON_POSITIVE_SIDE - != side_of_oriented_circle(n, f->vertex(i)->point()) - ) - { - return false; - } - - flip(f, i); - - return true; -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::CV2D::CV2D -( - const Time& runTime, - const dictionary& cvMeshDict -) -: - Delaunay(), - runTime_(runTime), - rndGen_(64293*Pstream::myProcNo()), - allGeometry_ - ( - IOobject - ( - "cvSearchableSurfaces", - runTime_.constant(), - "triSurface", - runTime_, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - cvMeshDict.subDict("geometry") - ), - qSurf_ - ( - runTime_, - rndGen_, - allGeometry_, - cvMeshDict.subDict("surfaceConformation") - ), - controls_(cvMeshDict, qSurf_.globalBounds()), - cellSizeControl_ - ( - runTime, - cvMeshDict.subDict("motionControl").subDict("shapeControlFunctions"), - qSurf_, - controls_.minCellSize() - ), - relaxationModel_ - ( - relaxationModel::New - ( - cvMeshDict.subDict("motionControl"), - runTime - ) - ), - z_ - ( - point - ( - cvMeshDict.subDict("surfaceConformation").lookup("locationInMesh") - ).z() - ), - startOfInternalPoints_(0), - startOfSurfacePointPairs_(0), - startOfBoundaryConformPointPairs_(0), - featurePoints_() -{ - Info<< meshControls() << endl; - - insertBoundingBox(); - insertFeaturePoints(); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::CV2D::~CV2D() -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::CV2D::insertPoints -( - const point2DField& points, - const scalar nearness -) -{ - Info<< "insertInitialPoints(const point2DField& points): "; - - startOfInternalPoints_ = number_of_vertices(); - label nVert = startOfInternalPoints_; - - // Add the points and index them - forAll(points, i) - { - const point2D& p = points[i]; - - if (qSurf_.wellInside(toPoint3D(p), nearness)) - { - insert(toPoint(p))->index() = nVert++; - } - else - { - Warning - << "Rejecting point " << p << " outside surface" << endl; - } - } - - Info<< nVert << " vertices inserted" << endl; - - if (meshControls().objOutput()) - { - // Checking validity of triangulation - assert(is_valid()); - - writeTriangles("initial_triangles.obj", true); - writeFaces("initial_faces.obj", true); - } -} - - -void Foam::CV2D::insertPoints(const fileName& pointFileName) -{ - IFstream pointsFile(pointFileName); - - if (pointsFile.good()) - { - insertPoints - ( - point2DField(pointsFile), - 0.5*meshControls().minCellSize2() - ); - } - else - { - FatalErrorIn("insertInitialPoints") - << "Could not open pointsFile " << pointFileName - << exit(FatalError); - } -} - - -void Foam::CV2D::insertGrid() -{ - Info<< "insertInitialGrid: "; - - startOfInternalPoints_ = number_of_vertices(); - label nVert = startOfInternalPoints_; - - scalar x0 = qSurf_.globalBounds().min().x(); - scalar xR = qSurf_.globalBounds().max().x() - x0; - int ni = int(xR/meshControls().minCellSize()) + 1; - scalar deltax = xR/ni; - - scalar y0 = qSurf_.globalBounds().min().y(); - scalar yR = qSurf_.globalBounds().max().y() - y0; - int nj = int(yR/meshControls().minCellSize()) + 1; - scalar deltay = yR/nj; - - Random rndGen(1321); - scalar pert = meshControls().randomPerturbation()*min(deltax, deltay); - - for (int i=0; i<ni; i++) - { - for (int j=0; j<nj; j++) - { - point p(x0 + i*deltax, y0 + j*deltay, 0); - - if (meshControls().randomiseInitialGrid()) - { - p.x() += pert*(rndGen.scalar01() - 0.5); - p.y() += pert*(rndGen.scalar01() - 0.5); - } - - if (qSurf_.wellInside(p, 0.5*meshControls().minCellSize2())) - { - insert(Point(p.x(), p.y()))->index() = nVert++; - } - } - } - - Info<< nVert << " vertices inserted" << endl; - - if (meshControls().objOutput()) - { - // Checking validity of triangulation - assert(is_valid()); - - writeTriangles("initial_triangles.obj", true); - writeFaces("initial_faces.obj", true); - } -} - - -void Foam::CV2D::insertSurfacePointPairs() -{ - startOfSurfacePointPairs_ = number_of_vertices(); - - if (meshControls().insertSurfaceNearestPointPairs()) - { - insertSurfaceNearestPointPairs(); - } - - write("nearest"); - - // Insertion of point-pairs for near-points may cause protrusions - // so insertBoundaryConformPointPairs must be executed last - if (meshControls().insertSurfaceNearPointPairs()) - { - insertSurfaceNearPointPairs(); - } - - startOfBoundaryConformPointPairs_ = number_of_vertices(); -} - - -void Foam::CV2D::boundaryConform() -{ - if (!meshControls().insertSurfaceNearestPointPairs()) - { - markNearBoundaryPoints(); - } - - // Mark all the faces as SAVE_CHANGED - for - ( - Triangulation::Finite_faces_iterator fit = finite_faces_begin(); - fit != finite_faces_end(); - fit++ - ) - { - fit->faceIndex() = Fb::SAVE_CHANGED; - } - - for (label iter=1; iter<=meshControls().maxBoundaryConformingIter(); iter++) - { - label nIntersections = insertBoundaryConformPointPairs - ( - "surfaceIntersections_" + Foam::name(iter) + ".obj" - ); - - if (nIntersections == 0) - { - break; - } - else - { - Info<< "BC iteration " << iter << ": " - << nIntersections << " point-pairs inserted" << endl; - } - - // Any faces changed by insertBoundaryConformPointPairs will now - // be marked CHANGED, mark those as SAVE_CHANGED and those that - // remained SAVE_CHANGED as UNCHANGED - for - ( - Triangulation::Finite_faces_iterator fit = finite_faces_begin(); - fit != finite_faces_end(); - fit++ - ) - { - if (fit->faceIndex() == Fb::SAVE_CHANGED) - { - fit->faceIndex() = Fb::UNCHANGED; - } - else if (fit->faceIndex() == Fb::CHANGED) - { - fit->faceIndex() = Fb::SAVE_CHANGED; - } - } - } - - Info<< nl; - - write("boundary"); -} - - -void Foam::CV2D::removeSurfacePointPairs() -{ - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->index() >= startOfSurfacePointPairs_) - { - remove(vit); - } - } -} - - -void Foam::CV2D::newPoints() -{ - const scalar relaxation = relaxationModel_->relaxation(); - - Info<< "Relaxation = " << relaxation << endl; - - Field<point2D> dualVertices(number_of_faces()); - - label dualVerti = 0; - - // Find the dual point of each tetrahedron and assign it an index. - for - ( - Triangulation::Finite_faces_iterator fit = finite_faces_begin(); - fit != finite_faces_end(); - ++fit - ) - { - fit->faceIndex() = -1; - - if - ( - fit->vertex(0)->internalOrBoundaryPoint() - || fit->vertex(1)->internalOrBoundaryPoint() - || fit->vertex(2)->internalOrBoundaryPoint() - ) - { - fit->faceIndex() = dualVerti; - - dualVertices[dualVerti] = toPoint2D(circumcenter(fit)); - - dualVerti++; - } - } - - dualVertices.setSize(dualVerti); - - Field<vector2D> displacementAccumulator - ( - startOfSurfacePointPairs_, - vector2D::zero - ); - - // Calculate target size and alignment for vertices - scalarField sizes - ( - number_of_vertices(), - meshControls().minCellSize() - ); - - Field<vector2D> alignments - ( - number_of_vertices(), - vector2D(1, 0) - ); - - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalOrBoundaryPoint()) - { - point2D vert = toPoint2D(vit->point()); - - // alignment and size determination - pointIndexHit pHit; - label hitSurface = -1; - - qSurf_.findSurfaceNearest - ( - toPoint3D(vert), - meshControls().span2(), - pHit, - hitSurface - ); - - if (pHit.hit()) - { - vectorField norm(1); - allGeometry_[hitSurface].getNormal - ( - List<pointIndexHit>(1, pHit), - norm - ); - - alignments[vit->index()] = toPoint2D(norm[0]); - - sizes[vit->index()] = - cellSizeControl_.cellSize(toPoint3D(vit->point())); - } - } - } - - // Info<< "Calculated alignments" << endl; - - scalar cosAlignmentAcceptanceAngle = 0.68; - - // Upper and lower edge length ratios for weight - scalar u = 1.0; - scalar l = 0.7; - - PackedBoolList pointToBeRetained(startOfSurfacePointPairs_, true); - - std::list<Point> pointsToInsert; - - for - ( - Triangulation::Finite_edges_iterator eit = finite_edges_begin(); - eit != finite_edges_end(); - eit++ - ) - { - Vertex_handle vA = eit->first->vertex(cw(eit->second)); - Vertex_handle vB = eit->first->vertex(ccw(eit->second)); - - if (!vA->internalOrBoundaryPoint() || !vB->internalOrBoundaryPoint()) - { - continue; - } - - const point2D& dualV1 = dualVertices[eit->first->faceIndex()]; - const point2D& dualV2 = - dualVertices[eit->first->neighbor(eit->second)->faceIndex()]; - - scalar dualEdgeLength = mag(dualV1 - dualV2); - - point2D dVA = toPoint2D(vA->point()); - point2D dVB = toPoint2D(vB->point()); - - Field<vector2D> alignmentDirsA(2); - - alignmentDirsA[0] = alignments[vA->index()]; - alignmentDirsA[1] = vector2D - ( - -alignmentDirsA[0].y(), - alignmentDirsA[0].x() - ); - - Field<vector2D> alignmentDirsB(2); - - alignmentDirsB[0] = alignments[vB->index()]; - alignmentDirsB[1] = vector2D - ( - -alignmentDirsB[0].y(), - alignmentDirsB[0].x() - ); - - Field<vector2D> alignmentDirs(2); - - forAll(alignmentDirsA, aA) - { - const vector2D& a(alignmentDirsA[aA]); - - scalar maxDotProduct = 0.0; - - forAll(alignmentDirsB, aB) - { - const vector2D& b(alignmentDirsB[aB]); - - scalar dotProduct = a & b; - - if (mag(dotProduct) > maxDotProduct) - { - maxDotProduct = mag(dotProduct); - - alignmentDirs[aA] = a + sign(dotProduct)*b; - - alignmentDirs[aA] /= mag(alignmentDirs[aA]); - } - } - } - - vector2D rAB = dVA - dVB; - - scalar rABMag = mag(rAB); - - forAll(alignmentDirs, aD) - { - vector2D& alignmentDir = alignmentDirs[aD]; - - if ((rAB & alignmentDir) < 0) - { - // swap the direction of the alignment so that has the - // same sense as rAB - alignmentDir *= -1; - } - - scalar alignmentDotProd = ((rAB/rABMag) & alignmentDir); - - if (alignmentDotProd > cosAlignmentAcceptanceAngle) - { - scalar targetFaceSize = - 0.5*(sizes[vA->index()] + sizes[vB->index()]); - - // Test for changing aspect ratio on second alignment (first - // alignment is neartest surface normal) - // if (aD == 1) - // { - // targetFaceSize *= 2.0; - // } - - alignmentDir *= 0.5*targetFaceSize; - - vector2D delta = alignmentDir - 0.5*rAB; - - if (dualEdgeLength < 0.7*targetFaceSize) - { - delta *= 0; - } - else if (dualEdgeLength < targetFaceSize) - { - delta *= - ( - dualEdgeLength - /(targetFaceSize*(u - l)) - - 1/((u/l) - 1) - ); - } - - if - ( - vA->internalPoint() - && vB->internalPoint() - && rABMag > 1.75*targetFaceSize - && dualEdgeLength > 0.05*targetFaceSize - && alignmentDotProd > 0.93 - ) - { - // Point insertion - pointsToInsert.push_back(toPoint(0.5*(dVA + dVB))); - } - else if - ( - (vA->internalPoint() || vB->internalPoint()) - && rABMag < 0.65*targetFaceSize - ) - { - // Point removal - - // Only insert a point at the midpoint of the short edge - // if neither attached point has already been identified - // to be removed. - if - ( - pointToBeRetained[vA->index()] == true - && pointToBeRetained[vB->index()] == true - ) - { - pointsToInsert.push_back(toPoint(0.5*(dVA + dVB))); - } - - if (vA->internalPoint()) - { - pointToBeRetained[vA->index()] = false; - } - - if (vB->internalPoint()) - { - pointToBeRetained[vB->index()] = false; - } - } - else - { - if (vA->internalPoint()) - { - displacementAccumulator[vA->index()] += delta; - } - - if (vB->internalPoint()) - { - displacementAccumulator[vB->index()] += -delta; - } - } - } - } - } - - vector2D totalDisp = sum(displacementAccumulator); - scalar totalDist = sum(mag(displacementAccumulator)); - - // Relax the calculated displacement - displacementAccumulator *= relaxation; - - label numberOfNewPoints = pointsToInsert.size(); - - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalPoint()) - { - if (pointToBeRetained[vit->index()]) - { - pointsToInsert.push_front - ( - toPoint - ( - toPoint2D(vit->point()) - + displacementAccumulator[vit->index()] - ) - ); - } - } - } - - // Clear the triangulation and reinsert the bounding box and feature points. - // This is faster than removing and moving points. - this->clear(); - - insertBoundingBox(); - - reinsertFeaturePoints(); - - startOfInternalPoints_ = number_of_vertices(); - - label nVert = startOfInternalPoints_; - - Info<< "Inserting " << numberOfNewPoints << " new points" << endl; - - // Use the range insert as it is faster than individually inserting points. - insert(pointsToInsert.begin(), pointsToInsert.end()); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if - ( - vit->type() == Vb::INTERNAL_POINT - && vit->index() == Vb::INTERNAL_POINT - ) - { - vit->index() = nVert++; - } - } - - Info<< " Total displacement = " << totalDisp << nl - << " Total distance = " << totalDist << nl - << " Points added = " << pointsToInsert.size() - << endl; - - write("internal"); - - insertSurfacePointPairs(); - - boundaryConform(); - - -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Old Method -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -// for -// ( -// Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); -// vit != finite_vertices_end(); -// ++vit -// ) -// { -// if (vit->internalPoint()) -// { -// // Current dual-cell defining vertex ("centre") -// point2DFromPoint defVert0 = toPoint2D(vit->point()); - -// Triangulation::Edge_circulator ec = incident_edges(vit); -// Triangulation::Edge_circulator ecStart = ec; - -// // Circulate around the edges to find the first which is not -// // infinite -// do -// { -// if (!is_infinite(ec)) break; -// } while (++ec != ecStart); - -// // Store the start-end of the first non-infinte edge -// point2D de0 = toPoint2D(circumcenter(ec->first)); - -// // Keep track of the maximum edge length^2 -// scalar maxEdgeLen2 = 0.0; - -// // Keep track of the index of the longest edge -// label edgecd0i = -1; - -// // Edge counter -// label edgei = 0; - -// do -// { -// if (!is_infinite(ec)) -// { -// // Get the end of the current edge -// point2D de1 = toPoint2D -// ( -// circumcenter(ec->first->neighbor(ec->second)) -// ); - -// // Store the current edge vector -// edges[edgei] = de1 - de0; - -// // Store the edge mid-point in the vertices array -// vertices[edgei] = 0.5*(de1 + de0); - -// // Move the current edge end into the edge start for the -// // next iteration -// de0 = de1; - -// // Keep track of the longest edge - -// scalar edgeLen2 = magSqr(edges[edgei]); - -// if (edgeLen2 > maxEdgeLen2) -// { -// maxEdgeLen2 = edgeLen2; -// edgecd0i = edgei; -// } - -// edgei++; -// } -// } while (++ec != ecStart); - -// // Initialise cd0 such that the mesh will align -// // in in the x-y directions -// vector2D cd0(1, 0); - -// if (meshControls().relaxOrientation()) -// { -// // Get the longest edge from the array and use as the primary -// // direction of the coordinate system of the "square" cell -// cd0 = edges[edgecd0i]; -// } - -// if (meshControls().nearWallAlignedDist() > 0) -// { -// pointIndexHit pHit = qSurf_.tree().findNearest -// ( -// toPoint3D(defVert0), -// meshControls().nearWallAlignedDist2() -// ); - -// if (pHit.hit()) -// { -// cd0 = toPoint2D(faceNormals[pHit.index()]); -// } -// } - -// // Rotate by 45deg needed to create an averaging procedure which -// // encourages the cells to be square -// cd0 = vector2D(cd0.x() + cd0.y(), cd0.y() - cd0.x()); - -// // Normalise the primary coordinate direction -// cd0 /= mag(cd0); - -// // Calculate the orthogonal coordinate direction -// vector2D cd1(-cd0.y(), cd0.x()); - - -// // Restart the circulator -// ec = ecStart; - -// // ... and the counter -// edgei = 0; - -// // Initialise the displacement for the centre and sum-weights -// vector2D disp = vector2D::zero; -// scalar sumw = 0; - -// do -// { -// if (!is_infinite(ec)) -// { -// // Pick up the current edge -// const vector2D& ei = edges[edgei]; - -// // Calculate the centre to edge-centre vector -// vector2D deltai = vertices[edgei] - defVert0; - -// // Set the weight for this edge contribution -// scalar w = 1; - -// if (meshControls().squares()) -// { -// w = magSqr(deltai.x()*ei.y() - deltai.y()*ei.x()); -// // alternative weights -// //w = mag(deltai.x()*ei.y() - deltai.y()*ei.x()); -// //w = magSqr(ei)*mag(deltai); - -// // Use the following for an ~square mesh -// // Find the coordinate contributions for this edge delta -// scalar cd0deltai = cd0 & deltai; -// scalar cd1deltai = cd1 & deltai; - -// // Create a "square" displacement -// if (mag(cd0deltai) > mag(cd1deltai)) -// { -// disp += (w*cd0deltai)*cd0; -// } -// else -// { -// disp += (w*cd1deltai)*cd1; -// } -// } -// else -// { -// // Use this for a hexagon/pentagon mesh -// disp += w*deltai; -// } - -// // Sum the weights -// sumw += w; -// } -// else -// { -// FatalErrorIn("CV2D::newPoints() const") -// << "Infinite triangle found in internal mesh" -// << exit(FatalError); -// } - -// edgei++; - -// } while (++ec != ecStart); - -// // Calculate the average displacement -// disp /= sumw; -// totalDisp += disp; -// totalDist += mag(disp); - -// // Move the point by a fraction of the average displacement -// movePoint(vit, defVert0 + relaxation*disp); -// } -// } - -// Info << "\nTotal displacement = " << totalDisp -// << " total distance = " << totalDist << endl; -} - - -//void Foam::CV2D::moveInternalPoints(const point2DField& newPoints) -//{ -// label pointI = 0; - -// for -// ( -// Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); -// vit != finite_vertices_end(); -// ++vit -// ) -// { -// if (vit->internalPoint()) -// { -// movePoint(vit, newPoints[pointI++]); -// } -// } -//} - - -void Foam::CV2D::write() const -{ - if (meshControls().objOutput()) - { - writeFaces("allFaces.obj", false); - writeFaces("faces.obj", true); - writeTriangles("allTriangles.obj", false); - writeTriangles("triangles.obj", true); - writePatch("patch.pch"); - } -} - - -void Foam::CV2D::write(const word& stage) const -{ - if (meshControls().objOutput()) - { - Foam::mkDir(stage + "Faces"); - Foam::mkDir(stage + "Triangles"); - - writeFaces - ( - stage - + "Faces/allFaces_" - + runTime_.timeName() - + ".obj", - false - ); - - writeTriangles - ( - stage - + "Triangles/allTriangles_" - + runTime_.timeName() - + ".obj", - false - ); - } -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/CV2D.H b/applications/utilities/mesh/generation/cv2DMesh/CV2D.H deleted file mode 100644 index 4948196fc2c685a7ece2aea29b8df50e4b5f20e7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/CV2D.H +++ /dev/null @@ -1,474 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - CV2D - -Description - Conformal-Voronoi 2D automatic mesher with grid or read initial points - and point position relaxation with optional "squarification". - - There are a substantial number of options to this mesher read from - CV2DMesherDict file e.g.: - - // Min cell size used in tolerances when inserting points for - // boundary conforming. - // Also used to as the grid spacing usind in insertGrid. - minCellSize 0.05; - - // Feature angle used to inser feature points - // 0 = all features, 180 = no features - featureAngle 45; - - // Maximum quadrant angle allowed at a concave corner before - // additional "mitering" lines are added - maxQuadAngle 110; - - // Should the mesh be square-dominated or of unbiased hexagons - squares yes; - - // Near-wall region where cells are aligned with the wall specified as a - // number of cell layers - nearWallAlignedDist 3; - - // Chose if the cell orientation should relax during the iterations - // or remain fixed to the x-y directions - relaxOrientation no; - - // Insert near-boundary point mirror or point-pairs - insertSurfaceNearestPointPairs yes; - - // Mirror near-boundary points rather than insert point-pairs - mirrorPoints no; - - // Insert point-pairs vor dual-cell vertices very near the surface - insertSurfaceNearPointPairs yes; - - // Choose if to randomise the initial grid created by insertGrid. - randomiseInitialGrid yes; - - // Perturbation fraction, 1 = cell-size. - randomPurturbation 0.1; - - // Number of relaxation iterations. - nIterations 5; - - // Relaxation factor at the start of the iteration sequence. - // 0.5 is a sensible maximum and < 0.2 converges better. - relaxationFactorStart 0.8; - - // Relaxation factor at the end of the iteration sequence. - // Should be <= relaxationFactorStart - relaxationFactorEnd 0; - - writeInitialTriangulation no; - writeFeatureTriangulation no; - writeNearestTriangulation no; - writeInsertedPointPairs no; - writeFinalTriangulation yes; - - // Maximum number of iterations used in boundaryConform. - maxBoundaryConformingIter 5; - - minEdgeLenCoeff 0.5; - maxNotchLenCoeff 0.3; - minNearPointDistCoeff 0.25; - ppDistCoeff 0.05; - -SourceFiles - CGALTriangulation2Ddefs.H - indexedVertex.H - indexedFace.H - CV2DI.H - CV2D.C - CV2DIO.C - tolerances.C - controls.C - insertFeaturePoints.C - insertSurfaceNearestPointPairs.C - insertSurfaceNearPointPairs.C - insertBoundaryConformPointPairs.C - -\*---------------------------------------------------------------------------*/ - -#ifndef CV2D_H -#define CV2D_H - -#define CGAL_INEXACT -#define CGAL_HIERARCHY - -#include "CGALTriangulation2Ddefs.H" - -#include "Time.H" -#include "point2DFieldFwd.H" -#include "dictionary.H" -#include "Switch.H" -#include "PackedBoolList.H" -#include "EdgeMap.H" -#include "cv2DControls.H" -#include "tolerances.H" -#include "meshTools.H" -#include "triSurface.H" -#include "searchableSurfaces.H" -#include "conformationSurfaces.H" -#include "relaxationModel.H" -#include "cellSizeAndAlignmentControls.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class CV2D Declaration -\*---------------------------------------------------------------------------*/ - -class CV2D -: - public Delaunay -{ - -private: - - // Private data - - //- The time registry of the application - const Time& runTime_; - - mutable Random rndGen_; - - //- The surface to mesh - //const querySurface& qSurf_; - //- All geometry of the meshing process, including surfaces to be - // conformed to and those to be used for refinement - searchableSurfaces allGeometry_; - - conformationSurfaces qSurf_; - - //- Meshing controls - cv2DControls controls_; - - //- The cell size control object - cellSizeAndAlignmentControls cellSizeControl_; - - //- Relaxation coefficient model. Runtime selectable. - autoPtr<relaxationModel> relaxationModel_; - - //- z-level - scalar z_; - - //- Keep track of the start of the internal points - label startOfInternalPoints_; - - //- Keep track of the start of the surface point-pairs - label startOfSurfacePointPairs_; - - //- Keep track of the boundary conform point-pairs - // stored after the insertion of the surface point-pairs in case - // the boundary conform function is called more than once without - // removing and insertin the surface point-pairs - label startOfBoundaryConformPointPairs_; - - //- Store the feature points - std::list<Vb> featurePoints_; - - //- Temporary storage for a dual-cell - static const label maxNvert = 20; - mutable point2D vertices[maxNvert+1]; - mutable vector2D edges[maxNvert+1]; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - CV2D(const CV2D&); - - //- Disallow default bitwise assignment - void operator=(const CV2D&); - - - //- Insert point and return it's index - inline label insertPoint - ( - const point2D& pt, - const label type - ); - - //- Insert point and return it's index - inline label insertPoint - ( - const point2D& pt, - const label index, - const label type - ); - - inline label insertPoint - ( - const Point& p, - const label index, - const label type - ); - - inline bool insertMirrorPoint - ( - const point2D& nearSurfPt, - const point2D& surfPt - ); - - //- Insert a point-pair at a distance ppDist either side of - // surface point point surfPt in the direction n - inline void insertPointPair - ( - const scalar mirrorDist, - const point2D& surfPt, - const vector2D& n - ); - - //- Create the initial mesh from the bounding-box - void insertBoundingBox(); - - //- Check if a point is within a line. - bool on2DLine(const point2D& p, const linePointRef& line); - - //- Insert point groups at the feature points. - void insertFeaturePoints(); - - //- Re-insert point groups at the feature points. - void reinsertFeaturePoints(); - - //- Insert point-pairs at the given set of points using the surface - // normals corresponding to the given set of surface triangles - // and write the inserted point locations to the given file. - void insertPointPairs - ( - const DynamicList<point2D>& nearSurfacePoints, - const DynamicList<point2D>& surfacePoints, - const DynamicList<label>& surfaceTris, - const DynamicList<label>& surfaceHits, - const fileName fName - ); - - //- Check to see if dual cell specified by given vertex iterator - // intersects the boundary and hence reqires a point-pair. - bool dualCellSurfaceIntersection - ( - const Triangulation::Finite_vertices_iterator& vit - ) const; - - //- Insert point-pairs at the nearest points on the surface to the - // control vertex of dual-cells which intersect the boundary in order - // to provide a boundary-layer mesh. - // NB: This is not guaranteed to close the boundary - void insertSurfaceNearestPointPairs(); - - //- Insert point-pairs at small dual-cell edges on the surface in order - // to improve the boundary-layer mesh generated by - // insertSurfaceNearestPointPairs. - void insertSurfaceNearPointPairs(); - - //- Insert point-pair and correcting the Finite_vertices_iterator - // to account for the additional vertices - void insertPointPair - ( - Triangulation::Finite_vertices_iterator& vit, - const point2D& p, - const label trii, - const label hitSurface - ); - - //- Insert point-pair at the best intersection point between the lines - // from the dual-cell real centroid and it's vertices and the surface. - bool insertPointPairAtIntersection - ( - Triangulation::Finite_vertices_iterator& vit, - const point2D& defVert, - const point2D vertices[], - const scalar maxProtSize - ); - - //- Insert point-pairs corresponding to dual-cells which intersect - // the boundary surface - label insertBoundaryConformPointPairs(const fileName& fName); - - void markNearBoundaryPoints(); - - //- Restore the Delaunay contraint - void fast_restore_Delaunay(Vertex_handle vh); - - // Flip operations used by fast_restore_Delaunay - void external_flip(Face_handle& f, int i); - bool internal_flip(Face_handle& f, int i); - - //- Write all the faces and all the triangles at a particular stage. - void write(const word& stage) const; - - -public: - - //- Runtime type information - ClassName("CV2D"); - - - // Constructors - - //- Construct for given surface - CV2D(const Time& runTime, const dictionary& controlDict); - - - //- Destructor - ~CV2D(); - - - // Member Functions - - // Access - - inline const cv2DControls& meshControls() const; - - - // Conversion functions between point2D, point and Point - - inline const point2D& toPoint2D(const point&) const; - inline const point2DField toPoint2D(const pointField&) const; - inline point toPoint3D(const point2D&) const; - - #ifdef CGAL_INEXACT - typedef const point2D& point2DFromPoint; - typedef const Point& PointFromPoint2D; - #else - typedef point2D point2DFromPoint; - typedef Point PointFromPoint2D; - #endif - - inline point2DFromPoint toPoint2D(const Point&) const; - inline PointFromPoint2D toPoint(const point2D&) const; - inline point toPoint3D(const Point&) const; - - - // Point insertion - - //- Create the initial mesh from the given internal points. - // Points must be inside the boundary by at least nearness - // otherwise they are ignored. - void insertPoints - ( - const point2DField& points, - const scalar nearness - ); - - //- Create the initial mesh from the internal points in the given - // file. Points outside the geometry are ignored. - void insertPoints(const fileName& pointFileName); - - //- Create the initial mesh as a regular grid of points. - // Points outside the geometry are ignored. - void insertGrid(); - - //- Insert all surface point-pairs from - // insertSurfaceNearestPointPairs and - // findIntersectionForOutsideCentroid - void insertSurfacePointPairs(); - - //- Insert point-pairs where there are protrusions into - // or out of the surface - void boundaryConform(); - - - // Point removal - - //- Remove the point-pairs introduced by insertSurfacePointPairs - // and boundaryConform - void removeSurfacePointPairs(); - - - // Point motion - - inline void movePoint(const Vertex_handle& vh, const Point& P); - - //- Move the internal points to the given new locations and update - // the triangulation to ensure it is Delaunay - // void moveInternalPoints(const point2DField& newPoints); - - //- Calculate the displacements to create the new points - void newPoints(); - - //- Extract patch names and sizes. - void extractPatches - ( - wordList& patchNames, - labelList& patchSizes, - EdgeMap<label>& mapEdgesRegion, - EdgeMap<label>& indirectPatchEdge - ) const; - - - // Write - - //- Write internal points to .obj file - void writePoints(const fileName& fName, bool internalOnly) const; - - //- Write triangles as .obj file - void writeTriangles(const fileName& fName, bool internalOnly) const; - - //- Write dual faces as .obj file - void writeFaces(const fileName& fName, bool internalOnly) const; - - //- Calculates dual points (circumcentres of tets) and faces - // (point-cell walk of tets). - // Returns: - // - dualPoints (in triangle ordering) - // - dualFaces (compacted) - void calcDual - ( - point2DField& dualPoints, - faceList& dualFaces, - wordList& patchNames, - labelList& patchSizes, - EdgeMap<label>& mapEdgesRegion, - EdgeMap<label>& indirectPatchEdge - ) const; - - //- Write patch - void writePatch(const fileName& fName) const; - - void write() const; -}; - - -inline bool boundaryTriangle(const CV2D::Face_handle fc); -inline bool outsideTriangle(const CV2D::Face_handle fc); - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "CV2DI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/CV2DI.H b/applications/utilities/mesh/generation/cv2DMesh/CV2DI.H deleted file mode 100644 index 42f4757df12822197abe8ebcd2c5c8bc3f247208..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/CV2DI.H +++ /dev/null @@ -1,227 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -inline Foam::label Foam::CV2D::insertPoint -( - const point2D& p, - const label type -) -{ - uint nVert = number_of_vertices(); - - return insertPoint(toPoint(p), nVert, type); -} - - -inline Foam::label Foam::CV2D::insertPoint -( - const point2D& p, - const label index, - const label type -) -{ - return insertPoint(toPoint(p), index, type); -} - - -inline Foam::label Foam::CV2D::insertPoint -( - const Point& p, - const label index, - const label type -) -{ - uint nVert = number_of_vertices(); - - Vertex_handle vh = insert(p); - - if (nVert == number_of_vertices()) - { - WarningIn("Foam::CV2D::insertPoint") - << "Failed to insert point " << toPoint2D(p) << endl; - } - else - { - vh->index() = index; - vh->type() = type; - } - - return vh->index(); -} - - -inline bool Foam::CV2D::insertMirrorPoint -( - const point2D& nearSurfPt, - const point2D& surfPt -) -{ - point2D mirrorPoint(2*surfPt - nearSurfPt); - - if (qSurf_.outside(toPoint3D(mirrorPoint))) - { - insertPoint(mirrorPoint, Vb::MIRROR_POINT); - return true; - } - else - { - return false; - } -} - - -inline void Foam::CV2D::insertPointPair -( - const scalar ppDist, - const point2D& surfPt, - const vector2D& n -) -{ - vector2D ppDistn = ppDist*n; - - label master = insertPoint - ( - surfPt - ppDistn, - number_of_vertices() + 1 - ); - - insertPoint(surfPt + ppDistn, master); -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -inline const Foam::cv2DControls& Foam::CV2D::meshControls() const -{ - return controls_; -} - - -inline const Foam::point2D& Foam::CV2D::toPoint2D(const point& p) const -{ - return reinterpret_cast<const point2D&>(p); -} - - -inline const Foam::point2DField Foam::CV2D::toPoint2D(const pointField& p) const -{ - point2DField temp(p.size()); - forAll(temp, pointI) - { - temp[pointI] = point2D(p[pointI].x(), p[pointI].y()); - } - return temp; -} - - -inline Foam::point Foam::CV2D::toPoint3D(const point2D& p) const -{ - return point(p.x(), p.y(), z_); -} - - -#ifdef CGAL_INEXACT - -inline Foam::CV2D::point2DFromPoint Foam::CV2D::toPoint2D(const Point& P) const -{ - return reinterpret_cast<point2DFromPoint>(P); -} - - -inline Foam::CV2D::PointFromPoint2D Foam::CV2D::toPoint(const point2D& p) const -{ - return reinterpret_cast<PointFromPoint2D>(p); -} - -#else - -inline Foam::CV2D::point2DFromPoint Foam::CV2D::toPoint2D(const Point& P) const -{ - return point2D(CGAL::to_double(P.x()), CGAL::to_double(P.y())); -} - - -inline Foam::CV2D::PointFromPoint2D Foam::CV2D::toPoint(const point2D& p) const -{ - return Point(p.x(), p.y()); -} - -#endif - - -inline Foam::point Foam::CV2D::toPoint3D(const Point& P) const -{ - return point(CGAL::to_double(P.x()), CGAL::to_double(P.y()), z_); -} - - -inline void Foam::CV2D::movePoint(const Vertex_handle& vh, const Point& P) -{ - int i = vh->index(); - int t = vh->type(); - - remove(vh); - - Vertex_handle newVh = insert(P); - - newVh->index() = i; - newVh->type() = t; - - // label i = vh->index(); - // move(vh, P); - // vh->index() = i; - - //vh->set_point(P); - //fast_restore_Delaunay(vh); -} - - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // - -inline bool Foam::boundaryTriangle(const CV2D::Face_handle fc) -{ - return boundaryTriangle - ( - *fc->vertex(0), - *fc->vertex(1), - *fc->vertex(2) - ); -} - - -inline bool Foam::outsideTriangle(const CV2D::Face_handle fc) -{ - return outsideTriangle - ( - *fc->vertex(0), - *fc->vertex(1), - *fc->vertex(2) - ); -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/CV2DIO.C b/applications/utilities/mesh/generation/cv2DMesh/CV2DIO.C deleted file mode 100644 index 0223c28ebec89849b1e74133e6ddda48ffab4a08..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/CV2DIO.C +++ /dev/null @@ -1,386 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "CV2D.H" -#include "OFstream.H" - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::CV2D::writePoints(const fileName& fName, bool internalOnly) const -{ - Info<< "Writing points to " << fName << nl << endl; - OFstream str(fName); - - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (!internalOnly || vit->internalOrBoundaryPoint()) - { - meshTools::writeOBJ(str, toPoint3D(vit->point())); - } - } -} - - -void Foam::CV2D::writeTriangles(const fileName& fName, bool internalOnly) const -{ - Info<< "Writing triangles to " << fName << nl << endl; - OFstream str(fName); - - labelList vertexMap(number_of_vertices(), -2); - label verti = 0; - - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (!internalOnly || !vit->farPoint()) - { - vertexMap[vit->index()] = verti++; - meshTools::writeOBJ(str, toPoint3D(vit->point())); - } - } - - for - ( - Triangulation::Finite_faces_iterator fit = finite_faces_begin(); - fit != finite_faces_end(); - ++fit - ) - { - if - ( - !internalOnly - || ( - fit->vertex(0)->internalOrBoundaryPoint() - || fit->vertex(1)->internalOrBoundaryPoint() - || fit->vertex(2)->internalOrBoundaryPoint() - ) - ) - { - str << "f"; - for (label i = 0; i < 3; ++i) - { - str << " " << vertexMap[fit->vertex(i)->index()] + 1; - } - str << nl; - } - } -} - - -void Foam::CV2D::writeFaces(const fileName& fName, bool internalOnly) const -{ - Info<< "Writing dual faces to " << fName << nl << endl; - OFstream str(fName); - - label dualVerti = 0; - - for - ( - Triangulation::Finite_faces_iterator fit = finite_faces_begin(); - fit != finite_faces_end(); - ++fit - ) - { - if - ( - !internalOnly - || ( - fit->vertex(0)->internalOrBoundaryPoint() - || fit->vertex(1)->internalOrBoundaryPoint() - || fit->vertex(2)->internalOrBoundaryPoint() - ) - ) - { - fit->faceIndex() = dualVerti++; - meshTools::writeOBJ(str, toPoint3D(circumcenter(fit))); - } - else - { - fit->faceIndex() = -1; - } - } - - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (!internalOnly || vit->internalOrBoundaryPoint()) - { - Face_circulator fcStart = incident_faces(vit); - Face_circulator fc = fcStart; - - str<< 'f'; - - do - { - if (!is_infinite(fc)) - { - if (fc->faceIndex() < 0) - { - FatalErrorIn - ( - "Foam::CV2D::writeFaces" - "(const fileName& fName, bool internalOnly)" - )<< "Dual face uses vertex defined by a triangle" - " defined by an external point" - << exit(FatalError); - } - - str<< ' ' << fc->faceIndex() + 1; - } - } while (++fc != fcStart); - - str<< nl; - } - } -} - - -void Foam::CV2D::extractPatches -( - wordList& patchNames, - labelList& patchSizes, - EdgeMap<label>& mapEdgesRegion, - EdgeMap<label>& indirectPatchEdge -) const -{ - label nPatches = qSurf_.patchNames().size() + 1; - label defaultPatchIndex = qSurf_.patchNames().size(); - - patchNames.setSize(nPatches); - patchSizes.setSize(nPatches, 0); - mapEdgesRegion.clear(); - - const wordList& existingPatches = qSurf_.patchNames(); - - forAll(existingPatches, sP) - { - patchNames[sP] = existingPatches[sP]; - } - - patchNames[defaultPatchIndex] = "CV2D_default_patch"; - - for - ( - Triangulation::Finite_edges_iterator eit = finite_edges_begin(); - eit != finite_edges_end(); - ++eit - ) - { - Face_handle fOwner = eit->first; - Face_handle fNeighbor = fOwner->neighbor(eit->second); - - Vertex_handle vA = fOwner->vertex(cw(eit->second)); - Vertex_handle vB = fOwner->vertex(ccw(eit->second)); - - if - ( - (vA->internalOrBoundaryPoint() && !vB->internalOrBoundaryPoint()) - || (vB->internalOrBoundaryPoint() && !vA->internalOrBoundaryPoint()) - ) - { - point ptA = toPoint3D(vA->point()); - point ptB = toPoint3D(vB->point()); - - label patchIndex = qSurf_.findPatch(ptA, ptB); - - if (patchIndex == -1) - { - patchIndex = defaultPatchIndex; - - WarningIn("Foam::CV2D::extractPatches") - << "Dual face found that is not on a surface " - << "patch. Adding to CV2D_default_patch." - << endl; - } - - edge e(fOwner->faceIndex(), fNeighbor->faceIndex()); - patchSizes[patchIndex]++; - mapEdgesRegion.insert(e, patchIndex); - - if (!pointPair(*vA, *vB)) - { - indirectPatchEdge.insert(e, 1); - } - } - } -} - - -void Foam::CV2D::calcDual -( - point2DField& dualPoints, - faceList& dualFaces, - wordList& patchNames, - labelList& patchSizes, - EdgeMap<label>& mapEdgesRegion, - EdgeMap<label>& indirectPatchEdge -) const -{ - // Dual points stored in triangle order. - dualPoints.setSize(number_of_faces()); - label dualVerti = 0; - - for - ( - Triangulation::Finite_faces_iterator fit = finite_faces_begin(); - fit != finite_faces_end(); - ++fit - ) - { - if - ( - fit->vertex(0)->internalOrBoundaryPoint() - || fit->vertex(1)->internalOrBoundaryPoint() - || fit->vertex(2)->internalOrBoundaryPoint() - ) - { - fit->faceIndex() = dualVerti; - - dualPoints[dualVerti++] = toPoint2D(circumcenter(fit)); - } - else - { - fit->faceIndex() = -1; - } - } - - dualPoints.setSize(dualVerti); - - extractPatches(patchNames, patchSizes, mapEdgesRegion, indirectPatchEdge); - - forAll(patchNames, patchI) - { - Info<< "Patch " << patchNames[patchI] - << " has size " << patchSizes[patchI] << endl; - } - - // Create dual faces - // ~~~~~~~~~~~~~~~~~ - - dualFaces.setSize(number_of_vertices()); - label dualFacei = 0; - labelList faceVerts(maxNvert); - - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalOrBoundaryPoint()) - { - Face_circulator fcStart = incident_faces(vit); - Face_circulator fc = fcStart; - label verti = 0; - - do - { - if (!is_infinite(fc)) - { - if (fc->faceIndex() < 0) - { - FatalErrorIn - ( - "Foam::CV2D::calcDual" - "(point2DField& dualPoints, faceList& dualFaces)" - )<< "Dual face uses vertex defined by a triangle" - " defined by an external point" - << exit(FatalError); - } - - // Look up the index of the triangle - faceVerts[verti++] = fc->faceIndex(); - } - } while (++fc != fcStart); - - if (faceVerts.size() > 2) - { - dualFaces[dualFacei++] = - face(labelList::subList(faceVerts, verti)); - } - else - { - Info<< "From triangle point:" << vit->index() - << " coord:" << toPoint2D(vit->point()) - << " generated illegal dualFace:" << faceVerts - << endl; - } - } - } - - dualFaces.setSize(dualFacei); -} - - -void Foam::CV2D::writePatch(const fileName& fName) const -{ - point2DField dual2DPoints; - faceList dualFaces; - wordList patchNames; - labelList patchSizes; - EdgeMap<label> mapEdgesRegion; - EdgeMap<label> indirectPatchEdge; - - calcDual - ( - dual2DPoints, - dualFaces, - patchNames, - patchSizes, - mapEdgesRegion, - indirectPatchEdge - ); - - pointField dualPoints(dual2DPoints.size()); - forAll(dualPoints, ip) - { - dualPoints[ip] = toPoint3D(dual2DPoints[ip]); - } - - // Dump as primitive patch to be read by extrudeMesh. - OFstream str(fName); - - Info<< "Writing patch to be used with extrudeMesh to file " << fName - << endl; - - str << dualPoints << nl << dualFaces << nl; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/Make/files b/applications/utilities/mesh/generation/cv2DMesh/Make/files deleted file mode 100755 index f7f70afa2af7b1fbc34d268dc45efb10c36fb1f7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/Make/files +++ /dev/null @@ -1,12 +0,0 @@ -#include CGAL_FILES - -CV2D.C -insertFeaturePoints.C -insertSurfaceNearestPointPairs.C -insertSurfaceNearPointPairs.C -insertBoundaryConformPointPairs.C -CV2DIO.C -shortEdgeFilter2D.C -cv2DMesh.C - -EXE = $(FOAM_APPBIN)/cv2DMesh diff --git a/applications/utilities/mesh/generation/cv2DMesh/Make/options b/applications/utilities/mesh/generation/cv2DMesh/Make/options deleted file mode 100755 index 37c8ed4aeaebf4a61bb22f5c42f13d90f5f87629..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/Make/options +++ /dev/null @@ -1,43 +0,0 @@ -EXE_DEBUG = -DFULLDEBUG -g -O0 -EXE_FROUNDING_MATH = -frounding-math -EXE_NDEBUG = -DNDEBUG - -include $(GENERAL_RULES)/CGAL -FFLAGS = -DCGAL_FILES='"${CGAL_ARCH_PATH}/share/files"' - -EXE_INC = \ - ${EXE_FROUNDING_MATH} \ - ${EXE_NDEBUG} \ - ${CGAL_INC} \ - -I$(FOAM_APP)/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/lnInclude \ - -I../cvMesh/vectorTools \ - -IconformalVoronoi2DMesh/lnInclude \ - -I$(FOAM_APP)/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/lnInclude \ - -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/surfMesh/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/mesh/extrudeModel/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -EXE_LIBS = \ - $(CGAL_LIBS) \ - -lboost_thread \ - -lmpfr \ - -lextrude2DMesh \ - -lextrudeModel \ - -lcv2DMesh \ - -lconformalVoronoiMesh \ - -lmeshTools \ - -lsurfMesh \ - -ledgeMesh \ - -ltriSurface \ - -ldynamicMesh \ - -ldecompositionMethods \ - -L$(FOAM_LIBBIN)/dummy -lptscotchDecomp \ - -lsampling \ - -lfileFormats diff --git a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/Make/files b/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/Make/files deleted file mode 100755 index e35fec7b7139b6fe33ab9dfbbd570dc566db3150..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -cv2DControls/cv2DControls.C - -LIB = $(FOAM_LIBBIN)/libcv2DMesh \ No newline at end of file diff --git a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/Make/options b/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/Make/options deleted file mode 100755 index 79be6f3a7dd8fa81ba203d5ab8572c446c43a6c7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/Make/options +++ /dev/null @@ -1,3 +0,0 @@ -EXE_INC = - -LIB_LIBS = diff --git a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControls.C b/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControls.C deleted file mode 100644 index 1ec4442e10f7ecf8bc1a704f880824ad459df496..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControls.C +++ /dev/null @@ -1,154 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*----------------------------------------------------------------------------*/ - -#include "cv2DControls.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - - -Foam::cv2DControls::cv2DControls -( - const dictionary& controlDict, - const boundBox& bb -) -: - dict_(controlDict), - - motionControl_(controlDict.subDict("motionControl")), - conformationControl_(controlDict.subDict("surfaceConformation")), - - minCellSize_(readScalar(motionControl_.lookup("minCellSize"))), - minCellSize2_(Foam::sqr(minCellSize_)), - - maxQuadAngle_(readScalar(conformationControl_.lookup("maxQuadAngle"))), - - nearWallAlignedDist_ - ( - readScalar(motionControl_.lookup("nearWallAlignedDist"))*minCellSize_ - ), - nearWallAlignedDist2_(Foam::sqr(nearWallAlignedDist_)), - - insertSurfaceNearestPointPairs_ - ( - conformationControl_.lookup("insertSurfaceNearestPointPairs") - ), - mirrorPoints_(conformationControl_.lookup("mirrorPoints")), - insertSurfaceNearPointPairs_ - ( - conformationControl_.lookup("insertSurfaceNearPointPairs") - ), - - objOutput_(motionControl_.lookupOrDefault<Switch>("objOutput", false)), - - meshedSurfaceOutput_ - ( - motionControl_.lookupOrDefault<Switch>("meshedSurfaceOutput", false) - ), - - randomiseInitialGrid_(conformationControl_.lookup("randomiseInitialGrid")), - randomPerturbation_ - ( - readScalar(conformationControl_.lookup("randomPerturbation")) - ), - - maxBoundaryConformingIter_ - ( - readLabel(conformationControl_.lookup("maxBoundaryConformingIter")) - ), - - span_ - ( - max(mag(bb.max().x()), mag(bb.min().x())) - + max(mag(bb.max().y()), mag(bb.min().y())) - ), - span2_(Foam::sqr(span_)), - - minEdgeLen_ - ( - readScalar(conformationControl_.lookup("minEdgeLenCoeff")) - *minCellSize_ - ), - minEdgeLen2_(Foam::sqr(minEdgeLen_)), - - maxNotchLen_ - ( - readScalar(conformationControl_.lookup("maxNotchLenCoeff")) - *minCellSize_ - ), - maxNotchLen2_(Foam::sqr(maxNotchLen_)), - - minNearPointDist_ - ( - readScalar(conformationControl_.lookup("minNearPointDistCoeff")) - *minCellSize_ - ), - minNearPointDist2_(Foam::sqr(minNearPointDist_)), - - ppDist_ - ( - readScalar(conformationControl_.lookup("pointPairDistanceCoeff")) - *minCellSize_ - ) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cv2DControls::~cv2DControls() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -void Foam::cv2DControls::write(Ostream& os) const -{ - os.indentLevel() = 1; - os.precision(2); - os.flags(ios_base::scientific); - - os << nl << "Outputting CV2D Mesher controls:" << nl - << token::BEGIN_BLOCK << nl - << indent << "minCellSize2_ : " << minCellSize2_ << nl - << indent << "span_ / span2_ : " << span_ << " / " << span2_ << nl - << indent << "maxNotchLen2_ : " << maxNotchLen2_ << nl - << indent << "minNearPointDist2_ : " << minNearPointDist2_ << nl - << indent << "nearWallAlignedDist2_ : " << nearWallAlignedDist2_ << nl - << indent << "ppDist_ : " << ppDist_ << nl - << indent << "minEdgeLen2_ : " << minEdgeLen2_ << nl - << token::END_BLOCK << endl; -} - - -// * * * * * * * * * * * * * * IOStream operators * * * * * * * * * * * * * // - -Foam::Ostream& Foam::operator<<(Ostream& os, const cv2DControls& s) -{ - s.write(os); - return os; -} - - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControls.H b/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControls.H deleted file mode 100644 index fb357dd62dc28a30a5c98a0d82b93ed00d74c30e..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControls.H +++ /dev/null @@ -1,260 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cv2DControls - -Description - Controls for the 2D CV mesh generator. - -SourceFiles - cv2DControls.C - cv2DControlsI.H - -\*---------------------------------------------------------------------------*/ - -#ifndef cv2DControls_H -#define cv2DControls_H - -#include "Switch.H" -#include "dictionary.H" -#include "boundBox.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class cv2DControls Declaration -\*---------------------------------------------------------------------------*/ - -class cv2DControls -{ - // Private data - - //- Description of data_ - const dictionary& dict_; - - const dictionary& motionControl_; - - const dictionary& conformationControl_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - cv2DControls(const cv2DControls&); - - //- Disallow default bitwise assignment - void operator=(const cv2DControls&); - - -public: - - // Controls - - //- Minimum cell size below which protusions through the surface are - // not split - scalar minCellSize_; - - //- Square of minCellSize - scalar minCellSize2_; - - //- Maximum quadrant angle allowed at a concave corner before - // additional "mitering" lines are added - scalar maxQuadAngle_; - - //- Near-wall region where cells are aligned with the wall - scalar nearWallAlignedDist_; - - //- Square of nearWallAlignedDist - scalar nearWallAlignedDist2_; - - //- Insert near-boundary point mirror or point-pairs - Switch insertSurfaceNearestPointPairs_; - - //- Mirror near-boundary points rather than insert point-pairs - Switch mirrorPoints_; - - //- Insert point-pairs vor dual-cell vertices very near the surface - Switch insertSurfaceNearPointPairs_; - - Switch objOutput_; - - Switch meshedSurfaceOutput_; - - Switch randomiseInitialGrid_; - - scalar randomPerturbation_; - - label maxBoundaryConformingIter_; - - - // Tolerances - - //- Maximum cartesian span of the geometry - scalar span_; - - //- Square of span - scalar span2_; - - //- Minumum edge-length of the cell size below which protusions - // through the surface are not split - scalar minEdgeLen_; - - //- Square of minEdgeLen - scalar minEdgeLen2_; - - //- Maximum notch size below which protusions into the surface are - // not filled - scalar maxNotchLen_; - - //- Square of maxNotchLen - scalar maxNotchLen2_; - - //- The minimum distance alowed between a dual-cell vertex - // and the surface before a point-pair is introduced - scalar minNearPointDist_; - - //- Square of minNearPoint - scalar minNearPointDist2_; - - //- Distance between boundary conforming point-pairs - scalar ppDist_; - - //- Square of ppDist - scalar ppDist2_; - - - // Constructors - - cv2DControls - ( - const dictionary& controlDict, - const boundBox& bb - ); - - - //- Destructor - ~cv2DControls(); - - - // Member Functions - - // Access - - //- Return the minimum cell size - inline scalar minCellSize() const; - - //- Return the square of the minimum cell size - inline scalar minCellSize2() const; - - //- Return the maximum quadrant angle - inline scalar maxQuadAngle() const; - - //- Return number of layers to align with the nearest wall - inline scalar nearWallAlignedDist() const; - - //- Return square of nearWallAlignedDist - inline scalar nearWallAlignedDist2() const; - - //- Return insertSurfaceNearestPointPairs Switch - inline Switch insertSurfaceNearestPointPairs() const; - - //- Return mirrorPoints Switch - inline Switch mirrorPoints() const; - - //- Return insertSurfaceNearPointPairs Switch - inline Switch insertSurfaceNearPointPairs() const; - - //- Return the objOutput Switch - inline Switch objOutput() const; - - //- Return the meshedSurfaceOutput Switch - inline Switch meshedSurfaceOutput() const; - - //- Return the randomise initial point layout Switch - inline Switch randomiseInitialGrid() const; - - //- Return the random perturbation factor - inline scalar randomPerturbation() const; - - //- Return the maximum number of boundary conformation iterations - inline label maxBoundaryConformingIter() const; - - //- Return the span - inline scalar span() const; - - //- Return the span squared - inline scalar span2() const; - - //- Return the minEdgeLen - inline scalar minEdgeLen() const; - - //- Return the minEdgeLen squared - inline scalar minEdgeLen2() const; - - //- Return the maxNotchLen - inline scalar maxNotchLen() const; - - //- Return the maxNotchLen squared - inline scalar maxNotchLen2() const; - - //- Return the minNearPointDist - inline scalar minNearPointDist() const; - - //- Return the minNearPointDist squared - inline scalar minNearPointDist2() const; - - //- Return the ppDist - inline scalar ppDist() const; - - - // Write - - //- Write controls to output stream. - void write(Ostream& os) const; - - //- Ostream Operator - friend Ostream& operator<< - ( - Ostream& os, - const cv2DControls& s - ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "cv2DControlsI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControlsI.H b/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControlsI.H deleted file mode 100644 index dd745a7875f14903ccfb4a685517eb565b979191..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/conformalVoronoi2DMesh/cv2DControls/cv2DControlsI.H +++ /dev/null @@ -1,158 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -inline Foam::scalar Foam::cv2DControls::minCellSize() const -{ - return minCellSize_; -} - - -inline Foam::scalar Foam::cv2DControls::minCellSize2() const -{ - return minCellSize2_; -} - - -inline Foam::scalar Foam::cv2DControls::maxQuadAngle() const -{ - return maxQuadAngle_; -} - - -inline Foam::scalar Foam::cv2DControls::nearWallAlignedDist() const -{ - return nearWallAlignedDist_; -} - - -inline Foam::scalar Foam::cv2DControls::nearWallAlignedDist2() const -{ - return nearWallAlignedDist2_; -} - - -inline Foam::Switch Foam::cv2DControls::insertSurfaceNearestPointPairs() const -{ - return insertSurfaceNearestPointPairs_; -} - - -inline Foam::Switch Foam::cv2DControls::mirrorPoints() const -{ - return mirrorPoints_; -} - - -inline Foam::Switch Foam::cv2DControls::insertSurfaceNearPointPairs() const -{ - return insertSurfaceNearPointPairs_; -} - - -inline Foam::Switch Foam::cv2DControls::objOutput() const -{ - return objOutput_; -} - - -inline Foam::Switch Foam::cv2DControls::meshedSurfaceOutput() const -{ - return meshedSurfaceOutput_; -} - - -inline Foam::Switch Foam::cv2DControls::randomiseInitialGrid() const -{ - return randomiseInitialGrid_; -} - - -inline Foam::scalar Foam::cv2DControls::randomPerturbation() const -{ - return randomPerturbation_; -} - - -inline Foam::label Foam::cv2DControls::maxBoundaryConformingIter() const -{ - return maxBoundaryConformingIter_; -} - - -inline Foam::scalar Foam::cv2DControls::span() const -{ - return span_; -} - - -inline Foam::scalar Foam::cv2DControls::span2() const -{ - return span2_; -} - - -inline Foam::scalar Foam::cv2DControls::minEdgeLen() const -{ - return minEdgeLen_; -} - - -inline Foam::scalar Foam::cv2DControls::minEdgeLen2() const -{ - return minEdgeLen2_; -} - - -inline Foam::scalar Foam::cv2DControls::maxNotchLen() const -{ - return maxNotchLen_; -} - - -inline Foam::scalar Foam::cv2DControls::maxNotchLen2() const -{ - return maxNotchLen2_; -} - - -inline Foam::scalar Foam::cv2DControls::minNearPointDist() const -{ - return minNearPointDist_; -} - - -inline Foam::scalar Foam::cv2DControls::minNearPointDist2() const -{ - return minNearPointDist2_; -} - - -inline Foam::scalar Foam::cv2DControls::ppDist() const -{ - return ppDist_; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/cv2DMesh.C b/applications/utilities/mesh/generation/cv2DMesh/cv2DMesh.C deleted file mode 100644 index e44a249f2825043587f387d8410171c9720a065d..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/cv2DMesh.C +++ /dev/null @@ -1,230 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Application - cv2DMesh - -Description - Conformal-Voronoi 2D extruding automatic mesher with grid or read - initial points and point position relaxation with optional - "squarification". - -\*---------------------------------------------------------------------------*/ - -#include "CV2D.H" -#include "argList.H" - -#include "MeshedSurfaces.H" -#include "shortEdgeFilter2D.H" -#include "extrude2DMesh.H" -#include "polyMesh.H" -#include "patchToPoly2DMesh.H" -#include "extrudeModel.H" -#include "polyTopoChange.H" -#include "edgeCollapser.H" -#include "globalIndex.H" - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - argList::noParallel(); - argList::validArgs.clear(); - argList::validOptions.insert - ( - "pointsFile", - "filename" - ); - - #include "addOverwriteOption.H" - - #include "setRootCase.H" - #include "createTime.H" - - // Read control dictionary - // ~~~~~~~~~~~~~~~~~~~~~~~ - IOdictionary controlDict - ( - IOobject - ( - args.executable() + "Dict", - runTime.system(), - runTime, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); - - const dictionary& shortEdgeFilterDict - ( - controlDict.subDict("shortEdgeFilter") - ); - const dictionary& extrusionDict(controlDict.subDict("extrusion")); - - Switch extrude(extrusionDict.lookup("extrude")); - const bool overwrite = args.optionFound("overwrite"); - - // Read and triangulation - // ~~~~~~~~~~~~~~~~~~~~~~ - CV2D mesh(runTime, controlDict); - - if (args.options().found("pointsFile")) - { - fileName pointFileName(IStringStream(args.options()["pointsFile"])()); - mesh.insertPoints(pointFileName); - } - else - { - mesh.insertGrid(); - } - - mesh.insertSurfacePointPairs(); - mesh.boundaryConform(); - - while (runTime.loop()) - { - Info<< nl << "Time = " << runTime.timeName() << endl; - - mesh.newPoints(); - } - - mesh.write(); - - Info<< "Finished Delaunay in = " << runTime.cpuTimeIncrement() << " s." - << endl; - - Info<< "Begin filtering short edges:" << endl; - shortEdgeFilter2D sef(mesh, shortEdgeFilterDict); - - sef.filter(); - - Info<< "Meshed surface after edge filtering :" << endl; - sef.fMesh().writeStats(Info); - - if (mesh.meshControls().meshedSurfaceOutput()) - { - Info<< "Write .obj file of the 2D mesh: MeshedSurface.obj" << endl; - sef.fMesh().write("MeshedSurface.obj"); - } - - Info<< "Finished filtering in = " << runTime.cpuTimeIncrement() << " s." - << endl; - - Info<< "Begin constructing a polyMesh:" << endl; - - patchToPoly2DMesh poly2DMesh - ( - sef.fMesh(), - sef.patchNames(), - sef.patchSizes(), - sef.mapEdgesRegion() - ); - - poly2DMesh.createMesh(); - - polyMesh pMesh - ( - IOobject - ( - polyMesh::defaultRegion, - runTime.constant(), - runTime, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - xferMove(poly2DMesh.points()), - xferMove(poly2DMesh.faces()), - xferMove(poly2DMesh.owner()), - xferMove(poly2DMesh.neighbour()) - ); - - Info<< "Constructing patches." << endl; - List<polyPatch*> patches(poly2DMesh.patchNames().size()); - label countPatches = 0; - - forAll(patches, patchI) - { - if (poly2DMesh.patchSizes()[patchI] != 0) - { - patches[countPatches] = new polyPatch - ( - poly2DMesh.patchNames()[patchI], - poly2DMesh.patchSizes()[patchI], - poly2DMesh.patchStarts()[patchI], - countPatches, - pMesh.boundaryMesh(), - word::null - ); - - countPatches++; - } - } - patches.setSize(countPatches); - pMesh.addPatches(patches); - - if (extrude) - { - Info<< "Begin extruding the polyMesh:" << endl; - - { - // Point generator - autoPtr<extrudeModel> model(extrudeModel::New(extrusionDict)); - - extrude2DMesh extruder(pMesh, extrusionDict, model()); - - extruder.addFrontBackPatches(); - - polyTopoChange meshMod(pMesh.boundaryMesh().size()); - - extruder.setRefinement(meshMod); - - autoPtr<mapPolyMesh> morphMap = meshMod.changeMesh(pMesh, false); - - pMesh.updateMesh(morphMap); - } - } - - if (!overwrite) - { - runTime++; - } - else - { - pMesh.setInstance("constant"); - } - - pMesh.write(); - - Info<< "Finished extruding in = " - << runTime.cpuTimeIncrement() << " s." << endl; - - Info<< nl << "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/cv2DMeshDict b/applications/utilities/mesh/generation/cv2DMesh/cv2DMeshDict deleted file mode 100644 index 0ef6d2a0c4794677e257056a9a23d3b1e59975d2..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/cv2DMeshDict +++ /dev/null @@ -1,208 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object cv2DMeshDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -geometry -{ - laurence_clean_preciser.stl - { - name laurence_clean_preciser; - type closedTriSurfaceMesh; - //type triSurfaceMesh; - } -// refinementBox -// { -// type searchableBox; -// min (-0.5 0.35 -1000); -// max (-0.5 0.35 1000); -// } -// refinementSphere -// { -// type searchableSphere; -// centre (0.85 0.4 0.0); -// radius 0.01; -// } -} - -surfaceConformation -{ - locationInMesh (-2.8 0.7 0.5); - - pointPairDistanceCoeff 0.005; - - minEdgeLenCoeff 0.005; - - maxNotchLenCoeff 0.003; - - minNearPointDistCoeff 0.0025; - - maxQuadAngle 125; - - // Insert near-boundary point mirror or point-pairs - insertSurfaceNearestPointPairs yes; - - // Mirror near-boundary points rather than insert point-pairs - mirrorPoints no; - - // Insert point-pairs vor dual-cell vertices very near the surface - insertSurfaceNearPointPairs yes; - - // Maximum number of iterations used in boundaryConform. - maxBoundaryConformingIter 5; - - geometryToConformTo - { - laurence_clean_preciser - { - featureMethod extendedFeatureEdgeMesh; - extendedFeatureEdgeMesh "laurence_clean_preciser.extendedFeatureEdgeMesh"; - } - } - - additionalFeatures - { - } - - // Choose if to randomise the initial grid created by insertGrid. - randomiseInitialGrid yes; - - // Perturbation fraction, 1 = cell-size. - randomPerturbation 0.1; - -} - - -motionControl -{ - defaultCellSize 0.05; - - // Assign a priority to all requests for cell sizes, the highest overrules. - defaultPriority 0; - - cellSizeControlGeometry - { - laurence_clean_preciser - { - priority 1; - mode bothSides; - cellSizeFunction linearDistance; - linearDistanceCoeffs - { - distanceCellSize 0.05; - surfaceCellSize 0.01; - distance 0.5; - } - uniformCoeffs - { - cellSize 0.01; - } - } -// refinementBox -// { -// priority 1; -// mode outside; -// cellSizeFunction linearDistance; -// linearDistanceCoeffs -// { -// distanceCellSize 0.04; -// surfaceCellSize 0.005; -// distance 0.2; -// } -// } -// refinementSphere -// { -// priority 1; -// mode outside; -// cellSizeFunction linearDistance; -// linearDistanceCoeffs -// { -// distanceCellSize 0.04; -// surfaceCellSize 0.005; -// distance 0.2; -// } -// } - } - - relaxationModel adaptiveLinear; - - adaptiveLinearCoeffs - { - relaxationStart 0.5; - relaxationEnd 0.0; - } - - objOutput no; - - // Near-wall region where cells are aligned with the wall specified as a number - // of cell layers - nearWallAlignedDist 3; - -} - -shortEdgeFilter -{ - // Factor to multiply the average of a face's edge lengths by. - // If an edge of that face is smaller than that value then delete it. - shortEdgeFilterFactor 0.2; - - // Weighting for the lengths of edges that are attached to the boundaries. - // Used when calculating the length of an edge. Default 2.0. - edgeAttachedToBoundaryFactor 2.0; -} - -extrusion -{ - extrude on; - - extrudeModel linearDirection; - //extrudeModel wedge; - - patchInfo - { - //type empty; - //startFace - } - - patchType empty; - //patchType wedge; - - nLayers 1; - - expansionRatio 1.0; //0.9; - - linearDirectionCoeffs - { - direction (0 0 1); - thickness 0.1; - } - - wedgeCoeffs - { - axisPt (0 0 0); - axis (1 0 0); - angle 10; - } - - thickness 0.1; -} diff --git a/applications/utilities/mesh/generation/cv2DMesh/indexedFace.H b/applications/utilities/mesh/generation/cv2DMesh/indexedFace.H deleted file mode 100644 index 0c30fcc952cc84f0894e7eb1476f0be0cf113ed3..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/indexedFace.H +++ /dev/null @@ -1,135 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - indexedFace - -Description - An indexed form of CGAL::Triangulation_face_base_2<K> used to keep - track of the vertices in the triangulation. - -\*---------------------------------------------------------------------------*/ - -#ifndef indexedFace_H -#define indexedFace_H - -#include <CGAL/Triangulation_2.h> -#include "indexedVertex.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace CGAL -{ - -/*---------------------------------------------------------------------------*\ - Class indexedFace Declaration -\*---------------------------------------------------------------------------*/ - -template<class Gt, class Fb=CGAL::Triangulation_face_base_2<Gt> > -class indexedFace -: - public Fb -{ - // Private data - - //- The index for this triangle face - // -1: triangle and changed and associated data needs updating - // >=0: index of triangles, set by external update algorithm - int index_; - - -public: - - enum faceTypes - { - UNCHANGED = 0, - CHANGED = -1, - SAVE_CHANGED = -2 - }; - - typedef typename Fb::Vertex_handle Vertex_handle; - typedef typename Fb::Face_handle Face_handle; - - template < typename TDS2 > - struct Rebind_TDS - { - typedef typename Fb::template Rebind_TDS<TDS2>::Other Fb2; - typedef indexedFace<Gt, Fb2> Other; - }; - - - // Constructors - - inline indexedFace(); - - inline indexedFace - ( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2 - ); - - inline indexedFace - ( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2, - Face_handle n0, - Face_handle n1, - Face_handle n2 - ); - - - // Member Functions - - inline void set_vertex(int i, Vertex_handle v); - - inline void set_vertices(); - - inline void set_vertices - ( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2 - ); - - inline int& faceIndex(); - - inline int faceIndex() const; - -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace CGAL - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "indexedFaceI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/indexedFaceI.H b/applications/utilities/mesh/generation/cv2DMesh/indexedFaceI.H deleted file mode 100644 index 367cf944333a301593995a00dceb77ac61cac60a..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/indexedFaceI.H +++ /dev/null @@ -1,110 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class Gt, class Fb> -inline CGAL::indexedFace<Gt, Fb>::indexedFace() -: - Fb(), - index_(CHANGED) -{} - - -template<class Gt, class Fb> -inline CGAL::indexedFace<Gt, Fb>::indexedFace -( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2 -) -: - Fb(v0, v1, v2), - index_(CHANGED) -{} - - -template<class Gt, class Fb> -inline CGAL::indexedFace<Gt, Fb>::indexedFace -( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2, - Face_handle n0, - Face_handle n1, - Face_handle n2 -) -: - Fb(v0, v1, v2, n0, n1, n2), - index_(CHANGED) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template<class Gt, class Fb> -inline void CGAL::indexedFace<Gt, Fb>::set_vertex(int i, Vertex_handle v) -{ - index_ = CHANGED; - Fb::set_vertex(i, v); -} - - -template<class Gt, class Fb> -inline void CGAL::indexedFace<Gt, Fb>::set_vertices() -{ - index_ = CHANGED; - Fb::set_vertices(); -} - - -template<class Gt, class Fb> -inline void CGAL::indexedFace<Gt, Fb>::set_vertices -( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2 -) -{ - index_ = CHANGED; - Fb::set_vertices(v0, v1, v2); -} - - -template<class Gt, class Fb> -inline int& CGAL::indexedFace<Gt, Fb>::faceIndex() -{ - return index_; -} - - -template<class Gt, class Fb> -inline int CGAL::indexedFace<Gt, Fb>::faceIndex() const -{ - return index_; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/utilities/mesh/generation/cv2DMesh/indexedVertex.H b/applications/utilities/mesh/generation/cv2DMesh/indexedVertex.H deleted file mode 100644 index ae58a0bfe5c2610f4a2651442df081e09a53fcab..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/indexedVertex.H +++ /dev/null @@ -1,210 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - indexedVertex - -Description - An indexed form of CGAL::Triangulation_vertex_base_2<K> used to keep - track of the vertices in the triangulation. - -\*---------------------------------------------------------------------------*/ - -#ifndef indexedVertex_H -#define indexedVertex_H - -#include <CGAL/Triangulation_2.h> - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace CGAL -{ - -// Forward declaration of friend functions and operators - -template<class Gt, class Vb> -class indexedVertex; - -template<class Gt, class Vb> -bool pointPair -( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1 -); - -template<class Gt, class Vb> -bool boundaryTriangle -( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1, - const indexedVertex<Gt, Vb>& v2 -); - -template<class Gt, class Vb> -bool outsideTriangle -( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1, - const indexedVertex<Gt, Vb>& v2 -); - -/*---------------------------------------------------------------------------*\ - Class indexedVertex Declaration -\*---------------------------------------------------------------------------*/ - -template<class Gt, class Vb=CGAL::Triangulation_vertex_base_2<Gt> > -class indexedVertex -: - public Vb -{ - // Private data - - //- The index for this triangle vertex - int index_; - - //- Index of pair-point : - // NEAR_BOUNDARY_POINT : internal near boundary point. - // INTERNAL_POINT : internal point. - // FAR_POINT : far-point. - // >= 0 : part of point-pair. Index of other point. - // Lowest numbered is inside one (master). - int type_; - - -public: - - enum pointTypes - { - NEAR_BOUNDARY_POINT = -4, - INTERNAL_POINT = -3, - MIRROR_POINT = -2, - FAR_POINT = -1 - }; - - typedef typename Vb::Vertex_handle Vertex_handle; - typedef typename Vb::Face_handle Face_handle; - typedef typename Vb::Point Point; - - template<typename TDS2> - struct Rebind_TDS - { - typedef typename Vb::template Rebind_TDS<TDS2>::Other Vb2; - typedef indexedVertex<Gt,Vb2> Other; - }; - - - // Constructors - - inline indexedVertex(); - - inline indexedVertex(const Point& p); - - inline indexedVertex(const Point& p, const int index, const int& type); - - inline indexedVertex(const Point& p, Face_handle f); - - inline indexedVertex(Face_handle f); - - - // Member Functions - - inline int& index(); - - inline int index() const; - - inline int& type(); - - inline int type() const; - - //- Is point a far-point - inline bool farPoint() const; - - //- Is point internal, i.e. not on boundary - inline bool internalPoint() const; - - //- Is point internal and near the boundary - inline bool nearBoundary() const; - - //- Set the point to be near the boundary - inline void setNearBoundary(); - - //- Is point a mirror point - inline bool mirrorPoint() const; - - //- Either master or slave of pointPair. - inline bool pairPoint() const; - - //- Master of a pointPair is the lowest numbered one. - inline bool ppMaster() const; - - //- Slave of a pointPair is the highest numbered one. - inline bool ppSlave() const; - - //- Either original internal point or master of pointPair. - inline bool internalOrBoundaryPoint() const; - - //- Is point near the boundary or part of the boundary definition - inline bool nearOrOnBoundary() const; - - - // Friend Functions - - //- Do the two given vertices consitute a boundary point-pair - friend bool pointPair <Gt, Vb> - ( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1 - ); - - //- Do the three given vertices consitute a boundary triangle - friend bool boundaryTriangle <Gt, Vb> - ( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1, - const indexedVertex<Gt, Vb>& v2 - ); - - //- Do the three given vertices consitute an outside triangle - friend bool outsideTriangle <Gt, Vb> - ( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1, - const indexedVertex<Gt, Vb>& v2 - ); - -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace CGAL - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "indexedVertexI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/indexedVertexI.H b/applications/utilities/mesh/generation/cv2DMesh/indexedVertexI.H deleted file mode 100644 index 2d6280274f573b519ee51e034f3b7f7e767321c1..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/indexedVertexI.H +++ /dev/null @@ -1,233 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex() -: - Vb(), - index_(INTERNAL_POINT), - type_(INTERNAL_POINT) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex(const Point& p) -: - Vb(p), - index_(INTERNAL_POINT), - type_(INTERNAL_POINT) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex -( - const Point& p, - const int index, - const int& type -) -: - Vb(p), - index_(index), - type_(type) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex(const Point& p, Face_handle f) -: - Vb(f, p), - index_(INTERNAL_POINT), - type_(INTERNAL_POINT) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex(Face_handle f) -: - Vb(f), - index_(INTERNAL_POINT), - type_(INTERNAL_POINT) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template<class Gt, class Vb> -inline int& CGAL::indexedVertex<Gt, Vb>::index() -{ - return index_; -} - - -template<class Gt, class Vb> -inline int CGAL::indexedVertex<Gt, Vb>::index() const -{ - return index_; -} - - -template<class Gt, class Vb> -inline int& CGAL::indexedVertex<Gt, Vb>::type() -{ - return type_; -} - - -template<class Gt, class Vb> -inline int CGAL::indexedVertex<Gt, Vb>::type() const -{ - return type_; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::farPoint() const -{ - return type_ == FAR_POINT; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::internalPoint() const -{ - return type_ <= INTERNAL_POINT; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::nearBoundary() const -{ - return type_ == NEAR_BOUNDARY_POINT; -} - - -template<class Gt, class Vb> -inline void CGAL::indexedVertex<Gt, Vb>::setNearBoundary() -{ - type_ = NEAR_BOUNDARY_POINT; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::mirrorPoint() const -{ - return type_ == MIRROR_POINT; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::pairPoint() const -{ - return type_ >= 0; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::ppMaster() const -{ - if (type_ > index_) - { - return true; - } - else - { - return false; - } -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::ppSlave() const -{ - if (type_ >= 0 && type_ < index_) - { - return true; - } - else - { - return false; - } -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::internalOrBoundaryPoint() const -{ - return internalPoint() || ppMaster(); -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::nearOrOnBoundary() const -{ - return pairPoint() || mirrorPoint() || nearBoundary(); -} - - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // - -template<class Gt, class Vb> -bool CGAL::pointPair -( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1 -) -{ - return v0.index_ == v1.type_ || v1.index_ == v0.type_; -} - - -template<class Gt, class Vb> -bool CGAL::boundaryTriangle -( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1, - const indexedVertex<Gt, Vb>& v2 -) -{ - return (v0.pairPoint() && pointPair(v1, v2)) - || (v1.pairPoint() && pointPair(v2, v0)) - || (v2.pairPoint() && pointPair(v0, v1)); -} - - -template<class Gt, class Vb> -bool CGAL::outsideTriangle -( - const indexedVertex<Gt, Vb>& v0, - const indexedVertex<Gt, Vb>& v1, - const indexedVertex<Gt, Vb>& v2 -) -{ - return (v0.farPoint() || v0.ppSlave()) - || (v1.farPoint() || v1.ppSlave()) - || (v2.farPoint() || v2.ppSlave()); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/utilities/mesh/generation/cv2DMesh/insertBoundaryConformPointPairs.C b/applications/utilities/mesh/generation/cv2DMesh/insertBoundaryConformPointPairs.C deleted file mode 100644 index 7db9f2dae4661c09895c0960613c56d92d6560f1..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/insertBoundaryConformPointPairs.C +++ /dev/null @@ -1,323 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*----------------------------------------------------------------------------*/ - -#include "CV2D.H" - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -void Foam::CV2D::insertPointPair -( - Triangulation::Finite_vertices_iterator& vit, - const point2D& p, - const label trii, - const label hitSurface -) -{ - if - ( - !meshControls().mirrorPoints() - || !insertMirrorPoint(toPoint2D(vit->point()), p) - ) - { - pointIndexHit pHit - ( - true, - toPoint3D(p), - trii - ); - - vectorField norm(1); - qSurf_.geometry()[hitSurface].getNormal - ( - List<pointIndexHit>(1, pHit), - norm - ); - - insertPointPair - ( - meshControls().ppDist(), - p, - toPoint2D(norm[0]) - ); - } - - vit = Triangulation::Finite_vertices_iterator - ( - CGAL::Filter_iterator - < - Triangulation::All_vertices_iterator, - Triangulation::Infinite_tester - >(finite_vertices_end(), vit.predicate(), vit.base()) - ); -} - - -bool Foam::CV2D::insertPointPairAtIntersection -( - Triangulation::Finite_vertices_iterator& vit, - const point2D& defVert, - const point2D vertices[], - const scalar maxProtSize2 -) -{ - bool found = false; - point2D interPoint; - label interTri = -1; - label interHitSurface = -1; - scalar interDist2 = 0; - - Face_circulator fcStart = incident_faces(vit); - Face_circulator fc = fcStart; - label vi = 0; - - do - { - if (!is_infinite(fc)) - { - pointIndexHit pHit; - label hitSurface = -1; - - qSurf_.findSurfaceNearestIntersection - ( - toPoint3D(defVert), - toPoint3D(vertices[vi]), - pHit, - hitSurface - ); - - if (pHit.hit()) - { - scalar dist2 = - magSqr(toPoint2D(pHit.hitPoint()) - vertices[vi]); - - // Check the point is further away than the furthest so far - if (dist2 > interDist2) - { - scalar mps2 = maxProtSize2; - - // If this is a boundary triangle reset the tolerance - // to avoid finding a hit point very close to a boundary - // vertex - if (boundaryTriangle(fc)) - { - mps2 = meshControls().maxNotchLen2(); - } - - if (dist2 > mps2) - { - found = true; - interPoint = toPoint2D(pHit.hitPoint()); - interTri = pHit.index(); - interDist2 = dist2; - interHitSurface = hitSurface; - } - } - } - - vi++; - } - } while (++fc != fcStart); - - if (found) - { - insertPointPair(vit, interPoint, interTri, interHitSurface); - return true; - } - else - { - return false; - } -} - - -Foam::label Foam::CV2D::insertBoundaryConformPointPairs -( - const fileName& fName -) -{ - label nIntersections = 0; - - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - // Consider only those points part of point-pairs or near boundary - if (!vit->nearOrOnBoundary()) - { - continue; - } - - // Counter-clockwise circulator - Face_circulator fcStart = incident_faces(vit); - Face_circulator fc = fcStart; - - bool infinite = false; - bool changed = false; - - do - { - if (is_infinite(fc)) - { - infinite = true; - break; - } - else if (fc->faceIndex() < Fb::UNCHANGED) - { - changed = true; - break; - } - } while (++fc != fcStart); - - // If the dual-cell is connected to the infinite point or none of the - // faces whose circumcentres it uses have changed ignore - if (infinite || !changed) continue; - - fc = fcStart; - label nVerts = 0; - - do - { - vertices[nVerts++] = toPoint2D(circumcenter(fc)); - - if (nVerts == maxNvert) - { - break; - } - } while (++fc != fcStart); - - // Check if dual-cell has a large number of faces in which case - // assumed to be in the far-field and reject - if (nVerts == maxNvert) continue; - - // Set n+1 vertex to the first vertex for easy circulating - vertices[nVerts] = vertices[0]; - - // Convert triangle vertex to OpenFOAM point - point2DFromPoint defVert = toPoint2D(vit->point()); - - scalar maxProtSize2 = meshControls().maxNotchLen2(); - - if (vit->internalOrBoundaryPoint()) - { - // Calculate metrics of the dual-cell - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - // The perimeter of the dual-cell - scalar perimeter = 0; - - // Twice the area of the dual-cell - scalar areaT2 = 0; - - for (int vi=0; vi<nVerts; vi++) - { - vector2D edge(vertices[vi+1] - vertices[vi]); - perimeter += mag(edge); - vector2D otherEdge = defVert - vertices[vi]; - areaT2 += mag(edge.x()*otherEdge.y() - edge.y()*otherEdge.x()); - } - - // If the dual-cell is very small reject refinement - if (areaT2 < meshControls().minEdgeLen2()) continue; - - // Estimate the cell width - scalar cellWidth = areaT2/perimeter; - - - // Check dimensions of dual-cell - /* - // Quick rejection of dual-cell refinement based on it's perimeter - if (perimeter < 2*meshControls().minCellSize()) continue; - - // Also check the area of the cell and reject refinement - // if it is less than that allowed - if (areaT2 < meshControls().minCellSize2()) continue; - - // Estimate the cell width and reject refinement if it is less than - // that allowed - if (cellWidth < 0.5*meshControls().minEdgeLen()) continue; - */ - - if - ( - perimeter > 2*meshControls().minCellSize() - && areaT2 > meshControls().minCellSize2() - && cellWidth > 0.5*meshControls().minEdgeLen() - ) - { - maxProtSize2 = 0.25*meshControls().maxNotchLen2(); - } - } - - if (insertPointPairAtIntersection(vit, defVert, vertices, maxProtSize2)) - { - nIntersections++; - } - } - - return nIntersections; -} - - -void Foam::CV2D::markNearBoundaryPoints() -{ - label count = 0; - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - if (vit->internalPoint()) - { - point vert(toPoint3D(vit->point())); - - pointIndexHit pHit; - label hitSurface = -1; - - qSurf_.findSurfaceNearest - ( - vert, - 4*meshControls().minCellSize2(), - pHit, - hitSurface - ); - - if (pHit.hit()) - { - vit->setNearBoundary(); - ++count; - } - } - } - - Info<< count << " points marked as being near a boundary" << endl; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/insertFeaturePoints.C b/applications/utilities/mesh/generation/cv2DMesh/insertFeaturePoints.C deleted file mode 100644 index 464557078fe09981e912b7ad3b029e41920d7a36..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/insertFeaturePoints.C +++ /dev/null @@ -1,394 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*----------------------------------------------------------------------------*/ - -#include "CV2D.H" -#include "plane.H" -#include "unitConversion.H" - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -bool Foam::CV2D::on2DLine(const point2D& p, const linePointRef& line) -{ - const point2D& a = toPoint2D(line.start()); - const point2D& b = toPoint2D(line.end()); - - if - ( - p.x() < min(a.x(), b.x()) - || p.x() > max(a.x(), b.x()) - || p.y() < min(a.y(), b.y()) - || p.y() > max(a.y(), b.y()) - ) - { - return false; - } - - return true; -} - - -void Foam::CV2D::insertFeaturePoints() -{ - featurePoints_.clear(); - label nVert = number_of_vertices(); - - const PtrList<extendedFeatureEdgeMesh>& feMeshes - ( - qSurf_.features() - ); - - if (feMeshes.empty()) - { - WarningIn("CV2D::insertFeaturePoints") - << "Extended Feature Edge Mesh is empty so no feature points will " - << "be found." << nl - << " Use: featureMethod extendedFeatureEdgeMesh;" << nl - << endl; - } - - forAll(feMeshes, i) - { - const extendedFeatureEdgeMesh& feMesh(feMeshes[i]); - const edgeList& edges = feMesh.edges(); - const pointField& points = feMesh.points(); - - if (debug) - { - label nConvex = feMesh.concaveStart() - feMesh.convexStart(); - label nConcave = feMesh.mixedStart() - feMesh.concaveStart(); - label nMixed = feMesh.nonFeatureStart() - feMesh.mixedStart(); - label nExternal = feMesh.internalStart() - feMesh.externalStart(); - label nInternal = feMesh.flatStart() - feMesh.internalStart(); - label nFlat = feMesh.openStart() - feMesh.flatStart(); - label nOpen = feMesh.multipleStart() - feMesh.openStart(); - label nMultiple = edges.size() - feMesh.multipleStart(); - - Info<< "Inserting Feature Points:" << nl - << " Convex points: " << nConvex << nl - << " Concave points: " << nConcave << nl - << " Mixed points: " << nMixed << nl - << " External edges: " << nExternal << nl - << " Internal edges: " << nInternal << nl - << " Flat edges: " << nFlat << nl - << " Open edges: " << nOpen << nl - << " Multiple edges: " << nMultiple << endl; - } - - // Args: (base point, normal) - // @todo allow user to input this - plane zPlane(vector(0, 0, z_), vector(0, 0, 1)); - - if (debug) - { - Info<< " plane: " << zPlane << " " << z_ << endl; - } - - forAll(edges, edgeI) - { - const edge& e = feMesh.edges()[edgeI]; - - const point& ep0 = points[e.start()]; - const point& ep1 = points[e.end()]; - - const linePointRef line(ep0, ep1); - - scalar intersect = zPlane.lineIntersect(line); - - point2D featPoint = toPoint2D(intersect * (ep1 - ep0) + ep0); - - if (on2DLine(featPoint, line)) - { - vector2DField fpn = toPoint2D(feMesh.edgeNormals(edgeI)); - - vector2D cornerNormal = sum(fpn); - cornerNormal /= mag(cornerNormal); - - if (debug) - { - Info<< nl << " line: " << line << nl - << " vec: " << line.vec() << nl - << " featurePoint: " << featPoint << nl - << " line length: " << line.mag() << nl - << " intersect: " << intersect << endl; - } - - if - ( - feMesh.getEdgeStatus(edgeI) - == extendedFeatureEdgeMesh::EXTERNAL - ) - { - // Convex Point - Foam::point2D internalPt = - featPoint - meshControls().ppDist()*cornerNormal; - - if (debug) - { - Info<< "PREC: " << internalPt << nl - << " : " << featPoint << nl - << " : " << meshControls().ppDist() << nl - << " : " << cornerNormal << endl; - } - - featurePoints_.push_back - ( - Vb - ( - toPoint(internalPt), - nVert, - nVert + 1 - ) - ); - label masterPtIndex = nVert++; - - forAll(fpn, nI) - { - const vector n3D(fpn[nI][0], fpn[nI][1], 0.0); - - plane planeN = plane(toPoint3D(featPoint), n3D); - - Foam::point2D externalPt = - internalPt - + ( - 2.0 - * planeN.distance(toPoint3D(internalPt)) - * fpn[nI] - ); - - featurePoints_.push_back - ( - Vb - ( - toPoint(externalPt), - nVert++, - masterPtIndex - ) - ); - - if (debug) - { - Info<< " side point: " << externalPt << endl; - } - } - - if (debug) - { - Info<< "Convex Point: " << featPoint << nl - << " corner norm: " << cornerNormal << nl - << " reference: " << internalPt << endl; - } - } - else if - ( - feMesh.getEdgeStatus(edgeI) - == extendedFeatureEdgeMesh::INTERNAL - ) - { - // Concave Point - Foam::point2D externalPt = - featPoint + meshControls().ppDist()*cornerNormal; - - Foam::point2D refPt = - featPoint - meshControls().ppDist()*cornerNormal; - - label slavePointIndex = 0; - - scalar totalAngle = - radToDeg - ( - constant::mathematical::pi - + acos(mag(fpn[0] & fpn[1])) - ); - - // Number of quadrants the angle should be split into - int nQuads = - int(totalAngle/meshControls().maxQuadAngle()) + 1; - - // The number of additional master points needed to - //obtain the required number of quadrants. - int nAddPoints = min(max(nQuads - 2, 0), 2); - - // index of reflMaster - label reflectedMaster = nVert + 2 + nAddPoints; - - if (debug) - { - Info<< "Concave Point: " << featPoint << nl - << " corner norm: " << cornerNormal << nl - << " external: " << externalPt << nl - << " reference: " << refPt << nl - << " angle: " << totalAngle << nl - << " nQuads: " << nQuads << nl - << " nAddPoints: " << nAddPoints << endl; - } - - forAll(fpn, nI) - { - const vector n3D(fpn[nI][0], fpn[nI][1], 0.0); - - plane planeN = plane(toPoint3D(featPoint), n3D); - - Foam::point2D internalPt = - externalPt - - ( - 2.0 - * planeN.distance(toPoint3D(externalPt)) - * fpn[nI] - ); - - featurePoints_.push_back - ( - Vb - ( - toPoint(internalPt), - nVert, - reflectedMaster - ) - ); - slavePointIndex = nVert++; - - if (debug) - { - Info<< "Internal Point: " << internalPt << endl; - } - } - - if (nAddPoints == 1) - { - // One additional point is the reflection of the slave - // point, i.e., the original reference point - featurePoints_.push_back - ( - Vb - ( - toPoint(refPt), - nVert++, - reflectedMaster - ) - ); - - if (debug) - { - Info<< "ref Point: " << refPt << endl; - } - } - else if (nAddPoints == 2) - { - point2D reflectedAa = - refPt - ((featPoint - externalPt) & fpn[1])*fpn[1]; - - featurePoints_.push_back - ( - Vb - ( - toPoint(reflectedAa), - nVert++, - reflectedMaster - ) - ); - - point2D reflectedBb = - refPt - ((featPoint - externalPt) & fpn[0])*fpn[0]; - - featurePoints_.push_back - ( - Vb - ( - toPoint(reflectedBb), - nVert++, - reflectedMaster - ) - ); - - if (debug) - { - Info<< "refA Point: " << reflectedAa << nl - << "refb Point: " << reflectedBb << endl; - } - } - - featurePoints_.push_back - ( - Vb - ( - toPoint(externalPt), - nVert++, - slavePointIndex - ) - ); - } - else - { - WarningIn("void Foam::CV2D::insertFeaturePoints()") - << "Feature Edge " << edges[edgeI] << nl - << " points(" << points[edges[edgeI].start()] - << ", " << points[edges[edgeI].end()] << ")" << nl - << " is not labelled as either concave or convex, it" - << " is labelled as (#2 = flat): " - << feMesh.getEdgeStatus(edgeI) << endl; - } - } - else - { - WarningIn("void Foam::CV2D::insertFeaturePoints()") - << "Point " << featPoint << " is not on the line " - << line << endl; - } - } - } - - // Insert the feature points. - reinsertFeaturePoints(); - - if (meshControls().objOutput()) - { - writePoints("feat_allPoints.obj", false); - writeFaces("feat_allFaces.obj", false); - writeFaces("feat_faces.obj", true); - writeTriangles("feat_triangles.obj", true); - } -} - - -void Foam::CV2D::reinsertFeaturePoints() -{ - for - ( - std::list<Vb>::iterator vit=featurePoints_.begin(); - vit != featurePoints_.end(); - ++vit - ) - { - insertPoint - ( - toPoint2D(vit->point()), - vit->index(), - vit->type() - ); - } -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/insertSurfaceNearPointPairs.C b/applications/utilities/mesh/generation/cv2DMesh/insertSurfaceNearPointPairs.C deleted file mode 100644 index 700041f814189bae85c38bc9496b9139bdb4a71c..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/insertSurfaceNearPointPairs.C +++ /dev/null @@ -1,114 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*----------------------------------------------------------------------------*/ - -#include "CV2D.H" - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -void Foam::CV2D::insertSurfaceNearPointPairs() -{ - Info<< "insertSurfaceNearPointPairs: "; - - label nNearPoints = 0; - - for - ( - Triangulation::Finite_edges_iterator eit = finite_edges_begin(); - eit != finite_edges_end(); - eit++ - ) - { - Vertex_handle v0h = eit->first->vertex(cw(eit->second)); - Vertex_handle v1h = eit->first->vertex(ccw(eit->second)); - - if (v0h->ppMaster() && v1h->ppMaster()) - { - point2DFromPoint v0(toPoint2D(v0h->point())); - point2DFromPoint v1(toPoint2D(v1h->point())); - - // Check that the two triangle vertices are further apart than the - // minimum cell size - if (magSqr(v1 - v0) > meshControls().minCellSize2()) - { - point2D e0(toPoint2D(circumcenter(eit->first))); - - point2D e1 - ( - toPoint2D(circumcenter(eit->first->neighbor(eit->second))) - ); - - // Calculate the length^2 of the edge normal to the surface - scalar edgeLen2 = magSqr(e0 - e1); - - if (edgeLen2 < meshControls().minNearPointDist2()) - { - pointIndexHit pHit; - label hitSurface = -1; - - qSurf_.findSurfaceNearest - ( - toPoint3D(e0), - meshControls().minEdgeLen2(), - pHit, - hitSurface - ); - - if (pHit.hit()) - { - vectorField norm(1); - qSurf_.geometry()[hitSurface].getNormal - ( - List<pointIndexHit>(1, pHit), - norm - ); - - insertPointPair - ( - meshControls().ppDist(), - toPoint2D(pHit.hitPoint()), - toPoint2D(norm[0]) - ); - - nNearPoints++; - - // Correct the edge iterator for the change in the - // number of edges following the point-pair insertion - eit = Finite_edges_iterator - ( - finite_edges_end().base(), - eit.predicate(), - eit.base() - ); - } - } - } - } - } - - Info<< nNearPoints << " point-pairs inserted" << endl; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/insertSurfaceNearestPointPairs.C b/applications/utilities/mesh/generation/cv2DMesh/insertSurfaceNearestPointPairs.C deleted file mode 100644 index 49249241e77adac8ccce8b8853f1a40b8f92719c..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/insertSurfaceNearestPointPairs.C +++ /dev/null @@ -1,244 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*----------------------------------------------------------------------------*/ - -#include "CV2D.H" - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -bool Foam::CV2D::dualCellSurfaceIntersection -( - const Triangulation::Finite_vertices_iterator& vit -) const -{ - Triangulation::Edge_circulator ecStart = incident_edges(vit); - Triangulation::Edge_circulator ec = ecStart; - - do - { - if (!is_infinite(ec)) - { - point e0 = toPoint3D(circumcenter(ec->first)); - - // If edge end is outside bounding box then edge cuts boundary - if (!qSurf_.globalBounds().contains(e0)) - { - return true; - } - - point e1 = toPoint3D(circumcenter(ec->first->neighbor(ec->second))); - - // If other edge end is ouside bounding box then edge cuts boundary - if (!qSurf_.globalBounds().contains(e1)) - { - return true; - } - - if (magSqr(e1 - e0) > meshControls().minEdgeLen2()) - { - if (qSurf_.findSurfaceAnyIntersection(e0, e1)) - { - return true; - } - } - } - - } while (++ec != ecStart); - - return false; -} - - -void Foam::CV2D::insertPointPairs -( - const DynamicList<point2D>& nearSurfacePoints, - const DynamicList<point2D>& surfacePoints, - const DynamicList<label>& surfaceTris, - const DynamicList<label>& surfaceHits, - const fileName fName -) -{ - if (meshControls().mirrorPoints()) - { - forAll(surfacePoints, ppi) - { - insertMirrorPoint - ( - nearSurfacePoints[ppi], - surfacePoints[ppi] - ); - } - } - else - { - forAll(surfacePoints, ppi) - { - pointIndexHit pHit - ( - true, - toPoint3D(surfacePoints[ppi]), - surfaceTris[ppi] - ); - - vectorField norm(1); - qSurf_.geometry()[surfaceHits[ppi]].getNormal - ( - List<pointIndexHit>(1, pHit), - norm - ); - - insertPointPair - ( - meshControls().ppDist(), - surfacePoints[ppi], - toPoint2D(norm[0]) - ); - } - } - - Info<< surfacePoints.size() << " point-pairs inserted" << endl; - - if (meshControls().objOutput()) - { - OFstream str(fName); - label vertI = 0; - - forAll(surfacePoints, ppi) - { - meshTools::writeOBJ(str, toPoint3D(surfacePoints[ppi])); - vertI++; - } - - Info<< "insertPointPairs: Written " << surfacePoints.size() - << " inserted point-pair locations to file " - << str.name() << endl; - } -} - - -void Foam::CV2D::insertSurfaceNearestPointPairs() -{ - Info<< "insertSurfaceNearestPointPairs: "; - - label nSurfacePointsEst = - min - ( - number_of_vertices(), - size_t(10*sqrt(scalar(number_of_vertices()))) - ); - - DynamicList<point2D> nearSurfacePoints(nSurfacePointsEst); - DynamicList<point2D> surfacePoints(nSurfacePointsEst); - DynamicList<label> surfaceTris(nSurfacePointsEst); - DynamicList<label> surfaceHits(nSurfacePointsEst); - - // Local references to surface mesh addressing -// const pointField& localPoints = qSurf_.localPoints(); -// const labelListList& edgeFaces = qSurf_.edgeFaces(); -// const vectorField& faceNormals = qSurf_.faceNormals(); -// const labelListList& faceEdges = qSurf_.faceEdges(); - - for - ( - Triangulation::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - if (vit->internalPoint()) - { - point2DFromPoint vert(toPoint2D(vit->point())); - - pointIndexHit pHit; - label hitSurface = -1; - - qSurf_.findSurfaceNearest - ( - toPoint3D(vert), - 4*meshControls().minCellSize2(), - pHit, - hitSurface - ); - - if (pHit.hit()) - { - vit->setNearBoundary(); - - // Reference to the nearest triangle -// const labelledTri& f = qSurf_[hitSurface]; - -// // Find where point is on triangle. -// // Note tolerance needed is relative one -// // (used in comparing normalized [0..1] triangle coordinates). -// label nearType, nearLabel; -// triPointRef -// ( -// localPoints[f[0]], -// localPoints[f[1]], -// localPoints[f[2]] -// ).classify(pHit.hitPoint(), nearType, nearLabel); - -// // If point is on a edge check if it is an internal feature - -// bool internalFeatureEdge = false; - -// if (nearType == triPointRef::EDGE) -// { -// label edgeI = faceEdges[hitSurface][nearLabel]; -// const labelList& eFaces = edgeFaces[edgeI]; - -// if -// ( -// eFaces.size() == 2 -// && (faceNormals[eFaces[0]] & faceNormals[eFaces[1]]) -// < -0.2 -// ) -// { -// internalFeatureEdge = true; -// } -// } - - if (dualCellSurfaceIntersection(vit)) //&& !internalFeatureEdge) - { - nearSurfacePoints.append(vert); - surfacePoints.append(toPoint2D(pHit.hitPoint())); - surfaceTris.append(pHit.index()); - surfaceHits.append(hitSurface); - } - } - } - } - - insertPointPairs - ( - nearSurfacePoints, - surfacePoints, - surfaceTris, - surfaceHits, - "surfaceNearestIntersections.obj" - ); -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/shortEdgeFilter2D.C b/applications/utilities/mesh/generation/cv2DMesh/shortEdgeFilter2D.C deleted file mode 100644 index b125351314b205acd0ee6e1406954230af58d917..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/shortEdgeFilter2D.C +++ /dev/null @@ -1,533 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms_ of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "shortEdgeFilter2D.H" - -namespace Foam -{ - defineTypeNameAndDebug(shortEdgeFilter2D, 0); -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::shortEdgeFilter2D::shortEdgeFilter2D -( - const Foam::CV2D& cv2Dmesh, - const dictionary& dict -) -: - cv2Dmesh_(cv2Dmesh), - shortEdgeFilterFactor_(readScalar(dict.lookup("shortEdgeFilterFactor"))), - edgeAttachedToBoundaryFactor_ - ( - dict.lookupOrDefault<scalar>("edgeAttachedToBoundaryFactor", 2.0) - ), - patchNames_(wordList()), - patchSizes_(labelList()), - mapEdgesRegion_(), - indirectPatchEdge_() -{ - point2DField points2D; - faceList faces; - - cv2Dmesh.calcDual - ( - points2D, - faces, - patchNames_, - patchSizes_, - mapEdgesRegion_, - indirectPatchEdge_ - ); - - pointField points(points2D.size()); - forAll(points, ip) - { - points[ip] = cv2Dmesh.toPoint3D(points2D[ip]); - } - - if (debug) - { - OFstream str("indirectPatchEdges.obj"); - label count = 0; - - Info<< "Writing indirectPatchEdges to " << str.name() << endl; - - forAllConstIter(EdgeMap<label>, indirectPatchEdge_, iter) - { - const edge& e = iter.key(); - - meshTools::writeOBJ - ( - str, - points[e.start()], - points[e.end()], - count - ); - } - } - - points2D.clear(); - - ms_ = MeshedSurface<face>(xferMove(points), xferMove(faces)); - - Info<< "Meshed surface stats before edge filtering :" << endl; - ms_.writeStats(Info); - - if (debug) - { - writeInfo(Info); - - ms_.write("MeshedSurface_preFilter.obj"); - } -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::shortEdgeFilter2D::~shortEdgeFilter2D() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -void -Foam::shortEdgeFilter2D::filter() -{ - // These are global indices. - const pointField& points = ms_.points(); - const edgeList& edges = ms_.edges(); - const faceList& faces = ms_.faces(); - const labelList& meshPoints = ms_.meshPoints(); - const labelList& boundaryPoints = ms_.boundaryPoints(); - - label maxChain = 0; - label nPointsToRemove = 0; - - labelList pointsToRemove(ms_.points().size(), -1); - - // List of number of vertices in a face. - labelList newFaceVertexCount(faces.size(), -1); - forAll(faces, faceI) - { - newFaceVertexCount[faceI] = faces[faceI].size(); - } - - // Check if the point is a boundary point. Flag if it is so that - // it will not be deleted. - boolList boundaryPointFlags(points.size(), false); - // This has been removed, otherwise small edges on the boundary are not - // removed. - /* forAll(boundaryPointFlags, pointI) - { - forAll(boundaryPoints, bPoint) - { - if (meshPoints[boundaryPoints[bPoint]] == pointI) - { - boundaryPointFlags[pointI] = true; - } - } - }*/ - - // Check if an edge has a boundary point. It it does the edge length - // will be doubled when working out its length. - Info<< " Marking edges attached to boundaries." << endl; - boolList edgeAttachedToBoundary(edges.size(), false); - forAll(edges, edgeI) - { - const edge& e = edges[edgeI]; - const label startVertex = e.start(); - const label endVertex = e.end(); - - forAll(boundaryPoints, bPoint) - { - if - ( - boundaryPoints[bPoint] == startVertex - || boundaryPoints[bPoint] == endVertex - ) - { - edgeAttachedToBoundary[edgeI] = true; - } - } - } - - forAll(edges, edgeI) - { - const edge& e = edges[edgeI]; - - // get the vertices of that edge. - const label startVertex = e.start(); - const label endVertex = e.end(); - - scalar edgeLength = - mag - ( - points[meshPoints[startVertex]] - - points[meshPoints[endVertex]] - ); - - if (edgeAttachedToBoundary[edgeI]) - { - edgeLength *= edgeAttachedToBoundaryFactor_; - } - - scalar shortEdgeFilterValue = 0.0; - - const labelList& psEdges = ms_.pointEdges()[startVertex]; - const labelList& peEdges = ms_.pointEdges()[endVertex]; - - forAll(psEdges, psEdgeI) - { - const edge& psE = edges[psEdges[psEdgeI]]; - if (edgeI != psEdges[psEdgeI]) - { - shortEdgeFilterValue += - mag - ( - points[meshPoints[psE.start()]] - - points[meshPoints[psE.end()]] - ); - } - } - - forAll(peEdges, peEdgeI) - { - const edge& peE = edges[peEdges[peEdgeI]]; - if (edgeI != peEdges[peEdgeI]) - { - shortEdgeFilterValue += - mag - ( - points[meshPoints[peE.start()]] - - points[meshPoints[peE.end()]] - ); - } - } - - shortEdgeFilterValue *= - shortEdgeFilterFactor_ - /(psEdges.size() + peEdges.size() - 2); - - - edge lookupInPatchEdge - ( - meshPoints[startVertex], - meshPoints[endVertex] - ); - - if - ( - edgeLength < shortEdgeFilterValue - || indirectPatchEdge_.found(lookupInPatchEdge) - ) - { - bool flagDegenerateFace = false; - const labelList& pFaces = ms_.pointFaces()[startVertex]; - - forAll(pFaces, pFaceI) - { - const face& f = ms_.localFaces()[pFaces[pFaceI]]; - forAll(f, fp) - { - // If the edge is part of this face... - if (f[fp] == endVertex) - { - // If deleting vertex would create a triangle, don't! - if (newFaceVertexCount[pFaces[pFaceI]] < 4) - { - flagDegenerateFace = true; - } - else - { - newFaceVertexCount[pFaces[pFaceI]]--; - } - } - // If the edge is not part of this face... - else - { - // Deleting vertex of a triangle... - if (newFaceVertexCount[pFaces[pFaceI]] < 3) - { - flagDegenerateFace = true; - } - } - } - } - - // This if statement determines whether a point should be deleted. - if - ( - pointsToRemove[meshPoints[startVertex]] == -1 - && pointsToRemove[meshPoints[endVertex]] == -1 - && !boundaryPointFlags[meshPoints[startVertex]] - && !flagDegenerateFace - ) - { - pointsToRemove[meshPoints[startVertex]] = meshPoints[endVertex]; - ++nPointsToRemove; - } - } - } - - label totalNewPoints = points.size() - nPointsToRemove; - - pointField newPoints(totalNewPoints, vector::zero); - labelList newPointNumbers(points.size(), -1); - label numberRemoved = 0; - - forAll(points, pointI) - { - // If the point is NOT going to be removed. - if (pointsToRemove[pointI] == -1) - { - newPoints[pointI - numberRemoved] = points[pointI]; - newPointNumbers[pointI] = pointI - numberRemoved; - } - else - { - numberRemoved++; - } - } - - // Need a new faceList - faceList newFaces(faces.size()); - label newFaceI = 0; - - labelList newFace; - label newFaceSize = 0; - - // Now need to iterate over the faces and remove points. Global index. - forAll(faces, faceI) - { - const face& f = faces[faceI]; - - newFace.clear(); - newFace.setSize(f.size()); - newFaceSize = 0; - - forAll(f, fp) - { - label pointI = f[fp]; - // If not removing the point, then add it to the new face. - if (pointsToRemove[pointI] == -1) - { - newFace[newFaceSize++] = newPointNumbers[pointI]; - } - else - { - label newPointI = pointsToRemove[pointI]; - // Replace deleted point with point that it is being - // collapsed to. - if - ( - f.nextLabel(fp) != newPointI - && f.prevLabel(fp) != newPointI - ) - { - label pChain = newPointI; - label totalChain = 0; - for (label nChain = 0; nChain <= totalChain; ++nChain) - { - if (newPointNumbers[pChain] != -1) - { - newFace[newFaceSize++] = newPointNumbers[pChain]; - newPointNumbers[pointI] = newPointNumbers[pChain]; - maxChain = max(totalChain, maxChain); - } - else - { - WarningIn("shortEdgeFilter") - << "Point " << pChain - << " marked for deletion as well as point " - << pointI << nl - << " Incrementing maxChain by 1 from " - << totalChain << " to " << totalChain + 1 - << endl; - totalChain++; - } - pChain = pointsToRemove[pChain]; - } - } - else - { - if (newPointNumbers[newPointI] != -1) - { - newPointNumbers[pointI] = newPointNumbers[newPointI]; - } - } - } - } - - newFace.setSize(newFaceSize); - - if (newFace.size() > 2) - { - newFaces[newFaceI++] = face(newFace); - } - else - { - FatalErrorIn("shortEdgeFilter") - << "Only " << newFace.size() << " in face " << faceI - << exit(FatalError); - } - } - - newFaces.setSize(newFaceI); - - MeshedSurface<face> fMesh - ( - xferMove(newPoints), - xferMove(newFaces), - xferCopy(List<surfZone>()) - ); - - const Map<int>& fMeshPointMap = fMesh.meshPointMap(); - - // Reset patchSizes_ - patchSizes_.clear(); - patchSizes_.setSize(patchNames_.size(), 0); - - label equalEdges = 0; - label notFound = 0; - label matches = 0; - label negativeLabels = 0; - - forAll(newPointNumbers, pointI) - { - if (newPointNumbers[pointI] == -1) - { - WarningIn("shortEdgeFilter") - << pointI << " will be deleted and " << newPointNumbers[pointI] - << ", so it will not be replaced. " - << "This will cause edges to be deleted." << endl; - } - } - - // Create new EdgeMap. - Info<< "Creating new EdgeMap." << endl; - EdgeMap<label> newMapEdgesRegion(mapEdgesRegion_.size()); - - for - ( - label bEdgeI = ms_.nInternalEdges(); - bEdgeI < edges.size(); - ++bEdgeI - ) - { - label p1 = meshPoints[edges[bEdgeI][0]]; - label p2 = meshPoints[edges[bEdgeI][1]]; - - edge e(p1, p2); - - if (mapEdgesRegion_.found(e)) - { - if - ( - newPointNumbers[p1] != -1 - && newPointNumbers[p2] != -1 - ) - { - if (newPointNumbers[p1] != newPointNumbers[p2]) - { - label region = mapEdgesRegion_.find(e)(); - newMapEdgesRegion.insert - ( - edge - ( - fMeshPointMap[newPointNumbers[p1]], - fMeshPointMap[newPointNumbers[p2]] - ), - region - ); - patchSizes_[region]++; - matches++; - } - else - { - equalEdges++; - } - } - else - { - negativeLabels++; - } - } - else - { - notFound++; - } - } - - if (debug) - { - Info<< "EdgeMapping :" << nl - << " Matches : " << matches << nl - << " Equal : " << equalEdges << nl - << " Negative : " << negativeLabels << nl - << " Not Found: " << notFound << endl; - } - - mapEdgesRegion_.transfer(newMapEdgesRegion); - - ms_.transfer(fMesh); - - Info<< " Maximum number of chained collapses = " << maxChain << endl; - - if (debug) - { - writeInfo(Info); - } -} - - -void Foam::shortEdgeFilter2D::writeInfo(Ostream& os) -{ - os << "Short Edge Filtering Information:" << nl - << " shortEdgeFilterFactor: " << shortEdgeFilterFactor_ << nl - << " edgeAttachedToBoundaryFactor: " << edgeAttachedToBoundaryFactor_ - << endl; - - forAll(patchNames_, patchI) - { - os << " Patch " << patchNames_[patchI] - << ", size " << patchSizes_[patchI] << endl; - } - - os << " There are " << mapEdgesRegion_.size() - << " boundary edges." << endl; - - os << " Mesh Info:" << nl - << " Points: " << ms_.nPoints() << nl - << " Faces: " << ms_.size() << nl - << " Edges: " << ms_.nEdges() << nl - << " Internal: " << ms_.nInternalEdges() << nl - << " External: " << ms_.nEdges() - ms_.nInternalEdges() - << endl; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cv2DMesh/shortEdgeFilter2D.H b/applications/utilities/mesh/generation/cv2DMesh/shortEdgeFilter2D.H deleted file mode 100644 index 53b248fc3d4bf542676f3a1f64d9cc5db9f3664a..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cv2DMesh/shortEdgeFilter2D.H +++ /dev/null @@ -1,133 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::shortEdgeFilter2D - -Description - This class filters short edges generated by the CV2D mesher. - -SourceFiles - shortEdgeFilter2D.C - -\*---------------------------------------------------------------------------*/ - -#ifndef shortEdgeFilter2D_H -#define shortEdgeFilter2D_H - -#include "MeshedSurfaces.H" -#include "CV2D.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class shortEdgeFilter2D Declaration -\*---------------------------------------------------------------------------*/ - -class shortEdgeFilter2D -{ - // Private data - - const CV2D& cv2Dmesh_; - - MeshedSurface<face> ms_; - - const scalar shortEdgeFilterFactor_; - - const scalar edgeAttachedToBoundaryFactor_; - - wordList patchNames_; - - labelList patchSizes_; - - EdgeMap<label> mapEdgesRegion_; - - EdgeMap<label> indirectPatchEdge_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - shortEdgeFilter2D(const shortEdgeFilter2D&); - - //- Disallow default bitwise assignment - void operator=(const shortEdgeFilter2D&); - - -public: - - //- Runtime type information - ClassName("shortEdgeFilter2D"); - - // Constructors - - shortEdgeFilter2D(const CV2D& cv2Dmesh, const dictionary& dict); - - - //- Destructor - ~shortEdgeFilter2D(); - - - // Access Functions - - const wordList& patchNames() const - { - return patchNames_; - } - - const labelList& patchSizes() const - { - return patchSizes_; - } - - const EdgeMap<label>& mapEdgesRegion() const - { - return mapEdgesRegion_; - } - - const MeshedSurface<face>& fMesh() const - { - return ms_; - } - - - // Member Functions - - void filter(); - - void writeInfo(Ostream& os); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/Allwclean b/applications/utilities/mesh/generation/cvMesh/Allwclean deleted file mode 100755 index 3eff84006aa70bbe0d2c8b60b9408274c47bad7d..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/Allwclean +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory -set -x - -wclean libso conformalVoronoiMesh -wclean -wclean cvMeshSurfaceSimplify -wclean cvMeshBackgroundMesh - -# ----------------------------------------------------------------- end-of-file diff --git a/applications/utilities/mesh/generation/cvMesh/Allwmake b/applications/utilities/mesh/generation/cvMesh/Allwmake deleted file mode 100755 index d88e8cee4afe888e82031a710e39bd9db82a578d..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/Allwmake +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory -set -x - -wmake libso conformalVoronoiMesh -wmake -#wmake cvMeshBackgroundMesh -(cd cvMeshSurfaceSimplify && ./Allwmake) -wmake cellSizeAndAlignmentGrid - -# ----------------------------------------------------------------- end-of-file diff --git a/applications/utilities/mesh/generation/cvMesh/Make/files b/applications/utilities/mesh/generation/cvMesh/Make/files deleted file mode 100644 index 425e0f5b83e2d83a58cef72bfc78a1503f18ad69..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -cvMesh.C - -EXE = $(FOAM_APPBIN)/cvMesh diff --git a/applications/utilities/mesh/generation/cvMesh/Make/options b/applications/utilities/mesh/generation/cvMesh/Make/options deleted file mode 100644 index 9461fa3725d8b76cc7cdce5cc102b5aa1933bdbf..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/Make/options +++ /dev/null @@ -1,38 +0,0 @@ -EXE_DEBUG = -DFULLDEBUG -g -O0 -EXE_FROUNDING_MATH = -frounding-math -EXE_NDEBUG = -DNDEBUG - -CGAL_EXACT = /*-DCGAL_DONT_USE_LAZY_KERNEL*/ -CGAL_INEXACT = -DCGAL_INEXACT - -include $(GENERAL_RULES)/CGAL - -EXE_INC = \ - ${EXE_FROUNDING_MATH} \ - ${EXE_NDEBUG} \ - ${CGAL_INEXACT} \ - ${CGAL_INC} \ - -IconformalVoronoiMesh/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ - -IvectorTools - -EXE_LIBS = \ - $(CGAL_LIBS) \ - -lboost_thread \ - -lmpfr \ - -lconformalVoronoiMesh \ - -lmeshTools \ - -ldecompositionMethods \ - -L$(FOAM_LIBBIN)/dummy -lptscotchDecomp \ - -ledgeMesh \ - -lfileFormats \ - -ltriSurface \ - -ldynamicMesh \ - -lsampling diff --git a/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/Make/files b/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/Make/files deleted file mode 100644 index 83b77fdc77ee07fc46cfc37752b42d613bce8154..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/Make/files +++ /dev/null @@ -1,2 +0,0 @@ -cellSizeAndAlignmentGrid.C -EXE = $(FOAM_USER_APPBIN)/cellSizeAndAlignmentGrid diff --git a/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/Make/options b/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/Make/options deleted file mode 100644 index 31d0d80858fad570a1809d938b72a86a074ab71b..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/Make/options +++ /dev/null @@ -1,40 +0,0 @@ -EXE_DEBUG = -DFULLDEBUG -g -O0 -EXE_FROUNDING_MATH = -frounding-math -EXE_NDEBUG = -DNDEBUG - -CGAL_EXACT = /*-DCGAL_DONT_USE_LAZY_KERNEL*/ -CGAL_INEXACT = -DCGAL_INEXACT - -include $(GENERAL_RULES)/CGAL - - -EXE_INC = \ - ${EXE_FROUNDING_MATH} \ - ${EXE_NDEBUG} \ - ${CGAL_INEXACT} \ - ${CGAL_INC} \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(HOME)/OpenFOAM/OpenFOAM-dev/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/lnInclude \ - -I$(HOME)/OpenFOAM/OpenFOAM-dev/applications/utilities/mesh/generation/cvMesh/vectorTools - -EXE_LIBS = \ - $(CGAL_LIBS) \ - -lmpfr \ - -lboost_thread \ - -lconformalVoronoiMesh \ - -lfiniteVolume \ - -lmeshTools \ - -ldecompositionMethods \ - -L$(FOAM_LIBBIN)/dummy -lptscotchDecomp \ - -ledgeMesh \ - -ltriSurface \ - -ldynamicMesh \ - -lsampling \ - -lfileFormats diff --git a/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/cellSizeAndAlignmentGrid.C b/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/cellSizeAndAlignmentGrid.C deleted file mode 100644 index 454416299d2d2539171dbd73023db41d4cf00cc2..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cellSizeAndAlignmentGrid/cellSizeAndAlignmentGrid.C +++ /dev/null @@ -1,716 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Application - Test-distributedDelaunayMesh - -Description - -\*---------------------------------------------------------------------------*/ - -#include "CGALTriangulation3DKernel.H" - -#include "indexedVertex.H" -#include "indexedCell.H" - -#include "argList.H" -#include "Time.H" -#include "DistributedDelaunayMesh.H" -#include "backgroundMeshDecomposition.H" -#include "searchableSurfaces.H" -#include "conformationSurfaces.H" -#include "PrintTable.H" -#include "Random.H" -#include "boundBox.H" -#include "point.H" -#include "cellShapeControlMesh.H" -#include "triadField.H" -#include "scalarIOField.H" -#include "pointIOField.H" -#include "triadIOField.H" - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Main program: - -template <class Triangulation, class Type> -Foam::tmp<Foam::Field<Type> > filterFarPoints -( - const Triangulation& mesh, - const Field<Type>& field -) -{ - tmp<Field<Type> > tNewField(new Field<Type>(field.size())); - Field<Type>& newField = tNewField(); - - label added = 0; - label count = 0; - - for - ( - typename Triangulation::Finite_vertices_iterator vit = - mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (vit->real()) - { - newField[added++] = field[count]; - } - - count++; - } - - newField.resize(added); - - return tNewField; -} - - -template <class T> -autoPtr<mapDistribute> buildMap -( - const T& mesh, - labelListList& pointPoints -) -{ - pointPoints.setSize(mesh.vertexCount()); - - globalIndex globalIndexing(mesh.vertexCount()); - - for - ( - typename T::Finite_vertices_iterator vit = mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (!vit->real()) - { - continue; - } - - std::list<typename T::Vertex_handle> adjVerts; - mesh.finite_adjacent_vertices(vit, std::back_inserter(adjVerts)); - - DynamicList<label> indices(adjVerts.size()); - - for - ( - typename std::list<typename T::Vertex_handle>::const_iterator - adjVertI = adjVerts.begin(); - adjVertI != adjVerts.end(); - ++adjVertI - ) - { - typename T::Vertex_handle vh = *adjVertI; - - if (!vh->farPoint()) - { - indices.append - ( - globalIndexing.toGlobal(vh->procIndex(), vh->index()) - ); - } - } - - pointPoints[vit->index()].transfer(indices); - } - - List<Map<label> > compactMap; - - return autoPtr<mapDistribute> - ( - new mapDistribute - ( - globalIndexing, - pointPoints, - compactMap - ) - ); -} - - -template <class T> -Foam::tmp<Foam::triadField> buildAlignmentField(const T& mesh) -{ - tmp<triadField> tAlignments - ( - new triadField(mesh.vertexCount(), triad::unset) - ); - triadField& alignments = tAlignments(); - - for - ( - typename T::Finite_vertices_iterator vit = mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (!vit->real()) - { - continue; - } - - alignments[vit->index()] = vit->alignment(); - } - - return tAlignments; -} - - -template <class T> -Foam::tmp<Foam::pointField> buildPointField(const T& mesh) -{ - tmp<pointField> tPoints - ( - new pointField(mesh.vertexCount(), point(GREAT, GREAT, GREAT)) - ); - pointField& points = tPoints(); - - for - ( - typename T::Finite_vertices_iterator vit = mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (!vit->real()) - { - continue; - } - - points[vit->index()] = topoint(vit->point()); - } - - return tPoints; -} - - -void refine -( - cellShapeControlMesh& mesh, - const conformationSurfaces& geometryToConformTo, - const label maxRefinementIterations, - const scalar defaultCellSize -) -{ - for (label iter = 0; iter < maxRefinementIterations; ++iter) - { - DynamicList<point> ptsToInsert; - - for - ( - CellSizeDelaunay::Finite_cells_iterator cit = - mesh.finite_cells_begin(); - cit != mesh.finite_cells_end(); - ++cit - ) - { - const point newPoint = - topoint - ( - CGAL::centroid - ( - cit->vertex(0)->point(), - cit->vertex(1)->point(), - cit->vertex(2)->point(), - cit->vertex(3)->point() - ) - ); - - if (geometryToConformTo.inside(newPoint)) - { - ptsToInsert.append(newPoint); - } - } - - Info<< " Adding " << returnReduce(ptsToInsert.size(), sumOp<label>()) - << endl; - - forAll(ptsToInsert, ptI) - { - mesh.insert - ( - ptsToInsert[ptI], - defaultCellSize, - triad::unset, - Vb::vtInternal - ); - } - } -} - - -int main(int argc, char *argv[]) -{ - #include "setRootCase.H" - #include "createTime.H" - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - label maxRefinementIterations = 2; - label maxSmoothingIterations = 200; - scalar minResidual = 0; - scalar defaultCellSize = 0.001; - scalar nearFeatDistSqrCoeff = 1e-8; - - - // Need to decouple vertex and cell type from this class? - // Vertex must have: - // + index - // + procIndex - // - type should be optional - cellShapeControlMesh mesh(runTime); - - IOdictionary cvMeshDict - ( - IOobject - ( - "cvMeshDict", - runTime.system(), - runTime, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ); - - Random rndGen(64293*Pstream::myProcNo()); - - searchableSurfaces allGeometry - ( - IOobject - ( - "cvSearchableSurfaces", - runTime.constant(), - "triSurface", - runTime, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - cvMeshDict.subDict("geometry") - ); - - conformationSurfaces geometryToConformTo - ( - runTime, - rndGen, - allGeometry, - cvMeshDict.subDict("surfaceConformation") - ); - - autoPtr<backgroundMeshDecomposition> bMesh; - if (Pstream::parRun()) - { - bMesh.set - ( - new backgroundMeshDecomposition - ( - runTime, - rndGen, - geometryToConformTo, - cvMeshDict.subDict("backgroundMeshDecomposition") - ) - ); - } - - // Nice to have IO for the delaunay mesh - // IO depend on vertex type. - // - // Define a delaunay mesh as: - // + list of points of the triangulation - // + optionally a list of cells - - Info<< nl << "Loop over surfaces" << endl; - - forAll(geometryToConformTo.surfaces(), sI) - { - const label surfI = geometryToConformTo.surfaces()[sI]; - - const searchableSurface& surface = - geometryToConformTo.geometry()[surfI]; - - Info<< nl << "Inserting points from surface " << surface.name() - << " (" << surface.type() << ")" << endl; - - const tmp<pointField> tpoints(surface.points()); - const pointField& points = tpoints(); - - Info<< " Number of points = " << points.size() << endl; - - forAll(points, pI) - { - // Is the point in the extendedFeatureEdgeMesh? If so get the - // point normal, otherwise get the surface normal from - // searchableSurface - - pointIndexHit info; - label infoFeature; - geometryToConformTo.findFeaturePointNearest - ( - points[pI], - nearFeatDistSqrCoeff, - info, - infoFeature - ); - - - autoPtr<triad> pointAlignment; - - if (info.hit()) - { - const extendedFeatureEdgeMesh& features = - geometryToConformTo.features()[infoFeature]; - - vectorField norms = features.featurePointNormals(info.index()); - - // Create a triad from these norms. - pointAlignment.set(new triad()); - forAll(norms, nI) - { - pointAlignment() += norms[nI]; - } - - pointAlignment().normalize(); - pointAlignment().orthogonalize(); - } - else - { - geometryToConformTo.findEdgeNearest - ( - points[pI], - nearFeatDistSqrCoeff, - info, - infoFeature - ); - - if (info.hit()) - { - const extendedFeatureEdgeMesh& features = - geometryToConformTo.features()[infoFeature]; - - vectorField norms = features.edgeNormals(info.index()); - - // Create a triad from these norms. - pointAlignment.set(new triad()); - forAll(norms, nI) - { - pointAlignment() += norms[nI]; - } - - pointAlignment().normalize(); - pointAlignment().orthogonalize(); - } - else - { - pointField ptField(1, points[pI]); - scalarField distField(1, nearFeatDistSqrCoeff); - List<pointIndexHit> infoList(1, pointIndexHit()); - - surface.findNearest(ptField, distField, infoList); - - vectorField normals(1); - surface.getNormal(infoList, normals); - - pointAlignment.set(new triad(normals[0])); - } - } - - if (Pstream::parRun()) - { - if (bMesh().positionOnThisProcessor(points[pI])) - { - CellSizeDelaunay::Vertex_handle vh = mesh.insert - ( - points[pI], - defaultCellSize, - pointAlignment(), - Vb::vtInternalNearBoundary - ); - } - } - else - { - CellSizeDelaunay::Vertex_handle vh = mesh.insert - ( - points[pI], - defaultCellSize, - pointAlignment(), - Vb::vtInternalNearBoundary - ); - } - } - } - - - // Refine the mesh - refine - ( - mesh, - geometryToConformTo, - maxRefinementIterations, - defaultCellSize - ); - - - if (Pstream::parRun()) - { - mesh.distribute(bMesh); - } - - - labelListList pointPoints; - autoPtr<mapDistribute> meshDistributor = buildMap(mesh, pointPoints); - - - triadField alignments(buildAlignmentField(mesh)); - pointField points(buildPointField(mesh)); - - mesh.printInfo(Info); - - - // Setup the sizes and alignments on each point - triadField fixedAlignments(mesh.vertexCount(), triad::unset); - - for - ( - CellSizeDelaunay::Finite_vertices_iterator vit = - mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (vit->nearBoundary()) - { - fixedAlignments[vit->index()] = vit->alignment(); - } - } - - Info<< nl << "Smoothing alignments" << endl; - - for (label iter = 0; iter < maxSmoothingIterations; iter++) - { - Info<< "Iteration " << iter; - - meshDistributor().distribute(points); - meshDistributor().distribute(alignments); - - scalar residual = 0; - - triadField triadAv(alignments.size(), triad::unset); - - forAll(pointPoints, pI) - { - const labelList& pPoints = pointPoints[pI]; - - if (pPoints.empty()) - { - continue; - } - - const triad& oldTriad = alignments[pI]; - triad& newTriad = triadAv[pI]; - - // Enforce the boundary conditions - const triad& fixedAlignment = fixedAlignments[pI]; - - forAll(pPoints, adjPointI) - { - const label adjPointIndex = pPoints[adjPointI]; - - scalar dist = mag(points[pI] - points[adjPointIndex]); - -// dist = max(dist, SMALL); - - triad tmpTriad = alignments[adjPointIndex]; - - for (direction dir = 0; dir < 3; dir++) - { - if (tmpTriad.set(dir)) - { - tmpTriad[dir] *= (1.0/dist); - } - } - - newTriad += tmpTriad; - } - - newTriad.normalize(); - newTriad.orthogonalize(); -// newTriad = newTriad.sortxyz(); - - label nFixed = 0; - - forAll(fixedAlignment, dirI) - { - if (fixedAlignment.set(dirI)) - { - nFixed++; - } - } - - if (nFixed == 1) - { - forAll(fixedAlignment, dirI) - { - if (fixedAlignment.set(dirI)) - { - newTriad.align(fixedAlignment[dirI]); - } - } - } - else if (nFixed == 2) - { - forAll(fixedAlignment, dirI) - { - if (fixedAlignment.set(dirI)) - { - newTriad[dirI] = fixedAlignment[dirI]; - } - else - { - newTriad[dirI] = triad::unset[dirI]; - } - } - - newTriad.orthogonalize(); - } - else if (nFixed == 3) - { - forAll(fixedAlignment, dirI) - { - if (fixedAlignment.set(dirI)) - { - newTriad[dirI] = fixedAlignment[dirI]; - } - } - } - - for (direction dir = 0; dir < 3; ++dir) - { - if - ( - newTriad.set(dir) - && oldTriad.set(dir) - //&& !fixedAlignment.set(dir) - ) - { - scalar dotProd = (oldTriad[dir] & newTriad[dir]); - scalar diff = mag(dotProd) - 1.0; - - residual += mag(diff); - } - } - } - - forAll(alignments, pI) - { - alignments[pI] = triadAv[pI].sortxyz(); - } - - reduce(residual, sumOp<scalar>()); - - Info<< ", Residual = " << residual << endl; - - if (residual <= minResidual) - { - break; - } - } - - - // Write alignments to a .obj file - OFstream str(runTime.path()/"alignments.obj"); - - forAll(alignments, pI) - { - const triad& tri = alignments[pI]; - - if (tri.set()) - { - forAll(tri, dirI) - { - meshTools::writeOBJ(str, points[pI], tri[dirI] + points[pI]); - } - } - } - - - // Remove the far points - pointIOField pointsIO - ( - IOobject - ( - "points", - runTime.constant(), - runTime, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - filterFarPoints(mesh, points) - ); - - scalarField sizes(points.size(), defaultCellSize); - scalarIOField sizesIO - ( - IOobject - ( - "sizes", - runTime.constant(), - runTime, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - filterFarPoints(mesh, sizes) - ); - - triadIOField alignmentsIO - ( - IOobject - ( - "alignments", - runTime.constant(), - runTime, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - filterFarPoints(mesh, alignments) - ); - - pointsIO.write(); - sizesIO.write(); - alignmentsIO.write(); - - Info<< nl << "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << nl << endl; - - Info<< "\nEnd\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/checkCvMesh/meshQualityDict b/applications/utilities/mesh/generation/cvMesh/checkCvMesh/meshQualityDict deleted file mode 100644 index fa5319e087c5e36fe7c3cd93d3a69d5ebc75463e..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/checkCvMesh/meshQualityDict +++ /dev/null @@ -1,73 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object meshQualityDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -//- Maximum non-orthogonality allowed. Set to 180 to disable. -maxNonOrtho 65; - -//- Max skewness allowed. Set to <0 to disable. -maxBoundarySkewness 50; -maxInternalSkewness 10; - -//- Max concaveness allowed. Is angle (in degrees) below which concavity -// is allowed. 0 is straight face, <0 would be convex face. -// Set to 180 to disable. -maxConcave 80; - -//- Minimum quality of the tet formed by the face-centre -// and variable base point minimum decomposition triangles and -// the cell centre. This has to be a positive number for tracking -// to work. Set to very negative number (e.g. -1E30) to -// disable. -// <0 = inside out tet, -// 0 = flat tet -// 1 = regular tet -minTetQuality 1e-30; - -//- Minimum pyramid volume. Is absolute volume of cell pyramid. -// Set to a sensible fraction of the smallest cell volume expected. -// Set to very negative number (e.g. -1E30) to disable. -minVol 1e-20; - -//- Minimum face area. Set to <0 to disable. -minArea -1; - -//- Minimum face twist. Set to <-1 to disable. dot product of face normal -//- and face centre triangles normal -minTwist 0.001; - -//- minimum normalised cell determinant -//- 1 = hex, <= 0 = folded or flattened illegal cell -minDeterminant 0.001; - -//- minFaceWeight (0 -> 0.5) -minFaceWeight 0.02; - -//- minVolRatio (0 -> 1) -minVolRatio 0.01; - -//must be >0 for Fluent compatibility -minTriangleTwist -1; - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C deleted file mode 100644 index a0327ce04f9b5e7b7cc622a0190115b6d21f7be7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C +++ /dev/null @@ -1,233 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "DelaunayMesh.H" -#include "labelPair.H" -#include "PrintTable.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class Triangulation> -Foam::DelaunayMesh<Triangulation>::DelaunayMesh() -: - Triangulation(), - vertexCount_(0), - cellCount_(0) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -template<class Triangulation> -Foam::DelaunayMesh<Triangulation>::~DelaunayMesh() -{} - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - - -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -template<class Triangulation> -void Foam::DelaunayMesh<Triangulation>::reset() -{ - Info<< "Clearing triangulation" << endl; - - this->clear(); - - resetVertexCount(); - resetCellCount(); -} - - -template<class Triangulation> -void Foam::DelaunayMesh<Triangulation>::insertPoints(const List<Vb>& vertices) -{ - rangeInsertWithInfo - ( - vertices.begin(), - vertices.end(), - true - ); -} - - -template<class Triangulation> -bool Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::Less_x_3:: -operator() -( - const Point_3& p, - const Point_3& q -) const -{ - return typename Gt::Less_x_3()(*(p.first), *(q.first)); -} - -template<class Triangulation> -bool Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::Less_y_3:: -operator() -( - const Point_3& p, - const Point_3& q -) const -{ - return typename Gt::Less_y_3()(*(p.first), *(q.first)); -} - -template<class Triangulation> -bool Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::Less_z_3:: -operator() -( - const Point_3& p, - const Point_3& q -) const -{ - return typename Gt::Less_z_3()(*(p.first), *(q.first)); -} - -template<class Triangulation> -typename Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::Less_x_3 -Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::less_x_3_object() -const -{ - return Less_x_3(); -} - -template<class Triangulation> -typename Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::Less_y_3 -Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::less_y_3_object() -const -{ - return Less_y_3(); -} - -template<class Triangulation> -typename Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::Less_z_3 -Foam::DelaunayMesh<Triangulation>::Traits_for_spatial_sort::less_z_3_object() -const -{ - return Less_z_3(); -} - - -template<class Triangulation> -template<class PointIterator> -void Foam::DelaunayMesh<Triangulation>::rangeInsertWithInfo -( - PointIterator begin, - PointIterator end, - bool printErrors -) -{ - typedef DynamicList - < - std::pair - < - const typename Triangulation::Point*, - label - > - > vectorPairPointIndex; - - vectorPairPointIndex points; - - label count = 0; - for (PointIterator it = begin; it != end; ++it) - { - points.append - ( - std::make_pair(&(it->point()), count++) - ); - } - - std::random_shuffle(points.begin(), points.end()); - - spatial_sort - ( - points.begin(), - points.end(), - Traits_for_spatial_sort() - ); - - Vertex_handle hint; - - for - ( - typename vectorPairPointIndex::const_iterator p = points.begin(); - p != points.end(); - ++p - ) - { - const size_t checkInsertion = Triangulation::number_of_vertices(); - - hint = this->insert(*(p->first), hint); - - const Vb& vert = *(begin + p->second); - - if (checkInsertion != Triangulation::number_of_vertices() - 1) - { - if (printErrors) - { - Vertex_handle nearV = - Triangulation::nearest_vertex(*(p->first)); - - Pout<< "Failed insertion : " << vert.info() - << " nearest : " << nearV->info(); - } - } - else - { - hint->index() = getNewVertexIndex(); - hint->type() = vert.type(); - hint->procIndex() = vert.procIndex(); - hint->targetCellSize() = vert.targetCellSize(); - hint->alignment() = vert.alignment(); - } - } -} - - -// * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "DelaunayMeshIO.C" - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.H deleted file mode 100644 index bdeee880e78e1b5bfc9fdf6b0ae7050c915453eb..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.H +++ /dev/null @@ -1,238 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::DelaunayMesh - -Description - The vertex and cell classes must have an index defined - -SourceFiles - DelaunayMeshI.H - DelaunayMesh.C - DelaunayMeshIO.C - -\*---------------------------------------------------------------------------*/ - -#ifndef DelaunayMesh_H -#define DelaunayMesh_H - -#include "Pair.H" -#include "HashSet.H" -#include "FixedList.H" -#include "boundBox.H" -#include "indexedVertex.H" -#include "CGALTriangulation3Ddefs.H" -#include "autoPtr.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -class fvMesh; - -/*---------------------------------------------------------------------------*\ - Class DelaunayMesh Declaration -\*---------------------------------------------------------------------------*/ - -template<class Triangulation> -class DelaunayMesh -: - public Triangulation -{ -public: - - typedef typename Triangulation::Cell_handle Cell_handle; - typedef typename Triangulation::Vertex_handle Vertex_handle; - typedef typename Triangulation::Point Point; - typedef typename Triangulation::Facet Facet; - - typedef typename Triangulation::Finite_vertices_iterator - Finite_vertices_iterator; - typedef typename Triangulation::Finite_cells_iterator - Finite_cells_iterator; - typedef typename Triangulation::Finite_facets_iterator - Finite_facets_iterator; - - typedef HashSet - < - Pair<label>, - FixedList<label, 2>::Hash<> - > labelPairHashSet; - - -private: - - // Private data - - //- Keep track of the number of vertices that have been added. - // This allows a unique index to be assigned to each vertex. - mutable label vertexCount_; - - //- Keep track of the number of cells that have been added. - // This allows a unique index to be assigned to each cell. - mutable label cellCount_; - - //- Spatial sort traits to use with a pair of point pointers and an int. - // Taken from a post on the CGAL lists: 2010-01/msg00004.html by - // Sebastien Loriot (Geometry Factory). - struct Traits_for_spatial_sort - : - public Triangulation::Geom_traits - { - typedef typename Triangulation::Geom_traits Gt; - - typedef std::pair<const typename Triangulation::Point*, int> - Point_3; - - struct Less_x_3 - { - bool operator()(const Point_3& p, const Point_3& q) const; - }; - - struct Less_y_3 - { - bool operator()(const Point_3& p, const Point_3& q) const; - }; - - struct Less_z_3 - { - bool operator()(const Point_3& p, const Point_3& q) const; - }; - - Less_x_3 less_x_3_object() const; - Less_y_3 less_y_3_object() const; - Less_z_3 less_z_3_object() const; - }; - - - // Private Member Functions - - void sortFaces - ( - faceList& faces, - labelList& owner, - labelList& neighbour - ) const; - - void addPatches - ( - const label nInternalFaces, - faceList& faces, - labelList& owner, - labelList& patchSizes, - labelList& patchStarts, - const List<DynamicList<face> >& patchFaces, - const List<DynamicList<label> >& patchOwners - ) const; - - //- Disallow default bitwise copy construct - DelaunayMesh(const DelaunayMesh<Triangulation>&); - - //- Disallow default bitwise assignment - void operator=(const DelaunayMesh<Triangulation>&); - - -public: - - // Constructors - - //- Construct from components - DelaunayMesh(); - - - //- Destructor - ~DelaunayMesh(); - - - // Member Functions - - inline label getNewVertexIndex() const; - - inline label getNewCellIndex() const; - - inline label cellCount() const; - - inline void resetCellCount(); - - inline label vertexCount() const; - - inline void resetVertexCount(); - - - //- Remove the entire triangulation - void reset(); - - void insertPoints(const List<Vb>& vertices); - - //- Function inserting points into a triangulation and setting the - // index and type data of the point in the correct order. This is - // faster than inserting points individually. - // - // Adapted from a post on the CGAL lists: 2010-01/msg00004.html by - // Sebastien Loriot (Geometry Factory). - template<class PointIterator> - void rangeInsertWithInfo - ( - PointIterator begin, - PointIterator end, - bool printErrors = true - ); - - - // Queries - - void printInfo(Ostream& os) const; - - //- Create an fvMesh from the triangulation. - // The mesh is not parallel consistent - only used for viewing - autoPtr<fvMesh> createMesh - ( - const fileName& name, - const Time& runTime, - labelList& vertexMap, - labelList& cellMap - ) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "DelaunayMeshI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#ifdef NoRepository -# include "DelaunayMesh.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshI.H deleted file mode 100644 index 841e5c9024b5954e80a897148c00e4c3bfea3e4e..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshI.H +++ /dev/null @@ -1,119 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template<class Triangulation> -inline Foam::label Foam::DelaunayMesh<Triangulation>::getNewVertexIndex() const -{ - label id = vertexCount_++; - - if (id == labelMax) - { - WarningIn - ( - "Foam::DelaunayMesh<Triangulation>::getNewVertexIndex() const" - ) << "Vertex counter has overflowed." << endl; - } - - return id; -} - - -template<class Triangulation> -inline Foam::label Foam::DelaunayMesh<Triangulation>::getNewCellIndex() const -{ - label id = cellCount_++; - - if (id == labelMax) - { - WarningIn - ( - "Foam::DelaunayMesh<Triangulation>::getNewCellIndex() const" - ) << "Cell counter has overflowed." << endl; - } - - return id; -} - - -template<class Triangulation> -Foam::label Foam::DelaunayMesh<Triangulation>::cellCount() const -{ - return cellCount_; -} - - -template<class Triangulation> -void Foam::DelaunayMesh<Triangulation>::resetCellCount() -{ - cellCount_ = 0; -} - - -template<class Triangulation> -Foam::label Foam::DelaunayMesh<Triangulation>::vertexCount() const -{ - return vertexCount_; -} - - -template<class Triangulation> -void Foam::DelaunayMesh<Triangulation>::resetVertexCount() -{ - vertexCount_ = 0; -} - - -// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshIO.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshIO.C deleted file mode 100644 index 63a9889308ee3273e0b372f886edd6efd3e10d51..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMeshIO.C +++ /dev/null @@ -1,391 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "DelaunayMesh.H" -#include "fvMesh.H" -#include "pointConversion.H" -#include "wallPolyPatch.H" -#include "processorPolyPatch.H" - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -template<class Triangulation> -void Foam::DelaunayMesh<Triangulation>::sortFaces -( - faceList& faces, - labelList& owner, - labelList& neighbour -) const -{ - // Upper triangular order: - // + owner is sorted in ascending cell order - // + within each block of equal value for owner, neighbour is sorted in - // ascending cell order. - // + faces sorted to correspond - // e.g. - // owner | neighbour - // 0 | 2 - // 0 | 23 - // 0 | 71 - // 1 | 23 - // 1 | 24 - // 1 | 91 - - List<labelPair> ownerNeighbourPair(owner.size()); - - forAll(ownerNeighbourPair, oNI) - { - ownerNeighbourPair[oNI] = labelPair(owner[oNI], neighbour[oNI]); - } - - Info<< nl - << "Sorting faces, owner and neighbour into upper triangular order" - << endl; - - labelList oldToNew; - - sortedOrder(ownerNeighbourPair, oldToNew); - - oldToNew = invert(oldToNew.size(), oldToNew); - - inplaceReorder(oldToNew, faces); - inplaceReorder(oldToNew, owner); - inplaceReorder(oldToNew, neighbour); -} - - -template<class Triangulation> -void Foam::DelaunayMesh<Triangulation>::addPatches -( - const label nInternalFaces, - faceList& faces, - labelList& owner, - labelList& patchSizes, - labelList& patchStarts, - const List<DynamicList<face> >& patchFaces, - const List<DynamicList<label> >& patchOwners -) const -{ - label nPatches = patchFaces.size(); - - patchSizes.setSize(nPatches, -1); - patchStarts.setSize(nPatches, -1); - - label nBoundaryFaces = 0; - - forAll(patchFaces, p) - { - patchSizes[p] = patchFaces[p].size(); - patchStarts[p] = nInternalFaces + nBoundaryFaces; - - nBoundaryFaces += patchSizes[p]; - } - - faces.setSize(nInternalFaces + nBoundaryFaces); - owner.setSize(nInternalFaces + nBoundaryFaces); - - label faceI = nInternalFaces; - - forAll(patchFaces, p) - { - forAll(patchFaces[p], f) - { - faces[faceI] = patchFaces[p][f]; - owner[faceI] = patchOwners[p][f]; - - faceI++; - } - } -} - - -// * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * // - -template<class Triangulation> -void Foam::DelaunayMesh<Triangulation>::printInfo(Ostream& os) const -{ - PrintTable<word, label> triInfoTable("Mesh Statistics"); - - triInfoTable.add("Points", Triangulation::number_of_vertices()); - triInfoTable.add("Edges", Triangulation::number_of_finite_edges()); - triInfoTable.add("Faces", Triangulation::number_of_finite_facets()); - triInfoTable.add("Cells", Triangulation::number_of_finite_cells()); - - scalar minSize = GREAT; - scalar maxSize = 0; - - for - ( - Finite_vertices_iterator vit = Triangulation::finite_vertices_begin(); - vit != Triangulation::finite_vertices_end(); - ++vit - ) - { - if (!vit->farPoint()) - { - minSize = min(vit->targetCellSize(), minSize); - maxSize = max(vit->targetCellSize(), maxSize); - } - } - - Info<< incrIndent; - triInfoTable.print(Info, true, true); - - Info<< "Size (Min/Max) = " - << returnReduce(minSize, minOp<scalar>()) << " " - << returnReduce(maxSize, maxOp<scalar>()) << endl; - - Info<< decrIndent; -} - - -template<class Triangulation> -Foam::autoPtr<Foam::fvMesh> -Foam::DelaunayMesh<Triangulation>::createMesh -( - const fileName& name, - const Time& runTime, - labelList& vertexMap, - labelList& cellMap -) const -{ - pointField points(Triangulation::number_of_vertices()); - faceList faces(Triangulation::number_of_finite_facets()); - labelList owner(Triangulation::number_of_finite_facets()); - labelList neighbour(Triangulation::number_of_finite_facets()); - - wordList patchNames(1, "cvMesh_defaultPatch"); - wordList patchTypes(1, wallPolyPatch::typeName); - - labelList patchSizes(1, 0); - labelList patchStarts(1, 0); - - List<DynamicList<face> > patchFaces(1, DynamicList<face>()); - List<DynamicList<label> > patchOwners(1, DynamicList<label>()); - - vertexMap.setSize(Triangulation::number_of_vertices()); - cellMap.setSize(Triangulation::number_of_finite_cells()); - - // Calculate pts and a map of point index to location in pts. - label vertI = 0; - - for - ( - Finite_vertices_iterator vit = Triangulation::finite_vertices_begin(); - vit != Triangulation::finite_vertices_end(); - ++vit - ) - { - if (!vit->farPoint()) - { - vertexMap[vit->index()] = vertI; - points[vertI] = topoint(vit->point()); - vertI++; - } - } - - points.setSize(vertI); - - // Index the cells - label cellI = 0; - - for - ( - Finite_cells_iterator cit = Triangulation::finite_cells_begin(); - cit != Triangulation::finite_cells_end(); - ++cit - ) - { - if - ( - !cit->hasFarPoint() - && !Triangulation::is_infinite(cit) - ) - { - cellMap[cit->cellIndex()] = cellI++; - } - } - - label faceI = 0; - labelList verticesOnTriFace(3, -1); - face newFace(verticesOnTriFace); - - for - ( - Finite_facets_iterator fit = Triangulation::finite_facets_begin(); - fit != Triangulation::finite_facets_end(); - ++fit - ) - { - const Cell_handle c1(fit->first); - const int oppositeVertex = fit->second; - const Cell_handle c2(c1->neighbor(oppositeVertex)); - - label c1I = Cb::ctFar; - bool c1Real = false; - if (!c1->hasFarPoint() && !Triangulation::is_infinite(c1)) - { - c1I = cellMap[c1->cellIndex()]; - c1Real = true; - } - - label c2I = Cb::ctFar; - bool c2Real = false; - if (!c2->hasFarPoint() && !Triangulation::is_infinite(c2)) - { - c2I = cellMap[c2->cellIndex()]; - c2Real = true; - } - - if (!c1Real && !c2Real) - { - // Both tets are outside, skip - continue; - } - - label ownerCell = -1; - label neighbourCell = -1; - - for (label i = 0; i < 3; i++) - { - verticesOnTriFace[i] = vertexMap - [ - c1->vertex - ( - Triangulation::vertex_triple_index(oppositeVertex, i) - )->index() - ]; - } - - newFace = face(verticesOnTriFace); - - if (!c1Real || !c2Real) - { - // Boundary face... - if (!c1Real) - { - //... with c1 outside - ownerCell = c2I; - } - else - { - // ... with c2 outside - ownerCell = c1I; - - reverse(newFace); - } - - patchFaces[0].append(newFace); - patchOwners[0].append(ownerCell); - } - else - { - // Internal face... - if (c1I < c2I) - { - // ...with c1 as the ownerCell - ownerCell = c1I; - neighbourCell = c2I; - - reverse(newFace); - } - else - { - // ...with c2 as the ownerCell - ownerCell = c2I; - neighbourCell = c1I; - } - - faces[faceI] = newFace; - owner[faceI] = ownerCell; - neighbour[faceI] = neighbourCell; - faceI++; - } - } - - faces.setSize(faceI); - owner.setSize(faceI); - neighbour.setSize(faceI); - - sortFaces(faces, owner, neighbour); - - addPatches - ( - faceI, - faces, - owner, - patchSizes, - patchStarts, - patchFaces, - patchOwners - ); - - autoPtr<fvMesh> meshPtr - ( - new fvMesh - ( - IOobject - ( - name, - runTime.timeName(), - runTime, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - xferMove(points), - xferMove(faces), - xferMove(owner), - xferMove(neighbour) - ) - ); - - List<polyPatch*> patches(patchStarts.size()); - - label nValidPatches = 0; - - forAll(patches, p) - { - patches[nValidPatches] = polyPatch::New - ( - patchTypes[p], - patchNames[p], - patchSizes[p], - patchStarts[p], - nValidPatches, - meshPtr().boundaryMesh() - ).ptr(); - - nValidPatches++; - } - - patches.setSize(nValidPatches); - - meshPtr().addFvPatches(patches); - - return meshPtr; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C deleted file mode 100644 index b2ed781b8b389e32c165a9fc6cddfcb3d930dc1b..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.C +++ /dev/null @@ -1,938 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "DistributedDelaunayMesh.H" -#include "meshSearch.H" -#include "mapDistribute.H" -#include "zeroGradientFvPatchFields.H" -#include "pointConversion.H" -#include "indexedVertexEnum.H" -#include "IOmanip.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * // - -template<class Triangulation> -Foam::autoPtr<Foam::mapDistribute> -Foam::DistributedDelaunayMesh<Triangulation>::buildMap -( - const List<label>& toProc -) -{ - // Determine send map - // ~~~~~~~~~~~~~~~~~~ - - // 1. Count - labelList nSend(Pstream::nProcs(), 0); - - forAll(toProc, i) - { - label procI = toProc[i]; - - nSend[procI]++; - } - - // Send over how many I need to receive - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - labelListList sendSizes(Pstream::nProcs()); - - sendSizes[Pstream::myProcNo()] = nSend; - - combineReduce(sendSizes, UPstream::listEq()); - - // 2. Size sendMap - labelListList sendMap(Pstream::nProcs()); - - forAll(nSend, procI) - { - sendMap[procI].setSize(nSend[procI]); - - nSend[procI] = 0; - } - - // 3. Fill sendMap - forAll(toProc, i) - { - label procI = toProc[i]; - - sendMap[procI][nSend[procI]++] = i; - } - - // Determine receive map - // ~~~~~~~~~~~~~~~~~~~~~ - - labelListList constructMap(Pstream::nProcs()); - - // Local transfers first - constructMap[Pstream::myProcNo()] = identity - ( - sendMap[Pstream::myProcNo()].size() - ); - - label constructSize = constructMap[Pstream::myProcNo()].size(); - - forAll(constructMap, procI) - { - if (procI != Pstream::myProcNo()) - { - label nRecv = sendSizes[procI][Pstream::myProcNo()]; - - constructMap[procI].setSize(nRecv); - - for (label i = 0; i < nRecv; i++) - { - constructMap[procI][i] = constructSize++; - } - } - } - - return autoPtr<mapDistribute> - ( - new mapDistribute - ( - constructSize, - sendMap.xfer(), - constructMap.xfer() - ) - ); -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class Triangulation> -Foam::DistributedDelaunayMesh<Triangulation>::DistributedDelaunayMesh() -: - DelaunayMesh<Triangulation>(), - allBackgroundMeshBounds_() -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -template<class Triangulation> -Foam::DistributedDelaunayMesh<Triangulation>::~DistributedDelaunayMesh() -{} - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -template<class Triangulation> -bool Foam::DistributedDelaunayMesh<Triangulation>::distributeBoundBoxes -( - const boundBox& bb -) -{ - allBackgroundMeshBounds_.reset(new List<boundBox>(Pstream::nProcs())); - - // Give the bounds of every processor to every other processor - allBackgroundMeshBounds_()[Pstream::myProcNo()] = bb; - - Pstream::gatherList(allBackgroundMeshBounds_()); - Pstream::scatterList(allBackgroundMeshBounds_()); - - return true; -} - - -template<class Triangulation> -bool Foam::DistributedDelaunayMesh<Triangulation>::isLocal -( - const Vertex_handle& v -) const -{ - return isLocal(v->procIndex()); -} - - -template<class Triangulation> -bool Foam::DistributedDelaunayMesh<Triangulation>::isLocal -( - const label localProcIndex -) const -{ - return localProcIndex == Pstream::myProcNo(); -} - - -template<class Triangulation> -Foam::labelList Foam::DistributedDelaunayMesh<Triangulation>::overlapProcessors -( - const point& centre, - const scalar radiusSqr -) const -{ - DynamicList<label> toProc(Pstream::nProcs()); - - forAll(allBackgroundMeshBounds_(), procI) - { - // Test against the bounding box of the processor - if - ( - !isLocal(procI) - && allBackgroundMeshBounds_()[procI].overlaps(centre, radiusSqr) - ) - { - toProc.append(procI); - } - } - - return toProc; -} - - -template<class Triangulation> -bool Foam::DistributedDelaunayMesh<Triangulation>::checkProcBoundaryCell -( - const Cell_handle& cit, - Map<labelList>& circumsphereOverlaps -) const -{ - const Foam::point& cc = cit->dual(); - - const scalar crSqr = magSqr - ( - cc - topoint(cit->vertex(0)->point()) - ); - - labelList circumsphereOverlap = overlapProcessors - ( - cc, - sqr(1.01)*crSqr - ); - - cit->cellIndex() = this->getNewCellIndex(); - - if (!circumsphereOverlap.empty()) - { - circumsphereOverlaps.insert(cit->cellIndex(), circumsphereOverlap); - - return true; - } - - return false; -} - - -template<class Triangulation> -void Foam::DistributedDelaunayMesh<Triangulation>::findProcessorBoundaryCells -( - Map<labelList>& circumsphereOverlaps -) const -{ - // Start by assuming that all the cells have no index - // If they do, they have already been visited so ignore them - - labelHashSet cellToCheck - ( - Triangulation::number_of_finite_cells() - /Pstream::nProcs() - ); - - for - ( - All_cells_iterator cit = Triangulation::all_cells_begin(); - cit != Triangulation::all_cells_end(); - ++cit - ) - { - if (Triangulation::is_infinite(cit)) - { - // Index of infinite vertex in this cell. - int i = cit->index(Triangulation::infinite_vertex()); - - Cell_handle c = cit->neighbor(i); - - if (c->unassigned()) - { - c->cellIndex() = this->getNewCellIndex(); - - if (checkProcBoundaryCell(c, circumsphereOverlaps)) - { - cellToCheck.insert(c->cellIndex()); - } - } - } - else if (cit->parallelDualVertex()) - { - if (cit->unassigned()) - { - if (checkProcBoundaryCell(cit, circumsphereOverlaps)) - { - cellToCheck.insert(cit->cellIndex()); - } - } - } - } - - for - ( - Finite_cells_iterator cit = Triangulation::finite_cells_begin(); - cit != Triangulation::finite_cells_end(); - ++cit - ) - { - if (cellToCheck.found(cit->cellIndex())) - { - // Get the neighbours and check them - for (label adjCellI = 0; adjCellI < 4; ++adjCellI) - { - Cell_handle citNeighbor = cit->neighbor(adjCellI); - - // Ignore if has far point or previously visited - if - ( - !citNeighbor->unassigned() - || !citNeighbor->internalOrBoundaryDualVertex() - || Triangulation::is_infinite(citNeighbor) - ) - { - continue; - } - - checkProcBoundaryCell - ( - citNeighbor, - circumsphereOverlaps - ); - } - } - } -} - - -template<class Triangulation> -void Foam::DistributedDelaunayMesh<Triangulation>::markVerticesToRefer -( - const Map<labelList>& circumsphereOverlaps, - PtrList<labelPairHashSet>& referralVertices, - DynamicList<label>& targetProcessor, - DynamicList<Vb>& parallelInfluenceVertices -) -{ - // Relying on the order of iteration of cells being the same as before - for - ( - Finite_cells_iterator cit = Triangulation::finite_cells_begin(); - cit != Triangulation::finite_cells_end(); - ++cit - ) - { - if (Triangulation::is_infinite(cit)) - { - continue; - } - - Map<labelList>::const_iterator iter = - circumsphereOverlaps.find(cit->cellIndex()); - - // Pre-tested circumsphere potential influence - if (iter != circumsphereOverlaps.cend()) - { - const labelList& citOverlaps = iter(); - - forAll(citOverlaps, cOI) - { - label procI = citOverlaps[cOI]; - - for (int i = 0; i < 4; i++) - { - Vertex_handle v = cit->vertex(i); - - if (v->farPoint()) - { - continue; - } - - label vProcIndex = v->procIndex(); - label vIndex = v->index(); - - const labelPair procIndexPair(vProcIndex, vIndex); - - // Using the hashSet to ensure that each vertex is only - // referred once to each processor. - // Do not refer a vertex to its own processor. - if (vProcIndex != procI) - { - if (referralVertices[procI].insert(procIndexPair)) - { - targetProcessor.append(procI); - - parallelInfluenceVertices.append - ( - Vb - ( - v->point(), - v->index(), - v->type(), - v->procIndex() - ) - ); - - parallelInfluenceVertices.last().targetCellSize() = - v->targetCellSize(); - parallelInfluenceVertices.last().alignment() = - v->alignment(); - } - } - } - } - } - } -} - - -template<class Triangulation> -Foam::label Foam::DistributedDelaunayMesh<Triangulation>::referVertices -( - const DynamicList<label>& targetProcessor, - DynamicList<Vb>& parallelVertices, - PtrList<labelPairHashSet>& referralVertices, - labelPairHashSet& receivedVertices -) -{ - DynamicList<Vb> referredVertices(targetProcessor.size()); - - const label preDistributionSize = parallelVertices.size(); - - mapDistribute pointMap = buildMap(targetProcessor); - - // Make a copy of the original list. - DynamicList<Vb> originalParallelVertices(parallelVertices); - - pointMap.distribute(parallelVertices); - - for (label procI = 0; procI < Pstream::nProcs(); procI++) - { - const labelList& constructMap = pointMap.constructMap()[procI]; - - if (constructMap.size()) - { - forAll(constructMap, i) - { - const Vb& v = parallelVertices[constructMap[i]]; - - if - ( - v.procIndex() != Pstream::myProcNo() - && !receivedVertices.found(labelPair(v.procIndex(), v.index())) - ) - { - referredVertices.append(v); - - receivedVertices.insert - ( - labelPair(v.procIndex(), v.index()) - ); - } - } - } - } - - label preInsertionSize = Triangulation::number_of_vertices(); - - labelPairHashSet pointsNotInserted = rangeInsertReferredWithInfo - ( - referredVertices.begin(), - referredVertices.end() - ); - - if (!pointsNotInserted.empty()) - { - for - ( - typename labelPairHashSet::const_iterator iter - = pointsNotInserted.begin(); - iter != pointsNotInserted.end(); - ++iter - ) - { - if (receivedVertices.found(iter.key())) - { - receivedVertices.erase(iter.key()); - } - } - } - - boolList pointInserted(parallelVertices.size(), true); - - forAll(parallelVertices, vI) - { - const labelPair procIndexI - ( - parallelVertices[vI].procIndex(), - parallelVertices[vI].index() - ); - - if (pointsNotInserted.found(procIndexI)) - { - pointInserted[vI] = false; - } - } - - pointMap.reverseDistribute(preDistributionSize, pointInserted); - - forAll(originalParallelVertices, vI) - { - const label procIndex = targetProcessor[vI]; - - if (!pointInserted[vI]) - { - if (referralVertices[procIndex].size()) - { - if - ( - !referralVertices[procIndex].unset - ( - labelPair - ( - originalParallelVertices[vI].procIndex(), - originalParallelVertices[vI].index() - ) - ) - ) - { - Pout<< "*** not found " - << originalParallelVertices[vI].procIndex() - << " " << originalParallelVertices[vI].index() << endl; - } - - } - } - } - - label postInsertionSize = Triangulation::number_of_vertices(); - - reduce(preInsertionSize, sumOp<label>()); - reduce(postInsertionSize, sumOp<label>()); - - label nTotalToInsert = referredVertices.size(); - - reduce(nTotalToInsert, sumOp<label>()); - - if (preInsertionSize + nTotalToInsert != postInsertionSize) - { - label nNotInserted = - returnReduce(pointsNotInserted.size(), sumOp<label>()); - - Info<< " Inserted = " - << setw(name(label(Triangulation::number_of_finite_cells())).size()) - << nTotalToInsert - nNotInserted - << " / " << nTotalToInsert << endl; - - nTotalToInsert -= nNotInserted; - } - else - { - Info<< " Inserted = " << nTotalToInsert << endl; - } - - return nTotalToInsert; -} - - -template<class Triangulation> -void Foam::DistributedDelaunayMesh<Triangulation>::sync -( - const boundBox& bb, - PtrList<labelPairHashSet>& referralVertices, - labelPairHashSet& receivedVertices, - bool iterateReferral -) -{ - if (!Pstream::parRun()) - { - return; - } - - if (allBackgroundMeshBounds_.empty()) - { - distributeBoundBoxes(bb); - } - - label nVerts = Triangulation::number_of_vertices(); - label nCells = Triangulation::number_of_finite_cells(); - - DynamicList<Vb> parallelInfluenceVertices(0.1*nVerts); - DynamicList<label> targetProcessor(0.1*nVerts); - - // Some of these values will not be used, i.e. for non-real cells - DynamicList<Foam::point> circumcentre(0.1*nVerts); - DynamicList<scalar> circumradiusSqr(0.1*nVerts); - - Map<labelList> circumsphereOverlaps(nCells); - - findProcessorBoundaryCells(circumsphereOverlaps); - - Info<< " Influences = " - << setw(name(nCells).size()) - << returnReduce(circumsphereOverlaps.size(), sumOp<label>()) << " / " - << returnReduce(nCells, sumOp<label>()); - - markVerticesToRefer - ( - circumsphereOverlaps, - referralVertices, - targetProcessor, - parallelInfluenceVertices - ); - - referVertices - ( - targetProcessor, - parallelInfluenceVertices, - referralVertices, - receivedVertices - ); - - if (iterateReferral) - { - label oldNReferred = 0; - label nIterations = 1; - - Info<< incrIndent << indent - << "Iteratively referring referred vertices..." - << endl; - do - { - Info<< indent << "Iteration " << nIterations++ << ":"; - - circumsphereOverlaps.clear(); - targetProcessor.clear(); - parallelInfluenceVertices.clear(); - - findProcessorBoundaryCells(circumsphereOverlaps); - - nCells = Triangulation::number_of_finite_cells(); - - Info<< " Influences = " - << setw(name(nCells).size()) - << returnReduce(circumsphereOverlaps.size(), sumOp<label>()) - << " / " - << returnReduce(nCells, sumOp<label>()); - - markVerticesToRefer - ( - circumsphereOverlaps, - referralVertices, - targetProcessor, - parallelInfluenceVertices - ); - - label nReferred = referVertices - ( - targetProcessor, - parallelInfluenceVertices, - referralVertices, - receivedVertices - ); - - if (nReferred == 0 || nReferred == oldNReferred) - { - break; - } - - oldNReferred = nReferred; - - } while (true); - - Info<< decrIndent; - } -} - - -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -template<class Triangulation> -bool Foam::DistributedDelaunayMesh<Triangulation>::distribute -( - const boundBox& bb -) -{ - notImplemented - ( - "Foam::DistributedDelaunayMesh<Triangulation>::distribute" - "(" - " const boundBox& bb" - ")" - ); - - if (!Pstream::parRun()) - { - return false; - } - - distributeBoundBoxes(bb); - - return true; -} - - -template<class Triangulation> -Foam::autoPtr<Foam::mapDistribute> -Foam::DistributedDelaunayMesh<Triangulation>::distribute -( - const backgroundMeshDecomposition& decomposition -) -{ - if (!Pstream::parRun()) - { - return autoPtr<mapDistribute>(); - } - - distributeBoundBoxes(decomposition.procBounds()); - - DynamicList<point> points(Triangulation::number_of_vertices()); - - for - ( - Finite_vertices_iterator vit = Triangulation::finite_vertices_begin(); - vit != Triangulation::finite_vertices_end(); - ++vit - ) - { - if (vit->real()) - { - points.append(topoint(vit->point())); - } - } - - autoPtr<mapDistribute> mapDist = decomposition.distributePoints(points); - - return mapDist; -} - - -template<class Triangulation> -void Foam::DistributedDelaunayMesh<Triangulation>::sync(const boundBox& bb) -{ - if (!Pstream::parRun()) - { - return; - } - - if (allBackgroundMeshBounds_.empty()) - { - distributeBoundBoxes(bb); - } - - const label nApproxReferred = - Triangulation::number_of_vertices() - /Pstream::nProcs(); - - PtrList<labelPairHashSet> referralVertices(Pstream::nProcs()); - forAll(referralVertices, procI) - { - if (!isLocal(procI)) - { - referralVertices.set(procI, new labelPairHashSet(nApproxReferred)); - } - } - - labelPairHashSet receivedVertices(nApproxReferred); - - sync - ( - bb, - referralVertices, - receivedVertices, - true - ); -} - - -template<class Triangulation> -template<class PointIterator> -typename Foam::DistributedDelaunayMesh<Triangulation>::labelPairHashSet -Foam::DistributedDelaunayMesh<Triangulation>::rangeInsertReferredWithInfo -( - PointIterator begin, - PointIterator end, - bool printErrors -) -{ - const boundBox& bb = allBackgroundMeshBounds_()[Pstream::myProcNo()]; - - typedef DynamicList - < - std::pair<scalar, label> - > vectorPairPointIndex; - - vectorPairPointIndex pointsBbDistSqr; - - label count = 0; - for (PointIterator it = begin; it != end; ++it) - { - const Foam::point samplePoint(topoint(it->point())); - - scalar distFromBbSqr = 0; - - if (!bb.contains(samplePoint)) - { - const Foam::point nearestPoint = bb.nearest(samplePoint); - - distFromBbSqr = magSqr(nearestPoint - samplePoint); - } - - pointsBbDistSqr.append - ( - std::make_pair(distFromBbSqr, count++) - ); - } - - std::random_shuffle(pointsBbDistSqr.begin(), pointsBbDistSqr.end()); - - // Sort in ascending order by the distance of the point from the centre - // of the processor bounding box - sort(pointsBbDistSqr.begin(), pointsBbDistSqr.end()); - - typename Triangulation::Vertex_handle hint; - - typename Triangulation::Locate_type lt; - int li, lj; - - label nNotInserted = 0; - - labelPairHashSet uninserted - ( - Triangulation::number_of_vertices() - /Pstream::nProcs() - ); - - for - ( - typename vectorPairPointIndex::const_iterator p = - pointsBbDistSqr.begin(); - p != pointsBbDistSqr.end(); - ++p - ) - { - const size_t checkInsertion = Triangulation::number_of_vertices(); - - const Vb& vert = *(begin + p->second); - const Point& pointToInsert = vert.point(); - - // Locate the point - Cell_handle c = Triangulation::locate(pointToInsert, lt, li, lj, hint); - - if (lt == Triangulation::VERTEX) - { - if (printErrors) - { - Vertex_handle nearV = - Triangulation::nearest_vertex(pointToInsert); - - Pout<< "Failed insertion, point already exists" << nl - << "Failed insertion : " << vert.info() - << " nearest : " << nearV->info(); - } - - uninserted.insert(labelPair(vert.procIndex(), vert.index())); - nNotInserted++; - - continue; - } - - // Get the cells that conflict with p in a vector V, - // and a facet on the boundary of this hole in f. - std::vector<Cell_handle> V; - typename Triangulation::Facet f; - - Triangulation::find_conflicts - ( - pointToInsert, - c, - CGAL::Oneset_iterator<typename Triangulation::Facet>(f), - std::back_inserter(V) - ); - - bool insert = false; - for (size_t i = 0; i < V.size(); ++i) - { - if (V[i]->real() || V[i]->hasFarPoint()) - { - insert = true; - break; - } - } - - if (insert) - { - hint = Triangulation::insert_in_hole - ( - pointToInsert, - V.begin(), - V.end(), - f.first, - f.second - ); - - if (checkInsertion != Triangulation::number_of_vertices() - 1) - { - if (printErrors) - { - Vertex_handle nearV = - Triangulation::nearest_vertex(pointToInsert); - - Pout<< "Failed insertion : " << vert.info() - << " nearest : " << nearV->info(); - } - } - else - { - hint->index() = vert.index(); - hint->type() = vert.type(); - hint->procIndex() = vert.procIndex(); - hint->targetCellSize() = vert.targetCellSize(); - hint->alignment() = vert.alignment(); - } - } - else - { - uninserted.insert(labelPair(vert.procIndex(), vert.index())); - nNotInserted++; - } - } - - return uninserted; -} - - -// * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * // - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.H deleted file mode 100644 index fcc5d8c2ba8926842f6d5a5d205334cab3e7f992..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/DelaunayMesh/DistributedDelaunayMesh.H +++ /dev/null @@ -1,208 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::DistributedDelaunayMesh - -Description - -SourceFiles - DistributedDelaunayMeshI.H - DistributedDelaunayMesh.C - DistributedDelaunayMeshIO.C - -\*---------------------------------------------------------------------------*/ - -#ifndef DistributedDelaunayMesh_H -#define DistributedDelaunayMesh_H - -#include "DelaunayMesh.H" -#include "backgroundMeshDecomposition.H" -#include "autoPtr.H" -#include "boundBox.H" -#include "indexedVertex.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -class mapDistribute; - -/*---------------------------------------------------------------------------*\ - Class DistributedDelaunayMesh Declaration -\*---------------------------------------------------------------------------*/ - -template<class Triangulation> -class DistributedDelaunayMesh -: - public DelaunayMesh<Triangulation> -{ -public: - - typedef typename Triangulation::Vertex_handle Vertex_handle; - typedef typename Triangulation::Cell_handle Cell_handle; - typedef typename Triangulation::Point Point; - - typedef typename Triangulation::Finite_vertices_iterator - Finite_vertices_iterator; - typedef typename Triangulation::Finite_cells_iterator - Finite_cells_iterator; - typedef typename Triangulation::All_cells_iterator - All_cells_iterator; - - typedef typename DelaunayMesh<Triangulation>::labelPairHashSet - labelPairHashSet; - - -private: - - autoPtr<List<boundBox> > allBackgroundMeshBounds_; - - - // Private Member Functions - - //- - bool distributeBoundBoxes(const boundBox& bb); - - //- - bool isLocal(const Vertex_handle& v) const; - - bool isLocal(const label localProcIndex) const; - - labelList overlapProcessors - ( - const point& centre, - const scalar radiusSqr - ) const; - - bool checkProcBoundaryCell - ( - const Cell_handle& cit, - Map<labelList>& circumsphereOverlaps - ) const; - - void findProcessorBoundaryCells - ( - Map<labelList>& circumsphereOverlaps - ) const; - - void markVerticesToRefer - ( - const Map<labelList>& circumsphereOverlaps, - PtrList<labelPairHashSet>& referralVertices, - DynamicList<label>& targetProcessor, - DynamicList<Vb>& parallelInfluenceVertices - ); - - label referVertices - ( - const DynamicList<label>& targetProcessor, - DynamicList<Vb>& parallelVertices, - PtrList<labelPairHashSet>& referralVertices, - labelPairHashSet& receivedVertices - ); - - //- Disallow default bitwise copy construct - DistributedDelaunayMesh(const DistributedDelaunayMesh<Triangulation>&); - - //- Disallow default bitwise assignment - void operator=(const DistributedDelaunayMesh<Triangulation>&); - - -public: - - // Constructors - - //- Construct from components - DistributedDelaunayMesh(); - - - //- Destructor - ~DistributedDelaunayMesh(); - - - // Member Functions - - //- Build a mapDistribute for the supplied destination processor data - static autoPtr<mapDistribute> buildMap(const List<label>& toProc); - - //- - bool distribute(const boundBox& bb); - - autoPtr<mapDistribute> distribute - ( - const backgroundMeshDecomposition& decomposition - ); - - //- Refer vertices so that the processor interfaces are consistent - void sync(const boundBox& bb); - - //- Refer vertices so that the processor interfaces are consistent - void sync - ( - const boundBox& bb, - PtrList<labelPairHashSet>& referralVertices, - labelPairHashSet& receivedVertices, - bool iterateReferral = true - ); - - //- Inserts points into the triangulation if the point is within - // the circumsphere of another cell. Returns HashSet of failed - // point insertions - template<class PointIterator> - labelPairHashSet rangeInsertReferredWithInfo - ( - PointIterator begin, - PointIterator end, - bool printErrors = true - ); - -// distributeField(); - - - // Queries - - -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -//#include "DistributedDelaunayMeshI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#ifdef NoRepository -# include "DistributedDelaunayMesh.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/Make/files b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/Make/files deleted file mode 100644 index c6e553f64c32b3e7a61d3b26908ecfa3a9e35172..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/Make/files +++ /dev/null @@ -1,66 +0,0 @@ -#include CGAL_FILES - -conformalVoronoiMesh/indexedVertex/indexedVertexEnum.C -conformalVoronoiMesh/indexedCell/indexedCellEnum.C - -conformalVoronoiMesh/conformalVoronoiMesh.C -conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C -conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C -conformalVoronoiMesh/conformalVoronoiMeshIO.C -conformalVoronoiMesh/conformalVoronoiMeshFeaturePoints.C -conformalVoronoiMesh/conformalVoronoiMeshFeaturePointSpecialisations.C - -cvControls/cvControls.C - -conformationSurfaces/conformationSurfaces.C - -backgroundMeshDecomposition/backgroundMeshDecomposition.C - -cellShapeControl/cellShapeControl/cellShapeControl.C - -cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.C - -cellSizeAndAlignmentControl = cellShapeControl/cellSizeAndAlignmentControl -$(cellSizeAndAlignmentControl)/cellSizeAndAlignmentControls.C -$(cellSizeAndAlignmentControl)/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl.C -$(cellSizeAndAlignmentControl)/fileControl/fileControl.C -$(cellSizeAndAlignmentControl)/searchableSurfaceControl/searchableSurfaceControl.C -/*cellShapeControl/pQuadCoorControl/pQuadCoorControl.C*/ - -cellShapeControl/cellAspectRatioControl/cellAspectRatioControl.C - -/*cellSizeControlSurfaces/cellSizeControlSurfaces.C*/ - -cellSizeFunctions = cellSizeControlSurfaces/cellSizeFunction -$(cellSizeFunctions)/cellSizeFunction/cellSizeFunction.C -$(cellSizeFunctions)/uniform/uniform.C -$(cellSizeFunctions)/uniformDistance/uniformDistance.C -$(cellSizeFunctions)/linearDistance/linearDistance.C -$(cellSizeFunctions)/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.C -$(cellSizeFunctions)/linearSpatial/linearSpatial.C - -surfaceCellSizeFunctions = cellSizeControlSurfaces/surfaceCellSizeFunction -$(surfaceCellSizeFunctions)/surfaceCellSizeFunction/surfaceCellSizeFunction.C -$(surfaceCellSizeFunctions)/uniformValue/uniformValue.C -$(surfaceCellSizeFunctions)/nonUniformField/nonUniformField.C - -cellSizeCalculationType = $(surfaceCellSizeFunctions)/cellSizeCalculationType -$(cellSizeCalculationType)/cellSizeCalculationType/cellSizeCalculationType.C -$(cellSizeCalculationType)/fieldFromFile/fieldFromFile.C -$(cellSizeCalculationType)/automatic/automatic.C - -initialPointsMethod/initialPointsMethod/initialPointsMethod.C -initialPointsMethod/uniformGrid/uniformGrid.C -initialPointsMethod/bodyCentredCubic/bodyCentredCubic.C -initialPointsMethod/faceCentredCubic/faceCentredCubic.C -initialPointsMethod/pointFile/pointFile.C -initialPointsMethod/autoDensity/autoDensity.C - -relaxationModel/relaxationModel/relaxationModel.C -relaxationModel/adaptiveLinear/adaptiveLinear.C -relaxationModel/rampHoldFall/rampHoldFall.C - -faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.C -faceAreaWeightModel/piecewiseLinearRamp/piecewiseLinearRamp.C - -LIB = $(FOAM_LIBBIN)/libconformalVoronoiMesh diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/Make/options b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/Make/options deleted file mode 100644 index 03ee51a4f6366bfdaee9196edb37451f69cfd8b4..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/Make/options +++ /dev/null @@ -1,33 +0,0 @@ -EXE_DEBUG = -DFULLDEBUG -g -O0 -EXE_FROUNDING_MATH = -frounding-math -EXE_NDEBUG = -DNDEBUG - -CGAL_EXACT = /*-DCGAL_DONT_USE_LAZY_KERNEL*/ -CGAL_INEXACT = -DCGAL_INEXACT - -include $(GENERAL_RULES)/CGAL -FFLAGS = -DCGAL_FILES='"${CGAL_ARCH_PATH}/share/files"' - -EXE_INC = \ - ${EXE_FROUNDING_MATH} \ - ${EXE_NDEBUG} \ - ${CGAL_INEXACT} \ - ${CGAL_INC} \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ - -IPrintTable \ - -I../vectorTools - -LIB_LIBS = \ - -lmeshTools \ - -ledgeMesh \ - -lfileFormats \ - -ltriSurface \ - -ldynamicMesh \ - -lsampling diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTable.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTable.C deleted file mode 100644 index 4b0c747f0fa66361f4d588a2e56dc1d7e22d0b90..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTable.C +++ /dev/null @@ -1,234 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "PrintTable.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class KeyType, class DataType> -Foam::PrintTable<KeyType, DataType>::PrintTable() -: - table_(), - title_(string::null) -{} - - -template<class KeyType, class DataType> -Foam::PrintTable<KeyType, DataType>::PrintTable(const string& title) -: - table_(), - title_(title) -{} - - -template<class KeyType, class DataType> -Foam::PrintTable<KeyType, DataType>::PrintTable -( - const PrintTable<KeyType, DataType>& table -) -: - table_(table.table_), - title_(table.title_) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -template<class KeyType, class DataType> -Foam::PrintTable<KeyType, DataType>::~PrintTable() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -template<class KeyType, class DataType> -void Foam::PrintTable<KeyType, DataType>::print -( - Ostream& os, - const bool printSum, - const bool printAverage -) const -{ - HashTable<HashTable<DataType, label>, KeyType> combinedTable; - - List<HashTableData> procData(Pstream::nProcs(), HashTableData()); - - procData[Pstream::myProcNo()] = table_; - - Pstream::gatherList(procData); - - if (Pstream::master()) - { - label largestKeyLength = 6; - label largestDataLength = 0; - - List<label> largestProcSize(Pstream::nProcs(), 0); - - forAll(procData, procI) - { - const HashTableData& procIData = procData[procI]; - - for - ( - typename HashTableData::const_iterator iter = procIData.begin(); - iter != procIData.end(); - ++iter - ) - { - if (!combinedTable.found(iter.key())) - { - combinedTable.insert - ( - iter.key(), - HashTable<DataType, label>() - ); - } - - HashTable<DataType, label>& key = combinedTable[iter.key()]; - - key.insert(procI, iter()); - - for - ( - typename HashTable<DataType, label> - ::const_iterator dataIter = key.begin(); - dataIter != key.end(); - ++dataIter - ) - { - std::ostringstream buf; - buf << dataIter(); - - largestDataLength = max - ( - largestDataLength, - label(buf.str().length()) - ); - } - - std::ostringstream buf; - buf << iter.key(); - - largestKeyLength = max - ( - largestKeyLength, - label(buf.str().length()) - ); - } - } - - os.width(largestKeyLength); - os << nl << indent << tab << title_.c_str() << endl; - - os.width(largestKeyLength); - os << indent << "Proc #"; - forAll(procData, procI) - { - os << tab; - os.width(largestDataLength); - os << procI; - } - - if (printSum) - { - os << tab; - os.width(largestDataLength); - os << "Sum"; - } - - if (printAverage) - { - os << tab; - os.width(largestDataLength); - os << "Average"; - } - - os << endl; - - const List<KeyType>& sortedTable = combinedTable.sortedToc(); - - forAll(sortedTable, keyI) - { - const HashTable<DataType, label>& procDataList - = combinedTable[sortedTable[keyI]]; - - os.width(largestKeyLength); - os << indent << sortedTable[keyI]; - - forAll(procDataList, elemI) - { - os << tab; - os.width(largestDataLength); - os << procDataList[elemI]; - } - - if (printSum) - { - DataType sum = 0; - forAll(procDataList, elemI) - { - sum += procDataList[elemI]; - } - - os << tab; - os.width(largestDataLength); - os << sum; - - if (printAverage) - { - os << tab; - os.width(largestDataLength); - os << sum/Pstream::nProcs(); - } - } - - os << endl; - } - } -} - - -// * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * // - -template<class KeyType, class DataType> -void Foam::PrintTable<KeyType, DataType>::operator= -( - const PrintTable<KeyType, DataType>& rhs -) -{ - // Check for assignment to self - if (this == &rhs) - { - FatalErrorIn - ( - "Foam::PrintTable<KeyType, DataType>::operator=" - "(const Foam::PrintTable<KeyType, DataType>&)" - ) << "Attempted assignment to self" - << abort(FatalError); - } -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTable.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTable.H deleted file mode 100644 index 9f9e8b9594bbfa702fb83ce2ccdd9b0671cfd79a..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTable.H +++ /dev/null @@ -1,140 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::PrintTable - -Description - Print a table in parallel, e.g.; - - \verbatim - Vertex Type Information - Proc # 0 1 2 3 - Total 145680 145278 145751 145359 - Unassigned 0 0 0 0 - nExternalFeatureEdge 883 829 828 960 - nExternalFeaturePoint 8 10 10 12 - nExternalSurface 9533 9488 9502 9482 - nFar 0 0 0 0 - nInternal 125494 125198 125642 125174 - nInternalFeatureEdge 238 241 241 240 - nInternalFeaturePoint 2 2 2 2 - nInternalNearBoundary 0 0 0 0 - nInternalSurface 9522 9510 9526 9489 - nReferred 7545 7497 7500 7587 - \endverbatim - -SourceFiles - PrintTableI.H - PrintTable.C - -\*---------------------------------------------------------------------------*/ - -#ifndef PrintTable_H -#define PrintTable_H - -#include "HashTable.H" -#include "Ostream.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class PrintTable Declaration -\*---------------------------------------------------------------------------*/ - -template<class KeyType, class DataType> -class PrintTable -{ - typedef HashTable<DataType, KeyType> HashTableData; - - - // Private data - - //- Hash table holding the data - HashTableData table_; - - //- Title of the table - string title_; - - - // Private Member Functions - - //- Disallow default bitwise assignment - void operator=(const PrintTable<KeyType, DataType>&); - - -public: - - // Constructors - - //- Null constructor - PrintTable(); - - //- Construct with a title - explicit PrintTable(const string& title); - - //- Copy constructor - PrintTable(const PrintTable<KeyType, DataType>& table); - - - //- Destructor - ~PrintTable(); - - - // Member Functions - - //- Add an entry (D) to the given key(K) - void add(const KeyType& K, const DataType& D); - - //- Print the table - void print - ( - Ostream& os, - const bool printSum = false, - const bool printAverage = false - ) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "PrintTableI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#ifdef NoRepository -# include "PrintTable.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTableI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTableI.H deleted file mode 100644 index 6c093bc13a2d8ea6e05fa53cc452403950a65743..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/PrintTable/PrintTableI.H +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template<class KeyType, class DataType> -void Foam::PrintTable<KeyType, DataType>::add -( - const KeyType& K, - const DataType& D -) -{ - table_.set(K, D); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.C deleted file mode 100644 index 7f60b96200013c5a9e228c3f5672ead92ebb9ca0..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.C +++ /dev/null @@ -1,1804 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "backgroundMeshDecomposition.H" -#include "meshSearch.H" -#include "conformationSurfaces.H" -#include "zeroGradientFvPatchFields.H" -#include "Time.H" -#include "Random.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - -defineTypeNameAndDebug(backgroundMeshDecomposition, 0); - -} - - -// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // - -Foam::autoPtr<Foam::mapDistribute> Foam::backgroundMeshDecomposition::buildMap -( - const List<label>& toProc -) -{ - // Determine send map - // ~~~~~~~~~~~~~~~~~~ - - // 1. Count - labelList nSend(Pstream::nProcs(), 0); - - forAll(toProc, i) - { - label procI = toProc[i]; - - nSend[procI]++; - } - - // Send over how many I need to receive - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - labelListList sendSizes(Pstream::nProcs()); - - sendSizes[Pstream::myProcNo()] = nSend; - - combineReduce(sendSizes, UPstream::listEq()); - - // 2. Size sendMap - labelListList sendMap(Pstream::nProcs()); - - forAll(nSend, procI) - { - sendMap[procI].setSize(nSend[procI]); - - nSend[procI] = 0; - } - - // 3. Fill sendMap - forAll(toProc, i) - { - label procI = toProc[i]; - - sendMap[procI][nSend[procI]++] = i; - } - - // Determine receive map - // ~~~~~~~~~~~~~~~~~~~~~ - - labelListList constructMap(Pstream::nProcs()); - - // Local transfers first - constructMap[Pstream::myProcNo()] = identity - ( - sendMap[Pstream::myProcNo()].size() - ); - - label constructSize = constructMap[Pstream::myProcNo()].size(); - - forAll(constructMap, procI) - { - if (procI != Pstream::myProcNo()) - { - label nRecv = sendSizes[procI][Pstream::myProcNo()]; - - constructMap[procI].setSize(nRecv); - - for (label i = 0; i < nRecv; i++) - { - constructMap[procI][i] = constructSize++; - } - } - } - - return autoPtr<mapDistribute> - ( - new mapDistribute - ( - constructSize, - sendMap.xfer(), - constructMap.xfer() - ) - ); -} - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -void Foam::backgroundMeshDecomposition::initialRefinement() -{ - volScalarField cellWeights - ( - IOobject - ( - "cellWeights", - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedScalar("one", dimless, 1.0), - zeroGradientFvPatchScalarField::typeName - ); - - const conformationSurfaces& geometry = geometryToConformTo_; - - decompositionMethod& decomposer = decomposerPtr_(); - - volScalarField::InternalField& icellWeights = cellWeights.internalField(); - - - // For each cell in the mesh has it been determined if it is fully - // inside, outside, or overlaps the surface - labelList volumeStatus - ( - mesh_.nCells(), - searchableSurface::UNKNOWN - ); - - // Surface refinement - { - while (true) - { - // Determine/update the status of each cell - forAll(volumeStatus, cellI) - { - if (volumeStatus[cellI] == searchableSurface::UNKNOWN) - { - treeBoundBox cellBb - ( - mesh_.cells()[cellI].points - ( - mesh_.faces(), - mesh_.points() - ) - ); - - if (geometry.overlaps(cellBb)) - { - volumeStatus[cellI] = searchableSurface::MIXED; - } - else if (geometry.inside(cellBb.midpoint())) - { - volumeStatus[cellI] = searchableSurface::INSIDE; - } - else - { - volumeStatus[cellI] = - searchableSurface::OUTSIDE; - } - } - } - - { - labelList refCells = selectRefinementCells - ( - volumeStatus, - cellWeights - ); - - // Maintain 2:1 ratio - labelList newCellsToRefine - ( - meshCutter_.consistentRefinement - ( - refCells, - true // extend set - ) - ); - - forAll(newCellsToRefine, nCTRI) - { - label cellI = newCellsToRefine[nCTRI]; - - if (volumeStatus[cellI] == searchableSurface::MIXED) - { - volumeStatus[cellI] = searchableSurface::UNKNOWN; - } - - icellWeights[cellI] = max - ( - 1.0, - icellWeights[cellI]/8.0 - ); - } - - if (returnReduce(newCellsToRefine.size(), sumOp<label>()) == 0) - { - break; - } - - // Mesh changing engine. - polyTopoChange meshMod(mesh_); - - // Play refinement commands into mesh changer. - meshCutter_.setRefinement(newCellsToRefine, meshMod); - - // Create mesh, return map from old to new mesh. - autoPtr<mapPolyMesh> map = meshMod.changeMesh - ( - mesh_, - false, // inflate - true, // syncParallel - true, // orderCells (to reduce cell transfers) - false // orderPoints - ); - - // Update fields - mesh_.updateMesh(map); - - // Update numbering of cells/vertices. - meshCutter_.updateMesh(map); - - { - // Map volumeStatus - - const labelList& cellMap = map().cellMap(); - - labelList newVolumeStatus(cellMap.size()); - - forAll(cellMap, newCellI) - { - label oldCellI = cellMap[newCellI]; - - if (oldCellI == -1) - { - newVolumeStatus[newCellI] = - searchableSurface::UNKNOWN; - } - else - { - newVolumeStatus[newCellI] = volumeStatus[oldCellI]; - } - } - - volumeStatus.transfer(newVolumeStatus); - } - - Info<< " Background mesh refined from " - << returnReduce(map().nOldCells(), sumOp<label>()) - << " to " << mesh_.globalData().nTotalCells() - << " cells." << endl; - } - - // Determine/update the status of each cell - forAll(volumeStatus, cellI) - { - if (volumeStatus[cellI] == searchableSurface::UNKNOWN) - { - treeBoundBox cellBb - ( - mesh_.cells()[cellI].points - ( - mesh_.faces(), - mesh_.points() - ) - ); - - if (geometry.overlaps(cellBb)) - { - volumeStatus[cellI] = searchableSurface::MIXED; - } - else if (geometry.inside(cellBb.midpoint())) - { - volumeStatus[cellI] = searchableSurface::INSIDE; - } - else - { - volumeStatus[cellI] = - searchableSurface::OUTSIDE; - } - } - } - - // Hard code switch for this stage for testing - bool removeOutsideCells = false; - - if (removeOutsideCells) - { - DynamicList<label> cellsToRemove; - - forAll(volumeStatus, cellI) - { - if (volumeStatus[cellI] == searchableSurface::OUTSIDE) - { - cellsToRemove.append(cellI); - } - } - - removeCells cellRemover(mesh_); - - // Mesh changing engine. - polyTopoChange meshMod(mesh_); - - labelList exposedFaces = cellRemover.getExposedFaces - ( - cellsToRemove - ); - - // Play refinement commands into mesh changer. - cellRemover.setRefinement - ( - cellsToRemove, - exposedFaces, - labelList(exposedFaces.size(), 0), // patchID dummy - meshMod - ); - - // Create mesh, return map from old to new mesh. - autoPtr<mapPolyMesh> map = meshMod.changeMesh - ( - mesh_, - false, // inflate - true, // syncParallel - true, // orderCells (to reduce cell transfers) - false // orderPoints - ); - - // Update fields - mesh_.updateMesh(map); - - // Update numbering of cells/vertices. - meshCutter_.updateMesh(map); - cellRemover.updateMesh(map); - - { - // Map volumeStatus - - const labelList& cellMap = map().cellMap(); - - labelList newVolumeStatus(cellMap.size()); - - forAll(cellMap, newCellI) - { - label oldCellI = cellMap[newCellI]; - - if (oldCellI == -1) - { - newVolumeStatus[newCellI] = - searchableSurface::UNKNOWN; - } - else - { - newVolumeStatus[newCellI] = - volumeStatus[oldCellI]; - } - } - - volumeStatus.transfer(newVolumeStatus); - } - - Info<< "Removed " - << returnReduce(map().nOldCells(), sumOp<label>()) - - mesh_.globalData().nTotalCells() - << " cells." << endl; - } - - if (debug) - { - // const_cast<Time&>(mesh_.time())++; - // Info<< "Time " << mesh_.time().timeName() << endl; - meshCutter_.write(); - mesh_.write(); - cellWeights.write(); - } - - labelList newDecomp = decomposer.decompose - ( - mesh_, - mesh_.cellCentres(), - icellWeights - ); - - fvMeshDistribute distributor(mesh_, mergeDist_); - - autoPtr<mapDistributePolyMesh> mapDist = distributor.distribute - ( - newDecomp - ); - - meshCutter_.distribute(mapDist); - - mapDist().distributeCellData(volumeStatus); - - if (debug) - { - printMeshData(mesh_); - - // const_cast<Time&>(mesh_.time())++; - // Info<< "Time " << mesh_.time().timeName() << endl; - meshCutter_.write(); - mesh_.write(); - cellWeights.write(); - } - } - } - - if (debug) - { - // const_cast<Time&>(mesh_.time())++; - // Info<< "Time " << mesh_.time().timeName() << endl; - cellWeights.write(); - mesh_.write(); - } - - buildPatchAndTree(); -} - - -void Foam::backgroundMeshDecomposition::printMeshData -( - const polyMesh& mesh -) const -{ - // Collect all data on master - - globalIndex globalCells(mesh.nCells()); - // labelListList patchNeiProcNo(Pstream::nProcs()); - // labelListList patchSize(Pstream::nProcs()); - // const labelList& pPatches = mesh.globalData().processorPatches(); - // patchNeiProcNo[Pstream::myProcNo()].setSize(pPatches.size()); - // patchSize[Pstream::myProcNo()].setSize(pPatches.size()); - // forAll(pPatches, i) - // { - // const processorPolyPatch& ppp = refCast<const processorPolyPatch> - // ( - // mesh.boundaryMesh()[pPatches[i]] - // ); - // patchNeiProcNo[Pstream::myProcNo()][i] = ppp.neighbProcNo(); - // patchSize[Pstream::myProcNo()][i] = ppp.size(); - // } - // Pstream::gatherList(patchNeiProcNo); - // Pstream::gatherList(patchSize); - - - // // Print stats - - // globalIndex globalBoundaryFaces(mesh.nFaces()-mesh.nInternalFaces()); - - for (label procI = 0; procI < Pstream::nProcs(); procI++) - { - Info<< "Processor " << procI << " " - << "Number of cells = " << globalCells.localSize(procI) - << endl; - - // label nProcFaces = 0; - - // const labelList& nei = patchNeiProcNo[procI]; - - // forAll(patchNeiProcNo[procI], i) - // { - // Info<< " Number of faces shared with processor " - // << patchNeiProcNo[procI][i] << " = " << patchSize[procI][i] - // << endl; - - // nProcFaces += patchSize[procI][i]; - // } - - // Info<< " Number of processor patches = " << nei.size() << nl - // << " Number of processor faces = " << nProcFaces << nl - // << " Number of boundary faces = " - // << globalBoundaryFaces.localSize(procI) << endl; - } -} - - -bool Foam::backgroundMeshDecomposition::refineCell -( - label cellI, - label volType, - scalar& weightEstimate -) const -{ - // Sample the box to find an estimate of the min size, and a volume - // estimate when overlapping == true. - - const conformationSurfaces& geometry = geometryToConformTo_; - - treeBoundBox cellBb - ( - mesh_.cells()[cellI].points - ( - mesh_.faces(), - mesh_.points() - ) - ); - - weightEstimate = 1.0; - - if (volType == searchableSurface::MIXED) - { -// // Assess the cell size at the nearest point on the surface for the -// // MIXED cells, if the cell is large with respect to the cell size, -// // then refine it. -// -// pointField samplePoints -// ( -// volRes_*volRes_*volRes_, -// vector::zero -// ); -// -// // scalar sampleVol = cellBb.volume()/samplePoints.size(); -// -// vector delta = cellBb.span()/volRes_; -// -// label pI = 0; -// -// for (label i = 0; i < volRes_; i++) -// { -// for (label j = 0; j < volRes_; j++) -// { -// for (label k = 0; k < volRes_; k++) -// { -// samplePoints[pI++] = -// cellBb.min() -// + vector -// ( -// delta.x()*(i + 0.5), -// delta.y()*(j + 0.5), -// delta.z()*(k + 0.5) -// ); -// } -// } -// } -// -// List<pointIndexHit> hitInfo; -// labelList hitSurfaces; -// -// geometry.findSurfaceNearest -// ( -// samplePoints, -// scalarField(samplePoints.size(), sqr(GREAT)), -// hitInfo, -// hitSurfaces -// ); -// -// // weightEstimate = 0.0; -// -// scalar minCellSize = GREAT; -// -// forAll(samplePoints, i) -// { -// scalar s = cellShapeControl_.cellSize -// ( -// hitInfo[i].hitPoint() -// ); -// -// // Info<< "cellBb.midpoint() " << cellBb.midpoint() << nl -// // << samplePoints[i] << nl -// // << hitInfo[i] << nl -// // << "cellBb.span() " << cellBb.span() << nl -// // << "cellBb.mag() " << cellBb.mag() << nl -// // << s << endl; -// -// if (s < minCellSize) -// { -// minCellSize = max(s, minCellSizeLimit_); -// } -// -// // Estimate the number of points in the cell by the surface size, -// // this is likely to be too small, so reduce. -// // weightEstimate += sampleVol/pow3(s); -// } -// -// if (sqr(spanScale_)*sqr(minCellSize) < magSqr(cellBb.span())) -// { -// return true; -// } - } - else if (volType == searchableSurface::INSIDE) - { - // scalar s = cvMesh_.cellShapeControl_.cellSize(cellBb.midpoint()); - - // Estimate the number of points in the cell by the size at the cell - // midpoint - // weightEstimate = cellBb.volume()/pow3(s); - - return false; - } - // else - // { - // weightEstimate = 1.0; - - // return false; - // } - - return false; -} - - -Foam::labelList Foam::backgroundMeshDecomposition::selectRefinementCells -( - labelList& volumeStatus, - volScalarField& cellWeights -) const -{ - volScalarField::InternalField& icellWeights = cellWeights.internalField(); - - labelHashSet cellsToRefine; - - // Determine/update the status of each cell - forAll(volumeStatus, cellI) - { - if (volumeStatus[cellI] == searchableSurface::MIXED) - { - if (meshCutter_.cellLevel()[cellI] < minLevels_) - { - cellsToRefine.insert(cellI); - } - } - - if (volumeStatus[cellI] != searchableSurface::OUTSIDE) - { - if - ( - refineCell - ( - cellI, - volumeStatus[cellI], - icellWeights[cellI] - ) - ) - { - cellsToRefine.insert(cellI); - } - } - } - - return cellsToRefine.toc(); -} - - -void Foam::backgroundMeshDecomposition::buildPatchAndTree() -{ - primitivePatch tmpBoundaryFaces - ( - SubList<face> - ( - mesh_.faces(), - mesh_.nFaces() - mesh_.nInternalFaces(), - mesh_.nInternalFaces() - ), - mesh_.points() - ); - - boundaryFacesPtr_.reset - ( - new bPatch - ( - tmpBoundaryFaces.localFaces(), - tmpBoundaryFaces.localPoints() - ) - ); - - // Overall bb - treeBoundBox overallBb(boundaryFacesPtr_().localPoints()); - - Random& rnd = rndGen_; - - bFTreePtr_.reset - ( - new indexedOctree<treeDataBPatch> - ( - treeDataBPatch(false, boundaryFacesPtr_()), - overallBb.extend(rnd, 1e-4), - 10, // maxLevel - 10, // leafSize - 3.0 // duplicity - ) - ); - - // Give the bounds of every processor to every other processor - allBackgroundMeshBounds_[Pstream::myProcNo()] = overallBb; - - Pstream::gatherList(allBackgroundMeshBounds_); - Pstream::scatterList(allBackgroundMeshBounds_); - - point bbMin(GREAT, GREAT, GREAT); - point bbMax(-GREAT, -GREAT, -GREAT); - - forAll(allBackgroundMeshBounds_, procI) - { - bbMin = min(bbMin, allBackgroundMeshBounds_[procI].min()); - bbMax = max(bbMax, allBackgroundMeshBounds_[procI].max()); - } - - globalBackgroundBounds_ = treeBoundBox(bbMin, bbMax); - - if (false) - { - OFstream fStr - ( - mesh_.time().path() - /"backgroundMeshDecomposition_proc_" - + name(Pstream::myProcNo()) - + "_boundaryFaces.obj" - ); - - const faceList& faces = boundaryFacesPtr_().localFaces(); - const List<point>& points = boundaryFacesPtr_().localPoints(); - - Map<label> foamToObj(points.size()); - - label vertI = 0; - - forAll(faces, i) - { - const face& f = faces[i]; - - forAll(f, fPI) - { - if (foamToObj.insert(f[fPI], vertI)) - { - meshTools::writeOBJ(fStr, points[f[fPI]]); - vertI++; - } - } - - fStr<< 'f'; - - forAll(f, fPI) - { - fStr<< ' ' << foamToObj[f[fPI]] + 1; - } - - fStr<< nl; - } - } -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::backgroundMeshDecomposition::backgroundMeshDecomposition -( - const Time& runTime, - Random& rndGen, - const conformationSurfaces& geometryToConformTo, - const dictionary& coeffsDict -) -: - runTime_(runTime), - geometryToConformTo_(geometryToConformTo), - rndGen_(rndGen), - mesh_ - ( - IOobject - ( - fvMesh::defaultRegion, - runTime_.timeName(), - runTime_, - IOobject::MUST_READ - ) - ), - meshCutter_ - ( - mesh_, - labelList(mesh_.nCells(), 0), - labelList(mesh_.nPoints(), 0) - ), - boundaryFacesPtr_(), - bFTreePtr_(), - allBackgroundMeshBounds_(Pstream::nProcs()), - globalBackgroundBounds_(), - decomposeDict_ - ( - IOobject - ( - "decomposeParDict", - runTime_.system(), - runTime_, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ), - decomposerPtr_(decompositionMethod::New(decomposeDict_)), - mergeDist_(1e-6*mesh_.bounds().mag()), - spanScale_(readScalar(coeffsDict.lookup("spanScale"))), - minCellSizeLimit_ - ( - coeffsDict.lookupOrDefault<scalar>("minCellSizeLimit", 0.0) - ), - minLevels_(readLabel(coeffsDict.lookup("minLevels"))), - volRes_(readLabel(coeffsDict.lookup("sampleResolution"))), - maxCellWeightCoeff_(readScalar(coeffsDict.lookup("maxCellWeightCoeff"))) -{ - if (!Pstream::parRun()) - { - FatalErrorIn - ( - "Foam::backgroundMeshDecomposition::backgroundMeshDecomposition" - "(" - "const dictionary& coeffsDict, " - "const conformalVoronoiMesh& cvMesh" - ")" - ) - << "This cannot be used when not running in parallel." - << exit(FatalError); - } - - if (!decomposerPtr_().parallelAware()) - { - FatalErrorIn - ( - "void Foam::backgroundMeshDecomposition::initialRefinement() const" - ) - << "You have selected decomposition method " - << decomposerPtr_().typeName - << " which is not parallel aware." << endl - << exit(FatalError); - } - - Info<< nl << "Building initial background mesh decomposition" << endl; - - initialRefinement(); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::backgroundMeshDecomposition::~backgroundMeshDecomposition() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -Foam::autoPtr<Foam::mapDistributePolyMesh> -Foam::backgroundMeshDecomposition::distribute -( - volScalarField& cellWeights -) -{ - if (debug) - { - // const_cast<Time&>(mesh_.time())++; - // Info<< "Time " << mesh_.time().timeName() << endl; - cellWeights.write(); - mesh_.write(); - } - - volScalarField::InternalField& icellWeights = cellWeights.internalField(); - - while (true) - { - // Refine large cells if necessary - - label nOccupiedCells = 0; - - forAll(icellWeights, cI) - { - if (icellWeights[cI] > 1 - SMALL) - { - nOccupiedCells++; - } - } - - // Only look at occupied cells, as there is a possibility of runaway - // refinement if the number of cells grows too fast. Also, clip the - // minimum cellWeightLimit at maxCellWeightCoeff_ - - scalar cellWeightLimit = max - ( - maxCellWeightCoeff_ - *sum(cellWeights).value() - /returnReduce(nOccupiedCells, sumOp<label>()), - maxCellWeightCoeff_ - ); - - if (debug) - { - Info<< " cellWeightLimit " << cellWeightLimit << endl; - - Pout<< " sum(cellWeights) " << sum(cellWeights.internalField()) - << " max(cellWeights) " << max(cellWeights.internalField()) - << endl; - } - - labelHashSet cellsToRefine; - - forAll(icellWeights, cWI) - { - if (icellWeights[cWI] > cellWeightLimit) - { - cellsToRefine.insert(cWI); - } - } - - if (returnReduce(cellsToRefine.size(), sumOp<label>()) == 0) - { - break; - } - - // Maintain 2:1 ratio - labelList newCellsToRefine - ( - meshCutter_.consistentRefinement - ( - cellsToRefine.toc(), - true // extend set - ) - ); - - if (debug && !cellsToRefine.empty()) - { - Pout<< " cellWeights too large in " << cellsToRefine.size() - << " cells" << endl; - } - - forAll(newCellsToRefine, nCTRI) - { - label cellI = newCellsToRefine[nCTRI]; - - icellWeights[cellI] /= 8.0; - } - - // Mesh changing engine. - polyTopoChange meshMod(mesh_); - - // Play refinement commands into mesh changer. - meshCutter_.setRefinement(newCellsToRefine, meshMod); - - // Create mesh, return map from old to new mesh. - autoPtr<mapPolyMesh> map = meshMod.changeMesh - ( - mesh_, - false, // inflate - true, // syncParallel - true, // orderCells (to reduce cell motion) - false // orderPoints - ); - - // Update fields - mesh_.updateMesh(map); - - // Update numbering of cells/vertices. - meshCutter_.updateMesh(map); - - Info<< " Background mesh refined from " - << returnReduce(map().nOldCells(), sumOp<label>()) - << " to " << mesh_.globalData().nTotalCells() - << " cells." << endl; - - if (debug) - { - // const_cast<Time&>(mesh_.time())++; - // Info<< "Time " << mesh_.time().timeName() << endl; - cellWeights.write(); - mesh_.write(); - } - } - - if (debug) - { - printMeshData(mesh_); - - Pout<< " Pre distribute sum(cellWeights) " - << sum(icellWeights) - << " max(cellWeights) " - << max(icellWeights) - << endl; - } - - labelList newDecomp = decomposerPtr_().decompose - ( - mesh_, - mesh_.cellCentres(), - icellWeights - ); - - Info<< " Redistributing background mesh cells" << endl; - - fvMeshDistribute distributor(mesh_, mergeDist_); - - autoPtr<mapDistributePolyMesh> mapDist = distributor.distribute(newDecomp); - - meshCutter_.distribute(mapDist); - - if (debug) - { - printMeshData(mesh_); - - Pout<< " Post distribute sum(cellWeights) " - << sum(icellWeights) - << " max(cellWeights) " - << max(icellWeights) - << endl; - - // const_cast<Time&>(mesh_.time())++; - // Info<< "Time " << mesh_.time().timeName() << endl; - mesh_.write(); - cellWeights.write(); - } - - buildPatchAndTree(); - - return mapDist; -} - - -Foam::autoPtr<Foam::mapDistribute> -Foam::backgroundMeshDecomposition::distributePoints -( - List<point>& points -) const -{ - labelList toProc(processorPosition(points)); - - autoPtr<mapDistribute> map(buildMap(toProc)); - - map().distribute(points); - - return map; -} - - -bool Foam::backgroundMeshDecomposition::positionOnThisProcessor -( - const point& pt -) const -{ -// return bFTreePtr_().findAnyOverlap(pt, 0.0); - - return - ( - bFTreePtr_().getVolumeType(pt) - == indexedOctree<treeDataBPatch>::INSIDE - ); -} - - -Foam::boolList Foam::backgroundMeshDecomposition::positionOnThisProcessor -( - const List<point>& pts -) const -{ - boolList posProc(pts.size(), true); - - forAll(pts, pI) - { - posProc[pI] = positionOnThisProcessor(pts[pI]); - } - - return posProc; -} - - -bool Foam::backgroundMeshDecomposition::overlapsThisProcessor -( - const treeBoundBox& box -) const -{ -// return !procBounds().contains(box); - return !bFTreePtr_().findBox(box).empty(); -} - - -bool Foam::backgroundMeshDecomposition::overlapsThisProcessor -( - const point& centre, - const scalar radiusSqr -) const -{ - //return bFTreePtr_().findAnyOverlap(centre, radiusSqr); - - return bFTreePtr_().findNearest(centre, radiusSqr).hit(); -} - - -Foam::pointIndexHit Foam::backgroundMeshDecomposition::findLine -( - const point& start, - const point& end -) const -{ - return bFTreePtr_().findLine(start, end); -} - - -Foam::pointIndexHit Foam::backgroundMeshDecomposition::findLineAny -( - const point& start, - const point& end -) const -{ - return bFTreePtr_().findLineAny(start, end); -} - - -Foam::labelList Foam::backgroundMeshDecomposition::processorPosition -( - const List<point>& pts -) const -{ - DynamicList<label> toCandidateProc; - DynamicList<point> testPoints; - labelList ptBlockStart(pts.size(), -1); - labelList ptBlockSize(pts.size(), -1); - - label nTotalCandidates = 0; - - forAll(pts, pI) - { - const point& pt = pts[pI]; - - label nCandidates = 0; - - forAll(allBackgroundMeshBounds_, procI) - { - if (allBackgroundMeshBounds_[procI].contains(pt)) - { - toCandidateProc.append(procI); - testPoints.append(pt); - - nCandidates++; - } - } - - ptBlockStart[pI] = nTotalCandidates; - ptBlockSize[pI] = nCandidates; - - nTotalCandidates += nCandidates; - } - - // Needed for reverseDistribute - label preDistributionToCandidateProcSize = toCandidateProc.size(); - - autoPtr<mapDistribute> map(buildMap(toCandidateProc)); - - map().distribute(testPoints); - - List<bool> pointOnCandidate(testPoints.size(), false); - - // Test candidate points on candidate processors - forAll(testPoints, tPI) - { - pointOnCandidate[tPI] = positionOnThisProcessor(testPoints[tPI]); - } - - map().reverseDistribute - ( - preDistributionToCandidateProcSize, - pointOnCandidate - ); - - labelList ptProc(pts.size(), -1); - - DynamicList<label> failedPointIndices; - DynamicList<point> failedPoints; - - forAll(pts, pI) - { - // Extract the sub list of results for this point - - SubList<bool> ptProcResults - ( - pointOnCandidate, - ptBlockSize[pI], - ptBlockStart[pI] - ); - - forAll(ptProcResults, pPRI) - { - if (ptProcResults[pPRI]) - { - ptProc[pI] = toCandidateProc[ptBlockStart[pI] + pPRI]; - - break; - } - } - - if (ptProc[pI] < 0) - { - if (!globalBackgroundBounds_.contains(pts[pI])) - { - FatalErrorIn - ( - "Foam::labelList" - "Foam::backgroundMeshDecomposition::processorPosition" - "(" - "const List<point>&" - ") const" - ) - << "The position " << pts[pI] - << " is not in any part of the background mesh " - << globalBackgroundBounds_ << endl - << "A background mesh with a wider margin around " - << "the geometry may help." - << exit(FatalError); - } - - if (debug) - { - WarningIn - ( - "Foam::labelList" - "Foam::backgroundMeshDecomposition::processorPosition" - "(" - "const List<point>&" - ") const" - ) << "The position " << pts[pI] - << " was not found in the background mesh " - << globalBackgroundBounds_ << ", finding nearest." - << endl; - } - - failedPointIndices.append(pI); - failedPoints.append(pts[pI]); - } - } - - labelList ptNearestProc(processorNearestPosition(failedPoints)); - - forAll(failedPoints, fPI) - { - label pI = failedPointIndices[fPI]; - - ptProc[pI] = ptNearestProc[fPI]; - } - - return ptProc; -} - - -Foam::labelList Foam::backgroundMeshDecomposition::processorNearestPosition -( - const List<point>& pts -) const -{ - DynamicList<label> toCandidateProc; - DynamicList<point> testPoints; - labelList ptBlockStart(pts.size(), -1); - labelList ptBlockSize(pts.size(), -1); - - label nTotalCandidates = 0; - - forAll(pts, pI) - { - const point& pt = pts[pI]; - - label nCandidates = 0; - - forAll(allBackgroundMeshBounds_, procI) - { - // Candidate points may lie just outside a processor box, increase - // test range by using overlaps rather than contains - if (allBackgroundMeshBounds_[procI].overlaps(pt, sqr(SMALL*100))) - { - toCandidateProc.append(procI); - testPoints.append(pt); - - nCandidates++; - } - } - - ptBlockStart[pI] = nTotalCandidates; - ptBlockSize[pI] = nCandidates; - - nTotalCandidates += nCandidates; - } - - // Needed for reverseDistribute - label preDistributionToCandidateProcSize = toCandidateProc.size(); - - autoPtr<mapDistribute> map(buildMap(toCandidateProc)); - - map().distribute(testPoints); - - List<scalar> distanceSqrToCandidate(testPoints.size(), sqr(GREAT)); - - // Test candidate points on candidate processors - forAll(testPoints, tPI) - { - pointIndexHit info = bFTreePtr_().findNearest - ( - testPoints[tPI], - sqr(GREAT) - ); - - if (info.hit()) - { - distanceSqrToCandidate[tPI] = magSqr - ( - testPoints[tPI] - info.hitPoint() - ); - } - } - - map().reverseDistribute - ( - preDistributionToCandidateProcSize, - distanceSqrToCandidate - ); - - labelList ptNearestProc(pts.size(), -1); - - forAll(pts, pI) - { - // Extract the sub list of results for this point - - SubList<scalar> ptNearestProcResults - ( - distanceSqrToCandidate, - ptBlockSize[pI], - ptBlockStart[pI] - ); - - scalar nearestProcDistSqr = GREAT; - - forAll(ptNearestProcResults, pPRI) - { - if (ptNearestProcResults[pPRI] < nearestProcDistSqr) - { - nearestProcDistSqr = ptNearestProcResults[pPRI]; - - ptNearestProc[pI] = toCandidateProc[ptBlockStart[pI] + pPRI]; - } - } - - if (debug) - { - Pout<< pts[pI] << " nearestProcDistSqr " << nearestProcDistSqr - << " ptNearestProc[pI] " << ptNearestProc[pI] << endl; - } - - if (ptNearestProc[pI] < 0) - { - FatalErrorIn - ( - "Foam::labelList" - "Foam::backgroundMeshDecomposition::processorNearestPosition" - "(" - "const List<point>& pts" - ") const" - ) - << "The position " << pts[pI] - << " did not find a nearest point on the background mesh." - << exit(FatalError); - } - } - - return ptNearestProc; -} - - - -Foam::List<Foam::List<Foam::pointIndexHit> > -Foam::backgroundMeshDecomposition::intersectsProcessors -( - const List<point>& starts, - const List<point>& ends, - bool includeOwnProcessor -) const -{ - DynamicList<label> toCandidateProc; - DynamicList<point> testStarts; - DynamicList<point> testEnds; - labelList segmentBlockStart(starts.size(), -1); - labelList segmentBlockSize(starts.size(), -1); - - label nTotalCandidates = 0; - - forAll(starts, sI) - { - const point& s = starts[sI]; - const point& e = ends[sI]; - - // Dummy point for treeBoundBox::intersects - point p(vector::zero); - - label nCandidates = 0; - - forAll(allBackgroundMeshBounds_, procI) - { - // It is assumed that the sphere in question overlaps the source - // processor, so don't test it, unless includeOwnProcessor is true - if - ( - (includeOwnProcessor || procI != Pstream::myProcNo()) - && allBackgroundMeshBounds_[procI].intersects(s, e, p) - ) - { - toCandidateProc.append(procI); - testStarts.append(s); - testEnds.append(e); - - nCandidates++; - } - } - - segmentBlockStart[sI] = nTotalCandidates; - segmentBlockSize[sI] = nCandidates; - - nTotalCandidates += nCandidates; - } - - // Needed for reverseDistribute - label preDistributionToCandidateProcSize = toCandidateProc.size(); - - autoPtr<mapDistribute> map(buildMap(toCandidateProc)); - - map().distribute(testStarts); - map().distribute(testEnds); - - List<pointIndexHit> segmentIntersectsCandidate(testStarts.size()); - - // Test candidate segments on candidate processors - forAll(testStarts, sI) - { - const point& s = testStarts[sI]; - const point& e = testEnds[sI]; - - // If the sphere finds some elements of the patch, then it overlaps - segmentIntersectsCandidate[sI] = bFTreePtr_().findLine(s, e); - } - - map().reverseDistribute - ( - preDistributionToCandidateProcSize, - segmentIntersectsCandidate - ); - - List<List<pointIndexHit> > segmentHitProcs(starts.size()); - - // Working storage for assessing processors - DynamicList<pointIndexHit> tmpProcHits; - - forAll(starts, sI) - { - tmpProcHits.clear(); - - // Extract the sub list of results for this point - - SubList<pointIndexHit> segmentProcResults - ( - segmentIntersectsCandidate, - segmentBlockSize[sI], - segmentBlockStart[sI] - ); - - forAll(segmentProcResults, sPRI) - { - if (segmentProcResults[sPRI].hit()) - { - tmpProcHits.append(segmentProcResults[sPRI]); - - tmpProcHits.last().setIndex - ( - toCandidateProc[segmentBlockStart[sI] + sPRI] - ); - } - } - - segmentHitProcs[sI] = tmpProcHits; - } - - return segmentHitProcs; -} - - -bool Foam::backgroundMeshDecomposition::overlapsOtherProcessors -( - const point& centre, - const scalar& radiusSqr -) const -{ - forAll(allBackgroundMeshBounds_, procI) - { - if (bFTreePtr_().findNearest(centre, radiusSqr).hit()) - { - return true; - } - } - - return false; -} - - -Foam::labelList Foam::backgroundMeshDecomposition::overlapProcessors -( - const point& centre, - const scalar radiusSqr -) const -{ - DynamicList<label> toProc(Pstream::nProcs()); - - forAll(allBackgroundMeshBounds_, procI) - { - // Test against the bounding box of the processor - if - ( - procI != Pstream::myProcNo() - && allBackgroundMeshBounds_[procI].overlaps(centre, radiusSqr) - ) - { - // Expensive test -// if (bFTreePtr_().findNearest(centre, radiusSqr).hit()) - { - toProc.append(procI); - } - } - } - - return toProc; -} - - -//Foam::labelListList Foam::backgroundMeshDecomposition::overlapsProcessors -//( -// const List<point>& centres, -// const List<scalar>& radiusSqrs, -// const Delaunay& T, -// bool includeOwnProcessor -//) const -//{ -// DynamicList<label> toCandidateProc; -// DynamicList<point> testCentres; -// DynamicList<scalar> testRadiusSqrs; -// labelList sphereBlockStart(centres.size(), -1); -// labelList sphereBlockSize(centres.size(), -1); -// -// label nTotalCandidates = 0; -// -// forAll(centres, sI) -// { -// const point& c = centres[sI]; -// scalar rSqr = radiusSqrs[sI]; -// -// label nCandidates = 0; -// -// forAll(allBackgroundMeshBounds_, procI) -// { -// // It is assumed that the sphere in question overlaps the source -// // processor, so don't test it, unless includeOwnProcessor is true -// if -// ( -// (includeOwnProcessor || procI != Pstream::myProcNo()) -// && allBackgroundMeshBounds_[procI].overlaps(c, rSqr) -// ) -// { -// if (bFTreePtr_().findNearest(c, rSqr).hit()) -// { -// toCandidateProc.append(procI); -// testCentres.append(c); -// testRadiusSqrs.append(rSqr); -// -// nCandidates++; -// } -// } -// } -// -// sphereBlockStart[sI] = nTotalCandidates; -// sphereBlockSize[sI] = nCandidates; -// -// nTotalCandidates += nCandidates; -// } -// -// // Needed for reverseDistribute -//// label preDistributionToCandidateProcSize = toCandidateProc.size(); -//// -//// autoPtr<mapDistribute> map(buildMap(toCandidateProc)); -//// -//// map().distribute(testCentres); -//// map().distribute(testRadiusSqrs); -// -// // @todo This is faster, but results in more vertices being referred -// boolList sphereOverlapsCandidate(testCentres.size(), true); -//// boolList sphereOverlapsCandidate(testCentres.size(), false); -//// -//// // Test candidate spheres on candidate processors -//// forAll(testCentres, sI) -//// { -//// const point& c = testCentres[sI]; -//// const scalar rSqr = testRadiusSqrs[sI]; -//// -//// const bool flagOverlap = bFTreePtr_().findNearest(c, rSqr).hit(); -//// -//// if (flagOverlap) -//// { -//// //if (vertexOctree.findAnyOverlap(c, rSqr)) -////// if (vertexOctree.findNearest(c, rSqr*1.001).hit()) -////// { -////// sphereOverlapsCandidate[sI] = true; -////// } -//// -////// Vertex_handle nearestVertex = T.nearest_vertex -////// ( -////// toPoint<Point>(c) -////// ); -////// -////// const scalar distSqr = magSqr -////// ( -////// topoint(nearestVertex->point()) - c -////// ); -////// -////// if (distSqr <= rSqr) -////// { -////// // If the sphere finds a nearest element of the patch, -////// // then it overlaps -//// sphereOverlapsCandidate[sI] = true; -////// } -//// } -//// } -// -//// map().reverseDistribute -//// ( -//// preDistributionToCandidateProcSize, -//// sphereOverlapsCandidate -//// ); -// -// labelListList sphereProcs(centres.size()); -// -// // Working storage for assessing processors -// DynamicList<label> tmpProcs; -// -// forAll(centres, sI) -// { -// tmpProcs.clear(); -// -// // Extract the sub list of results for this point -// -// SubList<bool> sphereProcResults -// ( -// sphereOverlapsCandidate, -// sphereBlockSize[sI], -// sphereBlockStart[sI] -// ); -// -// forAll(sphereProcResults, sPRI) -// { -// if (sphereProcResults[sPRI]) -// { -// tmpProcs.append(toCandidateProc[sphereBlockStart[sI] + sPRI]); -// } -// } -// -// sphereProcs[sI] = tmpProcs; -// } -// -// return sphereProcs; -//} - - -//Foam::labelListList Foam::backgroundMeshDecomposition::overlapProcessors -//( -// const point& cc, -// const scalar rSqr -//) const -//{ -// DynamicList<label> toCandidateProc; -// label sphereBlockStart(-1); -// label sphereBlockSize(-1); -// -// label nCandidates = 0; -// -// forAll(allBackgroundMeshBounds_, procI) -// { -// // It is assumed that the sphere in question overlaps the source -// // processor, so don't test it, unless includeOwnProcessor is true -// if -// ( -// (includeOwnProcessor || procI != Pstream::myProcNo()) -// && allBackgroundMeshBounds_[procI].overlaps(cc, rSqr) -// ) -// { -// toCandidateProc.append(procI); -// -// nCandidates++; -// } -// } -// -// sphereBlockSize = nCandidates; -// nTotalCandidates += nCandidates; -// -// // Needed for reverseDistribute -// label preDistributionToCandidateProcSize = toCandidateProc.size(); -// -// autoPtr<mapDistribute> map(buildMap(toCandidateProc)); -// -// map().distribute(testCentres); -// map().distribute(testRadiusSqrs); -// -// // @todo This is faster, but results in more vertices being referred -//// boolList sphereOverlapsCandidate(testCentres.size(), true); -// boolList sphereOverlapsCandidate(testCentres.size(), false); -// -// // Test candidate spheres on candidate processors -// forAll(testCentres, sI) -// { -// const point& c = testCentres[sI]; -// const scalar rSqr = testRadiusSqrs[sI]; -// -// const bool flagOverlap = bFTreePtr_().findNearest(c, rSqr).hit(); -// -// if (flagOverlap) -// { -// //if (vertexOctree.findAnyOverlap(c, rSqr)) -//// if (vertexOctree.findNearest(c, rSqr*1.001).hit()) -//// { -//// sphereOverlapsCandidate[sI] = true; -//// } -// -//// Vertex_handle nearestVertex = T.nearest_vertex -//// ( -//// toPoint<Point>(c) -//// ); -//// -//// const scalar distSqr = magSqr -//// ( -//// topoint(nearestVertex->point()) - c -//// ); -//// -//// if (distSqr <= rSqr) -//// { -//// // If the sphere finds a nearest element of the patch, then -//// // it overlaps -// sphereOverlapsCandidate[sI] = true; -//// } -// } -// } -// -// map().reverseDistribute -// ( -// preDistributionToCandidateProcSize, -// sphereOverlapsCandidate -// ); -// -// labelListList sphereProcs(centres.size()); -// -// // Working storage for assessing processors -// DynamicList<label> tmpProcs; -// -// forAll(centres, sI) -// { -// tmpProcs.clear(); -// -// // Extract the sub list of results for this point -// -// SubList<bool> sphereProcResults -// ( -// sphereOverlapsCandidate, -// sphereBlockSize[sI], -// sphereBlockStart[sI] -// ); -// -// forAll(sphereProcResults, sPRI) -// { -// if (sphereProcResults[sPRI]) -// { -// tmpProcs.append(toCandidateProc[sphereBlockStart[sI] + sPRI]); -// } -// } -// -// sphereProcs[sI] = tmpProcs; -// } -// -// return sphereProcs; -//} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H deleted file mode 100644 index 73aa2fee74a86d32fb81360eec0b602b2aa7ed58..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H +++ /dev/null @@ -1,340 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::backgroundMeshDecomposition - -Description - Store a background polyMesh to use for the decomposition of space and - queries for parallel conformalVoronoiMesh. - - The requirements are: - - + To have a decomposition of space which can quickly interrogate an - arbitrary location from any processor to reliably and unambiguously - determine which processor owns the space that the point is in, i.e. as - the vertices move, or need inserted as part of the surface conformation, - send them to the correct proc. - - + To be able to be dynamically built, refined and redistributed to other - procs the partitioning as the meshing progresses to balance the load. - - + To be able to query whether a sphere (the circumsphere of a Delaunay tet) - overlaps any part of the space defined by the structure, and whether a - ray (Voronoi edge) penetrates any part of the space defined by the - structure, this is what determines if points get referred to a processor. - -SourceFiles - backgroundMeshDecompositionI.H - backgroundMeshDecomposition.C - -\*---------------------------------------------------------------------------*/ - -#ifndef backgroundMeshDecomposition_H -#define backgroundMeshDecomposition_H - -#include "fvMesh.H" -#include "hexRef8.H" -#include "cellSet.H" -#include "meshTools.H" -#include "polyTopoChange.H" -#include "mapPolyMesh.H" -#include "decompositionMethod.H" -#include "fvMeshDistribute.H" -#include "removeCells.H" -#include "mapDistributePolyMesh.H" -#include "globalIndex.H" -#include "treeBoundBox.H" -#include "primitivePatch.H" -#include "face.H" -#include "labelList.H" -#include "pointField.H" -#include "indexedOctree.H" -#include "treeDataPrimitivePatch.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -typedef PrimitivePatch<face, List, const pointField, point> bPatch; -typedef treeDataPrimitivePatch<bPatch> treeDataBPatch; - -class Time; -class Random; -class conformationSurfaces; - -/*---------------------------------------------------------------------------*\ - Class backgroundMeshDecomposition Declaration -\*---------------------------------------------------------------------------*/ - -class backgroundMeshDecomposition -{ - // Private data - - //- Method details dictionary - //dictionary coeffsDict_; - - //- Reference to runtime - const Time& runTime_; - - //- Reference to surface - const conformationSurfaces& geometryToConformTo_; - - //- Random number generator - Random& rndGen_; - - //- Mesh stored on for this processor, specifiying the domain that it - // is responsible for. - fvMesh mesh_; - - //- Refinement object - hexRef8 meshCutter_; - - //- Patch containing an independent representation of the surface of the - // mesh of this processor - autoPtr<bPatch> boundaryFacesPtr_; - - //- Search tree for the boundaryFaces_ patch - autoPtr<indexedOctree<treeDataBPatch> > bFTreePtr_; - - //- The bounds of all background meshes on all processors - treeBoundBoxList allBackgroundMeshBounds_; - - //- The overall bounds of all of the background meshes, used to test if - // a point that is not found on any processor is in the domain at all - treeBoundBox globalBackgroundBounds_; - - //- Decomposition dictionary - IOdictionary decomposeDict_; - - //- Decomposition method - autoPtr<decompositionMethod> decomposerPtr_; - - //- merge distance required by fvMeshDistribute - scalar mergeDist_; - - //- Scale of a cell span vs cell size used to decide to refine a cell - scalar spanScale_; - - //- Smallest minimum cell size allowed, i.e. to avoid high initial - // refinement of areas of small size - scalar minCellSizeLimit_; - - //- Minimum normal level of refinement - label minLevels_; - - //- How fine should the initial sample of the volume a box be to - // investigate the local cell size - label volRes_; - - //- Allowed factor above the average cell weight before a background - // cell needs to be split - scalar maxCellWeightCoeff_; - - - // Private Member Functions - - void initialRefinement(); - - //- Print details of the decomposed mesh - void printMeshData(const polyMesh& mesh) const; - - //- Estimate the number of vertices that will be in this cell, returns - // true if the cell is to be split because of the density ratio inside - // it - bool refineCell - ( - label cellI, - label volType, - scalar& weightEstimate - ) const; - - //- Select cells for refinement at the surface of the geometry to be - // meshed - labelList selectRefinementCells - ( - labelList& volumeStatus, - volScalarField& cellWeights - ) const; - - //- Build the surface patch and search tree - void buildPatchAndTree(); - - //- Disallow default bitwise copy construct - backgroundMeshDecomposition(const backgroundMeshDecomposition&); - - //- Disallow default bitwise assignment - void operator=(const backgroundMeshDecomposition&); - - -public: - - //- Runtime type information - ClassName("backgroundMeshDecomposition"); - - - // Constructors - - //- Construct from components in cvMesh operation - backgroundMeshDecomposition - ( - const Time& runTime, - Random& rndGen, - const conformationSurfaces& geometryToConformTo, - const dictionary& coeffsDict - ); - - - //- Destructor - ~backgroundMeshDecomposition(); - - - // Member Functions - - //- Build a mapDistribute for the supplied destination processor data - static autoPtr<mapDistribute> buildMap(const List<label>& toProc); - - //- Redistribute the background mesh based on a supplied weight field, - // returning a map to use to redistribute vertices. - autoPtr<mapDistributePolyMesh> distribute - ( - volScalarField& cellWeights - ); - - //- Distribute supplied the points to the appropriate processor - autoPtr<mapDistribute> distributePoints(List<point>& points) const; - - //- Is the given position inside the domain of this decomposition - bool positionOnThisProcessor(const point& pt) const; - - //- Are the given positions inside the domain of this decomposition - boolList positionOnThisProcessor(const List<point>& pts) const; - - //- Does the given box overlap the faces of the boundary of this - // processor - bool overlapsThisProcessor(const treeBoundBox& box) const; - - //- Does the given sphere overlap the faces of the boundary of this - // processor - bool overlapsThisProcessor - ( - const point& centre, - const scalar radiusSqr - ) const; - - //- Find nearest intersection of line between start and end, (exposing - // underlying indexedOctree) - pointIndexHit findLine - ( - const point& start, - const point& end - ) const; - - //- Find any intersection of line between start and end, (exposing - // underlying indexedOctree) - pointIndexHit findLineAny - ( - const point& start, - const point& end - ) const; - - //- What processor is the given position on? - labelList processorPosition(const List<point>& pts) const; - - //- What is the nearest processor to the given position? - labelList processorNearestPosition(const List<point>& pts) const; - - //- Which processors are intersected by the line segment, returns all - // processors whose boundary patch is intersected by the sphere. By - // default this does not return the processor that the query is - // launched from, it is assumed that the point is on that processor. - // The index data member of the pointIndexHit is replaced with the - // processor index. - List<List<pointIndexHit> > intersectsProcessors - ( - const List<point>& starts, - const List<point>& ends, - bool includeOwnProcessor = false - ) const; - - bool overlapsOtherProcessors - ( - const point& centre, - const scalar& radiusSqr - ) const; - - labelList overlapProcessors - ( - const point& centre, - const scalar radiusSqr - ) const; - -// //- Which processors overlap the given sphere, returns all processors -// // whose boundary patch is touched by the sphere or whom the sphere -// // is inside. By default this does not return the processor that the -// // query is launched from, it is assumed that the point is on that -// // processor. -// labelListList overlapsProcessors -// ( -// const List<point>& centres, -// const List<scalar>& radiusSqrs, -// const Delaunay& T, -// bool includeOwnProcessor -// ) const; - - // Access - - //- Return access to the underlying mesh - inline const fvMesh& mesh() const; - - //- Return access to the underlying tree - inline const indexedOctree<treeDataBPatch>& tree() const; - - //- Return the boundBox of this processor - inline const treeBoundBox& procBounds() const; - - //- Return the cell level of the underlying mesh - inline const labelList& cellLevel() const; - - //- Return the point level of the underlying mesh - inline const labelList& pointLevel() const; - - //- Return the current decomposition method - inline const decompositionMethod& decomposer() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "backgroundMeshDecompositionI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecompositionI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecompositionI.H deleted file mode 100644 index 1f8b7b0a327a1bd7d74fbf5c1ce49719cd4e9734..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecompositionI.H +++ /dev/null @@ -1,67 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -const Foam::fvMesh& Foam::backgroundMeshDecomposition::mesh() const -{ - return mesh_; -} - - -const Foam::indexedOctree<Foam::treeDataBPatch>& -Foam::backgroundMeshDecomposition::tree() const -{ - return bFTreePtr_(); -} - - -const Foam::treeBoundBox& -Foam::backgroundMeshDecomposition::procBounds() const -{ - return allBackgroundMeshBounds_[Pstream::myProcNo()]; -} - - -const Foam::labelList& Foam::backgroundMeshDecomposition::cellLevel() const -{ - return meshCutter_.cellLevel(); -} - - -const Foam::labelList& Foam::backgroundMeshDecomposition::pointLevel() const -{ - return meshCutter_.pointLevel(); -} - - -const Foam::decompositionMethod& -Foam::backgroundMeshDecomposition::decomposer() const -{ - return decomposerPtr_(); -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellAspectRatioControl/cellAspectRatioControl.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellAspectRatioControl/cellAspectRatioControl.C deleted file mode 100644 index dfba259e674b5dbd6b5cca8bb4e32ab0ff59a3b7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellAspectRatioControl/cellAspectRatioControl.C +++ /dev/null @@ -1,110 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "cellAspectRatioControl.H" -#include "vectorTools.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cellAspectRatioControl::cellAspectRatioControl -( - const dictionary& motionDict -) -: - aspectRatioDict_(motionDict.subOrEmptyDict("cellAspectRatioControl")), - aspectRatio_(aspectRatioDict_.lookupOrDefault<scalar>("aspectRatio", 1.0)), - aspectRatioDirection_ - ( - aspectRatioDict_.lookupOrDefault<vector> - ( - "aspectRatioDirection", - vector(0, 0, 0) - ) - ) -{ - Info<< nl << " Cell Aspect Ratio Control" << nl - << " Ratio : " << aspectRatio_ << nl - << " Direction : " << aspectRatioDirection_ << nl << endl; -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cellAspectRatioControl::~cellAspectRatioControl() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -void Foam::cellAspectRatioControl::updateCellSizeAndFaceArea -( - vector& alignmentDir, - scalar& targetFaceArea, - scalar& targetCellSize -) const -{ - const scalar cosAngle = mag - ( - vectorTools::cosPhi(alignmentDir, aspectRatioDirection_) - ); - - // Change target face area based on aspect ratio - targetFaceArea - += targetFaceArea - *(aspectRatio_ - 1.0) - *(1.0 - cosAngle); - - // Change target cell size based on aspect ratio - targetCellSize - += targetCellSize - *(aspectRatio_ - 1.0) - *cosAngle; - - alignmentDir *= 0.5*targetCellSize; -} - - -void Foam::cellAspectRatioControl::updateDeltaVector -( - const vector& alignmentDir, - const scalar targetCellSize, - const scalar rABMag, - vector& delta -) const -{ - const scalar cosAngle = mag - ( - vectorTools::cosPhi(alignmentDir, aspectRatioDirection_) - ); - - delta += 0.5 - *delta - *cosAngle - *(targetCellSize/rABMag) - *(aspectRatio_ - 1.0); -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellAspectRatioControl/cellAspectRatioControl.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellAspectRatioControl/cellAspectRatioControl.H deleted file mode 100644 index ac47311940a7c3672b9c2e378946d1c5b8b658e1..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellAspectRatioControl/cellAspectRatioControl.H +++ /dev/null @@ -1,115 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cellAspectRatioControl - -Description - -SourceFiles - cellAspectRatioControl.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cellAspectRatioControl_H -#define cellAspectRatioControl_H - -#include "dictionary.H" -#include "vector.H" -#include "scalar.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - - -/*---------------------------------------------------------------------------*\ - Class cellAspectRatioControl Declaration -\*---------------------------------------------------------------------------*/ - -class cellAspectRatioControl -{ - // Private data - - const dictionary aspectRatioDict_; - - const scalar aspectRatio_; - - const vector aspectRatioDirection_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - cellAspectRatioControl(const cellAspectRatioControl&); - - //- Disallow default bitwise assignment - void operator=(const cellAspectRatioControl&); - - -public: - - // Constructors - - //- Construct from dictionary - cellAspectRatioControl - ( - const dictionary& motionDict - ); - - - //- Destructor - virtual ~cellAspectRatioControl(); - - - // Member Functions - - // Query - - void updateCellSizeAndFaceArea - ( - vector& alignmentDir, - scalar& targetFaceArea, - scalar& targetCellSize - ) const; - - void updateDeltaVector - ( - const vector& alignmentDir, - const scalar targetCellSize, - const scalar rABMag, - vector& delta - ) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControl.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControl.C deleted file mode 100644 index 932b264f94345aa6aef7b9afb3f705e6060e9994..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControl.C +++ /dev/null @@ -1,930 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "cellShapeControl.H" -#include "pointField.H" -#include "scalarField.H" -#include "triadField.H" -#include "cellSizeAndAlignmentControl.H" -#include "searchableSurfaceControl.H" -#include "cellSizeFunction.H" - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -template <class Triangulation, class Type> -Foam::tmp<Foam::Field<Type> > Foam::cellShapeControl::filterFarPoints -( - const Triangulation& mesh, - const Field<Type>& field -) -{ - tmp<Field<Type> > tNewField(new Field<Type>(field.size())); - Field<Type>& newField = tNewField(); - - label added = 0; - label count = 0; - - for - ( - typename Triangulation::Finite_vertices_iterator vit = - mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (vit->real()) - { - newField[added++] = field[count]; - } - - count++; - } - - newField.resize(added); - - return tNewField; -} - - -template <class Triangulation> -Foam::autoPtr<Foam::mapDistribute> Foam::cellShapeControl::buildReferredMap -( - const Triangulation& mesh, - labelList& indices -) -{ - globalIndex globalIndexing(mesh.vertexCount()); - - DynamicList<label> dynIndices(mesh.vertexCount()/10); - - for - ( - typename Triangulation::Finite_vertices_iterator vit = - mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (vit->referred()) - { - dynIndices.append - ( - globalIndexing.toGlobal(vit->procIndex(), vit->index()) - ); - } - } - - indices.transfer(dynIndices); - - List<Map<label> > compactMap; - return autoPtr<mapDistribute> - ( - new mapDistribute - ( - globalIndexing, - indices, - compactMap - ) - ); -} - - -template <class Triangulation> -Foam::autoPtr<Foam::mapDistribute> Foam::cellShapeControl::buildMap -( - const Triangulation& mesh, - labelListList& pointPoints -) -{ - pointPoints.setSize(mesh.vertexCount()); - - globalIndex globalIndexing(mesh.vertexCount()); - - for - ( - typename Triangulation::Finite_vertices_iterator vit = - mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (!vit->real()) - { - continue; - } - - std::list<typename Triangulation::Vertex_handle> adjVerts; - mesh.finite_adjacent_vertices(vit, std::back_inserter(adjVerts)); - - DynamicList<label> indices(adjVerts.size()); - - for - ( - typename std::list<typename Triangulation::Vertex_handle>:: - const_iterator adjVertI = adjVerts.begin(); - adjVertI != adjVerts.end(); - ++adjVertI - ) - { - typename Triangulation::Vertex_handle vh = *adjVertI; - - if (!vh->farPoint()) - { - indices.append - ( - globalIndexing.toGlobal(vh->procIndex(), vh->index()) - ); - } - } - - pointPoints[vit->index()].transfer(indices); - } - - List<Map<label> > compactMap; - return autoPtr<mapDistribute> - ( - new mapDistribute - ( - globalIndexing, - pointPoints, - compactMap - ) - ); -} - - -template <class Triangulation> -Foam::tmp<Foam::triadField> Foam::cellShapeControl::buildAlignmentField -( - const Triangulation& mesh -) -{ - tmp<triadField> tAlignments - ( - new triadField(mesh.vertexCount(), triad::unset) - ); - triadField& alignments = tAlignments(); - - for - ( - typename Triangulation::Finite_vertices_iterator vit = - mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (!vit->real()) - { - continue; - } - - alignments[vit->index()] = vit->alignment(); - } - - return tAlignments; -} - - -template <class Triangulation> -Foam::tmp<Foam::pointField> Foam::cellShapeControl::buildPointField -( - const Triangulation& mesh -) -{ - tmp<pointField> tPoints - ( - new pointField(mesh.vertexCount(), point(GREAT, GREAT, GREAT)) - ); - pointField& points = tPoints(); - - for - ( - typename Triangulation::Finite_vertices_iterator vit = - mesh.finite_vertices_begin(); - vit != mesh.finite_vertices_end(); - ++vit - ) - { - if (!vit->real()) - { - continue; - } - - points[vit->index()] = topoint(vit->point()); - } - - return tPoints; -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cellShapeControl::cellShapeControl -( - const Time& runTime, - const dictionary& motionDict, - const searchableSurfaces& allGeometry, - const conformationSurfaces& geometryToConformTo -) -: - dictionary(motionDict), - runTime_(runTime), - allGeometry_(allGeometry), - geometryToConformTo_(geometryToConformTo), - defaultCellSize_(readScalar(lookup("defaultCellSize"))), - minimumCellSize_(readScalar(lookup("minimumCellSize"))), - shapeControlMesh_(runTime), - aspectRatio_(motionDict), - sizeAndAlignment_ - ( - runTime, - motionDict.subDict("shapeControlFunctions"), - geometryToConformTo, - defaultCellSize_ - ) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cellShapeControl::~cellShapeControl() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -Foam::scalarField Foam::cellShapeControl::cellSize -( - const pointField& pts -) const -{ - scalarField cellSizes(pts.size()); - - forAll(pts, i) - { - cellSizes[i] = cellSize(pts[i]); - } - - return cellSizes; -} - - -Foam::scalar Foam::cellShapeControl::cellSize(const point& pt) const -{ - scalarList bary; - cellShapeControlMesh::Cell_handle ch; - - shapeControlMesh_.barycentricCoords(pt, bary, ch); - - scalar size = 0; - - label nFarPoints = 0; - for (label pI = 0; pI < 4; ++pI) - { - if (ch->vertex(pI)->farPoint()) - { - nFarPoints++; - } - } - - if (shapeControlMesh_.is_infinite(ch)) - { -// if (nFarPoints != 0) -// { -// for (label pI = 0; pI < 4; ++pI) -// { -// if (!ch->vertex(pI)->farPoint()) -// { -// size = ch->vertex(pI)->targetCellSize(); -// return size; -// } -// } -// } - - // Look up nearest point - cellShapeControlMesh::Vertex_handle nearV = - shapeControlMesh_.nearest_vertex - ( - toPoint<cellShapeControlMesh::Point>(pt) - ); - - size = nearV->targetCellSize(); - } - else - { - if (nFarPoints != 0) - { - for (label pI = 0; pI < 4; ++pI) - { - if (!ch->vertex(pI)->farPoint()) - { - size = ch->vertex(pI)->targetCellSize(); - return size; - } - } - } - else - { - forAll(bary, pI) - { - size += bary[pI]*ch->vertex(pI)->targetCellSize(); - } - } - } - - return size; -} - - -//- Return the cell alignment at the given location -Foam::tensor Foam::cellShapeControl::cellAlignment(const point& pt) const -{ - scalarList bary; - cellShapeControlMesh::Cell_handle ch; - - shapeControlMesh_.barycentricCoords(pt, bary, ch); - - tensor alignment = tensor::zero; - - label nFarPoints = 0; - for (label pI = 0; pI < 4; ++pI) - { - if (ch->vertex(pI)->farPoint()) - { - nFarPoints++; - } - } - - if (shapeControlMesh_.is_infinite(ch) || nFarPoints == 4) - { - Pout<< "At Infinite vertex" << endl; - - if (nFarPoints != 0) - { - for (label pI = 0; pI < 4; ++pI) - { - if (!ch->vertex(pI)->farPoint()) - { - alignment = ch->vertex(pI)->alignment(); - return alignment; - } - } - } - -// cellShapeControlMesh::Vertex_handle nearV = -// shapeControlMesh_.nearest_vertex -// ( -// toPoint<cellShapeControlMesh::Point>(pt) -// ); -// -// alignment = nearV->alignment(); - } - else - { -// forAll(bary, pI) -// { -// alignment += bary[pI]*ch->vertex(pI)->alignment(); -// } - - cellShapeControlMesh::Vertex_handle nearV = - shapeControlMesh_.nearest_vertex_in_cell - ( - toPoint<cellShapeControlMesh::Point>(pt), - ch - ); - - alignment = nearV->alignment(); - } - - return alignment; -} - - -void Foam::cellShapeControl::cellSizeAndAlignment -( - const point& pt, - scalar& size, - tensor& alignment -) const -{ - scalarList bary; - cellShapeControlMesh::Cell_handle ch; - - shapeControlMesh_.barycentricCoords(pt, bary, ch); - - alignment = tensor::zero; - size = 0; - - label nFarPoints = 0; - for (label pI = 0; pI < 4; ++pI) - { - if (ch->vertex(pI)->farPoint()) - { - nFarPoints++; - } - } - - if (shapeControlMesh_.is_infinite(ch)) - { - if (nFarPoints != 0) - { - for (label pI = 0; pI < 4; ++pI) - { - if (!ch->vertex(pI)->farPoint()) - { - size = ch->vertex(pI)->targetCellSize(); - alignment = ch->vertex(pI)->alignment(); - return; - } - } - } - -// cellShapeControlMesh::Vertex_handle nearV = -// shapeControlMesh_.nearest_vertex -// ( -// toPoint<cellShapeControlMesh::Point>(pt) -// ); -// -// size = nearV->targetCellSize(); -// alignment = nearV->alignment(); - } - else - { - if (nFarPoints != 0) - { - for (label pI = 0; pI < 4; ++pI) - { - if (!ch->vertex(pI)->farPoint()) - { - size = ch->vertex(pI)->targetCellSize(); - alignment = ch->vertex(pI)->alignment(); - return; - } - } - } - else - { -// triad tri; - - forAll(bary, pI) - { - size += bary[pI]*ch->vertex(pI)->targetCellSize(); - -// triad triTmp2 = ch->vertex(pI)->alignment(); -// tri += triTmp2*bary[pI]; - } - -// tri.normalize(); -// tri.orthogonalize(); -// tri = tri.sortxyz(); -// -// alignment = tri; - - cellShapeControlMesh::Vertex_handle nearV = - shapeControlMesh_.nearest_vertex - ( - toPoint<cellShapeControlMesh::Point>(pt) - ); - - alignment = nearV->alignment(); - } - } -} - - -void Foam::cellShapeControl::initialMeshPopulation -( - const autoPtr<backgroundMeshDecomposition>& decomposition -) -{ - // Need to pass in the background mesh decomposition so that can test if - // a point to insert is on the processor. - if (Pstream::parRun()) - { - shapeControlMesh_.insertBoundingPoints(decomposition().procBounds()); - } - else - { - shapeControlMesh_.insertBoundingPoints(allGeometry_.bounds()); - } - - const PtrList<cellSizeAndAlignmentControl>& controlFunctions = - sizeAndAlignment_.controlFunctions(); - - forAll(controlFunctions, fI) - { - const cellSizeAndAlignmentControl& controlFunction = - controlFunctions[fI]; - - Info<< "Inserting points from " << controlFunction.name() - << " (" << controlFunction.type() << ")" << endl; - - pointField pts; - scalarField sizes; - triadField alignments; - - controlFunction.initialVertices(pts, sizes, alignments); - - List<Vb> vertices(pts.size()); - - // Clip the minimum size - forAll(vertices, vI) - { - vertices[vI] = Vb(pts[vI], Vb::vtInternal); - vertices[vI].targetCellSize() = max(sizes[vI], minimumCellSize_); - vertices[vI].alignment() = alignments[vI]; - } - - pts.clear(); - sizes.clear(); - alignments.clear(); - - label nRejected = 0; - - PackedBoolList keepVertex(vertices.size(), true); - - if (Pstream::parRun()) - { - forAll(vertices, vI) - { - const bool onProc = decomposition().positionOnThisProcessor - ( - topoint(vertices[vI].point()) - ); - - if (!onProc) - { - keepVertex[vI] = false; - } - } - } - - inplaceSubset(keepVertex, vertices); - - const label preInsertedSize = shapeControlMesh_.number_of_vertices(); - - shapeControlMesh_.rangeInsertWithInfo(vertices.begin(), vertices.end()); - - Info<< " Inserted " - << returnReduce - ( - shapeControlMesh_.number_of_vertices() - - preInsertedSize, sumOp<label>() - ) - << "/" << vertices.size() - << endl; - } -} - - -Foam::label Foam::cellShapeControl::refineMesh -( - const autoPtr<backgroundMeshDecomposition>& decomposition -) -{ - const pointField cellCentres(shapeControlMesh_.cellCentres()); - - Info<< " Created cell centres" << endl; - - const PtrList<cellSizeAndAlignmentControl>& controlFunctions = - sizeAndAlignment_.controlFunctions(); - - DynamicList<Vb> verts(shapeControlMesh_.number_of_vertices()); - - forAll(cellCentres, cellI) - { - const Foam::point& pt = cellCentres[cellI]; - - if (!geometryToConformTo_.inside(pt)) - { - continue; - } - - scalarList bary; - cellShapeControlMesh::Cell_handle ch; - - shapeControlMesh_.barycentricCoords(pt, bary, ch); - - if (shapeControlMesh_.is_infinite(ch)) - { - continue; - } - - scalar interpolatedSize = 0; - forAll(bary, pI) - { - interpolatedSize += bary[pI]*ch->vertex(pI)->targetCellSize(); - } - - label lastPriority = labelMax; - scalar lastCellSize = GREAT; - forAll(controlFunctions, fI) - { - const cellSizeAndAlignmentControl& controlFunction = - controlFunctions[fI]; - - if (controlFunction.priority() > lastPriority) - { - continue; - } - - if (isA<searchableSurfaceControl>(controlFunction)) - { - const cellSizeFunction& sizeFunction = - dynamicCast<const searchableSurfaceControl> - ( - controlFunction - ).sizeFunction(); - - scalar cellSize = 0; - if (sizeFunction.cellSize(pt, cellSize)) - { - if (controlFunction.priority() == lastPriority) - { - if (cellSize < lastCellSize) - { - lastCellSize = cellSize; - } - } - else - { - lastCellSize = cellSize; - } - - lastPriority = controlFunction.priority(); - } - } - } - - if - ( - lastCellSize < GREAT - //&& mag(interpolatedSize - lastCellSize)/lastCellSize > 0.2 - ) - { - if (Pstream::parRun()) - { - if (!decomposition().positionOnThisProcessor(pt)) - { - continue; - } - } - - verts.append - ( - Vb - ( - toPoint<cellShapeControlMesh::Point>(pt), - Vb::vtInternal - ) - ); - verts.last().targetCellSize() = lastCellSize; - verts.last().alignment() = triad::unset; - } - } - - shapeControlMesh_.insertPoints(verts); - - return verts.size(); -} - - -void Foam::cellShapeControl::smoothMesh() -{ - label maxSmoothingIterations = readLabel(lookup("maxSmoothingIterations")); - scalar minResidual = 0; - - labelListList pointPoints; - autoPtr<mapDistribute> meshDistributor = buildMap - ( - shapeControlMesh_, - pointPoints - ); - - triadField alignments(buildAlignmentField(shapeControlMesh_)); - pointField points(buildPointField(shapeControlMesh_)); - // Setup the sizes and alignments on each point - triadField fixedAlignments(shapeControlMesh_.vertexCount(), triad::unset); - - for - ( - CellSizeDelaunay::Finite_vertices_iterator vit = - shapeControlMesh_.finite_vertices_begin(); - vit != shapeControlMesh_.finite_vertices_end(); - ++vit - ) - { - if (vit->real()) - { - fixedAlignments[vit->index()] = vit->alignment(); - } - } - - Info<< nl << "Smoothing alignments" << endl; - - for (label iter = 0; iter < maxSmoothingIterations; iter++) - { - Info<< "Iteration " << iter; - - meshDistributor().distribute(points); - meshDistributor().distribute(alignments); - - scalar residual = 0; - - triadField triadAv(alignments.size(), triad::unset); - - forAll(pointPoints, pI) - { - const labelList& pPoints = pointPoints[pI]; - - if (pPoints.empty()) - { - continue; - } - - triad& newTriad = triadAv[pI]; - - forAll(pPoints, adjPointI) - { - const label adjPointIndex = pPoints[adjPointI]; - - scalar dist = mag(points[pI] - points[adjPointIndex]); - - triad tmpTriad = alignments[adjPointIndex]; - - for (direction dir = 0; dir < 3; dir++) - { - if (tmpTriad.set(dir)) - { - tmpTriad[dir] *= (1.0/dist); - } - } - - newTriad += tmpTriad; - } - - newTriad.normalize(); - newTriad.orthogonalize(); - newTriad = newTriad.sortxyz(); - - // Enforce the boundary conditions - const triad& fixedAlignment = fixedAlignments[pI]; - - label nFixed = 0; - - forAll(fixedAlignment, dirI) - { - if (fixedAlignment.set(dirI)) - { - nFixed++; - } - } - - if (nFixed == 1) - { - forAll(fixedAlignment, dirI) - { - if (fixedAlignment.set(dirI)) - { - newTriad.align(fixedAlignment[dirI]); - } - } - } - else if (nFixed == 2) - { - forAll(fixedAlignment, dirI) - { - if (fixedAlignment.set(dirI)) - { - newTriad[dirI] = fixedAlignment[dirI]; - } - else - { - newTriad[dirI] = triad::unset[dirI]; - } - } - - newTriad.orthogonalize(); - } - else if (nFixed == 3) - { - forAll(fixedAlignment, dirI) - { - if (fixedAlignment.set(dirI)) - { - newTriad[dirI] = fixedAlignment[dirI]; - } - } - } - - const triad& oldTriad = alignments[pI]; - - for (direction dir = 0; dir < 3; ++dir) - { - if - ( - newTriad.set(dir) - && oldTriad.set(dir) - //&& !fixedAlignment.set(dir) - ) - { - scalar dotProd = (oldTriad[dir] & newTriad[dir]); - scalar diff = mag(dotProd) - 1.0; - - residual += mag(diff); - } - } - -// if (iter == 198 || iter == 199) -// { -// Info<< "Triad" << nl -// << " Fixed (" << nFixed << ") = " << fixedAlignment -// << nl -// << " Old = " << oldTriad << nl -// << " Pre-Align= " << triadAv[pI] << nl -// << " New = " << newTriad << nl -// << " Residual = " << residual << endl; -// } - } - - forAll(alignments, pI) - { - alignments[pI] = triadAv[pI].sortxyz(); - } - - reduce(residual, sumOp<scalar>()); - - Info<< ", Residual = " << residual << endl; - - if (iter > 0 && residual <= minResidual) - { - break; - } - } - - meshDistributor().distribute(alignments); - - for - ( - CellSizeDelaunay::Finite_vertices_iterator vit = - shapeControlMesh_.finite_vertices_begin(); - vit != shapeControlMesh_.finite_vertices_end(); - ++vit - ) - { - if (vit->real()) - { - vit->alignment() = alignments[vit->index()]; - } - } - - labelList referredPoints; - autoPtr<mapDistribute> referredDistributor = buildReferredMap - ( - shapeControlMesh_, - referredPoints - ); - - alignments.setSize(shapeControlMesh_.vertexCount()); - referredDistributor().distribute(alignments); - - label referredI = 0; - for - ( - CellSizeDelaunay::Finite_vertices_iterator vit = - shapeControlMesh_.finite_vertices_begin(); - vit != shapeControlMesh_.finite_vertices_end(); - ++vit - ) - { - if (vit->referred()) - { - vit->alignment() = alignments[referredPoints[referredI++]]; - } - } -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControl.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControl.H deleted file mode 100644 index 040ff6f2e09ee51571a0f525ec6507816a9bf1d7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControl.H +++ /dev/null @@ -1,213 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cellShapeControl - -Description - -SourceFiles - cellShapeControlI.H - cellShapeControl.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cellShapeControl_H -#define cellShapeControl_H - -#include "dictionary.H" -#include "autoPtr.H" -#include "tensor.H" -#include "point.H" -#include "primitiveFieldsFwd.H" -#include "pointFieldFwd.H" -#include "Time.H" -#include "searchableSurfaces.H" -#include "conformationSurfaces.H" -#include "cellAspectRatioControl.H" -#include "cellSizeAndAlignmentControls.H" -#include "cellShapeControlMesh.H" -#include "backgroundMeshDecomposition.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - - -/*---------------------------------------------------------------------------*\ - Class cellShapeControl Declaration -\*---------------------------------------------------------------------------*/ - -class cellShapeControl -: - public dictionary -{ - // Private data - - const Time& runTime_; - - const searchableSurfaces& allGeometry_; - - const conformationSurfaces& geometryToConformTo_; - - const scalar defaultCellSize_; - - const scalar minimumCellSize_; - - cellShapeControlMesh shapeControlMesh_; - - cellAspectRatioControl aspectRatio_; - - cellSizeAndAlignmentControls sizeAndAlignment_; - - - // Private Member Functions - - template <class Triangulation, class Type> - tmp<Field<Type> > filterFarPoints - ( - const Triangulation& mesh, - const Field<Type>& field - ); - - template <class Triangulation> - autoPtr<mapDistribute> buildMap - ( - const Triangulation& mesh, - labelListList& pointPoints - ); - - template <class Triangulation> - autoPtr<mapDistribute> buildReferredMap - ( - const Triangulation& mesh, - labelList& indices - ); - - template <class Triangulation> - tmp<triadField> buildAlignmentField(const Triangulation& mesh); - - template <class Triangulation> - tmp<pointField> buildPointField(const Triangulation& mesh); - - //- Disallow default bitwise copy construct - cellShapeControl(const cellShapeControl&); - - //- Disallow default bitwise assignment - void operator=(const cellShapeControl&); - - -public: - - //- Runtime type information - ClassName("cellShapeControl"); - - - // Constructors - - //- Construct from dictionary and references to conformalVoronoiMesh and - // searchableSurfaces - cellShapeControl - ( - const Time& runTime, - const dictionary& cellShapeControlDict, - const searchableSurfaces& allGeometry, - const conformationSurfaces& geometryToConformTo - ); - - - //- Destructor - ~cellShapeControl(); - - - // Member Functions - - // Access - - inline const scalar& defaultCellSize() const; - - inline cellShapeControlMesh& shapeControlMesh(); - - inline const cellShapeControlMesh& shapeControlMesh() const; - - inline const cellAspectRatioControl& aspectRatio() const; - - inline const cellSizeAndAlignmentControls& sizeAndAlignment() const; - - - // Query - - //- Return the cell size at the given location - scalar cellSize(const point& pt) const; - - scalarField cellSize(const pointField& pts) const; - - //- Return the cell alignment at the given location - tensor cellAlignment(const point& pt) const; - - void cellSizeAndAlignment - ( - const point& pt, - scalar& size, - tensor& alignment - ) const; - - - // Edit - - void initialMeshPopulation - ( - const autoPtr<backgroundMeshDecomposition>& decomposition - ); - - label refineMesh - ( - const autoPtr<backgroundMeshDecomposition>& decomposition - ); - - void smoothMesh(); - - //- Add a control point with a specified size and alignment -// virtual void addControlPoint -// ( -// const point& pt, -// const scalar& size, -// const tensor& alignment -// ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "cellShapeControlI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControlI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControlI.H deleted file mode 100644 index f7fdebc93192998027adbdfc2ba6527221a0b248..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControl/cellShapeControlI.H +++ /dev/null @@ -1,55 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -inline Foam::cellShapeControlMesh& -Foam::cellShapeControl::shapeControlMesh() -{ - return shapeControlMesh_; -} - - -inline const Foam::cellShapeControlMesh& -Foam::cellShapeControl::shapeControlMesh() const -{ - return shapeControlMesh_; -} - - -inline const Foam::scalar& Foam::cellShapeControl::defaultCellSize() const -{ - return defaultCellSize_; -} - - -inline const Foam::cellAspectRatioControl& -Foam::cellShapeControl::aspectRatio() const -{ - return aspectRatio_; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.C deleted file mode 100644 index ae57bbb087bb74a2f37f0efb6a4d52b6f4daaeec..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.C +++ /dev/null @@ -1,760 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "cellShapeControlMesh.H" -#include "pointIOField.H" -#include "scalarIOField.H" -#include "tensorIOField.H" -#include "tetrahedron.H" -#include "plane.H" -#include "transform.H" -#include "meshTools.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - -defineTypeNameAndDebug(cellShapeControlMesh, 0); - -} - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -//Foam::tensor Foam::cellShapeControlMesh::requiredAlignment -//( -// const Foam::point& pt, -// const searchableSurfaces& allGeometry, -// const conformationSurfaces& geometryToConformTo -//) const -//{ -// pointIndexHit surfHit; -// label hitSurface; -// -// geometryToConformTo.findSurfaceNearest -// ( -// pt, -// sqr(GREAT), -// surfHit, -// hitSurface -// ); -// -// if (!surfHit.hit()) -// { -// FatalErrorIn -// ( -// "Foam::tensor Foam::conformalVoronoiMesh::requiredAlignment" -// ) << "findSurfaceNearest did not find a hit across the surfaces." -// << exit(FatalError) << endl; -// } -// -// // Primary alignment -// -// vectorField norm(1); -// -// allGeometry[hitSurface].getNormal -// ( -// List<pointIndexHit>(1, surfHit), -// norm -// ); -// -// const vector np = norm[0]; -// -// // Generate equally spaced 'spokes' in a circle normal to the -// // direction from the vertex to the closest point on the surface -// // and look for a secondary intersection. -// -// const vector d = surfHit.hitPoint() - pt; -// -// const tensor Rp = rotationTensor(vector(0,0,1), np); -// -// const label s = 36;//cvMeshControls().alignmentSearchSpokes(); -// -// scalar closestSpokeHitDistance = GREAT; -// -// pointIndexHit closestSpokeHit; -// -// label closestSpokeSurface = -1; -// -// const scalar spanMag = geometryToConformTo.globalBounds().mag(); -// -// for (label i = 0; i < s; i++) -// { -// vector spoke -// ( -// Foam::cos(i*constant::mathematical::twoPi/s), -// Foam::sin(i*constant::mathematical::twoPi/s), -// 0 -// ); -// -// spoke *= spanMag; -// -// spoke = Rp & spoke; -// -// pointIndexHit spokeHit; -// -// label spokeSurface = -1; -// -// // internal spoke -// -// geometryToConformTo.findSurfaceNearestIntersection -// ( -// pt, -// pt + spoke, -// spokeHit, -// spokeSurface -// ); -// -// if (spokeHit.hit()) -// { -// scalar spokeHitDistance = mag -// ( -// spokeHit.hitPoint() - pt -// ); -// -// if (spokeHitDistance < closestSpokeHitDistance) -// { -// closestSpokeHit = spokeHit; -// closestSpokeSurface = spokeSurface; -// closestSpokeHitDistance = spokeHitDistance; -// } -// } -// -// //external spoke -// -// Foam::point mirrorPt = pt + 2*d; -// -// geometryToConformTo.findSurfaceNearestIntersection -// ( -// mirrorPt, -// mirrorPt + spoke, -// spokeHit, -// spokeSurface -// ); -// -// if (spokeHit.hit()) -// { -// scalar spokeHitDistance = mag -// ( -// spokeHit.hitPoint() - mirrorPt -// ); -// -// if (spokeHitDistance < closestSpokeHitDistance) -// { -// closestSpokeHit = spokeHit; -// closestSpokeSurface = spokeSurface; -// closestSpokeHitDistance = spokeHitDistance; -// } -// } -// } -// -// if (closestSpokeSurface == -1) -// { -//// WarningIn -//// ( -//// "conformalVoronoiMesh::requiredAlignment" -//// "(" -//// "const Foam::point& pt" -//// ") const" -//// ) << "No secondary surface hit found in spoke search " -//// << "using " << s -//// << " spokes, try increasing alignmentSearchSpokes." -//// << endl; -// -// return I; -// } -// -// // Auxiliary alignment generated by spoke intersection normal. -// -// allGeometry[closestSpokeSurface].getNormal -// ( -// List<pointIndexHit>(1, closestSpokeHit), -// norm -// ); -// -// const vector& na = norm[0]; -// -// // Secondary alignment -// vector ns = np ^ na; -// -// if (mag(ns) < SMALL) -// { -// FatalErrorIn("conformalVoronoiMesh::requiredAlignment") -// << "Parallel normals detected in spoke search." << nl -// << "point: " << pt << nl -// << "closest surface point: " << surfHit.hitPoint() << nl -// << "closest spoke hit: " << closestSpokeHit.hitPoint() << nl -// << "np: " << surfHit.hitPoint() + np << nl -// << "ns: " << closestSpokeHit.hitPoint() + na << nl -// << exit(FatalError); -// } -// -// ns /= mag(ns); -// -// tensor Rs = rotationTensor((Rp & vector(0,1,0)), ns); -// -// return (Rs & Rp); -//} - - -Foam::label Foam::cellShapeControlMesh::removePoints() -{ - label nRemoved = 0; - for - ( - CellSizeDelaunay::Finite_vertices_iterator vit = - finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - std::list<Vertex_handle> verts; - adjacent_vertices(vit, std::back_inserter(verts)); - - bool removePt = true; - for - ( - std::list<Vertex_handle>::iterator aVit = verts.begin(); - aVit != verts.end(); - ++aVit - ) - { - Vertex_handle avh = *aVit; - - scalar diff = - mag(avh->targetCellSize() - vit->targetCellSize()) - /max(vit->targetCellSize(), 1e-6); - - if (diff > 0.05) - { - removePt = false; - } - } - - if (removePt) - { - remove(vit); - nRemoved++; - } - } - - return nRemoved; -} - - -Foam::tmp<Foam::pointField> Foam::cellShapeControlMesh::cellCentres() const -{ - tmp<pointField> tcellCentres(new pointField(number_of_finite_cells())); - pointField& cellCentres = tcellCentres(); - - label count = 0; - for - ( - CellSizeDelaunay::Finite_cells_iterator c = finite_cells_begin(); - c != finite_cells_end(); - ++c - ) - { - if (c->hasFarPoint()) - { - continue; - } - - scalarList bary; - cellShapeControlMesh::Cell_handle ch; - - const Foam::point centre = topoint - ( - CGAL::centroid<baseK> - ( - c->vertex(0)->point(), - c->vertex(1)->point(), - c->vertex(2)->point(), - c->vertex(3)->point() - ) - ); - - cellCentres[count++] = centre; - } - - cellCentres.resize(count); - - return tcellCentres; -} - - -void Foam::cellShapeControlMesh::writeTriangulation() -{ - OFstream str - ( - "refinementTriangulation_" - + name(Pstream::myProcNo()) - + ".obj" - ); - - label count = 0; - - Info<< "Write refinementTriangulation" << endl; - - for - ( - CellSizeDelaunay::Finite_edges_iterator e = finite_edges_begin(); - e != finite_edges_end(); - ++e - ) - { - Cell_handle c = e->first; - Vertex_handle vA = c->vertex(e->second); - Vertex_handle vB = c->vertex(e->third); - - // Don't write far edges - if (vA->farPoint() || vB->farPoint()) - { - continue; - } - - // Don't write unowned edges - if (vA->referred() && vB->referred()) - { - continue; - } - - pointFromPoint p1 = topoint(vA->point()); - pointFromPoint p2 = topoint(vB->point()); - - meshTools::writeOBJ(str, p1, p2, count); - } - - if (is_valid()) - { - Info<< " Triangulation is valid" << endl; - } - else - { - FatalErrorIn - ( - "Foam::triangulatedMesh::writeRefinementTriangulation()" - ) << "Triangulation is not valid" - << abort(FatalError); - } -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cellShapeControlMesh::cellShapeControlMesh(const Time& runTime) -: - runTime_(runTime), - defaultCellSize_(0.0) -{} - - -//Foam::triangulatedMesh::triangulatedMesh -//( -// const Time& runTime, -// const fileName& pointsFile, -// const fileName& sizesFile, -// const fileName& alignmentsFile, -// const scalar& defaultCellSize -//) -//: -// defaultCellSize_(defaultCellSize) -//{ -// Info<< " Reading points from file : " << pointsFile << endl; -// -// pointIOField points -// ( -// IOobject -// ( -// pointsFile, -// runTime.constant(), -// runTime, -// IOobject::MUST_READ, -// IOobject::NO_WRITE -// ) -// ); -// -// Info<< " Reading sizes from file : " << sizesFile << endl; -// -// scalarIOField sizes -// ( -// IOobject -// ( -// sizesFile, -// runTime.constant(), -// runTime, -// IOobject::MUST_READ, -// IOobject::NO_WRITE -// ) -// ); -// -// Info<< " Reading alignments from file : " << alignmentsFile << endl; -// -// tensorIOField alignments -// ( -// IOobject -// ( -// alignmentsFile, -// runTime.constant(), -// runTime, -// IOobject::MUST_READ, -// IOobject::NO_WRITE -// ) -// ); -// -// Info<< " Number of points : " << points.size() << endl; -// Info<< " Minimum size : " << min(sizes) << endl; -// Info<< " Average size : " << average(sizes) << endl; -// Info<< " Maximum size : " << max(sizes) << endl; -// -// forAll(points, pI) -// { -// size_t nVert = number_of_vertices(); -// -// Vertex_handle v = insert -// ( -// Point(points[pI].x(), points[pI].y(), points[pI].z()) -// ); -// -// if (number_of_vertices() == nVert) -// { -// Info<< " Failed to insert point : " << points[pI] << endl; -// } -// -// v->targetCellSize() = sizes[pI]; -// -// const tensor& alignment = alignments[pI]; -// -// -// -// v->alignment() = alignment; -// } -// -//// scalar factor = 1.0; -//// label maxIteration = 1; -//// -//// for (label iteration = 0; iteration < maxIteration; ++iteration) -//// { -//// Info<< "Iteration : " << iteration << endl; -//// -//// label nRefined = refineTriangulation(factor); -//// -//// Info<< " Number of cells refined in refinement iteration : " -//// << nRefined << nl << endl; -//// -//// if (nRefined <= 0 && iteration != 0) -//// { -//// break; -//// } -//// -//// factor *= 1.5; -//// } -// -// //writeRefinementTriangulation(); -//} - - -//Foam::triangulatedMesh::triangulatedMesh -//( -// const Time& runTime, -// const DynamicList<Foam::point>& points, -// const DynamicList<scalar>& sizes, -// const DynamicList<tensor>& alignments, -// const scalar& defaultCellSize -//) -//: -// defaultCellSize_(defaultCellSize) -//{ -// forAll(points, pI) -// { -// size_t nVert = number_of_vertices(); -// -// Vertex_handle v = insert -// ( -// Point(points[pI].x(), points[pI].y(), points[pI].z()) -// ); -// -// if (number_of_vertices() == nVert) -// { -// Info<< "Failed to insert point : " << points[pI] << endl; -// } -// -// v->targetCellSize() = sizes[pI]; -// -// v->alignment() = alignments[pI]; -// } -// -// //writeRefinementTriangulation(); -// -// Info<< nl << "Refinement triangulation information: " << endl; -// Info<< " Number of vertices: " << label(number_of_vertices()) << endl; -// Info<< " Number of cells : " -// << label(number_of_finite_cells()) << endl; -// Info<< " Number of faces : " -// << label(number_of_finite_facets()) << endl; -// Info<< " Number of edges : " -// << label(number_of_finite_edges()) << endl; -// Info<< " Dimensionality : " << label(dimension()) << nl << endl; -//} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cellShapeControlMesh::~cellShapeControlMesh() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -void Foam::cellShapeControlMesh::barycentricCoords -( - const Foam::point& pt, - scalarList& bary, - Cell_handle& ch -) const -{ - // Use the previous cell handle as a hint on where to start searching - ch = locate - ( - Point(pt.x(), pt.y(), pt.z()) - ); - - if (!is_infinite(ch)) - { - oldCellHandle_ = ch; - - tetPointRef tet - ( - topoint(ch->vertex(0)->point()), - topoint(ch->vertex(1)->point()), - topoint(ch->vertex(2)->point()), - topoint(ch->vertex(3)->point()) - ); - - tet.barycentric(pt, bary); - } -} - - -Foam::boundBox Foam::cellShapeControlMesh::bounds() const -{ - DynamicList<Foam::point> pts(number_of_vertices()); - - for - ( - Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->real()) - { - pts.append(topoint(vit->point())); - } - } - - boundBox bb(pts); - - return bb; -} - - -void Foam::cellShapeControlMesh::distribute -( - const backgroundMeshDecomposition& decomposition -) -{ - if (!Pstream::parRun()) - { - return; - } - - autoPtr<mapDistribute> mapDist = - DistributedDelaunayMesh<CellSizeDelaunay>::distribute(decomposition); - - DynamicList<Foam::point> points(number_of_vertices()); - DynamicList<scalar> sizes(number_of_vertices()); - DynamicList<tensor> alignments(number_of_vertices()); - - for - ( - Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->real()) - { - points.append(topoint(vit->point())); - sizes.append(vit->targetCellSize()); - alignments.append(vit->alignment()); - } - } - - mapDist().distribute(points); - mapDist().distribute(sizes); - mapDist().distribute(alignments); - - // Reset the entire tessellation - DelaunayMesh<CellSizeDelaunay>::reset(); - - Info<< nl << " Inserting distributed tessellation" << endl; - - insertBoundingPoints(decomposition.procBounds()); - - // Internal points have to be inserted first - - DynamicList<Vb> verticesToInsert(points.size()); - - forAll(points, pI) - { - verticesToInsert.append - ( - Vb - ( - toPoint<Point>(points[pI]), - -1, - Vb::vtInternal, - Pstream::myProcNo() - ) - ); - - verticesToInsert.last().targetCellSize() = sizes[pI]; - verticesToInsert.last().alignment() = alignments[pI]; - } - - this->rangeInsertWithInfo - ( - verticesToInsert.begin(), - verticesToInsert.end(), - true - ); - - sync(decomposition.procBounds()); - - Info<< " Total number of vertices after redistribution " - << returnReduce(label(number_of_vertices()), sumOp<label>()) << endl; -} - - -Foam::tensorField Foam::cellShapeControlMesh::dumpAlignments() const -{ - tensorField alignmentsTmp(number_of_vertices(), tensor::zero); - - label count = 0; - for - ( - Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - alignmentsTmp[count++] = vit->alignment(); - } - - return alignmentsTmp; -} - - -void Foam::cellShapeControlMesh::insertBoundingPoints(const boundBox& bb) -{ - boundBox bbInflate = bb; - bbInflate.inflate(10); - - pointField pts(bbInflate.points()); - - forAll(pts, pI) - { - insertFar(pts[pI]); - } -} - - -void Foam::cellShapeControlMesh::write() const -{ - Info<< "Writing cell size and alignment mesh" << endl; - - const fileName name("cellSizeAndAlignmentMesh"); - - // Reindex the cells - label cellCount = 0; - for - ( - Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - if (!cit->hasFarPoint() && !is_infinite(cit)) - { - cit->cellIndex() = cellCount++; - } - } - - labelList vertexMap; - labelList cellMap; - - autoPtr<fvMesh> meshPtr = DelaunayMesh<CellSizeDelaunay>::createMesh - ( - name, - runTime_, - vertexMap, - cellMap - ); - const fvMesh& mesh = meshPtr(); - - pointScalarField sizes - ( - IOobject - ( - "sizes", - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - pointMesh::New(mesh), - scalar(0) - ); - - for - ( - Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (!vit->farPoint()) - { - sizes[vertexMap[vit->index()]] = vit->targetCellSize(); - } - } - - mesh.write(); -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.H deleted file mode 100644 index e6cb37a2c3b097b82af919982f1a512331a6bf03..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMesh.H +++ /dev/null @@ -1,168 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cellShapeControlMesh - -Description - -SourceFiles - cellShapeControlMeshI.H - cellShapeControlMesh.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cellShapeControlMesh_H -#define cellShapeControlMesh_H - -#include "Time.H" -#include "scalar.H" -#include "point.H" -#include "tensor.H" -#include "triad.H" -#include "fileName.H" -#include "searchableSurfaces.H" -#include "conformationSurfaces.H" -#include "DistributedDelaunayMesh.H" -#include "CGALTriangulation3Ddefs.H" -#include "backgroundMeshDecomposition.H" -#include "boundBox.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class cellShapeControlMesh Declaration -\*---------------------------------------------------------------------------*/ - -class cellShapeControlMesh -: - public DistributedDelaunayMesh<CellSizeDelaunay> -{ -public: - - typedef CellSizeDelaunay::Cell_handle Cell_handle; - typedef CellSizeDelaunay::Vertex_handle Vertex_handle; - typedef CellSizeDelaunay::Point Point; - - -private: - - // Private data - - const Time& runTime_; - - mutable Cell_handle oldCellHandle_; - - const scalar defaultCellSize_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - cellShapeControlMesh(const cellShapeControlMesh&); - - //- Disallow default bitwise assignment - void operator=(const cellShapeControlMesh&); - - -public: - - //- Runtime type information - ClassName("cellShapeControlMesh"); - - - // Constructors - - explicit cellShapeControlMesh(const Time& runTime); - - - //- Destructor - ~cellShapeControlMesh(); - - - // Member Functions - - // Query - - //- Calculate and return the barycentric coordinates for - // interpolating quantities on the background mesh - void barycentricCoords - ( - const Foam::point& pt, - scalarList& bary, - Cell_handle& ch - ) const; - - boundBox bounds() const; - - - // Edit - - label removePoints(); - - //- Get the centres of all the tets - tmp<pointField> cellCentres() const; - - inline Vertex_handle insert - ( - const Foam::point& pt, - const scalar& size, - const triad& alignment, - const Foam::indexedVertexEnum::vertexType type = Vb::vtInternal - ); - - inline Vertex_handle insertFar - ( - const Foam::point& pt - ); - - void distribute - ( - const backgroundMeshDecomposition& decomposition - ); - - tensorField dumpAlignments() const; - - void insertBoundingPoints(const boundBox& bb); - - void writeTriangulation(); - - void write() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "cellShapeControlMeshI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMeshI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMeshI.H deleted file mode 100644 index 305256d4ccaf924d7c5dc19c867b6812ffa724f0..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellShapeControlMesh/cellShapeControlMeshI.H +++ /dev/null @@ -1,68 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -Foam::cellShapeControlMesh::Vertex_handle Foam::cellShapeControlMesh::insert -( - const Foam::point& pt, - const scalar& size, - const triad& alignment, - const Foam::indexedVertexEnum::vertexType type -) -{ - Vertex_handle v = CellSizeDelaunay::insert - ( - Point(pt.x(), pt.y(), pt.z()) - ); - v->type() = type; - v->index() = getNewVertexIndex(); - v->procIndex() = Pstream::myProcNo(); - v->targetCellSize() = size; - v->alignment() = tensor(alignment.x(), alignment.y(), alignment.z()); - - return v; -} - - -Foam::cellShapeControlMesh::Vertex_handle Foam::cellShapeControlMesh::insertFar -( - const Foam::point& pt -) -{ - Vertex_handle v = CellSizeDelaunay::insert - ( - Point(pt.x(), pt.y(), pt.z()) - ); - v->type() = Vb::vtFar; -// v->type() = Vb::vtExternalFeaturePoint; - v->index() = getNewVertexIndex(); - v->procIndex() = Pstream::myProcNo(); - - return v; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl.C deleted file mode 100644 index 31d5d614062d17e601f92fbaff116cd05019ac98..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl.C +++ /dev/null @@ -1,120 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "cellSizeAndAlignmentControl.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - -defineTypeNameAndDebug(cellSizeAndAlignmentControl, 0); -defineRunTimeSelectionTable(cellSizeAndAlignmentControl, dictionary); - -} - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cellSizeAndAlignmentControl::cellSizeAndAlignmentControl -( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry -) -: - runTime_(runTime), - name_(name) -{} - - -// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // - -Foam::autoPtr<Foam::cellSizeAndAlignmentControl> -Foam::cellSizeAndAlignmentControl::New -( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry -) -{ - word cellSizeAndAlignmentControlTypeName - ( - controlFunctionDict.lookup("type") - ); - - Info<< nl << "Selecting cellSizeAndAlignmentControl " - << cellSizeAndAlignmentControlTypeName << endl; - - dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find - ( - cellSizeAndAlignmentControlTypeName - ); - - if (cstrIter == dictionaryConstructorTablePtr_->end()) - { - FatalErrorIn - ( - "cellSizeAndAlignmentControl::New()" - ) << "Unknown cellSizeAndAlignmentControl type " - << cellSizeAndAlignmentControlTypeName - << endl << endl - << "Valid cellSizeAndAlignmentControl types are :" << endl - << dictionaryConstructorTablePtr_->toc() - << exit(FatalError); - } - - return autoPtr<cellSizeAndAlignmentControl> - ( - cstrIter() - ( - runTime, - name, - controlFunctionDict, - allGeometry - ) - ); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cellSizeAndAlignmentControl::~cellSizeAndAlignmentControl() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl.H deleted file mode 100644 index 243211929edc2e19a22651d0f2b381184de84107..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControl.H +++ /dev/null @@ -1,160 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cellSizeAndAlignmentControl - -Description - -SourceFiles - cellSizeAndAlignmentControlI.H - cellSizeAndAlignmentControl.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cellSizeAndAlignmentControl_H -#define cellSizeAndAlignmentControl_H - -#include "dictionary.H" -#include "conformationSurfaces.H" -#include "Time.H" -#include "quaternion.H" -#include "triadField.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - - -/*---------------------------------------------------------------------------*\ - Class cellSizeAndAlignmentControl Declaration -\*---------------------------------------------------------------------------*/ - -class cellSizeAndAlignmentControl -{ -protected: - - const Time& runTime_; - - -private: - - // Private data - - const word name_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - cellSizeAndAlignmentControl(const cellSizeAndAlignmentControl&); - - //- Disallow default bitwise assignment - void operator=(const cellSizeAndAlignmentControl&); - - -public: - - //- Runtime type information - TypeName("cellSizeAndAlignmentControl"); - - - // Declare run-time constructor selection table - - declareRunTimeSelectionTable - ( - autoPtr, - cellSizeAndAlignmentControl, - dictionary, - ( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry - ), - (runTime, name, controlFunctionDict, allGeometry) - ); - - - // Constructors - - //- Construct from dictionary and references to conformalVoronoiMesh and - // searchableSurfaces - cellSizeAndAlignmentControl - ( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry - ); - - - // Selectors - - //- Return a reference to the selected cellShapeControl - static autoPtr<cellSizeAndAlignmentControl> New - ( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry - ); - - - //- Destructor - virtual ~cellSizeAndAlignmentControl(); - - - // Member Functions - - // Access - - const word& name() const - { - return name_; - } - - virtual label priority() const = 0; - - - // Query - - virtual void initialVertices - ( - pointField& pts, - scalarField& sizes, - triadField& alignments - ) const = 0; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControls.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControls.C deleted file mode 100644 index 515482689dcd9a1b5a5f89118b9222d74762f488..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControls.C +++ /dev/null @@ -1,177 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "cellSizeAndAlignmentControls.H" -#include "searchableSurfaceControl.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - -defineTypeNameAndDebug(cellSizeAndAlignmentControls, 0); - -} - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -bool Foam::cellSizeAndAlignmentControls::evalCellSizeFunctions -( - const point& pt, - scalar& minSize -) const -{ - bool anyFunctionFound = false; - - // Regions requesting with the same priority take the smallest - - if (controlFunctions_.size()) - { - // Maintain priority of current hit. Initialise so it always goes - // through at least once. - label previousPriority = -1; - - forAll(controlFunctions_, i) - { - const cellSizeAndAlignmentControl& cSF = controlFunctions_[i]; - - if (isA<searchableSurfaceControl>(cSF)) - { - const searchableSurfaceControl& sSC = - refCast<const searchableSurfaceControl>(cSF); - - if (debug) - { - Info<< "size function " - << sSC.name() - << " priority " << sSC.priority() - << endl; - } - - if (sSC.priority() < previousPriority) - { - return minSize; - } - - scalar sizeI; - - if (sSC.sizeFunction().cellSize(pt, sizeI)) - { - anyFunctionFound = true; - - if (sSC.priority() == previousPriority) - { - if (sizeI < minSize) - { - minSize = sizeI; - } - } - else - { - minSize = sizeI; - } - - if (debug) - { - Info<< "sizeI " << sizeI - <<" minSize " << minSize << endl; - } - - previousPriority = sSC.priority(); - } - } - } - } - - return anyFunctionFound; -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cellSizeAndAlignmentControls::cellSizeAndAlignmentControls -( - const Time& runTime, - const dictionary& shapeControlDict, - const conformationSurfaces& allGeometry, - const scalar defaultCellSize -) -: - shapeControlDict_(shapeControlDict), - allGeometry_(allGeometry), - controlFunctions_(shapeControlDict_.size()), - defaultCellSize_(defaultCellSize) -{ - label functionI = 0; - - forAllConstIter(dictionary, shapeControlDict_, iter) - { - word shapeControlEntryName = iter().keyword(); - - const dictionary& controlFunctionDict - ( - shapeControlDict_.subDict(shapeControlEntryName) - ); - - controlFunctions_.set - ( - functionI, - cellSizeAndAlignmentControl::New - ( - runTime, - shapeControlEntryName, - controlFunctionDict, - allGeometry - ) - ); - - functionI++; - } -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cellSizeAndAlignmentControls::~cellSizeAndAlignmentControls() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -Foam::scalar Foam::cellSizeAndAlignmentControls::cellSize -( - const point& pt -) const -{ - scalar size = defaultCellSize_; - - evalCellSizeFunctions(pt, size); - - return size; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControls.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControls.H deleted file mode 100644 index 76e6c801dd845c0b20375a1761282452bb3ec74b..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/cellSizeAndAlignmentControls.H +++ /dev/null @@ -1,119 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cellSizeAndAlignmentControls - -Description - -SourceFiles - cellSizeAndAlignmentControls.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cellSizeAndAlignmentControls_H -#define cellSizeAndAlignmentControls_H - -#include "dictionary.H" -#include "cellSizeAndAlignmentControl.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class cellSizeAndAlignmentControls Declaration -\*---------------------------------------------------------------------------*/ - -class cellSizeAndAlignmentControls -{ - // Private data - - const dictionary& shapeControlDict_; - - const conformationSurfaces& allGeometry_; - - PtrList<cellSizeAndAlignmentControl> controlFunctions_; - - const scalar defaultCellSize_; - - - // Private Member Functions - - bool evalCellSizeFunctions(const point& pt, scalar& minSize) const; - - //- Disallow default bitwise copy construct - cellSizeAndAlignmentControls(const cellSizeAndAlignmentControls&); - - //- Disallow default bitwise assignment - void operator=(const cellSizeAndAlignmentControls&); - - -public: - - //- Runtime type information - ClassName("cellSizeAndAlignmentControls"); - - - // Constructors - - //- Construct from dictionary - cellSizeAndAlignmentControls - ( - const Time& runTime, - const dictionary& shapeControlDict, - const conformationSurfaces& allGeometry, - const scalar defaultCellSize - ); - - - //- Destructor - virtual ~cellSizeAndAlignmentControls(); - - - // Member Functions - - // Access - - const PtrList<cellSizeAndAlignmentControl>& controlFunctions() const - { - return controlFunctions_; - } - - - // Query - - scalar cellSize(const point& pt) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/fileControl/fileControl.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/fileControl/fileControl.C deleted file mode 100644 index 9b86dbf2ba643fb6c563cd2774eaf6c39e42129b..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/fileControl/fileControl.C +++ /dev/null @@ -1,242 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "fileControl.H" -#include "addToRunTimeSelectionTable.H" -#include "tetrahedron.H" -#include "scalarList.H" -#include "vectorTools.H" -#include "pointIOField.H" -#include "scalarIOField.H" -#include "triadIOField.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - -defineTypeNameAndDebug(fileControl, 0); -addToRunTimeSelectionTable -( - cellSizeAndAlignmentControl, - fileControl, - dictionary -); - -} - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::fileControl::fileControl -( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry -) -: - cellSizeAndAlignmentControl - ( - runTime, - name, - controlFunctionDict, - allGeometry - ), - pointsFile_(controlFunctionDict.lookup("pointsFile")), - sizesFile_(controlFunctionDict.lookup("sizesFile")), - alignmentsFile_(controlFunctionDict.lookup("alignmentsFile")), - priority_(readLabel(controlFunctionDict.lookup("priority"))) -{ - Info<< indent << "Loading from file... " << nl - << indent << " points : " << pointsFile_ << nl - << indent << " sizes : " << sizesFile_ << nl - << indent << " alignments : " << alignmentsFile_ - << endl; -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::fileControl::~fileControl() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -// -//Foam::scalar Foam::fileControl::cellSize(const point& pt) const -//{ -// scalarList bary; -// Cell_handle ch; -// -// triangulatedMesh_.barycentricCoords(pt, bary, ch); -// -// scalar size = 0; -// forAll(bary, pI) -// { -// size += bary[pI]*ch->vertex(pI)->size(); -// } -// -// return size; -//} -// -// -////- Return the cell alignment at the given location -//Foam::tensor Foam::fileControl::cellAlignment(const point& pt) const -//{ -// scalarList bary; -// Cell_handle ch; -// -// triangulatedMesh_.barycentricCoords(pt, bary, ch); -// -// label nearest = 0; -// -// tensor alignment = Foam::tensor::zero; -// forAll(bary, pI) -// { -// //alignment += bary[pI]*ch->vertex(pI)->alignment(); -// -// // Find nearest point -// if (bary[pI] > nearest) -// { -// alignment = ch->vertex(pI)->alignment(); -// nearest = bary[pI]; -// } -// } -// -// return alignment; -//} -// -// -////- Return the cell alignment at the given location -//void Foam::fileControl::cellSizeAndAlignment -//( -// const point& pt, -// scalar& size, -// tensor& alignment -//) const -//{ -// scalarList bary; -// Cell_handle ch; -// -// triangulatedMesh_.barycentricCoords(pt, bary, ch); -// -// size = 0; -// forAll(bary, pI) -// { -// size += bary[pI]*ch->vertex(pI)->size(); -// } -// -//// alignment = Foam::tensor::zero; -//// forAll(bary, pI) -//// { -//// alignment += bary[pI]*ch->vertex(pI)->alignment(); -//// } -// -// alignment = cellAlignment(pt); -//} - -void Foam::fileControl::initialVertices -( - pointField& pts, - scalarField& sizes, - triadField& alignments -) const -{ - Info<< " Reading points from file : " << pointsFile_ << endl; - - pointIOField pointsTmp - ( - IOobject - ( - pointsFile_, - runTime_.constant(), - runTime_, - IOobject::MUST_READ, - IOobject::NO_WRITE, - false - ) - ); - - pts.transfer(pointsTmp); - - Info<< " Reading sizes from file : " << sizesFile_ << endl; - - scalarIOField sizesTmp - ( - IOobject - ( - sizesFile_, - runTime_.constant(), - runTime_, - IOobject::MUST_READ, - IOobject::NO_WRITE, - false - ) - ); - - sizes.transfer(sizesTmp); - - Info<< " Reading alignments from file : " << alignmentsFile_ << endl; - - triadIOField alignmentsTmp - ( - IOobject - ( - alignmentsFile_, - runTime_.constant(), - runTime_, - IOobject::MUST_READ, - IOobject::NO_WRITE, - false - ) - ); - - alignments.transfer(alignmentsTmp); - - if ((pts.size() != sizes.size()) || (pts.size() != alignments.size())) - { - FatalErrorIn - ( - "Foam::fileControl::initialVertices" - "(" - " pointField&," - " scalarField&," - " Field<triad>&" - ")" - ) << "Size of list of points, sizes and alignments do not match:" - << nl - << "Points size = " << pts.size() << nl - << "Sizes size = " << sizes.size() << nl - << "Alignments size = " << alignments.size() - << abort(FatalError); - } -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/fileControl/fileControl.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/fileControl/fileControl.H deleted file mode 100644 index f06892680d69ef3c70ea77976854b2125b0b00c7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/fileControl/fileControl.H +++ /dev/null @@ -1,140 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::fileControl - -Description - -SourceFiles - fileControl.C - -\*---------------------------------------------------------------------------*/ - -#ifndef fileControl_H -#define fileControl_H - -#include "cellSizeAndAlignmentControl.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - - -/*---------------------------------------------------------------------------*\ - Class fileControl Declaration -\*---------------------------------------------------------------------------*/ - -class fileControl -: - public cellSizeAndAlignmentControl -{ - // Private data - - const fileName pointsFile_; - - const fileName sizesFile_; - - const fileName alignmentsFile_; - - label priority_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - fileControl(const fileControl&); - - //- Disallow default bitwise assignment - void operator=(const fileControl&); - - -public: - - //- Runtime type information - TypeName("fileControl"); - - - // Constructors - - //- Construct from dictionary and references to conformalVoronoiMesh and - // searchableSurfaces - fileControl - ( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry - ); - - //- Destructor - ~fileControl(); - - - // Member Functions - - // Access - - - // Query - -// //- Return the cell size at the given location -// virtual scalar cellSize(const point& pt) const; -// -// //- Return the cell alignment at the given location -// virtual tensor cellAlignment(const point& pt) const; -// -// virtual void cellSizeAndAlignment -// ( -// const point& pt, -// scalar& size, -// tensor& alignment -// ) const; - - - // Edit - - virtual void initialVertices - ( - pointField& pts, - scalarField& sizes, - triadField& alignments - ) const; - - virtual label priority() const - { - return priority_; - } -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/searchableSurfaceControl/searchableSurfaceControl.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/searchableSurfaceControl/searchableSurfaceControl.C deleted file mode 100644 index 0f2a4f6d8c76cf39d69e4890af63af4f9590e321..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/searchableSurfaceControl/searchableSurfaceControl.C +++ /dev/null @@ -1,666 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "searchableSurfaceControl.H" -#include "addToRunTimeSelectionTable.H" -#include "cellSizeFunction.H" -#include "triSurfaceMesh.H" -#include "searchableBox.H" -#include "tetrahedron.H" -#include "vectorTools.H" -#include "quaternion.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - -defineTypeNameAndDebug(searchableSurfaceControl, 0); -addToRunTimeSelectionTable -( - cellSizeAndAlignmentControl, - searchableSurfaceControl, - dictionary -); - -} - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -//Foam::tensor Foam::surfaceControl::requiredAlignment -//( -// const Foam::point& pt, -// const vectorField& ptNormals -//) const -//{ -//// pointIndexHit surfHit; -//// label hitSurface; -//// -//// geometryToConformTo_.findSurfaceNearest -//// ( -//// pt, -//// sqr(GREAT), -//// surfHit, -//// hitSurface -//// ); -//// -//// if (!surfHit.hit()) -//// { -//// FatalErrorIn -//// ( -//// "Foam::tensor Foam::conformalVoronoiMesh::requiredAlignment" -//// ) -//// << "findSurfaceNearest did not find a hit across the surfaces." -//// << exit(FatalError) << endl; -//// } -//// -////// Primary alignment -//// -//// vectorField norm(1); -//// -//// allGeometry_[hitSurface].getNormal -//// ( -//// List<pointIndexHit>(1, surfHit), -//// norm -//// ); -//// -//// const vector np = norm[0]; -//// -//// const tensor Rp = rotationTensor(vector(0,0,1), np); -//// -//// return (Rp); -// -//// Info<< "Point : " << pt << endl; -//// forAll(ptNormals, pnI) -//// { -//// Info<< " normal " << pnI << " : " << ptNormals[pnI] << endl; -//// } -// -// vector np = ptNormals[0]; -// -// const tensor Rp = rotationTensor(vector(0,0,1), np); -// -// vector na = vector::zero; -// -// scalar smallestAngle = GREAT; -// -// for (label pnI = 1; pnI < ptNormals.size(); ++pnI) -// { -// const vector& nextNormal = ptNormals[pnI]; -// -// const scalar cosPhi = vectorTools::cosPhi(np, nextNormal); -// -// if (mag(cosPhi) < smallestAngle) -// { -// na = nextNormal; -// smallestAngle = cosPhi; -// } -// } -// -// // Secondary alignment -// vector ns = np ^ na; -// -// if (mag(ns) < SMALL) -// { -// WarningIn("conformalVoronoiMesh::requiredAlignment") -// << "Parallel normals detected in spoke search." << nl -// << "point: " << pt << nl -// << "np : " << np << nl -// << "na : " << na << nl -// << "ns : " << ns << nl -// << endl; -// -// ns = np; -// } -// -// ns /= mag(ns); -// -// tensor Rs = rotationTensor((Rp & vector(0,1,0)), ns); -// -//// Info<< "Point " << pt << nl -//// << " np : " << np << nl -//// << " ns : " << ns << nl -//// << " Rp : " << Rp << nl -//// << " Rs : " << Rs << nl -//// << " Rs&Rp: " << (Rs & Rp) << endl; -// -// return (Rs & Rp); -//} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::searchableSurfaceControl::searchableSurfaceControl -( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry -) -: - cellSizeAndAlignmentControl - ( - runTime, - name, - controlFunctionDict, - allGeometry - ), - surfaceName_(controlFunctionDict.lookupOrDefault<word>("surface", name)), - searchableSurface_(allGeometry.geometry()[surfaceName_]), - allGeometry_(allGeometry), - cellSizeFunction_ - ( - cellSizeFunction::New(controlFunctionDict, searchableSurface_) - ) -// geometryToConformTo_(geometryToConformTo), -// surfaces_(), -// cellSizeFunctions_(), -// triangulatedMesh_() -{ -// const dictionary& surfacesDict = coeffDict(); -// -// Info<< nl << "Reading cellSizeControlGeometry" << endl; -// -// surfaces_.setSize(surfacesDict.size()); -// -// cellSizeFunctions_.setSize(surfacesDict.size()); -// -// label surfI = 0; -// -// DynamicList<point> pointsToInsert; -// DynamicList<scalar> sizesToInsert; -// DynamicList<tensor> alignmentsToInsert; -// -// forAllConstIter(dictionary, surfacesDict, iter) -// { -// const dictionary& surfaceSubDict -// ( -// surfacesDict.subDict(iter().keyword()) -// ); -// -// // If the "surface" keyword is not found in the dictionary, assume -// // the name of the dictionary is the surface. Distinction required to -// // allow the same surface to be used multiple times to supply multiple -// // cellSizeFunctions -// -// word surfaceName = surfaceSubDict.lookupOrDefault<word> -// ( -// "surface", -// iter().keyword() -// ); -// -// surfaces_[surfI] = allGeometry_.findSurfaceID(surfaceName); -// -// if (surfaces_[surfI] < 0) -// { -// FatalErrorIn -// ( -// "Foam::surfaceControl::surfaceControl" -// ) << "No surface " << surfaceName << " found. " -// << "Valid geometry is " << nl << allGeometry_.names() -// << exit(FatalError); -// } -// -// const searchableSurface& surface = allGeometry_[surfaces_[surfI]]; -// -// Info<< nl << " " << iter().keyword() << nl -// << " surface: " << surfaceName << nl -// << " size : " << surface.size() << endl; -// -// cellSizeFunctions_.set -// ( -// surfI, -// cellSizeFunction::New -// ( -// surfaceSubDict, -// surface -// ) -// ); -// -// surfI++; -// -// if (isA<triSurfaceMesh>(surface)) -// { -// const triSurfaceMesh& tsm -// = refCast<const triSurfaceMesh>(surface); -// -// const pointField& points = tsm.points(); -// const vectorField& faceNormals = tsm.faceNormals(); -// const labelListList& pointFaces = tsm.pointFaces(); -// -// Info<< " Number of points: " << tsm.nPoints() << endl; -// -// forAll(points, pI) -// { -// const Foam::point& pt = points[pI]; -// const labelList& ptFaces = pointFaces[pI]; -// -// vectorField pointNormals(ptFaces.size()); -// -// forAll(pointNormals, pnI) -// { -// pointNormals[pnI] = faceNormals[ptFaces[pnI]]; -// } -// -// pointsToInsert.append(pt); -// -// // Get the value of the point from surfaceCellSizeFunction. If -// // adding points internally then will need to interpolate. -// scalar newSize = 0; -// -// cellSizeFunctions_[surfI - 1].cellSize(pt, newSize); -// sizesToInsert.append(newSize); -// -// tensor newAlignment = requiredAlignment(pt, pointNormals); -// -// alignmentsToInsert.append(newAlignment); -// } -// } -// } -// -// // Add the global bound box to ensure that all internal point queries -// // will return sizes and alignments -//// boundBox bb = allGeometry_.bounds(); -//// -//// pointField bbPoints = bb.points(); -//// -//// forAll(bbPoints, pI) -//// { -//// pointsToInsert.append(bbPoints[pI]); -//// sizesToInsert.append(defaultCellSize()); -//// alignmentsToInsert.append(tensor(1,0,0,0,1,0,0,0,1)); -//// } -// -// triangulatedMesh_.set -// ( -// new triangulatedMesh -// ( -// runTime, -// pointsToInsert, -// sizesToInsert, -// alignmentsToInsert, -// defaultCellSize() -// ) -// ); -// -// scalar factor = 1.0; -// label maxIteration = cellShapeControlDict.lookupOrDefault<label> -// ( -// "maxRefinementIterations", 1 -// ); -// -// -// for (label iteration = 0; iteration < maxIteration; ++iteration) -// { -// Info<< "Iteration : " << iteration << endl; -// -// label nRefined = triangulatedMesh_().refineTriangulation -// ( -// factor, -// allGeometry_, -// geometryToConformTo_ -// ); -// -// Info<< " Number of cells refined in refinement iteration : " -// << nRefined << nl << endl; -// -// if (nRefined <= 0 && iteration != 0) -// { -// break; -// } -// -// factor *= 1.5; -// } -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::searchableSurfaceControl::~searchableSurfaceControl() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -//Foam::scalar Foam::surfaceControl::cellSize(const point& pt) const -//{ -// scalarList bary; -// Cell_handle ch; -// -// triangulatedMesh_().barycentricCoords(pt, bary, ch); -// -// scalar size = 0; -// forAll(bary, pI) -// { -// size += bary[pI]*ch->vertex(pI)->size(); -// } -// -// return size; -//} -// -// -////- Return the cell alignment at the given location -//Foam::tensor Foam::surfaceControl::cellAlignment(const point& pt) const -//{ -// scalarList bary; -// Cell_handle ch; -// -// triangulatedMesh_().barycentricCoords(pt, bary, ch); -// -//// vectorField cartesianDirections(3); -//// -//// cartesianDirections[0] = vector(0,0,1); -//// cartesianDirections[1] = vector(0,1,0); -//// cartesianDirections[2] = vector(1,0,0); -//// -//// // Rearrange each alignment tensor so that the x/y/z components are -//// // in order of whichever makes the smallest angle with the global -//// // coordinate system -//// FixedList<tensor, 4> alignments; -//// -//// forAll(alignments, aI) -//// { -//// tensor a = ch->vertex(aI)->alignment(); -//// -//// tensor tmpA = a; -//// -////// Info<< nl << indent<< a << endl; -//// -//// scalar minAngle = 0; -//// -//// scalar axx = vectorTools::cosPhi(a.x(), cartesianDirections[0]); -//// scalar axy = vectorTools::cosPhi(a.y(), cartesianDirections[0]); -//// scalar axz = vectorTools::cosPhi(a.z(), cartesianDirections[0]); -//// -//// scalar ayx = vectorTools::cosPhi(a.x(), cartesianDirections[1]); -//// scalar ayy = vectorTools::cosPhi(a.y(), cartesianDirections[1]); -//// scalar ayz = vectorTools::cosPhi(a.z(), cartesianDirections[1]); -//// -//// scalar azx = vectorTools::cosPhi(a.x(), cartesianDirections[2]); -//// scalar azy = vectorTools::cosPhi(a.y(), cartesianDirections[2]); -//// scalar azz = vectorTools::cosPhi(a.z(), cartesianDirections[2]); -//// -////// Info<< indent << axx << " " << axy << " " << axz << nl -////// << indent << ayx << " " << ayy << " " << ayz << nl -////// << indent << azx << " " << azy << " " << azz << endl; -//// -//// if (mag(axx) >= minAngle) -//// { -//// tmpA.xx() = mag(a.xx()); -//// tmpA.xy() = mag(a.xy()); -//// tmpA.xz() = mag(a.xz()); -//// minAngle = mag(axx); -//// } -//// if (mag(axy) >= minAngle) -//// { -//// tmpA.xx() = mag(a.yx()); -//// tmpA.xy() = mag(a.yy()); -//// tmpA.xz() = mag(a.yz()); -//// minAngle = mag(axy); -//// } -//// if (mag(axz) >= minAngle) -//// { -//// tmpA.xx() = mag(a.zx()); -//// tmpA.xy() = mag(a.zy()); -//// tmpA.xz() = mag(a.zz()); -//// } -//// -//// minAngle = 0; -//// -//// if (mag(ayx) >= minAngle) -//// { -//// tmpA.yx() = mag(a.xx()); -//// tmpA.yy() = mag(a.xy()); -//// tmpA.yz() = mag(a.xz()); -//// minAngle = mag(ayx); -//// } -//// if (mag(ayy) >= minAngle) -//// { -//// tmpA.yx() = mag(a.yx()); -//// tmpA.yy() = mag(a.yy()); -//// tmpA.yz() = mag(a.yz()); -//// minAngle = mag(ayy); -//// } -//// if (mag(ayz) >= minAngle) -//// { -//// tmpA.yx() = mag(a.zx()); -//// tmpA.yy() = mag(a.zy()); -//// tmpA.yz() = mag(a.zz()); -//// } -//// -//// minAngle = 0; -//// -//// if (mag(azx) >= minAngle) -//// { -//// tmpA.zx() = mag(a.xx()); -//// tmpA.zy() = mag(a.xy()); -//// tmpA.zz() = mag(a.xz()); -//// minAngle = mag(azx); -//// } -//// if (mag(azy) >= minAngle) -//// { -//// tmpA.zx() = mag(a.yx()); -//// tmpA.zy() = mag(a.yy()); -//// tmpA.zz() = mag(a.yz()); -//// minAngle = mag(azy); -//// } -//// if (mag(azz) >= minAngle) -//// { -//// tmpA.zx() = mag(a.zx()); -//// tmpA.zy() = mag(a.zy()); -//// tmpA.zz() = mag(a.zz()); -//// } -//// -//// alignments[aI] = tmpA; -//// } -// -// scalar nearest = 0; -// -//// Info<< nl << "Point " << pt << endl; -//// -//// FixedList<quaternion, 4> qAlignments; -//// forAll(qAlignments, aI) -//// { -////// Info<< " Direction " << aI << endl; -////// Info<< " Rot tensor" << alignments[aI] << endl; -//// qAlignments[aI] = quaternion(alignments[aI]); -//// qAlignments[aI].normalize(); -////// Info<< " Quaternion: " << qAlignments[aI] << endl; -////// Info<< " Rot tensor from quat: " << qAlignments[aI].R() -////// << endl; -//// } -// -// tensor alignment = Foam::tensor::zero; -// forAll(bary, pI) -// { -//// alignment += bary[pI]*ch->vertex(pI)->alignment(); -// -//// alignment += bary[pI]*alignments[pI]; -// -// // Try slerp with quaternions -// -// // Find nearest point -// if (bary[pI] > nearest) -// { -// alignment = ch->vertex(pI)->alignment(); -// nearest = bary[pI]; -// } -// } -// -//// quaternion alignment; -// -//// alignment = qAlignments[0]*bary[0] -//// + qAlignments[1]*bary[1] -//// + qAlignments[2]*bary[2] -//// + qAlignments[3]*bary[3]; -// -//// alignment = -//// slerp(qAlignments[0], qAlignments[1], bary[0]+bary[1]+bary[2]); -//// alignment = slerp(alignment, qAlignments[2], bary[0]+bary[1]+bary[2]); -//// alignment = slerp(alignment, qAlignments[3], bary[0]+bary[1]+bary[2]); -//// alignment = -//// slerp(alignment, qAlignments[0], bary[0]/(bary[0]+bary[1]+bary[2])); -// -//// Info<< " Interp alignment : " << alignment << endl; -//// Info<< " Interp rot tensor: " << alignment.R() << endl; -// -// return alignment; -//} -// -// -//void Foam::surfaceControl::cellSizeAndAlignment -//( -// const point& pt, -// scalar& size, -// tensor& alignment -//) const -//{ -// scalarList bary; -// Cell_handle ch; -// -// triangulatedMesh_().barycentricCoords(pt, bary, ch); -// -// size = 0; -// forAll(bary, pI) -// { -// size += bary[pI]*ch->vertex(pI)->size(); -// } -// -//// alignment = Foam::tensor::zero; -//// forAll(bary, pI) -//// { -//// alignment += bary[pI]*ch->vertex(pI)->alignment(); -//// } -// -// alignment = cellAlignment(pt); -//} - -void Foam::searchableSurfaceControl::initialVertices -( - pointField& pts, - scalarField& sizes, - triadField& alignments -) const -{ - pts = searchableSurface_.points(); - sizes.setSize(pts.size()); - alignments.setSize(pts.size()); - - const scalar nearFeatDistSqrCoeff = 1e-8; - - forAll(pts, pI) - { - // Is the point in the extendedFeatureEdgeMesh? If so get the - // point normal, otherwise get the surface normal from - // searchableSurface - - pointIndexHit info; - label infoFeature; - allGeometry_.findFeaturePointNearest - ( - pts[pI], - nearFeatDistSqrCoeff, - info, - infoFeature - ); - - autoPtr<triad> pointAlignment; - - if (info.hit()) - { - const extendedFeatureEdgeMesh& features = - allGeometry_.features()[infoFeature]; - - vectorField norms = features.featurePointNormals(info.index()); - - // Create a triad from these norms. - pointAlignment.set(new triad()); - forAll(norms, nI) - { - pointAlignment() += norms[nI]; - } - - pointAlignment().normalize(); - pointAlignment().orthogonalize(); - } - else - { - allGeometry_.findEdgeNearest - ( - pts[pI], - nearFeatDistSqrCoeff, - info, - infoFeature - ); - - if (info.hit()) - { - const extendedFeatureEdgeMesh& features = - allGeometry_.features()[infoFeature]; - - vectorField norms = features.edgeNormals(info.index()); - - // Create a triad from these norms. - pointAlignment.set(new triad()); - forAll(norms, nI) - { - pointAlignment() += norms[nI]; - } - - pointAlignment().normalize(); - pointAlignment().orthogonalize(); - } - else - { - pointField ptField(1, pts[pI]); - scalarField distField(1, nearFeatDistSqrCoeff); - List<pointIndexHit> infoList(1, pointIndexHit()); - - searchableSurface_.findNearest(ptField, distField, infoList); - - vectorField normals(1); - searchableSurface_.getNormal(infoList, normals); - - pointAlignment.set(new triad(normals[0])); - } - } - - if (!cellSizeFunction_().cellSize(pts[pI], sizes[pI])) - { - FatalErrorIn - ( - "Foam::searchableSurfaceControl::initialVertices" - "(pointField&, scalarField&, tensorField&)" - ) << "Could not calculate cell size" - << abort(FatalError); - } - - alignments[pI] = pointAlignment(); - } -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/searchableSurfaceControl/searchableSurfaceControl.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/searchableSurfaceControl/searchableSurfaceControl.H deleted file mode 100644 index 7edc26cdc4cbdff5187f0c528c1000e59c6562f7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellShapeControl/cellSizeAndAlignmentControl/searchableSurfaceControl/searchableSurfaceControl.H +++ /dev/null @@ -1,173 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::searchableSurfaceControl - -Description - -SourceFiles - searchableSurfaceControl.C - -\*---------------------------------------------------------------------------*/ - -#ifndef searchableSurfaceControl_H -#define searchableSurfaceControl_H - -#include "cellSizeFunction.H" -#include "triad.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - - -/*---------------------------------------------------------------------------*\ - Class surfaceControl Declaration -\*---------------------------------------------------------------------------*/ - -class searchableSurfaceControl -: - public cellSizeAndAlignmentControl -{ - // Private data - - //- Name of the surface - const word surfaceName_; - - //- Reference to the searchableSurface object holding the geometry data - const searchableSurface& searchableSurface_; - - const conformationSurfaces& allGeometry_; - - autoPtr<cellSizeFunction> cellSizeFunction_; - - -// const conformationSurfaces& geometryToConformTo_; -// -// //- Indices of surfaces in allGeometry that are to be conformed to -// labelList surfaces_; -// -// //- A list of all of the cellSizeFunction objects -// PtrList<cellSizeFunction> cellSizeFunctions_; -// -// autoPtr<triangulatedMesh> triangulatedMesh_; -// -// -// // Private Member Functions -// -// //- -// tensor requiredAlignment -// ( -// const point& pt, -// const vectorField& ptNormals -// ) const; - - //- Disallow default bitwise copy construct - searchableSurfaceControl(const searchableSurfaceControl&); - - //- Disallow default bitwise assignment - void operator=(const searchableSurfaceControl&); - - -public: - - //- Runtime type information - TypeName("searchableSurfaceControl"); - - - // Constructors - - //- Construct from dictionary and references to conformalVoronoiMesh and - // searchableSurfaces - searchableSurfaceControl - ( - const Time& runTime, - const word& name, - const dictionary& controlFunctionDict, - const conformationSurfaces& allGeometry - ); - - //- Destructor - ~searchableSurfaceControl(); - - - // Member Functions - - // Access - -// //- Return reference to the searchableSurfaces object containing -// // all of the geometry -// inline const searchableSurfaces& geometry() const; -// -// //- Return the surface indices -// inline const labelList& surfaces() const; -// -// -// // Query -// -// //- Return the cell size at the given location -// virtual scalar cellSize(const point& pt) const; -// -// //- Return the cell alignment at the given location -// virtual tensor cellAlignment(const point& pt) const; -// -// virtual void cellSizeAndAlignment -// ( -// const point& pt, -// scalar& size, -// tensor& alignment -// ) const; - - virtual void initialVertices - ( - pointField& pts, - scalarField& sizes, - triadField& alignments - ) const; - - const cellSizeFunction& sizeFunction() const - { - return cellSizeFunction_(); - } - - virtual label priority() const - { - return cellSizeFunction_().priority(); - } - - // Edit - -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C deleted file mode 100644 index 5b35e7b301bb4d659be1bb46a4b5ce1021750ad0..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C +++ /dev/null @@ -1,146 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "cellSizeFunction.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(cellSizeFunction, 0); - defineRunTimeSelectionTable(cellSizeFunction, dictionary); - - scalar cellSizeFunction::snapToSurfaceTol_ = 1e-10; -} - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cellSizeFunction::cellSizeFunction -( - const word& type, - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface -) -: - dictionary(cellSizeFunctionDict), - surface_(surface), - surfaceCellSizeFunction_ - ( - surfaceCellSizeFunction::New - ( - cellSizeFunctionDict, - surface - ) - ), - coeffsDict_(subDict(type + "Coeffs")), - sideMode_(), - priority_(readLabel(cellSizeFunctionDict.lookup("priority"))) -{ - word mode = cellSizeFunctionDict.lookup("mode"); - - if (surface_.hasVolumeType()) - { - if (mode == "inside") - { - sideMode_ = smInside; - } - else if (mode == "outside") - { - sideMode_ = smOutside; - } - else if (mode == "bothSides") - { - sideMode_ = rmBothsides; - } - else - { - FatalErrorIn("searchableSurfaceControl::searchableSurfaceControl") - << "Unknown mode, expected: inside, outside or bothSides" << nl - << exit(FatalError); - } - } - else - { - if (mode != "bothSides") - { - WarningIn("searchableSurfaceControl::searchableSurfaceControl") - << "surface does not support volumeType, defaulting mode to " - << "bothSides." - << endl; - } - - sideMode_ = rmBothsides; - } -} - - -// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // - -Foam::autoPtr<Foam::cellSizeFunction> Foam::cellSizeFunction::New -( - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface -) -{ - word cellSizeFunctionTypeName - ( - cellSizeFunctionDict.lookup("cellSizeFunction") - ); - - Info<< " Selecting cellSizeFunction " << cellSizeFunctionTypeName - << endl; - - dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(cellSizeFunctionTypeName); - - if (cstrIter == dictionaryConstructorTablePtr_->end()) - { - FatalErrorIn - ( - "cellSizeFunction::New(dictionary&, " - "const conformalVoronoiMesh&, const searchableSurface&)" - ) << "Unknown cellSizeFunction type " - << cellSizeFunctionTypeName - << endl << endl - << "Valid cellSizeFunction types are :" << endl - << dictionaryConstructorTablePtr_->toc() - << exit(FatalError); - } - - return autoPtr<cellSizeFunction> - ( - cstrIter()(cellSizeFunctionDict, surface) - ); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cellSizeFunction::~cellSizeFunction() -{} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.H deleted file mode 100644 index 6c93f8e260238d88ae6b8e8344a9d657d4c35f56..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.H +++ /dev/null @@ -1,201 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cellSizeFunction - -Description - Abstract base class for specifying target cell sizes - -SourceFiles - cellSizeFunction.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cellSizeFunction_H -#define cellSizeFunction_H - -#include "point.H" -#include "conformalVoronoiMesh.H" -#include "searchableSurface.H" -#include "dictionary.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" -#include "surfaceCellSizeFunction.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class cellSizeFunction Declaration -\*---------------------------------------------------------------------------*/ - -class cellSizeFunction -: - public dictionary -{ - -public: - - //- Surface side mode - enum sideMode - { - smInside, // Control inside the surface - smOutside, // Control outside the surface - rmBothsides // Control on both sides of a surface - }; - - //- Runtime type information - TypeName("cellSizeFunction"); - - -protected: - - // Static data - - //- Point closeness tolerance to a surface where the function "snaps" to - // including the surface - static scalar snapToSurfaceTol_; - - - // Protected data - - //- Reference to the searchableSurface that cellSizeFunction - // relates to - const searchableSurface& surface_; - - //- Cell size at the surface - scalarField surfaceCellSize_; - - autoPtr<surfaceCellSizeFunction> surfaceCellSizeFunction_; - - //- Method details dictionary - dictionary coeffsDict_; - - //- Mode of size specification, i.e. inside, outside or bothSides - sideMode sideMode_; - - label priority_; - - -private: - - // Private Member Functions - - //- Disallow default bitwise copy construct - cellSizeFunction(const cellSizeFunction&); - - //- Disallow default bitwise assignment - void operator=(const cellSizeFunction&); - - -public: - - // Declare run-time constructor selection table - - declareRunTimeSelectionTable - ( - autoPtr, - cellSizeFunction, - dictionary, - ( - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface - ), - (cellSizeFunctionDict, surface) - ); - - - // Constructors - - //- Construct from components - cellSizeFunction - ( - const word& type, - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface - ); - - - // Selectors - - //- Return a reference to the selected cellSizeFunction - static autoPtr<cellSizeFunction> New - ( - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~cellSizeFunction(); - - - // Member Functions - - //- Const access to the details dictionary - inline const dictionary& coeffsDict() const - { - return coeffsDict_; - } - - //- Modify scalar argument to the cell size specified by function. - // Return a boolean specifying if the function was used, i.e. false if - // the point was not in range of the surface for a spatially varying - // size. - virtual bool cellSize - ( - const point& pt, - scalar& size - ) const = 0; - - - virtual bool setCellSize - ( - const pointField& pts - ) - { - WarningIn("cellSizeFunction::setCellSize(const pointField&)") - << "Not overloaded." - << endl; - return false; - } - - label priority() const - { - return priority_; - } -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.C deleted file mode 100644 index fc4c4223ef754f7c4fdec46b1256b9e2ac25b294..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.C +++ /dev/null @@ -1,200 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "linearDistance.H" -#include "addToRunTimeSelectionTable.H" -#include "triSurfaceMesh.H" -#include "triSurfaceFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(linearDistance, 0); -addToRunTimeSelectionTable(cellSizeFunction, linearDistance, dictionary); - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -linearDistance::linearDistance -( - const dictionary& initialPointsDict, - const searchableSurface& surface -) -: - cellSizeFunction(typeName, initialPointsDict, surface), - distanceCellSize_(readScalar(coeffsDict().lookup("distanceCellSize"))), - distance_(readScalar(coeffsDict().lookup("distance"))), - distanceSqr_(sqr(distance_)) -{} - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -scalar linearDistance::sizeFunction -( - const point& pt, - scalar d, - label index -) const -{ - const scalar interpolatedSize - = surfaceCellSizeFunction_().interpolate(pt, index); - - scalar gradient - = (distanceCellSize_ - interpolatedSize) - /distance_; - - scalar size = gradient*d + interpolatedSize; - - return size; -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -bool linearDistance::cellSize(const point& pt, scalar& size) const -{ - size = 0; - - List<pointIndexHit> hits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, distanceSqr_), - hits - ); - - const pointIndexHit& hitInfo = hits[0]; - - if (hitInfo.hit()) - { - const point& hitPt = hitInfo.hitPoint(); - const label hitIndex = hitInfo.index(); - - const scalar dist = mag(pt - hitPt); - - if (sideMode_ == rmBothsides) - { - size = sizeFunction(hitPt, dist, hitIndex); - - return true; - } - - // If the nearest point is essentially on the surface, do not do a - // getVolumeType calculation, as it will be prone to error. - if (dist < snapToSurfaceTol_) - { - size = sizeFunction(hitPt, 0, hitIndex); - - return true; - } - - pointField ptF(1, pt); - List<searchableSurface::volumeType> vTL; - - surface_.getVolumeType(ptF, vTL); - - bool functionApplied = false; - - if - ( - sideMode_ == smInside - && vTL[0] == searchableSurface::INSIDE - ) - { - size = sizeFunction(hitPt, dist, hitIndex); - - functionApplied = true; - } - else if - ( - sideMode_ == smOutside - && vTL[0] == searchableSurface::OUTSIDE - ) - { - size = sizeFunction(hitPt, dist, hitIndex); - - functionApplied = true; - } - - return functionApplied; - } - - return false; -} - - -bool linearDistance::setCellSize(const pointField& pts) -{ - labelHashSet surfaceAlreadyHit(surfaceCellSize_.size()); - - forAll(pts, ptI) - { - const Foam::point& pt = pts[ptI]; - - List<pointIndexHit> hits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, distanceSqr_), - hits - ); - - const label surfHitI = hits[0].index(); - - if - ( - hits[0].hit() - && !surfaceAlreadyHit.found(surfHitI) - ) - { - // Halving cell size is arbitrary - surfaceCellSizeFunction_().refineSurfaceSize(surfHitI); - - surfaceAlreadyHit.insert(surfHitI); - } - } - - // Force recalculation of the interpolation - if (!pts.empty()) - { - surfaceCellSizeFunction_().recalculateInterpolation(); - } - - return true; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.H deleted file mode 100644 index d30a6a8045991d02255f782b954e4f7af9ae1386..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.H +++ /dev/null @@ -1,121 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::linearDistance - -Description - -SourceFiles - linearDistance.C - -\*---------------------------------------------------------------------------*/ - -#ifndef linearDistance_H -#define linearDistance_H - -#include "cellSizeFunction.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class linearDistance Declaration -\*---------------------------------------------------------------------------*/ - -class linearDistance -: - public cellSizeFunction -{ - -private: - - // Private data - - //- cell size at distance_ from the surface - scalar distanceCellSize_; - - //- distance from the surface to control over - scalar distance_; - - //- distance squared - scalar distanceSqr_; - - - // Private Member Functions - - //- Calculate the cell size as a function of the given distance - scalar sizeFunction(const point& pt, scalar d, label index) const; - - -public: - - //- Runtime type information - TypeName("linearDistance"); - - // Constructors - - //- Construct from components - linearDistance - ( - const dictionary& initialPointsDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~linearDistance() - {} - - - // Member Functions - - //- Modify scalar argument to the cell size specified by function. - // Return a boolean specifying if the function was used, i.e. false if - // the point was not in range of the surface for a spatially varying - // size. - virtual bool cellSize - ( - const point& pt, - scalar& size - ) const; - - //- Adapt local cell size. Return true if anything changed. - virtual bool setCellSize - ( - const pointField& pts - ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.C deleted file mode 100644 index 5f41979bc764d14260e803b74f646219630a9529..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.C +++ /dev/null @@ -1,142 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "linearSpatial.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(linearSpatial, 0); -addToRunTimeSelectionTable(cellSizeFunction, linearSpatial, dictionary); - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -linearSpatial::linearSpatial -( - const dictionary& initialPointsDict, - const searchableSurface& surface -) -: - cellSizeFunction(typeName, initialPointsDict, surface), - referencePoint_(coeffsDict().lookup("referencePoint")), - referenceCellSize_(readScalar(coeffsDict().lookup("referenceCellSize"))), - direction_(coeffsDict().lookup("direction")), - cellSizeGradient_(readScalar(coeffsDict().lookup("cellSizeGradient"))) -{ - direction_ /= mag(direction_); -} - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -scalar linearSpatial::sizeFunction(const point& pt) const -{ - return - referenceCellSize_ - + ((pt - referencePoint_) & direction_)*cellSizeGradient_; -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -bool linearSpatial::cellSize -( - const point& pt, - scalar& size -) const -{ - if (sideMode_ == rmBothsides) - { - size = sizeFunction(pt); - - return true; - } - - size = 0; - - List<pointIndexHit> hits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, sqr(snapToSurfaceTol_)), - hits - ); - - const pointIndexHit& hitInfo = hits[0]; - - // If the nearest point is essentially on the surface, do not do a - // getVolumeType calculation, as it will be prone to error. - if (hitInfo.hit()) - { - size = sizeFunction(pt); - - return true; - } - - pointField ptF(1, pt); - List<searchableSurface::volumeType> vTL; - - surface_.getVolumeType(ptF, vTL); - - bool functionApplied = false; - - if - ( - sideMode_ == smInside - && vTL[0] == searchableSurface::INSIDE - ) - { - size = sizeFunction(pt); - - functionApplied = true; - } - else if - ( - sideMode_ == smOutside - && vTL[0] == searchableSurface::OUTSIDE - ) - { - size = sizeFunction(pt); - - functionApplied = true; - } - - return functionApplied; - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.H deleted file mode 100644 index 0f413b289a950c40ba3bb2b068c9bea97b92c272..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.H +++ /dev/null @@ -1,119 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::linearSpatial - -Description - -SourceFiles - linearSpatial.C - -\*---------------------------------------------------------------------------*/ - -#ifndef linearSpatial_H -#define linearSpatial_H - -#include "cellSizeFunction.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class linearSpatial Declaration -\*---------------------------------------------------------------------------*/ - -class linearSpatial -: - public cellSizeFunction -{ - -private: - - // Private data - - //- Reference point for spatial size grading - point referencePoint_; - - //- Cell size at reference point - scalar referenceCellSize_; - - //- Direction of cell size grading, stored as unit vector, may be - // supplied with any magnitude - vector direction_; - - //- Gradient of cell size change in direction of direction_ - scalar cellSizeGradient_; - - - // Private Member Functions - - //- Calculate the cell size as a function of the given position - scalar sizeFunction(const point& pt) const; - - -public: - - //- Runtime type information - TypeName("linearSpatial"); - - // Constructors - - //- Construct from components - linearSpatial - ( - const dictionary& initialPointsDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~linearSpatial() - {} - - - // Member Functions - - //- Modify scalar argument to the cell size specified by function. - // Return a boolean specifying if the function was used, i.e. false if - // the point was not in range of the surface for a spatially varying - // size. - virtual bool cellSize - ( - const point& pt, - scalar& size - ) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.C deleted file mode 100644 index 2a711f3e0b6f66958c9cfae41b8e9b0cd343d659..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.C +++ /dev/null @@ -1,224 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "surfaceOffsetLinearDistance.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(surfaceOffsetLinearDistance, 0); -addToRunTimeSelectionTable -( - cellSizeFunction, - surfaceOffsetLinearDistance, - dictionary -); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -surfaceOffsetLinearDistance::surfaceOffsetLinearDistance -( - const dictionary& initialPointsDict, - const searchableSurface& surface -) -: - cellSizeFunction(typeName, initialPointsDict, surface), - distanceCellSize_(readScalar(coeffsDict().lookup("distanceCellSize"))), - surfaceOffset_(readScalar(coeffsDict().lookup("surfaceOffset"))), - totalDistance_(), - totalDistanceSqr_() -{ - if - ( - coeffsDict().found("totalDistance") - || coeffsDict().found("linearDistance") - ) - { - if - ( - coeffsDict().found("totalDistance") - && coeffsDict().found("linearDistance") - ) - { - FatalErrorIn - ( - "surfaceOffsetLinearDistance::surfaceOffsetLinearDistance" - "(" - "const dictionary& initialPointsDict, " - "const conformalVoronoiMesh& cvMesh, " - "const searchableSurface& surface" - ")" - ) - << "totalDistance and linearDistance found, " - << "specify one or other, not both." - << nl << exit(FatalError) << endl; - } - - if (coeffsDict().found("totalDistance")) - { - totalDistance_ = readScalar(coeffsDict().lookup("totalDistance")); - } - else - { - totalDistance_ = - readScalar(coeffsDict().lookup("linearDistance")) - + surfaceOffset_; - } - } - else - { - FatalErrorIn - ( - "surfaceOffsetLinearDistance::surfaceOffsetLinearDistance" - "(" - "const dictionary& initialPointsDict, " - "const conformalVoronoiMesh& cvMesh, " - "const searchableSurface& surface" - ")" - ) - << "totalDistance or linearDistance not found." - << nl << exit(FatalError) << endl; - } - - totalDistanceSqr_ = sqr(totalDistance_); -} - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -scalar surfaceOffsetLinearDistance::sizeFunction -( - const point& pt, - scalar d, - label index -) const -{ - const scalar interpolatedSize - = surfaceCellSizeFunction_().interpolate(pt, index); - - if (d <= surfaceOffset_) - { - return interpolatedSize; - } - - scalar gradient = - (distanceCellSize_ - interpolatedSize) - /(totalDistance_ - surfaceOffset_); - - scalar intercept = interpolatedSize - gradient*surfaceOffset_; - - return gradient*d + intercept; -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -bool surfaceOffsetLinearDistance::cellSize -( - const point& pt, - scalar& size -) const -{ - size = 0; - - List<pointIndexHit> hits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, totalDistanceSqr_), - hits - ); - - const pointIndexHit& hitInfo = hits[0]; - - if (hitInfo.hit()) - { - const point& hitPt = hitInfo.hitPoint(); - const label hitIndex = hitInfo.index(); - - const scalar dist = mag(pt - hitPt); - - if (sideMode_ == rmBothsides) - { - size = sizeFunction(hitPt, dist, hitIndex); - - return true; - } - - // If the nearest point is essentially on the surface, do not do a - // getVolumeType calculation, as it will be prone to error. - if (mag(pt - hitInfo.hitPoint()) < snapToSurfaceTol_) - { - size = sizeFunction(hitPt, 0, hitIndex); - - return true; - } - - pointField ptF(1, pt); - List<searchableSurface::volumeType> vTL; - - surface_.getVolumeType(ptF, vTL); - - bool functionApplied = false; - - if - ( - sideMode_ == smInside - && vTL[0] == searchableSurface::INSIDE - ) - { - size = sizeFunction(hitPt, dist, hitIndex); - - functionApplied = true; - } - else if - ( - sideMode_ == smOutside - && vTL[0] == searchableSurface::OUTSIDE - ) - { - size = sizeFunction(hitPt, dist, hitIndex); - - functionApplied = true; - } - - return functionApplied; - } - - return false; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.H deleted file mode 100644 index 520435237fbbf9d0fc700c6d9f22c2bdee0168d0..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.H +++ /dev/null @@ -1,119 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::surfaceOffsetLinearDistance - -Description - -SourceFiles - surfaceOffsetLinearDistance.C - -\*---------------------------------------------------------------------------*/ - -#ifndef surfaceOffsetLinearDistance_H -#define surfaceOffsetLinearDistance_H - -#include "cellSizeFunction.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class surfaceOffsetLinearDistance Declaration -\*---------------------------------------------------------------------------*/ - -class surfaceOffsetLinearDistance -: - public cellSizeFunction -{ - -private: - - // Private data - - //- cell size at distance_ from the surface - scalar distanceCellSize_; - - //- Offset distance from surface for constant size portion - scalar surfaceOffset_; - - //- Total distance from the surface to control over (distance + - // surfaceOffset) - scalar totalDistance_; - - //- totalDistance squared - scalar totalDistanceSqr_; - - - // Private Member Functions - - //- Calculate the cell size as a function of the given distance - scalar sizeFunction(const point& pt, scalar d, label index) const; - - -public: - - //- Runtime type information - TypeName("surfaceOffsetLinearDistance"); - - // Constructors - - //- Construct from components - surfaceOffsetLinearDistance - ( - const dictionary& initialPointsDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~surfaceOffsetLinearDistance() - {} - - - // Member Functions - - //- Modify scalar argument to the cell size specified by function. - // Return a boolean specifying if the function was used, i.e. false if - // the point was not in range of the surface for a spatially varying - // size. - virtual bool cellSize - ( - const point& pt, - scalar& size - ) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C deleted file mode 100644 index e2744eeb2fe544aad3e715bf774d619402a5ee0d..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C +++ /dev/null @@ -1,175 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "uniform.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(uniform, 0); -addToRunTimeSelectionTable(cellSizeFunction, uniform, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -uniform::uniform -( - const dictionary& initialPointsDict, - const searchableSurface& surface -) -: - cellSizeFunction(typeName, initialPointsDict, surface) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -bool uniform::cellSize -( - const point& pt, - scalar& size -) const -{ - List<pointIndexHit> hits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, sqr(GREAT)), - hits - ); - - const pointIndexHit& hitInfo = hits[0]; - - if (hitInfo.hit()) - { - const point& hitPt = hitInfo.hitPoint(); - const label index = hitInfo.index(); - - if (sideMode_ == rmBothsides) - { - size = surfaceCellSizeFunction_().interpolate(hitPt, index); - - return true; - } - - size = 0; - - List<pointIndexHit> closeToSurfaceHits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, sqr(snapToSurfaceTol_)), - closeToSurfaceHits - ); - - const pointIndexHit& closeToSurface = closeToSurfaceHits[0]; - - // If the nearest point is essentially on the surface, do not do a - // getVolumeType calculation, as it will be prone to error. - if (closeToSurface.hit()) - { - size = surfaceCellSizeFunction_().interpolate(hitPt, index); - - return true; - } - - pointField ptF(1, pt); - List<searchableSurface::volumeType> vTL(1); - - surface_.getVolumeType(ptF, vTL); - - bool functionApplied = false; - - if - ( - sideMode_ == smInside - && vTL[0] == searchableSurface::INSIDE - ) - { - size = surfaceCellSizeFunction_().interpolate(hitPt, index); - - functionApplied = true; - } - else if - ( - sideMode_ == smOutside - && vTL[0] == searchableSurface::OUTSIDE - ) - { - size = surfaceCellSizeFunction_().interpolate(hitPt, index); - - functionApplied = true; - } - - return functionApplied; - } - - return false; -} - - -bool uniform::setCellSize -( - const pointField& pts -) -{ -// labelHashSet surfaceAlreadyHit(cellSize_.size()); -// -// forAll(pts, ptI) -// { -// const Foam::point& pt = pts[ptI]; -// -// List<pointIndexHit> hits; -// -// surface_.findNearest -// ( -// pointField(1, pt), -// scalarField(1, sqr(GREAT)), -// hits -// ); -// -// if (hits[0].hit() && !surfaceAlreadyHit.found(hits[0].index())) -// { -// surfaceCellSizeFunction_().refineCellSize(hits[0].index()); -// -// surfaceAlreadyHit.insert(hits[0].index()); -// } -// } - - return true; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.H deleted file mode 100644 index 726d506992e3dfe3436da05c2bf730d7b73a19b5..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.H +++ /dev/null @@ -1,106 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::uniform - -Description - -SourceFiles - uniform.C - -\*---------------------------------------------------------------------------*/ - -#ifndef uniform_H -#define uniform_H - -#include "cellSizeFunction.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class uniform Declaration -\*---------------------------------------------------------------------------*/ - -class uniform -: - public cellSizeFunction -{ - -private: - - // Private data - - -public: - - //- Runtime type information - TypeName("uniform"); - - // Constructors - - //- Construct from components - uniform - ( - const dictionary& initialPointsDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~uniform() - {} - - - // Member Functions - - //- Modify scalar argument to the cell size specified by function. - // Return a boolean specifying if the function was used, i.e. false if - // the point was not in range of the surface for a spatially varying - // size. - virtual bool cellSize - ( - const point& pt, - scalar& size - ) const; - - //- Adapt local cell size. Return true if anything changed. - virtual bool setCellSize - ( - const pointField& pts - ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.C deleted file mode 100644 index 47e8ecfe43db2a6fbf62c68431066c11e6538e03..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.C +++ /dev/null @@ -1,164 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "uniformDistance.H" -#include "addToRunTimeSelectionTable.H" -#include "dimensionSet.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(uniformDistance, 0); -addToRunTimeSelectionTable(cellSizeFunction, uniformDistance, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -uniformDistance::uniformDistance -( - const dictionary& initialPointsDict, - const searchableSurface& surface -) -: - cellSizeFunction(typeName, initialPointsDict, surface), - distance_(readScalar(coeffsDict().lookup("distance"))), - distanceSqr_(sqr(distance_)) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -bool uniformDistance::cellSize -( - const point& pt, - scalar& size -) const -{ - size = 0; - - List<pointIndexHit> hits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, distanceSqr_), - hits - ); - - const pointIndexHit& hitInfo = hits[0]; - - if (hitInfo.hit()) - { - if (sideMode_ == rmBothsides) - { - size = surfaceCellSizeFunction_().surfaceSize(hitInfo.index()); - - return true; - } - - // If the nearest point is essentially on the surface, do not do a - // getVolumeType calculation, as it will be prone to error. - if (mag(pt - hitInfo.hitPoint()) < snapToSurfaceTol_) - { - size = surfaceCellSizeFunction_().surfaceSize(hitInfo.index()); - - return true; - } - - pointField ptF(1, pt); - List<searchableSurface::volumeType> vTL; - - surface_.getVolumeType(ptF, vTL); - - bool functionApplied = false; - - if - ( - sideMode_ == smInside - && vTL[0] == searchableSurface::INSIDE - ) - { - size = surfaceCellSizeFunction_().surfaceSize(hitInfo.index()); - - functionApplied = true; - } - else if - ( - sideMode_ == smOutside - && vTL[0] == searchableSurface::OUTSIDE - ) - { - size = surfaceCellSizeFunction_().surfaceSize(hitInfo.index()); - - functionApplied = true; - } - - return functionApplied; - } - - return false; -} - - -bool uniformDistance::setCellSize -( - const pointField& pts -) -{ - labelHashSet surfaceAlreadyHit(surface_.size()); - - forAll(pts, ptI) - { - const Foam::point& pt = pts[ptI]; - - List<pointIndexHit> hits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, distanceSqr_), - hits - ); - - if (hits[0].hit() && !surfaceAlreadyHit.found(hits[0].index())) - { - surfaceCellSizeFunction_().refineSurfaceSize(hits[0].index()); - - surfaceAlreadyHit.insert(hits[0].index()); - } - } - - return true; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.H deleted file mode 100644 index 0ffe679e1b310b55b03b39b3132482a2191b0442..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.H +++ /dev/null @@ -1,112 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::uniformDistance - -Description - -SourceFiles - uniformDistance.C - -\*---------------------------------------------------------------------------*/ - -#ifndef uniformDistance_H -#define uniformDistance_H - -#include "cellSizeFunction.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class uniformDistance Declaration -\*---------------------------------------------------------------------------*/ - -class uniformDistance -: - public cellSizeFunction -{ - -private: - - // Private data - - //- Distance - scalar distance_; - - //- Distance squared - scalar distanceSqr_; - - -public: - - //- Runtime type information - TypeName("uniformDistance"); - - // Constructors - - //- Construct from components - uniformDistance - ( - const dictionary& initialPointsDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~uniformDistance() - {} - - - // Member Functions - - //- Modify scalar argument to the cell size specified by function. - // Return a boolean specifying if the function was used, i.e. false if - // the point was not in range of the surface for a spatially varying - // size. - virtual bool cellSize - ( - const point& pt, - scalar& size - ) const; - - //- Adapt local cell size. Return true if anything changed. - virtual bool setCellSize - ( - const pointField& pts - ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.C deleted file mode 100644 index 4a73b4a7c51cc78e1607d3ffd42a2058f2710729..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.C +++ /dev/null @@ -1,292 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "automatic.H" -#include "addToRunTimeSelectionTable.H" -#include "triSurfaceMesh.H" -#include "vtkSurfaceWriter.H" -#include "Time.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(automatic, 0); - addToRunTimeSelectionTable(cellSizeCalculationType, automatic, dictionary); -} - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -void Foam::automatic::smoothField(triSurfaceScalarField& surf) -{ - label nSmoothingIterations = 10; - - for (label iter = 0; iter < nSmoothingIterations; ++iter) - { - const pointField& faceCentres = surface_.faceCentres(); - - forAll(surf, sI) - { - const labelList& faceFaces = surface_.faceFaces()[sI]; - - const point& fC = faceCentres[sI]; - const scalar value = surf[sI]; - - scalar newValue = 0; - scalar totalDist = 0; - - label nFaces = 0; - - forAll(faceFaces, fI) - { - const label faceLabel = faceFaces[fI]; - const point& faceCentre = faceCentres[faceLabel]; - - const scalar faceValue = surf[faceLabel]; - const scalar distance = mag(faceCentre - fC); - - newValue += faceValue/distance; - - totalDist += 1.0/distance; - - if (value < faceValue) - { - nFaces++; - } - } - - // Do not smooth out the peak values - if (nFaces == faceFaces.size()) - { - //continue; - } - - surf[sI] = newValue/totalDist; - } - } -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::automatic::automatic -( - const dictionary& cellSizeCalcTypeDict, - const triSurfaceMesh& surface -) -: - cellSizeCalculationType(typeName, cellSizeCalcTypeDict, surface), - coeffsDict_(cellSizeCalcTypeDict.subDict(typeName + "Coeffs")), - surface_(surface), - surfaceName_(surface.searchableSurface::name()), - readCurvature_(Switch(coeffsDict_.lookup("curvature"))), - curvatureFile_(coeffsDict_.lookup("curvatureFile")), - readFeatureProximity_(Switch(coeffsDict_.lookup("featureProximity"))), - featureProximityFile_(coeffsDict_.lookup("featureProximityFile")), - readInternalCloseness_(Switch(coeffsDict_.lookup("internalCloseness"))), - internalClosenessFile_(coeffsDict_.lookup("internalClosenessFile")), - curvatureCellSizeFactor_ - ( - readScalar(coeffsDict_.lookup("curvatureCellSizeFactor")) - ), - maximumCellSize_ - ( - readScalar(coeffsDict_.lookup("maximumCellSize")) - ) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -Foam::triSurfaceScalarField Foam::automatic::load() -{ - Info<< indent << "Calculating cell size on surface: " - << surfaceName_ << endl; - - triSurfaceScalarField surfaceCellSize - ( - IOobject - ( - surfaceName_ + ".cellSize", - surface_.searchableSurface::time().constant(), - "triSurface", - surface_.searchableSurface::time(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - surface_, - dimLength, - scalarField(surface_.size(), maximumCellSize_) - ); - - if (readCurvature_) - { - Info<< indent << "Reading curvature : " - << curvatureFile_ << endl; - - triSurfacePointScalarField curvature - ( - IOobject - ( - curvatureFile_, - surface_.searchableSurface::time().constant(), - "triSurface", - surface_.searchableSurface::time(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - surface_, - dimLength, - true - ); - - const List<labelledTri>& localFaces = surface_.localFaces(); - const labelList& meshPoints = surface_.meshPoints(); - - forAll(surfaceCellSize, fI) - { - const labelList& facePoints = localFaces[fI].triFaceFace(); - - scalar interpolatedCurvatureToFace = 0.0; - - forAll(facePoints, fpI) - { - interpolatedCurvatureToFace - += curvature[meshPoints[facePoints[fpI]]]; - } - - interpolatedCurvatureToFace /= facePoints.size(); - - surfaceCellSize[fI] = - min - ( - 1.0 - /max - ( - (1.0/curvatureCellSizeFactor_) - *interpolatedCurvatureToFace, - 1.0/maximumCellSize_ - ), - surfaceCellSize[fI] - ); - } - } - - if (readInternalCloseness_) - { - Info<< indent << "Reading internal closeness: " - << internalClosenessFile_ << endl; - - triSurfaceScalarField internalCloseness - ( - IOobject - ( - internalClosenessFile_, - surface_.searchableSurface::time().constant(), - "triSurface", - surface_.searchableSurface::time(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - surface_, - dimLength, - true - ); - - forAll(surfaceCellSize, fI) - { - surfaceCellSize[fI] = - min - ( - internalCloseness[fI], - surfaceCellSize[fI] - ); - } - } - - if (readFeatureProximity_) - { - Info<< indent << "Reading feature proximity : " - << featureProximityFile_ << endl; - - triSurfaceScalarField featureProximity - ( - IOobject - ( - featureProximityFile_, - surface_.searchableSurface::time().constant(), - "triSurface", - surface_.searchableSurface::time(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - surface_, - dimLength, - true - ); - - forAll(surfaceCellSize, fI) - { - surfaceCellSize[fI] = - min - ( - featureProximity[fI], - surfaceCellSize[fI] - ); - } - } - - smoothField(surfaceCellSize); - - surfaceCellSize.write(); - - if (debug) - { - faceList faces(surface_.size()); - - forAll(surface_, fI) - { - faces[fI] = surface_.triSurface::operator[](fI).triFaceFace(); - } - - vtkSurfaceWriter().write - ( - surface_.searchableSurface::time().constant()/"triSurface", - surfaceName_, - surface_.points(), - faces, - "cellSize", - surfaceCellSize, - false, - true - ); - } - - return surfaceCellSize; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.H deleted file mode 100644 index 4288176e8f3ddccd42dcf074cb5bd2f21d260756..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/automatic/automatic.H +++ /dev/null @@ -1,129 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::automatic - -Description - -SourceFiles - automatic.C - -\*---------------------------------------------------------------------------*/ - -#ifndef automatic_H -#define automatic_H - -#include "cellSizeCalculationType.H" -#include "triSurfaceFields.H" -#include "PrimitivePatchInterpolation.H" -#include "Switch.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -class triSurfaceMesh; - -/*---------------------------------------------------------------------------*\ - Class automatic Declaration -\*---------------------------------------------------------------------------*/ - -class automatic -: - public cellSizeCalculationType -{ - -private: - - // Private data - - //- Dictionary of coefficients for automatic cell sizing - const dictionary& coeffsDict_; - - //- Reference to the triSurfaceMesh - const triSurfaceMesh& surface_; - - //- Name of the surface. Used to write the cell size field - const word surfaceName_; - - const Switch readCurvature_; - const word curvatureFile_; - - const Switch readFeatureProximity_; - const word featureProximityFile_; - - const Switch readInternalCloseness_; - const word internalClosenessFile_; - - //- The curvature values are multiplied by the inverse of this value to - // get the cell size - const scalar curvatureCellSizeFactor_; - - //- The maximum allowable sell size - const scalar maximumCellSize_; - - - // Private Member Functions - - void smoothField(triSurfaceScalarField& surf); - - -public: - - //- Runtime type information - TypeName("automatic"); - - - // Constructors - - //- Construct from components - automatic - ( - const dictionary& cellSizeCalcTypeDict, - const triSurfaceMesh& surface - ); - - - //- Destructor - virtual ~automatic() - {} - - - // Member Functions - - //- Load the cell size field - virtual triSurfaceScalarField load(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/cellSizeCalculationType/cellSizeCalculationType.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/cellSizeCalculationType/cellSizeCalculationType.C deleted file mode 100644 index b449d46fc66b71d794d69ffa5aeae526f47ea9d8..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/cellSizeCalculationType/cellSizeCalculationType.C +++ /dev/null @@ -1,97 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "cellSizeCalculationType.H" -#include "addToRunTimeSelectionTable.H" -#include "triSurfaceMesh.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(cellSizeCalculationType, 0); - defineRunTimeSelectionTable(cellSizeCalculationType, dictionary); -} - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cellSizeCalculationType::cellSizeCalculationType -( - const word& type, - const dictionary& cellSizeCalculationTypeDict, - const triSurfaceMesh& surface -) -: - cellSizeCalculationTypeDict_(cellSizeCalculationTypeDict) -{} - - -// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // - -Foam::autoPtr<Foam::cellSizeCalculationType> Foam::cellSizeCalculationType::New -( - const dictionary& cellSizeCalculationTypeDict, - const triSurfaceMesh& surface -) -{ - word cellSizeCalculationTypeTypeName - ( - cellSizeCalculationTypeDict.lookup("cellSizeCalculationType") - ); - - Info<< " Selecting cellSizeCalculationType " - << cellSizeCalculationTypeTypeName << endl; - - dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(cellSizeCalculationTypeTypeName); - - if (cstrIter == dictionaryConstructorTablePtr_->end()) - { - FatalErrorIn - ( - "cellSizeCalculationType::New(dictionary&, " - "const conformalVoronoiMesh&, const searchableSurface&)" - ) << "Unknown cellSizeCalculationType type " - << cellSizeCalculationTypeTypeName - << endl << endl - << "Valid cellSizeCalculationType types are :" << endl - << dictionaryConstructorTablePtr_->toc() - << exit(FatalError); - } - - return autoPtr<cellSizeCalculationType> - ( - cstrIter()(cellSizeCalculationTypeDict, surface) - ); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cellSizeCalculationType::~cellSizeCalculationType() -{} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/cellSizeCalculationType/cellSizeCalculationType.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/cellSizeCalculationType/cellSizeCalculationType.H deleted file mode 100644 index 4d59f5c7189906a57d1a3d0fd429b86645647917..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/cellSizeCalculationType/cellSizeCalculationType.H +++ /dev/null @@ -1,134 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cellSizeCalculationType - -Description - Abstract base class for specifying target cell sizes - -SourceFiles - cellSizeCalculationType.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cellSizeCalculationType_H -#define cellSizeCalculationType_H - -#include "searchableSurface.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" -#include "triSurfaceFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -class triSurfaceMesh; - -/*---------------------------------------------------------------------------*\ - Class cellSizeCalculationType Declaration -\*---------------------------------------------------------------------------*/ - -class cellSizeCalculationType -{ - -protected: - - const dictionary& cellSizeCalculationTypeDict_; - - -private: - - // Private Member Functions - - //- Disallow default bitwise copy construct - cellSizeCalculationType(const cellSizeCalculationType&); - - //- Disallow default bitwise assignment - void operator=(const cellSizeCalculationType&); - - -public: - - //- Runtime type information - TypeName("cellSizeCalculationType"); - - - // Declare run-time constructor selection table - - declareRunTimeSelectionTable - ( - autoPtr, - cellSizeCalculationType, - dictionary, - ( - const dictionary& cellSizeCalculationTypeDict, - const triSurfaceMesh& surface - ), - (cellSizeCalculationTypeDict, surface) - ); - - - // Constructors - - //- Construct from components - cellSizeCalculationType - ( - const word& type, - const dictionary& cellSizeCalculationTypeDict, - const triSurfaceMesh& surface - ); - - - // Selectors - - //- Return a reference to the selected cellSizeCalculationType - static autoPtr<cellSizeCalculationType> New - ( - const dictionary& cellSizeCalculationTypeDict, - const triSurfaceMesh& surface - ); - - - //- Destructor - virtual ~cellSizeCalculationType(); - - - // Member Functions - - //- Load the cell size - virtual triSurfaceScalarField load() = 0; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.C deleted file mode 100644 index 788c1d69c6852f1c51e71143c59f5cb1b07f7303..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.C +++ /dev/null @@ -1,88 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "fieldFromFile.H" -#include "addToRunTimeSelectionTable.H" -#include "triSurfaceMesh.H" -#include "triSurfaceFields.H" -#include "Time.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(fieldFromFile, 0); - addToRunTimeSelectionTable - ( - cellSizeCalculationType, - fieldFromFile, - dictionary - ); -} - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::fieldFromFile::fieldFromFile -( - const dictionary& cellSizeCalcTypeDict, - const triSurfaceMesh& surface -) -: - cellSizeCalculationType(typeName, cellSizeCalcTypeDict, surface), - surface_(surface), - fileName_ - ( - cellSizeCalcTypeDict.subDict(typeName + "Coeffs").lookup("fieldFile") - ) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -Foam::triSurfaceScalarField Foam::fieldFromFile::load() -{ - Info<< indent << "Loading: " << fileName_ << endl; - - triSurfaceScalarField surfaceCellSize - ( - IOobject - ( - fileName_, - surface_.searchableSurface::time().constant(), - "triSurface", - surface_.searchableSurface::time(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - surface_, - dimLength, - true - ); - - return surfaceCellSize; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.H deleted file mode 100644 index ed99b5edd0f583d4aaa872b582ad1c1fc7ce5967..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/cellSizeCalculationType/fieldFromFile/fieldFromFile.H +++ /dev/null @@ -1,105 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::fieldFromFile - -Description - -SourceFiles - fieldFromFile.C - -\*---------------------------------------------------------------------------*/ - -#ifndef fieldFromFile_H -#define fieldFromFile_H - -#include "cellSizeCalculationType.H" -#include "triSurfaceFields.H" -#include "PrimitivePatchInterpolation.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -class triSurfaceMesh; - -/*---------------------------------------------------------------------------*\ - Class fieldFromFile Declaration -\*---------------------------------------------------------------------------*/ - -class fieldFromFile -: - public cellSizeCalculationType -{ - -private: - - // Private data - - //- Reference to the triSurfaceMesh - const triSurfaceMesh& surface_; - - //- Name of the triSurfaceScalarField file to load in. Must be in - // constant/triSurface - const word fileName_; - - -public: - - //- Runtime type information - TypeName("fieldFromFile"); - - - // Constructors - - //- Construct from components - fieldFromFile - ( - const dictionary& cellSizeCalcTypeDict, - const triSurfaceMesh& surface - ); - - - //- Destructor - virtual ~fieldFromFile() - {} - - - // Member Functions - - //- Load the cell size field - virtual triSurfaceScalarField load(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/nonUniformField/nonUniformField.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/nonUniformField/nonUniformField.C deleted file mode 100644 index fc91ed279b04a7979eface6cf063fec1ab5b36c4..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/nonUniformField/nonUniformField.C +++ /dev/null @@ -1,167 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "nonUniformField.H" -#include "triSurfaceMesh.H" -#include "searchableSurface.H" -#include "addToRunTimeSelectionTable.H" -#include "Time.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(nonUniformField, 0); - addToRunTimeSelectionTable - ( - surfaceCellSizeFunction, - nonUniformField, - dictionary - ); -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::nonUniformField::nonUniformField -( - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface -) -: - surfaceCellSizeFunction(typeName, cellSizeFunctionDict, surface), - surfaceTriMesh_(refCast<const triSurfaceMesh>(surface)), - surfaceCellSize_ - ( - IOobject - ( - "surfaceCellSize.cellSize", - surface.time().constant(), - "triSurface", - surface.time(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - surfaceTriMesh_, - dimLength, - false - ), - cellSizeCalculationType_ - ( - cellSizeCalculationType::New(coeffsDict(), surfaceTriMesh_) - ), - pointCellSize_(), - patch_() -{ - Info<< incrIndent << incrIndent; - - surfaceCellSize_ = cellSizeCalculationType_().load(); - - Info<< decrIndent; - - Info<< indent << "Cell size field statistics:" << nl - << indent << " Minimum: " << min(surfaceCellSize_).value() << nl - << indent << " Average: " << average(surfaceCellSize_).value() << nl - << indent << " Maximum: " << max(surfaceCellSize_).value() << endl; - - Info<< decrIndent; -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -const Foam::scalar& Foam::nonUniformField::surfaceSize(const label index) const -{ - return surfaceCellSize_[index]; -} - - -const Foam::scalar& Foam::nonUniformField::refineSurfaceSize(const label index) -{ - surfaceCellSize_[index] *= refinementFactor_; - - return surfaceCellSize_[index]; -} - - -Foam::scalar Foam::nonUniformField::interpolate -( - const point& pt, - const label index -) const -{ - if (patch_.empty()) - { - recalculateInterpolation(); - } - - const face& faceHitByPt = surfaceTriMesh_.triSurface::operator[](index); - - const pointField& pts = surfaceTriMesh_.points(); - const Map<label>& pMap = surfaceTriMesh_.meshPointMap(); - - triPointRef tri - ( - pts[faceHitByPt[0]], - pts[faceHitByPt[1]], - pts[faceHitByPt[2]] - ); - - scalarList bary(3, 0.0); - - tri.barycentric(pt, bary); - - return pointCellSize_()[pMap[faceHitByPt[0]]]*bary[0] - + pointCellSize_()[pMap[faceHitByPt[1]]]*bary[1] - + pointCellSize_()[pMap[faceHitByPt[2]]]*bary[2]; -} - - -void Foam::nonUniformField::recalculateInterpolation() const -{ - patch_.reset(new primitivePatchInterpolation(surfaceTriMesh_)); - - pointCellSize_.reset - ( - new triSurfacePointScalarField - ( - IOobject - ( - "pointCellSize.cellSize", - surfaceTriMesh_.searchableSurface::time().constant(), - "triSurface", - surfaceTriMesh_.searchableSurface::time(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - surfaceTriMesh_, - dimLength, - patch_().faceToPointInterpolate(surfaceCellSize_) - ) - ); -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/nonUniformField/nonUniformField.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/nonUniformField/nonUniformField.H deleted file mode 100644 index 039fd0fedbd8130d5ccbf6d1526419eebc3fed73..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/nonUniformField/nonUniformField.H +++ /dev/null @@ -1,123 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::nonUniformField - -Description - -SourceFiles - nonUniformField.C - -\*---------------------------------------------------------------------------*/ - -#ifndef nonUniformField_H -#define nonUniformField_H - -#include "triSurfaceFields.H" -#include "PrimitivePatchInterpolation.H" -#include "surfaceCellSizeFunction.H" -#include "cellSizeCalculationType.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -class triSurfaceMesh; -class searchableSurface; - -/*---------------------------------------------------------------------------*\ - Class nonUniformField Declaration -\*---------------------------------------------------------------------------*/ - -class nonUniformField -: - public surfaceCellSizeFunction -{ - -protected: - - // Private typedef - - typedef PrimitivePatchInterpolation - < - PrimitivePatch<labelledTri, List, pointField, point> - > primitivePatchInterpolation; - - - // Private data - - const triSurfaceMesh& surfaceTriMesh_; - - triSurfaceScalarField surfaceCellSize_; - - autoPtr<cellSizeCalculationType> cellSizeCalculationType_; - - mutable autoPtr<triSurfacePointScalarField> pointCellSize_; - - mutable autoPtr<primitivePatchInterpolation> patch_; - - -public: - - //- Runtime type information - TypeName("nonUniformField"); - - - // Constructors - - //- Construct from components - nonUniformField - ( - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~nonUniformField() - {} - - - // Member Functions - - virtual const scalar& surfaceSize(const label index) const; - - virtual const scalar& refineSurfaceSize(const label index); - - virtual scalar interpolate(const point& pt, const label index) const; - - virtual void recalculateInterpolation() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.C deleted file mode 100644 index 04d9af824f0980840a2e1846f9144efb404b891f..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.C +++ /dev/null @@ -1,102 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "surfaceCellSizeFunction.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(surfaceCellSizeFunction, 0); - defineRunTimeSelectionTable(surfaceCellSizeFunction, dictionary); -} - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::surfaceCellSizeFunction::surfaceCellSizeFunction -( - const word& type, - const dictionary& surfaceCellSizeFunctionDict, - const searchableSurface& surface -) -: - dictionary(surfaceCellSizeFunctionDict), - surface_(surface), - coeffsDict_(subDict(type + "Coeffs")), - refinementFactor_ - ( - lookupOrDefault<scalar>("refinementFactor", 1.0) - ) -{} - - -// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // - -Foam::autoPtr<Foam::surfaceCellSizeFunction> Foam::surfaceCellSizeFunction::New -( - const dictionary& surfaceCellSizeFunctionDict, - const searchableSurface& surface -) -{ - word surfaceCellSizeFunctionTypeName - ( - surfaceCellSizeFunctionDict.lookup("surfaceCellSizeFunction") - ); - - Info<< " Selecting surfaceCellSizeFunction " - << surfaceCellSizeFunctionTypeName << endl; - - dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(surfaceCellSizeFunctionTypeName); - - if (cstrIter == dictionaryConstructorTablePtr_->end()) - { - FatalErrorIn - ( - "surfaceCellSizeFunction::New(dictionary&, " - "const conformalVoronoiMesh&, const searchableSurface&)" - ) << "Unknown surfaceCellSizeFunction type " - << surfaceCellSizeFunctionTypeName - << endl << endl - << "Valid surfaceCellSizeFunction types are :" << endl - << dictionaryConstructorTablePtr_->toc() - << exit(FatalError); - } - - return autoPtr<surfaceCellSizeFunction> - ( - cstrIter()(surfaceCellSizeFunctionDict, surface) - ); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::surfaceCellSizeFunction::~surfaceCellSizeFunction() -{} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.H deleted file mode 100644 index 5c798c3be1176c6d2044d85b4299975eed0f0ecb..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/surfaceCellSizeFunction/surfaceCellSizeFunction.H +++ /dev/null @@ -1,159 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::surfaceCellSizeFunction - -Description - Abstract base class for specifying target cell sizes - -SourceFiles - surfaceCellSizeFunction.C - -\*---------------------------------------------------------------------------*/ - -#ifndef surfaceCellSizeFunction_H -#define surfaceCellSizeFunction_H - -#include "searchableSurface.H" -#include "dictionary.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class surfaceCellSizeFunction Declaration -\*---------------------------------------------------------------------------*/ - -class surfaceCellSizeFunction -: - public dictionary -{ - -protected: - - // Protected data - - //- Reference to the searchableSurface that surfaceCellSizeFunction - // relates to - const searchableSurface& surface_; - - const dictionary coeffsDict_; - - //- If cell resizing is allowed, this is the factor of the old cell size - // to get the new cell size - scalar refinementFactor_; - - -private: - - // Private Member Functions - - //- Disallow default bitwise copy construct - surfaceCellSizeFunction(const surfaceCellSizeFunction&); - - //- Disallow default bitwise assignment - void operator=(const surfaceCellSizeFunction&); - - -public: - - //- Runtime type information - TypeName("surfaceCellSizeFunction"); - - - // Declare run-time constructor selection table - - declareRunTimeSelectionTable - ( - autoPtr, - surfaceCellSizeFunction, - dictionary, - ( - const dictionary& surfaceCellSizeFunctionDict, - const searchableSurface& surface - ), - (surfaceCellSizeFunctionDict, surface) - ); - - - // Constructors - - //- Construct from components - surfaceCellSizeFunction - ( - const word& type, - const dictionary& surfaceCellSizeFunctionDict, - const searchableSurface& surface - ); - - - // Selectors - - //- Return a reference to the selected surfaceCellSizeFunction - static autoPtr<surfaceCellSizeFunction> New - ( - const dictionary& surfaceCellSizeFunctionDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~surfaceCellSizeFunction(); - - - // Member Functions - - //- Const access to the details dictionary - inline const dictionary& coeffsDict() const - { - return coeffsDict_; - } - - virtual const scalar& surfaceSize(const label index) const = 0; - - virtual const scalar& refineSurfaceSize(const label index) = 0; - - virtual scalar interpolate - ( - const point& pt, - const label index - ) const = 0; - - virtual void recalculateInterpolation() const = 0; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/uniformValue/uniformValue.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/uniformValue/uniformValue.C deleted file mode 100644 index e68a5ab3cac8a03f5d4b64663437d6c0875d035a..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/uniformValue/uniformValue.C +++ /dev/null @@ -1,86 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "uniformValue.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(uniformValue, 0); - addToRunTimeSelectionTable - ( - surfaceCellSizeFunction, - uniformValue, - dictionary - ); -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::uniformValue::uniformValue -( - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface -) -: - surfaceCellSizeFunction(typeName, cellSizeFunctionDict, surface), - surfaceCellSize_(readScalar(coeffsDict().lookup("surfaceCellSize"))) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -const Foam::scalar& Foam::uniformValue::surfaceSize(const label index) const -{ - return surfaceCellSize_; -} - - -const Foam::scalar& Foam::uniformValue::refineSurfaceSize(const label index) -{ - surfaceCellSize_ *= refinementFactor_; - - return surfaceCellSize_; -} - - -Foam::scalar Foam::uniformValue::interpolate -( - const point& pt, - const label index -) const -{ - return surfaceCellSize_; -} - - -void Foam::uniformValue::recalculateInterpolation() const -{} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/uniformValue/uniformValue.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/uniformValue/uniformValue.H deleted file mode 100644 index 36778379332e25a5efa8d78adaee94409824442f..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/surfaceCellSizeFunction/uniformValue/uniformValue.H +++ /dev/null @@ -1,105 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::uniformValue - -Description - -SourceFiles - uniformValue.C - -\*---------------------------------------------------------------------------*/ - -#ifndef uniformValue_H -#define uniformValue_H - -#include "surfaceCellSizeFunction.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class uniformValue Declaration -\*---------------------------------------------------------------------------*/ - -class uniformValue -: - public surfaceCellSizeFunction -{ - -private: - - // Private data - - scalar surfaceCellSize_; - - -public: - - //- Runtime type information - TypeName("uniformValue"); - - - // Constructors - - //- Construct from components - uniformValue - ( - const dictionary& cellSizeFunctionDict, - const searchableSurface& surface - ); - - - //- Destructor - virtual ~uniformValue() - {} - - - // Member Functions - - virtual const scalar& surfaceSize(const label index) const; - - virtual const scalar& refineSurfaceSize(const label index); - - virtual scalar interpolate - ( - const point& pt, - const label index - ) const; - - virtual void recalculateInterpolation() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/CGALTriangulation3DKernel.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/CGALTriangulation3DKernel.H deleted file mode 100644 index e80b3fb8f4b428ee42d4f739c582e4d429aafe35..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/CGALTriangulation3DKernel.H +++ /dev/null @@ -1,62 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Typedefs - CGALTriangulation3DKernel - -Description - -\*---------------------------------------------------------------------------*/ - -#ifndef CGALTriangulation3DKernel_H -#define CGALTriangulation3DKernel_H - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "CGAL/Delaunay_triangulation_3.h" - -#ifdef CGAL_INEXACT - - // Fast kernel using a double as the storage type but the triangulation may - // fail. Adding robust circumcentre traits - #include "CGAL/Exact_predicates_inexact_constructions_kernel.h" - typedef CGAL::Exact_predicates_inexact_constructions_kernel baseK; -// #include <CGAL/Robust_circumcenter_traits_3.h> - #include <CGAL/Robust_circumcenter_filtered_traits_3.h> -// typedef CGAL::Robust_circumcenter_traits_3<baseK> K; - typedef CGAL::Robust_circumcenter_filtered_traits_3<baseK> K; - -#else - - // Very robust but expensive kernel - #include "CGAL/Exact_predicates_exact_constructions_kernel.h" - typedef CGAL::Exact_predicates_exact_constructions_kernel baseK; - typedef CGAL::Exact_predicates_exact_constructions_kernel K; - -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/CGALTriangulation3Ddefs.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/CGALTriangulation3Ddefs.H deleted file mode 100644 index 4e7dd48c38c76ffe152bf7d194881540ca0c2381..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/CGALTriangulation3Ddefs.H +++ /dev/null @@ -1,60 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Typedefs - CGALTriangulation3Ddefs - -Description - CGAL data structures used for 3D Delaunay meshing. - - Define CGAL_INEXACT to use Exact_predicates_inexact_constructions kernel - otherwise the more robust but much less efficient - Exact_predicates_exact_constructions will be used. - -\*---------------------------------------------------------------------------*/ - -#ifndef CGALTriangulation3Ddefs_H -#define CGALTriangulation3Ddefs_H - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "CGALTriangulation3DKernel.H" - -#include "indexedVertex.H" -#include "indexedCell.H" - -typedef CGAL::indexedVertex<K> Vb; -typedef CGAL::indexedCell<K> Cb; - -typedef CGAL::Compact_location CompactLocator; -typedef CGAL::Fast_location FastLocator; - -typedef CGAL::Triangulation_data_structure_3<Vb, Cb> Tds; -typedef CGAL::Delaunay_triangulation_3<K, Tds, CompactLocator> Delaunay; -typedef CGAL::Delaunay_triangulation_3<K, Tds, FastLocator> CellSizeDelaunay; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C deleted file mode 100644 index ec6ca47901b5f55ced91f7a976b2e94360c2bd32..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C +++ /dev/null @@ -1,2224 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "conformalVoronoiMesh.H" -#include "initialPointsMethod.H" -#include "relaxationModel.H" -#include "faceAreaWeightModel.H" -#include "meshSearch.H" -#include "vectorTools.H" -#include "IOmanip.H" -#include "indexedCellChecks.H" - - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - -defineTypeNameAndDebug(conformalVoronoiMesh, 0); - -} - -const Foam::scalar Foam::conformalVoronoiMesh::tolParallel = 1e-3; - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -void Foam::conformalVoronoiMesh::cellSizeMeshOverlapsBackground() const -{ - const cellShapeControlMesh& cellSizeMesh = - cellShapeControl_.shapeControlMesh(); - - DynamicList<Foam::point> pts(number_of_vertices()); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalOrBoundaryPoint()) - { - pts.append(topoint(vit->point())); - } - } - - boundBox bb(pts); - - boundBox cellSizeMeshBb = cellSizeMesh.bounds(); - - bool fullyContained = true; - - if (!cellSizeMeshBb.contains(bb)) - { - Pout<< "Triangulation not fully contained in cell size mesh." - << endl; - - Pout<< "Cell Size Mesh Bounds = " << cellSizeMesh.bounds() << endl; - Pout<< "cvMesh Bounds = " << bb << endl; - - fullyContained = false; - } - - reduce(fullyContained, andOp<unsigned int>()); - - Info<< "Triangulation is " - << (fullyContained ? "fully" : "not fully") - << " contained in the cell size mesh" - << endl; -} - - -Foam::scalar Foam::conformalVoronoiMesh::requiredSize -( - const Foam::point& pt -) const -{ - pointIndexHit surfHit; - label hitSurface; - - DynamicList<scalar> cellSizeHits; - - geometryToConformTo_.findSurfaceNearest - ( - pt, - sqr(GREAT), - surfHit, - hitSurface - ); - - if (!surfHit.hit()) - { - FatalErrorIn - ( - "Foam::tensor Foam::conformalVoronoiMesh::requiredAlignment" - ) - << "findSurfaceNearest did not find a hit across the surfaces." - << exit(FatalError) << endl; - } - - cellSizeHits.append(cellShapeControls().cellSize(pt)); - - // Primary alignment - - vectorField norm(1); - - allGeometry_[hitSurface].getNormal - ( - List<pointIndexHit>(1, surfHit), - norm - ); - - const vector np = norm[0]; - - // Generate equally spaced 'spokes' in a circle normal to the - // direction from the vertex to the closest point on the surface - // and look for a secondary intersection. - - const vector d = surfHit.hitPoint() - pt; - - const tensor Rp = rotationTensor(vector(0,0,1), np); - - const label s = cvMeshControls().alignmentSearchSpokes(); - - const scalar spanMag = geometryToConformTo_.globalBounds().mag(); - - scalar totalDist = 0; - - for (label i = 0; i < s; i++) - { - vector spoke - ( - Foam::cos(i*constant::mathematical::twoPi/s), - Foam::sin(i*constant::mathematical::twoPi/s), - 0 - ); - - spoke *= spanMag; - - spoke = Rp & spoke; - - pointIndexHit spokeHit; - - label spokeSurface = -1; - - // internal spoke - - geometryToConformTo_.findSurfaceNearestIntersection - ( - pt, - pt + spoke, - spokeHit, - spokeSurface - ); - - if (spokeHit.hit()) - { - const Foam::point& hitPt = spokeHit.hitPoint(); - - scalar spokeHitDistance = mag(hitPt - pt); - - cellSizeHits.append - ( - cellShapeControls().cellSize(hitPt) - ); - - totalDist += spokeHitDistance; - } - - //external spoke - - Foam::point mirrorPt = pt + 2*d; - - geometryToConformTo_.findSurfaceNearestIntersection - ( - mirrorPt, - mirrorPt + spoke, - spokeHit, - spokeSurface - ); - - if (spokeHit.hit()) - { - const Foam::point& hitPt = spokeHit.hitPoint(); - - scalar spokeHitDistance = mag(hitPt - mirrorPt); - - cellSizeHits.append - ( - cellShapeControls().cellSize(hitPt) - ); - - totalDist += spokeHitDistance; - } - } - - scalar cellSize = 0; - - forAll(cellSizeHits, hitI) - { - cellSize += cellSizeHits[hitI]; - } - - return cellSize/cellSizeHits.size(); - //return cellShapeControls().cellSize(pt); -} - - -Foam::tensor Foam::conformalVoronoiMesh::requiredAlignment -( - const Foam::point& pt -) const -{ - pointIndexHit surfHit; - label hitSurface; - - geometryToConformTo_.findSurfaceNearest - ( - pt, - sqr(GREAT), - surfHit, - hitSurface - ); - - if (!surfHit.hit()) - { - FatalErrorIn - ( - "Foam::tensor Foam::conformalVoronoiMesh::requiredAlignment" - ) - << "findSurfaceNearest did not find a hit across the surfaces." - << exit(FatalError) << endl; - } - - // Primary alignment - - vectorField norm(1); - - allGeometry_[hitSurface].getNormal - ( - List<pointIndexHit>(1, surfHit), - norm - ); - - const vector np = norm[0]; - - // Generate equally spaced 'spokes' in a circle normal to the - // direction from the vertex to the closest point on the surface - // and look for a secondary intersection. - - const vector d = surfHit.hitPoint() - pt; - - const tensor Rp = rotationTensor(vector(0,0,1), np); - - const label s = cvMeshControls().alignmentSearchSpokes(); - - scalar closestSpokeHitDistance = GREAT; - - pointIndexHit closestSpokeHit; - - label closestSpokeSurface = -1; - - const scalar spanMag = geometryToConformTo_.globalBounds().mag(); - - for (label i = 0; i < s; i++) - { - vector spoke - ( - Foam::cos(i*constant::mathematical::twoPi/s), - Foam::sin(i*constant::mathematical::twoPi/s), - 0 - ); - - spoke *= spanMag; - - spoke = Rp & spoke; - - pointIndexHit spokeHit; - - label spokeSurface = -1; - - // internal spoke - - geometryToConformTo_.findSurfaceNearestIntersection - ( - pt, - pt + spoke, - spokeHit, - spokeSurface - ); - - if (spokeHit.hit()) - { - scalar spokeHitDistance = mag - ( - spokeHit.hitPoint() - pt - ); - - if (spokeHitDistance < closestSpokeHitDistance) - { - closestSpokeHit = spokeHit; - closestSpokeSurface = spokeSurface; - closestSpokeHitDistance = spokeHitDistance; - } - } - - //external spoke - - Foam::point mirrorPt = pt + 2*d; - - geometryToConformTo_.findSurfaceNearestIntersection - ( - mirrorPt, - mirrorPt + spoke, - spokeHit, - spokeSurface - ); - - if (spokeHit.hit()) - { - scalar spokeHitDistance = mag - ( - spokeHit.hitPoint() - mirrorPt - ); - - if (spokeHitDistance < closestSpokeHitDistance) - { - closestSpokeHit = spokeHit; - closestSpokeSurface = spokeSurface; - closestSpokeHitDistance = spokeHitDistance; - } - } - } - - if (closestSpokeSurface == -1) - { - WarningIn - ( - "conformalVoronoiMesh::requiredAlignment" - "(" - "const Foam::point& pt" - ") const" - ) << "No secondary surface hit found in spoke search " - << "using " << s - << " spokes, try increasing alignmentSearchSpokes." - << endl; - - return I; - } - - // Auxiliary alignment generated by spoke intersection normal. - - allGeometry_[closestSpokeSurface].getNormal - ( - List<pointIndexHit>(1, closestSpokeHit), - norm - ); - - const vector& na = norm[0]; - - // Secondary alignment - vector ns = np ^ na; - - if (mag(ns) < SMALL) - { - FatalErrorIn("conformalVoronoiMesh::requiredAlignment") - << "Parallel normals detected in spoke search." << nl - << "point: " << pt << nl - << "closest surface point: " << surfHit.hitPoint() << nl - << "closest spoke hit: " << closestSpokeHit.hitPoint() << nl - << "np: " << surfHit.hitPoint() + np << nl - << "ns: " << closestSpokeHit.hitPoint() + na << nl - << exit(FatalError); - } - - ns /= mag(ns); - - tensor Rs = rotationTensor((Rp & vector(0,1,0)), ns); - - return (Rs & Rp); -} - - -void Foam::conformalVoronoiMesh::insertInternalPoints -( - List<Point>& points, - bool distribute -) -{ - label nPoints = points.size(); - - if (Pstream::parRun()) - { - reduce(nPoints, sumOp<label>()); - } - - Info<< " " << nPoints << " points to insert..." << endl; - - if (Pstream::parRun() && distribute) - { - List<Foam::point> transferPoints(points.size()); - - forAll(points, pI) - { - transferPoints[pI] = topoint(points[pI]); - } - - // Send the points that are not on this processor to the appropriate - // place - Foam::autoPtr<Foam::mapDistribute> map - ( - decomposition_().distributePoints(transferPoints) - ); - - map().distribute(points); - } - - label nVert = number_of_vertices(); - - // using the range insert (faster than inserting points one by one) - insert(points.begin(), points.end()); - - label nInserted(number_of_vertices() - nVert); - - if (Pstream::parRun()) - { - reduce(nInserted, sumOp<label>()); - } - - Info<< " " << nInserted << " points inserted" - << ", failed to insert " << nPoints - nInserted - << " (" - << 100.0*(nPoints - nInserted)/nInserted - << " %)"<< endl; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->uninitialised()) - { - vit->index() = getNewVertexIndex(); - vit->type() = Vb::vtInternal; - } - } -} - - -void Foam::conformalVoronoiMesh::insertPoints -( - List<Vb>& vertices, - bool distribute -) -{ - if (Pstream::parRun() && distribute) - { - const label preDistributionSize = vertices.size(); - - List<Foam::point> pts(preDistributionSize); - - forAll(vertices, vI) - { - const Foam::point& pt = topoint(vertices[vI].point()); - - pts[vI] = pt; - } - - // Distribute points to their appropriate processor - autoPtr<mapDistribute> map - ( - decomposition_().distributePoints(pts) - ); - - map().distribute(vertices); - - forAll(vertices, vI) - { - vertices[vI].procIndex() = Pstream::myProcNo(); - } - } - - rangeInsertWithInfo - ( - vertices.begin(), - vertices.end(), - true - ); -} - - -void Foam::conformalVoronoiMesh::insertSurfacePointPairs -( - const pointIndexHitAndFeatureList& surfaceHits, - const fileName fName -) -{ - DynamicList<Vb> pts(2.0*surfaceHits.size()); - - forAll(surfaceHits, i) - { - vectorField norm(1); - - const pointIndexHit surfaceHit = surfaceHits[i].first(); - const label featureIndex = surfaceHits[i].second(); - - allGeometry_[featureIndex].getNormal - ( - List<pointIndexHit>(1, surfaceHit), - norm - ); - - const vector& normal = norm[0]; - - const Foam::point& surfacePt(surfaceHit.hitPoint()); - - if (geometryToConformTo_.isBaffle(featureIndex)) - { - createBafflePointPair - ( - pointPairDistance(surfacePt), - surfacePt, - normal, - pts - ); - } - else - { - createPointPair - ( - pointPairDistance(surfacePt), - surfacePt, - normal, - pts - ); - } - } - - insertPoints(pts, true); - - if (cvMeshControls().objOutput() && fName != fileName::null) - { - writePoints(fName, pts); - } -} - - -void Foam::conformalVoronoiMesh::insertEdgePointGroups -( - const pointIndexHitAndFeatureList& edgeHits, - const fileName fName -) -{ - DynamicList<Vb> pts(3.0*edgeHits.size()); - - forAll(edgeHits, i) - { - const extendedFeatureEdgeMesh& feMesh - ( - geometryToConformTo_.features()[edgeHits[i].second()] - ); - - createEdgePointGroup(feMesh, edgeHits[i].first(), pts); - } - - pts.shrink(); - - insertPoints(pts, true); - - if (cvMeshControls().objOutput() && fName != fileName::null) - { - writePoints(fName, pts); - } -} - - -bool Foam::conformalVoronoiMesh::nearFeaturePt(const Foam::point& pt) const -{ - scalar exclusionRangeSqr = featurePointExclusionDistanceSqr(pt); - - pointIndexHit info; - label featureHit; - - geometryToConformTo_.findFeaturePointNearest - ( - pt, - exclusionRangeSqr, - info, - featureHit - ); - - return info.hit(); -} - - -void Foam::conformalVoronoiMesh::insertInitialPoints() -{ - Info<< nl << "Inserting initial points" << endl; - - timeCheck("Before initial points call"); - - List<Point> initPts = initialPointsMethod_->initialPoints(); - - timeCheck("After initial points call"); - - // Assume that the initial points method made the correct decision for - // which processor each point should be on, so give distribute = false - insertInternalPoints(initPts); -} - - -Foam::scalar Foam::conformalVoronoiMesh::calculateLoadUnbalance() const -{ - label nRealVertices = 0; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - // Only store real vertices that are not feature vertices - if (vit->real() && !vit->featurePoint()) - { - nRealVertices++; - } - } - - scalar globalNRealVertices = returnReduce - ( - nRealVertices, - sumOp<label>() - ); - - scalar unbalance = returnReduce - ( - mag(1.0 - nRealVertices/(globalNRealVertices/Pstream::nProcs())), - maxOp<scalar>() - ); - - Info<< " Processor unbalance " << unbalance << endl; - - return unbalance; -} - - -bool Foam::conformalVoronoiMesh::distributeBackground() -{ - if (!Pstream::parRun()) - { - return false; - } - - Info<< nl << "Redistributing points" << endl; - - timeCheck("Before distribute"); - - label iteration = 0; - - scalar previousLoadUnbalance = 0; - - while (true) - { - scalar maxLoadUnbalance = calculateLoadUnbalance(); - - if - ( - maxLoadUnbalance <= cvMeshControls().maxLoadUnbalance() - || maxLoadUnbalance <= previousLoadUnbalance - ) - { - // If this is the first iteration, return false, if it was a - // subsequent one, return true; - return iteration != 0; - } - - previousLoadUnbalance = maxLoadUnbalance; - - Info<< " Total number of vertices before redistribution " - << returnReduce(label(number_of_vertices()), sumOp<label>()) - << endl; - - const fvMesh& bMesh = decomposition_().mesh(); - - volScalarField cellWeights - ( - IOobject - ( - "cellWeights", - bMesh.time().timeName(), - bMesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - bMesh, - dimensionedScalar("weight", dimless, 1e-2), - zeroGradientFvPatchScalarField::typeName - ); - - meshSearch cellSearch(bMesh, polyMesh::FACEPLANES); - - labelList cellVertices(bMesh.nCells(), 0); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - // Only store real vertices that are not feature vertices - if (vit->real() && !vit->featurePoint()) - { - pointFromPoint v = topoint(vit->point()); - - label cellI = cellSearch.findCell(v); - - if (cellI == -1) - { -// Pout<< "findCell conformalVoronoiMesh::distribute " -// << "findCell " -// << vit->type() << " " -// << vit->index() << " " -// << v << " " -// << cellI -// << " find nearest cellI "; - - cellI = cellSearch.findNearestCell(v); - } - - cellVertices[cellI]++; - } - } - - forAll(cellVertices, cI) - { - // Give a small but finite weight for empty cells. Some - // decomposition methods have difficulty with integer overflows in - // the sum of the normalised weight field. - cellWeights.internalField()[cI] = max - ( - cellVertices[cI], - 1e-2 - ); - } - - autoPtr<mapDistributePolyMesh> mapDist = decomposition_().distribute - ( - cellWeights - ); - - cellShapeControl_.shapeControlMesh().distribute(decomposition_); - - distribute(); - - timeCheck("After distribute"); - - iteration++; - } - - return true; -} - - -void Foam::conformalVoronoiMesh::distribute() -{ - if (!Pstream::parRun()) - { - return ; - } - - autoPtr<mapDistribute> mapDist = - DistributedDelaunayMesh<Delaunay>::distribute(decomposition_()); - - DynamicList<Foam::point> points(number_of_vertices()); - DynamicList<Foam::indexedVertexEnum::vertexType> types - ( - number_of_vertices() - ); - DynamicList<scalar> sizes(number_of_vertices()); - DynamicList<tensor> alignments(number_of_vertices()); - - for - ( - Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->real()) - { - points.append(topoint(vit->point())); - types.append(vit->type()); - sizes.append(vit->targetCellSize()); - alignments.append(vit->alignment()); - } - } - - mapDist().distribute(points); - mapDist().distribute(types); - mapDist().distribute(sizes); - mapDist().distribute(alignments); - - // Reset the entire tessellation - DelaunayMesh<Delaunay>::reset(); - - Info<< nl << " Inserting distributed tessellation" << endl; - - // Internal points have to be inserted first - - DynamicList<Vb> verticesToInsert(points.size()); - - forAll(points, pI) - { - verticesToInsert.append - ( - Vb - ( - toPoint<Point>(points[pI]), - -1, - types[pI], - Pstream::myProcNo() - ) - ); - - verticesToInsert.last().targetCellSize() = sizes[pI]; - verticesToInsert.last().alignment() = alignments[pI]; - } - - this->rangeInsertWithInfo - ( - verticesToInsert.begin(), - verticesToInsert.end(), - true - ); - - Info<< " Total number of vertices after redistribution " - << returnReduce - ( - label(number_of_vertices()), sumOp<label>() - ) - << endl; -} - - -void Foam::conformalVoronoiMesh::buildCellSizeAndAlignmentMesh() -{ - cellShapeControl_.initialMeshPopulation(decomposition_); - - cellShapeControlMesh& cellSizeMesh = cellShapeControl_.shapeControlMesh(); - - if (Pstream::parRun()) - { - cellSizeMesh.distribute(decomposition_); - } - - label nMaxIter = readLabel - ( - cvMeshControls().cvMeshDict().subDict("motionControl").lookup - ( - "maxRefinementIterations" - ) - ); - - Info<< "Maximum number of refinement iterations : " << nMaxIter << endl; - - for (label i = 0; i < nMaxIter; ++i) - { -// label nRemoved = cellSizeMesh.removePoints(); - label nRemoved = 0; - reduce(nRemoved, sumOp<label>()); - - label nAdded = cellShapeControl_.refineMesh(decomposition_); -// label nAdded = 0; - reduce(nAdded, sumOp<label>()); - - if (Pstream::parRun()) - { - cellSizeMesh.distribute(decomposition_); - } - - if (nRemoved + nAdded == 0) - { - break; - } - - Info<< " Iteration " << i - << " Added = " << nAdded << " points" - << ", Removed = " << nRemoved << " points" - << endl; - } - - cellShapeControl_.smoothMesh(); - - Info<< "Background cell size and alignment mesh:" << endl; - cellSizeMesh.printInfo(Info); - - if (cvMeshControls().objOutput()) - { - cellSizeMesh.writeTriangulation(); - cellSizeMesh.write(); - } -} - - -void Foam::conformalVoronoiMesh::storeSizesAndAlignments() -{ - DynamicList<Point> storePts(number_of_vertices()); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - if (vit->internalPoint()) - { - storePts.append(vit->point()); - } - } - - storePts.shrink(); - - storeSizesAndAlignments(storePts); -} - - -void Foam::conformalVoronoiMesh::storeSizesAndAlignments -( - const List<Point>& storePts -) -{ -// timeCheck("Start of storeSizesAndAlignments"); -// -// Info << nl << "Store size and alignment" << endl; -// -// sizeAndAlignmentLocations_.setSize(storePts.size()); -// -// storedSizes_.setSize(sizeAndAlignmentLocations_.size()); -// -// storedAlignments_.setSize(sizeAndAlignmentLocations_.size()); -// -// label i = 0; -// -// //checkCellSizing(); -// -// for -// ( -// List<Point>::const_iterator pit = storePts.begin(); -// pit != storePts.end(); -// ++pit -// ) -// { -// pointFromPoint pt = topoint(*pit); -// -//// storedAlignments_[i] = requiredAlignment(pt); -//// -//// storedSizes_[i] = cellShapeControls().cellSize(pt); -// -// cellShapeControls().cellSizeAndAlignment -// ( -// pt, -// storedSizes_[i], -// storedAlignments_[i] -// ); -// -// i++; -// } -// -// timeCheck("Sizes and alignments calculated, build tree"); -// -// buildSizeAndAlignmentTree(); -// -// timeCheck("Size and alignment tree built"); -} - - -void Foam::conformalVoronoiMesh::updateSizesAndAlignments -( - const List<Point>& storePts -) -{ - // This function is only used in serial, the background redistribution - // triggers this when unbalance is detected in parallel. - - if - ( - !Pstream::parRun() - && runTime_.run() - && runTime_.timeIndex() - % cvMeshControls().sizeAndAlignmentRebuildFrequency() == 0 - ) - { - storeSizesAndAlignments(storePts); - - timeCheck("Updated sizes and alignments"); - } -} - - -const Foam::indexedOctree<Foam::treeDataPoint>& -Foam::conformalVoronoiMesh::sizeAndAlignmentTree() const -{ - if (sizeAndAlignmentTreePtr_.empty()) - { - buildSizeAndAlignmentTree(); - } - - return sizeAndAlignmentTreePtr_(); -} - - -void Foam::conformalVoronoiMesh::setVertexSizeAndAlignment() -{ -// Info<< nl << "Looking up target cell alignment and size" << endl; -// -// const indexedOctree<treeDataPoint>& tree = sizeAndAlignmentTree(); -// -// for -// ( -// Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); -// vit != finite_vertices_end(); -// vit++ -// ) -// { -// if -// ( -// vit->internalOrBoundaryPoint() -// || vit->referredInternalOrBoundaryPoint() -// ) -// { -// pointFromPoint pt = topoint(vit->point()); -// -// pointIndexHit info = tree.findNearest(pt, sqr(GREAT)); -// -// if (info.hit()) -// { -// vit->alignment() = storedAlignments_[info.index()]; -// -// vit->targetCellSize() = storedSizes_[info.index()]; -// } -// else -// { -// WarningIn -// ( -// "void " -// "Foam::conformalVoronoiMesh::setVertexSizeAndAlignment()" -// ) -// << "Point " << pt << " did not find a nearest point " -// << " for alignment and size lookup." << endl; -// -// vit->alignment() = cellShapeControls().cellAlignment(pt); -// -// vit->targetCellSize() = cellShapeControls().cellSize(pt); -// } -// } -// } - - Info<< nl << "Calculating target cell alignment and size" << endl; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - if (vit->internalOrBoundaryPoint()) - { - pointFromPoint pt = topoint(vit->point()); - - cellShapeControls().cellSizeAndAlignment - ( - pt, - vit->targetCellSize(), - vit->alignment() - ); - - //vit->alignment() = tensor(1,0,0,0,1,0,0,0,1); - //vit->alignment() = requiredAlignment(pt); - - //vit->targetCellSize() = cellShapeControls().cellSize(pt); - } - } -} - - -Foam::face Foam::conformalVoronoiMesh::buildDualFace -( - const Delaunay::Finite_edges_iterator& eit -) const -{ - Cell_circulator ccStart = incident_cells(*eit); - Cell_circulator cc1 = ccStart; - Cell_circulator cc2 = cc1; - - // Advance the second circulator so that it always stays on the next - // cell around the edge; - cc2++; - - DynamicList<label> verticesOnFace; - - label nUniqueVertices = 0; - - do - { - if - ( - cc1->hasFarPoint() || cc2->hasFarPoint() - || is_infinite(cc1) || is_infinite(cc2) - ) - { - Cell_handle c = eit->first; - Vertex_handle vA = c->vertex(eit->second); - Vertex_handle vB = c->vertex(eit->third); - - drawDelaunayCell(Pout, cc1); - drawDelaunayCell(Pout, cc2); - - FatalErrorIn("Foam::conformalVoronoiMesh::buildDualFace") - << "Dual face uses circumcenter defined by a " - << "Delaunay tetrahedron with no internal " - << "or boundary points. Defining Delaunay edge ends: " - << topoint(vA->point()) << " " - << topoint(vB->point()) << nl - << exit(FatalError); - } - - label cc1I = cc1->cellIndex(); - - label cc2I = cc2->cellIndex(); - - if (cc1I != cc2I) - { - if (findIndex(verticesOnFace, cc1I) == -1) - { - nUniqueVertices++; - } - - verticesOnFace.append(cc1I); - } - - cc1++; - - cc2++; - - } while (cc1 != ccStart); - - verticesOnFace.shrink(); - - if (verticesOnFace.size() >= 3 && nUniqueVertices < 3) - { - // There are not enough unique vertices on this face to - // justify its size, it may have a form like: - - // Vertices: - // A B - // A B - - // Face: - // ABAB - - // Setting the size to be below 3, so that it will not be - // created - - verticesOnFace.setSize(nUniqueVertices); - } - - return face(verticesOnFace); -} - - -Foam::label Foam::conformalVoronoiMesh::maxFilterCount -( - const Delaunay::Finite_edges_iterator& eit -) const -{ - Cell_circulator ccStart = incident_cells(*eit); - Cell_circulator cc = ccStart; - - label maxFC = 0; - - do - { - if (cc->hasFarPoint()) - { - Cell_handle c = eit->first; - Vertex_handle vA = c->vertex(eit->second); - Vertex_handle vB = c->vertex(eit->third); - - FatalErrorIn("Foam::conformalVoronoiMesh::buildDualFace") - << "Dual face uses circumcenter defined by a " - << "Delaunay tetrahedron with no internal " - << "or boundary points. Defining Delaunay edge ends: " - << topoint(vA->point()) << " " - << topoint(vB->point()) << nl - << exit(FatalError); - } - - if (cc->filterCount() > maxFC) - { - maxFC = cc->filterCount(); - } - - cc++; - - } while (cc != ccStart); - - return maxFC; -} - - -bool Foam::conformalVoronoiMesh::ownerAndNeighbour -( - Vertex_handle vA, - Vertex_handle vB, - label& owner, - label& neighbour -) const -{ - bool reverse = false; - - owner = -1; - neighbour = -1; - - label dualCellIndexA = vA->index(); - - if (!vA->internalOrBoundaryPoint() || vA->referred()) - { - dualCellIndexA = -1; - } - - label dualCellIndexB = vB->index(); - - if (!vB->internalOrBoundaryPoint() || vB->referred()) - { - dualCellIndexB = -1; - } - - if (dualCellIndexA == -1 && dualCellIndexB == -1) - { - FatalErrorIn - ( - "bool Foam::conformalVoronoiMesh::ownerAndNeighbour" - "(" - "Vertex_handle vA," - "Vertex_handle vB," - "label& owner," - "label& neighbour" - ") const" - ) - << "Attempting to create a face joining " - << "two unindexed dual cells " - << exit(FatalError); - } - else if (dualCellIndexA == -1 || dualCellIndexB == -1) - { - // boundary face, find which is the owner - - if (dualCellIndexA == -1) - { - owner = dualCellIndexB; - - reverse = true; - } - else - { - owner = dualCellIndexA; - } - } - else - { - // internal face, find the lower cell to be the owner - - if (dualCellIndexB > dualCellIndexA) - { - owner = dualCellIndexA; - neighbour = dualCellIndexB; - } - else - { - owner = dualCellIndexB; - neighbour = dualCellIndexA; - - // reverse face order to correctly orientate normal - reverse = true; - } - } - - return reverse; -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::conformalVoronoiMesh::conformalVoronoiMesh -( - const Time& runTime, - const dictionary& cvMeshDict -) -: - DistributedDelaunayMesh<Delaunay>(), - runTime_(runTime), - rndGen_(64293*Pstream::myProcNo()), - cvMeshControls_(cvMeshDict), - allGeometry_ - ( - IOobject - ( - "cvSearchableSurfaces", - runTime_.constant(), - "triSurface", - runTime_, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - cvMeshDict.subDict("geometry") - ), - geometryToConformTo_ - ( - runTime_, - rndGen_, - allGeometry_, - cvMeshDict.subDict("surfaceConformation") - ), - cellShapeControl_ - ( - runTime_, - cvMeshDict.subDict("motionControl"), - allGeometry_, - geometryToConformTo_ - ), - limitBounds_(), - featureVertices_(), - featurePointLocations_(), - edgeLocationTreePtr_(), - surfacePtLocationTreePtr_(), - sizeAndAlignmentLocations_(), - storedSizes_(), - storedAlignments_(), - sizeAndAlignmentTreePtr_(), - surfaceConformationVertices_(), - initialPointsMethod_ - ( - initialPointsMethod::New - ( - cvMeshDict.subDict("initialPoints"), - *this - ) - ), - relaxationModel_ - ( - relaxationModel::New - ( - cvMeshDict.subDict("motionControl"), - runTime_ - ) - ), - faceAreaWeightModel_ - ( - faceAreaWeightModel::New - ( - cvMeshDict.subDict("motionControl") - ) - ), - decomposition_() -{ - if (cvMeshControls().objOutput()) - { - geometryToConformTo_.writeFeatureObj("cvMesh"); - } - - if (Pstream::parRun()) - { - decomposition_.reset - ( - new backgroundMeshDecomposition - ( - runTime_, - rndGen_, - geometryToConformTo_, - cvMeshDict.subDict("backgroundMeshDecomposition") - ) - ); - } - - buildCellSizeAndAlignmentMesh(); - - insertInitialPoints(); - - insertFeaturePoints(); - - setVertexSizeAndAlignment(); - - cellSizeMeshOverlapsBackground(); - - // Improve the guess that the backgroundMeshDecomposition makes with the - // initial positions. Use before building the surface conformation to - // better balance the surface conformation load. - distributeBackground(); - - buildSurfaceConformation(); - - // The introduction of the surface conformation may have distorted the - // balance of vertices, distribute if necessary. - distributeBackground(); - - if (Pstream::parRun()) - { - sync(decomposition_().procBounds()); - } - - // Do not store the surface conformation until after it has been - // (potentially) redistributed. - storeSurfaceConformation(); - - // Use storeSizesAndAlignments with no feed points because all background - // points may have been distributed. - storeSizesAndAlignments(); - - // Report any Delaunay vertices that do not think that they are in the - // domain the processor they are on. - // reportProcessorOccupancy(); - - cellSizeMeshOverlapsBackground(); - - printVertexInfo(); - - if (cvMeshControls().objOutput()) - { - writePoints - ( - "internalPoints_" + runTime_.timeName() + ".obj", - Foam::indexedVertexEnum::vtUnassigned, - Foam::indexedVertexEnum::vtExternalFeaturePoint - ); - } -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::conformalVoronoiMesh::~conformalVoronoiMesh() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -void Foam::conformalVoronoiMesh::move() -{ - timeCheck("Start of move"); - - scalar relaxation = relaxationModel_->relaxation(); - - Info<< nl << "Relaxation = " << relaxation << endl; - - pointField dualVertices(number_of_finite_cells()); - - this->resetCellCount(); - - // Find the dual point of each tetrahedron and assign it an index. - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - cit->cellIndex() = Cb::ctUnassigned; - - if (cit->anyInternalOrBoundaryDualVertex()) - { - cit->cellIndex() = getNewCellIndex(); - - dualVertices[cit->cellIndex()] = cit->dual(); - } - - if (cit->hasFarPoint()) - { - cit->cellIndex() = Cb::ctFar; - } - } - - dualVertices.setSize(cellCount()); - - setVertexSizeAndAlignment(); - - timeCheck("Determined sizes and alignments"); - - Info<< nl << "Determining vertex displacements" << endl; - - vectorField cartesianDirections(3); - - cartesianDirections[0] = vector(1, 0, 0); - cartesianDirections[1] = vector(0, 1, 0); - cartesianDirections[2] = vector(0, 0, 1); - - vectorField displacementAccumulator - ( - number_of_vertices(), - vector::zero - ); - - PackedBoolList pointToBeRetained - ( - number_of_vertices(), - true - ); - - DynamicList<Point> pointsToInsert(number_of_vertices()); - - for - ( - Delaunay::Finite_edges_iterator eit = finite_edges_begin(); - eit != finite_edges_end(); - ++eit - ) - { - Cell_handle c = eit->first; - Vertex_handle vA = c->vertex(eit->second); - Vertex_handle vB = c->vertex(eit->third); - - if - ( - ( - vA->internalPoint() && !vA->referred() - && vB->internalOrBoundaryPoint() - ) - || ( - vB->internalPoint() && !vB->referred() - && vA->internalOrBoundaryPoint() - ) - ) - { - pointFromPoint dVA = topoint(vA->point()); - pointFromPoint dVB = topoint(vB->point()); - - Field<vector> alignmentDirsA - ( - vA->alignment().T() & cartesianDirections - ); - Field<vector> alignmentDirsB - ( - vB->alignment().T() & cartesianDirections - ); - - Field<vector> alignmentDirs(3); - - forAll(alignmentDirsA, aA) - { - const vector& a = alignmentDirsA[aA]; - - scalar maxDotProduct = 0.0; - - forAll(alignmentDirsB, aB) - { - const vector& b = alignmentDirsB[aB]; - - const scalar dotProduct = a & b; - - if (mag(dotProduct) > maxDotProduct) - { - maxDotProduct = mag(dotProduct); - - alignmentDirs[aA] = a + sign(dotProduct)*b; - - alignmentDirs[aA] /= mag(alignmentDirs[aA]); - } - } - } - - vector rAB = dVA - dVB; - - scalar rABMag = mag(rAB); - - if (rABMag < SMALL) - { - // Removal of close points - - if - ( - vA->internalPoint() && !vA->referred() - && vB->internalPoint() && !vB->referred() - ) - { - // Only insert a point at the midpoint of - // the short edge if neither attached - // point has already been identified to be - // removed. - - if - ( - pointToBeRetained[vA->index()] == true - && pointToBeRetained[vB->index()] == true - ) - { - pointsToInsert.append - ( - toPoint<Point>(0.5*(dVA + dVB)) - ); - } - } - - if (vA->internalPoint() && !vA->referred()) - { - pointToBeRetained[vA->index()] = false; - } - - if (vB->internalPoint() && !vB->referred()) - { - pointToBeRetained[vB->index()] = false; - } - - // Do not consider this Delaunay edge any further - - continue; - } - - forAll(alignmentDirs, aD) - { - vector& alignmentDir = alignmentDirs[aD]; - - scalar dotProd = rAB & alignmentDir; - - if (dotProd < 0) - { - // swap the direction of the alignment so that has the - // same sense as rAB - alignmentDir *= -1; - dotProd *= -1; - } - - const scalar alignmentDotProd = dotProd/rABMag; - - if - ( - alignmentDotProd - > cvMeshControls().cosAlignmentAcceptanceAngle() - ) - { - scalar targetCellSize = averageCellSize(vA, vB); - - scalar targetFaceArea = sqr(targetCellSize); - - const vector originalAlignmentDir = alignmentDir; - - // Update cell size and face area - cellShapeControls().aspectRatio().updateCellSizeAndFaceArea - ( - alignmentDir, - targetFaceArea, - targetCellSize - ); - - // Vector to move end points around middle of vector - // to align edge (i.e. dual face normal) with alignment - // directions. - vector delta = alignmentDir - 0.5*rAB; - - face dualFace = buildDualFace(eit); - -// Pout<< dualFace << endl; -// Pout<< " " << vA->info() << endl; -// Pout<< " " << vB->info() << endl; - - const scalar faceArea = dualFace.mag(dualVertices); - - // Update delta vector - cellShapeControls().aspectRatio().updateDeltaVector - ( - originalAlignmentDir, - targetCellSize, - rABMag, - delta - ); - - if (targetFaceArea == 0) - { - Pout<< vA->info() << vB->info(); - - Cell_handle ch = locate(vA->point()); - if (is_infinite(ch)) - { - Pout<< "vA " << vA->targetCellSize() << endl; - } - - ch = locate(vB->point()); - if (is_infinite(ch)) - { - Pout<< "vB " << vB->targetCellSize() << endl; - } - } - - delta *= faceAreaWeightModel_->faceAreaWeight - ( - faceArea/targetFaceArea - ); - - if - ( - ( - (vA->internalPoint() && vB->internalPoint()) - && (!vA->referred() || !vB->referred()) -// || -// ( -// vA->referredInternalPoint() -// && vB->referredInternalPoint() -// ) - ) - && rABMag - > cvMeshControls().insertionDistCoeff()*targetCellSize - && faceArea - > cvMeshControls().faceAreaRatioCoeff()*targetFaceArea - && alignmentDotProd - > cvMeshControls().cosInsertionAcceptanceAngle() - ) - { - // Point insertion - if - ( - !geometryToConformTo_.findSurfaceAnyIntersection - ( - dVA, - dVB - ) - ) - { - const Foam::point& newPt = 0.5*(dVA + dVB); - - if (positionOnThisProc(newPt)) - { - // Prevent insertions spanning surfaces - pointsToInsert.append(toPoint<Point>(newPt)); - } - } - } - else if - ( - ( - (vA->internalPoint() && !vA->referred()) - || (vB->internalPoint() && !vB->referred()) - ) - && rABMag - < cvMeshControls().removalDistCoeff() - *targetCellSize - ) - { - // Point removal - if - ( - vA->internalPoint() && !vA->referred() - && vB->internalPoint() && !vB->referred() - ) - { - // Only insert a point at the midpoint of - // the short edge if neither attached - // point has already been identified to be - // removed. - if - ( - pointToBeRetained[vA->index()] == true - && pointToBeRetained[vB->index()] == true - ) - { - pointsToInsert.append - ( - toPoint<Point>(0.5*(dVA + dVB)) - ); - } - } - - if (vA->internalPoint() && !vA->referred()) - { - pointToBeRetained[vA->index()] = false; - } - - if (vB->internalPoint() && !vB->referred()) - { - pointToBeRetained[vB->index()] = false; - } - } - else - { - if (vA->internalPoint() && !vA->referred()) - { - displacementAccumulator[vA->index()] += delta; - } - - if (vB->internalPoint() && !vB->referred()) - { - displacementAccumulator[vB->index()] -= delta; - } - } - } - } - } - } - - Info<< "Limit displacements" << endl; - - // Limit displacements that pierce, or get too close to the surface - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalPoint() && !vit->referred()) - { - if (pointToBeRetained[vit->index()] == true) - { - limitDisplacement - ( - vit, - displacementAccumulator[vit->index()] - ); - } - } - } - - vector totalDisp = gSum(displacementAccumulator); - scalar totalDist = gSum(mag(displacementAccumulator)); - - displacementAccumulator *= relaxation; - - Info<< "Sum displacements" << endl; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalPoint() && !vit->referred()) - { - if (pointToBeRetained[vit->index()] == true) - { - // Convert vit->point() to FOAM vector (double) to do addition, - // avoids memory increase because a record of the constructions - // would be kept otherwise. - // See cgal-discuss@lists-sop.inria.fr: - // "Memory issue with openSUSE 11.3, exact kernel, adding - // points/vectors" - // 14/1/2011. - // Only necessary if using an exact constructions kernel - // (extended precision) - - pointsToInsert.append - ( - toPoint<Point> - ( - topoint(vit->point()) - + displacementAccumulator[vit->index()] - ) - ); - } - } - } - - pointsToInsert.shrink(); - - // Save displacements to file. - if (cvMeshControls().objOutput() && runTime_.outputTime()) - { - Pout<< "Writing point displacement vectors to file." << endl; - OFstream str("displacements_" + runTime_.timeName() + ".obj"); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalPoint() && !vit->referred()) - { - if (pointToBeRetained[vit->index()] == true) - { - meshTools::writeOBJ(str, topoint(vit->point())); - - str << "vn " - << displacementAccumulator[vit->index()][0] << " " - << displacementAccumulator[vit->index()][1] << " " - << displacementAccumulator[vit->index()][2] << " " - << endl; - } - } - } - } - - // Remove the entire tessellation - DelaunayMesh<Delaunay>::reset(); - - timeCheck("Displacement calculated"); - - Info<< nl << "Inserting displaced tessellation" << endl; - - insertInternalPoints(pointsToInsert, true); - - reinsertFeaturePoints(true); - - // Remove internal points that have been inserted outside the surface. -// label internalPtIsOutside = 0; -// -// for -// ( -// Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); -// vit != finite_vertices_end(); -// ++vit -// ) -// { -// if (vit->internalPoint() && !vit->referred()) -// { -// bool inside = geometryToConformTo_.inside -// ( -// topoint(vit->point()) -// ); -// -// if (!inside) -// { -// remove(vit); -// internalPtIsOutside++; -// } -// } -// } -// -// Info<< " " << internalPtIsOutside -// << " internal points were inserted outside the domain. " -// << "They have been removed." << endl; - - // Fix points that have not been significantly displaced -// for -// ( -// Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); -// vit != finite_vertices_end(); -// ++vit -// ) -// { -// if (vit->internalPoint()) -// { -// if -// ( -// mag(displacementAccumulator[vit->index()]) -// < 0.1*targetCellSize(topoint(vit->point())) -// ) -// { -// vit->setVertexFixed(); -// } -// } -// } - - timeCheck("Internal points inserted"); - - { - // Check that no index is shared between any of the local points - labelHashSet usedIndices; - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (!vit->referred() && !usedIndices.insert(vit->index())) - { - FatalErrorIn("Foam::conformalVoronoiMesh::move()") - << "Index already used! Could not insert: " << nl - << vit->info() - << abort(FatalError); - } - } - } - - conformToSurface(); - - if (cvMeshControls().objOutput()) - { - writePoints - ( - "internalPoints_" + runTime_.timeName() + ".obj", - Foam::indexedVertexEnum::vtInternal - ); - } - - if (cvMeshControls().objOutput() && runTime_.outputTime()) - { - writeBoundaryPoints("boundaryPoints_" + runTime_.timeName() + ".obj"); - } - - timeCheck("After conformToSurface"); - - printVertexInfo(); - - // Write the intermediate mesh, do not filter the dual faces. - if (runTime_.outputTime()) - { - writeMesh(runTime_.timeName()); - } - - updateSizesAndAlignments(pointsToInsert); - - Info<< nl - << "Total displacement = " << totalDisp << nl - << "Total distance = " << totalDist << nl - << endl; -} - - -bool Foam::conformalVoronoiMesh::positionOnThisProc -( - const Foam::point& pt -) const -{ - if (Pstream::parRun()) - { - return decomposition_().positionOnThisProcessor(pt); - } - - return true; -} - - -Foam::boolList Foam::conformalVoronoiMesh::positionOnThisProc -( - const Foam::List<Foam::point>& pts -) const -{ - if (Pstream::parRun()) - { - return decomposition_().positionOnThisProcessor(pts); - } - - return boolList(pts.size(), true); -} - - -Foam::labelList Foam::conformalVoronoiMesh::positionProc -( - const Foam::List<Foam::point>& pts -) const -{ - if (!Pstream::parRun()) - { - return labelList(pts.size(), -1); - } - - return decomposition_().processorPosition(pts); -} - - -Foam::List<Foam::List<Foam::pointIndexHit> > -Foam::conformalVoronoiMesh::intersectsProc -( - const List<Foam::point>& starts, - const List<Foam::point>& ends -) const -{ - if (!Pstream::parRun()) - { - return List<List<pointIndexHit> >(starts.size()); - } - - return decomposition_().intersectsProcessors(starts, ends, false); -} - - -//Foam::labelListList Foam::conformalVoronoiMesh::overlapsProc -//( -// const List<Foam::point>& centres, -// const List<scalar>& radiusSqrs -//) const -//{ -// if (!Pstream::parRun()) -// { -// return labelListList(centres.size(), labelList(0)); -// } -// -//// DynamicList<Foam::point> pts(number_of_vertices()); -// -//// for -//// ( -//// Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); -//// vit != finite_vertices_end(); -//// vit++ -//// ) -//// { -//// pts.append(topoint(vit->point())); -//// } -//// -//// dynamicIndexedOctree<dynamicTreeDataPoint> vertexOctree -//// ( -//// dynamicTreeDataPoint(pts), -//// treeBoundBox(min(pts), max(pts)), -//// 10, // maxLevel -//// 10, // leafSize -//// 3.0 // duplicity -//// ); -// -// return decomposition_().overlapsProcessors -// ( -// centres, -// radiusSqrs, -// *this, -// false//, -//// vertexOctree -// ); -//} - - -void Foam::conformalVoronoiMesh::checkCoPlanarCells() const -{ - typedef CGAL::Exact_predicates_exact_constructions_kernel Kexact; - typedef CGAL::Point_3<Kexact> PointExact; - - if (!is_valid()) - { - Pout<< "Triangulation is invalid!" << endl; - } - - OFstream str("badCells.obj"); - - label badCells = 0; - - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - const scalar quality = cvMeshChecks::coplanarTet(cit, 1e-16); - - if (quality == 0) - { - Pout<< "COPLANAR: " << cit->info() << nl - << " quality = " << quality << nl - << " dual = " << topoint(cit->dual()) << endl; - - drawDelaunayCell(str, cit, badCells++); - - FixedList<PointExact, 4> cellVerticesExact(PointExact(0,0,0)); - forAll(cellVerticesExact, vI) - { - cellVerticesExact[vI] = PointExact - ( - cit->vertex(vI)->point().x(), - cit->vertex(vI)->point().y(), - cit->vertex(vI)->point().z() - ); - } - - PointExact synchronisedDual = CGAL::circumcenter<Kexact> - ( - cellVerticesExact[0], - cellVerticesExact[1], - cellVerticesExact[2], - cellVerticesExact[3] - ); - - Foam::point exactPt - ( - CGAL::to_double(synchronisedDual.x()), - CGAL::to_double(synchronisedDual.y()), - CGAL::to_double(synchronisedDual.z()) - ); - - Info<< "inexact = " << cit->dual() << nl - << "exact = " << exactPt << endl; - } - } - - Pout<< "There are " << badCells << " bad cells out of " - << number_of_finite_cells() << endl; - - - label nNonGabriel = 0; - for - ( - Delaunay::Finite_facets_iterator fit = finite_facets_begin(); - fit != finite_facets_end(); - ++fit - ) - { - if (!is_Gabriel(*fit)) - { - nNonGabriel++;//Pout<< "Non-gabriel face" << endl; - } - } - - Pout<< "There are " << nNonGabriel << " non-Gabriel faces out of " - << number_of_finite_facets() << endl; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H deleted file mode 100644 index 912a426dd1e5a55b6f367062233e48709f31ee23..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H +++ /dev/null @@ -1,1197 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::conformalVoronoiMesh - -Description - -SourceFiles - conformalVoronoiMeshI.H - conformalVoronoiMesh.C - conformalVoronoiMeshIO.C - conformalVoronoiMeshConformToSurface.C - conformalVoronoiMeshFeaturePoints.C - conformalVoronoiMeshFeaturePointSpecialisations.C - conformalVoronoiMeshCalcDualMesh.C - -\*---------------------------------------------------------------------------*/ - -#ifndef conformalVoronoiMesh_H -#define conformalVoronoiMesh_H - -#include "CGALTriangulation3Ddefs.H" -#include "uint.H" -#include "ulong.H" -#include "searchableSurfaces.H" -#include "conformationSurfaces.H" -#include "cellShapeControl.H" -#include "cvControls.H" -#include "DynamicList.H" -#include "PackedBoolList.H" -#include "Time.H" -#include "polyMesh.H" -#include "plane.H" -#include "SortableList.H" -#include "meshTools.H" -#include "dynamicIndexedOctree.H" -#include "dynamicTreeDataPoint.H" -#include "indexedOctree.H" -#include "treeDataPoint.H" -#include "unitConversion.H" -#include "transform.H" -#include "volFields.H" -#include "fvMesh.H" -#include "labelPair.H" -#include "HashSet.H" -#include "memInfo.H" -#include "point.H" -#include "cellSet.H" -#include "wallPolyPatch.H" -#include "processorPolyPatch.H" -#include "zeroGradientFvPatchFields.H" -#include "globalIndex.H" -#include "pointFeatureEdgesTypes.H" -#include "pointConversion.H" -#include "Tuple2.H" -#include "DistributedDelaunayMesh.H" -#include "tensorIOField.H" - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// Forward declaration of classes -class initialPointsMethod; - -class relaxationModel; - -class faceAreaWeightModel; - -class backgroundMeshDecomposition; - -/*---------------------------------------------------------------------------*\ - Class conformalVoronoiMesh Declaration -\*---------------------------------------------------------------------------*/ - -class conformalVoronoiMesh -: - public DistributedDelaunayMesh<Delaunay> -{ -public: - - enum reconformationMode - { - rmOff, // Do not rebuild the surface conformation - rmOn - }; - - typedef Delaunay::Vertex_handle Vertex_handle; - typedef Delaunay::Cell_handle Cell_handle; - typedef Delaunay::Point Point; - - typedef List<DynamicList<Pair<labelPair> > > labelPairPairDynListList; - - typedef Tuple2<pointIndexHit, label> pointIndexHitAndFeature; - typedef List<pointIndexHitAndFeature> pointIndexHitAndFeatureList; - typedef DynamicList<pointIndexHitAndFeature> pointIndexHitAndFeatureDynList; - - -private: - - // Static data - - static const scalar tolParallel; - - static const scalar searchConeAngle; - - static const scalar searchAngleOppositeSurface; - - - // Private data - - //- The time registry of the application - const Time& runTime_; - - //- Random number generator - mutable Random rndGen_; - - //- Controls for the conformal Voronoi meshing process - cvControls cvMeshControls_; - - //- All geometry of the meshing process, including surfaces to be - // conformed to and those to be used for refinement - searchableSurfaces allGeometry_; - - //- The surfaces to conform to - conformationSurfaces geometryToConformTo_; - - //- The cell shape control object - cellShapeControl cellShapeControl_; - - //- Limiting bound box before infinity begins - treeBoundBox limitBounds_; - - //- Store the feature constraining points to be reinserted after a - // triangulation clear. Maintained with relative types and indices. - List<Vb> featureVertices_; - - //- Storing the locations of all of the features to be conformed to. - // Single pointField required by the featurePointTree. - pointField featurePointLocations_; - - //- Search tree for edge point locations - mutable autoPtr<dynamicIndexedOctree<dynamicTreeDataPoint> > - edgeLocationTreePtr_; - - mutable DynamicList<Foam::point> existingEdgeLocations_; - - //- Search tree for surface point locations - mutable autoPtr<dynamicIndexedOctree<dynamicTreeDataPoint> > - surfacePtLocationTreePtr_; - - mutable DynamicList<Foam::point> existingSurfacePtLocations_; - - //- Store locations where the cell size and alignments will be - // pre-calculated and looked up - pointField sizeAndAlignmentLocations_; - - //- Stored cell size at sizeAndAlignmentLocations_ - scalarField storedSizes_; - - //- Stored alignments at sizeAndAlignmentLocations_ - tensorField storedAlignments_; - - //- Search tree for size and alignment lookup points - mutable autoPtr<indexedOctree<treeDataPoint> > sizeAndAlignmentTreePtr_; - - //- Store the surface and feature edge conformation locations to be - // reinserted - List<Vb> surfaceConformationVertices_; - - //- Method for inserting initial points. Runtime selectable. - autoPtr<initialPointsMethod> initialPointsMethod_; - - //- Relaxation coefficient model. Runtime selectable. - autoPtr<relaxationModel> relaxationModel_; - - //- Face area weight function. Runtime selectable. - autoPtr<faceAreaWeightModel> faceAreaWeightModel_; - - //- Background mesh decomposition, only available in parallel. - autoPtr<backgroundMeshDecomposition> decomposition_; - - - // Private Member Functions - - inline scalar defaultCellSize() const; - - //- Return the local target cell size at the given location. Takes - // boolean argument to allow speed-up of queries if the point is going - // to be on a surface. - inline scalar targetCellSize(const Foam::point& pt) const; - - //- Return the target cell size from that stored on a pair of - // Delaunay vertices, using a mean function. - inline scalar averageCellSize - ( - const Vertex_handle& vA, - const Vertex_handle& vB - ) const; - - //- Return the target cell size from that stored on a pair of - // Delaunay vertices, including the possibility that one of - // them is not an internalOrBoundaryPoint, and so will not - // have valid data. - inline scalar averageAnyCellSize - ( - const Vertex_handle& vA, - const Vertex_handle& vB - ) const; - - //- The average target cell size of a Delaunay facet, i.e., of - // a dual edge - inline scalar averageAnyCellSize - ( - const Delaunay::Finite_facets_iterator& fit - ) const; - - //- Return the local point pair separation at the given location - inline scalar pointPairDistance(const Foam::point& pt) const; - - //- Return the local mixed feature point placement distance - inline scalar mixedFeaturePointDistance(const Foam::point& pt) const; - - //- Return the square of the local feature point exclusion distance - inline scalar featurePointExclusionDistanceSqr - ( - const Foam::point& pt - ) const; - - //- Return the square of the local feature edge exclusion distance - inline scalar featureEdgeExclusionDistanceSqr - ( - const Foam::point& pt - ) const; - - //- Return the square of the local surface point exclusion distance - inline scalar surfacePtExclusionDistanceSqr - ( - const Foam::point& pt - ) const; - - //- Return the square of the local surface search distance - inline scalar surfaceSearchDistanceSqr(const Foam::point& pt) const; - - //- Return the local maximum surface protrusion distance - inline scalar maxSurfaceProtrusion(const Foam::point& pt) const; - - //- Return the required cell size at the given location - scalar requiredSize(const Foam::point& pt) const; - - //- Return the required alignment directions at the given location - tensor requiredAlignment(const Foam::point& pt) const; - - //- Insert Point and return its auto-generated index - inline bool insertPoint - ( - const Point& P, - const indexedVertexEnum::vertexType type - ); - - //- Insert Foam::point with specified index and type - inline bool insertPoint - ( - const Foam::point& p, - const indexedVertexEnum::vertexType type - ); - - //- Insert Point with specified index, type and original processor - inline bool insertReferredPoint - ( - const Point& P, - const label index, - const indexedVertexEnum::vertexType type, - const label processor - ); - - inline bool insertReferredPoint(const Vb& P); - - //- Insert Foam::point with specified index, type and original processor - inline bool insertReferredPoint - ( - const Foam::point& p, - const label index, - const indexedVertexEnum::vertexType type, - const label processor - ); - - //- Insert Delaunay vertices using the CGAL range insertion method, - // optionally check processor occupancy and distribute to other - // processors - void insertInternalPoints - ( - List<Point>& points, - const bool distribute = false - ); - - void insertPoints - ( - List<Vb>& vertices, - bool distribute = true - ); - - //- Create a point-pair at a ppDist distance either side of - // surface point surfPt, in the direction n - inline void createPointPair - ( - const scalar ppDist, - const Foam::point& surfPt, - const vector& n, - DynamicList<Vb>& pts - ); - - inline Foam::point perturbPoint(const Foam::point& pt) const; - - //- Create a point-pair at a ppDist distance either side of - // surface point surfPt, in the direction n - inline void createBafflePointPair - ( - const scalar ppDist, - const Foam::point& surfPt, - const vector& n, - DynamicList<Vb>& pts - ); - - inline bool isPointPair - ( - const Vertex_handle& vA, - const Vertex_handle& vB - ) const; - - //- Insert pairs of points on the surface with the given normals, at the - // specified spacing - void insertSurfacePointPairs - ( - const pointIndexHitAndFeatureList& surfaceHits, - const fileName fName = fileName::null - ); - - //- Insert groups of points to conform to an edge given a list of - // pointIndexHits specifying the location and edge index of the point - // to be conformed to on the corresponding entry in featureHit - void insertEdgePointGroups - ( - const pointIndexHitAndFeatureList& edgeHits, - const fileName fName = fileName::null - ); - - //- Call the appropriate function to conform to an edge - void createEdgePointGroup - ( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts - ); - - //- Create points to conform to an external edge - void createExternalEdgePointGroup - ( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts - ); - - //- Create points to conform to an internal edge - void createInternalEdgePointGroup - ( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts - ); - - //- Create points to conform to a flat edge - void createFlatEdgePointGroup - ( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts - ); - - //- Create points to conform to an open edge - void createOpenEdgePointGroup - ( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts - ); - - //- Create points to conform to multiply connected edge - void createMultipleEdgePointGroup - ( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts - ); - - //- Determine and insert point groups at the feature points - void insertFeaturePoints(); - - //- Create point groups at mixed feature points - void createMixedFeaturePoints(DynamicList<Vb>& pts); - - void addMasterAndSlavePoints - ( - const DynamicList<Foam::point>& masterPoints, - const DynamicList<indexedVertexEnum::vertexType>&masterPointsTypes, - const Map<DynamicList<autoPtr<plane> > >& masterPointReflections, - DynamicList<Vb>& pts, - const label ptI - ) const; - - label getSign(const extendedFeatureEdgeMesh::edgeStatus eStatus) const; - - void createMasterAndSlavePoints - ( - const extendedFeatureEdgeMesh& feMesh, - const label ptI, - DynamicList<Vb>& pts - ) const; - - void createFeaturePoints(DynamicList<Vb>& pts); - - vector sharedFaceNormal - ( - const extendedFeatureEdgeMesh& feMesh, - const label edgeI, - const label nextEdgeI - ) const; - - List<Foam::point> reflectPointInPlanes - ( - const Foam::point p, - const DynamicList<autoPtr<plane> >& planes - ) const; - - Foam::point reflectPointInPlane - ( - const Foam::point p, - const plane& planeN - ) const; - - - //- Fill the pointFeatureEdgesType struct with the types of feature - // edges that are attached to the point. - List<extendedFeatureEdgeMesh::edgeStatus> calcPointFeatureEdgesTypes - ( - const extendedFeatureEdgeMesh& feMesh, - const labelList& pEds, - pointFeatureEdgesTypes& pFEdgeTypes - ); - - //- Create feature point groups if a specialisation exists for the - // structure - bool createSpecialisedFeaturePoint - ( - const extendedFeatureEdgeMesh& feMesh, - const labelList& pEds, - const pointFeatureEdgesTypes& pFEdgeTypes, - const List<extendedFeatureEdgeMesh::edgeStatus>& allEdStat, - const label ptI, - DynamicList<Vb>& pts - ); - - //- Store the locations of all of the features to be conformed to - void constructFeaturePointLocations(); - - List<pointIndexHit> findSurfacePtLocationsNearFeaturePoint - ( - const Foam::point& featurePoint - ) const; - - //- Reinsert stored feature point defining points - void reinsertFeaturePoints(bool distribute = false); - - //- Check if a location is in exclusion range around a feature point - bool nearFeaturePt(const Foam::point& pt) const; - - //- Insert the initial points into the triangulation, based on the - // initialPointsMethod - void insertInitialPoints(); - - //- Calculate the worst load balance - scalar calculateLoadUnbalance() const; - - //- In parallel redistribute the backgroundMeshDecomposition and - // vertices to balance the number of vertices on each processor. - // Returns true if the background mesh changes as this removes all - // referred vertices, so the parallel interface may need rebuilt. - bool distributeBackground(); - - // Test for full containment - void cellSizeMeshOverlapsBackground() const; - - //- - void distribute(); - - void buildCellSizeAndAlignmentMesh(); - - //- Store data for sizeAndAlignmentLocations_, storedSizes_ and - // storedAlignments_ and initialise the sizeAndAlignmentTreePtr_, - // determining the appropriate sizeAndAlignmentLocations_ - // automatically - void storeSizesAndAlignments(); - - //- Store data for sizeAndAlignmentLocations_, storedSizes_ and - // storedAlignments_ and initialise the sizeAndAlignmentTreePtr_ - void storeSizesAndAlignments(const List<Point>& storePts); - - //- Restore the sizes and alignments if required - void updateSizesAndAlignments(const List<Point>& storePts); - - //- Demand driven construction of octree for and alignment points - const indexedOctree<treeDataPoint>& sizeAndAlignmentTree() const; - - //- Set the size and alignment data for each vertex - void setVertexSizeAndAlignment(); - - //- Builds a dual face by circulating around the supplied edge. - face buildDualFace - ( - const Delaunay::Finite_edges_iterator& eit - ) const; - - boolList dualFaceBoundaryPoints - ( - const Delaunay::Finite_edges_iterator& eit - ) const; - - //- Finds the maximum filterCount of the dual vertices - // (Delaunay cells) that form the dual face produced by the - // supplied edge - label maxFilterCount - ( - const Delaunay::Finite_edges_iterator& eit - ) const; - - //- Determines the owner and neighbour labels for dual cells - // corresponding to the dual face formed by the supplied - // Delaunay vertices. If the dual face is a boundary face - // then neighbour = -1. Returns true if the dual face - // created by vA -> vB needs to be reversed to be correctly - // orientated. - bool ownerAndNeighbour - ( - Vertex_handle vA, - Vertex_handle vB, - label& owner, - label& neighbour - ) const; - - //- Insert the necessary point pairs to conform to the surface, either - // from stored results, or trigger a re-conformation - void conformToSurface(); - - //- Decision making function for when to rebuild the surface - // conformation - reconformationMode reconformationControl() const; - - //- Determines geometrically whether a vertex is close to a surface - // This is an optimisation - label findVerticesNearBoundaries(); - - //- Create and insert the necessary point pairs to conform to the - // surface, then store the result - void buildSurfaceConformation(); - - label synchroniseEdgeTrees - ( - pointIndexHitAndFeatureList& featureEdgeHits - ); - - label synchroniseSurfaceTrees - ( - pointIndexHitAndFeatureList& surfaceHits - ); - - bool locationConformsToInside - ( - const pointIndexHitAndFeature& info - ) const; - - //- Check to see if dual cell specified by given vertex iterator - // intersects the boundary and hence reqires a point-pair - bool dualCellSurfaceAnyIntersection - ( - const Delaunay::Finite_vertices_iterator& vit - ) const; - - //- Return all intersections - bool dualCellSurfaceAllIntersections - ( - const Delaunay::Finite_vertices_iterator& vit, - pointIndexHitAndFeatureDynList& info - ) const; - - //- Return false if the line is entirely outside the current processor - // domain, true is either point is inside, or the processor domain - // bounadry is intersected (i.e. the points are box outside but the - // line cuts. The points will be moved onto the box where they - // intersect. - bool clipLineToProc - ( - const Foam::point& pt, - Foam::point& a, - Foam::point& b - ) const; - - //- Find the "worst" protrusion of a dual cell through the surface, - // subject to the maxSurfaceProtrusion tolerance - void dualCellLargestSurfaceProtrusion - ( - const Delaunay::Finite_vertices_iterator& vit, - pointIndexHit& surfHit, - label& hitSurface - ) const; - - //- Find the "worst" incursion of the dual cell of a non-internal or - // boundary point through the surface, subject to the - // maxSurfaceProtrusion tolerance - void dualCellLargestSurfaceIncursion - ( - const Delaunay::Finite_vertices_iterator& vit, - pointIndexHit& surfHitLargest, - label& hitSurfaceLargest - ) const; - - //- Write out vertex-processor occupancy information for debugging - void reportProcessorOccupancy(); - - //- Write out debugging information about the surface conformation - // quality -// void reportSurfaceConformationQuality(); - - //- Limit the displacement of a point so that it doesn't penetrate the - // surface to be meshed or come too close to it - void limitDisplacement - ( - const Delaunay::Finite_vertices_iterator& vit, - vector& displacement, - label callCount = 0 - ) const; - - //- Find angle between the normals of two close surface points. - scalar angleBetweenSurfacePoints(Foam::point pA, Foam::point pB) const; - - //- Check if a surface point is near another. - bool nearSurfacePoint - ( - pointIndexHitAndFeature& pHit - ) const; - - //- Append a point to the surface point tree and the existing list - bool appendToSurfacePtTree - ( - const Foam::point& pt - ) const; - - //- Append a point to the edge location tree and the existing list - bool appendToEdgeLocationTree - ( - const Foam::point& pt - ) const; - - //- Return a list of the nearest feature edge locations - List<pointIndexHit> nearestFeatureEdgeLocations - ( - const Foam::point& pt - ) const; - - //- Check if a point is near any feature edge points. - bool pointIsNearFeatureEdgeLocation(const Foam::point& pt) const; - - bool pointIsNearFeatureEdgeLocation - ( - const Foam::point& pt, - pointIndexHit& info - ) const; - - //- Check if a point is near any surface conformation points. - bool pointIsNearSurfaceLocation(const Foam::point& pt) const; - - bool pointIsNearSurfaceLocation - ( - const Foam::point& pt, - pointIndexHit& info - ) const; - - //- Check if a location is in the exclusion range of an existing feature - //- edge conformation location - bool nearFeatureEdgeLocation - ( - pointIndexHit& pHit - ) const; - - //- Build or rebuild the edge location tree - void buildEdgeLocationTree - ( - const DynamicList<Foam::point>& existingEdgeLocations - ) const; - - //- Build or rebuild the surface point location tree - void buildSurfacePtLocationTree - ( - const DynamicList<Foam::point>& existingSurfacePtLocations - ) const; - - //- Build or rebuild the sizeAndAlignmentTree - void buildSizeAndAlignmentTree() const; - - //- Process the surface conformation locations to decide which surface - // and edge conformation locations to add - void addSurfaceAndEdgeHits - ( - const Delaunay::Finite_vertices_iterator& vit, - const pointIndexHitAndFeatureDynList& surfaceIntersections, - scalar surfacePtReplaceDistCoeffSqr, - scalar edgeSearchDistCoeffSqr, - pointIndexHitAndFeatureDynList& surfaceHits, - pointIndexHitAndFeatureDynList& featureEdgeHits - ) const; - - //- Store the surface conformation with the indices offset to be - // relative to zero - void storeSurfaceConformation(); - - //- Reinsert the surface conformation re-offsetting indices to be - // relative to new number of internal vertices - void reinsertSurfaceConformation(); - - void checkCells(); - - void checkDuals(); - - void checkVertices(); - - void checkCoPlanarCells() const; - - //- Dual calculation - void calcDualMesh - ( - pointField& points, - labelList& boundaryPts, - faceList& faces, - labelList& owner, - labelList& neighbour, - wordList& patchTypes, - wordList& patchNames, - labelList& patchSizes, - labelList& patchStarts, - labelList& procNeighbours, - pointField& cellCentres, - labelList& cellToDelaunayVertex, - labelListList& patchToDelaunayVertex, - PackedBoolList& boundaryFacesToRemove - ); - - //- Tet mesh calculation - void calcTetMesh - ( - pointField& points, - labelList& pointToDelaunayVertex, - faceList& faces, - labelList& owner, - labelList& neighbour, - wordList& patchTypes, - wordList& patchNames, - labelList& patchSizes, - labelList& patchStarts - ); - - //- Determines if the dual face constructed by the Delaunay - // edge is a boundary face - inline bool isBoundaryDualFace - ( - const Delaunay::Finite_edges_iterator& eit - ) const; - - //- Which processors are attached to the dual edge represented by this - // Delaunay facet - inline List<label> processorsAttached - ( - const Delaunay::Finite_facets_iterator& fit - ) const; - - //- Determines if the edge constructed from the face is on - // a processor patch - inline bool isParallelDualEdge - ( - const Delaunay::Finite_facets_iterator& fit - ) const; - - //- Determines if the dual face constructed by the Delaunay - // edge is a processor boundary face - inline bool isProcBoundaryEdge - ( - const Delaunay::Finite_edges_iterator& eit - ) const; - - //- Merge vertices that are identical - void mergeIdenticalDualVertices - ( - const pointField& pts, - const labelList& boundaryPts - ); - - label mergeIdenticalDualVertices - ( - const pointField& pts, - const labelList& boundaryPts, - Map<label>& dualPtIndexMap - ) const; - - //- Identify the face labels of the deferred collapse faces - void deferredCollapseFaceSet - ( - labelList& owner, - labelList& neighbour, - const HashSet<labelPair, labelPair::Hash<> >& deferredCollapseFaces - ) const; - - //- Check whether the cell sizes are fine enough. Creates a polyMesh. - void checkCellSizing(); - - //- Find all cells with a patch face that is not near the surface. The - // allowed offset is the fraction of the target cell size. - labelHashSet findOffsetPatchFaces - ( - const polyMesh& mesh, - const scalar allowedOffset - ) const; - - //- Create a polyMesh and check its quality, reports which - // elements damage the mesh quality, allowing backtracking. - labelHashSet checkPolyMeshQuality(const pointField& pts) const; - - //- Index all of the the Delaunay cells and calculate their - //- dual points - void indexDualVertices - ( - pointField& pts, - labelList& boundaryPts - ); - - //- Re-index all of the Delaunay cells - void reindexDualVertices(const Map<label>& dualPtIndexMap); - - label createPatchInfo - ( - wordList& patchNames, - wordList& patchTypes, - labelList& procNeighbours - ) const; - - //- Create all of the internal and boundary faces - void createFacesOwnerNeighbourAndPatches - ( - faceList& faces, - labelList& owner, - labelList& neighbour, - wordList& patchTypes, - wordList& patchNames, - labelList& patchSizes, - labelList& patchStarts, - labelList& procNeighbours, - labelListList& patchPointPairSlaves, - PackedBoolList& boundaryFacesToRemove, - bool includeEmptyPatches = false - ) const; - - //- Create the cell centres to use for the mesh - void createCellCentres(pointField& cellCentres) const; - - //- Extract all points in vertex-index order - tmp<pointField> allPoints() const; - - //- Sort the faces, owner and neighbour lists into - // upper-triangular order. For internal faces only, use - // before adding patch faces - void sortFaces - ( - faceList& faces, - labelList& owner, - labelList& neighbour - ) const; - - //- Sort the processor patches so that the faces are in the same order - // on both processors - void sortProcPatches - ( - List<DynamicList<face> >& patchFaces, - List<DynamicList<label> >& patchOwners, - List<DynamicList<label> >& patchPointPairSlaves, - labelPairPairDynListList& patchSortingIndices - ) const; - - //- Add the faces and owner information for the patches - void addPatches - ( - const label nInternalFaces, - faceList& faces, - labelList& owner, - labelList& patchSizes, - labelList& patchStarts, - PackedBoolList& boundaryFacesToRemove, - const List<DynamicList<face> >& patchFaces, - const List<DynamicList<label> >& patchOwners, - const List<DynamicList<bool> >& indirectPatchFace - ) const; - - //- Remove points that are no longer used by any faces - void removeUnusedPoints - ( - faceList& faces, - pointField& pts, - labelList& boundaryPts - ) const; - - //- Remove dual cells that are not used by any faces. Return compaction - // map. - labelList removeUnusedCells - ( - labelList& owner, - labelList& neighbour - ) const; - - //- Create an empty fvMesh - autoPtr<fvMesh> createDummyMesh - ( - const IOobject& io, - const wordList& patchTypes, - const wordList& patchNames, - const labelList& patchSizes, - const labelList& patchStarts, - const labelList& procNeighbours - ) const; - - //- Create a polyMesh from points. - autoPtr<polyMesh> createPolyMeshFromPoints(const pointField& pts) const; - - void checkProcessorPatchesMatch - ( - const wordList& patchTypes, - const labelList& patchSizes, - const labelList& procNeighbours - ) const; - - void reorderPoints - ( - pointField& points, - labelList& boundaryPts, - faceList& faces, - const label nInternalFaces - ) const; - - //- Rotate the faces on processor patches if necessary - void reorderProcessorPatches - ( - const word& meshName, - const fileName& instance, - const pointField& points, - faceList& faces, - const wordList& patchTypes, - const wordList& patchNames, - const labelList& patchSizes, - const labelList& patchStarts, - const labelList& procNeighbours - ) const; - - //- Disallow default bitwise copy construct - conformalVoronoiMesh(const conformalVoronoiMesh&); - - //- Disallow default bitwise assignment - void operator=(const conformalVoronoiMesh&); - - -public: - - //- Runtime type information - ClassName("conformalVoronoiMesh"); - - - // Constructors - - //- Construct from Time and cvMeshDict - conformalVoronoiMesh - ( - const Time& runTime, - const dictionary& cvMeshDict - ); - - - //- Destructor - ~conformalVoronoiMesh(); - - - // Member Functions - - //- Move the vertices according to the controller, re-conforming to the - // surface as required - void move(); - - void printVertexInfo() const; - - //- Check if the point is in the domain handled by this processor - bool positionOnThisProc(const Foam::point& pt) const; - - //- Check if the point is in the domain handled by this processor - boolList positionOnThisProc(const Foam::List<Foam::point>& pts) const; - - //- Which processor's domain handles this point - labelList positionProc(const Foam::List<Foam::point>& pts) const; - - //- Which other processors does each line segment intersect - List<List<pointIndexHit> > intersectsProc - ( - const List<Foam::point>& starts, - const List<Foam::point>& ends - ) const; - -// //- Which other processors does each sphere overlap -// labelListList overlapsProc -// ( -// const List<Foam::point>& centres, -// const List<scalar>& radiusSqrs -// ) const; - - typedef K::Vector_3 CGALVector; - - inline CGALVector toCGALVector(const Foam::vector& v) const; - - - // Access - - //- Return the Time object - inline const Time& time() const; - - //- Return the random number generator - inline Random& rndGen() const; - - //- Return the allGeometry object - inline const searchableSurfaces& allGeometry() const; - - //- Return the conformationSurfaces object - inline const conformationSurfaces& geometryToConformTo() const; - - //- Return the backgroundMeshDecomposition - inline const backgroundMeshDecomposition& decomposition() const; - - //- Return the cellShapeControl object - inline const cellShapeControl& cellShapeControls() const; - - //- Return the cvMeshControls object - inline const cvControls& cvMeshControls() const; - - - // Write - - //- Write the elapsedCpuTime and memory usage, with an optional - // description - void timeCheck - ( - const string& description = string::null - ) const; - - //- Write the Delaunay cell - void drawDelaunayCell - ( - Ostream& os, - const Cell_handle& c, - label offset = 0 - ) const; - - //- Write Delaunay points in the range between (and including) - // type startPointType and endPointType to .obj file - void writePoints - ( - const fileName& fName, - const Foam::indexedVertexEnum::vertexType startPointType, - const Foam::indexedVertexEnum::vertexType endPointType - ) const; - - //- Write Delaunay points of type pointType to .obj file - void writePoints - ( - const fileName& fName, - const Foam::indexedVertexEnum::vertexType pointType - ) const; - - //- Write the boundary Delaunay points to .obj file - void writeBoundaryPoints(const fileName& fName) const; - - //- Write list of points to file - void writePoints - ( - const fileName& fName, - const List<Foam::point>& points - ) const; - - //- Write list of points to file - void writePoints - ( - const fileName& fName, - const List<Vb>& points - ) const; - - //- Write the internal Delaunay vertices of the tessellation as a - // pointField that may be used to restart the meshing process - void writeInternalDelaunayVertices(const fileName& instance) const; - - //- Prepare data and call writeMesh for polyMesh and - // tetDualMesh - void writeMesh(const fileName& instance); - - //- Write mesh to disk - void writeMesh - ( - const word& meshName, - const fileName& instance, - pointField& points, - labelList& boundaryPts, - faceList& faces, - labelList& owner, - labelList& neighbour, - const wordList& patchTypes, - const wordList& patchNames, - const labelList& patchSizes, - const labelList& patchStarts, - const labelList& procNeighbours, - const pointField& cellCentres, - const PackedBoolList& boundaryFacesToRemove - ) const; - - //- Write points and faces as .obj file - void writeObjMesh - ( - const pointField& points, - const faceList& faces, - const fileName& fName - ) const; - - //- Calculate and write a field of the target cell size, - // target cell volume, actual cell volume and equivalent - // actual cell size (cbrt(actual cell volume)). - void writeCellSizes(const fvMesh& mesh) const; - - void writeCellAlignments(const fvMesh& mesh) const; - - //- Calculate and write the cell centres. - void writeCellCentres(const fvMesh& mesh) const; - - //- Find the cellSet of the boundary cells which have points that - // protrude out of the surface beyond a tolerance. - labelHashSet findRemainingProtrusionSet(const polyMesh& mesh) const; - - void writeProcessorInterface - ( - const fileName& fName, - const faceList& faces - ) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "conformalVoronoiMeshI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C deleted file mode 100644 index 66a26f666f1bbc0c3380b41775fdf0f9a314446f..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C +++ /dev/null @@ -1,2571 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "conformalVoronoiMesh.H" -#include "motionSmoother.H" -#include "backgroundMeshDecomposition.H" -#include "polyMeshGeometry.H" -#include "indexedCellChecks.H" - -#include "CGAL/Exact_predicates_exact_constructions_kernel.h" -#include "CGAL/Gmpq.h" - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -void Foam::conformalVoronoiMesh::checkCells() -{ - List<List<FixedList<Foam::point, 4> > > cellListList(Pstream::nProcs()); - - List<FixedList<Foam::point, 4> > cells(number_of_finite_cells()); - - globalIndex gIndex(number_of_vertices()); - - label count = 0; - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - if (tetrahedron(cit).volume() == 0) - { - Pout<< "ZERO VOLUME TET" << endl; - Pout<< cit->info(); - Pout<< cit->dual(); - } - - if (cit->hasFarPoint()) - { - continue; - } - - List<labelPair> cellVerticesPair(4); - List<Foam::point> cellVertices(4); - - for (label vI = 0; vI < 4; ++vI) - { - cellVerticesPair[vI] = labelPair - ( - cit->vertex(vI)->procIndex(), - cit->vertex(vI)->index() - ); - cellVertices[vI] = topoint(cit->vertex(vI)->point()); - } - - List<Foam::point> cellVerticesOld(cellVertices); - labelList oldToNew; - sortedOrder(cellVerticesPair, oldToNew); - oldToNew = invert(oldToNew.size(), oldToNew); - inplaceReorder(oldToNew, cellVerticesPair); - inplaceReorder(oldToNew, cellVertices); - -// FixedList<label, 4> globalTetCell -// ( -// cit->globallyOrderedCellVertices(gIndex) -// ); -// -// FixedList<Point, 4> cellVertices(Point(0,0,0)); -// -// forAll(globalTetCell, gvI) -// { -// label gI = globalTetCell[gvI]; -// -// cellVertices[gvI] = cit->vertex(gI)->point(); -// } - -// if (cit->hasFarPoint()) -// { -// continue; -// } - - for (label i = 0; i < 4; ++i) - { - //cells[count][i] = topoint(cit->vertex(i)->point()); - cells[count][i] = cellVertices[i]; - } - - count++; - } - - cells.setSize(count); - - cellListList[Pstream::myProcNo()] = cells; - - Pstream::gatherList(cellListList); - - if (Pstream::master()) - { - Info<< "Checking on master processor the cells of each " << nl - << "processor point list against the master cell list." << nl - << "There are " << cellListList.size() << " processors" << nl - << "The size of each processor's cell list is:" << endl; - - forAll(cellListList, cfI) - { - Info<< " Proc " << cfI << " has " << cellListList[cfI].size() - << " cells" << endl; - } - - label nMatches = 0, nMatchFoundDiffOrder = 0; - - forAll(cellListList[0], cmI) - { - const FixedList<Foam::point, 4>& masterCell = cellListList[0][cmI]; - - bool matchFound = false; - bool matchFoundDiffOrder = false; - - forAll(cellListList, cpI) - { - if (cpI == 0) - { - continue; - } - - forAll(cellListList[cpI], csI) - { - const FixedList<Foam::point, 4>& slaveCell - = cellListList[cpI][csI]; - - if (masterCell == slaveCell) - { - matchFound = true; - break; - } - else - { - label samePt = 0; - - forAll(masterCell, mI) - { - const Foam::point& mPt = masterCell[mI]; - - forAll(slaveCell, sI) - { - const Foam::point& sPt = slaveCell[sI]; - - if (mPt == sPt) - { - samePt++; - } - } - } - - if (samePt == 4) - { - matchFoundDiffOrder = true; - - Pout<< masterCell << nl << slaveCell << endl; - - break; - } - } - } - } - - if (matchFound) - { - nMatches++; - } - - if (matchFoundDiffOrder) - { - nMatchFoundDiffOrder++; - } - } - - Info<< "Found " << nMatches << " matching cells and " - << nMatchFoundDiffOrder << " matching cells with different " - << "vertex ordering"<< endl; - } -} - - -void Foam::conformalVoronoiMesh::checkDuals() -{ - List<List<Point> > pointFieldList(Pstream::nProcs()); - - List<Point> duals(number_of_finite_cells()); - - typedef CGAL::Exact_predicates_exact_constructions_kernel EK2; - typedef CGAL::Regular_triangulation_euclidean_traits_3<EK2> EK; - typedef CGAL::Cartesian_converter<baseK::Kernel, EK2> To_exact; - typedef CGAL::Cartesian_converter<EK2, baseK::Kernel> Back_from_exact; - -// PackedBoolList bPoints(number_of_finite_cells()); - -// indexDualVertices(duals, bPoints); - - label count = 0;//duals.size(); - - duals.setSize(number_of_finite_cells()); - - globalIndex gIndex(number_of_vertices()); - - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - if (cit->hasFarPoint()) - { - continue; - } - - duals[count++] = cit->circumcenter(); - -// List<labelPair> cellVerticesPair(4); -// List<Point> cellVertices(4); -// -// for (label vI = 0; vI < 4; ++vI) -// { -// cellVerticesPair[vI] = labelPair -// ( -// cit->vertex(vI)->procIndex(), -// cit->vertex(vI)->index() -// ); -// cellVertices[vI] = cit->vertex(vI)->point(); -// } -// -// labelList oldToNew; -// sortedOrder(cellVerticesPair, oldToNew); -// oldToNew = invert(oldToNew.size(), oldToNew); -// inplaceReorder(oldToNew, cellVerticesPair); -// inplaceReorder(oldToNew, cellVertices); -// -// duals[count++] = CGAL::circumcenter -// ( -// cellVertices[0], -// cellVertices[1], -// cellVertices[2], -// cellVertices[3] -// ); - -// To_exact to_exact; -// Back_from_exact back_from_exact; -// EK::Construct_circumcenter_3 exact_circumcenter = -// EK().construct_circumcenter_3_object(); -// -// duals[count++] = topoint -// ( -// back_from_exact -// ( -// exact_circumcenter -// ( -// to_exact(cit->vertex(0)->point()), -// to_exact(cit->vertex(1)->point()), -// to_exact(cit->vertex(2)->point()), -// to_exact(cit->vertex(3)->point()) -// ) -// ) -// ); - } - - Pout<< "Duals Calculated " << count << endl; - - duals.setSize(count); - - pointFieldList[Pstream::myProcNo()] = duals; - - Pstream::gatherList(pointFieldList); - - if (Pstream::master()) - { - Info<< "Checking on master processor the dual locations of each " << nl - << "processor point list against the master dual list." << nl - << "There are " << pointFieldList.size() << " processors" << nl - << "The size of each processor's dual list is:" << endl; - - forAll(pointFieldList, pfI) - { - Info<< " Proc " << pfI << " has " << pointFieldList[pfI].size() - << " duals" << endl; - } - - label nNonMatches = 0; - label nNearMatches = 0; - label nExactMatches = 0; - - forAll(pointFieldList[0], pI) - { - const Point& masterPoint = pointFieldList[0][pI]; - - bool foundMatch = false; - bool foundNearMatch = false; - - scalar minCloseness = GREAT; - Point closestPoint(0, 0, 0); - - forAll(pointFieldList, pfI) - { - if (pfI == 0) - { - continue; - } - -// label pfI = 1; - - forAll(pointFieldList[pfI], pISlave) - { - const Point& slavePoint - = pointFieldList[pfI][pISlave]; - - if (masterPoint == slavePoint) - { - foundMatch = true; - break; - } - - const scalar closeness = mag - ( - topoint(masterPoint) - topoint(slavePoint) - ); - - if (closeness < 1e-12) - { - foundNearMatch = true; - } - else - { - if (closeness < minCloseness) - { - minCloseness = closeness; - closestPoint = slavePoint; - } - } - } - - if (!foundMatch) - { - if (foundNearMatch) - { - CGAL::Gmpq x(CGAL::to_double(masterPoint.x())); - CGAL::Gmpq y(CGAL::to_double(masterPoint.y())); - CGAL::Gmpq z(CGAL::to_double(masterPoint.z())); - - std::cout<< "master = " << x << " " << y << " " << z - << std::endl; - - CGAL::Gmpq xs(CGAL::to_double(closestPoint.x())); - CGAL::Gmpq ys(CGAL::to_double(closestPoint.y())); - CGAL::Gmpq zs(CGAL::to_double(closestPoint.z())); - std::cout<< "slave = " << xs << " " << ys << " " << zs - << std::endl; - - nNearMatches++; - } - else - { - nNonMatches++; - Info<< " Closest point to " << masterPoint << " is " - << closestPoint << nl - << " Separation is " << minCloseness << endl; - - CGAL::Gmpq x(CGAL::to_double(masterPoint.x())); - CGAL::Gmpq y(CGAL::to_double(masterPoint.y())); - CGAL::Gmpq z(CGAL::to_double(masterPoint.z())); - - std::cout<< "master = " << x << " " << y << " " << z - << std::endl; - - CGAL::Gmpq xs(CGAL::to_double(closestPoint.x())); - CGAL::Gmpq ys(CGAL::to_double(closestPoint.y())); - CGAL::Gmpq zs(CGAL::to_double(closestPoint.z())); - std::cout<< "slave = " << xs << " " << ys << " " << zs - << std::endl; - } - } - else - { - nExactMatches++; - } - } - } - - Info<< "Found " << nNonMatches << " non-matching duals" << nl - << " and " << nNearMatches << " near matches" - << " and " << nExactMatches << " exact matches" << endl; - } -} - - -void Foam::conformalVoronoiMesh::checkVertices() -{ - List<pointField> pointFieldList(Pstream::nProcs()); - - pointField points(number_of_vertices()); - - labelPairHashSet duplicateVertices; - - label count = 0; - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (duplicateVertices.found(labelPair(vit->procIndex(), vit->index()))) - { - Pout<< "DUPLICATE " << vit->procIndex() << vit->index() << endl; - } - else - { - duplicateVertices.insert(labelPair(vit->procIndex(), vit->index())); - } - - points[count++] = topoint(vit->point()); - } - - pointFieldList[Pstream::myProcNo()] = points; - - Pstream::gatherList(pointFieldList); - - OFstream str("missingPoints.obj"); - - if (Pstream::master()) - { - Info<< "Checking on master processor the point locations of each " << nl - << "processor point list against the master point list." << nl - << "There are " << pointFieldList.size() << " processors" << nl - << "The size of each processor's point list is:" << endl; - - forAll(pointFieldList, pfI) - { - Info<< " Proc " << pfI << " has " << pointFieldList[pfI].size() - << " points" << endl; - } - - label nNonMatches = 0; - - forAll(pointFieldList[0], pI) - { - const Foam::point& masterPoint = pointFieldList[0][pI]; - - forAll(pointFieldList, pfI) - { - if (pI == 0) - { - continue; - } - - bool foundMatch = false; - - forAll(pointFieldList[pfI], pISlave) - { - const Foam::point& slavePoint - = pointFieldList[pfI][pISlave]; - - if (masterPoint == slavePoint) - { - foundMatch = true; - break; - } - } - - if (!foundMatch) - { - Info<< " Proc " << pfI << " Master != Slave -> " - << masterPoint << endl; - - meshTools::writeOBJ(str, masterPoint); - - nNonMatches++; - } - } - } - - Info<< "Found a total of " << nNonMatches << " non-matching points" - << endl; - } -} - - -void Foam::conformalVoronoiMesh::calcDualMesh -( - pointField& points, - labelList& boundaryPts, - faceList& faces, - labelList& owner, - labelList& neighbour, - wordList& patchTypes, - wordList& patchNames, - labelList& patchSizes, - labelList& patchStarts, - labelList& procNeighbours, - pointField& cellCentres, - labelList& cellToDelaunayVertex, - labelListList& patchToDelaunayVertex, - PackedBoolList& boundaryFacesToRemove -) -{ - timeCheck("Start calcDualMesh"); - -// if (debug) -// { -// Pout<< nl << "Perfoming some checks . . ." << nl << nl -// << "Total number of vertices = " << number_of_vertices() << nl -// << "Total number of cells = " << number_of_finite_cells() -// << endl; -// -// checkVertices(); -// checkCells(); -// checkDuals(); -// -// Info<< nl << "Finished checks" << nl << endl; -// } - - setVertexSizeAndAlignment(); - - timeCheck("After setVertexSizeAndAlignment"); - - indexDualVertices(points, boundaryPts); - - { - Info<< nl << "Merging identical points" << endl; - - // There is no guarantee that a merge of close points is no-risk - mergeIdenticalDualVertices(points, boundaryPts); - } - - // Final dual face and owner neighbour construction - - timeCheck("Before createFacesOwnerNeighbourAndPatches"); - - createFacesOwnerNeighbourAndPatches - ( - faces, - owner, - neighbour, - patchTypes, - patchNames, - patchSizes, - patchStarts, - procNeighbours, - patchToDelaunayVertex, // from patch face to Delaunay vertex (slavePp) - boundaryFacesToRemove, - false - ); - - // deferredCollapseFaceSet(owner, neighbour, deferredCollapseFaces); - - cellCentres = allPoints(); - - cellToDelaunayVertex = removeUnusedCells(owner, neighbour); - - cellCentres = pointField(cellCentres, cellToDelaunayVertex); - - removeUnusedPoints(faces, points, boundaryPts); - - timeCheck("End of calcDualMesh"); -} - - -void Foam::conformalVoronoiMesh::calcTetMesh -( - pointField& points, - labelList& pointToDelaunayVertex, - faceList& faces, - labelList& owner, - labelList& neighbour, - wordList& patchTypes, - wordList& patchNames, - labelList& patchSizes, - labelList& patchStarts -) -{ - labelList vertexMap(number_of_vertices()); - - label vertI = 0; - - points.setSize(number_of_vertices()); - pointToDelaunayVertex.setSize(number_of_vertices()); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalPoint() || vit->boundaryPoint()) - { - vertexMap[vit->index()] = vertI; - points[vertI] = topoint(vit->point()); - pointToDelaunayVertex[vertI] = vit->index(); - vertI++; - } - } - - points.setSize(vertI); - pointToDelaunayVertex.setSize(vertI); - - label cellI = 0; - - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - if (cit->internalOrBoundaryDualVertex()) - { - cit->cellIndex() = cellI++; - } - else - { - cit->cellIndex() = Cb::ctFar; - } - } - - patchNames = geometryToConformTo_.patchNames(); - - patchNames.setSize(patchNames.size() + 1); - - patchNames[patchNames.size() - 1] = "cvMesh_defaultPatch"; - patchTypes.setSize(patchNames.size(), wallPolyPatch::typeName); - - label nPatches = patchNames.size(); - - List<DynamicList<face> > patchFaces(nPatches, DynamicList<face>(0)); - - List<DynamicList<label> > patchOwners(nPatches, DynamicList<label>(0)); - - faces.setSize(number_of_finite_facets()); - - owner.setSize(number_of_finite_facets()); - - neighbour.setSize(number_of_finite_facets()); - - label faceI = 0; - - labelList verticesOnTriFace(3, -1); - - face newFace(verticesOnTriFace); - - for - ( - Delaunay::Finite_facets_iterator fit = finite_facets_begin(); - fit != finite_facets_end(); - ++fit - ) - { - const Cell_handle c1(fit->first); - const int oppositeVertex = fit->second; - const Cell_handle c2(c1->neighbor(oppositeVertex)); - - if (c1->hasFarPoint() && c2->hasFarPoint()) - { - // Both tets are outside, skip - continue; - } - - label c1I = c1->cellIndex(); - label c2I = c2->cellIndex(); - - label ownerCell = -1; - label neighbourCell = -1; - - for (label i = 0; i < 3; i++) - { - verticesOnTriFace[i] = vertexMap - [ - c1->vertex(vertex_triple_index(oppositeVertex, i))->index() - ]; - } - - newFace = face(verticesOnTriFace); - - if (c1->hasFarPoint() || c2->hasFarPoint()) - { - // Boundary face... - if (c1->hasFarPoint()) - { - //... with c1 outside - ownerCell = c2I; - } - else - { - // ... with c2 outside - ownerCell = c1I; - - reverse(newFace); - } - - label patchIndex = geometryToConformTo_.findPatch - ( - newFace.centre(points) - ); - - if (patchIndex == -1) - { - patchIndex = patchNames.size() - 1; - - WarningIn("Foam::conformalVoronoiMesh::calcTetMesh") - << "Tet face centre at " << nl - << newFace.centre(points) << nl - << "did not find a surface patch. Adding to " - << patchNames[patchIndex] - << endl; - } - - patchFaces[patchIndex].append(newFace); - patchOwners[patchIndex].append(ownerCell); - } - else - { - // Internal face... - if (c1I < c2I) - { - // ...with c1 as the ownerCell - ownerCell = c1I; - neighbourCell = c2I; - - reverse(newFace); - } - else - { - // ...with c2 as the ownerCell - ownerCell = c2I; - neighbourCell = c1I; - } - - faces[faceI] = newFace; - owner[faceI] = ownerCell; - neighbour[faceI] = neighbourCell; - faceI++; - } - } - - label nInternalFaces = faceI; - - faces.setSize(nInternalFaces); - owner.setSize(nInternalFaces); - neighbour.setSize(nInternalFaces); - - sortFaces(faces, owner, neighbour); - -// addPatches -// ( -// nInternalFaces, -// faces, -// owner, -// patchSizes, -// patchStarts, -// patchFaces, -// patchOwners -// ); -} - - -void Foam::conformalVoronoiMesh::mergeIdenticalDualVertices -( - const pointField& pts, - const labelList& boundaryPts -) -{ - // Assess close points to be merged - - label nPtsMerged = 0; - label nPtsMergedSum = 0; - - do - { - Map<label> dualPtIndexMap; - - nPtsMerged = mergeIdenticalDualVertices - ( - pts, - boundaryPts, - dualPtIndexMap - ); - - reindexDualVertices(dualPtIndexMap); - - reduce(nPtsMerged, sumOp<label>()); - - nPtsMergedSum += nPtsMerged; - - } while (nPtsMerged > 0); - - if (nPtsMergedSum > 0) - { - Info<< " Merged " << nPtsMergedSum << " points " << endl; - } -} - - -Foam::label Foam::conformalVoronoiMesh::mergeIdenticalDualVertices -( - const pointField& pts, - const labelList& boundaryPts, - Map<label>& dualPtIndexMap -) const -{ - label nPtsMerged = 0; - - for - ( - Delaunay::Finite_facets_iterator fit = finite_facets_begin(); - fit != finite_facets_end(); - ++fit - ) - { - const Cell_handle c1(fit->first); - const int oppositeVertex = fit->second; - const Cell_handle c2(c1->neighbor(oppositeVertex)); - - if (is_infinite(c1) || is_infinite(c2)) - { - continue; - } - - label& c1I = c1->cellIndex(); - label& c2I = c2->cellIndex(); - - if ((c1I != c2I) && !c1->hasFarPoint() && !c2->hasFarPoint()) - { - const Foam::point& p1 = pts[c1I]; - const Foam::point& p2 = pts[c2I]; - - if (p1 == p2) - { - if (c1I < c2I) - { - dualPtIndexMap.insert(c1I, c1I); - dualPtIndexMap.insert(c2I, c1I); - } - else - { - dualPtIndexMap.insert(c1I, c2I); - dualPtIndexMap.insert(c2I, c2I); - } - - nPtsMerged++; - } - } - } - - if (debug) - { - Info<< "mergeIdenticalDualVertices:" << endl - << " zero-length edges : " - << returnReduce(nPtsMerged, sumOp<label>()) << endl - << endl; - } - - return nPtsMerged; -} - - -//void Foam::conformalVoronoiMesh::smoothSurface -//( -// pointField& pts, -// const labelList& boundaryPts -//) -//{ -// label nCollapsedFaces = 0; -// -// label iterI = 0; -// -// do -// { -// Map<label> dualPtIndexMap; -// -// nCollapsedFaces = smoothSurfaceDualFaces -// ( -// pts, -// boundaryPts, -// dualPtIndexMap -// ); -// -// reduce(nCollapsedFaces, sumOp<label>()); -// -// reindexDualVertices(dualPtIndexMap); -// -// mergeIdenticalDualVertices(pts, boundaryPts); -// -// if (nCollapsedFaces > 0) -// { -// Info<< " Collapsed " << nCollapsedFaces << " boundary faces" -// << endl; -// } -// -// if (++iterI > cvMeshControls().maxCollapseIterations()) -// { -// Info<< " maxCollapseIterations reached, stopping collapse" -// << endl; -// -// break; -// } -// -// } while (nCollapsedFaces > 0); -// -// // Force all points of boundary faces to be on the surface -//// for -//// ( -//// Delaunay::Finite_cells_iterator cit = finite_cells_begin(); -//// cit != finite_cells_end(); -//// ++cit -//// ) -//// { -//// label ptI = cit->cellIndex(); -//// -//// label fC = cit->filterCount(); -//// -//// if (fC > cvMeshControls().filterCountSkipThreshold()) -//// { -//// // This vertex has been limited too many times, skip -//// continue; -//// } -//// -//// // Only cells with indices > -1 are valid -//// if (ptI > -1) -//// { -//// if (boundaryPts[ptI] != -1) -//// { -//// Foam::point& pt = pts[ptI]; -//// -//// pointIndexHit surfHit; -//// label hitSurface; -//// -//// geometryToConformTo_.findSurfaceNearest -//// ( -//// pt, -//// sqr(GREAT), -//// surfHit, -//// hitSurface -//// ); -//// -//// if (surfHit.hit()) -//// { -//// pt += (surfHit.hitPoint() - pt) -//// *pow -//// ( -//// cvMeshControls().filterErrorReductionCoeff(), -//// fC -//// ); -//// } -//// } -//// } -//// } -//// -//// mergeCloseDualVertices(pts, boundaryPts); -//} -// -// -//Foam::label Foam::conformalVoronoiMesh::smoothSurfaceDualFaces -//( -// pointField& pts, -// const labelList& boundaryPts, -// Map<label>& dualPtIndexMap -//) const -//{ -// label nCollapsedFaces = 0; -// -// const scalar cosPerpendicularToleranceAngle = cos -// ( -// degToRad(cvMeshControls().surfaceStepFaceAngle()) -// ); -// -// for -// ( -// Delaunay::Finite_edges_iterator eit = finite_edges_begin(); -// eit != finite_edges_end(); -// ++eit -// ) -// { -// Cell_circulator ccStart = incident_cells(*eit); -// Cell_circulator cc = ccStart; -// -// bool skipFace = false; -// -// do -// { -// if (dualPtIndexMap.found(cc->cellIndex())) -// { -// // One of the points of this face has already been -// // collapsed this sweep, leave for next sweep -// -// skipFace = true; -// -// break; -// } -// -// } while (++cc != ccStart); -// -// if (skipFace) -// { -// continue; -// } -// -// if (isBoundaryDualFace(eit)) -// { -// face dualFace = buildDualFace(eit); -// -// if (dualFace.size() < 3) -// { -// // This face has been collapsed already -// continue; -// } -// -// label maxFC = maxFilterCount(eit); -// -// if (maxFC > cvMeshControls().filterCountSkipThreshold()) -// { -// // A vertex on this face has been limited too many -// // times, skip -// continue; -// } -// -// Cell_handle c = eit->first; -// Vertex_handle vA = c->vertex(eit->second); -// Vertex_handle vB = c->vertex(eit->third); -// -// if -// ( -// vA->internalBoundaryPoint() && vA->surfacePoint() -// && vB->externalBoundaryPoint() && vB->surfacePoint() -// ) -// { -// if (vA->index() == vB->index() - 1) -// { -// continue; -// } -// } -// else if -// ( -// vA->externalBoundaryPoint() && vA->surfacePoint() -// && vB->internalBoundaryPoint() && vB->surfacePoint() -// ) -// { -// if (vA->index() == vB->index() + 1) -// { -// continue; -// } -// } -//// else if -//// ( -//// vA->internalBoundaryPoint() && vA->featureEdgePoint() -//// && vB->externalBoundaryPoint() && vB->featureEdgePoint() -//// ) -//// { -//// if (vA->index() == vB->index() - 1) -//// { -//// continue; -//// } -//// } -//// else if -//// ( -//// vA->externalBoundaryPoint() && vA->featureEdgePoint() -//// && vB->internalBoundaryPoint() && vB->featureEdgePoint() -//// ) -//// { -//// if (vA->index() == vB->index() + 1) -//// { -//// continue; -//// } -//// } -//// else if -//// ( -//// vA->internalBoundaryPoint() && vA->featurePoint() -//// && vB->externalBoundaryPoint() && vB->featurePoint() -//// ) -//// { -//// if (vA->index() == vB->index() - 1) -//// { -//// continue; -//// } -//// } -//// else if -//// ( -//// vA->externalBoundaryPoint() && vA->featurePoint() -//// && vB->internalBoundaryPoint() && vB->featurePoint() -//// ) -//// { -//// if (vA->index() == vB->index() + 1) -//// { -//// continue; -//// } -//// } -// -// -// if ((faceNormal & surfaceNormal) < cosPerpendicularToleranceAngle) -// { -// scalar targetFaceSize = averageAnyCellSize(vA, vB); -// -// // Selecting faces to collapse based on angle to -// // surface, so set collapseSizeLimitCoeff to GREAT to -// // allow collapse of all faces -// -// faceCollapseMode mode = collapseFace -// ( -// dualFace, -// pts, -// boundaryPts, -// dualPtIndexMap, -// targetFaceSize, -// GREAT, -// maxFC -// ); -// -// if (mode == fcmPoint || mode == fcmEdge) -// { -// nCollapsedFaces++; -// } -// } -// } -// } -// -// return nCollapsedFaces; -//} - - -void Foam::conformalVoronoiMesh::deferredCollapseFaceSet -( - labelList& owner, - labelList& neighbour, - const HashSet<labelPair, labelPair::Hash<> >& deferredCollapseFaces -) const -{ - DynamicList<label> faceLabels; - - forAll(neighbour, nI) - { - if (deferredCollapseFaces.found(Pair<label>(owner[nI], neighbour[nI]))) - { - faceLabels.append(nI); - } - } - - Pout<< "facesToCollapse" << nl << faceLabels << endl; -} - - -Foam::autoPtr<Foam::polyMesh> -Foam::conformalVoronoiMesh::createPolyMeshFromPoints -( - const pointField& pts -) const -{ - faceList faces; - labelList owner; - labelList neighbour; - wordList patchTypes; - wordList patchNames; - labelList patchSizes; - labelList patchStarts; - labelList procNeighbours; - pointField cellCentres; - labelListList patchToDelaunayVertex; - PackedBoolList boundaryFacesToRemove; - - timeCheck("Start of checkPolyMeshQuality"); - - Info<< nl << "Creating polyMesh to assess quality" << endl; - - createFacesOwnerNeighbourAndPatches - ( - faces, - owner, - neighbour, - patchTypes, - patchNames, - patchSizes, - patchStarts, - procNeighbours, - patchToDelaunayVertex, - boundaryFacesToRemove, - false - ); - - //createCellCentres(cellCentres); - cellCentres = allPoints(); - - labelList cellToDelaunayVertex(removeUnusedCells(owner, neighbour)); - cellCentres = pointField(cellCentres, cellToDelaunayVertex); - - autoPtr<polyMesh> meshPtr - ( - new polyMesh - ( - IOobject - ( - "cvMesh_temporary", - runTime_.timeName(), - runTime_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - xferCopy(pts), - xferMove(faces), - xferMove(owner), - xferMove(neighbour) - ) - ); - - polyMesh& pMesh = meshPtr(); - - List<polyPatch*> patches(patchStarts.size()); - - label nValidPatches = 0; - - forAll(patches, p) - { - if (patchTypes[p] == processorPolyPatch::typeName) - { - // Do not create empty processor patches - if (patchSizes[p] > 0) - { - patches[nValidPatches] = new processorPolyPatch - ( - patchNames[p], - patchSizes[p], - patchStarts[p], - nValidPatches, - pMesh.boundaryMesh(), - Pstream::myProcNo(), - procNeighbours[p], - coupledPolyPatch::COINCIDENTFULLMATCH - ); - - nValidPatches++; - } - } - else - { - patches[nValidPatches] = polyPatch::New - ( - patchTypes[p], - patchNames[p], - patchSizes[p], - patchStarts[p], - nValidPatches, - pMesh.boundaryMesh() - ).ptr(); - - nValidPatches++; - } - } - - patches.setSize(nValidPatches); - - pMesh.addPatches(patches); - - // Info<< "ADDPATCHES NOT IN PARALLEL" << endl; - - // forAll(patches, p) - // { - // patches[p] = new polyPatch - // ( - // patchNames[p], - // patchSizes[p], - // patchStarts[p], - // p, - // pMesh.boundaryMesh() - // ); - // } - - // pMesh.addPatches(patches, false); - - // pMesh.overrideCellCentres(cellCentres); - - return meshPtr; -} - - -void Foam::conformalVoronoiMesh::checkCellSizing() -{ - Info<< "Checking cell sizes..."<< endl; - - timeCheck("Start of Cell Sizing"); - - labelList boundaryPts(number_of_finite_cells(), -1); - pointField ptsField; - - indexDualVertices(ptsField, boundaryPts); - - // Merge close dual vertices. - mergeIdenticalDualVertices(ptsField, boundaryPts); - - autoPtr<polyMesh> meshPtr = createPolyMeshFromPoints(ptsField); - const polyMesh& pMesh = meshPtr(); - - //pMesh.write(); - - // Find cells with poor quality - DynamicList<label> checkFaces(identity(pMesh.nFaces())); - labelHashSet wrongFaces(pMesh.nFaces()/100); - - Info<< "Running checkMesh on mesh with " << pMesh.nCells() - << " cells "<< endl; - - const dictionary& dict - = cvMeshControls().cvMeshDict().subDict("meshQualityControls"); - - const scalar maxNonOrtho = readScalar(dict.lookup("maxNonOrtho", true)); - - label nWrongFaces = 0; - - if (maxNonOrtho < 180.0 - SMALL) - { - polyMeshGeometry::checkFaceDotProduct - ( - false, - maxNonOrtho, - pMesh, - pMesh.cellCentres(), - pMesh.faceAreas(), - checkFaces, - List<labelPair>(), - &wrongFaces - ); - - label nNonOrthogonal = returnReduce(wrongFaces.size(), sumOp<label>()); - - Info<< " non-orthogonality > " << maxNonOrtho - << " degrees : " << nNonOrthogonal << endl; - - nWrongFaces += nNonOrthogonal; - } - - labelHashSet protrudingCells = findOffsetPatchFaces(pMesh, 0.25); - - label nProtrudingCells = protrudingCells.size(); - - Info<< " protruding/intruding cells : " << nProtrudingCells << endl; - - nWrongFaces += nProtrudingCells; - -// motionSmoother::checkMesh -// ( -// false, -// pMesh, -// cvMeshControls().cvMeshDict().subDict("meshQualityControls"), -// checkFaces, -// wrongFaces -// ); - - Info<< " Found total of " << nWrongFaces << " bad faces" << endl; - - { - labelHashSet cellsToResizeMap(pMesh.nFaces()/100); - - // Find cells that are attached to the faces in wrongFaces. - forAllConstIter(labelHashSet, wrongFaces, iter) - { - const label faceOwner = pMesh.faceOwner()[iter.key()]; - const label faceNeighbour = pMesh.faceNeighbour()[iter.key()]; - - if (!cellsToResizeMap.found(faceOwner)) - { - cellsToResizeMap.insert(faceOwner); - } - - if (!cellsToResizeMap.found(faceNeighbour)) - { - cellsToResizeMap.insert(faceNeighbour); - } - } - - cellsToResizeMap += protrudingCells; - - pointField cellsToResize(cellsToResizeMap.size()); - - label count = 0; - for (label cellI = 0; cellI < pMesh.nCells(); ++cellI) - { - if (cellsToResizeMap.found(cellI)) - { - cellsToResize[count++] = pMesh.cellCentres()[cellI]; - } - } - - Info<< " DISABLED: Automatically re-sizing " << cellsToResize.size() - << " cells that are attached to the bad faces: " << endl; - - //cellSizeControl_.setCellSizes(cellsToResize); - } - - timeCheck("End of Cell Sizing"); - - Info<< "Finished checking cell sizes"<< endl; -} - - -Foam::labelHashSet Foam::conformalVoronoiMesh::findOffsetPatchFaces -( - const polyMesh& mesh, - const scalar allowedOffset -) const -{ - timeCheck("Start findRemainingProtrusionSet"); - - const polyBoundaryMesh& patches = mesh.boundaryMesh(); - - cellSet offsetBoundaryCells - ( - mesh, - "cvMesh_protrudingCells", - mesh.nCells()/1000 - ); - - forAll(patches, patchI) - { - const polyPatch& patch = patches[patchI]; - - const faceList& localFaces = patch.localFaces(); - const pointField& localPoints = patch.localPoints(); - - const labelList& fCell = patch.faceCells(); - - forAll(localFaces, pLFI) - { - const face& f = localFaces[pLFI]; - - const Foam::point& faceCentre = f.centre(localPoints); - - const scalar targetSize = targetCellSize(faceCentre); - - pointIndexHit pHit; - label surfHit = -1; - - geometryToConformTo_.findSurfaceNearest - ( - faceCentre, - sqr(targetSize), - pHit, - surfHit - ); - - if - ( - pHit.hit() - && (mag(pHit.hitPoint() - faceCentre) > allowedOffset*targetSize) - ) - { - offsetBoundaryCells.insert(fCell[pLFI]); - } - } - } - - if (cvMeshControls().objOutput()) - { - offsetBoundaryCells.write(); - } - - return offsetBoundaryCells; -} - - -Foam::labelHashSet Foam::conformalVoronoiMesh::checkPolyMeshQuality -( - const pointField& pts -) const -{ - autoPtr<polyMesh> meshPtr = createPolyMeshFromPoints(pts); - polyMesh& pMesh = meshPtr(); - - timeCheck("polyMesh created, checking quality"); - - labelHashSet wrongFaces(pMesh.nFaces()/100); - - DynamicList<label> checkFaces(pMesh.nFaces()); - - const vectorField& fAreas = pMesh.faceAreas(); - - scalar faceAreaLimit = SMALL; - - forAll(fAreas, fI) - { - if (mag(fAreas[fI]) > faceAreaLimit) - { - checkFaces.append(fI); - } - } - - Info<< nl << "Excluding " - << returnReduce(fAreas.size() - checkFaces.size(), sumOp<label>()) - << " faces from check, < " << faceAreaLimit << " area" << endl; - - motionSmoother::checkMesh - ( - false, - pMesh, - cvMeshControls().cvMeshDict().subDict("meshQualityControls"), - checkFaces, - wrongFaces - ); - - { - // Check for cells with more than 1 but fewer than 4 faces - label nInvalidPolyhedra = 0; - - const cellList& cells = pMesh.cells(); - - forAll(cells, cI) - { - if (cells[cI].size() < 4 && cells[cI].size() > 0) - { - // Pout<< "cell " << cI << " " << cells[cI] - // << " has " << cells[cI].size() << " faces." - // << endl; - - nInvalidPolyhedra++; - - forAll(cells[cI], cFI) - { - wrongFaces.insert(cells[cI][cFI]); - } - } - } - - Info<< " cells with more than 1 but fewer than 4 faces : " - << returnReduce(nInvalidPolyhedra, sumOp<label>()) - << endl; - - // Check for cells with one internal face only - - labelList nInternalFaces(pMesh.nCells(), 0); - - for (label fI = 0; fI < pMesh.nInternalFaces(); fI++) - { - nInternalFaces[pMesh.faceOwner()[fI]]++; - nInternalFaces[pMesh.faceNeighbour()[fI]]++; - } - - const polyBoundaryMesh& patches = pMesh.boundaryMesh(); - - forAll(patches, patchI) - { - if (patches[patchI].coupled()) - { - const labelUList& owners = patches[patchI].faceCells(); - - forAll(owners, i) - { - nInternalFaces[owners[i]]++; - } - } - } - - label oneInternalFaceCells = 0; - - forAll(nInternalFaces, cI) - { - if (nInternalFaces[cI] <= 1) - { - oneInternalFaceCells++; - - forAll(cells[cI], cFI) - { - wrongFaces.insert(cells[cI][cFI]); - } - } - } - - Info<< " cells with with zero or one non-boundary face : " - << returnReduce(oneInternalFaceCells, sumOp<label>()) - << endl; - } - - - PackedBoolList ptToBeLimited(pts.size(), false); - - forAllConstIter(labelHashSet, wrongFaces, iter) - { - const face f = pMesh.faces()[iter.key()]; - - forAll(f, fPtI) - { - ptToBeLimited[f[fPtI]] = true; - } - } - - // // Limit connected cells - - // labelHashSet limitCells(pMesh.nCells()/100); - - // const labelListList& ptCells = pMesh.pointCells(); - - // forAllConstIter(labelHashSet, wrongFaces, iter) - // { - // const face f = pMesh.faces()[iter.key()]; - - // forAll(f, fPtI) - // { - // label ptI = f[fPtI]; - - // const labelList& pC = ptCells[ptI]; - - // forAll(pC, pCI) - // { - // limitCells.insert(pC[pCI]); - // } - // } - // } - - // const labelListList& cellPts = pMesh.cellPoints(); - - // forAllConstIter(labelHashSet, limitCells, iter) - // { - // label cellI = iter.key(); - - // const labelList& cP = cellPts[cellI]; - - // forAll(cP, cPI) - // { - // ptToBeLimited[cP[cPI]] = true; - // } - // } - - - // Apply Delaunay cell filterCounts and determine the maximum - // overall filterCount - - label maxFilterCount = 0; - - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - label cI = cit->cellIndex(); - - if (cI >= 0) - { - if (ptToBeLimited[cI] == true) - { - cit->filterCount()++; - } - - if (cit->filterCount() > maxFilterCount) - { - maxFilterCount = cit->filterCount(); - } - } - } - - Info<< nl << "Maximum number of filter limits applied: " - << returnReduce(maxFilterCount, maxOp<label>()) << endl; - - return wrongFaces; -} - - -void Foam::conformalVoronoiMesh::indexDualVertices -( - pointField& pts, - labelList& boundaryPts -) -{ - // Indexing Delaunay cells, which are the dual vertices - - this->resetCellCount(); - - pts.setSize(number_of_finite_cells()); - - boundaryPts.setSize(number_of_finite_cells(), -1); - - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { -// if (tetrahedron(cit).volume() == 0) -// { -// Pout<< "ZERO VOLUME TET" << endl; -// Pout<< cit->info(); -// Pout<< "Dual = " << cit->dual(); -// } - - if (!cit->hasFarPoint()) - { - cit->cellIndex() = getNewCellIndex(); - - // For nearly coplanar Delaunay cells that are present on different - // processors the result of the circumcentre calculation depends on - // the ordering of the vertices, so synchronise it across processors - - if (Pstream::parRun() && cit->parallelDualVertex()) - { - typedef CGAL::Exact_predicates_exact_constructions_kernel Exact; - typedef CGAL::Point_3<Exact> ExactPoint; - - List<labelPair> cellVerticesPair(4); - List<ExactPoint> cellVertices(4); - - for (label vI = 0; vI < 4; ++vI) - { - cellVerticesPair[vI] = labelPair - ( - cit->vertex(vI)->procIndex(), - cit->vertex(vI)->index() - ); - - cellVertices[vI] = ExactPoint - ( - cit->vertex(vI)->point().x(), - cit->vertex(vI)->point().y(), - cit->vertex(vI)->point().z() - ); - } - - // Sort the vertices so that they will be in the same order on - // each processor - labelList oldToNew; - sortedOrder(cellVerticesPair, oldToNew); - oldToNew = invert(oldToNew.size(), oldToNew); - inplaceReorder(oldToNew, cellVertices); - - ExactPoint synchronisedDual = CGAL::circumcenter - ( - cellVertices[0], - cellVertices[1], - cellVertices[2], - cellVertices[3] - ); - - pts[cit->cellIndex()] = Foam::point - ( - CGAL::to_double(synchronisedDual.x()), - CGAL::to_double(synchronisedDual.y()), - CGAL::to_double(synchronisedDual.z()) - ); - } - else - { - pts[cit->cellIndex()] = cit->dual(); - } - - if (cit->boundaryDualVertex()) - { - if (cit->featureEdgeDualVertex()) - { - boundaryPts[cit->cellIndex()] = 1; - } - else - { - boundaryPts[cit->cellIndex()] = 0; - } - } - } - else - { - cit->cellIndex() = Cb::ctFar; - } - } - - pts.setSize(this->cellCount()); - - boundaryPts.setSize(this->cellCount()); -} - - -void Foam::conformalVoronoiMesh::reindexDualVertices -( - const Map<label>& dualPtIndexMap -) -{ - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - if (dualPtIndexMap.found(cit->cellIndex())) - { - cit->cellIndex() = dualPtIndexMap[cit->cellIndex()]; - } - } -} - - -Foam::label Foam::conformalVoronoiMesh::createPatchInfo -( - wordList& patchNames, - wordList& patchTypes, - labelList& procNeighbours -) const -{ - patchNames = geometryToConformTo_.patchNames(); - patchTypes.setSize(patchNames.size() + 1, wallPolyPatch::typeName); - procNeighbours.setSize(patchNames.size() + 1, -1); - - patchNames.setSize(patchNames.size() + 1); - - label defaultPatchIndex = patchNames.size() - 1; - - patchTypes[defaultPatchIndex] = wallPolyPatch::typeName; - procNeighbours[defaultPatchIndex] = -1; - patchNames[defaultPatchIndex] = "cvMesh_defaultPatch"; - - label nProcPatches = 0; - - if (Pstream::parRun()) - { - List<boolList> procUsedList - ( - Pstream::nProcs(), - boolList(Pstream::nProcs(), false) - ); - - boolList& procUsed = procUsedList[Pstream::myProcNo()]; - - // Determine which processor patches are required - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - // This test is not sufficient if one of the processors does - // not receive a referred vertex from another processor, but does - // send one to the other processor. - if (vit->referred()) - { - procUsed[vit->procIndex()] = true; - } - } - - // Because the previous test was insufficient, combine the lists. - Pstream::gatherList(procUsedList); - Pstream::scatterList(procUsedList); - - forAll(procUsedList, procI) - { - if (procI != Pstream::myProcNo()) - { - if (procUsedList[procI][Pstream::myProcNo()]) - { - procUsed[procI] = true; - } - } - } - - forAll(procUsed, pUI) - { - if (procUsed[pUI]) - { - nProcPatches++; - } - } - - label nNonProcPatches = patchNames.size(); - - patchNames.setSize(nNonProcPatches + nProcPatches); - patchTypes.setSize(nNonProcPatches + nProcPatches); - procNeighbours.setSize(nNonProcPatches + nProcPatches, -1); - - label procAddI = 0; - - forAll(procUsed, pUI) - { - if (procUsed[pUI]) - { - patchTypes[nNonProcPatches + procAddI] = - processorPolyPatch::typeName; - - patchNames[nNonProcPatches + procAddI] = - "procBoundary" - + name(Pstream::myProcNo()) - + "to" - + name(pUI); - - procNeighbours[nNonProcPatches + procAddI] = pUI; - - procAddI++; - } - } - } - - return defaultPatchIndex; -} - - -void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches -( - faceList& faces, - labelList& owner, - labelList& neighbour, - wordList& patchTypes, - wordList& patchNames, - labelList& patchSizes, - labelList& patchStarts, - labelList& procNeighbours, - labelListList& patchPointPairSlaves, - PackedBoolList& boundaryFacesToRemove, - bool includeEmptyPatches -) const -{ - const label defaultPatchIndex = createPatchInfo - ( - patchNames, - patchTypes, - procNeighbours - ); - - const label nPatches = patchNames.size(); - - List<DynamicList<face> > patchFaces(nPatches, DynamicList<face>(0)); - List<DynamicList<label> > patchOwners(nPatches, DynamicList<label>(0)); - // Per patch face the index of the slave node of the point pair - List<DynamicList<label> > patchPPSlaves(nPatches, DynamicList<label>(0)); - - List<DynamicList<bool> > indirectPatchFace(nPatches, DynamicList<bool>(0)); - - faces.setSize(number_of_finite_edges()); - owner.setSize(number_of_finite_edges()); - neighbour.setSize(number_of_finite_edges()); - - labelPairPairDynListList procPatchSortingIndex(nPatches); - - label dualFaceI = 0; - - for - ( - Delaunay::Finite_edges_iterator eit = finite_edges_begin(); - eit != finite_edges_end(); - ++eit - ) - { - Cell_handle c = eit->first; - Vertex_handle vA = c->vertex(eit->second); - Vertex_handle vB = c->vertex(eit->third); - - if - ( - (vA->internalOrBoundaryPoint() && !vA->referred()) - || (vB->internalOrBoundaryPoint() && !vB->referred()) - ) - { - face newDualFace = buildDualFace(eit); - - if (newDualFace.size() >= 3) - { - label own = -1; - label nei = -1; - - if (ownerAndNeighbour(vA, vB, own, nei)) - { - reverse(newDualFace); - } - - if (nei == -1) - { - // boundary face - - pointFromPoint ptA = topoint(vA->point()); - pointFromPoint ptB = topoint(vB->point()); - - label patchIndex = -1; - - if (isProcBoundaryEdge(eit)) - { - // One (and only one) of the points is an internal - // point from another processor - - label procIndex = max(vA->procIndex(), vB->procIndex()); - - patchIndex = max - ( - findIndex(procNeighbours, vA->procIndex()), - findIndex(procNeighbours, vB->procIndex()) - ); - - // The lower processor index is the owner of the - // two for the purpose of sorting the patch faces. - - if (Pstream::myProcNo() < procIndex) - { - // Use this processor's vertex index as the master - // for sorting - - DynamicList<Pair<labelPair> >& sortingIndex = - procPatchSortingIndex[patchIndex]; - - if (vB->internalOrBoundaryPoint() && vB->referred()) - { - sortingIndex.append - ( - Pair<labelPair> - ( - labelPair(vA->index(), vA->procIndex()), - labelPair(vB->index(), vB->procIndex()) - ) - ); - } - else - { - sortingIndex.append - ( - Pair<labelPair> - ( - labelPair(vB->index(), vB->procIndex()), - labelPair(vA->index(), vA->procIndex()) - ) - ); - } - } - else - { - // Use the other processor's vertex index as the - // master for sorting - - DynamicList<Pair<labelPair> >& sortingIndex = - procPatchSortingIndex[patchIndex]; - - if (vA->internalOrBoundaryPoint() && vA->referred()) - { - sortingIndex.append - ( - Pair<labelPair> - ( - labelPair(vA->index(), vA->procIndex()), - labelPair(vB->index(), vB->procIndex()) - ) - ); - } - else - { - sortingIndex.append - ( - Pair<labelPair> - ( - labelPair(vB->index(), vB->procIndex()), - labelPair(vA->index(), vA->procIndex()) - ) - ); - } - } - -// Pout<< ptA << " " << ptB -// << " proc indices " -// << vA->procIndex() << " " << vB->procIndex() -// << " indices " << vA->index() -// << " " << vB->index() -// << " my proc " << Pstream::myProcNo() -// << " addedIndex " -// << procPatchSortingIndex[patchIndex].last() -// << endl; - } - else - { - patchIndex = geometryToConformTo_.findPatch(ptA, ptB); - } - - if (patchIndex == -1) - { - // Did not find a surface patch between - // between Dv pair, finding nearest patch - -// Pout<< "Did not find a surface patch between " -// << "for face, finding nearest patch to" -// << 0.5*(ptA + ptB) << endl; - - patchIndex = geometryToConformTo_.findPatch - ( - 0.5*(ptA + ptB) - ); - } - - patchFaces[patchIndex].append(newDualFace); - patchOwners[patchIndex].append(own); - - // If the two vertices are a pair, then the patch face is - // a desired one. - if (!isPointPair(vA, vB)) - { - indirectPatchFace[patchIndex].append(true); - } - else - { - indirectPatchFace[patchIndex].append(false); - } - - // Store the non-internal or boundary point - if (vA->internalOrBoundaryPoint()) - { - patchPPSlaves[patchIndex].append(vB->index()); - } - else - { - patchPPSlaves[patchIndex].append(vA->index()); - } - } - else - { - // internal face - faces[dualFaceI] = newDualFace; - owner[dualFaceI] = own; - neighbour[dualFaceI] = nei; - - dualFaceI++; - } - } - } - } - - if (!patchFaces[defaultPatchIndex].empty()) - { - Pout<< nl << patchFaces[defaultPatchIndex].size() - << " faces were not able to have their patch determined from " - << "the surface. " - << nl << "Adding to patch " << patchNames[defaultPatchIndex] - << endl; - } - - label nInternalFaces = dualFaceI; - - faces.setSize(nInternalFaces); - owner.setSize(nInternalFaces); - neighbour.setSize(nInternalFaces); - - timeCheck("polyMesh quality checked"); - - sortFaces(faces, owner, neighbour); - - sortProcPatches - ( - patchFaces, - patchOwners, - patchPPSlaves, - procPatchSortingIndex - ); - - timeCheck("faces, owner, neighbour sorted"); - - addPatches - ( - nInternalFaces, - faces, - owner, - patchSizes, - patchStarts, - boundaryFacesToRemove, - patchFaces, - patchOwners, - indirectPatchFace - ); - - // Return patchPointPairSlaves.setSize(nPatches); - patchPointPairSlaves.setSize(nPatches); - forAll(patchPPSlaves, patchI) - { - patchPointPairSlaves[patchI].transfer(patchPPSlaves[patchI]); - } - -// if (cvMeshControls().objOutput()) - { - Info<< "Writing processor interfaces" << endl; - - forAll(procNeighbours, nbI) - { - if (patchFaces[nbI].size() > 0) - { - const label neighbour = procNeighbours[nbI]; - - faceList procPatchFaces = patchFaces[nbI]; - - // Reverse faces as it makes it easier to analyse the output - // using a diff - if (neighbour < Pstream::myProcNo()) - { - forAll(procPatchFaces, fI) - { - procPatchFaces[fI] = procPatchFaces[fI].reverseFace(); - } - } - - if (neighbour != -1) - { - word fName = - "processor_" - + name(Pstream::myProcNo()) - + "_to_" - + name(neighbour) - + "_interface.obj"; - - writeProcessorInterface(fName, procPatchFaces); - } - } - } - } -} - - -void Foam::conformalVoronoiMesh::createCellCentres -( - pointField& cellCentres -) const -{ - cellCentres.setSize(number_of_vertices(), point::max); - - label vertI = 0; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalOrBoundaryPoint()) - { - cellCentres[vertI++] = topoint(vit->point()); - } - } - - cellCentres.setSize(vertI); -} - - -Foam::tmp<Foam::pointField> Foam::conformalVoronoiMesh::allPoints() const -{ - tmp<pointField> tpts(new pointField(number_of_vertices(), point::max)); - pointField& pts = tpts(); - - label nVert = 0; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalOrBoundaryPoint()) - { - pts[nVert++] = topoint(vit->point()); - } - } - - return tpts; -} - - -void Foam::conformalVoronoiMesh::sortFaces -( - faceList& faces, - labelList& owner, - labelList& neighbour -) const -{ - // Upper triangular order: - // + owner is sorted in ascending cell order - // + within each block of equal value for owner, neighbour is sorted in - // ascending cell order. - // + faces sorted to correspond - // e.g. - // owner | neighbour - // 0 | 2 - // 0 | 23 - // 0 | 71 - // 1 | 23 - // 1 | 24 - // 1 | 91 - - List<labelPair> ownerNeighbourPair(owner.size()); - - forAll(ownerNeighbourPair, oNI) - { - ownerNeighbourPair[oNI] = labelPair(owner[oNI], neighbour[oNI]); - } - - Info<< nl - << "Sorting faces, owner and neighbour into upper triangular order" - << endl; - - labelList oldToNew; - - sortedOrder(ownerNeighbourPair, oldToNew); - - oldToNew = invert(oldToNew.size(), oldToNew); - - inplaceReorder(oldToNew, faces); - inplaceReorder(oldToNew, owner); - inplaceReorder(oldToNew, neighbour); -} - - -void Foam::conformalVoronoiMesh::sortProcPatches -( - List<DynamicList<face> >& patchFaces, - List<DynamicList<label> >& patchOwners, - List<DynamicList<label> >& patchPointPairSlaves, - labelPairPairDynListList& patchSortingIndices -) const -{ - if (!Pstream::parRun()) - { - return; - } - - forAll(patchSortingIndices, patchI) - { - faceList& faces = patchFaces[patchI]; - labelList& owner = patchOwners[patchI]; - DynamicList<label>& slaves = patchPointPairSlaves[patchI]; - - DynamicList<Pair<labelPair> >& sortingIndices - = patchSortingIndices[patchI]; - - if (!sortingIndices.empty()) - { - if - ( - faces.size() != sortingIndices.size() - || owner.size() != sortingIndices.size() - || slaves.size() != sortingIndices.size() - ) - { - FatalErrorIn - ( - "void Foam::conformalVoronoiMesh::sortProcPatches" - "(" - "List<DynamicList<face> >& patchFaces, " - "List<DynamicList<label> >& patchOwners, " - "const List<DynamicList<label> >& patchSortingIndices" - ") const" - ) - << "patch size and size of sorting indices is inconsistent " - << " for patch " << patchI << nl - << " faces.size() " << faces.size() << nl - << " owner.size() " << owner.size() << nl - << " slaves.size() " << slaves.size() << nl - << " sortingIndices.size() " - << sortingIndices.size() - << exit(FatalError) << endl; - } - - labelList oldToNew; - - sortedOrder(sortingIndices, oldToNew); - - oldToNew = invert(oldToNew.size(), oldToNew); - - inplaceReorder(oldToNew, sortingIndices); - inplaceReorder(oldToNew, faces); - inplaceReorder(oldToNew, owner); - inplaceReorder(oldToNew, slaves); - } - } -} - - -void Foam::conformalVoronoiMesh::addPatches -( - const label nInternalFaces, - faceList& faces, - labelList& owner, - labelList& patchSizes, - labelList& patchStarts, - PackedBoolList& boundaryFacesToRemove, - const List<DynamicList<face> >& patchFaces, - const List<DynamicList<label> >& patchOwners, - const List<DynamicList<bool> >& indirectPatchFace -) const -{ - label nPatches = patchFaces.size(); - - patchSizes.setSize(nPatches, -1); - patchStarts.setSize(nPatches, -1); - - label nBoundaryFaces = 0; - - forAll(patchFaces, p) - { - patchSizes[p] = patchFaces[p].size(); - patchStarts[p] = nInternalFaces + nBoundaryFaces; - - nBoundaryFaces += patchSizes[p]; - } - - faces.setSize(nInternalFaces + nBoundaryFaces); - owner.setSize(nInternalFaces + nBoundaryFaces); - - label faceI = nInternalFaces; - - forAll(patchFaces, p) - { - forAll(patchFaces[p], f) - { - faces[faceI] = patchFaces[p][f]; - owner[faceI] = patchOwners[p][f]; - boundaryFacesToRemove[faceI] = indirectPatchFace[p][f]; - - faceI++; - } - } -} - - -void Foam::conformalVoronoiMesh::removeUnusedPoints -( - faceList& faces, - pointField& pts, - labelList& boundaryPts -) const -{ - Info<< nl << "Removing unused points" << endl; - - PackedBoolList ptUsed(pts.size(), false); - - // Scan all faces to find all of the points that are used - - forAll(faces, fI) - { - const face& f = faces[fI]; - - forAll(f, fPtI) - { - ptUsed[f[fPtI]] = true; - } - } - - label pointI = 0; - - labelList oldToNew(pts.size(), -1); - - // Move all of the used points to the start of the pointField and - // truncate it - - forAll(ptUsed, ptUI) - { - if (ptUsed[ptUI] == true) - { - oldToNew[ptUI] = pointI++; - } - } - - inplaceReorder(oldToNew, pts); - inplaceReorder(oldToNew, boundaryPts); - - Info<< " Removing " - << returnReduce(pts.size() - pointI, sumOp<label>()) - << " unused points" - << endl; - - pts.setSize(pointI); - boundaryPts.setSize(pointI); - - // Renumber the faces to use the new point numbers - - forAll(faces, fI) - { - inplaceRenumber(oldToNew, faces[fI]); - } -} - - -Foam::labelList Foam::conformalVoronoiMesh::removeUnusedCells -( - labelList& owner, - labelList& neighbour -) const -{ - Info<< nl << "Removing unused cells" << endl; - - PackedBoolList cellUsed(number_of_vertices(), false); - - // Scan all faces to find all of the cells that are used - - forAll(owner, oI) - { - cellUsed[owner[oI]] = true; - } - - forAll(neighbour, nI) - { - cellUsed[neighbour[nI]] = true; - } - - label cellI = 0; - - labelList oldToNew(cellUsed.size(), -1); - - // Move all of the used cellCentres to the start of the pointField and - // truncate it - - forAll(cellUsed, cellUI) - { - if (cellUsed[cellUI] == true) - { - oldToNew[cellUI] = cellI++; - } - } - - labelList newToOld(invert(cellI, oldToNew)); - - // Find all of the unused cells, create a list of them, then - // subtract one from each owner and neighbour entry for each of - // the unused cell indices that it is above. - - DynamicList<label> unusedCells; - - forAll(cellUsed, cUI) - { - if (cellUsed[cUI] == false) - { - unusedCells.append(cUI); - } - } - - if (unusedCells.size() > 0) - { - Info<< " Removing " - << returnReduce(unusedCells.size(), sumOp<label>()) - << " unused cell labels" << endl; - - forAll(owner, oI) - { - label& o = owner[oI]; - - o -= findLower(unusedCells, o) + 1; - } - - forAll(neighbour, nI) - { - label& n = neighbour[nI]; - - n -= findLower(unusedCells, n) + 1; - } - } - - return newToOld; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C deleted file mode 100644 index 14c5428c816f2941e2889eb16fe92f8b128a1978..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C +++ /dev/null @@ -1,2106 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "conformalVoronoiMesh.H" -#include "backgroundMeshDecomposition.H" -#include "vectorTools.H" -#include "indexedCellChecks.H" -#include "IOmanip.H" - -using namespace Foam::vectorTools; - -const Foam::scalar Foam::conformalVoronoiMesh::searchConeAngle - = Foam::cos(degToRad(30)); - -const Foam::scalar Foam::conformalVoronoiMesh::searchAngleOppositeSurface - = Foam::cos(degToRad(150)); - - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -void Foam::conformalVoronoiMesh::conformToSurface() -{ - this->resetCellCount(); - // Index the cells - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - cit->cellIndex() = Cb::ctUnassigned; - } - - if (reconformationControl() == rmOff) - { - // Reinsert stored surface conformation - reinsertSurfaceConformation(); - - if (Pstream::parRun()) - { - sync(decomposition_().procBounds()); - } - } - else - { - // Rebuild, insert and store new surface conformation - buildSurfaceConformation(); - - if (distributeBackground()) - { - if (Pstream::parRun()) - { - sync(decomposition_().procBounds()); - } - - // Use storeSizesAndAlignments with no feed points because all - // background points may have been distributed. - storeSizesAndAlignments(); - } - - // Do not store the surface conformation until after it has been - // (potentially) redistributed. - storeSurfaceConformation(); - } - - // reportSurfaceConformationQuality(); -} - - -Foam::conformalVoronoiMesh::reconformationMode -Foam::conformalVoronoiMesh::reconformationControl() const -{ - if - ( - runTime_.timeIndex() - % cvMeshControls().surfaceConformationRebuildFrequency() == 0 - ) - { - return rmOn; - } - - return rmOff; -} - - -// @todo Investigate topological tests -Foam::label Foam::conformalVoronoiMesh::findVerticesNearBoundaries() -{ - label countNearBoundaryVertices = 0; - - for - ( - Delaunay::Finite_facets_iterator fit = finite_facets_begin(); - fit != finite_facets_end(); - ++fit - ) - { - if - ( - is_infinite(fit->first) - || is_infinite(fit->first->neighbor(fit->second)) - ) - { - continue; - } - - Cell_handle c1 = fit->first; - Cell_handle c2 = fit->first->neighbor(fit->second); - - pointFromPoint dE0 = c1->dual(); - pointFromPoint dE1 = c2->dual(); - - if (!geometryToConformTo_.findSurfaceAnyIntersection(dE0, dE1)) - { - continue; - } - - for (label cellI = 0; cellI < 4; ++cellI) - { - Vertex_handle v = c1->vertex(cellI); - - if - ( - !is_infinite(v) - && v->internalPoint() - && fit->second != cellI - ) - { - v->setNearBoundary(); - } - } - - for (label cellI = 0; cellI < 4; ++cellI) - { - Vertex_handle v = c2->vertex(cellI); - - if - ( - !is_infinite(v) - && v->internalPoint() - && fit->second != cellI - ) - { - v->setNearBoundary(); - } - } - } - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->nearBoundary()) - { - countNearBoundaryVertices++; - } - } - - // Geometric test. -// for -// ( -// Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); -// vit != finite_vertices_end(); -// ++vit -// ) -// { -// if (vit->internalPoint() && !vit->nearBoundary()) -// { -// pointFromPoint pt = topoint(vit->point()); -// -// const scalar range = sqr -// ( -// cvMeshControls().nearBoundaryDistanceCoeff() -// *targetCellSize(pt) -// ); -// -// pointIndexHit pHit; -// label hitSurface; -// -// geometryToConformTo_.findSurfaceNearest -// ( -// pt, -// range, -// pHit, -// hitSurface -// ); -// -// if (pHit.hit()) -// { -// vit->setNearBoundary(); -// countNearBoundaryVertices++; -// } -// } -// } - - return countNearBoundaryVertices; -} - - -void Foam::conformalVoronoiMesh::buildSurfaceConformation() -{ - timeCheck("Start buildSurfaceConformation"); - - if (reconformationControl() == rmOff) - { - WarningIn("buildSurfaceConformation()") - << "reconformationMode rmNone specified, not building conformation" - << endl; - - return; - } - else - { - Info<< nl << "Rebuilding surface conformation for more iterations" - << endl; - } - - existingEdgeLocations_.clearStorage(); - existingSurfacePtLocations_.clearStorage(); - - buildEdgeLocationTree(existingEdgeLocations_); - buildSurfacePtLocationTree(existingSurfacePtLocations_); - - label initialTotalHits = 0; - - // Surface protrusion conformation is done in two steps. - // 1. the dual edges (of all internal vertices) can stretch to - // 'infinity' so any intersection would be badly behaved. So - // just find the nearest point on the geometry and insert point - // pairs. - // Now most of the surface conformation will be done with some - // residual protrusions / incursions. - // 2. find any segments of dual edges outside the geometry. Shoot - // ray from Delaunay vertex to middle of this segment and introduce - // point pairs. This will handle e.g. - - // protruding section of face: - // - // internal - // \ / - // -+-----------+-- boundary - // \ / - // -------- - // - // Shoot ray and find intersection with outside segment (x) and - // introduce point pair (..) - // - // | - // \ . / - // -+-----|-----+-- boundary - // \ . / - // ---x---- - - // Find vertices near boundaries to speed up subsequent checks. - label countNearBoundaryVertices = findVerticesNearBoundaries(); - - Info<< " Vertices marked as being near a boundary: " - << returnReduce(countNearBoundaryVertices, sumOp<label>()) - << " (estimated)" << endl; - - timeCheck("After set near boundary"); - - const scalar edgeSearchDistCoeffSqr = - cvMeshControls().edgeSearchDistCoeffSqr(); - - const scalar surfacePtReplaceDistCoeffSqr = - cvMeshControls().surfacePtReplaceDistCoeffSqr(); - - const label AtoV = label(6/Foam::pow(scalar(number_of_vertices()), 3)); - - // Initial surface protrusion conformation - nearest surface point - { - pointIndexHitAndFeatureDynList featureEdgeHits(AtoV/4); - pointIndexHitAndFeatureDynList surfaceHits(AtoV); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - if (vit->nearBoundary()) - { - pointIndexHitAndFeatureDynList surfaceIntersections(AtoV); - - if - ( - dualCellSurfaceAllIntersections - ( - vit, - surfaceIntersections - ) - ) - { - // meshTools::writeOBJ(Pout, vert); - // meshTools::writeOBJ(Pout, surfHit.hitPoint()); - // Pout<< "l cr0 cr1" << endl; - - addSurfaceAndEdgeHits - ( - vit, - surfaceIntersections, - surfacePtReplaceDistCoeffSqr, - edgeSearchDistCoeffSqr, - surfaceHits, - featureEdgeHits - ); - } - else - { - vit->setInternal(); - countNearBoundaryVertices--; - } - } - } - - Info<< " Vertices marked as being near a boundary: " - << returnReduce(countNearBoundaryVertices, sumOp<label>()) - << " (after dual surface intersection)" << endl; - - label nVerts = number_of_vertices(); - label nSurfHits = surfaceHits.size(); - label nFeatEdHits = featureEdgeHits.size(); - - if (Pstream::parRun()) - { - reduce(nVerts, sumOp<label>()); - reduce(nSurfHits, sumOp<label>()); - reduce(nFeatEdHits, sumOp<label>()); - } - - Info<< nl << "Initial conformation" << nl - << " Number of vertices " << nVerts << nl - << " Number of surface hits " << nSurfHits << nl - << " Number of edge hits " << nFeatEdHits - << endl; - - // In parallel, synchronise the surface trees - if (Pstream::parRun()) - { - synchroniseSurfaceTrees(surfaceHits); - } - - insertSurfacePointPairs - ( - surfaceHits, - "surfaceConformationLocations_initial.obj" - ); - - // In parallel, synchronise the edge trees - if (Pstream::parRun()) - { - synchroniseEdgeTrees(featureEdgeHits); - } - - insertEdgePointGroups - ( - featureEdgeHits, - "edgeConformationLocations_initial.obj" - ); - - timeCheck("After initial conformation"); - - initialTotalHits = nSurfHits + nFeatEdHits; - } - - // Remember which vertices were referred to each processor so only updates - // are sent. - PtrList<labelPairHashSet> referralVertices(Pstream::nProcs()); - - // Store the vertices that have been received and added from each processor - // already so that there is no attempt to add them more than once. - autoPtr<labelPairHashSet> receivedVertices; - - if (Pstream::parRun()) - { - forAll(referralVertices, procI) - { - if (procI != Pstream::myProcNo()) - { - referralVertices.set - ( - procI, - new labelPairHashSet(number_of_vertices()/Pstream::nProcs()) - ); - } - } - - receivedVertices.set - ( - new labelPairHashSet(number_of_vertices()/Pstream::nProcs()) - ); - - // Build the parallel interface the initial surface conformation - sync - ( - decomposition_().procBounds(), - referralVertices, - receivedVertices() - ); - } - - label iterationNo = 0; - - label maxIterations = cvMeshControls().maxConformationIterations(); - - scalar iterationToInitialHitRatioLimit = - cvMeshControls().iterationToInitialHitRatioLimit(); - - label hitLimit = label(iterationToInitialHitRatioLimit*initialTotalHits); - - Info<< nl << "Stopping iterations when: " << nl - << " total number of hits drops below " - << iterationToInitialHitRatioLimit - << " of initial hits (" << hitLimit << ")" << nl - << " or " << nl - << " maximum number of iterations (" << maxIterations - << ") is reached" - << endl; - - // Set totalHits to a large enough positive value to enter the while loop on - // the first iteration - label totalHits = initialTotalHits; - - while - ( - totalHits > 0 - && totalHits >= hitLimit - && iterationNo < maxIterations - ) - { - pointIndexHitAndFeatureDynList surfaceHits(0.5*AtoV); - pointIndexHitAndFeatureDynList featureEdgeHits(0.25*AtoV); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - // The initial surface conformation has already identified the - // nearBoundary set of vertices. Previously inserted boundary - // points and referred internal vertices from other processors can - // also generate protrusions and must be assessed too. - if - ( - vit->nearBoundary() - || vit->internalBoundaryPoint() - || (vit->internalOrBoundaryPoint() && vit->referred()) - ) - { - pointIndexHitAndFeatureDynList surfaceIntersections(0.5*AtoV); - - pointIndexHit surfHit; - label hitSurface; - - // Find segments of dual face outside the geometry and find the - // the middle of this - dualCellLargestSurfaceProtrusion(vit, surfHit, hitSurface); - - if (surfHit.hit()) - { - surfaceIntersections.append - ( - pointIndexHitAndFeature(surfHit, hitSurface) - ); - - addSurfaceAndEdgeHits - ( - vit, - surfaceIntersections, - surfacePtReplaceDistCoeffSqr, - edgeSearchDistCoeffSqr, - surfaceHits, - featureEdgeHits - ); - } - else - { - // No surface hit detected so if internal then don't check - // again - if (vit->nearBoundary()) - { - vit->setInternal(); - } - } - } - else if (vit->externalBoundaryPoint()) - { - pointIndexHitAndFeatureDynList surfaceIntersections(0.5*AtoV); - - pointIndexHit surfHit; - label hitSurface; - - // Detect slave (external vertices) whose dual face incurs - // into nearby (other than originating) geometry - dualCellLargestSurfaceIncursion(vit, surfHit, hitSurface); - - if (surfHit.hit()) - { - surfaceIntersections.append - ( - pointIndexHitAndFeature(surfHit, hitSurface) - ); - - addSurfaceAndEdgeHits - ( - vit, - surfaceIntersections, - surfacePtReplaceDistCoeffSqr, - edgeSearchDistCoeffSqr, - surfaceHits, - featureEdgeHits - ); - } - } - } - - label nVerts = number_of_vertices(); - label nSurfHits = surfaceHits.size(); - label nFeatEdHits = featureEdgeHits.size(); - - if (Pstream::parRun()) - { - reduce(nVerts, sumOp<label>()); - reduce(nSurfHits, sumOp<label>()); - reduce(nFeatEdHits, sumOp<label>()); - } - - Info<< nl << "Conformation iteration " << iterationNo << nl - << " Number of vertices " << nVerts << nl - << " Number of surface hits " << nSurfHits << nl - << " Number of edge hits " << nFeatEdHits - << endl; - - totalHits = nSurfHits + nFeatEdHits; - - label nNotInserted = 0; - - if (totalHits > 0) - { - // In parallel, synchronise the surface trees - if (Pstream::parRun()) - { - nNotInserted += synchroniseSurfaceTrees(surfaceHits); - } - - insertSurfacePointPairs - ( - surfaceHits, - "surfaceConformationLocations_" + name(iterationNo) + ".obj" - ); - - // In parallel, synchronise the edge trees - if (Pstream::parRun()) - { - nNotInserted += synchroniseEdgeTrees(featureEdgeHits); - } - - insertEdgePointGroups - ( - featureEdgeHits, - "edgeConformationLocations_" + name(iterationNo) + ".obj" - ); - - if (Pstream::parRun()) - { - sync - ( - decomposition_().procBounds(), - referralVertices, - receivedVertices() - ); - } - } - - timeCheck("Conformation iteration " + name(iterationNo)); - - iterationNo++; - - if (iterationNo == maxIterations) - { - WarningIn("conformalVoronoiMesh::conformToSurface()") - << "Maximum surface conformation iterations (" - << maxIterations << ") reached." << endl; - } - - if (totalHits <= nNotInserted) - { - Info<< nl << "Total hits (" << totalHits - << ") less than number of failed insertions (" << nNotInserted - << "), stopping iterations" << endl; - break; - } - - if (totalHits < hitLimit) - { - Info<< nl << "Total hits (" << totalHits - << ") less than limit (" << hitLimit - << "), stopping iterations" << endl; - } - } - - edgeLocationTreePtr_.clear(); - surfacePtLocationTreePtr_.clear(); -} - - -Foam::label Foam::conformalVoronoiMesh::synchroniseSurfaceTrees -( - pointIndexHitAndFeatureList& surfaceHits -) -{ - Info<< " Surface tree synchronisation" << endl; - - pointIndexHitAndFeatureDynList synchronisedSurfLocations - ( - surfaceHits.size() - ); - - List<pointIndexHitAndFeatureDynList> procSurfLocations(Pstream::nProcs()); - - procSurfLocations[Pstream::myProcNo()] = surfaceHits; - - Pstream::gatherList(procSurfLocations); - Pstream::scatterList(procSurfLocations); - - List<labelHashSet> hits(Pstream::nProcs()); - - label nStoppedInsertion = 0; - - // Do the nearness tests here - for (label procI = 0; procI < Pstream::nProcs(); ++procI) - { - // Skip own points - if (procI >= Pstream::myProcNo()) - { - continue; - } - - const pointIndexHitAndFeatureList& otherSurfEdges = - procSurfLocations[procI]; - - forAll(otherSurfEdges, peI) - { - const Foam::point& pt = otherSurfEdges[peI].first().hitPoint(); - - pointIndexHit nearest; - pointIsNearSurfaceLocation(pt, nearest); - - pointIndexHit nearestEdge; - pointIsNearFeatureEdgeLocation(pt, nearestEdge); - - bool isNearFeaturePt = nearFeaturePt(pt); - - if (nearest.hit() || nearestEdge.hit() || isNearFeaturePt) - { - nStoppedInsertion++; - - if (!hits[procI].found(peI)) - { - hits[procI].insert(peI); - } - } - } - } - - Pstream::listCombineGather(hits, plusEqOp<labelHashSet>()); - Pstream::listCombineScatter(hits); - - forAll(surfaceHits, eI) - { - if (!hits[Pstream::myProcNo()].found(eI)) - { - synchronisedSurfLocations.append(surfaceHits[eI]); - } - } - - forAll(synchronisedSurfLocations, pI) - { - appendToSurfacePtTree - ( - synchronisedSurfLocations[pI].first().hitPoint() - ); - } - - const label nNotInserted = returnReduce(nStoppedInsertion, sumOp<label>()); - - Info<< " Not inserting total of " << nNotInserted << " locations" - << endl; - - surfaceHits = synchronisedSurfLocations; - - return nNotInserted; -} - - -Foam::label Foam::conformalVoronoiMesh::synchroniseEdgeTrees -( - pointIndexHitAndFeatureList& featureEdgeHits -) -{ - Info<< " Edge tree synchronisation" << endl; - - pointIndexHitAndFeatureDynList synchronisedEdgeLocations - ( - featureEdgeHits.size() - ); - - List<pointIndexHitAndFeatureDynList> procEdgeLocations(Pstream::nProcs()); - - procEdgeLocations[Pstream::myProcNo()] = featureEdgeHits; - - Pstream::gatherList(procEdgeLocations); - Pstream::scatterList(procEdgeLocations); - - List<labelHashSet> hits(Pstream::nProcs()); - - label nStoppedInsertion = 0; - - // Do the nearness tests here - for (label procI = 0; procI < Pstream::nProcs(); ++procI) - { - // Skip own points - if (procI >= Pstream::myProcNo()) - { - continue; - } - - pointIndexHitAndFeatureList& otherProcEdges = procEdgeLocations[procI]; - - forAll(otherProcEdges, peI) - { - const Foam::point& pt = otherProcEdges[peI].first().hitPoint(); - - pointIndexHit nearest; - pointIsNearFeatureEdgeLocation(pt, nearest); - - bool isNearFeaturePt = nearFeaturePt(pt); - - if (nearest.hit() || isNearFeaturePt) - { - nStoppedInsertion++; - - if (!hits[procI].found(peI)) - { - hits[procI].insert(peI); - } - } - } - } - - Pstream::listCombineGather(hits, plusEqOp<labelHashSet>()); - Pstream::listCombineScatter(hits); - - forAll(featureEdgeHits, eI) - { - if (!hits[Pstream::myProcNo()].found(eI)) - { - synchronisedEdgeLocations.append(featureEdgeHits[eI]); - } - } - - forAll(synchronisedEdgeLocations, pI) - { - appendToEdgeLocationTree - ( - synchronisedEdgeLocations[pI].first().hitPoint() - ); - } - - const label nNotInserted = returnReduce(nStoppedInsertion, sumOp<label>()); - - Info<< " Not inserting total of " << nNotInserted << " locations" - << endl; - - featureEdgeHits = synchronisedEdgeLocations; - - return nNotInserted; -} - - -bool Foam::conformalVoronoiMesh::locationConformsToInside -( - const pointIndexHitAndFeature& info -) const -{ - bool keepLocation = true; - - if (info.first().hit()) - { - vectorField norm(1); - - allGeometry_[info.second()].getNormal - ( - List<pointIndexHit>(1, info.first()), - norm - ); - - const vector& n = norm[0]; - - const scalar ppDist = pointPairDistance(info.first().hitPoint()); - - const Foam::point innerPoint = info.first().hitPoint() - ppDist*n; - - if (!geometryToConformTo_.inside(innerPoint)) - { - keepLocation = false; - } - } - else - { - keepLocation = false; - } - - return keepLocation; -} - - -bool Foam::conformalVoronoiMesh::dualCellSurfaceAnyIntersection -( - const Delaunay::Finite_vertices_iterator& vit -) const -{ - std::list<Facet> facets; - incident_facets(vit, std::back_inserter(facets)); - - for - ( - std::list<Facet>::iterator fit=facets.begin(); - fit != facets.end(); - ++fit - ) - { - if - ( - is_infinite(fit->first) - || is_infinite(fit->first->neighbor(fit->second)) - || !fit->first->hasInternalPoint() - || !fit->first->neighbor(fit->second)->hasInternalPoint() - ) - { - continue; - } - - Foam::point dE0 = fit->first->dual(); - Foam::point dE1 = fit->first->neighbor(fit->second)->dual(); - - if (Pstream::parRun()) - { - Foam::point& a = dE0; - Foam::point& b = dE1; - - bool inProc = clipLineToProc(topoint(vit->point()), a, b); - - // Check for the edge passing through a surface - if - ( - inProc - && geometryToConformTo_.findSurfaceAnyIntersection(a, b) - ) - { - return true; - } - } - else - { - if (geometryToConformTo_.findSurfaceAnyIntersection(dE0, dE1)) - { - return true; - } - } - } - - return false; -} - - -bool Foam::conformalVoronoiMesh::dualCellSurfaceAllIntersections -( - const Delaunay::Finite_vertices_iterator& vit, - pointIndexHitAndFeatureDynList& infoList -) const -{ - bool flagIntersection = false; - - std::list<Facet> facets; - incident_facets(vit, std::back_inserter(facets)); - - for - ( - std::list<Facet>::iterator fit = facets.begin(); - fit != facets.end(); - ++fit - ) - { - if - ( - is_infinite(fit->first) - || is_infinite(fit->first->neighbor(fit->second)) - || !fit->first->hasInternalPoint() - || !fit->first->neighbor(fit->second)->hasInternalPoint() -// || fit->first->hasFarPoint() -// || fit->first->neighbor(fit->second)->hasFarPoint() - ) - { - continue; - } - - // Construct the dual edge and search for intersections of the edge - // with the surface - Foam::point dE0 = fit->first->dual(); - Foam::point dE1 = fit->first->neighbor(fit->second)->dual(); - - pointIndexHit infoIntersection; - label hitSurfaceIntersection = -1; - - if (Pstream::parRun()) - { - bool inProc = clipLineToProc(topoint(vit->point()), dE0, dE1); - - if (!inProc) - { - continue; - } - } - - geometryToConformTo_.findSurfaceNearestIntersection - ( - dE0, - dE1, - infoIntersection, - hitSurfaceIntersection - ); - - if (infoIntersection.hit()) - { - vectorField norm(1); - - allGeometry_[hitSurfaceIntersection].getNormal - ( - List<pointIndexHit>(1, infoIntersection), - norm - ); - - const vector& n = norm[0]; - - pointFromPoint vertex = topoint(vit->point()); - - const plane p(infoIntersection.hitPoint(), n); - - const plane::ray r(vertex, n); - - const scalar d = p.normalIntersect(r); - - const Foam::point newPoint = vertex + d*n; - - pointIndexHitAndFeature info; - - geometryToConformTo_.findSurfaceNearest - ( - newPoint, - surfaceSearchDistanceSqr(newPoint), - info.first(), - info.second() - ); - - bool rejectPoint = false; - - if (!locationConformsToInside(info)) - { - rejectPoint = true; - } - - if (!rejectPoint && info.first().hit()) - { - if (!infoList.empty()) - { - forAll(infoList, hitI) - { - // Reject point if the point is already added - if - ( - infoList[hitI].first().index() - == info.first().index() - ) - { - rejectPoint = true; - break; - } - - const Foam::point& p - = infoList[hitI].first().hitPoint(); - - const scalar separationDistance = - mag(p - info.first().hitPoint()); - - const scalar minSepDist = - sqr - ( - cvMeshControls().removalDistCoeff() - *targetCellSize(p) - ); - - // Reject the point if it is too close to another - // surface point. - // Could merge the points? - if (separationDistance < minSepDist) - { - rejectPoint = true; - break; - } - } - } - } - - // The normal ray from the vertex will not always result in a hit - // because another surface may be in the way. - if (!rejectPoint && info.first().hit()) - { - flagIntersection = true; - infoList.append(info); - } - } - } - - return flagIntersection; -} - - -bool Foam::conformalVoronoiMesh::clipLineToProc -( - const Foam::point& pt, - Foam::point& a, - Foam::point& b -) const -{ - bool inProc = false; - - pointIndexHit findAnyIntersection = decomposition_().findLine(a, b); - - if (!findAnyIntersection.hit()) - { - pointIndexHit info = decomposition_().findLine(a, pt); - - if (!info.hit()) - { - inProc = true; - } - else - { - inProc = false; - } - } - else - { - pointIndexHit info = decomposition_().findLine(a, pt); - - if (!info.hit()) - { - inProc = true; - b = findAnyIntersection.hitPoint(); - } - else - { - inProc = true; - a = findAnyIntersection.hitPoint(); - } - } - - return inProc; -} - - -void Foam::conformalVoronoiMesh::dualCellLargestSurfaceProtrusion -( - const Delaunay::Finite_vertices_iterator& vit, - pointIndexHit& surfHitLargest, - label& hitSurfaceLargest -) const -{ - // Set no-hit data - surfHitLargest = pointIndexHit(); - hitSurfaceLargest = -1; - - std::list<Facet> facets; - finite_incident_facets(vit, std::back_inserter(facets)); - - pointFromPoint vert = topoint(vit->point()); - - scalar maxProtrusionDistance = maxSurfaceProtrusion(vert); - - for - ( - std::list<Facet>::iterator fit = facets.begin(); - fit != facets.end(); - ++fit - ) - { - Cell_handle c1 = fit->first; - Cell_handle c2 = fit->first->neighbor(fit->second); - - if - ( - is_infinite(c1) || is_infinite(c2) - || !c1->hasInternalPoint() || !c2->hasInternalPoint() - || !c1->real() || !c2->real() - ) - { - continue; - } - - Foam::point edgeMid = 0.5*(c1->dual() + c2->dual()); - - pointIndexHit surfHit; - label hitSurface; - - geometryToConformTo_.findSurfaceAnyIntersection - ( - vert, - edgeMid, - surfHit, - hitSurface - ); - - if (surfHit.hit()) - { - vectorField norm(1); - - allGeometry_[hitSurface].getNormal - ( - List<pointIndexHit>(1, surfHit), - norm - ); - - const vector& n = norm[0]; - - const scalar normalProtrusionDistance = - (edgeMid - surfHit.hitPoint()) & n; - - if (normalProtrusionDistance > maxProtrusionDistance) - { - surfHitLargest = surfHit; - hitSurfaceLargest = hitSurface; - - maxProtrusionDistance = normalProtrusionDistance; - } - } - } - - // Relying on short-circuit evaluation to not call for hitPoint when this - // is a miss - if - ( - surfHitLargest.hit() - && !positionOnThisProc(surfHitLargest.hitPoint()) - ) - { - // A protrusion was identified, but not penetrating on this processor, - // so set no-hit data and allow the other that should have this point - // referred to generate it. - surfHitLargest = pointIndexHit(); - hitSurfaceLargest = -1; - } -} - - -void Foam::conformalVoronoiMesh::dualCellLargestSurfaceIncursion -( - const Delaunay::Finite_vertices_iterator& vit, - pointIndexHit& surfHitLargest, - label& hitSurfaceLargest -) const -{ - // Set no-hit data - surfHitLargest = pointIndexHit(); - hitSurfaceLargest = -1; - - std::list<Facet> facets; - finite_incident_facets(vit, std::back_inserter(facets)); - - pointFromPoint vert = topoint(vit->point()); - - scalar minIncursionDistance = -maxSurfaceProtrusion(vert); - - for - ( - std::list<Facet>::iterator fit = facets.begin(); - fit != facets.end(); - ++fit - ) - { - Cell_handle c1 = fit->first; - Cell_handle c2 = fit->first->neighbor(fit->second); - - if - ( - is_infinite(c1) || is_infinite(c2) - || !c1->hasInternalPoint() || !c2->hasInternalPoint() - || !c1->real() || !c2->real() - ) - { - continue; - } - - Foam::point edgeMid = 0.5*(c1->dual() + c2->dual()); - - pointIndexHit surfHit; - label hitSurface; - - geometryToConformTo_.findSurfaceAnyIntersection - ( - vert, - edgeMid, - surfHit, - hitSurface - ); - - if (surfHit.hit()) - { - vectorField norm(1); - - allGeometry_[hitSurface].getNormal - ( - List<pointIndexHit>(1, surfHit), - norm - ); - - const vector& n = norm[0]; - - scalar normalIncursionDistance = - (edgeMid - surfHit.hitPoint()) & n; - - if (normalIncursionDistance < minIncursionDistance) - { - surfHitLargest = surfHit; - hitSurfaceLargest = hitSurface; - - minIncursionDistance = normalIncursionDistance; - - // Info<< nl << "# Incursion: " << endl; - // meshTools::writeOBJ(Info, vert); - // meshTools::writeOBJ(Info, edgeMid); - // Info<< "l Na Nb" << endl; - } - } - } - - // Relying on short-circuit evaluation to not call for hitPoint when this - // is a miss - if - ( - surfHitLargest.hit() - && !positionOnThisProc(surfHitLargest.hitPoint()) - ) - { - // A protrusion was identified, but not penetrating on this processor, - // so set no-hit data and allow the other that should have this point - // referred to generate it. - surfHitLargest = pointIndexHit(); - hitSurfaceLargest = -1; - } -} - - -void Foam::conformalVoronoiMesh::reportProcessorOccupancy() -{ - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - if (vit->real()) - { - if (!positionOnThisProc(topoint(vit->point()))) - { - Pout<< topoint(vit->point()) << " is not on this processor " - << endl; - } - } - } -} - - -//void Foam::conformalVoronoiMesh::reportSurfaceConformationQuality() -//{ -// Info<< nl << "Check surface conformation quality" << endl; -// -// for -// ( -// Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); -// vit != finite_vertices_end(); -// vit++ -// ) -// { -// if (vit->internalOrBoundaryPoint()) -// { -// Foam::point vert(topoint(vit->point())); -// pointIndexHit surfHit; -// label hitSurface; -// -// dualCellLargestSurfaceProtrusion(vit, surfHit, hitSurface); -// -// if (surfHit.hit()) -// { -// Pout<< nl << "Residual penetration: " << nl -// << vit->index() << nl -// << vit->type() << nl -// << vit->ppMaster() << nl -// << "nearFeaturePt " -// << nearFeaturePt(surfHit.hitPoint()) << nl -// << vert << nl -// << surfHit.hitPoint() -// << endl; -// } -// } -// } -// -// { -// // Assess close surface points -// -// setVertexSizeAndAlignment(); -// -// for -// ( -// Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); -// vit != finite_vertices_end(); -// vit++ -// ) -// { -// if (vit->ppMaster()) -// { -// std::list<Vertex_handle> adjacentVertices; -// -// adjacent_vertices(vit, std::back_inserter(adjacentVertices)); -// -// Foam::point pt = topoint(vit->point()); -// -// // Pout<< nl << "vit: " << vit->index() << " " -// // << topoint(vit->point()) -// // << endl; -// -// // Pout<< adjacentVertices.size() << endl; -// -// for -// ( -// std::list<Vertex_handle>::iterator -// avit = adjacentVertices.begin(); -// avit != adjacentVertices.end(); -// ++avit -// ) -// { -// Vertex_handle avh = *avit; -// -// // The lower indexed vertex will perform the assessment -// if -// ( -// avh->ppMaster() -// && vit->index() < avh->index() -// && vit->type() != avh->type() -// ) -// { -// scalar targetSize = 0.2*averageAnyCellSize(vit, avh); -// -// // Pout<< "diff " << mag(pt - topoint(avh->point())) -// // << " " << targetSize << endl; -// -// if -// ( -// magSqr(pt - topoint(avh->point())) -// < sqr(targetSize) -// ) -// { -// Pout<< nl << "vit: " << vit->index() << " " -// << topoint(vit->point()) -// << endl; -// -// Pout<< " adjacent too close: " -// << avh->index() << " " -// << topoint(avh->point()) -// << endl; -// } -// } -// } -// } -// } -// } -//} - -void Foam::conformalVoronoiMesh::limitDisplacement -( - const Delaunay::Finite_vertices_iterator& vit, - vector& displacement, - label callCount -) const -{ - callCount++; - - // Do not allow infinite recursion - if (callCount > 7) - { - return; - } - - pointFromPoint pt = topoint(vit->point()); - Foam::point dispPt = pt + displacement; - - bool limit = false; - - pointIndexHit surfHit; - label hitSurface; - - if (!geometryToConformTo_.globalBounds().contains(dispPt)) - { - // If dispPt is outside bounding box then displacement cuts boundary - limit = true; - } - else if (geometryToConformTo_.findSurfaceAnyIntersection(pt, dispPt)) - { - // Full surface penetration test - limit = true; - } - else - { - // Testing if the displaced position is too close to the surface. - // Within twice the local surface point pair insertion distance is - // considered "too close" - - scalar searchDistanceSqr = sqr - ( - 2*vit->targetCellSize() - *cvMeshControls().pointPairDistanceCoeff() - ); - - geometryToConformTo_.findSurfaceNearest - ( - dispPt, - searchDistanceSqr, - surfHit, - hitSurface - ); - - if (surfHit.hit()) - { - limit = true; - - if (magSqr(pt - surfHit.hitPoint()) <= searchDistanceSqr) - { - // Cannot limit displacement, point closer than tolerance - return; - } - } - } - - if (limit) - { - // Halve the displacement and call this function again. Will continue - // recursively until the displacement is small enough. - - displacement *= 0.5; - - limitDisplacement(vit, displacement, callCount); - } -} - - -Foam::scalar Foam::conformalVoronoiMesh::angleBetweenSurfacePoints -( - Foam::point pA, - Foam::point pB -) const -{ - pointIndexHit pAhit; - label pAsurfaceHit = -1; - - const scalar searchDist = 5.0*targetCellSize(pA); - - geometryToConformTo_.findSurfaceNearest - ( - pA, - searchDist, - pAhit, - pAsurfaceHit - ); - - if (!pAhit.hit()) - { - return constant::mathematical::pi; - } - - vectorField norm(1); - - allGeometry_[pAsurfaceHit].getNormal - ( - List<pointIndexHit>(1, pAhit), - norm - ); - - const vector nA = norm[0]; - - pointIndexHit pBhit; - label pBsurfaceHit = -1; - - geometryToConformTo_.findSurfaceNearest - ( - pB, - searchDist, - pBhit, - pBsurfaceHit - ); - - if (!pBhit.hit()) - { - return constant::mathematical::pi; - } - - allGeometry_[pBsurfaceHit].getNormal - ( - List<pointIndexHit>(1, pBhit), - norm - ); - - const vector nB = norm[0]; - - return vectorTools::cosPhi(nA, nB); -} - - -bool Foam::conformalVoronoiMesh::nearSurfacePoint -( - pointIndexHitAndFeature& pHit -) const -{ - const Foam::point& pt = pHit.first().hitPoint(); - - pointIndexHit closePoint; - - const bool closeToSurfacePt = pointIsNearSurfaceLocation(pt, closePoint); - -// if -// ( -// closeToSurfacePt -// && mag(pt - closePoint.hitPoint()) > pointPairDistance(pt) -// ) -// { -// const scalar cosAngle -// = angleBetweenSurfacePoints(pt, closePoint.hitPoint()); -// -// // @todo make this tolerance run-time selectable? -// if (cosAngle < searchAngleOppositeSurface) -// { -// pointIndexHit pCloseHit; -// label pCloseSurfaceHit = -1; -// -// const scalar searchDist = targetCellSize(closePoint.hitPoint()); -// -// if (searchDist < SMALL) -// { -// Pout<< "WARNING: SMALL CELL SIZE" << endl; -// } -// -// geometryToConformTo_.findSurfaceNearest -// ( -// closePoint.hitPoint(), -// searchDist, -// pCloseHit, -// pCloseSurfaceHit -// ); -// -// vectorField norm(1); -// -// allGeometry_[pCloseSurfaceHit].getNormal -// ( -// List<pointIndexHit>(1, pCloseHit), -// norm -// ); -// -// const vector nA = norm[0]; -// -// pointIndexHit oppositeHit; -// label oppositeSurfaceHit = -1; -// -// geometryToConformTo_.findSurfaceNearestIntersection -// ( -// closePoint.hitPoint() + SMALL*nA, -// closePoint.hitPoint() + mag(pt - closePoint.hitPoint())*nA, -// oppositeHit, -// oppositeSurfaceHit -// ); -// -// if (oppositeHit.hit()) -// { -// // Replace point -// pHit.first() = oppositeHit; -// pHit.second() = oppositeSurfaceHit; -// -// appendToSurfacePtTree(pHit.first().hitPoint()); -// -// return !closeToSurfacePt; -// } -// } -// } -// else - { - appendToSurfacePtTree(pt); - } - - return closeToSurfacePt; -} - - -bool Foam::conformalVoronoiMesh::appendToSurfacePtTree -( - const Foam::point& pt -) const -{ - label startIndex = existingSurfacePtLocations_.size(); - - existingSurfacePtLocations_.append(pt); - - label endIndex = existingSurfacePtLocations_.size(); - - return surfacePtLocationTreePtr_().insert(startIndex, endIndex); -} - - -bool Foam::conformalVoronoiMesh::appendToEdgeLocationTree -( - const Foam::point& pt -) const -{ - label startIndex = existingEdgeLocations_.size(); - - existingEdgeLocations_.append(pt); - - label endIndex = existingEdgeLocations_.size(); - - return edgeLocationTreePtr_().insert(startIndex, endIndex); -} - - -Foam::List<Foam::pointIndexHit> -Foam::conformalVoronoiMesh::nearestFeatureEdgeLocations -( - const Foam::point& pt -) const -{ - const scalar exclusionRangeSqr = featureEdgeExclusionDistanceSqr(pt); - - labelList elems - = edgeLocationTreePtr_().findSphere(pt, exclusionRangeSqr); - - DynamicList<pointIndexHit> dynPointHit; - - forAll(elems, elemI) - { - label index = elems[elemI]; - - const Foam::point& pointI - = edgeLocationTreePtr_().shapes().shapePoints()[index]; - - pointIndexHit nearHit(true, pointI, index); - - dynPointHit.append(nearHit); - } - - return dynPointHit; -} - - -bool Foam::conformalVoronoiMesh::pointIsNearFeatureEdgeLocation -( - const Foam::point& pt -) const -{ - const scalar exclusionRangeSqr = featureEdgeExclusionDistanceSqr(pt); - - pointIndexHit info - = edgeLocationTreePtr_().findNearest(pt, exclusionRangeSqr); - - return info.hit(); -} - - -bool Foam::conformalVoronoiMesh::pointIsNearFeatureEdgeLocation -( - const Foam::point& pt, - pointIndexHit& info -) const -{ - const scalar exclusionRangeSqr = featureEdgeExclusionDistanceSqr(pt); - - info = edgeLocationTreePtr_().findNearest(pt, exclusionRangeSqr); - - return info.hit(); -} - - -bool Foam::conformalVoronoiMesh::pointIsNearSurfaceLocation -( - const Foam::point& pt -) const -{ - pointIndexHit info; - - pointIsNearSurfaceLocation(pt, info); - - return info.hit(); -} - - -bool Foam::conformalVoronoiMesh::pointIsNearSurfaceLocation -( - const Foam::point& pt, - pointIndexHit& info -) const -{ - const scalar exclusionRangeSqr = surfacePtExclusionDistanceSqr(pt); - - info = surfacePtLocationTreePtr_().findNearest(pt, exclusionRangeSqr); - - return info.hit(); -} - - -bool Foam::conformalVoronoiMesh::nearFeatureEdgeLocation -( - pointIndexHit& pHit -) const -{ - Foam::point pt = pHit.hitPoint(); - - const scalar exclusionRangeSqr = featureEdgeExclusionDistanceSqr(pt); - - bool closeToFeatureEdge = pointIsNearFeatureEdgeLocation(pt); - - if (closeToFeatureEdge) - { - List<pointIndexHit> nearHits = nearestFeatureEdgeLocations(pt); - - forAll(nearHits, elemI) - { - pointIndexHit& info = nearHits[elemI]; - - // Check if the edge location that the new edge location is near to - // "might" be on a different edge. If so, add it anyway. - pointIndexHit edgeHit; - label featureHit = -1; - - geometryToConformTo_.findEdgeNearest - ( - pt, - exclusionRangeSqr, - edgeHit, - featureHit - ); - - const extendedFeatureEdgeMesh& eMesh - = geometryToConformTo_.features()[featureHit]; - - const vector& edgeDir = eMesh.edgeDirections()[edgeHit.index()]; - - const vector lineBetweenPoints = pt - info.hitPoint(); - - const scalar cosAngle - = vectorTools::cosPhi(edgeDir, lineBetweenPoints); - - // Allow the point to be added if it is almost at right angles to - // the other point. Also check it is not the same point. - // Info<< cosAngle<< " " - // << radToDeg(acos(cosAngle)) << " " - // << searchConeAngle << " " - // << radToDeg(acos(searchConeAngle)) << endl; - - if - ( - mag(cosAngle) < searchConeAngle - && ( - mag(lineBetweenPoints) - > cvMeshControls().pointPairDistanceCoeff()*targetCellSize(pt) - ) - ) - { - pt = edgeHit.hitPoint(); - pHit.setPoint(pt); - closeToFeatureEdge = false; - } - else - { - closeToFeatureEdge = true; - break; - } - } - } - - if (!closeToFeatureEdge) - { - appendToEdgeLocationTree(pt); - } - - return closeToFeatureEdge; -} - - -void Foam::conformalVoronoiMesh::buildEdgeLocationTree -( - const DynamicList<Foam::point>& existingEdgeLocations -) const -{ - treeBoundBox overallBb - ( - geometryToConformTo_.globalBounds().extend(rndGen_, 1e-4) - ); - - overallBb.min() -= Foam::point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL); - overallBb.max() += Foam::point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL); - - edgeLocationTreePtr_.reset - ( - new dynamicIndexedOctree<dynamicTreeDataPoint> - ( - dynamicTreeDataPoint(existingEdgeLocations), - overallBb, // overall search domain - 10, // max levels, n/a - 20.0, // maximum ratio of cubes v.s. cells - 100.0 // max. duplicity; n/a since no bounding boxes. - ) - ); -} - - -void Foam::conformalVoronoiMesh::buildSurfacePtLocationTree -( - const DynamicList<Foam::point>& existingSurfacePtLocations -) const -{ - treeBoundBox overallBb - ( - geometryToConformTo_.globalBounds().extend(rndGen_, 1e-4) - ); - - overallBb.min() -= Foam::point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL); - overallBb.max() += Foam::point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL); - - surfacePtLocationTreePtr_.reset - ( - new dynamicIndexedOctree<dynamicTreeDataPoint> - ( - dynamicTreeDataPoint(existingSurfacePtLocations), - overallBb, // overall search domain - 10, // max levels, n/a - 20.0, // maximum ratio of cubes v.s. cells - 100.0 // max. duplicity; n/a since no bounding boxes. - ) - ); -} - - -void Foam::conformalVoronoiMesh::buildSizeAndAlignmentTree() const -{ - if (sizeAndAlignmentLocations_.empty()) - { - FatalErrorIn("buildSizeAndAlignmentTree()") - << "sizeAndAlignmentLocations empty, must be populated before " - << "sizeAndAlignmentTree can be built." - << exit(FatalError); - } - - treeBoundBox overallBb - ( - geometryToConformTo_.globalBounds().extend(rndGen_, 1e-4) - ); - - overallBb.min() -= Foam::point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL); - overallBb.max() += Foam::point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL); - - sizeAndAlignmentTreePtr_.reset - ( - new indexedOctree<treeDataPoint> - ( - treeDataPoint(sizeAndAlignmentLocations_), - overallBb, // overall search domain - 10, // max levels - 20.0, // maximum ratio of cubes v.s. cells - 100.0 // max. duplicity; n/a since no bounding boxes. - ) - ); -} - - -void Foam::conformalVoronoiMesh::addSurfaceAndEdgeHits -( - const Delaunay::Finite_vertices_iterator& vit, - const pointIndexHitAndFeatureDynList& surfaceIntersections, - scalar surfacePtReplaceDistCoeffSqr, - scalar edgeSearchDistCoeffSqr, - pointIndexHitAndFeatureDynList& surfaceHits, - pointIndexHitAndFeatureDynList& featureEdgeHits -) const -{ - const scalar cellSize = targetCellSize(topoint(vit->point())); - const scalar cellSizeSqr = sqr(cellSize); - - forAll(surfaceIntersections, sI) - { - pointIndexHitAndFeature surfHitI = surfaceIntersections[sI]; - - bool keepSurfacePoint = true; - - if (!surfHitI.first().hit()) - { - continue; - } - - bool isNearFeaturePt = nearFeaturePt(surfHitI.first().hitPoint()); - - bool isNearSurfacePt = nearSurfacePoint(surfHitI); - - if (isNearFeaturePt || isNearSurfacePt) - { - keepSurfacePoint = false; - } - - List<List<pointIndexHit> > edHitsByFeature; - - labelList featuresHit; - - const scalar searchRadiusSqr = edgeSearchDistCoeffSqr*cellSizeSqr; - - geometryToConformTo_.findAllNearestEdges - ( - surfHitI.first().hitPoint(), - searchRadiusSqr, - edHitsByFeature, - featuresHit - ); - - forAll(edHitsByFeature, i) - { - const label featureHit = featuresHit[i]; - - List<pointIndexHit>& edHits = edHitsByFeature[i]; - - forAll(edHits, eHitI) - { - pointIndexHit& edHit = edHits[eHitI]; - - if (edHit.hit()) - { - const Foam::point& edPt = edHit.hitPoint(); - - if (!nearFeaturePt(edPt)) - { - if - ( - magSqr(edPt - surfHitI.first().hitPoint()) - < surfacePtReplaceDistCoeffSqr*cellSizeSqr - ) - { - // If the point is within a given distance of a - // feature edge, give control to edge control points - // instead, this will prevent "pits" forming. - - keepSurfacePoint = false; - - // NEED TO REMOVE FROM THE SURFACE TREE... -// surfacePtLocationTreePtr_().remove -// ( -// existingSurfacePtLocations_.size() - 1 -// ); - } - - if - ( - !nearFeatureEdgeLocation - ( - edHit - ) - ) - { - // Do not place edge control points too close to a - // feature point or existing edge control points - featureEdgeHits.append - ( - pointIndexHitAndFeature(edHit, featureHit) - ); - } - } - } - } - } - - if (keepSurfacePoint) - { - surfaceHits.append(surfHitI); - } - } -} - - -void Foam::conformalVoronoiMesh::storeSurfaceConformation() -{ - Info<< nl << "Storing surface conformation" << endl; - - surfaceConformationVertices_.clear(); - - // Use a temporary dynamic list to speed up insertion. - DynamicList<Vb> tempSurfaceVertices(number_of_vertices()/10); - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - vit++ - ) - { - // Store points that are not referred, part of a pair, but not feature - // points - if - ( - !vit->referred() - && vit->boundaryPoint() - && !vit->featurePoint() - ) - { - tempSurfaceVertices.append - ( - Vb - ( - vit->point(), - vit->type() - ) - ); - } - } - - tempSurfaceVertices.shrink(); - - surfaceConformationVertices_.transfer(tempSurfaceVertices); - - Info<< " Stored " - << returnReduce - ( - label(surfaceConformationVertices_.size()), - sumOp<label>() - ) - << " vertices" << nl << endl; -} - - -void Foam::conformalVoronoiMesh::reinsertSurfaceConformation() -{ - Info<< nl << "Reinserting stored surface conformation" << endl; - - const label preReinsertionSize(number_of_vertices()); - - // It is assumed that the stored surface conformation is on the correct - // processor and does not need distributed - rangeInsertWithInfo - ( - surfaceConformationVertices_.begin(), - surfaceConformationVertices_.end(), - true - ); - - const label nInserted = label(number_of_vertices()) - preReinsertionSize; - const label nFailed = surfaceConformationVertices_.size() - nInserted; - - Info<< " " << returnReduce(nInserted, sumOp<label>()) - << " points reinserted, failed to insert " - << returnReduce(nFailed, sumOp<label>()) - << endl; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshFeaturePointSpecialisations.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshFeaturePointSpecialisations.C deleted file mode 100644 index 2f7579cbbff95339c341b32c9857ec82dcc100b0..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshFeaturePointSpecialisations.C +++ /dev/null @@ -1,436 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "conformalVoronoiMesh.H" -#include "vectorTools.H" - -using namespace Foam::vectorTools; - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -Foam::List<Foam::extendedFeatureEdgeMesh::edgeStatus> -Foam::conformalVoronoiMesh::calcPointFeatureEdgesTypes -( - const extendedFeatureEdgeMesh& feMesh, - const labelList& pEds, - pointFeatureEdgesTypes& pFEdgeTypes -) -{ - List<extendedFeatureEdgeMesh::edgeStatus> allEdStat(pEds.size()); - - forAll(pEds, i) - { - label edgeI = pEds[i]; - - extendedFeatureEdgeMesh::edgeStatus& eS = allEdStat[i]; - - eS = feMesh.getEdgeStatus(edgeI); - - pFEdgeTypes(eS)++; - } - - if (debug) - { - Info<< pFEdgeTypes << endl; - } - - return allEdStat; -} - - -bool Foam::conformalVoronoiMesh::createSpecialisedFeaturePoint -( - const extendedFeatureEdgeMesh& feMesh, - const labelList& pEds, - const pointFeatureEdgesTypes& pFEdgesTypes, - const List<extendedFeatureEdgeMesh::edgeStatus>& allEdStat, - const label ptI, - DynamicList<Vb>& pts -) -{ - if - ( - !pFEdgesTypes.found(extendedFeatureEdgeMesh::EXTERNAL) - || !pFEdgesTypes.found(extendedFeatureEdgeMesh::INTERNAL) - ) - { - return false; - } - - if - ( - pFEdgesTypes[extendedFeatureEdgeMesh::EXTERNAL] == 2 - && pFEdgesTypes[extendedFeatureEdgeMesh::INTERNAL] == 1 - && pEds.size() == 3 - ) - { - Info<< "nExternal == 2 && nInternal == 1" << endl; - - const Foam::point& featPt = feMesh.points()[ptI]; - - if (!positionOnThisProc(featPt)) - { - return false; - } - - label nVert = number_of_vertices(); - - const label initialNumOfPoints = pts.size(); - - const scalar ppDist = pointPairDistance(featPt); - - const vectorField& normals = feMesh.normals(); - - const labelListList& edgeNormals = feMesh.edgeNormals(); - - label concaveEdgeI = -1; - labelList convexEdgesI(2, -1); - label nConvex = 0; - - forAll(pEds, i) - { - const extendedFeatureEdgeMesh::edgeStatus& eS = allEdStat[i]; - - if (eS == extendedFeatureEdgeMesh::INTERNAL) - { - concaveEdgeI = pEds[i]; - } - else if (eS == extendedFeatureEdgeMesh::EXTERNAL) - { - convexEdgesI[nConvex++] = pEds[i]; - } - else if (eS == extendedFeatureEdgeMesh::FLAT) - { - WarningIn("Foam::conformalVoronoiMesh::" - "createSpecialisedFeaturePoint") - << "Edge " << eS << " is flat" - << endl; - } - else - { - FatalErrorIn("Foam::conformalVoronoiMesh::" - "createSpecialisedFeaturePoint") - << "Edge " << eS << " not concave/convex" - << exit(FatalError); - } - } - - const vector& concaveEdgePlaneANormal = - normals[edgeNormals[concaveEdgeI][0]]; - - const vector& concaveEdgePlaneBNormal = - normals[edgeNormals[concaveEdgeI][1]]; - - // Intersect planes parallel to the concave edge planes offset - // by ppDist and the plane defined by featPt and the edge vector. - plane planeA - ( - featPt + ppDist*concaveEdgePlaneANormal, - concaveEdgePlaneANormal - ); - - plane planeB - ( - featPt + ppDist*concaveEdgePlaneBNormal, - concaveEdgePlaneBNormal - ); - - const vector& concaveEdgeDir = feMesh.edgeDirection - ( - concaveEdgeI, - ptI - ); - - // Todo,needed later but want to get rid of this. - const Foam::point concaveEdgeLocalFeatPt = - featPt + ppDist*concaveEdgeDir; - - // Finding the nearest point on the intersecting line to the edge - // point. Floating point errors often occur using planePlaneIntersect - - plane planeF(concaveEdgeLocalFeatPt, concaveEdgeDir); - - const Foam::point concaveEdgeExternalPt = planeF.planePlaneIntersect - ( - planeA, - planeB - ); - - // Redefine planes to be on the feature surfaces to project through - - planeA = plane(featPt, concaveEdgePlaneANormal); - - planeB = plane(featPt, concaveEdgePlaneBNormal); - - const Foam::point internalPtA = - concaveEdgeExternalPt - - 2.0*planeA.distance(concaveEdgeExternalPt) - *concaveEdgePlaneANormal; - - pts.append - ( - Vb(internalPtA, Vb::vtInternalFeaturePoint) - ); - - const Foam::point internalPtB = - concaveEdgeExternalPt - - 2.0*planeB.distance(concaveEdgeExternalPt) - *concaveEdgePlaneBNormal; - - pts.append - ( - Vb(internalPtB, Vb::vtInternalFeaturePoint) - ); - - // Add the external points - - Foam::point externalPtD; - Foam::point externalPtE; - - vector convexEdgePlaneCNormal(0,0,0); - vector convexEdgePlaneDNormal(0,0,0); - - const labelList& concaveEdgeNormals = edgeNormals[concaveEdgeI]; - const labelList& convexEdgeANormals = edgeNormals[convexEdgesI[0]]; - const labelList& convexEdgeBNormals = edgeNormals[convexEdgesI[1]]; - - forAll(concaveEdgeNormals, edgeNormalI) - { - bool convexEdgeA = false; - bool convexEdgeB = false; - - forAll(convexEdgeANormals, edgeAnormalI) - { - const vector& concaveNormal - = normals[concaveEdgeNormals[edgeNormalI]]; - const vector& convexNormal - = normals[convexEdgeANormals[edgeAnormalI]]; - - Info<< "Angle between vectors = " - << degAngleBetween(concaveNormal, convexNormal) << endl; - - // Need a looser tolerance, because sometimes adjacent triangles - // on the same surface will be slightly out of alignment. - if (areParallel(concaveNormal, convexNormal, tolParallel)) - { - convexEdgeA = true; - } - } - - forAll(convexEdgeBNormals, edgeBnormalI) - { - const vector& concaveNormal - = normals[concaveEdgeNormals[edgeNormalI]]; - const vector& convexNormal - = normals[convexEdgeBNormals[edgeBnormalI]]; - - Info<< "Angle between vectors = " - << degAngleBetween(concaveNormal, convexNormal) << endl; - - // Need a looser tolerance, because sometimes adjacent triangles - // on the same surface will be slightly out of alignment. - if (areParallel(concaveNormal, convexNormal, tolParallel)) - { - convexEdgeB = true; - } - } - - if ((convexEdgeA && convexEdgeB) || (!convexEdgeA && !convexEdgeB)) - { - WarningIn - ( - "Foam::conformalVoronoiMesh" - "::createSpecialisedFeaturePoint" - ) - << "Both or neither of the convex edges share the concave " - << "edge's normal." - << " convexEdgeA = " << convexEdgeA - << " convexEdgeB = " << convexEdgeB - << endl; - - // Remove points that have just been added before returning - for (label i = 0; i < 2; ++i) - { - pts.remove(); - nVert--; - } - - return false; - } - - if (convexEdgeA) - { - forAll(convexEdgeANormals, edgeAnormalI) - { - const vector& concaveNormal - = normals[concaveEdgeNormals[edgeNormalI]]; - const vector& convexNormal - = normals[convexEdgeANormals[edgeAnormalI]]; - - if - ( - !areParallel(concaveNormal, convexNormal, tolParallel) - ) - { - convexEdgePlaneCNormal = convexNormal; - - plane planeC(featPt, convexEdgePlaneCNormal); - - externalPtD = - internalPtA - + 2.0*planeC.distance(internalPtA) - *convexEdgePlaneCNormal; - - pts.append - ( - Vb(externalPtD, Vb::vtExternalFeaturePoint) - ); - } - } - } - - if (convexEdgeB) - { - forAll(convexEdgeBNormals, edgeBnormalI) - { - const vector& concaveNormal - = normals[concaveEdgeNormals[edgeNormalI]]; - const vector& convexNormal - = normals[convexEdgeBNormals[edgeBnormalI]]; - - if - ( - !areParallel(concaveNormal, convexNormal, tolParallel) - ) - { - convexEdgePlaneDNormal = convexNormal; - - plane planeD(featPt, convexEdgePlaneDNormal); - - externalPtE = - internalPtB - + 2.0*planeD.distance(internalPtB) - *convexEdgePlaneDNormal; - - pts.append - ( - Vb(externalPtE, Vb::vtExternalFeaturePoint) - ); - } - } - } - } - - pts.append - ( - Vb(concaveEdgeExternalPt, Vb::vtExternalFeaturePoint) - ); - - const scalar totalAngle = radToDeg - ( - constant::mathematical::pi - + radAngleBetween(concaveEdgePlaneANormal, concaveEdgePlaneBNormal) - ); - - if (totalAngle > cvMeshControls().maxQuadAngle()) - { - // Add additional mitreing points - //scalar angleSign = 1.0; - - - vector convexEdgesPlaneNormal = - 0.5*(convexEdgePlaneCNormal + convexEdgePlaneDNormal); - - plane planeM(featPt, convexEdgesPlaneNormal); - -// if -// ( -// geometryToConformTo_.outside -// ( -// featPt - convexEdgesPlaneNormal*ppDist -// ) -// ) -// { -// angleSign = -1.0; -// } - -// scalar phi = -// angleSign*acos(concaveEdgeDir & -convexEdgesPlaneNormal); -// -// scalar guard = -// ( -// 1.0 + sin(phi)*ppDist/mag -// ( -// concaveEdgeLocalFeatPt - concaveEdgeExternalPt -// ) -// )/cos(phi) - 1.0; - - const Foam::point internalPtF = - concaveEdgeExternalPt - //+ (2.0 + guard)*(concaveEdgeLocalFeatPt - concaveEdgeExternalPt); - + 2.0*(concaveEdgeLocalFeatPt - concaveEdgeExternalPt); - - pts.append - ( - Vb(internalPtF, Vb::vtInternalFeaturePoint) - ); - - const Foam::point externalPtG = - internalPtF - + 2.0*planeM.distance(internalPtF)*convexEdgesPlaneNormal; - - pts.append - ( - Vb(externalPtG, Vb::vtExternalFeaturePoint) - ); - } - - if (debug) - { - for (label ptI = initialNumOfPoints; ptI < pts.size(); ++ptI) - { - Info<< "Point " << ptI << " : "; - meshTools::writeOBJ(Info, topoint(pts[ptI].point())); - } - } - - return true; - } - else if - ( - pFEdgesTypes[extendedFeatureEdgeMesh::EXTERNAL] == 1 - && pFEdgesTypes[extendedFeatureEdgeMesh::INTERNAL] == 2 - ) - { - // Info<< "nExternal == 1 && nInternal == 2" << endl; - - return false; - } - - return false; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshFeaturePoints.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshFeaturePoints.C deleted file mode 100644 index 028dd5a0df09cf18f6e1a55b3fd3e6be08fbc1ad..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshFeaturePoints.C +++ /dev/null @@ -1,1235 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "conformalVoronoiMesh.H" -#include "vectorTools.H" -#include "triangle.H" -#include "tetrahedron.H" -#include "const_circulator.H" - -using namespace Foam::vectorTools; - -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -void Foam::conformalVoronoiMesh::createEdgePointGroup -( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts -) -{ - label edgeI = edHit.index(); - - extendedFeatureEdgeMesh::edgeStatus edStatus = feMesh.getEdgeStatus(edgeI); - - switch (edStatus) - { - case extendedFeatureEdgeMesh::EXTERNAL: - { - createExternalEdgePointGroup(feMesh, edHit, pts); - break; - } - case extendedFeatureEdgeMesh::INTERNAL: - { - createInternalEdgePointGroup(feMesh, edHit, pts); - break; - } - case extendedFeatureEdgeMesh::FLAT: - { - createFlatEdgePointGroup(feMesh, edHit, pts); - break; - } - case extendedFeatureEdgeMesh::OPEN: - { - createOpenEdgePointGroup(feMesh, edHit, pts); - break; - } - case extendedFeatureEdgeMesh::MULTIPLE: - { - createMultipleEdgePointGroup(feMesh, edHit, pts); - break; - } - case extendedFeatureEdgeMesh::NONE: - { - break; - } - } -} - - -void Foam::conformalVoronoiMesh::createExternalEdgePointGroup -( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts -) -{ - const Foam::point& edgePt = edHit.hitPoint(); - - scalar ppDist = pointPairDistance(edgePt); - - const vectorField& feNormals = feMesh.normals(); - const labelList& edNormalIs = feMesh.edgeNormals()[edHit.index()]; - - // As this is an external edge, there are two normals by definition - const vector& nA = feNormals[edNormalIs[0]]; - const vector& nB = feNormals[edNormalIs[1]]; - - if (areParallel(nA, nB)) - { - // The normals are nearly parallel, so this is too sharp a feature to - // conform to. - return; - } - - // Normalised distance of reference point from edge point - vector refVec((nA + nB)/(1 + (nA & nB))); - - if (magSqr(refVec) > sqr(5.0)) - { - // Limit the size of the conformation - ppDist *= 5.0/mag(refVec); - - // Pout<< nl << "createExternalEdgePointGroup limit " - // << "edgePt " << edgePt << nl - // << "refVec " << refVec << nl - // << "mag(refVec) " << mag(refVec) << nl - // << "ppDist " << ppDist << nl - // << "nA " << nA << nl - // << "nB " << nB << nl - // << "(nA & nB) " << (nA & nB) << nl - // << endl; - } - - // Convex. So refPt will be inside domain and hence a master point - Foam::point refPt = edgePt - ppDist*refVec; - - // Result when the points are eventually inserted. - // Add number_of_vertices() at insertion of first vertex to all numbers: - // pt index type - // refPt 0 1 - // reflectedA 1 0 - // reflectedB 2 0 - - // Insert the master point pairing the the first slave - - if (!geometryToConformTo_.inside(refPt)) - { - return; - } - - pts.append - ( - Vb(refPt, Vb::vtInternalFeatureEdge) - ); - - // Insert the slave points by reflecting refPt in both faces. - // with each slave refering to the master - - Foam::point reflectedA = refPt + 2*ppDist*nA; - pts.append - ( - Vb(reflectedA, Vb::vtExternalFeatureEdge) - ); - - Foam::point reflectedB = refPt + 2*ppDist*nB; - pts.append - ( - Vb(reflectedB, Vb::vtExternalFeatureEdge) - ); -} - - -void Foam::conformalVoronoiMesh::createInternalEdgePointGroup -( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts -) -{ - const Foam::point& edgePt = edHit.hitPoint(); - - scalar ppDist = pointPairDistance(edgePt); - - const vectorField& feNormals = feMesh.normals(); - const labelList& edNormalIs = feMesh.edgeNormals()[edHit.index()]; - - // As this is an external edge, there are two normals by definition - const vector& nA = feNormals[edNormalIs[0]]; - const vector& nB = feNormals[edNormalIs[1]]; - - if (areParallel(nA, nB)) - { - // The normals are nearly parallel, so this is too sharp a feature to - // conform to. - - return; - } - - // Normalised distance of reference point from edge point - vector refVec((nA + nB)/(1 + (nA & nB))); - - if (magSqr(refVec) > sqr(5.0)) - { - // Limit the size of the conformation - ppDist *= 5.0/mag(refVec); - - // Pout<< nl << "createInternalEdgePointGroup limit " - // << "edgePt " << edgePt << nl - // << "refVec " << refVec << nl - // << "mag(refVec) " << mag(refVec) << nl - // << "ppDist " << ppDist << nl - // << "nA " << nA << nl - // << "nB " << nB << nl - // << "(nA & nB) " << (nA & nB) << nl - // << endl; - } - - // Concave. master and reflected points inside the domain. - Foam::point refPt = edgePt - ppDist*refVec; - - // Generate reflected master to be outside. - Foam::point reflMasterPt = refPt + 2*(edgePt - refPt); - - // Reflect reflMasterPt in both faces. - Foam::point reflectedA = reflMasterPt - 2*ppDist*nA; - - Foam::point reflectedB = reflMasterPt - 2*ppDist*nB; - - scalar totalAngle = - radToDeg(constant::mathematical::pi + radAngleBetween(nA, nB)); - - // Number of quadrants the angle should be split into - int nQuads = int(totalAngle/cvMeshControls().maxQuadAngle()) + 1; - - // The number of additional master points needed to obtain the - // required number of quadrants. - int nAddPoints = min(max(nQuads - 2, 0), 2); - - // Add number_of_vertices() at insertion of first vertex to all numbers: - // Result for nAddPoints 1 when the points are eventually inserted - // pt index type - // reflectedA 0 2 - // reflectedB 1 2 - // reflMasterPt 2 0 - - // Result for nAddPoints 1 when the points are eventually inserted - // pt index type - // reflectedA 0 3 - // reflectedB 1 3 - // refPt 2 3 - // reflMasterPt 3 0 - - // Result for nAddPoints 2 when the points are eventually inserted - // pt index type - // reflectedA 0 4 - // reflectedB 1 4 - // reflectedAa 2 4 - // reflectedBb 3 4 - // reflMasterPt 4 0 - - if - ( - !geometryToConformTo_.inside(reflectedA) - || !geometryToConformTo_.inside(reflectedB) - ) - { - return; - } - - // Master A is inside. - pts.append - ( - Vb(reflectedA, Vb::vtInternalFeatureEdge) - ); - - // Master B is inside. - pts.append - ( - Vb(reflectedB, Vb::vtInternalFeatureEdge) - ); - - if (nAddPoints == 1) - { - // One additinal point is the reflection of the slave point, - // i.e. the original reference point - pts.append - ( - Vb(refPt, Vb::vtInternalFeatureEdge) - ); - } - else if (nAddPoints == 2) - { - Foam::point reflectedAa = refPt + ppDist*nB; - pts.append - ( - Vb(reflectedAa, Vb::vtInternalFeatureEdge) - ); - - Foam::point reflectedBb = refPt + ppDist*nA; - pts.append - ( - Vb(reflectedBb, Vb::vtInternalFeatureEdge) - ); - } - - // Slave is outside. - pts.append - ( - Vb(reflMasterPt, Vb::vtExternalFeatureEdge) - ); -} - - -void Foam::conformalVoronoiMesh::createFlatEdgePointGroup -( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts -) -{ - const Foam::point& edgePt = edHit.hitPoint(); - - const scalar ppDist = pointPairDistance(edgePt); - - const vectorField& feNormals = feMesh.normals(); - const labelList& edNormalIs = feMesh.edgeNormals()[edHit.index()]; - - // As this is a flat edge, there are two normals by definition - const vector& nA = feNormals[edNormalIs[0]]; - const vector& nB = feNormals[edNormalIs[1]]; - - // Average normal to remove any bias to one side, although as this - // is a flat edge, the normals should be essentially the same - const vector n = 0.5*(nA + nB); - - // Direction along the surface to the control point, sense of edge - // direction not important, as +s and -s can be used because this - // is a flat edge - vector s = ppDist*(feMesh.edgeDirections()[edHit.index()] ^ n); - - createPointPair(ppDist, edgePt + s, n, pts); - createPointPair(ppDist, edgePt - s, n, pts); -} - - -void Foam::conformalVoronoiMesh::createOpenEdgePointGroup -( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts -) -{ -// // Assume it is a baffle and insert flat edge point pairs -// const Foam::point& edgePt = edHit.hitPoint(); -// -// const scalar ppDist = pointPairDistance(edgePt); -// -// const vectorField& feNormals = feMesh.normals(); -// const labelList& edNormalIs = feMesh.edgeNormals()[edHit.index()]; -// -// // As this is a flat edge, there are two normals by definition -// const vector& nA = feNormals[edNormalIs[0]]; -// const vector& nB = feNormals[edNormalIs[1]]; -// -// // Average normal to remove any bias to one side, although as this -// // is a flat edge, the normals should be essentially the same -// const vector n = 0.5*(nA + nB); -// -// // Direction along the surface to the control point, sense of edge -// // direction not important, as +s and -s can be used because this -// // is a flat edge -// vector s = ppDist*(feMesh.edgeDirections()[edHit.index()] ^ n); -// -// createBafflePointPair(ppDist, edgePt + s, n, pts); -// createBafflePointPair(ppDist, edgePt - s, n, pts); - - Info<< "NOT INSERTING OPEN EDGE POINT GROUP, NOT IMPLEMENTED" << endl; -} - - -void Foam::conformalVoronoiMesh::createMultipleEdgePointGroup -( - const extendedFeatureEdgeMesh& feMesh, - const pointIndexHit& edHit, - DynamicList<Vb>& pts -) -{ - Info<< "NOT INSERTING MULTIPLE EDGE POINT GROUP, NOT IMPLEMENTED" << endl; -} - - -void Foam::conformalVoronoiMesh::reinsertFeaturePoints(bool distribute) -{ - Info<< nl << "Reinserting stored feature points" << endl; - - label preReinsertionSize(number_of_vertices()); - - insertPoints(featureVertices_, distribute); - - const label nReinserted = returnReduce - ( - label(number_of_vertices()) - preReinsertionSize, - sumOp<label>() - ); - - Info<< " Reinserted " << nReinserted << " vertices" << endl; -} - - -void Foam::conformalVoronoiMesh::createMixedFeaturePoints -( - DynamicList<Vb>& pts -) -{ - if (cvMeshControls().mixedFeaturePointPPDistanceCoeff() < 0) - { - Info<< nl << "Skipping specialised handling for mixed feature points" - << endl; - return; - } - - const PtrList<extendedFeatureEdgeMesh>& feMeshes - ( - geometryToConformTo_.features() - ); - - forAll(feMeshes, i) - { - const extendedFeatureEdgeMesh& feMesh = feMeshes[i]; - const labelListList& pointsEdges = feMesh.pointEdges(); - const pointField& points = feMesh.points(); - - for - ( - label ptI = feMesh.mixedStart(); - ptI < feMesh.nonFeatureStart(); - ptI++ - ) - { - const Foam::point& featPt = points[ptI]; - - if (!positionOnThisProc(featPt)) - { - continue; - } - - const labelList& pEds = pointsEdges[ptI]; - - pointFeatureEdgesTypes pFEdgeTypes(ptI); - - const List<extendedFeatureEdgeMesh::edgeStatus> allEdStat - = calcPointFeatureEdgesTypes(feMesh, pEds, pFEdgeTypes); - - bool specialisedSuccess = false; - - if (cvMeshControls().specialiseFeaturePoints()) - { - specialisedSuccess = createSpecialisedFeaturePoint - ( - feMesh, pEds, pFEdgeTypes, allEdStat, ptI, pts - ); - } - - if (!specialisedSuccess) - { - // Specialisations available for some mixed feature points. For - // non-specialised feature points, inserting mixed internal and - // external edge groups at feature point. - - // Skipping unsupported mixed feature point types - bool skipEdge = false; - - forAll(pEds, e) - { - const label edgeI = pEds[e]; - - const extendedFeatureEdgeMesh::edgeStatus edStatus - = feMesh.getEdgeStatus(edgeI); - - if - ( - edStatus == extendedFeatureEdgeMesh::OPEN - || edStatus == extendedFeatureEdgeMesh::MULTIPLE - ) - { - Info<< "Edge type " << edStatus - << " found for mixed feature point " << ptI - << ". Not supported." - << endl; - - skipEdge = true; - } - } - - if (skipEdge) - { - Info<< "Skipping point " << ptI << nl << endl; - - continue; - } - -// createFeaturePoints(feMesh, ptI, pts, types); - - const Foam::point pt = points[ptI]; - - const scalar edgeGroupDistance = mixedFeaturePointDistance(pt); - - forAll(pEds, e) - { - const label edgeI = pEds[e]; - - const Foam::point edgePt = - pt + edgeGroupDistance*feMesh.edgeDirection(edgeI, ptI); - - const pointIndexHit edgeHit(true, edgePt, edgeI); - - createEdgePointGroup(feMesh, edgeHit, pts); - } - } - } - } -} -// -// -//void Foam::conformalVoronoiMesh::createFeaturePoints -//( -// DynamicList<Foam::point>& pts, -// DynamicList<label>& indices, -// DynamicList<label>& types -//) -//{ -// const PtrList<extendedFeatureEdgeMesh>& feMeshes -// ( -// geometryToConformTo_.features() -// ); -// -// forAll(feMeshes, i) -// { -// const extendedFeatureEdgeMesh& feMesh(feMeshes[i]); -// -// for -// ( -// label ptI = feMesh.convexStart(); -// ptI < feMesh.mixedStart(); -// ++ptI -// ) -// { -// const Foam::point& featPt = feMesh.points()[ptI]; -// -// if (!positionOnThisProc(featPt)) -// { -// continue; -// } -// -// const scalar searchRadiusSqr = 5.0*targetCellSize(featPt); -// -// labelList indices = surfacePtLocationTreePtr_().findSphere -// ( -// featPt, -// searchRadiusSqr -// ); -// -// pointField nearestSurfacePoints(indices.size()); -// -// forAll(indices, pI) -// { -// nearestSurfacePoints[pI] = -// surfaceConformationVertices_[indices[pI]]; -// } -// -// forAll(feMesh.) -// -// // Now find the nearest points within the edge cones. -// -// // Calculate preliminary surface point locations -// -// -// } -// } -//} - - -void Foam::conformalVoronoiMesh::insertFeaturePoints() -{ - Info<< nl << "Conforming to feature points" << endl; - - DynamicList<Vb> pts; - - const label preFeaturePointSize = number_of_vertices(); - - createFeaturePoints(pts); - - createMixedFeaturePoints(pts); - - // Points added using the createEdgePointGroup function will be labelled as - // internal/external feature edges. Relabel them as feature points, - // otherwise they are inserted as both feature points and surface points. - forAll(pts, pI) - { - Vb& pt = pts[pI]; - - if (pt.featureEdgePoint()) - { - if (pt.internalBoundaryPoint()) - { - pt.type() = Vb::vtInternalFeaturePoint; - } - else if (pt.externalBoundaryPoint()) - { - pt.type() = Vb::vtExternalFeaturePoint; - } - } - } - - // Insert the created points, distributing to the appropriate processor - insertPoints(pts, true); - - if (cvMeshControls().objOutput()) - { - writePoints("featureVertices.obj", pts); - } - - label nFeatureVertices = number_of_vertices() - preFeaturePointSize; - - if (Pstream::parRun()) - { - reduce(nFeatureVertices, sumOp<label>()); - } - - if (nFeatureVertices > 0) - { - Info<< " Inserted " << nFeatureVertices - << " feature vertices" << endl; - } - - featureVertices_.clear(); - featureVertices_.setSize(pts.size()); - - forAll(pts, pI) - { - featureVertices_[pI] = pts[pI]; - } - - constructFeaturePointLocations(); -} - - -void Foam::conformalVoronoiMesh::constructFeaturePointLocations() -{ - DynamicList<Foam::point> ftPtLocs; - - const PtrList<extendedFeatureEdgeMesh>& feMeshes - ( - geometryToConformTo_.features() - ); - - forAll(feMeshes, i) - { - const extendedFeatureEdgeMesh& feMesh(feMeshes[i]); - - if (cvMeshControls().mixedFeaturePointPPDistanceCoeff() < 0) - { - // Ignoring mixed feature points - for - ( - label ptI = feMesh.convexStart(); - ptI < feMesh.mixedStart(); - ptI++ - ) - { - ftPtLocs.append(feMesh.points()[ptI]); - } - } - else - { - for - ( - label ptI = feMesh.convexStart(); - ptI < feMesh.nonFeatureStart(); - ptI++ - ) - { - ftPtLocs.append(feMesh.points()[ptI]); - } - } - } - - featurePointLocations_.transfer(ftPtLocs); -} - - -Foam::List<Foam::pointIndexHit> -Foam::conformalVoronoiMesh::findSurfacePtLocationsNearFeaturePoint -( - const Foam::point& featurePoint -) const -{ - DynamicList<pointIndexHit> dynPointList; - - const scalar searchRadiusSqr = 3*targetCellSize(featurePoint); - - labelList surfacePtList = surfacePtLocationTreePtr_().findSphere - ( - featurePoint, - searchRadiusSqr - ); - - forAll(surfacePtList, elemI) - { - label index = surfacePtList[elemI]; - - const Foam::point& p - = surfacePtLocationTreePtr_().shapes().shapePoints()[index]; - - pointIndexHit nearHit(true, p, index); - - dynPointList.append(nearHit); - } - - return dynPointList.shrink(); -} - - -void Foam::conformalVoronoiMesh::addMasterAndSlavePoints -( - const DynamicList<Foam::point>& masterPoints, - const DynamicList<Foam::indexedVertexEnum::vertexType>& masterPointsTypes, - const Map<DynamicList<autoPtr<plane> > >& masterPointReflections, - DynamicList<Vb>& pts, - const label ptI -) const -{ - typedef DynamicList<autoPtr<plane> > planeDynList; - typedef Foam::indexedVertexEnum::vertexType vertexType; - - forAll(masterPoints, pI) - { - // Append master to the list of points - -// OFstream strMasters("fpm_" + name(ptI) + ".obj"); -// OFstream strSlaves("fps_" + name(ptI) + ".obj"); - - const Foam::point& masterPt = masterPoints[pI]; - const vertexType masterType = masterPointsTypes[pI]; - - pts.append - ( - Vb - ( - masterPt, - masterType - ) - ); - -// meshTools::writeOBJ(strMasters, masterPt); - - const planeDynList& masterPointPlanes = masterPointReflections[pI]; - - forAll(masterPointPlanes, planeI) - { - // Reflect master points in the planes and insert the slave points - - const plane& reflPlane = masterPointPlanes[planeI](); - - const Foam::point slavePt = - reflectPointInPlane(masterPt, reflPlane); - - const vertexType slaveType = - ( - masterType == Vb::vtInternalFeaturePoint - ? Vb::vtExternalFeaturePoint // true - : Vb::vtInternalFeaturePoint // false - ); - - pts.append - ( - Vb - ( - slavePt, - slaveType - ) - ); - -// meshTools::writeOBJ(strSlaves, slavePt); - } - } -} - - -Foam::label Foam::conformalVoronoiMesh::getSign -( - const extendedFeatureEdgeMesh::edgeStatus eStatus -) const -{ - if (eStatus == extendedFeatureEdgeMesh::EXTERNAL) - { - return -1; - } - else if (eStatus == extendedFeatureEdgeMesh::INTERNAL) - { - return 1; - } - - return 0; -} - - -void Foam::conformalVoronoiMesh::createMasterAndSlavePoints -( - const extendedFeatureEdgeMesh& feMesh, - const label ptI, - DynamicList<Vb>& pts -) const -{ - typedef DynamicList<autoPtr<plane> > planeDynList; - typedef Foam::indexedVertexEnum::vertexType vertexType; - typedef Foam::extendedFeatureEdgeMesh::edgeStatus edgeStatus; - - const Foam::point& featPt = feMesh.points()[ptI]; - - if (!positionOnThisProc(featPt)) - { - return; - } - - const scalar ppDist = pointPairDistance(featPt); - - // Maintain a list of master points and the planes to relect them in - DynamicList<Foam::point> masterPoints; - DynamicList<vertexType> masterPointsTypes; - Map<planeDynList> masterPointReflections; - - const labelList& featPtEdges = feMesh.featurePointEdges()[ptI]; - - const_circulator<labelList> circ(featPtEdges); - -// Info<< "Point = " << ptI << endl; - - // Loop around the edges of the feature point - if (circ.size()) do - { -// const edgeStatus eStatusPrev = feMesh.getEdgeStatus(circ.prev()); - const edgeStatus eStatusCurr = feMesh.getEdgeStatus(circ()); -// const edgeStatus eStatusNext = feMesh.getEdgeStatus(circ.next()); - -// Info<< "Prev = " -// << extendedFeatureEdgeMesh::edgeStatusNames_[eStatusPrev] -// << " Curr = " -// << extendedFeatureEdgeMesh::edgeStatusNames_[eStatusCurr] -//// << " Next = " -//// << extendedFeatureEdgeMesh::edgeStatusNames_[eStatusNext] -// << endl; - - // Get the direction in which to move the point in relation to the - // feature point - label sign = getSign(eStatusCurr); - - const vector n = sharedFaceNormal(feMesh, circ(), circ.next()); - - const vector pointMotionDirection = sign*0.5*ppDist*n; - - if (masterPoints.empty()) - { - // Initialise with the first master point - - Foam::point pt = featPt + pointMotionDirection; - - planeDynList firstPlane; - firstPlane.append(autoPtr<plane>(new plane(featPt, n))); - - masterPoints.append(pt); - - masterPointsTypes.append - ( - sign == 1 - ? Vb::vtExternalFeaturePoint // true - : Vb::vtInternalFeaturePoint // false - ); - - if - ( - masterPointsTypes.last() == Vb::vtInternalFeaturePoint - && !geometryToConformTo_.inside(masterPoints.last()) - ) - { - return; - } - - const Foam::point reflectedPoint = reflectPointInPlane - ( - masterPoints.last(), - firstPlane.last()() - ); - - if - ( - masterPointsTypes.last() == Vb::vtExternalFeaturePoint - && !geometryToConformTo_.inside(reflectedPoint) - ) - { - return; - } - - masterPointReflections.insert - ( - masterPoints.size() - 1, - firstPlane - ); - } -// else if -// ( -// eStatusPrev == extendedFeatureEdgeMesh::INTERNAL -// && eStatusCurr == extendedFeatureEdgeMesh::EXTERNAL -// ) -// { -// // Insert a new master point. -// Foam::point pt = featPt + pointMotionDirection; -// -// planeDynList firstPlane; -// firstPlane.append(autoPtr<plane>(new plane(featPt, n))); -// -// masterPoints.append(pt); -// -// masterPointsTypes.append -// ( -// sign == 1 -// ? Vb::vtExternalFeaturePoint // true -// : Vb::vtInternalFeaturePoint // false -// ); -// -// masterPointReflections.insert -// ( -// masterPoints.size() - 1, -// firstPlane -// ); -// } -// else if -// ( -// eStatusPrev == extendedFeatureEdgeMesh::EXTERNAL -// && eStatusCurr == extendedFeatureEdgeMesh::INTERNAL -// ) -// { -// -// } - else - { - // Just add this face contribution to the latest master point - - masterPoints.last() += pointMotionDirection; - - masterPointReflections[masterPoints.size() - 1].append - ( - autoPtr<plane>(new plane(featPt, n)) - ); - } - - } while (circ.circulate(CirculatorBase::CLOCKWISE)); - - addMasterAndSlavePoints - ( - masterPoints, - masterPointsTypes, - masterPointReflections, - pts, - ptI - ); -} - - -void Foam::conformalVoronoiMesh::createFeaturePoints(DynamicList<Vb>& pts) -{ - const PtrList<extendedFeatureEdgeMesh>& feMeshes - ( - geometryToConformTo_.features() - ); - - forAll(feMeshes, i) - { - Info<< indent << "Edge mesh = " << feMeshes[i].name() << nl << endl; - - const extendedFeatureEdgeMesh& feMesh(feMeshes[i]); - - for - ( - label ptI = feMesh.convexStart(); - ptI < feMesh.mixedStart(); - ptI++ - ) - { - createMasterAndSlavePoints(feMesh, ptI, pts); - } - } -} - - -//Foam::scalar Foam::conformalVoronoiMesh::pyramidVolume -//( -// const Foam::point& apex, -// const Foam::point& a, -// const Foam::point& b, -// const Foam::point& c, -// const bool printInfo -//) const -//{ -// triPointRef tri(a, b, c); -// -// tetPointRef tet(tri.a(), tri.b(), tri.c(), apex); -// -// scalar volume = tet.mag(); -// -//// scalar volume = (1.0/3.0)*constant::mathematical::pi; -//// -//// K::Circle_3 circle(toPoint(a), toPoint(b), toPoint(c)); -//// -//// scalar height = mag(topoint(circle.center()) - apex); -//// -//// volume *= circle.squared_radius()*height; -// -// if (printInfo) -// { -// Info<< "Calculating volume of pyramid..." << nl -// << " Apex : " << apex << nl -// << " Point a : " << a << nl -// << " Point b : " << b << nl -// << " Point c : " << c << nl -// << " Center : " << tri.centre() << nl -// << " Volume : " << volume << endl; -// } -// -// return volume; -//} - - -//void Foam::conformalVoronoiMesh::createPyramidMasterPoint -//( -// const Foam::point& apex, -// const vectorField& edgeDirections, -// Foam::point& masterPoint, -// vectorField& norms -//) const -//{ -// pointField basePoints(edgeDirections.size() + 1); -// -// forAll(edgeDirections, eI) -// { -// basePoints[eI] = edgeDirections[eI] + apex; -// } -// -// basePoints[edgeDirections.size() + 1] = apex; -// -// face f(identity(edgeDirections.size())); -// -// pyramidPointFaceRef p(f, apex); -// -// const scalar ppDist = pointPairDistance(apex); -// -// -// vector unitDir = f.centre(); -// unitDir /= mag(unitDir); -// -// masterPoint = apex + ppDist*unitDir; -// -// norms.setSize(edgeDirections.size()); -// -// forAll(norms, nI) -// { -// norms[nI] = -// } -//} - - -//void Foam::conformalVoronoiMesh::createConvexConcaveFeaturePoints -//( -// DynamicList<Foam::point>& pts, -// DynamicList<label>& indices, -// DynamicList<label>& types -//) -//{ -// const PtrList<extendedFeatureEdgeMesh>& feMeshes -// ( -// geometryToConformTo_.features() -// ); -// -// forAll(feMeshes, i) -// { -// const extendedFeatureEdgeMesh& feMesh(feMeshes[i]); -// -// for -// ( -// label ptI = feMesh.convexStart(); -// ptI < feMesh.mixedStart(); -// ptI++ -// ) -// { -// const Foam::point& apex = feMesh.points()[ptI]; -// -// if (!positionOnThisProc(apex)) -// { -// continue; -// } -// -// const vectorField& featPtEdgeDirections -// = feMesh.featurePointEdgeDirections(ptI); -// -// Foam::point masterPoint; -// vectorField tetNorms; -// -// createPyramidMasterPoint -// ( -// apex, -// featPtEdgeDirections, -// masterPoint, -// tetNorms -// ); -// -// -// -// // Result when the points are eventually inserted (example n = 4) -// // Add number_of_vertices() at insertion of first vertex to all -// // numbers: -// // pt index type -// // internalPt 0 1 -// // externalPt0 1 0 -// // externalPt1 2 0 -// // externalPt2 3 0 -// // externalPt3 4 0 -// -// // Result when the points are eventually inserted (example n = 5) -// // Add number_of_vertices() at insertion of first vertex to all -// // numbers: -// // pt index type -// // internalPt0 0 5 -// // internalPt1 1 5 -// // internalPt2 2 5 -// // internalPt3 3 5 -// // internalPt4 4 5 -// // externalPt 5 4 -// -// if (geometryToConformTo_.inside(masterPoint)) -// { -// -// } -// else -// { -// -// } -// -// pts.append(masterPoint); -// indices.append(0); -// types.append(1); -// -// label internalPtIndex = -1; -// -// forAll(tetNorms, nI) -// { -// const vector& n = tetNorms[nI]; -// -// Foam::point reflectedPoint -// = reflectPoint(featPt, masterPoint, n); -// -// pts.append(reflectedPoint); -// indices.append(0); -// types.append(internalPtIndex--); -// } -// } -// } -//} - - -Foam::vector Foam::conformalVoronoiMesh::sharedFaceNormal -( - const extendedFeatureEdgeMesh& feMesh, - const label edgeI, - const label nextEdgeI -) const -{ - const labelList& edgeInormals = feMesh.edgeNormals()[edgeI]; - const labelList& nextEdgeInormals = feMesh.edgeNormals()[nextEdgeI]; - - const vector& A1 = feMesh.normals()[edgeInormals[0]]; - const vector& A2 = feMesh.normals()[edgeInormals[1]]; - - const vector& B1 = feMesh.normals()[nextEdgeInormals[0]]; - const vector& B2 = feMesh.normals()[nextEdgeInormals[1]]; - - const scalar A1B1 = mag(A1 ^ B1); - const scalar A1B2 = mag(A1 ^ B2); - const scalar A2B1 = mag(A2 ^ B1); - const scalar A2B2 = mag(A2 ^ B2); - - if (A1B1 < A1B2 && A1B1 < A2B1 && A1B1 < A2B2) - { - return 0.5*(A1 + B1); - } - else if (A1B2 < A1B1 && A1B2 < A2B1 && A1B2 < A2B2) - { - return 0.5*(A1 + B2); - } - else if (A2B1 < A1B1 && A2B1 < A1B2 && A2B1 < A2B2) - { - return 0.5*(A2 + B1); - } - else - { - return 0.5*(A2 + B2); - } -} - - -Foam::List<Foam::point> Foam::conformalVoronoiMesh::reflectPointInPlanes -( - const Foam::point p, - const DynamicList<autoPtr<plane> >& planes -) const -{ - List<Foam::point> reflectedPoints(planes.size()); - - forAll(planes, planeI) - { - reflectedPoints[planeI] = reflectPointInPlane(p, planes[planeI]()); - } - - return reflectedPoints; -} - - -Foam::point Foam::conformalVoronoiMesh::reflectPointInPlane -( - const Foam::point p, - const plane& planeN -) const -{ - const vector reflectedPtDir = p - planeN.nearestPoint(p); - - if ((planeN.normal() & reflectedPtDir) > 0) - { - return p - 2.0*planeN.distance(p)*planeN.normal(); - } - else - { - return p + 2.0*planeN.distance(p)*planeN.normal(); - } -} diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshI.H deleted file mode 100644 index ca09259e0df443d538db00703e41926a703cee3f..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshI.H +++ /dev/null @@ -1,692 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -inline Foam::scalar Foam::conformalVoronoiMesh::defaultCellSize() const -{ - return cvMeshControls().defaultCellSize(); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::targetCellSize -( - const Foam::point& pt -) const -{ - return cellShapeControls().cellSize(pt); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::averageCellSize -( - const Vertex_handle& vA, - const Vertex_handle& vB -) const -{ - // Arithmetic mean - // return 0.5*(vA->targetCellSize() + vB->targetCellSize()); - - // Geometric mean - return sqrt(vA->targetCellSize()*vB->targetCellSize()); - - // Harmonic mean - // return - // 2.0*(vA->targetCellSize()*vB->targetCellSize()) - // /(vA->targetCellSize() + vB->targetCellSize()); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::averageAnyCellSize -( - const Vertex_handle& vA, - const Vertex_handle& vB -) const -{ - if - ( - (!vA->internalOrBoundaryPoint() || vA->referred()) - && (!vB->internalOrBoundaryPoint() || vB->referred()) - ) - { - // There are no internalOrBoundaryPoints available, determine - // size from scratch - - // Geometric mean - return sqrt - ( - targetCellSize(topoint(vA->point())) - *targetCellSize(topoint(vB->point())) - ); - } - else if (!vB->internalOrBoundaryPoint() || vB->referred()) - { - return vA->targetCellSize(); - } - else if (!vA->internalOrBoundaryPoint() || vA->referred()) - { - return vB->targetCellSize(); - } - - return averageCellSize(vA, vB); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::averageAnyCellSize -( - const Delaunay::Finite_facets_iterator& fit -) const -{ - // Arithmetic mean - - scalar sizeSum = 0; - - label nProducts = 0; - - const Cell_handle c(fit->first); - const int oppositeVertex = fit->second; - - for (label i = 0; i < 3; i++) - { - Vertex_handle v = c->vertex(vertex_triple_index(oppositeVertex, i)); - - if (v->internalOrBoundaryPoint() && !v->referred()) - { - - sizeSum += v->targetCellSize(); - - nProducts++; - } - } - - if (nProducts < 1) - { - // There are no internalOrBoundaryPoints available, determine - // size from scratch - - for (label i = 0; i < 3; i++) - { - Vertex_handle v = c->vertex(vertex_triple_index(oppositeVertex, i)); - - sizeSum += targetCellSize(topoint(v->point())); - } - - nProducts = 3; - } - - if (sizeSum < 0) - { - WarningIn("averageAnyCellSize(const Delaunay::Finite_facets_iterator&)") - << "sizeSum = " << sizeSum - << endl; - - return 0; - } - - return pow(sizeSum, (1.0/nProducts)); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::pointPairDistance -( - const Foam::point& pt -) const -{ - return targetCellSize(pt)*cvMeshControls().pointPairDistanceCoeff(); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::mixedFeaturePointDistance -( - const Foam::point& pt -) const -{ - return - pointPairDistance(pt) - *cvMeshControls().mixedFeaturePointPPDistanceCoeff(); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::featurePointExclusionDistanceSqr -( - const Foam::point& pt -) const -{ - return - sqr - ( - targetCellSize(pt) - *cvMeshControls().featurePointExclusionDistanceCoeff() - ); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::featureEdgeExclusionDistanceSqr -( - const Foam::point& pt -) const -{ - return - sqr - ( - targetCellSize(pt) - *cvMeshControls().featureEdgeExclusionDistanceCoeff() - ); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::surfacePtExclusionDistanceSqr -( - const Foam::point& pt -) const -{ - return - sqr - ( - targetCellSize(pt) - *cvMeshControls().surfacePtExclusionDistanceCoeff() - ); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::surfaceSearchDistanceSqr -( - const Foam::point& pt -) const -{ - return - sqr(targetCellSize(pt)*cvMeshControls().surfaceSearchDistanceCoeff()); -} - - -inline Foam::scalar Foam::conformalVoronoiMesh::maxSurfaceProtrusion -( - const Foam::point& pt -) const -{ - return targetCellSize(pt)*cvMeshControls().maxSurfaceProtrusionCoeff(); -} - - -inline bool Foam::conformalVoronoiMesh::insertPoint -( - const Foam::point& p, - const indexedVertexEnum::vertexType type -) -{ - return insertPoint(toPoint<Point>(p), type); -} - - -inline bool Foam::conformalVoronoiMesh::insertPoint -( - const Point& P, - const indexedVertexEnum::vertexType type -) -{ - uint nVert = number_of_vertices(); - - Vertex_handle vh = insert(P); - - bool pointInserted = true; - - if (nVert == number_of_vertices()) - { - Pout<< "Failed to insert point : " << topoint(P) - << " of type " << type << endl; - pointInserted = false; - } - else - { - vh->index() = getNewVertexIndex(); - vh->type() = type; - } - - return pointInserted; -} - - -inline bool Foam::conformalVoronoiMesh::insertReferredPoint(const Vb& P) -{ - return insertReferredPoint(P.point(), P.index(), P.type(), P.procIndex()); -} - - -inline bool Foam::conformalVoronoiMesh::insertReferredPoint -( - const Foam::point& p, - const label index, - const indexedVertexEnum::vertexType type, - const label processor -) -{ - return insertReferredPoint(toPoint<Point>(p), index, type, processor); -} - - -inline bool Foam::conformalVoronoiMesh::insertReferredPoint -( - const Point& P, - const label index, - const indexedVertexEnum::vertexType type, - const label processor -) -{ - uint nVert = number_of_vertices(); - - Vertex_handle vh = insert(P); - - bool pointInserted = true; - - if (nVert == number_of_vertices()) - { - Pout<< "Failed to insert point " << topoint(P) - << " type: " << type << " index: " << index - << " proc: " << processor << endl; - pointInserted = false; - } - else - { - vh->index() = index; - vh->type() = type; - vh->procIndex() = processor; - } - - return pointInserted; -} - - -inline void Foam::conformalVoronoiMesh::createPointPair -( - const scalar ppDist, - const Foam::point& surfPt, - const vector& n, - DynamicList<Vb>& pts -) -{ - vector ppDistn = ppDist*n; - - pts.append - ( - Vb - ( - surfPt - ppDistn, - Vb::vtInternalSurface - ) - ); - - pts.append - ( - Vb - ( - surfPt + ppDistn, - Vb::vtExternalSurface - ) - ); -} - - -inline Foam::point Foam::conformalVoronoiMesh::perturbPoint -( - const Foam::point& pt -) const -{ - Foam::point perturbedPt(pt); - -// vector delta(xR/ni, yR/nj, zR/nk); -// scalar pert = randomPerturbationCoeff*cmptMin(delta); - - scalar pert = 1e-12*defaultCellSize(); - - perturbedPt.x() += pert*(rndGen_.scalar01() - 0.5); - perturbedPt.y() += pert*(rndGen_.scalar01() - 0.5); - perturbedPt.z() += pert*(rndGen_.scalar01() - 0.5); - - return perturbedPt; -} - - -inline void Foam::conformalVoronoiMesh::createBafflePointPair -( - const scalar ppDist, - const Foam::point& surfPt, - const vector& n, - DynamicList<Vb>& pts -) -{ - vector ppDistn = ppDist*n; - - pts.append - ( - Vb(surfPt - ppDistn, Vb::vtInternalSurface) - ); - - pts.append - ( - Vb(surfPt + ppDistn, Vb::vtInternalSurface) - ); -} - - -inline bool Foam::conformalVoronoiMesh::isPointPair -( - const Vertex_handle& vA, - const Vertex_handle& vB -) const -{ - // Want to do this topologically, but problem if vertices are redistributed - // so that one of the point pair is one processor and the other is on - // another. - - const Foam::point& ptA = topoint(vA->point()); - const Foam::point& ptB = topoint(vB->point()); - - if - ( - ( - vA->type() == Vb::vtInternalSurface - && vB->type() == Vb::vtExternalSurface - ) - || - ( - vB->type() == Vb::vtInternalSurface - && vA->type() == Vb::vtExternalSurface - ) - || - ( - vA->type() == Vb::vtInternalFeatureEdge - && vB->type() == Vb::vtExternalFeatureEdge - ) - || - ( - vB->type() == Vb::vtInternalFeatureEdge - && vA->type() == Vb::vtExternalFeatureEdge - ) - || - ( - vA->type() == Vb::vtInternalSurface - && vB->type() == Vb::vtExternalFeatureEdge - ) - || - ( - vB->type() == Vb::vtInternalSurface - && vA->type() == Vb::vtExternalFeatureEdge - ) - || - ( - vA->type() == Vb::vtExternalSurface - && vB->type() == Vb::vtInternalFeatureEdge - ) - || - ( - vB->type() == Vb::vtExternalSurface - && vA->type() == Vb::vtInternalFeatureEdge - ) - ) - { - const scalar distSqr = magSqr(ptA - ptB); - - const scalar ppDistSqr = sqr(2*pointPairDistance(0.5*(ptA + ptB))); - - if (distSqr > 1.001*ppDistSqr) - { - return false; - } - } - - return true; -} - - -inline bool Foam::conformalVoronoiMesh::isBoundaryDualFace -( - const Delaunay::Finite_edges_iterator& eit -) const -{ - Cell_handle c = eit->first; - Vertex_handle vA = c->vertex(eit->second); - Vertex_handle vB = c->vertex(eit->third); - -// if (vA->internalBoundaryPoint() && vB->externalBoundaryPoint()) -// { -// if (vA->index() == vB->index() - 1) -// { -// return true; -// } -// } -// else if (vA->externalBoundaryPoint() && vB->internalBoundaryPoint()) -// { -// if (vA->index() == vB->index() + 1) -// { -// return true; -// } -// } -// -// return false; - - // A dual face on the boundary will result from one Dv inside and - // one outside - return - ( - ( - (vA->internalOrBoundaryPoint() && !vA->referred()) - || (vB->internalOrBoundaryPoint() && !vB->referred()) - ) - && ( - !vA->internalOrBoundaryPoint() - || !vB->internalOrBoundaryPoint() - ) - ); -} - - -inline Foam::List<bool> Foam::conformalVoronoiMesh::dualFaceBoundaryPoints -( - const Delaunay::Finite_edges_iterator& eit -) const -{ - Cell_circulator ccStart = incident_cells(*eit); - Cell_circulator cc1 = ccStart; - Cell_circulator cc2 = cc1; - - // Advance the second circulator so that it always stays on the next - // cell around the edge; - cc2++; - - DynamicList<bool> tmpFaceBoundaryPoints; - - do - { - label cc1I = cc1->cellIndex(); - - label cc2I = cc2->cellIndex(); - - if (cc1I != cc2I) - { - if (cc1->boundaryDualVertex()) - { - tmpFaceBoundaryPoints.append(true); - } - else - { - tmpFaceBoundaryPoints.append(false); - } - } - - cc1++; - - cc2++; - - } while (cc1 != ccStart); - - return tmpFaceBoundaryPoints; -} - - -inline Foam::List<Foam::label> Foam::conformalVoronoiMesh::processorsAttached -( - const Delaunay::Finite_facets_iterator& fit -) const -{ - DynamicList<label> procsAttached(8); - - const Cell_handle c1(fit->first); - const int oppositeVertex = fit->second; - const Cell_handle c2(c1->neighbor(oppositeVertex)); - - FixedList<label, 4> c1Procs(c1->processorsAttached()); - - FixedList<label, 4> c2Procs(c2->processorsAttached()); - - forAll(c1Procs, aPI) - { - if (findIndex(procsAttached, c1Procs[aPI] == -1)) - { - procsAttached.append(c1Procs[aPI]); - } - - if (findIndex(procsAttached, c2Procs[aPI] == -1)) - { - procsAttached.append(c2Procs[aPI]); - } - } - - return List<label>(procsAttached); -} - - -inline bool Foam::conformalVoronoiMesh::isParallelDualEdge -( - const Delaunay::Finite_facets_iterator& fit -) const -{ - const Cell_handle c1(fit->first); - const int oppositeVertex = fit->second; - - return - ( - c1->vertex(vertex_triple_index(oppositeVertex, 0))->referred() - || c1->vertex(vertex_triple_index(oppositeVertex, 1))->referred() - || c1->vertex(vertex_triple_index(oppositeVertex, 2))->referred() - ); -} - - -inline bool Foam::conformalVoronoiMesh::isProcBoundaryEdge -( - const Delaunay::Finite_edges_iterator& eit -) const -{ - bool isProcBoundaryEdge = false; - - Cell_handle c = eit->first; - Vertex_handle vA = c->vertex(eit->second); - Vertex_handle vB = c->vertex(eit->third); - - if - ( - ( - (vA->referred() && !vB->referred()) - || (vB->referred() && !vA->referred()) - ) - && vA->internalOrBoundaryPoint() - && vB->internalOrBoundaryPoint() - ) - { - isProcBoundaryEdge = true; - } - - return isProcBoundaryEdge; -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -inline Foam::conformalVoronoiMesh::CGALVector -Foam::conformalVoronoiMesh::toCGALVector(const Foam::vector& v) const -{ - return CGALVector(v.x(), v.y(), v.z()); -} - - -inline const Foam::Time& Foam::conformalVoronoiMesh::time() const -{ - return runTime_; -} - - -inline Foam::Random& Foam::conformalVoronoiMesh::rndGen() const -{ - return rndGen_; -} - - -inline const Foam::searchableSurfaces& -Foam::conformalVoronoiMesh::allGeometry() const -{ - return allGeometry_; -} - - -inline const Foam::conformationSurfaces& -Foam::conformalVoronoiMesh::geometryToConformTo() const -{ - return geometryToConformTo_; -} - - -inline const Foam::backgroundMeshDecomposition& -Foam::conformalVoronoiMesh::decomposition() const -{ - if (!Pstream::parRun()) - { - FatalErrorIn - ( - "inline const Foam::backgroundMeshDecomposition& " - "Foam::conformalVoronoiMesh::decomposition() const" - ) - << "The backgroundMeshDecomposition cannot be asked for in serial." - << exit(FatalError) << endl; - } - - return decomposition_(); -} - - -inline const Foam::cellShapeControl& -Foam::conformalVoronoiMesh::cellShapeControls() const -{ - return cellShapeControl_; -} - - -inline const Foam::cvControls& -Foam::conformalVoronoiMesh::cvMeshControls() const -{ - return cvMeshControls_; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C deleted file mode 100644 index d5e09a88c31bd0d49f064551f5f0f5f1c33ed794..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshIO.C +++ /dev/null @@ -1,1784 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "conformalVoronoiMesh.H" -#include "IOstreams.H" -#include "OFstream.H" -#include "pointMesh.H" -#include "pointFields.H" -#include "ListOps.H" -#include "polyMeshFilter.H" -#include "polyTopoChange.H" -#include "PrintTable.H" -#include "pointMesh.H" - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::conformalVoronoiMesh::timeCheck -( - const string& description -) const -{ - if (cvMeshControls().timeChecks()) - { - Info<< nl << "--- [ cpuTime " - << runTime_.elapsedCpuTime() << " s, " - << "delta " << runTime_.cpuTimeIncrement()<< " s"; - - if (description != word::null) - { - Info<< ", " << description << " "; - } - else - { - Info<< " "; - } - - Info<< "] --- " << endl; - - memInfo m; - - if (m.valid()) - { - PrintTable<word, label> memoryTable("Memory Usage (kB)"); - - memoryTable.add("mSize", m.size()); - memoryTable.add("mPeak", m.peak()); - memoryTable.add("mRss", m.rss()); - - Info<< incrIndent; - memoryTable.print(Info); - Info<< decrIndent; - } - } -} - - -void Foam::conformalVoronoiMesh::printVertexInfo() const -{ - label nInternal = 0; - label nInternalRef = 0; - label nUnassigned = 0; - label nUnassignedRef = 0; - label nInternalNearBoundary = 0; - label nInternalNearBoundaryRef = 0; - label nInternalSurface = 0; - label nInternalSurfaceRef = 0; - label nInternalFeatureEdge = 0; - label nInternalFeatureEdgeRef = 0; - label nInternalFeaturePoint = 0; - label nInternalFeaturePointRef = 0; - label nExternalSurface = 0; - label nExternalSurfaceRef = 0; - label nExternalFeatureEdge = 0; - label nExternalFeatureEdgeRef = 0; - label nExternalFeaturePoint = 0; - label nExternalFeaturePointRef = 0; - label nFar = 0; - label nReferred = 0; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->type() == Vb::vtInternal) - { - if (vit->referred()) - { - nReferred++; - nInternalRef++; - } - - nInternal++; - } - else if (vit->type() == Vb::vtUnassigned) - { - if (vit->referred()) - { - nReferred++; - nUnassignedRef++; - } - - nUnassigned++; - } - else if (vit->type() == Vb::vtInternalNearBoundary) - { - if (vit->referred()) - { - nReferred++; - nInternalNearBoundaryRef++; - } - - nInternalNearBoundary++; - } - else if (vit->type() == Vb::vtInternalSurface) - { - if (vit->referred()) - { - nReferred++; - nInternalSurfaceRef++; - } - - nInternalSurface++; - } - else if (vit->type() == Vb::vtInternalFeatureEdge) - { - if (vit->referred()) - { - nReferred++; - nInternalFeatureEdgeRef++; - } - - nInternalFeatureEdge++; - } - else if (vit->type() == Vb::vtInternalFeaturePoint) - { - if (vit->referred()) - { - nReferred++; - nInternalFeaturePointRef++; - } - - nInternalFeaturePoint++; - } - else if (vit->type() == Vb::vtExternalSurface) - { - if (vit->referred()) - { - nReferred++; - nExternalSurfaceRef++; - } - - nExternalSurface++; - } - else if (vit->type() == Vb::vtExternalFeatureEdge) - { - if (vit->referred()) - { - nReferred++; - nExternalFeatureEdgeRef++; - } - - nExternalFeatureEdge++; - } - else if (vit->type() == Vb::vtExternalFeaturePoint) - { - if (vit->referred()) - { - nReferred++; - nExternalFeaturePointRef++; - } - - nExternalFeaturePoint++; - } - else if (vit->type() == Vb::vtFar) - { - nFar++; - } - } - - label nTotalVertices - = nUnassigned - + nInternal - + nInternalNearBoundary - + nInternalSurface - + nInternalFeatureEdge - + nInternalFeaturePoint - + nExternalSurface - + nExternalFeatureEdge - + nExternalFeaturePoint - + nFar; - - if (nTotalVertices != label(number_of_vertices())) - { - WarningIn("Foam::conformalVoronoiMesh::printVertexInfo()") - << nTotalVertices << " does not equal " << number_of_vertices() - << endl; - } - - PrintTable<word, label> vertexTable("Vertex Type Information"); - - vertexTable.add("Total", nTotalVertices); - vertexTable.add("Unassigned", nUnassigned); - vertexTable.add("nInternal", nInternal); - vertexTable.add("nInternalNearBoundary", nInternalNearBoundary); - vertexTable.add("nInternalSurface", nInternalSurface); - vertexTable.add("nInternalFeatureEdge", nInternalFeatureEdge); - vertexTable.add("nInternalFeaturePoint", nInternalFeaturePoint); - vertexTable.add("nExternalSurface", nExternalSurface); - vertexTable.add("nExternalFeatureEdge", nExternalFeatureEdge); - vertexTable.add("nExternalFeaturePoint", nExternalFeaturePoint); - vertexTable.add("nFar", nFar); - vertexTable.add("nReferred", nReferred); - - Info<< endl; - vertexTable.print(Info); -} - - -void Foam::conformalVoronoiMesh::drawDelaunayCell -( - Ostream& os, - const Cell_handle& c, - label offset -) const -{ - // Supply offset as tet number - offset *= 4; - - os << "# cell index: " << label(c->cellIndex()) << endl; - - os << "# circumradius " - << mag(c->dual() - topoint(c->vertex(0)->point())) - << endl; - - for (int i = 0; i < 4; i++) - { - os << "# index / type / procIndex: " - << label(c->vertex(i)->index()) << " " - << label(c->vertex(i)->type()) << " " - << label(c->vertex(i)->procIndex()) << endl; - - meshTools::writeOBJ(os, topoint(c->vertex(i)->point())); - } - - os << "f " << 1 + offset << " " << 3 + offset << " " << 2 + offset << nl - << "f " << 2 + offset << " " << 3 + offset << " " << 4 + offset << nl - << "f " << 1 + offset << " " << 4 + offset << " " << 3 + offset << nl - << "f " << 1 + offset << " " << 2 + offset << " " << 4 + offset << endl; - -// os << "# cicumcentre " << endl; - -// meshTools::writeOBJ(os, c->dual()); - -// os << "l " << 1 + offset << " " << 5 + offset << endl; -} - - -void Foam::conformalVoronoiMesh::writePoints -( - const fileName& fName, - const Foam::indexedVertexEnum::vertexType startPointType, - const Foam::indexedVertexEnum::vertexType endPointType -) const -{ - OFstream str(runTime_.path()/fName); - - Pout<< nl << "Writing points of types:" << nl; - - forAllConstIter - ( - HashTable<int>, - Foam::indexedVertexEnum::vertexTypeNames_, - iter - ) - { - if (iter() >= startPointType && iter() <= endPointType) - { - Pout<< " " << iter.key() << nl; - } - } - - Pout<< "to " << str.name() << endl; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->type() >= startPointType && vit->type() <= endPointType) - { - meshTools::writeOBJ(str, topoint(vit->point())); - } - } -} - - -void Foam::conformalVoronoiMesh::writePoints -( - const fileName& fName, - const Foam::indexedVertexEnum::vertexType pointType -) const -{ - writePoints(fName, pointType, pointType); -} - - -void Foam::conformalVoronoiMesh::writeBoundaryPoints -( - const fileName& fName -) const -{ - OFstream str(runTime_.path()/fName); - - Pout<< nl << "Writing boundary points to " << str.name() << endl; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (!vit->internalPoint()) - { - meshTools::writeOBJ(str, topoint(vit->point())); - } - } -} - - -void Foam::conformalVoronoiMesh::writePoints -( - const fileName& fName, - const List<Foam::point>& points -) const -{ - if (points.size()) - { - OFstream str(runTime_.path()/fName); - - Pout<< nl << "Writing " << points.size() << " points from pointList to " - << str.name() << endl; - - forAll(points, p) - { - meshTools::writeOBJ(str, points[p]); - } - } -} - - -void Foam::conformalVoronoiMesh::writePoints -( - const fileName& fName, - const List<Vb>& points -) const -{ - if (points.size()) - { - OFstream str(runTime_.path()/fName); - - Pout<< nl << "Writing " << points.size() << " points from pointList to " - << str.name() << endl; - - forAll(points, p) - { - meshTools::writeOBJ(str, topoint(points[p].point())); - } - } -} - - -void Foam::conformalVoronoiMesh::writeProcessorInterface -( - const fileName& fName, - const faceList& faces -) const -{ - OFstream str(runTime_.path()/fName); - - pointField points(number_of_finite_cells(), point::max); - - for - ( - Delaunay::Finite_cells_iterator cit = finite_cells_begin(); - cit != finite_cells_end(); - ++cit - ) - { - if (!cit->hasFarPoint() && !is_infinite(cit)) - { - points[cit->cellIndex()] = cit->dual(); - } - } - - meshTools::writeOBJ(str, faces, points); -} - - -void Foam::conformalVoronoiMesh::writeInternalDelaunayVertices -( - const fileName& instance -) const -{ - pointField internalDelaunayVertices(number_of_vertices()); - - label vertI = 0; - - for - ( - Delaunay::Finite_vertices_iterator vit = finite_vertices_begin(); - vit != finite_vertices_end(); - ++vit - ) - { - if (vit->internalPoint()) - { - internalDelaunayVertices[vertI++] = topoint(vit->point()); - } - } - - internalDelaunayVertices.setSize(vertI); - - pointIOField internalDVs - ( - IOobject - ( - "internalDelaunayVertices", - instance, - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - internalDelaunayVertices - ); - - Info<< nl - << "Writing " << internalDVs.name() - << " to " << internalDVs.instance() - << endl; - - internalDVs.write(); -} - - -void Foam::conformalVoronoiMesh::writeMesh(const fileName& instance) -{ - writeInternalDelaunayVertices(instance); - - // Per cell the Delaunay vertex - labelList cellToDelaunayVertex; - // Per patch, per face the Delaunay vertex - labelListList patchToDelaunayVertex; - // Per patch the start of the dual faces - labelList dualPatchStarts; - - { - pointField points; - labelList boundaryPts(number_of_finite_cells(), -1); - faceList faces; - labelList owner; - labelList neighbour; - wordList patchTypes; - wordList patchNames; - labelList patchSizes; - labelList procNeighbours; - pointField cellCentres; - - PackedBoolList boundaryFacesToRemove; - - calcDualMesh - ( - points, - boundaryPts, - faces, - owner, - neighbour, - patchTypes, - patchNames, - patchSizes, - dualPatchStarts, - procNeighbours, - cellCentres, - cellToDelaunayVertex, - patchToDelaunayVertex, - boundaryFacesToRemove - ); - - Info<< nl << "Writing polyMesh to " << instance << endl; - - writeMesh - ( - Foam::polyMesh::defaultRegion, - instance, - points, - boundaryPts, - faces, - owner, - neighbour, - patchTypes, - patchNames, - patchSizes, - dualPatchStarts, - procNeighbours, - cellCentres, - boundaryFacesToRemove - ); - } - - if (cvMeshControls().writeTetDualMesh()) - { - // Determine map from Delaunay vertex to Dual mesh - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - // From all Delaunay vertices to cell (positive index) - // or patch face (negative index) - labelList vertexToDualAddressing(number_of_vertices(), 0); - - forAll(cellToDelaunayVertex, cellI) - { - label vertI = cellToDelaunayVertex[cellI]; - - if (vertexToDualAddressing[vertI] != 0) - { - FatalErrorIn("conformalVoronoiMesh::writeMesh(..)") - << "Delaunay vertex " << vertI - << " from cell " << cellI - << " is already mapped to " - << vertexToDualAddressing[vertI] - << exit(FatalError); - } - vertexToDualAddressing[vertI] = cellI+1; - } - - forAll(patchToDelaunayVertex, patchI) - { - const labelList& patchVertices = patchToDelaunayVertex[patchI]; - - forAll(patchVertices, i) - { - label vertI = patchVertices[i]; - - if (vertexToDualAddressing[vertI] > 0) - { - FatalErrorIn("conformalVoronoiMesh::writeMesh(..)") - << "Delaunay vertex " << vertI - << " from patch " << patchI - << " local index " << i - << " is already mapped to cell " - << vertexToDualAddressing[vertI]-1 - << exit(FatalError); - } - - // Vertex might be used by multiple faces. Which one to - // use? For now last one wins. - label dualFaceI = dualPatchStarts[patchI]+i; - vertexToDualAddressing[vertI] = -dualFaceI-1; - } - } - - - // Calculate tet mesh addressing - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - pointField points; - labelList boundaryPts(number_of_finite_cells(), -1); - // From tet point back to Delaunay vertex index - labelList pointToDelaunayVertex; - faceList faces; - labelList owner; - labelList neighbour; - wordList patchTypes; - wordList patchNames; - labelList patchSizes; - labelList patchStarts; - pointField cellCentres; - - calcTetMesh - ( - points, - pointToDelaunayVertex, - faces, - owner, - neighbour, - patchTypes, - patchNames, - patchSizes, - patchStarts - ); - - - - // Calculate map from tet points to dual mesh cells/patch faces - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - labelIOList pointDualAddressing - ( - IOobject - ( - "pointDualAddressing", - instance, - "tetDualMesh"/polyMesh::meshSubDir, - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE, - false - ), - UIndirectList<label> - ( - vertexToDualAddressing, - pointToDelaunayVertex - )() - ); - - label pointI = findIndex(pointDualAddressing, -1); - if (pointI != -1) - { - WarningIn - ( - "conformalVoronoiMesh::writeMesh\n" - "(\n" - " const fileName& instance,\n" - " bool filterFaces\n" - ")\n" - ) << "Delaunay vertex " << pointI - << " does not have a corresponding dual cell." << endl; - } - - Info<< "Writing map from tetDualMesh points to Voronoi mesh to " - << pointDualAddressing.objectPath() << endl; - pointDualAddressing.write(); - - - - // Write tet points corresponding to the Voronoi cell/face centre - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - { - // Read Voronoi mesh - fvMesh mesh - ( - IOobject - ( - Foam::polyMesh::defaultRegion, - instance, - runTime_, - IOobject::MUST_READ - ) - ); - pointIOField dualPoints - ( - IOobject - ( - "dualPoints", - instance, - "tetDualMesh"/polyMesh::meshSubDir, - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE, - false - ), - points - ); - - forAll(pointDualAddressing, pointI) - { - label index = pointDualAddressing[pointI]; - - if (index > 0) - { - label cellI = index-1; - dualPoints[pointI] = mesh.cellCentres()[cellI]; - } - else if (index < 0) - { - label faceI = -index-1; - if (faceI >= mesh.nInternalFaces()) - { - dualPoints[pointI] = mesh.faceCentres()[faceI]; - } - } - } - - Info<< "Writing new tetDualMesh points mapped onto Voronoi mesh to " - << dualPoints.objectPath() << endl - << "Replace the polyMesh/points with these." << endl; - dualPoints.write(); - } - - - labelList procNeighbours(patchNames.size(), -1); - -// Info<< nl << "Writing tetDualMesh to " << instance << endl; - -// writeMesh -// ( -// "tetDualMesh", -// instance, -// points, -// boundaryPts, -// faces, -// owner, -// neighbour, -// patchTypes, -// patchNames, -// patchSizes, -// patchStarts, -// procNeighbours, -// cellCentres -// ); - } -} - - -Foam::autoPtr<Foam::fvMesh> Foam::conformalVoronoiMesh::createDummyMesh -( - const IOobject& io, - const wordList& patchTypes, - const wordList& patchNames, - const labelList& patchSizes, - const labelList& patchStarts, - const labelList& procNeighbours -) const -{ - autoPtr<fvMesh> meshPtr - ( - new fvMesh - ( - io, - xferCopy(pointField()), - xferCopy(faceList()), - xferCopy(cellList()) - ) - ); - fvMesh& mesh = meshPtr(); - - List<polyPatch*> patches(patchStarts.size()); - - forAll(patches, patchI) - { - if (patchTypes[patchI] == processorPolyPatch::typeName) - { - patches[patchI] = new processorPolyPatch - ( - patchNames[patchI], - 0, //patchSizes[p], - 0, //patchStarts[p], - patchI, - mesh.boundaryMesh(), - Pstream::myProcNo(), - procNeighbours[patchI], - coupledPolyPatch::COINCIDENTFULLMATCH - ); - } - else - { - patches[patchI] = polyPatch::New - ( - patchTypes[patchI], - patchNames[patchI], - 0, //patchSizes[p], - 0, //patchStarts[p], - patchI, - mesh.boundaryMesh() - ).ptr(); - } - } - mesh.addFvPatches(patches); - - return meshPtr; -} - - -void Foam::conformalVoronoiMesh::checkProcessorPatchesMatch -( - const wordList& patchTypes, - const labelList& patchSizes, - const labelList& procNeighbours -) const -{ - // Check patch sizes - labelListList procPatchSizes - ( - Pstream::nProcs(), - labelList(Pstream::nProcs(), -1) - ); - - forAll(patchTypes, patchI) - { - if (patchTypes[patchI] == processorPolyPatch::typeName) - { - procPatchSizes[Pstream::myProcNo()][procNeighbours[patchI]] - = patchSizes[patchI]; - } - } - - Pstream::gatherList(procPatchSizes); - - if (Pstream::master()) - { - bool allMatch = true; - - forAll(procPatchSizes, procI) - { - const labelList& patchSizes = procPatchSizes[procI]; - - forAll(patchSizes, patchI) - { - if (patchSizes[patchI] != procPatchSizes[patchI][procI]) - { - allMatch = false; - - Info<< indent << "Patches " << procI << " and " << patchI - << " have different sizes: " << patchSizes[patchI] - << " and " << procPatchSizes[patchI][procI] << endl; - } - } - } - - if (allMatch) - { - Info<< indent << "All processor patches have matching numbers of " - << "faces" << endl; - } - } -} - - -void Foam::conformalVoronoiMesh::reorderPoints -( - pointField& points, - labelList& boundaryPts, - faceList& faces, - const label nInternalFaces -) const -{ - Info<< incrIndent << indent << "Reordering points into internal/external" - << endl; - - labelList oldToNew(points.size(), 0); - - // Find points that are internal - for (label fI = nInternalFaces; fI < faces.size(); ++fI) - { - const face& f = faces[fI]; - - forAll(f, fpI) - { - oldToNew[f[fpI]] = 1; - } - } - - const label nInternalPoints = points.size() - sum(oldToNew); - - label countInternal = 0; - label countExternal = nInternalPoints; - - forAll(points, pI) - { - if (oldToNew[pI] == 0) - { - oldToNew[pI] = countInternal++; - } - else - { - oldToNew[pI] = countExternal++; - } - } - - Info<< indent - << "Number of internal points: " << countInternal << nl - << indent << "Number of external points: " << countExternal - << decrIndent << endl; - - inplaceReorder(oldToNew, points); - inplaceReorder(oldToNew, boundaryPts); - - forAll(faces, fI) - { - face& f = faces[fI]; - - forAll(f, fpI) - { - f[fpI] = oldToNew[f[fpI]]; - } - } -} - - -void Foam::conformalVoronoiMesh::reorderProcessorPatches -( - const word& meshName, - const fileName& instance, - const pointField& points, - faceList& faces, - const wordList& patchTypes, - const wordList& patchNames, - const labelList& patchSizes, - const labelList& patchStarts, - const labelList& procNeighbours -) const -{ - Info<< incrIndent << indent << "Reordering processor patches" << endl; - - Info<< incrIndent; - checkProcessorPatchesMatch(patchTypes, patchSizes, procNeighbours); - - // Create dummy mesh with correct proc boundaries to do sorting - autoPtr<fvMesh> sortMeshPtr - ( - createDummyMesh - ( - IOobject - ( - meshName, - instance, - runTime_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - patchTypes, - patchNames, - patchSizes, - patchStarts, - procNeighbours - ) - ); - const fvMesh& sortMesh = sortMeshPtr(); - - // Change the transform type on processors to coincident full match. -// forAll(sortMesh.boundaryMesh(), patchI) -// { -// const polyPatch& patch = sortMesh.boundaryMesh()[patchI]; -// -// if (isA<processorPolyPatch>(patch)) -// { -// const processorPolyPatch& cpPatch -// = refCast<const processorPolyPatch>(patch); -// -// processorPolyPatch& pPatch -// = const_cast<processorPolyPatch&>(cpPatch); -// -// pPatch.transform() = coupledPolyPatch::COINCIDENTFULLMATCH; -// } -// } - - // Rotation on new faces. - labelList rotation(faces.size(), -1); - labelList faceMap(faces.size(), -1); - - PstreamBuffers pBufs(Pstream::nonBlocking); - - // Send ordering - forAll(sortMesh.boundaryMesh(), patchI) - { - const polyPatch& pp = sortMesh.boundaryMesh()[patchI]; - - if (isA<processorPolyPatch>(pp)) - { - refCast<const processorPolyPatch>(pp).initOrder - ( - pBufs, - primitivePatch - ( - SubList<face> - ( - faces, - patchSizes[patchI], - patchStarts[patchI] - ), - points - ) - ); - } - } - - pBufs.finishedSends(); - - // Receive and calculate ordering - bool anyChanged = false; - - forAll(sortMesh.boundaryMesh(), patchI) - { - const polyPatch& pp = sortMesh.boundaryMesh()[patchI]; - - if (isA<processorPolyPatch>(pp)) - { - labelList patchFaceMap(patchSizes[patchI], -1); - labelList patchFaceRotation(patchSizes[patchI], 0); - - bool changed = refCast<const processorPolyPatch>(pp).order - ( - pBufs, - primitivePatch - ( - SubList<face> - ( - faces, - patchSizes[patchI], - patchStarts[patchI] - ), - points - ), - patchFaceMap, - patchFaceRotation - ); - - if (changed) - { - // Merge patch face reordering into mesh face reordering table - label start = patchStarts[patchI]; - - forAll(patchFaceRotation, patchFaceI) - { - rotation[patchFaceI + start] - = patchFaceRotation[patchFaceI]; - } - - forAll(patchFaceMap, patchFaceI) - { - if (patchFaceMap[patchFaceI] != patchFaceI) - { - faceMap[patchFaceI + start] - = patchFaceMap[patchFaceI] + start; - } - } - - anyChanged = true; - } - } - } - - reduce(anyChanged, orOp<bool>()); - - if (anyChanged) - { - // Rotate faces (rotation is already in new face indices). - label nRotated = 0; - - forAll(rotation, faceI) - { - if (rotation[faceI] == -1) - { - continue; - } - - if (rotation[faceI] != 0) - { - inplaceRotateList<List, label>(faces[faceI], rotation[faceI]); - nRotated++; - } - } - - inplaceReorder(faceMap, faces); - - Info<< indent << returnReduce(nRotated, sumOp<label>()) - << " faces have been rotated" << decrIndent << decrIndent << endl; - } -} - - -void Foam::conformalVoronoiMesh::writeMesh -( - const word& meshName, - const fileName& instance, - pointField& points, - labelList& boundaryPts, - faceList& faces, - labelList& owner, - labelList& neighbour, - const wordList& patchTypes, - const wordList& patchNames, - const labelList& patchSizes, - const labelList& patchStarts, - const labelList& procNeighbours, - const pointField& cellCentres, - const PackedBoolList& boundaryFacesToRemove -) const -{ - if (cvMeshControls().objOutput()) - { - writeObjMesh(points, faces, word(meshName + ".obj")); - } - - reorderPoints(points, boundaryPts, faces, patchStarts[0]); - - if (Pstream::parRun()) - { - reorderProcessorPatches - ( - meshName, - instance, - points, - faces, - patchTypes, - patchNames, - patchSizes, - patchStarts, - procNeighbours - ); - } - - Info<< " Constructing mesh" << endl; - - timeCheck("Before fvMesh construction"); - - fvMesh mesh - ( - IOobject - ( - meshName, - instance, - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - xferMove(points), - xferMove(faces), - xferMove(owner), - xferMove(neighbour) - ); - - Info<< " Adding patches to mesh" << endl; - - List<polyPatch*> patches(patchStarts.size()); - - label nValidPatches = 0; - - forAll(patches, p) - { - if (patchTypes[p] == processorPolyPatch::typeName) - { - // Do not create empty processor patches - if (patchSizes[p] > 0) - { - patches[nValidPatches] = new processorPolyPatch - ( - patchNames[p], - patchSizes[p], - patchStarts[p], - nValidPatches, - mesh.boundaryMesh(), - Pstream::myProcNo(), - procNeighbours[p], - coupledPolyPatch::NOORDERING - ); - - nValidPatches++; - } - } - else - { - patches[nValidPatches] = polyPatch::New - ( - patchTypes[p], - patchNames[p], - patchSizes[p], - patchStarts[p], - nValidPatches, - mesh.boundaryMesh() - ).ptr(); - - nValidPatches++; - } - } - - // Add indirectPatchFaces to a face zone - { - labelList addr(boundaryFacesToRemove.count()); - label count = 0; - - forAll(boundaryFacesToRemove, faceI) - { - if (boundaryFacesToRemove[faceI]) - { - addr[count++] = faceI; - } - } - - label sz = mesh.faceZones().size(); - boolList flip(addr.size(), false); - mesh.faceZones().setSize(sz + 1); - mesh.faceZones().set - ( - sz, - new faceZone - ( - "indirectPatchFaces", - addr, - flip, - sz, - mesh.faceZones() - ) - ); - } - - patches.setSize(nValidPatches); - - mesh.addFvPatches(patches); - - timeCheck("Before fvMesh filtering"); - - autoPtr<polyMeshFilter> meshFilter; - - label nInitialBadFaces = 0; - - if (cvMeshControls().filterEdges()) - { - Info<< nl << "Filtering edges on polyMesh" << nl << endl; - - meshFilter.reset(new polyMeshFilter(mesh)); - - // Filter small edges only. This reduces the number of faces so that - // the face filtering is sped up. - nInitialBadFaces = meshFilter().filterEdges(0); - { - const autoPtr<fvMesh>& newMesh = meshFilter().filteredMesh(); - - polyTopoChange meshMod(newMesh); - - meshMod.changeMesh(mesh, false); - } - } - - if (cvMeshControls().filterFaces()) - { - Info<< nl << "Filtering faces on polyMesh" << nl << endl; - - meshFilter.reset(new polyMeshFilter(mesh)); - - meshFilter().filter(nInitialBadFaces); - { - const autoPtr<fvMesh>& newMesh = meshFilter().filteredMesh(); - - polyTopoChange meshMod(newMesh); - - meshMod.changeMesh(mesh, false); - } - } - - timeCheck("After fvMesh filtering"); - - mesh.setInstance(instance); - - if (!mesh.write()) - { - FatalErrorIn("Foam::conformalVoronoiMesh::writeMesh(..)") - << "Failed writing polyMesh." - << exit(FatalError); - } - else - { - Info<< nl << "Written filtered mesh to " - << mesh.polyMesh::instance() << nl - << endl; - } - - - volTensorField alignments - ( - IOobject - ( - "alignmentsField", - runTime_.timeName(), - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - mesh, - tensor::zero - ); - - forAll(mesh.cellCentres(), pI) - { - Vertex_handle nearV = - nearest_vertex - ( - toPoint<Point>(mesh.cellCentres()[pI]) - ); - alignments[pI] = nearV->alignment(); - } - alignments.write(); - - { - volVectorField alignmentx - ( - IOobject - ( - "alignmentsx", - runTime_.timeName(), - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - mesh, - vector::zero - ); - forAll(alignmentx, aI) - { - alignmentx[aI] = alignments[aI].x(); - } - alignmentx.write(); - } - { - volVectorField alignmenty - ( - IOobject - ( - "alignmentsy", - runTime_.timeName(), - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - mesh, - vector::zero - ); - forAll(alignmenty, aI) - { - alignmenty[aI] = alignments[aI].y(); - } - alignmenty.write(); - } - { - volVectorField alignmentz - ( - IOobject - ( - "alignmentsz", - runTime_.timeName(), - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - mesh, - vector::zero - ); - forAll(alignmentz, aI) - { - alignmentz[aI] = alignments[aI].z(); - } - alignmentz.write(); - } - labelIOList boundaryIOPts - ( - IOobject - ( - "boundaryPoints", - instance, - runTime_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - boundaryPts - ); - - - - - // Dump list of boundary points - forAll(mesh.boundaryMesh(), patchI) - { - const polyPatch& pp = mesh.boundaryMesh()[patchI]; - - if (!isA<coupledPolyPatch>(pp)) - { - forAll(pp, fI) - { - const face& boundaryFace = pp[fI]; - - forAll(boundaryFace, pI) - { - const label boundaryPointI = boundaryFace[pI]; - - boundaryIOPts[boundaryPointI] = boundaryPts[boundaryPointI]; - } - } - } - } - - boundaryIOPts.write(); - -// forAllConstIter(labelHashSet, pointsInPatch, pI) -// { -// const Foam::point& ptMaster = mesh.points()[pI.key()]; -// -// forAllConstIter(labelHashSet, pointsInPatch, ptI) -// { -// if (ptI.key() != pI.key()) -// { -// const Foam::point& ptSlave = mesh.points()[ptI.key()]; -// -// const scalar dist = mag(ptMaster - ptSlave); -// if (ptMaster == ptSlave) -// { -// Pout<< "Point(" << pI.key() << ") " << ptMaster -// << " == " -// << "(" << ptI.key() << ") " << ptSlave -// << endl; -// } -// else if (dist == 0) -// { -// Pout<< "Point(" << pI.key() << ") " << ptMaster -// << " ~= " -// << "(" << ptI.key() << ") " << ptSlave -// << endl; -// } -// } -// } -// } - -// writeCellSizes(mesh); - -// writeCellAlignments(mesh); - -// writeCellCentres(mesh); - -// findRemainingProtrusionSet(mesh); -} - - -void Foam::conformalVoronoiMesh::writeObjMesh -( - const pointField& points, - const faceList& faces, - const fileName& fName -) const -{ - OFstream str(runTime_.path()/fName); - - Pout<< nl << "Writing points and faces to " << str.name() << endl; - - forAll(points, p) - { - meshTools::writeOBJ(str, points[p]); - } - - forAll(faces, f) - { - str<< 'f'; - - const face& fP = faces[f]; - - forAll(fP, p) - { - str<< ' ' << fP[p] + 1; - } - - str<< nl; - } -} - - -void Foam::conformalVoronoiMesh::writeCellSizes -( - const fvMesh& mesh -) const -{ - { - timeCheck("Start writeCellSizes"); - - Info<< nl << "Create targetCellSize volScalarField" << endl; - - volScalarField targetCellSize - ( - IOobject - ( - "targetCellSize", - mesh.polyMesh::instance(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - mesh, - dimensionedScalar("cellSize", dimLength, 0), - zeroGradientFvPatchScalarField::typeName - ); - - scalarField& cellSize = targetCellSize.internalField(); - - const vectorField& C = mesh.cellCentres(); - - forAll(cellSize, i) - { - cellSize[i] = cellShapeControls().cellSize(C[i]); - } - - // Info<< nl << "Create targetCellVolume volScalarField" << endl; - - // volScalarField targetCellVolume - // ( - // IOobject - // ( - // "targetCellVolume", - // mesh.polyMesh::instance(), - // mesh, - // IOobject::NO_READ, - // IOobject::AUTO_WRITE - // ), - // mesh, - // dimensionedScalar("cellVolume", dimLength, 0), - // zeroGradientFvPatchScalarField::typeName - // ); - - // targetCellVolume.internalField() = pow3(cellSize); - - // Info<< nl << "Create actualCellVolume volScalarField" << endl; - - // volScalarField actualCellVolume - // ( - // IOobject - // ( - // "actualCellVolume", - // mesh.polyMesh::instance(), - // mesh, - // IOobject::NO_READ, - // IOobject::AUTO_WRITE - // ), - // mesh, - // dimensionedScalar("cellVolume", dimVolume, 0), - // zeroGradientFvPatchScalarField::typeName - // ); - - // actualCellVolume.internalField() = mesh.cellVolumes(); - - // Info<< nl << "Create equivalentCellSize volScalarField" << endl; - - // volScalarField equivalentCellSize - // ( - // IOobject - // ( - // "equivalentCellSize", - // mesh.polyMesh::instance(), - // mesh, - // IOobject::NO_READ, - // IOobject::AUTO_WRITE - // ), - // mesh, - // dimensionedScalar("cellSize", dimLength, 0), - // zeroGradientFvPatchScalarField::typeName - // ); - - // equivalentCellSize.internalField() = pow - // ( - // actualCellVolume.internalField(), - // 1.0/3.0 - // ); - - targetCellSize.correctBoundaryConditions(); - // targetCellVolume.correctBoundaryConditions(); - // actualCellVolume.correctBoundaryConditions(); - // equivalentCellSize.correctBoundaryConditions(); - - targetCellSize.write(); - // targetCellVolume.write(); - // actualCellVolume.write(); - // equivalentCellSize.write(); - } - - // { - // polyMesh tetMesh - // ( - // IOobject - // ( - // "tetDualMesh", - // runTime_.constant(), - // runTime_, - // IOobject::MUST_READ - // ) - // ); - - // pointMesh ptMesh(tetMesh); - - // pointScalarField ptTargetCellSize - // ( - // IOobject - // ( - // "ptTargetCellSize", - // runTime_.timeName(), - // tetMesh, - // IOobject::NO_READ, - // IOobject::AUTO_WRITE - // ), - // ptMesh, - // dimensionedScalar("ptTargetCellSize", dimLength, 0), - // pointPatchVectorField::calculatedType() - // ); - - // scalarField& cellSize = ptTargetCellSize.internalField(); - - // const vectorField& P = tetMesh.points(); - - // forAll(cellSize, i) - // { - // cellSize[i] = cellShapeControls().cellSize(P[i]); - // } - - // ptTargetCellSize.write(); - // } -} - - -void Foam::conformalVoronoiMesh::writeCellAlignments -( - const fvMesh& mesh -) const -{ -// Info<< nl << "Create cellAlignments volTensorField" << endl; -// -// volTensorField cellAlignments -// ( -// IOobject -// ( -// "cellAlignments", -// mesh.polyMesh::instance(), -// mesh, -// IOobject::NO_READ, -// IOobject::AUTO_WRITE -// ), -// mesh, -// tensor::I, -// zeroGradientFvPatchTensorField::typeName -// ); -// -// tensorField& cellAlignment = cellAlignments.internalField(); -// -// const vectorField& C = mesh.cellCentres(); -// -// vectorField xDir(cellAlignment.size()); -// vectorField yDir(cellAlignment.size()); -// vectorField zDir(cellAlignment.size()); -// -// forAll(cellAlignment, i) -// { -// cellAlignment[i] = cellShapeControls().cellAlignment(C[i]); -// xDir[i] = cellAlignment[i] & vector(1, 0, 0); -// yDir[i] = cellAlignment[i] & vector(0, 1, 0); -// zDir[i] = cellAlignment[i] & vector(0, 0, 1); -// } -// -// OFstream xStr("xDir.obj"); -// OFstream yStr("yDir.obj"); -// OFstream zStr("zDir.obj"); -// -// forAll(xDir, i) -// { -// meshTools::writeOBJ(xStr, C[i], C[i] + xDir[i]); -// meshTools::writeOBJ(yStr, C[i], C[i] + yDir[i]); -// meshTools::writeOBJ(zStr, C[i], C[i] + zDir[i]); -// } -// -// cellAlignments.correctBoundaryConditions(); -// -// cellAlignments.write(); -} - - -void Foam::conformalVoronoiMesh::writeCellCentres -( - const fvMesh& mesh -) const -{ - Info<< "Writing components of cellCentre positions to volScalarFields" - << " ccx, ccy, ccz in " << runTime_.timeName() << endl; - - for (direction i=0; i<vector::nComponents; i++) - { - volScalarField cci - ( - IOobject - ( - "cc" + word(vector::componentNames[i]), - runTime_.timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - mesh.C().component(i) - ); - - cci.write(); - } -} - - -Foam::labelHashSet Foam::conformalVoronoiMesh::findRemainingProtrusionSet -( - const polyMesh& mesh -) const -{ - timeCheck("Start findRemainingProtrusionSet"); - - const polyBoundaryMesh& patches = mesh.boundaryMesh(); - - labelHashSet protrudingBoundaryPoints; - - forAll(patches, patchI) - { - const polyPatch& patch = patches[patchI]; - - forAll(patch.localPoints(), pLPI) - { - label meshPtI = patch.meshPoints()[pLPI]; - - const Foam::point& pt = patch.localPoints()[pLPI]; - - if - ( - geometryToConformTo_.wellOutside - ( - pt, - sqr(targetCellSize(pt)) - ) - ) - { - protrudingBoundaryPoints.insert(meshPtI); - } - } - } - - cellSet protrudingCells - ( - mesh, - "cvMesh_remainingProtrusions", - mesh.nCells()/1000 - ); - - forAllConstIter(labelHashSet, protrudingBoundaryPoints, iter) - { - const label pointI = iter.key(); - const labelList& pCells = mesh.pointCells()[pointI]; - - forAll(pCells, pCI) - { - protrudingCells.insert(pCells[pCI]); - } - } - - label protrudingCellsSize = protrudingCells.size(); - - reduce(protrudingCellsSize, sumOp<label>()); - - if (cvMeshControls().objOutput() && protrudingCellsSize > 0) - { - Info<< nl << "Found " << protrudingCellsSize - << " cells protruding from the surface, writing cellSet " - << protrudingCells.name() - << endl; - - protrudingCells.write(); - } - - return protrudingCells; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCell.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCell.C deleted file mode 100644 index bd4973b32b91f5e81e317fbf6b5d88376a246315..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCell.C +++ /dev/null @@ -1,89 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "indexedCell.H" - -// * * * * * * * * * * * * * * * * IOStream operators * * * * * * * * * * * // - -template<class Gt, class Cb> -Foam::Ostream& Foam::operator<< -( - Ostream& os, - const InfoProxy<CGAL::indexedCell<Gt, Cb> >& p -) -{ - const CGAL::indexedCell<Gt, Cb>& iv = p.t_; - - os << "Cell: "; - - if (iv.index_ == CGAL::indexedCell<Gt, Cb>::ctFar) - { - os << "far"; - } - else if (iv.index_ >= 0) - { - os << iv.index_; - } - else if (iv.index_ == CGAL::indexedCell<Gt, Cb>::ctInternal) - { - os << "internal"; - } - else if (iv.index_ == CGAL::indexedCell<Gt, Cb>::ctSurface) - { - os << "surface"; - } - else if (iv.index_ == CGAL::indexedCell<Gt, Cb>::ctFeatureEdge) - { - os << "featureEdge"; - } - else if (iv.index_ == CGAL::indexedCell<Gt, Cb>::ctFeaturePoint) - { - os << "featurePoint"; - } - else - { - os << "unassigned"; - } - - if (iv.parallelDualVertex()) - { - os << " (processor)"; - } - else - { - os << " (local)"; - } - - os << " filterCount: " << iv.filterCount_ << nl; - os << " " << iv.vertex(0)->info(); - os << " " << iv.vertex(1)->info(); - os << " " << iv.vertex(2)->info(); - os << " " << iv.vertex(3)->info(); - - return os; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCell.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCell.H deleted file mode 100644 index 4669110b6e9edbb95dd1e0a9ea240576f95a49fd..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCell.H +++ /dev/null @@ -1,262 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - indexedCell - -Description - An indexed form of CGAL::Triangulation_cell_base_3<K> used to keep - track of the Delaunay cells (tets) in the tessellation. - -SourceFiles - indexedCellI.H - indexedCell.C - -\*---------------------------------------------------------------------------*/ - -#ifndef indexedCell_H -#define indexedCell_H - -#include <CGAL/Triangulation_3.h> -#include <CGAL/Triangulation_cell_base_with_circumcenter_3.h> -#include "indexedVertex.H" -#include "List.H" -#include "globalIndex.H" -#include "Pstream.H" -#include "Swap.H" -#include "InfoProxy.H" -#include "tetCell.H" -#include "typeInfo.H" -#include "vectorTools.H" -#include "indexedCellEnum.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace CGAL -{ -template<class Gt, class Cb> class indexedCell; -} - -namespace Foam -{ -class Ostream; -template<class Gt, class Cb> Ostream& operator<< -( - Ostream&, - const Foam::InfoProxy<CGAL::indexedCell<Gt, Cb> >& -); -} - - -namespace CGAL -{ - -/*---------------------------------------------------------------------------*\ - Class indexedCell Declaration -\*---------------------------------------------------------------------------*/ - -template -< - class Gt, - class Cb=CGAL::Triangulation_cell_base_with_circumcenter_3<Gt> -> -class indexedCell -: - public Foam::indexedCellEnum, - public Cb -{ - // Private data - - //- The index for this Delaunay tetrahedral cell. Type information is - //- also carried: - - // ctFar : the dual point of this cell does not form part of the - // internal or boundary of the dual mesh - // >=0 : the (local) index of an internal or boundary dual point, - // not on a processor face - // < 0 && > ctFar : the (global) index of a dual point on a processor - // face - - int index_; - - //- The number of times that this Delaunay cell has been limited - // during filtering - int filterCount_; - - - // Private member functions - - //- Same as globallyOrderedCellVertices but without sorting - Foam::tetCell unsortedVertexGlobalIndices - ( - const Foam::globalIndex& globalDelaunayVertexIndices - ) const; - - -public: - - typedef typename Cb::Vertex_handle Vertex_handle; - typedef typename Cb::Cell_handle Cell_handle; - - template < typename TDS2 > - struct Rebind_TDS - { - typedef typename Cb::template Rebind_TDS<TDS2>::Other Cb2; - typedef indexedCell<Gt, Cb2> Other; - }; - - - // Constructors - - inline indexedCell(); - - inline indexedCell - ( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2, - Vertex_handle v3 - ); - - inline indexedCell - ( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2, - Vertex_handle v3, - Cell_handle n0, - Cell_handle n1, - Cell_handle n2, - Cell_handle n3 - ); - - - // Member Functions - - inline int& cellIndex(); - - inline int cellIndex() const; - -#ifdef CGAL_INEXACT - inline const Foam::point& dual(); -#else - inline const Foam::point dual(); -#endif - - inline bool unassigned() const; - - inline int& filterCount(); - - inline int filterCount() const; - - //- Is the Delaunay cell real, i.e. any real vertex - inline bool real() const; - - //- Does the Delaunay cell have a far point - inline bool hasFarPoint() const; - - //- Does the Delaunay cell have a feature point - inline bool hasFeaturePoint() const; - - //- Does the Delaunay cell have a seed point - inline bool hasSeedPoint() const; - - inline bool hasInternalPoint() const; - - //- Does the Dual vertex form part of a processor patch - inline bool parallelDualVertex() const; - - //- Does the Dual vertex form part of a processor patch - inline Foam::label dualVertexMasterProc() const; - - inline Foam::FixedList<Foam::label, 4> processorsAttached() const; - - //- Using the globalIndex object, return a list of four (sorted) global - // Delaunay vertex indices that uniquely identify this tet in parallel - inline Foam::tetCell vertexGlobalIndices - ( - const Foam::globalIndex& globalDelaunayVertexIndices - ) const; - - //- Using the globalIndex object, return a list of four vertices with - // so that the cell has a consistent orientation in parallel. - inline Foam::FixedList<Foam::label, 4> globallyOrderedCellVertices - ( - const Foam::globalIndex& globalDelaunayVertexIndices - ) const; - - //- Is the Delaunay cell part of the final dual mesh, i.e. any vertex - // form part of the internal or boundary definition - inline bool internalOrBoundaryDualVertex() const; - - //- Is the Delaunay cell real or referred (or mixed), i.e. all vertices - // form part of the real or referred internal or boundary definition - inline bool anyInternalOrBoundaryDualVertex() const; - - //- A dual vertex on the boundary will result from a Delaunay cell with - // least one Delaunay vertex outside and at least one inside - inline bool boundaryDualVertex() const; - - //- A dual vertex on a feature edge will result from this Delaunay cell - inline bool featureEdgeDualVertex() const; - - inline bool nearProcBoundary() const; - - inline bool potentialCoplanarCell() const; - - - // Info - - //- Return info proxy. - // Used to print indexedCell information to a stream - Foam::InfoProxy<indexedCell<Gt, Cb> > info() const - { - return *this; - } - - friend Foam::Ostream& Foam::operator<< <Gt, Cb> - ( - Foam::Ostream&, - const Foam::InfoProxy<indexedCell<Gt, Cb> >& - ); - -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace CGAL - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "indexedCellI.H" - -#ifdef NoRepository -# include "indexedCell.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellChecks.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellChecks.C deleted file mode 100644 index 7213739844d2035931f2177751a37ac76311ea1a..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellChecks.C +++ /dev/null @@ -1,128 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "plane.H" -#include "tetrahedron.H" -#include "pointConversion.H" -#include "CGALTriangulation3DKernel.H" - - -template <typename Cell> -Foam::scalar Foam::cvMeshChecks::coplanarTet -( - Cell& c, - const scalar tol -) -{ - tetPointRef tet - ( - topoint(c->vertex(0)->point()), - topoint(c->vertex(1)->point()), - topoint(c->vertex(2)->point()), - topoint(c->vertex(3)->point()) - ); - - const scalar quality = tet.quality(); - - if (quality < tol) - { - return quality; - } - - return 0; - -// plane triPlane -// ( -// topoint(c->vertex(0)->point()), -// topoint(c->vertex(1)->point()), -// topoint(c->vertex(2)->point()) -// ); -// -// const scalar distance = triPlane.distance(topoint(c->vertex(3)->point())); -// -// // Check if the four points are roughly coplanar. If they are then we -// // cannot calculate the circumcentre. Better test might be the volume -// // of the tet. -// if (distance < tol) -// { -// return 0; -// } -// -// return distance; -} - - -template <typename Cell> -bool Foam::cvMeshChecks::closePoints -( - Cell& c, - const scalar tol -) -{ - for (label v = 0; v < 4; ++v) - { - for (label vA = v + 1; vA < 4; ++vA) - { - if - ( - mag - ( - topoint(c->vertex(v)->point()) - - topoint(c->vertex(vA)->point()) - ) - < tol - ) - { - return true; - } - } - } - - return false; -} - - -template <typename Cell> -bool Foam::cvMeshChecks::smallVolume -( - Cell& c, - const scalar tol -) -{ - CGAL::Tetrahedron_3<baseK> tet - ( - c->vertex(0)->point(), - c->vertex(1)->point(), - c->vertex(2)->point(), - c->vertex(3)->point() - ); - - if (tet.volume() < tol) - { - return true; - } - - return false; -} diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellChecks.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellChecks.H deleted file mode 100644 index c040eafab67c1b07447377de165db13fb32b7dce..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellChecks.H +++ /dev/null @@ -1,77 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#ifndef indexedCellChecks_H -#define indexedCellChecks_H - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -namespace cvMeshChecks -{ - - template <typename Cell> - scalar coplanarTet - ( - Cell& c, - const scalar tol = 1e-12 - ); - - template <typename Cell> - bool closePoints - ( - Cell& c, - const scalar tol = 1e-12 - ); - - template <typename Cell> - bool smallVolume - ( - Cell& c, - const scalar tol = 0.0 - ); - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace cvMeshChecks - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#ifdef NoRepository -# include "indexedCellChecks.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.C deleted file mode 100644 index 5d7d953948bb73934c550843bb1371d068a3b249..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.C +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "indexedCellEnum.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -template<> -const char* -Foam::NamedEnum<Foam::indexedCellEnum::cellTypes, 6>::names[] = -{ - "Unassigned", - "Internal", - "Surface", - "FeatureEdge", - "FeaturePoint", - "Far" -}; - -const Foam::NamedEnum<Foam::indexedCellEnum::cellTypes, 6> -cellTypesNames_; - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.H deleted file mode 100644 index 5ccef621e74d1bf80816da1fd6380a77779fac15..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.H +++ /dev/null @@ -1,80 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - indexedCellEnum - -Description - -SourceFiles - indexedCellEnum.C - -\*---------------------------------------------------------------------------*/ - -#ifndef indexedCellEnum_H -#define indexedCellEnum_H - -#include "NamedEnum.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -class indexedCellEnum -{ -public: - - - enum cellTypes - { - ctUnassigned = INT_MIN, - ctFar = INT_MIN + 1, - ctInternal = INT_MIN + 2, - ctSurface = INT_MIN + 3, - ctFeatureEdge = INT_MIN + 4, - ctFeaturePoint = INT_MIN + 5 - }; - - static const Foam::NamedEnum<cellTypes, 6> cellTypesNames_; -}; - - -template<> -inline bool contiguous<indexedCellEnum>() -{ - return true; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellI.H deleted file mode 100644 index 83434ba2f12712085d2ca796067708d195eddc8a..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellI.H +++ /dev/null @@ -1,538 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -//#include "indexedCellChecks.H" - -template<class Gt, class Cb> -Foam::tetCell CGAL::indexedCell<Gt, Cb>::unsortedVertexGlobalIndices -( - const Foam::globalIndex& globalDelaunayVertexIndices -) const -{ - Foam::tetCell tVGI; - - for (int i = 0; i < 4; i++) - { - Vertex_handle v = this->vertex(i); - - // Finding the global index of each Delaunay vertex - tVGI[i] = globalDelaunayVertexIndices.toGlobal - ( - Foam::Pstream::myProcNo(), - v->index() - ); - } - - return tVGI; -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class Gt, class Cb> -CGAL::indexedCell<Gt, Cb>::indexedCell() -: - Cb(), - index_(ctUnassigned), - filterCount_(0) -{} - - -template<class Gt, class Cb> -CGAL::indexedCell<Gt, Cb>::indexedCell -( - Vertex_handle v0, Vertex_handle v1, Vertex_handle v2, Vertex_handle v3 -) -: - Cb(v0, v1, v2, v3), - index_(ctUnassigned), - filterCount_(0) -{} - - -template<class Gt, class Cb> -CGAL::indexedCell<Gt, Cb>::indexedCell -( - Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2, - Vertex_handle v3, - Cell_handle n0, - Cell_handle n1, - Cell_handle n2, - Cell_handle n3 -) -: - Cb(v0, v1, v2, v3, n0, n1, n2, n3), - index_(ctUnassigned), - filterCount_(0) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template<class Gt, class Cb> -int& CGAL::indexedCell<Gt, Cb>::cellIndex() -{ - return index_; -} - - -template<class Gt, class Cb> -int CGAL::indexedCell<Gt, Cb>::cellIndex() const -{ - return index_; -} - - -#ifdef CGAL_INEXACT - template<class Gt, class Cb> - const Foam::point& CGAL::indexedCell<Gt, Cb>::dual() - { - // if (Foam::cvMeshChecks::coplanarTet(*this, 1e-20) == 0) - // { - // Do exact calc - // } - - return reinterpret_cast<const Foam::point&>(this->circumcenter()); - } -#else - template<class Gt, class Cb> - const Foam::point CGAL::indexedCell<Gt, Cb>::dual() - { - const typename Gt::Point_3& P = this->circumcenter(); - - return Foam::point - ( - CGAL::to_double(P.x()), - CGAL::to_double(P.y()), - CGAL::to_double(P.z()) - ); - } -#endif - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::unassigned() const -{ - return index_ == ctUnassigned; -} - - -template<class Gt, class Cb> -inline int& CGAL::indexedCell<Gt, Cb>::filterCount() -{ - return filterCount_; -} - - -template<class Gt, class Cb> -inline int CGAL::indexedCell<Gt, Cb>::filterCount() const -{ - return filterCount_; -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::real() const -{ - return - ( - ( - this->vertex(0)->real() - || this->vertex(1)->real() - || this->vertex(2)->real() - || this->vertex(3)->real() - ) - && - !( - this->vertex(0)->farPoint() - || this->vertex(1)->farPoint() - || this->vertex(2)->farPoint() - || this->vertex(3)->farPoint() - ) - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::hasFarPoint() const -{ - return - ( - this->vertex(0)->farPoint() - || this->vertex(1)->farPoint() - || this->vertex(2)->farPoint() - || this->vertex(3)->farPoint() - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::hasFeaturePoint() const -{ - return - ( - this->vertex(0)->featurePoint() - || this->vertex(1)->featurePoint() - || this->vertex(2)->featurePoint() - || this->vertex(3)->featurePoint() - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::hasSeedPoint() const -{ - return - ( - this->vertex(0)->seedPoint() - || this->vertex(1)->seedPoint() - || this->vertex(2)->seedPoint() - || this->vertex(3)->seedPoint() - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::hasInternalPoint() const -{ - return - ( - this->vertex(0)->internalPoint() - || this->vertex(1)->internalPoint() - || this->vertex(2)->internalPoint() - || this->vertex(3)->internalPoint() - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::parallelDualVertex() const -{ - return - ( - !this->hasFarPoint() - && - ( - this->vertex(0)->referred() - || this->vertex(1)->referred() - || this->vertex(2)->referred() - || this->vertex(3)->referred() - ) - && - ( - this->vertex(0)->real() - || this->vertex(1)->real() - || this->vertex(2)->real() - || this->vertex(3)->real() - ) - ); -} - - -template<class Gt, class Cb> -inline Foam::label CGAL::indexedCell<Gt, Cb>::dualVertexMasterProc() const -{ - if (!parallelDualVertex()) - { - return -1; - } - - // The master processor is the lowest numbered of the four on this tet. - - int masterProc = Foam::Pstream::nProcs() + 1; - - for (int i = 0; i < 4; i++) - { - if (this->vertex(i)->referred()) - { - masterProc = min(masterProc, this->vertex(i)->procIndex()); - } - else - { - masterProc = min(masterProc, Foam::Pstream::myProcNo()); - } - } - - return masterProc; -} - - -template<class Gt, class Cb> -inline Foam::FixedList<Foam::label, 4> -CGAL::indexedCell<Gt, Cb>::processorsAttached() const -{ - if (!parallelDualVertex()) - { - return Foam::FixedList<Foam::label, 4>(Foam::Pstream::myProcNo()); - } - - Foam::FixedList<Foam::label, 4> procsAttached - ( - Foam::Pstream::myProcNo() - ); - - for (int i = 0; i < 4; i++) - { - if (this->vertex(i)->referred()) - { - procsAttached[i] = this->vertex(i)->procIndex(); - } - } - - return procsAttached; -} - - -template<class Gt, class Cb> -inline Foam::tetCell CGAL::indexedCell<Gt, Cb>::vertexGlobalIndices -( - const Foam::globalIndex& globalDelaunayVertexIndices -) const -{ - // tetVertexGlobalIndices - Foam::tetCell tVGI - = unsortedVertexGlobalIndices(globalDelaunayVertexIndices); - - // bubble sort - for (int i = 0; i < tVGI.size(); i++) - { - for (int j = tVGI.size() - 1 ; j > i; j--) - { - if (tVGI[j - 1] > tVGI[j]) - { - Foam::Swap(tVGI[j - 1], tVGI[j]); - } - } - } - - return tVGI; -} - - -template<class Gt, class Cb> -inline Foam::FixedList<Foam::label, 4> -CGAL::indexedCell<Gt, Cb>::globallyOrderedCellVertices -( - const Foam::globalIndex& globalDelaunayVertexIndices -) const -{ - // tetVertexGlobalIndices - Foam::tetCell tVGI - = unsortedVertexGlobalIndices(globalDelaunayVertexIndices); - - Foam::FixedList<Foam::label, 4> vertexMap(Foam::identity(4)); - - // bubble sort - for (int i = 0; i < tVGI.size(); i++) - { - for (int j = tVGI.size() - 1 ; j > i; j--) - { - if (tVGI[j - 1] > tVGI[j]) - { - Foam::Swap(tVGI[j - 1], tVGI[j]); - Foam::Swap(vertexMap[j - 1], vertexMap[j]); - } - } - } - - for (int i = 0; i < 4; i++) - { - tVGI[i] = vertexMap[i]; - } - - return tVGI; -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::internalOrBoundaryDualVertex() const -{ - return - ( - this->vertex(0)->internalOrBoundaryPoint() - || this->vertex(1)->internalOrBoundaryPoint() - || this->vertex(2)->internalOrBoundaryPoint() - || this->vertex(3)->internalOrBoundaryPoint() - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::anyInternalOrBoundaryDualVertex() const -{ - return - ( - this->vertex(0)->internalOrBoundaryPoint() - || this->vertex(0)->externalBoundaryPoint() - || this->vertex(1)->internalOrBoundaryPoint() - || this->vertex(1)->externalBoundaryPoint() - || this->vertex(2)->internalOrBoundaryPoint() - || this->vertex(2)->externalBoundaryPoint() - || this->vertex(3)->internalOrBoundaryPoint() - || this->vertex(3)->externalBoundaryPoint() - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::boundaryDualVertex() const -{ - return - ( - ( - this->vertex(0)->internalBoundaryPoint() - || this->vertex(1)->internalBoundaryPoint() - || this->vertex(2)->internalBoundaryPoint() - || this->vertex(3)->internalBoundaryPoint() - ) - && ( - this->vertex(0)->externalBoundaryPoint() - || this->vertex(1)->externalBoundaryPoint() - || this->vertex(2)->externalBoundaryPoint() - || this->vertex(3)->externalBoundaryPoint() - ) - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::featureEdgeDualVertex() const -{ - return - ( - this->vertex(0)->featureEdgePoint() - && this->vertex(1)->featureEdgePoint() - && this->vertex(2)->featureEdgePoint() - && this->vertex(3)->featureEdgePoint() - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::nearProcBoundary() const -{ - return - ( - this->vertex(0)->nearProcBoundary() - || this->vertex(1)->nearProcBoundary() - || this->vertex(2)->nearProcBoundary() - || this->vertex(3)->nearProcBoundary() - ); -} - - -template<class Gt, class Cb> -inline bool CGAL::indexedCell<Gt, Cb>::potentialCoplanarCell() const -{ - Foam::label nMasters = 0; - Foam::label nSlaves = 0; - - Vertex_handle vM[2]; - Vertex_handle vS[2]; - - for (Foam::label i = 0; i < 4; ++i) - { - Vertex_handle v = this->vertex(i); - - if (v->internalBoundaryPoint()) - { - vM[nMasters] = v; - nMasters++; - } - - if (v->externalBoundaryPoint()) - { - vS[nSlaves] = v; - nSlaves++; - } - } - - Foam::label nPairs = 0; - - if (nMasters == 2 && nSlaves == 2) - { - Foam::vector vp0(Foam::vector::zero); - Foam::vector vp1(Foam::vector::zero); - - if - ( - vM[0]->type() == vS[0]->index() - && vM[0]->index() == vS[0]->type() - ) - { - vp0 = reinterpret_cast<const Foam::point&>(vM[0]->point()) - - reinterpret_cast<const Foam::point&>(vS[0]->point()); - nPairs++; - } - else if - ( - vM[0]->type() == vS[1]->index() - && vM[0]->index() == vS[1]->type() - ) - { - vp0 = reinterpret_cast<const Foam::point&>(vM[0]->point()) - - reinterpret_cast<const Foam::point&>(vS[1]->point()); - nPairs++; - } - - if - ( - vM[1]->type() == vS[0]->index() - && vM[1]->index() == vS[0]->type() - ) - { - vp1 = reinterpret_cast<const Foam::point&>(vM[1]->point()) - - reinterpret_cast<const Foam::point&>(vS[0]->point()); - nPairs++; - } - else if - ( - vM[1]->type() == vS[1]->index() - && vM[1]->index() == vS[1]->type() - ) - { - vp1 = reinterpret_cast<const Foam::point&>(vM[1]->point()) - - reinterpret_cast<const Foam::point&>(vS[1]->point()); - nPairs++; - } - - if (nPairs == 2) - { - if (Foam::vectorTools::areParallel(vp0, vp1)) - { - Foam::Pout<< "PARALLEL" << Foam::endl; - - return true; - } - } - } - - return false; -} - - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.C deleted file mode 100644 index 5aa39368740d93ff1203ba896c98a6364755e512..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.C +++ /dev/null @@ -1,185 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "indexedVertex.H" -#include "point.H" -#include "Istream.H" -#include "Ostream.H" -#include "OStringStream.H" -#include "IStringStream.H" - -// * * * * * * * * * * * * * * * * IOStream operators * * * * * * * * * * * // - -Foam::Istream& Foam::operator>> -( - Istream& is, - CGAL::Point_3<baseK>& p -) -{ -// string data(is); -// -// std::istringstream stdIs; -// -// CGAL::set_ascii_mode(stdIs); -// -// stdIs.str(data); -// -// CGAL::Gmpz xNumer, xDenom; -// CGAL::Gmpz yNumer, yDenom; -// CGAL::Gmpz zNumer, zDenom; -// -// stdIs >> xNumer >> xDenom >> yNumer >> yDenom >> zNumer >> zDenom; -// -// CGAL::Gmpq x(xNumer, xDenom); -// CGAL::Gmpq y(yNumer, yDenom); -// CGAL::Gmpq z(zNumer, zDenom); -// -// p = CGAL::Point_3<baseK> -// ( -// CGAL::to_double(x), -// CGAL::to_double(y), -// CGAL::to_double(z) -// ); - - Foam::point pt; - - is >> pt.x() >> pt.y() >> pt.z(); - - p = CGAL::Point_3<baseK> - ( - pt.x(), - pt.y(), - pt.z() - ); - - return is; -} - - -Foam::Ostream& Foam::operator<< -( - Ostream& os, - const CGAL::Point_3<baseK>& p -) -{ -// CGAL::Gmpq x(CGAL::to_double(p.x())); -// CGAL::Gmpq y(CGAL::to_double(p.y())); -// CGAL::Gmpq z(CGAL::to_double(p.z())); -// -// std::ostringstream stdOs; -// -// CGAL::set_ascii_mode(stdOs); -// -// stdOs<< x.numerator() << ' ' << x.denominator() << ' ' -// << y.numerator() << ' ' << y.denominator() << ' ' -// << z.numerator() << ' ' << z.denominator(); -// -// os << stdOs.str(); - - os << CGAL::to_double(p.x()) << ' ' - << CGAL::to_double(p.y()) << ' ' - << CGAL::to_double(p.z()); - - return os; -} - - -template<class Gt, class Vb> -Foam::Ostream& Foam::operator<< -( - Ostream& os, - const CGAL::indexedVertex<Gt, Vb>& p -) -{ - os << p.point() - << p.index() - << static_cast<int>(p.type()) - << p.procIndex() - << p.alignment() - << p.targetCellSize(); - - return os; -} - - -template<class Gt, class Vb> -Foam::Istream& Foam::operator>> -( - Istream& is, - CGAL::indexedVertex<Gt, Vb>& p -) -{ - is >> p.point() - >> p.index(); - - int type; - is >> type; - - p.type() = static_cast<Foam::indexedVertexEnum::vertexType>(type); - - is >> p.procIndex() - >> p.alignment() - >> p.targetCellSize(); - - return is; -} - - -template<class Gt, class Vb> -Foam::Ostream& Foam::operator<< -( - Ostream& os, - const InfoProxy<CGAL::indexedVertex<Gt, Vb> >& p -) -{ - const CGAL::indexedVertex<Gt, Vb>& iv = p.t_; - - const Foam::point pt - ( - CGAL::to_double(iv.point().x()), - CGAL::to_double(iv.point().y()), - CGAL::to_double(iv.point().z()) - ); - - string referred - ( - Pstream::myProcNo() == iv.processor_ - ? string(" (local)") - : string(" (from " + name(iv.processor_) + ")") - ); - - os << iv.index_ << " " - << CGAL::indexedVertex<Gt, Vb>::vertexTypeNames_[iv.type_] - << " at:" << pt - << " size:" << iv.targetCellSize_ - << " alignment:" << iv.alignment_ - << referred.c_str() - << endl; - - return os; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.H deleted file mode 100644 index f39e90761d0666415b2ab03878a65addf72d2744..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.H +++ /dev/null @@ -1,354 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - indexedVertex - -Description - An indexed form of CGAL::Triangulation_vertex_base_3<K> used to keep - track of the Delaunay vertices in the tessellation. - -SourceFiles - indexedVertexI.H - indexedVertex.C - -\*---------------------------------------------------------------------------*/ - -#ifndef indexedVertex_H -#define indexedVertex_H - -#include <CGAL/Triangulation_3.h> -#include "CGALTriangulation3DKernel.H" -#include "tensor.H" -#include "InfoProxy.H" -#include "point.H" -#include "indexedVertexEnum.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace CGAL -{ -template<class Gt, class Vb> class indexedVertex; -} - -namespace Foam -{ - -class Ostream; -class Istream; - -template<class Gt, class Vb> Ostream& operator<< -( - Ostream&, - const Foam::InfoProxy<CGAL::indexedVertex<Gt, Vb> >& -); - -template<class Gt, class Vb> Ostream& operator<< -( - Ostream&, - const CGAL::indexedVertex<Gt, Vb>& -); - -template<class Gt, class Vb> Istream& operator>> -( - Istream&, - CGAL::indexedVertex<Gt, Vb>& -); - -inline Istream& operator>> -( - Istream& is, - CGAL::Point_3<baseK>& p -); - -inline Ostream& operator<< -( - Ostream& os, - const CGAL::Point_3<baseK>& p -); - -} // End namespace Foam - - -namespace CGAL -{ - -/*---------------------------------------------------------------------------*\ - Class indexedVertex Declaration -\*---------------------------------------------------------------------------*/ - -template<class Gt, class Vb = CGAL::Triangulation_vertex_base_3<Gt> > -class indexedVertex -: - public Foam::indexedVertexEnum, - public Vb -{ - // Private data - - //- Type of pair-point - vertexType type_; - - //- The index for this Delaunay vertex. For referred vertices, the - // index is negative for vertices that are the outer (slave) of point - // pairs - int index_; - - //- Number of the processor that owns this vertex - int processor_; - - //- Required alignment of the dual cell of this vertex - Foam::tensor alignment_; - - //- Target size of the dual cell of this vertex - Foam::scalar targetCellSize_; - - //- Specify whether the vertex is fixed or movable. -// bool vertexFixed_; - - -public: - - typedef typename Vb::Triangulation_data_structure Tds; - typedef typename Vb::Point Point; - typedef typename Tds::Vertex_handle Vertex_handle; - typedef typename Tds::Cell_handle Cell_handle; - - template<typename TDS2> - struct Rebind_TDS - { - typedef typename Vb::template Rebind_TDS<TDS2>::Other Vb2; - typedef indexedVertex<Gt,Vb2> Other; - }; - - // Constructors - - inline indexedVertex(); - - inline indexedVertex(const Point& p); - - inline indexedVertex(const Point& p, vertexType type); - - inline indexedVertex(const Foam::point& p, vertexType type); - - inline indexedVertex - ( - const Point& p, - int index, - vertexType type, - int processor - ); - - inline indexedVertex(const Point& p, Cell_handle f); - - inline indexedVertex(Cell_handle f); - - - // Member Functions - - inline int& index(); - - inline int index() const; - - inline vertexType& type(); - - inline vertexType type() const; - - inline Foam::tensor& alignment(); - - inline const Foam::tensor& alignment() const; - - inline Foam::scalar& targetCellSize(); - - inline Foam::scalar targetCellSize() const; - - inline bool uninitialised() const; - - //- Is point a far-point - inline bool farPoint() const; - - //- Is point internal, i.e. not on boundary - inline bool internalPoint() const; - - //- Is this a referred vertex - inline bool referred() const; - - //- Is this a "real" point on this processor, i.e. is internal or part - // of the boundary description, and not a "far" or "referred" point - inline bool real() const; - - // For referred vertices, what is the original processor index - inline int procIndex() const; - - // For referred vertices, set the original processor index - inline int& procIndex(); - - //- Set the point to be internal - inline void setInternal(); - - //- Is point internal and near the boundary - inline bool nearBoundary() const; - - //- Set the point to be near the boundary - inline void setNearBoundary(); - - //- Is point internal and near a proc boundary - inline bool nearProcBoundary() const; - - //- Set the point to be near a proc boundary - inline void setNearProcBoundary(); - - //- Either master or slave of pointPair. - inline bool boundaryPoint() const; - - //- Either original internal point or master of pointPair. - inline bool internalOrBoundaryPoint() const; - - //- Is point near the boundary or part of the boundary definition - inline bool nearOrOnBoundary() const; - - //- Part of a feature point - inline bool featurePoint() const; - - //- Part of a feature edge - inline bool featureEdgePoint() const; - - //- Part of a surface point pair - inline bool surfacePoint() const; - - inline bool internalBoundaryPoint() const; - - inline bool externalBoundaryPoint() const; - -// //- Is the vertex fixed or movable -// inline bool isVertexFixed() const; -// -// //- Fix the vertex so that it can't be moved -// inline void setVertexFixed(); - - inline indexedVertex& operator=(const indexedVertex& rhs) - { - Vb::operator=(rhs); - - this->type_ = rhs.type(); - this->index_ = rhs.index(); - this->processor_ = rhs.procIndex(); - this->alignment_ = rhs.alignment(); - this->targetCellSize_ = rhs.targetCellSize(); - - return *this; - } - - inline bool operator==(const indexedVertex& rhs) const - { - return - ( - //this->point() == rhs.point() - this->type_ == rhs.type() - && this->index_ == rhs.index() - && this->processor_ == rhs.procIndex() - ); - } - - inline bool operator!=(const indexedVertex& rhs) const - { - return !(*this == rhs); - } - - - // Info - - //- Return info proxy. - // Used to print indexedVertex information to a stream - Foam::InfoProxy<indexedVertex<Gt, Vb> > info() const - { - return *this; - } - - friend Foam::Ostream& Foam::operator<< <Gt, Vb> - ( - Foam::Ostream&, - const Foam::InfoProxy<indexedVertex<Gt, Vb> >& - ); - - friend Foam::Ostream& Foam::operator<< <Gt, Vb> - ( - Foam::Ostream&, - const indexedVertex<Gt, Vb>& - ); - - friend Foam::Istream& Foam::operator>> <Gt, Vb> - ( - Foam::Istream&, - indexedVertex<Gt, Vb>& - ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace CGAL - -// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // - -#ifdef CGAL_INEXACT -namespace Foam -{ - // For inexact representations where the storage type is a double, the data - // is contiguous. This may not be true for exact number types. - template<> - inline bool contiguous - < - CGAL::indexedVertex - < - K, - CGAL::Triangulation_vertex_base_3<K> - > - >() - { - return true; - } - - - template<> - inline bool contiguous<CGAL::Triangulation_vertex_base_3<K>::Point>() - { - return true; - } - -} // End namespace Foam -#endif - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "indexedVertexI.H" - -#ifdef NoRepository -# include "indexedVertex.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.C deleted file mode 100644 index ee394b16fa62de04af248b5609c81baa1a2e9295..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.C +++ /dev/null @@ -1,88 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "indexedVertexEnum.H" -#include "Pstream.H" - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -template<> -const char* -Foam::NamedEnum<Foam::indexedVertexEnum::vertexType, 10>::names[] = -{ - "Unassigned", - "Internal", - "InternalNearBoundary", - "InternalSurface", - "InternalFeatureEdge", - "InternalFeaturePoint", - "ExternalSurface", - "ExternalFeatureEdge", - "ExternalFeaturePoint", - "Far" -}; - -const Foam::NamedEnum<Foam::indexedVertexEnum::vertexType, 10> -Foam::indexedVertexEnum::vertexTypeNames_; - - -template<> -const char* -Foam::NamedEnum<Foam::indexedVertexEnum::vertexMotion, 2>::names[] = -{ - "fixed", - "movable" -}; - -const Foam::NamedEnum<Foam::indexedVertexEnum::vertexMotion, 2> -vertexMotionNames_; - - -Foam::Ostream& Foam::operator<< -( - Ostream& os, - const Foam::indexedVertexEnum::vertexType& v -) -{ - os << static_cast<int>(v); - - return os; -} - -Foam::Istream& Foam::operator>> -( - Istream& is, - Foam::indexedVertexEnum::vertexType& v -) -{ - int type; - is >> type; - - v = static_cast<Foam::indexedVertexEnum::vertexType>(type); - - return is; -} - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.H deleted file mode 100644 index c597d8a17307cf790fee28c068f857c7c5f68691..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.H +++ /dev/null @@ -1,95 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - indexedVertexEnum - -Description - -SourceFiles - indexedVertexEnum.C - -\*---------------------------------------------------------------------------*/ - -#ifndef indexedVertexEnum_H -#define indexedVertexEnum_H - -#include "NamedEnum.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -class indexedVertexEnum -{ -public: - - enum vertexType - { - vtUnassigned = 0, - vtInternal = 1, - vtInternalNearBoundary = 2, - vtInternalSurface = 3, - vtInternalFeatureEdge = 4, - vtInternalFeaturePoint = 5, - vtExternalSurface = 6, - vtExternalFeatureEdge = 7, - vtExternalFeaturePoint = 8, - vtFar = 9 - }; - - enum vertexMotion - { - fixed = 0, - movable = 1 - }; - - static const Foam::NamedEnum<vertexType, 10> vertexTypeNames_; - - static const Foam::NamedEnum<vertexMotion, 2> vertexMotionNames_; - - friend Ostream& operator<<(Foam::Ostream&, const vertexType&); - - friend Istream& operator>>(Foam::Istream&, vertexType&); -}; - - -template<> -inline bool contiguous<indexedVertexEnum>() -{ - return true; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexI.H deleted file mode 100644 index ea9e4db6d4630a70e75bc173a1a4daf5674eb6d7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexI.H +++ /dev/null @@ -1,334 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "Pstream.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex() -: - Vb(), - type_(vtUnassigned), - index_(vtUnassigned), - processor_(Foam::Pstream::myProcNo()), - alignment_(Foam::tensor::zero), - targetCellSize_(0.0) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex(const Point& p) -: - Vb(p), - type_(vtUnassigned), - index_(vtUnassigned), - processor_(Foam::Pstream::myProcNo()), - alignment_(Foam::tensor::zero), - targetCellSize_(0.0) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex -( - const Point& p, - vertexType type -) -: - Vb(p), - type_(type), - index_(-1), - processor_(Foam::Pstream::myProcNo()), - alignment_(Foam::tensor::zero), - targetCellSize_(0.0) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex -( - const Foam::point& p, - vertexType type -) -: - Vb(Point(p.x(), p.y(), p.z())), - type_(type), - index_(-1), - processor_(Foam::Pstream::myProcNo()), - alignment_(Foam::tensor::zero), - targetCellSize_(0.0) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex -( - const Point& p, - int index, - vertexType type, - int processor -) -: - Vb(p), - type_(type), - index_(index), - processor_(processor), - alignment_(Foam::tensor::zero), - targetCellSize_(0.0) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex(const Point& p, Cell_handle f) -: - Vb(f, p), - type_(vtUnassigned), - index_(vtUnassigned), - processor_(Foam::Pstream::myProcNo()), - alignment_(Foam::tensor::zero), - targetCellSize_(0.0) -{} - - -template<class Gt, class Vb> -inline CGAL::indexedVertex<Gt, Vb>::indexedVertex(Cell_handle f) -: - Vb(f), - type_(vtUnassigned), - index_(vtUnassigned), - processor_(Foam::Pstream::myProcNo()), - alignment_(Foam::tensor::zero), - targetCellSize_(0.0) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template<class Gt, class Vb> -inline int& CGAL::indexedVertex<Gt, Vb>::index() -{ - return index_; -} - - -template<class Gt, class Vb> -inline int CGAL::indexedVertex<Gt, Vb>::index() const -{ - return index_; -} - - -template<class Gt, class Vb> -inline Foam::indexedVertexEnum::vertexType& -CGAL::indexedVertex<Gt, Vb>::type() -{ - return type_; -} - - -template<class Gt, class Vb> -inline Foam::indexedVertexEnum::vertexType -CGAL::indexedVertex<Gt, Vb>::type() const -{ - return type_; -} - - -template<class Gt, class Vb> -inline Foam::tensor& CGAL::indexedVertex<Gt, Vb>::alignment() -{ - return alignment_; -} - - -template<class Gt, class Vb> -inline const Foam::tensor& CGAL::indexedVertex<Gt, Vb>::alignment() const -{ - return alignment_; -} - - -template<class Gt, class Vb> -inline Foam::scalar& CGAL::indexedVertex<Gt, Vb>::targetCellSize() -{ - return targetCellSize_; -} - - -template<class Gt, class Vb> -inline Foam::scalar CGAL::indexedVertex<Gt, Vb>::targetCellSize() const -{ - return targetCellSize_; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::uninitialised() const -{ - return type_ == vtUnassigned; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::farPoint() const -{ - return type_ == vtFar; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::internalPoint() const -{ - return type_ == vtInternal || type_ == vtInternalNearBoundary; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::referred() const -{ - // Can't be zero as the first few points are far points which won't be - // referred - //return index_ < 0; - - // processor_ will be take the value of the processor that this vertex is - // from, so it cannot be on this processor. - return processor_ != Foam::Pstream::myProcNo(); -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::real() const -{ - return (internalPoint() || boundaryPoint()) && !referred(); -} - - -template<class Gt, class Vb> -inline int CGAL::indexedVertex<Gt, Vb>::procIndex() const -{ - return processor_; -} - - -template<class Gt, class Vb> -inline int& CGAL::indexedVertex<Gt, Vb>::procIndex() -{ - return processor_; -} - - -template<class Gt, class Vb> -inline void CGAL::indexedVertex<Gt, Vb>::setInternal() -{ - type_ = vtInternal; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::nearBoundary() const -{ - return type_ == vtInternalNearBoundary; -} - - -template<class Gt, class Vb> -inline void CGAL::indexedVertex<Gt, Vb>::setNearBoundary() -{ - type_ = vtInternalNearBoundary; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::boundaryPoint() const -{ - return type_ >= vtInternalSurface && !farPoint(); -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::internalOrBoundaryPoint() const -{ - return internalPoint() || internalBoundaryPoint(); -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::nearOrOnBoundary() const -{ - return boundaryPoint() || nearBoundary(); -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::internalBoundaryPoint() const -{ - return type_ >= vtInternalSurface && type_ <= vtInternalFeaturePoint; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::externalBoundaryPoint() const -{ - return type_ >= vtExternalSurface && type_ <= vtExternalFeaturePoint; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::featurePoint() const -{ - return type_ == vtInternalFeaturePoint || type_ == vtExternalFeaturePoint; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::featureEdgePoint() const -{ - return type_ == vtInternalFeatureEdge || type_ == vtExternalFeatureEdge; -} - - -template<class Gt, class Vb> -inline bool CGAL::indexedVertex<Gt, Vb>::surfacePoint() const -{ - return type_ == vtInternalSurface || type_ == vtExternalSurface; -} - - -//template<class Gt, class Vb> -//inline bool CGAL::indexedVertex<Gt, Vb>::isVertexFixed() const -//{ -// return vertexFixed_; -//} -// -// -//template<class Gt, class Vb> -//inline void CGAL::indexedVertex<Gt, Vb>::setVertexFixed() -//{ -// vertexFixed_ = true; -//} - - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/pointConversion.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/pointConversion.H deleted file mode 100644 index 6242a3a6feab4f4ccd89542efe3bca4c29a07a55..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/pointConversion.H +++ /dev/null @@ -1,99 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - pointConversion - -Description - - Conversion functions between point (FOAM::) and Point (CGAL) - -\*---------------------------------------------------------------------------*/ - -#ifndef pointConversion_H -#define pointConversion_H - -#include "point.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#ifdef CGAL_INEXACT - - // Define Point to be contiguous for inexact (double storage) kernel - typedef const Foam::point& pointFromPoint; - typedef const CGAL::Triangulation_vertex_base_3<K>::Point& PointFrompoint; - -#else - - typedef Foam::point pointFromPoint; - typedef CGAL::Triangulation_vertex_base_3<K>::Point PointFrompoint; - -#endif - -namespace Foam -{ - -#ifdef CGAL_INEXACT - - template<typename Point> - inline pointFromPoint topoint(const Point& P) - { - return reinterpret_cast<pointFromPoint>(P); - } - - template<typename Point> - inline PointFrompoint toPoint(const Foam::point& p) - { - return reinterpret_cast<PointFrompoint>(p); - } - -#else - - template<typename Point> - inline pointFromPoint topoint(const Point& P) - { - return Foam::point - ( - CGAL::to_double(P.x()), - CGAL::to_double(P.y()), - CGAL::to_double(P.z()) - ); - } - - template<typename Point> - inline Point toPoint(const Foam::point& p) - { - return Point(p.x(), p.y(), p.z()); - } - -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/pointFeatureEdgesTypes.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/pointFeatureEdgesTypes.H deleted file mode 100644 index 5bae06d86f198c3e8bd8ec49cea7bed9c3168cf7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/pointFeatureEdgesTypes.H +++ /dev/null @@ -1,93 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - pointFeatureEdgesTypes - -Description - struct for holding information on the types of feature edges attached to - feature points - -\*---------------------------------------------------------------------------*/ - -#ifndef pointFeatureEdgesTypes_H -#define pointFeatureEdgesTypes_H - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class pointFeatureEdgesTypes Declaration -\*---------------------------------------------------------------------------*/ - -//- Hold the types of feature edges attached to the point. -class pointFeatureEdgesTypes -: - public HashTable<label, extendedFeatureEdgeMesh::edgeStatus> -{ - label pointLabel_; - -public: - - pointFeatureEdgesTypes(const label pointLabel) - : - HashTable<label, extendedFeatureEdgeMesh::edgeStatus>(), - pointLabel_(pointLabel) - {} - - - friend Ostream& operator<<(Ostream& os, const pointFeatureEdgesTypes& p) - { - os << "Point = " << p.pointLabel_ << endl; - - for - ( - HashTable<label, extendedFeatureEdgeMesh::edgeStatus> - ::const_iterator iter = p.cbegin(); - iter != p.cend(); - ++iter - ) - { - os << " " - << extendedFeatureEdgeMesh::edgeStatusNames_[iter.key()] - << " = " - << iter() - << endl; - } - - return os; - } -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfaces.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfaces.C deleted file mode 100644 index 64f753fb99d102e5309f06c345f36c4bd996c590..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfaces.C +++ /dev/null @@ -1,895 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "conformationSurfaces.H" -#include "conformalVoronoiMesh.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::conformationSurfaces::conformationSurfaces -( - const Time& runTime, - Random& rndGen, - const searchableSurfaces& allGeometry, - const dictionary& surfaceConformationDict -) -: - runTime_(runTime), - rndGen_(rndGen), - allGeometry_(allGeometry), - features_(), - locationInMesh_(surfaceConformationDict.lookup("locationInMesh")), - surfaces_(), - allGeometryToSurfaces_(), - baffleSurfaces_(), - patchNames_(0), - patchOffsets_(), - globalBounds_(), - referenceVolumeTypes_(0) -{ - const dictionary& surfacesDict - ( - surfaceConformationDict.subDict("geometryToConformTo") - ); - - const dictionary& additionalFeaturesDict - ( - surfaceConformationDict.subDict("additionalFeatures") - ); - - Info<< nl << "Reading geometryToConformTo" << endl; - - surfaces_.setSize(surfacesDict.size(), -1); - - allGeometryToSurfaces_.setSize(allGeometry_.size(), -1); - - baffleSurfaces_.setSize(surfacesDict.size(), false); - - // Features may be attached to host surfaces or independent - features_.setSize(surfacesDict.size() + additionalFeaturesDict.size()); - - label featureI = 0; - - patchOffsets_.setSize(surfacesDict.size(), -1); - - label surfI = 0; - - forAllConstIter(dictionary, surfacesDict, iter) - { - word surfaceName = iter().keyword(); - - surfaces_[surfI] = allGeometry_.findSurfaceID(surfaceName); - - allGeometryToSurfaces_[surfaces_[surfI]] = surfI; - - if (surfaces_[surfI] < 0) - { - FatalErrorIn("Foam::conformationSurfaces::conformationSurfaces") - << "No surface " << iter().keyword() << " found. " - << "Valid geometry is " << nl << allGeometry_.names() - << exit(FatalError); - } - - Info<< nl << " " << iter().keyword() << endl; - - patchOffsets_[surfI] = patchNames_.size(); - - patchNames_.append(allGeometry.regionNames()[surfaces_[surfI]]); - - const dictionary& surfaceSubDict(surfacesDict.subDict(surfaceName)); - - baffleSurfaces_[surfI] = Switch - ( - surfaceSubDict.lookupOrDefault("baffleSurface", false) - ); - - if (!baffleSurfaces_[surfI]) - { - if (!allGeometry_[surfaces_[surfI]].hasVolumeType()) - { - WarningIn("conformationSurfaces::conformationSurfaces(..)") - << "Non-baffle surface " - << allGeometry_[surfaces_[surfI]].name() - << " does not allow inside/outside queries." - << " This usually is an error." << endl; - } - } - - word featureMethod = surfaceSubDict.lookup("featureMethod"); - - if (featureMethod == "extendedFeatureEdgeMesh") - { - fileName feMeshName - ( - surfaceSubDict.lookup("extendedFeatureEdgeMesh") - ); - - Info<< " features: " << feMeshName<< endl; - - features_.set - ( - featureI++, - new extendedFeatureEdgeMesh - ( - IOobject - ( - feMeshName, - runTime_.time().constant(), - "extendedFeatureEdgeMesh", - runTime_.time(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ) - ); - } - else if (featureMethod == "extractFeatures") - { - notImplemented - ( - "conformationSurfaces::conformationSurfaces, " - "else if (featureMethod == \"extractFeatures\")" - ); - } - else if (featureMethod == "none") - { - // Currently nothing to do - } - else - { - FatalErrorIn("Foam::conformationSurfaces::conformationSurfaces") - << "No valid featureMethod found for surface " << surfaceName - << nl << "Use \"extendedFeatureEdgeMesh\" " - << "or \"extractFeatures\"." - << exit(FatalError); - } - - surfI++; - } - - if (!additionalFeaturesDict.empty()) - { - Info<< nl << "Reading additionalFeatures" << endl; - } - - forAllConstIter(dictionary, additionalFeaturesDict, iter) - { - word featureName = iter().keyword(); - - Info<< nl << " " << iter().keyword() << endl; - - const dictionary& featureSubDict - ( - additionalFeaturesDict.subDict(featureName) - ); - - word featureMethod = featureSubDict.lookupOrDefault - ( - "featureMethod", - word("none") - ); - - if (featureMethod == "extendedFeatureEdgeMesh") - { - fileName feMeshName - ( - featureSubDict.lookup("extendedFeatureEdgeMesh") - ); - - Info<< " features: " << feMeshName << endl; - - features_.set - ( - featureI++, - new extendedFeatureEdgeMesh - ( - IOobject - ( - feMeshName, - runTime_.time().constant(), - "extendedFeatureEdgeMesh", - runTime_.time(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ) - ); - } - } - - // Remove unnecessary space from the features list - features_.setSize(featureI); - - globalBounds_ = treeBoundBox - ( - searchableSurfacesQueries::bounds(allGeometry_, surfaces_) - ); - - // Extend the global bounds to stop the bound box sitting on the surfaces - // to be conformed to - //globalBounds_ = globalBounds_.extend(rndGen_, 1e-4); - - vector newSpan = 1e-4*globalBounds_.span(); - - globalBounds_.min() -= newSpan; - globalBounds_.max() += newSpan; - - // Look at all surfaces at determine whether the locationInMesh point is - // inside or outside each, to establish a signature for the domain to be - // meshed. - - referenceVolumeTypes_.setSize - ( - surfaces_.size(), - searchableSurface::UNKNOWN - ); - - - Info<< endl - << "Testing for locationInMesh " << locationInMesh_ << endl; - - forAll(surfaces_, s) - { - const searchableSurface& surface(allGeometry_[surfaces_[s]]); - - if (surface.hasVolumeType()) - { - pointField pts(1, locationInMesh_); - - List<searchableSurface::volumeType> vTypes - ( - pts.size(), - searchableSurface::UNKNOWN - ); - - surface.getVolumeType(pts, vTypes); - - referenceVolumeTypes_[s] = vTypes[0]; - - Info<< " is " - << searchableSurface::volumeTypeNames[referenceVolumeTypes_[s]] - << " surface " << surface.name() - << endl; - } - } -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::conformationSurfaces::~conformationSurfaces() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -bool Foam::conformationSurfaces::overlaps(const treeBoundBox& bb) const -{ - forAll(surfaces_, s) - { - if (allGeometry_[surfaces_[s]].overlaps(bb)) - { - return true; - } - } - - return false; -} - - -Foam::Field<bool> Foam::conformationSurfaces::inside -( - const pointField& samplePts -) const -{ - return wellInside(samplePts, scalarField(samplePts.size(), 0.0)); -} - - -bool Foam::conformationSurfaces::inside -( - const point& samplePt -) const -{ - return wellInside(pointField(1, samplePt), scalarField(1, 0))[0]; -} - - -Foam::Field<bool> Foam::conformationSurfaces::outside -( - const pointField& samplePts -) const -{ - return wellOutside(samplePts, scalarField(samplePts.size(), 0.0)); -} - - -bool Foam::conformationSurfaces::outside -( - const point& samplePt -) const -{ - return !inside(samplePt); -} - - -Foam::Field<bool> Foam::conformationSurfaces::wellInOutSide -( - const pointField& samplePts, - const scalarField& testDistSqr, - bool testForInside -) const -{ - List<List<searchableSurface::volumeType> > surfaceVolumeTests - ( - surfaces_.size(), - List<searchableSurface::volumeType> - ( - samplePts.size(), - searchableSurface::UNKNOWN - ) - ); - - // Get lists for the volumeTypes for each sample wrt each surface - forAll(surfaces_, s) - { - const searchableSurface& surface(allGeometry_[surfaces_[s]]); - - if (surface.hasVolumeType()) - { - surface.getVolumeType(samplePts, surfaceVolumeTests[s]); - } - } - - // Compare the volumeType result for each point wrt to each surface with the - // reference value and if the points are inside the surface by a given - // distanceSquared - - // Assume that the point is wellInside until demonstrated otherwise. - Field<bool> inOutSidePoint(samplePts.size(), testForInside); - - //Check if the points are inside the surface by the given distance squared - - labelList hitSurfaces; - - List<pointIndexHit> hitInfo; - - searchableSurfacesQueries::findNearest - ( - allGeometry_, - surfaces_, - samplePts, - testDistSqr, - hitSurfaces, - hitInfo - ); - - forAll(samplePts, i) - { - const pointIndexHit& pHit = hitInfo[i]; - - if (pHit.hit()) - { - // If the point is within range of the surface, then it can't be - // well (in|out)side - inOutSidePoint[i] = false; - - continue; - } - - forAll(surfaces_, s) - { - // If one of the pattern tests is failed, then the point cannot be - // inside, therefore, if this is a testForInside = true call, the - // result is false. If this is a testForInside = false call, then - // the result is true. - if (surfaceVolumeTests[s][i] != referenceVolumeTypes_[s]) - { - inOutSidePoint[i] = !testForInside; - - break; - } - } - } - - return inOutSidePoint; -} - - -Foam::Field<bool> Foam::conformationSurfaces::wellInside -( - const pointField& samplePts, - const scalarField& testDistSqr -) const -{ - return wellInOutSide(samplePts, testDistSqr, true); -} - - -bool Foam::conformationSurfaces::wellInside -( - const point& samplePt, - scalar testDistSqr -) const -{ - return wellInside(pointField(1, samplePt), scalarField(1, testDistSqr))[0]; -} - - -Foam::Field<bool> Foam::conformationSurfaces::wellOutside -( - const pointField& samplePts, - const scalarField& testDistSqr -) const -{ - return wellInOutSide(samplePts, testDistSqr, false); -} - - -bool Foam::conformationSurfaces::wellOutside -( - const point& samplePt, - scalar testDistSqr -) const -{ - return wellOutside(pointField(1, samplePt), scalarField(1, testDistSqr))[0]; -} - - -bool Foam::conformationSurfaces::findSurfaceAnyIntersection -( - const point& start, - const point& end -) const -{ - labelList hitSurfaces; - List<pointIndexHit> hitInfo; - - searchableSurfacesQueries::findAnyIntersection - ( - allGeometry_, - surfaces_, - pointField(1, start), - pointField(1, end), - hitSurfaces, - hitInfo - ); - - return hitInfo[0].hit(); -} - - -void Foam::conformationSurfaces::findSurfaceAnyIntersection -( - const point& start, - const point& end, - pointIndexHit& surfHit, - label& hitSurface -) const -{ - labelList hitSurfaces; - List<pointIndexHit> hitInfo; - - searchableSurfacesQueries::findAnyIntersection - ( - allGeometry_, - surfaces_, - pointField(1, start), - pointField(1, end), - hitSurfaces, - hitInfo - ); - - surfHit = hitInfo[0]; - - if (surfHit.hit()) - { - // hitSurfaces has returned the index of the entry in surfaces_ that was - // found, not the index of the surface in allGeometry_, translating this - // to allGeometry_ - - hitSurface = surfaces_[hitSurfaces[0]]; - } -} - - -void Foam::conformationSurfaces::findSurfaceNearestIntersection -( - const point& start, - const point& end, - pointIndexHit& surfHit, - label& hitSurface -) const -{ - labelList hitSurfacesStart; - List<pointIndexHit> hitInfoStart; - labelList hitSurfacesEnd; - List<pointIndexHit> hitInfoEnd; - - searchableSurfacesQueries::findNearestIntersection - ( - allGeometry_, - surfaces_, - pointField(1, start), - pointField(1, end), - hitSurfacesStart, - hitInfoStart, - hitSurfacesEnd, - hitInfoEnd - ); - - surfHit = hitInfoStart[0]; - - if (surfHit.hit()) - { - // hitSurfaces has returned the index of the entry in surfaces_ that was - // found, not the index of the surface in allGeometry_, translating this - // to allGeometry_ - - hitSurface = surfaces_[hitSurfacesStart[0]]; - } -} - - -void Foam::conformationSurfaces::findSurfaceNearest -( - const point& sample, - scalar nearestDistSqr, - pointIndexHit& surfHit, - label& hitSurface -) const -{ - labelList hitSurfaces; - List<pointIndexHit> surfaceHits; - - searchableSurfacesQueries::findNearest - ( - allGeometry_, - surfaces_, - pointField(1, sample), - scalarField(1, nearestDistSqr), - hitSurfaces, - surfaceHits - ); - - surfHit = surfaceHits[0]; - - if (surfHit.hit()) - { - // hitSurfaces has returned the index of the entry in surfaces_ that was - // found, not the index of the surface in allGeometry_, translating this - // to allGeometry_ - - hitSurface = surfaces_[hitSurfaces[0]]; - } -} - - -void Foam::conformationSurfaces::findSurfaceNearest -( - const pointField& samples, - const scalarField& nearestDistSqr, - List<pointIndexHit>& surfaceHits, - labelList& hitSurfaces -) const -{ - searchableSurfacesQueries::findNearest - ( - allGeometry_, - surfaces_, - samples, - nearestDistSqr, - hitSurfaces, - surfaceHits - ); - - forAll(surfaceHits, i) - { - if (surfaceHits[i].hit()) - { - // hitSurfaces has returned the index of the entry in surfaces_ that - // was found, not the index of the surface in allGeometry_, - // translating this to the surface in allGeometry_. - - hitSurfaces[i] = surfaces_[hitSurfaces[i]]; - } - } -} - - -void Foam::conformationSurfaces::findFeaturePointNearest -( - const point& sample, - scalar nearestDistSqr, - pointIndexHit& fpHit, - label& featureHit -) const -{ - // Work arrays - scalar minDistSqr = nearestDistSqr; - pointIndexHit hitInfo; - - forAll(features_, testI) - { - features_[testI].nearestFeaturePoint - ( - sample, - minDistSqr, - hitInfo - ); - - if (hitInfo.hit()) - { - minDistSqr = magSqr(hitInfo.hitPoint()- sample); - fpHit = hitInfo; - featureHit = testI; - } - } -} - - -void Foam::conformationSurfaces::findEdgeNearest -( - const point& sample, - scalar nearestDistSqr, - pointIndexHit& edgeHit, - label& featureHit -) const -{ - pointField samples(1, sample); - scalarField nearestDistsSqr(1, nearestDistSqr); - - List<pointIndexHit> edgeHits; - labelList featuresHit; - - findEdgeNearest - ( - samples, - nearestDistsSqr, - edgeHits, - featuresHit - ); - - edgeHit = edgeHits[0]; - featureHit = featuresHit[0]; -} - - -void Foam::conformationSurfaces::findEdgeNearest -( - const pointField& samples, - const scalarField& nearestDistsSqr, - List<pointIndexHit>& edgeHits, - labelList& featuresHit -) const -{ - // Initialise - featuresHit.setSize(samples.size()); - featuresHit = -1; - edgeHits.setSize(samples.size()); - - // Work arrays - scalarField minDistSqr(nearestDistsSqr); - List<pointIndexHit> hitInfo(samples.size()); - - forAll(features_, testI) - { - features_[testI].nearestFeatureEdge - ( - samples, - minDistSqr, - hitInfo - ); - - // Update minDistSqr and arguments - forAll(hitInfo, pointI) - { - if (hitInfo[pointI].hit()) - { - minDistSqr[pointI] = magSqr - ( - hitInfo[pointI].hitPoint() - - samples[pointI] - ); - edgeHits[pointI] = hitInfo[pointI]; - featuresHit[pointI] = testI; - } - } - } -} - - -void Foam::conformationSurfaces::findEdgeNearestByType -( - const point& sample, - scalar nearestDistSqr, - List<pointIndexHit>& edgeHits, - List<label>& featuresHit -) const -{ - // Initialise - featuresHit.setSize(extendedFeatureEdgeMesh::nEdgeTypes); - featuresHit = -1; - edgeHits.setSize(extendedFeatureEdgeMesh::nEdgeTypes); - - // Work arrays - scalarField minDistSqr(extendedFeatureEdgeMesh::nEdgeTypes, nearestDistSqr); - List<pointIndexHit> hitInfo(extendedFeatureEdgeMesh::nEdgeTypes); - - forAll(features_, testI) - { - features_[testI].nearestFeatureEdgeByType - ( - sample, - minDistSqr, - hitInfo - ); - - // Update minDistSqr and arguments - forAll(hitInfo, typeI) - { - if (hitInfo[typeI].hit()) - { - minDistSqr[typeI] = magSqr(hitInfo[typeI].hitPoint() - sample); - edgeHits[typeI] = hitInfo[typeI]; - featuresHit[typeI] = testI; - } - } - } -} - - -void Foam::conformationSurfaces::findAllNearestEdges -( - const point& sample, - const scalar searchRadiusSqr, - List<List<pointIndexHit> >& edgeHitsByFeature, - List<label>& featuresHit -) const -{ - // Initialise - //featuresHit.setSize(features_.size()); - //featuresHit = -1; - //edgeHitsByFeature.setSize(features_.size()); - - // Work arrays - List<pointIndexHit> hitInfo(extendedFeatureEdgeMesh::nEdgeTypes); - - forAll(features_, testI) - { - features_[testI].allNearestFeatureEdges - ( - sample, - searchRadiusSqr, - hitInfo - ); - - bool anyHit = false; - forAll(hitInfo, hitI) - { - if (hitInfo[hitI].hit()) - { - anyHit = true; - } - } - - if (anyHit) - { - edgeHitsByFeature.append(hitInfo); - featuresHit.append(testI); - } - } -} - - -void Foam::conformationSurfaces::writeFeatureObj(const fileName& prefix) const -{ - OFstream ftStr(runTime_.time().path()/prefix + "_allFeatures.obj"); - - Pout<< nl << "Writing all features to " << ftStr.name() << endl; - - label verti = 0; - - forAll(features_, i) - { - const extendedFeatureEdgeMesh& fEM(features_[i]); - const pointField pts(fEM.points()); - const edgeList eds(fEM.edges()); - - ftStr << "g " << fEM.name() << endl; - - forAll(eds, j) - { - const edge& e = eds[j]; - - meshTools::writeOBJ(ftStr, pts[e[0]]); verti++; - meshTools::writeOBJ(ftStr, pts[e[1]]); verti++; - ftStr << "l " << verti-1 << ' ' << verti << endl; - } - } -} - - -Foam::label Foam::conformationSurfaces::findPatch -( - const point& ptA, - const point& ptB -) const -{ - pointIndexHit surfHit; - label hitSurface; - - findSurfaceAnyIntersection(ptA, ptB, surfHit, hitSurface); - - if (!surfHit.hit()) - { - return -1; - } - - labelList surfLocalRegion; - - allGeometry_[hitSurface].getRegion - ( - List<pointIndexHit>(1, surfHit), - surfLocalRegion - ); - - return - surfLocalRegion[0] + patchOffsets_[allGeometryToSurfaces_[hitSurface]]; -} - - -Foam::label Foam::conformationSurfaces::findPatch(const point& pt) const -{ - pointIndexHit surfHit; - label hitSurface; - - findSurfaceNearest - ( - pt, - sqr(GREAT), - surfHit, - hitSurface - ); - - if (!surfHit.hit()) - { - return -1; - } - - labelList surfLocalRegion; - - allGeometry_[hitSurface].getRegion - ( - List<pointIndexHit>(1, surfHit), - surfLocalRegion - ); - - return - surfLocalRegion[0] + patchOffsets_[allGeometryToSurfaces_[hitSurface]]; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfaces.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfaces.H deleted file mode 100644 index 3acb10d53a86eefb61b311a240cd89244c82c815..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfaces.H +++ /dev/null @@ -1,328 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::conformationSurfaces - -Description - -SourceFiles - conformationSurfacesI.H - conformationSurfaces.C - -\*---------------------------------------------------------------------------*/ - -#ifndef conformationSurfaces_H -#define conformationSurfaces_H - -#include "searchableSurfaces.H" -#include "searchableSurfacesQueries.H" -#include "extendedFeatureEdgeMesh.H" -#include "boolList.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class conformationSurfaces Declaration -\*---------------------------------------------------------------------------*/ - -class conformationSurfaces -{ - // Private data - - const Time& runTime_; - - Random& rndGen_; - - //- Reference to the searchableSurfaces object holding all geometry data - const searchableSurfaces& allGeometry_; - - //- A list of extendedFeatureEdgeMesh - PtrList<extendedFeatureEdgeMesh> features_; - - //- The location in the mesh that specifies which portion of surfaces is - // to be meshed. - point locationInMesh_; - - //- Indices of surfaces in allGeometry that are to be conformed to - labelList surfaces_; - - //- Reverse mapping, which entry in surfaces corresponds to the surface - // in allGeometry specified by the list index. -1 for a surface that - // isn't used. - labelList allGeometryToSurfaces_; - - //- A boolean value for each surface to be conformed to specifying if it - // is to be treated as a baffle - boolList baffleSurfaces_; - - //- A flat list of all of the names of the patches from all of the - // surfaces to be reproduced in the meshed geometry - List<word> patchNames_; - - //- The offset between the patch indices of the individual surface and - // the entry in the overall patch list - labelList patchOffsets_; - - //- The overall boundBox of all of the surfaces to be conformed to - treeBoundBox globalBounds_; - - //- The pattern/signature of volumeTypes representing a point in the - // domain to be meshed - List<searchableSurface::volumeType> referenceVolumeTypes_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - conformationSurfaces(const conformationSurfaces&); - - //- Disallow default bitwise assignment - void operator=(const conformationSurfaces&); - - -public: - - // Constructors - - //- Construct from dictionary and references to conformalVoronoiMesh and - // searchableSurfaces - conformationSurfaces - ( - const Time& runTime, - Random& rndGen, - const searchableSurfaces& allGeometry, - const dictionary& surfaceConformationDict - ); - - //- Destructor - ~conformationSurfaces(); - - - // Member Functions - - // Access - - //- Return reference to the searchableSurfaces object containing all - // of the geometry - inline const searchableSurfaces& geometry() const; - - //- Return the object holding the feature points and edges - inline const PtrList<extendedFeatureEdgeMesh>& features() const; - - //- Return the location to mesh - inline const point& locationInMesh() const; - - //- Return the surface indices - inline const labelList& surfaces() const; - - //- Return the patch names - inline const List<word>& patchNames() const; - - //- Return the global bounds - inline const treeBoundBox& globalBounds() const; - - - // Query - - //- Check if the supplied bound box overlaps any part of any of - // the surfaces - bool overlaps(const treeBoundBox& bb) const; - - //- Check if points are inside surfaces to conform to - Field<bool> inside(const pointField& samplePts) const; - - //- Check if point is inside surfaces to conform to - bool inside(const point& samplePt) const; - - //- Check if points are outside surfaces to conform to - Field<bool> outside(const pointField& samplePts) const; - - //- Check if point is outside surfaces to conform to - bool outside(const point& samplePt) const; - - //- Check if point is closer to the surfaces to conform to than - // testDistSqr, in which case return false, otherwise assess in or - // outside and return a result depending on the testForInside flag - Field<bool> wellInOutSide - ( - const pointField& samplePts, - const scalarField& testDistSqr, - bool testForInside - ) const; - - //- Check if point is inside surfaces to conform to by at least - // testDistSqr - Field<bool> wellInside - ( - const pointField& samplePts, - const scalarField& testDistSqr - ) const; - - bool wellInside - ( - const point& samplePt, - scalar testDistSqr - ) const; - - //- Check if point is outside surfaces to conform to by at least - // testDistSqr - Field<bool> wellOutside - ( - const pointField& samplePts, - const scalarField& testDistSqr - ) const; - - bool wellOutside - ( - const point& samplePt, - scalar testDistSqr - ) const; - - // Finding if the line joining start and end intersects the surface - bool findSurfaceAnyIntersection - ( - const point& start, - const point& end - ) const; - - //- Finding if the line joining start and end intersects the surface - // and returning the hit and surface information - void findSurfaceAnyIntersection - ( - const point& start, - const point& end, - pointIndexHit& surfHit, - label& hitSurface - ) const; - - //- Finding the nearestIntersection of the surface to start - void findSurfaceNearestIntersection - ( - const point& start, - const point& end, - pointIndexHit& surfHit, - label& hitSurface - ) const; - - //- Find the nearest point to the sample and return it to the - // pointIndexHit - void findSurfaceNearest - ( - const point& sample, - scalar nearestDistSqr, - pointIndexHit& surfHit, - label& hitSurface - ) const; - - void findSurfaceNearest - ( - const pointField& samples, - const scalarField& nearestDistSqr, - List<pointIndexHit>& hitInfo, - labelList& hitSurfaces - ) const; - - //- Find the nearest point on any feature edge - void findFeaturePointNearest - ( - const point& sample, - scalar nearestDistSqr, - pointIndexHit& fpHit, - label& featureHit - ) const; - - //- Find the nearest point on any feature edge - void findEdgeNearest - ( - const point& sample, - scalar nearestDistSqr, - pointIndexHit& edgeHit, - label& featureHit - ) const; - - void findEdgeNearest - ( - const pointField& samples, - const scalarField& nearestDistsSqr, - List<pointIndexHit>& edgeHits, - labelList& featuresHit - ) const; - - //- Find the nearest point on each type of feature edge - void findEdgeNearestByType - ( - const point& sample, - scalar nearestDistSqr, - List<pointIndexHit>& edgeHit, - List<label>& featuresHit - ) const; - - //- Find the nearest points on each feature edge that is within - // a given distance from the sample point. Will need to check for - // a hit or a miss because near edges may not have a nearest point - // on them which is perpendicular to the sample point. - void findAllNearestEdges - ( - const point& sample, - const scalar searchRadiusSqr, - List<List<pointIndexHit> >& edgeHitsByFeature, - List<label>& featuresHit - ) const; - - //- Find which patch is intersected by the line from one point to - // another - label findPatch(const point& ptA, const point& ptB) const; - - //- Find which patch is closest to the point - label findPatch(const point& pt) const; - - //- Is the surface a baffle - inline bool isBaffle(const label index) const; - - - // Write - - //- Write all components of all the extendedFeatureEdgeMeshes as - // an obj file - void writeFeatureObj(const fileName& prefix) const; - -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "conformationSurfacesI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfacesI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfacesI.H deleted file mode 100644 index a4a6595d315f0ea4fbe2dcd1f1d739f50dd6b943..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformationSurfaces/conformationSurfacesI.H +++ /dev/null @@ -1,71 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -const Foam::searchableSurfaces& Foam::conformationSurfaces::geometry() const -{ - return allGeometry_; -} - - -const Foam::PtrList<Foam::extendedFeatureEdgeMesh>& -Foam::conformationSurfaces::features() const -{ - return features_; -} - - -const Foam::point& Foam::conformationSurfaces::locationInMesh() const -{ - return locationInMesh_; -} - - -const Foam::labelList& Foam::conformationSurfaces::surfaces() const -{ - return surfaces_; -} - - -const Foam::List<Foam::word>& Foam::conformationSurfaces::patchNames() const -{ - return patchNames_; -} - - -const Foam::treeBoundBox& Foam::conformationSurfaces::globalBounds() const -{ - return globalBounds_; -} - - -bool Foam::conformationSurfaces::isBaffle(const label index) const -{ - return baffleSurfaces_[index]; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControls.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControls.C deleted file mode 100644 index 04ff4833146627f83cdeec7f448144726e89beae..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControls.C +++ /dev/null @@ -1,227 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "cvControls.H" -#include "conformalVoronoiMesh.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cvControls::cvControls -( - const dictionary& cvMeshDict -) -: - cvMeshDict_(cvMeshDict) -{ - // Surface conformation controls - - const dictionary& surfDict(cvMeshDict_.subDict("surfaceConformation")); - - pointPairDistanceCoeff_ = readScalar - ( - surfDict.lookup("pointPairDistanceCoeff") - ); - - mixedFeaturePointPPDistanceCoeff_ = readScalar - ( - surfDict.lookup("mixedFeaturePointPPDistanceCoeff") - ); - - featurePointExclusionDistanceCoeff_ = readScalar - ( - surfDict.lookup("featurePointExclusionDistanceCoeff") - ); - - featureEdgeExclusionDistanceCoeff_ = readScalar - ( - surfDict.lookup("featureEdgeExclusionDistanceCoeff") - ); - - specialiseFeaturePoints_ = Switch - ( - surfDict.lookup("specialiseFeaturePoints") - ); - - surfaceSearchDistanceCoeff_ = readScalar - ( - surfDict.lookup("surfaceSearchDistanceCoeff") - ); - - maxSurfaceProtrusionCoeff_ = readScalar - ( - surfDict.lookup("maxSurfaceProtrusionCoeff") - ); - - maxQuadAngle_ = readScalar(surfDict.lookup("maxQuadAngle")); - - surfaceConformationRebuildFrequency_ = max - ( - 1, - readLabel(surfDict.lookup("surfaceConformationRebuildFrequency")) - ); - - // Controls for coarse surface conformation - - const dictionary& conformationControlsDict - ( - surfDict.subDict("conformationControls") - ); - - surfacePtExclusionDistanceCoeff_ = readScalar - ( - conformationControlsDict.lookup("surfacePtExclusionDistanceCoeff") - ); - - edgeSearchDistCoeffSqr_ = sqr - ( - readScalar - ( - conformationControlsDict.lookup("edgeSearchDistCoeff") - ) - ); - - surfacePtReplaceDistCoeffSqr_ = sqr - ( - readScalar - ( - conformationControlsDict.lookup("surfacePtReplaceDistCoeff") - ) - ); - - maxConformationIterations_ = readLabel - ( - conformationControlsDict.lookup("maxIterations") - ); - - iterationToInitialHitRatioLimit_ = readScalar - ( - conformationControlsDict.lookup("iterationToInitialHitRatioLimit") - ); - - - // Motion control controls - - const dictionary& motionDict(cvMeshDict_.subDict("motionControl")); - - defaultCellSize_ = readScalar(motionDict.lookup("defaultCellSize")); - - minimumCellSize_ = readScalar(motionDict.lookup("minimumCellSize")); - - objOutput_ = Switch(motionDict.lookupOrDefault<Switch>("objOutput", false)); - - timeChecks_ = Switch - ( - motionDict.lookupOrDefault<Switch>("timeChecks", false) - ); - - if (Pstream::parRun()) - { - maxLoadUnbalance_ = readScalar(motionDict.lookup("maxLoadUnbalance")); - } - else - { - maxLoadUnbalance_ = -1; - } - - alignmentSearchSpokes_ = readLabel - ( - motionDict.lookup("alignmentSearchSpokes") - ); - - cosAlignmentAcceptanceAngle_ = cos - ( - degToRad(readScalar(motionDict.lookup("alignmentAcceptanceAngle"))) - ); - - sizeAndAlignmentRebuildFrequency_ = max - ( - 1, - readLabel(motionDict.lookup("sizeAndAlignmentRebuildFrequency")) - ); - - // Point removal criteria - - const dictionary& insertionDict - ( - motionDict.subDict("pointInsertionCriteria") - ); - - insertionDistCoeff_ = readScalar - ( - insertionDict.lookup("cellCentreDistCoeff") - ); - - faceAreaRatioCoeff_ = readScalar - ( - insertionDict.lookup("faceAreaRatioCoeff") - ); - - cosInsertionAcceptanceAngle_ = cos - ( - degToRad(readScalar(insertionDict.lookup("acceptanceAngle"))) - ); - - // Point removal criteria - - const dictionary& removalDict - ( - motionDict.subDict("pointRemovalCriteria") - ); - - removalDistCoeff_ = readScalar - ( - removalDict.lookup("cellCentreDistCoeff") - ); - - // polyMesh filtering controls - - const dictionary& filteringDict(cvMeshDict_.subDict("polyMeshFiltering")); - - filterEdges_ = Switch - ( - filteringDict.lookupOrDefault<Switch>("filterEdges", true) - ); - - filterFaces_ = Switch - ( - filteringDict.lookupOrDefault<Switch>("filterFaces", false) - ); - - if (filterFaces_) - { - filterEdges_ = Switch::ON; - } - - writeTetDualMesh_ = Switch(filteringDict.lookup("writeTetDualMesh")); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cvControls::~cvControls() -{} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControls.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControls.H deleted file mode 100644 index 884845e307c3c7416e3f6fd5d37a55e61e806f09..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControls.H +++ /dev/null @@ -1,333 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::cvControls - -Description - Controls for the conformalVoronoiMesh mesh generator - -SourceFiles - cvControls.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cvControls_H -#define cvControls_H - -#include "dictionary.H" -#include "Switch.H" -#include "vector.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// Forward declaration of classes -class conformalVoronoiMesh; - -/*---------------------------------------------------------------------------*\ - Class cvControls Declaration -\*---------------------------------------------------------------------------*/ - -class cvControls -{ - // Private data - - //- Reference to the cvMeshDict - const dictionary& cvMeshDict_; - - // Surface conformation controls - - //- Point pair spacing coefficient - fraction of the local target - // cell size - scalar pointPairDistanceCoeff_; - - //- Distance along feature edge to place mixed feature point - // conformation groups - to be multiple of pointPairDistanceCoeff_. - scalar mixedFeaturePointPPDistanceCoeff_; - - //- Distance to a feature point within which surface and edge - // conformation points are excluded - fraction of the local target - // cell size - scalar featurePointExclusionDistanceCoeff_; - - //- Distance to an existing feature edge conformation location - // within which other edge conformation location are excluded - - // fraction of the local target cell size - scalar featureEdgeExclusionDistanceCoeff_; - - //- Switch for using specialised feature points - Switch specialiseFeaturePoints_; - - //- Surface search distance coefficient - fraction of the local - // target cell size - scalar surfaceSearchDistanceCoeff_; - - //- Maximum allowable protrusion through the surface before - // conformation points are added - fraction of the local target - // cell size - scalar maxSurfaceProtrusionCoeff_; - - //- Maximum quadrant angle allowed at a concave edge before - // additional "mitering" lines are added - scalar maxQuadAngle_; - - //- Now often to rebuild the surface conformation - label surfaceConformationRebuildFrequency_; - - - // Controls for coarse surface conformation - - //- Distance to an existing surface conformation point location - // within which other surface point locations are excluded - // - fraction of the local target cell size - scalar surfacePtExclusionDistanceCoeff_; - - //- Distance to search for feature edges near to - // surface protrusions - fraction of the local target - // cell size. - scalar edgeSearchDistCoeffSqr_; - - //- Proximity to a feature edge where a surface hit is - // not created, only the edge conformation is created - // - fraction of the local target cell size. - scalar surfacePtReplaceDistCoeffSqr_; - - //- Maximum allowed number surface conformation iterations. - label maxConformationIterations_; - - //- Termination criterion for conformation iterations. - // When the number of surface protrusions drops below this - // ratio of the initial number of protrusions. - scalar iterationToInitialHitRatioLimit_; - - - // Motion control controls - - - // Cell size criteria - - //- Default cell size - scalar defaultCellSize_; - - //- Minimum cell size - scalar minimumCellSize_; - - - //- Switch to control the output of obj files for debug - Switch objOutput_; - - //- Switch to control the reporting of detailed timeChecks - Switch timeChecks_; - - //- Allowed relative load unbalance - scalar maxLoadUnbalance_; - - //- Number of "spokes" to use to search for secondary alignment - // direction - label alignmentSearchSpokes_; - - //- cosine of angle of alignment with required direction within which a - // face will be accepted for rotation - scalar cosAlignmentAcceptanceAngle_; - - //- Now often to re-store the size and alignment data - label sizeAndAlignmentRebuildFrequency_; - - - // Point insertion criteria - - //- Length between Delaunay vertices above which a new Dv should be - // inserted - fraction of the local target cell size - scalar insertionDistCoeff_; - - //- Minimum dual face area corresponding to long Delaunay edge where - // a new Dv is to be inserted - fraction of the local target cell - // size - scalar faceAreaRatioCoeff_; - - //- cosine of the angle of alignment with the required direction - // within which a long De will be accepted for a new Dv insertion - scalar cosInsertionAcceptanceAngle_; - - - // Point removal criteria - - //- Length between Delaunay vertices below which a Dv should be - // removed - fraction of the local target cell size - scalar removalDistCoeff_; - - - // polyMesh filtering controls - - //- Activates the mesh edge filtering. On by default. - Switch filterEdges_; - - //- Activates the mesh face filtering. Off by default. - Switch filterFaces_; - - //- Write tet mesh at output time (it always writes the Voronoi) - Switch writeTetDualMesh_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - cvControls(const cvControls&); - - //- Disallow default bitwise assignment - void operator=(const cvControls&); - - -public: - - // Constructors - - //- Construct from references to conformalVoronoiMesh and dictionary - cvControls - ( - const dictionary& cvMeshDict - ); - - - //- Destructor - ~cvControls(); - - - // Member Functions - - // Access - - //- Return the cvMeshDict - inline const dictionary& cvMeshDict() const; - - //- Return the pointPairDistanceCoeff - inline scalar pointPairDistanceCoeff() const; - - //- Return the mixedFeaturePointPPDistanceCoeff - inline scalar mixedFeaturePointPPDistanceCoeff() const; - - //- Return the featurePointExclusionDistanceCoeff - inline scalar featurePointExclusionDistanceCoeff() const; - - //- Return the featureEdgeExclusionDistanceCoeff - inline scalar featureEdgeExclusionDistanceCoeff() const; - - //- Return the surfacePtExclusionDistanceCoeff - inline scalar surfacePtExclusionDistanceCoeff() const; - - //- Return whether to use specialised feature points - inline Switch specialiseFeaturePoints() const; - - //- Return the surfaceSearchDistanceCoeff - inline scalar surfaceSearchDistanceCoeff() const; - - //- Return the maxSurfaceProtrusionCoeff - inline scalar maxSurfaceProtrusionCoeff() const; - - //- Return the maxQuadAngle - inline scalar maxQuadAngle() const; - - //- Return the surfaceConformationRebuildFrequency - inline label surfaceConformationRebuildFrequency() const; - - //- Return the edgeSearchDistCoeffSqr for conformation. - scalar edgeSearchDistCoeffSqr() const; - - //- Return the surfacePtReplaceDistCoeffSqr for conformation. - scalar surfacePtReplaceDistCoeffSqr() const; - - //- Return the maxConformationIterations - label maxConformationIterations() const; - - //- Return the iterationToInitialHitRatioLimit - scalar iterationToInitialHitRatioLimit() const; - - //- Return the defaultCellSize - inline scalar defaultCellSize() const; - - //- Return the minimumCellSize - inline scalar minimumCellSize() const; - - //- Return the objOutput Switch - inline Switch objOutput() const; - - //- Return the timeChecks Switch - inline Switch timeChecks() const; - - //- Return the maxLoadUnbalance - inline scalar maxLoadUnbalance() const; - - //- Return the number of alignmentSearchSpokes to use - inline label alignmentSearchSpokes() const; - - //- Return the cosAlignmentAcceptanceAngle - inline scalar cosAlignmentAcceptanceAngle() const; - - //- Return the sizeAndAlignmentRebuildFrequency - inline label sizeAndAlignmentRebuildFrequency() const; - - //- Return the aspectRatio - inline scalar aspectRatio() const; - - //- Return the aspectRatioDirection - inline const vector& aspectRatioDirection() const; - - //- Return the insertionDistCoeff - inline scalar insertionDistCoeff() const; - - //- Return the faceAreaRatioCoeff - inline scalar faceAreaRatioCoeff() const; - - //- Return the cosInsertionAcceptanceAngle - inline scalar cosInsertionAcceptanceAngle() const; - - //- Return removalDistCoeff - inline scalar removalDistCoeff() const; - - //- Filter edges at output time - inline Switch filterEdges() const; - - //- Filter faces at output time - inline Switch filterFaces() const; - - //- Write tetMesh at output time - inline Switch writeTetDualMesh() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "cvControlsI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControlsI.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControlsI.H deleted file mode 100644 index 6cccc292edf9bba6147c94d02674e590ff2b67c0..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cvControls/cvControlsI.H +++ /dev/null @@ -1,203 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -inline const Foam::dictionary& Foam::cvControls::cvMeshDict() const -{ - return cvMeshDict_; -} - - -inline Foam::scalar Foam::cvControls::pointPairDistanceCoeff() const -{ - return pointPairDistanceCoeff_; -} - - -inline Foam::scalar Foam::cvControls::mixedFeaturePointPPDistanceCoeff() const -{ - return mixedFeaturePointPPDistanceCoeff_; -} - - -inline Foam::scalar Foam::cvControls::featurePointExclusionDistanceCoeff() const -{ - return featurePointExclusionDistanceCoeff_; -} - - -inline Foam::scalar Foam::cvControls::featureEdgeExclusionDistanceCoeff() const -{ - return featureEdgeExclusionDistanceCoeff_; -} - -inline Foam::scalar Foam::cvControls::surfacePtExclusionDistanceCoeff() const -{ - return surfacePtExclusionDistanceCoeff_; -} - -inline Foam::Switch Foam::cvControls::specialiseFeaturePoints() const -{ - return specialiseFeaturePoints_; -} - -inline Foam::scalar Foam::cvControls::surfaceSearchDistanceCoeff() const -{ - return surfaceSearchDistanceCoeff_; -} - - -inline Foam::scalar Foam::cvControls::maxSurfaceProtrusionCoeff() const -{ - return maxSurfaceProtrusionCoeff_; -} - - -inline Foam::scalar Foam::cvControls::maxQuadAngle() const -{ - return maxQuadAngle_; -} - - -inline Foam::label Foam::cvControls::surfaceConformationRebuildFrequency() const -{ - return surfaceConformationRebuildFrequency_; -} - - -inline Foam::scalar Foam::cvControls::edgeSearchDistCoeffSqr() const -{ - return edgeSearchDistCoeffSqr_; -} - - -inline Foam::scalar Foam::cvControls::surfacePtReplaceDistCoeffSqr() const -{ - return surfacePtReplaceDistCoeffSqr_; -} - - -inline Foam::label Foam::cvControls::maxConformationIterations() const -{ - return maxConformationIterations_; -} - - -inline Foam::scalar Foam::cvControls::iterationToInitialHitRatioLimit() const -{ - return iterationToInitialHitRatioLimit_; -} - - -inline Foam::scalar Foam::cvControls::defaultCellSize() const -{ - return defaultCellSize_; -} - - -inline Foam::scalar Foam::cvControls::minimumCellSize() const -{ - return minimumCellSize_; -} - - -inline Foam::Switch Foam::cvControls::objOutput() const -{ - return objOutput_; -} - - -inline Foam::Switch Foam::cvControls::timeChecks() const -{ - return timeChecks_; -} - - -inline Foam::scalar Foam::cvControls::maxLoadUnbalance() const -{ - return maxLoadUnbalance_; -} - - -inline Foam::label Foam::cvControls::alignmentSearchSpokes() const -{ - return alignmentSearchSpokes_; -} - - -inline Foam::scalar Foam::cvControls::cosAlignmentAcceptanceAngle() const -{ - return cosAlignmentAcceptanceAngle_; -} - - -inline Foam::label Foam::cvControls::sizeAndAlignmentRebuildFrequency() const -{ - return sizeAndAlignmentRebuildFrequency_; -} - - -inline Foam::scalar Foam::cvControls::insertionDistCoeff() const -{ - return insertionDistCoeff_; -} - - -inline Foam::scalar Foam::cvControls::faceAreaRatioCoeff() const -{ - return faceAreaRatioCoeff_; -} - - -inline Foam::scalar Foam::cvControls::cosInsertionAcceptanceAngle() const -{ - return cosInsertionAcceptanceAngle_; -} - - -inline Foam::scalar Foam::cvControls::removalDistCoeff() const -{ - return removalDistCoeff_; -} - - -inline Foam::Switch Foam::cvControls::filterEdges() const -{ - return filterEdges_; -} - -inline Foam::Switch Foam::cvControls::filterFaces() const -{ - return filterFaces_; -} - -inline Foam::Switch Foam::cvControls::writeTetDualMesh() const -{ - return writeTetDualMesh_; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.C deleted file mode 100644 index 88c1e0bef4b6b80a9f5500c5a18df0d42ac79a0b..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.C +++ /dev/null @@ -1,99 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "faceAreaWeightModel.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -defineTypeNameAndDebug(faceAreaWeightModel, 0); -defineRunTimeSelectionTable(faceAreaWeightModel, dictionary); - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -faceAreaWeightModel::faceAreaWeightModel -( - const word& type, - const dictionary& relaxationDict -) -: - dictionary(relaxationDict), - coeffDict_(subDict(type + "Coeffs")) -{} - - -// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // - -autoPtr<faceAreaWeightModel> faceAreaWeightModel::New -( - const dictionary& relaxationDict -) -{ - word faceAreaWeightModelTypeName - ( - relaxationDict.lookup("faceAreaWeightModel") - ); - - Info<< nl << "Selecting faceAreaWeightModel " - << faceAreaWeightModelTypeName << endl; - - dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(faceAreaWeightModelTypeName); - - if (cstrIter == dictionaryConstructorTablePtr_->end()) - { - FatalErrorIn - ( - "faceAreaWeightModel::New(const dictionary&, " - "const conformalVoronoiMesh&)" - ) << "Unknown faceAreaWeightModel type " - << faceAreaWeightModelTypeName - << endl << endl - << "Valid faceAreaWeightModel types are :" << endl - << dictionaryConstructorTablePtr_->toc() - << exit(FatalError); - } - - return autoPtr<faceAreaWeightModel>(cstrIter()(relaxationDict)); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -faceAreaWeightModel::~faceAreaWeightModel() -{} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.H deleted file mode 100644 index d7afd964a6d7b0debcdd68d92172a66680681bd9..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/faceAreaWeightModel/faceAreaWeightModel.H +++ /dev/null @@ -1,142 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::faceAreaWeightModel - -Description - Abstract base class for providing faceAreaWeight values to the cell motion - controller based on an argument faceAreaFraction value, typically the ratio - of the area of the face in question to the area of a square face with a side - length of the local target cell size. - -SourceFiles - faceAreaWeightModel.C - -\*---------------------------------------------------------------------------*/ - -#ifndef faceAreaWeightModel_H -#define faceAreaWeightModel_H - -#include "point.H" -#include "dictionary.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class faceAreaWeightModel Declaration -\*---------------------------------------------------------------------------*/ - -class faceAreaWeightModel -: - public dictionary -{ - -protected: - - // Protected data - - //- Method coeffs dictionary - dictionary coeffDict_; - -private: - - // Private Member Functions - - //- Disallow default bitwise copy construct - faceAreaWeightModel(const faceAreaWeightModel&); - - //- Disallow default bitwise assignment - void operator=(const faceAreaWeightModel&); - - -public: - - //- Runtime type information - TypeName("faceAreaWeightModel"); - - - // Declare run-time constructor selection table - - declareRunTimeSelectionTable - ( - autoPtr, - faceAreaWeightModel, - dictionary, - ( - const dictionary& faceAreaWeightDict - ), - (faceAreaWeightDict) - ); - - - // Constructors - - //- Construct from components - faceAreaWeightModel - ( - const word& type, - const dictionary& faceAreaWeightDict - ); - - - // Selectors - - //- Return a reference to the selected faceAreaWeightModel - static autoPtr<faceAreaWeightModel> New - ( - const dictionary& faceAreaWeightDict - ); - - - //- Destructor - virtual ~faceAreaWeightModel(); - - - // Member Functions - - //- Const access to the coeffs dictionary - const dictionary& coeffDict() const - { - return coeffDict_; - } - - //- Return the current faceAreaWeight coefficient - virtual scalar faceAreaWeight(scalar faceAreaFraction) const = 0; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/piecewiseLinearRamp/piecewiseLinearRamp.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/piecewiseLinearRamp/piecewiseLinearRamp.C deleted file mode 100644 index 07496e351777324c62ce6df3f625604b27f1dd6b..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/piecewiseLinearRamp/piecewiseLinearRamp.C +++ /dev/null @@ -1,80 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "piecewiseLinearRamp.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(piecewiseLinearRamp, 0); -addToRunTimeSelectionTable -( - faceAreaWeightModel, - piecewiseLinearRamp, - dictionary -); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -piecewiseLinearRamp::piecewiseLinearRamp -( - const dictionary& faceAreaWeightDict -) -: - faceAreaWeightModel(typeName, faceAreaWeightDict), - lAF_(readScalar(coeffDict().lookup("lowerAreaFraction"))), - uAF_(readScalar(coeffDict().lookup("upperAreaFraction"))) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -scalar piecewiseLinearRamp::faceAreaWeight(scalar faceAreaFraction) const -{ - if (faceAreaFraction < lAF_) - { - return 0; - } - else if (faceAreaFraction < uAF_) - { - return faceAreaFraction/((uAF_ - lAF_)) - lAF_/(uAF_ - lAF_); - } - else - { - return 1; - } -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/piecewiseLinearRamp/piecewiseLinearRamp.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/piecewiseLinearRamp/piecewiseLinearRamp.H deleted file mode 100644 index 58fd55da039529a8e7501ef39b8ff662d0e55b6c..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/faceAreaWeightModel/piecewiseLinearRamp/piecewiseLinearRamp.H +++ /dev/null @@ -1,98 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::piecewiseLinearRamp - -Description - A linear ramp between 0 and 1 with definable start and end points. - -SourceFiles - piecewiseLinearRamp.C - -\*---------------------------------------------------------------------------*/ - -#ifndef piecewiseLinearRamp_H -#define piecewiseLinearRamp_H - -#include "faceAreaWeightModel.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class piecewiseLinearRamp Declaration -\*---------------------------------------------------------------------------*/ - -class piecewiseLinearRamp -: - public faceAreaWeightModel -{ - -private: - - // Private data - - //- Face area fraction below which a weight of 0 is returned - scalar lAF_; - - //- Face area fraction above which a which of 1 is returned - scalar uAF_; - -public: - - //- Runtime type information - TypeName("piecewiseLinearRamp"); - - // Constructors - - //- Construct from components - piecewiseLinearRamp - ( - const dictionary& faceAreaWeightDict - ); - - - //- Destructor - virtual ~piecewiseLinearRamp() - {} - - - // Member Functions - - //- Return the faceAreaWeight - virtual scalar faceAreaWeight(scalar faceAreaFraction) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/autoDensity/autoDensity.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/autoDensity/autoDensity.C deleted file mode 100644 index 0aace4f77fca09c19a7c72a0d1873672bdd62762..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/autoDensity/autoDensity.C +++ /dev/null @@ -1,947 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "autoDensity.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(autoDensity, 0); -addToRunTimeSelectionTable -( - initialPointsMethod, - autoDensity, - dictionary -); - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -void Foam::autoDensity::writeOBJ -( - const treeBoundBox& bb, - fileName name -) const -{ - OFstream str(cvMesh_.time().path()/name + ".obj"); - - Pout<< "Writing " << str.name() << endl; - - pointField bbPoints(bb.points()); - - forAll(bbPoints, i) - { - meshTools::writeOBJ(str, bbPoints[i]); - } - - forAll(treeBoundBox::edges, i) - { - const edge& e = treeBoundBox::edges[i]; - - str << "l " << e[0] + 1 << ' ' << e[1] + 1 << nl; - } -} - -bool Foam::autoDensity::combinedOverlaps(const treeBoundBox& box) const -{ - if (Pstream::parRun()) - { - return - cvMesh_.decomposition().overlapsThisProcessor(box) - || cvMesh_.geometryToConformTo().overlaps(box); - } - - return cvMesh_.geometryToConformTo().overlaps(box); -} - - -bool Foam::autoDensity::combinedInside(const point& p) const -{ - if (Pstream::parRun()) - { - return - cvMesh_.decomposition().positionOnThisProcessor(p) - && cvMesh_.geometryToConformTo().inside(p); - } - - return cvMesh_.geometryToConformTo().inside(p); -} - - -Foam::Field<bool> Foam::autoDensity::combinedWellInside -( - const pointField& pts, - const scalarField& sizes -) const -{ - if (!Pstream::parRun()) - { - return cvMesh_.geometryToConformTo().wellInside - ( - pts, - minimumSurfaceDistanceCoeffSqr_*sqr(sizes) - ); - } - - Field<bool> inside(pts.size(), true); - - // Perform AND operation between testing the surfaces and the previous - // field, i.e the parallel result, or in serial, with true. - - Field<bool> insideA - ( - cvMesh_.geometryToConformTo().wellInside - ( - pts, - minimumSurfaceDistanceCoeffSqr_*sqr(sizes) - ) - ); - - Field<bool> insideB(cvMesh_.decomposition().positionOnThisProcessor(pts)); - - // inside = insideA && insideB; - - // Pout<< insideA << nl << insideB << endl; - - forAll(inside, i) - { - // if (inside[i] != (insideA[i] && insideB[i])) - // { - // Pout<< i << " not equal " << " " - // << pts[i] << " " << sizes[i] << " " - // << insideA[i] << " " - // << insideB[i] << " " - // << inside[i] - // << endl; - // } - - inside[i] = (insideA[i] && insideB[i]); - } - - return inside; -} - - -bool Foam::autoDensity::combinedWellInside -( - const point& p, - scalar size -) const -{ - bool inside = true; - - if (Pstream::parRun()) - { - inside = cvMesh_.decomposition().positionOnThisProcessor(p); - } - - // Perform AND operation between testing the surfaces and the previous - // result, i.e the parallel result, or in serial, with true. - inside = - inside - && cvMesh_.geometryToConformTo().wellInside - ( - p, - minimumSurfaceDistanceCoeffSqr_*sqr(size) - ); - - return inside; -} - - -void Foam::autoDensity::recurseAndFill -( - DynamicList<Vb::Point>& initialPoints, - const treeBoundBox& bb, - label levelLimit, - word recursionName -) const -{ - for (direction i = 0; i < 8; i++) - { - treeBoundBox subBB = bb.subBbox(i); - - word newName = recursionName + "_" + Foam::name(i); - - if (debug) - { - cvMesh_.timeCheck(newName); - } - - if (combinedOverlaps(subBB)) - { - if (levelLimit > 0) - { - recurseAndFill - ( - initialPoints, - subBB, - levelLimit - 1, - newName - ); - } - else - { - if (debug) - { - writeOBJ - ( - subBB, - word(newName + "_overlap") - ); - - Pout<< newName + "_overlap " << subBB << endl; - } - - if (!fillBox(initialPoints, subBB, true)) - { - recurseAndFill - ( - initialPoints, - subBB, - levelLimit - 1, - newName - ); - } - } - } - else if (combinedInside(subBB.midpoint())) - { - if (debug) - { - writeOBJ - ( - subBB, - newName + "_inside" - ); - - Pout<< newName + "_inside " << subBB << endl; - } - - if (!fillBox(initialPoints, subBB, false)) - { - recurseAndFill - ( - initialPoints, - subBB, - levelLimit - 1, - newName - ); - } - } - else - { - if (debug) - { - writeOBJ - ( - subBB, - newName + "_outside" - ); - } - } - } -} - - -bool Foam::autoDensity::fillBox -( - DynamicList<Vb::Point>& initialPoints, - const treeBoundBox& bb, - bool overlapping -) const -{ - const conformationSurfaces& geometry(cvMesh_.geometryToConformTo()); - - Random& rnd = cvMesh_.rndGen(); - - unsigned int initialSize = initialPoints.size(); - - scalar maxCellSize = -GREAT; - - scalar minCellSize = GREAT; - - scalar maxDensity = 1/pow3(minCellSize); - - scalar volumeAdded = 0.0; - - const point& min = bb.min(); - - vector span = bb.span(); - - scalar totalVolume = bb.volume(); - - label trialPoints = 0; - - bool wellInside = false; - - if (!overlapping) - { - // Check the nearest point on the surface to the box, if it is far - // enough away, then the surface sampling of the box can be skipped. - // Checking if the nearest piece of surface is at least 1.5*bb.span away - // from the bb.midpoint. - - pointIndexHit surfHit; - label hitSurface; - - geometry.findSurfaceNearest - ( - bb.midpoint(), - 2.25*magSqr(span), - surfHit, - hitSurface - ); - - if (!surfHit.hit()) - { - if (debug) - { - Pout<< "box wellInside, no need to sample surface." << endl; - } - - wellInside = true; - } - } - - if (!overlapping && !wellInside) - { - // If this is an inside box then then it is possible to fill points very - // close to the boundary, to prevent this, check the corners and sides - // of the box so ensure that they are "wellInside". If not, set as an - // overlapping box. - - pointField corners(bb.points()); - - scalarField cornerSizes = cvMesh_.cellShapeControls().cellSize(corners); - - Field<bool> insideCorners = combinedWellInside(corners, cornerSizes); - - // Pout<< corners << nl << cornerSizes << nl << insideCorners << endl; - - forAll(insideCorners, i) - { - // Use the sizes to improve the min/max cell size estimate - scalar s = cornerSizes[i]; - - if (s > maxCellSize) - { - maxCellSize = s; - } - - if (s < minCellSize) - { - minCellSize = max(s, minCellSizeLimit_); - } - - if (maxCellSize/minCellSize > maxSizeRatio_) - { - if (debug) - { - Pout<< "Abort fill at corner sample stage," - << " minCellSize " << minCellSize - << " maxCellSize " << maxCellSize - << " maxSizeRatio " << maxCellSize/minCellSize - << endl; - } - - return false; - } - - if (!insideCorners[i]) - { - // If one or more corners is not "wellInside", then treat this - // as an overlapping box. - - if (debug) - { - Pout<< "Inside box found to have some non-wellInside " - << "corners, using overlapping fill." - << endl; - } - - overlapping = true; - - break; - } - } - - if (!overlapping) - { - vector delta = span/(surfRes_ - 1); - - label nLine = 6*(surfRes_ - 2); - - pointField linePoints(nLine, vector::zero); - - scalarField lineSizes(nLine, 0.0); - - for (label i = 0; i < surfRes_; i++) - { - label lPI = 0; - - for (label j = 1; j < surfRes_ - 1 ; j++) - { - linePoints[lPI++] = - min - + vector(0, delta.y()*i, delta.z()*j); - - linePoints[lPI++] = - min - + vector - ( - delta.x()*(surfRes_ - 1), - delta.y()*i, - delta.z()*j - ); - - linePoints[lPI++] = - min - + vector(delta.x()*j, 0, delta.z()*i); - - linePoints[lPI++] = - min - + vector - ( - delta.x()*j, - delta.y()*(surfRes_ - 1), - delta.z()*i - ); - - linePoints[lPI++] = - min - + vector(delta.x()*i, delta.y()*j, 0); - - linePoints[lPI++] = - min - + vector - ( - delta.x()*i, - delta.y()*j, - delta.z()*(surfRes_ - 1) - ); - } - - lineSizes = cvMesh_.cellShapeControls().cellSize(linePoints); - - Field<bool> insideLines = combinedWellInside - ( - linePoints, - lineSizes - ); - - forAll(insideLines, i) - { - // Use the sizes to improve the min/max cell size estimate - scalar s = lineSizes[i]; - - if (s > maxCellSize) - { - maxCellSize = s; - } - - if (s < minCellSize) - { - minCellSize = max(s, minCellSizeLimit_); - } - - if (maxCellSize/minCellSize > maxSizeRatio_) - { - if (debug) - { - Pout<< "Abort fill at surface sample stage, " - << " minCellSize " << minCellSize - << " maxCellSize " << maxCellSize - << " maxSizeRatio " << maxCellSize/minCellSize - << endl; - } - - return false; - } - - if (!insideLines[i]) - { - // If one or more surface points is not "wellInside", - // then treat this as an overlapping box. - overlapping = true; - - if (debug) - { - Pout<< "Inside box found to have some non-" - << "wellInside surface points, using " - << "overlapping fill." - << endl; - } - - break; - } - } - } - } - } - - if (overlapping) - { - // Sample the box to find an estimate of the min size, and a volume - // estimate when overlapping == true. - - pointField samplePoints - ( - volRes_*volRes_*volRes_, - vector::zero - ); - - vector delta = span/volRes_; - - label pI = 0; - - for (label i = 0; i < volRes_; i++) - { - for (label j = 0; j < volRes_; j++) - { - for (label k = 0; k < volRes_; k++) - { - // Perturb the points to avoid creating degenerate positions - // in the Delaunay tessellation. - - samplePoints[pI++] = - min - + vector - ( - delta.x()*(i + 0.5 + 0.1*(rnd.scalar01() - 0.5)), - delta.y()*(j + 0.5 + 0.1*(rnd.scalar01() - 0.5)), - delta.z()*(k + 0.5 + 0.1*(rnd.scalar01() - 0.5)) - ); - } - } - } - - // Randomise the order of the points to (potentially) improve the speed - // of assessing the density ratio, and prevent a box being filled from a - // corner when only some these points are required. - shuffle(samplePoints); - - scalarField sampleSizes = cvMesh_.cellShapeControls().cellSize - ( - samplePoints - ); - - Field<bool> insidePoints = combinedWellInside - ( - samplePoints, - sampleSizes - ); - - label nInside = 0; - - forAll(insidePoints, i) - { - if (insidePoints[i]) - { - nInside++; - - scalar s = sampleSizes[i]; - - if (s > maxCellSize) - { - maxCellSize = s; - } - - if (s < minCellSize) - { - minCellSize = max(s, minCellSizeLimit_); - } - - if (maxCellSize/minCellSize > maxSizeRatio_) - { - if (debug) - { - Pout<< "Abort fill at sample stage," - << " minCellSize " << minCellSize - << " maxCellSize " << maxCellSize - << " maxSizeRatio " << maxCellSize/minCellSize - << endl; - } - - return false; - } - } - } - - if (nInside == 0) - { - if (debug) - { - Pout<< "No sample points found inside box" << endl; - } - - return true; - } - - if (debug) - { - Pout<< scalar(nInside)/scalar(samplePoints.size()) - << " full overlapping box" << endl; - } - - totalVolume *= scalar(nInside)/scalar(samplePoints.size()); - - if (debug) - { - Pout<< "Total volume to fill = " << totalVolume << endl; - } - - // Using the sampledPoints as the first test locations as they are - // randomly shuffled, but unfiormly sampling space and have wellInside - // and size data already - - maxDensity = 1/pow3(max(minCellSize, SMALL)); - - forAll(insidePoints, i) - { - if (insidePoints[i]) - { - trialPoints++; - - point p = samplePoints[i]; - - scalar localSize = sampleSizes[i]; - - scalar localDensity = 1/pow3(localSize); - - // No need to look at max/min cell size here, already handled - // by sampling - - // Accept possible placements proportional to the relative - // local density - - // TODO - is there a lot of cost in the 1/density calc? Could - // assess on - // (1/maxDensity)/(1/localDensity) = minVolume/localVolume - if (localDensity/maxDensity > rnd.scalar01()) - { - scalar localVolume = 1/localDensity; - - if (volumeAdded + localVolume > totalVolume) - { - // Add the final box with a probability of to the ratio - // of the remaining volume to the volume to be added, - // i.e. insert a box of volume 0.5 into a remaining - // volume of 0.1 20% of the time. - scalar addProbability = - (totalVolume - volumeAdded)/localVolume; - - scalar r = rnd.scalar01(); - - if (debug) - { - Pout<< "totalVolume " << totalVolume << nl - << "volumeAdded " << volumeAdded << nl - << "localVolume " << localVolume << nl - << "addProbability " << addProbability << nl - << "random " << r - << endl; - } - - if (addProbability > r) - { - // Place this volume before finishing filling this - // box - - // Pout<< "Final volume probability break accept" - // << endl; - - initialPoints.append - ( - Vb::Point(p.x(), p.y(), p.z()) - ); - - volumeAdded += localVolume; - } - - break; - } - - initialPoints.append(Vb::Point(p.x(), p.y(), p.z())); - - volumeAdded += localVolume; - } - } - } - } - - if (volumeAdded < totalVolume) - { - if (debug) - { - Pout<< "Adding random points, remaining volume " - << totalVolume - volumeAdded - << endl; - } - - maxDensity = 1/pow3(max(minCellSize, SMALL)); - - while (true) - { - trialPoints++; - - point p = min + cmptMultiply(span, rnd.vector01()); - - scalar localSize = cvMesh_.cellShapeControls().cellSize(p); - - bool insidePoint = false; - - if (!overlapping) - { - insidePoint = true; - } - else - { - // Determine if the point is "wellInside" the domain - insidePoint = combinedWellInside(p, localSize); - } - - if (insidePoint) - { - if (localSize > maxCellSize) - { - maxCellSize = localSize; - } - - if (localSize < minCellSize) - { - minCellSize = max(localSize, minCellSizeLimit_); - - localSize = minCellSize; - - // 1/(minimum cell size)^3, gives the maximum permissible - // point density - maxDensity = 1/pow3(max(minCellSize, SMALL)); - } - - if (maxCellSize/minCellSize > maxSizeRatio_) - { - if (debug) - { - Pout<< "Abort fill at random fill stage," - << " minCellSize " << minCellSize - << " maxCellSize " << maxCellSize - << " maxSizeRatio " << maxCellSize/minCellSize - << endl; - } - - // Discard any points already filled into this box by - // setting size of initialPoints back to its starting value - initialPoints.resize(initialSize); - - return false; - } - - scalar localDensity = 1/pow3(max(localSize, SMALL)); - - // Accept possible placements proportional to the relative local - // density - if (localDensity/maxDensity > rnd.scalar01()) - { - scalar localVolume = 1/localDensity; - - if (volumeAdded + localVolume > totalVolume) - { - // Add the final box with a probability of to the ratio - // of the remaining volume to the volume to be added, - // i.e. insert a box of volume 0.5 into a remaining - // volume of 0.1 20% of the time. - scalar addProbability = - (totalVolume - volumeAdded)/localVolume; - - scalar r = rnd.scalar01(); - - if (debug) - { - Pout<< "totalVolume " << totalVolume << nl - << "volumeAdded " << volumeAdded << nl - << "localVolume " << localVolume << nl - << "addProbability " << addProbability << nl - << "random " << r - << endl; - } - - if (addProbability > r) - { - // Place this volume before finishing filling this - // box - - // Pout<< "Final volume probability break accept" - // << endl; - - initialPoints.append - ( - Vb::Point(p.x(), p.y(), p.z()) - ); - - volumeAdded += localVolume; - } - - break; - } - - initialPoints.append(Vb::Point(p.x(), p.y(), p.z())); - - volumeAdded += localVolume; - } - } - } - } - - globalTrialPoints_ += trialPoints; - - if (debug) - { - Pout<< trialPoints - << " locations queried, " << initialPoints.size() - initialSize - << " points placed, (" - << scalar(initialPoints.size() - initialSize) - /scalar(max(trialPoints, 1)) - << " success rate)." << nl - << "minCellSize " << minCellSize - << ", maxCellSize " << maxCellSize - << ", ratio " << maxCellSize/minCellSize - << nl << endl; - } - - return true; -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -autoDensity::autoDensity -( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh -) -: - initialPointsMethod(typeName, initialPointsDict, cvMesh), - globalTrialPoints_(0), - minCellSizeLimit_ - ( - detailsDict().lookupOrDefault<scalar>("minCellSizeLimit", 0.0) - ), - minLevels_(readLabel(detailsDict().lookup("minLevels"))), - maxSizeRatio_(readScalar(detailsDict().lookup("maxSizeRatio"))), - volRes_(readLabel(detailsDict().lookup("sampleResolution"))), - surfRes_ - ( - detailsDict().lookupOrDefault<label>("surfaceSampleResolution", volRes_) - ) -{ - if (maxSizeRatio_ <= 1.0) - { - maxSizeRatio_ = 2.0; - - WarningIn - ( - "autoDensity::autoDensity" - "(" - "const dictionary& initialPointsDict," - "const conformalVoronoiMesh& cvMesh" - ")" - ) - << "The maxSizeRatio must be greater than one to be sensible, " - << "setting to " << maxSizeRatio_ - << endl; - } -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -List<Vb::Point> autoDensity::initialPoints() const -{ - treeBoundBox hierBB; - - // Pick up the bounds of this processor, or the whole geometry, depending - // on whether this is a parallel run. - if (Pstream::parRun()) - { - hierBB = cvMesh_.decomposition().procBounds(); - } - else - { - // Extend the global box to move it off large plane surfaces - hierBB = cvMesh_.geometryToConformTo().globalBounds().extend - ( - cvMesh_.rndGen(), - 1e-6 - ); - } - - DynamicList<Vb::Point> initialPoints; - - Info<< nl << " " << typeName << endl; - - if (debug) - { - Pout<< " Filling box " << hierBB << endl; - } - - recurseAndFill - ( - initialPoints, - hierBB, - minLevels_ - 1, - "recursionBox" - ); - - initialPoints.shrink(); - - label nInitialPoints = initialPoints.size(); - - if (Pstream::parRun()) - { - reduce(nInitialPoints, sumOp<label>()); - reduce(globalTrialPoints_, sumOp<label>()); - } - - Info<< " " << nInitialPoints << " points placed" << nl - << " " << globalTrialPoints_ << " locations queried" << nl - << " " - << scalar(nInitialPoints)/scalar(max(globalTrialPoints_, 1)) - << " success rate" - << endl; - - return initialPoints; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/autoDensity/autoDensity.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/autoDensity/autoDensity.H deleted file mode 100644 index 2ef7cb00b0e3fa6b737526dff9918acd94bdeac7..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/autoDensity/autoDensity.H +++ /dev/null @@ -1,171 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::autoDensity - -Description - Choose random points inside the domain and place them with a probability - proportional to the target density of points. - -SourceFiles - autoDensity.C - -\*---------------------------------------------------------------------------*/ - -#ifndef autoDensity_H -#define autoDensity_H - -#include "initialPointsMethod.H" -#include "treeBoundBox.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class autoDensity Declaration -\*---------------------------------------------------------------------------*/ - -class autoDensity -: - public initialPointsMethod -{ - -private: - - // Private data - - //- Trial points attempted to be placed in all boxes - mutable label globalTrialPoints_; - - //- Smallest minimum cell size allowed, i.e. to avoid high initial - // population of areas of small size - scalar minCellSizeLimit_; - - //- Minimum normal level of recursion, can be more if a high density - // ratio is detected - label minLevels_; - - //- Maximum allowed ratio of cell size in a box - scalar maxSizeRatio_; - - //- How fine should the initial sample of the volume a box be to - // investigate its cell sizes and volume fraction - label volRes_; - - //- How fine should the initial sample of the surface of a box be to - // investigate if it is near to a the geometry. - label surfRes_; - - - // Private Member Functions - - //- Check if the given box overlaps the geometry or, in parallel, the - // backgroundMeshDecomposition - bool combinedOverlaps(const treeBoundBox& box) const; - - //- Check if the given point is inside the geometry and, in parallel, - // the backgroundMeshDecomposition - bool combinedInside(const point& p) const; - - //- Check if the given points are wellInside the geometry and, in - // parallel, inside the backgroundMeshDecomposition - Field<bool> combinedWellInside - ( - const pointField& pts, - const scalarField& sizes - ) const; - - //- Check if the given points are wellInside the geometry and, in - // parallel, inside the backgroundMeshDecomposition - bool combinedWellInside - ( - const point& p, - scalar size - ) const; - - //- Write boundBox as obj - void writeOBJ - ( - const treeBoundBox& bb, - fileName name - ) const; - - //- Descend into octants of the supplied bound box - void recurseAndFill - ( - DynamicList<Vb::Point>& initialPoints, - const treeBoundBox& bb, - label levelLimit, - word recursionName - ) const; - - //- Fill the given box, optionally filling surface overlapping boxes. - // Returns true if the fill is successful, false if it is to be aborted - // in favour of further recursion. - bool fillBox - ( - DynamicList<Vb::Point>& initialPoints, - const treeBoundBox& bb, - bool overlapping - ) const; - - -public: - - //- Runtime type information - TypeName("autoDensity"); - - // Constructors - - //- Construct from components - autoDensity - ( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh - ); - - - //- Destructor - virtual ~autoDensity() - {} - - - // Member Functions - - //- Return the initial points for the conformalVoronoiMesh - virtual List<Vb::Point> initialPoints() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/bodyCentredCubic/bodyCentredCubic.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/bodyCentredCubic/bodyCentredCubic.C deleted file mode 100644 index c69e7ac8fb314d334c595d103e9dd70ffe7fd9fc..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/bodyCentredCubic/bodyCentredCubic.C +++ /dev/null @@ -1,194 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "bodyCentredCubic.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(bodyCentredCubic, 0); -addToRunTimeSelectionTable(initialPointsMethod, bodyCentredCubic, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -bodyCentredCubic::bodyCentredCubic -( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh -) -: - initialPointsMethod(typeName, initialPointsDict, cvMesh), - initialCellSize_(readScalar(detailsDict().lookup("initialCellSize"))), - randomiseInitialGrid_(detailsDict().lookup("randomiseInitialGrid")), - randomPerturbationCoeff_ - ( - readScalar(detailsDict().lookup("randomPerturbationCoeff")) - ) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -List<Vb::Point> bodyCentredCubic::initialPoints() const -{ - boundBox bb; - - // Pick up the bounds of this processor, or the whole geometry, depending - // on whether this is a parallel run. - if (Pstream::parRun()) - { - bb = cvMesh_.decomposition().procBounds(); - } - else - { - bb = cvMesh_.geometryToConformTo().globalBounds(); - } - - scalar x0 = bb.min().x(); - scalar xR = bb.max().x() - x0; - label ni = label(xR/initialCellSize_); - - scalar y0 = bb.min().y(); - scalar yR = bb.max().y() - y0; - label nj = label(yR/initialCellSize_); - - scalar z0 = bb.min().z(); - scalar zR = bb.max().z() - z0; - label nk = label(zR/initialCellSize_); - - vector delta(xR/ni, yR/nj, zR/nk); - - delta *= pow((1.0/2.0),-(1.0/3.0)); - - Random& rndGen = cvMesh_.rndGen(); - - scalar pert = randomPerturbationCoeff_*cmptMin(delta); - - DynamicList<Vb::Point> initialPoints(ni*nj*nk/10); - - for (label i = 0; i < ni; i++) - { - for (label j = 0; j < nj; j++) - { - // Generating, testing and adding points one line at a time to - // reduce the memory requirement for cases with bounding boxes that - // are very large in comparison to the volume to be filled - - label pI = 0; - - pointField points(2*nk); - - for (label k = 0; k < nk; k++) - { - point pA - ( - x0 + i*delta.x(), - y0 + j*delta.y(), - z0 + k*delta.z() - ); - - point pB = pA + 0.5*delta; - - if (randomiseInitialGrid_) - { - pA.x() += pert*(rndGen.scalar01() - 0.5); - pA.y() += pert*(rndGen.scalar01() - 0.5); - pA.z() += pert*(rndGen.scalar01() - 0.5); - } - - if (Pstream::parRun()) - { - if (cvMesh_.decomposition().positionOnThisProcessor(pA)) - { - // Add this point in parallel only if this position is - // on this processor. - points[pI++] = pA; - } - } - else - { - points[pI++] = pA; - } - - if (randomiseInitialGrid_) - { - pB.x() += pert*(rndGen.scalar01() - 0.5); - pB.y() += pert*(rndGen.scalar01() - 0.5); - pB.z() += pert*(rndGen.scalar01() - 0.5); - } - - if (Pstream::parRun()) - { - if (cvMesh_.decomposition().positionOnThisProcessor(pB)) - { - // Add this point in parallel only if this position is - // on this processor. - points[pI++] = pB; - } - } - else - { - points[pI++] = pB; - } - } - - points.setSize(pI); - - Field<bool> insidePoints = cvMesh_.geometryToConformTo().wellInside - ( - points, - minimumSurfaceDistanceCoeffSqr_ - *sqr - ( - cvMesh_.cellShapeControls().cellSize(points) - ) - ); - - forAll(insidePoints, i) - { - if (insidePoints[i]) - { - const point& p(points[i]); - - initialPoints.append(Vb::Point(p.x(), p.y(), p.z())); - } - } - } - } - - return initialPoints.shrink(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/bodyCentredCubic/bodyCentredCubic.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/bodyCentredCubic/bodyCentredCubic.H deleted file mode 100644 index f75fa599d39e64a6a76f725e8378036f2bf17608..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/bodyCentredCubic/bodyCentredCubic.H +++ /dev/null @@ -1,104 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::bodyCentredCubic - -Description - Generate a BCC lattice of points inside the surfaces to be - conformed to of the conformalVoronoiMesh - -SourceFiles - bodyCentredCubic.C - -\*---------------------------------------------------------------------------*/ - -#ifndef bodyCentredCubic_H -#define bodyCentredCubic_H - -#include "initialPointsMethod.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class bodyCentredCubic Declaration -\*---------------------------------------------------------------------------*/ - -class bodyCentredCubic -: - public initialPointsMethod -{ - -private: - - // Private data - - //- The initial cell spacing - scalar initialCellSize_; - - //- Should the initial positions be randomised - Switch randomiseInitialGrid_; - - //- Randomise the initial positions by fraction of the initialCellSize_ - scalar randomPerturbationCoeff_; - - -public: - - //- Runtime type information - TypeName("bodyCentredCubic"); - - // Constructors - - //- Construct from components - bodyCentredCubic - ( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh - ); - - - //- Destructor - virtual ~bodyCentredCubic() - {} - - - // Member Functions - - //- Return the initial points for the conformalVoronoiMesh - virtual List<Vb::Point> initialPoints() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/faceCentredCubic/faceCentredCubic.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/faceCentredCubic/faceCentredCubic.C deleted file mode 100644 index af2e7dfbf4d833d0e76585bc8c322bad152aa3a9..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/faceCentredCubic/faceCentredCubic.C +++ /dev/null @@ -1,255 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "faceCentredCubic.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(faceCentredCubic, 0); -addToRunTimeSelectionTable(initialPointsMethod, faceCentredCubic, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -faceCentredCubic::faceCentredCubic -( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh -) -: - initialPointsMethod(typeName, initialPointsDict, cvMesh), - initialCellSize_(readScalar(detailsDict().lookup("initialCellSize"))), - randomiseInitialGrid_(detailsDict().lookup("randomiseInitialGrid")), - randomPerturbationCoeff_ - ( - readScalar(detailsDict().lookup("randomPerturbationCoeff")) - ) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -List<Vb::Point> faceCentredCubic::initialPoints() const -{ - boundBox bb; - - // Pick up the bounds of this processor, or the whole geometry, depending - // on whether this is a parallel run. - if (Pstream::parRun()) - { - bb = cvMesh_.decomposition().procBounds(); - } - else - { - bb = cvMesh_.geometryToConformTo().globalBounds(); - } - - scalar x0 = bb.min().x(); - scalar xR = bb.max().x() - x0; - label ni = label(xR/initialCellSize_); - - scalar y0 = bb.min().y(); - scalar yR = bb.max().y() - y0; - label nj = label(yR/initialCellSize_); - - scalar z0 = bb.min().z(); - scalar zR = bb.max().z() - z0; - label nk = label(zR/initialCellSize_); - - vector delta(xR/ni, yR/nj, zR/nk); - - delta *= pow((1.0/4.0),-(1.0/3.0)); - - Random& rndGen = cvMesh_.rndGen(); - - scalar pert = randomPerturbationCoeff_*cmptMin(delta); - - DynamicList<Vb::Point> initialPoints(ni*nj*nk/10); - - for (label i = 0; i < ni; i++) - { - for (label j = 0; j < nj; j++) - { - // Generating, testing and adding points one line at a time to - // reduce the memory requirement for cases with bounding boxes that - // are very large in comparison to the volume to be filled - - label pI = 0; - - pointField points(4*nk); - - for (label k = 0; k < nk; k++) - { - point p - ( - x0 + i*delta.x(), - y0 + j*delta.y(), - z0 + k*delta.z() - ); - - if (randomiseInitialGrid_) - { - p.x() += pert*(rndGen.scalar01() - 0.5); - p.y() += pert*(rndGen.scalar01() - 0.5); - p.z() += pert*(rndGen.scalar01() - 0.5); - } - - if (Pstream::parRun()) - { - if (cvMesh_.decomposition().positionOnThisProcessor(p)) - { - // Add this point in parallel only if this position is - // on this processor. - points[pI++] = p; - } - } - else - { - points[pI++] = p; - } - - p = point - ( - x0 + i*delta.x(), - y0 + (j + 0.5)*delta.y(), - z0 + (k + 0.5)*delta.z() - ); - - if (randomiseInitialGrid_) - { - p.x() += pert*(rndGen.scalar01() - 0.5); - p.y() += pert*(rndGen.scalar01() - 0.5); - p.z() += pert*(rndGen.scalar01() - 0.5); - } - - if (Pstream::parRun()) - { - if (cvMesh_.decomposition().positionOnThisProcessor(p)) - { - // Add this point in parallel only if this position is - // on this processor. - points[pI++] = p; - } - } - else - { - points[pI++] = p; - } - - p = point - ( - x0 + (i + 0.5)*delta.x(), - y0 + j*delta.y(), - z0 + (k + 0.5)*delta.z() - ); - - if (randomiseInitialGrid_) - { - p.x() += pert*(rndGen.scalar01() - 0.5); - p.y() += pert*(rndGen.scalar01() - 0.5); - p.z() += pert*(rndGen.scalar01() - 0.5); - } - - if (Pstream::parRun()) - { - if (cvMesh_.decomposition().positionOnThisProcessor(p)) - { - // Add this point in parallel only if this position is - // on this processor. - points[pI++] = p; - } - } - else - { - points[pI++] = p; - } - - p = point - ( - x0 + (i + 0.5)*delta.x(), - y0 + (j + 0.5)*delta.y(), - z0 + k*delta.z() - ); - - if (randomiseInitialGrid_) - { - p.x() += pert*(rndGen.scalar01() - 0.5); - p.y() += pert*(rndGen.scalar01() - 0.5); - p.z() += pert*(rndGen.scalar01() - 0.5); - } - - if (Pstream::parRun()) - { - if (cvMesh_.decomposition().positionOnThisProcessor(p)) - { - // Add this point in parallel only if this position is - // on this processor. - points[pI++] = p; - } - } - else - { - points[pI++] = p; - } - } - - points.setSize(pI); - - Field<bool> insidePoints = cvMesh_.geometryToConformTo().wellInside - ( - points, - minimumSurfaceDistanceCoeffSqr_ - *sqr - ( - cvMesh_.cellShapeControls().cellSize(points) - ) - ); - - forAll(insidePoints, i) - { - if (insidePoints[i]) - { - const point& p(points[i]); - - initialPoints.append(Vb::Point(p.x(), p.y(), p.z())); - } - } - } - } - - return initialPoints.shrink(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/faceCentredCubic/faceCentredCubic.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/faceCentredCubic/faceCentredCubic.H deleted file mode 100644 index 3444b386c37fd6540a2083c93d25b7af26a3432f..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/faceCentredCubic/faceCentredCubic.H +++ /dev/null @@ -1,104 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::faceCentredCubic - -Description - Generate an FCC lattice of points inside the surfaces to be - conformed to of the conformalVoronoiMesh - -SourceFiles - faceCentredCubic.C - -\*---------------------------------------------------------------------------*/ - -#ifndef faceCentredCubic_H -#define faceCentredCubic_H - -#include "initialPointsMethod.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class faceCentredCubic Declaration -\*---------------------------------------------------------------------------*/ - -class faceCentredCubic -: - public initialPointsMethod -{ - -private: - - // Private data - - //- The initial cell spacing - scalar initialCellSize_; - - //- Should the initial positions be randomised - Switch randomiseInitialGrid_; - - //- Randomise the initial positions by fraction of the initialCellSize_ - scalar randomPerturbationCoeff_; - - -public: - - //- Runtime type information - TypeName("faceCentredCubic"); - - // Constructors - - //- Construct from components - faceCentredCubic - ( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh - ); - - - //- Destructor - virtual ~faceCentredCubic() - {} - - - // Member Functions - - //- Return the initial points for the conformalVoronoiMesh - virtual List<Vb::Point> initialPoints() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.C deleted file mode 100644 index bd0e6d732f535e76d8596ab4fd100cbac673a742..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.C +++ /dev/null @@ -1,112 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "initialPointsMethod.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -defineTypeNameAndDebug(initialPointsMethod, 0); -defineRunTimeSelectionTable(initialPointsMethod, dictionary); - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -initialPointsMethod::initialPointsMethod -( - const word& type, - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh -) -: - dictionary(initialPointsDict), - cvMesh_(cvMesh), - detailsDict_(subDict(type + "Coeffs")), - minimumSurfaceDistanceCoeffSqr_ - ( - sqr - ( - readScalar - ( - initialPointsDict.lookup("minimumSurfaceDistanceCoeff") - ) - ) - ) -{} - - -// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // - -autoPtr<initialPointsMethod> initialPointsMethod::New -( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh -) -{ - word initialPointsMethodTypeName - ( - initialPointsDict.lookup("initialPointsMethod") - ); - - Info<< nl << "Selecting initialPointsMethod " - << initialPointsMethodTypeName << endl; - - dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(initialPointsMethodTypeName); - - if (cstrIter == dictionaryConstructorTablePtr_->end()) - { - FatalErrorIn - ( - "initialPointsMethod::New(dictionary&, " - "const conformalVoronoiMesh&)" - ) << "Unknown initialPointsMethod type " - << initialPointsMethodTypeName - << endl << endl - << "Valid initialPointsMethod types are :" << endl - << dictionaryConstructorTablePtr_->toc() - << exit(FatalError); - } - - return autoPtr<initialPointsMethod>(cstrIter()(initialPointsDict, cvMesh)); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -initialPointsMethod::~initialPointsMethod() -{} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.H deleted file mode 100644 index 8c8df91c92ebef5fadb10560459974d30de07ddf..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.H +++ /dev/null @@ -1,154 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::initialPointsMethod - -Description - Abstract base class for generating initial points for a conformalVoronoiMesh - -SourceFiles - initialPointsMethod.C - -\*---------------------------------------------------------------------------*/ - -#ifndef initialPointsMethod_H -#define initialPointsMethod_H - -#include "point.H" -#include "conformalVoronoiMesh.H" -#include "backgroundMeshDecomposition.H" -#include "dictionary.H" -#include "Random.H" -#include "Switch.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class initialPointsMethod Declaration -\*---------------------------------------------------------------------------*/ - -class initialPointsMethod -: - public dictionary -{ - -protected: - - // Protected data - - //- Reference to the conformalVoronoiMesh holding this object - const conformalVoronoiMesh& cvMesh_; - - //- Method details dictionary - dictionary detailsDict_; - - //- Only allow the placement of initial points that are within the - // surfaces to be meshed by minimumSurfaceDistanceCoeff multiplied by - // the local target cell size. Store square of value. - scalar minimumSurfaceDistanceCoeffSqr_; - -private: - - // Private Member Functions - - //- Disallow default bitwise copy construct - initialPointsMethod(const initialPointsMethod&); - - //- Disallow default bitwise assignment - void operator=(const initialPointsMethod&); - - -public: - - //- Runtime type information - TypeName("initialPointsMethod"); - - - // Declare run-time constructor selection table - - declareRunTimeSelectionTable - ( - autoPtr, - initialPointsMethod, - dictionary, - ( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh - ), - (initialPointsDict, cvMesh) - ); - - - // Constructors - - //- Construct from components - initialPointsMethod - ( - const word& type, - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh - ); - - - // Selectors - - //- Return a reference to the selected initialPointsMethod - static autoPtr<initialPointsMethod> New - ( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh - ); - - - //- Destructor - virtual ~initialPointsMethod(); - - - // Member Functions - - //- Const access to the details dictionary - const dictionary& detailsDict() const - { - return detailsDict_; - } - - //- Return the initial points for the conformalVoronoiMesh - virtual List<Vb::Point> initialPoints() const = 0; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.C deleted file mode 100644 index 19861f3e817b26968eca7e463f5ab5e01dddfdda..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.C +++ /dev/null @@ -1,174 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "pointFile.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(pointFile, 0); -addToRunTimeSelectionTable(initialPointsMethod, pointFile, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -pointFile::pointFile -( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh -) -: - initialPointsMethod(typeName, initialPointsDict, cvMesh), - pointFileName_(detailsDict().lookup("pointFile")) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -List<Vb::Point> pointFile::initialPoints() const -{ - pointIOField points - ( - IOobject - ( - pointFileName_.name(), - cvMesh_.time().constant(), - cvMesh_.time(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ); - - Info<< " Inserting points from file " << pointFileName_ << endl; - - if (points.empty()) - { - FatalErrorIn("List<Vb::Point> pointFile::initialPoints() const") - << "Point file contain no points" - << exit(FatalError) << endl; - } - - if (Pstream::parRun()) - { - // Testing filePath to see if the file originated in a processor - // directory, if so, assume that the points in each processor file - // are unique. They are unlikely to belong on the current - // processor as the background mesh is unlikely to be the same. - - const bool isParentFile = (points.objectPath() != points.filePath()); - - if (!isParentFile) - { - cvMesh_.decomposition().distributePoints(points); - } - else - { - // Otherwise, this is assumed to be points covering the whole - // domain, so filter the points to be only those on this processor - boolList procPt(cvMesh_.positionOnThisProc(points)); - - List<boolList> allProcPt(Pstream::nProcs()); - - allProcPt[Pstream::myProcNo()] = procPt; - - Pstream::gatherList(allProcPt); - - Pstream::scatterList(allProcPt); - - forAll(procPt, ptI) - { - bool foundAlready = false; - - forAll(allProcPt, procI) - { - // If a processor with a lower index has found this point - // to insert already, defer to it and don't insert. - if (foundAlready) - { - allProcPt[procI][ptI] = false; - } - else if (allProcPt[procI][ptI]) - { - foundAlready = true; - } - } - } - - procPt = allProcPt[Pstream::myProcNo()]; - - inplaceSubset(procPt, points); - } - } - - Field<bool> insidePoints = cvMesh_.geometryToConformTo().wellInside - ( - points, - minimumSurfaceDistanceCoeffSqr_ - *sqr - ( - cvMesh_.cellShapeControls().cellSize(points) - ) - ); - - DynamicList<Vb::Point> initialPoints(insidePoints.size()/10); - - forAll(insidePoints, i) - { - if (insidePoints[i]) - { - const point& p(points[i]); - - initialPoints.append(Vb::Point(p.x(), p.y(), p.z())); - } - } - - initialPoints.shrink(); - - label nPointsRejected = points.size() - initialPoints.size(); - - if (Pstream::parRun()) - { - reduce(nPointsRejected, sumOp<label>()); - } - - if (nPointsRejected) - { - Info<< " " << nPointsRejected << " points rejected from " - << pointFileName_.name() << endl; - } - - return initialPoints; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.H deleted file mode 100644 index bcb898bac67e7ce41449791694f34b77b9206ae3..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.H +++ /dev/null @@ -1,100 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::pointFile - -Description - Inserts points at locations specified in a pointFile into the surfaces to - be conformed to of the conformalVoronoiMesh - -SourceFiles - pointFile.C - -\*---------------------------------------------------------------------------*/ - -#ifndef pointFile_H -#define pointFile_H - -#include "fileName.H" -#include "pointIOField.H" -#include "initialPointsMethod.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class pointFile Declaration -\*---------------------------------------------------------------------------*/ - -class pointFile -: - public initialPointsMethod -{ - -private: - - // Private data - - //- The initial cell spacing - fileName pointFileName_; - - -public: - - //- Runtime type information - TypeName("pointFile"); - - // Constructors - - //- Construct from components - pointFile - ( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh - ); - - - //- Destructor - virtual ~pointFile() - {} - - - // Member Functions - - //- Return the initial points for the conformalVoronoiMesh - virtual List<Vb::Point> initialPoints() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.C deleted file mode 100644 index 2538c90702d18efb3548ead731d88ab57bacf1ae..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.C +++ /dev/null @@ -1,171 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "uniformGrid.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(uniformGrid, 0); -addToRunTimeSelectionTable(initialPointsMethod, uniformGrid, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -uniformGrid::uniformGrid -( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh -) -: - initialPointsMethod(typeName, initialPointsDict, cvMesh), - initialCellSize_(readScalar(detailsDict().lookup("initialCellSize"))), - randomiseInitialGrid_(detailsDict().lookup("randomiseInitialGrid")), - randomPerturbationCoeff_ - ( - readScalar(detailsDict().lookup("randomPerturbationCoeff")) - ) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -List<Vb::Point> uniformGrid::initialPoints() const -{ - boundBox bb; - - // Pick up the bounds of this processor, or the whole geometry, depending - // on whether this is a parallel run. - if (Pstream::parRun()) - { - bb = cvMesh_.decomposition().procBounds(); - } - else - { - bb = cvMesh_.geometryToConformTo().globalBounds(); - } - - scalar x0 = bb.min().x(); - scalar xR = bb.max().x() - x0; - label ni = label(xR/initialCellSize_); - - scalar y0 = bb.min().y(); - scalar yR = bb.max().y() - y0; - label nj = label(yR/initialCellSize_); - - scalar z0 = bb.min().z(); - scalar zR = bb.max().z() - z0; - label nk = label(zR/initialCellSize_); - - vector delta(xR/ni, yR/nj, zR/nk); - - delta *= pow((1.0),-(1.0/3.0)); - - Random& rndGen = cvMesh_.rndGen(); - - scalar pert = randomPerturbationCoeff_*cmptMin(delta); - - // Initialise points list - DynamicList<Vb::Point> initialPoints(ni*nj*nk/10); - - for (label i = 0; i < ni; i++) - { - for (label j = 0; j < nj; j++) - { - // Generating, testing and adding points one line at a time to - // reduce the memory requirement for cases with bounding boxes that - // are very large in comparison to the volume to be filled - - label pI = 0; - - pointField points(nk); - - for (label k = 0; k < nk; k++) - { - point p - ( - x0 + (i + 0.5)*delta.x(), - y0 + (j + 0.5)*delta.y(), - z0 + (k + 0.5)*delta.z() - ); - - if (randomiseInitialGrid_) - { - p.x() += pert*(rndGen.scalar01() - 0.5); - p.y() += pert*(rndGen.scalar01() - 0.5); - p.z() += pert*(rndGen.scalar01() - 0.5); - } - - if - ( - Pstream::parRun() - && !cvMesh_.decomposition().positionOnThisProcessor(p) - ) - { - // Skip this point if, in parallel, this position is not on - // this processor. - continue; - } - - points[pI++] = p; - } - - points.setSize(pI); - - Field<bool> insidePoints = cvMesh_.geometryToConformTo().wellInside - ( - points, - minimumSurfaceDistanceCoeffSqr_ - *sqr - ( - cvMesh_.cellShapeControls().cellSize(points) - ) - ); - - forAll(insidePoints, i) - { - if (insidePoints[i]) - { - const point& p(points[i]); - - initialPoints.append(Vb::Point(p.x(), p.y(), p.z())); - } - } - } - } - - return initialPoints.shrink(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.H deleted file mode 100644 index 913d2a5a986043f09ba71b99a527114d6fe89681..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.H +++ /dev/null @@ -1,104 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::uniformGrid - -Description - Generate a uniform grid of points inside the surfaces to be - conformed to of the conformalVoronoiMesh - -SourceFiles - uniformGrid.C - -\*---------------------------------------------------------------------------*/ - -#ifndef uniformGrid_H -#define uniformGrid_H - -#include "initialPointsMethod.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class uniformGrid Declaration -\*---------------------------------------------------------------------------*/ - -class uniformGrid -: - public initialPointsMethod -{ - -private: - - // Private data - - //- The initial cell spacing - scalar initialCellSize_; - - //- Should the initial positions be randomised - Switch randomiseInitialGrid_; - - //- Randomise the initial positions by fraction of the initialCellSize_ - scalar randomPerturbationCoeff_; - - -public: - - //- Runtime type information - TypeName("uniformGrid"); - - // Constructors - - //- Construct from components - uniformGrid - ( - const dictionary& initialPointsDict, - const conformalVoronoiMesh& cvMesh - ); - - - //- Destructor - virtual ~uniformGrid() - {} - - - // Member Functions - - //- Return the initial points for the conformalVoronoiMesh - virtual List<Vb::Point> initialPoints() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/adaptiveLinear/adaptiveLinear.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/adaptiveLinear/adaptiveLinear.C deleted file mode 100644 index 3e33715cb5af7b71c12c4de7931df3691f722595..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/adaptiveLinear/adaptiveLinear.C +++ /dev/null @@ -1,87 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "adaptiveLinear.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(adaptiveLinear, 0); -addToRunTimeSelectionTable(relaxationModel, adaptiveLinear, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -adaptiveLinear::adaptiveLinear -( - const dictionary& relaxationDict, - const Time& runTime -) -: - relaxationModel(typeName, relaxationDict, runTime), - relaxationStart_(readScalar(coeffDict().lookup("relaxationStart"))), - relaxationEnd_(readScalar(coeffDict().lookup("relaxationEnd"))), - lastTimeValue_(runTime_.time().timeOutputValue()), - relaxation_(relaxationStart_) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -scalar adaptiveLinear::relaxation() -{ - if (runTime_.time().timeOutputValue() > lastTimeValue_) - { - scalar currentRelaxation = relaxation_; - - relaxation_ -= - (relaxation_ - relaxationEnd_) - /( - ( - runTime_.time().endTime().value() - - runTime_.time().timeOutputValue() - ) - /(runTime_.time().timeOutputValue() - lastTimeValue_) - + 1 - ); - - lastTimeValue_ = runTime_.time().timeOutputValue(); - - return currentRelaxation; - } - - return relaxation_; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/adaptiveLinear/adaptiveLinear.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/adaptiveLinear/adaptiveLinear.H deleted file mode 100644 index 02aa61256a5823f13e12c03f474102d60d41cf0c..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/adaptiveLinear/adaptiveLinear.H +++ /dev/null @@ -1,110 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::adaptiveLinear - -Description - Produces a linear ramp which adapts its gradient to changes in - endTime and deltaT to always arrive at the relaxationEnd value at the end of - the run - -SourceFiles - adaptiveLinear.C - -\*---------------------------------------------------------------------------*/ - -#ifndef adaptiveLinear_H -#define adaptiveLinear_H - -#include "relaxationModel.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class adaptiveLinear Declaration -\*---------------------------------------------------------------------------*/ - -class adaptiveLinear -: - public relaxationModel -{ - -private: - - // Private data - - //- Relaxation coefficient at the start of the iteration sequence. - scalar relaxationStart_; - - //- Relaxation coefficient at the end of the iteration sequence. - scalar relaxationEnd_; - - //- Store the time when the last request was made for relaxation, - // prevents multiple calls to relaxation in a timestep from - // incrementing the value - scalar lastTimeValue_; - - //- Current relaxation value - scalar relaxation_; - - -public: - - //- Runtime type information - TypeName("adaptiveLinear"); - - // Constructors - - //- Construct from components - adaptiveLinear - ( - const dictionary& relaxationDict, - const Time& runTime - ); - - - //- Destructor - virtual ~adaptiveLinear() - {} - - - // Member Functions - - //- Return the current relaxation coefficient - virtual scalar relaxation(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/rampHoldFall/rampHoldFall.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/rampHoldFall/rampHoldFall.C deleted file mode 100644 index be9b2537b3931f92eb039d34bf86218396f24bc3..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/rampHoldFall/rampHoldFall.C +++ /dev/null @@ -1,103 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "rampHoldFall.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(rampHoldFall, 0); -addToRunTimeSelectionTable(relaxationModel, rampHoldFall, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -rampHoldFall::rampHoldFall -( - const dictionary& relaxationDict, - const Time& runTime -) -: - relaxationModel(typeName, relaxationDict, runTime), - rampStartRelaxation_(readScalar(coeffDict().lookup("rampStartRelaxation"))), - holdRelaxation_(readScalar(coeffDict().lookup("holdRelaxation"))), - fallEndRelaxation_(readScalar(coeffDict().lookup("fallEndRelaxation"))), - rampEndFraction_(readScalar(coeffDict().lookup("rampEndFraction"))), - fallStartFraction_(readScalar(coeffDict().lookup("fallStartFraction"))), - rampGradient_((holdRelaxation_ - rampStartRelaxation_)/(rampEndFraction_)), - fallGradient_ - ( - (fallEndRelaxation_ - holdRelaxation_)/(1 - fallStartFraction_) - ) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -scalar rampHoldFall::relaxation() -{ - scalar t = runTime_.time().timeOutputValue(); - - scalar tStart = runTime_.time().startTime().value(); - scalar tEnd = runTime_.time().endTime().value(); - scalar tSpan = tEnd - tStart; - - if (tSpan < VSMALL) - { - return rampStartRelaxation_; - } - - if (t - tStart < rampEndFraction_*tSpan) - { - // Ramp - - return rampGradient_*((t - tStart)/tSpan) + rampStartRelaxation_; - } - else if (t - tStart > fallStartFraction_*tSpan) - { - // Fall - - return - fallGradient_*((t - tStart)/tSpan) - + fallEndRelaxation_ - fallGradient_; - } - else - { - //Hold - - return holdRelaxation_; - } -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/rampHoldFall/rampHoldFall.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/rampHoldFall/rampHoldFall.H deleted file mode 100644 index 3c156c197119228cd2b028372fb3efe51ea69998..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/rampHoldFall/rampHoldFall.H +++ /dev/null @@ -1,115 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::rampHoldFall - -Description - Piecewise linear function with a ramp from a start value to a plateaux - value, holding at this, then a linear fall to an end value. - -SourceFiles - rampHoldFall.C - -\*---------------------------------------------------------------------------*/ - -#ifndef rampHoldFall_H -#define rampHoldFall_H - -#include "relaxationModel.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class rampHoldFall Declaration -\*---------------------------------------------------------------------------*/ - -class rampHoldFall -: - public relaxationModel -{ - -private: - - // Private data - - //- Relaxation coefficient at the start of the ramp - scalar rampStartRelaxation_; - - //- Relaxation coefficient for the hold portion - scalar holdRelaxation_; - - //- Relaxation coefficient at the end of the fall - scalar fallEndRelaxation_; - - //- Fraction through the run where the ramp ends and the hold starts - scalar rampEndFraction_; - - //- Fraction through the run where the hold ends and the fall starts - scalar fallStartFraction_; - - //- Gradient in ramp portion, normalised against time - scalar rampGradient_; - - //- Gradient in fall portion, normalised against time - scalar fallGradient_; - -public: - - //- Runtime type information - TypeName("rampHoldFall"); - - // Constructors - - //- Construct from components - rampHoldFall - ( - const dictionary& relaxationDict, - const Time& runTime - ); - - - //- Destructor - virtual ~rampHoldFall() - {} - - - // Member Functions - - //- Return the current relaxation coefficient - virtual scalar relaxation(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.C deleted file mode 100644 index 76493390554c71640e85b5e4b4f8701a759bae49..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.C +++ /dev/null @@ -1,102 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "relaxationModel.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -defineTypeNameAndDebug(relaxationModel, 0); -defineRunTimeSelectionTable(relaxationModel, dictionary); - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -relaxationModel::relaxationModel -( - const word& type, - const dictionary& relaxationDict, - const Time& runTime -) -: - dictionary(relaxationDict), - runTime_(runTime), - coeffDict_(subDict(type + "Coeffs")) -{} - - -// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // - -autoPtr<relaxationModel> relaxationModel::New -( - const dictionary& relaxationDict, - const Time& runTime -) -{ - word relaxationModelTypeName - ( - relaxationDict.lookup("relaxationModel") - ); - - Info<< nl << "Selecting relaxationModel " - << relaxationModelTypeName << endl; - - dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(relaxationModelTypeName); - - if (cstrIter == dictionaryConstructorTablePtr_->end()) - { - FatalErrorIn - ( - "relaxationModel::New(const dictionary&, " - "const conformalVoronoiMesh&)" - ) << "Unknown relaxationModel type " - << relaxationModelTypeName - << endl << endl - << "Valid relaxationModel types are :" << endl - << dictionaryConstructorTablePtr_->toc() - << exit(FatalError); - } - - return autoPtr<relaxationModel>(cstrIter()(relaxationDict, runTime)); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -relaxationModel::~relaxationModel() -{} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.H deleted file mode 100644 index 433a5d38e1f6fb1070159631a1719b0210f33046..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/relaxationModel/relaxationModel/relaxationModel.H +++ /dev/null @@ -1,147 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::relaxationModel - -Description - Abstract base class for providing relaxation values to the cell motion - controller - -SourceFiles - relaxationModel.C - -\*---------------------------------------------------------------------------*/ - -#ifndef relaxationModel_H -#define relaxationModel_H - -#include "point.H" -#include "Time.H" -#include "dictionary.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class relaxationModel Declaration -\*---------------------------------------------------------------------------*/ - -class relaxationModel -: - public dictionary -{ - -protected: - - // Protected data - - //- Reference to the conformalVoronoiMesh holding this cvControls object - const Time& runTime_; - - //- Method coeffs dictionary - dictionary coeffDict_; - -private: - - // Private Member Functions - - //- Disallow default bitwise copy construct - relaxationModel(const relaxationModel&); - - //- Disallow default bitwise assignment - void operator=(const relaxationModel&); - - -public: - - //- Runtime type information - TypeName("relaxationModel"); - - - // Declare run-time constructor selection table - - declareRunTimeSelectionTable - ( - autoPtr, - relaxationModel, - dictionary, - ( - const dictionary& relaxationDict, - const Time& runTime - ), - (relaxationDict, runTime) - ); - - - // Constructors - - //- Construct from components - relaxationModel - ( - const word& type, - const dictionary& relaxationDict, - const Time& runTime - ); - - - // Selectors - - //- Return a reference to the selected relaxationModel - static autoPtr<relaxationModel> New - ( - const dictionary& relaxationDict, - const Time& runTime - ); - - - //- Destructor - virtual ~relaxationModel(); - - - // Member Functions - - //- Const access to the coeffs dictionary - const dictionary& coeffDict() const - { - return coeffDict_; - } - - //- Return the current relaxation coefficient - virtual scalar relaxation() = 0; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/cvMesh.C b/applications/utilities/mesh/generation/cvMesh/cvMesh.C deleted file mode 100644 index e9487b909b8bafca164f8aa01d8ee6f299bd26dd..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMesh.C +++ /dev/null @@ -1,124 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Application - cvMesh - -Description - Conformal Voronoi automatic mesh generator - -\*---------------------------------------------------------------------------*/ - -#include "argList.H" -#include "conformalVoronoiMesh.H" -#include "vtkSetWriter.H" - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - Foam::argList::addBoolOption - ( - "checkGeometry", - "check all surface geometry for quality" - ); - - #include "setRootCase.H" - #include "createTime.H" - - runTime.functionObjects().off(); - - const bool checkGeometry = args.optionFound("checkGeometry"); - - IOdictionary cvMeshDict - ( - IOobject - ( - "cvMeshDict", - runTime.system(), - runTime, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); - - - if (checkGeometry) - { - const searchableSurfaces allGeometry - ( - IOobject - ( - "cvSearchableSurfaces", - runTime.constant(), - "triSurface", - runTime, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - cvMeshDict.subDict("geometry") - ); - - // Write some stats - allGeometry.writeStats(List<wordList>(0), Info); - // Check topology - allGeometry.checkTopology(true); - // Check geometry - allGeometry.checkGeometry - ( - 100.0, // max size ratio - 1e-9, // intersection tolerance - autoPtr<writer<scalar> >(new vtkSetWriter<scalar>()), - 0.01, // min triangle quality - true - ); - - return 0; - } - - - conformalVoronoiMesh::debug = true; - - conformalVoronoiMesh mesh(runTime, cvMeshDict); - - - while (runTime.loop()) - { - Info<< nl << "Time = " << runTime.timeName() << endl; - - mesh.move(); - - Info<< nl << "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << endl; - } - - Info<< nl << "End" << nl << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/Make/files b/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/Make/files deleted file mode 100644 index 58406b931afc7b1b1b72a8c3eb68587d2c2d210d..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -cvMeshBackgroundMesh.C - -EXE = $(FOAM_APPBIN)/cvMeshBackgroundMesh diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/Make/options b/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/Make/options deleted file mode 100644 index 0322435c8c9c6d6512c5e3ec2e0a91e08199d84f..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/Make/options +++ /dev/null @@ -1,33 +0,0 @@ -EXE_DEBUG = -DFULLDEBUG -g -O0 -EXE_FROUNDING_MATH = -frounding-math -EXE_NDEBUG = -DNDEBUG - -include $(GENERAL_RULES)/CGAL - -EXE_INC = \ - ${EXE_FROUNDING_MATH} \ - ${EXE_NDEBUG} \ - ${CGAL_INC} \ - -I../conformalVoronoiMesh/lnInclude \ - -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I../vectorTools - -EXE_LIBS = \ - $(CGAL_LIBS) \ - -lboost_thread \ - -lmpfr \ - -lgmp \ - -lconformalVoronoiMesh \ - -ldecompositionMethods /* -L$(FOAM_LIBBIN)/dummy -lscotchDecomp */ \ - -ledgeMesh \ - -ltriSurface \ - -lmeshTools \ - -lfileFormats \ - -lsampling \ - -ldynamicMesh \ - -lfiniteVolume diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/cvMeshBackgroundMesh.C b/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/cvMeshBackgroundMesh.C deleted file mode 100644 index 53766c59a02c2209f86ae725362b7a24eb8edeb5..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshBackgroundMesh/cvMeshBackgroundMesh.C +++ /dev/null @@ -1,775 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Application - cvMeshBackGroundMesh - -Description - Writes out background mesh as constructed by cvMesh and constructs - distanceSurface. - -\*---------------------------------------------------------------------------*/ - -#include "PatchTools.H" -#include "argList.H" -#include "Time.H" -#include "triSurface.H" -#include "searchableSurfaces.H" -#include "conformationSurfaces.H" -#include "cellShapeControl.H" -#include "backgroundMeshDecomposition.H" -#include "cellShape.H" -#include "cellModeller.H" -#include "DynamicField.H" -#include "isoSurfaceCell.H" -#include "vtkSurfaceWriter.H" -#include "syncTools.H" - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// Tolerance (as fraction of the bounding box). Needs to be fairly lax since -// usually meshes get written with limited precision (6 digits) -static const scalar defaultMergeTol = 1e-6; - -// Get merging distance when matching face centres -scalar getMergeDistance -( - const argList& args, - const Time& runTime, - const boundBox& bb -) -{ - scalar mergeTol = defaultMergeTol; - args.optionReadIfPresent("mergeTol", mergeTol); - - scalar writeTol = - Foam::pow(scalar(10.0), -scalar(IOstream::defaultPrecision())); - - Info<< "Merge tolerance : " << mergeTol << nl - << "Write tolerance : " << writeTol << endl; - - if (runTime.writeFormat() == IOstream::ASCII && mergeTol < writeTol) - { - FatalErrorIn("getMergeDistance") - << "Your current settings specify ASCII writing with " - << IOstream::defaultPrecision() << " digits precision." << endl - << "Your merging tolerance (" << mergeTol << ") is finer than this." - << endl - << "Please change your writeFormat to binary" - << " or increase the writePrecision" << endl - << "or adjust the merge tolerance (-mergeTol)." - << exit(FatalError); - } - - scalar mergeDist = mergeTol * bb.mag(); - - Info<< "Overall meshes bounding box : " << bb << nl - << "Relative tolerance : " << mergeTol << nl - << "Absolute matching distance : " << mergeDist << nl - << endl; - - return mergeDist; -} - - -void printMeshData(const polyMesh& mesh) -{ - // Collect all data on master - - globalIndex globalCells(mesh.nCells()); - labelListList patchNeiProcNo(Pstream::nProcs()); - labelListList patchSize(Pstream::nProcs()); - const labelList& pPatches = mesh.globalData().processorPatches(); - patchNeiProcNo[Pstream::myProcNo()].setSize(pPatches.size()); - patchSize[Pstream::myProcNo()].setSize(pPatches.size()); - forAll(pPatches, i) - { - const processorPolyPatch& ppp = refCast<const processorPolyPatch> - ( - mesh.boundaryMesh()[pPatches[i]] - ); - patchNeiProcNo[Pstream::myProcNo()][i] = ppp.neighbProcNo(); - patchSize[Pstream::myProcNo()][i] = ppp.size(); - } - Pstream::gatherList(patchNeiProcNo); - Pstream::gatherList(patchSize); - - - // Print stats - - globalIndex globalBoundaryFaces(mesh.nFaces()-mesh.nInternalFaces()); - - label maxProcCells = 0; - label totProcFaces = 0; - label maxProcPatches = 0; - label totProcPatches = 0; - label maxProcFaces = 0; - - for (label procI = 0; procI < Pstream::nProcs(); procI++) - { - Info<< endl - << "Processor " << procI << nl - << " Number of cells = " << globalCells.localSize(procI) - << endl; - - label nProcFaces = 0; - - const labelList& nei = patchNeiProcNo[procI]; - - forAll(patchNeiProcNo[procI], i) - { - Info<< " Number of faces shared with processor " - << patchNeiProcNo[procI][i] << " = " << patchSize[procI][i] - << endl; - - nProcFaces += patchSize[procI][i]; - } - - Info<< " Number of processor patches = " << nei.size() << nl - << " Number of processor faces = " << nProcFaces << nl - << " Number of boundary faces = " - << globalBoundaryFaces.localSize(procI) << endl; - - maxProcCells = max(maxProcCells, globalCells.localSize(procI)); - totProcFaces += nProcFaces; - totProcPatches += nei.size(); - maxProcPatches = max(maxProcPatches, nei.size()); - maxProcFaces = max(maxProcFaces, nProcFaces); - } - - // Stats - - scalar avgProcCells = scalar(globalCells.size())/Pstream::nProcs(); - scalar avgProcPatches = scalar(totProcPatches)/Pstream::nProcs(); - scalar avgProcFaces = scalar(totProcFaces)/Pstream::nProcs(); - - // In case of all faces on one processor. Just to avoid division by 0. - if (totProcPatches == 0) - { - avgProcPatches = 1; - } - if (totProcFaces == 0) - { - avgProcFaces = 1; - } - - Info<< nl - << "Number of processor faces = " << totProcFaces/2 << nl - << "Max number of cells = " << maxProcCells - << " (" << 100.0*(maxProcCells-avgProcCells)/avgProcCells - << "% above average " << avgProcCells << ")" << nl - << "Max number of processor patches = " << maxProcPatches - << " (" << 100.0*(maxProcPatches-avgProcPatches)/avgProcPatches - << "% above average " << avgProcPatches << ")" << nl - << "Max number of faces between processors = " << maxProcFaces - << " (" << 100.0*(maxProcFaces-avgProcFaces)/avgProcFaces - << "% above average " << avgProcFaces << ")" << nl - << endl; -} - - -// Return cellID -label cellLabel -( - const Vector<label>& nCells, - const label i, - const label j, - const label k -) -{ - return i*nCells[1]*nCells[2]+j*nCells[2]+k; -} - -label vtxLabel -( - const Vector<label>& nCells, - const label i, - const label j, - const label k -) -{ - Vector<label> nPoints - ( - nCells[0]+1, - nCells[1]+1, - nCells[2]+1 - ); - return i*nPoints[1]*nPoints[2]+j*nPoints[2]+k; -} - - -autoPtr<polyMesh> generateHexMesh -( - const IOobject& io, - const point& origin, - const vector& cellSize, - const Vector<label>& nCells -) -{ - pointField points; - if (nCells[0]+nCells[1]+nCells[2] > 0) - { - points.setSize((nCells[0]+1)*(nCells[1]+1)*(nCells[2]+1)); - - // Generate points - for (label i = 0; i <= nCells[0]; i++) - { - for (label j = 0; j <= nCells[1]; j++) - { - for (label k = 0; k <= nCells[2]; k++) - { - point pt = origin; - pt.x() += i*cellSize[0]; - pt.y() += j*cellSize[1]; - pt.z() += k*cellSize[2]; - points[vtxLabel(nCells, i, j, k)] = pt; - } - } - } - } - - - const cellModel& hex = *(cellModeller::lookup("hex")); - cellShapeList cellShapes(nCells[0]*nCells[1]*nCells[2]); - - labelList hexPoints(8); - label cellI = 0; - for (label i = 0; i < nCells[0]; i++) - { - for (label j = 0; j < nCells[1]; j++) - { - for (label k = 0; k < nCells[2]; k++) - { - hexPoints[0] = vtxLabel(nCells, i, j, k); - hexPoints[1] = vtxLabel(nCells, i+1, j, k); - hexPoints[2] = vtxLabel(nCells, i+1, j+1, k); - hexPoints[3] = vtxLabel(nCells, i, j+1, k); - hexPoints[4] = vtxLabel(nCells, i, j, k+1); - hexPoints[5] = vtxLabel(nCells, i+1, j, k+1); - hexPoints[6] = vtxLabel(nCells, i+1, j+1, k+1); - hexPoints[7] = vtxLabel(nCells, i, j+1, k+1); - cellShapes[cellI++] = cellShape(hex, hexPoints); - } - } - } - - faceListList boundary(0); - wordList patchNames(0); - wordList patchTypes(0); - word defaultFacesName = "defaultFaces"; - word defaultFacesType = polyPatch::typeName; - wordList patchPhysicalTypes(0); - - return autoPtr<polyMesh> - ( - new polyMesh - ( - io, - xferMoveTo<pointField>(points), - cellShapes, - boundary, - patchNames, - patchTypes, - defaultFacesName, - defaultFacesType, - patchPhysicalTypes - ) - ); -} - - -// Determine for every point a signed distance to the nearest surface -// (outside is positive) -tmp<scalarField> signedDistance -( - const scalarField& distSqr, - const pointField& points, - const searchableSurfaces& geometry, - const labelList& surfaces -) -{ - tmp<scalarField> tfld(new scalarField(points.size(), Foam::sqr(GREAT))); - scalarField& fld = tfld(); - - // Find nearest - List<pointIndexHit> nearest; - labelList nearestSurfaces; - searchableSurfacesQueries::findNearest - ( - geometry, - surfaces, - points, - scalarField(points.size(), Foam::sqr(GREAT)),//distSqr - nearestSurfaces, - nearest - ); - - // Determine sign of nearest. Sort by surface to do this. - DynamicField<point> surfPoints(points.size()); - DynamicList<label> surfIndices(points.size()); - - forAll(surfaces, surfI) - { - // Extract points on this surface - surfPoints.clear(); - surfIndices.clear(); - forAll(nearestSurfaces, i) - { - if (nearestSurfaces[i] == surfI) - { - surfPoints.append(points[i]); - surfIndices.append(i); - } - } - - // Calculate sideness of these surface points - label geomI = surfaces[surfI]; - List<searchableSurface::volumeType> volType; - geometry[geomI].getVolumeType(surfPoints, volType); - - // Push back to original - forAll(volType, i) - { - label pointI = surfIndices[i]; - scalar dist = mag(points[pointI] - nearest[pointI].hitPoint()); - - searchableSurface::volumeType vT = volType[i]; - - if (vT == searchableSurface::OUTSIDE) - { - fld[pointI] = dist; - } - else if (vT == searchableSurface::INSIDE) - { - fld[i] = -dist; - } - else - { - FatalErrorIn("signedDistance()") - << "getVolumeType failure, neither INSIDE or OUTSIDE" - << exit(FatalError); - } - } - } - - return tfld; -} - - - -// Main program: - -int main(int argc, char *argv[]) -{ - argList::addNote - ( - "Generate cvMesh-consistent representation of surfaces" - ); - argList::addBoolOption - ( - "writeMesh", - "write the resulting mesh and distance fields" - ); - argList::addOption - ( - "mergeTol", - "scalar", - "specify the merge distance relative to the bounding box size " - "(default 1e-6)" - ); - - #include "setRootCase.H" - #include "createTime.H" - runTime.functionObjects().off(); - - const bool writeMesh = args.optionFound("writeMesh"); - - if (writeMesh) - { - Info<< "Writing resulting mesh and cellDistance, pointDistance fields." - << nl << endl; - } - - - IOdictionary cvMeshDict - ( - IOobject - ( - "cvMeshDict", - runTime.system(), - runTime, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); - - // Define/load all geometry - searchableSurfaces allGeometry - ( - IOobject - ( - "cvSearchableSurfaces", - runTime.constant(), - "triSurface", - runTime, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - cvMeshDict.subDict("geometry") - ); - - Random rndGen(64293*Pstream::myProcNo()); - - conformationSurfaces geometryToConformTo - ( - runTime, - rndGen, - allGeometry, - cvMeshDict.subDict("surfaceConformation") - ); - - autoPtr<cellShapeControl> cellShapeControls - ( - cellShapeControl::New - ( - runTime, - cvMeshDict.subDict("motionControl"), - allGeometry, - geometryToConformTo - ) - ); - - - // Generate starting block mesh - vector cellSize; - { - const treeBoundBox& bb = geometryToConformTo.globalBounds(); - - // Determine the number of cells in each direction. - const vector span = bb.span(); - vector nScalarCells = span/cellShapeControls().defaultCellSize(); - - // Calculate initial cell size to be a little bit smaller than the - // defaultCellSize to avoid initial refinement triggering. - Vector<label> nCells = Vector<label> - ( - label(nScalarCells.x())+2, - label(nScalarCells.y())+2, - label(nScalarCells.z())+2 - ); - cellSize = vector - ( - span[0]/nCells[0], - span[1]/nCells[1], - span[2]/nCells[2] - ); - - Info<< "Generating initial hex mesh with" << nl - << " bounding box : " << bb << nl - << " nCells : " << nCells << nl - << " cellSize : " << cellSize << nl - << endl; - - autoPtr<polyMesh> meshPtr - ( - generateHexMesh - ( - IOobject - ( - polyMesh::defaultRegion, - runTime.constant(), - runTime - ), - bb.min(), - cellSize, - ( - Pstream::master() - ? nCells - : Vector<label>(0, 0, 0) - ) - ) - ); - Info<< "Writing initial hex mesh to " << meshPtr().instance() << nl - << endl; - meshPtr().write(); - } - - // Distribute the initial mesh - if (Pstream::parRun()) - { -# include "createMesh.H" - Info<< "Loaded mesh:" << endl; - printMeshData(mesh); - - // Allocate a decomposer - IOdictionary decompositionDict - ( - IOobject - ( - "decomposeParDict", - runTime.system(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); - - autoPtr<decompositionMethod> decomposer - ( - decompositionMethod::New - ( - decompositionDict - ) - ); - - labelList decomp = decomposer().decompose(mesh, mesh.cellCentres()); - - // Global matching tolerance - const scalar tolDim = getMergeDistance - ( - args, - runTime, - mesh.bounds() - ); - - // Mesh distribution engine - fvMeshDistribute distributor(mesh, tolDim); - - Info<< "Wanted distribution:" - << distributor.countCells(decomp) << nl << endl; - - // Do actual sending/receiving of mesh - autoPtr<mapDistributePolyMesh> map = distributor.distribute(decomp); - - // Print some statistics - //Info<< "After distribution:" << endl; - //printMeshData(mesh); - - mesh.setInstance(runTime.constant()); - Info<< "Writing redistributed mesh" << nl << endl; - mesh.write(); - } - - - Info<< "Refining backgroud mesh according to cell size specification" << nl - << endl; - - backgroundMeshDecomposition backgroundMesh - ( - 1.0, //spanScale,ratio of poly cell size v.s. hex cell size - 0.0, //minCellSizeLimit - 0, //minLevels - 4, //volRes, check multiple points per cell - 20.0, //maxCellWeightCoeff - runTime, - geometryToConformTo, - cellShapeControls(), - rndGen, - cvMeshDict - ); - - if (writeMesh) - { - runTime++; - Info<< "Writing mesh to " << runTime.timeName() << endl; - backgroundMesh.mesh().write(); - } - - const scalar tolDim = getMergeDistance - ( - args, - runTime, - backgroundMesh.mesh().bounds() - ); - - - faceList isoFaces; - pointField isoPoints; - - { - // Apply a distanceSurface to it. - const fvMesh& fvm = backgroundMesh.mesh(); - - volScalarField cellDistance - ( - IOobject - ( - "cellDistance", - fvm.time().timeName(), - fvm.time(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - fvm, - dimensionedScalar("zero", dimLength, 0) - ); - - const searchableSurfaces& geometry = geometryToConformTo.geometry(); - const labelList& surfaces = geometryToConformTo.surfaces(); - - - // Get maximum search size per cell - scalarField distSqr(cellDistance.size()); - - const labelList& cellLevel = backgroundMesh.cellLevel(); - forAll(cellLevel, cellI) - { - // The largest edge of the cell will always be less than the - // span of the bounding box of the cell. - distSqr[cellI] = magSqr(cellSize)/pow(2, cellLevel[cellI]); - } - - { - // Internal field - cellDistance.internalField() = signedDistance - ( - distSqr, - fvm.C(), - geometry, - surfaces - ); - // Patch fields - forAll(fvm.C().boundaryField(), patchI) - { - const pointField& cc = fvm.C().boundaryField()[patchI]; - fvPatchScalarField& fld = cellDistance.boundaryField()[patchI]; - scalarField patchDistSqr - ( - fld.patch().patchInternalField(distSqr) - ); - fld = signedDistance(patchDistSqr, cc, geometry, surfaces); - } - - // On processor patches the fvm.C() will already be the cell centre - // on the opposite side so no need to swap cellDistance. - - if (writeMesh) - { - cellDistance.write(); - } - } - - - // Distance to points - pointScalarField pointDistance - ( - IOobject - ( - "pointDistance", - fvm.time().timeName(), - fvm.time(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - pointMesh::New(fvm), - dimensionedScalar("zero", dimLength, 0) - ); - { - scalarField pointDistSqr(fvm.nPoints(), -sqr(GREAT)); - for (label faceI = 0; faceI < fvm.nInternalFaces(); faceI++) - { - label own = fvm.faceOwner()[faceI]; - label ownDistSqr = distSqr[own]; - - const face& f = fvm.faces()[faceI]; - forAll(f, fp) - { - pointDistSqr[f[fp]] = max(pointDistSqr[f[fp]], ownDistSqr); - } - } - syncTools::syncPointList - ( - fvm, - pointDistSqr, - maxEqOp<scalar>(), - -sqr(GREAT) // null value - ); - - pointDistance.internalField() = signedDistance - ( - pointDistSqr, - fvm.points(), - geometry, - surfaces - ); - - if (writeMesh) - { - pointDistance.write(); - } - } - - isoSurfaceCell iso - ( - fvm, - cellDistance, - pointDistance, - 0, //distance, - false //regularise - ); - - isoFaces.setSize(iso.size()); - forAll(isoFaces, i) - { - isoFaces[i] = iso[i].triFaceFace(); - } - isoPoints = iso.points(); - } - - - pointField mergedPoints; - faceList mergedFaces; - labelList pointMergeMap; - PatchTools::gatherAndMerge - ( - tolDim, - primitivePatch - ( - SubList<face>(isoFaces, isoFaces.size()), - isoPoints - ), - mergedPoints, - mergedFaces, - pointMergeMap - ); - - vtkSurfaceWriter writer; - writer.write - ( - runTime.path(), - "iso", - mergedPoints, - mergedFaces - ); - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshDict b/applications/utilities/mesh/generation/cvMesh/cvMeshDict deleted file mode 100644 index 2c71c50e56e9acdc75727b7e98c3ffd13b823613..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshDict +++ /dev/null @@ -1,533 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object cvMeshDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -/* - -Control dictionary for cvMesh - polyhedral mesh generator. - -cvMesh phases: -1. fill volume with initial points (initialPoints subdictionary). An option - is to reread from previous set of points. - -2. internal point motion (motionControl subdictionary) - -3. every once in a while add point duplets/triplets to conform to - surfaces and features (surfaceConformation subdictionary) - -4. back to 2 - -5. construct polyMesh. - - filter (polyMeshFiltering subdictionary) - - check (meshQualityControls subdictionary) and undo filtering - - -See also cvControls.H in the conformalVoronoiMesh library - -*/ - - -// Important: -// ---------- -// Any scalar with a name <name>Coeff specifies a value that will be implemented -// as a faction of the local target cell size -// Any scalar with a name <name>Size specifies an absolute size. - - -// Geometry. Definition of all surfaces. All surfaces are of class -// searchableSurface. -// Surfaces need to be (almost) closed - use closedTriSurfaceMesh -// if they are not topologically closed. Surfaces need to be oriented so -// the space to be meshed is always on the inside of all surfaces. Use e.g. -// surfaceOrient. -geometry -{ - // Surface to conform to - flange.obj - { - type triSurfaceMesh; - } - - // Surface used for cell size control - ref7.stl - { - name ref7; - type triSurfaceMesh; - } - - // Surface used for cell size control - tunnel_APPROACH_INLET.obj - { - type triSurfaceMesh; - } -} - - -// Controls for conforming to the surfaces. -surfaceConformation -{ - // A point inside surfaces that is inside mesh. - locationInMesh (0 0 0); - - // How far apart are point-duplets generated. Balance this between - // - very low distance: little chance of interference from other - // surfaces - // - largish distance: less non-orthogonality in final cell - // (circumcentre far away from centroid) - pointPairDistanceCoeff 0.1; - - // Mixed feature points - connected to both inside and outside edges. - // Recreated by inserting triplets of points to recreate a single edge. - // Done for all edges emanating from point. triplets of points get inserted - // mixedFeaturePointPPDistanceCoeff distance away from feature point. - // Set to a negative number to disable. - mixedFeaturePointPPDistanceCoeff 5.0; //-1; - - // Distance to a feature point within which surface and edge - // conformation points are excluded - fraction of the local target - // cell size - featurePointExclusionDistanceCoeff 0.4; - - // Distance to an existing feature edge conformation location - // within which other edge conformation location are excluded - - // fraction of the local target cell size - featureEdgeExclusionDistanceCoeff 0.2; - - // Optimisation: do not check for surface intersection (of dual edges) - // for points near to surface. - surfaceSearchDistanceCoeff 2.5; - - // Maximum allowable protrusion through the surface before - // conformation points are added - fraction of the local target - // cell size. These small protusions are (hopefully) done by mesh filtering - // instead. - maxSurfaceProtrusionCoeff 0.1; - - // If feature edge with large angle (so more than 125 degrees) introduce - // additional points to create two half angled cells (= mitering). - maxQuadAngle 125; - - // Frequency to redo surface conformation (expensive). - surfaceConformationRebuildFrequency 10; - - // Initial and intermediate controls - coarseConformationControls - { - // Initial conformation - initial - { - // We've got a point poking through the surface. Don't do any - // surface conformation if near feature edge (since feature edge - // conformation should have priority) - - // distance to search for near feature edges - edgeSearchDistCoeff 1.1; - - // Proximity to a feature edge where a surface hit is - // not created, only the edge conformation is created - // - fraction of the local target cell size. Coarse - // conformation, initial protrusion tests. - surfacePtReplaceDistCoeff 0.5; - } - - // Same for iterations - iteration - { - edgeSearchDistCoeff 1.25; - surfacePtReplaceDistCoeff 0.7; - } - - // Stop either at maxIterations or if the number of surface pokes - // is very small (iterationToInitialHitRatioLimit * initial number) - // Note: perhaps iterationToInitialHitRatioLimit should be absolute - // count? - maxIterations 15; - - iterationToInitialHitRatioLimit 0.001; - } - - // Final (at endTime) controls - fineConformationControls - { - initial - { - edgeSearchDistCoeff 1.1; - surfacePtReplaceDistCoeff 0.5; - } - - iteration - { - edgeSearchDistCoeff 1.25; - surfacePtReplaceDistCoeff 0.7; - } - - maxIterations 15; - - iterationToInitialHitRatioLimit 0.001; - } - - // Geometry to mesh to - geometryToConformTo - { - flange.obj - { - featureMethod extendedFeatureEdgeMesh; // or none; - extendedFeatureEdgeMesh "flange.extendedFeatureEdgeMesh"; - } - } - - // Additional features. - additionalFeatures - { - //line - //{ - // featureMethod extendedFeatureEdgeMesh; // or none; - // extendedFeatureEdgeMesh "line.extendedFeatureEdgeMesh"; - //} - } -} - - -// Controls for seeding initial points and general control of the target -// cell size (used everywhere) -initialPoints -{ - // Do not place point closer than minimumSurfaceDistanceCoeff - // to the surface. Is fraction of local target cell size (see below) - minimumSurfaceDistanceCoeff 0.55; - - initialPointsMethod autoDensity; - // initialPointsMethod uniformGrid; - // initialPointsMethod bodyCentredCubic; - // initialPointsMethod pointFile; - - - // Take boundbox of all geometry. Sample with this box. If too much - // samples in box (due to target cell size) split box. - autoDensityDetails - { - // Initial number of refinement levels. Needs to be enough to pick - // up features due to size ratio. If not enough it will take longer - // to determine point seeding. - minLevels 4; - // Split box if ratio of min to max cell size larger than maxSizeRatio - maxSizeRatio 5.0; - // Per box sample 5x5x5 internally - sampleResolution 5; - // Additionally per face of the box sample 5x5 - surfaceSampleResolution 5; - } - - uniformGridDetails - { - // Absolute cell size. - initialCellSize 0.0015; - randomiseInitialGrid yes; - randomPerturbationCoeff 0.02; - } - - bodyCentredCubicDetails - { - initialCellSize 0.0015; - randomiseInitialGrid no; - randomPerturbationCoeff 0.1; - } - - pointFileDetails - { - // Reads points from file. Still rejects points that are too - // close to the surface (minimumSurfaceDistanceCoeff) or on the - // wrong side of the surfaces. - pointFile "constant/internalDelaunayVertices"; - } -} - - -// Control size of voronoi cells i.e. distance between points. This -// determines the target cell size which is used everywhere. -// It determines the cell size given a location. It then uses all -// the rules -// - defaultCellSize -// - cellShapeControl -// to determine target cell size. Rule with highest priority wins. If same -// priority smallest cell size wins. -motionControl -{ - // Absolute cell size of back ground mesh. This is the maximum cell size. - defaultCellSize 0.00075; - - // Absolute cell size of back ground mesh. This is the minimum cell size. - minimumCellSize 0; - - //cellShapeControl constantControl; - //cellShapeControl fileControl; - cellShapeControl surfaceControl; - - // Provide constant values for cell size and alignment - constantControlCoeffs - { - cellSize 0.00075; - cellAlignment (1 0 0 0 1 0 0 0 1); - } - - // Read in the points of the background grid used for cell shape control - // from a file, with corresponding files for alignment and size - fileControlCoeffs - { - pointFile ""; - sizesFile ""; - alignmentsFile ""; - } - - // Calculate the sizes and alignments from surfaces - surfaceControlCoeffs - { - ref7_outside - { - // optional name of geometry - surface ref7; - priority 1; - mode outside;//inside/bothSides - cellSizeFunction linearDistance; - - // cellSizeFunctions: - // uniform : uniform size - // uniformDistance : fixed size for all within distance - // linearSpatial : grading in specified direction only - // linearDistance : vary linearly as distance to surface - // surfaceOffsetLinearDistance : constant close to surface then - // fade like linearDistance - - // Vary from surfaceCellSize (close to the surface) to - // distanceCellSize (further than 'distance') - linearDistanceCoeffs - { - surfaceCellSize 1e-5; // absolute size - distanceCellSize $defaultCellSize; - distance 1.0; - } - } - - tunnel_APPROACH_INLET.obj - { - priority 1; - mode bothSides; - cellSizeFunction surfaceOffsetLinearDistance; - // Constant within a certain distance then linear fade away. - // Good for layers. - surfaceOffsetLinearDistanceCoeffs - { - surfaceCellSize 1e-5; - distanceCellSize $defaultCellSize; - surfaceOffset 0.1; - totalDistance 1.0; - } - } - } - - // Provide an aspect ratio and the direction in which it acts on the mesh. - // Default is 1.0 if this section is not present in the dictionary - cellAspectRatioControl - { - // Aspect ratio. - aspectRatio 2.0; - // Direction of action of the aspect ratio - aspectRatioDirection (1 0 0); - } - - // Underrelaxation for point motion. Simulated annealing: starts off at 1 - // and lowers to 0 (at simulation endTime) to converge points. - // adaptiveLinear is preferred choice. - // Points move by e.g. 10% of tet size. - relaxationModel adaptiveLinear; //rampHoldFall - - adaptiveLinearCoeffs - { - relaxationStart 1.0; - relaxationEnd 0.0; - } - - // Output lots and lots of .obj files - objOutput no; - - // Timing and memory usage. - timeChecks yes; - - // Number of rays in plane parallel to nearest surface. Used to detect - // next closest surfaces. Used to work out alignment (three vectors) - // to surface. - // Note that only the initial points (from the seeding) calculate this - // information so if these are not fine enough the alignment will - // not be correct. (any points added during the running will lookup - // this information from the nearest initial point since it is - // expensive) - alignmentSearchSpokes 36; - - // For each delaunay edge (between two vertices, becomes - // the Voronoi face normal) snap to the alignment direction if within - // alignmentAcceptanceAngle. Slightly > 45 is a good choice - prevents - // flipping. - alignmentAcceptanceAngle 48; - - // How often to rebuild the alignment info (expensive) - sizeAndAlignmentRebuildFrequency 20; - - // When to insert points. Not advisable change to - // these settings. - pointInsertionCriteria - { - // If edge larger than 1.75 target cell size - // (so tets too large/stretched) insert point - cellCentreDistCoeff 1.75; - // Do not insert point if voronoi face (on edge) very small. - faceAreaRatioCoeff 0.0025; - // Insert point only if edge closely aligned to local alignment - // direction. - acceptanceAngle 21.5; - } - - // Opposite: remove point if mesh too compressed. Do not change these - // settings. - pointRemovalCriteria - { - cellCentreDistCoeff 0.65; - } - - // How to determine the point motion. All edges got some direction. - // Sum all edge contributions to determine point motion. Weigh by - // face area so motion is preferentially determined by large faces - // (or more importantly ignore contribution from small faces). - // Do not change these settings. - faceAreaWeightModel piecewiseLinearRamp; - - piecewiseLinearRampCoeffs - { - lowerAreaFraction 0.5; - upperAreaFraction 1.0; - } -} - - -// After simulation, when converting to polyMesh, filter out small faces/edges. -// Do not change. See cvControls.H -polyMeshFiltering -{ - // Filter small edges - filterEdges on; - - // Filter small and sliver faces - filterFaces off; - - // Write the underlying Delaunay tet mesh at output time - writeTetDualMesh false; //true; - - // Upper limit on the size of faces to be filtered. - // fraction of the local target cell size - filterSizeCoeff 0.2; - - // Upper limit on how close two dual vertices can be before - // being merged, fraction of the local target cell size - mergeClosenessCoeff 1e-9; - - // To not filter: set maxNonOrtho to 1 (so check fails) and then - // set continueFilteringOnBadInitialPolyMesh to false. - continueFilteringOnBadInitialPolyMesh true; - - // When a face is "bad", what fraction should the filterSizeCoeff be - // reduced by. Recursive, so for a filterCount value of fC, the - // filterSizeCoeff is reduced by pow(filterErrorReductionCoeff, fC) - filterErrorReductionCoeff 0.5; - - // Maximum number of filterCount applications before a face - // is not attempted to be filtered - filterCountSkipThreshold 4; - - // Maximum number of permissible iterations of the face collapse - // algorithm. The value to choose will be related the maximum number - // of points on a face that is to be collapsed and how many faces - // around it need to be collapsed. - maxCollapseIterations 25; - - // Maximum number of times an to allow an equal faceSet to be - // returned from the face quality assessment before stopping iterations - // to break an infinitie loop. - maxConsecutiveEqualFaceSets 5; - // Remove little steps (almost perp to surface) by collapsing face. - surfaceStepFaceAngle 80; - // Do not collapse face to edge if should become edges - edgeCollapseGuardFraction 0.3; - // Only collapse face to point if high aspect ratio - maxCollapseFaceToPointSideLengthCoeff 0.35; -} - - -// Generic mesh quality settings. At any undoable phase these determine -// where to undo. Same as in snappyHexMeshDict -meshQualityControls -{ - //- Maximum non-orthogonality allowed. Set to 180 to disable. - maxNonOrtho 65; - - //- Max skewness allowed. Set to <0 to disable. - maxBoundarySkewness 50; - maxInternalSkewness 10; - - //- Max concaveness allowed. Is angle (in degrees) below which concavity - // is allowed. 0 is straight face, <0 would be convex face. - // Set to 180 to disable. - maxConcave 80; - - //- Minimum pyramid volume. Is absolute volume of cell pyramid. - // Set to a sensible fraction of the smallest cell volume expected. - // Set to very negative number (e.g. -1E30) to disable. - minVol -1E30; - - //- Minimum quality of the tet formed by the - // variable base point minimum decomposition triangles and - // the cell centre (so not face-centre decomposition). - // This has to be a positive number for tracking - // to work. Set to very negative number (e.g. -1E30) to - // disable. - // <0 = inside out tet, - // 0 = flat tet - // 1 = regular tet - minTetQuality 1e-30; - - //- Minimum absolute face area. Set to <0 to disable. - minArea -1; - - //- Minimum face twist. Set to <-1 to disable. dot product of face normal - //- and face centre triangles normal - minTwist 0.02; - - //- minimum normalised cell determinant - //- 1 = hex, <= 0 = folded or flattened illegal cell - minDeterminant 0.001; - - //- minFaceWeight (0 -> 0.5) - minFaceWeight 0.02; - - //- minVolRatio (0 -> 1) - minVolRatio 0.01; - - //must be >0 for Fluent compatibility - minTriangleTwist -1; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Allwmake b/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Allwmake deleted file mode 100755 index 98dec66c76bfc035c39136cff18ad685c707128c..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Allwmake +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory -set -x - -if [ -d "${FASTDUALOCTREE_SRC_PATH}" ] -then - wmake -fi - -# ----------------------------------------------------------------- end-of-file diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Make/files b/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Make/files deleted file mode 100644 index fbe4cfeda6cc8bd7e41dd0bc3e34eb92108cfce8..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Make/files +++ /dev/null @@ -1,22 +0,0 @@ -/* -cvMeshSurfaceSimplify_non_octree.C -MarchingCubes/MarchingCubes.cpp -MarchingCubes/ply.c -*/ - -/* -MarchingCubes = fastdualoctree_sgp - -$(MarchingCubes)/data_access.cpp -$(MarchingCubes)/fparser.cpp -$(MarchingCubes)/fpoptimizer.cpp -$(MarchingCubes)/MarchingCubes.cpp -$(MarchingCubes)/mc_draw.cpp -$(MarchingCubes)/morton.cpp -$(MarchingCubes)/opt_octree.cpp -$(MarchingCubes)/hash_octree.cpp -*/ - -cvMeshSurfaceSimplify.C - -EXE = $(FOAM_APPBIN)/cvMeshSurfaceSimplify diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Make/options b/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Make/options deleted file mode 100644 index 7bd92a24abf566234ee02a26c3615c10151286a1..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/Make/options +++ /dev/null @@ -1,28 +0,0 @@ -MarchingCubes = fastdualoctree_sgp - -include $(GENERAL_RULES)/CGAL - -EXE_INC = \ - -DUNIX \ - -Wno-old-style-cast \ - /* -IMarchingCubes */ \ - -I$(FASTDUALOCTREE_SRC_PATH) \ - -I../conformalVoronoiMesh/lnInclude \ - -I$(LIB_SRC)/edgeMesh/lnInclude \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/triSurface/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude - -EXE_LIBS = \ - $(CGAL_LIBS) \ - -lboost_thread \ - -lmpfr \ - -L$(FASTDUALOCTREE_SRC_PATH) -lperf_main \ - -lGL \ - -lconformalVoronoiMesh \ - -ldecompositionMethods -L$(FOAM_LIBBIN)/dummy -lscotchDecomp \ - -ledgeMesh \ - -lfileFormats \ - -ltriSurface \ - -lmeshTools \ - -ldynamicMesh diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/cvMeshSurfaceSimplify.C b/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/cvMeshSurfaceSimplify.C deleted file mode 100644 index ae4f8812f7d7faaeac4abf525aa5262083993d80..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/cvMeshSurfaceSimplify.C +++ /dev/null @@ -1,639 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Application - cvMeshSurfaceSimplify - -Description - Simplifies surfaces by resampling. - - Uses Thomas Lewiner's topology preserving MarchingCubes. - (http://zeus.mat.puc-rio.br/tomlew/tomlew_uk.php) - -\*---------------------------------------------------------------------------*/ - -#include "argList.H" -#include "Time.H" -#include "searchableSurfaces.H" -#include "conformationSurfaces.H" -#include "triSurfaceMesh.H" - -#include "opt_octree.h" -#include "cube.h" - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -class pointConversion -{ - const vector scale_; - - const vector offset_; - -public: - - //- Construct from components - pointConversion - ( - const vector scale, - const vector offset - ) - : - scale_(scale), - offset_(offset) - {} - - inline Point toLocal(const Foam::point& pt) const - { - Foam::point p = cmptMultiply(scale_, (pt + offset_)); - return Point(p.x(), p.y(), p.z()); - } - - inline Foam::point toGlobal(const Point& pt) const - { - point p(pt.x(), pt.y(), pt.z()); - return cmptDivide(p, scale_) - offset_; - } -}; - - - - -// For use in Fast-Dual Octree from Thomas Lewiner -class distanceCalc -: - public ::data_access -{ - - const Level min_level_; - - const conformationSurfaces& geometryToConformTo_; - - const pointConversion& converter_; - - - // Private Member Functions - - scalar signedDistance(const Foam::point& pt) const - { - const searchableSurfaces& geometry = geometryToConformTo_.geometry(); - const labelList& surfaces = geometryToConformTo_.surfaces(); - - static labelList nearestSurfaces; - static scalarField distance; - - static pointField samples(1); - samples[0] = pt; - - searchableSurfacesQueries::signedDistance - ( - geometry, - surfaces, - samples, - scalarField(1, GREAT), - searchableSurface::OUTSIDE, - nearestSurfaces, - distance - ); - - return distance[0]; - } - - -public: - - // Constructors - - //- Construct from components - distanceCalc - ( - Level max_level_, - real iso_val_, - Level min_level, - const conformationSurfaces& geometryToConformTo, - const pointConversion& converter - ) - : - data_access(max_level_,iso_val_), - min_level_(min_level), - geometryToConformTo_(geometryToConformTo), - converter_(converter) - {} - - - //- Destructor - virtual ~distanceCalc() - {} - - - // Member Functions - - //- test function - virtual bool need_refine( const Cube &c ) - { - int l = c.lv() ; - - if( l >= _max_level ) return false; - if( l < min_level_ ) return true; - - treeBoundBox bb - ( - converter_.toGlobal - ( - Point - ( - c.xmin(), - c.ymin(), - c.zmin() - ) - ), - converter_.toGlobal - ( - Point - ( - c.xmax(), - c.ymax(), - c.zmax() - ) - ) - ); - - const searchableSurfaces& geometry = - geometryToConformTo_.geometry(); - const labelList& surfaces = - geometryToConformTo_.surfaces(); - - - //- Uniform refinement around surface - { - forAll(surfaces, i) - { - if (geometry[surfaces[i]].overlaps(bb)) - { - return true; - } - } - return false; - } - - - ////- Surface intersects bb (but not using intersection test) - //scalar ccDist = signedDistance(bb.midpoint()); - //scalar ccVal = ccDist - _iso_val; - //if (mag(ccVal) < SMALL) - //{ - // return true; - //} - //const pointField points(bb.points()); - //forAll(points, pointI) - //{ - // scalar pointVal = signedDistance(points[pointI]) - _iso_val; - // if (ccVal*pointVal < 0) - // { - // return true; - // } - //} - //return false; - - - ////- Refinement based on intersection with multiple planes. - //// Does not work well - too high a ratio between - //// neighbouring cubes. - //const pointField points(bb.points()); - //const edgeList& edges = treeBoundBox::edges; - //pointField start(edges.size()); - //pointField end(edges.size()); - //forAll(edges, i) - //{ - // start[i] = points[edges[i][0]]; - // end[i] = points[edges[i][1]]; - //} - //Foam::List<Foam::List<pointIndexHit> > hitInfo; - //labelListList hitSurfaces; - //searchableSurfacesQueries::findAllIntersections - //( - // geometry, - // surfaces, - // start, - // end, - // hitSurfaces, - // hitInfo - //); - // - //// Count number of intersections - //label nInt = 0; - //forAll(hitSurfaces, edgeI) - //{ - // nInt += hitSurfaces[edgeI].size(); - //} - // - //if (nInt == 0) - //{ - // // No surface intersected. See if there is one inside - // forAll(surfaces, i) - // { - // if (geometry[surfaces[i]].overlaps(bb)) - // { - // return true; - // } - // } - // return false; - //} - // - //// Check multiple surfaces - //label baseSurfI = -1; - //forAll(hitSurfaces, edgeI) - //{ - // const labelList& hSurfs = hitSurfaces[edgeI]; - // forAll(hSurfs, i) - // { - // if (baseSurfI == -1) - // { - // baseSurfI = hSurfs[i]; - // } - // else if (baseSurfI != hSurfs[i]) - // { - // // Multiple surfaces - // return true; - // } - // } - //} - // - //// Get normals - //DynamicList<pointIndexHit> baseInfo(nInt); - //forAll(hitInfo, edgeI) - //{ - // const Foam::List<pointIndexHit>& hits = hitInfo[edgeI]; - // forAll(hits, i) - // { - // (void)hits[i].hitPoint(); - // baseInfo.append(hits[i]); - // } - //} - //vectorField normals; - //geometry[surfaces[baseSurfI]].getNormal(baseInfo, normals); - //for (label i = 1; i < normals.size(); ++i) - //{ - // if ((normals[0] & normals[i]) < 0.9) - // { - // return true; - // } - //} - //labelList regions; - //geometry[surfaces[baseSurfI]].getRegion(baseInfo, regions); - //for (label i = 1; i < regions.size(); ++i) - //{ - // if (regions[0] != regions[i]) - // { - // return true; - // } - //} - //return false; - - - - //samples[0] = point(c.xmin(), c.ymin(), c.zmin()); - //samples[1] = point(c.xmax(), c.ymin(), c.zmin()); - //samples[2] = point(c.xmax(), c.ymax(), c.zmin()); - //samples[3] = point(c.xmin(), c.ymax(), c.zmin()); - // - //samples[4] = point(c.xmin(), c.ymin(), c.zmax()); - //samples[5] = point(c.xmax(), c.ymin(), c.zmax()); - //samples[6] = point(c.xmax(), c.ymax(), c.zmax()); - //samples[7] = point(c.xmin(), c.ymax(), c.zmax()); - - //scalarField nearestDistSqr(8, GREAT); - // - //Foam::List<pointIndexHit> nearestInfo; - //surf_.findNearest(samples, nearestDistSqr, nearestInfo); - //vectorField normals; - //surf_.getNormal(nearestInfo, normals); - // - //for (label i = 1; i < normals.size(); ++i) - //{ - // if ((normals[0] & normals[i]) < 0.5) - // { - // return true; - // } - //} - //return false; - - //// Check if surface octree same level - //const labelList elems(surf_.tree().findBox(bb)); - // - //if (elems.size() > 1) - //{ - // return true; - //} - //else - //{ - // return false; - //} - } - - //- data function - virtual real value_at( const Cube &c ) - { - return signedDistance(converter_.toGlobal(c)) - _iso_val; - } -}; - - -// Main program: - -int main(int argc, char *argv[]) -{ - argList::addNote - ( - "Re-sample surfaces used in cvMesh operation" - ); - argList::validArgs.append("outputName"); - - #include "setRootCase.H" - #include "createTime.H" - runTime.functionObjects().off(); - - const fileName exportName = args.args()[1]; - - Info<< "Reading surfaces as specified in the cvMeshDict and" - << " writing a re-sampled surface to " << exportName - << nl << endl; - - cpuTime timer; - - IOdictionary cvMeshDict - ( - IOobject - ( - "cvMeshDict", - runTime.system(), - runTime, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); - - // Define/load all geometry - searchableSurfaces allGeometry - ( - IOobject - ( - "cvSearchableSurfaces", - runTime.constant(), - "triSurface", - runTime, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - cvMeshDict.subDict("geometry") - ); - - Info<< "Geometry read in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - Random rndGen(64293*Pstream::myProcNo()); - - conformationSurfaces geometryToConformTo - ( - runTime, - rndGen, - allGeometry, - cvMeshDict.subDict("surfaceConformation") - ); - - Info<< "Set up geometry in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - const searchableSurfaces& geometry = geometryToConformTo.geometry(); - const labelList& surfaces = geometryToConformTo.surfaces(); - - - const label minLevel = 2; - - // The max cube size follows from the minLevel and the default cube size - // (1) - const scalar maxSize = 1.0 / (1 << minLevel); - const scalar halfMaxSize = 0.5*maxSize; - - - // Scale the geometry to fit within - // halfMaxSize .. 1-halfMaxSize - - scalar wantedRange = 1.0-maxSize; - - const treeBoundBox bb = geometryToConformTo.globalBounds(); - - const vector scale = cmptDivide - ( - point(wantedRange, wantedRange, wantedRange), - bb.span() - ); - const vector offset = - cmptDivide - ( - point(halfMaxSize, halfMaxSize, halfMaxSize), - scale - ) - -bb.min(); - - - const pointConversion converter(scale, offset); - - - // Marching cubes - - OptOctree octree; - - distanceCalc ref - ( - 8, //maxLevel - 0.0, //distance - minLevel, //minLevel - geometryToConformTo, - converter - ); - - octree.refine(&ref); - octree.set_impl(&ref); - - Info<< "Calculated octree in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - MarchingCubes& mc = octree.mc(); - - mc.clean_all() ; - octree.build_isosurface(&ref) ; - - Info<< "Constructed iso surface of distance in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - // Write output file - if (mc.ntrigs() > 0) - { - Triangle* triangles = mc.triangles(); - label nTris = mc.ntrigs(); - Foam::DynamicList<labelledTri> tris(mc.ntrigs()); - for (label triI = 0; triI < nTris; ++triI) - { - const Triangle& t = triangles[triI]; - if (t.v1 != t.v2 && t.v1 != t.v3 && t.v2 != t.v3) - { - tris.append - ( - labelledTri - ( - triangles[triI].v1, - triangles[triI].v2, - triangles[triI].v3, - 0 // region - ) - ); - } - } - - - Point* vertices = mc.vertices(); - pointField points(mc.nverts()); - forAll(points, pointI) - { - const Point& v = vertices[pointI]; - points[pointI] = converter.toGlobal(v); - } - - - // Find correspondence to original surfaces - labelList regionOffsets(surfaces.size()); - label nRegions = 0; - forAll(surfaces, i) - { - const wordList& regions = geometry[surfaces[i]].regions(); - regionOffsets[i] = nRegions; - nRegions += regions.size(); - } - - - geometricSurfacePatchList patches(nRegions); - nRegions = 0; - forAll(surfaces, i) - { - const wordList& regions = geometry[surfaces[i]].regions(); - - forAll(regions, regionI) - { - patches[nRegions] = geometricSurfacePatch - ( - "patch", - geometry[surfaces[i]].name() + "_" + regions[regionI], - nRegions - ); - nRegions++; - } - } - - triSurface s(tris, patches, points, true); - tris.clearStorage(); - - Info<< "Extracted triSurface in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - // Find out region on local surface of nearest point - { - Foam::List<pointIndexHit> hitInfo; - labelList hitSurfaces; - geometryToConformTo.findSurfaceNearest - ( - s.faceCentres(), - scalarField(s.size(), sqr(GREAT)), - hitInfo, - hitSurfaces - ); - - // Get region - DynamicList<pointIndexHit> surfInfo(hitSurfaces.size()); - DynamicList<label> surfIndices(hitSurfaces.size()); - - forAll(surfaces, surfI) - { - // Extract info on this surface - surfInfo.clear(); - surfIndices.clear(); - forAll(hitSurfaces, triI) - { - if (hitSurfaces[triI] == surfI) - { - surfInfo.append(hitInfo[triI]); - surfIndices.append(triI); - } - } - - // Calculate sideness of these surface points - labelList region; - geometry[surfaces[surfI]].getRegion(surfInfo, region); - - forAll(region, i) - { - label triI = surfIndices[i]; - s[triI].region() = regionOffsets[surfI]+region[i]; - } - } - } - - Info<< "Re-patched surface in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - triSurfaceMesh smesh - ( - IOobject - ( - exportName, - runTime.constant(), // instance - "triSurface", - runTime, // registry - IOobject::NO_READ, - IOobject::AUTO_WRITE, - false - ), - s - ); - - Info<< "writing surfMesh:\n " - << smesh.searchableSurface::objectPath() << nl << endl; - smesh.searchableSurface::write(); - - Info<< "Written surface in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - } - - mc.clean_all() ; - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/cvMeshSurfaceSimplify_non_octree.C b/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/cvMeshSurfaceSimplify_non_octree.C deleted file mode 100644 index c3518ef1a0365e5359f9d402068a6914053049b9..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/cvMeshSurfaceSimplify/cvMeshSurfaceSimplify_non_octree.C +++ /dev/null @@ -1,352 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Application - cvMeshSurfaceSimplify - -Description - Simplifies surfaces by resampling. - - Uses Thomas Lewiner's topology preserving MarchingCubes. - -\*---------------------------------------------------------------------------*/ - -#include "argList.H" -#include "Time.H" -#include "searchableSurfaces.H" -#include "conformationSurfaces.H" -#include "triSurfaceMesh.H" - -#include "MarchingCubes.h" - - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// Main program: - -int main(int argc, char *argv[]) -{ - argList::addNote - ( - "Re-sample surfaces used in cvMesh operation" - ); - //argList::validArgs.append("inputFile"); - argList::validArgs.append("(nx ny nz)"); - argList::validArgs.append("outputName"); - - #include "setRootCase.H" - #include "createTime.H" - runTime.functionObjects().off(); - - const Vector<label> n(IStringStream(args.args()[1])()); - const fileName exportName = args.args()[2]; - - Info<< "Reading surfaces as specified in the cvMeshDict and" - << " writing re-sampled " << n << " to " << exportName - << nl << endl; - - cpuTime timer; - - IOdictionary cvMeshDict - ( - IOobject - ( - "cvMeshDict", - runTime.system(), - runTime, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); - - // Define/load all geometry - searchableSurfaces allGeometry - ( - IOobject - ( - "cvSearchableSurfaces", - runTime.constant(), - "triSurface", - runTime, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - cvMeshDict.subDict("geometry") - ); - - Info<< "Geometry read in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - Random rndGen(64293*Pstream::myProcNo()); - - conformationSurfaces geometryToConformTo - ( - runTime, - rndGen, - allGeometry, - cvMeshDict.subDict("surfaceConformation") - ); - - Info<< "Set up geometry in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - - // Extend - treeBoundBox bb = geometryToConformTo.globalBounds(); - { - const vector smallVec = 0.1*bb.span(); - bb.min() -= smallVec; - bb.max() += smallVec; - } - - Info<< "Meshing to bounding box " << bb << nl << endl; - - const vector span(bb.span()); - const vector d - ( - span.x()/(n.x()-1), - span.y()/(n.y()-1), - span.z()/(n.z()-1) - ); - - MarchingCubes mc(span.x(), span.y(), span.z() ) ; - mc.set_resolution(n.x(), n.y(), n.z()); - mc.init_all() ; - - - // Generate points - pointField points(mc.size_x()*mc.size_y()*mc.size_z()); - label pointI = 0; - - point pt; - for( int k = 0 ; k < mc.size_z() ; k++ ) - { - pt.z() = bb.min().z() + k*d.z(); - for( int j = 0 ; j < mc.size_y() ; j++ ) - { - pt.y() = bb.min().y() + j*d.y(); - for( int i = 0 ; i < mc.size_x() ; i++ ) - { - pt.x() = bb.min().x() + i*d.x(); - points[pointI++] = pt; - } - } - } - - Info<< "Generated " << points.size() << " sampling points in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - // Compute data - const searchableSurfaces& geometry = geometryToConformTo.geometry(); - const labelList& surfaces = geometryToConformTo.surfaces(); - - scalarField signedDist; - labelList nearestSurfaces; - searchableSurfacesQueries::signedDistance - ( - geometry, - surfaces, - points, - scalarField(points.size(), sqr(GREAT)), - searchableSurface::OUTSIDE, // for non-closed surfaces treat as - // outside - nearestSurfaces, - signedDist - ); - - // Fill elements - pointI = 0; - for( int k = 0 ; k < mc.size_z() ; k++ ) - { - for( int j = 0 ; j < mc.size_y() ; j++ ) - { - for( int i = 0 ; i < mc.size_x() ; i++ ) - { - mc.set_data(float(signedDist[pointI++]), i, j, k); - } - } - } - - Info<< "Determined signed distance in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - mc.run() ; - - Info<< "Constructed iso surface in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - mc.clean_temps() ; - - - - // Write output file - if (mc.ntrigs() > 0) - { - Triangle* triangles = mc.triangles(); - List<labelledTri> tris(mc.ntrigs()); - forAll(tris, triI) - { - tris[triI] = labelledTri - ( - triangles[triI].v1, - triangles[triI].v2, - triangles[triI].v3, - 0 // region - ); - } - - - Vertex* vertices = mc.vertices(); - pointField points(mc.nverts()); - forAll(points, pointI) - { - Vertex& v = vertices[pointI]; - points[pointI] = point - ( - bb.min().x() + v.x*span.x()/mc.size_x(), - bb.min().y() + v.y*span.y()/mc.size_y(), - bb.min().z() + v.z*span.z()/mc.size_z() - ); - } - - - // Find correspondence to original surfaces - labelList regionOffsets(surfaces.size()); - label nRegions = 0; - forAll(surfaces, i) - { - const wordList& regions = geometry[surfaces[i]].regions(); - regionOffsets[i] = nRegions; - nRegions += regions.size(); - } - - - geometricSurfacePatchList patches(nRegions); - nRegions = 0; - forAll(surfaces, i) - { - const wordList& regions = geometry[surfaces[i]].regions(); - - forAll(regions, regionI) - { - patches[nRegions] = geometricSurfacePatch - ( - "patch", - geometry[surfaces[i]].name() + "_" + regions[regionI], - nRegions - ); - nRegions++; - } - } - - triSurface s(tris, patches, points, true); - - Info<< "Extracted triSurface in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - - // Find out region on local surface of nearest point - { - List<pointIndexHit> hitInfo; - labelList hitSurfaces; - geometryToConformTo.findSurfaceNearest - ( - s.faceCentres(), - scalarField(s.size(), sqr(GREAT)), - hitInfo, - hitSurfaces - ); - - // Get region - DynamicList<pointIndexHit> surfInfo(hitSurfaces.size()); - DynamicList<label> surfIndices(hitSurfaces.size()); - - forAll(surfaces, surfI) - { - // Extract info on this surface - surfInfo.clear(); - surfIndices.clear(); - forAll(hitSurfaces, triI) - { - if (hitSurfaces[triI] == surfI) - { - surfInfo.append(hitInfo[triI]); - surfIndices.append(triI); - } - } - - // Calculate sideness of these surface points - labelList region; - geometry[surfaces[surfI]].getRegion(surfInfo, region); - - forAll(region, i) - { - label triI = surfIndices[i]; - s[triI].region() = regionOffsets[surfI]+region[i]; - } - } - } - - Info<< "Re-patched surface in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - - triSurfaceMesh smesh - ( - IOobject - ( - exportName, - runTime.constant(), // instance - "triSurface", - runTime, // registry - IOobject::NO_READ, - IOobject::AUTO_WRITE, - false - ), - s - ); - - Info<< "writing surfMesh:\n " - << smesh.searchableSurface::objectPath() << nl << endl; - smesh.searchableSurface::write(); - - Info<< "Written surface in = " - << timer.cpuTimeIncrement() << " s." << nl << endl; - } - - mc.clean_all() ; - - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/cvMesh/vectorTools/vectorTools.H b/applications/utilities/mesh/generation/cvMesh/vectorTools/vectorTools.H deleted file mode 100644 index 9fb39a159bafbfb8de882cb4b469fbf6e7d14af8..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/generation/cvMesh/vectorTools/vectorTools.H +++ /dev/null @@ -1,157 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. - -Class - Foam::vectorTools - -Description - Functions for analysing the relationships between vectors - -SourceFiles - -\*---------------------------------------------------------------------------*/ - -#ifndef vectorTools_H -#define vectorTools_H - -#include "vector.H" -#include "unitConversion.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Namespace vectorTools Declaration -\*---------------------------------------------------------------------------*/ - -//- Collection of functions for testing relationships between two vectors. -namespace vectorTools -{ - //- Test if a and b are parallel: a.b = 1 - // Uses the cross product, so the tolerance is proportional to - // the sine of the angle between a and b in radians - template <typename T> - bool areParallel - ( - const Vector<T>& a, - const Vector<T>& b, - const T& tolerance = SMALL - ) - { - return (mag(a ^ b) < tolerance) ? true : false; -// return ( mag( mag(a & b)/(mag(a)*mag(b)) - 1.0 ) < tolerance ) -// ? true -// : false; - } - - //- Test if a and b are orthogonal: a.b = 0 - // Uses the dot product, so the tolerance is proportional to - // the cosine of the angle between a and b in radians - template <typename T> - bool areOrthogonal - ( - const Vector<T>& a, - const Vector<T>& b, - const T& tolerance = SMALL - ) - { - return (mag(a & b) < tolerance) ? true : false; - } - - //- Test if angle between a and b is acute: a.b > 0 - template <typename T> - bool areAcute - ( - const Vector<T>& a, - const Vector<T>& b - ) - { - return ((a & b) > 0) ? true : false; - } - - //- Test if angle between a and b is obtuse: a.b < 0 - template <typename T> - bool areObtuse - ( - const Vector<T>& a, - const Vector<T>& b - ) - { - return ((a & b) < 0) ? true : false; - } - - //- Calculate angle between a and b in radians - template <typename T> - T cosPhi - ( - const Vector<T>& a, - const Vector<T>& b, - const T& tolerance = SMALL - ) - { - scalar cosPhi = (a & b)/(mag(a)*mag(b) + tolerance); - - // Enforce bounding between -1 and 1 - return min(max(cosPhi, -1), 1); - } - - //- Calculate angle between a and b in radians - template <typename T> - T radAngleBetween - ( - const Vector<T>& a, - const Vector<T>& b, - const T& tolerance = SMALL - ) - { - scalar cosPhi = (a & b)/(mag(a)*mag(b) + tolerance); - - // Enforce bounding between -1 and 1 - return acos( min(max(cosPhi, -1), 1) ); - } - - //- Calculate angle between a and b in degrees - template <typename T> - T degAngleBetween - ( - const Vector<T>& a, - const Vector<T>& b, - const T& tolerance = SMALL - ) - { - return radToDeg(radAngleBetween(a, b, tolerance)); - } - -} // End namespace vectorTools - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/extrude2DMesh/extrude2DMesh.C b/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/extrude2DMesh/extrude2DMesh.C index 0bbe7d926a16733c25ff9b63d58ffea347a39642..9b70418abc323a59c3c6096f2592c27e38a53230 100644 --- a/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/extrude2DMesh/extrude2DMesh.C +++ b/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/extrude2DMesh/extrude2DMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -90,7 +90,6 @@ Foam::extrude2DMesh::extrude2DMesh dict_(dict), //patchDict_(dict.subDict("patchInfo")), model_(model), - modelType_(dict.lookup("extrudeModel")), patchType_(dict.lookup("patchType")), frontPatchI_(-1), backPatchI_(-1) diff --git a/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/extrude2DMesh/extrude2DMesh.H b/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/extrude2DMesh/extrude2DMesh.H index 3b6efd267efbcc44be597de5edac863b554c616d..0c5d143c0aab283dcdd892cee7360c541f1c83f0 100644 --- a/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/extrude2DMesh/extrude2DMesh.H +++ b/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/extrude2DMesh/extrude2DMesh.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,10 +53,9 @@ class polyMesh; class polyTopoChange; class mapPolyMesh; class mapDistributePolyMesh; -class polyBoundaryMesh; /*---------------------------------------------------------------------------*\ - Class extrude2DMesh Declaration + Class extrude2DMesh Declaration \*---------------------------------------------------------------------------*/ class extrude2DMesh @@ -66,19 +65,24 @@ class extrude2DMesh //- Reference to 2D mesh polyMesh& mesh_; + //- Extrusion dictionary const dictionary dict_; //const dictionary patchDict_; + //- The extrusion model const extrudeModel& model_; - const word modelType_; - + //- Type of the patches that will be created by the extrusion. const word patchType_; + //- Patch ID of the front patch label frontPatchI_; + + //- Patch ID of the back patch label backPatchI_; + // Private Member Functions //- Check the mesh is 2D @@ -93,6 +97,7 @@ class extrude2DMesh //- Disallow default bitwise assignment void operator=(const extrude2DMesh&); + public: //- Runtime type information @@ -100,6 +105,8 @@ public: // Constructors + + //- Construct from a 2D polyMesh, a dictionary and an extrusion model extrude2DMesh ( polyMesh&, @@ -114,30 +121,36 @@ public: // Member Functions - //- Add front and back patches - void addFrontBackPatches(); + // Access + + //- Return the patch ID of the front patch + inline label frontPatchI() const + { + return frontPatchI_; + } + + //- Return the patch ID of the back patch + inline label backPatchI() const + { + return backPatchI_; + } - //- Play commands into polyTopoChange to extrude mesh. - void setRefinement(polyTopoChange&); - //- Force recalculation of locally stored data on topological change - void updateMesh(const mapPolyMesh&) - {} + // Edit - //- Force recalculation of locally stored data for mesh distribution - void distribute(const mapDistributePolyMesh&) - {} + //- Add front and back patches + void addFrontBackPatches(); - label frontPatchI() const - { - return frontPatchI_; - } + //- Play commands into polyTopoChange to extrude mesh. + void setRefinement(polyTopoChange&); - label backPatchI() const - { - return backPatchI_; - } + //- Force recalculation of locally stored data on topological change + void updateMesh(const mapPolyMesh&) + {} + //- Force recalculation of locally stored data for mesh distribution + void distribute(const mapDistributePolyMesh&) + {} }; diff --git a/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMeshDict b/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMeshDict index 5e53c29c886fa05b2158b0d032d85b5f6ed148b7..fa1b37b304968eb9c86fa12ae33ce6253e638e61 100644 --- a/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMeshDict +++ b/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMeshDict @@ -5,42 +5,48 @@ | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ - FoamFile { - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object extrude2DMeshDict; + version 2.0; + format ascii; + class dictionary; + object extrude2DMeshDict; } - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Type of extrusion extrudeModel linearDirection; //extrudeModel wedge; +// Patch type the extruded patches will take patchType empty; //patchType wedge; +// Number of layers to extrude nLayers 1; +// Expansion ratio. If >1 then grows the layers expansionRatio 1.0; linearDirectionCoeffs { + // Direction of extrusion direction (0 0 1); + + // Width of newly extruded cells thickness 0.1; } wedgeCoeffs { - axisPt (0 0 0); - axis (1 0 0); - angle 10; + // Point the extrusion axis goes through + axisPt (0 0 0); + + // Axis to extrude around + axis (1 0 0); + + // Total angle of the wedge in degrees + angle 10; } + +// ************************************************************************* // \ No newline at end of file diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/0.org/T b/tutorials/mesh/cv2DMesh/OpenCFD/0.org/T deleted file mode 100644 index 9a6eca29ca3969af30086bdf9e4daee75ef1799d..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/0.org/T +++ /dev/null @@ -1,50 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class volScalarField; - object T; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dimensions [0 0 0 1 0 0 0]; - -internalField uniform 1; - -boundaryField -{ - box_inlet - { - type fixedValue; - value uniform 1; - } - - box_outlet - { - type zeroGradient; - } - - box_bottom - { - type zeroGradient; - } - - box_top - { - type zeroGradient; - } - - letters_text - { - type zeroGradient; - } -} - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/0.org/U b/tutorials/mesh/cv2DMesh/OpenCFD/0.org/U deleted file mode 100644 index 8bfcf3d1780f8e110bb39e46e20a9ed4267a9971..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/0.org/U +++ /dev/null @@ -1,59 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class volVectorField; - object U; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dimensions [0 1 -1 0 0 0 0]; - -internalField uniform (0 0 0); - -boundaryField -{ - box_inlet - { - type fixedValue; - value uniform (3 0 0); - } - - box_outlet - { - type zeroGradient; - } - - box_bottom - { - type supersonicFreestream; - UInf (3 0 0); - pInf 1; - TInf 1; - gamma 1.4; - } - - box_top - { - type supersonicFreestream; - UInf (3 0 0); - pInf 1; - TInf 1; - gamma 1.4; - } - - letters_text - { - type fixedValue; - value uniform (0 0 0); - } -} - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/0.org/p b/tutorials/mesh/cv2DMesh/OpenCFD/0.org/p deleted file mode 100644 index 634675e05c3a50c8ecf1659596a2c05af308bf98..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/0.org/p +++ /dev/null @@ -1,51 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class volScalarField; - object p; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dimensions [1 -1 -2 0 0 0 0]; - -internalField uniform 1; - -boundaryField -{ - box_inlet - { - type fixedValue; - value uniform 1; - } - - box_outlet - { - type zeroGradient; - } - - box_bottom - { - type zeroGradient; - } - - box_top - { - type zeroGradient; - } - - letters_text - { - type zeroGradient; - } -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/Allclean b/tutorials/mesh/cv2DMesh/OpenCFD/Allclean deleted file mode 100755 index 766547e755807945df7c6713bf32c6f18576fe0f..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/Allclean +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/CleanFunctions - -rm -rf constant/extendedFeatureEdgeMesh > /dev/null 2>&1 -rm -rf constant/triSurface/*.eMesh > /dev/null 2>&1 -rm -rf 0 > /dev/null 2>&1 -rm -rf MeshedSurface.obj > /dev/null 2>&1 - -cleanCase - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/Allrun b/tutorials/mesh/cv2DMesh/OpenCFD/Allrun deleted file mode 100755 index c86f5608da82f9be64ba958861c15324ed4c9c8c..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/Allrun +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -cp system/controlDict.mesher system/controlDict - -runApplication surfaceFeatureExtract -runApplication cv2DMesh -overwrite -runApplication extrude2DMesh -overwrite polyMesh2D -runApplication checkMesh -allGeometry -allTopology -constant -noZero - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/Allrun-rhoCentralFoam b/tutorials/mesh/cv2DMesh/OpenCFD/Allrun-rhoCentralFoam deleted file mode 100755 index a87455256146301b73272509a08181cf6c7b8506..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/Allrun-rhoCentralFoam +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -# Get the number of processors to run on from system/decomposeParDict -nProcs=$(getNumberOfProcessors) - -cp system/controlDict.rhoCentralFoam system/controlDict -cp -r 0.org 0 - -runApplication decomposePar -runParallel rhoCentralFoam $nProcs -runApplication reconstructPar - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/constant/thermophysicalProperties b/tutorials/mesh/cv2DMesh/OpenCFD/constant/thermophysicalProperties deleted file mode 100644 index 4f3963307118eeb9f80178bc25e7706e5661e3ef..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/constant/thermophysicalProperties +++ /dev/null @@ -1,43 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "constant"; - object thermophysicalProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -thermoType hePsiThermo<pureMixture<const<hConst<perfectGas<specie>>,sensibleEnthalpy>>>; - -// Note: these are the properties for a "normalised" inviscid gas -// for which the speed of sound is 1 m/s at a temperature of 1K -// and gamma = 7/5 -mixture -{ - specie - { - nMoles 1; - molWeight 11640.3; - } - thermodynamics - { - Cp 2.5; - Hf 0; - } - transport - { - mu 0; - Pr 1; - } -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/constant/triSurface/opencfd_box.stl b/tutorials/mesh/cv2DMesh/OpenCFD/constant/triSurface/opencfd_box.stl deleted file mode 100644 index dd250ea5ae9e21d687a26b84003155908e6f9405..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/constant/triSurface/opencfd_box.stl +++ /dev/null @@ -1,96 +0,0 @@ -solid back - facet normal 0 0 -1 - outer loop - vertex -1.618703 -1.830978 -0.557967 - vertex 4.82342 2.27362 -0.557967 - vertex 4.82342 -1.830978 -0.557967 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.618703 -1.830978 -0.557967 - vertex -1.618703 2.27362 -0.557967 - vertex 4.82342 2.27362 -0.557967 - endloop - endfacet -endsolid back -solid front - facet normal 0 0 1 - outer loop - vertex 4.82342 2.27362 0.586404 - vertex -1.618703 -1.830978 0.586404 - vertex 4.82342 -1.830978 0.586404 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.82342 2.27362 0.586404 - vertex -1.618703 2.27362 0.586404 - vertex -1.618703 -1.830978 0.586404 - endloop - endfacet -endsolid front -solid bottom - facet normal -2.19049e-08 -1 2.0834e-07 - outer loop - vertex -1.618703 -1.830978 0.586404 - vertex -1.618703 -1.830978 -0.557967 - vertex 4.82342 -1.830978 -0.557967 - endloop - endfacet - facet normal -1.97144e-07 -1 -6.25021e-07 - outer loop - vertex 4.82342 -1.830978 -0.557967 - vertex 4.82342 -1.830978 0.586404 - vertex -1.618703 -1.830978 0.586404 - endloop - endfacet -endsolid bottom -solid top - facet normal 6.57148e-08 1 4.1668e-07 - outer loop - vertex 4.82342 2.27362 0.586404 - vertex 4.82342 2.27362 -0.557967 - vertex -1.618703 2.27362 -0.557967 - endloop - endfacet - facet normal 8.76197e-08 1 3.1251e-07 - outer loop - vertex -1.618703 2.27362 -0.557967 - vertex -1.618703 2.27362 0.586404 - vertex 4.82342 2.27362 0.586404 - endloop - endfacet -endsolid top -solid inlet - facet normal -1 2.54891e-07 -2.60425e-07 - outer loop - vertex -1.618703 -1.830978 -0.557967 - vertex -1.618703 2.27362 0.586404 - vertex -1.618703 2.27362 -0.557967 - endloop - endfacet - facet normal -1 1.69927e-07 -1.0417e-07 - outer loop - vertex -1.618703 -1.830978 -0.557967 - vertex -1.618703 -1.830978 0.586404 - vertex -1.618703 2.27362 0.586404 - endloop - endfacet -endsolid inlet -solid outlet - facet normal 1 0 8.33361e-07 - outer loop - vertex 4.82342 2.27362 -0.557967 - vertex 4.82342 -1.830978 0.586404 - vertex 4.82342 -1.830978 -0.557967 - endloop - endfacet - facet normal 1 -6.79708e-07 -4.16681e-07 - outer loop - vertex 4.82342 2.27362 -0.557967 - vertex 4.82342 2.27362 0.586404 - vertex 4.82342 -1.830978 0.586404 - endloop - endfacet -endsolid outlet diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/constant/triSurface/opencfd_text.stl b/tutorials/mesh/cv2DMesh/OpenCFD/constant/triSurface/opencfd_text.stl deleted file mode 100644 index 0c289a16cf676609859671dc1a20b82b7f7e3195..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/constant/triSurface/opencfd_text.stl +++ /dev/null @@ -1,16466 +0,0 @@ -solid text - facet normal -0.0721417 -0.997394 -0 - outer loop - vertex 0.436903 0.696938 0.489362 - vertex 0.436903 0.696938 -0.510638 - vertex 0.458558 0.695372 -0.510638 - endloop - endfacet - facet normal -0.0721417 -0.997394 0 - outer loop - vertex 0.436903 0.696938 0.489362 - vertex 0.458558 0.695372 -0.510638 - vertex 0.458558 0.695372 0.489362 - endloop - endfacet - facet normal -0.121287 -0.992617 -0 - outer loop - vertex 0.458558 0.695372 0.489362 - vertex 0.458558 0.695372 -0.510638 - vertex 0.479633 0.692796 -0.510638 - endloop - endfacet - facet normal -0.121287 -0.992617 0 - outer loop - vertex 0.458558 0.695372 0.489362 - vertex 0.479633 0.692796 -0.510638 - vertex 0.479633 0.692796 0.489362 - endloop - endfacet - facet normal -0.171015 -0.985268 -0 - outer loop - vertex 0.479633 0.692796 0.489362 - vertex 0.479633 0.692796 -0.510638 - vertex 0.500116 0.689241 -0.510638 - endloop - endfacet - facet normal -0.171015 -0.985268 0 - outer loop - vertex 0.479633 0.692796 0.489362 - vertex 0.500116 0.689241 -0.510638 - vertex 0.500116 0.689241 0.489362 - endloop - endfacet - facet normal -0.221101 -0.975251 -0 - outer loop - vertex 0.500116 0.689241 0.489362 - vertex 0.500116 0.689241 -0.510638 - vertex 0.519992 0.684735 -0.510638 - endloop - endfacet - facet normal -0.221101 -0.975251 0 - outer loop - vertex 0.500116 0.689241 0.489362 - vertex 0.519992 0.684735 -0.510638 - vertex 0.519992 0.684735 0.489362 - endloop - endfacet - facet normal -0.271312 -0.962492 -0 - outer loop - vertex 0.519992 0.684735 0.489362 - vertex 0.519992 0.684735 -0.510638 - vertex 0.53925 0.679306 -0.510638 - endloop - endfacet - facet normal -0.271312 -0.962492 0 - outer loop - vertex 0.519992 0.684735 0.489362 - vertex 0.53925 0.679306 -0.510638 - vertex 0.53925 0.679306 0.489362 - endloop - endfacet - facet normal -0.321405 -0.946942 -0 - outer loop - vertex 0.53925 0.679306 0.489362 - vertex 0.53925 0.679306 -0.510638 - vertex 0.557876 0.672985 -0.510638 - endloop - endfacet - facet normal -0.321405 -0.946942 0 - outer loop - vertex 0.53925 0.679306 0.489362 - vertex 0.557876 0.672985 -0.510638 - vertex 0.557876 0.672985 0.489362 - endloop - endfacet - facet normal -0.371124 -0.928583 -0 - outer loop - vertex 0.557876 0.672985 0.489362 - vertex 0.557876 0.672985 -0.510638 - vertex 0.575857 0.665798 -0.510638 - endloop - endfacet - facet normal -0.371124 -0.928583 0 - outer loop - vertex 0.557876 0.672985 0.489362 - vertex 0.575857 0.665798 -0.510638 - vertex 0.575857 0.665798 0.489362 - endloop - endfacet - facet normal -0.420217 -0.907424 -0 - outer loop - vertex 0.575857 0.665798 0.489362 - vertex 0.575857 0.665798 -0.510638 - vertex 0.593179 0.657776 -0.510638 - endloop - endfacet - facet normal -0.420217 -0.907424 0 - outer loop - vertex 0.575857 0.665798 0.489362 - vertex 0.593179 0.657776 -0.510638 - vertex 0.593179 0.657776 0.489362 - endloop - endfacet - facet normal -0.468435 -0.883498 -0 - outer loop - vertex 0.593179 0.657776 0.489362 - vertex 0.593179 0.657776 -0.510638 - vertex 0.60983 0.648948 -0.510638 - endloop - endfacet - facet normal -0.468435 -0.883498 0 - outer loop - vertex 0.593179 0.657776 0.489362 - vertex 0.60983 0.648948 -0.510638 - vertex 0.60983 0.648948 0.489362 - endloop - endfacet - facet normal -0.515532 -0.85687 -0 - outer loop - vertex 0.60983 0.648948 0.489362 - vertex 0.60983 0.648948 -0.510638 - vertex 0.625797 0.639342 -0.510638 - endloop - endfacet - facet normal -0.515532 -0.85687 0 - outer loop - vertex 0.60983 0.648948 0.489362 - vertex 0.625797 0.639342 -0.510638 - vertex 0.625797 0.639342 0.489362 - endloop - endfacet - facet normal -0.561277 -0.827628 -0 - outer loop - vertex 0.625797 0.639342 0.489362 - vertex 0.625797 0.639342 -0.510638 - vertex 0.641066 0.628986 -0.510638 - endloop - endfacet - facet normal -0.561277 -0.827628 0 - outer loop - vertex 0.625797 0.639342 0.489362 - vertex 0.641066 0.628986 -0.510638 - vertex 0.641066 0.628986 0.489362 - endloop - endfacet - facet normal -0.605455 -0.795879 -0 - outer loop - vertex 0.641066 0.628986 0.489362 - vertex 0.641066 0.628986 -0.510638 - vertex 0.655625 0.617911 -0.510638 - endloop - endfacet - facet normal -0.605455 -0.795879 0 - outer loop - vertex 0.641066 0.628986 0.489362 - vertex 0.655625 0.617911 -0.510638 - vertex 0.655625 0.617911 0.489362 - endloop - endfacet - facet normal -0.647866 -0.761754 -0 - outer loop - vertex 0.655625 0.617911 0.489362 - vertex 0.655625 0.617911 -0.510638 - vertex 0.669459 0.606145 -0.510638 - endloop - endfacet - facet normal -0.647866 -0.761754 0 - outer loop - vertex 0.655625 0.617911 0.489362 - vertex 0.669459 0.606145 -0.510638 - vertex 0.669459 0.606145 0.489362 - endloop - endfacet - facet normal -0.68833 -0.725398 -0 - outer loop - vertex 0.669459 0.606145 0.489362 - vertex 0.669459 0.606145 -0.510638 - vertex 0.682557 0.593716 -0.510638 - endloop - endfacet - facet normal -0.68833 -0.725398 0 - outer loop - vertex 0.669459 0.606145 0.489362 - vertex 0.682557 0.593716 -0.510638 - vertex 0.682557 0.593716 0.489362 - endloop - endfacet - facet normal -0.726691 -0.686964 -0 - outer loop - vertex 0.682557 0.593716 0.489362 - vertex 0.682557 0.593716 -0.510638 - vertex 0.694905 0.580655 -0.510638 - endloop - endfacet - facet normal -0.726691 -0.686964 0 - outer loop - vertex 0.682557 0.593716 0.489362 - vertex 0.694905 0.580655 -0.510638 - vertex 0.694905 0.580655 0.489362 - endloop - endfacet - facet normal -0.76281 -0.646623 -0 - outer loop - vertex 0.694905 0.580655 0.489362 - vertex 0.694905 0.580655 -0.510638 - vertex 0.70649 0.566988 -0.510638 - endloop - endfacet - facet normal -0.76281 -0.646623 0 - outer loop - vertex 0.694905 0.580655 0.489362 - vertex 0.70649 0.566988 -0.510638 - vertex 0.70649 0.566988 0.489362 - endloop - endfacet - facet normal -0.796576 -0.604539 -0 - outer loop - vertex 0.70649 0.566988 0.489362 - vertex 0.70649 0.566988 -0.510638 - vertex 0.717298 0.552746 -0.510638 - endloop - endfacet - facet normal -0.796576 -0.604539 0 - outer loop - vertex 0.70649 0.566988 0.489362 - vertex 0.717298 0.552746 -0.510638 - vertex 0.717298 0.552746 0.489362 - endloop - endfacet - facet normal -0.82789 -0.56089 -0 - outer loop - vertex 0.717298 0.552746 0.489362 - vertex 0.717298 0.552746 -0.510638 - vertex 0.727317 0.537958 -0.510638 - endloop - endfacet - facet normal -0.82789 -0.56089 0 - outer loop - vertex 0.717298 0.552746 0.489362 - vertex 0.727317 0.537958 -0.510638 - vertex 0.727317 0.537958 0.489362 - endloop - endfacet - facet normal -0.856678 -0.515851 -0 - outer loop - vertex 0.727317 0.537958 0.489362 - vertex 0.727317 0.537958 -0.510638 - vertex 0.736534 0.522652 -0.510638 - endloop - endfacet - facet normal -0.856678 -0.515851 0 - outer loop - vertex 0.727317 0.537958 0.489362 - vertex 0.736534 0.522652 -0.510638 - vertex 0.736534 0.522652 0.489362 - endloop - endfacet - facet normal -0.882885 -0.46959 -0 - outer loop - vertex 0.736534 0.522652 0.489362 - vertex 0.736534 0.522652 -0.510638 - vertex 0.744935 0.506856 -0.510638 - endloop - endfacet - facet normal -0.882885 -0.46959 0 - outer loop - vertex 0.736534 0.522652 0.489362 - vertex 0.744935 0.506856 -0.510638 - vertex 0.744935 0.506856 0.489362 - endloop - endfacet - facet normal -0.906467 -0.422278 -0 - outer loop - vertex 0.744935 0.506856 0.489362 - vertex 0.744935 0.506856 -0.510638 - vertex 0.752508 0.490601 -0.510638 - endloop - endfacet - facet normal -0.906467 -0.422278 0 - outer loop - vertex 0.744935 0.506856 0.489362 - vertex 0.752508 0.490601 -0.510638 - vertex 0.752508 0.490601 0.489362 - endloop - endfacet - facet normal -0.927396 -0.37408 -0 - outer loop - vertex 0.752508 0.490601 0.489362 - vertex 0.752508 0.490601 -0.510638 - vertex 0.759238 0.473915 -0.510638 - endloop - endfacet - facet normal -0.927396 -0.37408 0 - outer loop - vertex 0.752508 0.490601 0.489362 - vertex 0.759238 0.473915 -0.510638 - vertex 0.759238 0.473915 0.489362 - endloop - endfacet - facet normal -0.945659 -0.325161 -0 - outer loop - vertex 0.759238 0.473915 0.489362 - vertex 0.759238 0.473915 -0.510638 - vertex 0.765114 0.456826 -0.510638 - endloop - endfacet - facet normal -0.945659 -0.325161 0 - outer loop - vertex 0.759238 0.473915 0.489362 - vertex 0.765114 0.456826 -0.510638 - vertex 0.765114 0.456826 0.489362 - endloop - endfacet - facet normal -0.961252 -0.275673 -0 - outer loop - vertex 0.765114 0.456826 0.489362 - vertex 0.765114 0.456826 -0.510638 - vertex 0.770122 0.439365 -0.510638 - endloop - endfacet - facet normal -0.961252 -0.275673 0 - outer loop - vertex 0.765114 0.456826 0.489362 - vertex 0.770122 0.439365 -0.510638 - vertex 0.770122 0.439365 0.489362 - endloop - endfacet - facet normal -0.97418 -0.225773 -0 - outer loop - vertex 0.770122 0.439365 0.489362 - vertex 0.770122 0.439365 -0.510638 - vertex 0.774249 0.421558 -0.510638 - endloop - endfacet - facet normal -0.97418 -0.225773 0 - outer loop - vertex 0.770122 0.439365 0.489362 - vertex 0.774249 0.421558 -0.510638 - vertex 0.774249 0.421558 0.489362 - endloop - endfacet - facet normal -0.984461 -0.175603 -0 - outer loop - vertex 0.774249 0.421558 0.489362 - vertex 0.774249 0.421558 -0.510638 - vertex 0.777481 0.403436 -0.510638 - endloop - endfacet - facet normal -0.984461 -0.175603 0 - outer loop - vertex 0.774249 0.421558 0.489362 - vertex 0.777481 0.403436 -0.510638 - vertex 0.777481 0.403436 0.489362 - endloop - endfacet - facet normal -0.992117 -0.125314 -0 - outer loop - vertex 0.777481 0.403436 0.489362 - vertex 0.777481 0.403436 -0.510638 - vertex 0.779806 0.385028 -0.510638 - endloop - endfacet - facet normal -0.992117 -0.125314 0 - outer loop - vertex 0.777481 0.403436 0.489362 - vertex 0.779806 0.385028 -0.510638 - vertex 0.779806 0.385028 0.489362 - endloop - endfacet - facet normal -0.99718 -0.0750412 -0 - outer loop - vertex 0.779806 0.385028 0.489362 - vertex 0.779806 0.385028 -0.510638 - vertex 0.781211 0.366362 -0.510638 - endloop - endfacet - facet normal -0.99718 -0.0750412 0 - outer loop - vertex 0.779806 0.385028 0.489362 - vertex 0.781211 0.366362 -0.510638 - vertex 0.781211 0.366362 0.489362 - endloop - endfacet - facet normal -0.999689 -0.0249285 -0 - outer loop - vertex 0.781211 0.366362 0.489362 - vertex 0.781211 0.366362 -0.510638 - vertex 0.781682 0.347466 -0.510638 - endloop - endfacet - facet normal -0.999689 -0.0249285 0 - outer loop - vertex 0.781211 0.366362 0.489362 - vertex 0.781682 0.347466 -0.510638 - vertex 0.781682 0.347466 0.489362 - endloop - endfacet - facet normal -0.999687 0.0249986 0 - outer loop - vertex 0.781682 0.347466 0.489362 - vertex 0.781682 0.347466 -0.510638 - vertex 0.781224 0.329132 -0.510638 - endloop - endfacet - facet normal -0.999687 0.0249986 0 - outer loop - vertex 0.781682 0.347466 0.489362 - vertex 0.781224 0.329132 -0.510638 - vertex 0.781224 0.329132 0.489362 - endloop - endfacet - facet normal -0.99718 0.0750475 0 - outer loop - vertex 0.781224 0.329132 0.489362 - vertex 0.781224 0.329132 -0.510638 - vertex 0.779855 0.31095 -0.510638 - endloop - endfacet - facet normal -0.99718 0.0750475 0 - outer loop - vertex 0.781224 0.329132 0.489362 - vertex 0.779855 0.31095 -0.510638 - vertex 0.779855 0.31095 0.489362 - endloop - endfacet - facet normal -0.99215 0.125057 0 - outer loop - vertex 0.779855 0.31095 0.489362 - vertex 0.779855 0.31095 -0.510638 - vertex 0.777587 0.292954 -0.510638 - endloop - endfacet - facet normal -0.99215 0.125057 0 - outer loop - vertex 0.779855 0.31095 0.489362 - vertex 0.777587 0.292954 -0.510638 - vertex 0.777587 0.292954 0.489362 - endloop - endfacet - facet normal -0.984582 0.174923 0 - outer loop - vertex 0.777587 0.292954 0.489362 - vertex 0.777587 0.292954 -0.510638 - vertex 0.774429 0.275177 -0.510638 - endloop - endfacet - facet normal -0.984582 0.174923 0 - outer loop - vertex 0.777587 0.292954 0.489362 - vertex 0.774429 0.275177 -0.510638 - vertex 0.774429 0.275177 0.489362 - endloop - endfacet - facet normal -0.974465 0.22454 0 - outer loop - vertex 0.774429 0.275177 0.489362 - vertex 0.774429 0.275177 -0.510638 - vertex 0.77039 0.257652 -0.510638 - endloop - endfacet - facet normal -0.974465 0.22454 0 - outer loop - vertex 0.774429 0.275177 0.489362 - vertex 0.77039 0.257652 -0.510638 - vertex 0.77039 0.257652 0.489362 - endloop - endfacet - facet normal -0.961785 0.273806 0 - outer loop - vertex 0.77039 0.257652 0.489362 - vertex 0.77039 0.257652 -0.510638 - vertex 0.765482 0.24041 -0.510638 - endloop - endfacet - facet normal -0.961785 0.273806 0 - outer loop - vertex 0.77039 0.257652 0.489362 - vertex 0.765482 0.24041 -0.510638 - vertex 0.765482 0.24041 0.489362 - endloop - endfacet - facet normal -0.94653 0.322617 0 - outer loop - vertex 0.765482 0.24041 0.489362 - vertex 0.765482 0.24041 -0.510638 - vertex 0.759714 0.223487 -0.510638 - endloop - endfacet - facet normal -0.94653 0.322617 0 - outer loop - vertex 0.765482 0.24041 0.489362 - vertex 0.759714 0.223487 -0.510638 - vertex 0.759714 0.223487 0.489362 - endloop - endfacet - facet normal -0.928692 0.370853 0 - outer loop - vertex 0.759714 0.223487 0.489362 - vertex 0.759714 0.223487 -0.510638 - vertex 0.753095 0.206913 -0.510638 - endloop - endfacet - facet normal -0.928692 0.370853 0 - outer loop - vertex 0.759714 0.223487 0.489362 - vertex 0.753095 0.206913 -0.510638 - vertex 0.753095 0.206913 0.489362 - endloop - endfacet - facet normal -0.908263 0.4184 0 - outer loop - vertex 0.753095 0.206913 0.489362 - vertex 0.753095 0.206913 -0.510638 - vertex 0.745637 0.190722 -0.510638 - endloop - endfacet - facet normal -0.908263 0.4184 0 - outer loop - vertex 0.753095 0.206913 0.489362 - vertex 0.745637 0.190722 -0.510638 - vertex 0.745637 0.190722 0.489362 - endloop - endfacet - facet normal -0.885243 0.465129 0 - outer loop - vertex 0.745637 0.190722 0.489362 - vertex 0.745637 0.190722 -0.510638 - vertex 0.737349 0.174948 -0.510638 - endloop - endfacet - facet normal -0.885243 0.465129 0 - outer loop - vertex 0.745637 0.190722 0.489362 - vertex 0.737349 0.174948 -0.510638 - vertex 0.737349 0.174948 0.489362 - endloop - endfacet - facet normal -0.85964 0.5109 0 - outer loop - vertex 0.737349 0.174948 0.489362 - vertex 0.737349 0.174948 -0.510638 - vertex 0.72824 0.159622 -0.510638 - endloop - endfacet - facet normal -0.85964 0.5109 0 - outer loop - vertex 0.737349 0.174948 0.489362 - vertex 0.72824 0.159622 -0.510638 - vertex 0.72824 0.159622 0.489362 - endloop - endfacet - facet normal -0.83147 0.55557 0 - outer loop - vertex 0.72824 0.159622 0.489362 - vertex 0.72824 0.159622 -0.510638 - vertex 0.718322 0.144778 -0.510638 - endloop - endfacet - facet normal -0.83147 0.55557 0 - outer loop - vertex 0.72824 0.159622 0.489362 - vertex 0.718322 0.144778 -0.510638 - vertex 0.718322 0.144778 0.489362 - endloop - endfacet - facet normal -0.800765 0.598978 0 - outer loop - vertex 0.718322 0.144778 0.489362 - vertex 0.718322 0.144778 -0.510638 - vertex 0.707604 0.130449 -0.510638 - endloop - endfacet - facet normal -0.800765 0.598978 0 - outer loop - vertex 0.718322 0.144778 0.489362 - vertex 0.707604 0.130449 -0.510638 - vertex 0.707604 0.130449 0.489362 - endloop - endfacet - facet normal -0.767573 0.640961 0 - outer loop - vertex 0.707604 0.130449 0.489362 - vertex 0.707604 0.130449 -0.510638 - vertex 0.696095 0.116668 -0.510638 - endloop - endfacet - facet normal -0.767573 0.640961 0 - outer loop - vertex 0.707604 0.130449 0.489362 - vertex 0.696095 0.116668 -0.510638 - vertex 0.696095 0.116668 0.489362 - endloop - endfacet - facet normal -0.731961 0.681346 0 - outer loop - vertex 0.696095 0.116668 0.489362 - vertex 0.696095 0.116668 -0.510638 - vertex 0.683807 0.103466 -0.510638 - endloop - endfacet - facet normal -0.731961 0.681346 0 - outer loop - vertex 0.696095 0.116668 0.489362 - vertex 0.683807 0.103466 -0.510638 - vertex 0.683807 0.103466 0.489362 - endloop - endfacet - facet normal -0.694019 0.719957 0 - outer loop - vertex 0.683807 0.103466 0.489362 - vertex 0.683807 0.103466 -0.510638 - vertex 0.670749 0.0908786 -0.510638 - endloop - endfacet - facet normal -0.694019 0.719957 0 - outer loop - vertex 0.683807 0.103466 0.489362 - vertex 0.670749 0.0908786 -0.510638 - vertex 0.670749 0.0908786 0.489362 - endloop - endfacet - facet normal -0.653859 0.756616 0 - outer loop - vertex 0.670749 0.0908786 0.489362 - vertex 0.670749 0.0908786 -0.510638 - vertex 0.65693 0.0789369 -0.510638 - endloop - endfacet - facet normal -0.653859 0.756616 0 - outer loop - vertex 0.670749 0.0908786 0.489362 - vertex 0.65693 0.0789369 -0.510638 - vertex 0.65693 0.0789369 0.489362 - endloop - endfacet - facet normal -0.611623 0.791149 0 - outer loop - vertex 0.65693 0.0789369 0.489362 - vertex 0.65693 0.0789369 -0.510638 - vertex 0.642362 0.0676744 -0.510638 - endloop - endfacet - facet normal -0.611623 0.791149 0 - outer loop - vertex 0.65693 0.0789369 0.489362 - vertex 0.642362 0.0676744 -0.510638 - vertex 0.642362 0.0676744 0.489362 - endloop - endfacet - facet normal -0.56748 0.823387 0 - outer loop - vertex 0.642362 0.0676744 0.489362 - vertex 0.642362 0.0676744 -0.510638 - vertex 0.627054 0.0571239 -0.510638 - endloop - endfacet - facet normal -0.56748 0.823387 0 - outer loop - vertex 0.642362 0.0676744 0.489362 - vertex 0.627054 0.0571239 -0.510638 - vertex 0.627054 0.0571239 0.489362 - endloop - endfacet - facet normal -0.521621 0.853177 0 - outer loop - vertex 0.627054 0.0571239 0.489362 - vertex 0.627054 0.0571239 -0.510638 - vertex 0.611015 0.0473182 -0.510638 - endloop - endfacet - facet normal -0.521621 0.853177 0 - outer loop - vertex 0.627054 0.0571239 0.489362 - vertex 0.611015 0.0473182 -0.510638 - vertex 0.611015 0.0473182 0.489362 - endloop - endfacet - facet normal -0.474268 0.88038 0 - outer loop - vertex 0.611015 0.0473182 0.489362 - vertex 0.611015 0.0473182 -0.510638 - vertex 0.594257 0.0382904 -0.510638 - endloop - endfacet - facet normal -0.474268 0.88038 0 - outer loop - vertex 0.611015 0.0473182 0.489362 - vertex 0.594257 0.0382904 -0.510638 - vertex 0.594257 0.0382904 0.489362 - endloop - endfacet - facet normal -0.425661 0.904883 0 - outer loop - vertex 0.594257 0.0382904 0.489362 - vertex 0.594257 0.0382904 -0.510638 - vertex 0.576789 0.0300732 -0.510638 - endloop - endfacet - facet normal -0.425661 0.904883 0 - outer loop - vertex 0.594257 0.0382904 0.489362 - vertex 0.576789 0.0300732 -0.510638 - vertex 0.576789 0.0300732 0.489362 - endloop - endfacet - facet normal -0.37606 0.926596 0 - outer loop - vertex 0.576789 0.0300732 0.489362 - vertex 0.576789 0.0300732 -0.510638 - vertex 0.55862 0.0226996 -0.510638 - endloop - endfacet - facet normal -0.37606 0.926596 0 - outer loop - vertex 0.576789 0.0300732 0.489362 - vertex 0.55862 0.0226996 -0.510638 - vertex 0.55862 0.0226996 0.489362 - endloop - endfacet - facet normal -0.325736 0.945461 0 - outer loop - vertex 0.55862 0.0226996 0.489362 - vertex 0.55862 0.0226996 -0.510638 - vertex 0.539762 0.0162024 -0.510638 - endloop - endfacet - facet normal -0.325736 0.945461 0 - outer loop - vertex 0.55862 0.0226996 0.489362 - vertex 0.539762 0.0162024 -0.510638 - vertex 0.539762 0.0162024 0.489362 - endloop - endfacet - facet normal -0.27497 0.961453 0 - outer loop - vertex 0.539762 0.0162024 0.489362 - vertex 0.539762 0.0162024 -0.510638 - vertex 0.520224 0.0106145 -0.510638 - endloop - endfacet - facet normal -0.27497 0.961453 0 - outer loop - vertex 0.539762 0.0162024 0.489362 - vertex 0.520224 0.0106145 -0.510638 - vertex 0.520224 0.0106145 0.489362 - endloop - endfacet - facet normal -0.224043 0.974579 0 - outer loop - vertex 0.520224 0.0106145 0.489362 - vertex 0.520224 0.0106145 -0.510638 - vertex 0.500015 0.00596891 -0.510638 - endloop - endfacet - facet normal -0.224043 0.974579 0 - outer loop - vertex 0.520224 0.0106145 0.489362 - vertex 0.500015 0.00596891 -0.510638 - vertex 0.500015 0.00596891 0.489362 - endloop - endfacet - facet normal -0.17323 0.984881 0 - outer loop - vertex 0.500015 0.00596891 0.489362 - vertex 0.500015 0.00596891 -0.510638 - vertex 0.479147 0.00229839 -0.510638 - endloop - endfacet - facet normal -0.17323 0.984881 0 - outer loop - vertex 0.500015 0.00596891 0.489362 - vertex 0.479147 0.00229839 -0.510638 - vertex 0.479147 0.00229839 0.489362 - endloop - endfacet - facet normal -0.122796 0.992432 0 - outer loop - vertex 0.479147 0.00229839 0.489362 - vertex 0.479147 0.00229839 -0.510638 - vertex 0.457629 -0.00036413 -0.510638 - endloop - endfacet - facet normal -0.122796 0.992432 0 - outer loop - vertex 0.479147 0.00229839 0.489362 - vertex 0.457629 -0.00036413 -0.510638 - vertex 0.457629 -0.00036413 0.489362 - endloop - endfacet - facet normal -0.0729886 0.997333 0 - outer loop - vertex 0.457629 -0.00036413 0.489362 - vertex 0.457629 -0.00036413 -0.510638 - vertex 0.43547 -0.00198576 -0.510638 - endloop - endfacet - facet normal -0.0729886 0.997333 0 - outer loop - vertex 0.457629 -0.00036413 0.489362 - vertex 0.43547 -0.00198576 -0.510638 - vertex 0.43547 -0.00198576 0.489362 - endloop - endfacet - facet normal -0.0240339 0.999711 0 - outer loop - vertex 0.43547 -0.00198576 0.489362 - vertex 0.43547 -0.00198576 -0.510638 - vertex 0.412682 -0.00253361 -0.510638 - endloop - endfacet - facet normal -0.0240339 0.999711 0 - outer loop - vertex 0.43547 -0.00198576 0.489362 - vertex 0.412682 -0.00253361 -0.510638 - vertex 0.412682 -0.00253361 0.489362 - endloop - endfacet - facet normal 0.024717 0.999694 0 - outer loop - vertex 0.412682 -0.00253361 0.489362 - vertex 0.412682 -0.00253361 -0.510638 - vertex 0.390658 -0.00198906 -0.510638 - endloop - endfacet - facet normal 0.024717 0.999694 0 - outer loop - vertex 0.412682 -0.00253361 0.489362 - vertex 0.390658 -0.00198906 -0.510638 - vertex 0.390658 -0.00198906 0.489362 - endloop - endfacet - facet normal 0.0749079 0.99719 0 - outer loop - vertex 0.390658 -0.00198906 0.489362 - vertex 0.390658 -0.00198906 -0.510638 - vertex 0.369193 -0.000376658 -0.510638 - endloop - endfacet - facet normal 0.0749079 0.99719 0 - outer loop - vertex 0.390658 -0.00198906 0.489362 - vertex 0.369193 -0.000376658 -0.510638 - vertex 0.369193 -0.000376658 0.489362 - endloop - endfacet - facet normal 0.12574 0.992063 0 - outer loop - vertex 0.369193 -0.000376658 0.489362 - vertex 0.369193 -0.000376658 -0.510638 - vertex 0.348301 0.00227131 -0.510638 - endloop - endfacet - facet normal 0.12574 0.992063 0 - outer loop - vertex 0.369193 -0.000376658 0.489362 - vertex 0.348301 0.00227131 -0.510638 - vertex 0.348301 0.00227131 0.489362 - endloop - endfacet - facet normal 0.176977 0.984215 0 - outer loop - vertex 0.348301 0.00227131 0.489362 - vertex 0.348301 0.00227131 -0.510638 - vertex 0.327995 0.0059226 -0.510638 - endloop - endfacet - facet normal 0.176977 0.984215 0 - outer loop - vertex 0.348301 0.00227131 0.489362 - vertex 0.327995 0.0059226 -0.510638 - vertex 0.327995 0.0059226 0.489362 - endloop - endfacet - facet normal 0.228362 0.973576 0 - outer loop - vertex 0.327995 0.0059226 0.489362 - vertex 0.327995 0.0059226 -0.510638 - vertex 0.308289 0.010545 -0.510638 - endloop - endfacet - facet normal 0.228362 0.973576 0 - outer loop - vertex 0.327995 0.0059226 0.489362 - vertex 0.308289 0.010545 -0.510638 - vertex 0.308289 0.010545 0.489362 - endloop - endfacet - facet normal 0.279633 0.960107 0 - outer loop - vertex 0.308289 0.010545 0.489362 - vertex 0.308289 0.010545 -0.510638 - vertex 0.289194 0.0161063 -0.510638 - endloop - endfacet - facet normal 0.279633 0.960107 0 - outer loop - vertex 0.308289 0.010545 0.489362 - vertex 0.289194 0.0161063 -0.510638 - vertex 0.289194 0.0161063 0.489362 - endloop - endfacet - facet normal 0.330522 0.943798 0 - outer loop - vertex 0.289194 0.0161063 0.489362 - vertex 0.289194 0.0161063 -0.510638 - vertex 0.270725 0.0225743 -0.510638 - endloop - endfacet - facet normal 0.330522 0.943798 0 - outer loop - vertex 0.289194 0.0161063 0.489362 - vertex 0.270725 0.0225743 -0.510638 - vertex 0.270725 0.0225743 0.489362 - endloop - endfacet - facet normal 0.380766 0.924672 0 - outer loop - vertex 0.270725 0.0225743 0.489362 - vertex 0.270725 0.0225743 -0.510638 - vertex 0.252894 0.0299167 -0.510638 - endloop - endfacet - facet normal 0.380766 0.924672 0 - outer loop - vertex 0.270725 0.0225743 0.489362 - vertex 0.252894 0.0299167 -0.510638 - vertex 0.252894 0.0299167 0.489362 - endloop - endfacet - facet normal 0.430109 0.902777 0 - outer loop - vertex 0.252894 0.0299167 0.489362 - vertex 0.252894 0.0299167 -0.510638 - vertex 0.235715 0.0381013 -0.510638 - endloop - endfacet - facet normal 0.430109 0.902777 0 - outer loop - vertex 0.252894 0.0299167 0.489362 - vertex 0.235715 0.0381013 -0.510638 - vertex 0.235715 0.0381013 0.489362 - endloop - endfacet - facet normal 0.478308 0.878192 0 - outer loop - vertex 0.235715 0.0381013 0.489362 - vertex 0.235715 0.0381013 -0.510638 - vertex 0.219201 0.0470959 -0.510638 - endloop - endfacet - facet normal 0.478308 0.878192 0 - outer loop - vertex 0.235715 0.0381013 0.489362 - vertex 0.219201 0.0470959 -0.510638 - vertex 0.219201 0.0470959 0.489362 - endloop - endfacet - facet normal 0.52514 0.851016 0 - outer loop - vertex 0.219201 0.0470959 0.489362 - vertex 0.219201 0.0470959 -0.510638 - vertex 0.203364 0.0568684 -0.510638 - endloop - endfacet - facet normal 0.52514 0.851016 0 - outer loop - vertex 0.219201 0.0470959 0.489362 - vertex 0.203364 0.0568684 -0.510638 - vertex 0.203364 0.0568684 0.489362 - endloop - endfacet - facet normal 0.570398 0.821369 0 - outer loop - vertex 0.203364 0.0568684 0.489362 - vertex 0.203364 0.0568684 -0.510638 - vertex 0.188218 0.0673863 -0.510638 - endloop - endfacet - facet normal 0.570398 0.821369 0 - outer loop - vertex 0.203364 0.0568684 0.489362 - vertex 0.188218 0.0673863 -0.510638 - vertex 0.188218 0.0673863 0.489362 - endloop - endfacet - facet normal 0.613899 0.789385 0 - outer loop - vertex 0.188218 0.0673863 0.489362 - vertex 0.188218 0.0673863 -0.510638 - vertex 0.173776 0.0786176 -0.510638 - endloop - endfacet - facet normal 0.613899 0.789385 0 - outer loop - vertex 0.188218 0.0673863 0.489362 - vertex 0.173776 0.0786176 -0.510638 - vertex 0.173776 0.0786176 0.489362 - endloop - endfacet - facet normal 0.655486 0.755208 0 - outer loop - vertex 0.173776 0.0786176 0.489362 - vertex 0.173776 0.0786176 -0.510638 - vertex 0.160052 0.09053 -0.510638 - endloop - endfacet - facet normal 0.655486 0.755208 0 - outer loop - vertex 0.173776 0.0786176 0.489362 - vertex 0.160052 0.09053 -0.510638 - vertex 0.160052 0.09053 0.489362 - endloop - endfacet - facet normal 0.695021 0.718989 0 - outer loop - vertex 0.160052 0.09053 0.489362 - vertex 0.160052 0.09053 -0.510638 - vertex 0.147057 0.103091 -0.510638 - endloop - endfacet - facet normal 0.695021 0.718989 0 - outer loop - vertex 0.160052 0.09053 0.489362 - vertex 0.147057 0.103091 -0.510638 - vertex 0.147057 0.103091 0.489362 - endloop - endfacet - facet normal 0.732392 0.680883 0 - outer loop - vertex 0.147057 0.103091 0.489362 - vertex 0.147057 0.103091 -0.510638 - vertex 0.134806 0.116269 -0.510638 - endloop - endfacet - facet normal 0.732392 0.680883 0 - outer loop - vertex 0.147057 0.103091 0.489362 - vertex 0.134806 0.116269 -0.510638 - vertex 0.134806 0.116269 0.489362 - endloop - endfacet - facet normal 0.767507 0.641041 0 - outer loop - vertex 0.134806 0.116269 0.489362 - vertex 0.134806 0.116269 -0.510638 - vertex 0.123311 0.130032 -0.510638 - endloop - endfacet - facet normal 0.767507 0.641041 0 - outer loop - vertex 0.134806 0.116269 0.489362 - vertex 0.123311 0.130032 -0.510638 - vertex 0.123311 0.130032 0.489362 - endloop - endfacet - facet normal 0.800291 0.599612 0 - outer loop - vertex 0.123311 0.130032 0.489362 - vertex 0.123311 0.130032 -0.510638 - vertex 0.112586 0.144346 -0.510638 - endloop - endfacet - facet normal 0.800291 0.599612 0 - outer loop - vertex 0.123311 0.130032 0.489362 - vertex 0.112586 0.144346 -0.510638 - vertex 0.112586 0.144346 0.489362 - endloop - endfacet - facet normal 0.830685 0.556743 0 - outer loop - vertex 0.112586 0.144346 0.489362 - vertex 0.112586 0.144346 -0.510638 - vertex 0.102644 0.159181 -0.510638 - endloop - endfacet - facet normal 0.830685 0.556743 0 - outer loop - vertex 0.112586 0.144346 0.489362 - vertex 0.102644 0.159181 -0.510638 - vertex 0.102644 0.159181 0.489362 - endloop - endfacet - facet normal 0.858646 0.512568 0 - outer loop - vertex 0.102644 0.159181 0.489362 - vertex 0.102644 0.159181 -0.510638 - vertex 0.093497 0.174503 -0.510638 - endloop - endfacet - facet normal 0.858646 0.512568 0 - outer loop - vertex 0.102644 0.159181 0.489362 - vertex 0.093497 0.174503 -0.510638 - vertex 0.093497 0.174503 0.489362 - endloop - endfacet - facet normal 0.88414 0.467221 0 - outer loop - vertex 0.093497 0.174503 0.489362 - vertex 0.093497 0.174503 -0.510638 - vertex 0.0851591 0.190281 -0.510638 - endloop - endfacet - facet normal 0.88414 0.467221 0 - outer loop - vertex 0.093497 0.174503 0.489362 - vertex 0.0851591 0.190281 -0.510638 - vertex 0.0851591 0.190281 0.489362 - endloop - endfacet - facet normal 0.907142 0.420825 0 - outer loop - vertex 0.0851591 0.190281 0.489362 - vertex 0.0851591 0.190281 -0.510638 - vertex 0.0776433 0.206483 -0.510638 - endloop - endfacet - facet normal 0.907142 0.420825 0 - outer loop - vertex 0.0851591 0.190281 0.489362 - vertex 0.0776433 0.206483 -0.510638 - vertex 0.0776433 0.206483 0.489362 - endloop - endfacet - facet normal 0.927631 0.373498 0 - outer loop - vertex 0.0776433 0.206483 0.489362 - vertex 0.0776433 0.206483 -0.510638 - vertex 0.0709626 0.223075 -0.510638 - endloop - endfacet - facet normal 0.927631 0.373498 0 - outer loop - vertex 0.0776433 0.206483 0.489362 - vertex 0.0709626 0.223075 -0.510638 - vertex 0.0709626 0.223075 0.489362 - endloop - endfacet - facet normal 0.945593 0.325353 0 - outer loop - vertex 0.0709626 0.223075 0.489362 - vertex 0.0709626 0.223075 -0.510638 - vertex 0.0651301 0.240026 -0.510638 - endloop - endfacet - facet normal 0.945593 0.325353 0 - outer loop - vertex 0.0709626 0.223075 0.489362 - vertex 0.0651301 0.240026 -0.510638 - vertex 0.0651301 0.240026 0.489362 - endloop - endfacet - facet normal 0.961014 0.276499 0 - outer loop - vertex 0.0651301 0.240026 0.489362 - vertex 0.0651301 0.240026 -0.510638 - vertex 0.060159 0.257304 -0.510638 - endloop - endfacet - facet normal 0.961014 0.276499 0 - outer loop - vertex 0.0651301 0.240026 0.489362 - vertex 0.060159 0.257304 -0.510638 - vertex 0.060159 0.257304 0.489362 - endloop - endfacet - facet normal 0.973884 0.227045 0 - outer loop - vertex 0.060159 0.257304 0.489362 - vertex 0.060159 0.257304 -0.510638 - vertex 0.0560623 0.274877 -0.510638 - endloop - endfacet - facet normal 0.973884 0.227045 0 - outer loop - vertex 0.060159 0.257304 0.489362 - vertex 0.0560623 0.274877 -0.510638 - vertex 0.0560623 0.274877 0.489362 - endloop - endfacet - facet normal 0.984194 0.177095 0 - outer loop - vertex 0.0560623 0.274877 0.489362 - vertex 0.0560623 0.274877 -0.510638 - vertex 0.0528531 0.292711 -0.510638 - endloop - endfacet - facet normal 0.984194 0.177095 0 - outer loop - vertex 0.0560623 0.274877 0.489362 - vertex 0.0528531 0.292711 -0.510638 - vertex 0.0528531 0.292711 0.489362 - endloop - endfacet - facet normal 0.991934 0.126759 0 - outer loop - vertex 0.0528531 0.292711 0.489362 - vertex 0.0528531 0.292711 -0.510638 - vertex 0.0505447 0.310776 -0.510638 - endloop - endfacet - facet normal 0.991934 0.126759 0 - outer loop - vertex 0.0528531 0.292711 0.489362 - vertex 0.0505447 0.310776 -0.510638 - vertex 0.0505447 0.310776 0.489362 - endloop - endfacet - facet normal 0.997096 0.0761484 0 - outer loop - vertex 0.0505447 0.310776 0.489362 - vertex 0.0505447 0.310776 -0.510638 - vertex 0.04915 0.329038 -0.510638 - endloop - endfacet - facet normal 0.997096 0.0761484 0 - outer loop - vertex 0.0505447 0.310776 0.489362 - vertex 0.04915 0.329038 -0.510638 - vertex 0.04915 0.329038 0.489362 - endloop - endfacet - facet normal 0.999678 0.0253779 0 - outer loop - vertex 0.04915 0.329038 0.489362 - vertex 0.04915 0.329038 -0.510638 - vertex 0.0486821 0.347466 -0.510638 - endloop - endfacet - facet normal 0.999678 0.0253779 0 - outer loop - vertex 0.04915 0.329038 0.489362 - vertex 0.0486821 0.347466 -0.510638 - vertex 0.0486821 0.347466 0.489362 - endloop - endfacet - facet normal 0.999673 -0.0255719 0 - outer loop - vertex 0.0486821 0.347466 0.489362 - vertex 0.0486821 0.347466 -0.510638 - vertex 0.0491631 0.366268 -0.510638 - endloop - endfacet - facet normal 0.999673 -0.0255719 0 - outer loop - vertex 0.0486821 0.347466 0.489362 - vertex 0.0491631 0.366268 -0.510638 - vertex 0.0491631 0.366268 0.489362 - endloop - endfacet - facet normal 0.997044 -0.0768271 0 - outer loop - vertex 0.0491631 0.366268 0.489362 - vertex 0.0491631 0.366268 -0.510638 - vertex 0.0505952 0.384854 -0.510638 - endloop - endfacet - facet normal 0.997044 -0.0768271 0 - outer loop - vertex 0.0491631 0.366268 0.489362 - vertex 0.0505952 0.384854 -0.510638 - vertex 0.0505952 0.384854 0.489362 - endloop - endfacet - facet normal 0.991766 -0.128061 0 - outer loop - vertex 0.0505952 0.384854 0.489362 - vertex 0.0505952 0.384854 -0.510638 - vertex 0.0529633 0.403193 -0.510638 - endloop - endfacet - facet normal 0.991766 -0.128061 0 - outer loop - vertex 0.0505952 0.384854 0.489362 - vertex 0.0529633 0.403193 -0.510638 - vertex 0.0529633 0.403193 0.489362 - endloop - endfacet - facet normal 0.983828 -0.179114 0 - outer loop - vertex 0.0529633 0.403193 0.489362 - vertex 0.0529633 0.403193 -0.510638 - vertex 0.0562521 0.421258 -0.510638 - endloop - endfacet - facet normal 0.983828 -0.179114 0 - outer loop - vertex 0.0529633 0.403193 0.489362 - vertex 0.0562521 0.421258 -0.510638 - vertex 0.0562521 0.421258 0.489362 - endloop - endfacet - facet normal 0.973229 -0.229839 0 - outer loop - vertex 0.0562521 0.421258 0.489362 - vertex 0.0562521 0.421258 -0.510638 - vertex 0.0604462 0.439017 -0.510638 - endloop - endfacet - facet normal 0.973229 -0.229839 0 - outer loop - vertex 0.0562521 0.421258 0.489362 - vertex 0.0604462 0.439017 -0.510638 - vertex 0.0604462 0.439017 0.489362 - endloop - endfacet - facet normal 0.959973 -0.280091 0 - outer loop - vertex 0.0604462 0.439017 0.489362 - vertex 0.0604462 0.439017 -0.510638 - vertex 0.0655303 0.456442 -0.510638 - endloop - endfacet - facet normal 0.959973 -0.280091 0 - outer loop - vertex 0.0604462 0.439017 0.489362 - vertex 0.0655303 0.456442 -0.510638 - vertex 0.0655303 0.456442 0.489362 - endloop - endfacet - facet normal 0.944076 -0.329729 0 - outer loop - vertex 0.0655303 0.456442 0.489362 - vertex 0.0655303 0.456442 -0.510638 - vertex 0.071489 0.473503 -0.510638 - endloop - endfacet - facet normal 0.944076 -0.329729 0 - outer loop - vertex 0.0655303 0.456442 0.489362 - vertex 0.071489 0.473503 -0.510638 - vertex 0.071489 0.473503 0.489362 - endloop - endfacet - facet normal 0.925555 -0.378612 0 - outer loop - vertex 0.071489 0.473503 0.489362 - vertex 0.071489 0.473503 -0.510638 - vertex 0.0783071 0.490171 -0.510638 - endloop - endfacet - facet normal 0.925555 -0.378612 0 - outer loop - vertex 0.071489 0.473503 0.489362 - vertex 0.0783071 0.490171 -0.510638 - vertex 0.0783071 0.490171 0.489362 - endloop - endfacet - facet normal 0.904439 -0.426603 0 - outer loop - vertex 0.0783071 0.490171 0.489362 - vertex 0.0783071 0.490171 -0.510638 - vertex 0.0859692 0.506415 -0.510638 - endloop - endfacet - facet normal 0.904439 -0.426603 0 - outer loop - vertex 0.0783071 0.490171 0.489362 - vertex 0.0859692 0.506415 -0.510638 - vertex 0.0859692 0.506415 0.489362 - endloop - endfacet - facet normal 0.880762 -0.47356 0 - outer loop - vertex 0.0859692 0.506415 0.489362 - vertex 0.0859692 0.506415 -0.510638 - vertex 0.09446 0.522207 -0.510638 - endloop - endfacet - facet normal 0.880762 -0.47356 0 - outer loop - vertex 0.0859692 0.506415 0.489362 - vertex 0.09446 0.522207 -0.510638 - vertex 0.09446 0.522207 0.489362 - endloop - endfacet - facet normal 0.854563 -0.519347 0 - outer loop - vertex 0.09446 0.522207 0.489362 - vertex 0.09446 0.522207 -0.510638 - vertex 0.103764 0.537517 -0.510638 - endloop - endfacet - facet normal 0.854563 -0.519347 0 - outer loop - vertex 0.09446 0.522207 0.489362 - vertex 0.103764 0.537517 -0.510638 - vertex 0.103764 0.537517 0.489362 - endloop - endfacet - facet normal 0.825896 -0.563822 0 - outer loop - vertex 0.103764 0.537517 0.489362 - vertex 0.103764 0.537517 -0.510638 - vertex 0.113866 0.552314 -0.510638 - endloop - endfacet - facet normal 0.825896 -0.563822 0 - outer loop - vertex 0.103764 0.537517 0.489362 - vertex 0.113866 0.552314 -0.510638 - vertex 0.113866 0.552314 0.489362 - endloop - endfacet - facet normal 0.79482 -0.606845 0 - outer loop - vertex 0.113866 0.552314 0.489362 - vertex 0.113866 0.552314 -0.510638 - vertex 0.124751 0.566571 -0.510638 - endloop - endfacet - facet normal 0.79482 -0.606845 0 - outer loop - vertex 0.113866 0.552314 0.489362 - vertex 0.124751 0.566571 -0.510638 - vertex 0.124751 0.566571 0.489362 - endloop - endfacet - facet normal 0.761406 -0.648275 0 - outer loop - vertex 0.124751 0.566571 0.489362 - vertex 0.124751 0.566571 -0.510638 - vertex 0.136403 0.580256 -0.510638 - endloop - endfacet - facet normal 0.761406 -0.648275 0 - outer loop - vertex 0.124751 0.566571 0.489362 - vertex 0.136403 0.580256 -0.510638 - vertex 0.136403 0.580256 0.489362 - endloop - endfacet - facet normal 0.725739 -0.68797 0 - outer loop - vertex 0.136403 0.580256 0.489362 - vertex 0.136403 0.580256 -0.510638 - vertex 0.148807 0.593341 -0.510638 - endloop - endfacet - facet normal 0.725739 -0.68797 0 - outer loop - vertex 0.136403 0.580256 0.489362 - vertex 0.148807 0.593341 -0.510638 - vertex 0.148807 0.593341 0.489362 - endloop - endfacet - facet normal 0.687916 -0.72579 0 - outer loop - vertex 0.148807 0.593341 0.489362 - vertex 0.148807 0.593341 -0.510638 - vertex 0.161948 0.605796 -0.510638 - endloop - endfacet - facet normal 0.687916 -0.72579 0 - outer loop - vertex 0.148807 0.593341 0.489362 - vertex 0.161948 0.605796 -0.510638 - vertex 0.161948 0.605796 0.489362 - endloop - endfacet - facet normal 0.648054 -0.761594 0 - outer loop - vertex 0.161948 0.605796 0.489362 - vertex 0.161948 0.605796 -0.510638 - vertex 0.17581 0.617592 -0.510638 - endloop - endfacet - facet normal 0.648054 -0.761594 0 - outer loop - vertex 0.161948 0.605796 0.489362 - vertex 0.17581 0.617592 -0.510638 - vertex 0.17581 0.617592 0.489362 - endloop - endfacet - facet normal 0.606282 -0.79525 0 - outer loop - vertex 0.17581 0.617592 0.489362 - vertex 0.17581 0.617592 -0.510638 - vertex 0.190378 0.628698 -0.510638 - endloop - endfacet - facet normal 0.606282 -0.79525 0 - outer loop - vertex 0.17581 0.617592 0.489362 - vertex 0.190378 0.628698 -0.510638 - vertex 0.190378 0.628698 0.489362 - endloop - endfacet - facet normal 0.562745 -0.82663 0 - outer loop - vertex 0.190378 0.628698 0.489362 - vertex 0.190378 0.628698 -0.510638 - vertex 0.205637 0.639086 -0.510638 - endloop - endfacet - facet normal 0.562745 -0.82663 0 - outer loop - vertex 0.190378 0.628698 0.489362 - vertex 0.205637 0.639086 -0.510638 - vertex 0.205637 0.639086 0.489362 - endloop - endfacet - facet normal 0.517613 -0.855615 0 - outer loop - vertex 0.205637 0.639086 0.489362 - vertex 0.205637 0.639086 -0.510638 - vertex 0.221571 0.648726 -0.510638 - endloop - endfacet - facet normal 0.517613 -0.855615 0 - outer loop - vertex 0.205637 0.639086 0.489362 - vertex 0.221571 0.648726 -0.510638 - vertex 0.221571 0.648726 0.489362 - endloop - endfacet - facet normal 0.471065 -0.882098 0 - outer loop - vertex 0.221571 0.648726 0.489362 - vertex 0.221571 0.648726 -0.510638 - vertex 0.238165 0.657587 -0.510638 - endloop - endfacet - facet normal 0.471065 -0.882098 0 - outer loop - vertex 0.221571 0.648726 0.489362 - vertex 0.238165 0.657587 -0.510638 - vertex 0.238165 0.657587 0.489362 - endloop - endfacet - facet normal 0.423303 -0.905988 0 - outer loop - vertex 0.238165 0.657587 0.489362 - vertex 0.238165 0.657587 -0.510638 - vertex 0.255404 0.665642 -0.510638 - endloop - endfacet - facet normal 0.423303 -0.905988 0 - outer loop - vertex 0.238165 0.657587 0.489362 - vertex 0.255404 0.665642 -0.510638 - vertex 0.255404 0.665642 0.489362 - endloop - endfacet - facet normal 0.374533 -0.927214 0 - outer loop - vertex 0.255404 0.665642 0.489362 - vertex 0.255404 0.665642 -0.510638 - vertex 0.273272 0.672859 -0.510638 - endloop - endfacet - facet normal 0.374533 -0.927214 0 - outer loop - vertex 0.255404 0.665642 0.489362 - vertex 0.273272 0.672859 -0.510638 - vertex 0.273272 0.672859 0.489362 - endloop - endfacet - facet normal 0.32498 -0.945721 0 - outer loop - vertex 0.273272 0.672859 0.489362 - vertex 0.273272 0.672859 -0.510638 - vertex 0.291754 0.67921 -0.510638 - endloop - endfacet - facet normal 0.32498 -0.945721 0 - outer loop - vertex 0.273272 0.672859 0.489362 - vertex 0.291754 0.67921 -0.510638 - vertex 0.291754 0.67921 0.489362 - endloop - endfacet - facet normal 0.274881 -0.961478 0 - outer loop - vertex 0.291754 0.67921 0.489362 - vertex 0.291754 0.67921 -0.510638 - vertex 0.310835 0.684665 -0.510638 - endloop - endfacet - facet normal 0.274881 -0.961478 0 - outer loop - vertex 0.291754 0.67921 0.489362 - vertex 0.310835 0.684665 -0.510638 - vertex 0.310835 0.684665 0.489362 - endloop - endfacet - facet normal 0.224467 -0.974482 0 - outer loop - vertex 0.310835 0.684665 0.489362 - vertex 0.310835 0.684665 -0.510638 - vertex 0.330499 0.689195 -0.510638 - endloop - endfacet - facet normal 0.224467 -0.974482 0 - outer loop - vertex 0.310835 0.684665 0.489362 - vertex 0.330499 0.689195 -0.510638 - vertex 0.330499 0.689195 0.489362 - endloop - endfacet - facet normal 0.173977 -0.98475 0 - outer loop - vertex 0.330499 0.689195 0.489362 - vertex 0.330499 0.689195 -0.510638 - vertex 0.350731 0.692769 -0.510638 - endloop - endfacet - facet normal 0.173977 -0.98475 0 - outer loop - vertex 0.330499 0.689195 0.489362 - vertex 0.350731 0.692769 -0.510638 - vertex 0.350731 0.692769 0.489362 - endloop - endfacet - facet normal 0.123643 -0.992327 0 - outer loop - vertex 0.350731 0.692769 0.489362 - vertex 0.350731 0.692769 -0.510638 - vertex 0.371516 0.695359 -0.510638 - endloop - endfacet - facet normal 0.123643 -0.992327 0 - outer loop - vertex 0.350731 0.692769 0.489362 - vertex 0.371516 0.695359 -0.510638 - vertex 0.371516 0.695359 0.489362 - endloop - endfacet - facet normal 0.073691 -0.997281 0 - outer loop - vertex 0.371516 0.695359 0.489362 - vertex 0.371516 0.695359 -0.510638 - vertex 0.392838 0.696935 -0.510638 - endloop - endfacet - facet normal 0.073691 -0.997281 0 - outer loop - vertex 0.371516 0.695359 0.489362 - vertex 0.392838 0.696935 -0.510638 - vertex 0.392838 0.696935 0.489362 - endloop - endfacet - facet normal 0.024335 -0.999704 0 - outer loop - vertex 0.392838 0.696935 0.489362 - vertex 0.392838 0.696935 -0.510638 - vertex 0.414682 0.697466 -0.510638 - endloop - endfacet - facet normal 0.024335 -0.999704 0 - outer loop - vertex 0.392838 0.696935 0.489362 - vertex 0.414682 0.697466 -0.510638 - vertex 0.414682 0.697466 0.489362 - endloop - endfacet - facet normal -0.023783 -0.999717 0 - outer loop - vertex 0.436903 0.696938 -0.510638 - vertex 0.436903 0.696938 0.489362 - vertex 0.414682 0.697466 0.489362 - endloop - endfacet - facet normal -0.023783 -0.999717 0 - outer loop - vertex 0.436903 0.696938 -0.510638 - vertex 0.414682 0.697466 0.489362 - vertex 0.414682 0.697466 -0.510638 - endloop - endfacet - facet normal 0.0731231 -0.997323 0 - outer loop - vertex 0.429846 0.0878337 0.489362 - vertex 0.429846 0.0878337 -0.510638 - vertex 0.444727 0.0889248 -0.510638 - endloop - endfacet - facet normal 0.0731231 -0.997323 0 - outer loop - vertex 0.429846 0.0878337 0.489362 - vertex 0.444727 0.0889248 -0.510638 - vertex 0.444727 0.0889248 0.489362 - endloop - endfacet - facet normal 0.122419 -0.992479 0 - outer loop - vertex 0.444727 0.0889248 0.489362 - vertex 0.444727 0.0889248 -0.510638 - vertex 0.459309 0.0907234 -0.510638 - endloop - endfacet - facet normal 0.122419 -0.992479 0 - outer loop - vertex 0.444727 0.0889248 0.489362 - vertex 0.459309 0.0907234 -0.510638 - vertex 0.459309 0.0907234 0.489362 - endloop - endfacet - facet normal 0.171931 -0.985109 0 - outer loop - vertex 0.459309 0.0907234 0.489362 - vertex 0.459309 0.0907234 -0.510638 - vertex 0.473576 0.0932133 -0.510638 - endloop - endfacet - facet normal 0.171931 -0.985109 0 - outer loop - vertex 0.459309 0.0907234 0.489362 - vertex 0.473576 0.0932133 -0.510638 - vertex 0.473576 0.0932133 0.489362 - endloop - endfacet - facet normal 0.221489 -0.975163 0 - outer loop - vertex 0.473576 0.0932133 0.489362 - vertex 0.473576 0.0932133 -0.510638 - vertex 0.487511 0.0963784 -0.510638 - endloop - endfacet - facet normal 0.221489 -0.975163 0 - outer loop - vertex 0.473576 0.0932133 0.489362 - vertex 0.487511 0.0963784 -0.510638 - vertex 0.487511 0.0963784 0.489362 - endloop - endfacet - facet normal 0.270912 -0.962604 0 - outer loop - vertex 0.487511 0.0963784 0.489362 - vertex 0.487511 0.0963784 -0.510638 - vertex 0.501098 0.100202 -0.510638 - endloop - endfacet - facet normal 0.270912 -0.962604 0 - outer loop - vertex 0.487511 0.0963784 0.489362 - vertex 0.501098 0.100202 -0.510638 - vertex 0.501098 0.100202 0.489362 - endloop - endfacet - facet normal 0.320021 -0.94741 0 - outer loop - vertex 0.501098 0.100202 0.489362 - vertex 0.501098 0.100202 -0.510638 - vertex 0.514322 0.104669 -0.510638 - endloop - endfacet - facet normal 0.320021 -0.94741 0 - outer loop - vertex 0.501098 0.100202 0.489362 - vertex 0.514322 0.104669 -0.510638 - vertex 0.514322 0.104669 0.489362 - endloop - endfacet - facet normal 0.368634 -0.929575 0 - outer loop - vertex 0.514322 0.104669 0.489362 - vertex 0.514322 0.104669 -0.510638 - vertex 0.527165 0.109762 -0.510638 - endloop - endfacet - facet normal 0.368634 -0.929575 0 - outer loop - vertex 0.514322 0.104669 0.489362 - vertex 0.527165 0.109762 -0.510638 - vertex 0.527165 0.109762 0.489362 - endloop - endfacet - facet normal 0.41657 -0.909104 0 - outer loop - vertex 0.527165 0.109762 0.489362 - vertex 0.527165 0.109762 -0.510638 - vertex 0.539611 0.115465 -0.510638 - endloop - endfacet - facet normal 0.41657 -0.909104 0 - outer loop - vertex 0.527165 0.109762 0.489362 - vertex 0.539611 0.115465 -0.510638 - vertex 0.539611 0.115465 0.489362 - endloop - endfacet - facet normal 0.463649 -0.886019 0 - outer loop - vertex 0.539611 0.115465 0.489362 - vertex 0.539611 0.115465 -0.510638 - vertex 0.551645 0.121763 -0.510638 - endloop - endfacet - facet normal 0.463649 -0.886019 0 - outer loop - vertex 0.539611 0.115465 0.489362 - vertex 0.551645 0.121763 -0.510638 - vertex 0.551645 0.121763 0.489362 - endloop - endfacet - facet normal 0.509692 -0.860357 0 - outer loop - vertex 0.551645 0.121763 0.489362 - vertex 0.551645 0.121763 -0.510638 - vertex 0.56325 0.128638 -0.510638 - endloop - endfacet - facet normal 0.509692 -0.860357 0 - outer loop - vertex 0.551645 0.121763 0.489362 - vertex 0.56325 0.128638 -0.510638 - vertex 0.56325 0.128638 0.489362 - endloop - endfacet - facet normal 0.554528 -0.832165 0 - outer loop - vertex 0.56325 0.128638 0.489362 - vertex 0.56325 0.128638 -0.510638 - vertex 0.57441 0.136074 -0.510638 - endloop - endfacet - facet normal 0.554528 -0.832165 0 - outer loop - vertex 0.56325 0.128638 0.489362 - vertex 0.57441 0.136074 -0.510638 - vertex 0.57441 0.136074 0.489362 - endloop - endfacet - facet normal 0.597985 -0.801507 0 - outer loop - vertex 0.57441 0.136074 0.489362 - vertex 0.57441 0.136074 -0.510638 - vertex 0.585109 0.144056 -0.510638 - endloop - endfacet - facet normal 0.597985 -0.801507 0 - outer loop - vertex 0.57441 0.136074 0.489362 - vertex 0.585109 0.144056 -0.510638 - vertex 0.585109 0.144056 0.489362 - endloop - endfacet - facet normal 0.639897 -0.768461 0 - outer loop - vertex 0.585109 0.144056 0.489362 - vertex 0.585109 0.144056 -0.510638 - vertex 0.59533 0.152567 -0.510638 - endloop - endfacet - facet normal 0.639897 -0.768461 0 - outer loop - vertex 0.585109 0.144056 0.489362 - vertex 0.59533 0.152567 -0.510638 - vertex 0.59533 0.152567 0.489362 - endloop - endfacet - facet normal 0.680106 -0.733114 0 - outer loop - vertex 0.59533 0.152567 0.489362 - vertex 0.59533 0.152567 -0.510638 - vertex 0.605057 0.161591 -0.510638 - endloop - endfacet - facet normal 0.680106 -0.733114 0 - outer loop - vertex 0.59533 0.152567 0.489362 - vertex 0.605057 0.161591 -0.510638 - vertex 0.605057 0.161591 0.489362 - endloop - endfacet - facet normal 0.718459 -0.69557 0 - outer loop - vertex 0.605057 0.161591 0.489362 - vertex 0.605057 0.161591 -0.510638 - vertex 0.614275 0.171112 -0.510638 - endloop - endfacet - facet normal 0.718459 -0.69557 0 - outer loop - vertex 0.605057 0.161591 0.489362 - vertex 0.614275 0.171112 -0.510638 - vertex 0.614275 0.171112 0.489362 - endloop - endfacet - facet normal 0.754812 -0.655942 0 - outer loop - vertex 0.614275 0.171112 0.489362 - vertex 0.614275 0.171112 -0.510638 - vertex 0.622966 0.181113 -0.510638 - endloop - endfacet - facet normal 0.754812 -0.655942 0 - outer loop - vertex 0.614275 0.171112 0.489362 - vertex 0.622966 0.181113 -0.510638 - vertex 0.622966 0.181113 0.489362 - endloop - endfacet - facet normal 0.789026 -0.61436 0 - outer loop - vertex 0.622966 0.181113 0.489362 - vertex 0.622966 0.181113 -0.510638 - vertex 0.631114 0.191578 -0.510638 - endloop - endfacet - facet normal 0.789026 -0.61436 0 - outer loop - vertex 0.622966 0.181113 0.489362 - vertex 0.631114 0.191578 -0.510638 - vertex 0.631114 0.191578 0.489362 - endloop - endfacet - facet normal 0.820973 -0.570967 0 - outer loop - vertex 0.631114 0.191578 0.489362 - vertex 0.631114 0.191578 -0.510638 - vertex 0.638704 0.202492 -0.510638 - endloop - endfacet - facet normal 0.820973 -0.570967 0 - outer loop - vertex 0.631114 0.191578 0.489362 - vertex 0.638704 0.202492 -0.510638 - vertex 0.638704 0.202492 0.489362 - endloop - endfacet - facet normal 0.850537 -0.525916 0 - outer loop - vertex 0.638704 0.202492 0.489362 - vertex 0.638704 0.202492 -0.510638 - vertex 0.645719 0.213837 -0.510638 - endloop - endfacet - facet normal 0.850537 -0.525916 0 - outer loop - vertex 0.638704 0.202492 0.489362 - vertex 0.645719 0.213837 -0.510638 - vertex 0.645719 0.213837 0.489362 - endloop - endfacet - facet normal 0.877611 -0.479373 0 - outer loop - vertex 0.645719 0.213837 0.489362 - vertex 0.645719 0.213837 -0.510638 - vertex 0.652143 0.225597 -0.510638 - endloop - endfacet - facet normal 0.877611 -0.479373 0 - outer loop - vertex 0.645719 0.213837 0.489362 - vertex 0.652143 0.225597 -0.510638 - vertex 0.652143 0.225597 0.489362 - endloop - endfacet - facet normal 0.902105 -0.431516 0 - outer loop - vertex 0.652143 0.225597 0.489362 - vertex 0.652143 0.225597 -0.510638 - vertex 0.65796 0.237757 -0.510638 - endloop - endfacet - facet normal 0.902105 -0.431516 0 - outer loop - vertex 0.652143 0.225597 0.489362 - vertex 0.65796 0.237757 -0.510638 - vertex 0.65796 0.237757 0.489362 - endloop - endfacet - facet normal 0.923944 -0.382529 0 - outer loop - vertex 0.65796 0.237757 0.489362 - vertex 0.65796 0.237757 -0.510638 - vertex 0.663153 0.2503 -0.510638 - endloop - endfacet - facet normal 0.923944 -0.382529 0 - outer loop - vertex 0.65796 0.237757 0.489362 - vertex 0.663153 0.2503 -0.510638 - vertex 0.663153 0.2503 0.489362 - endloop - endfacet - facet normal 0.943062 -0.332617 0 - outer loop - vertex 0.663153 0.2503 0.489362 - vertex 0.663153 0.2503 -0.510638 - vertex 0.667706 0.26321 -0.510638 - endloop - endfacet - facet normal 0.943062 -0.332617 0 - outer loop - vertex 0.663153 0.2503 0.489362 - vertex 0.667706 0.26321 -0.510638 - vertex 0.667706 0.26321 0.489362 - endloop - endfacet - facet normal 0.959422 -0.281975 0 - outer loop - vertex 0.667706 0.26321 0.489362 - vertex 0.667706 0.26321 -0.510638 - vertex 0.671603 0.276471 -0.510638 - endloop - endfacet - facet normal 0.959422 -0.281975 0 - outer loop - vertex 0.667706 0.26321 0.489362 - vertex 0.671603 0.276471 -0.510638 - vertex 0.671603 0.276471 0.489362 - endloop - endfacet - facet normal 0.972997 -0.230819 0 - outer loop - vertex 0.671603 0.276471 0.489362 - vertex 0.671603 0.276471 -0.510638 - vertex 0.674829 0.290066 -0.510638 - endloop - endfacet - facet normal 0.972997 -0.230819 0 - outer loop - vertex 0.671603 0.276471 0.489362 - vertex 0.674829 0.290066 -0.510638 - vertex 0.674829 0.290066 0.489362 - endloop - endfacet - facet normal 0.983783 -0.179362 0 - outer loop - vertex 0.674829 0.290066 0.489362 - vertex 0.674829 0.290066 -0.510638 - vertex 0.677365 0.303979 -0.510638 - endloop - endfacet - facet normal 0.983783 -0.179362 0 - outer loop - vertex 0.674829 0.290066 0.489362 - vertex 0.677365 0.303979 -0.510638 - vertex 0.677365 0.303979 0.489362 - endloop - endfacet - facet normal 0.991798 -0.127815 0 - outer loop - vertex 0.677365 0.303979 0.489362 - vertex 0.677365 0.303979 -0.510638 - vertex 0.679197 0.318195 -0.510638 - endloop - endfacet - facet normal 0.991798 -0.127815 0 - outer loop - vertex 0.677365 0.303979 0.489362 - vertex 0.679197 0.318195 -0.510638 - vertex 0.679197 0.318195 0.489362 - endloop - endfacet - facet normal 0.997077 -0.0763974 0 - outer loop - vertex 0.679197 0.318195 0.489362 - vertex 0.679197 0.318195 -0.510638 - vertex 0.680308 0.332696 -0.510638 - endloop - endfacet - facet normal 0.997077 -0.0763974 0 - outer loop - vertex 0.679197 0.318195 0.489362 - vertex 0.680308 0.332696 -0.510638 - vertex 0.680308 0.332696 0.489362 - endloop - endfacet - facet normal 0.99968 -0.0253097 0 - outer loop - vertex 0.680308 0.332696 0.489362 - vertex 0.680308 0.332696 -0.510638 - vertex 0.680682 0.347466 -0.510638 - endloop - endfacet - facet normal 0.99968 -0.0253097 0 - outer loop - vertex 0.680308 0.332696 0.489362 - vertex 0.680682 0.347466 -0.510638 - vertex 0.680682 0.347466 0.489362 - endloop - endfacet - facet normal 0.999684 0.0251466 0 - outer loop - vertex 0.680682 0.347466 0.489362 - vertex 0.680682 0.347466 -0.510638 - vertex 0.680308 0.36233 -0.510638 - endloop - endfacet - facet normal 0.999684 0.0251466 0 - outer loop - vertex 0.680682 0.347466 0.489362 - vertex 0.680308 0.36233 -0.510638 - vertex 0.680308 0.36233 0.489362 - endloop - endfacet - facet normal 0.99711 0.0759765 0 - outer loop - vertex 0.680308 0.36233 0.489362 - vertex 0.680308 0.36233 -0.510638 - vertex 0.679197 0.376912 -0.510638 - endloop - endfacet - facet normal 0.99711 0.0759765 0 - outer loop - vertex 0.680308 0.36233 0.489362 - vertex 0.679197 0.376912 -0.510638 - vertex 0.679197 0.376912 0.489362 - endloop - endfacet - facet normal 0.991876 0.127209 0 - outer loop - vertex 0.679197 0.376912 0.489362 - vertex 0.679197 0.376912 -0.510638 - vertex 0.677365 0.391196 -0.510638 - endloop - endfacet - facet normal 0.991876 0.127209 0 - outer loop - vertex 0.679197 0.376912 0.489362 - vertex 0.677365 0.391196 -0.510638 - vertex 0.677365 0.391196 0.489362 - endloop - endfacet - facet normal 0.983913 0.178648 0 - outer loop - vertex 0.677365 0.391196 0.489362 - vertex 0.677365 0.391196 -0.510638 - vertex 0.674829 0.405167 -0.510638 - endloop - endfacet - facet normal 0.983913 0.178648 0 - outer loop - vertex 0.677365 0.391196 0.489362 - vertex 0.674829 0.405167 -0.510638 - vertex 0.674829 0.405167 0.489362 - endloop - endfacet - facet normal 0.973174 0.230069 0 - outer loop - vertex 0.674829 0.405167 0.489362 - vertex 0.674829 0.405167 -0.510638 - vertex 0.671604 0.418809 -0.510638 - endloop - endfacet - facet normal 0.973174 0.230069 0 - outer loop - vertex 0.674829 0.405167 0.489362 - vertex 0.671604 0.418809 -0.510638 - vertex 0.671604 0.418809 0.489362 - endloop - endfacet - facet normal 0.959633 0.281257 0 - outer loop - vertex 0.671604 0.418809 0.489362 - vertex 0.671604 0.418809 -0.510638 - vertex 0.667706 0.432106 -0.510638 - endloop - endfacet - facet normal 0.959633 0.281257 0 - outer loop - vertex 0.671604 0.418809 0.489362 - vertex 0.667706 0.432106 -0.510638 - vertex 0.667706 0.432106 0.489362 - endloop - endfacet - facet normal 0.943283 0.331989 0 - outer loop - vertex 0.667706 0.432106 0.489362 - vertex 0.667706 0.432106 -0.510638 - vertex 0.663153 0.445044 -0.510638 - endloop - endfacet - facet normal 0.943283 0.331989 0 - outer loop - vertex 0.667706 0.432106 0.489362 - vertex 0.663153 0.445044 -0.510638 - vertex 0.663153 0.445044 0.489362 - endloop - endfacet - facet normal 0.924146 0.382041 0 - outer loop - vertex 0.663153 0.445044 0.489362 - vertex 0.663153 0.445044 -0.510638 - vertex 0.65796 0.457606 -0.510638 - endloop - endfacet - facet normal 0.924146 0.382041 0 - outer loop - vertex 0.663153 0.445044 0.489362 - vertex 0.65796 0.457606 -0.510638 - vertex 0.65796 0.457606 0.489362 - endloop - endfacet - facet normal 0.902254 0.431205 0 - outer loop - vertex 0.65796 0.457606 0.489362 - vertex 0.65796 0.457606 -0.510638 - vertex 0.652143 0.469776 -0.510638 - endloop - endfacet - facet normal 0.902254 0.431205 0 - outer loop - vertex 0.65796 0.457606 0.489362 - vertex 0.652143 0.469776 -0.510638 - vertex 0.652143 0.469776 0.489362 - endloop - endfacet - facet normal 0.87767 0.479265 0 - outer loop - vertex 0.652143 0.469776 0.489362 - vertex 0.652143 0.469776 -0.510638 - vertex 0.645719 0.481541 -0.510638 - endloop - endfacet - facet normal 0.87767 0.479265 0 - outer loop - vertex 0.652143 0.469776 0.489362 - vertex 0.645719 0.481541 -0.510638 - vertex 0.645719 0.481541 0.489362 - endloop - endfacet - facet normal 0.850469 0.526024 0 - outer loop - vertex 0.645719 0.481541 0.489362 - vertex 0.645719 0.481541 -0.510638 - vertex 0.638704 0.492882 -0.510638 - endloop - endfacet - facet normal 0.850469 0.526024 0 - outer loop - vertex 0.645719 0.481541 0.489362 - vertex 0.638704 0.492882 -0.510638 - vertex 0.638704 0.492882 0.489362 - endloop - endfacet - facet normal 0.820745 0.571294 0 - outer loop - vertex 0.638704 0.492882 0.489362 - vertex 0.638704 0.492882 -0.510638 - vertex 0.631114 0.503786 -0.510638 - endloop - endfacet - facet normal 0.820745 0.571294 0 - outer loop - vertex 0.638704 0.492882 0.489362 - vertex 0.631114 0.503786 -0.510638 - vertex 0.631114 0.503786 0.489362 - endloop - endfacet - facet normal 0.78861 0.614893 0 - outer loop - vertex 0.631114 0.503786 0.489362 - vertex 0.631114 0.503786 -0.510638 - vertex 0.622966 0.514237 -0.510638 - endloop - endfacet - facet normal 0.78861 0.614893 0 - outer loop - vertex 0.631114 0.503786 0.489362 - vertex 0.622966 0.514237 -0.510638 - vertex 0.622966 0.514237 0.489362 - endloop - endfacet - facet normal 0.754187 0.65666 0 - outer loop - vertex 0.622966 0.514237 0.489362 - vertex 0.622966 0.514237 -0.510638 - vertex 0.614275 0.524219 -0.510638 - endloop - endfacet - facet normal 0.754187 0.65666 0 - outer loop - vertex 0.622966 0.514237 0.489362 - vertex 0.614275 0.524219 -0.510638 - vertex 0.614275 0.524219 0.489362 - endloop - endfacet - facet normal 0.717609 0.696446 0 - outer loop - vertex 0.614275 0.524219 0.489362 - vertex 0.614275 0.524219 -0.510638 - vertex 0.605057 0.533716 -0.510638 - endloop - endfacet - facet normal 0.717609 0.696446 0 - outer loop - vertex 0.614275 0.524219 0.489362 - vertex 0.605057 0.533716 -0.510638 - vertex 0.605057 0.533716 0.489362 - endloop - endfacet - facet normal 0.679027 0.734113 0 - outer loop - vertex 0.605057 0.533716 0.489362 - vertex 0.605057 0.533716 -0.510638 - vertex 0.59533 0.542714 -0.510638 - endloop - endfacet - facet normal 0.679027 0.734113 0 - outer loop - vertex 0.605057 0.533716 0.489362 - vertex 0.59533 0.542714 -0.510638 - vertex 0.59533 0.542714 0.489362 - endloop - endfacet - facet normal 0.638597 0.769541 0 - outer loop - vertex 0.59533 0.542714 0.489362 - vertex 0.59533 0.542714 -0.510638 - vertex 0.585109 0.551196 -0.510638 - endloop - endfacet - facet normal 0.638597 0.769541 0 - outer loop - vertex 0.59533 0.542714 0.489362 - vertex 0.585109 0.551196 -0.510638 - vertex 0.585109 0.551196 0.489362 - endloop - endfacet - facet normal 0.596478 0.80263 0 - outer loop - vertex 0.585109 0.551196 0.489362 - vertex 0.585109 0.551196 -0.510638 - vertex 0.57441 0.559146 -0.510638 - endloop - endfacet - facet normal 0.596478 0.80263 0 - outer loop - vertex 0.585109 0.551196 0.489362 - vertex 0.57441 0.559146 -0.510638 - vertex 0.57441 0.559146 0.489362 - endloop - endfacet - facet normal 0.552844 0.833285 0 - outer loop - vertex 0.57441 0.559146 0.489362 - vertex 0.57441 0.559146 -0.510638 - vertex 0.56325 0.56655 -0.510638 - endloop - endfacet - facet normal 0.552844 0.833285 0 - outer loop - vertex 0.57441 0.559146 0.489362 - vertex 0.56325 0.56655 -0.510638 - vertex 0.56325 0.56655 0.489362 - endloop - endfacet - facet normal 0.507865 0.861437 0 - outer loop - vertex 0.56325 0.56655 0.489362 - vertex 0.56325 0.56655 -0.510638 - vertex 0.551645 0.573392 -0.510638 - endloop - endfacet - facet normal 0.507865 0.861437 0 - outer loop - vertex 0.56325 0.56655 0.489362 - vertex 0.551645 0.573392 -0.510638 - vertex 0.551645 0.573392 0.489362 - endloop - endfacet - facet normal 0.461726 0.887022 0 - outer loop - vertex 0.551645 0.573392 0.489362 - vertex 0.551645 0.573392 -0.510638 - vertex 0.539611 0.579656 -0.510638 - endloop - endfacet - facet normal 0.461726 0.887022 0 - outer loop - vertex 0.551645 0.573392 0.489362 - vertex 0.539611 0.579656 -0.510638 - vertex 0.539611 0.579656 0.489362 - endloop - endfacet - facet normal 0.4146 0.910004 0 - outer loop - vertex 0.539611 0.579656 0.489362 - vertex 0.539611 0.579656 -0.510638 - vertex 0.527165 0.585327 -0.510638 - endloop - endfacet - facet normal 0.4146 0.910004 0 - outer loop - vertex 0.539611 0.579656 0.489362 - vertex 0.527165 0.585327 -0.510638 - vertex 0.527165 0.585327 0.489362 - endloop - endfacet - facet normal 0.36668 0.930347 0 - outer loop - vertex 0.527165 0.585327 0.489362 - vertex 0.527165 0.585327 -0.510638 - vertex 0.514322 0.590389 -0.510638 - endloop - endfacet - facet normal 0.36668 0.930347 0 - outer loop - vertex 0.527165 0.585327 0.489362 - vertex 0.514322 0.590389 -0.510638 - vertex 0.514322 0.590389 0.489362 - endloop - endfacet - facet normal 0.318137 0.948045 0 - outer loop - vertex 0.514322 0.590389 0.489362 - vertex 0.514322 0.590389 -0.510638 - vertex 0.501098 0.594826 -0.510638 - endloop - endfacet - facet normal 0.318137 0.948045 0 - outer loop - vertex 0.514322 0.590389 0.489362 - vertex 0.501098 0.594826 -0.510638 - vertex 0.501098 0.594826 0.489362 - endloop - endfacet - facet normal 0.269168 0.963093 0 - outer loop - vertex 0.501098 0.594826 0.489362 - vertex 0.501098 0.594826 -0.510638 - vertex 0.487511 0.598624 -0.510638 - endloop - endfacet - facet normal 0.269168 0.963093 0 - outer loop - vertex 0.501098 0.594826 0.489362 - vertex 0.487511 0.598624 -0.510638 - vertex 0.487511 0.598624 0.489362 - endloop - endfacet - facet normal 0.219944 0.975512 0 - outer loop - vertex 0.487511 0.598624 0.489362 - vertex 0.487511 0.598624 -0.510638 - vertex 0.473576 0.601766 -0.510638 - endloop - endfacet - facet normal 0.219944 0.975512 0 - outer loop - vertex 0.487511 0.598624 0.489362 - vertex 0.473576 0.601766 -0.510638 - vertex 0.473576 0.601766 0.489362 - endloop - endfacet - facet normal 0.170642 0.985333 0 - outer loop - vertex 0.473576 0.601766 0.489362 - vertex 0.473576 0.601766 -0.510638 - vertex 0.459309 0.604236 -0.510638 - endloop - endfacet - facet normal 0.170642 0.985333 0 - outer loop - vertex 0.473576 0.601766 0.489362 - vertex 0.459309 0.604236 -0.510638 - vertex 0.459309 0.604236 0.489362 - endloop - endfacet - facet normal 0.121443 0.992598 0 - outer loop - vertex 0.459309 0.604236 0.489362 - vertex 0.459309 0.604236 -0.510638 - vertex 0.444727 0.606021 -0.510638 - endloop - endfacet - facet normal 0.121443 0.992598 0 - outer loop - vertex 0.459309 0.604236 0.489362 - vertex 0.444727 0.606021 -0.510638 - vertex 0.444727 0.606021 0.489362 - endloop - endfacet - facet normal 0.0725067 0.997368 0 - outer loop - vertex 0.444727 0.606021 0.489362 - vertex 0.444727 0.606021 -0.510638 - vertex 0.429846 0.607102 -0.510638 - endloop - endfacet - facet normal 0.0725067 0.997368 0 - outer loop - vertex 0.444727 0.606021 0.489362 - vertex 0.429846 0.607102 -0.510638 - vertex 0.429846 0.607102 0.489362 - endloop - endfacet - facet normal 0.0240017 0.999712 0 - outer loop - vertex 0.429846 0.607102 0.489362 - vertex 0.429846 0.607102 -0.510638 - vertex 0.414682 0.607466 -0.510638 - endloop - endfacet - facet normal 0.0240017 0.999712 0 - outer loop - vertex 0.429846 0.607102 0.489362 - vertex 0.414682 0.607466 -0.510638 - vertex 0.414682 0.607466 0.489362 - endloop - endfacet - facet normal -0.0241597 0.999708 0 - outer loop - vertex 0.414682 0.607466 0.489362 - vertex 0.414682 0.607466 -0.510638 - vertex 0.399615 0.607102 -0.510638 - endloop - endfacet - facet normal -0.0241597 0.999708 0 - outer loop - vertex 0.414682 0.607466 0.489362 - vertex 0.399615 0.607102 -0.510638 - vertex 0.399615 0.607102 0.489362 - endloop - endfacet - facet normal -0.0729467 0.997336 0 - outer loop - vertex 0.399615 0.607102 0.489362 - vertex 0.399615 0.607102 -0.510638 - vertex 0.384824 0.60602 -0.510638 - endloop - endfacet - facet normal -0.0729467 0.997336 0 - outer loop - vertex 0.399615 0.607102 0.489362 - vertex 0.384824 0.60602 -0.510638 - vertex 0.384824 0.60602 0.489362 - endloop - endfacet - facet normal -0.122137 0.992513 0 - outer loop - vertex 0.384824 0.60602 0.489362 - vertex 0.384824 0.60602 -0.510638 - vertex 0.370326 0.604236 -0.510638 - endloop - endfacet - facet normal -0.122137 0.992513 0 - outer loop - vertex 0.384824 0.60602 0.489362 - vertex 0.370326 0.604236 -0.510638 - vertex 0.370326 0.604236 0.489362 - endloop - endfacet - facet normal -0.171554 0.985175 0 - outer loop - vertex 0.370326 0.604236 0.489362 - vertex 0.370326 0.604236 -0.510638 - vertex 0.356138 0.601766 -0.510638 - endloop - endfacet - facet normal -0.171554 0.985175 0 - outer loop - vertex 0.370326 0.604236 0.489362 - vertex 0.356138 0.601766 -0.510638 - vertex 0.356138 0.601766 0.489362 - endloop - endfacet - facet normal -0.221031 0.975267 0 - outer loop - vertex 0.356138 0.601766 0.489362 - vertex 0.356138 0.601766 -0.510638 - vertex 0.342275 0.598624 -0.510638 - endloop - endfacet - facet normal -0.221031 0.975267 0 - outer loop - vertex 0.356138 0.601766 0.489362 - vertex 0.342275 0.598624 -0.510638 - vertex 0.342275 0.598624 0.489362 - endloop - endfacet - facet normal -0.270399 0.962748 0 - outer loop - vertex 0.342275 0.598624 0.489362 - vertex 0.342275 0.598624 -0.510638 - vertex 0.328754 0.594826 -0.510638 - endloop - endfacet - facet normal -0.270399 0.962748 0 - outer loop - vertex 0.342275 0.598624 0.489362 - vertex 0.328754 0.594826 -0.510638 - vertex 0.328754 0.594826 0.489362 - endloop - endfacet - facet normal -0.319471 0.947596 0 - outer loop - vertex 0.328754 0.594826 0.489362 - vertex 0.328754 0.594826 -0.510638 - vertex 0.315592 0.590389 -0.510638 - endloop - endfacet - facet normal -0.319471 0.947596 0 - outer loop - vertex 0.328754 0.594826 0.489362 - vertex 0.315592 0.590389 -0.510638 - vertex 0.315592 0.590389 0.489362 - endloop - endfacet - facet normal -0.368075 0.929796 0 - outer loop - vertex 0.315592 0.590389 0.489362 - vertex 0.315592 0.590389 -0.510638 - vertex 0.302805 0.585327 -0.510638 - endloop - endfacet - facet normal -0.368075 0.929796 0 - outer loop - vertex 0.315592 0.590389 0.489362 - vertex 0.302805 0.585327 -0.510638 - vertex 0.302805 0.585327 0.489362 - endloop - endfacet - facet normal -0.416022 0.909355 0 - outer loop - vertex 0.302805 0.585327 0.489362 - vertex 0.302805 0.585327 -0.510638 - vertex 0.29041 0.579656 -0.510638 - endloop - endfacet - facet normal -0.416022 0.909355 0 - outer loop - vertex 0.302805 0.585327 0.489362 - vertex 0.29041 0.579656 -0.510638 - vertex 0.29041 0.579656 0.489362 - endloop - endfacet - facet normal -0.463139 0.886286 0 - outer loop - vertex 0.29041 0.579656 0.489362 - vertex 0.29041 0.579656 -0.510638 - vertex 0.278423 0.573392 -0.510638 - endloop - endfacet - facet normal -0.463139 0.886286 0 - outer loop - vertex 0.29041 0.579656 0.489362 - vertex 0.278423 0.573392 -0.510638 - vertex 0.278423 0.573392 0.489362 - endloop - endfacet - facet normal -0.50924 0.860624 0 - outer loop - vertex 0.278423 0.573392 0.489362 - vertex 0.278423 0.573392 -0.510638 - vertex 0.26686 0.56655 -0.510638 - endloop - endfacet - facet normal -0.50924 0.860624 0 - outer loop - vertex 0.278423 0.573392 0.489362 - vertex 0.26686 0.56655 -0.510638 - vertex 0.26686 0.56655 0.489362 - endloop - endfacet - facet normal -0.554154 0.832414 0 - outer loop - vertex 0.26686 0.56655 0.489362 - vertex 0.26686 0.56655 -0.510638 - vertex 0.255738 0.559146 -0.510638 - endloop - endfacet - facet normal -0.554154 0.832414 0 - outer loop - vertex 0.26686 0.56655 0.489362 - vertex 0.255738 0.559146 -0.510638 - vertex 0.255738 0.559146 0.489362 - endloop - endfacet - facet normal -0.597701 0.801719 0 - outer loop - vertex 0.255738 0.559146 0.489362 - vertex 0.255738 0.559146 -0.510638 - vertex 0.245074 0.551196 -0.510638 - endloop - endfacet - facet normal -0.597701 0.801719 0 - outer loop - vertex 0.255738 0.559146 0.489362 - vertex 0.245074 0.551196 -0.510638 - vertex 0.245074 0.551196 0.489362 - endloop - endfacet - facet normal -0.639718 0.76861 0 - outer loop - vertex 0.245074 0.551196 0.489362 - vertex 0.245074 0.551196 -0.510638 - vertex 0.234883 0.542714 -0.510638 - endloop - endfacet - facet normal -0.639718 0.76861 0 - outer loop - vertex 0.245074 0.551196 0.489362 - vertex 0.234883 0.542714 -0.510638 - vertex 0.234883 0.542714 0.489362 - endloop - endfacet - facet normal -0.680032 0.733182 0 - outer loop - vertex 0.234883 0.542714 0.489362 - vertex 0.234883 0.542714 -0.510638 - vertex 0.225182 0.533716 -0.510638 - endloop - endfacet - facet normal -0.680032 0.733182 0 - outer loop - vertex 0.234883 0.542714 0.489362 - vertex 0.225182 0.533716 -0.510638 - vertex 0.225182 0.533716 0.489362 - endloop - endfacet - facet normal -0.718493 0.695534 0 - outer loop - vertex 0.225182 0.533716 0.489362 - vertex 0.225182 0.533716 -0.510638 - vertex 0.215988 0.524219 -0.510638 - endloop - endfacet - facet normal -0.718493 0.695534 0 - outer loop - vertex 0.225182 0.533716 0.489362 - vertex 0.215988 0.524219 -0.510638 - vertex 0.215988 0.524219 0.489362 - endloop - endfacet - facet normal -0.754945 0.655788 0 - outer loop - vertex 0.215988 0.524219 0.489362 - vertex 0.215988 0.524219 -0.510638 - vertex 0.207317 0.514237 -0.510638 - endloop - endfacet - facet normal -0.754945 0.655788 0 - outer loop - vertex 0.215988 0.524219 0.489362 - vertex 0.207317 0.514237 -0.510638 - vertex 0.207317 0.514237 0.489362 - endloop - endfacet - facet normal -0.789245 0.614078 0 - outer loop - vertex 0.207317 0.514237 0.489362 - vertex 0.207317 0.514237 -0.510638 - vertex 0.199186 0.503786 -0.510638 - endloop - endfacet - facet normal -0.789245 0.614078 0 - outer loop - vertex 0.207317 0.514237 0.489362 - vertex 0.199186 0.503786 -0.510638 - vertex 0.199186 0.503786 0.489362 - endloop - endfacet - facet normal -0.821265 0.570546 0 - outer loop - vertex 0.199186 0.503786 0.489362 - vertex 0.199186 0.503786 -0.510638 - vertex 0.191611 0.492882 -0.510638 - endloop - endfacet - facet normal -0.821265 0.570546 0 - outer loop - vertex 0.199186 0.503786 0.489362 - vertex 0.191611 0.492882 -0.510638 - vertex 0.191611 0.492882 0.489362 - endloop - endfacet - facet normal -0.85088 0.52536 0 - outer loop - vertex 0.191611 0.492882 0.489362 - vertex 0.191611 0.492882 -0.510638 - vertex 0.184608 0.481541 -0.510638 - endloop - endfacet - facet normal -0.85088 0.52536 0 - outer loop - vertex 0.191611 0.492882 0.489362 - vertex 0.184608 0.481541 -0.510638 - vertex 0.184608 0.481541 0.489362 - endloop - endfacet - facet normal -0.877985 0.478688 0 - outer loop - vertex 0.184608 0.481541 0.489362 - vertex 0.184608 0.481541 -0.510638 - vertex 0.178194 0.469776 -0.510638 - endloop - endfacet - facet normal -0.877985 0.478688 0 - outer loop - vertex 0.184608 0.481541 0.489362 - vertex 0.178194 0.469776 -0.510638 - vertex 0.178194 0.469776 0.489362 - endloop - endfacet - facet normal -0.902486 0.43072 0 - outer loop - vertex 0.178194 0.469776 0.489362 - vertex 0.178194 0.469776 -0.510638 - vertex 0.172386 0.457606 -0.510638 - endloop - endfacet - facet normal -0.902486 0.43072 0 - outer loop - vertex 0.178194 0.469776 0.489362 - vertex 0.172386 0.457606 -0.510638 - vertex 0.172386 0.457606 0.489362 - endloop - endfacet - facet normal -0.924308 0.381648 0 - outer loop - vertex 0.172386 0.457606 0.489362 - vertex 0.172386 0.457606 -0.510638 - vertex 0.167199 0.445044 -0.510638 - endloop - endfacet - facet normal -0.924308 0.381648 0 - outer loop - vertex 0.172386 0.457606 0.489362 - vertex 0.167199 0.445044 -0.510638 - vertex 0.167199 0.445044 0.489362 - endloop - endfacet - facet normal -0.943391 0.331682 0 - outer loop - vertex 0.167199 0.445044 0.489362 - vertex 0.167199 0.445044 -0.510638 - vertex 0.16265 0.432106 -0.510638 - endloop - endfacet - facet normal -0.943391 0.331682 0 - outer loop - vertex 0.167199 0.445044 0.489362 - vertex 0.16265 0.432106 -0.510638 - vertex 0.16265 0.432106 0.489362 - endloop - endfacet - facet normal -0.959698 0.281032 0 - outer loop - vertex 0.16265 0.432106 0.489362 - vertex 0.16265 0.432106 -0.510638 - vertex 0.158756 0.418809 -0.510638 - endloop - endfacet - facet normal -0.959698 0.281032 0 - outer loop - vertex 0.16265 0.432106 0.489362 - vertex 0.158756 0.418809 -0.510638 - vertex 0.158756 0.418809 0.489362 - endloop - endfacet - facet normal -0.973211 0.229915 0 - outer loop - vertex 0.158756 0.418809 0.489362 - vertex 0.158756 0.418809 -0.510638 - vertex 0.155533 0.405167 -0.510638 - endloop - endfacet - facet normal -0.973211 0.229915 0 - outer loop - vertex 0.158756 0.418809 0.489362 - vertex 0.155533 0.405167 -0.510638 - vertex 0.155533 0.405167 0.489362 - endloop - endfacet - facet normal -0.98393 0.178553 0 - outer loop - vertex 0.155533 0.405167 0.489362 - vertex 0.155533 0.405167 -0.510638 - vertex 0.152998 0.391196 -0.510638 - endloop - endfacet - facet normal -0.98393 0.178553 0 - outer loop - vertex 0.155533 0.405167 0.489362 - vertex 0.152998 0.391196 -0.510638 - vertex 0.152998 0.391196 0.489362 - endloop - endfacet - facet normal -0.991882 0.127162 0 - outer loop - vertex 0.152998 0.391196 0.489362 - vertex 0.152998 0.391196 -0.510638 - vertex 0.151167 0.376912 -0.510638 - endloop - endfacet - facet normal -0.991882 0.127162 0 - outer loop - vertex 0.152998 0.391196 0.489362 - vertex 0.151167 0.376912 -0.510638 - vertex 0.151167 0.376912 0.489362 - endloop - endfacet - facet normal -0.997111 0.0759583 0 - outer loop - vertex 0.151167 0.376912 0.489362 - vertex 0.151167 0.376912 -0.510638 - vertex 0.150056 0.36233 -0.510638 - endloop - endfacet - facet normal -0.997111 0.0759583 0 - outer loop - vertex 0.151167 0.376912 0.489362 - vertex 0.150056 0.36233 -0.510638 - vertex 0.150056 0.36233 0.489362 - endloop - endfacet - facet normal -0.999684 0.0251486 0 - outer loop - vertex 0.150056 0.36233 0.489362 - vertex 0.150056 0.36233 -0.510638 - vertex 0.149682 0.347466 -0.510638 - endloop - endfacet - facet normal -0.999684 0.0251486 0 - outer loop - vertex 0.150056 0.36233 0.489362 - vertex 0.149682 0.347466 -0.510638 - vertex 0.149682 0.347466 0.489362 - endloop - endfacet - facet normal -0.99968 -0.0253065 -0 - outer loop - vertex 0.149682 0.347466 0.489362 - vertex 0.149682 0.347466 -0.510638 - vertex 0.150056 0.332696 -0.510638 - endloop - endfacet - facet normal -0.99968 -0.0253065 0 - outer loop - vertex 0.149682 0.347466 0.489362 - vertex 0.150056 0.332696 -0.510638 - vertex 0.150056 0.332696 0.489362 - endloop - endfacet - facet normal -0.997079 -0.076378 -0 - outer loop - vertex 0.150056 0.332696 0.489362 - vertex 0.150056 0.332696 -0.510638 - vertex 0.151167 0.318195 -0.510638 - endloop - endfacet - facet normal -0.997079 -0.076378 0 - outer loop - vertex 0.150056 0.332696 0.489362 - vertex 0.151167 0.318195 -0.510638 - vertex 0.151167 0.318195 0.489362 - endloop - endfacet - facet normal -0.991804 -0.127768 -0 - outer loop - vertex 0.151167 0.318195 0.489362 - vertex 0.151167 0.318195 -0.510638 - vertex 0.152998 0.303979 -0.510638 - endloop - endfacet - facet normal -0.991804 -0.127768 0 - outer loop - vertex 0.151167 0.318195 0.489362 - vertex 0.152998 0.303979 -0.510638 - vertex 0.152998 0.303979 0.489362 - endloop - endfacet - facet normal -0.983801 -0.179266 -0 - outer loop - vertex 0.152998 0.303979 0.489362 - vertex 0.152998 0.303979 -0.510638 - vertex 0.155533 0.290066 -0.510638 - endloop - endfacet - facet normal -0.983801 -0.179266 0 - outer loop - vertex 0.152998 0.303979 0.489362 - vertex 0.155533 0.290066 -0.510638 - vertex 0.155533 0.290066 0.489362 - endloop - endfacet - facet normal -0.973033 -0.230664 -0 - outer loop - vertex 0.155533 0.290066 0.489362 - vertex 0.155533 0.290066 -0.510638 - vertex 0.158756 0.276471 -0.510638 - endloop - endfacet - facet normal -0.973033 -0.230664 0 - outer loop - vertex 0.155533 0.290066 0.489362 - vertex 0.158756 0.276471 -0.510638 - vertex 0.158756 0.276471 0.489362 - endloop - endfacet - facet normal -0.959488 -0.281749 -0 - outer loop - vertex 0.158756 0.276471 0.489362 - vertex 0.158756 0.276471 -0.510638 - vertex 0.16265 0.26321 -0.510638 - endloop - endfacet - facet normal -0.959488 -0.281749 0 - outer loop - vertex 0.158756 0.276471 0.489362 - vertex 0.16265 0.26321 -0.510638 - vertex 0.16265 0.26321 0.489362 - endloop - endfacet - facet normal -0.94317 -0.33231 -0 - outer loop - vertex 0.16265 0.26321 0.489362 - vertex 0.16265 0.26321 -0.510638 - vertex 0.167199 0.2503 -0.510638 - endloop - endfacet - facet normal -0.94317 -0.33231 0 - outer loop - vertex 0.16265 0.26321 0.489362 - vertex 0.167199 0.2503 -0.510638 - vertex 0.167199 0.2503 0.489362 - endloop - endfacet - facet normal -0.924106 -0.382136 -0 - outer loop - vertex 0.167199 0.2503 0.489362 - vertex 0.167199 0.2503 -0.510638 - vertex 0.172386 0.237757 -0.510638 - endloop - endfacet - facet normal -0.924106 -0.382136 0 - outer loop - vertex 0.167199 0.2503 0.489362 - vertex 0.172386 0.237757 -0.510638 - vertex 0.172386 0.237757 0.489362 - endloop - endfacet - facet normal -0.902337 -0.43103 -0 - outer loop - vertex 0.172386 0.237757 0.489362 - vertex 0.172386 0.237757 -0.510638 - vertex 0.178194 0.225597 -0.510638 - endloop - endfacet - facet normal -0.902337 -0.43103 0 - outer loop - vertex 0.172386 0.237757 0.489362 - vertex 0.178194 0.225597 -0.510638 - vertex 0.178194 0.225597 0.489362 - endloop - endfacet - facet normal -0.877926 -0.478797 -0 - outer loop - vertex 0.178194 0.225597 0.489362 - vertex 0.178194 0.225597 -0.510638 - vertex 0.184608 0.213837 -0.510638 - endloop - endfacet - facet normal -0.877926 -0.478797 0 - outer loop - vertex 0.178194 0.225597 0.489362 - vertex 0.184608 0.213837 -0.510638 - vertex 0.184608 0.213837 0.489362 - endloop - endfacet - facet normal -0.850947 -0.525252 -0 - outer loop - vertex 0.184608 0.213837 0.489362 - vertex 0.184608 0.213837 -0.510638 - vertex 0.191611 0.202492 -0.510638 - endloop - endfacet - facet normal -0.850947 -0.525252 0 - outer loop - vertex 0.184608 0.213837 0.489362 - vertex 0.191611 0.202492 -0.510638 - vertex 0.191611 0.202492 0.489362 - endloop - endfacet - facet normal -0.821491 -0.570222 -0 - outer loop - vertex 0.191611 0.202492 0.489362 - vertex 0.191611 0.202492 -0.510638 - vertex 0.199186 0.191578 -0.510638 - endloop - endfacet - facet normal -0.821491 -0.570222 0 - outer loop - vertex 0.191611 0.202492 0.489362 - vertex 0.199186 0.191578 -0.510638 - vertex 0.199186 0.191578 0.489362 - endloop - endfacet - facet normal -0.78966 -0.613545 -0 - outer loop - vertex 0.199186 0.191578 0.489362 - vertex 0.199186 0.191578 -0.510638 - vertex 0.207317 0.181113 -0.510638 - endloop - endfacet - facet normal -0.78966 -0.613545 0 - outer loop - vertex 0.199186 0.191578 0.489362 - vertex 0.207317 0.181113 -0.510638 - vertex 0.207317 0.181113 0.489362 - endloop - endfacet - facet normal -0.755568 -0.65507 -0 - outer loop - vertex 0.207317 0.181113 0.489362 - vertex 0.207317 0.181113 -0.510638 - vertex 0.215988 0.171112 -0.510638 - endloop - endfacet - facet normal -0.755568 -0.65507 0 - outer loop - vertex 0.207317 0.181113 0.489362 - vertex 0.215988 0.171112 -0.510638 - vertex 0.215988 0.171112 0.489362 - endloop - endfacet - facet normal -0.719341 -0.694657 -0 - outer loop - vertex 0.215988 0.171112 0.489362 - vertex 0.215988 0.171112 -0.510638 - vertex 0.225182 0.161591 -0.510638 - endloop - endfacet - facet normal -0.719341 -0.694657 0 - outer loop - vertex 0.215988 0.171112 0.489362 - vertex 0.225182 0.161591 -0.510638 - vertex 0.225182 0.161591 0.489362 - endloop - endfacet - facet normal -0.68111 -0.732181 -0 - outer loop - vertex 0.225182 0.161591 0.489362 - vertex 0.225182 0.161591 -0.510638 - vertex 0.234883 0.152567 -0.510638 - endloop - endfacet - facet normal -0.68111 -0.732181 0 - outer loop - vertex 0.225182 0.161591 0.489362 - vertex 0.234883 0.152567 -0.510638 - vertex 0.234883 0.152567 0.489362 - endloop - endfacet - facet normal -0.641016 -0.767527 -0 - outer loop - vertex 0.234883 0.152567 0.489362 - vertex 0.234883 0.152567 -0.510638 - vertex 0.245074 0.144056 -0.510638 - endloop - endfacet - facet normal -0.641016 -0.767527 0 - outer loop - vertex 0.234883 0.152567 0.489362 - vertex 0.245074 0.144056 -0.510638 - vertex 0.245074 0.144056 0.489362 - endloop - endfacet - facet normal -0.599207 -0.800594 -0 - outer loop - vertex 0.245074 0.144056 0.489362 - vertex 0.245074 0.144056 -0.510638 - vertex 0.255738 0.136074 -0.510638 - endloop - endfacet - facet normal -0.599207 -0.800594 0 - outer loop - vertex 0.245074 0.144056 0.489362 - vertex 0.255738 0.136074 -0.510638 - vertex 0.255738 0.136074 0.489362 - endloop - endfacet - facet normal -0.555839 -0.83129 -0 - outer loop - vertex 0.255738 0.136074 0.489362 - vertex 0.255738 0.136074 -0.510638 - vertex 0.26686 0.128638 -0.510638 - endloop - endfacet - facet normal -0.555839 -0.83129 0 - outer loop - vertex 0.255738 0.136074 0.489362 - vertex 0.26686 0.128638 -0.510638 - vertex 0.26686 0.128638 0.489362 - endloop - endfacet - facet normal -0.511069 -0.85954 -0 - outer loop - vertex 0.26686 0.128638 0.489362 - vertex 0.26686 0.128638 -0.510638 - vertex 0.278423 0.121763 -0.510638 - endloop - endfacet - facet normal -0.511069 -0.85954 0 - outer loop - vertex 0.26686 0.128638 0.489362 - vertex 0.278423 0.121763 -0.510638 - vertex 0.278423 0.121763 0.489362 - endloop - endfacet - facet normal -0.465064 -0.885277 -0 - outer loop - vertex 0.278423 0.121763 0.489362 - vertex 0.278423 0.121763 -0.510638 - vertex 0.29041 0.115465 -0.510638 - endloop - endfacet - facet normal -0.465064 -0.885277 0 - outer loop - vertex 0.278423 0.121763 0.489362 - vertex 0.29041 0.115465 -0.510638 - vertex 0.29041 0.115465 0.489362 - endloop - endfacet - facet normal -0.417995 -0.908449 -0 - outer loop - vertex 0.29041 0.115465 0.489362 - vertex 0.29041 0.115465 -0.510638 - vertex 0.302805 0.109762 -0.510638 - endloop - endfacet - facet normal -0.417995 -0.908449 0 - outer loop - vertex 0.29041 0.115465 0.489362 - vertex 0.302805 0.109762 -0.510638 - vertex 0.302805 0.109762 0.489362 - endloop - endfacet - facet normal -0.370034 -0.929018 -0 - outer loop - vertex 0.302805 0.109762 0.489362 - vertex 0.302805 0.109762 -0.510638 - vertex 0.315592 0.104669 -0.510638 - endloop - endfacet - facet normal -0.370034 -0.929018 0 - outer loop - vertex 0.302805 0.109762 0.489362 - vertex 0.315592 0.104669 -0.510638 - vertex 0.315592 0.104669 0.489362 - endloop - endfacet - facet normal -0.321359 -0.946957 -0 - outer loop - vertex 0.315592 0.104669 0.489362 - vertex 0.315592 0.104669 -0.510638 - vertex 0.328754 0.100202 -0.510638 - endloop - endfacet - facet normal -0.321359 -0.946957 0 - outer loop - vertex 0.315592 0.104669 0.489362 - vertex 0.328754 0.100202 -0.510638 - vertex 0.328754 0.100202 0.489362 - endloop - endfacet - facet normal -0.27215 -0.962255 -0 - outer loop - vertex 0.328754 0.100202 0.489362 - vertex 0.328754 0.100202 -0.510638 - vertex 0.342275 0.0963784 -0.510638 - endloop - endfacet - facet normal -0.27215 -0.962255 0 - outer loop - vertex 0.328754 0.100202 0.489362 - vertex 0.342275 0.0963784 -0.510638 - vertex 0.342275 0.0963784 0.489362 - endloop - endfacet - facet normal -0.222586 -0.974913 -0 - outer loop - vertex 0.342275 0.0963784 0.489362 - vertex 0.342275 0.0963784 -0.510638 - vertex 0.356138 0.0932133 -0.510638 - endloop - endfacet - facet normal -0.222586 -0.974913 0 - outer loop - vertex 0.342275 0.0963784 0.489362 - vertex 0.356138 0.0932133 -0.510638 - vertex 0.356138 0.0932133 0.489362 - endloop - endfacet - facet normal -0.172849 -0.984948 -0 - outer loop - vertex 0.356138 0.0932133 0.489362 - vertex 0.356138 0.0932133 -0.510638 - vertex 0.370326 0.0907234 -0.510638 - endloop - endfacet - facet normal -0.172849 -0.984948 0 - outer loop - vertex 0.356138 0.0932133 0.489362 - vertex 0.370326 0.0907234 -0.510638 - vertex 0.370326 0.0907234 0.489362 - endloop - endfacet - facet normal -0.123117 -0.992392 -0 - outer loop - vertex 0.370326 0.0907234 0.489362 - vertex 0.370326 0.0907234 -0.510638 - vertex 0.384824 0.0889248 -0.510638 - endloop - endfacet - facet normal -0.123117 -0.992392 0 - outer loop - vertex 0.370326 0.0907234 0.489362 - vertex 0.384824 0.0889248 -0.510638 - vertex 0.384824 0.0889248 0.489362 - endloop - endfacet - facet normal -0.0735669 -0.99729 -0 - outer loop - vertex 0.384824 0.0889248 0.489362 - vertex 0.384824 0.0889248 -0.510638 - vertex 0.399615 0.0878337 -0.510638 - endloop - endfacet - facet normal -0.0735669 -0.99729 0 - outer loop - vertex 0.384824 0.0889248 0.489362 - vertex 0.399615 0.0878337 -0.510638 - vertex 0.399615 0.0878337 0.489362 - endloop - endfacet - facet normal -0.0243701 -0.999703 -0 - outer loop - vertex 0.399615 0.0878337 0.489362 - vertex 0.399615 0.0878337 -0.510638 - vertex 0.414682 0.0874664 -0.510638 - endloop - endfacet - facet normal -0.0243701 -0.999703 0 - outer loop - vertex 0.399615 0.0878337 0.489362 - vertex 0.414682 0.0874664 -0.510638 - vertex 0.414682 0.0874664 0.489362 - endloop - endfacet - facet normal 0.0242141 -0.999707 0 - outer loop - vertex 0.414682 0.0874664 0.489362 - vertex 0.414682 0.0874664 -0.510638 - vertex 0.429846 0.0878337 -0.510638 - endloop - endfacet - facet normal 0.0242141 -0.999707 0 - outer loop - vertex 0.414682 0.0874664 0.489362 - vertex 0.429846 0.0878337 -0.510638 - vertex 0.429846 0.0878337 0.489362 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 0.883682 -0.223534 0.489362 - vertex 0.883682 -0.223534 -0.510638 - vertex 0.883682 0.455466 -0.510638 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 0.883682 -0.223534 0.489362 - vertex 0.883682 0.455466 -0.510638 - vertex 0.883682 0.455466 0.489362 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 0.883682 0.455466 0.489362 - vertex 0.883682 0.455466 -0.510638 - vertex 1.03768 0.455466 -0.510638 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 0.883682 0.455466 0.489362 - vertex 1.03768 0.455466 -0.510638 - vertex 1.03768 0.455466 0.489362 - endloop - endfacet - facet normal -0.0164809 -0.999864 -0 - outer loop - vertex 1.03768 0.455466 0.489362 - vertex 1.03768 0.455466 -0.510638 - vertex 1.05383 0.4552 -0.510638 - endloop - endfacet - facet normal -0.0164809 -0.999864 0 - outer loop - vertex 1.03768 0.455466 0.489362 - vertex 1.05383 0.4552 -0.510638 - vertex 1.05383 0.4552 0.489362 - endloop - endfacet - facet normal -0.0508651 -0.998706 -0 - outer loop - vertex 1.05383 0.4552 0.489362 - vertex 1.05383 0.4552 -0.510638 - vertex 1.06948 0.454403 -0.510638 - endloop - endfacet - facet normal -0.0508651 -0.998706 0 - outer loop - vertex 1.05383 0.4552 0.489362 - vertex 1.06948 0.454403 -0.510638 - vertex 1.06948 0.454403 0.489362 - endloop - endfacet - facet normal -0.0871752 -0.996193 -0 - outer loop - vertex 1.06948 0.454403 0.489362 - vertex 1.06948 0.454403 -0.510638 - vertex 1.08462 0.453078 -0.510638 - endloop - endfacet - facet normal -0.0871752 -0.996193 0 - outer loop - vertex 1.06948 0.454403 0.489362 - vertex 1.08462 0.453078 -0.510638 - vertex 1.08462 0.453078 0.489362 - endloop - endfacet - facet normal -0.125461 -0.992099 -0 - outer loop - vertex 1.08462 0.453078 0.489362 - vertex 1.08462 0.453078 -0.510638 - vertex 1.09925 0.451228 -0.510638 - endloop - endfacet - facet normal -0.125461 -0.992099 0 - outer loop - vertex 1.08462 0.453078 0.489362 - vertex 1.09925 0.451228 -0.510638 - vertex 1.09925 0.451228 0.489362 - endloop - endfacet - facet normal -0.165746 -0.986169 -0 - outer loop - vertex 1.09925 0.451228 0.489362 - vertex 1.09925 0.451228 -0.510638 - vertex 1.11337 0.448855 -0.510638 - endloop - endfacet - facet normal -0.165746 -0.986169 0 - outer loop - vertex 1.09925 0.451228 0.489362 - vertex 1.11337 0.448855 -0.510638 - vertex 1.11337 0.448855 0.489362 - endloop - endfacet - facet normal -0.208015 -0.978126 -0 - outer loop - vertex 1.11337 0.448855 0.489362 - vertex 1.11337 0.448855 -0.510638 - vertex 1.12697 0.445962 -0.510638 - endloop - endfacet - facet normal -0.208015 -0.978126 0 - outer loop - vertex 1.11337 0.448855 0.489362 - vertex 1.12697 0.445962 -0.510638 - vertex 1.12697 0.445962 0.489362 - endloop - endfacet - facet normal -0.252211 -0.967672 -0 - outer loop - vertex 1.12697 0.445962 0.489362 - vertex 1.12697 0.445962 -0.510638 - vertex 1.14005 0.442552 -0.510638 - endloop - endfacet - facet normal -0.252211 -0.967672 0 - outer loop - vertex 1.12697 0.445962 0.489362 - vertex 1.14005 0.442552 -0.510638 - vertex 1.14005 0.442552 0.489362 - endloop - endfacet - facet normal -0.298217 -0.954498 -0 - outer loop - vertex 1.14005 0.442552 0.489362 - vertex 1.14005 0.442552 -0.510638 - vertex 1.15262 0.438627 -0.510638 - endloop - endfacet - facet normal -0.298217 -0.954498 0 - outer loop - vertex 1.14005 0.442552 0.489362 - vertex 1.15262 0.438627 -0.510638 - vertex 1.15262 0.438627 0.489362 - endloop - endfacet - facet normal -0.345843 -0.938292 -0 - outer loop - vertex 1.15262 0.438627 0.489362 - vertex 1.15262 0.438627 -0.510638 - vertex 1.16465 0.43419 -0.510638 - endloop - endfacet - facet normal -0.345843 -0.938292 0 - outer loop - vertex 1.15262 0.438627 0.489362 - vertex 1.16465 0.43419 -0.510638 - vertex 1.16465 0.43419 0.489362 - endloop - endfacet - facet normal -0.394834 -0.918752 -0 - outer loop - vertex 1.16465 0.43419 0.489362 - vertex 1.16465 0.43419 -0.510638 - vertex 1.17616 0.429244 -0.510638 - endloop - endfacet - facet normal -0.394834 -0.918752 0 - outer loop - vertex 1.16465 0.43419 0.489362 - vertex 1.17616 0.429244 -0.510638 - vertex 1.17616 0.429244 0.489362 - endloop - endfacet - facet normal -0.444845 -0.895608 -0 - outer loop - vertex 1.17616 0.429244 0.489362 - vertex 1.17616 0.429244 -0.510638 - vertex 1.18714 0.423791 -0.510638 - endloop - endfacet - facet normal -0.444845 -0.895608 0 - outer loop - vertex 1.17616 0.429244 0.489362 - vertex 1.18714 0.423791 -0.510638 - vertex 1.18714 0.423791 0.489362 - endloop - endfacet - facet normal -0.495436 -0.868644 -0 - outer loop - vertex 1.18714 0.423791 0.489362 - vertex 1.18714 0.423791 -0.510638 - vertex 1.19759 0.417834 -0.510638 - endloop - endfacet - facet normal -0.495436 -0.868644 0 - outer loop - vertex 1.18714 0.423791 0.489362 - vertex 1.19759 0.417834 -0.510638 - vertex 1.19759 0.417834 0.489362 - endloop - endfacet - facet normal -0.546107 -0.837716 -0 - outer loop - vertex 1.19759 0.417834 0.489362 - vertex 1.19759 0.417834 -0.510638 - vertex 1.20749 0.411376 -0.510638 - endloop - endfacet - facet normal -0.546107 -0.837716 0 - outer loop - vertex 1.19759 0.417834 0.489362 - vertex 1.20749 0.411376 -0.510638 - vertex 1.20749 0.411376 0.489362 - endloop - endfacet - facet normal -0.596269 -0.802784 -0 - outer loop - vertex 1.20749 0.411376 0.489362 - vertex 1.20749 0.411376 -0.510638 - vertex 1.21686 0.404419 -0.510638 - endloop - endfacet - facet normal -0.596269 -0.802784 0 - outer loop - vertex 1.20749 0.411376 0.489362 - vertex 1.21686 0.404419 -0.510638 - vertex 1.21686 0.404419 0.489362 - endloop - endfacet - facet normal -0.645309 -0.763921 -0 - outer loop - vertex 1.21686 0.404419 0.489362 - vertex 1.21686 0.404419 -0.510638 - vertex 1.22568 0.396966 -0.510638 - endloop - endfacet - facet normal -0.645309 -0.763921 0 - outer loop - vertex 1.21686 0.404419 0.489362 - vertex 1.22568 0.396966 -0.510638 - vertex 1.22568 0.396966 0.489362 - endloop - endfacet - facet normal -0.692585 -0.721337 -0 - outer loop - vertex 1.22568 0.396966 0.489362 - vertex 1.22568 0.396966 -0.510638 - vertex 1.23396 0.38902 -0.510638 - endloop - endfacet - facet normal -0.692585 -0.721337 0 - outer loop - vertex 1.22568 0.396966 0.489362 - vertex 1.23396 0.38902 -0.510638 - vertex 1.23396 0.38902 0.489362 - endloop - endfacet - facet normal -0.737476 -0.675374 -0 - outer loop - vertex 1.23396 0.38902 0.489362 - vertex 1.23396 0.38902 -0.510638 - vertex 1.24168 0.380583 -0.510638 - endloop - endfacet - facet normal -0.737476 -0.675374 0 - outer loop - vertex 1.23396 0.38902 0.489362 - vertex 1.24168 0.380583 -0.510638 - vertex 1.24168 0.380583 0.489362 - endloop - endfacet - facet normal -0.779435 -0.626484 -0 - outer loop - vertex 1.24168 0.380583 0.489362 - vertex 1.24168 0.380583 -0.510638 - vertex 1.24886 0.371658 -0.510638 - endloop - endfacet - facet normal -0.779435 -0.626484 0 - outer loop - vertex 1.24168 0.380583 0.489362 - vertex 1.24886 0.371658 -0.510638 - vertex 1.24886 0.371658 0.489362 - endloop - endfacet - facet normal -0.817994 -0.575227 -0 - outer loop - vertex 1.24886 0.371658 0.489362 - vertex 1.24886 0.371658 -0.510638 - vertex 1.25548 0.362248 -0.510638 - endloop - endfacet - facet normal -0.817994 -0.575227 0 - outer loop - vertex 1.24886 0.371658 0.489362 - vertex 1.25548 0.362248 -0.510638 - vertex 1.25548 0.362248 0.489362 - endloop - endfacet - facet normal -0.852795 -0.522246 -0 - outer loop - vertex 1.25548 0.362248 0.489362 - vertex 1.25548 0.362248 -0.510638 - vertex 1.26153 0.352355 -0.510638 - endloop - endfacet - facet normal -0.852795 -0.522246 0 - outer loop - vertex 1.25548 0.362248 0.489362 - vertex 1.26153 0.352355 -0.510638 - vertex 1.26153 0.352355 0.489362 - endloop - endfacet - facet normal -0.883625 -0.468195 -0 - outer loop - vertex 1.26153 0.352355 0.489362 - vertex 1.26153 0.352355 -0.510638 - vertex 1.26703 0.341982 -0.510638 - endloop - endfacet - facet normal -0.883625 -0.468195 0 - outer loop - vertex 1.26153 0.352355 0.489362 - vertex 1.26703 0.341982 -0.510638 - vertex 1.26703 0.341982 0.489362 - endloop - endfacet - facet normal -0.9104 -0.413729 -0 - outer loop - vertex 1.26703 0.341982 0.489362 - vertex 1.26703 0.341982 -0.510638 - vertex 1.27196 0.331132 -0.510638 - endloop - endfacet - facet normal -0.9104 -0.413729 0 - outer loop - vertex 1.26703 0.341982 0.489362 - vertex 1.27196 0.331132 -0.510638 - vertex 1.27196 0.331132 0.489362 - endloop - endfacet - facet normal -0.933163 -0.359454 -0 - outer loop - vertex 1.27196 0.331132 0.489362 - vertex 1.27196 0.331132 -0.510638 - vertex 1.27632 0.319807 -0.510638 - endloop - endfacet - facet normal -0.933163 -0.359454 0 - outer loop - vertex 1.27196 0.331132 0.489362 - vertex 1.27632 0.319807 -0.510638 - vertex 1.27632 0.319807 0.489362 - endloop - endfacet - facet normal -0.952052 -0.305936 -0 - outer loop - vertex 1.27632 0.319807 0.489362 - vertex 1.27632 0.319807 -0.510638 - vertex 1.28011 0.30801 -0.510638 - endloop - endfacet - facet normal -0.952052 -0.305936 0 - outer loop - vertex 1.27632 0.319807 0.489362 - vertex 1.28011 0.30801 -0.510638 - vertex 1.28011 0.30801 0.489362 - endloop - endfacet - facet normal -0.967303 -0.253623 -0 - outer loop - vertex 1.28011 0.30801 0.489362 - vertex 1.28011 0.30801 -0.510638 - vertex 1.28333 0.295744 -0.510638 - endloop - endfacet - facet normal -0.967303 -0.253623 0 - outer loop - vertex 1.28011 0.30801 0.489362 - vertex 1.28333 0.295744 -0.510638 - vertex 1.28333 0.295744 0.489362 - endloop - endfacet - facet normal -0.9792 -0.202897 -0 - outer loop - vertex 1.28333 0.295744 0.489362 - vertex 1.28333 0.295744 -0.510638 - vertex 1.28597 0.283011 -0.510638 - endloop - endfacet - facet normal -0.9792 -0.202897 0 - outer loop - vertex 1.28333 0.295744 0.489362 - vertex 1.28597 0.283011 -0.510638 - vertex 1.28597 0.283011 0.489362 - endloop - endfacet - facet normal -0.988064 -0.154042 -0 - outer loop - vertex 1.28597 0.283011 0.489362 - vertex 1.28597 0.283011 -0.510638 - vertex 1.28803 0.269814 -0.510638 - endloop - endfacet - facet normal -0.988064 -0.154042 0 - outer loop - vertex 1.28597 0.283011 0.489362 - vertex 1.28803 0.269814 -0.510638 - vertex 1.28803 0.269814 0.489362 - endloop - endfacet - facet normal -0.994231 -0.107256 -0 - outer loop - vertex 1.28803 0.269814 0.489362 - vertex 1.28803 0.269814 -0.510638 - vertex 1.2895 0.256156 -0.510638 - endloop - endfacet - facet normal -0.994231 -0.107256 0 - outer loop - vertex 1.28803 0.269814 0.489362 - vertex 1.2895 0.256156 -0.510638 - vertex 1.2895 0.256156 0.489362 - endloop - endfacet - facet normal -0.998035 -0.0626611 -0 - outer loop - vertex 1.2895 0.256156 0.489362 - vertex 1.2895 0.256156 -0.510638 - vertex 1.29039 0.242039 -0.510638 - endloop - endfacet - facet normal -0.998035 -0.0626611 0 - outer loop - vertex 1.2895 0.256156 0.489362 - vertex 1.29039 0.242039 -0.510638 - vertex 1.29039 0.242039 0.489362 - endloop - endfacet - facet normal -0.999794 -0.0203154 -0 - outer loop - vertex 1.29039 0.242039 0.489362 - vertex 1.29039 0.242039 -0.510638 - vertex 1.29068 0.227466 -0.510638 - endloop - endfacet - facet normal -0.999794 -0.0203154 0 - outer loop - vertex 1.29039 0.242039 0.489362 - vertex 1.29068 0.227466 -0.510638 - vertex 1.29068 0.227466 0.489362 - endloop - endfacet - facet normal -0.999722 0.0235596 0 - outer loop - vertex 1.29068 0.227466 0.489362 - vertex 1.29068 0.227466 -0.510638 - vertex 1.29037 0.214102 -0.510638 - endloop - endfacet - facet normal -0.999722 0.0235596 0 - outer loop - vertex 1.29068 0.227466 0.489362 - vertex 1.29037 0.214102 -0.510638 - vertex 1.29037 0.214102 0.489362 - endloop - endfacet - facet normal -0.997456 0.071285 0 - outer loop - vertex 1.29037 0.214102 0.489362 - vertex 1.29037 0.214102 -0.510638 - vertex 1.28943 0.201016 -0.510638 - endloop - endfacet - facet normal -0.997456 0.071285 0 - outer loop - vertex 1.29037 0.214102 0.489362 - vertex 1.28943 0.201016 -0.510638 - vertex 1.28943 0.201016 0.489362 - endloop - endfacet - facet normal -0.992805 0.119742 0 - outer loop - vertex 1.28943 0.201016 0.489362 - vertex 1.28943 0.201016 -0.510638 - vertex 1.28789 0.188221 -0.510638 - endloop - endfacet - facet normal -0.992805 0.119742 0 - outer loop - vertex 1.28943 0.201016 0.489362 - vertex 1.28789 0.188221 -0.510638 - vertex 1.28789 0.188221 0.489362 - endloop - endfacet - facet normal -0.98566 0.168744 0 - outer loop - vertex 1.28789 0.188221 0.489362 - vertex 1.28789 0.188221 -0.510638 - vertex 1.28575 0.17573 -0.510638 - endloop - endfacet - facet normal -0.98566 0.168744 0 - outer loop - vertex 1.28789 0.188221 0.489362 - vertex 1.28575 0.17573 -0.510638 - vertex 1.28575 0.17573 0.489362 - endloop - endfacet - facet normal -0.975924 0.218112 0 - outer loop - vertex 1.28575 0.17573 0.489362 - vertex 1.28575 0.17573 -0.510638 - vertex 1.28303 0.163554 -0.510638 - endloop - endfacet - facet normal -0.975924 0.218112 0 - outer loop - vertex 1.28575 0.17573 0.489362 - vertex 1.28303 0.163554 -0.510638 - vertex 1.28303 0.163554 0.489362 - endloop - endfacet - facet normal -0.963515 0.267655 0 - outer loop - vertex 1.28303 0.163554 0.489362 - vertex 1.28303 0.163554 -0.510638 - vertex 1.27974 0.151706 -0.510638 - endloop - endfacet - facet normal -0.963515 0.267655 0 - outer loop - vertex 1.28303 0.163554 0.489362 - vertex 1.27974 0.151706 -0.510638 - vertex 1.27974 0.151706 0.489362 - endloop - endfacet - facet normal -0.948372 0.317159 0 - outer loop - vertex 1.27974 0.151706 0.489362 - vertex 1.27974 0.151706 -0.510638 - vertex 1.27589 0.140198 -0.510638 - endloop - endfacet - facet normal -0.948372 0.317159 0 - outer loop - vertex 1.27974 0.151706 0.489362 - vertex 1.27589 0.140198 -0.510638 - vertex 1.27589 0.140198 0.489362 - endloop - endfacet - facet normal -0.93045 0.366419 0 - outer loop - vertex 1.27589 0.140198 0.489362 - vertex 1.27589 0.140198 -0.510638 - vertex 1.2715 0.129043 -0.510638 - endloop - endfacet - facet normal -0.93045 0.366419 0 - outer loop - vertex 1.27589 0.140198 0.489362 - vertex 1.2715 0.129043 -0.510638 - vertex 1.2715 0.129043 0.489362 - endloop - endfacet - facet normal -0.909727 0.415208 0 - outer loop - vertex 1.2715 0.129043 0.489362 - vertex 1.2715 0.129043 -0.510638 - vertex 1.26657 0.118251 -0.510638 - endloop - endfacet - facet normal -0.909727 0.415208 0 - outer loop - vertex 1.2715 0.129043 0.489362 - vertex 1.26657 0.118251 -0.510638 - vertex 1.26657 0.118251 0.489362 - endloop - endfacet - facet normal -0.886208 0.463288 0 - outer loop - vertex 1.26657 0.118251 0.489362 - vertex 1.26657 0.118251 -0.510638 - vertex 1.26113 0.107837 -0.510638 - endloop - endfacet - facet normal -0.886208 0.463288 0 - outer loop - vertex 1.26657 0.118251 0.489362 - vertex 1.26113 0.107837 -0.510638 - vertex 1.26113 0.107837 0.489362 - endloop - endfacet - facet normal -0.859916 0.510436 0 - outer loop - vertex 1.26113 0.107837 0.489362 - vertex 1.26113 0.107837 -0.510638 - vertex 1.25518 0.097811 -0.510638 - endloop - endfacet - facet normal -0.859916 0.510436 0 - outer loop - vertex 1.26113 0.107837 0.489362 - vertex 1.25518 0.097811 -0.510638 - vertex 1.25518 0.097811 0.489362 - endloop - endfacet - facet normal -0.830903 0.556417 0 - outer loop - vertex 1.25518 0.097811 0.489362 - vertex 1.25518 0.097811 -0.510638 - vertex 1.24873 0.0881864 -0.510638 - endloop - endfacet - facet normal -0.830903 0.556417 0 - outer loop - vertex 1.25518 0.097811 0.489362 - vertex 1.24873 0.0881864 -0.510638 - vertex 1.24873 0.0881864 0.489362 - endloop - endfacet - facet normal -0.799247 0.601002 0 - outer loop - vertex 1.24873 0.0881864 0.489362 - vertex 1.24873 0.0881864 -0.510638 - vertex 1.2418 0.0789751 -0.510638 - endloop - endfacet - facet normal -0.799247 0.601002 0 - outer loop - vertex 1.24873 0.0881864 0.489362 - vertex 1.2418 0.0789751 -0.510638 - vertex 1.2418 0.0789751 0.489362 - endloop - endfacet - facet normal -0.765051 0.64397 0 - outer loop - vertex 1.2418 0.0789751 0.489362 - vertex 1.2418 0.0789751 -0.510638 - vertex 1.23441 0.0701894 -0.510638 - endloop - endfacet - facet normal -0.765051 0.64397 0 - outer loop - vertex 1.2418 0.0789751 0.489362 - vertex 1.23441 0.0701894 -0.510638 - vertex 1.23441 0.0701894 0.489362 - endloop - endfacet - facet normal -0.728447 0.685102 0 - outer loop - vertex 1.23441 0.0701894 0.489362 - vertex 1.23441 0.0701894 -0.510638 - vertex 1.22656 0.0618414 -0.510638 - endloop - endfacet - facet normal -0.728447 0.685102 0 - outer loop - vertex 1.23441 0.0701894 0.489362 - vertex 1.22656 0.0618414 -0.510638 - vertex 1.22656 0.0618414 0.489362 - endloop - endfacet - facet normal -0.68958 0.724209 0 - outer loop - vertex 1.22656 0.0618414 0.489362 - vertex 1.22656 0.0618414 -0.510638 - vertex 1.21826 0.0539434 -0.510638 - endloop - endfacet - facet normal -0.68958 0.724209 0 - outer loop - vertex 1.22656 0.0618414 0.489362 - vertex 1.21826 0.0539434 -0.510638 - vertex 1.21826 0.0539434 0.489362 - endloop - endfacet - facet normal -0.648628 0.761106 0 - outer loop - vertex 1.21826 0.0539434 0.489362 - vertex 1.21826 0.0539434 -0.510638 - vertex 1.20954 0.0465077 -0.510638 - endloop - endfacet - facet normal -0.648628 0.761106 0 - outer loop - vertex 1.21826 0.0539434 0.489362 - vertex 1.20954 0.0465077 -0.510638 - vertex 1.20954 0.0465077 0.489362 - endloop - endfacet - facet normal -0.605769 0.79564 0 - outer loop - vertex 1.20954 0.0465077 0.489362 - vertex 1.20954 0.0465077 -0.510638 - vertex 1.20039 0.0395464 -0.510638 - endloop - endfacet - facet normal -0.605769 0.79564 0 - outer loop - vertex 1.20954 0.0465077 0.489362 - vertex 1.20039 0.0395464 -0.510638 - vertex 1.20039 0.0395464 0.489362 - endloop - endfacet - facet normal -0.56122 0.827667 0 - outer loop - vertex 1.20039 0.0395464 0.489362 - vertex 1.20039 0.0395464 -0.510638 - vertex 1.19085 0.0330718 -0.510638 - endloop - endfacet - facet normal -0.56122 0.827667 0 - outer loop - vertex 1.20039 0.0395464 0.489362 - vertex 1.19085 0.0330718 -0.510638 - vertex 1.19085 0.0330718 0.489362 - endloop - endfacet - facet normal -0.515194 0.857074 0 - outer loop - vertex 1.19085 0.0330718 0.489362 - vertex 1.19085 0.0330718 -0.510638 - vertex 1.1809 0.027096 -0.510638 - endloop - endfacet - facet normal -0.515194 0.857074 0 - outer loop - vertex 1.19085 0.0330718 0.489362 - vertex 1.1809 0.027096 -0.510638 - vertex 1.1809 0.027096 0.489362 - endloop - endfacet - facet normal -0.467917 0.883773 0 - outer loop - vertex 1.1809 0.027096 0.489362 - vertex 1.1809 0.027096 -0.510638 - vertex 1.17058 0.0216314 -0.510638 - endloop - endfacet - facet normal -0.467917 0.883773 0 - outer loop - vertex 1.1809 0.027096 0.489362 - vertex 1.17058 0.0216314 -0.510638 - vertex 1.17058 0.0216314 0.489362 - endloop - endfacet - facet normal -0.419627 0.907697 0 - outer loop - vertex 1.17058 0.0216314 0.489362 - vertex 1.17058 0.0216314 -0.510638 - vertex 1.15989 0.0166901 -0.510638 - endloop - endfacet - facet normal -0.419627 0.907697 0 - outer loop - vertex 1.17058 0.0216314 0.489362 - vertex 1.15989 0.0166901 -0.510638 - vertex 1.15989 0.0166901 0.489362 - endloop - endfacet - facet normal -0.370554 0.928811 0 - outer loop - vertex 1.15989 0.0166901 0.489362 - vertex 1.15989 0.0166901 -0.510638 - vertex 1.14885 0.0122844 -0.510638 - endloop - endfacet - facet normal -0.370554 0.928811 0 - outer loop - vertex 1.15989 0.0166901 0.489362 - vertex 1.14885 0.0122844 -0.510638 - vertex 1.14885 0.0122844 0.489362 - endloop - endfacet - facet normal -0.320933 0.947102 0 - outer loop - vertex 1.14885 0.0122844 0.489362 - vertex 1.14885 0.0122844 -0.510638 - vertex 1.13747 0.00842639 -0.510638 - endloop - endfacet - facet normal -0.320933 0.947102 0 - outer loop - vertex 1.14885 0.0122844 0.489362 - vertex 1.13747 0.00842639 -0.510638 - vertex 1.13747 0.00842639 0.489362 - endloop - endfacet - facet normal -0.270992 0.962582 0 - outer loop - vertex 1.13747 0.00842639 0.489362 - vertex 1.13747 0.00842639 -0.510638 - vertex 1.12575 0.00512843 -0.510638 - endloop - endfacet - facet normal -0.270992 0.962582 0 - outer loop - vertex 1.13747 0.00842639 0.489362 - vertex 1.12575 0.00512843 -0.510638 - vertex 1.12575 0.00512843 0.489362 - endloop - endfacet - facet normal -0.220956 0.975284 0 - outer loop - vertex 1.12575 0.00512843 0.489362 - vertex 1.12575 0.00512843 -0.510638 - vertex 1.11372 0.00240269 -0.510638 - endloop - endfacet - facet normal -0.220956 0.975284 0 - outer loop - vertex 1.12575 0.00512843 0.489362 - vertex 1.11372 0.00240269 -0.510638 - vertex 1.11372 0.00240269 0.489362 - endloop - endfacet - facet normal -0.171035 0.985265 0 - outer loop - vertex 1.11372 0.00240269 0.489362 - vertex 1.11372 0.00240269 -0.510638 - vertex 1.10139 0.000261389 -0.510638 - endloop - endfacet - facet normal -0.171035 0.985265 0 - outer loop - vertex 1.11372 0.00240269 0.489362 - vertex 1.10139 0.000261389 -0.510638 - vertex 1.10139 0.000261389 0.489362 - endloop - endfacet - facet normal -0.121427 0.9926 0 - outer loop - vertex 1.10139 0.000261389 0.489362 - vertex 1.10139 0.000261389 -0.510638 - vertex 1.08876 -0.00128324 -0.510638 - endloop - endfacet - facet normal -0.121427 0.9926 0 - outer loop - vertex 1.10139 0.000261389 0.489362 - vertex 1.08876 -0.00128324 -0.510638 - vertex 1.08876 -0.00128324 0.489362 - endloop - endfacet - facet normal -0.0723187 0.997382 0 - outer loop - vertex 1.08876 -0.00128324 0.489362 - vertex 1.08876 -0.00128324 -0.510638 - vertex 1.07585 -0.00221898 -0.510638 - endloop - endfacet - facet normal -0.0723187 0.997382 0 - outer loop - vertex 1.08876 -0.00128324 0.489362 - vertex 1.07585 -0.00221898 -0.510638 - vertex 1.07585 -0.00221898 0.489362 - endloop - endfacet - facet normal -0.0238809 0.999715 0 - outer loop - vertex 1.07585 -0.00221898 0.489362 - vertex 1.07585 -0.00221898 -0.510638 - vertex 1.06268 -0.00253361 -0.510638 - endloop - endfacet - facet normal -0.0238809 0.999715 0 - outer loop - vertex 1.07585 -0.00221898 0.489362 - vertex 1.06268 -0.00253361 -0.510638 - vertex 1.06268 -0.00253361 0.489362 - endloop - endfacet - facet normal 0.00693788 0.999976 0 - outer loop - vertex 1.06268 -0.00253361 0.489362 - vertex 1.06268 -0.00253361 -0.510638 - vertex 1.05979 -0.00251354 -0.510638 - endloop - endfacet - facet normal 0.00693788 0.999976 0 - outer loop - vertex 1.06268 -0.00253361 0.489362 - vertex 1.05979 -0.00251354 -0.510638 - vertex 1.05979 -0.00251354 0.489362 - endloop - endfacet - facet normal 0.0209914 0.99978 0 - outer loop - vertex 1.05979 -0.00251354 0.489362 - vertex 1.05979 -0.00251354 -0.510638 - vertex 1.05691 -0.00245302 -0.510638 - endloop - endfacet - facet normal 0.0209914 0.99978 0 - outer loop - vertex 1.05979 -0.00251354 0.489362 - vertex 1.05691 -0.00245302 -0.510638 - vertex 1.05691 -0.00245302 0.489362 - endloop - endfacet - facet normal 0.0352738 0.999378 0 - outer loop - vertex 1.05691 -0.00245302 0.489362 - vertex 1.05691 -0.00245302 -0.510638 - vertex 1.05403 -0.00235161 -0.510638 - endloop - endfacet - facet normal 0.0352738 0.999378 0 - outer loop - vertex 1.05691 -0.00245302 0.489362 - vertex 1.05403 -0.00235161 -0.510638 - vertex 1.05403 -0.00235161 0.489362 - endloop - endfacet - facet normal 0.049749 0.998762 0 - outer loop - vertex 1.05403 -0.00235161 0.489362 - vertex 1.05403 -0.00235161 -0.510638 - vertex 1.05117 -0.00220887 -0.510638 - endloop - endfacet - facet normal 0.049749 0.998762 0 - outer loop - vertex 1.05403 -0.00235161 0.489362 - vertex 1.05117 -0.00220887 -0.510638 - vertex 1.05117 -0.00220887 0.489362 - endloop - endfacet - facet normal 0.0643761 0.997926 0 - outer loop - vertex 1.05117 -0.00220887 0.489362 - vertex 1.05117 -0.00220887 -0.510638 - vertex 1.04831 -0.00202435 -0.510638 - endloop - endfacet - facet normal 0.0643761 0.997926 0 - outer loop - vertex 1.05117 -0.00220887 0.489362 - vertex 1.04831 -0.00202435 -0.510638 - vertex 1.04831 -0.00202435 0.489362 - endloop - endfacet - facet normal 0.0791153 0.996865 0 - outer loop - vertex 1.04831 -0.00202435 0.489362 - vertex 1.04831 -0.00202435 -0.510638 - vertex 1.04545 -0.00179761 -0.510638 - endloop - endfacet - facet normal 0.0791153 0.996865 0 - outer loop - vertex 1.04831 -0.00202435 0.489362 - vertex 1.04545 -0.00179761 -0.510638 - vertex 1.04545 -0.00179761 0.489362 - endloop - endfacet - facet normal 0.0939245 0.995579 0 - outer loop - vertex 1.04545 -0.00179761 0.489362 - vertex 1.04545 -0.00179761 -0.510638 - vertex 1.04259 -0.0015282 -0.510638 - endloop - endfacet - facet normal 0.0939245 0.995579 0 - outer loop - vertex 1.04545 -0.00179761 0.489362 - vertex 1.04259 -0.0015282 -0.510638 - vertex 1.04259 -0.0015282 0.489362 - endloop - endfacet - facet normal 0.108762 0.994068 0 - outer loop - vertex 1.04259 -0.0015282 0.489362 - vertex 1.04259 -0.0015282 -0.510638 - vertex 1.03974 -0.00121568 -0.510638 - endloop - endfacet - facet normal 0.108762 0.994068 0 - outer loop - vertex 1.04259 -0.0015282 0.489362 - vertex 1.03974 -0.00121568 -0.510638 - vertex 1.03974 -0.00121568 0.489362 - endloop - endfacet - facet normal 0.12359 0.992333 0 - outer loop - vertex 1.03974 -0.00121568 0.489362 - vertex 1.03974 -0.00121568 -0.510638 - vertex 1.03688 -0.00085961 -0.510638 - endloop - endfacet - facet normal 0.12359 0.992333 0 - outer loop - vertex 1.03974 -0.00121568 0.489362 - vertex 1.03688 -0.00085961 -0.510638 - vertex 1.03688 -0.00085961 0.489362 - endloop - endfacet - facet normal 0.138364 0.990381 0 - outer loop - vertex 1.03688 -0.00085961 0.489362 - vertex 1.03688 -0.00085961 -0.510638 - vertex 1.03402 -0.000459536 -0.510638 - endloop - endfacet - facet normal 0.138364 0.990381 0 - outer loop - vertex 1.03688 -0.00085961 0.489362 - vertex 1.03402 -0.000459536 -0.510638 - vertex 1.03402 -0.000459536 0.489362 - endloop - endfacet - facet normal 0.153043 0.98822 0 - outer loop - vertex 1.03402 -0.000459536 0.489362 - vertex 1.03402 -0.000459536 -0.510638 - vertex 1.03115 -1.50171e-05 -0.510638 - endloop - endfacet - facet normal 0.153043 0.98822 0 - outer loop - vertex 1.03402 -0.000459536 0.489362 - vertex 1.03115 -1.50171e-05 -0.510638 - vertex 1.03115 -1.50171e-05 0.489362 - endloop - endfacet - facet normal 0.167587 0.985857 0 - outer loop - vertex 1.03115 -1.50171e-05 0.489362 - vertex 1.03115 -1.50171e-05 -0.510638 - vertex 1.02827 0.00047439 -0.510638 - endloop - endfacet - facet normal 0.167587 0.985857 0 - outer loop - vertex 1.03115 -1.50171e-05 0.489362 - vertex 1.02827 0.00047439 -0.510638 - vertex 1.02827 0.00047439 0.489362 - endloop - endfacet - facet normal 0.181965 0.983305 0 - outer loop - vertex 1.02827 0.00047439 0.489362 - vertex 1.02827 0.00047439 -0.510638 - vertex 1.02538 0.00100913 -0.510638 - endloop - endfacet - facet normal 0.181965 0.983305 0 - outer loop - vertex 1.02827 0.00047439 0.489362 - vertex 1.02538 0.00100913 -0.510638 - vertex 1.02538 0.00100913 0.489362 - endloop - endfacet - facet normal 0.196129 0.980578 0 - outer loop - vertex 1.02538 0.00100913 0.489362 - vertex 1.02538 0.00100913 -0.510638 - vertex 1.02247 0.00158965 -0.510638 - endloop - endfacet - facet normal 0.196129 0.980578 0 - outer loop - vertex 1.02538 0.00100913 0.489362 - vertex 1.02247 0.00158965 -0.510638 - vertex 1.02247 0.00158965 0.489362 - endloop - endfacet - facet normal 0.21006 0.977688 0 - outer loop - vertex 1.02247 0.00158965 0.489362 - vertex 1.02247 0.00158965 -0.510638 - vertex 1.01956 0.00221639 -0.510638 - endloop - endfacet - facet normal 0.21006 0.977688 0 - outer loop - vertex 1.02247 0.00158965 0.489362 - vertex 1.01956 0.00221639 -0.510638 - vertex 1.01956 0.00221639 0.489362 - endloop - endfacet - facet normal 0.223729 0.974651 0 - outer loop - vertex 1.01956 0.00221639 0.489362 - vertex 1.01956 0.00221639 -0.510638 - vertex 1.01662 0.0028898 -0.510638 - endloop - endfacet - facet normal 0.223729 0.974651 0 - outer loop - vertex 1.01956 0.00221639 0.489362 - vertex 1.01662 0.0028898 -0.510638 - vertex 1.01662 0.0028898 0.489362 - endloop - endfacet - facet normal 0.237092 0.971487 0 - outer loop - vertex 1.01662 0.0028898 0.489362 - vertex 1.01662 0.0028898 -0.510638 - vertex 1.01367 0.00361032 -0.510638 - endloop - endfacet - facet normal 0.237092 0.971487 0 - outer loop - vertex 1.01662 0.0028898 0.489362 - vertex 1.01367 0.00361032 -0.510638 - vertex 1.01367 0.00361032 0.489362 - endloop - endfacet - facet normal 0.25014 0.96821 0 - outer loop - vertex 1.01367 0.00361032 0.489362 - vertex 1.01367 0.00361032 -0.510638 - vertex 1.0107 0.00437839 -0.510638 - endloop - endfacet - facet normal 0.25014 0.96821 0 - outer loop - vertex 1.01367 0.00361032 0.489362 - vertex 1.0107 0.00437839 -0.510638 - vertex 1.0107 0.00437839 0.489362 - endloop - endfacet - facet normal 0.262844 0.964838 0 - outer loop - vertex 1.0107 0.00437839 0.489362 - vertex 1.0107 0.00437839 -0.510638 - vertex 1.0077 0.00519446 -0.510638 - endloop - endfacet - facet normal 0.262844 0.964838 0 - outer loop - vertex 1.0107 0.00437839 0.489362 - vertex 1.0077 0.00519446 -0.510638 - vertex 1.0077 0.00519446 0.489362 - endloop - endfacet - facet normal 0.275186 0.961391 0 - outer loop - vertex 1.0077 0.00519446 0.489362 - vertex 1.0077 0.00519446 -0.510638 - vertex 1.00468 0.00605898 -0.510638 - endloop - endfacet - facet normal 0.275186 0.961391 0 - outer loop - vertex 1.0077 0.00519446 0.489362 - vertex 1.00468 0.00605898 -0.510638 - vertex 1.00468 0.00605898 0.489362 - endloop - endfacet - facet normal 0.287139 0.957889 0 - outer loop - vertex 1.00468 0.00605898 0.489362 - vertex 1.00468 0.00605898 -0.510638 - vertex 1.00164 0.00697239 -0.510638 - endloop - endfacet - facet normal 0.287139 0.957889 0 - outer loop - vertex 1.00468 0.00605898 0.489362 - vertex 1.00164 0.00697239 -0.510638 - vertex 1.00164 0.00697239 0.489362 - endloop - endfacet - facet normal 0.298732 0.954337 0 - outer loop - vertex 1.00164 0.00697239 0.489362 - vertex 1.00164 0.00697239 -0.510638 - vertex 0.998559 0.00793513 -0.510638 - endloop - endfacet - facet normal 0.298732 0.954337 0 - outer loop - vertex 1.00164 0.00697239 0.489362 - vertex 0.998559 0.00793513 -0.510638 - vertex 0.998559 0.00793513 0.489362 - endloop - endfacet - facet normal 0.309904 0.950768 0 - outer loop - vertex 0.998559 0.00793513 0.489362 - vertex 0.998559 0.00793513 -0.510638 - vertex 0.995453 0.00894765 -0.510638 - endloop - endfacet - facet normal 0.309904 0.950768 0 - outer loop - vertex 0.998559 0.00793513 0.489362 - vertex 0.995453 0.00894765 -0.510638 - vertex 0.995453 0.00894765 0.489362 - endloop - endfacet - facet normal 0.320678 0.947188 0 - outer loop - vertex 0.995453 0.00894765 0.489362 - vertex 0.995453 0.00894765 -0.510638 - vertex 0.992314 0.0100104 -0.510638 - endloop - endfacet - facet normal 0.320678 0.947188 0 - outer loop - vertex 0.995453 0.00894765 0.489362 - vertex 0.992314 0.0100104 -0.510638 - vertex 0.992314 0.0100104 0.489362 - endloop - endfacet - facet normal 0.331047 0.943614 0 - outer loop - vertex 0.992314 0.0100104 0.489362 - vertex 0.992314 0.0100104 -0.510638 - vertex 0.98914 0.0111238 -0.510638 - endloop - endfacet - facet normal 0.331047 0.943614 0 - outer loop - vertex 0.992314 0.0100104 0.489362 - vertex 0.98914 0.0111238 -0.510638 - vertex 0.98914 0.0111238 0.489362 - endloop - endfacet - facet normal 0.341002 0.940063 0 - outer loop - vertex 0.98914 0.0111238 0.489362 - vertex 0.98914 0.0111238 -0.510638 - vertex 0.98593 0.0122883 -0.510638 - endloop - endfacet - facet normal 0.341002 0.940063 0 - outer loop - vertex 0.98914 0.0111238 0.489362 - vertex 0.98593 0.0122883 -0.510638 - vertex 0.98593 0.0122883 0.489362 - endloop - endfacet - facet normal 0.350543 0.936547 0 - outer loop - vertex 0.98593 0.0122883 0.489362 - vertex 0.98593 0.0122883 -0.510638 - vertex 0.982681 0.0135044 -0.510638 - endloop - endfacet - facet normal 0.350543 0.936547 0 - outer loop - vertex 0.98593 0.0122883 0.489362 - vertex 0.982681 0.0135044 -0.510638 - vertex 0.982681 0.0135044 0.489362 - endloop - endfacet - facet normal 0.359678 0.933077 0 - outer loop - vertex 0.982681 0.0135044 0.489362 - vertex 0.982681 0.0135044 -0.510638 - vertex 0.979392 0.0147725 -0.510638 - endloop - endfacet - facet normal 0.359678 0.933077 0 - outer loop - vertex 0.982681 0.0135044 0.489362 - vertex 0.979392 0.0147725 -0.510638 - vertex 0.979392 0.0147725 0.489362 - endloop - endfacet - facet normal 0.368405 0.929666 0 - outer loop - vertex 0.979392 0.0147725 0.489362 - vertex 0.979392 0.0147725 -0.510638 - vertex 0.976059 0.016093 -0.510638 - endloop - endfacet - facet normal 0.368405 0.929666 0 - outer loop - vertex 0.979392 0.0147725 0.489362 - vertex 0.976059 0.016093 -0.510638 - vertex 0.976059 0.016093 0.489362 - endloop - endfacet - facet normal 0.376728 0.926324 0 - outer loop - vertex 0.976059 0.016093 0.489362 - vertex 0.976059 0.016093 -0.510638 - vertex 0.972682 0.0174664 -0.510638 - endloop - endfacet - facet normal 0.376728 0.926324 0 - outer loop - vertex 0.976059 0.016093 0.489362 - vertex 0.972682 0.0174664 -0.510638 - vertex 0.972682 0.0174664 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 0.972682 0.0174664 0.489362 - vertex 0.972682 0.0174664 -0.510638 - vertex 0.972682 -0.223534 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 0.972682 0.0174664 0.489362 - vertex 0.972682 -0.223534 -0.510638 - vertex 0.972682 -0.223534 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 0.972682 -0.223534 0.489362 - vertex 0.972682 -0.223534 -0.510638 - vertex 0.883682 -0.223534 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 0.972682 -0.223534 0.489362 - vertex 0.883682 -0.223534 -0.510638 - vertex 0.883682 -0.223534 0.489362 - endloop - endfacet - facet normal -0.414837 -0.909896 -0 - outer loop - vertex 0.975389 0.0961864 0.489362 - vertex 0.975389 0.0961864 -0.510638 - vertex 0.978108 0.0949467 -0.510638 - endloop - endfacet - facet normal -0.414837 -0.909896 0 - outer loop - vertex 0.975389 0.0961864 0.489362 - vertex 0.978108 0.0949467 -0.510638 - vertex 0.978108 0.0949467 0.489362 - endloop - endfacet - facet normal -0.402055 -0.915615 -0 - outer loop - vertex 0.978108 0.0949467 0.489362 - vertex 0.978108 0.0949467 -0.510638 - vertex 0.980839 0.0937474 -0.510638 - endloop - endfacet - facet normal -0.402055 -0.915615 0 - outer loop - vertex 0.978108 0.0949467 0.489362 - vertex 0.980839 0.0937474 -0.510638 - vertex 0.980839 0.0937474 0.489362 - endloop - endfacet - facet normal -0.389165 -0.921168 -0 - outer loop - vertex 0.980839 0.0937474 0.489362 - vertex 0.980839 0.0937474 -0.510638 - vertex 0.983582 0.0925887 -0.510638 - endloop - endfacet - facet normal -0.389165 -0.921168 0 - outer loop - vertex 0.980839 0.0937474 0.489362 - vertex 0.983582 0.0925887 -0.510638 - vertex 0.983582 0.0925887 0.489362 - endloop - endfacet - facet normal -0.376162 -0.926554 -0 - outer loop - vertex 0.983582 0.0925887 0.489362 - vertex 0.983582 0.0925887 -0.510638 - vertex 0.986335 0.091471 -0.510638 - endloop - endfacet - facet normal -0.376162 -0.926554 0 - outer loop - vertex 0.983582 0.0925887 0.489362 - vertex 0.986335 0.091471 -0.510638 - vertex 0.986335 0.091471 0.489362 - endloop - endfacet - facet normal -0.363046 -0.931771 -0 - outer loop - vertex 0.986335 0.091471 0.489362 - vertex 0.986335 0.091471 -0.510638 - vertex 0.989098 0.0903944 -0.510638 - endloop - endfacet - facet normal -0.363046 -0.931771 0 - outer loop - vertex 0.986335 0.091471 0.489362 - vertex 0.989098 0.0903944 -0.510638 - vertex 0.989098 0.0903944 0.489362 - endloop - endfacet - facet normal -0.349814 -0.936819 -0 - outer loop - vertex 0.989098 0.0903944 0.489362 - vertex 0.989098 0.0903944 -0.510638 - vertex 0.991871 0.0893591 -0.510638 - endloop - endfacet - facet normal -0.349814 -0.936819 0 - outer loop - vertex 0.989098 0.0903944 0.489362 - vertex 0.991871 0.0893591 -0.510638 - vertex 0.991871 0.0893591 0.489362 - endloop - endfacet - facet normal -0.336473 -0.941693 -0 - outer loop - vertex 0.991871 0.0893591 0.489362 - vertex 0.991871 0.0893591 -0.510638 - vertex 0.994652 0.0883653 -0.510638 - endloop - endfacet - facet normal -0.336473 -0.941693 0 - outer loop - vertex 0.991871 0.0893591 0.489362 - vertex 0.994652 0.0883653 -0.510638 - vertex 0.994652 0.0883653 0.489362 - endloop - endfacet - facet normal -0.323007 -0.946396 -0 - outer loop - vertex 0.994652 0.0883653 0.489362 - vertex 0.994652 0.0883653 -0.510638 - vertex 0.997441 0.0874134 -0.510638 - endloop - endfacet - facet normal -0.323007 -0.946396 0 - outer loop - vertex 0.994652 0.0883653 0.489362 - vertex 0.997441 0.0874134 -0.510638 - vertex 0.997441 0.0874134 0.489362 - endloop - endfacet - facet normal -0.309415 -0.950927 -0 - outer loop - vertex 0.997441 0.0874134 0.489362 - vertex 0.997441 0.0874134 -0.510638 - vertex 1.00024 0.0865034 -0.510638 - endloop - endfacet - facet normal -0.309415 -0.950927 0 - outer loop - vertex 0.997441 0.0874134 0.489362 - vertex 1.00024 0.0865034 -0.510638 - vertex 1.00024 0.0865034 0.489362 - endloop - endfacet - facet normal -0.29572 -0.955275 -0 - outer loop - vertex 1.00024 0.0865034 0.489362 - vertex 1.00024 0.0865034 -0.510638 - vertex 1.00304 0.0856357 -0.510638 - endloop - endfacet - facet normal -0.29572 -0.955275 0 - outer loop - vertex 1.00024 0.0865034 0.489362 - vertex 1.00304 0.0856357 -0.510638 - vertex 1.00304 0.0856357 0.489362 - endloop - endfacet - facet normal -0.281862 -0.959455 -0 - outer loop - vertex 1.00304 0.0856357 0.489362 - vertex 1.00304 0.0856357 -0.510638 - vertex 1.00585 0.0848104 -0.510638 - endloop - endfacet - facet normal -0.281862 -0.959455 0 - outer loop - vertex 1.00304 0.0856357 0.489362 - vertex 1.00585 0.0848104 -0.510638 - vertex 1.00585 0.0848104 0.489362 - endloop - endfacet - facet normal -0.267904 -0.963446 -0 - outer loop - vertex 1.00585 0.0848104 0.489362 - vertex 1.00585 0.0848104 -0.510638 - vertex 1.00866 0.0840277 -0.510638 - endloop - endfacet - facet normal -0.267904 -0.963446 0 - outer loop - vertex 1.00585 0.0848104 0.489362 - vertex 1.00866 0.0840277 -0.510638 - vertex 1.00866 0.0840277 0.489362 - endloop - endfacet - facet normal -0.253803 -0.967256 -0 - outer loop - vertex 1.00866 0.0840277 0.489362 - vertex 1.00866 0.0840277 -0.510638 - vertex 1.01148 0.083288 -0.510638 - endloop - endfacet - facet normal -0.253803 -0.967256 0 - outer loop - vertex 1.00866 0.0840277 0.489362 - vertex 1.01148 0.083288 -0.510638 - vertex 1.01148 0.083288 0.489362 - endloop - endfacet - facet normal -0.239564 -0.970881 -0 - outer loop - vertex 1.01148 0.083288 0.489362 - vertex 1.01148 0.083288 -0.510638 - vertex 1.01431 0.0825914 -0.510638 - endloop - endfacet - facet normal -0.239564 -0.970881 0 - outer loop - vertex 1.01148 0.083288 0.489362 - vertex 1.01431 0.0825914 -0.510638 - vertex 1.01431 0.0825914 0.489362 - endloop - endfacet - facet normal -0.22519 -0.974315 -0 - outer loop - vertex 1.01431 0.0825914 0.489362 - vertex 1.01431 0.0825914 -0.510638 - vertex 1.01713 0.0819381 -0.510638 - endloop - endfacet - facet normal -0.22519 -0.974315 0 - outer loop - vertex 1.01431 0.0825914 0.489362 - vertex 1.01713 0.0819381 -0.510638 - vertex 1.01713 0.0819381 0.489362 - endloop - endfacet - facet normal -0.21068 -0.977555 -0 - outer loop - vertex 1.01713 0.0819381 0.489362 - vertex 1.01713 0.0819381 -0.510638 - vertex 1.01996 0.0813283 -0.510638 - endloop - endfacet - facet normal -0.21068 -0.977555 0 - outer loop - vertex 1.01713 0.0819381 0.489362 - vertex 1.01996 0.0813283 -0.510638 - vertex 1.01996 0.0813283 0.489362 - endloop - endfacet - facet normal -0.196022 -0.9806 -0 - outer loop - vertex 1.01996 0.0813283 0.489362 - vertex 1.01996 0.0813283 -0.510638 - vertex 1.02279 0.0807624 -0.510638 - endloop - endfacet - facet normal -0.196022 -0.9806 0 - outer loop - vertex 1.01996 0.0813283 0.489362 - vertex 1.02279 0.0807624 -0.510638 - vertex 1.02279 0.0807624 0.489362 - endloop - endfacet - facet normal -0.181224 -0.983442 -0 - outer loop - vertex 1.02279 0.0807624 0.489362 - vertex 1.02279 0.0807624 -0.510638 - vertex 1.02563 0.0802404 -0.510638 - endloop - endfacet - facet normal -0.181224 -0.983442 0 - outer loop - vertex 1.02279 0.0807624 0.489362 - vertex 1.02563 0.0802404 -0.510638 - vertex 1.02563 0.0802404 0.489362 - endloop - endfacet - facet normal -0.166272 -0.98608 -0 - outer loop - vertex 1.02563 0.0802404 0.489362 - vertex 1.02563 0.0802404 -0.510638 - vertex 1.02846 0.0797627 -0.510638 - endloop - endfacet - facet normal -0.166272 -0.98608 0 - outer loop - vertex 1.02563 0.0802404 0.489362 - vertex 1.02846 0.0797627 -0.510638 - vertex 1.02846 0.0797627 0.489362 - endloop - endfacet - facet normal -0.151175 -0.988507 -0 - outer loop - vertex 1.02846 0.0797627 0.489362 - vertex 1.02846 0.0797627 -0.510638 - vertex 1.03129 0.0793294 -0.510638 - endloop - endfacet - facet normal -0.151175 -0.988507 0 - outer loop - vertex 1.02846 0.0797627 0.489362 - vertex 1.03129 0.0793294 -0.510638 - vertex 1.03129 0.0793294 0.489362 - endloop - endfacet - facet normal -0.135929 -0.990719 -0 - outer loop - vertex 1.03129 0.0793294 0.489362 - vertex 1.03129 0.0793294 -0.510638 - vertex 1.03413 0.0789407 -0.510638 - endloop - endfacet - facet normal -0.135929 -0.990719 0 - outer loop - vertex 1.03129 0.0793294 0.489362 - vertex 1.03413 0.0789407 -0.510638 - vertex 1.03413 0.0789407 0.489362 - endloop - endfacet - facet normal -0.120525 -0.99271 -0 - outer loop - vertex 1.03413 0.0789407 0.489362 - vertex 1.03413 0.0789407 -0.510638 - vertex 1.03696 0.078597 -0.510638 - endloop - endfacet - facet normal -0.120525 -0.99271 0 - outer loop - vertex 1.03413 0.0789407 0.489362 - vertex 1.03696 0.078597 -0.510638 - vertex 1.03696 0.078597 0.489362 - endloop - endfacet - facet normal -0.104969 -0.994476 -0 - outer loop - vertex 1.03696 0.078597 0.489362 - vertex 1.03696 0.078597 -0.510638 - vertex 1.03979 0.0782984 -0.510638 - endloop - endfacet - facet normal -0.104969 -0.994476 0 - outer loop - vertex 1.03696 0.078597 0.489362 - vertex 1.03979 0.0782984 -0.510638 - vertex 1.03979 0.0782984 0.489362 - endloop - endfacet - facet normal -0.0892553 -0.996009 -0 - outer loop - vertex 1.03979 0.0782984 0.489362 - vertex 1.03979 0.0782984 -0.510638 - vertex 1.04261 0.0780451 -0.510638 - endloop - endfacet - facet normal -0.0892553 -0.996009 0 - outer loop - vertex 1.03979 0.0782984 0.489362 - vertex 1.04261 0.0780451 -0.510638 - vertex 1.04261 0.0780451 0.489362 - endloop - endfacet - facet normal -0.0733829 -0.997304 -0 - outer loop - vertex 1.04261 0.0780451 0.489362 - vertex 1.04261 0.0780451 -0.510638 - vertex 1.04544 0.0778373 -0.510638 - endloop - endfacet - facet normal -0.0733829 -0.997304 0 - outer loop - vertex 1.04261 0.0780451 0.489362 - vertex 1.04544 0.0778373 -0.510638 - vertex 1.04544 0.0778373 0.489362 - endloop - endfacet - facet normal -0.057355 -0.998354 -0 - outer loop - vertex 1.04544 0.0778373 0.489362 - vertex 1.04544 0.0778373 -0.510638 - vertex 1.04826 0.0776754 -0.510638 - endloop - endfacet - facet normal -0.057355 -0.998354 0 - outer loop - vertex 1.04544 0.0778373 0.489362 - vertex 1.04826 0.0776754 -0.510638 - vertex 1.04826 0.0776754 0.489362 - endloop - endfacet - facet normal -0.0411658 -0.999152 -0 - outer loop - vertex 1.04826 0.0776754 0.489362 - vertex 1.04826 0.0776754 -0.510638 - vertex 1.05107 0.0775594 -0.510638 - endloop - endfacet - facet normal -0.0411658 -0.999152 0 - outer loop - vertex 1.04826 0.0776754 0.489362 - vertex 1.05107 0.0775594 -0.510638 - vertex 1.05107 0.0775594 0.489362 - endloop - endfacet - facet normal -0.0248173 -0.999692 -0 - outer loop - vertex 1.05107 0.0775594 0.489362 - vertex 1.05107 0.0775594 -0.510638 - vertex 1.05388 0.0774897 -0.510638 - endloop - endfacet - facet normal -0.0248173 -0.999692 0 - outer loop - vertex 1.05107 0.0775594 0.489362 - vertex 1.05388 0.0774897 -0.510638 - vertex 1.05388 0.0774897 0.489362 - endloop - endfacet - facet normal -0.0083109 -0.999965 -0 - outer loop - vertex 1.05388 0.0774897 0.489362 - vertex 1.05388 0.0774897 -0.510638 - vertex 1.05668 0.0774664 -0.510638 - endloop - endfacet - facet normal -0.0083109 -0.999965 0 - outer loop - vertex 1.05388 0.0774897 0.489362 - vertex 1.05668 0.0774664 -0.510638 - vertex 1.05668 0.0774664 0.489362 - endloop - endfacet - facet normal 0.0257429 -0.999669 0 - outer loop - vertex 1.05668 0.0774664 0.489362 - vertex 1.05668 0.0774664 -0.510638 - vertex 1.0649 0.0776781 -0.510638 - endloop - endfacet - facet normal 0.0257429 -0.999669 0 - outer loop - vertex 1.05668 0.0774664 0.489362 - vertex 1.0649 0.0776781 -0.510638 - vertex 1.0649 0.0776781 0.489362 - endloop - endfacet - facet normal 0.0778446 -0.996966 0 - outer loop - vertex 1.0649 0.0776781 0.489362 - vertex 1.0649 0.0776781 -0.510638 - vertex 1.07296 0.0783075 -0.510638 - endloop - endfacet - facet normal 0.0778446 -0.996966 0 - outer loop - vertex 1.0649 0.0776781 0.489362 - vertex 1.07296 0.0783075 -0.510638 - vertex 1.07296 0.0783075 0.489362 - endloop - endfacet - facet normal 0.130403 -0.991461 0 - outer loop - vertex 1.07296 0.0783075 0.489362 - vertex 1.07296 0.0783075 -0.510638 - vertex 1.08086 0.0793453 -0.510638 - endloop - endfacet - facet normal 0.130403 -0.991461 0 - outer loop - vertex 1.07296 0.0783075 0.489362 - vertex 1.08086 0.0793453 -0.510638 - vertex 1.08086 0.0793453 0.489362 - endloop - endfacet - facet normal 0.183185 -0.983079 0 - outer loop - vertex 1.08086 0.0793453 0.489362 - vertex 1.08086 0.0793453 -0.510638 - vertex 1.08857 0.0807825 -0.510638 - endloop - endfacet - facet normal 0.183185 -0.983079 0 - outer loop - vertex 1.08086 0.0793453 0.489362 - vertex 1.08857 0.0807825 -0.510638 - vertex 1.08857 0.0807825 0.489362 - endloop - endfacet - facet normal 0.235941 -0.971767 0 - outer loop - vertex 1.08857 0.0807825 0.489362 - vertex 1.08857 0.0807825 -0.510638 - vertex 1.09609 0.0826098 -0.510638 - endloop - endfacet - facet normal 0.235941 -0.971767 0 - outer loop - vertex 1.08857 0.0807825 0.489362 - vertex 1.09609 0.0826098 -0.510638 - vertex 1.09609 0.0826098 0.489362 - endloop - endfacet - facet normal 0.288414 -0.957506 0 - outer loop - vertex 1.09609 0.0826098 0.489362 - vertex 1.09609 0.0826098 -0.510638 - vertex 1.10343 0.0848183 -0.510638 - endloop - endfacet - facet normal 0.288414 -0.957506 0 - outer loop - vertex 1.09609 0.0826098 0.489362 - vertex 1.10343 0.0848183 -0.510638 - vertex 1.10343 0.0848183 0.489362 - endloop - endfacet - facet normal 0.340346 -0.9403 0 - outer loop - vertex 1.10343 0.0848183 0.489362 - vertex 1.10343 0.0848183 -0.510638 - vertex 1.11056 0.0873988 -0.510638 - endloop - endfacet - facet normal 0.340346 -0.9403 0 - outer loop - vertex 1.10343 0.0848183 0.489362 - vertex 1.11056 0.0873988 -0.510638 - vertex 1.11056 0.0873988 0.489362 - endloop - endfacet - facet normal 0.391483 -0.920185 0 - outer loop - vertex 1.11056 0.0873988 0.489362 - vertex 1.11056 0.0873988 -0.510638 - vertex 1.11747 0.0903422 -0.510638 - endloop - endfacet - facet normal 0.391483 -0.920185 0 - outer loop - vertex 1.11056 0.0873988 0.489362 - vertex 1.11747 0.0903422 -0.510638 - vertex 1.11747 0.0903422 0.489362 - endloop - endfacet - facet normal 0.441579 -0.897223 0 - outer loop - vertex 1.11747 0.0903422 0.489362 - vertex 1.11747 0.0903422 -0.510638 - vertex 1.12417 0.0936393 -0.510638 - endloop - endfacet - facet normal 0.441579 -0.897223 0 - outer loop - vertex 1.11747 0.0903422 0.489362 - vertex 1.12417 0.0936393 -0.510638 - vertex 1.12417 0.0936393 0.489362 - endloop - endfacet - facet normal 0.490397 -0.871499 0 - outer loop - vertex 1.12417 0.0936393 0.489362 - vertex 1.12417 0.0936393 -0.510638 - vertex 1.13065 0.0972812 -0.510638 - endloop - endfacet - facet normal 0.490397 -0.871499 0 - outer loop - vertex 1.12417 0.0936393 0.489362 - vertex 1.13065 0.0972812 -0.510638 - vertex 1.13065 0.0972812 0.489362 - endloop - endfacet - facet normal 0.537716 -0.843126 0 - outer loop - vertex 1.13065 0.0972812 0.489362 - vertex 1.13065 0.0972812 -0.510638 - vertex 1.13688 0.101259 -0.510638 - endloop - endfacet - facet normal 0.537716 -0.843126 0 - outer loop - vertex 1.13065 0.0972812 0.489362 - vertex 1.13688 0.101259 -0.510638 - vertex 1.13688 0.101259 0.489362 - endloop - endfacet - facet normal 0.583332 -0.812234 0 - outer loop - vertex 1.13688 0.101259 0.489362 - vertex 1.13688 0.101259 -0.510638 - vertex 1.14287 0.105562 -0.510638 - endloop - endfacet - facet normal 0.583332 -0.812234 0 - outer loop - vertex 1.13688 0.101259 0.489362 - vertex 1.14287 0.105562 -0.510638 - vertex 1.14287 0.105562 0.489362 - endloop - endfacet - facet normal 0.627062 -0.778969 0 - outer loop - vertex 1.14287 0.105562 0.489362 - vertex 1.14287 0.105562 -0.510638 - vertex 1.14862 0.110184 -0.510638 - endloop - endfacet - facet normal 0.627062 -0.778969 0 - outer loop - vertex 1.14287 0.105562 0.489362 - vertex 1.14862 0.110184 -0.510638 - vertex 1.14862 0.110184 0.489362 - endloop - endfacet - facet normal 0.66874 -0.743496 0 - outer loop - vertex 1.14862 0.110184 0.489362 - vertex 1.14862 0.110184 -0.510638 - vertex 1.1541 0.115113 -0.510638 - endloop - endfacet - facet normal 0.66874 -0.743496 0 - outer loop - vertex 1.14862 0.110184 0.489362 - vertex 1.1541 0.115113 -0.510638 - vertex 1.1541 0.115113 0.489362 - endloop - endfacet - facet normal 0.708226 -0.705986 0 - outer loop - vertex 1.1541 0.115113 0.489362 - vertex 1.1541 0.115113 -0.510638 - vertex 1.15931 0.120341 -0.510638 - endloop - endfacet - facet normal 0.708226 -0.705986 0 - outer loop - vertex 1.1541 0.115113 0.489362 - vertex 1.15931 0.120341 -0.510638 - vertex 1.15931 0.120341 0.489362 - endloop - endfacet - facet normal 0.745398 -0.66662 0 - outer loop - vertex 1.15931 0.120341 0.489362 - vertex 1.15931 0.120341 -0.510638 - vertex 1.16424 0.12586 -0.510638 - endloop - endfacet - facet normal 0.745398 -0.66662 0 - outer loop - vertex 1.15931 0.120341 0.489362 - vertex 1.16424 0.12586 -0.510638 - vertex 1.16424 0.12586 0.489362 - endloop - endfacet - facet normal 0.780156 -0.625585 0 - outer loop - vertex 1.16424 0.12586 0.489362 - vertex 1.16424 0.12586 -0.510638 - vertex 1.16889 0.131659 -0.510638 - endloop - endfacet - facet normal 0.780156 -0.625585 0 - outer loop - vertex 1.16424 0.12586 0.489362 - vertex 1.16889 0.131659 -0.510638 - vertex 1.16889 0.131659 0.489362 - endloop - endfacet - facet normal 0.812415 -0.58308 0 - outer loop - vertex 1.16889 0.131659 0.489362 - vertex 1.16889 0.131659 -0.510638 - vertex 1.17325 0.13773 -0.510638 - endloop - endfacet - facet normal 0.812415 -0.58308 0 - outer loop - vertex 1.16889 0.131659 0.489362 - vertex 1.17325 0.13773 -0.510638 - vertex 1.17325 0.13773 0.489362 - endloop - endfacet - facet normal 0.84213 -0.539274 0 - outer loop - vertex 1.17325 0.13773 0.489362 - vertex 1.17325 0.13773 -0.510638 - vertex 1.17731 0.144064 -0.510638 - endloop - endfacet - facet normal 0.84213 -0.539274 0 - outer loop - vertex 1.17325 0.13773 0.489362 - vertex 1.17731 0.144064 -0.510638 - vertex 1.17731 0.144064 0.489362 - endloop - endfacet - facet normal 0.869254 -0.494365 0 - outer loop - vertex 1.17731 0.144064 0.489362 - vertex 1.17731 0.144064 -0.510638 - vertex 1.18105 0.150652 -0.510638 - endloop - endfacet - facet normal 0.869254 -0.494365 0 - outer loop - vertex 1.17731 0.144064 0.489362 - vertex 1.18105 0.150652 -0.510638 - vertex 1.18105 0.150652 0.489362 - endloop - endfacet - facet normal 0.893763 -0.448539 0 - outer loop - vertex 1.18105 0.150652 0.489362 - vertex 1.18105 0.150652 -0.510638 - vertex 1.18448 0.157483 -0.510638 - endloop - endfacet - facet normal 0.893763 -0.448539 0 - outer loop - vertex 1.18105 0.150652 0.489362 - vertex 1.18448 0.157483 -0.510638 - vertex 1.18448 0.157483 0.489362 - endloop - endfacet - facet normal 0.915643 -0.401991 0 - outer loop - vertex 1.18448 0.157483 0.489362 - vertex 1.18448 0.157483 -0.510638 - vertex 1.18758 0.164551 -0.510638 - endloop - endfacet - facet normal 0.915643 -0.401991 0 - outer loop - vertex 1.18448 0.157483 0.489362 - vertex 1.18758 0.164551 -0.510638 - vertex 1.18758 0.164551 0.489362 - endloop - endfacet - facet normal 0.934915 -0.354872 0 - outer loop - vertex 1.18758 0.164551 0.489362 - vertex 1.18758 0.164551 -0.510638 - vertex 1.19035 0.171844 -0.510638 - endloop - endfacet - facet normal 0.934915 -0.354872 0 - outer loop - vertex 1.18758 0.164551 0.489362 - vertex 1.19035 0.171844 -0.510638 - vertex 1.19035 0.171844 0.489362 - endloop - endfacet - facet normal 0.951591 -0.307367 0 - outer loop - vertex 1.19035 0.171844 0.489362 - vertex 1.19035 0.171844 -0.510638 - vertex 1.19278 0.179354 -0.510638 - endloop - endfacet - facet normal 0.951591 -0.307367 0 - outer loop - vertex 1.19035 0.171844 0.489362 - vertex 1.19278 0.179354 -0.510638 - vertex 1.19278 0.179354 0.489362 - endloop - endfacet - facet normal 0.965702 -0.259654 0 - outer loop - vertex 1.19278 0.179354 0.489362 - vertex 1.19278 0.179354 -0.510638 - vertex 1.19485 0.187073 -0.510638 - endloop - endfacet - facet normal 0.965702 -0.259654 0 - outer loop - vertex 1.19278 0.179354 0.489362 - vertex 1.19485 0.187073 -0.510638 - vertex 1.19485 0.187073 0.489362 - endloop - endfacet - facet normal 0.977299 -0.211865 0 - outer loop - vertex 1.19485 0.187073 0.489362 - vertex 1.19485 0.187073 -0.510638 - vertex 1.19657 0.19499 -0.510638 - endloop - endfacet - facet normal 0.977299 -0.211865 0 - outer loop - vertex 1.19485 0.187073 0.489362 - vertex 1.19657 0.19499 -0.510638 - vertex 1.19657 0.19499 0.489362 - endloop - endfacet - facet normal 0.986431 -0.164178 0 - outer loop - vertex 1.19657 0.19499 0.489362 - vertex 1.19657 0.19499 -0.510638 - vertex 1.19792 0.203097 -0.510638 - endloop - endfacet - facet normal 0.986431 -0.164178 0 - outer loop - vertex 1.19657 0.19499 0.489362 - vertex 1.19792 0.203097 -0.510638 - vertex 1.19792 0.203097 0.489362 - endloop - endfacet - facet normal 0.993166 -0.116712 0 - outer loop - vertex 1.19792 0.203097 0.489362 - vertex 1.19792 0.203097 -0.510638 - vertex 1.19889 0.211385 -0.510638 - endloop - endfacet - facet normal 0.993166 -0.116712 0 - outer loop - vertex 1.19792 0.203097 0.489362 - vertex 1.19889 0.211385 -0.510638 - vertex 1.19889 0.211385 0.489362 - endloop - endfacet - facet normal 0.997573 -0.0696282 0 - outer loop - vertex 1.19889 0.211385 0.489362 - vertex 1.19889 0.211385 -0.510638 - vertex 1.19948 0.219845 -0.510638 - endloop - endfacet - facet normal 0.997573 -0.0696282 0 - outer loop - vertex 1.19889 0.211385 0.489362 - vertex 1.19948 0.219845 -0.510638 - vertex 1.19948 0.219845 0.489362 - endloop - endfacet - facet normal 0.999735 -0.0230288 0 - outer loop - vertex 1.19948 0.219845 0.489362 - vertex 1.19948 0.219845 -0.510638 - vertex 1.19968 0.228466 -0.510638 - endloop - endfacet - facet normal 0.999735 -0.0230288 0 - outer loop - vertex 1.19948 0.219845 0.489362 - vertex 1.19968 0.228466 -0.510638 - vertex 1.19968 0.228466 0.489362 - endloop - endfacet - facet normal 0.999841 0.0178212 0 - outer loop - vertex 1.19968 0.228466 0.489362 - vertex 1.19968 0.228466 -0.510638 - vertex 1.19952 0.237636 -0.510638 - endloop - endfacet - facet normal 0.999841 0.0178212 0 - outer loop - vertex 1.19968 0.228466 0.489362 - vertex 1.19952 0.237636 -0.510638 - vertex 1.19952 0.237636 0.489362 - endloop - endfacet - facet normal 0.998492 0.0549031 0 - outer loop - vertex 1.19952 0.237636 0.489362 - vertex 1.19952 0.237636 -0.510638 - vertex 1.19903 0.246542 -0.510638 - endloop - endfacet - facet normal 0.998492 0.0549031 0 - outer loop - vertex 1.19952 0.237636 0.489362 - vertex 1.19903 0.246542 -0.510638 - vertex 1.19903 0.246542 0.489362 - endloop - endfacet - facet normal 0.995569 0.0940305 0 - outer loop - vertex 1.19903 0.246542 0.489362 - vertex 1.19903 0.246542 -0.510638 - vertex 1.19821 0.255181 -0.510638 - endloop - endfacet - facet normal 0.995569 0.0940305 0 - outer loop - vertex 1.19903 0.246542 0.489362 - vertex 1.19821 0.255181 -0.510638 - vertex 1.19821 0.255181 0.489362 - endloop - endfacet - facet normal 0.99082 0.135185 0 - outer loop - vertex 1.19821 0.255181 0.489362 - vertex 1.19821 0.255181 -0.510638 - vertex 1.19707 0.263551 -0.510638 - endloop - endfacet - facet normal 0.99082 0.135185 0 - outer loop - vertex 1.19821 0.255181 0.489362 - vertex 1.19707 0.263551 -0.510638 - vertex 1.19707 0.263551 0.489362 - endloop - endfacet - facet normal 0.983962 0.178377 0 - outer loop - vertex 1.19707 0.263551 0.489362 - vertex 1.19707 0.263551 -0.510638 - vertex 1.1956 0.271647 -0.510638 - endloop - endfacet - facet normal 0.983962 0.178377 0 - outer loop - vertex 1.19707 0.263551 0.489362 - vertex 1.1956 0.271647 -0.510638 - vertex 1.1956 0.271647 0.489362 - endloop - endfacet - facet normal 0.974697 0.223531 0 - outer loop - vertex 1.1956 0.271647 0.489362 - vertex 1.1956 0.271647 -0.510638 - vertex 1.19381 0.279466 -0.510638 - endloop - endfacet - facet normal 0.974697 0.223531 0 - outer loop - vertex 1.1956 0.271647 0.489362 - vertex 1.19381 0.279466 -0.510638 - vertex 1.19381 0.279466 0.489362 - endloop - endfacet - facet normal 0.962714 0.270523 0 - outer loop - vertex 1.19381 0.279466 0.489362 - vertex 1.19381 0.279466 -0.510638 - vertex 1.19169 0.287006 -0.510638 - endloop - endfacet - facet normal 0.962714 0.270523 0 - outer loop - vertex 1.19381 0.279466 0.489362 - vertex 1.19169 0.287006 -0.510638 - vertex 1.19169 0.287006 0.489362 - endloop - endfacet - facet normal 0.947696 0.319175 0 - outer loop - vertex 1.19169 0.287006 0.489362 - vertex 1.19169 0.287006 -0.510638 - vertex 1.18925 0.294262 -0.510638 - endloop - endfacet - facet normal 0.947696 0.319175 0 - outer loop - vertex 1.19169 0.287006 0.489362 - vertex 1.18925 0.294262 -0.510638 - vertex 1.18925 0.294262 0.489362 - endloop - endfacet - facet normal 0.929354 0.369189 0 - outer loop - vertex 1.18925 0.294262 0.489362 - vertex 1.18925 0.294262 -0.510638 - vertex 1.18648 0.301231 -0.510638 - endloop - endfacet - facet normal 0.929354 0.369189 0 - outer loop - vertex 1.18925 0.294262 0.489362 - vertex 1.18648 0.301231 -0.510638 - vertex 1.18648 0.301231 0.489362 - endloop - endfacet - facet normal 0.90742 0.420225 0 - outer loop - vertex 1.18648 0.301231 0.489362 - vertex 1.18648 0.301231 -0.510638 - vertex 1.18339 0.307911 -0.510638 - endloop - endfacet - facet normal 0.90742 0.420225 0 - outer loop - vertex 1.18648 0.301231 0.489362 - vertex 1.18339 0.307911 -0.510638 - vertex 1.18339 0.307911 0.489362 - endloop - endfacet - facet normal 0.881675 0.471857 0 - outer loop - vertex 1.18339 0.307911 0.489362 - vertex 1.18339 0.307911 -0.510638 - vertex 1.17997 0.314297 -0.510638 - endloop - endfacet - facet normal 0.881675 0.471857 0 - outer loop - vertex 1.18339 0.307911 0.489362 - vertex 1.17997 0.314297 -0.510638 - vertex 1.17997 0.314297 0.489362 - endloop - endfacet - facet normal 0.851994 0.523552 0 - outer loop - vertex 1.17997 0.314297 0.489362 - vertex 1.17997 0.314297 -0.510638 - vertex 1.17623 0.320386 -0.510638 - endloop - endfacet - facet normal 0.851994 0.523552 0 - outer loop - vertex 1.17997 0.314297 0.489362 - vertex 1.17623 0.320386 -0.510638 - vertex 1.17623 0.320386 0.489362 - endloop - endfacet - facet normal 0.818343 0.57473 0 - outer loop - vertex 1.17623 0.320386 0.489362 - vertex 1.17623 0.320386 -0.510638 - vertex 1.17216 0.326176 -0.510638 - endloop - endfacet - facet normal 0.818343 0.57473 0 - outer loop - vertex 1.17623 0.320386 0.489362 - vertex 1.17216 0.326176 -0.510638 - vertex 1.17216 0.326176 0.489362 - endloop - endfacet - facet normal 0.780808 0.624772 0 - outer loop - vertex 1.17216 0.326176 0.489362 - vertex 1.17216 0.326176 -0.510638 - vertex 1.16777 0.331662 -0.510638 - endloop - endfacet - facet normal 0.780808 0.624772 0 - outer loop - vertex 1.17216 0.326176 0.489362 - vertex 1.16777 0.331662 -0.510638 - vertex 1.16777 0.331662 0.489362 - endloop - endfacet - facet normal 0.739605 0.673042 0 - outer loop - vertex 1.16777 0.331662 0.489362 - vertex 1.16777 0.331662 -0.510638 - vertex 1.16306 0.336841 -0.510638 - endloop - endfacet - facet normal 0.739605 0.673042 0 - outer loop - vertex 1.16777 0.331662 0.489362 - vertex 1.16306 0.336841 -0.510638 - vertex 1.16306 0.336841 0.489362 - endloop - endfacet - facet normal 0.695076 0.718937 0 - outer loop - vertex 1.16306 0.336841 0.489362 - vertex 1.16306 0.336841 -0.510638 - vertex 1.15802 0.341711 -0.510638 - endloop - endfacet - facet normal 0.695076 0.718937 0 - outer loop - vertex 1.16306 0.336841 0.489362 - vertex 1.15802 0.341711 -0.510638 - vertex 1.15802 0.341711 0.489362 - endloop - endfacet - facet normal 0.647674 0.761917 0 - outer loop - vertex 1.15802 0.341711 0.489362 - vertex 1.15802 0.341711 -0.510638 - vertex 1.15266 0.346267 -0.510638 - endloop - endfacet - facet normal 0.647674 0.761917 0 - outer loop - vertex 1.15802 0.341711 0.489362 - vertex 1.15266 0.346267 -0.510638 - vertex 1.15266 0.346267 0.489362 - endloop - endfacet - facet normal 0.597967 0.801521 0 - outer loop - vertex 1.15266 0.346267 0.489362 - vertex 1.15266 0.346267 -0.510638 - vertex 1.14698 0.350506 -0.510638 - endloop - endfacet - facet normal 0.597967 0.801521 0 - outer loop - vertex 1.15266 0.346267 0.489362 - vertex 1.14698 0.350506 -0.510638 - vertex 1.14698 0.350506 0.489362 - endloop - endfacet - facet normal 0.546557 0.837422 0 - outer loop - vertex 1.14698 0.350506 0.489362 - vertex 1.14698 0.350506 -0.510638 - vertex 1.14097 0.354426 -0.510638 - endloop - endfacet - facet normal 0.546557 0.837422 0 - outer loop - vertex 1.14698 0.350506 0.489362 - vertex 1.14097 0.354426 -0.510638 - vertex 1.14097 0.354426 0.489362 - endloop - endfacet - facet normal 0.494091 0.86941 0 - outer loop - vertex 1.14097 0.354426 0.489362 - vertex 1.14097 0.354426 -0.510638 - vertex 1.13465 0.358022 -0.510638 - endloop - endfacet - facet normal 0.494091 0.86941 0 - outer loop - vertex 1.14097 0.354426 0.489362 - vertex 1.13465 0.358022 -0.510638 - vertex 1.13465 0.358022 0.489362 - endloop - endfacet - facet normal 0.441206 0.897406 0 - outer loop - vertex 1.13465 0.358022 0.489362 - vertex 1.13465 0.358022 -0.510638 - vertex 1.128 0.361291 -0.510638 - endloop - endfacet - facet normal 0.441206 0.897406 0 - outer loop - vertex 1.13465 0.358022 0.489362 - vertex 1.128 0.361291 -0.510638 - vertex 1.128 0.361291 0.489362 - endloop - endfacet - facet normal 0.388492 0.921452 0 - outer loop - vertex 1.128 0.361291 0.489362 - vertex 1.128 0.361291 -0.510638 - vertex 1.12102 0.364231 -0.510638 - endloop - endfacet - facet normal 0.388492 0.921452 0 - outer loop - vertex 1.128 0.361291 0.489362 - vertex 1.12102 0.364231 -0.510638 - vertex 1.12102 0.364231 0.489362 - endloop - endfacet - facet normal 0.336477 0.941692 0 - outer loop - vertex 1.12102 0.364231 0.489362 - vertex 1.12102 0.364231 -0.510638 - vertex 1.11373 0.366837 -0.510638 - endloop - endfacet - facet normal 0.336477 0.941692 0 - outer loop - vertex 1.12102 0.364231 0.489362 - vertex 1.11373 0.366837 -0.510638 - vertex 1.11373 0.366837 0.489362 - endloop - endfacet - facet normal 0.285598 0.958349 0 - outer loop - vertex 1.11373 0.366837 0.489362 - vertex 1.11373 0.366837 -0.510638 - vertex 1.10611 0.369106 -0.510638 - endloop - endfacet - facet normal 0.285598 0.958349 0 - outer loop - vertex 1.11373 0.366837 0.489362 - vertex 1.10611 0.369106 -0.510638 - vertex 1.10611 0.369106 0.489362 - endloop - endfacet - facet normal 0.236225 0.971698 0 - outer loop - vertex 1.10611 0.369106 0.489362 - vertex 1.10611 0.369106 -0.510638 - vertex 1.09818 0.371036 -0.510638 - endloop - endfacet - facet normal 0.236225 0.971698 0 - outer loop - vertex 1.10611 0.369106 0.489362 - vertex 1.09818 0.371036 -0.510638 - vertex 1.09818 0.371036 0.489362 - endloop - endfacet - facet normal 0.188627 0.982049 0 - outer loop - vertex 1.09818 0.371036 0.489362 - vertex 1.09818 0.371036 -0.510638 - vertex 1.08992 0.372622 -0.510638 - endloop - endfacet - facet normal 0.188627 0.982049 0 - outer loop - vertex 1.09818 0.371036 0.489362 - vertex 1.08992 0.372622 -0.510638 - vertex 1.08992 0.372622 0.489362 - endloop - endfacet - facet normal 0.142996 0.989723 0 - outer loop - vertex 1.08992 0.372622 0.489362 - vertex 1.08992 0.372622 -0.510638 - vertex 1.08134 0.373861 -0.510638 - endloop - endfacet - facet normal 0.142996 0.989723 0 - outer loop - vertex 1.08992 0.372622 0.489362 - vertex 1.08134 0.373861 -0.510638 - vertex 1.08134 0.373861 0.489362 - endloop - endfacet - facet normal 0.0994503 0.995043 0 - outer loop - vertex 1.08134 0.373861 0.489362 - vertex 1.08134 0.373861 -0.510638 - vertex 1.07244 0.374751 -0.510638 - endloop - endfacet - facet normal 0.0994503 0.995043 0 - outer loop - vertex 1.08134 0.373861 0.489362 - vertex 1.07244 0.374751 -0.510638 - vertex 1.07244 0.374751 0.489362 - endloop - endfacet - facet normal 0.0580503 0.998314 0 - outer loop - vertex 1.07244 0.374751 0.489362 - vertex 1.07244 0.374751 -0.510638 - vertex 1.06322 0.375287 -0.510638 - endloop - endfacet - facet normal 0.0580503 0.998314 0 - outer loop - vertex 1.07244 0.374751 0.489362 - vertex 1.06322 0.375287 -0.510638 - vertex 1.06322 0.375287 0.489362 - endloop - endfacet - facet normal 0.018806 0.999823 0 - outer loop - vertex 1.06322 0.375287 0.489362 - vertex 1.06322 0.375287 -0.510638 - vertex 1.05368 0.375466 -0.510638 - endloop - endfacet - facet normal 0.018806 0.999823 0 - outer loop - vertex 1.06322 0.375287 0.489362 - vertex 1.05368 0.375466 -0.510638 - vertex 1.05368 0.375466 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 1.05368 0.375466 0.489362 - vertex 1.05368 0.375466 -0.510638 - vertex 0.972682 0.375466 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 1.05368 0.375466 0.489362 - vertex 0.972682 0.375466 -0.510638 - vertex 0.972682 0.375466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 0.972682 0.375466 0.489362 - vertex 0.972682 0.375466 -0.510638 - vertex 0.972682 0.0974664 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 0.972682 0.375466 0.489362 - vertex 0.972682 0.0974664 -0.510638 - vertex 0.972682 0.0974664 0.489362 - endloop - endfacet - facet normal -0.427486 -0.904022 -0 - outer loop - vertex 0.972682 0.0974664 0.489362 - vertex 0.972682 0.0974664 -0.510638 - vertex 0.975389 0.0961864 -0.510638 - endloop - endfacet - facet normal -0.427486 -0.904022 0 - outer loop - vertex 0.972682 0.0974664 0.489362 - vertex 0.975389 0.0961864 -0.510638 - vertex 0.975389 0.0961864 0.489362 - endloop - endfacet - facet normal -0.53695 0.843614 0 - outer loop - vertex 1.7593 0.0469297 0.489362 - vertex 1.7593 0.0469297 -0.510638 - vertex 1.75394 0.0435191 -0.510638 - endloop - endfacet - facet normal -0.53695 0.843614 0 - outer loop - vertex 1.7593 0.0469297 0.489362 - vertex 1.75394 0.0435191 -0.510638 - vertex 1.75394 0.0435191 0.489362 - endloop - endfacet - facet normal -0.523995 0.851721 0 - outer loop - vertex 1.75394 0.0435191 0.489362 - vertex 1.75394 0.0435191 -0.510638 - vertex 1.7486 0.0402344 -0.510638 - endloop - endfacet - facet normal -0.523995 0.851721 0 - outer loop - vertex 1.75394 0.0435191 0.489362 - vertex 1.7486 0.0402344 -0.510638 - vertex 1.7486 0.0402344 0.489362 - endloop - endfacet - facet normal -0.510105 0.860112 0 - outer loop - vertex 1.7486 0.0402344 0.489362 - vertex 1.7486 0.0402344 -0.510638 - vertex 1.74327 0.037075 -0.510638 - endloop - endfacet - facet normal -0.510105 0.860112 0 - outer loop - vertex 1.7486 0.0402344 0.489362 - vertex 1.74327 0.037075 -0.510638 - vertex 1.74327 0.037075 0.489362 - endloop - endfacet - facet normal -0.4953 0.868722 0 - outer loop - vertex 1.74327 0.037075 0.489362 - vertex 1.74327 0.037075 -0.510638 - vertex 1.73795 0.0340405 -0.510638 - endloop - endfacet - facet normal -0.4953 0.868722 0 - outer loop - vertex 1.74327 0.037075 0.489362 - vertex 1.73795 0.0340405 -0.510638 - vertex 1.73795 0.0340405 0.489362 - endloop - endfacet - facet normal -0.47959 0.877493 0 - outer loop - vertex 1.73795 0.0340405 0.489362 - vertex 1.73795 0.0340405 -0.510638 - vertex 1.73263 0.0311304 -0.510638 - endloop - endfacet - facet normal -0.47959 0.877493 0 - outer loop - vertex 1.73795 0.0340405 0.489362 - vertex 1.73263 0.0311304 -0.510638 - vertex 1.73263 0.0311304 0.489362 - endloop - endfacet - facet normal -0.46298 0.886369 0 - outer loop - vertex 1.73263 0.0311304 0.489362 - vertex 1.73263 0.0311304 -0.510638 - vertex 1.72729 0.0283443 -0.510638 - endloop - endfacet - facet normal -0.46298 0.886369 0 - outer loop - vertex 1.73263 0.0311304 0.489362 - vertex 1.72729 0.0283443 -0.510638 - vertex 1.72729 0.0283443 0.489362 - endloop - endfacet - facet normal -0.445526 0.895269 0 - outer loop - vertex 1.72729 0.0283443 0.489362 - vertex 1.72729 0.0283443 -0.510638 - vertex 1.72194 0.0256818 -0.510638 - endloop - endfacet - facet normal -0.445526 0.895269 0 - outer loop - vertex 1.72729 0.0283443 0.489362 - vertex 1.72194 0.0256818 -0.510638 - vertex 1.72194 0.0256818 0.489362 - endloop - endfacet - facet normal -0.427249 0.904134 0 - outer loop - vertex 1.72194 0.0256818 0.489362 - vertex 1.72194 0.0256818 -0.510638 - vertex 1.71657 0.0231424 -0.510638 - endloop - endfacet - facet normal -0.427249 0.904134 0 - outer loop - vertex 1.72194 0.0256818 0.489362 - vertex 1.71657 0.0231424 -0.510638 - vertex 1.71657 0.0231424 0.489362 - endloop - endfacet - facet normal -0.408218 0.912884 0 - outer loop - vertex 1.71657 0.0231424 0.489362 - vertex 1.71657 0.0231424 -0.510638 - vertex 1.71116 0.0207256 -0.510638 - endloop - endfacet - facet normal -0.408218 0.912884 0 - outer loop - vertex 1.71657 0.0231424 0.489362 - vertex 1.71116 0.0207256 -0.510638 - vertex 1.71116 0.0207256 0.489362 - endloop - endfacet - facet normal -0.388494 0.921451 0 - outer loop - vertex 1.71116 0.0207256 0.489362 - vertex 1.71116 0.0207256 -0.510638 - vertex 1.70572 0.0184311 -0.510638 - endloop - endfacet - facet normal -0.388494 0.921451 0 - outer loop - vertex 1.71116 0.0207256 0.489362 - vertex 1.70572 0.0184311 -0.510638 - vertex 1.70572 0.0184311 0.489362 - endloop - endfacet - facet normal -0.368154 0.929765 0 - outer loop - vertex 1.70572 0.0184311 0.489362 - vertex 1.70572 0.0184311 -0.510638 - vertex 1.70023 0.0162584 -0.510638 - endloop - endfacet - facet normal -0.368154 0.929765 0 - outer loop - vertex 1.70572 0.0184311 0.489362 - vertex 1.70023 0.0162584 -0.510638 - vertex 1.70023 0.0162584 0.489362 - endloop - endfacet - facet normal -0.347293 0.937757 0 - outer loop - vertex 1.70023 0.0162584 0.489362 - vertex 1.70023 0.0162584 -0.510638 - vertex 1.69469 0.014207 -0.510638 - endloop - endfacet - facet normal -0.347293 0.937757 0 - outer loop - vertex 1.70023 0.0162584 0.489362 - vertex 1.69469 0.014207 -0.510638 - vertex 1.69469 0.014207 0.489362 - endloop - endfacet - facet normal -0.326001 0.945369 0 - outer loop - vertex 1.69469 0.014207 0.489362 - vertex 1.69469 0.014207 -0.510638 - vertex 1.6891 0.0122765 -0.510638 - endloop - endfacet - facet normal -0.326001 0.945369 0 - outer loop - vertex 1.69469 0.014207 0.489362 - vertex 1.6891 0.0122765 -0.510638 - vertex 1.6891 0.0122765 0.489362 - endloop - endfacet - facet normal -0.304386 0.952549 0 - outer loop - vertex 1.6891 0.0122765 0.489362 - vertex 1.6891 0.0122765 -0.510638 - vertex 1.68343 0.0104664 -0.510638 - endloop - endfacet - facet normal -0.304386 0.952549 0 - outer loop - vertex 1.6891 0.0122765 0.489362 - vertex 1.68343 0.0104664 -0.510638 - vertex 1.68343 0.0104664 0.489362 - endloop - endfacet - facet normal -0.282544 0.959254 0 - outer loop - vertex 1.68343 0.0104664 0.489362 - vertex 1.68343 0.0104664 -0.510638 - vertex 1.67769 0.00877632 -0.510638 - endloop - endfacet - facet normal -0.282544 0.959254 0 - outer loop - vertex 1.68343 0.0104664 0.489362 - vertex 1.67769 0.00877632 -0.510638 - vertex 1.67769 0.00877632 0.489362 - endloop - endfacet - facet normal -0.260603 0.965446 0 - outer loop - vertex 1.67769 0.00877632 0.489362 - vertex 1.67769 0.00877632 -0.510638 - vertex 1.67188 0.0072058 -0.510638 - endloop - endfacet - facet normal -0.260603 0.965446 0 - outer loop - vertex 1.67769 0.00877632 0.489362 - vertex 1.67188 0.0072058 -0.510638 - vertex 1.67188 0.0072058 0.489362 - endloop - endfacet - facet normal -0.238656 0.971104 0 - outer loop - vertex 1.67188 0.0072058 0.489362 - vertex 1.67188 0.0072058 -0.510638 - vertex 1.66597 0.00575439 -0.510638 - endloop - endfacet - facet normal -0.238656 0.971104 0 - outer loop - vertex 1.67188 0.0072058 0.489362 - vertex 1.66597 0.00575439 -0.510638 - vertex 1.66597 0.00575439 0.489362 - endloop - endfacet - facet normal -0.216821 0.976211 0 - outer loop - vertex 1.66597 0.00575439 0.489362 - vertex 1.66597 0.00575439 -0.510638 - vertex 1.65997 0.00442165 -0.510638 - endloop - endfacet - facet normal -0.216821 0.976211 0 - outer loop - vertex 1.66597 0.00575439 0.489362 - vertex 1.65997 0.00442165 -0.510638 - vertex 1.65997 0.00442165 0.489362 - endloop - endfacet - facet normal -0.195197 0.980764 0 - outer loop - vertex 1.65997 0.00442165 0.489362 - vertex 1.65997 0.00442165 -0.510638 - vertex 1.65387 0.00320713 -0.510638 - endloop - endfacet - facet normal -0.195197 0.980764 0 - outer loop - vertex 1.65997 0.00442165 0.489362 - vertex 1.65387 0.00320713 -0.510638 - vertex 1.65387 0.00320713 0.489362 - endloop - endfacet - facet normal -0.173886 0.984766 0 - outer loop - vertex 1.65387 0.00320713 0.489362 - vertex 1.65387 0.00320713 -0.510638 - vertex 1.64766 0.00211039 -0.510638 - endloop - endfacet - facet normal -0.173886 0.984766 0 - outer loop - vertex 1.65387 0.00320713 0.489362 - vertex 1.64766 0.00211039 -0.510638 - vertex 1.64766 0.00211039 0.489362 - endloop - endfacet - facet normal -0.152973 0.98823 0 - outer loop - vertex 1.64766 0.00211039 0.489362 - vertex 1.64766 0.00211039 -0.510638 - vertex 1.64133 0.00113098 -0.510638 - endloop - endfacet - facet normal -0.152973 0.98823 0 - outer loop - vertex 1.64766 0.00211039 0.489362 - vertex 1.64133 0.00113098 -0.510638 - vertex 1.64133 0.00113098 0.489362 - endloop - endfacet - facet normal -0.132538 0.991178 0 - outer loop - vertex 1.64133 0.00113098 0.489362 - vertex 1.64133 0.00113098 -0.510638 - vertex 1.63488 0.000268462 -0.510638 - endloop - endfacet - facet normal -0.132538 0.991178 0 - outer loop - vertex 1.64133 0.00113098 0.489362 - vertex 1.63488 0.000268462 -0.510638 - vertex 1.63488 0.000268462 0.489362 - endloop - endfacet - facet normal -0.112655 0.993634 0 - outer loop - vertex 1.63488 0.000268462 0.489362 - vertex 1.63488 0.000268462 -0.510638 - vertex 1.6283 -0.000477612 -0.510638 - endloop - endfacet - facet normal -0.112655 0.993634 0 - outer loop - vertex 1.63488 0.000268462 0.489362 - vertex 1.6283 -0.000477612 -0.510638 - vertex 1.6283 -0.000477612 0.489362 - endloop - endfacet - facet normal -0.0933819 0.99563 0 - outer loop - vertex 1.6283 -0.000477612 0.489362 - vertex 1.6283 -0.000477612 -0.510638 - vertex 1.62158 -0.00110769 -0.510638 - endloop - endfacet - facet normal -0.0933819 0.99563 0 - outer loop - vertex 1.6283 -0.000477612 0.489362 - vertex 1.62158 -0.00110769 -0.510638 - vertex 1.62158 -0.00110769 0.489362 - endloop - endfacet - facet normal -0.0747679 0.997201 0 - outer loop - vertex 1.62158 -0.00110769 0.489362 - vertex 1.62158 -0.00110769 -0.510638 - vertex 1.61472 -0.0016222 -0.510638 - endloop - endfacet - facet normal -0.0747679 0.997201 0 - outer loop - vertex 1.62158 -0.00110769 0.489362 - vertex 1.61472 -0.0016222 -0.510638 - vertex 1.61472 -0.0016222 0.489362 - endloop - endfacet - facet normal -0.0568538 0.998383 0 - outer loop - vertex 1.61472 -0.0016222 0.489362 - vertex 1.61472 -0.0016222 -0.510638 - vertex 1.6077 -0.00202161 -0.510638 - endloop - endfacet - facet normal -0.0568538 0.998383 0 - outer loop - vertex 1.61472 -0.0016222 0.489362 - vertex 1.6077 -0.00202161 -0.510638 - vertex 1.6077 -0.00202161 0.489362 - endloop - endfacet - facet normal -0.0396679 0.999213 0 - outer loop - vertex 1.6077 -0.00202161 0.489362 - vertex 1.6077 -0.00202161 -0.510638 - vertex 1.60053 -0.00230635 -0.510638 - endloop - endfacet - facet normal -0.0396679 0.999213 0 - outer loop - vertex 1.6077 -0.00202161 0.489362 - vertex 1.60053 -0.00230635 -0.510638 - vertex 1.60053 -0.00230635 0.489362 - endloop - endfacet - facet normal -0.0232306 0.99973 0 - outer loop - vertex 1.60053 -0.00230635 0.489362 - vertex 1.60053 -0.00230635 -0.510638 - vertex 1.59319 -0.00247687 -0.510638 - endloop - endfacet - facet normal -0.0232306 0.99973 0 - outer loop - vertex 1.60053 -0.00230635 0.489362 - vertex 1.59319 -0.00247687 -0.510638 - vertex 1.59319 -0.00247687 0.489362 - endloop - endfacet - facet normal -0.00755401 0.999971 0 - outer loop - vertex 1.59319 -0.00247687 0.489362 - vertex 1.59319 -0.00247687 -0.510638 - vertex 1.58568 -0.00253361 -0.510638 - endloop - endfacet - facet normal -0.00755401 0.999971 0 - outer loop - vertex 1.59319 -0.00247687 0.489362 - vertex 1.58568 -0.00253361 -0.510638 - vertex 1.58568 -0.00253361 0.489362 - endloop - endfacet - facet normal 0.0274989 0.999622 0 - outer loop - vertex 1.58568 -0.00253361 0.489362 - vertex 1.58568 -0.00253361 -0.510638 - vertex 1.57189 -0.00215418 -0.510638 - endloop - endfacet - facet normal 0.0274989 0.999622 0 - outer loop - vertex 1.58568 -0.00253361 0.489362 - vertex 1.57189 -0.00215418 -0.510638 - vertex 1.57189 -0.00215418 0.489362 - endloop - endfacet - facet normal 0.0836271 0.996497 0 - outer loop - vertex 1.57189 -0.00215418 0.489362 - vertex 1.57189 -0.00215418 -0.510638 - vertex 1.55851 -0.00103166 -0.510638 - endloop - endfacet - facet normal 0.0836271 0.996497 0 - outer loop - vertex 1.57189 -0.00215418 0.489362 - vertex 1.55851 -0.00103166 -0.510638 - vertex 1.55851 -0.00103166 0.489362 - endloop - endfacet - facet normal 0.14077 0.990042 0 - outer loop - vertex 1.55851 -0.00103166 0.489362 - vertex 1.55851 -0.00103166 -0.510638 - vertex 1.54556 0.00081041 -0.510638 - endloop - endfacet - facet normal 0.14077 0.990042 0 - outer loop - vertex 1.55851 -0.00103166 0.489362 - vertex 1.54556 0.00081041 -0.510638 - vertex 1.54556 0.00081041 0.489362 - endloop - endfacet - facet normal 0.198507 0.9801 0 - outer loop - vertex 1.54556 0.00081041 0.489362 - vertex 1.54556 0.00081041 -0.510638 - vertex 1.53303 0.00334848 -0.510638 - endloop - endfacet - facet normal 0.198507 0.9801 0 - outer loop - vertex 1.54556 0.00081041 0.489362 - vertex 1.53303 0.00334848 -0.510638 - vertex 1.53303 0.00334848 0.489362 - endloop - endfacet - facet normal 0.256381 0.966576 0 - outer loop - vertex 1.53303 0.00334848 0.489362 - vertex 1.53303 0.00334848 -0.510638 - vertex 1.52092 0.006559 -0.510638 - endloop - endfacet - facet normal 0.256381 0.966576 0 - outer loop - vertex 1.53303 0.00334848 0.489362 - vertex 1.52092 0.006559 -0.510638 - vertex 1.52092 0.006559 0.489362 - endloop - endfacet - facet normal 0.313921 0.949449 0 - outer loop - vertex 1.52092 0.006559 0.489362 - vertex 1.52092 0.006559 -0.510638 - vertex 1.50925 0.0104184 -0.510638 - endloop - endfacet - facet normal 0.313921 0.949449 0 - outer loop - vertex 1.52092 0.006559 0.489362 - vertex 1.50925 0.0104184 -0.510638 - vertex 1.50925 0.0104184 0.489362 - endloop - endfacet - facet normal 0.370643 0.928776 0 - outer loop - vertex 1.50925 0.0104184 0.489362 - vertex 1.50925 0.0104184 -0.510638 - vertex 1.49801 0.0149032 -0.510638 - endloop - endfacet - facet normal 0.370643 0.928776 0 - outer loop - vertex 1.50925 0.0104184 0.489362 - vertex 1.49801 0.0149032 -0.510638 - vertex 1.49801 0.0149032 0.489362 - endloop - endfacet - facet normal 0.426086 0.904682 0 - outer loop - vertex 1.49801 0.0149032 0.489362 - vertex 1.49801 0.0149032 -0.510638 - vertex 1.48721 0.0199897 -0.510638 - endloop - endfacet - facet normal 0.426086 0.904682 0 - outer loop - vertex 1.49801 0.0149032 0.489362 - vertex 1.48721 0.0199897 -0.510638 - vertex 1.48721 0.0199897 0.489362 - endloop - endfacet - facet normal 0.479823 0.877366 0 - outer loop - vertex 1.48721 0.0199897 0.489362 - vertex 1.48721 0.0199897 -0.510638 - vertex 1.47685 0.0256544 -0.510638 - endloop - endfacet - facet normal 0.479823 0.877366 0 - outer loop - vertex 1.48721 0.0199897 0.489362 - vertex 1.47685 0.0256544 -0.510638 - vertex 1.47685 0.0256544 0.489362 - endloop - endfacet - facet normal 0.53147 0.847077 0 - outer loop - vertex 1.47685 0.0256544 0.489362 - vertex 1.47685 0.0256544 -0.510638 - vertex 1.46694 0.0318738 -0.510638 - endloop - endfacet - facet normal 0.53147 0.847077 0 - outer loop - vertex 1.47685 0.0256544 0.489362 - vertex 1.46694 0.0318738 -0.510638 - vertex 1.46694 0.0318738 0.489362 - endloop - endfacet - facet normal 0.580702 0.814116 0 - outer loop - vertex 1.46694 0.0318738 0.489362 - vertex 1.46694 0.0318738 -0.510638 - vertex 1.45748 0.0386243 -0.510638 - endloop - endfacet - facet normal 0.580702 0.814116 0 - outer loop - vertex 1.46694 0.0318738 0.489362 - vertex 1.45748 0.0386243 -0.510638 - vertex 1.45748 0.0386243 0.489362 - endloop - endfacet - facet normal 0.627272 0.7788 0 - outer loop - vertex 1.45748 0.0386243 0.489362 - vertex 1.45748 0.0386243 -0.510638 - vertex 1.44847 0.0458824 -0.510638 - endloop - endfacet - facet normal 0.627272 0.7788 0 - outer loop - vertex 1.45748 0.0386243 0.489362 - vertex 1.44847 0.0458824 -0.510638 - vertex 1.44847 0.0458824 0.489362 - endloop - endfacet - facet normal 0.670983 0.741473 0 - outer loop - vertex 1.44847 0.0458824 0.489362 - vertex 1.44847 0.0458824 -0.510638 - vertex 1.43991 0.0536245 -0.510638 - endloop - endfacet - facet normal 0.670983 0.741473 0 - outer loop - vertex 1.44847 0.0458824 0.489362 - vertex 1.43991 0.0536245 -0.510638 - vertex 1.43991 0.0536245 0.489362 - endloop - endfacet - facet normal 0.711719 0.702464 0 - outer loop - vertex 1.43991 0.0536245 0.489362 - vertex 1.43991 0.0536245 -0.510638 - vertex 1.43181 0.061827 -0.510638 - endloop - endfacet - facet normal 0.711719 0.702464 0 - outer loop - vertex 1.43991 0.0536245 0.489362 - vertex 1.43181 0.061827 -0.510638 - vertex 1.43181 0.061827 0.489362 - endloop - endfacet - facet normal 0.749419 0.662096 0 - outer loop - vertex 1.43181 0.061827 0.489362 - vertex 1.43181 0.061827 -0.510638 - vertex 1.42418 0.0704664 -0.510638 - endloop - endfacet - facet normal 0.749419 0.662096 0 - outer loop - vertex 1.43181 0.061827 0.489362 - vertex 1.42418 0.0704664 -0.510638 - vertex 1.42418 0.0704664 0.489362 - endloop - endfacet - facet normal 0.784076 0.620664 0 - outer loop - vertex 1.42418 0.0704664 0.489362 - vertex 1.42418 0.0704664 -0.510638 - vertex 1.41702 0.0795191 -0.510638 - endloop - endfacet - facet normal 0.784076 0.620664 0 - outer loop - vertex 1.42418 0.0704664 0.489362 - vertex 1.41702 0.0795191 -0.510638 - vertex 1.41702 0.0795191 0.489362 - endloop - endfacet - facet normal 0.815722 0.578444 0 - outer loop - vertex 1.41702 0.0795191 0.489362 - vertex 1.41702 0.0795191 -0.510638 - vertex 1.41032 0.0889617 -0.510638 - endloop - endfacet - facet normal 0.815722 0.578444 0 - outer loop - vertex 1.41702 0.0795191 0.489362 - vertex 1.41032 0.0889617 -0.510638 - vertex 1.41032 0.0889617 0.489362 - endloop - endfacet - facet normal 0.844433 0.535662 0 - outer loop - vertex 1.41032 0.0889617 0.489362 - vertex 1.41032 0.0889617 -0.510638 - vertex 1.4041 0.0987704 -0.510638 - endloop - endfacet - facet normal 0.844433 0.535662 0 - outer loop - vertex 1.41032 0.0889617 0.489362 - vertex 1.4041 0.0987704 -0.510638 - vertex 1.4041 0.0987704 0.489362 - endloop - endfacet - facet normal 0.870308 0.492508 0 - outer loop - vertex 1.4041 0.0987704 0.489362 - vertex 1.4041 0.0987704 -0.510638 - vertex 1.39835 0.108922 -0.510638 - endloop - endfacet - facet normal 0.870308 0.492508 0 - outer loop - vertex 1.4041 0.0987704 0.489362 - vertex 1.39835 0.108922 -0.510638 - vertex 1.39835 0.108922 0.489362 - endloop - endfacet - facet normal 0.893451 0.449161 0 - outer loop - vertex 1.39835 0.108922 0.489362 - vertex 1.39835 0.108922 -0.510638 - vertex 1.39309 0.119392 -0.510638 - endloop - endfacet - facet normal 0.893451 0.449161 0 - outer loop - vertex 1.39835 0.108922 0.489362 - vertex 1.39309 0.119392 -0.510638 - vertex 1.39309 0.119392 0.489362 - endloop - endfacet - facet normal 0.913984 0.405751 0 - outer loop - vertex 1.39309 0.119392 0.489362 - vertex 1.39309 0.119392 -0.510638 - vertex 1.38831 0.130158 -0.510638 - endloop - endfacet - facet normal 0.913984 0.405751 0 - outer loop - vertex 1.39309 0.119392 0.489362 - vertex 1.38831 0.130158 -0.510638 - vertex 1.38831 0.130158 0.489362 - endloop - endfacet - facet normal 0.932038 0.36236 0 - outer loop - vertex 1.38831 0.130158 0.489362 - vertex 1.38831 0.130158 -0.510638 - vertex 1.38402 0.141196 -0.510638 - endloop - endfacet - facet normal 0.932038 0.36236 0 - outer loop - vertex 1.38831 0.130158 0.489362 - vertex 1.38402 0.141196 -0.510638 - vertex 1.38402 0.141196 0.489362 - endloop - endfacet - facet normal 0.947731 0.31907 0 - outer loop - vertex 1.38402 0.141196 0.489362 - vertex 1.38402 0.141196 -0.510638 - vertex 1.38022 0.152483 -0.510638 - endloop - endfacet - facet normal 0.947731 0.31907 0 - outer loop - vertex 1.38402 0.141196 0.489362 - vertex 1.38022 0.152483 -0.510638 - vertex 1.38022 0.152483 0.489362 - endloop - endfacet - facet normal 0.961176 0.275937 0 - outer loop - vertex 1.38022 0.152483 0.489362 - vertex 1.38022 0.152483 -0.510638 - vertex 1.37691 0.163994 -0.510638 - endloop - endfacet - facet normal 0.961176 0.275937 0 - outer loop - vertex 1.38022 0.152483 0.489362 - vertex 1.37691 0.163994 -0.510638 - vertex 1.37691 0.163994 0.489362 - endloop - endfacet - facet normal 0.972481 0.232981 0 - outer loop - vertex 1.37691 0.163994 0.489362 - vertex 1.37691 0.163994 -0.510638 - vertex 1.37411 0.175707 -0.510638 - endloop - endfacet - facet normal 0.972481 0.232981 0 - outer loop - vertex 1.37691 0.163994 0.489362 - vertex 1.37411 0.175707 -0.510638 - vertex 1.37411 0.175707 0.489362 - endloop - endfacet - facet normal 0.981742 0.190217 0 - outer loop - vertex 1.37411 0.175707 0.489362 - vertex 1.37411 0.175707 -0.510638 - vertex 1.3718 0.187598 -0.510638 - endloop - endfacet - facet normal 0.981742 0.190217 0 - outer loop - vertex 1.37411 0.175707 0.489362 - vertex 1.3718 0.187598 -0.510638 - vertex 1.3718 0.187598 0.489362 - endloop - endfacet - facet normal 0.989041 0.147644 0 - outer loop - vertex 1.3718 0.187598 0.489362 - vertex 1.3718 0.187598 -0.510638 - vertex 1.37001 0.199642 -0.510638 - endloop - endfacet - facet normal 0.989041 0.147644 0 - outer loop - vertex 1.3718 0.187598 0.489362 - vertex 1.37001 0.199642 -0.510638 - vertex 1.37001 0.199642 0.489362 - endloop - endfacet - facet normal 0.994444 0.105262 0 - outer loop - vertex 1.37001 0.199642 0.489362 - vertex 1.37001 0.199642 -0.510638 - vertex 1.36872 0.211818 -0.510638 - endloop - endfacet - facet normal 0.994444 0.105262 0 - outer loop - vertex 1.37001 0.199642 0.489362 - vertex 1.36872 0.211818 -0.510638 - vertex 1.36872 0.211818 0.489362 - endloop - endfacet - facet normal 0.998011 0.0630384 0 - outer loop - vertex 1.36872 0.211818 0.489362 - vertex 1.36872 0.211818 -0.510638 - vertex 1.36794 0.2241 -0.510638 - endloop - endfacet - facet normal 0.998011 0.0630384 0 - outer loop - vertex 1.36872 0.211818 0.489362 - vertex 1.36794 0.2241 -0.510638 - vertex 1.36794 0.2241 0.489362 - endloop - endfacet - facet normal 0.99978 0.0209721 0 - outer loop - vertex 1.36794 0.2241 0.489362 - vertex 1.36794 0.2241 -0.510638 - vertex 1.36768 0.236466 -0.510638 - endloop - endfacet - facet normal 0.99978 0.0209721 0 - outer loop - vertex 1.36794 0.2241 0.489362 - vertex 1.36768 0.236466 -0.510638 - vertex 1.36768 0.236466 0.489362 - endloop - endfacet - facet normal 0.999776 -0.0211845 0 - outer loop - vertex 1.36768 0.236466 0.489362 - vertex 1.36768 0.236466 -0.510638 - vertex 1.36797 0.249918 -0.510638 - endloop - endfacet - facet normal 0.999776 -0.0211845 0 - outer loop - vertex 1.36768 0.236466 0.489362 - vertex 1.36797 0.249918 -0.510638 - vertex 1.36797 0.249918 0.489362 - endloop - endfacet - facet normal 0.997928 -0.0643331 0 - outer loop - vertex 1.36797 0.249918 0.489362 - vertex 1.36797 0.249918 -0.510638 - vertex 1.36881 0.263066 -0.510638 - endloop - endfacet - facet normal 0.997928 -0.0643331 0 - outer loop - vertex 1.36797 0.249918 0.489362 - vertex 1.36881 0.263066 -0.510638 - vertex 1.36881 0.263066 0.489362 - endloop - endfacet - facet normal 0.994106 -0.108414 0 - outer loop - vertex 1.36881 0.263066 0.489362 - vertex 1.36881 0.263066 -0.510638 - vertex 1.37021 0.275898 -0.510638 - endloop - endfacet - facet normal 0.994106 -0.108414 0 - outer loop - vertex 1.36881 0.263066 0.489362 - vertex 1.37021 0.275898 -0.510638 - vertex 1.37021 0.275898 0.489362 - endloop - endfacet - facet normal 0.988174 -0.153339 0 - outer loop - vertex 1.37021 0.275898 0.489362 - vertex 1.37021 0.275898 -0.510638 - vertex 1.37216 0.288406 -0.510638 - endloop - endfacet - facet normal 0.988174 -0.153339 0 - outer loop - vertex 1.37021 0.275898 0.489362 - vertex 1.37216 0.288406 -0.510638 - vertex 1.37216 0.288406 0.489362 - endloop - endfacet - facet normal 0.98 -0.198999 0 - outer loop - vertex 1.37216 0.288406 0.489362 - vertex 1.37216 0.288406 -0.510638 - vertex 1.37463 0.300578 -0.510638 - endloop - endfacet - facet normal 0.98 -0.198999 0 - outer loop - vertex 1.37216 0.288406 0.489362 - vertex 1.37463 0.300578 -0.510638 - vertex 1.37463 0.300578 0.489362 - endloop - endfacet - facet normal 0.969457 -0.245261 0 - outer loop - vertex 1.37463 0.300578 0.489362 - vertex 1.37463 0.300578 -0.510638 - vertex 1.37762 0.312402 -0.510638 - endloop - endfacet - facet normal 0.969457 -0.245261 0 - outer loop - vertex 1.37463 0.300578 0.489362 - vertex 1.37762 0.312402 -0.510638 - vertex 1.37762 0.312402 0.489362 - endloop - endfacet - facet normal 0.956422 -0.291987 0 - outer loop - vertex 1.37762 0.312402 0.489362 - vertex 1.37762 0.312402 -0.510638 - vertex 1.38112 0.32387 -0.510638 - endloop - endfacet - facet normal 0.956422 -0.291987 0 - outer loop - vertex 1.37762 0.312402 0.489362 - vertex 1.38112 0.32387 -0.510638 - vertex 1.38112 0.32387 0.489362 - endloop - endfacet - facet normal 0.940786 -0.339001 0 - outer loop - vertex 1.38112 0.32387 0.489362 - vertex 1.38112 0.32387 -0.510638 - vertex 1.38512 0.33497 -0.510638 - endloop - endfacet - facet normal 0.940786 -0.339001 0 - outer loop - vertex 1.38112 0.32387 0.489362 - vertex 1.38512 0.33497 -0.510638 - vertex 1.38512 0.33497 0.489362 - endloop - endfacet - facet normal 0.92245 -0.386116 0 - outer loop - vertex 1.38512 0.33497 0.489362 - vertex 1.38512 0.33497 -0.510638 - vertex 1.38961 0.34569 -0.510638 - endloop - endfacet - facet normal 0.92245 -0.386116 0 - outer loop - vertex 1.38512 0.33497 0.489362 - vertex 1.38961 0.34569 -0.510638 - vertex 1.38961 0.34569 0.489362 - endloop - endfacet - facet normal 0.901329 -0.433134 0 - outer loop - vertex 1.38961 0.34569 0.489362 - vertex 1.38961 0.34569 -0.510638 - vertex 1.39457 0.356022 -0.510638 - endloop - endfacet - facet normal 0.901329 -0.433134 0 - outer loop - vertex 1.38961 0.34569 0.489362 - vertex 1.39457 0.356022 -0.510638 - vertex 1.39457 0.356022 0.489362 - endloop - endfacet - facet normal 0.877363 -0.479827 0 - outer loop - vertex 1.39457 0.356022 0.489362 - vertex 1.39457 0.356022 -0.510638 - vertex 1.4 0.365954 -0.510638 - endloop - endfacet - facet normal 0.877363 -0.479827 0 - outer loop - vertex 1.39457 0.356022 0.489362 - vertex 1.4 0.365954 -0.510638 - vertex 1.4 0.365954 0.489362 - endloop - endfacet - facet normal 0.85052 -0.525943 0 - outer loop - vertex 1.4 0.365954 0.489362 - vertex 1.4 0.365954 -0.510638 - vertex 1.40589 0.375474 -0.510638 - endloop - endfacet - facet normal 0.85052 -0.525943 0 - outer loop - vertex 1.4 0.365954 0.489362 - vertex 1.40589 0.375474 -0.510638 - vertex 1.40589 0.375474 0.489362 - endloop - endfacet - facet normal 0.820789 -0.571232 0 - outer loop - vertex 1.40589 0.375474 0.489362 - vertex 1.40589 0.375474 -0.510638 - vertex 1.41222 0.384574 -0.510638 - endloop - endfacet - facet normal 0.820789 -0.571232 0 - outer loop - vertex 1.40589 0.375474 0.489362 - vertex 1.41222 0.384574 -0.510638 - vertex 1.41222 0.384574 0.489362 - endloop - endfacet - facet normal 0.788202 -0.615417 0 - outer loop - vertex 1.41222 0.384574 0.489362 - vertex 1.41222 0.384574 -0.510638 - vertex 1.41899 0.393241 -0.510638 - endloop - endfacet - facet normal 0.788202 -0.615417 0 - outer loop - vertex 1.41222 0.384574 0.489362 - vertex 1.41899 0.393241 -0.510638 - vertex 1.41899 0.393241 0.489362 - endloop - endfacet - facet normal 0.752814 -0.658234 0 - outer loop - vertex 1.41899 0.393241 0.489362 - vertex 1.41899 0.393241 -0.510638 - vertex 1.42618 0.401466 -0.510638 - endloop - endfacet - facet normal 0.752814 -0.658234 0 - outer loop - vertex 1.41899 0.393241 0.489362 - vertex 1.42618 0.401466 -0.510638 - vertex 1.42618 0.401466 0.489362 - endloop - endfacet - facet normal 0.714731 -0.699399 0 - outer loop - vertex 1.42618 0.401466 0.489362 - vertex 1.42618 0.401466 -0.510638 - vertex 1.43379 0.409238 -0.510638 - endloop - endfacet - facet normal 0.714731 -0.699399 0 - outer loop - vertex 1.42618 0.401466 0.489362 - vertex 1.43379 0.409238 -0.510638 - vertex 1.43379 0.409238 0.489362 - endloop - endfacet - facet normal 0.674085 -0.738654 0 - outer loop - vertex 1.43379 0.409238 0.489362 - vertex 1.43379 0.409238 -0.510638 - vertex 1.44179 0.416545 -0.510638 - endloop - endfacet - facet normal 0.674085 -0.738654 0 - outer loop - vertex 1.43379 0.409238 0.489362 - vertex 1.44179 0.416545 -0.510638 - vertex 1.44179 0.416545 0.489362 - endloop - endfacet - facet normal 0.63105 -0.775742 0 - outer loop - vertex 1.44179 0.416545 0.489362 - vertex 1.44179 0.416545 -0.510638 - vertex 1.45019 0.423378 -0.510638 - endloop - endfacet - facet normal 0.63105 -0.775742 0 - outer loop - vertex 1.44179 0.416545 0.489362 - vertex 1.45019 0.423378 -0.510638 - vertex 1.45019 0.423378 0.489362 - endloop - endfacet - facet normal 0.585845 -0.810423 0 - outer loop - vertex 1.45019 0.423378 0.489362 - vertex 1.45019 0.423378 -0.510638 - vertex 1.45897 0.429726 -0.510638 - endloop - endfacet - facet normal 0.585845 -0.810423 0 - outer loop - vertex 1.45019 0.423378 0.489362 - vertex 1.45897 0.429726 -0.510638 - vertex 1.45897 0.429726 0.489362 - endloop - endfacet - facet normal 0.538698 -0.842499 0 - outer loop - vertex 1.45897 0.429726 0.489362 - vertex 1.45897 0.429726 -0.510638 - vertex 1.46813 0.435578 -0.510638 - endloop - endfacet - facet normal 0.538698 -0.842499 0 - outer loop - vertex 1.45897 0.429726 0.489362 - vertex 1.46813 0.435578 -0.510638 - vertex 1.46813 0.435578 0.489362 - endloop - endfacet - facet normal 0.489887 -0.871786 0 - outer loop - vertex 1.46813 0.435578 0.489362 - vertex 1.46813 0.435578 -0.510638 - vertex 1.47764 0.440922 -0.510638 - endloop - endfacet - facet normal 0.489887 -0.871786 0 - outer loop - vertex 1.46813 0.435578 0.489362 - vertex 1.47764 0.440922 -0.510638 - vertex 1.47764 0.440922 0.489362 - endloop - endfacet - facet normal 0.439702 -0.898144 0 - outer loop - vertex 1.47764 0.440922 0.489362 - vertex 1.47764 0.440922 -0.510638 - vertex 1.4875 0.44575 -0.510638 - endloop - endfacet - facet normal 0.439702 -0.898144 0 - outer loop - vertex 1.47764 0.440922 0.489362 - vertex 1.4875 0.44575 -0.510638 - vertex 1.4875 0.44575 0.489362 - endloop - endfacet - facet normal 0.388441 -0.921474 0 - outer loop - vertex 1.4875 0.44575 0.489362 - vertex 1.4875 0.44575 -0.510638 - vertex 1.4977 0.45005 -0.510638 - endloop - endfacet - facet normal 0.388441 -0.921474 0 - outer loop - vertex 1.4875 0.44575 0.489362 - vertex 1.4977 0.45005 -0.510638 - vertex 1.4977 0.45005 0.489362 - endloop - endfacet - facet normal 0.336419 -0.941712 0 - outer loop - vertex 1.4977 0.45005 0.489362 - vertex 1.4977 0.45005 -0.510638 - vertex 1.50823 0.45381 -0.510638 - endloop - endfacet - facet normal 0.336419 -0.941712 0 - outer loop - vertex 1.4977 0.45005 0.489362 - vertex 1.50823 0.45381 -0.510638 - vertex 1.50823 0.45381 0.489362 - endloop - endfacet - facet normal 0.283945 -0.95884 0 - outer loop - vertex 1.50823 0.45381 0.489362 - vertex 1.50823 0.45381 -0.510638 - vertex 1.51907 0.457022 -0.510638 - endloop - endfacet - facet normal 0.283945 -0.95884 0 - outer loop - vertex 1.50823 0.45381 0.489362 - vertex 1.51907 0.457022 -0.510638 - vertex 1.51907 0.457022 0.489362 - endloop - endfacet - facet normal 0.231324 -0.972877 0 - outer loop - vertex 1.51907 0.457022 0.489362 - vertex 1.51907 0.457022 -0.510638 - vertex 1.53022 0.459674 -0.510638 - endloop - endfacet - facet normal 0.231324 -0.972877 0 - outer loop - vertex 1.51907 0.457022 0.489362 - vertex 1.53022 0.459674 -0.510638 - vertex 1.53022 0.459674 0.489362 - endloop - endfacet - facet normal 0.178845 -0.983877 0 - outer loop - vertex 1.53022 0.459674 0.489362 - vertex 1.53022 0.459674 -0.510638 - vertex 1.54167 0.461754 -0.510638 - endloop - endfacet - facet normal 0.178845 -0.983877 0 - outer loop - vertex 1.53022 0.459674 0.489362 - vertex 1.54167 0.461754 -0.510638 - vertex 1.54167 0.461754 0.489362 - endloop - endfacet - facet normal 0.126777 -0.991931 0 - outer loop - vertex 1.54167 0.461754 0.489362 - vertex 1.54167 0.461754 -0.510638 - vertex 1.5534 0.463254 -0.510638 - endloop - endfacet - facet normal 0.126777 -0.991931 0 - outer loop - vertex 1.54167 0.461754 0.489362 - vertex 1.5534 0.463254 -0.510638 - vertex 1.5534 0.463254 0.489362 - endloop - endfacet - facet normal 0.075368 -0.997156 0 - outer loop - vertex 1.5534 0.463254 0.489362 - vertex 1.5534 0.463254 -0.510638 - vertex 1.56541 0.464162 -0.510638 - endloop - endfacet - facet normal 0.075368 -0.997156 0 - outer loop - vertex 1.5534 0.463254 0.489362 - vertex 1.56541 0.464162 -0.510638 - vertex 1.56541 0.464162 0.489362 - endloop - endfacet - facet normal 0.0248367 -0.999692 0 - outer loop - vertex 1.56541 0.464162 0.489362 - vertex 1.56541 0.464162 -0.510638 - vertex 1.57768 0.464466 -0.510638 - endloop - endfacet - facet normal 0.0248367 -0.999692 0 - outer loop - vertex 1.56541 0.464162 0.489362 - vertex 1.57768 0.464466 -0.510638 - vertex 1.57768 0.464466 0.489362 - endloop - endfacet - facet normal -0.022963 -0.999736 -0 - outer loop - vertex 1.57768 0.464466 0.489362 - vertex 1.57768 0.464466 -0.510638 - vertex 1.58944 0.464196 -0.510638 - endloop - endfacet - facet normal -0.022963 -0.999736 0 - outer loop - vertex 1.57768 0.464466 0.489362 - vertex 1.58944 0.464196 -0.510638 - vertex 1.58944 0.464196 0.489362 - endloop - endfacet - facet normal -0.0705857 -0.997506 -0 - outer loop - vertex 1.58944 0.464196 0.489362 - vertex 1.58944 0.464196 -0.510638 - vertex 1.6009 0.463385 -0.510638 - endloop - endfacet - facet normal -0.0705857 -0.997506 0 - outer loop - vertex 1.58944 0.464196 0.489362 - vertex 1.6009 0.463385 -0.510638 - vertex 1.6009 0.463385 0.489362 - endloop - endfacet - facet normal -0.120338 -0.992733 -0 - outer loop - vertex 1.6009 0.463385 0.489362 - vertex 1.6009 0.463385 -0.510638 - vertex 1.61206 0.462033 -0.510638 - endloop - endfacet - facet normal -0.120338 -0.992733 0 - outer loop - vertex 1.6009 0.463385 0.489362 - vertex 1.61206 0.462033 -0.510638 - vertex 1.61206 0.462033 0.489362 - endloop - endfacet - facet normal -0.172072 -0.985084 -0 - outer loop - vertex 1.61206 0.462033 0.489362 - vertex 1.61206 0.462033 -0.510638 - vertex 1.62291 0.460137 -0.510638 - endloop - endfacet - facet normal -0.172072 -0.985084 0 - outer loop - vertex 1.61206 0.462033 0.489362 - vertex 1.62291 0.460137 -0.510638 - vertex 1.62291 0.460137 0.489362 - endloop - endfacet - facet normal -0.225543 -0.974233 -0 - outer loop - vertex 1.62291 0.460137 0.489362 - vertex 1.62291 0.460137 -0.510638 - vertex 1.63345 0.457698 -0.510638 - endloop - endfacet - facet normal -0.225543 -0.974233 0 - outer loop - vertex 1.62291 0.460137 0.489362 - vertex 1.63345 0.457698 -0.510638 - vertex 1.63345 0.457698 0.489362 - endloop - endfacet - facet normal -0.28043 -0.959875 -0 - outer loop - vertex 1.63345 0.457698 0.489362 - vertex 1.63345 0.457698 -0.510638 - vertex 1.64366 0.454715 -0.510638 - endloop - endfacet - facet normal -0.28043 -0.959875 0 - outer loop - vertex 1.63345 0.457698 0.489362 - vertex 1.64366 0.454715 -0.510638 - vertex 1.64366 0.454715 0.489362 - endloop - endfacet - facet normal -0.336313 -0.94175 -0 - outer loop - vertex 1.64366 0.454715 0.489362 - vertex 1.64366 0.454715 -0.510638 - vertex 1.65354 0.451186 -0.510638 - endloop - endfacet - facet normal -0.336313 -0.94175 0 - outer loop - vertex 1.64366 0.454715 0.489362 - vertex 1.65354 0.451186 -0.510638 - vertex 1.65354 0.451186 0.489362 - endloop - endfacet - facet normal -0.392699 -0.919667 -0 - outer loop - vertex 1.65354 0.451186 0.489362 - vertex 1.65354 0.451186 -0.510638 - vertex 1.66308 0.447111 -0.510638 - endloop - endfacet - facet normal -0.392699 -0.919667 0 - outer loop - vertex 1.65354 0.451186 0.489362 - vertex 1.66308 0.447111 -0.510638 - vertex 1.66308 0.447111 0.489362 - endloop - endfacet - facet normal -0.44901 -0.893527 -0 - outer loop - vertex 1.66308 0.447111 0.489362 - vertex 1.66308 0.447111 -0.510638 - vertex 1.67228 0.442488 -0.510638 - endloop - endfacet - facet normal -0.44901 -0.893527 0 - outer loop - vertex 1.66308 0.447111 0.489362 - vertex 1.67228 0.442488 -0.510638 - vertex 1.67228 0.442488 0.489362 - endloop - endfacet - facet normal -0.504622 -0.86334 -0 - outer loop - vertex 1.67228 0.442488 0.489362 - vertex 1.67228 0.442488 -0.510638 - vertex 1.68113 0.437318 -0.510638 - endloop - endfacet - facet normal -0.504622 -0.86334 0 - outer loop - vertex 1.67228 0.442488 0.489362 - vertex 1.68113 0.437318 -0.510638 - vertex 1.68113 0.437318 0.489362 - endloop - endfacet - facet normal -0.558893 -0.82924 -0 - outer loop - vertex 1.68113 0.437318 0.489362 - vertex 1.68113 0.437318 -0.510638 - vertex 1.68961 0.431599 -0.510638 - endloop - endfacet - facet normal -0.558893 -0.82924 0 - outer loop - vertex 1.68113 0.437318 0.489362 - vertex 1.68961 0.431599 -0.510638 - vertex 1.68961 0.431599 0.489362 - endloop - endfacet - facet normal -0.611186 -0.791487 -0 - outer loop - vertex 1.68961 0.431599 0.489362 - vertex 1.68961 0.431599 -0.510638 - vertex 1.69773 0.42533 -0.510638 - endloop - endfacet - facet normal -0.611186 -0.791487 0 - outer loop - vertex 1.68961 0.431599 0.489362 - vertex 1.69773 0.42533 -0.510638 - vertex 1.69773 0.42533 0.489362 - endloop - endfacet - facet normal -0.660913 -0.750462 -0 - outer loop - vertex 1.69773 0.42533 0.489362 - vertex 1.69773 0.42533 -0.510638 - vertex 1.70547 0.418511 -0.510638 - endloop - endfacet - facet normal -0.660913 -0.750462 0 - outer loop - vertex 1.69773 0.42533 0.489362 - vertex 1.70547 0.418511 -0.510638 - vertex 1.70547 0.418511 0.489362 - endloop - endfacet - facet normal -0.707569 -0.706645 -0 - outer loop - vertex 1.70547 0.418511 0.489362 - vertex 1.70547 0.418511 -0.510638 - vertex 1.71283 0.41114 -0.510638 - endloop - endfacet - facet normal -0.707569 -0.706645 0 - outer loop - vertex 1.70547 0.418511 0.489362 - vertex 1.71283 0.41114 -0.510638 - vertex 1.71283 0.41114 0.489362 - endloop - endfacet - facet normal -0.750741 -0.660596 -0 - outer loop - vertex 1.71283 0.41114 0.489362 - vertex 1.71283 0.41114 -0.510638 - vertex 1.71981 0.403216 -0.510638 - endloop - endfacet - facet normal -0.750741 -0.660596 0 - outer loop - vertex 1.71283 0.41114 0.489362 - vertex 1.71981 0.403216 -0.510638 - vertex 1.71981 0.403216 0.489362 - endloop - endfacet - facet normal -0.790147 -0.612917 -0 - outer loop - vertex 1.71981 0.403216 0.489362 - vertex 1.71981 0.403216 -0.510638 - vertex 1.72638 0.39474 -0.510638 - endloop - endfacet - facet normal -0.790147 -0.612917 0 - outer loop - vertex 1.71981 0.403216 0.489362 - vertex 1.72638 0.39474 -0.510638 - vertex 1.72638 0.39474 0.489362 - endloop - endfacet - facet normal -0.825634 -0.564206 -0 - outer loop - vertex 1.72638 0.39474 0.489362 - vertex 1.72638 0.39474 -0.510638 - vertex 1.73255 0.385709 -0.510638 - endloop - endfacet - facet normal -0.825634 -0.564206 0 - outer loop - vertex 1.72638 0.39474 0.489362 - vertex 1.73255 0.385709 -0.510638 - vertex 1.73255 0.385709 0.489362 - endloop - endfacet - facet normal -0.857162 -0.515047 -0 - outer loop - vertex 1.73255 0.385709 0.489362 - vertex 1.73255 0.385709 -0.510638 - vertex 1.73831 0.376122 -0.510638 - endloop - endfacet - facet normal -0.857162 -0.515047 0 - outer loop - vertex 1.73255 0.385709 0.489362 - vertex 1.73831 0.376122 -0.510638 - vertex 1.73831 0.376122 0.489362 - endloop - endfacet - facet normal -0.884795 -0.465981 -0 - outer loop - vertex 1.73831 0.376122 0.489362 - vertex 1.73831 0.376122 -0.510638 - vertex 1.74366 0.36598 -0.510638 - endloop - endfacet - facet normal -0.884795 -0.465981 0 - outer loop - vertex 1.73831 0.376122 0.489362 - vertex 1.74366 0.36598 -0.510638 - vertex 1.74366 0.36598 0.489362 - endloop - endfacet - facet normal -0.908686 -0.417479 -0 - outer loop - vertex 1.74366 0.36598 0.489362 - vertex 1.74366 0.36598 -0.510638 - vertex 1.74857 0.355281 -0.510638 - endloop - endfacet - facet normal -0.908686 -0.417479 0 - outer loop - vertex 1.74366 0.36598 0.489362 - vertex 1.74857 0.355281 -0.510638 - vertex 1.74857 0.355281 0.489362 - endloop - endfacet - facet normal -0.929061 -0.369926 -0 - outer loop - vertex 1.74857 0.355281 0.489362 - vertex 1.74857 0.355281 -0.510638 - vertex 1.75305 0.344024 -0.510638 - endloop - endfacet - facet normal -0.929061 -0.369926 0 - outer loop - vertex 1.74857 0.355281 0.489362 - vertex 1.75305 0.344024 -0.510638 - vertex 1.75305 0.344024 0.489362 - endloop - endfacet - facet normal -0.946181 -0.323637 -0 - outer loop - vertex 1.75305 0.344024 0.489362 - vertex 1.75305 0.344024 -0.510638 - vertex 1.75709 0.332209 -0.510638 - endloop - endfacet - facet normal -0.946181 -0.323637 0 - outer loop - vertex 1.75305 0.344024 0.489362 - vertex 1.75709 0.332209 -0.510638 - vertex 1.75709 0.332209 0.489362 - endloop - endfacet - facet normal -0.960332 -0.27886 -0 - outer loop - vertex 1.75709 0.332209 0.489362 - vertex 1.75709 0.332209 -0.510638 - vertex 1.76069 0.319834 -0.510638 - endloop - endfacet - facet normal -0.960332 -0.27886 0 - outer loop - vertex 1.75709 0.332209 0.489362 - vertex 1.76069 0.319834 -0.510638 - vertex 1.76069 0.319834 0.489362 - endloop - endfacet - facet normal -0.971812 -0.235755 -0 - outer loop - vertex 1.76069 0.319834 0.489362 - vertex 1.76069 0.319834 -0.510638 - vertex 1.76383 0.306898 -0.510638 - endloop - endfacet - facet normal -0.971812 -0.235755 0 - outer loop - vertex 1.76069 0.319834 0.489362 - vertex 1.76383 0.306898 -0.510638 - vertex 1.76383 0.306898 0.489362 - endloop - endfacet - facet normal -0.980914 -0.194442 -0 - outer loop - vertex 1.76383 0.306898 0.489362 - vertex 1.76383 0.306898 -0.510638 - vertex 1.7665 0.293402 -0.510638 - endloop - endfacet - facet normal -0.980914 -0.194442 0 - outer loop - vertex 1.76383 0.306898 0.489362 - vertex 1.7665 0.293402 -0.510638 - vertex 1.7665 0.293402 0.489362 - endloop - endfacet - facet normal -0.987918 -0.154978 -0 - outer loop - vertex 1.7665 0.293402 0.489362 - vertex 1.7665 0.293402 -0.510638 - vertex 1.76871 0.279343 -0.510638 - endloop - endfacet - facet normal -0.987918 -0.154978 0 - outer loop - vertex 1.7665 0.293402 0.489362 - vertex 1.76871 0.279343 -0.510638 - vertex 1.76871 0.279343 0.489362 - endloop - endfacet - facet normal -0.993089 -0.117364 -0 - outer loop - vertex 1.76871 0.279343 0.489362 - vertex 1.76871 0.279343 -0.510638 - vertex 1.77043 0.26472 -0.510638 - endloop - endfacet - facet normal -0.993089 -0.117364 0 - outer loop - vertex 1.76871 0.279343 0.489362 - vertex 1.77043 0.26472 -0.510638 - vertex 1.77043 0.26472 0.489362 - endloop - endfacet - facet normal -0.996664 -0.0816088 -0 - outer loop - vertex 1.77043 0.26472 0.489362 - vertex 1.77043 0.26472 -0.510638 - vertex 1.77168 0.249534 -0.510638 - endloop - endfacet - facet normal -0.996664 -0.0816088 0 - outer loop - vertex 1.77043 0.26472 0.489362 - vertex 1.77168 0.249534 -0.510638 - vertex 1.77168 0.249534 0.489362 - endloop - endfacet - facet normal -0.998864 -0.0476566 -0 - outer loop - vertex 1.77168 0.249534 0.489362 - vertex 1.77168 0.249534 -0.510638 - vertex 1.77243 0.233783 -0.510638 - endloop - endfacet - facet normal -0.998864 -0.0476566 0 - outer loop - vertex 1.77168 0.249534 0.489362 - vertex 1.77243 0.233783 -0.510638 - vertex 1.77243 0.233783 0.489362 - endloop - endfacet - facet normal -0.999881 -0.0154502 -0 - outer loop - vertex 1.77243 0.233783 0.489362 - vertex 1.77243 0.233783 -0.510638 - vertex 1.77268 0.217466 -0.510638 - endloop - endfacet - facet normal -0.999881 -0.0154502 0 - outer loop - vertex 1.77243 0.233783 0.489362 - vertex 1.77268 0.217466 -0.510638 - vertex 1.77268 0.217466 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 1.77268 0.217466 0.489362 - vertex 1.77268 0.217466 -0.510638 - vertex 1.45668 0.217466 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 1.77268 0.217466 0.489362 - vertex 1.45668 0.217466 -0.510638 - vertex 1.45668 0.217466 0.489362 - endloop - endfacet - facet normal -0.985203 -0.171394 -0 - outer loop - vertex 1.45668 0.217466 0.489362 - vertex 1.45668 0.217466 -0.510638 - vertex 1.45821 0.20871 -0.510638 - endloop - endfacet - facet normal -0.985203 -0.171394 0 - outer loop - vertex 1.45668 0.217466 0.489362 - vertex 1.45821 0.20871 -0.510638 - vertex 1.45821 0.20871 0.489362 - endloop - endfacet - facet normal -0.978862 -0.204522 -0 - outer loop - vertex 1.45821 0.20871 0.489362 - vertex 1.45821 0.20871 -0.510638 - vertex 1.45998 0.200241 -0.510638 - endloop - endfacet - facet normal -0.978862 -0.204522 0 - outer loop - vertex 1.45821 0.20871 0.489362 - vertex 1.45998 0.200241 -0.510638 - vertex 1.45998 0.200241 0.489362 - endloop - endfacet - facet normal -0.970976 -0.239175 -0 - outer loop - vertex 1.45998 0.200241 0.489362 - vertex 1.45998 0.200241 -0.510638 - vertex 1.46199 0.192059 -0.510638 - endloop - endfacet - facet normal -0.970976 -0.239175 0 - outer loop - vertex 1.45998 0.200241 0.489362 - vertex 1.46199 0.192059 -0.510638 - vertex 1.46199 0.192059 0.489362 - endloop - endfacet - facet normal -0.961345 -0.275346 -0 - outer loop - vertex 1.46199 0.192059 0.489362 - vertex 1.46199 0.192059 -0.510638 - vertex 1.46425 0.184167 -0.510638 - endloop - endfacet - facet normal -0.961345 -0.275346 0 - outer loop - vertex 1.46199 0.192059 0.489362 - vertex 1.46425 0.184167 -0.510638 - vertex 1.46425 0.184167 0.489362 - endloop - endfacet - facet normal -0.949759 -0.312981 -0 - outer loop - vertex 1.46425 0.184167 0.489362 - vertex 1.46425 0.184167 -0.510638 - vertex 1.46676 0.176564 -0.510638 - endloop - endfacet - facet normal -0.949759 -0.312981 0 - outer loop - vertex 1.46425 0.184167 0.489362 - vertex 1.46676 0.176564 -0.510638 - vertex 1.46676 0.176564 0.489362 - endloop - endfacet - facet normal -0.936015 -0.351961 -0 - outer loop - vertex 1.46676 0.176564 0.489362 - vertex 1.46676 0.176564 -0.510638 - vertex 1.46951 0.16925 -0.510638 - endloop - endfacet - facet normal -0.936015 -0.351961 0 - outer loop - vertex 1.46676 0.176564 0.489362 - vertex 1.46951 0.16925 -0.510638 - vertex 1.46951 0.16925 0.489362 - endloop - endfacet - facet normal -0.919889 -0.392178 -0 - outer loop - vertex 1.46951 0.16925 0.489362 - vertex 1.46951 0.16925 -0.510638 - vertex 1.4725 0.162228 -0.510638 - endloop - endfacet - facet normal -0.919889 -0.392178 0 - outer loop - vertex 1.46951 0.16925 0.489362 - vertex 1.4725 0.162228 -0.510638 - vertex 1.4725 0.162228 0.489362 - endloop - endfacet - facet normal -0.901183 -0.433439 -0 - outer loop - vertex 1.4725 0.162228 0.489362 - vertex 1.4725 0.162228 -0.510638 - vertex 1.47574 0.155497 -0.510638 - endloop - endfacet - facet normal -0.901183 -0.433439 0 - outer loop - vertex 1.4725 0.162228 0.489362 - vertex 1.47574 0.155497 -0.510638 - vertex 1.47574 0.155497 0.489362 - endloop - endfacet - facet normal -0.879713 -0.475506 -0 - outer loop - vertex 1.47574 0.155497 0.489362 - vertex 1.47574 0.155497 -0.510638 - vertex 1.47922 0.149057 -0.510638 - endloop - endfacet - facet normal -0.879713 -0.475506 0 - outer loop - vertex 1.47574 0.155497 0.489362 - vertex 1.47922 0.149057 -0.510638 - vertex 1.47922 0.149057 0.489362 - endloop - endfacet - facet normal -0.855316 -0.518106 -0 - outer loop - vertex 1.47922 0.149057 0.489362 - vertex 1.47922 0.149057 -0.510638 - vertex 1.48294 0.142911 -0.510638 - endloop - endfacet - facet normal -0.855316 -0.518106 0 - outer loop - vertex 1.47922 0.149057 0.489362 - vertex 1.48294 0.142911 -0.510638 - vertex 1.48294 0.142911 0.489362 - endloop - endfacet - facet normal -0.827892 -0.560888 -0 - outer loop - vertex 1.48294 0.142911 0.489362 - vertex 1.48294 0.142911 -0.510638 - vertex 1.48691 0.137058 -0.510638 - endloop - endfacet - facet normal -0.827892 -0.560888 0 - outer loop - vertex 1.48294 0.142911 0.489362 - vertex 1.48691 0.137058 -0.510638 - vertex 1.48691 0.137058 0.489362 - endloop - endfacet - facet normal -0.797387 -0.603468 -0 - outer loop - vertex 1.48691 0.137058 0.489362 - vertex 1.48691 0.137058 -0.510638 - vertex 1.49111 0.131498 -0.510638 - endloop - endfacet - facet normal -0.797387 -0.603468 0 - outer loop - vertex 1.48691 0.137058 0.489362 - vertex 1.49111 0.131498 -0.510638 - vertex 1.49111 0.131498 0.489362 - endloop - endfacet - facet normal -0.763822 -0.645427 -0 - outer loop - vertex 1.49111 0.131498 0.489362 - vertex 1.49111 0.131498 -0.510638 - vertex 1.49556 0.126234 -0.510638 - endloop - endfacet - facet normal -0.763822 -0.645427 0 - outer loop - vertex 1.49111 0.131498 0.489362 - vertex 1.49556 0.126234 -0.510638 - vertex 1.49556 0.126234 0.489362 - endloop - endfacet - facet normal -0.727283 -0.686338 -0 - outer loop - vertex 1.49556 0.126234 0.489362 - vertex 1.49556 0.126234 -0.510638 - vertex 1.50025 0.121265 -0.510638 - endloop - endfacet - facet normal -0.727283 -0.686338 0 - outer loop - vertex 1.49556 0.126234 0.489362 - vertex 1.50025 0.121265 -0.510638 - vertex 1.50025 0.121265 0.489362 - endloop - endfacet - facet normal -0.687961 -0.725748 -0 - outer loop - vertex 1.50025 0.121265 0.489362 - vertex 1.50025 0.121265 -0.510638 - vertex 1.50518 0.116591 -0.510638 - endloop - endfacet - facet normal -0.687961 -0.725748 0 - outer loop - vertex 1.50025 0.121265 0.489362 - vertex 1.50518 0.116591 -0.510638 - vertex 1.50518 0.116591 0.489362 - endloop - endfacet - facet normal -0.646118 -0.763237 -0 - outer loop - vertex 1.50518 0.116591 0.489362 - vertex 1.50518 0.116591 -0.510638 - vertex 1.51035 0.112215 -0.510638 - endloop - endfacet - facet normal -0.646118 -0.763237 0 - outer loop - vertex 1.50518 0.116591 0.489362 - vertex 1.51035 0.112215 -0.510638 - vertex 1.51035 0.112215 0.489362 - endloop - endfacet - facet normal -0.602087 -0.798431 -0 - outer loop - vertex 1.51035 0.112215 0.489362 - vertex 1.51035 0.112215 -0.510638 - vertex 1.51576 0.108136 -0.510638 - endloop - endfacet - facet normal -0.602087 -0.798431 0 - outer loop - vertex 1.51035 0.112215 0.489362 - vertex 1.51576 0.108136 -0.510638 - vertex 1.51576 0.108136 0.489362 - endloop - endfacet - facet normal -0.556276 -0.830998 -0 - outer loop - vertex 1.51576 0.108136 0.489362 - vertex 1.51576 0.108136 -0.510638 - vertex 1.52141 0.104354 -0.510638 - endloop - endfacet - facet normal -0.556276 -0.830998 0 - outer loop - vertex 1.51576 0.108136 0.489362 - vertex 1.52141 0.104354 -0.510638 - vertex 1.52141 0.104354 0.489362 - endloop - endfacet - facet normal -0.509132 -0.860688 -0 - outer loop - vertex 1.52141 0.104354 0.489362 - vertex 1.52141 0.104354 -0.510638 - vertex 1.5273 0.100872 -0.510638 - endloop - endfacet - facet normal -0.509132 -0.860688 0 - outer loop - vertex 1.52141 0.104354 0.489362 - vertex 1.5273 0.100872 -0.510638 - vertex 1.5273 0.100872 0.489362 - endloop - endfacet - facet normal -0.461123 -0.887336 -0 - outer loop - vertex 1.5273 0.100872 0.489362 - vertex 1.5273 0.100872 -0.510638 - vertex 1.53342 0.0976886 -0.510638 - endloop - endfacet - facet normal -0.461123 -0.887336 0 - outer loop - vertex 1.5273 0.100872 0.489362 - vertex 1.53342 0.0976886 -0.510638 - vertex 1.53342 0.0976886 0.489362 - endloop - endfacet - facet normal -0.412714 -0.910861 -0 - outer loop - vertex 1.53342 0.0976886 0.489362 - vertex 1.53342 0.0976886 -0.510638 - vertex 1.53979 0.0948054 -0.510638 - endloop - endfacet - facet normal -0.412714 -0.910861 0 - outer loop - vertex 1.53342 0.0976886 0.489362 - vertex 1.53979 0.0948054 -0.510638 - vertex 1.53979 0.0948054 0.489362 - endloop - endfacet - facet normal -0.364363 -0.931257 -0 - outer loop - vertex 1.53979 0.0948054 0.489362 - vertex 1.53979 0.0948054 -0.510638 - vertex 1.54639 0.0922228 -0.510638 - endloop - endfacet - facet normal -0.364363 -0.931257 0 - outer loop - vertex 1.53979 0.0948054 0.489362 - vertex 1.54639 0.0922228 -0.510638 - vertex 1.54639 0.0922228 0.489362 - endloop - endfacet - facet normal -0.316485 -0.948598 -0 - outer loop - vertex 1.54639 0.0922228 0.489362 - vertex 1.54639 0.0922228 -0.510638 - vertex 1.55322 0.0899416 -0.510638 - endloop - endfacet - facet normal -0.316485 -0.948598 0 - outer loop - vertex 1.54639 0.0922228 0.489362 - vertex 1.55322 0.0899416 -0.510638 - vertex 1.55322 0.0899416 0.489362 - endloop - endfacet - facet normal -0.269445 -0.963016 -0 - outer loop - vertex 1.55322 0.0899416 0.489362 - vertex 1.55322 0.0899416 -0.510638 - vertex 1.5603 0.0879624 -0.510638 - endloop - endfacet - facet normal -0.269445 -0.963016 0 - outer loop - vertex 1.55322 0.0899416 0.489362 - vertex 1.5603 0.0879624 -0.510638 - vertex 1.5603 0.0879624 0.489362 - endloop - endfacet - facet normal -0.223549 -0.974693 -0 - outer loop - vertex 1.5603 0.0879624 0.489362 - vertex 1.5603 0.0879624 -0.510638 - vertex 1.56761 0.0862858 -0.510638 - endloop - endfacet - facet normal -0.223549 -0.974693 0 - outer loop - vertex 1.5603 0.0879624 0.489362 - vertex 1.56761 0.0862858 -0.510638 - vertex 1.56761 0.0862858 0.489362 - endloop - endfacet - facet normal -0.179052 -0.98384 -0 - outer loop - vertex 1.56761 0.0862858 0.489362 - vertex 1.56761 0.0862858 -0.510638 - vertex 1.57515 0.0849126 -0.510638 - endloop - endfacet - facet normal -0.179052 -0.98384 0 - outer loop - vertex 1.56761 0.0862858 0.489362 - vertex 1.57515 0.0849126 -0.510638 - vertex 1.57515 0.0849126 0.489362 - endloop - endfacet - facet normal -0.136143 -0.990689 -0 - outer loop - vertex 1.57515 0.0849126 0.489362 - vertex 1.57515 0.0849126 -0.510638 - vertex 1.58293 0.0838434 -0.510638 - endloop - endfacet - facet normal -0.136143 -0.990689 0 - outer loop - vertex 1.57515 0.0849126 0.489362 - vertex 1.58293 0.0838434 -0.510638 - vertex 1.58293 0.0838434 0.489362 - endloop - endfacet - facet normal -0.0949564 -0.995481 -0 - outer loop - vertex 1.58293 0.0838434 0.489362 - vertex 1.58293 0.0838434 -0.510638 - vertex 1.59095 0.0830788 -0.510638 - endloop - endfacet - facet normal -0.0949564 -0.995481 0 - outer loop - vertex 1.58293 0.0838434 0.489362 - vertex 1.59095 0.0830788 -0.510638 - vertex 1.59095 0.0830788 0.489362 - endloop - endfacet - facet normal -0.0555807 -0.998454 -0 - outer loop - vertex 1.59095 0.0830788 0.489362 - vertex 1.59095 0.0830788 -0.510638 - vertex 1.5992 0.0826196 -0.510638 - endloop - endfacet - facet normal -0.0555807 -0.998454 0 - outer loop - vertex 1.59095 0.0830788 0.489362 - vertex 1.5992 0.0826196 -0.510638 - vertex 1.5992 0.0826196 0.489362 - endloop - endfacet - facet normal -0.0180586 -0.999837 -0 - outer loop - vertex 1.5992 0.0826196 0.489362 - vertex 1.5992 0.0826196 -0.510638 - vertex 1.60768 0.0824664 -0.510638 - endloop - endfacet - facet normal -0.0180586 -0.999837 0 - outer loop - vertex 1.5992 0.0826196 0.489362 - vertex 1.60768 0.0824664 -0.510638 - vertex 1.60768 0.0824664 0.489362 - endloop - endfacet - facet normal 0.0123232 -0.999924 0 - outer loop - vertex 1.60768 0.0824664 0.489362 - vertex 1.60768 0.0824664 -0.510638 - vertex 1.61307 0.0825328 -0.510638 - endloop - endfacet - facet normal 0.0123232 -0.999924 0 - outer loop - vertex 1.60768 0.0824664 0.489362 - vertex 1.61307 0.0825328 -0.510638 - vertex 1.61307 0.0825328 0.489362 - endloop - endfacet - facet normal 0.0369219 -0.999318 0 - outer loop - vertex 1.61307 0.0825328 0.489362 - vertex 1.61307 0.0825328 -0.510638 - vertex 1.61844 0.0827313 -0.510638 - endloop - endfacet - facet normal 0.0369219 -0.999318 0 - outer loop - vertex 1.61307 0.0825328 0.489362 - vertex 1.61844 0.0827313 -0.510638 - vertex 1.61844 0.0827313 0.489362 - endloop - endfacet - facet normal 0.061368 -0.998115 0 - outer loop - vertex 1.61844 0.0827313 0.489362 - vertex 1.61844 0.0827313 -0.510638 - vertex 1.6238 0.0830604 -0.510638 - endloop - endfacet - facet normal 0.061368 -0.998115 0 - outer loop - vertex 1.61844 0.0827313 0.489362 - vertex 1.6238 0.0830604 -0.510638 - vertex 1.6238 0.0830604 0.489362 - endloop - endfacet - facet normal 0.0856083 -0.996329 0 - outer loop - vertex 1.6238 0.0830604 0.489362 - vertex 1.6238 0.0830604 -0.510638 - vertex 1.62913 0.0835188 -0.510638 - endloop - endfacet - facet normal 0.0856083 -0.996329 0 - outer loop - vertex 1.6238 0.0830604 0.489362 - vertex 1.62913 0.0835188 -0.510638 - vertex 1.62913 0.0835188 0.489362 - endloop - endfacet - facet normal 0.10959 -0.993977 0 - outer loop - vertex 1.62913 0.0835188 0.489362 - vertex 1.62913 0.0835188 -0.510638 - vertex 1.63445 0.0841053 -0.510638 - endloop - endfacet - facet normal 0.10959 -0.993977 0 - outer loop - vertex 1.62913 0.0835188 0.489362 - vertex 1.63445 0.0841053 -0.510638 - vertex 1.63445 0.0841053 0.489362 - endloop - endfacet - facet normal 0.133261 -0.991081 0 - outer loop - vertex 1.63445 0.0841053 0.489362 - vertex 1.63445 0.0841053 -0.510638 - vertex 1.63975 0.0848184 -0.510638 - endloop - endfacet - facet normal 0.133261 -0.991081 0 - outer loop - vertex 1.63445 0.0841053 0.489362 - vertex 1.63975 0.0848184 -0.510638 - vertex 1.63975 0.0848184 0.489362 - endloop - endfacet - facet normal 0.156575 -0.987666 0 - outer loop - vertex 1.63975 0.0848184 0.489362 - vertex 1.63975 0.0848184 -0.510638 - vertex 1.64504 0.0856568 -0.510638 - endloop - endfacet - facet normal 0.156575 -0.987666 0 - outer loop - vertex 1.63975 0.0848184 0.489362 - vertex 1.64504 0.0856568 -0.510638 - vertex 1.64504 0.0856568 0.489362 - endloop - endfacet - facet normal 0.17949 -0.98376 0 - outer loop - vertex 1.64504 0.0856568 0.489362 - vertex 1.64504 0.0856568 -0.510638 - vertex 1.65032 0.0866193 -0.510638 - endloop - endfacet - facet normal 0.17949 -0.98376 0 - outer loop - vertex 1.64504 0.0856568 0.489362 - vertex 1.65032 0.0866193 -0.510638 - vertex 1.65032 0.0866193 0.489362 - endloop - endfacet - facet normal 0.201962 -0.979393 0 - outer loop - vertex 1.65032 0.0866193 0.489362 - vertex 1.65032 0.0866193 -0.510638 - vertex 1.65558 0.0877044 -0.510638 - endloop - endfacet - facet normal 0.201962 -0.979393 0 - outer loop - vertex 1.65032 0.0866193 0.489362 - vertex 1.65558 0.0877044 -0.510638 - vertex 1.65558 0.0877044 0.489362 - endloop - endfacet - facet normal 0.223957 -0.974599 0 - outer loop - vertex 1.65558 0.0877044 0.489362 - vertex 1.65558 0.0877044 -0.510638 - vertex 1.66083 0.0889108 -0.510638 - endloop - endfacet - facet normal 0.223957 -0.974599 0 - outer loop - vertex 1.65558 0.0877044 0.489362 - vertex 1.66083 0.0889108 -0.510638 - vertex 1.66083 0.0889108 0.489362 - endloop - endfacet - facet normal 0.245441 -0.969412 0 - outer loop - vertex 1.66083 0.0889108 0.489362 - vertex 1.66083 0.0889108 -0.510638 - vertex 1.66607 0.0902373 -0.510638 - endloop - endfacet - facet normal 0.245441 -0.969412 0 - outer loop - vertex 1.66083 0.0889108 0.489362 - vertex 1.66607 0.0902373 -0.510638 - vertex 1.66607 0.0902373 0.489362 - endloop - endfacet - facet normal 0.266391 -0.963865 0 - outer loop - vertex 1.66607 0.0902373 0.489362 - vertex 1.66607 0.0902373 -0.510638 - vertex 1.6713 0.0916824 -0.510638 - endloop - endfacet - facet normal 0.266391 -0.963865 0 - outer loop - vertex 1.66607 0.0902373 0.489362 - vertex 1.6713 0.0916824 -0.510638 - vertex 1.6713 0.0916824 0.489362 - endloop - endfacet - facet normal 0.286777 -0.957997 0 - outer loop - vertex 1.6713 0.0916824 0.489362 - vertex 1.6713 0.0916824 -0.510638 - vertex 1.67652 0.0932448 -0.510638 - endloop - endfacet - facet normal 0.286777 -0.957997 0 - outer loop - vertex 1.6713 0.0916824 0.489362 - vertex 1.67652 0.0932448 -0.510638 - vertex 1.67652 0.0932448 0.489362 - endloop - endfacet - facet normal 0.306586 -0.951843 0 - outer loop - vertex 1.67652 0.0932448 0.489362 - vertex 1.67652 0.0932448 -0.510638 - vertex 1.68173 0.0949233 -0.510638 - endloop - endfacet - facet normal 0.306586 -0.951843 0 - outer loop - vertex 1.67652 0.0932448 0.489362 - vertex 1.68173 0.0949233 -0.510638 - vertex 1.68173 0.0949233 0.489362 - endloop - endfacet - facet normal 0.325796 -0.94544 0 - outer loop - vertex 1.68173 0.0949233 0.489362 - vertex 1.68173 0.0949233 -0.510638 - vertex 1.68693 0.0967164 -0.510638 - endloop - endfacet - facet normal 0.325796 -0.94544 0 - outer loop - vertex 1.68173 0.0949233 0.489362 - vertex 1.68693 0.0967164 -0.510638 - vertex 1.68693 0.0967164 0.489362 - endloop - endfacet - facet normal 0.344406 -0.938821 0 - outer loop - vertex 1.68693 0.0967164 0.489362 - vertex 1.68693 0.0967164 -0.510638 - vertex 1.69213 0.0986228 -0.510638 - endloop - endfacet - facet normal 0.344406 -0.938821 0 - outer loop - vertex 1.68693 0.0967164 0.489362 - vertex 1.69213 0.0986228 -0.510638 - vertex 1.69213 0.0986228 0.489362 - endloop - endfacet - facet normal 0.362398 -0.932024 0 - outer loop - vertex 1.69213 0.0986228 0.489362 - vertex 1.69213 0.0986228 -0.510638 - vertex 1.69732 0.100641 -0.510638 - endloop - endfacet - facet normal 0.362398 -0.932024 0 - outer loop - vertex 1.69213 0.0986228 0.489362 - vertex 1.69732 0.100641 -0.510638 - vertex 1.69732 0.100641 0.489362 - endloop - endfacet - facet normal 0.379777 -0.925078 0 - outer loop - vertex 1.69732 0.100641 0.489362 - vertex 1.69732 0.100641 -0.510638 - vertex 1.70251 0.10277 -0.510638 - endloop - endfacet - facet normal 0.379777 -0.925078 0 - outer loop - vertex 1.69732 0.100641 0.489362 - vertex 1.70251 0.10277 -0.510638 - vertex 1.70251 0.10277 0.489362 - endloop - endfacet - facet normal 0.39654 -0.918017 0 - outer loop - vertex 1.70251 0.10277 0.489362 - vertex 1.70251 0.10277 -0.510638 - vertex 1.70769 0.105009 -0.510638 - endloop - endfacet - facet normal 0.39654 -0.918017 0 - outer loop - vertex 1.70251 0.10277 0.489362 - vertex 1.70769 0.105009 -0.510638 - vertex 1.70769 0.105009 0.489362 - endloop - endfacet - facet normal 0.412686 -0.910874 0 - outer loop - vertex 1.70769 0.105009 0.489362 - vertex 1.70769 0.105009 -0.510638 - vertex 1.71287 0.107355 -0.510638 - endloop - endfacet - facet normal 0.412686 -0.910874 0 - outer loop - vertex 1.70769 0.105009 0.489362 - vertex 1.71287 0.107355 -0.510638 - vertex 1.71287 0.107355 0.489362 - endloop - endfacet - facet normal 0.428222 -0.903674 0 - outer loop - vertex 1.71287 0.107355 0.489362 - vertex 1.71287 0.107355 -0.510638 - vertex 1.71804 0.109808 -0.510638 - endloop - endfacet - facet normal 0.428222 -0.903674 0 - outer loop - vertex 1.71287 0.107355 0.489362 - vertex 1.71804 0.109808 -0.510638 - vertex 1.71804 0.109808 0.489362 - endloop - endfacet - facet normal 0.443151 -0.896447 0 - outer loop - vertex 1.71804 0.109808 0.489362 - vertex 1.71804 0.109808 -0.510638 - vertex 1.72322 0.112367 -0.510638 - endloop - endfacet - facet normal 0.443151 -0.896447 0 - outer loop - vertex 1.71804 0.109808 0.489362 - vertex 1.72322 0.112367 -0.510638 - vertex 1.72322 0.112367 0.489362 - endloop - endfacet - facet normal 0.457486 -0.889217 0 - outer loop - vertex 1.72322 0.112367 0.489362 - vertex 1.72322 0.112367 -0.510638 - vertex 1.72839 0.115029 -0.510638 - endloop - endfacet - facet normal 0.457486 -0.889217 0 - outer loop - vertex 1.72322 0.112367 0.489362 - vertex 1.72839 0.115029 -0.510638 - vertex 1.72839 0.115029 0.489362 - endloop - endfacet - facet normal 0.471233 -0.882009 0 - outer loop - vertex 1.72839 0.115029 0.489362 - vertex 1.72839 0.115029 -0.510638 - vertex 1.73357 0.117794 -0.510638 - endloop - endfacet - facet normal 0.471233 -0.882009 0 - outer loop - vertex 1.72839 0.115029 0.489362 - vertex 1.73357 0.117794 -0.510638 - vertex 1.73357 0.117794 0.489362 - endloop - endfacet - facet normal 0.48441 -0.874841 0 - outer loop - vertex 1.73357 0.117794 0.489362 - vertex 1.73357 0.117794 -0.510638 - vertex 1.73875 0.120661 -0.510638 - endloop - endfacet - facet normal 0.48441 -0.874841 0 - outer loop - vertex 1.73357 0.117794 0.489362 - vertex 1.73875 0.120661 -0.510638 - vertex 1.73875 0.120661 0.489362 - endloop - endfacet - facet normal 0.497022 -0.867738 0 - outer loop - vertex 1.73875 0.120661 0.489362 - vertex 1.73875 0.120661 -0.510638 - vertex 1.74393 0.123627 -0.510638 - endloop - endfacet - facet normal 0.497022 -0.867738 0 - outer loop - vertex 1.73875 0.120661 0.489362 - vertex 1.74393 0.123627 -0.510638 - vertex 1.74393 0.123627 0.489362 - endloop - endfacet - facet normal 0.509089 -0.860714 0 - outer loop - vertex 1.74393 0.123627 0.489362 - vertex 1.74393 0.123627 -0.510638 - vertex 1.74911 0.126692 -0.510638 - endloop - endfacet - facet normal 0.509089 -0.860714 0 - outer loop - vertex 1.74393 0.123627 0.489362 - vertex 1.74911 0.126692 -0.510638 - vertex 1.74911 0.126692 0.489362 - endloop - endfacet - facet normal 0.520623 -0.853787 0 - outer loop - vertex 1.74911 0.126692 0.489362 - vertex 1.74911 0.126692 -0.510638 - vertex 1.75429 0.129855 -0.510638 - endloop - endfacet - facet normal 0.520623 -0.853787 0 - outer loop - vertex 1.74911 0.126692 0.489362 - vertex 1.75429 0.129855 -0.510638 - vertex 1.75429 0.129855 0.489362 - endloop - endfacet - facet normal 0.531643 -0.846968 0 - outer loop - vertex 1.75429 0.129855 0.489362 - vertex 1.75429 0.129855 -0.510638 - vertex 1.75949 0.133113 -0.510638 - endloop - endfacet - facet normal 0.531643 -0.846968 0 - outer loop - vertex 1.75429 0.129855 0.489362 - vertex 1.75949 0.133113 -0.510638 - vertex 1.75949 0.133113 0.489362 - endloop - endfacet - facet normal 0.542166 -0.840272 0 - outer loop - vertex 1.75949 0.133113 0.489362 - vertex 1.75949 0.133113 -0.510638 - vertex 1.76468 0.136466 -0.510638 - endloop - endfacet - facet normal 0.542166 -0.840272 0 - outer loop - vertex 1.75949 0.133113 0.489362 - vertex 1.76468 0.136466 -0.510638 - vertex 1.76468 0.136466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 1.76468 0.136466 0.489362 - vertex 1.76468 0.136466 -0.510638 - vertex 1.76468 0.0504664 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 1.76468 0.136466 0.489362 - vertex 1.76468 0.0504664 -0.510638 - vertex 1.76468 0.0504664 0.489362 - endloop - endfacet - facet normal -0.548978 0.835837 0 - outer loop - vertex 1.76468 0.0504664 0.489362 - vertex 1.76468 0.0504664 -0.510638 - vertex 1.7593 0.0469297 -0.510638 - endloop - endfacet - facet normal -0.548978 0.835837 0 - outer loop - vertex 1.76468 0.0504664 0.489362 - vertex 1.7593 0.0469297 -0.510638 - vertex 1.7593 0.0469297 0.489362 - endloop - endfacet - facet normal 0.995002 0.0998513 0 - outer loop - vertex 1.68426 0.283182 0.489362 - vertex 1.68426 0.283182 -0.510638 - vertex 1.68361 0.289728 -0.510638 - endloop - endfacet - facet normal 0.995002 0.0998513 0 - outer loop - vertex 1.68426 0.283182 0.489362 - vertex 1.68361 0.289728 -0.510638 - vertex 1.68361 0.289728 0.489362 - endloop - endfacet - facet normal 0.990349 0.138598 0 - outer loop - vertex 1.68361 0.289728 0.489362 - vertex 1.68361 0.289728 -0.510638 - vertex 1.68271 0.296098 -0.510638 - endloop - endfacet - facet normal 0.990349 0.138598 0 - outer loop - vertex 1.68361 0.289728 0.489362 - vertex 1.68271 0.296098 -0.510638 - vertex 1.68271 0.296098 0.489362 - endloop - endfacet - facet normal 0.983933 0.178536 0 - outer loop - vertex 1.68271 0.296098 0.489362 - vertex 1.68271 0.296098 -0.510638 - vertex 1.68159 0.30229 -0.510638 - endloop - endfacet - facet normal 0.983933 0.178536 0 - outer loop - vertex 1.68271 0.296098 0.489362 - vertex 1.68159 0.30229 -0.510638 - vertex 1.68159 0.30229 0.489362 - endloop - endfacet - facet normal 0.975582 0.219637 0 - outer loop - vertex 1.68159 0.30229 0.489362 - vertex 1.68159 0.30229 -0.510638 - vertex 1.68024 0.3083 -0.510638 - endloop - endfacet - facet normal 0.975582 0.219637 0 - outer loop - vertex 1.68159 0.30229 0.489362 - vertex 1.68024 0.3083 -0.510638 - vertex 1.68024 0.3083 0.489362 - endloop - endfacet - facet normal 0.96512 0.26181 0 - outer loop - vertex 1.68024 0.3083 0.489362 - vertex 1.68024 0.3083 -0.510638 - vertex 1.67866 0.314122 -0.510638 - endloop - endfacet - facet normal 0.96512 0.26181 0 - outer loop - vertex 1.68024 0.3083 0.489362 - vertex 1.67866 0.314122 -0.510638 - vertex 1.67866 0.314122 0.489362 - endloop - endfacet - facet normal 0.952362 0.304971 0 - outer loop - vertex 1.67866 0.314122 0.489362 - vertex 1.67866 0.314122 -0.510638 - vertex 1.67685 0.319754 -0.510638 - endloop - endfacet - facet normal 0.952362 0.304971 0 - outer loop - vertex 1.67866 0.314122 0.489362 - vertex 1.67685 0.319754 -0.510638 - vertex 1.67685 0.319754 0.489362 - endloop - endfacet - facet normal 0.937127 0.34899 0 - outer loop - vertex 1.67685 0.319754 0.489362 - vertex 1.67685 0.319754 -0.510638 - vertex 1.67483 0.325192 -0.510638 - endloop - endfacet - facet normal 0.937127 0.34899 0 - outer loop - vertex 1.67685 0.319754 0.489362 - vertex 1.67483 0.325192 -0.510638 - vertex 1.67483 0.325192 0.489362 - endloop - endfacet - facet normal 0.919248 0.393679 0 - outer loop - vertex 1.67483 0.325192 0.489362 - vertex 1.67483 0.325192 -0.510638 - vertex 1.67259 0.33043 -0.510638 - endloop - endfacet - facet normal 0.919248 0.393679 0 - outer loop - vertex 1.67483 0.325192 0.489362 - vertex 1.67259 0.33043 -0.510638 - vertex 1.67259 0.33043 0.489362 - endloop - endfacet - facet normal 0.898561 0.438848 0 - outer loop - vertex 1.67259 0.33043 0.489362 - vertex 1.67259 0.33043 -0.510638 - vertex 1.67013 0.335466 -0.510638 - endloop - endfacet - facet normal 0.898561 0.438848 0 - outer loop - vertex 1.67259 0.33043 0.489362 - vertex 1.67013 0.335466 -0.510638 - vertex 1.67013 0.335466 0.489362 - endloop - endfacet - facet normal 0.874929 0.484252 0 - outer loop - vertex 1.67013 0.335466 0.489362 - vertex 1.67013 0.335466 -0.510638 - vertex 1.66745 0.340296 -0.510638 - endloop - endfacet - facet normal 0.874929 0.484252 0 - outer loop - vertex 1.67013 0.335466 0.489362 - vertex 1.66745 0.340296 -0.510638 - vertex 1.66745 0.340296 0.489362 - endloop - endfacet - facet normal 0.848256 0.529587 0 - outer loop - vertex 1.66745 0.340296 0.489362 - vertex 1.66745 0.340296 -0.510638 - vertex 1.66457 0.344914 -0.510638 - endloop - endfacet - facet normal 0.848256 0.529587 0 - outer loop - vertex 1.66745 0.340296 0.489362 - vertex 1.66457 0.344914 -0.510638 - vertex 1.66457 0.344914 0.489362 - endloop - endfacet - facet normal 0.818466 0.574555 0 - outer loop - vertex 1.66457 0.344914 0.489362 - vertex 1.66457 0.344914 -0.510638 - vertex 1.66148 0.349318 -0.510638 - endloop - endfacet - facet normal 0.818466 0.574555 0 - outer loop - vertex 1.66457 0.344914 0.489362 - vertex 1.66148 0.349318 -0.510638 - vertex 1.66148 0.349318 0.489362 - endloop - endfacet - facet normal 0.785553 0.618794 0 - outer loop - vertex 1.66148 0.349318 0.489362 - vertex 1.66148 0.349318 -0.510638 - vertex 1.65818 0.353504 -0.510638 - endloop - endfacet - facet normal 0.785553 0.618794 0 - outer loop - vertex 1.66148 0.349318 0.489362 - vertex 1.65818 0.353504 -0.510638 - vertex 1.65818 0.353504 0.489362 - endloop - endfacet - facet normal 0.749553 0.661945 0 - outer loop - vertex 1.65818 0.353504 0.489362 - vertex 1.65818 0.353504 -0.510638 - vertex 1.65468 0.357466 -0.510638 - endloop - endfacet - facet normal 0.749553 0.661945 0 - outer loop - vertex 1.65818 0.353504 0.489362 - vertex 1.65468 0.357466 -0.510638 - vertex 1.65468 0.357466 0.489362 - endloop - endfacet - facet normal 0.710564 0.703632 0 - outer loop - vertex 1.65468 0.357466 0.489362 - vertex 1.65468 0.357466 -0.510638 - vertex 1.65098 0.361202 -0.510638 - endloop - endfacet - facet normal 0.710564 0.703632 0 - outer loop - vertex 1.65468 0.357466 0.489362 - vertex 1.65098 0.361202 -0.510638 - vertex 1.65098 0.361202 0.489362 - endloop - endfacet - facet normal 0.668772 0.743468 0 - outer loop - vertex 1.65098 0.361202 0.489362 - vertex 1.65098 0.361202 -0.510638 - vertex 1.64709 0.364708 -0.510638 - endloop - endfacet - facet normal 0.668772 0.743468 0 - outer loop - vertex 1.65098 0.361202 0.489362 - vertex 1.64709 0.364708 -0.510638 - vertex 1.64709 0.364708 0.489362 - endloop - endfacet - facet normal 0.624399 0.781106 0 - outer loop - vertex 1.64709 0.364708 0.489362 - vertex 1.64709 0.364708 -0.510638 - vertex 1.64299 0.367978 -0.510638 - endloop - endfacet - facet normal 0.624399 0.781106 0 - outer loop - vertex 1.64709 0.364708 0.489362 - vertex 1.64299 0.367978 -0.510638 - vertex 1.64299 0.367978 0.489362 - endloop - endfacet - facet normal 0.577741 0.81622 0 - outer loop - vertex 1.64299 0.367978 0.489362 - vertex 1.64299 0.367978 -0.510638 - vertex 1.63871 0.37101 -0.510638 - endloop - endfacet - facet normal 0.577741 0.81622 0 - outer loop - vertex 1.64299 0.367978 0.489362 - vertex 1.63871 0.37101 -0.510638 - vertex 1.63871 0.37101 0.489362 - endloop - endfacet - facet normal 0.529151 0.848528 0 - outer loop - vertex 1.63871 0.37101 0.489362 - vertex 1.63871 0.37101 -0.510638 - vertex 1.63424 0.3738 -0.510638 - endloop - endfacet - facet normal 0.529151 0.848528 0 - outer loop - vertex 1.63871 0.37101 0.489362 - vertex 1.63424 0.3738 -0.510638 - vertex 1.63424 0.3738 0.489362 - endloop - endfacet - facet normal 0.479013 0.877808 0 - outer loop - vertex 1.63424 0.3738 0.489362 - vertex 1.63424 0.3738 -0.510638 - vertex 1.62958 0.376342 -0.510638 - endloop - endfacet - facet normal 0.479013 0.877808 0 - outer loop - vertex 1.63424 0.3738 0.489362 - vertex 1.62958 0.376342 -0.510638 - vertex 1.62958 0.376342 0.489362 - endloop - endfacet - facet normal 0.427732 0.903906 0 - outer loop - vertex 1.62958 0.376342 0.489362 - vertex 1.62958 0.376342 -0.510638 - vertex 1.62473 0.378634 -0.510638 - endloop - endfacet - facet normal 0.427732 0.903906 0 - outer loop - vertex 1.62958 0.376342 0.489362 - vertex 1.62473 0.378634 -0.510638 - vertex 1.62473 0.378634 0.489362 - endloop - endfacet - facet normal 0.37574 0.926725 0 - outer loop - vertex 1.62473 0.378634 0.489362 - vertex 1.62473 0.378634 -0.510638 - vertex 1.61971 0.380672 -0.510638 - endloop - endfacet - facet normal 0.37574 0.926725 0 - outer loop - vertex 1.62473 0.378634 0.489362 - vertex 1.61971 0.380672 -0.510638 - vertex 1.61971 0.380672 0.489362 - endloop - endfacet - facet normal 0.32344 0.946249 0 - outer loop - vertex 1.61971 0.380672 0.489362 - vertex 1.61971 0.380672 -0.510638 - vertex 1.61451 0.38245 -0.510638 - endloop - endfacet - facet normal 0.32344 0.946249 0 - outer loop - vertex 1.61971 0.380672 0.489362 - vertex 1.61451 0.38245 -0.510638 - vertex 1.61451 0.38245 0.489362 - endloop - endfacet - facet normal 0.27124 0.962512 0 - outer loop - vertex 1.61451 0.38245 0.489362 - vertex 1.61451 0.38245 -0.510638 - vertex 1.60913 0.383966 -0.510638 - endloop - endfacet - facet normal 0.27124 0.962512 0 - outer loop - vertex 1.61451 0.38245 0.489362 - vertex 1.60913 0.383966 -0.510638 - vertex 1.60913 0.383966 0.489362 - endloop - endfacet - facet normal 0.219503 0.975612 0 - outer loop - vertex 1.60913 0.383966 0.489362 - vertex 1.60913 0.383966 -0.510638 - vertex 1.60357 0.385216 -0.510638 - endloop - endfacet - facet normal 0.219503 0.975612 0 - outer loop - vertex 1.60913 0.383966 0.489362 - vertex 1.60357 0.385216 -0.510638 - vertex 1.60357 0.385216 0.489362 - endloop - endfacet - facet normal 0.168544 0.985694 0 - outer loop - vertex 1.60357 0.385216 0.489362 - vertex 1.60357 0.385216 -0.510638 - vertex 1.59785 0.386194 -0.510638 - endloop - endfacet - facet normal 0.168544 0.985694 0 - outer loop - vertex 1.60357 0.385216 0.489362 - vertex 1.59785 0.386194 -0.510638 - vertex 1.59785 0.386194 0.489362 - endloop - endfacet - facet normal 0.118647 0.992936 0 - outer loop - vertex 1.59785 0.386194 0.489362 - vertex 1.59785 0.386194 -0.510638 - vertex 1.59196 0.386898 -0.510638 - endloop - endfacet - facet normal 0.118647 0.992936 0 - outer loop - vertex 1.59785 0.386194 0.489362 - vertex 1.59196 0.386898 -0.510638 - vertex 1.59196 0.386898 0.489362 - endloop - endfacet - facet normal 0.0700513 0.997543 0 - outer loop - vertex 1.59196 0.386898 0.489362 - vertex 1.59196 0.386898 -0.510638 - vertex 1.5859 0.387324 -0.510638 - endloop - endfacet - facet normal 0.0700513 0.997543 0 - outer loop - vertex 1.59196 0.386898 0.489362 - vertex 1.5859 0.387324 -0.510638 - vertex 1.5859 0.387324 0.489362 - endloop - endfacet - facet normal 0.0229321 0.999737 0 - outer loop - vertex 1.5859 0.387324 0.489362 - vertex 1.5859 0.387324 -0.510638 - vertex 1.57968 0.387466 -0.510638 - endloop - endfacet - facet normal 0.0229321 0.999737 0 - outer loop - vertex 1.5859 0.387324 0.489362 - vertex 1.57968 0.387466 -0.510638 - vertex 1.57968 0.387466 0.489362 - endloop - endfacet - facet normal -0.019819 0.999804 0 - outer loop - vertex 1.57968 0.387466 0.489362 - vertex 1.57968 0.387466 -0.510638 - vertex 1.57297 0.387333 -0.510638 - endloop - endfacet - facet normal -0.019819 0.999804 0 - outer loop - vertex 1.57968 0.387466 0.489362 - vertex 1.57297 0.387333 -0.510638 - vertex 1.57297 0.387333 0.489362 - endloop - endfacet - facet normal -0.0607887 0.998151 0 - outer loop - vertex 1.57297 0.387333 0.489362 - vertex 1.57297 0.387333 -0.510638 - vertex 1.56644 0.386936 -0.510638 - endloop - endfacet - facet normal -0.0607887 0.998151 0 - outer loop - vertex 1.57297 0.387333 0.489362 - vertex 1.56644 0.386936 -0.510638 - vertex 1.56644 0.386936 0.489362 - endloop - endfacet - facet normal -0.103454 0.994634 0 - outer loop - vertex 1.56644 0.386936 0.489362 - vertex 1.56644 0.386936 -0.510638 - vertex 1.56009 0.386275 -0.510638 - endloop - endfacet - facet normal -0.103454 0.994634 0 - outer loop - vertex 1.56644 0.386936 0.489362 - vertex 1.56009 0.386275 -0.510638 - vertex 1.56009 0.386275 0.489362 - endloop - endfacet - facet normal -0.1477 0.989032 0 - outer loop - vertex 1.56009 0.386275 0.489362 - vertex 1.56009 0.386275 -0.510638 - vertex 1.55393 0.385354 -0.510638 - endloop - endfacet - facet normal -0.1477 0.989032 0 - outer loop - vertex 1.56009 0.386275 0.489362 - vertex 1.55393 0.385354 -0.510638 - vertex 1.55393 0.385354 0.489362 - endloop - endfacet - facet normal -0.193367 0.981126 0 - outer loop - vertex 1.55393 0.385354 0.489362 - vertex 1.55393 0.385354 -0.510638 - vertex 1.54794 0.384175 -0.510638 - endloop - endfacet - facet normal -0.193367 0.981126 0 - outer loop - vertex 1.55393 0.385354 0.489362 - vertex 1.54794 0.384175 -0.510638 - vertex 1.54794 0.384175 0.489362 - endloop - endfacet - facet normal -0.240255 0.97071 0 - outer loop - vertex 1.54794 0.384175 0.489362 - vertex 1.54794 0.384175 -0.510638 - vertex 1.54214 0.382738 -0.510638 - endloop - endfacet - facet normal -0.240255 0.97071 0 - outer loop - vertex 1.54794 0.384175 0.489362 - vertex 1.54214 0.382738 -0.510638 - vertex 1.54214 0.382738 0.489362 - endloop - endfacet - facet normal -0.288103 0.957599 0 - outer loop - vertex 1.54214 0.382738 0.489362 - vertex 1.54214 0.382738 -0.510638 - vertex 1.53652 0.381047 -0.510638 - endloop - endfacet - facet normal -0.288103 0.957599 0 - outer loop - vertex 1.54214 0.382738 0.489362 - vertex 1.53652 0.381047 -0.510638 - vertex 1.53652 0.381047 0.489362 - endloop - endfacet - facet normal -0.3366 0.941648 0 - outer loop - vertex 1.53652 0.381047 0.489362 - vertex 1.53652 0.381047 -0.510638 - vertex 1.53108 0.379104 -0.510638 - endloop - endfacet - facet normal -0.3366 0.941648 0 - outer loop - vertex 1.53652 0.381047 0.489362 - vertex 1.53108 0.379104 -0.510638 - vertex 1.53108 0.379104 0.489362 - endloop - endfacet - facet normal -0.385396 0.922751 0 - outer loop - vertex 1.53108 0.379104 0.489362 - vertex 1.53108 0.379104 -0.510638 - vertex 1.52583 0.376909 -0.510638 - endloop - endfacet - facet normal -0.385396 0.922751 0 - outer loop - vertex 1.53108 0.379104 0.489362 - vertex 1.52583 0.376909 -0.510638 - vertex 1.52583 0.376909 0.489362 - endloop - endfacet - facet normal -0.434088 0.90087 0 - outer loop - vertex 1.52583 0.376909 0.489362 - vertex 1.52583 0.376909 -0.510638 - vertex 1.52076 0.374466 -0.510638 - endloop - endfacet - facet normal -0.434088 0.90087 0 - outer loop - vertex 1.52583 0.376909 0.489362 - vertex 1.52076 0.374466 -0.510638 - vertex 1.52076 0.374466 0.489362 - endloop - endfacet - facet normal -0.482286 0.876014 0 - outer loop - vertex 1.52076 0.374466 0.489362 - vertex 1.52076 0.374466 -0.510638 - vertex 1.51587 0.371777 -0.510638 - endloop - endfacet - facet normal -0.482286 0.876014 0 - outer loop - vertex 1.52076 0.374466 0.489362 - vertex 1.51587 0.371777 -0.510638 - vertex 1.51587 0.371777 0.489362 - endloop - endfacet - facet normal -0.529544 0.848282 0 - outer loop - vertex 1.51587 0.371777 0.489362 - vertex 1.51587 0.371777 -0.510638 - vertex 1.51117 0.368842 -0.510638 - endloop - endfacet - facet normal -0.529544 0.848282 0 - outer loop - vertex 1.51587 0.371777 0.489362 - vertex 1.51117 0.368842 -0.510638 - vertex 1.51117 0.368842 0.489362 - endloop - endfacet - facet normal -0.57544 0.817844 0 - outer loop - vertex 1.51117 0.368842 0.489362 - vertex 1.51117 0.368842 -0.510638 - vertex 1.50665 0.365665 -0.510638 - endloop - endfacet - facet normal -0.57544 0.817844 0 - outer loop - vertex 1.51117 0.368842 0.489362 - vertex 1.50665 0.365665 -0.510638 - vertex 1.50665 0.365665 0.489362 - endloop - endfacet - facet normal -0.61961 0.78491 0 - outer loop - vertex 1.50665 0.365665 0.489362 - vertex 1.50665 0.365665 -0.510638 - vertex 1.50233 0.362248 -0.510638 - endloop - endfacet - facet normal -0.61961 0.78491 0 - outer loop - vertex 1.50665 0.365665 0.489362 - vertex 1.50233 0.362248 -0.510638 - vertex 1.50233 0.362248 0.489362 - endloop - endfacet - facet normal -0.661676 0.74979 0 - outer loop - vertex 1.50233 0.362248 0.489362 - vertex 1.50233 0.362248 -0.510638 - vertex 1.49818 0.358591 -0.510638 - endloop - endfacet - facet normal -0.661676 0.74979 0 - outer loop - vertex 1.50233 0.362248 0.489362 - vertex 1.49818 0.358591 -0.510638 - vertex 1.49818 0.358591 0.489362 - endloop - endfacet - facet normal -0.701357 0.71281 0 - outer loop - vertex 1.49818 0.358591 0.489362 - vertex 1.49818 0.358591 -0.510638 - vertex 1.49423 0.354698 -0.510638 - endloop - endfacet - facet normal -0.701357 0.71281 0 - outer loop - vertex 1.49818 0.358591 0.489362 - vertex 1.49423 0.354698 -0.510638 - vertex 1.49423 0.354698 0.489362 - endloop - endfacet - facet normal -0.738417 0.674344 0 - outer loop - vertex 1.49423 0.354698 0.489362 - vertex 1.49423 0.354698 -0.510638 - vertex 1.49046 0.350571 -0.510638 - endloop - endfacet - facet normal -0.738417 0.674344 0 - outer loop - vertex 1.49423 0.354698 0.489362 - vertex 1.49046 0.350571 -0.510638 - vertex 1.49046 0.350571 0.489362 - endloop - endfacet - facet normal -0.772712 0.634757 0 - outer loop - vertex 1.49046 0.350571 0.489362 - vertex 1.49046 0.350571 -0.510638 - vertex 1.48687 0.34621 -0.510638 - endloop - endfacet - facet normal -0.772712 0.634757 0 - outer loop - vertex 1.49046 0.350571 0.489362 - vertex 1.48687 0.34621 -0.510638 - vertex 1.48687 0.34621 0.489362 - endloop - endfacet - facet normal -0.80413 0.594453 0 - outer loop - vertex 1.48687 0.34621 0.489362 - vertex 1.48687 0.34621 -0.510638 - vertex 1.48348 0.341619 -0.510638 - endloop - endfacet - facet normal -0.80413 0.594453 0 - outer loop - vertex 1.48687 0.34621 0.489362 - vertex 1.48348 0.341619 -0.510638 - vertex 1.48348 0.341619 0.489362 - endloop - endfacet - facet normal -0.832653 0.553794 0 - outer loop - vertex 1.48348 0.341619 0.489362 - vertex 1.48348 0.341619 -0.510638 - vertex 1.48027 0.3368 -0.510638 - endloop - endfacet - facet normal -0.832653 0.553794 0 - outer loop - vertex 1.48348 0.341619 0.489362 - vertex 1.48027 0.3368 -0.510638 - vertex 1.48027 0.3368 0.489362 - endloop - endfacet - facet normal -0.858333 0.513093 0 - outer loop - vertex 1.48027 0.3368 0.489362 - vertex 1.48027 0.3368 -0.510638 - vertex 1.47726 0.331753 -0.510638 - endloop - endfacet - facet normal -0.858333 0.513093 0 - outer loop - vertex 1.48027 0.3368 0.489362 - vertex 1.47726 0.331753 -0.510638 - vertex 1.47726 0.331753 0.489362 - endloop - endfacet - facet normal -0.881233 0.472682 0 - outer loop - vertex 1.47726 0.331753 0.489362 - vertex 1.47726 0.331753 -0.510638 - vertex 1.47443 0.326482 -0.510638 - endloop - endfacet - facet normal -0.881233 0.472682 0 - outer loop - vertex 1.47726 0.331753 0.489362 - vertex 1.47443 0.326482 -0.510638 - vertex 1.47443 0.326482 0.489362 - endloop - endfacet - facet normal -0.901488 0.432804 0 - outer loop - vertex 1.47443 0.326482 0.489362 - vertex 1.47443 0.326482 -0.510638 - vertex 1.47179 0.320989 -0.510638 - endloop - endfacet - facet normal -0.901488 0.432804 0 - outer loop - vertex 1.47443 0.326482 0.489362 - vertex 1.47179 0.320989 -0.510638 - vertex 1.47179 0.320989 0.489362 - endloop - endfacet - facet normal -0.919247 0.393681 0 - outer loop - vertex 1.47179 0.320989 0.489362 - vertex 1.47179 0.320989 -0.510638 - vertex 1.46935 0.315274 -0.510638 - endloop - endfacet - facet normal -0.919247 0.393681 0 - outer loop - vertex 1.47179 0.320989 0.489362 - vertex 1.46935 0.315274 -0.510638 - vertex 1.46935 0.315274 0.489362 - endloop - endfacet - facet normal -0.934674 0.355506 0 - outer loop - vertex 1.46935 0.315274 0.489362 - vertex 1.46935 0.315274 -0.510638 - vertex 1.46709 0.309341 -0.510638 - endloop - endfacet - facet normal -0.934674 0.355506 0 - outer loop - vertex 1.46935 0.315274 0.489362 - vertex 1.46709 0.309341 -0.510638 - vertex 1.46709 0.309341 0.489362 - endloop - endfacet - facet normal -0.947957 0.318398 0 - outer loop - vertex 1.46709 0.309341 0.489362 - vertex 1.46709 0.309341 -0.510638 - vertex 1.46502 0.303192 -0.510638 - endloop - endfacet - facet normal -0.947957 0.318398 0 - outer loop - vertex 1.46709 0.309341 0.489362 - vertex 1.46502 0.303192 -0.510638 - vertex 1.46502 0.303192 0.489362 - endloop - endfacet - facet normal -0.95928 0.282458 0 - outer loop - vertex 1.46502 0.303192 0.489362 - vertex 1.46502 0.303192 -0.510638 - vertex 1.46315 0.296827 -0.510638 - endloop - endfacet - facet normal -0.95928 0.282458 0 - outer loop - vertex 1.46502 0.303192 0.489362 - vertex 1.46315 0.296827 -0.510638 - vertex 1.46315 0.296827 0.489362 - endloop - endfacet - facet normal -0.968823 0.247755 0 - outer loop - vertex 1.46315 0.296827 0.489362 - vertex 1.46315 0.296827 -0.510638 - vertex 1.46147 0.29025 -0.510638 - endloop - endfacet - facet normal -0.968823 0.247755 0 - outer loop - vertex 1.46315 0.296827 0.489362 - vertex 1.46147 0.29025 -0.510638 - vertex 1.46147 0.29025 0.489362 - endloop - endfacet - facet normal -0.976758 0.214345 0 - outer loop - vertex 1.46147 0.29025 0.489362 - vertex 1.46147 0.29025 -0.510638 - vertex 1.45998 0.283463 -0.510638 - endloop - endfacet - facet normal -0.976758 0.214345 0 - outer loop - vertex 1.46147 0.29025 0.489362 - vertex 1.45998 0.283463 -0.510638 - vertex 1.45998 0.283463 0.489362 - endloop - endfacet - facet normal -0.983256 0.182228 0 - outer loop - vertex 1.45998 0.283463 0.489362 - vertex 1.45998 0.283463 -0.510638 - vertex 1.45868 0.276466 -0.510638 - endloop - endfacet - facet normal -0.983256 0.182228 0 - outer loop - vertex 1.45998 0.283463 0.489362 - vertex 1.45868 0.276466 -0.510638 - vertex 1.45868 0.276466 0.489362 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 1.45868 0.276466 0.489362 - vertex 1.45868 0.276466 -0.510638 - vertex 1.68468 0.276466 -0.510638 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 1.45868 0.276466 0.489362 - vertex 1.68468 0.276466 -0.510638 - vertex 1.68468 0.276466 0.489362 - endloop - endfacet - facet normal 0.998052 0.0623935 0 - outer loop - vertex 1.68468 0.276466 0.489362 - vertex 1.68468 0.276466 -0.510638 - vertex 1.68426 0.283182 -0.510638 - endloop - endfacet - facet normal 0.998052 0.0623935 0 - outer loop - vertex 1.68468 0.276466 0.489362 - vertex 1.68426 0.283182 -0.510638 - vertex 1.68426 0.283182 0.489362 - endloop - endfacet - facet normal 0.775385 -0.631488 0 - outer loop - vertex 1.95768 0.396466 0.489362 - vertex 1.95768 0.396466 -0.510638 - vertex 1.96114 0.400706 -0.510638 - endloop - endfacet - facet normal 0.775385 -0.631488 0 - outer loop - vertex 1.95768 0.396466 0.489362 - vertex 1.96114 0.400706 -0.510638 - vertex 1.96114 0.400706 0.489362 - endloop - endfacet - facet normal 0.756888 -0.653545 0 - outer loop - vertex 1.96114 0.400706 0.489362 - vertex 1.96114 0.400706 -0.510638 - vertex 1.96469 0.404824 -0.510638 - endloop - endfacet - facet normal 0.756888 -0.653545 0 - outer loop - vertex 1.96114 0.400706 0.489362 - vertex 1.96469 0.404824 -0.510638 - vertex 1.96469 0.404824 0.489362 - endloop - endfacet - facet normal 0.737771 -0.675051 0 - outer loop - vertex 1.96469 0.404824 0.489362 - vertex 1.96469 0.404824 -0.510638 - vertex 1.96835 0.408819 -0.510638 - endloop - endfacet - facet normal 0.737771 -0.675051 0 - outer loop - vertex 1.96469 0.404824 0.489362 - vertex 1.96835 0.408819 -0.510638 - vertex 1.96835 0.408819 0.489362 - endloop - endfacet - facet normal 0.718059 -0.695982 0 - outer loop - vertex 1.96835 0.408819 0.489362 - vertex 1.96835 0.408819 -0.510638 - vertex 1.9721 0.41269 -0.510638 - endloop - endfacet - facet normal 0.718059 -0.695982 0 - outer loop - vertex 1.96835 0.408819 0.489362 - vertex 1.9721 0.41269 -0.510638 - vertex 1.9721 0.41269 0.489362 - endloop - endfacet - facet normal 0.697754 -0.716337 0 - outer loop - vertex 1.9721 0.41269 0.489362 - vertex 1.9721 0.41269 -0.510638 - vertex 1.97594 0.416434 -0.510638 - endloop - endfacet - facet normal 0.697754 -0.716337 0 - outer loop - vertex 1.9721 0.41269 0.489362 - vertex 1.97594 0.416434 -0.510638 - vertex 1.97594 0.416434 0.489362 - endloop - endfacet - facet normal 0.676887 -0.736087 0 - outer loop - vertex 1.97594 0.416434 0.489362 - vertex 1.97594 0.416434 -0.510638 - vertex 1.97987 0.42005 -0.510638 - endloop - endfacet - facet normal 0.676887 -0.736087 0 - outer loop - vertex 1.97594 0.416434 0.489362 - vertex 1.97987 0.42005 -0.510638 - vertex 1.97987 0.42005 0.489362 - endloop - endfacet - facet normal 0.655441 -0.755247 0 - outer loop - vertex 1.97987 0.42005 0.489362 - vertex 1.97987 0.42005 -0.510638 - vertex 1.98389 0.423537 -0.510638 - endloop - endfacet - facet normal 0.655441 -0.755247 0 - outer loop - vertex 1.97987 0.42005 0.489362 - vertex 1.98389 0.423537 -0.510638 - vertex 1.98389 0.423537 0.489362 - endloop - endfacet - facet normal 0.633438 -0.773794 0 - outer loop - vertex 1.98389 0.423537 0.489362 - vertex 1.98389 0.423537 -0.510638 - vertex 1.98799 0.426894 -0.510638 - endloop - endfacet - facet normal 0.633438 -0.773794 0 - outer loop - vertex 1.98389 0.423537 0.489362 - vertex 1.98799 0.426894 -0.510638 - vertex 1.98799 0.426894 0.489362 - endloop - endfacet - facet normal 0.610884 -0.79172 0 - outer loop - vertex 1.98799 0.426894 0.489362 - vertex 1.98799 0.426894 -0.510638 - vertex 1.99217 0.430117 -0.510638 - endloop - endfacet - facet normal 0.610884 -0.79172 0 - outer loop - vertex 1.98799 0.426894 0.489362 - vertex 1.99217 0.430117 -0.510638 - vertex 1.99217 0.430117 0.489362 - endloop - endfacet - facet normal 0.587776 -0.809024 0 - outer loop - vertex 1.99217 0.430117 0.489362 - vertex 1.99217 0.430117 -0.510638 - vertex 1.99642 0.433207 -0.510638 - endloop - endfacet - facet normal 0.587776 -0.809024 0 - outer loop - vertex 1.99217 0.430117 0.489362 - vertex 1.99642 0.433207 -0.510638 - vertex 1.99642 0.433207 0.489362 - endloop - endfacet - facet normal 0.564133 -0.825684 0 - outer loop - vertex 1.99642 0.433207 0.489362 - vertex 1.99642 0.433207 -0.510638 - vertex 2.00075 0.436161 -0.510638 - endloop - endfacet - facet normal 0.564133 -0.825684 0 - outer loop - vertex 1.99642 0.433207 0.489362 - vertex 2.00075 0.436161 -0.510638 - vertex 2.00075 0.436161 0.489362 - endloop - endfacet - facet normal 0.539944 -0.841701 0 - outer loop - vertex 2.00075 0.436161 0.489362 - vertex 2.00075 0.436161 -0.510638 - vertex 2.00514 0.438978 -0.510638 - endloop - endfacet - facet normal 0.539944 -0.841701 0 - outer loop - vertex 2.00075 0.436161 0.489362 - vertex 2.00514 0.438978 -0.510638 - vertex 2.00514 0.438978 0.489362 - endloop - endfacet - facet normal 0.515231 -0.857052 0 - outer loop - vertex 2.00514 0.438978 0.489362 - vertex 2.00514 0.438978 -0.510638 - vertex 2.00959 0.441657 -0.510638 - endloop - endfacet - facet normal 0.515231 -0.857052 0 - outer loop - vertex 2.00514 0.438978 0.489362 - vertex 2.00959 0.441657 -0.510638 - vertex 2.00959 0.441657 0.489362 - endloop - endfacet - facet normal 0.489966 -0.871741 0 - outer loop - vertex 2.00959 0.441657 0.489362 - vertex 2.00959 0.441657 -0.510638 - vertex 2.01411 0.444195 -0.510638 - endloop - endfacet - facet normal 0.489966 -0.871741 0 - outer loop - vertex 2.00959 0.441657 0.489362 - vertex 2.01411 0.444195 -0.510638 - vertex 2.01411 0.444195 0.489362 - endloop - endfacet - facet normal 0.464192 -0.885735 0 - outer loop - vertex 2.01411 0.444195 0.489362 - vertex 2.01411 0.444195 -0.510638 - vertex 2.01868 0.446591 -0.510638 - endloop - endfacet - facet normal 0.464192 -0.885735 0 - outer loop - vertex 2.01411 0.444195 0.489362 - vertex 2.01868 0.446591 -0.510638 - vertex 2.01868 0.446591 0.489362 - endloop - endfacet - facet normal 0.437871 -0.899038 0 - outer loop - vertex 2.01868 0.446591 0.489362 - vertex 2.01868 0.446591 -0.510638 - vertex 2.02331 0.448844 -0.510638 - endloop - endfacet - facet normal 0.437871 -0.899038 0 - outer loop - vertex 2.01868 0.446591 0.489362 - vertex 2.02331 0.448844 -0.510638 - vertex 2.02331 0.448844 0.489362 - endloop - endfacet - facet normal 0.411021 -0.911626 0 - outer loop - vertex 2.02331 0.448844 0.489362 - vertex 2.02331 0.448844 -0.510638 - vertex 2.02798 0.450953 -0.510638 - endloop - endfacet - facet normal 0.411021 -0.911626 0 - outer loop - vertex 2.02331 0.448844 0.489362 - vertex 2.02798 0.450953 -0.510638 - vertex 2.02798 0.450953 0.489362 - endloop - endfacet - facet normal 0.383647 -0.92348 0 - outer loop - vertex 2.02798 0.450953 0.489362 - vertex 2.02798 0.450953 -0.510638 - vertex 2.03271 0.452914 -0.510638 - endloop - endfacet - facet normal 0.383647 -0.92348 0 - outer loop - vertex 2.02798 0.450953 0.489362 - vertex 2.03271 0.452914 -0.510638 - vertex 2.03271 0.452914 0.489362 - endloop - endfacet - facet normal 0.355752 -0.93458 0 - outer loop - vertex 2.03271 0.452914 0.489362 - vertex 2.03271 0.452914 -0.510638 - vertex 2.03747 0.454728 -0.510638 - endloop - endfacet - facet normal 0.355752 -0.93458 0 - outer loop - vertex 2.03271 0.452914 0.489362 - vertex 2.03747 0.454728 -0.510638 - vertex 2.03747 0.454728 0.489362 - endloop - endfacet - facet normal 0.32734 -0.944907 0 - outer loop - vertex 2.03747 0.454728 0.489362 - vertex 2.03747 0.454728 -0.510638 - vertex 2.04227 0.456392 -0.510638 - endloop - endfacet - facet normal 0.32734 -0.944907 0 - outer loop - vertex 2.03747 0.454728 0.489362 - vertex 2.04227 0.456392 -0.510638 - vertex 2.04227 0.456392 0.489362 - endloop - endfacet - facet normal 0.298409 -0.954438 0 - outer loop - vertex 2.04227 0.456392 0.489362 - vertex 2.04227 0.456392 -0.510638 - vertex 2.04711 0.457905 -0.510638 - endloop - endfacet - facet normal 0.298409 -0.954438 0 - outer loop - vertex 2.04227 0.456392 0.489362 - vertex 2.04711 0.457905 -0.510638 - vertex 2.04711 0.457905 0.489362 - endloop - endfacet - facet normal 0.268976 -0.963147 0 - outer loop - vertex 2.04711 0.457905 0.489362 - vertex 2.04711 0.457905 -0.510638 - vertex 2.05199 0.459266 -0.510638 - endloop - endfacet - facet normal 0.268976 -0.963147 0 - outer loop - vertex 2.04711 0.457905 0.489362 - vertex 2.05199 0.459266 -0.510638 - vertex 2.05199 0.459266 0.489362 - endloop - endfacet - facet normal 0.239038 -0.97101 0 - outer loop - vertex 2.05199 0.459266 0.489362 - vertex 2.05199 0.459266 -0.510638 - vertex 2.05689 0.460472 -0.510638 - endloop - endfacet - facet normal 0.239038 -0.97101 0 - outer loop - vertex 2.05199 0.459266 0.489362 - vertex 2.05689 0.460472 -0.510638 - vertex 2.05689 0.460472 0.489362 - endloop - endfacet - facet normal 0.208599 -0.978001 0 - outer loop - vertex 2.05689 0.460472 0.489362 - vertex 2.05689 0.460472 -0.510638 - vertex 2.06181 0.461522 -0.510638 - endloop - endfacet - facet normal 0.208599 -0.978001 0 - outer loop - vertex 2.05689 0.460472 0.489362 - vertex 2.06181 0.461522 -0.510638 - vertex 2.06181 0.461522 0.489362 - endloop - endfacet - facet normal 0.177694 -0.984086 0 - outer loop - vertex 2.06181 0.461522 0.489362 - vertex 2.06181 0.461522 -0.510638 - vertex 2.06676 0.462415 -0.510638 - endloop - endfacet - facet normal 0.177694 -0.984086 0 - outer loop - vertex 2.06181 0.461522 0.489362 - vertex 2.06676 0.462415 -0.510638 - vertex 2.06676 0.462415 0.489362 - endloop - endfacet - facet normal 0.146313 -0.989238 0 - outer loop - vertex 2.06676 0.462415 0.489362 - vertex 2.06676 0.462415 -0.510638 - vertex 2.07172 0.46315 -0.510638 - endloop - endfacet - facet normal 0.146313 -0.989238 0 - outer loop - vertex 2.06676 0.462415 0.489362 - vertex 2.07172 0.46315 -0.510638 - vertex 2.07172 0.46315 0.489362 - endloop - endfacet - facet normal 0.114496 -0.993424 0 - outer loop - vertex 2.07172 0.46315 0.489362 - vertex 2.07172 0.46315 -0.510638 - vertex 2.0767 0.463723 -0.510638 - endloop - endfacet - facet normal 0.114496 -0.993424 0 - outer loop - vertex 2.07172 0.46315 0.489362 - vertex 2.0767 0.463723 -0.510638 - vertex 2.0767 0.463723 0.489362 - endloop - endfacet - facet normal 0.0822571 -0.996611 0 - outer loop - vertex 2.0767 0.463723 0.489362 - vertex 2.0767 0.463723 -0.510638 - vertex 2.08169 0.464135 -0.510638 - endloop - endfacet - facet normal 0.0822571 -0.996611 0 - outer loop - vertex 2.0767 0.463723 0.489362 - vertex 2.08169 0.464135 -0.510638 - vertex 2.08169 0.464135 0.489362 - endloop - endfacet - facet normal 0.0496191 -0.998768 0 - outer loop - vertex 2.08169 0.464135 0.489362 - vertex 2.08169 0.464135 -0.510638 - vertex 2.08668 0.464383 -0.510638 - endloop - endfacet - facet normal 0.0496191 -0.998768 0 - outer loop - vertex 2.08169 0.464135 0.489362 - vertex 2.08668 0.464383 -0.510638 - vertex 2.08668 0.464383 0.489362 - endloop - endfacet - facet normal 0.0166175 -0.999862 0 - outer loop - vertex 2.08668 0.464383 0.489362 - vertex 2.08668 0.464383 -0.510638 - vertex 2.09168 0.464466 -0.510638 - endloop - endfacet - facet normal 0.0166175 -0.999862 0 - outer loop - vertex 2.08668 0.464383 0.489362 - vertex 2.09168 0.464466 -0.510638 - vertex 2.09168 0.464466 0.489362 - endloop - endfacet - facet normal -0.0229369 -0.999737 -0 - outer loop - vertex 2.09168 0.464466 0.489362 - vertex 2.09168 0.464466 -0.510638 - vertex 2.10012 0.464273 -0.510638 - endloop - endfacet - facet normal -0.0229369 -0.999737 0 - outer loop - vertex 2.09168 0.464466 0.489362 - vertex 2.10012 0.464273 -0.510638 - vertex 2.10012 0.464273 0.489362 - endloop - endfacet - facet normal -0.0697847 -0.997562 -0 - outer loop - vertex 2.10012 0.464273 0.489362 - vertex 2.10012 0.464273 -0.510638 - vertex 2.10844 0.463691 -0.510638 - endloop - endfacet - facet normal -0.0697847 -0.997562 0 - outer loop - vertex 2.10012 0.464273 0.489362 - vertex 2.10844 0.463691 -0.510638 - vertex 2.10844 0.463691 0.489362 - endloop - endfacet - facet normal -0.117934 -0.993021 -0 - outer loop - vertex 2.10844 0.463691 0.489362 - vertex 2.10844 0.463691 -0.510638 - vertex 2.11662 0.462719 -0.510638 - endloop - endfacet - facet normal -0.117934 -0.993021 0 - outer loop - vertex 2.10844 0.463691 0.489362 - vertex 2.11662 0.462719 -0.510638 - vertex 2.11662 0.462719 0.489362 - endloop - endfacet - facet normal -0.167264 -0.985912 -0 - outer loop - vertex 2.11662 0.462719 0.489362 - vertex 2.11662 0.462719 -0.510638 - vertex 2.12465 0.461356 -0.510638 - endloop - endfacet - facet normal -0.167264 -0.985912 0 - outer loop - vertex 2.11662 0.462719 0.489362 - vertex 2.12465 0.461356 -0.510638 - vertex 2.12465 0.461356 0.489362 - endloop - endfacet - facet normal -0.217623 -0.976033 -0 - outer loop - vertex 2.12465 0.461356 0.489362 - vertex 2.12465 0.461356 -0.510638 - vertex 2.13253 0.459601 -0.510638 - endloop - endfacet - facet normal -0.217623 -0.976033 0 - outer loop - vertex 2.12465 0.461356 0.489362 - vertex 2.13253 0.459601 -0.510638 - vertex 2.13253 0.459601 0.489362 - endloop - endfacet - facet normal -0.268812 -0.963193 -0 - outer loop - vertex 2.13253 0.459601 0.489362 - vertex 2.13253 0.459601 -0.510638 - vertex 2.14023 0.45745 -0.510638 - endloop - endfacet - facet normal -0.268812 -0.963193 0 - outer loop - vertex 2.13253 0.459601 0.489362 - vertex 2.14023 0.45745 -0.510638 - vertex 2.14023 0.45745 0.489362 - endloop - endfacet - facet normal -0.320576 -0.947223 -0 - outer loop - vertex 2.14023 0.45745 0.489362 - vertex 2.14023 0.45745 -0.510638 - vertex 2.14776 0.454904 -0.510638 - endloop - endfacet - facet normal -0.320576 -0.947223 0 - outer loop - vertex 2.14023 0.45745 0.489362 - vertex 2.14776 0.454904 -0.510638 - vertex 2.14776 0.454904 0.489362 - endloop - endfacet - facet normal -0.37264 -0.927976 -0 - outer loop - vertex 2.14776 0.454904 0.489362 - vertex 2.14776 0.454904 -0.510638 - vertex 2.15509 0.45196 -0.510638 - endloop - endfacet - facet normal -0.37264 -0.927976 0 - outer loop - vertex 2.14776 0.454904 0.489362 - vertex 2.15509 0.45196 -0.510638 - vertex 2.15509 0.45196 0.489362 - endloop - endfacet - facet normal -0.424667 -0.90535 -0 - outer loop - vertex 2.15509 0.45196 0.489362 - vertex 2.15509 0.45196 -0.510638 - vertex 2.16221 0.448617 -0.510638 - endloop - endfacet - facet normal -0.424667 -0.90535 0 - outer loop - vertex 2.15509 0.45196 0.489362 - vertex 2.16221 0.448617 -0.510638 - vertex 2.16221 0.448617 0.489362 - endloop - endfacet - facet normal -0.476268 -0.8793 -0 - outer loop - vertex 2.16221 0.448617 0.489362 - vertex 2.16221 0.448617 -0.510638 - vertex 2.16913 0.444874 -0.510638 - endloop - endfacet - facet normal -0.476268 -0.8793 0 - outer loop - vertex 2.16221 0.448617 0.489362 - vertex 2.16913 0.444874 -0.510638 - vertex 2.16913 0.444874 0.489362 - endloop - endfacet - facet normal -0.527053 -0.849832 -0 - outer loop - vertex 2.16913 0.444874 0.489362 - vertex 2.16913 0.444874 -0.510638 - vertex 2.17581 0.440728 -0.510638 - endloop - endfacet - facet normal -0.527053 -0.849832 0 - outer loop - vertex 2.16913 0.444874 0.489362 - vertex 2.17581 0.440728 -0.510638 - vertex 2.17581 0.440728 0.489362 - endloop - endfacet - facet normal -0.576589 -0.817035 -0 - outer loop - vertex 2.17581 0.440728 0.489362 - vertex 2.17581 0.440728 -0.510638 - vertex 2.18226 0.436178 -0.510638 - endloop - endfacet - facet normal -0.576589 -0.817035 0 - outer loop - vertex 2.17581 0.440728 0.489362 - vertex 2.18226 0.436178 -0.510638 - vertex 2.18226 0.436178 0.489362 - endloop - endfacet - facet normal -0.624462 -0.781055 -0 - outer loop - vertex 2.18226 0.436178 0.489362 - vertex 2.18226 0.436178 -0.510638 - vertex 2.18846 0.431223 -0.510638 - endloop - endfacet - facet normal -0.624462 -0.781055 0 - outer loop - vertex 2.18226 0.436178 0.489362 - vertex 2.18846 0.431223 -0.510638 - vertex 2.18846 0.431223 0.489362 - endloop - endfacet - facet normal -0.670252 -0.742134 -0 - outer loop - vertex 2.18846 0.431223 0.489362 - vertex 2.18846 0.431223 -0.510638 - vertex 2.19439 0.425862 -0.510638 - endloop - endfacet - facet normal -0.670252 -0.742134 0 - outer loop - vertex 2.18846 0.431223 0.489362 - vertex 2.19439 0.425862 -0.510638 - vertex 2.19439 0.425862 0.489362 - endloop - endfacet - facet normal -0.713597 -0.700557 -0 - outer loop - vertex 2.19439 0.425862 0.489362 - vertex 2.19439 0.425862 -0.510638 - vertex 2.20006 0.420091 -0.510638 - endloop - endfacet - facet normal -0.713597 -0.700557 0 - outer loop - vertex 2.19439 0.425862 0.489362 - vertex 2.20006 0.420091 -0.510638 - vertex 2.20006 0.420091 0.489362 - endloop - endfacet - facet normal -0.75417 -0.65668 -0 - outer loop - vertex 2.20006 0.420091 0.489362 - vertex 2.20006 0.420091 -0.510638 - vertex 2.20544 0.413911 -0.510638 - endloop - endfacet - facet normal -0.75417 -0.65668 0 - outer loop - vertex 2.20006 0.420091 0.489362 - vertex 2.20544 0.413911 -0.510638 - vertex 2.20544 0.413911 0.489362 - endloop - endfacet - facet normal -0.791679 -0.610937 -0 - outer loop - vertex 2.20544 0.413911 0.489362 - vertex 2.20544 0.413911 -0.510638 - vertex 2.21053 0.407319 -0.510638 - endloop - endfacet - facet normal -0.791679 -0.610937 0 - outer loop - vertex 2.20544 0.413911 0.489362 - vertex 2.21053 0.407319 -0.510638 - vertex 2.21053 0.407319 0.489362 - endloop - endfacet - facet normal -0.82597 -0.563714 -0 - outer loop - vertex 2.21053 0.407319 0.489362 - vertex 2.21053 0.407319 -0.510638 - vertex 2.21531 0.400314 -0.510638 - endloop - endfacet - facet normal -0.82597 -0.563714 0 - outer loop - vertex 2.21053 0.407319 0.489362 - vertex 2.21531 0.400314 -0.510638 - vertex 2.21531 0.400314 0.489362 - endloop - endfacet - facet normal -0.856897 -0.515487 -0 - outer loop - vertex 2.21531 0.400314 0.489362 - vertex 2.21531 0.400314 -0.510638 - vertex 2.21977 0.392895 -0.510638 - endloop - endfacet - facet normal -0.856897 -0.515487 0 - outer loop - vertex 2.21531 0.400314 0.489362 - vertex 2.21977 0.392895 -0.510638 - vertex 2.21977 0.392895 0.489362 - endloop - endfacet - facet normal -0.884416 -0.466699 -0 - outer loop - vertex 2.21977 0.392895 0.489362 - vertex 2.21977 0.392895 -0.510638 - vertex 2.2239 0.385059 -0.510638 - endloop - endfacet - facet normal -0.884416 -0.466699 0 - outer loop - vertex 2.21977 0.392895 0.489362 - vertex 2.2239 0.385059 -0.510638 - vertex 2.2239 0.385059 0.489362 - endloop - endfacet - facet normal -0.908574 -0.417725 -0 - outer loop - vertex 2.2239 0.385059 0.489362 - vertex 2.2239 0.385059 -0.510638 - vertex 2.2277 0.376805 -0.510638 - endloop - endfacet - facet normal -0.908574 -0.417725 0 - outer loop - vertex 2.2239 0.385059 0.489362 - vertex 2.2277 0.376805 -0.510638 - vertex 2.2277 0.376805 0.489362 - endloop - endfacet - facet normal -0.929423 -0.369016 -0 - outer loop - vertex 2.2277 0.376805 0.489362 - vertex 2.2277 0.376805 -0.510638 - vertex 2.23114 0.368132 -0.510638 - endloop - endfacet - facet normal -0.929423 -0.369016 0 - outer loop - vertex 2.2277 0.376805 0.489362 - vertex 2.23114 0.368132 -0.510638 - vertex 2.23114 0.368132 0.489362 - endloop - endfacet - facet normal -0.947123 -0.320871 -0 - outer loop - vertex 2.23114 0.368132 0.489362 - vertex 2.23114 0.368132 -0.510638 - vertex 2.23422 0.359039 -0.510638 - endloop - endfacet - facet normal -0.947123 -0.320871 0 - outer loop - vertex 2.23114 0.368132 0.489362 - vertex 2.23422 0.359039 -0.510638 - vertex 2.23422 0.359039 0.489362 - endloop - endfacet - facet normal -0.961848 -0.273584 -0 - outer loop - vertex 2.23422 0.359039 0.489362 - vertex 2.23422 0.359039 -0.510638 - vertex 2.23693 0.349522 -0.510638 - endloop - endfacet - facet normal -0.961848 -0.273584 0 - outer loop - vertex 2.23422 0.359039 0.489362 - vertex 2.23693 0.349522 -0.510638 - vertex 2.23693 0.349522 0.489362 - endloop - endfacet - facet normal -0.973796 -0.227423 -0 - outer loop - vertex 2.23693 0.349522 0.489362 - vertex 2.23693 0.349522 -0.510638 - vertex 2.23925 0.339582 -0.510638 - endloop - endfacet - facet normal -0.973796 -0.227423 0 - outer loop - vertex 2.23693 0.349522 0.489362 - vertex 2.23925 0.339582 -0.510638 - vertex 2.23925 0.339582 0.489362 - endloop - endfacet - facet normal -0.983194 -0.182562 -0 - outer loop - vertex 2.23925 0.339582 0.489362 - vertex 2.23925 0.339582 -0.510638 - vertex 2.24118 0.329216 -0.510638 - endloop - endfacet - facet normal -0.983194 -0.182562 0 - outer loop - vertex 2.23925 0.339582 0.489362 - vertex 2.24118 0.329216 -0.510638 - vertex 2.24118 0.329216 0.489362 - endloop - endfacet - facet normal -0.990268 -0.139171 -0 - outer loop - vertex 2.24118 0.329216 0.489362 - vertex 2.24118 0.329216 -0.510638 - vertex 2.24269 0.318423 -0.510638 - endloop - endfacet - facet normal -0.990268 -0.139171 0 - outer loop - vertex 2.24118 0.329216 0.489362 - vertex 2.24269 0.318423 -0.510638 - vertex 2.24269 0.318423 0.489362 - endloop - endfacet - facet normal -0.995252 -0.0973329 -0 - outer loop - vertex 2.24269 0.318423 0.489362 - vertex 2.24269 0.318423 -0.510638 - vertex 2.24379 0.307202 -0.510638 - endloop - endfacet - facet normal -0.995252 -0.0973329 0 - outer loop - vertex 2.24269 0.318423 0.489362 - vertex 2.24379 0.307202 -0.510638 - vertex 2.24379 0.307202 0.489362 - endloop - endfacet - facet normal -0.998366 -0.0571385 -0 - outer loop - vertex 2.24379 0.307202 0.489362 - vertex 2.24379 0.307202 -0.510638 - vertex 2.24446 0.29555 -0.510638 - endloop - endfacet - facet normal -0.998366 -0.0571385 0 - outer loop - vertex 2.24379 0.307202 0.489362 - vertex 2.24446 0.29555 -0.510638 - vertex 2.24446 0.29555 0.489362 - endloop - endfacet - facet normal -0.999827 -0.0186029 -0 - outer loop - vertex 2.24446 0.29555 0.489362 - vertex 2.24446 0.29555 -0.510638 - vertex 2.24468 0.283466 -0.510638 - endloop - endfacet - facet normal -0.999827 -0.0186029 0 - outer loop - vertex 2.24446 0.29555 0.489362 - vertex 2.24468 0.283466 -0.510638 - vertex 2.24468 0.283466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 2.24468 0.283466 0.489362 - vertex 2.24468 0.283466 -0.510638 - vertex 2.24468 0.00646639 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 2.24468 0.283466 0.489362 - vertex 2.24468 0.00646639 -0.510638 - vertex 2.24468 0.00646639 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 2.24468 0.00646639 0.489362 - vertex 2.24468 0.00646639 -0.510638 - vertex 2.15568 0.00646639 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 2.24468 0.00646639 0.489362 - vertex 2.15568 0.00646639 -0.510638 - vertex 2.15568 0.00646639 0.489362 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 2.15568 0.00646639 0.489362 - vertex 2.15568 0.00646639 -0.510638 - vertex 2.15568 0.284466 -0.510638 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 2.15568 0.00646639 0.489362 - vertex 2.15568 0.284466 -0.510638 - vertex 2.15568 0.284466 0.489362 - endloop - endfacet - facet normal 0.999851 0.0172871 0 - outer loop - vertex 2.15568 0.284466 0.489362 - vertex 2.15568 0.284466 -0.510638 - vertex 2.15557 0.290989 -0.510638 - endloop - endfacet - facet normal 0.999851 0.0172871 0 - outer loop - vertex 2.15568 0.284466 0.489362 - vertex 2.15557 0.290989 -0.510638 - vertex 2.15557 0.290989 0.489362 - endloop - endfacet - facet normal 0.998606 0.0527807 0 - outer loop - vertex 2.15557 0.290989 0.489362 - vertex 2.15557 0.290989 -0.510638 - vertex 2.15523 0.297354 -0.510638 - endloop - endfacet - facet normal 0.998606 0.0527807 0 - outer loop - vertex 2.15557 0.290989 0.489362 - vertex 2.15523 0.297354 -0.510638 - vertex 2.15523 0.297354 0.489362 - endloop - endfacet - facet normal 0.995996 0.0893944 0 - outer loop - vertex 2.15523 0.297354 0.489362 - vertex 2.15523 0.297354 -0.510638 - vertex 2.15468 0.303556 -0.510638 - endloop - endfacet - facet normal 0.995996 0.0893944 0 - outer loop - vertex 2.15523 0.297354 0.489362 - vertex 2.15468 0.303556 -0.510638 - vertex 2.15468 0.303556 0.489362 - endloop - endfacet - facet normal 0.991875 0.127214 0 - outer loop - vertex 2.15468 0.303556 0.489362 - vertex 2.15468 0.303556 -0.510638 - vertex 2.1539 0.309592 -0.510638 - endloop - endfacet - facet normal 0.991875 0.127214 0 - outer loop - vertex 2.15468 0.303556 0.489362 - vertex 2.1539 0.309592 -0.510638 - vertex 2.1539 0.309592 0.489362 - endloop - endfacet - facet normal 0.986092 0.1662 0 - outer loop - vertex 2.1539 0.309592 0.489362 - vertex 2.1539 0.309592 -0.510638 - vertex 2.15291 0.315457 -0.510638 - endloop - endfacet - facet normal 0.986092 0.1662 0 - outer loop - vertex 2.1539 0.309592 0.489362 - vertex 2.15291 0.315457 -0.510638 - vertex 2.15291 0.315457 0.489362 - endloop - endfacet - facet normal 0.978489 0.206298 0 - outer loop - vertex 2.15291 0.315457 0.489362 - vertex 2.15291 0.315457 -0.510638 - vertex 2.15171 0.321146 -0.510638 - endloop - endfacet - facet normal 0.978489 0.206298 0 - outer loop - vertex 2.15291 0.315457 0.489362 - vertex 2.15171 0.321146 -0.510638 - vertex 2.15171 0.321146 0.489362 - endloop - endfacet - facet normal 0.968885 0.24751 0 - outer loop - vertex 2.15171 0.321146 0.489362 - vertex 2.15171 0.321146 -0.510638 - vertex 2.15031 0.326656 -0.510638 - endloop - endfacet - facet normal 0.968885 0.24751 0 - outer loop - vertex 2.15171 0.321146 0.489362 - vertex 2.15031 0.326656 -0.510638 - vertex 2.15031 0.326656 0.489362 - endloop - endfacet - facet normal 0.957082 0.289817 0 - outer loop - vertex 2.15031 0.326656 0.489362 - vertex 2.15031 0.326656 -0.510638 - vertex 2.14869 0.33198 -0.510638 - endloop - endfacet - facet normal 0.957082 0.289817 0 - outer loop - vertex 2.15031 0.326656 0.489362 - vertex 2.14869 0.33198 -0.510638 - vertex 2.14869 0.33198 0.489362 - endloop - endfacet - facet normal 0.942907 0.333057 0 - outer loop - vertex 2.14869 0.33198 0.489362 - vertex 2.14869 0.33198 -0.510638 - vertex 2.14688 0.337116 -0.510638 - endloop - endfacet - facet normal 0.942907 0.333057 0 - outer loop - vertex 2.14869 0.33198 0.489362 - vertex 2.14688 0.337116 -0.510638 - vertex 2.14688 0.337116 0.489362 - endloop - endfacet - facet normal 0.926153 0.377149 0 - outer loop - vertex 2.14688 0.337116 0.489362 - vertex 2.14688 0.337116 -0.510638 - vertex 2.14487 0.342059 -0.510638 - endloop - endfacet - facet normal 0.926153 0.377149 0 - outer loop - vertex 2.14688 0.337116 0.489362 - vertex 2.14487 0.342059 -0.510638 - vertex 2.14487 0.342059 0.489362 - endloop - endfacet - facet normal 0.906606 0.421978 0 - outer loop - vertex 2.14487 0.342059 0.489362 - vertex 2.14487 0.342059 -0.510638 - vertex 2.14266 0.346804 -0.510638 - endloop - endfacet - facet normal 0.906606 0.421978 0 - outer loop - vertex 2.14487 0.342059 0.489362 - vertex 2.14266 0.346804 -0.510638 - vertex 2.14266 0.346804 0.489362 - endloop - endfacet - facet normal 0.884112 0.467276 0 - outer loop - vertex 2.14266 0.346804 0.489362 - vertex 2.14266 0.346804 -0.510638 - vertex 2.14026 0.351346 -0.510638 - endloop - endfacet - facet normal 0.884112 0.467276 0 - outer loop - vertex 2.14266 0.346804 0.489362 - vertex 2.14026 0.351346 -0.510638 - vertex 2.14026 0.351346 0.489362 - endloop - endfacet - facet normal 0.858486 0.512837 0 - outer loop - vertex 2.14026 0.351346 0.489362 - vertex 2.14026 0.351346 -0.510638 - vertex 2.13767 0.355682 -0.510638 - endloop - endfacet - facet normal 0.858486 0.512837 0 - outer loop - vertex 2.14026 0.351346 0.489362 - vertex 2.13767 0.355682 -0.510638 - vertex 2.13767 0.355682 0.489362 - endloop - endfacet - facet normal 0.829582 0.558385 0 - outer loop - vertex 2.13767 0.355682 0.489362 - vertex 2.13767 0.355682 -0.510638 - vertex 2.13489 0.359807 -0.510638 - endloop - endfacet - facet normal 0.829582 0.558385 0 - outer loop - vertex 2.13767 0.355682 0.489362 - vertex 2.13489 0.359807 -0.510638 - vertex 2.13489 0.359807 0.489362 - endloop - endfacet - facet normal 0.797295 0.603589 0 - outer loop - vertex 2.13489 0.359807 0.489362 - vertex 2.13489 0.359807 -0.510638 - vertex 2.13193 0.363716 -0.510638 - endloop - endfacet - facet normal 0.797295 0.603589 0 - outer loop - vertex 2.13489 0.359807 0.489362 - vertex 2.13193 0.363716 -0.510638 - vertex 2.13193 0.363716 0.489362 - endloop - endfacet - facet normal 0.76157 0.648083 0 - outer loop - vertex 2.13193 0.363716 0.489362 - vertex 2.13193 0.363716 -0.510638 - vertex 2.12879 0.367406 -0.510638 - endloop - endfacet - facet normal 0.76157 0.648083 0 - outer loop - vertex 2.13193 0.363716 0.489362 - vertex 2.12879 0.367406 -0.510638 - vertex 2.12879 0.367406 0.489362 - endloop - endfacet - facet normal 0.72241 0.691465 0 - outer loop - vertex 2.12879 0.367406 0.489362 - vertex 2.12879 0.367406 -0.510638 - vertex 2.12548 0.37087 -0.510638 - endloop - endfacet - facet normal 0.72241 0.691465 0 - outer loop - vertex 2.12879 0.367406 0.489362 - vertex 2.12548 0.37087 -0.510638 - vertex 2.12548 0.37087 0.489362 - endloop - endfacet - facet normal 0.67989 0.733314 0 - outer loop - vertex 2.12548 0.37087 0.489362 - vertex 2.12548 0.37087 -0.510638 - vertex 2.12199 0.374106 -0.510638 - endloop - endfacet - facet normal 0.67989 0.733314 0 - outer loop - vertex 2.12548 0.37087 0.489362 - vertex 2.12199 0.374106 -0.510638 - vertex 2.12199 0.374106 0.489362 - endloop - endfacet - facet normal 0.634159 0.773202 0 - outer loop - vertex 2.12199 0.374106 0.489362 - vertex 2.12199 0.374106 -0.510638 - vertex 2.11832 0.377109 -0.510638 - endloop - endfacet - facet normal 0.634159 0.773202 0 - outer loop - vertex 2.12199 0.374106 0.489362 - vertex 2.11832 0.377109 -0.510638 - vertex 2.11832 0.377109 0.489362 - endloop - endfacet - facet normal 0.585483 0.810685 0 - outer loop - vertex 2.11832 0.377109 0.489362 - vertex 2.11832 0.377109 -0.510638 - vertex 2.1145 0.379874 -0.510638 - endloop - endfacet - facet normal 0.585483 0.810685 0 - outer loop - vertex 2.11832 0.377109 0.489362 - vertex 2.1145 0.379874 -0.510638 - vertex 2.1145 0.379874 0.489362 - endloop - endfacet - facet normal 0.534117 0.84541 0 - outer loop - vertex 2.1145 0.379874 0.489362 - vertex 2.1145 0.379874 -0.510638 - vertex 2.1105 0.382396 -0.510638 - endloop - endfacet - facet normal 0.534117 0.84541 0 - outer loop - vertex 2.1145 0.379874 0.489362 - vertex 2.1105 0.382396 -0.510638 - vertex 2.1105 0.382396 0.489362 - endloop - endfacet - facet normal 0.480476 0.877008 0 - outer loop - vertex 2.1105 0.382396 0.489362 - vertex 2.1105 0.382396 -0.510638 - vertex 2.10635 0.384672 -0.510638 - endloop - endfacet - facet normal 0.480476 0.877008 0 - outer loop - vertex 2.1105 0.382396 0.489362 - vertex 2.10635 0.384672 -0.510638 - vertex 2.10635 0.384672 0.489362 - endloop - endfacet - facet normal 0.425027 0.90518 0 - outer loop - vertex 2.10635 0.384672 0.489362 - vertex 2.10635 0.384672 -0.510638 - vertex 2.10204 0.386697 -0.510638 - endloop - endfacet - facet normal 0.425027 0.90518 0 - outer loop - vertex 2.10635 0.384672 0.489362 - vertex 2.10204 0.386697 -0.510638 - vertex 2.10204 0.386697 0.489362 - endloop - endfacet - facet normal 0.368209 0.929743 0 - outer loop - vertex 2.10204 0.386697 0.489362 - vertex 2.10204 0.386697 -0.510638 - vertex 2.09757 0.388466 -0.510638 - endloop - endfacet - facet normal 0.368209 0.929743 0 - outer loop - vertex 2.10204 0.386697 0.489362 - vertex 2.09757 0.388466 -0.510638 - vertex 2.09757 0.388466 0.489362 - endloop - endfacet - facet normal 0.310567 0.950552 0 - outer loop - vertex 2.09757 0.388466 0.489362 - vertex 2.09757 0.388466 -0.510638 - vertex 2.09295 0.389976 -0.510638 - endloop - endfacet - facet normal 0.310567 0.950552 0 - outer loop - vertex 2.09757 0.388466 0.489362 - vertex 2.09295 0.389976 -0.510638 - vertex 2.09295 0.389976 0.489362 - endloop - endfacet - facet normal 0.252591 0.967573 0 - outer loop - vertex 2.09295 0.389976 0.489362 - vertex 2.09295 0.389976 -0.510638 - vertex 2.08818 0.39122 -0.510638 - endloop - endfacet - facet normal 0.252591 0.967573 0 - outer loop - vertex 2.09295 0.389976 0.489362 - vertex 2.08818 0.39122 -0.510638 - vertex 2.08818 0.39122 0.489362 - endloop - endfacet - facet normal 0.194797 0.980844 0 - outer loop - vertex 2.08818 0.39122 0.489362 - vertex 2.08818 0.39122 -0.510638 - vertex 2.08327 0.392196 -0.510638 - endloop - endfacet - facet normal 0.194797 0.980844 0 - outer loop - vertex 2.08818 0.39122 0.489362 - vertex 2.08327 0.392196 -0.510638 - vertex 2.08327 0.392196 0.489362 - endloop - endfacet - facet normal 0.137616 0.990486 0 - outer loop - vertex 2.08327 0.392196 0.489362 - vertex 2.08327 0.392196 -0.510638 - vertex 2.07821 0.392899 -0.510638 - endloop - endfacet - facet normal 0.137616 0.990486 0 - outer loop - vertex 2.08327 0.392196 0.489362 - vertex 2.07821 0.392899 -0.510638 - vertex 2.07821 0.392899 0.489362 - endloop - endfacet - facet normal 0.0814786 0.996675 0 - outer loop - vertex 2.07821 0.392899 0.489362 - vertex 2.07821 0.392899 -0.510638 - vertex 2.07301 0.393324 -0.510638 - endloop - endfacet - facet normal 0.0814786 0.996675 0 - outer loop - vertex 2.07821 0.392899 0.489362 - vertex 2.07301 0.393324 -0.510638 - vertex 2.07301 0.393324 0.489362 - endloop - endfacet - facet normal 0.0267318 0.999643 0 - outer loop - vertex 2.07301 0.393324 0.489362 - vertex 2.07301 0.393324 -0.510638 - vertex 2.06768 0.393466 -0.510638 - endloop - endfacet - facet normal 0.0267318 0.999643 0 - outer loop - vertex 2.07301 0.393324 0.489362 - vertex 2.06768 0.393466 -0.510638 - vertex 2.06768 0.393466 0.489362 - endloop - endfacet - facet normal -0.0156 0.999878 0 - outer loop - vertex 2.06768 0.393466 0.489362 - vertex 2.06768 0.393466 -0.510638 - vertex 2.06381 0.393406 -0.510638 - endloop - endfacet - facet normal -0.0156 0.999878 0 - outer loop - vertex 2.06768 0.393466 0.489362 - vertex 2.06381 0.393406 -0.510638 - vertex 2.06381 0.393406 0.489362 - endloop - endfacet - facet normal -0.0477545 0.998859 0 - outer loop - vertex 2.06381 0.393406 0.489362 - vertex 2.06381 0.393406 -0.510638 - vertex 2.05998 0.393223 -0.510638 - endloop - endfacet - facet normal -0.0477545 0.998859 0 - outer loop - vertex 2.06381 0.393406 0.489362 - vertex 2.05998 0.393223 -0.510638 - vertex 2.05998 0.393223 0.489362 - endloop - endfacet - facet normal -0.0811412 0.996703 0 - outer loop - vertex 2.05998 0.393223 0.489362 - vertex 2.05998 0.393223 -0.510638 - vertex 2.0562 0.392915 -0.510638 - endloop - endfacet - facet normal -0.0811412 0.996703 0 - outer loop - vertex 2.05998 0.393223 0.489362 - vertex 2.0562 0.392915 -0.510638 - vertex 2.0562 0.392915 0.489362 - endloop - endfacet - facet normal -0.115573 0.993299 0 - outer loop - vertex 2.0562 0.392915 0.489362 - vertex 2.0562 0.392915 -0.510638 - vertex 2.05246 0.39248 -0.510638 - endloop - endfacet - facet normal -0.115573 0.993299 0 - outer loop - vertex 2.0562 0.392915 0.489362 - vertex 2.05246 0.39248 -0.510638 - vertex 2.05246 0.39248 0.489362 - endloop - endfacet - facet normal -0.150797 0.988565 0 - outer loop - vertex 2.05246 0.39248 0.489362 - vertex 2.05246 0.39248 -0.510638 - vertex 2.04876 0.391915 -0.510638 - endloop - endfacet - facet normal -0.150797 0.988565 0 - outer loop - vertex 2.05246 0.39248 0.489362 - vertex 2.04876 0.391915 -0.510638 - vertex 2.04876 0.391915 0.489362 - endloop - endfacet - facet normal -0.186569 0.982442 0 - outer loop - vertex 2.04876 0.391915 0.489362 - vertex 2.04876 0.391915 -0.510638 - vertex 2.04509 0.391218 -0.510638 - endloop - endfacet - facet normal -0.186569 0.982442 0 - outer loop - vertex 2.04876 0.391915 0.489362 - vertex 2.04509 0.391218 -0.510638 - vertex 2.04509 0.391218 0.489362 - endloop - endfacet - facet normal -0.222599 0.97491 0 - outer loop - vertex 2.04509 0.391218 0.489362 - vertex 2.04509 0.391218 -0.510638 - vertex 2.04145 0.390387 -0.510638 - endloop - endfacet - facet normal -0.222599 0.97491 0 - outer loop - vertex 2.04509 0.391218 0.489362 - vertex 2.04145 0.390387 -0.510638 - vertex 2.04145 0.390387 0.489362 - endloop - endfacet - facet normal -0.258607 0.965983 0 - outer loop - vertex 2.04145 0.390387 0.489362 - vertex 2.04145 0.390387 -0.510638 - vertex 2.03783 0.389418 -0.510638 - endloop - endfacet - facet normal -0.258607 0.965983 0 - outer loop - vertex 2.04145 0.390387 0.489362 - vertex 2.03783 0.389418 -0.510638 - vertex 2.03783 0.389418 0.489362 - endloop - endfacet - facet normal -0.294304 0.955712 0 - outer loop - vertex 2.03783 0.389418 0.489362 - vertex 2.03783 0.389418 -0.510638 - vertex 2.03423 0.388309 -0.510638 - endloop - endfacet - facet normal -0.294304 0.955712 0 - outer loop - vertex 2.03783 0.389418 0.489362 - vertex 2.03423 0.388309 -0.510638 - vertex 2.03423 0.388309 0.489362 - endloop - endfacet - facet normal -0.329423 0.944183 0 - outer loop - vertex 2.03423 0.388309 0.489362 - vertex 2.03423 0.388309 -0.510638 - vertex 2.03065 0.387059 -0.510638 - endloop - endfacet - facet normal -0.329423 0.944183 0 - outer loop - vertex 2.03423 0.388309 0.489362 - vertex 2.03065 0.387059 -0.510638 - vertex 2.03065 0.387059 0.489362 - endloop - endfacet - facet normal -0.36366 0.931532 0 - outer loop - vertex 2.03065 0.387059 0.489362 - vertex 2.03065 0.387059 -0.510638 - vertex 2.02707 0.385664 -0.510638 - endloop - endfacet - facet normal -0.36366 0.931532 0 - outer loop - vertex 2.03065 0.387059 0.489362 - vertex 2.02707 0.385664 -0.510638 - vertex 2.02707 0.385664 0.489362 - endloop - endfacet - facet normal -0.396839 0.917888 0 - outer loop - vertex 2.02707 0.385664 0.489362 - vertex 2.02707 0.385664 -0.510638 - vertex 2.02351 0.384122 -0.510638 - endloop - endfacet - facet normal -0.396839 0.917888 0 - outer loop - vertex 2.02707 0.385664 0.489362 - vertex 2.02351 0.384122 -0.510638 - vertex 2.02351 0.384122 0.489362 - endloop - endfacet - facet normal -0.428737 0.903429 0 - outer loop - vertex 2.02351 0.384122 0.489362 - vertex 2.02351 0.384122 -0.510638 - vertex 2.01994 0.382431 -0.510638 - endloop - endfacet - facet normal -0.428737 0.903429 0 - outer loop - vertex 2.02351 0.384122 0.489362 - vertex 2.01994 0.382431 -0.510638 - vertex 2.01994 0.382431 0.489362 - endloop - endfacet - facet normal -0.459222 0.888322 0 - outer loop - vertex 2.01994 0.382431 0.489362 - vertex 2.01994 0.382431 -0.510638 - vertex 2.01638 0.380588 -0.510638 - endloop - endfacet - facet normal -0.459222 0.888322 0 - outer loop - vertex 2.01994 0.382431 0.489362 - vertex 2.01638 0.380588 -0.510638 - vertex 2.01638 0.380588 0.489362 - endloop - endfacet - facet normal -0.488127 0.872773 0 - outer loop - vertex 2.01638 0.380588 0.489362 - vertex 2.01638 0.380588 -0.510638 - vertex 2.01281 0.378591 -0.510638 - endloop - endfacet - facet normal -0.488127 0.872773 0 - outer loop - vertex 2.01638 0.380588 0.489362 - vertex 2.01281 0.378591 -0.510638 - vertex 2.01281 0.378591 0.489362 - endloop - endfacet - facet normal -0.515423 0.856936 0 - outer loop - vertex 2.01281 0.378591 0.489362 - vertex 2.01281 0.378591 -0.510638 - vertex 2.00923 0.376438 -0.510638 - endloop - endfacet - facet normal -0.515423 0.856936 0 - outer loop - vertex 2.01281 0.378591 0.489362 - vertex 2.00923 0.376438 -0.510638 - vertex 2.00923 0.376438 0.489362 - endloop - endfacet - facet normal -0.541063 0.840982 0 - outer loop - vertex 2.00923 0.376438 0.489362 - vertex 2.00923 0.376438 -0.510638 - vertex 2.00563 0.374125 -0.510638 - endloop - endfacet - facet normal -0.541063 0.840982 0 - outer loop - vertex 2.00923 0.376438 0.489362 - vertex 2.00563 0.374125 -0.510638 - vertex 2.00563 0.374125 0.489362 - endloop - endfacet - facet normal -0.564998 0.825092 0 - outer loop - vertex 2.00563 0.374125 0.489362 - vertex 2.00563 0.374125 -0.510638 - vertex 2.00202 0.37165 -0.510638 - endloop - endfacet - facet normal -0.564998 0.825092 0 - outer loop - vertex 2.00563 0.374125 0.489362 - vertex 2.00202 0.37165 -0.510638 - vertex 2.00202 0.37165 0.489362 - endloop - endfacet - facet normal -0.587303 0.809367 0 - outer loop - vertex 2.00202 0.37165 0.489362 - vertex 2.00202 0.37165 -0.510638 - vertex 1.99838 0.369012 -0.510638 - endloop - endfacet - facet normal -0.587303 0.809367 0 - outer loop - vertex 2.00202 0.37165 0.489362 - vertex 1.99838 0.369012 -0.510638 - vertex 1.99838 0.369012 0.489362 - endloop - endfacet - facet normal -0.607966 0.793963 0 - outer loop - vertex 1.99838 0.369012 0.489362 - vertex 1.99838 0.369012 -0.510638 - vertex 1.99472 0.366207 -0.510638 - endloop - endfacet - facet normal -0.607966 0.793963 0 - outer loop - vertex 1.99838 0.369012 0.489362 - vertex 1.99472 0.366207 -0.510638 - vertex 1.99472 0.366207 0.489362 - endloop - endfacet - facet normal -0.627069 0.778963 0 - outer loop - vertex 1.99472 0.366207 0.489362 - vertex 1.99472 0.366207 -0.510638 - vertex 1.99103 0.363233 -0.510638 - endloop - endfacet - facet normal -0.627069 0.778963 0 - outer loop - vertex 1.99472 0.366207 0.489362 - vertex 1.99103 0.363233 -0.510638 - vertex 1.99103 0.363233 0.489362 - endloop - endfacet - facet normal -0.644684 0.76445 0 - outer loop - vertex 1.99103 0.363233 0.489362 - vertex 1.99103 0.363233 -0.510638 - vertex 1.9873 0.360088 -0.510638 - endloop - endfacet - facet normal -0.644684 0.76445 0 - outer loop - vertex 1.99103 0.363233 0.489362 - vertex 1.9873 0.360088 -0.510638 - vertex 1.9873 0.360088 0.489362 - endloop - endfacet - facet normal -0.660874 0.750497 0 - outer loop - vertex 1.9873 0.360088 0.489362 - vertex 1.9873 0.360088 -0.510638 - vertex 1.98353 0.356769 -0.510638 - endloop - endfacet - facet normal -0.660874 0.750497 0 - outer loop - vertex 1.9873 0.360088 0.489362 - vertex 1.98353 0.356769 -0.510638 - vertex 1.98353 0.356769 0.489362 - endloop - endfacet - facet normal -0.675737 0.737143 0 - outer loop - vertex 1.98353 0.356769 0.489362 - vertex 1.98353 0.356769 -0.510638 - vertex 1.97971 0.353274 -0.510638 - endloop - endfacet - facet normal -0.675737 0.737143 0 - outer loop - vertex 1.98353 0.356769 0.489362 - vertex 1.97971 0.353274 -0.510638 - vertex 1.97971 0.353274 0.489362 - endloop - endfacet - facet normal -0.689347 0.724432 0 - outer loop - vertex 1.97971 0.353274 0.489362 - vertex 1.97971 0.353274 -0.510638 - vertex 1.97585 0.349601 -0.510638 - endloop - endfacet - facet normal -0.689347 0.724432 0 - outer loop - vertex 1.97971 0.353274 0.489362 - vertex 1.97585 0.349601 -0.510638 - vertex 1.97585 0.349601 0.489362 - endloop - endfacet - facet normal -0.7018 0.712374 0 - outer loop - vertex 1.97585 0.349601 0.489362 - vertex 1.97585 0.349601 -0.510638 - vertex 1.97194 0.345746 -0.510638 - endloop - endfacet - facet normal -0.7018 0.712374 0 - outer loop - vertex 1.97585 0.349601 0.489362 - vertex 1.97194 0.345746 -0.510638 - vertex 1.97194 0.345746 0.489362 - endloop - endfacet - facet normal -0.71317 0.700991 0 - outer loop - vertex 1.97194 0.345746 0.489362 - vertex 1.97194 0.345746 -0.510638 - vertex 1.96797 0.341707 -0.510638 - endloop - endfacet - facet normal -0.71317 0.700991 0 - outer loop - vertex 1.97194 0.345746 0.489362 - vertex 1.96797 0.341707 -0.510638 - vertex 1.96797 0.341707 0.489362 - endloop - endfacet - facet normal -0.723562 0.69026 0 - outer loop - vertex 1.96797 0.341707 0.489362 - vertex 1.96797 0.341707 -0.510638 - vertex 1.96394 0.337483 -0.510638 - endloop - endfacet - facet normal -0.723562 0.69026 0 - outer loop - vertex 1.96797 0.341707 0.489362 - vertex 1.96394 0.337483 -0.510638 - vertex 1.96394 0.337483 0.489362 - endloop - endfacet - facet normal -0.733017 0.68021 0 - outer loop - vertex 1.96394 0.337483 0.489362 - vertex 1.96394 0.337483 -0.510638 - vertex 1.95985 0.33307 -0.510638 - endloop - endfacet - facet normal -0.733017 0.68021 0 - outer loop - vertex 1.96394 0.337483 0.489362 - vertex 1.95985 0.33307 -0.510638 - vertex 1.95985 0.33307 0.489362 - endloop - endfacet - facet normal -0.741631 0.670808 0 - outer loop - vertex 1.95985 0.33307 0.489362 - vertex 1.95985 0.33307 -0.510638 - vertex 1.95568 0.328466 -0.510638 - endloop - endfacet - facet normal -0.741631 0.670808 0 - outer loop - vertex 1.95985 0.33307 0.489362 - vertex 1.95568 0.328466 -0.510638 - vertex 1.95568 0.328466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 1.95568 0.328466 0.489362 - vertex 1.95568 0.328466 -0.510638 - vertex 1.95568 0.00646639 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 1.95568 0.328466 0.489362 - vertex 1.95568 0.00646639 -0.510638 - vertex 1.95568 0.00646639 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 1.95568 0.00646639 0.489362 - vertex 1.95568 0.00646639 -0.510638 - vertex 1.86668 0.00646639 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 1.95568 0.00646639 0.489362 - vertex 1.86668 0.00646639 -0.510638 - vertex 1.86668 0.00646639 0.489362 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 1.86668 0.00646639 0.489362 - vertex 1.86668 0.00646639 -0.510638 - vertex 1.86668 0.455466 -0.510638 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 1.86668 0.00646639 0.489362 - vertex 1.86668 0.455466 -0.510638 - vertex 1.86668 0.455466 0.489362 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 1.86668 0.455466 0.489362 - vertex 1.86668 0.455466 -0.510638 - vertex 1.95568 0.455466 -0.510638 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 1.86668 0.455466 0.489362 - vertex 1.95568 0.455466 -0.510638 - vertex 1.95568 0.455466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 1.95568 0.455466 0.489362 - vertex 1.95568 0.455466 -0.510638 - vertex 1.95568 0.396466 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 1.95568 0.455466 0.489362 - vertex 1.95568 0.396466 -0.510638 - vertex 1.95568 0.396466 0.489362 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 1.95568 0.396466 0.489362 - vertex 1.95568 0.396466 -0.510638 - vertex 1.95768 0.396466 -0.510638 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 1.95568 0.396466 0.489362 - vertex 1.95768 0.396466 -0.510638 - vertex 1.95768 0.396466 0.489362 - endloop - endfacet - facet normal 0.487934 0.872881 0 - outer loop - vertex 2.95332 0.541277 0.489362 - vertex 2.95332 0.541277 -0.510638 - vertex 2.94504 0.545908 -0.510638 - endloop - endfacet - facet normal 0.487934 0.872881 0 - outer loop - vertex 2.95332 0.541277 0.489362 - vertex 2.94504 0.545908 -0.510638 - vertex 2.94504 0.545908 0.489362 - endloop - endfacet - facet normal 0.47667 0.879082 0 - outer loop - vertex 2.94504 0.545908 0.489362 - vertex 2.94504 0.545908 -0.510638 - vertex 2.93682 0.550362 -0.510638 - endloop - endfacet - facet normal 0.47667 0.879082 0 - outer loop - vertex 2.94504 0.545908 0.489362 - vertex 2.93682 0.550362 -0.510638 - vertex 2.93682 0.550362 0.489362 - endloop - endfacet - facet normal 0.464851 0.885389 0 - outer loop - vertex 2.93682 0.550362 0.489362 - vertex 2.93682 0.550362 -0.510638 - vertex 2.92868 0.554638 -0.510638 - endloop - endfacet - facet normal 0.464851 0.885389 0 - outer loop - vertex 2.93682 0.550362 0.489362 - vertex 2.92868 0.554638 -0.510638 - vertex 2.92868 0.554638 0.489362 - endloop - endfacet - facet normal 0.452488 0.891771 0 - outer loop - vertex 2.92868 0.554638 0.489362 - vertex 2.92868 0.554638 -0.510638 - vertex 2.92059 0.55874 -0.510638 - endloop - endfacet - facet normal 0.452488 0.891771 0 - outer loop - vertex 2.92868 0.554638 0.489362 - vertex 2.92059 0.55874 -0.510638 - vertex 2.92059 0.55874 0.489362 - endloop - endfacet - facet normal 0.439575 0.898206 0 - outer loop - vertex 2.92059 0.55874 0.489362 - vertex 2.92059 0.55874 -0.510638 - vertex 2.91257 0.562667 -0.510638 - endloop - endfacet - facet normal 0.439575 0.898206 0 - outer loop - vertex 2.92059 0.55874 0.489362 - vertex 2.91257 0.562667 -0.510638 - vertex 2.91257 0.562667 0.489362 - endloop - endfacet - facet normal 0.426099 0.904677 0 - outer loop - vertex 2.91257 0.562667 0.489362 - vertex 2.91257 0.562667 -0.510638 - vertex 2.9046 0.56642 -0.510638 - endloop - endfacet - facet normal 0.426099 0.904677 0 - outer loop - vertex 2.91257 0.562667 0.489362 - vertex 2.9046 0.56642 -0.510638 - vertex 2.9046 0.56642 0.489362 - endloop - endfacet - facet normal 0.412068 0.911153 0 - outer loop - vertex 2.9046 0.56642 0.489362 - vertex 2.9046 0.56642 -0.510638 - vertex 2.89668 0.570001 -0.510638 - endloop - endfacet - facet normal 0.412068 0.911153 0 - outer loop - vertex 2.9046 0.56642 0.489362 - vertex 2.89668 0.570001 -0.510638 - vertex 2.89668 0.570001 0.489362 - endloop - endfacet - facet normal 0.397471 0.917615 0 - outer loop - vertex 2.89668 0.570001 0.489362 - vertex 2.89668 0.570001 -0.510638 - vertex 2.88881 0.573412 -0.510638 - endloop - endfacet - facet normal 0.397471 0.917615 0 - outer loop - vertex 2.89668 0.570001 0.489362 - vertex 2.88881 0.573412 -0.510638 - vertex 2.88881 0.573412 0.489362 - endloop - endfacet - facet normal 0.382343 0.924021 0 - outer loop - vertex 2.88881 0.573412 0.489362 - vertex 2.88881 0.573412 -0.510638 - vertex 2.88098 0.576652 -0.510638 - endloop - endfacet - facet normal 0.382343 0.924021 0 - outer loop - vertex 2.88881 0.573412 0.489362 - vertex 2.88098 0.576652 -0.510638 - vertex 2.88098 0.576652 0.489362 - endloop - endfacet - facet normal 0.366665 0.930353 0 - outer loop - vertex 2.88098 0.576652 0.489362 - vertex 2.88098 0.576652 -0.510638 - vertex 2.87319 0.579723 -0.510638 - endloop - endfacet - facet normal 0.366665 0.930353 0 - outer loop - vertex 2.88098 0.576652 0.489362 - vertex 2.87319 0.579723 -0.510638 - vertex 2.87319 0.579723 0.489362 - endloop - endfacet - facet normal 0.350464 0.936576 0 - outer loop - vertex 2.87319 0.579723 0.489362 - vertex 2.87319 0.579723 -0.510638 - vertex 2.86543 0.582627 -0.510638 - endloop - endfacet - facet normal 0.350464 0.936576 0 - outer loop - vertex 2.87319 0.579723 0.489362 - vertex 2.86543 0.582627 -0.510638 - vertex 2.86543 0.582627 0.489362 - endloop - endfacet - facet normal 0.333756 0.94266 0 - outer loop - vertex 2.86543 0.582627 0.489362 - vertex 2.86543 0.582627 -0.510638 - vertex 2.8577 0.585363 -0.510638 - endloop - endfacet - facet normal 0.333756 0.94266 0 - outer loop - vertex 2.86543 0.582627 0.489362 - vertex 2.8577 0.585363 -0.510638 - vertex 2.8577 0.585363 0.489362 - endloop - endfacet - facet normal 0.316556 0.948574 0 - outer loop - vertex 2.8577 0.585363 0.489362 - vertex 2.8577 0.585363 -0.510638 - vertex 2.84999 0.587935 -0.510638 - endloop - endfacet - facet normal 0.316556 0.948574 0 - outer loop - vertex 2.8577 0.585363 0.489362 - vertex 2.84999 0.587935 -0.510638 - vertex 2.84999 0.587935 0.489362 - endloop - endfacet - facet normal 0.298907 0.954282 0 - outer loop - vertex 2.84999 0.587935 0.489362 - vertex 2.84999 0.587935 -0.510638 - vertex 2.84231 0.590342 -0.510638 - endloop - endfacet - facet normal 0.298907 0.954282 0 - outer loop - vertex 2.84999 0.587935 0.489362 - vertex 2.84231 0.590342 -0.510638 - vertex 2.84231 0.590342 0.489362 - endloop - endfacet - facet normal 0.280833 0.959757 0 - outer loop - vertex 2.84231 0.590342 0.489362 - vertex 2.84231 0.590342 -0.510638 - vertex 2.83464 0.592585 -0.510638 - endloop - endfacet - facet normal 0.280833 0.959757 0 - outer loop - vertex 2.84231 0.590342 0.489362 - vertex 2.83464 0.592585 -0.510638 - vertex 2.83464 0.592585 0.489362 - endloop - endfacet - facet normal 0.262363 0.964969 0 - outer loop - vertex 2.83464 0.592585 0.489362 - vertex 2.83464 0.592585 -0.510638 - vertex 2.82699 0.594666 -0.510638 - endloop - endfacet - facet normal 0.262363 0.964969 0 - outer loop - vertex 2.83464 0.592585 0.489362 - vertex 2.82699 0.594666 -0.510638 - vertex 2.82699 0.594666 0.489362 - endloop - endfacet - facet normal 0.243546 0.969889 0 - outer loop - vertex 2.82699 0.594666 0.489362 - vertex 2.82699 0.594666 -0.510638 - vertex 2.81934 0.596586 -0.510638 - endloop - endfacet - facet normal 0.243546 0.969889 0 - outer loop - vertex 2.82699 0.594666 0.489362 - vertex 2.81934 0.596586 -0.510638 - vertex 2.81934 0.596586 0.489362 - endloop - endfacet - facet normal 0.224433 0.97449 0 - outer loop - vertex 2.81934 0.596586 0.489362 - vertex 2.81934 0.596586 -0.510638 - vertex 2.8117 0.598347 -0.510638 - endloop - endfacet - facet normal 0.224433 0.97449 0 - outer loop - vertex 2.81934 0.596586 0.489362 - vertex 2.8117 0.598347 -0.510638 - vertex 2.8117 0.598347 0.489362 - endloop - endfacet - facet normal 0.205058 0.97875 0 - outer loop - vertex 2.8117 0.598347 0.489362 - vertex 2.8117 0.598347 -0.510638 - vertex 2.80405 0.599948 -0.510638 - endloop - endfacet - facet normal 0.205058 0.97875 0 - outer loop - vertex 2.8117 0.598347 0.489362 - vertex 2.80405 0.599948 -0.510638 - vertex 2.80405 0.599948 0.489362 - endloop - endfacet - facet normal 0.185485 0.982647 0 - outer loop - vertex 2.80405 0.599948 0.489362 - vertex 2.80405 0.599948 -0.510638 - vertex 2.79641 0.601391 -0.510638 - endloop - endfacet - facet normal 0.185485 0.982647 0 - outer loop - vertex 2.80405 0.599948 0.489362 - vertex 2.79641 0.601391 -0.510638 - vertex 2.79641 0.601391 0.489362 - endloop - endfacet - facet normal 0.165758 0.986166 0 - outer loop - vertex 2.79641 0.601391 0.489362 - vertex 2.79641 0.601391 -0.510638 - vertex 2.78875 0.602678 -0.510638 - endloop - endfacet - facet normal 0.165758 0.986166 0 - outer loop - vertex 2.79641 0.601391 0.489362 - vertex 2.78875 0.602678 -0.510638 - vertex 2.78875 0.602678 0.489362 - endloop - endfacet - facet normal 0.145937 0.989294 0 - outer loop - vertex 2.78875 0.602678 0.489362 - vertex 2.78875 0.602678 -0.510638 - vertex 2.78108 0.60381 -0.510638 - endloop - endfacet - facet normal 0.145937 0.989294 0 - outer loop - vertex 2.78875 0.602678 0.489362 - vertex 2.78108 0.60381 -0.510638 - vertex 2.78108 0.60381 0.489362 - endloop - endfacet - facet normal 0.12608 0.99202 0 - outer loop - vertex 2.78108 0.60381 0.489362 - vertex 2.78108 0.60381 -0.510638 - vertex 2.77339 0.604786 -0.510638 - endloop - endfacet - facet normal 0.12608 0.99202 0 - outer loop - vertex 2.78108 0.60381 0.489362 - vertex 2.77339 0.604786 -0.510638 - vertex 2.77339 0.604786 0.489362 - endloop - endfacet - facet normal 0.106241 0.99434 0 - outer loop - vertex 2.77339 0.604786 0.489362 - vertex 2.77339 0.604786 -0.510638 - vertex 2.76569 0.60561 -0.510638 - endloop - endfacet - facet normal 0.106241 0.99434 0 - outer loop - vertex 2.77339 0.604786 0.489362 - vertex 2.76569 0.60561 -0.510638 - vertex 2.76569 0.60561 0.489362 - endloop - endfacet - facet normal 0.0864818 0.996253 0 - outer loop - vertex 2.76569 0.60561 0.489362 - vertex 2.76569 0.60561 -0.510638 - vertex 2.75795 0.606281 -0.510638 - endloop - endfacet - facet normal 0.0864818 0.996253 0 - outer loop - vertex 2.76569 0.60561 0.489362 - vertex 2.75795 0.606281 -0.510638 - vertex 2.75795 0.606281 0.489362 - endloop - endfacet - facet normal 0.0668592 0.997762 0 - outer loop - vertex 2.75795 0.606281 0.489362 - vertex 2.75795 0.606281 -0.510638 - vertex 2.75019 0.606801 -0.510638 - endloop - endfacet - facet normal 0.0668592 0.997762 0 - outer loop - vertex 2.75795 0.606281 0.489362 - vertex 2.75019 0.606801 -0.510638 - vertex 2.75019 0.606801 0.489362 - endloop - endfacet - facet normal 0.0474284 0.998875 0 - outer loop - vertex 2.75019 0.606801 0.489362 - vertex 2.75019 0.606801 -0.510638 - vertex 2.74239 0.607172 -0.510638 - endloop - endfacet - facet normal 0.0474284 0.998875 0 - outer loop - vertex 2.75019 0.606801 0.489362 - vertex 2.74239 0.607172 -0.510638 - vertex 2.74239 0.607172 0.489362 - endloop - endfacet - facet normal 0.0282356 0.999601 0 - outer loop - vertex 2.74239 0.607172 0.489362 - vertex 2.74239 0.607172 -0.510638 - vertex 2.73456 0.607393 -0.510638 - endloop - endfacet - facet normal 0.0282356 0.999601 0 - outer loop - vertex 2.74239 0.607172 0.489362 - vertex 2.73456 0.607393 -0.510638 - vertex 2.73456 0.607393 0.489362 - endloop - endfacet - facet normal 0.00932919 0.999956 0 - outer loop - vertex 2.73456 0.607393 0.489362 - vertex 2.73456 0.607393 -0.510638 - vertex 2.72668 0.607466 -0.510638 - endloop - endfacet - facet normal 0.00932919 0.999956 0 - outer loop - vertex 2.73456 0.607393 0.489362 - vertex 2.72668 0.607466 -0.510638 - vertex 2.72668 0.607466 0.489362 - endloop - endfacet - facet normal -0.0237336 0.999718 0 - outer loop - vertex 2.72668 0.607466 0.489362 - vertex 2.72668 0.607466 -0.510638 - vertex 2.71122 0.607099 -0.510638 - endloop - endfacet - facet normal -0.0237336 0.999718 0 - outer loop - vertex 2.72668 0.607466 0.489362 - vertex 2.71122 0.607099 -0.510638 - vertex 2.71122 0.607099 0.489362 - endloop - endfacet - facet normal -0.0717079 0.997426 0 - outer loop - vertex 2.71122 0.607099 0.489362 - vertex 2.71122 0.607099 -0.510638 - vertex 2.69604 0.606008 -0.510638 - endloop - endfacet - facet normal -0.0717079 0.997426 0 - outer loop - vertex 2.71122 0.607099 0.489362 - vertex 2.69604 0.606008 -0.510638 - vertex 2.69604 0.606008 0.489362 - endloop - endfacet - facet normal -0.12005 0.992768 0 - outer loop - vertex 2.69604 0.606008 0.489362 - vertex 2.69604 0.606008 -0.510638 - vertex 2.68116 0.604209 -0.510638 - endloop - endfacet - facet normal -0.12005 0.992768 0 - outer loop - vertex 2.69604 0.606008 0.489362 - vertex 2.68116 0.604209 -0.510638 - vertex 2.68116 0.604209 0.489362 - endloop - endfacet - facet normal -0.168629 0.98568 0 - outer loop - vertex 2.68116 0.604209 0.489362 - vertex 2.68116 0.604209 -0.510638 - vertex 2.6666 0.601717 -0.510638 - endloop - endfacet - facet normal -0.168629 0.98568 0 - outer loop - vertex 2.68116 0.604209 0.489362 - vertex 2.6666 0.601717 -0.510638 - vertex 2.6666 0.601717 0.489362 - endloop - endfacet - facet normal -0.217289 0.976107 0 - outer loop - vertex 2.6666 0.601717 0.489362 - vertex 2.6666 0.601717 -0.510638 - vertex 2.65237 0.59855 -0.510638 - endloop - endfacet - facet normal -0.217289 0.976107 0 - outer loop - vertex 2.6666 0.601717 0.489362 - vertex 2.65237 0.59855 -0.510638 - vertex 2.65237 0.59855 0.489362 - endloop - endfacet - facet normal -0.265874 0.964008 0 - outer loop - vertex 2.65237 0.59855 0.489362 - vertex 2.65237 0.59855 -0.510638 - vertex 2.63849 0.594723 -0.510638 - endloop - endfacet - facet normal -0.265874 0.964008 0 - outer loop - vertex 2.65237 0.59855 0.489362 - vertex 2.63849 0.594723 -0.510638 - vertex 2.63849 0.594723 0.489362 - endloop - endfacet - facet normal -0.31422 0.94935 0 - outer loop - vertex 2.63849 0.594723 0.489362 - vertex 2.63849 0.594723 -0.510638 - vertex 2.62498 0.590251 -0.510638 - endloop - endfacet - facet normal -0.31422 0.94935 0 - outer loop - vertex 2.63849 0.594723 0.489362 - vertex 2.62498 0.590251 -0.510638 - vertex 2.62498 0.590251 0.489362 - endloop - endfacet - facet normal -0.362168 0.932113 0 - outer loop - vertex 2.62498 0.590251 0.489362 - vertex 2.62498 0.590251 -0.510638 - vertex 2.61186 0.585152 -0.510638 - endloop - endfacet - facet normal -0.362168 0.932113 0 - outer loop - vertex 2.62498 0.590251 0.489362 - vertex 2.61186 0.585152 -0.510638 - vertex 2.61186 0.585152 0.489362 - endloop - endfacet - facet normal -0.409541 0.912292 0 - outer loop - vertex 2.61186 0.585152 0.489362 - vertex 2.61186 0.585152 -0.510638 - vertex 2.59913 0.579441 -0.510638 - endloop - endfacet - facet normal -0.409541 0.912292 0 - outer loop - vertex 2.61186 0.585152 0.489362 - vertex 2.59913 0.579441 -0.510638 - vertex 2.59913 0.579441 0.489362 - endloop - endfacet - facet normal -0.456185 0.889885 0 - outer loop - vertex 2.59913 0.579441 0.489362 - vertex 2.59913 0.579441 -0.510638 - vertex 2.58683 0.573133 -0.510638 - endloop - endfacet - facet normal -0.456185 0.889885 0 - outer loop - vertex 2.59913 0.579441 0.489362 - vertex 2.58683 0.573133 -0.510638 - vertex 2.58683 0.573133 0.489362 - endloop - endfacet - facet normal -0.501922 0.864913 0 - outer loop - vertex 2.58683 0.573133 0.489362 - vertex 2.58683 0.573133 -0.510638 - vertex 2.57496 0.566246 -0.510638 - endloop - endfacet - facet normal -0.501922 0.864913 0 - outer loop - vertex 2.58683 0.573133 0.489362 - vertex 2.57496 0.566246 -0.510638 - vertex 2.57496 0.566246 0.489362 - endloop - endfacet - facet normal -0.546585 0.837404 0 - outer loop - vertex 2.57496 0.566246 0.489362 - vertex 2.57496 0.566246 -0.510638 - vertex 2.56355 0.558794 -0.510638 - endloop - endfacet - facet normal -0.546585 0.837404 0 - outer loop - vertex 2.57496 0.566246 0.489362 - vertex 2.56355 0.558794 -0.510638 - vertex 2.56355 0.558794 0.489362 - endloop - endfacet - facet normal -0.590016 0.807392 0 - outer loop - vertex 2.56355 0.558794 0.489362 - vertex 2.56355 0.558794 -0.510638 - vertex 2.5526 0.550795 -0.510638 - endloop - endfacet - facet normal -0.590016 0.807392 0 - outer loop - vertex 2.56355 0.558794 0.489362 - vertex 2.5526 0.550795 -0.510638 - vertex 2.5526 0.550795 0.489362 - endloop - endfacet - facet normal -0.632032 0.774942 0 - outer loop - vertex 2.5526 0.550795 0.489362 - vertex 2.5526 0.550795 -0.510638 - vertex 2.54214 0.542264 -0.510638 - endloop - endfacet - facet normal -0.632032 0.774942 0 - outer loop - vertex 2.5526 0.550795 0.489362 - vertex 2.54214 0.542264 -0.510638 - vertex 2.54214 0.542264 0.489362 - endloop - endfacet - facet normal -0.672487 0.740109 0 - outer loop - vertex 2.54214 0.542264 0.489362 - vertex 2.54214 0.542264 -0.510638 - vertex 2.53218 0.533216 -0.510638 - endloop - endfacet - facet normal -0.672487 0.740109 0 - outer loop - vertex 2.54214 0.542264 0.489362 - vertex 2.53218 0.533216 -0.510638 - vertex 2.53218 0.533216 0.489362 - endloop - endfacet - facet normal -0.711202 0.702988 0 - outer loop - vertex 2.53218 0.533216 0.489362 - vertex 2.53218 0.533216 -0.510638 - vertex 2.52275 0.523669 -0.510638 - endloop - endfacet - facet normal -0.711202 0.702988 0 - outer loop - vertex 2.53218 0.533216 0.489362 - vertex 2.52275 0.523669 -0.510638 - vertex 2.52275 0.523669 0.489362 - endloop - endfacet - facet normal -0.748014 0.663683 0 - outer loop - vertex 2.52275 0.523669 0.489362 - vertex 2.52275 0.523669 -0.510638 - vertex 2.51384 0.513638 -0.510638 - endloop - endfacet - facet normal -0.748014 0.663683 0 - outer loop - vertex 2.52275 0.523669 0.489362 - vertex 2.51384 0.513638 -0.510638 - vertex 2.51384 0.513638 0.489362 - endloop - endfacet - facet normal -0.78279 0.622286 0 - outer loop - vertex 2.51384 0.513638 0.489362 - vertex 2.51384 0.513638 -0.510638 - vertex 2.5055 0.503138 -0.510638 - endloop - endfacet - facet normal -0.78279 0.622286 0 - outer loop - vertex 2.51384 0.513638 0.489362 - vertex 2.5055 0.503138 -0.510638 - vertex 2.5055 0.503138 0.489362 - endloop - endfacet - facet normal -0.815371 0.578938 0 - outer loop - vertex 2.5055 0.503138 0.489362 - vertex 2.5055 0.503138 -0.510638 - vertex 2.49772 0.492187 -0.510638 - endloop - endfacet - facet normal -0.815371 0.578938 0 - outer loop - vertex 2.5055 0.503138 0.489362 - vertex 2.49772 0.492187 -0.510638 - vertex 2.49772 0.492187 0.489362 - endloop - endfacet - facet normal -0.845613 0.533797 0 - outer loop - vertex 2.49772 0.492187 0.489362 - vertex 2.49772 0.492187 -0.510638 - vertex 2.49053 0.4808 -0.510638 - endloop - endfacet - facet normal -0.845613 0.533797 0 - outer loop - vertex 2.49772 0.492187 0.489362 - vertex 2.49053 0.4808 -0.510638 - vertex 2.49053 0.4808 0.489362 - endloop - endfacet - facet normal -0.873393 0.487016 0 - outer loop - vertex 2.49053 0.4808 0.489362 - vertex 2.49053 0.4808 -0.510638 - vertex 2.48395 0.468992 -0.510638 - endloop - endfacet - facet normal -0.873393 0.487016 0 - outer loop - vertex 2.49053 0.4808 0.489362 - vertex 2.48395 0.468992 -0.510638 - vertex 2.48395 0.468992 0.489362 - endloop - endfacet - facet normal -0.898598 0.438772 0 - outer loop - vertex 2.48395 0.468992 0.489362 - vertex 2.48395 0.468992 -0.510638 - vertex 2.47799 0.456781 -0.510638 - endloop - endfacet - facet normal -0.898598 0.438772 0 - outer loop - vertex 2.48395 0.468992 0.489362 - vertex 2.47799 0.456781 -0.510638 - vertex 2.47799 0.456781 0.489362 - endloop - endfacet - facet normal -0.921128 0.38926 0 - outer loop - vertex 2.47799 0.456781 0.489362 - vertex 2.47799 0.456781 -0.510638 - vertex 2.47266 0.444182 -0.510638 - endloop - endfacet - facet normal -0.921128 0.38926 0 - outer loop - vertex 2.47799 0.456781 0.489362 - vertex 2.47266 0.444182 -0.510638 - vertex 2.47266 0.444182 0.489362 - endloop - endfacet - facet normal -0.940899 0.338688 0 - outer loop - vertex 2.47266 0.444182 0.489362 - vertex 2.47266 0.444182 -0.510638 - vertex 2.46799 0.43121 -0.510638 - endloop - endfacet - facet normal -0.940899 0.338688 0 - outer loop - vertex 2.47266 0.444182 0.489362 - vertex 2.46799 0.43121 -0.510638 - vertex 2.46799 0.43121 0.489362 - endloop - endfacet - facet normal -0.957848 0.287275 0 - outer loop - vertex 2.46799 0.43121 0.489362 - vertex 2.46799 0.43121 -0.510638 - vertex 2.464 0.417883 -0.510638 - endloop - endfacet - facet normal -0.957848 0.287275 0 - outer loop - vertex 2.46799 0.43121 0.489362 - vertex 2.464 0.417883 -0.510638 - vertex 2.464 0.417883 0.489362 - endloop - endfacet - facet normal -0.971931 0.235264 0 - outer loop - vertex 2.464 0.417883 0.489362 - vertex 2.464 0.417883 -0.510638 - vertex 2.46069 0.404216 -0.510638 - endloop - endfacet - facet normal -0.971931 0.235264 0 - outer loop - vertex 2.464 0.417883 0.489362 - vertex 2.46069 0.404216 -0.510638 - vertex 2.46069 0.404216 0.489362 - endloop - endfacet - facet normal -0.983136 0.182877 0 - outer loop - vertex 2.46069 0.404216 0.489362 - vertex 2.46069 0.404216 -0.510638 - vertex 2.45809 0.390224 -0.510638 - endloop - endfacet - facet normal -0.983136 0.182877 0 - outer loop - vertex 2.46069 0.404216 0.489362 - vertex 2.45809 0.390224 -0.510638 - vertex 2.45809 0.390224 0.489362 - endloop - endfacet - facet normal -0.991468 0.130348 0 - outer loop - vertex 2.45809 0.390224 0.489362 - vertex 2.45809 0.390224 -0.510638 - vertex 2.45621 0.375925 -0.510638 - endloop - endfacet - facet normal -0.991468 0.130348 0 - outer loop - vertex 2.45809 0.390224 0.489362 - vertex 2.45621 0.375925 -0.510638 - vertex 2.45621 0.375925 0.489362 - endloop - endfacet - facet normal -0.99696 0.0779154 0 - outer loop - vertex 2.45621 0.375925 0.489362 - vertex 2.45621 0.375925 -0.510638 - vertex 2.45507 0.361334 -0.510638 - endloop - endfacet - facet normal -0.99696 0.0779154 0 - outer loop - vertex 2.45621 0.375925 0.489362 - vertex 2.45507 0.361334 -0.510638 - vertex 2.45507 0.361334 0.489362 - endloop - endfacet - facet normal -0.999667 0.02581 0 - outer loop - vertex 2.45507 0.361334 0.489362 - vertex 2.45507 0.361334 -0.510638 - vertex 2.45468 0.346466 -0.510638 - endloop - endfacet - facet normal -0.999667 0.02581 0 - outer loop - vertex 2.45507 0.361334 0.489362 - vertex 2.45468 0.346466 -0.510638 - vertex 2.45468 0.346466 0.489362 - endloop - endfacet - facet normal -0.999699 -0.0245414 -0 - outer loop - vertex 2.45468 0.346466 0.489362 - vertex 2.45468 0.346466 -0.510638 - vertex 2.45505 0.331325 -0.510638 - endloop - endfacet - facet normal -0.999699 -0.0245414 0 - outer loop - vertex 2.45468 0.346466 0.489362 - vertex 2.45505 0.331325 -0.510638 - vertex 2.45505 0.331325 0.489362 - endloop - endfacet - facet normal -0.997233 -0.0743382 -0 - outer loop - vertex 2.45505 0.331325 0.489362 - vertex 2.45505 0.331325 -0.510638 - vertex 2.45616 0.316511 -0.510638 - endloop - endfacet - facet normal -0.997233 -0.0743382 0 - outer loop - vertex 2.45505 0.331325 0.489362 - vertex 2.45616 0.316511 -0.510638 - vertex 2.45616 0.316511 0.489362 - endloop - endfacet - facet normal -0.992151 -0.125046 -0 - outer loop - vertex 2.45616 0.316511 0.489362 - vertex 2.45616 0.316511 -0.510638 - vertex 2.45798 0.302035 -0.510638 - endloop - endfacet - facet normal -0.992151 -0.125046 0 - outer loop - vertex 2.45616 0.316511 0.489362 - vertex 2.45798 0.302035 -0.510638 - vertex 2.45798 0.302035 0.489362 - endloop - endfacet - facet normal -0.984317 -0.176411 -0 - outer loop - vertex 2.45798 0.302035 0.489362 - vertex 2.45798 0.302035 -0.510638 - vertex 2.46051 0.287913 -0.510638 - endloop - endfacet - facet normal -0.984317 -0.176411 0 - outer loop - vertex 2.45798 0.302035 0.489362 - vertex 2.46051 0.287913 -0.510638 - vertex 2.46051 0.287913 0.489362 - endloop - endfacet - facet normal -0.973614 -0.228201 -0 - outer loop - vertex 2.46051 0.287913 0.489362 - vertex 2.46051 0.287913 -0.510638 - vertex 2.46374 0.274156 -0.510638 - endloop - endfacet - facet normal -0.973614 -0.228201 0 - outer loop - vertex 2.46051 0.287913 0.489362 - vertex 2.46374 0.274156 -0.510638 - vertex 2.46374 0.274156 0.489362 - endloop - endfacet - facet normal -0.959952 -0.280164 -0 - outer loop - vertex 2.46374 0.274156 0.489362 - vertex 2.46374 0.274156 -0.510638 - vertex 2.46764 0.260778 -0.510638 - endloop - endfacet - facet normal -0.959952 -0.280164 0 - outer loop - vertex 2.46374 0.274156 0.489362 - vertex 2.46764 0.260778 -0.510638 - vertex 2.46764 0.260778 0.489362 - endloop - endfacet - facet normal -0.943264 -0.332043 -0 - outer loop - vertex 2.46764 0.260778 0.489362 - vertex 2.46764 0.260778 -0.510638 - vertex 2.47221 0.247793 -0.510638 - endloop - endfacet - facet normal -0.943264 -0.332043 0 - outer loop - vertex 2.46764 0.260778 0.489362 - vertex 2.47221 0.247793 -0.510638 - vertex 2.47221 0.247793 0.489362 - endloop - endfacet - facet normal -0.923532 -0.383521 -0 - outer loop - vertex 2.47221 0.247793 0.489362 - vertex 2.47221 0.247793 -0.510638 - vertex 2.47744 0.235212 -0.510638 - endloop - endfacet - facet normal -0.923532 -0.383521 0 - outer loop - vertex 2.47221 0.247793 0.489362 - vertex 2.47744 0.235212 -0.510638 - vertex 2.47744 0.235212 0.489362 - endloop - endfacet - facet normal -0.900759 -0.434319 -0 - outer loop - vertex 2.47744 0.235212 0.489362 - vertex 2.47744 0.235212 -0.510638 - vertex 2.4833 0.223049 -0.510638 - endloop - endfacet - facet normal -0.900759 -0.434319 0 - outer loop - vertex 2.47744 0.235212 0.489362 - vertex 2.4833 0.223049 -0.510638 - vertex 2.4833 0.223049 0.489362 - endloop - endfacet - facet normal -0.874983 -0.484154 -0 - outer loop - vertex 2.4833 0.223049 0.489362 - vertex 2.4833 0.223049 -0.510638 - vertex 2.48979 0.211318 -0.510638 - endloop - endfacet - facet normal -0.874983 -0.484154 0 - outer loop - vertex 2.4833 0.223049 0.489362 - vertex 2.48979 0.211318 -0.510638 - vertex 2.48979 0.211318 0.489362 - endloop - endfacet - facet normal -0.846302 -0.532703 -0 - outer loop - vertex 2.48979 0.211318 0.489362 - vertex 2.48979 0.211318 -0.510638 - vertex 2.4969 0.200032 -0.510638 - endloop - endfacet - facet normal -0.846302 -0.532703 0 - outer loop - vertex 2.48979 0.211318 0.489362 - vertex 2.4969 0.200032 -0.510638 - vertex 2.4969 0.200032 0.489362 - endloop - endfacet - facet normal -0.814821 -0.579712 -0 - outer loop - vertex 2.4969 0.200032 0.489362 - vertex 2.4969 0.200032 -0.510638 - vertex 2.5046 0.189202 -0.510638 - endloop - endfacet - facet normal -0.814821 -0.579712 0 - outer loop - vertex 2.4969 0.200032 0.489362 - vertex 2.5046 0.189202 -0.510638 - vertex 2.5046 0.189202 0.489362 - endloop - endfacet - facet normal -0.780714 -0.624889 -0 - outer loop - vertex 2.5046 0.189202 0.489362 - vertex 2.5046 0.189202 -0.510638 - vertex 2.51289 0.178844 -0.510638 - endloop - endfacet - facet normal -0.780714 -0.624889 0 - outer loop - vertex 2.5046 0.189202 0.489362 - vertex 2.51289 0.178844 -0.510638 - vertex 2.51289 0.178844 0.489362 - endloop - endfacet - facet normal -0.744149 -0.668014 -0 - outer loop - vertex 2.51289 0.178844 0.489362 - vertex 2.51289 0.178844 -0.510638 - vertex 2.52176 0.168969 -0.510638 - endloop - endfacet - facet normal -0.744149 -0.668014 0 - outer loop - vertex 2.51289 0.178844 0.489362 - vertex 2.52176 0.168969 -0.510638 - vertex 2.52176 0.168969 0.489362 - endloop - endfacet - facet normal -0.705351 -0.708858 -0 - outer loop - vertex 2.52176 0.168969 0.489362 - vertex 2.52176 0.168969 -0.510638 - vertex 2.53118 0.159591 -0.510638 - endloop - endfacet - facet normal -0.705351 -0.708858 0 - outer loop - vertex 2.52176 0.168969 0.489362 - vertex 2.53118 0.159591 -0.510638 - vertex 2.53118 0.159591 0.489362 - endloop - endfacet - facet normal -0.664555 -0.747239 -0 - outer loop - vertex 2.53118 0.159591 0.489362 - vertex 2.53118 0.159591 -0.510638 - vertex 2.54115 0.150724 -0.510638 - endloop - endfacet - facet normal -0.664555 -0.747239 0 - outer loop - vertex 2.53118 0.159591 0.489362 - vertex 2.54115 0.150724 -0.510638 - vertex 2.54115 0.150724 0.489362 - endloop - endfacet - facet normal -0.622015 -0.783005 -0 - outer loop - vertex 2.54115 0.150724 0.489362 - vertex 2.54115 0.150724 -0.510638 - vertex 2.55166 0.142379 -0.510638 - endloop - endfacet - facet normal -0.622015 -0.783005 0 - outer loop - vertex 2.54115 0.150724 0.489362 - vertex 2.55166 0.142379 -0.510638 - vertex 2.55166 0.142379 0.489362 - endloop - endfacet - facet normal -0.577991 -0.816043 -0 - outer loop - vertex 2.55166 0.142379 0.489362 - vertex 2.55166 0.142379 -0.510638 - vertex 2.56268 0.13457 -0.510638 - endloop - endfacet - facet normal -0.577991 -0.816043 0 - outer loop - vertex 2.55166 0.142379 0.489362 - vertex 2.56268 0.13457 -0.510638 - vertex 2.56268 0.13457 0.489362 - endloop - endfacet - facet normal -0.532751 -0.846272 -0 - outer loop - vertex 2.56268 0.13457 0.489362 - vertex 2.56268 0.13457 -0.510638 - vertex 2.57421 0.127311 -0.510638 - endloop - endfacet - facet normal -0.532751 -0.846272 0 - outer loop - vertex 2.56268 0.13457 0.489362 - vertex 2.57421 0.127311 -0.510638 - vertex 2.57421 0.127311 0.489362 - endloop - endfacet - facet normal -0.486557 -0.873649 -0 - outer loop - vertex 2.57421 0.127311 0.489362 - vertex 2.57421 0.127311 -0.510638 - vertex 2.58624 0.120615 -0.510638 - endloop - endfacet - facet normal -0.486557 -0.873649 0 - outer loop - vertex 2.57421 0.127311 0.489362 - vertex 2.58624 0.120615 -0.510638 - vertex 2.58624 0.120615 0.489362 - endloop - endfacet - facet normal -0.439669 -0.89816 -0 - outer loop - vertex 2.58624 0.120615 0.489362 - vertex 2.58624 0.120615 -0.510638 - vertex 2.59874 0.114493 -0.510638 - endloop - endfacet - facet normal -0.439669 -0.89816 0 - outer loop - vertex 2.58624 0.120615 0.489362 - vertex 2.59874 0.114493 -0.510638 - vertex 2.59874 0.114493 0.489362 - endloop - endfacet - facet normal -0.392326 -0.919826 -0 - outer loop - vertex 2.59874 0.114493 0.489362 - vertex 2.59874 0.114493 -0.510638 - vertex 2.61171 0.108961 -0.510638 - endloop - endfacet - facet normal -0.392326 -0.919826 0 - outer loop - vertex 2.59874 0.114493 0.489362 - vertex 2.61171 0.108961 -0.510638 - vertex 2.61171 0.108961 0.489362 - endloop - endfacet - facet normal -0.344774 -0.938686 -0 - outer loop - vertex 2.61171 0.108961 0.489362 - vertex 2.61171 0.108961 -0.510638 - vertex 2.62514 0.10403 -0.510638 - endloop - endfacet - facet normal -0.344774 -0.938686 0 - outer loop - vertex 2.61171 0.108961 0.489362 - vertex 2.62514 0.10403 -0.510638 - vertex 2.62514 0.10403 0.489362 - endloop - endfacet - facet normal -0.297218 -0.95481 -0 - outer loop - vertex 2.62514 0.10403 0.489362 - vertex 2.62514 0.10403 -0.510638 - vertex 2.639 0.0997144 -0.510638 - endloop - endfacet - facet normal -0.297218 -0.95481 0 - outer loop - vertex 2.62514 0.10403 0.489362 - vertex 2.639 0.0997144 -0.510638 - vertex 2.639 0.0997144 0.489362 - endloop - endfacet - facet normal -0.249865 -0.968281 -0 - outer loop - vertex 2.639 0.0997144 0.489362 - vertex 2.639 0.0997144 -0.510638 - vertex 2.65329 0.0960266 -0.510638 - endloop - endfacet - facet normal -0.249865 -0.968281 0 - outer loop - vertex 2.639 0.0997144 0.489362 - vertex 2.65329 0.0960266 -0.510638 - vertex 2.65329 0.0960266 0.489362 - endloop - endfacet - facet normal -0.202887 -0.979202 -0 - outer loop - vertex 2.65329 0.0960266 0.489362 - vertex 2.65329 0.0960266 -0.510638 - vertex 2.668 0.0929799 -0.510638 - endloop - endfacet - facet normal -0.202887 -0.979202 0 - outer loop - vertex 2.65329 0.0960266 0.489362 - vertex 2.668 0.0929799 -0.510638 - vertex 2.668 0.0929799 0.489362 - endloop - endfacet - facet normal -0.156444 -0.987687 -0 - outer loop - vertex 2.668 0.0929799 0.489362 - vertex 2.668 0.0929799 -0.510638 - vertex 2.6831 0.0905874 -0.510638 - endloop - endfacet - facet normal -0.156444 -0.987687 0 - outer loop - vertex 2.668 0.0929799 0.489362 - vertex 2.6831 0.0905874 -0.510638 - vertex 2.6831 0.0905874 0.489362 - endloop - endfacet - facet normal -0.110681 -0.993856 -0 - outer loop - vertex 2.6831 0.0905874 0.489362 - vertex 2.6831 0.0905874 -0.510638 - vertex 2.69859 0.0888622 -0.510638 - endloop - endfacet - facet normal -0.110681 -0.993856 0 - outer loop - vertex 2.6831 0.0905874 0.489362 - vertex 2.69859 0.0888622 -0.510638 - vertex 2.69859 0.0888622 0.489362 - endloop - endfacet - facet normal -0.06571 -0.997839 -0 - outer loop - vertex 2.69859 0.0888622 0.489362 - vertex 2.69859 0.0888622 -0.510638 - vertex 2.71446 0.0878175 -0.510638 - endloop - endfacet - facet normal -0.06571 -0.997839 0 - outer loop - vertex 2.69859 0.0888622 0.489362 - vertex 2.71446 0.0878175 -0.510638 - vertex 2.71446 0.0878175 0.489362 - endloop - endfacet - facet normal -0.021638 -0.999766 -0 - outer loop - vertex 2.71446 0.0878175 0.489362 - vertex 2.71446 0.0878175 -0.510638 - vertex 2.73068 0.0874664 -0.510638 - endloop - endfacet - facet normal -0.021638 -0.999766 0 - outer loop - vertex 2.71446 0.0878175 0.489362 - vertex 2.73068 0.0874664 -0.510638 - vertex 2.73068 0.0874664 0.489362 - endloop - endfacet - facet normal 0.0116325 -0.999932 0 - outer loop - vertex 2.73068 0.0874664 0.489362 - vertex 2.73068 0.0874664 -0.510638 - vertex 2.7384 0.0875562 -0.510638 - endloop - endfacet - facet normal 0.0116325 -0.999932 0 - outer loop - vertex 2.73068 0.0874664 0.489362 - vertex 2.7384 0.0875562 -0.510638 - vertex 2.7384 0.0875562 0.489362 - endloop - endfacet - facet normal 0.0346109 -0.999401 0 - outer loop - vertex 2.7384 0.0875562 0.489362 - vertex 2.7384 0.0875562 -0.510638 - vertex 2.74617 0.0878252 -0.510638 - endloop - endfacet - facet normal 0.0346109 -0.999401 0 - outer loop - vertex 2.7384 0.0875562 0.489362 - vertex 2.74617 0.0878252 -0.510638 - vertex 2.74617 0.0878252 0.489362 - endloop - endfacet - facet normal 0.0571877 -0.998363 0 - outer loop - vertex 2.74617 0.0878252 0.489362 - vertex 2.74617 0.0878252 -0.510638 - vertex 2.75398 0.0882724 -0.510638 - endloop - endfacet - facet normal 0.0571877 -0.998363 0 - outer loop - vertex 2.74617 0.0878252 0.489362 - vertex 2.75398 0.0882724 -0.510638 - vertex 2.75398 0.0882724 0.489362 - endloop - endfacet - facet normal 0.0793646 -0.996846 0 - outer loop - vertex 2.75398 0.0882724 0.489362 - vertex 2.75398 0.0882724 -0.510638 - vertex 2.76182 0.0888969 -0.510638 - endloop - endfacet - facet normal 0.0793646 -0.996846 0 - outer loop - vertex 2.75398 0.0882724 0.489362 - vertex 2.76182 0.0888969 -0.510638 - vertex 2.76182 0.0888969 0.489362 - endloop - endfacet - facet normal 0.101146 -0.994872 0 - outer loop - vertex 2.76182 0.0888969 0.489362 - vertex 2.76182 0.0888969 -0.510638 - vertex 2.7697 0.0896979 -0.510638 - endloop - endfacet - facet normal 0.101146 -0.994872 0 - outer loop - vertex 2.76182 0.0888969 0.489362 - vertex 2.7697 0.0896979 -0.510638 - vertex 2.7697 0.0896979 0.489362 - endloop - endfacet - facet normal 0.122531 -0.992465 0 - outer loop - vertex 2.7697 0.0896979 0.489362 - vertex 2.7697 0.0896979 -0.510638 - vertex 2.77761 0.0906744 -0.510638 - endloop - endfacet - facet normal 0.122531 -0.992465 0 - outer loop - vertex 2.7697 0.0896979 0.489362 - vertex 2.77761 0.0906744 -0.510638 - vertex 2.77761 0.0906744 0.489362 - endloop - endfacet - facet normal 0.143531 -0.989646 0 - outer loop - vertex 2.77761 0.0906744 0.489362 - vertex 2.77761 0.0906744 -0.510638 - vertex 2.78555 0.0918256 -0.510638 - endloop - endfacet - facet normal 0.143531 -0.989646 0 - outer loop - vertex 2.77761 0.0906744 0.489362 - vertex 2.78555 0.0918256 -0.510638 - vertex 2.78555 0.0918256 0.489362 - endloop - endfacet - facet normal 0.164145 -0.986436 0 - outer loop - vertex 2.78555 0.0918256 0.489362 - vertex 2.78555 0.0918256 -0.510638 - vertex 2.79351 0.0931505 -0.510638 - endloop - endfacet - facet normal 0.164145 -0.986436 0 - outer loop - vertex 2.78555 0.0918256 0.489362 - vertex 2.79351 0.0931505 -0.510638 - vertex 2.79351 0.0931505 0.489362 - endloop - endfacet - facet normal 0.184386 -0.982854 0 - outer loop - vertex 2.79351 0.0931505 0.489362 - vertex 2.79351 0.0931505 -0.510638 - vertex 2.80149 0.0946484 -0.510638 - endloop - endfacet - facet normal 0.184386 -0.982854 0 - outer loop - vertex 2.79351 0.0931505 0.489362 - vertex 2.80149 0.0946484 -0.510638 - vertex 2.80149 0.0946484 0.489362 - endloop - endfacet - facet normal 0.204261 -0.978917 0 - outer loop - vertex 2.80149 0.0946484 0.489362 - vertex 2.80149 0.0946484 -0.510638 - vertex 2.8095 0.0963182 -0.510638 - endloop - endfacet - facet normal 0.204261 -0.978917 0 - outer loop - vertex 2.80149 0.0946484 0.489362 - vertex 2.8095 0.0963182 -0.510638 - vertex 2.8095 0.0963182 0.489362 - endloop - endfacet - facet normal 0.223774 -0.974641 0 - outer loop - vertex 2.8095 0.0963182 0.489362 - vertex 2.8095 0.0963182 -0.510638 - vertex 2.81752 0.0981592 -0.510638 - endloop - endfacet - facet normal 0.223774 -0.974641 0 - outer loop - vertex 2.8095 0.0963182 0.489362 - vertex 2.81752 0.0981592 -0.510638 - vertex 2.81752 0.0981592 0.489362 - endloop - endfacet - facet normal 0.242929 -0.970044 0 - outer loop - vertex 2.81752 0.0981592 0.489362 - vertex 2.81752 0.0981592 -0.510638 - vertex 2.82555 0.10017 -0.510638 - endloop - endfacet - facet normal 0.242929 -0.970044 0 - outer loop - vertex 2.81752 0.0981592 0.489362 - vertex 2.82555 0.10017 -0.510638 - vertex 2.82555 0.10017 0.489362 - endloop - endfacet - facet normal 0.261747 -0.965136 0 - outer loop - vertex 2.82555 0.10017 0.489362 - vertex 2.82555 0.10017 -0.510638 - vertex 2.83359 0.102351 -0.510638 - endloop - endfacet - facet normal 0.261747 -0.965136 0 - outer loop - vertex 2.82555 0.10017 0.489362 - vertex 2.83359 0.102351 -0.510638 - vertex 2.83359 0.102351 0.489362 - endloop - endfacet - facet normal 0.280231 -0.959933 0 - outer loop - vertex 2.83359 0.102351 0.489362 - vertex 2.83359 0.102351 -0.510638 - vertex 2.84163 0.1047 -0.510638 - endloop - endfacet - facet normal 0.280231 -0.959933 0 - outer loop - vertex 2.83359 0.102351 0.489362 - vertex 2.84163 0.1047 -0.510638 - vertex 2.84163 0.1047 0.489362 - endloop - endfacet - facet normal 0.298389 -0.954444 0 - outer loop - vertex 2.84163 0.1047 0.489362 - vertex 2.84163 0.1047 -0.510638 - vertex 2.84968 0.107216 -0.510638 - endloop - endfacet - facet normal 0.298389 -0.954444 0 - outer loop - vertex 2.84163 0.1047 0.489362 - vertex 2.84968 0.107216 -0.510638 - vertex 2.84968 0.107216 0.489362 - endloop - endfacet - facet normal 0.31623 -0.948683 0 - outer loop - vertex 2.84968 0.107216 0.489362 - vertex 2.84968 0.107216 -0.510638 - vertex 2.85773 0.1099 -0.510638 - endloop - endfacet - facet normal 0.31623 -0.948683 0 - outer loop - vertex 2.84968 0.107216 0.489362 - vertex 2.85773 0.1099 -0.510638 - vertex 2.85773 0.1099 0.489362 - endloop - endfacet - facet normal 0.333764 -0.942657 0 - outer loop - vertex 2.85773 0.1099 0.489362 - vertex 2.85773 0.1099 -0.510638 - vertex 2.86578 0.112749 -0.510638 - endloop - endfacet - facet normal 0.333764 -0.942657 0 - outer loop - vertex 2.85773 0.1099 0.489362 - vertex 2.86578 0.112749 -0.510638 - vertex 2.86578 0.112749 0.489362 - endloop - endfacet - facet normal 0.350999 -0.936376 0 - outer loop - vertex 2.86578 0.112749 0.489362 - vertex 2.86578 0.112749 -0.510638 - vertex 2.87382 0.115762 -0.510638 - endloop - endfacet - facet normal 0.350999 -0.936376 0 - outer loop - vertex 2.86578 0.112749 0.489362 - vertex 2.87382 0.115762 -0.510638 - vertex 2.87382 0.115762 0.489362 - endloop - endfacet - facet normal 0.367944 -0.929848 0 - outer loop - vertex 2.87382 0.115762 0.489362 - vertex 2.87382 0.115762 -0.510638 - vertex 2.88185 0.11894 -0.510638 - endloop - endfacet - facet normal 0.367944 -0.929848 0 - outer loop - vertex 2.87382 0.115762 0.489362 - vertex 2.88185 0.11894 -0.510638 - vertex 2.88185 0.11894 0.489362 - endloop - endfacet - facet normal 0.384618 -0.923076 0 - outer loop - vertex 2.88185 0.11894 0.489362 - vertex 2.88185 0.11894 -0.510638 - vertex 2.88987 0.122281 -0.510638 - endloop - endfacet - facet normal 0.384618 -0.923076 0 - outer loop - vertex 2.88185 0.11894 0.489362 - vertex 2.88987 0.122281 -0.510638 - vertex 2.88987 0.122281 0.489362 - endloop - endfacet - facet normal 0.401009 -0.916074 0 - outer loop - vertex 2.88987 0.122281 0.489362 - vertex 2.88987 0.122281 -0.510638 - vertex 2.89787 0.125784 -0.510638 - endloop - endfacet - facet normal 0.401009 -0.916074 0 - outer loop - vertex 2.88987 0.122281 0.489362 - vertex 2.89787 0.125784 -0.510638 - vertex 2.89787 0.125784 0.489362 - endloop - endfacet - facet normal 0.417136 -0.908844 0 - outer loop - vertex 2.89787 0.125784 0.489362 - vertex 2.89787 0.125784 -0.510638 - vertex 2.90585 0.129449 -0.510638 - endloop - endfacet - facet normal 0.417136 -0.908844 0 - outer loop - vertex 2.89787 0.125784 0.489362 - vertex 2.90585 0.129449 -0.510638 - vertex 2.90585 0.129449 0.489362 - endloop - endfacet - facet normal 0.433005 -0.901391 0 - outer loop - vertex 2.90585 0.129449 0.489362 - vertex 2.90585 0.129449 -0.510638 - vertex 2.91382 0.133274 -0.510638 - endloop - endfacet - facet normal 0.433005 -0.901391 0 - outer loop - vertex 2.90585 0.129449 0.489362 - vertex 2.91382 0.133274 -0.510638 - vertex 2.91382 0.133274 0.489362 - endloop - endfacet - facet normal 0.448637 -0.893714 0 - outer loop - vertex 2.91382 0.133274 0.489362 - vertex 2.91382 0.133274 -0.510638 - vertex 2.92175 0.137258 -0.510638 - endloop - endfacet - facet normal 0.448637 -0.893714 0 - outer loop - vertex 2.91382 0.133274 0.489362 - vertex 2.92175 0.137258 -0.510638 - vertex 2.92175 0.137258 0.489362 - endloop - endfacet - facet normal 0.464015 -0.885827 0 - outer loop - vertex 2.92175 0.137258 0.489362 - vertex 2.92175 0.137258 -0.510638 - vertex 2.92966 0.141402 -0.510638 - endloop - endfacet - facet normal 0.464015 -0.885827 0 - outer loop - vertex 2.92175 0.137258 0.489362 - vertex 2.92966 0.141402 -0.510638 - vertex 2.92966 0.141402 0.489362 - endloop - endfacet - facet normal 0.479171 -0.877722 0 - outer loop - vertex 2.92966 0.141402 0.489362 - vertex 2.92966 0.141402 -0.510638 - vertex 2.93754 0.145703 -0.510638 - endloop - endfacet - facet normal 0.479171 -0.877722 0 - outer loop - vertex 2.92966 0.141402 0.489362 - vertex 2.93754 0.145703 -0.510638 - vertex 2.93754 0.145703 0.489362 - endloop - endfacet - facet normal 0.494086 -0.869413 0 - outer loop - vertex 2.93754 0.145703 0.489362 - vertex 2.93754 0.145703 -0.510638 - vertex 2.94539 0.15016 -0.510638 - endloop - endfacet - facet normal 0.494086 -0.869413 0 - outer loop - vertex 2.93754 0.145703 0.489362 - vertex 2.94539 0.15016 -0.510638 - vertex 2.94539 0.15016 0.489362 - endloop - endfacet - facet normal 0.508791 -0.86089 0 - outer loop - vertex 2.94539 0.15016 0.489362 - vertex 2.94539 0.15016 -0.510638 - vertex 2.95319 0.154774 -0.510638 - endloop - endfacet - facet normal 0.508791 -0.86089 0 - outer loop - vertex 2.94539 0.15016 0.489362 - vertex 2.95319 0.154774 -0.510638 - vertex 2.95319 0.154774 0.489362 - endloop - endfacet - facet normal 0.523269 -0.852168 0 - outer loop - vertex 2.95319 0.154774 0.489362 - vertex 2.95319 0.154774 -0.510638 - vertex 2.96096 0.159543 -0.510638 - endloop - endfacet - facet normal 0.523269 -0.852168 0 - outer loop - vertex 2.95319 0.154774 0.489362 - vertex 2.96096 0.159543 -0.510638 - vertex 2.96096 0.159543 0.489362 - endloop - endfacet - facet normal 0.537546 -0.843234 0 - outer loop - vertex 2.96096 0.159543 0.489362 - vertex 2.96096 0.159543 -0.510638 - vertex 2.96868 0.164466 -0.510638 - endloop - endfacet - facet normal 0.537546 -0.843234 0 - outer loop - vertex 2.96096 0.159543 0.489362 - vertex 2.96868 0.164466 -0.510638 - vertex 2.96868 0.164466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 2.96868 0.164466 0.489362 - vertex 2.96868 0.164466 -0.510638 - vertex 2.96868 0.0574664 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 2.96868 0.164466 0.489362 - vertex 2.96868 0.0574664 -0.510638 - vertex 2.96868 0.0574664 0.489362 - endloop - endfacet - facet normal -0.458324 0.888785 0 - outer loop - vertex 2.96868 0.0574664 0.489362 - vertex 2.96868 0.0574664 -0.510638 - vertex 2.96196 0.0540003 -0.510638 - endloop - endfacet - facet normal -0.458324 0.888785 0 - outer loop - vertex 2.96868 0.0574664 0.489362 - vertex 2.96196 0.0540003 -0.510638 - vertex 2.96196 0.0540003 0.489362 - endloop - endfacet - facet normal -0.448531 0.893767 0 - outer loop - vertex 2.96196 0.0540003 0.489362 - vertex 2.96196 0.0540003 -0.510638 - vertex 2.95519 0.0506042 -0.510638 - endloop - endfacet - facet normal -0.448531 0.893767 0 - outer loop - vertex 2.96196 0.0540003 0.489362 - vertex 2.95519 0.0506042 -0.510638 - vertex 2.95519 0.0506042 0.489362 - endloop - endfacet - facet normal -0.438006 0.898972 0 - outer loop - vertex 2.95519 0.0506042 0.489362 - vertex 2.95519 0.0506042 -0.510638 - vertex 2.94837 0.0472814 -0.510638 - endloop - endfacet - facet normal -0.438006 0.898972 0 - outer loop - vertex 2.95519 0.0506042 0.489362 - vertex 2.94837 0.0472814 -0.510638 - vertex 2.94837 0.0472814 0.489362 - endloop - endfacet - facet normal -0.42679 0.904351 0 - outer loop - vertex 2.94837 0.0472814 0.489362 - vertex 2.94837 0.0472814 -0.510638 - vertex 2.9415 0.0440353 -0.510638 - endloop - endfacet - facet normal -0.42679 0.904351 0 - outer loop - vertex 2.94837 0.0472814 0.489362 - vertex 2.9415 0.0440353 -0.510638 - vertex 2.9415 0.0440353 0.489362 - endloop - endfacet - facet normal -0.4149 0.909867 0 - outer loop - vertex 2.9415 0.0440353 0.489362 - vertex 2.9415 0.0440353 -0.510638 - vertex 2.93455 0.0408692 -0.510638 - endloop - endfacet - facet normal -0.4149 0.909867 0 - outer loop - vertex 2.9415 0.0440353 0.489362 - vertex 2.93455 0.0408692 -0.510638 - vertex 2.93455 0.0408692 0.489362 - endloop - endfacet - facet normal -0.402356 0.915483 0 - outer loop - vertex 2.93455 0.0408692 0.489362 - vertex 2.93455 0.0408692 -0.510638 - vertex 2.92754 0.0377864 -0.510638 - endloop - endfacet - facet normal -0.402356 0.915483 0 - outer loop - vertex 2.93455 0.0408692 0.489362 - vertex 2.92754 0.0377864 -0.510638 - vertex 2.92754 0.0377864 0.489362 - endloop - endfacet - facet normal -0.389172 0.921165 0 - outer loop - vertex 2.92754 0.0377864 0.489362 - vertex 2.92754 0.0377864 -0.510638 - vertex 2.92045 0.0347903 -0.510638 - endloop - endfacet - facet normal -0.389172 0.921165 0 - outer loop - vertex 2.92754 0.0377864 0.489362 - vertex 2.92045 0.0347903 -0.510638 - vertex 2.92045 0.0347903 0.489362 - endloop - endfacet - facet normal -0.375399 0.926863 0 - outer loop - vertex 2.92045 0.0347903 0.489362 - vertex 2.92045 0.0347903 -0.510638 - vertex 2.91327 0.0318842 -0.510638 - endloop - endfacet - facet normal -0.375399 0.926863 0 - outer loop - vertex 2.92045 0.0347903 0.489362 - vertex 2.91327 0.0318842 -0.510638 - vertex 2.91327 0.0318842 0.489362 - endloop - endfacet - facet normal -0.361048 0.932547 0 - outer loop - vertex 2.91327 0.0318842 0.489362 - vertex 2.91327 0.0318842 -0.510638 - vertex 2.90601 0.0290714 -0.510638 - endloop - endfacet - facet normal -0.361048 0.932547 0 - outer loop - vertex 2.91327 0.0318842 0.489362 - vertex 2.90601 0.0290714 -0.510638 - vertex 2.90601 0.0290714 0.489362 - endloop - endfacet - facet normal -0.346175 0.93817 0 - outer loop - vertex 2.90601 0.0290714 0.489362 - vertex 2.90601 0.0290714 -0.510638 - vertex 2.89864 0.0263553 -0.510638 - endloop - endfacet - facet normal -0.346175 0.93817 0 - outer loop - vertex 2.90601 0.0290714 0.489362 - vertex 2.89864 0.0263553 -0.510638 - vertex 2.89864 0.0263553 0.489362 - endloop - endfacet - facet normal -0.330799 0.943701 0 - outer loop - vertex 2.89864 0.0263553 0.489362 - vertex 2.89864 0.0263553 -0.510638 - vertex 2.89118 0.0237392 -0.510638 - endloop - endfacet - facet normal -0.330799 0.943701 0 - outer loop - vertex 2.89864 0.0263553 0.489362 - vertex 2.89118 0.0237392 -0.510638 - vertex 2.89118 0.0237392 0.489362 - endloop - endfacet - facet normal -0.314973 0.949101 0 - outer loop - vertex 2.89118 0.0237392 0.489362 - vertex 2.89118 0.0237392 -0.510638 - vertex 2.88361 0.0212264 -0.510638 - endloop - endfacet - facet normal -0.314973 0.949101 0 - outer loop - vertex 2.89118 0.0237392 0.489362 - vertex 2.88361 0.0212264 -0.510638 - vertex 2.88361 0.0212264 0.489362 - endloop - endfacet - facet normal -0.298741 0.954334 0 - outer loop - vertex 2.88361 0.0212264 0.489362 - vertex 2.88361 0.0212264 -0.510638 - vertex 2.87592 0.0188203 -0.510638 - endloop - endfacet - facet normal -0.298741 0.954334 0 - outer loop - vertex 2.88361 0.0212264 0.489362 - vertex 2.87592 0.0188203 -0.510638 - vertex 2.87592 0.0188203 0.489362 - endloop - endfacet - facet normal -0.28215 0.95937 0 - outer loop - vertex 2.87592 0.0188203 0.489362 - vertex 2.87592 0.0188203 -0.510638 - vertex 2.86812 0.0165242 -0.510638 - endloop - endfacet - facet normal -0.28215 0.95937 0 - outer loop - vertex 2.87592 0.0188203 0.489362 - vertex 2.86812 0.0165242 -0.510638 - vertex 2.86812 0.0165242 0.489362 - endloop - endfacet - facet normal -0.265251 0.964179 0 - outer loop - vertex 2.86812 0.0165242 0.489362 - vertex 2.86812 0.0165242 -0.510638 - vertex 2.86018 0.0143414 -0.510638 - endloop - endfacet - facet normal -0.265251 0.964179 0 - outer loop - vertex 2.86812 0.0165242 0.489362 - vertex 2.86018 0.0143414 -0.510638 - vertex 2.86018 0.0143414 0.489362 - endloop - endfacet - facet normal -0.248093 0.968736 0 - outer loop - vertex 2.86018 0.0143414 0.489362 - vertex 2.86018 0.0143414 -0.510638 - vertex 2.85211 0.0122753 -0.510638 - endloop - endfacet - facet normal -0.248093 0.968736 0 - outer loop - vertex 2.86018 0.0143414 0.489362 - vertex 2.85211 0.0122753 -0.510638 - vertex 2.85211 0.0122753 0.489362 - endloop - endfacet - facet normal -0.230721 0.97302 0 - outer loop - vertex 2.85211 0.0122753 0.489362 - vertex 2.85211 0.0122753 -0.510638 - vertex 2.84391 0.0103292 -0.510638 - endloop - endfacet - facet normal -0.230721 0.97302 0 - outer loop - vertex 2.85211 0.0122753 0.489362 - vertex 2.84391 0.0103292 -0.510638 - vertex 2.84391 0.0103292 0.489362 - endloop - endfacet - facet normal -0.213201 0.977008 0 - outer loop - vertex 2.84391 0.0103292 0.489362 - vertex 2.84391 0.0103292 -0.510638 - vertex 2.83555 0.00850639 -0.510638 - endloop - endfacet - facet normal -0.213201 0.977008 0 - outer loop - vertex 2.84391 0.0103292 0.489362 - vertex 2.83555 0.00850639 -0.510638 - vertex 2.83555 0.00850639 0.489362 - endloop - endfacet - facet normal -0.195572 0.980689 0 - outer loop - vertex 2.83555 0.00850639 0.489362 - vertex 2.83555 0.00850639 -0.510638 - vertex 2.82705 0.00681028 -0.510638 - endloop - endfacet - facet normal -0.195572 0.980689 0 - outer loop - vertex 2.83555 0.00850639 0.489362 - vertex 2.82705 0.00681028 -0.510638 - vertex 2.82705 0.00681028 0.489362 - endloop - endfacet - facet normal -0.177894 0.98405 0 - outer loop - vertex 2.82705 0.00681028 0.489362 - vertex 2.82705 0.00681028 -0.510638 - vertex 2.81839 0.00524417 -0.510638 - endloop - endfacet - facet normal -0.177894 0.98405 0 - outer loop - vertex 2.82705 0.00681028 0.489362 - vertex 2.81839 0.00524417 -0.510638 - vertex 2.81839 0.00524417 0.489362 - endloop - endfacet - facet normal -0.160209 0.987083 0 - outer loop - vertex 2.81839 0.00524417 0.489362 - vertex 2.81839 0.00524417 -0.510638 - vertex 2.80956 0.00381139 -0.510638 - endloop - endfacet - facet normal -0.160209 0.987083 0 - outer loop - vertex 2.81839 0.00524417 0.489362 - vertex 2.80956 0.00381139 -0.510638 - vertex 2.80956 0.00381139 0.489362 - endloop - endfacet - facet normal -0.142567 0.989785 0 - outer loop - vertex 2.80956 0.00381139 0.489362 - vertex 2.80956 0.00381139 -0.510638 - vertex 2.80056 0.00251528 -0.510638 - endloop - endfacet - facet normal -0.142567 0.989785 0 - outer loop - vertex 2.80956 0.00381139 0.489362 - vertex 2.80056 0.00251528 -0.510638 - vertex 2.80056 0.00251528 0.489362 - endloop - endfacet - facet normal -0.125014 0.992155 0 - outer loop - vertex 2.80056 0.00251528 0.489362 - vertex 2.80056 0.00251528 -0.510638 - vertex 2.79138 0.00135917 -0.510638 - endloop - endfacet - facet normal -0.125014 0.992155 0 - outer loop - vertex 2.80056 0.00251528 0.489362 - vertex 2.79138 0.00135917 -0.510638 - vertex 2.79138 0.00135917 0.489362 - endloop - endfacet - facet normal -0.107593 0.994195 0 - outer loop - vertex 2.79138 0.00135917 0.489362 - vertex 2.79138 0.00135917 -0.510638 - vertex 2.78203 0.000346389 -0.510638 - endloop - endfacet - facet normal -0.107593 0.994195 0 - outer loop - vertex 2.79138 0.00135917 0.489362 - vertex 2.78203 0.000346389 -0.510638 - vertex 2.78203 0.000346389 0.489362 - endloop - endfacet - facet normal -0.090343 0.995911 0 - outer loop - vertex 2.78203 0.000346389 0.489362 - vertex 2.78203 0.000346389 -0.510638 - vertex 2.77248 -0.000519722 -0.510638 - endloop - endfacet - facet normal -0.090343 0.995911 0 - outer loop - vertex 2.78203 0.000346389 0.489362 - vertex 2.77248 -0.000519722 -0.510638 - vertex 2.77248 -0.000519722 0.489362 - endloop - endfacet - facet normal -0.0733007 0.99731 0 - outer loop - vertex 2.77248 -0.000519722 0.489362 - vertex 2.77248 -0.000519722 -0.510638 - vertex 2.76274 -0.00123583 -0.510638 - endloop - endfacet - facet normal -0.0733007 0.99731 0 - outer loop - vertex 2.77248 -0.000519722 0.489362 - vertex 2.76274 -0.00123583 -0.510638 - vertex 2.76274 -0.00123583 0.489362 - endloop - endfacet - facet normal -0.0564977 0.998403 0 - outer loop - vertex 2.76274 -0.00123583 0.489362 - vertex 2.76274 -0.00123583 -0.510638 - vertex 2.75279 -0.00179861 -0.510638 - endloop - endfacet - facet normal -0.0564977 0.998403 0 - outer loop - vertex 2.76274 -0.00123583 0.489362 - vertex 2.75279 -0.00179861 -0.510638 - vertex 2.75279 -0.00179861 0.489362 - endloop - endfacet - facet normal -0.039967 0.999201 0 - outer loop - vertex 2.75279 -0.00179861 0.489362 - vertex 2.75279 -0.00179861 -0.510638 - vertex 2.74264 -0.00220472 -0.510638 - endloop - endfacet - facet normal -0.039967 0.999201 0 - outer loop - vertex 2.75279 -0.00179861 0.489362 - vertex 2.74264 -0.00220472 -0.510638 - vertex 2.74264 -0.00220472 0.489362 - endloop - endfacet - facet normal -0.0237328 0.999718 0 - outer loop - vertex 2.74264 -0.00220472 0.489362 - vertex 2.74264 -0.00220472 -0.510638 - vertex 2.73227 -0.00245083 -0.510638 - endloop - endfacet - facet normal -0.0237328 0.999718 0 - outer loop - vertex 2.74264 -0.00220472 0.489362 - vertex 2.73227 -0.00245083 -0.510638 - vertex 2.73227 -0.00245083 0.489362 - endloop - endfacet - facet normal -0.00781807 0.999969 0 - outer loop - vertex 2.73227 -0.00245083 0.489362 - vertex 2.73227 -0.00245083 -0.510638 - vertex 2.72168 -0.00253361 -0.510638 - endloop - endfacet - facet normal -0.00781807 0.999969 0 - outer loop - vertex 2.73227 -0.00245083 0.489362 - vertex 2.72168 -0.00253361 -0.510638 - vertex 2.72168 -0.00253361 0.489362 - endloop - endfacet - facet normal 0.0257626 0.999668 0 - outer loop - vertex 2.72168 -0.00253361 0.489362 - vertex 2.72168 -0.00253361 -0.510638 - vertex 2.69656 -0.00188622 -0.510638 - endloop - endfacet - facet normal 0.0257626 0.999668 0 - outer loop - vertex 2.72168 -0.00253361 0.489362 - vertex 2.69656 -0.00188622 -0.510638 - vertex 2.69656 -0.00188622 0.489362 - endloop - endfacet - facet normal 0.0785756 0.996908 0 - outer loop - vertex 2.69656 -0.00188622 0.489362 - vertex 2.69656 -0.00188622 -0.510638 - vertex 2.67239 1.87089e-05 -0.510638 - endloop - endfacet - facet normal 0.0785756 0.996908 0 - outer loop - vertex 2.69656 -0.00188622 0.489362 - vertex 2.67239 1.87089e-05 -0.510638 - vertex 2.67239 1.87089e-05 0.489362 - endloop - endfacet - facet normal 0.132599 0.99117 0 - outer loop - vertex 2.67239 1.87089e-05 0.489362 - vertex 2.67239 1.87089e-05 -0.510638 - vertex 2.64917 0.00312541 -0.510638 - endloop - endfacet - facet normal 0.132599 0.99117 0 - outer loop - vertex 2.67239 1.87089e-05 0.489362 - vertex 2.64917 0.00312541 -0.510638 - vertex 2.64917 0.00312541 0.489362 - endloop - endfacet - facet normal 0.18746 0.982272 0 - outer loop - vertex 2.64917 0.00312541 0.489362 - vertex 2.64917 0.00312541 -0.510638 - vertex 2.62689 0.00737811 -0.510638 - endloop - endfacet - facet normal 0.18746 0.982272 0 - outer loop - vertex 2.64917 0.00312541 0.489362 - vertex 2.62689 0.00737811 -0.510638 - vertex 2.62689 0.00737811 0.489362 - endloop - endfacet - facet normal 0.242743 0.970091 0 - outer loop - vertex 2.62689 0.00737811 0.489362 - vertex 2.62689 0.00737811 -0.510638 - vertex 2.60553 0.012721 -0.510638 - endloop - endfacet - facet normal 0.242743 0.970091 0 - outer loop - vertex 2.62689 0.00737811 0.489362 - vertex 2.60553 0.012721 -0.510638 - vertex 2.60553 0.012721 0.489362 - endloop - endfacet - facet normal 0.298004 0.954565 0 - outer loop - vertex 2.60553 0.012721 0.489362 - vertex 2.60553 0.012721 -0.510638 - vertex 2.58511 0.0190984 -0.510638 - endloop - endfacet - facet normal 0.298004 0.954565 0 - outer loop - vertex 2.60553 0.012721 0.489362 - vertex 2.58511 0.0190984 -0.510638 - vertex 2.58511 0.0190984 0.489362 - endloop - endfacet - facet normal 0.352788 0.935703 0 - outer loop - vertex 2.58511 0.0190984 0.489362 - vertex 2.58511 0.0190984 -0.510638 - vertex 2.5656 0.0264544 -0.510638 - endloop - endfacet - facet normal 0.352788 0.935703 0 - outer loop - vertex 2.58511 0.0190984 0.489362 - vertex 2.5656 0.0264544 -0.510638 - vertex 2.5656 0.0264544 0.489362 - endloop - endfacet - facet normal 0.406637 0.91359 0 - outer loop - vertex 2.5656 0.0264544 0.489362 - vertex 2.5656 0.0264544 -0.510638 - vertex 2.547 0.0347334 -0.510638 - endloop - endfacet - facet normal 0.406637 0.91359 0 - outer loop - vertex 2.5656 0.0264544 0.489362 - vertex 2.547 0.0347334 -0.510638 - vertex 2.547 0.0347334 0.489362 - endloop - endfacet - facet normal 0.45912 0.888374 0 - outer loop - vertex 2.547 0.0347334 0.489362 - vertex 2.547 0.0347334 -0.510638 - vertex 2.5293 0.0438794 -0.510638 - endloop - endfacet - facet normal 0.45912 0.888374 0 - outer loop - vertex 2.547 0.0347334 0.489362 - vertex 2.5293 0.0438794 -0.510638 - vertex 2.5293 0.0438794 0.489362 - endloop - endfacet - facet normal 0.509846 0.860266 0 - outer loop - vertex 2.5293 0.0438794 0.489362 - vertex 2.5293 0.0438794 -0.510638 - vertex 2.5125 0.0538368 -0.510638 - endloop - endfacet - facet normal 0.509846 0.860266 0 - outer loop - vertex 2.5293 0.0438794 0.489362 - vertex 2.5125 0.0538368 -0.510638 - vertex 2.5125 0.0538368 0.489362 - endloop - endfacet - facet normal 0.558474 0.829522 0 - outer loop - vertex 2.5125 0.0538368 0.489362 - vertex 2.5125 0.0538368 -0.510638 - vertex 2.49659 0.0645497 -0.510638 - endloop - endfacet - facet normal 0.558474 0.829522 0 - outer loop - vertex 2.5125 0.0538368 0.489362 - vertex 2.49659 0.0645497 -0.510638 - vertex 2.49659 0.0645497 0.489362 - endloop - endfacet - facet normal 0.604728 0.796432 0 - outer loop - vertex 2.49659 0.0645497 0.489362 - vertex 2.49659 0.0645497 -0.510638 - vertex 2.48155 0.0759624 -0.510638 - endloop - endfacet - facet normal 0.604728 0.796432 0 - outer loop - vertex 2.49659 0.0645497 0.489362 - vertex 2.48155 0.0759624 -0.510638 - vertex 2.48155 0.0759624 0.489362 - endloop - endfacet - facet normal 0.648404 0.761296 0 - outer loop - vertex 2.48155 0.0759624 0.489362 - vertex 2.48155 0.0759624 -0.510638 - vertex 2.4674 0.0880191 -0.510638 - endloop - endfacet - facet normal 0.648404 0.761296 0 - outer loop - vertex 2.48155 0.0759624 0.489362 - vertex 2.4674 0.0880191 -0.510638 - vertex 2.4674 0.0880191 0.489362 - endloop - endfacet - facet normal 0.689353 0.724425 0 - outer loop - vertex 2.4674 0.0880191 0.489362 - vertex 2.4674 0.0880191 -0.510638 - vertex 2.45411 0.100664 -0.510638 - endloop - endfacet - facet normal 0.689353 0.724425 0 - outer loop - vertex 2.4674 0.0880191 0.489362 - vertex 2.45411 0.100664 -0.510638 - vertex 2.45411 0.100664 0.489362 - endloop - endfacet - facet normal 0.727495 0.686113 0 - outer loop - vertex 2.45411 0.100664 0.489362 - vertex 2.45411 0.100664 -0.510638 - vertex 2.44168 0.113841 -0.510638 - endloop - endfacet - facet normal 0.727495 0.686113 0 - outer loop - vertex 2.45411 0.100664 0.489362 - vertex 2.44168 0.113841 -0.510638 - vertex 2.44168 0.113841 0.489362 - endloop - endfacet - facet normal 0.762805 0.646628 0 - outer loop - vertex 2.44168 0.113841 0.489362 - vertex 2.44168 0.113841 -0.510638 - vertex 2.43011 0.127495 -0.510638 - endloop - endfacet - facet normal 0.762805 0.646628 0 - outer loop - vertex 2.44168 0.113841 0.489362 - vertex 2.43011 0.127495 -0.510638 - vertex 2.43011 0.127495 0.489362 - endloop - endfacet - facet normal 0.795306 0.606208 0 - outer loop - vertex 2.43011 0.127495 0.489362 - vertex 2.43011 0.127495 -0.510638 - vertex 2.41938 0.14157 -0.510638 - endloop - endfacet - facet normal 0.795306 0.606208 0 - outer loop - vertex 2.43011 0.127495 0.489362 - vertex 2.41938 0.14157 -0.510638 - vertex 2.41938 0.14157 0.489362 - endloop - endfacet - facet normal 0.825065 0.565038 0 - outer loop - vertex 2.41938 0.14157 0.489362 - vertex 2.41938 0.14157 -0.510638 - vertex 2.40949 0.15601 -0.510638 - endloop - endfacet - facet normal 0.825065 0.565038 0 - outer loop - vertex 2.41938 0.14157 0.489362 - vertex 2.40949 0.15601 -0.510638 - vertex 2.40949 0.15601 0.489362 - endloop - endfacet - facet normal 0.852155 0.52329 0 - outer loop - vertex 2.40949 0.15601 0.489362 - vertex 2.40949 0.15601 -0.510638 - vertex 2.40043 0.17076 -0.510638 - endloop - endfacet - facet normal 0.852155 0.52329 0 - outer loop - vertex 2.40949 0.15601 0.489362 - vertex 2.40043 0.17076 -0.510638 - vertex 2.40043 0.17076 0.489362 - endloop - endfacet - facet normal 0.876691 0.481055 0 - outer loop - vertex 2.40043 0.17076 0.489362 - vertex 2.40043 0.17076 -0.510638 - vertex 2.3922 0.185763 -0.510638 - endloop - endfacet - facet normal 0.876691 0.481055 0 - outer loop - vertex 2.40043 0.17076 0.489362 - vertex 2.3922 0.185763 -0.510638 - vertex 2.3922 0.185763 0.489362 - endloop - endfacet - facet normal 0.898778 0.438405 0 - outer loop - vertex 2.3922 0.185763 0.489362 - vertex 2.3922 0.185763 -0.510638 - vertex 2.38479 0.200963 -0.510638 - endloop - endfacet - facet normal 0.898778 0.438405 0 - outer loop - vertex 2.3922 0.185763 0.489362 - vertex 2.38479 0.200963 -0.510638 - vertex 2.38479 0.200963 0.489362 - endloop - endfacet - facet normal 0.918526 0.395361 0 - outer loop - vertex 2.38479 0.200963 0.489362 - vertex 2.38479 0.200963 -0.510638 - vertex 2.37818 0.216306 -0.510638 - endloop - endfacet - facet normal 0.918526 0.395361 0 - outer loop - vertex 2.38479 0.200963 0.489362 - vertex 2.37818 0.216306 -0.510638 - vertex 2.37818 0.216306 0.489362 - endloop - endfacet - facet normal 0.936042 0.351889 0 - outer loop - vertex 2.37818 0.216306 0.489362 - vertex 2.37818 0.216306 -0.510638 - vertex 2.37238 0.231735 -0.510638 - endloop - endfacet - facet normal 0.936042 0.351889 0 - outer loop - vertex 2.37818 0.216306 0.489362 - vertex 2.37238 0.231735 -0.510638 - vertex 2.37238 0.231735 0.489362 - endloop - endfacet - facet normal 0.951402 0.307952 0 - outer loop - vertex 2.37238 0.231735 0.489362 - vertex 2.37238 0.231735 -0.510638 - vertex 2.36738 0.247194 -0.510638 - endloop - endfacet - facet normal 0.951402 0.307952 0 - outer loop - vertex 2.37238 0.231735 0.489362 - vertex 2.36738 0.247194 -0.510638 - vertex 2.36738 0.247194 0.489362 - endloop - endfacet - facet normal 0.964681 0.263422 0 - outer loop - vertex 2.36738 0.247194 0.489362 - vertex 2.36738 0.247194 -0.510638 - vertex 2.36316 0.262628 -0.510638 - endloop - endfacet - facet normal 0.964681 0.263422 0 - outer loop - vertex 2.36738 0.247194 0.489362 - vertex 2.36316 0.262628 -0.510638 - vertex 2.36316 0.262628 0.489362 - endloop - endfacet - facet normal 0.97591 0.218173 0 - outer loop - vertex 2.36316 0.262628 0.489362 - vertex 2.36316 0.262628 -0.510638 - vertex 2.35973 0.277981 -0.510638 - endloop - endfacet - facet normal 0.97591 0.218173 0 - outer loop - vertex 2.36316 0.262628 0.489362 - vertex 2.35973 0.277981 -0.510638 - vertex 2.35973 0.277981 0.489362 - endloop - endfacet - facet normal 0.985092 0.172026 0 - outer loop - vertex 2.35973 0.277981 0.489362 - vertex 2.35973 0.277981 -0.510638 - vertex 2.35707 0.293197 -0.510638 - endloop - endfacet - facet normal 0.985092 0.172026 0 - outer loop - vertex 2.35973 0.277981 0.489362 - vertex 2.35707 0.293197 -0.510638 - vertex 2.35707 0.293197 0.489362 - endloop - endfacet - facet normal 0.992186 0.12477 0 - outer loop - vertex 2.35707 0.293197 0.489362 - vertex 2.35707 0.293197 -0.510638 - vertex 2.35519 0.308221 -0.510638 - endloop - endfacet - facet normal 0.992186 0.12477 0 - outer loop - vertex 2.35707 0.293197 0.489362 - vertex 2.35519 0.308221 -0.510638 - vertex 2.35519 0.308221 0.489362 - endloop - endfacet - facet normal 0.997097 0.0761373 0 - outer loop - vertex 2.35519 0.308221 0.489362 - vertex 2.35519 0.308221 -0.510638 - vertex 2.35406 0.322996 -0.510638 - endloop - endfacet - facet normal 0.997097 0.0761373 0 - outer loop - vertex 2.35519 0.308221 0.489362 - vertex 2.35406 0.322996 -0.510638 - vertex 2.35406 0.322996 0.489362 - endloop - endfacet - facet normal 0.999665 0.0258751 0 - outer loop - vertex 2.35406 0.322996 0.489362 - vertex 2.35406 0.322996 -0.510638 - vertex 2.35368 0.337466 -0.510638 - endloop - endfacet - facet normal 0.999665 0.0258751 0 - outer loop - vertex 2.35406 0.322996 0.489362 - vertex 2.35368 0.337466 -0.510638 - vertex 2.35368 0.337466 0.489362 - endloop - endfacet - facet normal 0.999682 -0.025211 0 - outer loop - vertex 2.35368 0.337466 0.489362 - vertex 2.35368 0.337466 -0.510638 - vertex 2.3542 0.358076 -0.510638 - endloop - endfacet - facet normal 0.999682 -0.025211 0 - outer loop - vertex 2.35368 0.337466 0.489362 - vertex 2.3542 0.358076 -0.510638 - vertex 2.3542 0.358076 0.489362 - endloop - endfacet - facet normal 0.997092 -0.0762033 0 - outer loop - vertex 2.3542 0.358076 0.489362 - vertex 2.3542 0.358076 -0.510638 - vertex 2.35575 0.378291 -0.510638 - endloop - endfacet - facet normal 0.997092 -0.0762033 0 - outer loop - vertex 2.3542 0.358076 0.489362 - vertex 2.35575 0.378291 -0.510638 - vertex 2.35575 0.378291 0.489362 - endloop - endfacet - facet normal 0.991818 -0.127662 0 - outer loop - vertex 2.35575 0.378291 0.489362 - vertex 2.35575 0.378291 -0.510638 - vertex 2.3583 0.39809 -0.510638 - endloop - endfacet - facet normal 0.991818 -0.127662 0 - outer loop - vertex 2.35575 0.378291 0.489362 - vertex 2.3583 0.39809 -0.510638 - vertex 2.3583 0.39809 0.489362 - endloop - endfacet - facet normal 0.983779 -0.179386 0 - outer loop - vertex 2.3583 0.39809 0.489362 - vertex 2.3583 0.39809 -0.510638 - vertex 2.36183 0.417452 -0.510638 - endloop - endfacet - facet normal 0.983779 -0.179386 0 - outer loop - vertex 2.3583 0.39809 0.489362 - vertex 2.36183 0.417452 -0.510638 - vertex 2.36183 0.417452 0.489362 - endloop - endfacet - facet normal 0.972921 -0.231139 0 - outer loop - vertex 2.36183 0.417452 0.489362 - vertex 2.36183 0.417452 -0.510638 - vertex 2.36632 0.436355 -0.510638 - endloop - endfacet - facet normal 0.972921 -0.231139 0 - outer loop - vertex 2.36183 0.417452 0.489362 - vertex 2.36632 0.436355 -0.510638 - vertex 2.36632 0.436355 0.489362 - endloop - endfacet - facet normal 0.959208 -0.282702 0 - outer loop - vertex 2.36632 0.436355 0.489362 - vertex 2.36632 0.436355 -0.510638 - vertex 2.37175 0.454778 -0.510638 - endloop - endfacet - facet normal 0.959208 -0.282702 0 - outer loop - vertex 2.36632 0.436355 0.489362 - vertex 2.37175 0.454778 -0.510638 - vertex 2.37175 0.454778 0.489362 - endloop - endfacet - facet normal 0.942629 -0.333842 0 - outer loop - vertex 2.37175 0.454778 0.489362 - vertex 2.37175 0.454778 -0.510638 - vertex 2.37809 0.4727 -0.510638 - endloop - endfacet - facet normal 0.942629 -0.333842 0 - outer loop - vertex 2.37175 0.454778 0.489362 - vertex 2.37809 0.4727 -0.510638 - vertex 2.37809 0.4727 0.489362 - endloop - endfacet - facet normal 0.923203 -0.384312 0 - outer loop - vertex 2.37809 0.4727 0.489362 - vertex 2.37809 0.4727 -0.510638 - vertex 2.38534 0.490099 -0.510638 - endloop - endfacet - facet normal 0.923203 -0.384312 0 - outer loop - vertex 2.37809 0.4727 0.489362 - vertex 2.38534 0.490099 -0.510638 - vertex 2.38534 0.490099 0.489362 - endloop - endfacet - facet normal 0.90097 -0.433882 0 - outer loop - vertex 2.38534 0.490099 0.489362 - vertex 2.38534 0.490099 -0.510638 - vertex 2.39345 0.506954 -0.510638 - endloop - endfacet - facet normal 0.90097 -0.433882 0 - outer loop - vertex 2.38534 0.490099 0.489362 - vertex 2.39345 0.506954 -0.510638 - vertex 2.39345 0.506954 0.489362 - endloop - endfacet - facet normal 0.875979 -0.482348 0 - outer loop - vertex 2.39345 0.506954 0.489362 - vertex 2.39345 0.506954 -0.510638 - vertex 2.40242 0.523244 -0.510638 - endloop - endfacet - facet normal 0.875979 -0.482348 0 - outer loop - vertex 2.39345 0.506954 0.489362 - vertex 2.40242 0.523244 -0.510638 - vertex 2.40242 0.523244 0.489362 - endloop - endfacet - facet normal 0.848327 -0.529472 0 - outer loop - vertex 2.40242 0.523244 0.489362 - vertex 2.40242 0.523244 -0.510638 - vertex 2.41222 0.538947 -0.510638 - endloop - endfacet - facet normal 0.848327 -0.529472 0 - outer loop - vertex 2.40242 0.523244 0.489362 - vertex 2.41222 0.538947 -0.510638 - vertex 2.41222 0.538947 0.489362 - endloop - endfacet - facet normal 0.818116 -0.575053 0 - outer loop - vertex 2.41222 0.538947 0.489362 - vertex 2.41222 0.538947 -0.510638 - vertex 2.42283 0.554042 -0.510638 - endloop - endfacet - facet normal 0.818116 -0.575053 0 - outer loop - vertex 2.41222 0.538947 0.489362 - vertex 2.42283 0.554042 -0.510638 - vertex 2.42283 0.554042 0.489362 - endloop - endfacet - facet normal 0.785465 -0.618906 0 - outer loop - vertex 2.42283 0.554042 0.489362 - vertex 2.42283 0.554042 -0.510638 - vertex 2.43423 0.568508 -0.510638 - endloop - endfacet - facet normal 0.785465 -0.618906 0 - outer loop - vertex 2.42283 0.554042 0.489362 - vertex 2.43423 0.568508 -0.510638 - vertex 2.43423 0.568508 0.489362 - endloop - endfacet - facet normal 0.75051 -0.660859 0 - outer loop - vertex 2.43423 0.568508 0.489362 - vertex 2.43423 0.568508 -0.510638 - vertex 2.4464 0.582323 -0.510638 - endloop - endfacet - facet normal 0.75051 -0.660859 0 - outer loop - vertex 2.43423 0.568508 0.489362 - vertex 2.4464 0.582323 -0.510638 - vertex 2.4464 0.582323 0.489362 - endloop - endfacet - facet normal 0.713415 -0.700742 0 - outer loop - vertex 2.4464 0.582323 0.489362 - vertex 2.4464 0.582323 -0.510638 - vertex 2.45931 0.595466 -0.510638 - endloop - endfacet - facet normal 0.713415 -0.700742 0 - outer loop - vertex 2.4464 0.582323 0.489362 - vertex 2.45931 0.595466 -0.510638 - vertex 2.45931 0.595466 0.489362 - endloop - endfacet - facet normal 0.674336 -0.738424 0 - outer loop - vertex 2.45931 0.595466 0.489362 - vertex 2.45931 0.595466 -0.510638 - vertex 2.47294 0.607916 -0.510638 - endloop - endfacet - facet normal 0.674336 -0.738424 0 - outer loop - vertex 2.45931 0.595466 0.489362 - vertex 2.47294 0.607916 -0.510638 - vertex 2.47294 0.607916 0.489362 - endloop - endfacet - facet normal 0.63345 -0.773783 0 - outer loop - vertex 2.47294 0.607916 0.489362 - vertex 2.47294 0.607916 -0.510638 - vertex 2.48728 0.619651 -0.510638 - endloop - endfacet - facet normal 0.63345 -0.773783 0 - outer loop - vertex 2.47294 0.607916 0.489362 - vertex 2.48728 0.619651 -0.510638 - vertex 2.48728 0.619651 0.489362 - endloop - endfacet - facet normal 0.590946 -0.806711 0 - outer loop - vertex 2.48728 0.619651 0.489362 - vertex 2.48728 0.619651 -0.510638 - vertex 2.50229 0.63065 -0.510638 - endloop - endfacet - facet normal 0.590946 -0.806711 0 - outer loop - vertex 2.48728 0.619651 0.489362 - vertex 2.50229 0.63065 -0.510638 - vertex 2.50229 0.63065 0.489362 - endloop - endfacet - facet normal 0.547012 -0.837125 0 - outer loop - vertex 2.50229 0.63065 0.489362 - vertex 2.50229 0.63065 -0.510638 - vertex 2.51796 0.640892 -0.510638 - endloop - endfacet - facet normal 0.547012 -0.837125 0 - outer loop - vertex 2.50229 0.63065 0.489362 - vertex 2.51796 0.640892 -0.510638 - vertex 2.51796 0.640892 0.489362 - endloop - endfacet - facet normal 0.501829 -0.864967 0 - outer loop - vertex 2.51796 0.640892 0.489362 - vertex 2.51796 0.640892 -0.510638 - vertex 2.53428 0.650355 -0.510638 - endloop - endfacet - facet normal 0.501829 -0.864967 0 - outer loop - vertex 2.51796 0.640892 0.489362 - vertex 2.53428 0.650355 -0.510638 - vertex 2.53428 0.650355 0.489362 - endloop - endfacet - facet normal 0.455607 -0.890181 0 - outer loop - vertex 2.53428 0.650355 0.489362 - vertex 2.53428 0.650355 -0.510638 - vertex 2.5512 0.659018 -0.510638 - endloop - endfacet - facet normal 0.455607 -0.890181 0 - outer loop - vertex 2.53428 0.650355 0.489362 - vertex 2.5512 0.659018 -0.510638 - vertex 2.5512 0.659018 0.489362 - endloop - endfacet - facet normal 0.408526 -0.912747 0 - outer loop - vertex 2.5512 0.659018 0.489362 - vertex 2.5512 0.659018 -0.510638 - vertex 2.56872 0.66686 -0.510638 - endloop - endfacet - facet normal 0.408526 -0.912747 0 - outer loop - vertex 2.5512 0.659018 0.489362 - vertex 2.56872 0.66686 -0.510638 - vertex 2.56872 0.66686 0.489362 - endloop - endfacet - facet normal 0.36079 -0.932647 0 - outer loop - vertex 2.56872 0.66686 0.489362 - vertex 2.56872 0.66686 -0.510638 - vertex 2.58681 0.673859 -0.510638 - endloop - endfacet - facet normal 0.36079 -0.932647 0 - outer loop - vertex 2.56872 0.66686 0.489362 - vertex 2.58681 0.673859 -0.510638 - vertex 2.58681 0.673859 0.489362 - endloop - endfacet - facet normal 0.312583 -0.94989 0 - outer loop - vertex 2.58681 0.673859 0.489362 - vertex 2.58681 0.673859 -0.510638 - vertex 2.60546 0.679994 -0.510638 - endloop - endfacet - facet normal 0.312583 -0.94989 0 - outer loop - vertex 2.58681 0.673859 0.489362 - vertex 2.60546 0.679994 -0.510638 - vertex 2.60546 0.679994 0.489362 - endloop - endfacet - facet normal 0.264089 -0.964498 0 - outer loop - vertex 2.60546 0.679994 0.489362 - vertex 2.60546 0.679994 -0.510638 - vertex 2.62463 0.685244 -0.510638 - endloop - endfacet - facet normal 0.264089 -0.964498 0 - outer loop - vertex 2.60546 0.679994 0.489362 - vertex 2.62463 0.685244 -0.510638 - vertex 2.62463 0.685244 0.489362 - endloop - endfacet - facet normal 0.215493 -0.976505 0 - outer loop - vertex 2.62463 0.685244 0.489362 - vertex 2.62463 0.685244 -0.510638 - vertex 2.64431 0.689587 -0.510638 - endloop - endfacet - facet normal 0.215493 -0.976505 0 - outer loop - vertex 2.62463 0.685244 0.489362 - vertex 2.64431 0.689587 -0.510638 - vertex 2.64431 0.689587 0.489362 - endloop - endfacet - facet normal 0.166963 -0.985963 0 - outer loop - vertex 2.64431 0.689587 0.489362 - vertex 2.64431 0.689587 -0.510638 - vertex 2.66448 0.693002 -0.510638 - endloop - endfacet - facet normal 0.166963 -0.985963 0 - outer loop - vertex 2.64431 0.689587 0.489362 - vertex 2.66448 0.693002 -0.510638 - vertex 2.66448 0.693002 0.489362 - endloop - endfacet - facet normal 0.118669 -0.992934 0 - outer loop - vertex 2.66448 0.693002 0.489362 - vertex 2.66448 0.693002 -0.510638 - vertex 2.68511 0.695468 -0.510638 - endloop - endfacet - facet normal 0.118669 -0.992934 0 - outer loop - vertex 2.66448 0.693002 0.489362 - vertex 2.68511 0.695468 -0.510638 - vertex 2.68511 0.695468 0.489362 - endloop - endfacet - facet normal 0.0707659 -0.997493 0 - outer loop - vertex 2.68511 0.695468 0.489362 - vertex 2.68511 0.695468 -0.510638 - vertex 2.70619 0.696963 -0.510638 - endloop - endfacet - facet normal 0.0707659 -0.997493 0 - outer loop - vertex 2.68511 0.695468 0.489362 - vertex 2.70619 0.696963 -0.510638 - vertex 2.70619 0.696963 0.489362 - endloop - endfacet - facet normal 0.0233987 -0.999726 0 - outer loop - vertex 2.70619 0.696963 0.489362 - vertex 2.70619 0.696963 -0.510638 - vertex 2.72768 0.697466 -0.510638 - endloop - endfacet - facet normal 0.0233987 -0.999726 0 - outer loop - vertex 2.70619 0.696963 0.489362 - vertex 2.72768 0.697466 -0.510638 - vertex 2.72768 0.697466 0.489362 - endloop - endfacet - facet normal -0.00810214 -0.999967 -0 - outer loop - vertex 2.72768 0.697466 0.489362 - vertex 2.72768 0.697466 -0.510638 - vertex 2.73469 0.69741 -0.510638 - endloop - endfacet - facet normal -0.00810214 -0.999967 0 - outer loop - vertex 2.72768 0.697466 0.489362 - vertex 2.73469 0.69741 -0.510638 - vertex 2.73469 0.69741 0.489362 - endloop - endfacet - facet normal -0.0244107 -0.999702 -0 - outer loop - vertex 2.73469 0.69741 0.489362 - vertex 2.73469 0.69741 -0.510638 - vertex 2.7417 0.697238 -0.510638 - endloop - endfacet - facet normal -0.0244107 -0.999702 0 - outer loop - vertex 2.73469 0.69741 0.489362 - vertex 2.7417 0.697238 -0.510638 - vertex 2.7417 0.697238 0.489362 - endloop - endfacet - facet normal -0.0407653 -0.999169 -0 - outer loop - vertex 2.7417 0.697238 0.489362 - vertex 2.7417 0.697238 -0.510638 - vertex 2.74873 0.696952 -0.510638 - endloop - endfacet - facet normal -0.0407653 -0.999169 0 - outer loop - vertex 2.7417 0.697238 0.489362 - vertex 2.74873 0.696952 -0.510638 - vertex 2.74873 0.696952 0.489362 - endloop - endfacet - facet normal -0.0571262 -0.998367 -0 - outer loop - vertex 2.74873 0.696952 0.489362 - vertex 2.74873 0.696952 -0.510638 - vertex 2.75578 0.696548 -0.510638 - endloop - endfacet - facet normal -0.0571262 -0.998367 0 - outer loop - vertex 2.74873 0.696952 0.489362 - vertex 2.75578 0.696548 -0.510638 - vertex 2.75578 0.696548 0.489362 - endloop - endfacet - facet normal -0.0734577 -0.997298 -0 - outer loop - vertex 2.75578 0.696548 0.489362 - vertex 2.75578 0.696548 -0.510638 - vertex 2.76286 0.696027 -0.510638 - endloop - endfacet - facet normal -0.0734577 -0.997298 0 - outer loop - vertex 2.75578 0.696548 0.489362 - vertex 2.76286 0.696027 -0.510638 - vertex 2.76286 0.696027 0.489362 - endloop - endfacet - facet normal -0.0897126 -0.995968 -0 - outer loop - vertex 2.76286 0.696027 0.489362 - vertex 2.76286 0.696027 -0.510638 - vertex 2.76997 0.695386 -0.510638 - endloop - endfacet - facet normal -0.0897126 -0.995968 0 - outer loop - vertex 2.76286 0.696027 0.489362 - vertex 2.76997 0.695386 -0.510638 - vertex 2.76997 0.695386 0.489362 - endloop - endfacet - facet normal -0.105842 -0.994383 -0 - outer loop - vertex 2.76997 0.695386 0.489362 - vertex 2.76997 0.695386 -0.510638 - vertex 2.77711 0.694626 -0.510638 - endloop - endfacet - facet normal -0.105842 -0.994383 0 - outer loop - vertex 2.76997 0.695386 0.489362 - vertex 2.77711 0.694626 -0.510638 - vertex 2.77711 0.694626 0.489362 - endloop - endfacet - facet normal -0.121808 -0.992554 -0 - outer loop - vertex 2.77711 0.694626 0.489362 - vertex 2.77711 0.694626 -0.510638 - vertex 2.78429 0.693745 -0.510638 - endloop - endfacet - facet normal -0.121808 -0.992554 0 - outer loop - vertex 2.77711 0.694626 0.489362 - vertex 2.78429 0.693745 -0.510638 - vertex 2.78429 0.693745 0.489362 - endloop - endfacet - facet normal -0.137563 -0.990493 -0 - outer loop - vertex 2.78429 0.693745 0.489362 - vertex 2.78429 0.693745 -0.510638 - vertex 2.79152 0.692741 -0.510638 - endloop - endfacet - facet normal -0.137563 -0.990493 0 - outer loop - vertex 2.78429 0.693745 0.489362 - vertex 2.79152 0.692741 -0.510638 - vertex 2.79152 0.692741 0.489362 - endloop - endfacet - facet normal -0.153082 -0.988213 -0 - outer loop - vertex 2.79152 0.692741 0.489362 - vertex 2.79152 0.692741 -0.510638 - vertex 2.79879 0.691615 -0.510638 - endloop - endfacet - facet normal -0.153082 -0.988213 0 - outer loop - vertex 2.79152 0.692741 0.489362 - vertex 2.79879 0.691615 -0.510638 - vertex 2.79879 0.691615 0.489362 - endloop - endfacet - facet normal -0.168327 -0.985731 -0 - outer loop - vertex 2.79879 0.691615 0.489362 - vertex 2.79879 0.691615 -0.510638 - vertex 2.80612 0.690363 -0.510638 - endloop - endfacet - facet normal -0.168327 -0.985731 0 - outer loop - vertex 2.79879 0.691615 0.489362 - vertex 2.80612 0.690363 -0.510638 - vertex 2.80612 0.690363 0.489362 - endloop - endfacet - facet normal -0.183271 -0.983062 -0 - outer loop - vertex 2.80612 0.690363 0.489362 - vertex 2.80612 0.690363 -0.510638 - vertex 2.81351 0.688986 -0.510638 - endloop - endfacet - facet normal -0.183271 -0.983062 0 - outer loop - vertex 2.80612 0.690363 0.489362 - vertex 2.81351 0.688986 -0.510638 - vertex 2.81351 0.688986 0.489362 - endloop - endfacet - facet normal -0.197873 -0.980228 -0 - outer loop - vertex 2.81351 0.688986 0.489362 - vertex 2.81351 0.688986 -0.510638 - vertex 2.82095 0.687483 -0.510638 - endloop - endfacet - facet normal -0.197873 -0.980228 0 - outer loop - vertex 2.81351 0.688986 0.489362 - vertex 2.82095 0.687483 -0.510638 - vertex 2.82095 0.687483 0.489362 - endloop - endfacet - facet normal -0.212123 -0.977243 -0 - outer loop - vertex 2.82095 0.687483 0.489362 - vertex 2.82095 0.687483 -0.510638 - vertex 2.82847 0.685852 -0.510638 - endloop - endfacet - facet normal -0.212123 -0.977243 0 - outer loop - vertex 2.82095 0.687483 0.489362 - vertex 2.82847 0.685852 -0.510638 - vertex 2.82847 0.685852 0.489362 - endloop - endfacet - facet normal -0.225986 -0.974131 -0 - outer loop - vertex 2.82847 0.685852 0.489362 - vertex 2.82847 0.685852 -0.510638 - vertex 2.83606 0.684091 -0.510638 - endloop - endfacet - facet normal -0.225986 -0.974131 0 - outer loop - vertex 2.82847 0.685852 0.489362 - vertex 2.83606 0.684091 -0.510638 - vertex 2.83606 0.684091 0.489362 - endloop - endfacet - facet normal -0.23945 -0.970909 -0 - outer loop - vertex 2.83606 0.684091 0.489362 - vertex 2.83606 0.684091 -0.510638 - vertex 2.84372 0.682201 -0.510638 - endloop - endfacet - facet normal -0.23945 -0.970909 0 - outer loop - vertex 2.83606 0.684091 0.489362 - vertex 2.84372 0.682201 -0.510638 - vertex 2.84372 0.682201 0.489362 - endloop - endfacet - facet normal -0.252509 -0.967594 -0 - outer loop - vertex 2.84372 0.682201 0.489362 - vertex 2.84372 0.682201 -0.510638 - vertex 2.85147 0.68018 -0.510638 - endloop - endfacet - facet normal -0.252509 -0.967594 0 - outer loop - vertex 2.84372 0.682201 0.489362 - vertex 2.85147 0.68018 -0.510638 - vertex 2.85147 0.68018 0.489362 - endloop - endfacet - facet normal -0.265145 -0.964209 -0 - outer loop - vertex 2.85147 0.68018 0.489362 - vertex 2.85147 0.68018 -0.510638 - vertex 2.8593 0.678026 -0.510638 - endloop - endfacet - facet normal -0.265145 -0.964209 0 - outer loop - vertex 2.85147 0.68018 0.489362 - vertex 2.8593 0.678026 -0.510638 - vertex 2.8593 0.678026 0.489362 - endloop - endfacet - facet normal -0.277341 -0.960772 -0 - outer loop - vertex 2.8593 0.678026 0.489362 - vertex 2.8593 0.678026 -0.510638 - vertex 2.86722 0.67574 -0.510638 - endloop - endfacet - facet normal -0.277341 -0.960772 0 - outer loop - vertex 2.8593 0.678026 0.489362 - vertex 2.86722 0.67574 -0.510638 - vertex 2.86722 0.67574 0.489362 - endloop - endfacet - facet normal -0.289106 -0.957297 -0 - outer loop - vertex 2.86722 0.67574 0.489362 - vertex 2.86722 0.67574 -0.510638 - vertex 2.87524 0.673318 -0.510638 - endloop - endfacet - facet normal -0.289106 -0.957297 0 - outer loop - vertex 2.86722 0.67574 0.489362 - vertex 2.87524 0.673318 -0.510638 - vertex 2.87524 0.673318 0.489362 - endloop - endfacet - facet normal -0.300432 -0.953803 -0 - outer loop - vertex 2.87524 0.673318 0.489362 - vertex 2.87524 0.673318 -0.510638 - vertex 2.88335 0.670761 -0.510638 - endloop - endfacet - facet normal -0.300432 -0.953803 0 - outer loop - vertex 2.87524 0.673318 0.489362 - vertex 2.88335 0.670761 -0.510638 - vertex 2.88335 0.670761 0.489362 - endloop - endfacet - facet normal -0.311317 -0.950306 -0 - outer loop - vertex 2.88335 0.670761 0.489362 - vertex 2.88335 0.670761 -0.510638 - vertex 2.89158 0.668068 -0.510638 - endloop - endfacet - facet normal -0.311317 -0.950306 0 - outer loop - vertex 2.88335 0.670761 0.489362 - vertex 2.89158 0.668068 -0.510638 - vertex 2.89158 0.668068 0.489362 - endloop - endfacet - facet normal -0.321756 -0.946823 -0 - outer loop - vertex 2.89158 0.668068 0.489362 - vertex 2.89158 0.668068 -0.510638 - vertex 2.89991 0.665237 -0.510638 - endloop - endfacet - facet normal -0.321756 -0.946823 0 - outer loop - vertex 2.89158 0.668068 0.489362 - vertex 2.89991 0.665237 -0.510638 - vertex 2.89991 0.665237 0.489362 - endloop - endfacet - facet normal -0.331766 -0.943362 -0 - outer loop - vertex 2.89991 0.665237 0.489362 - vertex 2.89991 0.665237 -0.510638 - vertex 2.90835 0.662266 -0.510638 - endloop - endfacet - facet normal -0.331766 -0.943362 0 - outer loop - vertex 2.89991 0.665237 0.489362 - vertex 2.90835 0.662266 -0.510638 - vertex 2.90835 0.662266 0.489362 - endloop - endfacet - facet normal -0.341346 -0.939938 -0 - outer loop - vertex 2.90835 0.662266 0.489362 - vertex 2.90835 0.662266 -0.510638 - vertex 2.91692 0.659156 -0.510638 - endloop - endfacet - facet normal -0.341346 -0.939938 0 - outer loop - vertex 2.90835 0.662266 0.489362 - vertex 2.91692 0.659156 -0.510638 - vertex 2.91692 0.659156 0.489362 - endloop - endfacet - facet normal -0.350509 -0.936559 -0 - outer loop - vertex 2.91692 0.659156 0.489362 - vertex 2.91692 0.659156 -0.510638 - vertex 2.92561 0.655905 -0.510638 - endloop - endfacet - facet normal -0.350509 -0.936559 0 - outer loop - vertex 2.91692 0.659156 0.489362 - vertex 2.92561 0.655905 -0.510638 - vertex 2.92561 0.655905 0.489362 - endloop - endfacet - facet normal -0.359251 -0.933241 -0 - outer loop - vertex 2.92561 0.655905 0.489362 - vertex 2.92561 0.655905 -0.510638 - vertex 2.93442 0.652511 -0.510638 - endloop - endfacet - facet normal -0.359251 -0.933241 0 - outer loop - vertex 2.92561 0.655905 0.489362 - vertex 2.93442 0.652511 -0.510638 - vertex 2.93442 0.652511 0.489362 - endloop - endfacet - facet normal -0.367587 -0.929989 -0 - outer loop - vertex 2.93442 0.652511 0.489362 - vertex 2.93442 0.652511 -0.510638 - vertex 2.94337 0.648975 -0.510638 - endloop - endfacet - facet normal -0.367587 -0.929989 0 - outer loop - vertex 2.93442 0.652511 0.489362 - vertex 2.94337 0.648975 -0.510638 - vertex 2.94337 0.648975 0.489362 - endloop - endfacet - facet normal -0.375532 -0.926809 -0 - outer loop - vertex 2.94337 0.648975 0.489362 - vertex 2.94337 0.648975 -0.510638 - vertex 2.95245 0.645293 -0.510638 - endloop - endfacet - facet normal -0.375532 -0.926809 0 - outer loop - vertex 2.94337 0.648975 0.489362 - vertex 2.95245 0.645293 -0.510638 - vertex 2.95245 0.645293 0.489362 - endloop - endfacet - facet normal -0.383085 -0.923713 -0 - outer loop - vertex 2.95245 0.645293 0.489362 - vertex 2.95245 0.645293 -0.510638 - vertex 2.96168 0.641466 -0.510638 - endloop - endfacet - facet normal -0.383085 -0.923713 0 - outer loop - vertex 2.95245 0.645293 0.489362 - vertex 2.96168 0.641466 -0.510638 - vertex 2.96168 0.641466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 2.96168 0.641466 0.489362 - vertex 2.96168 0.641466 -0.510638 - vertex 2.96168 0.536466 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 2.96168 0.641466 0.489362 - vertex 2.96168 0.536466 -0.510638 - vertex 2.96168 0.536466 0.489362 - endloop - endfacet - facet normal 0.498688 0.866782 0 - outer loop - vertex 2.96168 0.536466 0.489362 - vertex 2.96168 0.536466 -0.510638 - vertex 2.95332 0.541277 -0.510638 - endloop - endfacet - facet normal 0.498688 0.866782 0 - outer loop - vertex 2.96168 0.536466 0.489362 - vertex 2.95332 0.541277 -0.510638 - vertex 2.95332 0.541277 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 3.18768 0.600466 0.489362 - vertex 3.18768 0.600466 -0.510638 - vertex 3.18768 0.411466 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 3.18768 0.600466 0.489362 - vertex 3.18768 0.411466 -0.510638 - vertex 3.18768 0.411466 0.489362 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 3.18768 0.411466 0.489362 - vertex 3.18768 0.411466 -0.510638 - vertex 3.45368 0.411466 -0.510638 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 3.18768 0.411466 0.489362 - vertex 3.45368 0.411466 -0.510638 - vertex 3.45368 0.411466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 3.45368 0.411466 0.489362 - vertex 3.45368 0.411466 -0.510638 - vertex 3.45368 0.323466 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 3.45368 0.411466 0.489362 - vertex 3.45368 0.323466 -0.510638 - vertex 3.45368 0.323466 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.45368 0.323466 0.489362 - vertex 3.45368 0.323466 -0.510638 - vertex 3.18768 0.323466 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.45368 0.323466 0.489362 - vertex 3.18768 0.323466 -0.510638 - vertex 3.18768 0.323466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 3.18768 0.323466 0.489362 - vertex 3.18768 0.323466 -0.510638 - vertex 3.18768 0.00646639 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 3.18768 0.323466 0.489362 - vertex 3.18768 0.00646639 -0.510638 - vertex 3.18768 0.00646639 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.18768 0.00646639 0.489362 - vertex 3.18768 0.00646639 -0.510638 - vertex 3.08968 0.00646639 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.18768 0.00646639 0.489362 - vertex 3.08968 0.00646639 -0.510638 - vertex 3.08968 0.00646639 0.489362 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 3.08968 0.00646639 0.489362 - vertex 3.08968 0.00646639 -0.510638 - vertex 3.08968 0.688466 -0.510638 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 3.08968 0.00646639 0.489362 - vertex 3.08968 0.688466 -0.510638 - vertex 3.08968 0.688466 0.489362 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 3.08968 0.688466 0.489362 - vertex 3.08968 0.688466 -0.510638 - vertex 3.45368 0.688466 -0.510638 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 3.08968 0.688466 0.489362 - vertex 3.45368 0.688466 -0.510638 - vertex 3.45368 0.688466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 3.45368 0.688466 0.489362 - vertex 3.45368 0.688466 -0.510638 - vertex 3.45368 0.600466 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 3.45368 0.688466 0.489362 - vertex 3.45368 0.600466 -0.510638 - vertex 3.45368 0.600466 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.45368 0.600466 0.489362 - vertex 3.45368 0.600466 -0.510638 - vertex 3.18768 0.600466 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.45368 0.600466 0.489362 - vertex 3.18768 0.600466 -0.510638 - vertex 3.18768 0.600466 0.489362 - endloop - endfacet - facet normal -0.023964 -0.999713 -0 - outer loop - vertex 3.82368 0.688466 0.489362 - vertex 3.82368 0.688466 -0.510638 - vertex 3.84841 0.687874 -0.510638 - endloop - endfacet - facet normal -0.023964 -0.999713 0 - outer loop - vertex 3.82368 0.688466 0.489362 - vertex 3.84841 0.687874 -0.510638 - vertex 3.84841 0.687874 0.489362 - endloop - endfacet - facet normal -0.0732709 -0.997312 -0 - outer loop - vertex 3.84841 0.687874 0.489362 - vertex 3.84841 0.687874 -0.510638 - vertex 3.87221 0.686125 -0.510638 - endloop - endfacet - facet normal -0.0732709 -0.997312 0 - outer loop - vertex 3.84841 0.687874 0.489362 - vertex 3.87221 0.686125 -0.510638 - vertex 3.87221 0.686125 0.489362 - endloop - endfacet - facet normal -0.124081 -0.992272 -0 - outer loop - vertex 3.87221 0.686125 0.489362 - vertex 3.87221 0.686125 -0.510638 - vertex 3.89508 0.683265 -0.510638 - endloop - endfacet - facet normal -0.124081 -0.992272 0 - outer loop - vertex 3.87221 0.686125 0.489362 - vertex 3.89508 0.683265 -0.510638 - vertex 3.89508 0.683265 0.489362 - endloop - endfacet - facet normal -0.176114 -0.98437 -0 - outer loop - vertex 3.89508 0.683265 0.489362 - vertex 3.89508 0.683265 -0.510638 - vertex 3.91703 0.679338 -0.510638 - endloop - endfacet - facet normal -0.176114 -0.98437 0 - outer loop - vertex 3.89508 0.683265 0.489362 - vertex 3.91703 0.679338 -0.510638 - vertex 3.91703 0.679338 0.489362 - endloop - endfacet - facet normal -0.229054 -0.973414 -0 - outer loop - vertex 3.91703 0.679338 0.489362 - vertex 3.91703 0.679338 -0.510638 - vertex 3.93807 0.674388 -0.510638 - endloop - endfacet - facet normal -0.229054 -0.973414 0 - outer loop - vertex 3.91703 0.679338 0.489362 - vertex 3.93807 0.674388 -0.510638 - vertex 3.93807 0.674388 0.489362 - endloop - endfacet - facet normal -0.282534 -0.959257 -0 - outer loop - vertex 3.93807 0.674388 0.489362 - vertex 3.93807 0.674388 -0.510638 - vertex 3.9582 0.668458 -0.510638 - endloop - endfacet - facet normal -0.282534 -0.959257 0 - outer loop - vertex 3.93807 0.674388 0.489362 - vertex 3.9582 0.668458 -0.510638 - vertex 3.9582 0.668458 0.489362 - endloop - endfacet - facet normal -0.33615 -0.941808 -0 - outer loop - vertex 3.9582 0.668458 0.489362 - vertex 3.9582 0.668458 -0.510638 - vertex 3.97743 0.661594 -0.510638 - endloop - endfacet - facet normal -0.33615 -0.941808 0 - outer loop - vertex 3.9582 0.668458 0.489362 - vertex 3.97743 0.661594 -0.510638 - vertex 3.97743 0.661594 0.489362 - endloop - endfacet - facet normal -0.389475 -0.921037 -0 - outer loop - vertex 3.97743 0.661594 0.489362 - vertex 3.97743 0.661594 -0.510638 - vertex 3.99577 0.65384 -0.510638 - endloop - endfacet - facet normal -0.389475 -0.921037 0 - outer loop - vertex 3.97743 0.661594 0.489362 - vertex 3.99577 0.65384 -0.510638 - vertex 3.99577 0.65384 0.489362 - endloop - endfacet - facet normal -0.442072 -0.89698 -0 - outer loop - vertex 3.99577 0.65384 0.489362 - vertex 3.99577 0.65384 -0.510638 - vertex 4.01322 0.645239 -0.510638 - endloop - endfacet - facet normal -0.442072 -0.89698 0 - outer loop - vertex 3.99577 0.65384 0.489362 - vertex 4.01322 0.645239 -0.510638 - vertex 4.01322 0.645239 0.489362 - endloop - endfacet - facet normal -0.493504 -0.869743 -0 - outer loop - vertex 4.01322 0.645239 0.489362 - vertex 4.01322 0.645239 -0.510638 - vertex 4.02979 0.635837 -0.510638 - endloop - endfacet - facet normal -0.493504 -0.869743 0 - outer loop - vertex 4.01322 0.645239 0.489362 - vertex 4.02979 0.635837 -0.510638 - vertex 4.02979 0.635837 0.489362 - endloop - endfacet - facet normal -0.54336 -0.8395 -0 - outer loop - vertex 4.02979 0.635837 0.489362 - vertex 4.02979 0.635837 -0.510638 - vertex 4.04549 0.625676 -0.510638 - endloop - endfacet - facet normal -0.54336 -0.8395 0 - outer loop - vertex 4.02979 0.635837 0.489362 - vertex 4.04549 0.625676 -0.510638 - vertex 4.04549 0.625676 0.489362 - endloop - endfacet - facet normal -0.591288 -0.806461 -0 - outer loop - vertex 4.04549 0.625676 0.489362 - vertex 4.04549 0.625676 -0.510638 - vertex 4.06032 0.614802 -0.510638 - endloop - endfacet - facet normal -0.591288 -0.806461 0 - outer loop - vertex 4.04549 0.625676 0.489362 - vertex 4.06032 0.614802 -0.510638 - vertex 4.06032 0.614802 0.489362 - endloop - endfacet - facet normal -0.636939 -0.770915 -0 - outer loop - vertex 4.06032 0.614802 0.489362 - vertex 4.06032 0.614802 -0.510638 - vertex 4.07429 0.603259 -0.510638 - endloop - endfacet - facet normal -0.636939 -0.770915 0 - outer loop - vertex 4.06032 0.614802 0.489362 - vertex 4.07429 0.603259 -0.510638 - vertex 4.07429 0.603259 0.489362 - endloop - endfacet - facet normal -0.680079 -0.733139 -0 - outer loop - vertex 4.07429 0.603259 0.489362 - vertex 4.07429 0.603259 -0.510638 - vertex 4.08741 0.591091 -0.510638 - endloop - endfacet - facet normal -0.680079 -0.733139 0 - outer loop - vertex 4.07429 0.603259 0.489362 - vertex 4.08741 0.591091 -0.510638 - vertex 4.08741 0.591091 0.489362 - endloop - endfacet - facet normal -0.720495 -0.69346 -0 - outer loop - vertex 4.08741 0.591091 0.489362 - vertex 4.08741 0.591091 -0.510638 - vertex 4.09968 0.578341 -0.510638 - endloop - endfacet - facet normal -0.720495 -0.69346 0 - outer loop - vertex 4.08741 0.591091 0.489362 - vertex 4.09968 0.578341 -0.510638 - vertex 4.09968 0.578341 0.489362 - endloop - endfacet - facet normal -0.758035 -0.652214 -0 - outer loop - vertex 4.09968 0.578341 0.489362 - vertex 4.09968 0.578341 -0.510638 - vertex 4.11111 0.565055 -0.510638 - endloop - endfacet - facet normal -0.758035 -0.652214 0 - outer loop - vertex 4.09968 0.578341 0.489362 - vertex 4.11111 0.565055 -0.510638 - vertex 4.11111 0.565055 0.489362 - endloop - endfacet - facet normal -0.792653 -0.609673 -0 - outer loop - vertex 4.11111 0.565055 0.489362 - vertex 4.11111 0.565055 -0.510638 - vertex 4.12171 0.551277 -0.510638 - endloop - endfacet - facet normal -0.792653 -0.609673 0 - outer loop - vertex 4.11111 0.565055 0.489362 - vertex 4.12171 0.551277 -0.510638 - vertex 4.12171 0.551277 0.489362 - endloop - endfacet - facet normal -0.824297 -0.566157 -0 - outer loop - vertex 4.12171 0.551277 0.489362 - vertex 4.12171 0.551277 -0.510638 - vertex 4.13148 0.53705 -0.510638 - endloop - endfacet - facet normal -0.824297 -0.566157 0 - outer loop - vertex 4.12171 0.551277 0.489362 - vertex 4.13148 0.53705 -0.510638 - vertex 4.13148 0.53705 0.489362 - endloop - endfacet - facet normal -0.853016 -0.521885 -0 - outer loop - vertex 4.13148 0.53705 0.489362 - vertex 4.13148 0.53705 -0.510638 - vertex 4.14043 0.52242 -0.510638 - endloop - endfacet - facet normal -0.853016 -0.521885 0 - outer loop - vertex 4.13148 0.53705 0.489362 - vertex 4.14043 0.52242 -0.510638 - vertex 4.14043 0.52242 0.489362 - endloop - endfacet - facet normal -0.878852 -0.477095 -0 - outer loop - vertex 4.14043 0.52242 0.489362 - vertex 4.14043 0.52242 -0.510638 - vertex 4.14857 0.507429 -0.510638 - endloop - endfacet - facet normal -0.878852 -0.477095 0 - outer loop - vertex 4.14043 0.52242 0.489362 - vertex 4.14857 0.507429 -0.510638 - vertex 4.14857 0.507429 0.489362 - endloop - endfacet - facet normal -0.901889 -0.431967 -0 - outer loop - vertex 4.14857 0.507429 0.489362 - vertex 4.14857 0.507429 -0.510638 - vertex 4.1559 0.492123 -0.510638 - endloop - endfacet - facet normal -0.901889 -0.431967 0 - outer loop - vertex 4.14857 0.507429 0.489362 - vertex 4.1559 0.492123 -0.510638 - vertex 4.1559 0.492123 0.489362 - endloop - endfacet - facet normal -0.922219 -0.386668 -0 - outer loop - vertex 4.1559 0.492123 0.489362 - vertex 4.1559 0.492123 -0.510638 - vertex 4.16243 0.476546 -0.510638 - endloop - endfacet - facet normal -0.922219 -0.386668 0 - outer loop - vertex 4.1559 0.492123 0.489362 - vertex 4.16243 0.476546 -0.510638 - vertex 4.16243 0.476546 0.489362 - endloop - endfacet - facet normal -0.93997 -0.341256 -0 - outer loop - vertex 4.16243 0.476546 0.489362 - vertex 4.16243 0.476546 -0.510638 - vertex 4.16817 0.460742 -0.510638 - endloop - endfacet - facet normal -0.93997 -0.341256 0 - outer loop - vertex 4.16243 0.476546 0.489362 - vertex 4.16817 0.460742 -0.510638 - vertex 4.16817 0.460742 0.489362 - endloop - endfacet - facet normal -0.955243 -0.295823 -0 - outer loop - vertex 4.16817 0.460742 0.489362 - vertex 4.16817 0.460742 -0.510638 - vertex 4.17312 0.444754 -0.510638 - endloop - endfacet - facet normal -0.955243 -0.295823 0 - outer loop - vertex 4.16817 0.460742 0.489362 - vertex 4.17312 0.444754 -0.510638 - vertex 4.17312 0.444754 0.489362 - endloop - endfacet - facet normal -0.968141 -0.250405 -0 - outer loop - vertex 4.17312 0.444754 0.489362 - vertex 4.17312 0.444754 -0.510638 - vertex 4.17729 0.428628 -0.510638 - endloop - endfacet - facet normal -0.968141 -0.250405 0 - outer loop - vertex 4.17312 0.444754 0.489362 - vertex 4.17729 0.428628 -0.510638 - vertex 4.17729 0.428628 0.489362 - endloop - endfacet - facet normal -0.978755 -0.205035 -0 - outer loop - vertex 4.17729 0.428628 0.489362 - vertex 4.17729 0.428628 -0.510638 - vertex 4.18069 0.412408 -0.510638 - endloop - endfacet - facet normal -0.978755 -0.205035 0 - outer loop - vertex 4.17729 0.428628 0.489362 - vertex 4.18069 0.412408 -0.510638 - vertex 4.18069 0.412408 0.489362 - endloop - endfacet - facet normal -0.987175 -0.15964 -0 - outer loop - vertex 4.18069 0.412408 0.489362 - vertex 4.18069 0.412408 -0.510638 - vertex 4.18332 0.396137 -0.510638 - endloop - endfacet - facet normal -0.987175 -0.15964 0 - outer loop - vertex 4.18069 0.412408 0.489362 - vertex 4.18332 0.396137 -0.510638 - vertex 4.18332 0.396137 0.489362 - endloop - endfacet - facet normal -0.993457 -0.114205 -0 - outer loop - vertex 4.18332 0.396137 0.489362 - vertex 4.18332 0.396137 -0.510638 - vertex 4.18519 0.379861 -0.510638 - endloop - endfacet - facet normal -0.993457 -0.114205 0 - outer loop - vertex 4.18332 0.396137 0.489362 - vertex 4.18519 0.379861 -0.510638 - vertex 4.18519 0.379861 0.489362 - endloop - endfacet - facet normal -0.99764 -0.0686685 -0 - outer loop - vertex 4.18519 0.379861 0.489362 - vertex 4.18519 0.379861 -0.510638 - vertex 4.18631 0.363622 -0.510638 - endloop - endfacet - facet normal -0.99764 -0.0686685 0 - outer loop - vertex 4.18519 0.379861 0.489362 - vertex 4.18631 0.363622 -0.510638 - vertex 4.18631 0.363622 0.489362 - endloop - endfacet - facet normal -0.999736 -0.0229563 -0 - outer loop - vertex 4.18631 0.363622 0.489362 - vertex 4.18631 0.363622 -0.510638 - vertex 4.18668 0.347466 -0.510638 - endloop - endfacet - facet normal -0.999736 -0.0229563 0 - outer loop - vertex 4.18631 0.363622 0.489362 - vertex 4.18668 0.347466 -0.510638 - vertex 4.18668 0.347466 0.489362 - endloop - endfacet - facet normal -0.999661 0.0260389 0 - outer loop - vertex 4.18668 0.347466 0.489362 - vertex 4.18668 0.347466 -0.510638 - vertex 4.18623 0.330002 -0.510638 - endloop - endfacet - facet normal -0.999661 0.0260389 0 - outer loop - vertex 4.18668 0.347466 0.489362 - vertex 4.18623 0.330002 -0.510638 - vertex 4.18623 0.330002 0.489362 - endloop - endfacet - facet normal -0.996962 0.0778935 0 - outer loop - vertex 4.18623 0.330002 0.489362 - vertex 4.18623 0.330002 -0.510638 - vertex 4.18487 0.312633 -0.510638 - endloop - endfacet - facet normal -0.996962 0.0778935 0 - outer loop - vertex 4.18623 0.330002 0.489362 - vertex 4.18487 0.312633 -0.510638 - vertex 4.18487 0.312633 0.489362 - endloop - endfacet - facet normal -0.991599 0.129347 0 - outer loop - vertex 4.18487 0.312633 0.489362 - vertex 4.18487 0.312633 -0.510638 - vertex 4.18262 0.295393 -0.510638 - endloop - endfacet - facet normal -0.991599 0.129347 0 - outer loop - vertex 4.18487 0.312633 0.489362 - vertex 4.18262 0.295393 -0.510638 - vertex 4.18262 0.295393 0.489362 - endloop - endfacet - facet normal -0.983616 0.180277 0 - outer loop - vertex 4.18262 0.295393 0.489362 - vertex 4.18262 0.295393 -0.510638 - vertex 4.17949 0.278319 -0.510638 - endloop - endfacet - facet normal -0.983616 0.180277 0 - outer loop - vertex 4.18262 0.295393 0.489362 - vertex 4.17949 0.278319 -0.510638 - vertex 4.17949 0.278319 0.489362 - endloop - endfacet - facet normal -0.973049 0.2306 0 - outer loop - vertex 4.17949 0.278319 0.489362 - vertex 4.17949 0.278319 -0.510638 - vertex 4.17549 0.261443 -0.510638 - endloop - endfacet - facet normal -0.973049 0.2306 0 - outer loop - vertex 4.17949 0.278319 0.489362 - vertex 4.17549 0.261443 -0.510638 - vertex 4.17549 0.261443 0.489362 - endloop - endfacet - facet normal -0.959931 0.280236 0 - outer loop - vertex 4.17549 0.261443 0.489362 - vertex 4.17549 0.261443 -0.510638 - vertex 4.17063 0.244802 -0.510638 - endloop - endfacet - facet normal -0.959931 0.280236 0 - outer loop - vertex 4.17549 0.261443 0.489362 - vertex 4.17063 0.244802 -0.510638 - vertex 4.17063 0.244802 0.489362 - endloop - endfacet - facet normal -0.944284 0.329131 0 - outer loop - vertex 4.17063 0.244802 0.489362 - vertex 4.17063 0.244802 -0.510638 - vertex 4.16493 0.228431 -0.510638 - endloop - endfacet - facet normal -0.944284 0.329131 0 - outer loop - vertex 4.17063 0.244802 0.489362 - vertex 4.16493 0.228431 -0.510638 - vertex 4.16493 0.228431 0.489362 - endloop - endfacet - facet normal -0.926148 0.37716 0 - outer loop - vertex 4.16493 0.228431 0.489362 - vertex 4.16493 0.228431 -0.510638 - vertex 4.15839 0.212364 -0.510638 - endloop - endfacet - facet normal -0.926148 0.37716 0 - outer loop - vertex 4.16493 0.228431 0.489362 - vertex 4.15839 0.212364 -0.510638 - vertex 4.15839 0.212364 0.489362 - endloop - endfacet - facet normal -0.905527 0.424289 0 - outer loop - vertex 4.15839 0.212364 0.489362 - vertex 4.15839 0.212364 -0.510638 - vertex 4.15102 0.196635 -0.510638 - endloop - endfacet - facet normal -0.905527 0.424289 0 - outer loop - vertex 4.15839 0.212364 0.489362 - vertex 4.15102 0.196635 -0.510638 - vertex 4.15102 0.196635 0.489362 - endloop - endfacet - facet normal -0.882448 0.47041 0 - outer loop - vertex 4.15102 0.196635 0.489362 - vertex 4.15102 0.196635 -0.510638 - vertex 4.14283 0.181281 -0.510638 - endloop - endfacet - facet normal -0.882448 0.47041 0 - outer loop - vertex 4.15102 0.196635 0.489362 - vertex 4.14283 0.181281 -0.510638 - vertex 4.14283 0.181281 0.489362 - endloop - endfacet - facet normal -0.856932 0.51543 0 - outer loop - vertex 4.14283 0.181281 0.489362 - vertex 4.14283 0.181281 -0.510638 - vertex 4.13384 0.166336 -0.510638 - endloop - endfacet - facet normal -0.856932 0.51543 0 - outer loop - vertex 4.14283 0.181281 0.489362 - vertex 4.13384 0.166336 -0.510638 - vertex 4.13384 0.166336 0.489362 - endloop - endfacet - facet normal -0.829001 0.559248 0 - outer loop - vertex 4.13384 0.166336 0.489362 - vertex 4.13384 0.166336 -0.510638 - vertex 4.12406 0.151834 -0.510638 - endloop - endfacet - facet normal -0.829001 0.559248 0 - outer loop - vertex 4.13384 0.166336 0.489362 - vertex 4.12406 0.151834 -0.510638 - vertex 4.12406 0.151834 0.489362 - endloop - endfacet - facet normal -0.798682 0.601753 0 - outer loop - vertex 4.12406 0.151834 0.489362 - vertex 4.12406 0.151834 -0.510638 - vertex 4.11349 0.137812 -0.510638 - endloop - endfacet - facet normal -0.798682 0.601753 0 - outer loop - vertex 4.12406 0.151834 0.489362 - vertex 4.11349 0.137812 -0.510638 - vertex 4.11349 0.137812 0.489362 - endloop - endfacet - facet normal -0.765999 0.642842 0 - outer loop - vertex 4.11349 0.137812 0.489362 - vertex 4.11349 0.137812 -0.510638 - vertex 4.10216 0.124302 -0.510638 - endloop - endfacet - facet normal -0.765999 0.642842 0 - outer loop - vertex 4.11349 0.137812 0.489362 - vertex 4.10216 0.124302 -0.510638 - vertex 4.10216 0.124302 0.489362 - endloop - endfacet - facet normal -0.731013 0.682364 0 - outer loop - vertex 4.10216 0.124302 0.489362 - vertex 4.10216 0.124302 -0.510638 - vertex 4.09006 0.111341 -0.510638 - endloop - endfacet - facet normal -0.731013 0.682364 0 - outer loop - vertex 4.10216 0.124302 0.489362 - vertex 4.09006 0.111341 -0.510638 - vertex 4.09006 0.111341 0.489362 - endloop - endfacet - facet normal -0.693787 0.72018 0 - outer loop - vertex 4.09006 0.111341 0.489362 - vertex 4.09006 0.111341 -0.510638 - vertex 4.07721 0.0989639 -0.510638 - endloop - endfacet - facet normal -0.693787 0.72018 0 - outer loop - vertex 4.09006 0.111341 0.489362 - vertex 4.07721 0.0989639 -0.510638 - vertex 4.07721 0.0989639 0.489362 - endloop - endfacet - facet normal -0.654406 0.756144 0 - outer loop - vertex 4.07721 0.0989639 0.489362 - vertex 4.07721 0.0989639 -0.510638 - vertex 4.06362 0.0872046 -0.510638 - endloop - endfacet - facet normal -0.654406 0.756144 0 - outer loop - vertex 4.07721 0.0989639 0.489362 - vertex 4.06362 0.0872046 -0.510638 - vertex 4.06362 0.0872046 0.489362 - endloop - endfacet - facet normal -0.612971 0.790105 0 - outer loop - vertex 4.06362 0.0872046 0.489362 - vertex 4.06362 0.0872046 -0.510638 - vertex 4.04931 0.0760984 -0.510638 - endloop - endfacet - facet normal -0.612971 0.790105 0 - outer loop - vertex 4.06362 0.0872046 0.489362 - vertex 4.04931 0.0760984 -0.510638 - vertex 4.04931 0.0760984 0.489362 - endloop - endfacet - facet normal -0.569612 0.821914 0 - outer loop - vertex 4.04931 0.0760984 0.489362 - vertex 4.04931 0.0760984 -0.510638 - vertex 4.03427 0.0656802 -0.510638 - endloop - endfacet - facet normal -0.569612 0.821914 0 - outer loop - vertex 4.04931 0.0760984 0.489362 - vertex 4.03427 0.0656802 -0.510638 - vertex 4.03427 0.0656802 0.489362 - endloop - endfacet - facet normal -0.52447 0.851429 0 - outer loop - vertex 4.03427 0.0656802 0.489362 - vertex 4.03427 0.0656802 -0.510638 - vertex 4.01853 0.0559849 -0.510638 - endloop - endfacet - facet normal -0.52447 0.851429 0 - outer loop - vertex 4.03427 0.0656802 0.489362 - vertex 4.01853 0.0559849 -0.510638 - vertex 4.01853 0.0559849 0.489362 - endloop - endfacet - facet normal -0.477746 0.878498 0 - outer loop - vertex 4.01853 0.0559849 0.489362 - vertex 4.01853 0.0559849 -0.510638 - vertex 4.0021 0.0470474 -0.510638 - endloop - endfacet - facet normal -0.477746 0.878498 0 - outer loop - vertex 4.01853 0.0559849 0.489362 - vertex 4.0021 0.0470474 -0.510638 - vertex 4.0021 0.0470474 0.489362 - endloop - endfacet - facet normal -0.429622 0.903009 0 - outer loop - vertex 4.0021 0.0470474 0.489362 - vertex 4.0021 0.0470474 -0.510638 - vertex 3.98498 0.0389025 -0.510638 - endloop - endfacet - facet normal -0.429622 0.903009 0 - outer loop - vertex 4.0021 0.0470474 0.489362 - vertex 3.98498 0.0389025 -0.510638 - vertex 3.98498 0.0389025 0.489362 - endloop - endfacet - facet normal -0.380336 0.924848 0 - outer loop - vertex 3.98498 0.0389025 0.489362 - vertex 3.98498 0.0389025 -0.510638 - vertex 3.96719 0.0315852 -0.510638 - endloop - endfacet - facet normal -0.380336 0.924848 0 - outer loop - vertex 3.98498 0.0389025 0.489362 - vertex 3.96719 0.0315852 -0.510638 - vertex 3.96719 0.0315852 0.489362 - endloop - endfacet - facet normal -0.330131 0.943935 0 - outer loop - vertex 3.96719 0.0315852 0.489362 - vertex 3.96719 0.0315852 -0.510638 - vertex 3.94873 0.0251304 -0.510638 - endloop - endfacet - facet normal -0.330131 0.943935 0 - outer loop - vertex 3.96719 0.0315852 0.489362 - vertex 3.94873 0.0251304 -0.510638 - vertex 3.94873 0.0251304 0.489362 - endloop - endfacet - facet normal -0.279271 0.960212 0 - outer loop - vertex 3.94873 0.0251304 0.489362 - vertex 3.94873 0.0251304 -0.510638 - vertex 3.92962 0.0195729 -0.510638 - endloop - endfacet - facet normal -0.279271 0.960212 0 - outer loop - vertex 3.94873 0.0251304 0.489362 - vertex 3.92962 0.0195729 -0.510638 - vertex 3.92962 0.0195729 0.489362 - endloop - endfacet - facet normal -0.228029 0.973654 0 - outer loop - vertex 3.92962 0.0195729 0.489362 - vertex 3.92962 0.0195729 -0.510638 - vertex 3.90987 0.0149476 -0.510638 - endloop - endfacet - facet normal -0.228029 0.973654 0 - outer loop - vertex 3.92962 0.0195729 0.489362 - vertex 3.90987 0.0149476 -0.510638 - vertex 3.90987 0.0149476 0.489362 - endloop - endfacet - facet normal -0.176679 0.984269 0 - outer loop - vertex 3.90987 0.0149476 0.489362 - vertex 3.90987 0.0149476 -0.510638 - vertex 3.88949 0.0112894 -0.510638 - endloop - endfacet - facet normal -0.176679 0.984269 0 - outer loop - vertex 3.90987 0.0149476 0.489362 - vertex 3.88949 0.0112894 -0.510638 - vertex 3.88949 0.0112894 0.489362 - endloop - endfacet - facet normal -0.125491 0.992095 0 - outer loop - vertex 3.88949 0.0112894 0.489362 - vertex 3.88949 0.0112894 -0.510638 - vertex 3.86849 0.0086332 -0.510638 - endloop - endfacet - facet normal -0.125491 0.992095 0 - outer loop - vertex 3.88949 0.0112894 0.489362 - vertex 3.86849 0.0086332 -0.510638 - vertex 3.86849 0.0086332 0.489362 - endloop - endfacet - facet normal -0.0747322 0.997204 0 - outer loop - vertex 3.86849 0.0086332 0.489362 - vertex 3.86849 0.0086332 -0.510638 - vertex 3.84689 0.00701391 -0.510638 - endloop - endfacet - facet normal -0.0747322 0.997204 0 - outer loop - vertex 3.86849 0.0086332 0.489362 - vertex 3.84689 0.00701391 -0.510638 - vertex 3.84689 0.00701391 0.489362 - endloop - endfacet - facet normal -0.0246501 0.999696 0 - outer loop - vertex 3.84689 0.00701391 0.489362 - vertex 3.84689 0.00701391 -0.510638 - vertex 3.82468 0.00646639 -0.510638 - endloop - endfacet - facet normal -0.0246501 0.999696 0 - outer loop - vertex 3.84689 0.00701391 0.489362 - vertex 3.82468 0.00646639 -0.510638 - vertex 3.82468 0.00646639 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.82468 0.00646639 0.489362 - vertex 3.82468 0.00646639 -0.510638 - vertex 3.55868 0.00646639 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.82468 0.00646639 0.489362 - vertex 3.55868 0.00646639 -0.510638 - vertex 3.55868 0.00646639 0.489362 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 3.55868 0.00646639 0.489362 - vertex 3.55868 0.00646639 -0.510638 - vertex 3.55868 0.688466 -0.510638 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 3.55868 0.00646639 0.489362 - vertex 3.55868 0.688466 -0.510638 - vertex 3.55868 0.688466 0.489362 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 3.55868 0.688466 0.489362 - vertex 3.55868 0.688466 -0.510638 - vertex 3.82368 0.688466 -0.510638 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 3.55868 0.688466 0.489362 - vertex 3.82368 0.688466 -0.510638 - vertex 3.82368 0.688466 0.489362 - endloop - endfacet - facet normal 0.0255959 -0.999672 0 - outer loop - vertex 3.81268 0.0944664 0.489362 - vertex 3.81268 0.0944664 -0.510638 - vertex 3.83432 0.0950203 -0.510638 - endloop - endfacet - facet normal 0.0255959 -0.999672 0 - outer loop - vertex 3.81268 0.0944664 0.489362 - vertex 3.83432 0.0950203 -0.510638 - vertex 3.83432 0.0950203 0.489362 - endloop - endfacet - facet normal 0.0788981 -0.996883 0 - outer loop - vertex 3.83432 0.0950203 0.489362 - vertex 3.83432 0.0950203 -0.510638 - vertex 3.85484 0.0966445 -0.510638 - endloop - endfacet - facet normal 0.0788981 -0.996883 0 - outer loop - vertex 3.83432 0.0950203 0.489362 - vertex 3.85484 0.0966445 -0.510638 - vertex 3.85484 0.0966445 0.489362 - endloop - endfacet - facet normal 0.134501 -0.990913 0 - outer loop - vertex 3.85484 0.0966445 0.489362 - vertex 3.85484 0.0966445 -0.510638 - vertex 3.87427 0.0992824 -0.510638 - endloop - endfacet - facet normal 0.134501 -0.990913 0 - outer loop - vertex 3.85484 0.0966445 0.489362 - vertex 3.87427 0.0992824 -0.510638 - vertex 3.87427 0.0992824 0.489362 - endloop - endfacet - facet normal 0.192025 -0.98139 0 - outer loop - vertex 3.87427 0.0992824 0.489362 - vertex 3.87427 0.0992824 -0.510638 - vertex 3.89265 0.102878 -0.510638 - endloop - endfacet - facet normal 0.192025 -0.98139 0 - outer loop - vertex 3.87427 0.0992824 0.489362 - vertex 3.89265 0.102878 -0.510638 - vertex 3.89265 0.102878 0.489362 - endloop - endfacet - facet normal 0.250978 -0.967993 0 - outer loop - vertex 3.89265 0.102878 0.489362 - vertex 3.89265 0.102878 -0.510638 - vertex 3.90999 0.107374 -0.510638 - endloop - endfacet - facet normal 0.250978 -0.967993 0 - outer loop - vertex 3.89265 0.102878 0.489362 - vertex 3.90999 0.107374 -0.510638 - vertex 3.90999 0.107374 0.489362 - endloop - endfacet - facet normal 0.310763 -0.950488 0 - outer loop - vertex 3.90999 0.107374 0.489362 - vertex 3.90999 0.107374 -0.510638 - vertex 3.92632 0.112714 -0.510638 - endloop - endfacet - facet normal 0.310763 -0.950488 0 - outer loop - vertex 3.90999 0.107374 0.489362 - vertex 3.92632 0.112714 -0.510638 - vertex 3.92632 0.112714 0.489362 - endloop - endfacet - facet normal 0.370704 -0.928751 0 - outer loop - vertex 3.92632 0.112714 0.489362 - vertex 3.92632 0.112714 -0.510638 - vertex 3.94168 0.118843 -0.510638 - endloop - endfacet - facet normal 0.370704 -0.928751 0 - outer loop - vertex 3.92632 0.112714 0.489362 - vertex 3.94168 0.118843 -0.510638 - vertex 3.94168 0.118843 0.489362 - endloop - endfacet - facet normal 0.430058 -0.902801 0 - outer loop - vertex 3.94168 0.118843 0.489362 - vertex 3.94168 0.118843 -0.510638 - vertex 3.95608 0.125703 -0.510638 - endloop - endfacet - facet normal 0.430058 -0.902801 0 - outer loop - vertex 3.94168 0.118843 0.489362 - vertex 3.95608 0.125703 -0.510638 - vertex 3.95608 0.125703 0.489362 - endloop - endfacet - facet normal 0.488088 -0.872794 0 - outer loop - vertex 3.95608 0.125703 0.489362 - vertex 3.95608 0.125703 -0.510638 - vertex 3.96955 0.133238 -0.510638 - endloop - endfacet - facet normal 0.488088 -0.872794 0 - outer loop - vertex 3.95608 0.125703 0.489362 - vertex 3.96955 0.133238 -0.510638 - vertex 3.96955 0.133238 0.489362 - endloop - endfacet - facet normal 0.544076 -0.839036 0 - outer loop - vertex 3.96955 0.133238 0.489362 - vertex 3.96955 0.133238 -0.510638 - vertex 3.98213 0.141392 -0.510638 - endloop - endfacet - facet normal 0.544076 -0.839036 0 - outer loop - vertex 3.96955 0.133238 0.489362 - vertex 3.98213 0.141392 -0.510638 - vertex 3.98213 0.141392 0.489362 - endloop - endfacet - facet normal 0.597379 -0.801959 0 - outer loop - vertex 3.98213 0.141392 0.489362 - vertex 3.98213 0.141392 -0.510638 - vertex 3.99383 0.150108 -0.510638 - endloop - endfacet - facet normal 0.597379 -0.801959 0 - outer loop - vertex 3.98213 0.141392 0.489362 - vertex 3.99383 0.150108 -0.510638 - vertex 3.99383 0.150108 0.489362 - endloop - endfacet - facet normal 0.64747 -0.762091 0 - outer loop - vertex 3.99383 0.150108 0.489362 - vertex 3.99383 0.150108 -0.510638 - vertex 4.00468 0.15933 -0.510638 - endloop - endfacet - facet normal 0.64747 -0.762091 0 - outer loop - vertex 3.99383 0.150108 0.489362 - vertex 4.00468 0.15933 -0.510638 - vertex 4.00468 0.15933 0.489362 - endloop - endfacet - facet normal 0.693952 -0.720021 0 - outer loop - vertex 4.00468 0.15933 0.489362 - vertex 4.00468 0.15933 -0.510638 - vertex 4.01472 0.169002 -0.510638 - endloop - endfacet - facet normal 0.693952 -0.720021 0 - outer loop - vertex 4.00468 0.15933 0.489362 - vertex 4.01472 0.169002 -0.510638 - vertex 4.01472 0.169002 0.489362 - endloop - endfacet - facet normal 0.736584 -0.676346 0 - outer loop - vertex 4.01472 0.169002 0.489362 - vertex 4.01472 0.169002 -0.510638 - vertex 4.02396 0.179066 -0.510638 - endloop - endfacet - facet normal 0.736584 -0.676346 0 - outer loop - vertex 4.01472 0.169002 0.489362 - vertex 4.02396 0.179066 -0.510638 - vertex 4.02396 0.179066 0.489362 - endloop - endfacet - facet normal 0.775243 -0.631664 0 - outer loop - vertex 4.02396 0.179066 0.489362 - vertex 4.02396 0.179066 -0.510638 - vertex 4.03243 0.189466 -0.510638 - endloop - endfacet - facet normal 0.775243 -0.631664 0 - outer loop - vertex 4.02396 0.179066 0.489362 - vertex 4.03243 0.189466 -0.510638 - vertex 4.03243 0.189466 0.489362 - endloop - endfacet - facet normal 0.809939 -0.586514 0 - outer loop - vertex 4.03243 0.189466 0.489362 - vertex 4.03243 0.189466 -0.510638 - vertex 4.04017 0.200147 -0.510638 - endloop - endfacet - facet normal 0.809939 -0.586514 0 - outer loop - vertex 4.03243 0.189466 0.489362 - vertex 4.04017 0.200147 -0.510638 - vertex 4.04017 0.200147 0.489362 - endloop - endfacet - facet normal 0.840788 -0.541365 0 - outer loop - vertex 4.04017 0.200147 0.489362 - vertex 4.04017 0.200147 -0.510638 - vertex 4.04719 0.211051 -0.510638 - endloop - endfacet - facet normal 0.840788 -0.541365 0 - outer loop - vertex 4.04017 0.200147 0.489362 - vertex 4.04719 0.211051 -0.510638 - vertex 4.04719 0.211051 0.489362 - endloop - endfacet - facet normal 0.867977 -0.496604 0 - outer loop - vertex 4.04719 0.211051 0.489362 - vertex 4.04719 0.211051 -0.510638 - vertex 4.05352 0.222122 -0.510638 - endloop - endfacet - facet normal 0.867977 -0.496604 0 - outer loop - vertex 4.04719 0.211051 0.489362 - vertex 4.05352 0.222122 -0.510638 - vertex 4.05352 0.222122 0.489362 - endloop - endfacet - facet normal 0.891751 -0.452527 0 - outer loop - vertex 4.05352 0.222122 0.489362 - vertex 4.05352 0.222122 -0.510638 - vertex 4.0592 0.233304 -0.510638 - endloop - endfacet - facet normal 0.891751 -0.452527 0 - outer loop - vertex 4.05352 0.222122 0.489362 - vertex 4.0592 0.233304 -0.510638 - vertex 4.0592 0.233304 0.489362 - endloop - endfacet - facet normal 0.912381 -0.409342 0 - outer loop - vertex 4.0592 0.233304 0.489362 - vertex 4.0592 0.233304 -0.510638 - vertex 4.06424 0.24454 -0.510638 - endloop - endfacet - facet normal 0.912381 -0.409342 0 - outer loop - vertex 4.0592 0.233304 0.489362 - vertex 4.06424 0.24454 -0.510638 - vertex 4.06424 0.24454 0.489362 - endloop - endfacet - facet normal 0.930151 -0.367177 0 - outer loop - vertex 4.06424 0.24454 0.489362 - vertex 4.06424 0.24454 -0.510638 - vertex 4.06867 0.255774 -0.510638 - endloop - endfacet - facet normal 0.930151 -0.367177 0 - outer loop - vertex 4.06424 0.24454 0.489362 - vertex 4.06867 0.255774 -0.510638 - vertex 4.06867 0.255774 0.489362 - endloop - endfacet - facet normal 0.945354 -0.326046 0 - outer loop - vertex 4.06867 0.255774 0.489362 - vertex 4.06867 0.255774 -0.510638 - vertex 4.07253 0.26695 -0.510638 - endloop - endfacet - facet normal 0.945354 -0.326046 0 - outer loop - vertex 4.06867 0.255774 0.489362 - vertex 4.07253 0.26695 -0.510638 - vertex 4.07253 0.26695 0.489362 - endloop - endfacet - facet normal 0.958228 -0.286004 0 - outer loop - vertex 4.07253 0.26695 0.489362 - vertex 4.07253 0.26695 -0.510638 - vertex 4.07583 0.27801 -0.510638 - endloop - endfacet - facet normal 0.958228 -0.286004 0 - outer loop - vertex 4.07253 0.26695 0.489362 - vertex 4.07583 0.27801 -0.510638 - vertex 4.07583 0.27801 0.489362 - endloop - endfacet - facet normal 0.969042 -0.246896 0 - outer loop - vertex 4.07583 0.27801 0.489362 - vertex 4.07583 0.27801 -0.510638 - vertex 4.0786 0.288898 -0.510638 - endloop - endfacet - facet normal 0.969042 -0.246896 0 - outer loop - vertex 4.07583 0.27801 0.489362 - vertex 4.0786 0.288898 -0.510638 - vertex 4.0786 0.288898 0.489362 - endloop - endfacet - facet normal 0.977988 -0.208661 0 - outer loop - vertex 4.0786 0.288898 0.489362 - vertex 4.0786 0.288898 -0.510638 - vertex 4.08088 0.299559 -0.510638 - endloop - endfacet - facet normal 0.977988 -0.208661 0 - outer loop - vertex 4.0786 0.288898 0.489362 - vertex 4.08088 0.299559 -0.510638 - vertex 4.08088 0.299559 0.489362 - endloop - endfacet - facet normal 0.985268 -0.171015 0 - outer loop - vertex 4.08088 0.299559 0.489362 - vertex 4.08088 0.299559 -0.510638 - vertex 4.08268 0.309935 -0.510638 - endloop - endfacet - facet normal 0.985268 -0.171015 0 - outer loop - vertex 4.08088 0.299559 0.489362 - vertex 4.08268 0.309935 -0.510638 - vertex 4.08268 0.309935 0.489362 - endloop - endfacet - facet normal 0.991017 -0.133734 0 - outer loop - vertex 4.08268 0.309935 0.489362 - vertex 4.08268 0.309935 -0.510638 - vertex 4.08403 0.31997 -0.510638 - endloop - endfacet - facet normal 0.991017 -0.133734 0 - outer loop - vertex 4.08268 0.309935 0.489362 - vertex 4.08403 0.31997 -0.510638 - vertex 4.08403 0.31997 0.489362 - endloop - endfacet - facet normal 0.995331 -0.0965185 0 - outer loop - vertex 4.08403 0.31997 0.489362 - vertex 4.08403 0.31997 -0.510638 - vertex 4.08497 0.329608 -0.510638 - endloop - endfacet - facet normal 0.995331 -0.0965185 0 - outer loop - vertex 4.08403 0.31997 0.489362 - vertex 4.08497 0.329608 -0.510638 - vertex 4.08497 0.329608 0.489362 - endloop - endfacet - facet normal 0.998268 -0.0588267 0 - outer loop - vertex 4.08497 0.329608 0.489362 - vertex 4.08497 0.329608 -0.510638 - vertex 4.08551 0.338792 -0.510638 - endloop - endfacet - facet normal 0.998268 -0.0588267 0 - outer loop - vertex 4.08497 0.329608 0.489362 - vertex 4.08551 0.338792 -0.510638 - vertex 4.08551 0.338792 0.489362 - endloop - endfacet - facet normal 0.999798 -0.0201163 0 - outer loop - vertex 4.08551 0.338792 0.489362 - vertex 4.08551 0.338792 -0.510638 - vertex 4.08568 0.347466 -0.510638 - endloop - endfacet - facet normal 0.999798 -0.0201163 0 - outer loop - vertex 4.08551 0.338792 0.489362 - vertex 4.08568 0.347466 -0.510638 - vertex 4.08568 0.347466 0.489362 - endloop - endfacet - facet normal 0.999773 0.0213063 0 - outer loop - vertex 4.08568 0.347466 0.489362 - vertex 4.08568 0.347466 -0.510638 - vertex 4.08539 0.361093 -0.510638 - endloop - endfacet - facet normal 0.999773 0.0213063 0 - outer loop - vertex 4.08568 0.347466 0.489362 - vertex 4.08539 0.361093 -0.510638 - vertex 4.08539 0.361093 0.489362 - endloop - endfacet - facet normal 0.997898 0.0648092 0 - outer loop - vertex 4.08539 0.361093 0.489362 - vertex 4.08539 0.361093 -0.510638 - vertex 4.08452 0.374558 -0.510638 - endloop - endfacet - facet normal 0.997898 0.0648092 0 - outer loop - vertex 4.08539 0.361093 0.489362 - vertex 4.08452 0.374558 -0.510638 - vertex 4.08452 0.374558 0.489362 - endloop - endfacet - facet normal 0.993998 0.109402 0 - outer loop - vertex 4.08452 0.374558 0.489362 - vertex 4.08452 0.374558 -0.510638 - vertex 4.08306 0.387841 -0.510638 - endloop - endfacet - facet normal 0.993998 0.109402 0 - outer loop - vertex 4.08452 0.374558 0.489362 - vertex 4.08306 0.387841 -0.510638 - vertex 4.08306 0.387841 0.489362 - endloop - endfacet - facet normal 0.987902 0.15508 0 - outer loop - vertex 4.08306 0.387841 0.489362 - vertex 4.08306 0.387841 -0.510638 - vertex 4.081 0.400921 -0.510638 - endloop - endfacet - facet normal 0.987902 0.15508 0 - outer loop - vertex 4.08306 0.387841 0.489362 - vertex 4.081 0.400921 -0.510638 - vertex 4.081 0.400921 0.489362 - endloop - endfacet - facet normal 0.979432 0.201774 0 - outer loop - vertex 4.081 0.400921 0.489362 - vertex 4.081 0.400921 -0.510638 - vertex 4.07835 0.413777 -0.510638 - endloop - endfacet - facet normal 0.979432 0.201774 0 - outer loop - vertex 4.081 0.400921 0.489362 - vertex 4.07835 0.413777 -0.510638 - vertex 4.07835 0.413777 0.489362 - endloop - endfacet - facet normal 0.968405 0.249382 0 - outer loop - vertex 4.07835 0.413777 0.489362 - vertex 4.07835 0.413777 -0.510638 - vertex 4.07511 0.426386 -0.510638 - endloop - endfacet - facet normal 0.968405 0.249382 0 - outer loop - vertex 4.07835 0.413777 0.489362 - vertex 4.07511 0.426386 -0.510638 - vertex 4.07511 0.426386 0.489362 - endloop - endfacet - facet normal 0.95464 0.297764 0 - outer loop - vertex 4.07511 0.426386 0.489362 - vertex 4.07511 0.426386 -0.510638 - vertex 4.07126 0.43873 -0.510638 - endloop - endfacet - facet normal 0.95464 0.297764 0 - outer loop - vertex 4.07511 0.426386 0.489362 - vertex 4.07126 0.43873 -0.510638 - vertex 4.07126 0.43873 0.489362 - endloop - endfacet - facet normal 0.937962 0.346737 0 - outer loop - vertex 4.07126 0.43873 0.489362 - vertex 4.07126 0.43873 -0.510638 - vertex 4.0668 0.450785 -0.510638 - endloop - endfacet - facet normal 0.937962 0.346737 0 - outer loop - vertex 4.07126 0.43873 0.489362 - vertex 4.0668 0.450785 -0.510638 - vertex 4.0668 0.450785 0.489362 - endloop - endfacet - facet normal 0.918218 0.396075 0 - outer loop - vertex 4.0668 0.450785 0.489362 - vertex 4.0668 0.450785 -0.510638 - vertex 4.06173 0.462531 -0.510638 - endloop - endfacet - facet normal 0.918218 0.396075 0 - outer loop - vertex 4.0668 0.450785 0.489362 - vertex 4.06173 0.462531 -0.510638 - vertex 4.06173 0.462531 0.489362 - endloop - endfacet - facet normal 0.895294 0.445476 0 - outer loop - vertex 4.06173 0.462531 0.489362 - vertex 4.06173 0.462531 -0.510638 - vertex 4.05605 0.473948 -0.510638 - endloop - endfacet - facet normal 0.895294 0.445476 0 - outer loop - vertex 4.06173 0.462531 0.489362 - vertex 4.05605 0.473948 -0.510638 - vertex 4.05605 0.473948 0.489362 - endloop - endfacet - facet normal 0.869072 0.494686 0 - outer loop - vertex 4.05605 0.473948 0.489362 - vertex 4.05605 0.473948 -0.510638 - vertex 4.04975 0.485013 -0.510638 - endloop - endfacet - facet normal 0.869072 0.494686 0 - outer loop - vertex 4.05605 0.473948 0.489362 - vertex 4.04975 0.485013 -0.510638 - vertex 4.04975 0.485013 0.489362 - endloop - endfacet - facet normal 0.839543 0.543293 0 - outer loop - vertex 4.04975 0.485013 0.489362 - vertex 4.04975 0.485013 -0.510638 - vertex 4.04283 0.495706 -0.510638 - endloop - endfacet - facet normal 0.839543 0.543293 0 - outer loop - vertex 4.04975 0.485013 0.489362 - vertex 4.04283 0.495706 -0.510638 - vertex 4.04283 0.495706 0.489362 - endloop - endfacet - facet normal 0.806694 0.590969 0 - outer loop - vertex 4.04283 0.495706 0.489362 - vertex 4.04283 0.495706 -0.510638 - vertex 4.03529 0.506006 -0.510638 - endloop - endfacet - facet normal 0.806694 0.590969 0 - outer loop - vertex 4.04283 0.495706 0.489362 - vertex 4.03529 0.506006 -0.510638 - vertex 4.03529 0.506006 0.489362 - endloop - endfacet - facet normal 0.770646 0.637263 0 - outer loop - vertex 4.03529 0.506006 0.489362 - vertex 4.03529 0.506006 -0.510638 - vertex 4.02711 0.515892 -0.510638 - endloop - endfacet - facet normal 0.770646 0.637263 0 - outer loop - vertex 4.03529 0.506006 0.489362 - vertex 4.02711 0.515892 -0.510638 - vertex 4.02711 0.515892 0.489362 - endloop - endfacet - facet normal 0.731544 0.681794 0 - outer loop - vertex 4.02711 0.515892 0.489362 - vertex 4.02711 0.515892 -0.510638 - vertex 4.01831 0.525341 -0.510638 - endloop - endfacet - facet normal 0.731544 0.681794 0 - outer loop - vertex 4.02711 0.515892 0.489362 - vertex 4.01831 0.525341 -0.510638 - vertex 4.01831 0.525341 0.489362 - endloop - endfacet - facet normal 0.689619 0.724173 0 - outer loop - vertex 4.01831 0.525341 0.489362 - vertex 4.01831 0.525341 -0.510638 - vertex 4.00886 0.534335 -0.510638 - endloop - endfacet - facet normal 0.689619 0.724173 0 - outer loop - vertex 4.01831 0.525341 0.489362 - vertex 4.00886 0.534335 -0.510638 - vertex 4.00886 0.534335 0.489362 - endloop - endfacet - facet normal 0.645156 0.76405 0 - outer loop - vertex 4.00886 0.534335 0.489362 - vertex 4.00886 0.534335 -0.510638 - vertex 3.99878 0.54285 -0.510638 - endloop - endfacet - facet normal 0.645156 0.76405 0 - outer loop - vertex 4.00886 0.534335 0.489362 - vertex 3.99878 0.54285 -0.510638 - vertex 3.99878 0.54285 0.489362 - endloop - endfacet - facet normal 0.598566 0.801073 0 - outer loop - vertex 3.99878 0.54285 0.489362 - vertex 3.99878 0.54285 -0.510638 - vertex 3.98805 0.550866 -0.510638 - endloop - endfacet - facet normal 0.598566 0.801073 0 - outer loop - vertex 3.99878 0.54285 0.489362 - vertex 3.98805 0.550866 -0.510638 - vertex 3.98805 0.550866 0.489362 - endloop - endfacet - facet normal 0.550224 0.835017 0 - outer loop - vertex 3.98805 0.550866 0.489362 - vertex 3.98805 0.550866 -0.510638 - vertex 3.97667 0.558363 -0.510638 - endloop - endfacet - facet normal 0.550224 0.835017 0 - outer loop - vertex 3.98805 0.550866 0.489362 - vertex 3.97667 0.558363 -0.510638 - vertex 3.97667 0.558363 0.489362 - endloop - endfacet - facet normal 0.50058 0.86569 0 - outer loop - vertex 3.97667 0.558363 0.489362 - vertex 3.97667 0.558363 -0.510638 - vertex 3.96465 0.565318 -0.510638 - endloop - endfacet - facet normal 0.50058 0.86569 0 - outer loop - vertex 3.97667 0.558363 0.489362 - vertex 3.96465 0.565318 -0.510638 - vertex 3.96465 0.565318 0.489362 - endloop - endfacet - facet normal 0.450095 0.892981 0 - outer loop - vertex 3.96465 0.565318 0.489362 - vertex 3.96465 0.565318 -0.510638 - vertex 3.95196 0.571711 -0.510638 - endloop - endfacet - facet normal 0.450095 0.892981 0 - outer loop - vertex 3.96465 0.565318 0.489362 - vertex 3.95196 0.571711 -0.510638 - vertex 3.95196 0.571711 0.489362 - endloop - endfacet - facet normal 0.399211 0.916859 0 - outer loop - vertex 3.95196 0.571711 0.489362 - vertex 3.95196 0.571711 -0.510638 - vertex 3.93862 0.577521 -0.510638 - endloop - endfacet - facet normal 0.399211 0.916859 0 - outer loop - vertex 3.95196 0.571711 0.489362 - vertex 3.93862 0.577521 -0.510638 - vertex 3.93862 0.577521 0.489362 - endloop - endfacet - facet normal 0.348364 0.937359 0 - outer loop - vertex 3.93862 0.577521 0.489362 - vertex 3.93862 0.577521 -0.510638 - vertex 3.92461 0.582727 -0.510638 - endloop - endfacet - facet normal 0.348364 0.937359 0 - outer loop - vertex 3.93862 0.577521 0.489362 - vertex 3.92461 0.582727 -0.510638 - vertex 3.92461 0.582727 0.489362 - endloop - endfacet - facet normal 0.297946 0.954583 0 - outer loop - vertex 3.92461 0.582727 0.489362 - vertex 3.92461 0.582727 -0.510638 - vertex 3.90994 0.587306 -0.510638 - endloop - endfacet - facet normal 0.297946 0.954583 0 - outer loop - vertex 3.92461 0.582727 0.489362 - vertex 3.90994 0.587306 -0.510638 - vertex 3.90994 0.587306 0.489362 - endloop - endfacet - facet normal 0.248304 0.968682 0 - outer loop - vertex 3.90994 0.587306 0.489362 - vertex 3.90994 0.587306 -0.510638 - vertex 3.89459 0.59124 -0.510638 - endloop - endfacet - facet normal 0.248304 0.968682 0 - outer loop - vertex 3.90994 0.587306 0.489362 - vertex 3.89459 0.59124 -0.510638 - vertex 3.89459 0.59124 0.489362 - endloop - endfacet - facet normal 0.199744 0.979848 0 - outer loop - vertex 3.89459 0.59124 0.489362 - vertex 3.89459 0.59124 -0.510638 - vertex 3.87858 0.594505 -0.510638 - endloop - endfacet - facet normal 0.199744 0.979848 0 - outer loop - vertex 3.89459 0.59124 0.489362 - vertex 3.87858 0.594505 -0.510638 - vertex 3.87858 0.594505 0.489362 - endloop - endfacet - facet normal 0.152505 0.988303 0 - outer loop - vertex 3.87858 0.594505 0.489362 - vertex 3.87858 0.594505 -0.510638 - vertex 3.86188 0.597081 -0.510638 - endloop - endfacet - facet normal 0.152505 0.988303 0 - outer loop - vertex 3.87858 0.594505 0.489362 - vertex 3.86188 0.597081 -0.510638 - vertex 3.86188 0.597081 0.489362 - endloop - endfacet - facet normal 0.106786 0.994282 0 - outer loop - vertex 3.86188 0.597081 0.489362 - vertex 3.86188 0.597081 -0.510638 - vertex 3.8445 0.598948 -0.510638 - endloop - endfacet - facet normal 0.106786 0.994282 0 - outer loop - vertex 3.86188 0.597081 0.489362 - vertex 3.8445 0.598948 -0.510638 - vertex 3.8445 0.598948 0.489362 - endloop - endfacet - facet normal 0.062726 0.998031 0 - outer loop - vertex 3.8445 0.598948 0.489362 - vertex 3.8445 0.598948 -0.510638 - vertex 3.82644 0.600083 -0.510638 - endloop - endfacet - facet normal 0.062726 0.998031 0 - outer loop - vertex 3.8445 0.598948 0.489362 - vertex 3.82644 0.600083 -0.510638 - vertex 3.82644 0.600083 0.489362 - endloop - endfacet - facet normal 0.0204254 0.999791 0 - outer loop - vertex 3.82644 0.600083 0.489362 - vertex 3.82644 0.600083 -0.510638 - vertex 3.80768 0.600466 -0.510638 - endloop - endfacet - facet normal 0.0204254 0.999791 0 - outer loop - vertex 3.82644 0.600083 0.489362 - vertex 3.80768 0.600466 -0.510638 - vertex 3.80768 0.600466 0.489362 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.80768 0.600466 0.489362 - vertex 3.80768 0.600466 -0.510638 - vertex 3.65668 0.600466 -0.510638 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 3.80768 0.600466 0.489362 - vertex 3.65668 0.600466 -0.510638 - vertex 3.65668 0.600466 0.489362 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex 3.65668 0.600466 0.489362 - vertex 3.65668 0.600466 -0.510638 - vertex 3.65668 0.0944664 -0.510638 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex 3.65668 0.600466 0.489362 - vertex 3.65668 0.0944664 -0.510638 - vertex 3.65668 0.0944664 0.489362 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 3.65668 0.0944664 0.489362 - vertex 3.65668 0.0944664 -0.510638 - vertex 3.81268 0.0944664 -0.510638 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 3.65668 0.0944664 0.489362 - vertex 3.81268 0.0944664 -0.510638 - vertex 3.81268 0.0944664 0.489362 - endloop - endfacet -endsolid text diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/constant/turbulenceProperties b/tutorials/mesh/cv2DMesh/OpenCFD/constant/turbulenceProperties deleted file mode 100644 index c2c3b28a1b4e8f4a2cae55f58bd61f9b1a67b488..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/constant/turbulenceProperties +++ /dev/null @@ -1,21 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "constant"; - object turbulenceProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -simulationType laminar; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict b/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict deleted file mode 100644 index a2364b630302f7a39c53db9122470780fd607654..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict +++ /dev/null @@ -1,55 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object controlDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -application rhoCentralFoam; - -startFrom startTime; - -startTime 0; - -stopAt endTime; - -endTime 10; - -deltaT 0.001; - -writeControl adjustableRunTime; - -writeInterval 1; - -purgeWrite 0; - -writeFormat ascii; - -writePrecision 12; - -writeCompression off; - -timeFormat general; - -timePrecision 6; - -runTimeModifiable true; - -adjustTimeStep yes; - -maxCo 0.5; - -maxDeltaT 1; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict.mesher b/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict.mesher deleted file mode 100644 index c38028778507bd88fe2d873829afabf405e0f20e..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict.mesher +++ /dev/null @@ -1,55 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object controlDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -application rhoCentralFoam; - -startFrom startTime; - -startTime 0; - -stopAt endTime; - -endTime 100; - -deltaT 1; - -writeControl adjustableRunTime; - -writeInterval 1; - -purgeWrite 0; - -writeFormat ascii; - -writePrecision 12; - -writeCompression off; - -timeFormat general; - -timePrecision 6; - -runTimeModifiable true; - -adjustTimeStep yes; - -maxCo 0.2; - -maxDeltaT 1; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict.rhoCentralFoam b/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict.rhoCentralFoam deleted file mode 100644 index a2364b630302f7a39c53db9122470780fd607654..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/controlDict.rhoCentralFoam +++ /dev/null @@ -1,55 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object controlDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -application rhoCentralFoam; - -startFrom startTime; - -startTime 0; - -stopAt endTime; - -endTime 10; - -deltaT 0.001; - -writeControl adjustableRunTime; - -writeInterval 1; - -purgeWrite 0; - -writeFormat ascii; - -writePrecision 12; - -writeCompression off; - -timeFormat general; - -timePrecision 6; - -runTimeModifiable true; - -adjustTimeStep yes; - -maxCo 0.5; - -maxDeltaT 1; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/cv2DMeshDict b/tutorials/mesh/cv2DMesh/OpenCFD/system/cv2DMeshDict deleted file mode 100644 index c90cb88c278c136fff9aa9a3cb063e60a3c26378..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/cv2DMeshDict +++ /dev/null @@ -1,158 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object cv2DMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -geometry -{ - opencfd_text.stl - { - name letters; - type closedTriSurfaceMesh; - } - - opencfd_box.stl - { - name box; - type closedTriSurfaceMesh; - } -} - - -surfaceConformation -{ - // The z-coordinate of the plane is taken from here. - locationInMesh (0 0 0); - - pointPairDistanceCoeff 0.1; - - minEdgeLenCoeff 0.1; - - maxNotchLenCoeff 1.0; - - minNearPointDistCoeff 0.1; - - maxQuadAngle 120; - - // Insert near-boundary point mirror or point-pairs - insertSurfaceNearestPointPairs yes; - - // Mirror near-boundary points rather than insert point-pairs - mirrorPoints no; - - // Insert point-pairs vor dual-cell vertices very near the surface - insertSurfaceNearPointPairs yes; - - // Maximum number of iterations used in boundaryConform. - maxBoundaryConformingIter 5; - - geometryToConformTo - { - letters - { - featureMethod extendedFeatureEdgeMesh; - extendedFeatureEdgeMesh "opencfd_text.extendedFeatureEdgeMesh"; - } - - box - { - featureMethod extendedFeatureEdgeMesh; - extendedFeatureEdgeMesh "opencfd_box.extendedFeatureEdgeMesh"; - } - } - - additionalFeatures - {} - - // Choose if to randomise the initial grid created by insertGrid. - randomiseInitialGrid yes; - - // Perturbation fraction, 1 = cell-size. - randomPerturbation 0.1; -} - - -motionControl -{ - // This is a tolerance for determining whether to deal with surface - // protrusions or not. - minCellSize 0.02; - - // Assign a priority to all requests for cell sizes, the highest overrules. - defaultPriority 0; - - shapeControlFunctions - { - letters - { - type searchableSurfaceControl; - priority 1; - mode bothSides; - cellSizeFunction uniform; - - linearDistanceCoeffs - { - distanceCellSize $minCellSize; - distance 1; - } - uniformCoeffs - {} - - surfaceCellSizeFunction uniformValue; - uniformValueCoeffs - { - surfaceCellSize $minCellSize; - } - } - } - - relaxationModel adaptiveLinear; - - adaptiveLinearCoeffs - { - relaxationStart 0.5; - relaxationEnd 0.0; - } - - objOutput no; - - meshedSurfaceOutput yes; - - // Near-wall region where cells are aligned with the wall specified as a - // number of cell layers - nearWallAlignedDist 3; -} - - -shortEdgeFilter -{ - // Factor to multiply the average of a face's edge lengths by. - // If an edge of that face is smaller than that value then delete it. - shortEdgeFilterFactor 0.2; - - // Weighting for the lengths of edges that are attached to the boundaries. - // Used when calculating the length of an edge. Default 2.0. - edgeAttachedToBoundaryFactor 2.0; -} - - -extrusion -{ - extrude off; - - #include "extrude2DMeshDict" -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/decomposeParDict b/tutorials/mesh/cv2DMesh/OpenCFD/system/decomposeParDict deleted file mode 100644 index 791022fa1f6732089cf56731b1771376b52eb5c4..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/decomposeParDict +++ /dev/null @@ -1,45 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object decomposeParDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -numberOfSubdomains 8; - -method hierarchical; - -simpleCoeffs -{ - n ( 2 2 1 ); - delta 0.001; -} - -hierarchicalCoeffs -{ - n ( 2 2 2 ); - delta 0.001; - order xyz; -} - -manualCoeffs -{ - dataFile ""; -} - -distributed no; - -roots ( ); - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/extrude2DMeshDict b/tutorials/mesh/cv2DMesh/OpenCFD/system/extrude2DMeshDict deleted file mode 100644 index b825f1608b358adf65d9bcdf3a1ed23ed5cb0b3b..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/extrude2DMeshDict +++ /dev/null @@ -1,42 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object extrude2DMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -extrudeModel linearDirection; - -patchInfo -{} - -patchType empty; - -nLayers 1; - -expansionRatio 1.0; - -linearDirectionCoeffs -{ - direction (0 0 1); - thickness 0.1; -} - -wedgeCoeffs -{ - axisPt (0 0 0); - axis (1 0 0); - angle 10; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/fvSchemes b/tutorials/mesh/cv2DMesh/OpenCFD/system/fvSchemes deleted file mode 100644 index 067f035d2675eb2f4cbb6b15d2e6ad341c0de416..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/fvSchemes +++ /dev/null @@ -1,61 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSchemes; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -//fluxScheme Kurganov; -fluxScheme Tadmor; - -ddtSchemes -{ - default Euler; -} - -gradSchemes -{ - default Gauss linear; -} - -divSchemes -{ - default none; - div(tauMC) Gauss linear; -} - -laplacianSchemes -{ - default Gauss linear corrected; -} - -interpolationSchemes -{ - default linear; - reconstruct(rho) vanLeer; - reconstruct(U) vanLeerV; - reconstruct(T) vanLeer; -} - -snGradSchemes -{ - default corrected; -} - -fluxRequired -{ - default no; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/fvSolution b/tutorials/mesh/cv2DMesh/OpenCFD/system/fvSolution deleted file mode 100644 index bdde37d65cc33bee0ce9ca353df523a26031616e..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/fvSolution +++ /dev/null @@ -1,42 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSolution; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -solvers -{ - "(rho|rhoU|rhoE)" - { - solver diagonal; - } - - U - { - solver smoothSolver; - smoother GaussSeidel; - nSweeps 2; - tolerance 1e-09; - relTol 0.01; - } - - h - { - $U; - tolerance 1e-10; - relTol 0; - } -} - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/OpenCFD/system/surfaceFeatureExtractDict b/tutorials/mesh/cv2DMesh/OpenCFD/system/surfaceFeatureExtractDict deleted file mode 100644 index d82c88dd2bb3dceefc333613badedda45c8dd8fc..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/OpenCFD/system/surfaceFeatureExtractDict +++ /dev/null @@ -1,87 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object surfaceFeatureExtractDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -opencfd_text.stl -{ - extractionMethod extractFromSurface; - - extractFromSurfaceCoeffs - { - // Mark edges whose adjacent surface normals are at an angle less - // than includedAngle as features - // - 0 : selects no edges - // - 180: selects all edges - includedAngle 120; - } - - subsetFeatures - { - // Use a plane to select feature edges - // (normal)(basePoint) - // Keep only edges that intersect the plane will be included - plane (0 0 1)(0 0 0); - - // Keep nonManifold edges (edges with >2 connected faces where - // the faces form more than two different normal planes) - nonManifoldEdges no; - - // Keep open edges (edges with 1 connected face) - openEdges no; - } - - // Write options - - // Write features to obj format for postprocessing - writeObj no; -} - - -opencfd_box.stl -{ - extractionMethod extractFromSurface; - - extractFromSurfaceCoeffs - { - // Mark edges whose adjacent surface normals are at an angle less - // than includedAngle as features - // - 0 : selects no edges - // - 180: selects all edges - includedAngle 120; - } - - subsetFeatures - { - // Use a plane to select feature edges - // (normal)(basePoint) - // Keep only edges that intersect the plane will be included - plane (0 0 1)(0 0 0); - - // Keep nonManifold edges (edges with >2 connected faces where - // the faces form more than two different normal planes) - nonManifoldEdges no; - - // Keep open edges (edges with 1 connected face) - openEdges no; - } - - // Write options - - // Write features to obj format for postprocessing - writeObj no; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/Allclean b/tutorials/mesh/cv2DMesh/jaggedBoundary/Allclean deleted file mode 100755 index 4f25de0e51ddfbf94201cce54bedbab23b2514ec..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/Allclean +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/CleanFunctions - -rm -rf constant/extendedFeatureEdgeMesh > /dev/null 2>&1 -rm -rf constant/triSurface/jaggedBoundary.eMesh > /dev/null 2>&1 -rm -rf constant/polyMesh > /dev/null 2>&1 - -rm -rf MeshedSurface.obj > /dev/null 2>&1 - -cleanCase - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/Allrun b/tutorials/mesh/cv2DMesh/jaggedBoundary/Allrun deleted file mode 100755 index cda5a63e282cfb2fa94f6fb4d3685be0c06a4db5..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/Allrun +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -runApplication surfaceFeatureExtract -runApplication cv2DMesh -overwrite -runApplication extrude2DMesh -overwrite MeshedSurface -runApplication checkMesh -allGeometry -allTopology -constant -noZero - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/constant/triSurface/jaggedBoundary.stl b/tutorials/mesh/cv2DMesh/jaggedBoundary/constant/triSurface/jaggedBoundary.stl deleted file mode 100644 index ff4c993d3502f68da01a6c5cbd3713a580acf2b3..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/constant/triSurface/jaggedBoundary.stl +++ /dev/null @@ -1,954 +0,0 @@ -solid jagged - facet normal 0.468764725245 0.883323062286 -0 - outer loop - vertex 0.0385189987719 -0.0289657991379 -1.5 - vertex -0.0187957007438 0.00145015004091 1.5 - vertex 0.0385189987719 -0.0289657991379 1.5 - endloop - endfacet - facet normal 0.647754318236 0.761849291662 -0 - outer loop - vertex -0.0682383030653 0.0434882007539 -1.5 - vertex -0.0682383030653 0.0434882007539 1.5 - vertex -0.0187957007438 0.00145015004091 -1.5 - endloop - endfacet - facet normal 0.647754318236 0.761849291662 -0 - outer loop - vertex -0.0187957007438 0.00145015004091 -1.5 - vertex -0.0682383030653 0.0434882007539 1.5 - vertex -0.0187957007438 0.00145015004091 1.5 - endloop - endfacet - facet normal 0.796376571447 0.604801088334 -0 - outer loop - vertex -0.107496999204 0.0951823964715 -1.5 - vertex -0.107496999204 0.0951823964715 1.5 - vertex -0.0682383030653 0.0434882007539 -1.5 - endloop - endfacet - facet normal 0.796376571447 0.604801088334 -0 - outer loop - vertex -0.0682383030653 0.0434882007539 -1.5 - vertex -0.107496999204 0.0951823964715 1.5 - vertex -0.0682383030653 0.0434882007539 1.5 - endloop - endfacet - facet normal 0.907731420759 0.419551746233 -0 - outer loop - vertex -0.134736001492 0.154116004705 -1.5 - vertex -0.134736001492 0.154116004705 1.5 - vertex -0.107496999204 0.0951823964715 -1.5 - endloop - endfacet - facet normal 0.907731420759 0.419551746233 -0 - outer loop - vertex -0.107496999204 0.0951823964715 -1.5 - vertex -0.134736001492 0.154116004705 1.5 - vertex -0.107496999204 0.0951823964715 1.5 - endloop - endfacet - facet normal 0.976665530864 0.214766014121 -0 - outer loop - vertex -0.148680999875 0.217531993985 -1.5 - vertex -0.148680999875 0.217531993985 1.5 - vertex -0.134736001492 0.154116004705 -1.5 - endloop - endfacet - facet normal 0.976665530864 0.214766014121 -0 - outer loop - vertex -0.134736001492 0.154116004705 -1.5 - vertex -0.148680999875 0.217531993985 1.5 - vertex -0.134736001492 0.154116004705 1.5 - endloop - endfacet - facet normal 1 0 -0 - outer loop - vertex -0.148680999875 0.282467007637 -1.5 - vertex -0.148680999875 0.282467007637 1.5 - vertex -0.148680999875 0.217531993985 -1.5 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex -0.148680999875 0.217531993985 -1.5 - vertex -0.148680999875 0.282467007637 1.5 - vertex -0.148680999875 0.217531993985 1.5 - endloop - endfacet - facet normal 0.976666240056 -0.214762788992 0 - outer loop - vertex -0.134736001492 0.345883995295 -1.5 - vertex -0.134736001492 0.345883995295 1.5 - vertex -0.148680999875 0.282467007637 -1.5 - endloop - endfacet - facet normal 0.976666240056 -0.214762788992 0 - outer loop - vertex -0.148680999875 0.282467007637 -1.5 - vertex -0.134736001492 0.345883995295 1.5 - vertex -0.148680999875 0.282467007637 1.5 - endloop - endfacet - facet normal 0.90773249136 -0.4195494299 0 - outer loop - vertex -0.107496999204 0.404817998409 -1.5 - vertex -0.107496999204 0.404817998409 1.5 - vertex -0.134736001492 0.345883995295 -1.5 - endloop - endfacet - facet normal 0.90773249136 -0.4195494299 0 - outer loop - vertex -0.134736001492 0.345883995295 -1.5 - vertex -0.107496999204 0.404817998409 1.5 - vertex -0.134736001492 0.345883995295 1.5 - endloop - endfacet - facet normal 0.796375500831 -0.604802498073 0 - outer loop - vertex -0.0682383030653 0.456512004137 -1.5 - vertex -0.0682383030653 0.456512004137 1.5 - vertex -0.107496999204 0.404817998409 -1.5 - endloop - endfacet - facet normal -0.99415065992 0.108002154517 0 - outer loop - vertex 0.442546993494 0.185445994139 -1.5 - vertex 0.442546993494 0.185445994139 1.5 - vertex 0.449559986591 0.25 -1.5 - endloop - endfacet - facet normal -0.99415065992 0.108002154517 0 - outer loop - vertex 0.449559986591 0.25 -1.5 - vertex 0.442546993494 0.185445994139 1.5 - vertex 0.449559986591 0.25 1.5 - endloop - endfacet - facet normal -0.947745893024 0.319026209355 0 - outer loop - vertex 0.421833008528 0.12391000241 -1.5 - vertex 0.421833008528 0.12391000241 1.5 - vertex 0.442546993494 0.185445994139 -1.5 - endloop - endfacet - facet normal -0.947745893024 0.319026209355 0 - outer loop - vertex 0.442546993494 0.185445994139 -1.5 - vertex 0.421833008528 0.12391000241 1.5 - vertex 0.442546993494 0.185445994139 1.5 - endloop - endfacet - facet normal -0.857078113059 0.515186478971 0 - outer loop - vertex 0.388388007879 0.0682699978352 -1.5 - vertex 0.388388007879 0.0682699978352 1.5 - vertex 0.421833008528 0.12391000241 -1.5 - endloop - endfacet - facet normal -0.857078113059 0.515186478971 0 - outer loop - vertex 0.421833008528 0.12391000241 -1.5 - vertex 0.388388007879 0.0682699978352 1.5 - vertex 0.421833008528 0.12391000241 1.5 - endloop - endfacet - facet normal -0.726331758 0.687344293146 0 - outer loop - vertex 0.343775987625 0.02112749964 -1.5 - vertex 0.343775987625 0.02112749964 1.5 - vertex 0.388388007879 0.0682699978352 -1.5 - endloop - endfacet - facet normal -0.726331758 0.687344293146 0 - outer loop - vertex 0.388388007879 0.0682699978352 -1.5 - vertex 0.343775987625 0.02112749964 1.5 - vertex 0.388388007879 0.0682699978352 1.5 - endloop - endfacet - facet normal -0.561565427605 0.827432335916 0 - outer loop - vertex 0.290082991123 -0.0153131000698 -1.5 - vertex 0.290082991123 -0.0153131000698 1.5 - vertex 0.343775987625 0.02112749964 -1.5 - endloop - endfacet - facet normal -0.561565427605 0.827432335916 0 - outer loop - vertex 0.343775987625 0.02112749964 -1.5 - vertex 0.290082991123 -0.0153131000698 1.5 - vertex 0.343775987625 0.02112749964 1.5 - endloop - endfacet - facet normal -0.370449778906 0.928852497068 0 - outer loop - vertex 0.229818999767 -0.0393478982151 -1.5 - vertex 0.229818999767 -0.0393478982151 1.5 - vertex 0.290082991123 -0.0153131000698 -1.5 - endloop - endfacet - facet normal -0.370449778906 0.928852497068 0 - outer loop - vertex 0.290082991123 -0.0153131000698 -1.5 - vertex 0.229818999767 -0.0393478982151 1.5 - vertex 0.290082991123 -0.0153131000698 1.5 - endloop - endfacet - facet normal -0.161937308414 0.986801047904 0 - outer loop - vertex 0.165802001953 -0.0498532988131 -1.5 - vertex 0.165802001953 -0.0498532988131 1.5 - vertex 0.229818999767 -0.0393478982151 -1.5 - endloop - endfacet - facet normal -0.161937308414 0.986801047904 0 - outer loop - vertex 0.229818999767 -0.0393478982151 -1.5 - vertex 0.165802001953 -0.0498532988131 1.5 - vertex 0.229818999767 -0.0393478982151 1.5 - endloop - endfacet - facet normal 0.0541918998299 0.998530539339 -0 - outer loop - vertex 0.101025998592 -0.0463377982378 -1.5 - vertex 0.101025998592 -0.0463377982378 1.5 - vertex 0.165802001953 -0.0498532988131 -1.5 - endloop - endfacet - facet normal 0.0541918998299 0.998530539339 -0 - outer loop - vertex 0.165802001953 -0.0498532988131 -1.5 - vertex 0.101025998592 -0.0463377982378 1.5 - vertex 0.165802001953 -0.0498532988131 1.5 - endloop - endfacet - facet normal 0.267771842801 0.963482350748 -0 - outer loop - vertex 0.0385189987719 -0.0289657991379 -1.5 - vertex 0.0385189987719 -0.0289657991379 1.5 - vertex 0.101025998592 -0.0463377982378 -1.5 - endloop - endfacet - facet normal 0.267771842801 0.963482350748 -0 - outer loop - vertex 0.101025998592 -0.0463377982378 -1.5 - vertex 0.0385189987719 -0.0289657991379 1.5 - vertex 0.101025998592 -0.0463377982378 1.5 - endloop - endfacet - facet normal 0.468764725245 0.883323062286 -0 - outer loop - vertex -0.0187957007438 0.00145015004091 -1.5 - vertex -0.0187957007438 0.00145015004091 1.5 - vertex 0.0385189987719 -0.0289657991379 -1.5 - endloop - endfacet - facet normal -0.947745881345 -0.31902624405 0 - outer loop - vertex 0.442546993494 0.314554005861 -1.5 - vertex 0.442546993494 0.314554005861 1.5 - vertex 0.421833008528 0.376089990139 -1.5 - endloop - endfacet - facet normal -0.947745881345 -0.31902624405 0 - outer loop - vertex 0.421833008528 0.376089990139 -1.5 - vertex 0.442546993494 0.314554005861 1.5 - vertex 0.421833008528 0.376089990139 1.5 - endloop - endfacet - facet normal -0.99415065992 -0.108002154517 0 - outer loop - vertex 0.449559986591 0.25 -1.5 - vertex 0.449559986591 0.25 1.5 - vertex 0.442546993494 0.314554005861 -1.5 - endloop - endfacet - facet normal -0.99415065992 -0.108002154517 0 - outer loop - vertex 0.442546993494 0.314554005861 -1.5 - vertex 0.449559986591 0.25 1.5 - vertex 0.442546993494 0.314554005861 1.5 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex -0.300000011921 0 -1.39999997616 - vertex -0.300000011921 0 1.5 - vertex -0.699999988079 0 -1.39999997616 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex -0.699999988079 0 -1.39999997616 - vertex -0.300000011921 0 1.5 - vertex -0.699999988079 0 1.5 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.300000011921 -0.40000000596 -1.39999997616 - vertex -0.300000011921 -0.40000000596 1.5 - vertex -0.300000011921 0 -1.39999997616 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.300000011921 0 -1.39999997616 - vertex -0.300000011921 -0.40000000596 1.5 - vertex -0.300000011921 0 1.5 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex -0.699999988079 -0.40000000596 -1.39999997616 - vertex -0.699999988079 -0.40000000596 1.5 - vertex -0.300000011921 -0.40000000596 -1.39999997616 - endloop - endfacet - facet normal 0 1 -0 - outer loop - vertex -0.300000011921 -0.40000000596 -1.39999997616 - vertex -0.699999988079 -0.40000000596 1.5 - vertex -0.300000011921 -0.40000000596 1.5 - endloop - endfacet - facet normal 1 0 -0 - outer loop - vertex -0.699999988079 0 -1.39999997616 - vertex -0.699999988079 0 1.5 - vertex -0.699999988079 -0.40000000596 -1.39999997616 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex -0.699999988079 -0.40000000596 -1.39999997616 - vertex -0.699999988079 0 1.5 - vertex -0.699999988079 -0.40000000596 1.5 - endloop - endfacet - facet normal 0.796375500831 -0.604802498073 0 - outer loop - vertex -0.107496999204 0.404817998409 -1.5 - vertex -0.0682383030653 0.456512004137 1.5 - vertex -0.107496999204 0.404817998409 1.5 - endloop - endfacet - facet normal 0.647754558747 -0.761849087171 0 - outer loop - vertex -0.018795799464 0.498549997807 -1.5 - vertex -0.018795799464 0.498549997807 1.5 - vertex -0.0682383030653 0.456512004137 -1.5 - endloop - endfacet - facet normal 0.647754558747 -0.761849087171 0 - outer loop - vertex -0.0682383030653 0.456512004137 -1.5 - vertex -0.018795799464 0.498549997807 1.5 - vertex -0.0682383030653 0.456512004137 1.5 - endloop - endfacet - facet normal 0.468765490288 -0.88332265629 0 - outer loop - vertex 0.0385188981891 0.528966009617 -1.5 - vertex 0.0385188981891 0.528966009617 1.5 - vertex -0.018795799464 0.498549997807 -1.5 - endloop - endfacet - facet normal 0.468765490288 -0.88332265629 0 - outer loop - vertex -0.018795799464 0.498549997807 -1.5 - vertex 0.0385188981891 0.528966009617 1.5 - vertex -0.018795799464 0.498549997807 1.5 - endloop - endfacet - facet normal 0.267771629378 -0.963482410063 0 - outer loop - vertex 0.101025998592 0.546338021755 -1.5 - vertex 0.101025998592 0.546338021755 1.5 - vertex 0.0385188981891 0.528966009617 -1.5 - endloop - endfacet - facet normal 0.267771629378 -0.963482410063 0 - outer loop - vertex 0.0385188981891 0.528966009617 -1.5 - vertex 0.101025998592 0.546338021755 1.5 - vertex 0.0385188981891 0.528966009617 1.5 - endloop - endfacet - facet normal 0.0541842846189 -0.9985309526 0 - outer loop - vertex 0.165802001953 0.549853026867 -1.5 - vertex 0.165802001953 0.549853026867 1.5 - vertex 0.101025998592 0.546338021755 -1.5 - endloop - endfacet - facet normal 0.0541842846189 -0.9985309526 0 - outer loop - vertex 0.101025998592 0.546338021755 -1.5 - vertex 0.165802001953 0.549853026867 1.5 - vertex 0.101025998592 0.546338021755 1.5 - endloop - endfacet - facet normal -0.161931604744 -0.986801983878 0 - outer loop - vertex 0.229818999767 0.539348006248 -1.5 - vertex 0.229818999767 0.539348006248 1.5 - vertex 0.165802001953 0.549853026867 -1.5 - endloop - endfacet - facet normal -0.161931604744 -0.986801983878 0 - outer loop - vertex 0.165802001953 0.549853026867 -1.5 - vertex 0.229818999767 0.539348006248 1.5 - vertex 0.165802001953 0.549853026867 1.5 - endloop - endfacet - facet normal -0.370452156748 -0.928851548721 0 - outer loop - vertex 0.290082991123 0.515313029289 -1.5 - vertex 0.290082991123 0.515313029289 1.5 - vertex 0.229818999767 0.539348006248 -1.5 - endloop - endfacet - facet normal -0.370452156748 -0.928851548721 0 - outer loop - vertex 0.229818999767 0.539348006248 -1.5 - vertex 0.290082991123 0.515313029289 1.5 - vertex 0.229818999767 0.539348006248 1.5 - endloop - endfacet - facet normal -0.561559256785 -0.827436523921 0 - outer loop - vertex 0.343775987625 0.47887301445 -1.5 - vertex 0.343775987625 0.47887301445 1.5 - vertex 0.290082991123 0.515313029289 -1.5 - endloop - endfacet - facet normal -0.561559256785 -0.827436523921 0 - outer loop - vertex 0.290082991123 0.515313029289 -1.5 - vertex 0.343775987625 0.47887301445 1.5 - vertex 0.290082991123 0.515313029289 1.5 - endloop - endfacet - facet normal -0.726335500024 -0.687340338846 0 - outer loop - vertex 0.388388007879 0.431730002165 -1.5 - vertex 0.388388007879 0.431730002165 1.5 - vertex 0.343775987625 0.47887301445 -1.5 - endloop - endfacet - facet normal -0.726335500024 -0.687340338846 0 - outer loop - vertex 0.343775987625 0.47887301445 -1.5 - vertex 0.388388007879 0.431730002165 1.5 - vertex 0.343775987625 0.47887301445 1.5 - endloop - endfacet - facet normal -0.857078143521 -0.515186428295 0 - outer loop - vertex 0.421833008528 0.376089990139 -1.5 - vertex 0.421833008528 0.376089990139 1.5 - vertex 0.388388007879 0.431730002165 -1.5 - endloop - endfacet - facet normal -0.857078143521 -0.515186428295 0 - outer loop - vertex 0.388388007879 0.431730002165 -1.5 - vertex 0.421833008528 0.376089990139 1.5 - vertex 0.388388007879 0.431730002165 1.5 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 1.29999995232 0 1.5 - vertex 1.29999995232 0.40000000596 -1.5 - vertex 1.29999995232 0.40000000596 1.5 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 0.899999976158 0 1.5 - vertex 0.899999976158 0 -1.5 - vertex 1.29999995232 0 -1.5 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 0.899999976158 0 1.5 - vertex 1.29999995232 0 -1.5 - vertex 1.29999995232 0 1.5 - endloop - endfacet - facet normal 0.196116149188 -0.980580672881 0 - outer loop - vertex 0.40000000596 -0.10000000149 1.5 - vertex 0.40000000596 -0.10000000149 -1.5 - vertex 0.899999976158 0 -1.5 - endloop - endfacet - facet normal 0.196116149188 -0.980580672881 0 - outer loop - vertex 0.40000000596 -0.10000000149 1.5 - vertex 0.899999976158 0 -1.5 - vertex 0.899999976158 0 1.5 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 0.40000000596 -0.300000011921 1.5 - vertex 0.40000000596 -0.300000011921 -1.5 - vertex 0.40000000596 -0.10000000149 -1.5 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 0.40000000596 -0.300000011921 1.5 - vertex 0.40000000596 -0.10000000149 -1.5 - vertex 0.40000000596 -0.10000000149 1.5 - endloop - endfacet - facet normal 0.242535608029 0.970142504397 0 - outer loop - vertex 0.800000011921 -0.40000000596 1.5 - vertex 0.800000011921 -0.40000000596 -1.5 - vertex 0.40000000596 -0.300000011921 -1.5 - endloop - endfacet - facet normal 0.242535608029 0.970142504397 0 - outer loop - vertex 0.800000011921 -0.40000000596 1.5 - vertex 0.40000000596 -0.300000011921 -1.5 - vertex 0.40000000596 -0.300000011921 1.5 - endloop - endfacet - facet normal 0.242535591022 0.970142508649 0 - outer loop - vertex 1.20000004768 -0.5 1.5 - vertex 1.20000004768 -0.5 -1.5 - vertex 0.800000011921 -0.40000000596 -1.5 - endloop - endfacet - facet normal 0.242535591022 0.970142508649 0 - outer loop - vertex 1.20000004768 -0.5 1.5 - vertex 0.800000011921 -0.40000000596 -1.5 - vertex 0.800000011921 -0.40000000596 1.5 - endloop - endfacet - facet normal 0.980580666699 -0.196116180098 0 - outer loop - vertex 1.10000002384 -1 1.5 - vertex 1.10000002384 -1 -1.5 - vertex 1.20000004768 -0.5 -1.5 - endloop - endfacet - facet normal 0.980580666699 -0.196116180098 0 - outer loop - vertex 1.10000002384 -1 1.5 - vertex 1.20000004768 -0.5 -1.5 - vertex 1.20000004768 -0.5 1.5 - endloop - endfacet - facet normal 0.124034761887 -0.992277873301 0 - outer loop - vertex 0.300000011921 -1.10000002384 1.5 - vertex 0.300000011921 -1.10000002384 -1.5 - vertex 1.10000002384 -1 -1.5 - endloop - endfacet - facet normal 0.124034761887 -0.992277873301 0 - outer loop - vertex 0.300000011921 -1.10000002384 1.5 - vertex 1.10000002384 -1 -1.5 - vertex 1.10000002384 -1 1.5 - endloop - endfacet - facet normal -0.894427244312 0.447213488876 0 - outer loop - vertex 0.40000000596 -0.899999976158 1.5 - vertex 0.40000000596 -0.899999976158 -1.5 - vertex 0.300000011921 -1.10000002384 -1.5 - endloop - endfacet - facet normal 0.707106781187 0.707106781187 0 - outer loop - vertex -0.600000023842 0.699999988079 1.5 - vertex -0.600000023842 0.699999988079 -1.5 - vertex -0.800000011921 0.899999976158 -1.5 - endloop - endfacet - facet normal 0.707106781187 0.707106781187 0 - outer loop - vertex -0.600000023842 0.699999988079 1.5 - vertex -0.800000011921 0.899999976158 -1.5 - vertex -0.800000011921 0.899999976158 1.5 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex -0.40000000596 0.699999988079 1.5 - vertex -0.40000000596 0.699999988079 -1.5 - vertex -0.600000023842 0.699999988079 -1.5 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex -0.40000000596 0.699999988079 1.5 - vertex -0.600000023842 0.699999988079 -1.5 - vertex -0.600000023842 0.699999988079 1.5 - endloop - endfacet - facet normal -0.948683307475 0.316227737744 0 - outer loop - vertex -0.300000011921 1 1.5 - vertex -0.300000011921 1 -1.5 - vertex -0.40000000596 0.699999988079 -1.5 - endloop - endfacet - facet normal -0.948683307475 0.316227737744 0 - outer loop - vertex -0.300000011921 1 1.5 - vertex -0.40000000596 0.699999988079 -1.5 - vertex -0.40000000596 0.699999988079 1.5 - endloop - endfacet - facet normal -0.316227822563 0.948683279202 0 - outer loop - vertex 0 1.10000002384 1.5 - vertex 0 1.10000002384 -1.5 - vertex -0.300000011921 1 -1.5 - endloop - endfacet - facet normal -0.316227822563 0.948683279202 0 - outer loop - vertex 0 1.10000002384 1.5 - vertex -0.300000011921 1 -1.5 - vertex -0.300000011921 1 1.5 - endloop - endfacet - facet normal 0.447213675468 0.894427151016 0 - outer loop - vertex 0.20000000298 1 1.5 - vertex 0.20000000298 1 -1.5 - vertex 0 1.10000002384 -1.5 - endloop - endfacet - facet normal 0.447213675468 0.894427151016 0 - outer loop - vertex 0.20000000298 1 1.5 - vertex 0 1.10000002384 -1.5 - vertex 0 1.10000002384 1.5 - endloop - endfacet - facet normal 0.554700177151 0.832050307054 0 - outer loop - vertex 0.5 0.800000011921 1.5 - vertex 0.5 0.800000011921 -1.5 - vertex 0.20000000298 1 -1.5 - endloop - endfacet - facet normal 0.554700177151 0.832050307054 0 - outer loop - vertex 0.5 0.800000011921 1.5 - vertex 0.20000000298 1 -1.5 - vertex 0.20000000298 1 1.5 - endloop - endfacet - facet normal -0.707106781187 0.707106781187 0 - outer loop - vertex 0.699999988079 1 1.5 - vertex 0.699999988079 1 -1.5 - vertex 0.5 0.800000011921 -1.5 - endloop - endfacet - facet normal -0.707106781187 0.707106781187 0 - outer loop - vertex 0.699999988079 1 1.5 - vertex 0.5 0.800000011921 -1.5 - vertex 0.5 0.800000011921 1.5 - endloop - endfacet - facet normal 0.554700158076 0.832050319771 0 - outer loop - vertex 1 0.800000011921 1.5 - vertex 1 0.800000011921 -1.5 - vertex 0.699999988079 1 -1.5 - endloop - endfacet - facet normal 0.554700158076 0.832050319771 0 - outer loop - vertex 1 0.800000011921 1.5 - vertex 0.699999988079 1 -1.5 - vertex 0.699999988079 1 1.5 - endloop - endfacet - facet normal 0.800000050068 0.599999933243 0 - outer loop - vertex 1.29999995232 0.40000000596 1.5 - vertex 1.29999995232 0.40000000596 -1.5 - vertex 1 0.800000011921 -1.5 - endloop - endfacet - facet normal 0.800000050068 0.599999933243 0 - outer loop - vertex 1.29999995232 0.40000000596 1.5 - vertex 1 0.800000011921 -1.5 - vertex 1 0.800000011921 1.5 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 1.29999995232 0 1.5 - vertex 1.29999995232 0 -1.5 - vertex 1.29999995232 0.40000000596 -1.5 - endloop - endfacet - facet normal -0.707106702161 -0.707106860212 -0 - outer loop - vertex -1.20000004768 0.10000000149 1.5 - vertex -1.20000004768 0.10000000149 -1.5 - vertex -1.10000002384 0 -1.5 - endloop - endfacet - facet normal -0.707106702161 -0.707106860212 0 - outer loop - vertex -1.20000004768 0.10000000149 1.5 - vertex -1.10000002384 0 -1.5 - vertex -1.10000002384 0 1.5 - endloop - endfacet - facet normal -0.894427370928 -0.447213235644 -0 - outer loop - vertex -1.29999995232 0.300000011921 1.5 - vertex -1.29999995232 0.300000011921 -1.5 - vertex -1.20000004768 0.10000000149 -1.5 - endloop - endfacet - facet normal -0.894427370928 -0.447213235644 0 - outer loop - vertex -1.29999995232 0.300000011921 1.5 - vertex -1.20000004768 0.10000000149 -1.5 - vertex -1.20000004768 0.10000000149 1.5 - endloop - endfacet - facet normal -0.894427350936 0.447213275628 0 - outer loop - vertex -1.20000004768 0.5 1.5 - vertex -1.20000004768 0.5 -1.5 - vertex -1.29999995232 0.300000011921 -1.5 - endloop - endfacet - facet normal -0.894427350936 0.447213275628 0 - outer loop - vertex -1.20000004768 0.5 1.5 - vertex -1.29999995232 0.300000011921 -1.5 - vertex -1.29999995232 0.300000011921 1.5 - endloop - endfacet - facet normal -0.894427350936 -0.447213275628 -0 - outer loop - vertex -1.29999995232 0.699999988079 1.5 - vertex -1.29999995232 0.699999988079 -1.5 - vertex -1.20000004768 0.5 -1.5 - endloop - endfacet - facet normal -0.894427350936 -0.447213275628 0 - outer loop - vertex -1.29999995232 0.699999988079 1.5 - vertex -1.20000004768 0.5 -1.5 - vertex -1.20000004768 0.5 1.5 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex -1.29999995232 0.800000011921 1.5 - vertex -1.29999995232 0.800000011921 -1.5 - vertex -1.29999995232 0.699999988079 -1.5 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex -1.29999995232 0.800000011921 1.5 - vertex -1.29999995232 0.699999988079 -1.5 - vertex -1.29999995232 0.699999988079 1.5 - endloop - endfacet - facet normal 0.447213808748 0.894427084376 0 - outer loop - vertex -1.10000002384 0.699999988079 1.5 - vertex -1.10000002384 0.699999988079 -1.5 - vertex -1.29999995232 0.800000011921 -1.5 - endloop - endfacet - facet normal 0.447213808748 0.894427084376 0 - outer loop - vertex -1.10000002384 0.699999988079 1.5 - vertex -1.29999995232 0.800000011921 -1.5 - vertex -1.29999995232 0.800000011921 1.5 - endloop - endfacet - facet normal -0.4472135955 0.894427191 0 - outer loop - vertex -0.899999976158 0.800000011921 1.5 - vertex -0.899999976158 0.800000011921 -1.5 - vertex -1.10000002384 0.699999988079 -1.5 - endloop - endfacet - facet normal -0.4472135955 0.894427191 0 - outer loop - vertex -0.899999976158 0.800000011921 1.5 - vertex -1.10000002384 0.699999988079 -1.5 - vertex -1.10000002384 0.699999988079 1.5 - endloop - endfacet - facet normal -0.707106781187 0.707106781187 0 - outer loop - vertex -0.800000011921 0.899999976158 1.5 - vertex -0.800000011921 0.899999976158 -1.5 - vertex -0.899999976158 0.800000011921 -1.5 - endloop - endfacet - facet normal -0.707106781187 0.707106781187 0 - outer loop - vertex -0.800000011921 0.899999976158 1.5 - vertex -0.899999976158 0.800000011921 -1.5 - vertex -0.899999976158 0.800000011921 1.5 - endloop - endfacet - facet normal -0.894427244312 0.447213488876 0 - outer loop - vertex 0.40000000596 -0.899999976158 1.5 - vertex 0.300000011921 -1.10000002384 -1.5 - vertex 0.300000011921 -1.10000002384 1.5 - endloop - endfacet - facet normal -0.316227744812 -0.948683305119 -0 - outer loop - vertex -0.20000000298 -0.699999988079 1.5 - vertex -0.20000000298 -0.699999988079 -1.5 - vertex 0.40000000596 -0.899999976158 -1.5 - endloop - endfacet - facet normal -0.316227744812 -0.948683305119 0 - outer loop - vertex -0.20000000298 -0.699999988079 1.5 - vertex 0.40000000596 -0.899999976158 -1.5 - vertex 0.40000000596 -0.899999976158 1.5 - endloop - endfacet - facet normal 0.707106754845 -0.707106807528 0 - outer loop - vertex -0.40000000596 -0.899999976158 1.5 - vertex -0.40000000596 -0.899999976158 -1.5 - vertex -0.20000000298 -0.699999988079 -1.5 - endloop - endfacet - facet normal 0.707106754845 -0.707106807528 0 - outer loop - vertex -0.40000000596 -0.899999976158 1.5 - vertex -0.20000000298 -0.699999988079 -1.5 - vertex -0.20000000298 -0.699999988079 1.5 - endloop - endfacet - facet normal -0.196116078939 -0.980580686931 -0 - outer loop - vertex -0.899999976158 -0.800000011921 1.5 - vertex -0.899999976158 -0.800000011921 -1.5 - vertex -0.40000000596 -0.899999976158 -1.5 - endloop - endfacet - facet normal -0.196116078939 -0.980580686931 0 - outer loop - vertex -0.899999976158 -0.800000011921 1.5 - vertex -0.40000000596 -0.899999976158 -1.5 - vertex -0.40000000596 -0.899999976158 1.5 - endloop - endfacet - facet normal -0.316227766017 -0.948683298051 -0 - outer loop - vertex -1.20000004768 -0.699999988079 1.5 - vertex -1.20000004768 -0.699999988079 -1.5 - vertex -0.899999976158 -0.800000011921 -1.5 - endloop - endfacet - facet normal -0.316227766017 -0.948683298051 0 - outer loop - vertex -1.20000004768 -0.699999988079 1.5 - vertex -0.899999976158 -0.800000011921 -1.5 - vertex -0.899999976158 -0.800000011921 1.5 - endloop - endfacet - facet normal -0.948683382869 -0.31622751156 -0 - outer loop - vertex -1.29999995232 -0.40000000596 1.5 - vertex -1.29999995232 -0.40000000596 -1.5 - vertex -1.20000004768 -0.699999988079 -1.5 - endloop - endfacet - facet normal -0.948683382869 -0.31622751156 0 - outer loop - vertex -1.29999995232 -0.40000000596 1.5 - vertex -1.20000004768 -0.699999988079 -1.5 - vertex -1.20000004768 -0.699999988079 1.5 - endloop - endfacet - facet normal -0.707106912895 0.707106649478 0 - outer loop - vertex -1.10000002384 -0.20000000298 1.5 - vertex -1.10000002384 -0.20000000298 -1.5 - vertex -1.29999995232 -0.40000000596 -1.5 - endloop - endfacet - facet normal -0.707106912895 0.707106649478 0 - outer loop - vertex -1.10000002384 -0.20000000298 1.5 - vertex -1.29999995232 -0.40000000596 -1.5 - vertex -1.29999995232 -0.40000000596 1.5 - endloop - endfacet - facet normal -0.447213515532 0.894427230984 0 - outer loop - vertex -0.899999976158 -0.10000000149 1.5 - vertex -0.899999976158 -0.10000000149 -1.5 - vertex -1.10000002384 -0.20000000298 -1.5 - endloop - endfacet - facet normal -0.447213515532 0.894427230984 0 - outer loop - vertex -0.899999976158 -0.10000000149 1.5 - vertex -1.10000002384 -0.20000000298 -1.5 - vertex -1.10000002384 -0.20000000298 1.5 - endloop - endfacet - facet normal -1 0 -0 - outer loop - vertex -0.899999976158 0.20000000298 1.5 - vertex -0.899999976158 0.20000000298 -1.5 - vertex -0.899999976158 -0.10000000149 -1.5 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex -0.899999976158 0.20000000298 1.5 - vertex -0.899999976158 -0.10000000149 -1.5 - vertex -0.899999976158 -0.10000000149 1.5 - endloop - endfacet - facet normal 0.707106702161 -0.707106860212 0 - outer loop - vertex -1.10000002384 0 1.5 - vertex -1.10000002384 0 -1.5 - vertex -0.899999976158 0.20000000298 -1.5 - endloop - endfacet - facet normal 0.707106702161 -0.707106860212 0 - outer loop - vertex -1.10000002384 0 1.5 - vertex -0.899999976158 0.20000000298 -1.5 - vertex -0.899999976158 0.20000000298 1.5 - endloop - endfacet -endsolid jagged diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/controlDict b/tutorials/mesh/cv2DMesh/jaggedBoundary/system/controlDict deleted file mode 100644 index 97f40d27531af3a6c5c595a81aa9ef2e096d932b..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/controlDict +++ /dev/null @@ -1,47 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object controlDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -startFrom startTime; - -startTime 0; - -stopAt endTime; - -endTime 100; - -deltaT 1; - -writeControl timeStep; - -writeInterval 1; - -purgeWrite 0; - -writeFormat ascii; - -writePrecision 12; - -writeCompression off; - -timeFormat general; - -timePrecision 6; - -runTimeModifiable true; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/cv2DMeshDict b/tutorials/mesh/cv2DMesh/jaggedBoundary/system/cv2DMeshDict deleted file mode 100644 index 76d790c4c22db911749d7bcd2441937e2ffde24c..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/cv2DMeshDict +++ /dev/null @@ -1,147 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object cv2DMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -geometry -{ - jaggedBoundary.stl - { - name jaggedBoundary; - type closedTriSurfaceMesh; - } -} - -surfaceConformation -{ - // The z-coordinate of the plane is taken from here. - locationInMesh (-0.6 0.3 0.0); - - pointPairDistanceCoeff 0.001; - - // If area of a dual cell is less than the square of this, do not refine. - minEdgeLenCoeff 0.001; - - // How much cells are allowed to stick out of the surfaces before - // points are inserted onto the boundary - maxNotchLenCoeff 1; - - minNearPointDistCoeff 0.001; - - maxQuadAngle 125; - - // Insert near-boundary point mirror or point-pairs - insertSurfaceNearestPointPairs yes; - - // Mirror near-boundary points rather than insert point-pairs - mirrorPoints no; - - // Insert point-pairs vor dual-cell vertices very near the surface - insertSurfaceNearPointPairs yes; - - // Maximum number of iterations used in boundaryConform. - maxBoundaryConformingIter 5; - - geometryToConformTo - { - jaggedBoundary - { - featureMethod extendedFeatureEdgeMesh; - extendedFeatureEdgeMesh "jaggedBoundary.extendedFeatureEdgeMesh"; - } - } - - additionalFeatures - { - } - - // Choose if to randomise the initial grid created by insertGrid. - randomiseInitialGrid yes; - - // Perturbation fraction, 1 = cell-size. - randomPerturbation 0.1; -} - - -motionControl -{ - // This is a tolerance for determining whether to deal with surface - // protrusions or not. - minCellSize 0.04; - - // Assign a priority to all requests for cell sizes, the highest overrules. - defaultPriority 0; - - shapeControlFunctions - { - jaggedBoundary - { - type searchableSurfaceControl; - priority 1; - mode inside; - - cellSizeFunction surfaceOffsetLinearDistance; - surfaceOffsetLinearDistanceCoeffs - { - distanceCellSize $minCellSize; - totalDistance 0.2; - surfaceOffset 0.05; - } - - surfaceCellSizeFunction uniformValue; - uniformValueCoeffs - { - surfaceCellSize 0.005; - } - } - } - - relaxationModel adaptiveLinear; - - adaptiveLinearCoeffs - { - relaxationStart 0.5; - relaxationEnd 0.0; - } - - objOutput no; - - meshedSurfaceOutput yes; - - // Near-wall region where cells are aligned with the wall specified as a - // number of cell layers - nearWallAlignedDist 3; -} - - -shortEdgeFilter -{ - // Factor to multiply the average of a face's edge lengths by. - // If an edge of that face is smaller than that value then delete it. - shortEdgeFilterFactor 0.2; - - // Weighting for the lengths of edges that are attached to the boundaries. - // Used when calculating the length of an edge. Default 2.0. - edgeAttachedToBoundaryFactor 2.0; -} - - -extrusion -{ - extrude off; - #include "extrude2DMeshDict"; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/extrude2DMeshDict b/tutorials/mesh/cv2DMesh/jaggedBoundary/system/extrude2DMeshDict deleted file mode 100644 index b825f1608b358adf65d9bcdf3a1ed23ed5cb0b3b..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/extrude2DMeshDict +++ /dev/null @@ -1,42 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object extrude2DMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -extrudeModel linearDirection; - -patchInfo -{} - -patchType empty; - -nLayers 1; - -expansionRatio 1.0; - -linearDirectionCoeffs -{ - direction (0 0 1); - thickness 0.1; -} - -wedgeCoeffs -{ - axisPt (0 0 0); - axis (1 0 0); - angle 10; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/fvSchemes b/tutorials/mesh/cv2DMesh/jaggedBoundary/system/fvSchemes deleted file mode 100644 index 2e5c55b28ba64ca0cfc1a7c714148109cd736563..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/fvSchemes +++ /dev/null @@ -1,54 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSchemes; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -ddtSchemes -{ - default none; -} - -gradSchemes -{ - default none; -} - -divSchemes -{ - default none; -} - -laplacianSchemes -{ - default none; -} - -interpolationSchemes -{ - default none; -} - -snGradSchemes -{ - default none; -} - -fluxRequired -{ - default no; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/fvSolution b/tutorials/mesh/cv2DMesh/jaggedBoundary/system/fvSolution deleted file mode 100644 index 8ce8c60878cf19b4d62a2c8cc71c3b465f3829ce..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/fvSolution +++ /dev/null @@ -1,22 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSolution; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -solvers -{} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/surfaceFeatureExtractDict b/tutorials/mesh/cv2DMesh/jaggedBoundary/system/surfaceFeatureExtractDict deleted file mode 100644 index 7ff6c35a0b093a2cd0a15ddbea69ee27a8f25fd6..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/jaggedBoundary/system/surfaceFeatureExtractDict +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object surfaceFeatureExtractDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -jaggedBoundary.stl -{ - extractionMethod extractFromSurface; - - extractFromSurfaceCoeffs - { - // Mark edges whose adjacent surface normals are at an angle less - // than includedAngle as features - // - 0 : selects no edges - // - 180: selects all edges - includedAngle 175; - } - - subsetFeatures - { - // Use a plane to select feature edges - // (normal)(basePoint) - // Keep only edges that intersect the plane will be included - plane (0 0 1)(-0.6 0.3 0.0); - - // Keep nonManifold edges (edges with >2 connected faces where - // the faces form more than two different normal planes) - nonManifoldEdges no; - - // Keep open edges (edges with 1 connected face) - openEdges no; - } - - // Write options - - // Write features to obj format for postprocessing - writeObj no; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/square/Allclean b/tutorials/mesh/cv2DMesh/square/Allclean deleted file mode 100755 index f30f73d875c750ccf27f825b52486c7c4ed4ae17..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/Allclean +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/CleanFunctions - -rm -rf constant/extendedFeatureEdgeMesh > /dev/null 2>&1 -rm -rf constant/triSurface/unit_cube.eMesh > /dev/null 2>&1 -rm -rf constant/polyMesh > /dev/null 2>&1 - -rm -rf MeshedSurface*.obj > /dev/null 2>&1 - -cleanCase - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cv2DMesh/square/Allrun b/tutorials/mesh/cv2DMesh/square/Allrun deleted file mode 100755 index 469561f159d2c1fcda71722e6ddbe3b80e5cf274..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/Allrun +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -runApplication surfaceFeatureExtract -runApplication cv2DMesh -overwrite -runApplication extrude2DMesh -overwrite polyMesh2D -runApplication checkMesh -allGeometry -allTopology -constant -noZero - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cv2DMesh/square/constant/triSurface/unit_cube.stl b/tutorials/mesh/cv2DMesh/square/constant/triSurface/unit_cube.stl deleted file mode 100644 index 4b213c284df4991591dac5e75a57e081817d7d39..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/constant/triSurface/unit_cube.stl +++ /dev/null @@ -1,88 +0,0 @@ -solid inlet - facet normal 1 0 0 - outer loop - vertex 1 1 0.5 - vertex 1 0 0.5 - vertex 1 0 -0.5 - endloop - endfacet - facet normal 1 0 -0 - outer loop - vertex 1 1 -0.5 - vertex 1 1 0.5 - vertex 1 0 -0.5 - endloop - endfacet -endsolid inlet -solid cube.tri - facet normal -1 0 0 - outer loop - vertex 0 0 -0.5 - vertex 0 0 0.5 - vertex 0 1 0.5 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex 0 1 -0.5 - vertex 0 0 -0.5 - vertex 0 1 0.5 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex 1 1 0.5 - vertex 1 1 -0.5 - vertex 0 1 -0.5 - endloop - endfacet - facet normal -0 1 0 - outer loop - vertex 0 1 0.5 - vertex 1 1 0.5 - vertex 0 1 -0.5 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 0 0 -0.5 - vertex 1 0 -0.5 - vertex 1 0 0.5 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 0 0 0.5 - vertex 0 0 -0.5 - vertex 1 0 0.5 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1 1 0.5 - vertex 0 1 0.5 - vertex 0 0 0.5 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 1 0 0.5 - vertex 1 1 0.5 - vertex 0 0 0.5 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0 0 -0.5 - vertex 0 1 -0.5 - vertex 1 1 -0.5 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1 0 -0.5 - vertex 0 0 -0.5 - vertex 1 1 -0.5 - endloop - endfacet -endsolid cube.tri diff --git a/tutorials/mesh/cv2DMesh/square/system/controlDict b/tutorials/mesh/cv2DMesh/square/system/controlDict deleted file mode 100644 index ccd8cd716ac1fb207115871ecfeeecabb71848fc..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/system/controlDict +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object controlDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -startFrom startTime; - -startTime 0; - -stopAt endTime; - -endTime 100; - -deltaT 1; - -writeControl timeStep; - -writeInterval 1; - -purgeWrite 0; - -writeFormat ascii; - -writePrecision 12; - -writeCompression off; - -timeFormat general; - -timePrecision 6; - -runTimeModifiable true; - -DebugSwitches -{ - shortEdgeFilter2D 0; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/square/system/cv2DMeshDict b/tutorials/mesh/cv2DMesh/square/system/cv2DMeshDict deleted file mode 100644 index 160a2e7518662153808e1da1d5417d43fb7f2c92..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/system/cv2DMeshDict +++ /dev/null @@ -1,165 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object DMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -geometry -{ - unit_cube.stl - { - name cube; - type triSurfaceMesh; - } - - refinementBox - { - type searchableBox; - min (0.25 0.25 -1000); - max (0.75 0.75 1000); - } -} - - -surfaceConformation -{ - // The z-coordinate of the plane is taken from here. - locationInMesh (0 0 0); - - pointPairDistanceCoeff 0.005; - - minEdgeLenCoeff 0.005; - - maxNotchLenCoeff 0.003; - - minNearPointDistCoeff 0.0025; - - maxQuadAngle 125; - - // Insert near-boundary point mirror or point-pairs - insertSurfaceNearestPointPairs yes; - - // Mirror near-boundary points rather than insert point-pairs - mirrorPoints no; - - // Insert point-pairs vor dual-cell vertices very near the surface - insertSurfaceNearPointPairs yes; - - // Maximum number of iterations used in boundaryConform. - maxBoundaryConformingIter 5; - - geometryToConformTo - { - cube - { - featureMethod extendedFeatureEdgeMesh; - extendedFeatureEdgeMesh "unit_cube.extendedFeatureEdgeMesh"; - } - } - - additionalFeatures - {} - - // Choose if to randomise the initial grid created by insertGrid. - randomiseInitialGrid yes; - - // Perturbation fraction, 1 = cell-size. - randomPerturbation 0.1; -} - - -motionControl -{ - minCellSize 0.04; - - // Assign a priority to all requests for cell sizes, the highest overrules. - defaultPriority 0; - - shapeControlFunctions - { - cube - { - type searchableSurfaceControl; - priority 1; - mode bothSides; - cellSizeFunction linearDistance; - linearDistanceCoeffs - { - distanceCellSize $minCellSize; - distance #calc"5*$minCellSize"; - } - surfaceCellSizeFunction uniformValue; - uniformValueCoeffs - { - surfaceCellSize #calc"0.05*$minCellSize"; - } - } - - refinementBox - { - type searchableSurfaceControl; - priority 1; - mode bothSides; - cellSizeFunction linearDistance; - linearDistanceCoeffs - { - distanceCellSize $minCellSize; - distance #calc"5*$minCellSize"; - } - surfaceCellSizeFunction uniformValue; - uniformValueCoeffs - { - surfaceCellSize #calc"0.05*$minCellSize"; - } - } - } - - relaxationModel adaptiveLinear; - - adaptiveLinearCoeffs - { - relaxationStart 0.5; - relaxationEnd 0.0; - } - - objOutput no; - - meshedSurfaceOutput yes; - - // Near-wall region where cells are aligned with the wall specified as a - // number of cell layers - nearWallAlignedDist 3; -} - - -shortEdgeFilter -{ - // Factor to multiply the average of a face's edge lengths by. - // If an edge of that face is smaller than that value then delete it. - shortEdgeFilterFactor 0.25; - - // Weighting for the lengths of edges that are attached to the boundaries. - // Used when calculating the length of an edge. Default 2.0. - edgeAttachedToBoundaryFactor 2.0; -} - - -extrusion -{ - extrude off; - - #include "extrude2DMeshDict"; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/square/system/extrude2DMeshDict b/tutorials/mesh/cv2DMesh/square/system/extrude2DMeshDict deleted file mode 100644 index b7116172e31faf4704909c60b88f4d0cd8217a3f..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/system/extrude2DMeshDict +++ /dev/null @@ -1,42 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object extrude2DMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -extrudeModel wedge; - -patchInfo -{} - -patchType wedge; - -nLayers 1; - -expansionRatio 1.0; - -linearDirectionCoeffs -{ - direction (0 0 1); - thickness 0.1; -} - -wedgeCoeffs -{ - axisPt (0 0 0); - axis (1 0 0); - angle 10; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/square/system/fvSchemes b/tutorials/mesh/cv2DMesh/square/system/fvSchemes deleted file mode 100644 index 2e5c55b28ba64ca0cfc1a7c714148109cd736563..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/system/fvSchemes +++ /dev/null @@ -1,54 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSchemes; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -ddtSchemes -{ - default none; -} - -gradSchemes -{ - default none; -} - -divSchemes -{ - default none; -} - -laplacianSchemes -{ - default none; -} - -interpolationSchemes -{ - default none; -} - -snGradSchemes -{ - default none; -} - -fluxRequired -{ - default no; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/square/system/fvSolution b/tutorials/mesh/cv2DMesh/square/system/fvSolution deleted file mode 100644 index 8ce8c60878cf19b4d62a2c8cc71c3b465f3829ce..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/system/fvSolution +++ /dev/null @@ -1,22 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSolution; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -solvers -{} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cv2DMesh/square/system/surfaceFeatureExtractDict b/tutorials/mesh/cv2DMesh/square/system/surfaceFeatureExtractDict deleted file mode 100644 index 6a2e6d3ffeb6709c39d112c2956869f000c526be..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cv2DMesh/square/system/surfaceFeatureExtractDict +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object surfaceFeatureExtractDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -unit_cube.stl -{ - extractionMethod extractFromSurface; - - extractFromSurfaceCoeffs - { - // Mark edges whose adjacent surface normals are at an angle less - // than includedAngle as features - // - 0 : selects no edges - // - 180: selects all edges - includedAngle 175; - } - - subsetFeatures - { - // Use a plane to select feature edges - // (normal)(basePoint) - // Keep only edges that intersect the plane will be included - plane (0 0 1)(0 0 0); - - // Keep nonManifold edges (edges with >2 connected faces where - // the faces form more than two different normal planes) - nonManifoldEdges no; - - // Keep open edges (edges with 1 connected face) - openEdges yes; - } - - // Write options - - // Write features to obj format for postprocessing - writeObj yes; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/Allclean b/tutorials/mesh/cvMesh/blob/Allclean deleted file mode 100755 index 3b8eb25810039817af3290c78cec672d91be429c..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/Allclean +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/CleanFunctions - -cleanCase - -rm -rf constant/cellAlignments > /dev/null 2>&1 -rm -rf constant/targetCellSize > /dev/null 2>&1 -rm -rf constant/internalDelaunayVertices > /dev/null 2>&1 - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/blob/Allrun b/tutorials/mesh/cvMesh/blob/Allrun deleted file mode 100755 index ab12a6cbd5e5cd43785ffae0f8d8e1c4e2019ebf..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/Allrun +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -runApplication cvMesh -runApplication collapseEdges -latestTime -collapseFaces -runApplication checkMesh -latestTime -allGeometry -allTopology - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/blob/Allrun-parallel b/tutorials/mesh/cvMesh/blob/Allrun-parallel deleted file mode 100755 index 253294de1f153f5933dac13f3c4559a366225cf1..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/Allrun-parallel +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -# Get the number of processors to run on from system/decomposeParDict -nProc=$(getNumberOfProcessors) - -runApplication blockMesh -runApplication decomposePar - -runParallel cvMesh $nProc -runParallel collapseEdges $nProc -latestTime -collapseFaces -runParallel checkMesh $nProc -latestTime -allTopology -allGeometry - -runApplication reconstructParMesh -latestTime - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/blob/Alltest b/tutorials/mesh/cvMesh/blob/Alltest deleted file mode 100755 index fc9136aea51b1f0ea208ef462afc59dbbb9b3693..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/Alltest +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -runApplication cvMesh - -# Change collapseEdges to only do one iteration -cp system/collapseDict system/collapseDict.org - -sed -e s/"\(maximumIterations[ \t]*\)\([0-9]*\);"/"\1 1;"/g \ -system/collapseDict.org > system/collapseDict - -runApplication collapseEdges -latestTime -collapseFaces - - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/blob/constant/polyMesh/blockMeshDict b/tutorials/mesh/cvMesh/blob/constant/polyMesh/blockMeshDict deleted file mode 100644 index a0d9e31895cd3db25759d74fdaefc8c16eb5a4bf..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/constant/polyMesh/blockMeshDict +++ /dev/null @@ -1,69 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object blockMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -convertToMeters 1.0; - -xmin -1.3; -xmax 0.65; -ymin -1.1; -ymax 0.8; -zmin -1.4; -zmax 0.55; - -vertices -( - ($xmin $ymin $zmin) - ($xmax $ymin $zmin) - ($xmax $ymax $zmin) - ($xmin $ymax $zmin) - ($xmin $ymin $zmax) - ($xmax $ymin $zmax) - ($xmax $ymax $zmax) - ($xmin $ymax $zmax) - -); - -blocks -( - hex (0 1 2 3 4 5 6 7) (11 11 9) simpleGrading (1 1 1) -); - -edges -( -); - -boundary -( - walls - { - type wall; - faces - ( - (3 7 6 2) - (0 4 7 3) - (2 6 5 1) - (1 5 4 0) - (0 3 2 1) - (4 5 6 7) - ); - } -); - -mergePatchPairs -( -); - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/constant/polyMesh/boundary b/tutorials/mesh/cvMesh/blob/constant/polyMesh/boundary deleted file mode 100644 index 69a2a888d4cbc8ceaaf582487e5027df213da58a..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/constant/polyMesh/boundary +++ /dev/null @@ -1,28 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class polyBoundaryMesh; - location "constant/polyMesh"; - object boundary; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -1 -( - walls - { - type wall; - nFaces 638; - startFace 2948; - } -) - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/constant/triSurface/blob.stl b/tutorials/mesh/cvMesh/blob/constant/triSurface/blob.stl deleted file mode 100644 index 2aa427a4f186e2b8b45a854f4a4b7776f93083ca..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/constant/triSurface/blob.stl +++ /dev/null @@ -1,21506 +0,0 @@ -solid patch1 - facet normal 0.0423597 0.0421465 -0.998213 - outer loop - vertex -0.327179 -0.153076 -1.35078 - vertex -0.327179 -0.0673011 -1.34716 - vertex -0.241784 -0.0676809 -1.34355 - endloop - endfacet - facet normal 0.0421465 0.0423597 -0.998213 - outer loop - vertex -0.327179 -0.153076 -1.35078 - vertex -0.241784 -0.0676809 -1.34355 - vertex -0.241404 -0.153076 -1.34716 - endloop - endfacet - facet normal 0.127173 0.042432 -0.990972 - outer loop - vertex -0.241404 -0.153076 -1.34716 - vertex -0.241784 -0.0676809 -1.34355 - vertex -0.157272 -0.0686304 -1.33275 - endloop - endfacet - facet normal 0.126626 0.0429848 -0.991019 - outer loop - vertex -0.241404 -0.153076 -1.34716 - vertex -0.157272 -0.0686304 -1.33275 - vertex -0.156517 -0.153076 -1.33632 - endloop - endfacet - facet normal 0.212842 0.0431274 -0.976134 - outer loop - vertex -0.156517 -0.153076 -1.33632 - vertex -0.157272 -0.0686304 -1.33275 - vertex -0.0745271 -0.0699596 -1.31477 - endloop - endfacet - facet normal 0.212067 0.0439261 -0.976267 - outer loop - vertex -0.156517 -0.153076 -1.33632 - vertex -0.0745271 -0.0699596 -1.31477 - vertex -0.0734048 -0.153076 -1.31826 - endloop - endfacet - facet normal 0.299975 0.0441314 -0.952926 - outer loop - vertex -0.0734048 -0.153076 -1.31826 - vertex -0.0745271 -0.0699596 -1.31477 - vertex 0.00556793 -0.0714787 -1.28962 - endloop - endfacet - facet normal 0.299079 0.0450813 -0.953163 - outer loop - vertex -0.0734048 -0.153076 -1.31826 - vertex 0.00556793 -0.0714787 -1.28962 - vertex 0.00704463 -0.153076 -1.29302 - endloop - endfacet - facet normal 0.388908 0.0453335 -0.920161 - outer loop - vertex 0.00704463 -0.153076 -1.29302 - vertex 0.00556793 -0.0714787 -1.28962 - vertex 0.0821297 -0.0729978 -1.25734 - endloop - endfacet - facet normal 0.388007 0.0463252 -0.920491 - outer loop - vertex 0.00704463 -0.153076 -1.29302 - vertex 0.0821297 -0.0729978 -1.25734 - vertex 0.0839438 -0.153076 -1.2606 - endloop - endfacet - facet normal 0.479506 0.046596 -0.8763 - outer loop - vertex 0.0839438 -0.153076 -1.2606 - vertex 0.0821297 -0.0729978 -1.25734 - vertex 0.154275 -0.0743271 -1.21793 - endloop - endfacet - facet normal 0.478724 0.0475002 -0.87668 - outer loop - vertex 0.0839438 -0.153076 -1.2606 - vertex 0.154275 -0.0743271 -1.21793 - vertex 0.156405 -0.153076 -1.22104 - endloop - endfacet - facet normal 0.570947 0.0477454 -0.819597 - outer loop - vertex 0.156405 -0.153076 -1.22104 - vertex 0.154275 -0.0743271 -1.21793 - vertex 0.22112 -0.0752765 -1.17142 - endloop - endfacet - facet normal 0.570404 0.0484131 -0.819936 - outer loop - vertex 0.156405 -0.153076 -1.22104 - vertex 0.22112 -0.0752765 -1.17142 - vertex 0.223541 -0.153076 -1.17433 - endloop - endfacet - facet normal 0.661499 0.0485717 -0.748372 - outer loop - vertex 0.223541 -0.153076 -1.17433 - vertex 0.22112 -0.0752765 -1.17142 - vertex 0.281783 -0.0756563 -1.11783 - endloop - endfacet - facet normal 0.661295 0.0488431 -0.748534 - outer loop - vertex 0.223541 -0.153076 -1.17433 - vertex 0.281783 -0.0756563 -1.11783 - vertex 0.284465 -0.153076 -1.12051 - endloop - endfacet - facet normal 0.0429849 0.126626 -0.991019 - outer loop - vertex -0.327179 -0.0673011 -1.34716 - vertex -0.327179 0.0175861 -1.33632 - vertex -0.242733 0.0168307 -1.33275 - endloop - endfacet - facet normal 0.042432 0.127173 -0.990972 - outer loop - vertex -0.327179 -0.0673011 -1.34716 - vertex -0.242733 0.0168307 -1.33275 - vertex -0.241784 -0.0676809 -1.34355 - endloop - endfacet - facet normal 0.128457 0.127188 -0.983525 - outer loop - vertex -0.241784 -0.0676809 -1.34355 - vertex -0.242733 0.0168307 -1.33275 - vertex -0.159172 0.0149314 -1.32208 - endloop - endfacet - facet normal 0.127188 0.128457 -0.983525 - outer loop - vertex -0.241784 -0.0676809 -1.34355 - vertex -0.159172 0.0149314 -1.32208 - vertex -0.157272 -0.0686304 -1.33275 - endloop - endfacet - facet normal 0.214212 0.128491 -0.968299 - outer loop - vertex -0.157272 -0.0686304 -1.33275 - vertex -0.159172 0.0149314 -1.32208 - vertex -0.0773774 0.0122545 -1.30434 - endloop - endfacet - facet normal 0.212567 0.130164 -0.968438 - outer loop - vertex -0.157272 -0.0686304 -1.33275 - vertex -0.0773774 0.0122545 -1.30434 - vertex -0.0745271 -0.0699596 -1.31477 - endloop - endfacet - facet normal 0.300882 0.13022 -0.944729 - outer loop - vertex -0.0745271 -0.0699596 -1.31477 - vertex -0.0773774 0.0122545 -1.30434 - vertex 0.00176526 0.00916668 -1.27956 - endloop - endfacet - facet normal 0.299162 0.132011 -0.945027 - outer loop - vertex -0.0745271 -0.0699596 -1.31477 - vertex 0.00176526 0.00916668 -1.27956 - vertex 0.00556793 -0.0714787 -1.28962 - endloop - endfacet - facet normal 0.388847 0.132093 -0.911784 - outer loop - vertex 0.00556793 -0.0714787 -1.28962 - vertex 0.00176526 0.00916668 -1.27956 - vertex 0.0773727 0.00603451 -1.24777 - endloop - endfacet - facet normal 0.387305 0.133746 -0.912199 - outer loop - vertex 0.00556793 -0.0714787 -1.28962 - vertex 0.0773727 0.00603451 -1.24777 - vertex 0.0821297 -0.0729978 -1.25734 - endloop - endfacet - facet normal 0.47815 0.133865 -0.868017 - outer loop - vertex 0.0821297 -0.0729978 -1.25734 - vertex 0.0773727 0.00603451 -1.24777 - vertex 0.148579 0.00326891 -1.20897 - endloop - endfacet - facet normal 0.476878 0.135278 -0.868497 - outer loop - vertex 0.0821297 -0.0729978 -1.25734 - vertex 0.148579 0.00326891 -1.20897 - vertex 0.154275 -0.0743271 -1.21793 - endloop - endfacet - facet normal 0.567993 0.135423 -0.811816 - outer loop - vertex 0.154275 -0.0743271 -1.21793 - vertex 0.148579 0.00326891 -1.20897 - vertex 0.214517 0.0012808 -1.16317 - endloop - endfacet - facet normal 0.567105 0.136455 -0.812264 - outer loop - vertex 0.154275 -0.0743271 -1.21793 - vertex 0.214517 0.0012808 -1.16317 - vertex 0.22112 -0.0752765 -1.17142 - endloop - endfacet - facet normal 0.6567 0.136575 -0.741682 - outer loop - vertex 0.22112 -0.0752765 -1.17142 - vertex 0.214517 0.0012808 -1.16317 - vertex 0.274322 0.000481101 -1.11037 - endloop - endfacet - facet normal 0.656347 0.13701 -0.741914 - outer loop - vertex 0.22112 -0.0752765 -1.17142 - vertex 0.274322 0.000481101 -1.11037 - vertex 0.281783 -0.0756563 -1.11783 - endloop - endfacet - facet normal 0.0439248 0.212067 -0.976268 - outer loop - vertex -0.327179 0.0175861 -1.33632 - vertex -0.327179 0.100698 -1.31826 - vertex -0.244062 0.0995758 -1.31477 - endloop - endfacet - facet normal 0.0431274 0.21284 -0.976135 - outer loop - vertex -0.327179 0.0175861 -1.33632 - vertex -0.244062 0.0995758 -1.31477 - vertex -0.242733 0.0168307 -1.33275 - endloop - endfacet - facet normal 0.130166 0.212566 -0.968438 - outer loop - vertex -0.242733 0.0168307 -1.33275 - vertex -0.244062 0.0995758 -1.31477 - vertex -0.161848 0.0967255 -1.30434 - endloop - endfacet - facet normal 0.128491 0.214212 -0.968299 - outer loop - vertex -0.242733 0.0168307 -1.33275 - vertex -0.161848 0.0967255 -1.30434 - vertex -0.159172 0.0149314 -1.32208 - endloop - endfacet - facet normal 0.215666 0.213702 -0.952796 - outer loop - vertex -0.159172 0.0149314 -1.32208 - vertex -0.161848 0.0967255 -1.30434 - vertex -0.0814388 0.0926641 -1.28705 - endloop - endfacet - facet normal 0.213702 0.215666 -0.952796 - outer loop - vertex -0.159172 0.0149314 -1.32208 - vertex -0.0814388 0.0926641 -1.28705 - vertex -0.0773774 0.0122545 -1.30434 - endloop - endfacet - facet normal 0.301199 0.214972 -0.929014 - outer loop - vertex -0.0773774 0.0122545 -1.30434 - vertex -0.0814388 0.0926641 -1.28705 - vertex -0.00373595 0.0879084 -1.26296 - endloop - endfacet - facet normal 0.299389 0.216819 -0.929169 - outer loop - vertex -0.0773774 0.0122545 -1.30434 - vertex -0.00373595 0.0879084 -1.26296 - vertex 0.00176526 0.00916668 -1.27956 - endloop - endfacet - facet normal 0.387327 0.216027 -0.896276 - outer loop - vertex 0.00176526 0.00916668 -1.27956 - vertex -0.00373595 0.0879084 -1.26296 - vertex 0.0703579 0.0829753 -1.23213 - endloop - endfacet - facet normal 0.385964 0.21745 -0.896519 - outer loop - vertex 0.00176526 0.00916668 -1.27956 - vertex 0.0703579 0.0829753 -1.23213 - vertex 0.0773727 0.00603451 -1.24777 - endloop - endfacet - facet normal 0.474514 0.216707 -0.853155 - outer loop - vertex 0.0773727 0.00603451 -1.24777 - vertex 0.0703579 0.0829753 -1.23213 - vertex 0.140011 0.078559 -1.19451 - endloop - endfacet - facet normal 0.473474 0.217822 -0.853449 - outer loop - vertex 0.0773727 0.00603451 -1.24777 - vertex 0.140011 0.078559 -1.19451 - vertex 0.148579 0.00326891 -1.20897 - endloop - endfacet - facet normal 0.561937 0.217263 -0.798138 - outer loop - vertex 0.148579 0.00326891 -1.20897 - vertex 0.140011 0.078559 -1.19451 - vertex 0.204392 0.0753537 -1.15005 - endloop - endfacet - facet normal 0.561192 0.218085 -0.798437 - outer loop - vertex 0.148579 0.00326891 -1.20897 - vertex 0.204392 0.0753537 -1.15005 - vertex 0.214517 0.0012808 -1.16317 - endloop - endfacet - facet normal 0.647908 0.217805 -0.729915 - outer loop - vertex 0.214517 0.0012808 -1.16317 - vertex 0.204392 0.0753537 -1.15005 - vertex 0.262669 0.0740539 -1.09871 - endloop - endfacet - facet normal 0.647566 0.218198 -0.730102 - outer loop - vertex 0.214517 0.0012808 -1.16317 - vertex 0.262669 0.0740539 -1.09871 - vertex 0.274322 0.000481101 -1.11037 - endloop - endfacet - facet normal 0.04508 0.299079 -0.953163 - outer loop - vertex -0.327179 0.100698 -1.31826 - vertex -0.327179 0.181148 -1.29302 - vertex -0.245582 0.179671 -1.28962 - endloop - endfacet - facet normal 0.0441302 0.299974 -0.952926 - outer loop - vertex -0.327179 0.100698 -1.31826 - vertex -0.245582 0.179671 -1.28962 - vertex -0.244062 0.0995758 -1.31477 - endloop - endfacet - facet normal 0.132014 0.299161 -0.945026 - outer loop - vertex -0.244062 0.0995758 -1.31477 - vertex -0.245582 0.179671 -1.28962 - vertex -0.164936 0.175868 -1.27956 - endloop - endfacet - facet normal 0.130221 0.300883 -0.944728 - outer loop - vertex -0.244062 0.0995758 -1.31477 - vertex -0.164936 0.175868 -1.27956 - vertex -0.161848 0.0967255 -1.30434 - endloop - endfacet - facet normal 0.216817 0.29939 -0.929169 - outer loop - vertex -0.161848 0.0967255 -1.30434 - vertex -0.164936 0.175868 -1.27956 - vertex -0.0861944 0.170367 -1.26296 - endloop - endfacet - facet normal 0.214972 0.301199 -0.929014 - outer loop - vertex -0.161848 0.0967255 -1.30434 - vertex -0.0861944 0.170367 -1.26296 - vertex -0.0814388 0.0926641 -1.28705 - endloop - endfacet - facet normal 0.300575 0.299184 -0.905618 - outer loop - vertex -0.0814388 0.0926641 -1.28705 - vertex -0.0861944 0.170367 -1.26296 - vertex -0.0103082 0.163795 -1.23994 - endloop - endfacet - facet normal 0.299184 0.300575 -0.905618 - outer loop - vertex -0.0814388 0.0926641 -1.28705 - vertex -0.0103082 0.163795 -1.23994 - vertex -0.00373595 0.0879084 -1.26296 - endloop - endfacet - facet normal 0.384239 0.298268 -0.873726 - outer loop - vertex -0.00373595 0.0879084 -1.26296 - vertex -0.0103082 0.163795 -1.23994 - vertex 0.0617706 0.156779 -1.21064 - endloop - endfacet - facet normal 0.383498 0.299024 -0.873793 - outer loop - vertex -0.00373595 0.0879084 -1.26296 - vertex 0.0617706 0.156779 -1.21064 - vertex 0.0703579 0.0829753 -1.23213 - endloop - endfacet - facet normal 0.468718 0.296773 -0.832003 - outer loop - vertex 0.0703579 0.0829753 -1.23213 - vertex 0.0617706 0.156779 -1.21064 - vertex 0.129267 0.15039 -1.1749 - endloop - endfacet - facet normal 0.468247 0.297262 -0.832094 - outer loop - vertex 0.0703579 0.0829753 -1.23213 - vertex 0.129267 0.15039 -1.1749 - vertex 0.140011 0.078559 -1.19451 - endloop - endfacet - facet normal 0.553116 0.295446 -0.778957 - outer loop - vertex 0.140011 0.078559 -1.19451 - vertex 0.129267 0.15039 -1.1749 - vertex 0.191405 0.1457 -1.13255 - endloop - endfacet - facet normal 0.552697 0.295887 -0.779087 - outer loop - vertex 0.140011 0.078559 -1.19451 - vertex 0.191405 0.1457 -1.13255 - vertex 0.204392 0.0753537 -1.15005 - endloop - endfacet - facet normal 0.635595 0.29487 -0.713492 - outer loop - vertex 0.204392 0.0753537 -1.15005 - vertex 0.191405 0.1457 -1.13255 - vertex 0.247411 0.14378 -1.08345 - endloop - endfacet - facet normal 0.635288 0.295197 -0.71363 - outer loop - vertex 0.204392 0.0753537 -1.15005 - vertex 0.247411 0.14378 -1.08345 - vertex 0.262669 0.0740539 -1.09871 - endloop - endfacet - facet normal 0.0463252 0.388007 -0.920491 - outer loop - vertex -0.327179 0.181148 -1.29302 - vertex -0.327179 0.258047 -1.2606 - vertex -0.247101 0.256233 -1.25734 - endloop - endfacet - facet normal 0.0453323 0.388909 -0.92016 - outer loop - vertex -0.327179 0.181148 -1.29302 - vertex -0.247101 0.256233 -1.25734 - vertex -0.245582 0.179671 -1.28962 - endloop - endfacet - facet normal 0.133746 0.387306 -0.912199 - outer loop - vertex -0.245582 0.179671 -1.28962 - vertex -0.247101 0.256233 -1.25734 - vertex -0.168068 0.251476 -1.24777 - endloop - endfacet - facet normal 0.132096 0.388845 -0.911784 - outer loop - vertex -0.245582 0.179671 -1.28962 - vertex -0.168068 0.251476 -1.24777 - vertex -0.164936 0.175868 -1.27956 - endloop - endfacet - facet normal 0.21745 0.385963 -0.89652 - outer loop - vertex -0.164936 0.175868 -1.27956 - vertex -0.168068 0.251476 -1.24777 - vertex -0.0911275 0.244461 -1.23213 - endloop - endfacet - facet normal 0.216026 0.387327 -0.896276 - outer loop - vertex -0.164936 0.175868 -1.27956 - vertex -0.0911275 0.244461 -1.23213 - vertex -0.0861944 0.170367 -1.26296 - endloop - endfacet - facet normal 0.299025 0.383497 -0.873793 - outer loop - vertex -0.0861944 0.170367 -1.26296 - vertex -0.0911275 0.244461 -1.23213 - vertex -0.0173241 0.235873 -1.21064 - endloop - endfacet - facet normal 0.298269 0.384239 -0.873726 - outer loop - vertex -0.0861944 0.170367 -1.26296 - vertex -0.0173241 0.235873 -1.21064 - vertex -0.0103082 0.163795 -1.23994 - endloop - endfacet - facet normal 0.380045 0.379858 -0.84337 - outer loop - vertex -0.0103082 0.163795 -1.23994 - vertex -0.0173241 0.235873 -1.21064 - vertex 0.052296 0.226399 -1.18354 - endloop - endfacet - facet normal 0.379858 0.380045 -0.84337 - outer loop - vertex -0.0103082 0.163795 -1.23994 - vertex 0.052296 0.226399 -1.18354 - vertex 0.0617706 0.156779 -1.21064 - endloop - endfacet - facet normal 0.461367 0.375705 -0.803732 - outer loop - vertex 0.0617706 0.156779 -1.21064 - vertex 0.052296 0.226399 -1.18354 - vertex 0.117041 0.217609 -1.15048 - endloop - endfacet - facet normal 0.461236 0.375838 -0.803746 - outer loop - vertex 0.0617706 0.156779 -1.21064 - vertex 0.117041 0.217609 -1.15048 - vertex 0.129267 0.15039 -1.1749 - endloop - endfacet - facet normal 0.541997 0.372253 -0.753437 - outer loop - vertex 0.129267 0.15039 -1.1749 - vertex 0.117041 0.217609 -1.15048 - vertex 0.176217 0.211078 -1.11114 - endloop - endfacet - facet normal 0.54161 0.372642 -0.753522 - outer loop - vertex 0.129267 0.15039 -1.1749 - vertex 0.176217 0.211078 -1.11114 - vertex 0.191405 0.1457 -1.13255 - endloop - endfacet - facet normal 0.619783 0.370576 -0.691767 - outer loop - vertex 0.191405 0.1457 -1.13255 - vertex 0.176217 0.211078 -1.11114 - vertex 0.229132 0.208376 -1.06518 - endloop - endfacet - facet normal 0.619311 0.371044 -0.691939 - outer loop - vertex 0.191405 0.1457 -1.13255 - vertex 0.229132 0.208376 -1.06518 - vertex 0.247411 0.14378 -1.08345 - endloop - endfacet - facet normal 0.0475003 0.478724 -0.87668 - outer loop - vertex -0.327179 0.258047 -1.2606 - vertex -0.327179 0.330508 -1.22104 - vertex -0.24843 0.328378 -1.21793 - endloop - endfacet - facet normal 0.0465961 0.479506 -0.8763 - outer loop - vertex -0.327179 0.258047 -1.2606 - vertex -0.24843 0.328378 -1.21793 - vertex -0.247101 0.256233 -1.25734 - endloop - endfacet - facet normal 0.135278 0.476878 -0.868497 - outer loop - vertex -0.247101 0.256233 -1.25734 - vertex -0.24843 0.328378 -1.21793 - vertex -0.170834 0.322682 -1.20897 - endloop - endfacet - facet normal 0.133865 0.47815 -0.868017 - outer loop - vertex -0.247101 0.256233 -1.25734 - vertex -0.170834 0.322682 -1.20897 - vertex -0.168068 0.251476 -1.24777 - endloop - endfacet - facet normal 0.217822 0.473474 -0.85345 - outer loop - vertex -0.168068 0.251476 -1.24777 - vertex -0.170834 0.322682 -1.20897 - vertex -0.0955438 0.314114 -1.19451 - endloop - endfacet - facet normal 0.216707 0.474514 -0.853155 - outer loop - vertex -0.168068 0.251476 -1.24777 - vertex -0.0955438 0.314114 -1.19451 - vertex -0.0911275 0.244461 -1.23213 - endloop - endfacet - facet normal 0.297262 0.468247 -0.832094 - outer loop - vertex -0.0911275 0.244461 -1.23213 - vertex -0.0955438 0.314114 -1.19451 - vertex -0.0237126 0.30337 -1.1749 - endloop - endfacet - facet normal 0.296773 0.468718 -0.832003 - outer loop - vertex -0.0911275 0.244461 -1.23213 - vertex -0.0237126 0.30337 -1.1749 - vertex -0.0173241 0.235873 -1.21064 - endloop - endfacet - facet normal 0.375838 0.461236 -0.803746 - outer loop - vertex -0.0173241 0.235873 -1.21064 - vertex -0.0237126 0.30337 -1.1749 - vertex 0.0435067 0.291143 -1.15048 - endloop - endfacet - facet normal 0.375706 0.461367 -0.803732 - outer loop - vertex -0.0173241 0.235873 -1.21064 - vertex 0.0435067 0.291143 -1.15048 - vertex 0.052296 0.226399 -1.18354 - endloop - endfacet - facet normal 0.452545 0.45347 -0.767834 - outer loop - vertex 0.052296 0.226399 -1.18354 - vertex 0.0435067 0.291143 -1.15048 - vertex 0.105262 0.279365 -1.12104 - endloop - endfacet - facet normal 0.45347 0.452545 -0.767834 - outer loop - vertex 0.052296 0.226399 -1.18354 - vertex 0.105262 0.279365 -1.12104 - vertex 0.117041 0.217609 -1.15048 - endloop - endfacet - facet normal 0.527981 0.445418 -0.723076 - outer loop - vertex 0.117041 0.217609 -1.15048 - vertex 0.105262 0.279365 -1.12104 - vertex 0.160703 0.269966 -1.08635 - endloop - endfacet - facet normal 0.529581 0.44384 -0.722877 - outer loop - vertex 0.117041 0.217609 -1.15048 - vertex 0.160703 0.269966 -1.08635 - vertex 0.176217 0.211078 -1.11114 - endloop - endfacet - facet normal 0.601507 0.439351 -0.667204 - outer loop - vertex 0.176217 0.211078 -1.11114 - vertex 0.160703 0.269966 -1.08635 - vertex 0.209244 0.265861 -1.04529 - endloop - endfacet - facet normal 0.601856 0.439021 -0.667105 - outer loop - vertex 0.176217 0.211078 -1.11114 - vertex 0.209244 0.265861 -1.04529 - vertex 0.229132 0.208376 -1.06518 - endloop - endfacet - facet normal 0.0484131 0.570404 -0.819936 - outer loop - vertex -0.327179 0.330508 -1.22104 - vertex -0.327179 0.397644 -1.17433 - vertex -0.249379 0.395223 -1.17142 - endloop - endfacet - facet normal 0.0477455 0.570947 -0.819597 - outer loop - vertex -0.327179 0.330508 -1.22104 - vertex -0.249379 0.395223 -1.17142 - vertex -0.24843 0.328378 -1.21793 - endloop - endfacet - facet normal 0.136455 0.567104 -0.812264 - outer loop - vertex -0.24843 0.328378 -1.21793 - vertex -0.249379 0.395223 -1.17142 - vertex -0.172822 0.38862 -1.16317 - endloop - endfacet - facet normal 0.135423 0.567993 -0.811816 - outer loop - vertex -0.24843 0.328378 -1.21793 - vertex -0.172822 0.38862 -1.16317 - vertex -0.170834 0.322682 -1.20897 - endloop - endfacet - facet normal 0.218085 0.561192 -0.798437 - outer loop - vertex -0.170834 0.322682 -1.20897 - vertex -0.172822 0.38862 -1.16317 - vertex -0.098749 0.378495 -1.15005 - endloop - endfacet - facet normal 0.217264 0.561937 -0.798138 - outer loop - vertex -0.170834 0.322682 -1.20897 - vertex -0.098749 0.378495 -1.15005 - vertex -0.0955438 0.314114 -1.19451 - endloop - endfacet - facet normal 0.295887 0.552697 -0.779087 - outer loop - vertex -0.0955438 0.314114 -1.19451 - vertex -0.098749 0.378495 -1.15005 - vertex -0.0284026 0.365508 -1.13255 - endloop - endfacet - facet normal 0.295446 0.553116 -0.778957 - outer loop - vertex -0.0955438 0.314114 -1.19451 - vertex -0.0284026 0.365508 -1.13255 - vertex -0.0237126 0.30337 -1.1749 - endloop - endfacet - facet normal 0.372644 0.54161 -0.753522 - outer loop - vertex -0.0237126 0.30337 -1.1749 - vertex -0.0284026 0.365508 -1.13255 - vertex 0.0369751 0.350319 -1.11114 - endloop - endfacet - facet normal 0.372254 0.541997 -0.753436 - outer loop - vertex -0.0237126 0.30337 -1.1749 - vertex 0.0369751 0.350319 -1.11114 - vertex 0.0435067 0.291143 -1.15048 - endloop - endfacet - facet normal 0.443839 0.529581 -0.722877 - outer loop - vertex 0.0435067 0.291143 -1.15048 - vertex 0.0369751 0.350319 -1.11114 - vertex 0.0958631 0.334806 -1.08635 - endloop - endfacet - facet normal 0.445418 0.527981 -0.723076 - outer loop - vertex 0.0435067 0.291143 -1.15048 - vertex 0.0958631 0.334806 -1.08635 - vertex 0.105262 0.279365 -1.12104 - endloop - endfacet - facet normal 0.513857 0.515981 -0.685357 - outer loop - vertex 0.105262 0.279365 -1.12104 - vertex 0.0958631 0.334806 -1.08635 - vertex 0.14674 0.320843 -1.05871 - endloop - endfacet - facet normal 0.515982 0.513857 -0.685357 - outer loop - vertex 0.105262 0.279365 -1.12104 - vertex 0.14674 0.320843 -1.05871 - vertex 0.160703 0.269966 -1.08635 - endloop - endfacet - facet normal 0.581828 0.505665 -0.637007 - outer loop - vertex 0.160703 0.269966 -1.08635 - vertex 0.14674 0.320843 -1.05871 - vertex 0.189158 0.31425 -1.0252 - endloop - endfacet - facet normal 0.581622 0.505853 -0.637047 - outer loop - vertex 0.160703 0.269966 -1.08635 - vertex 0.189158 0.31425 -1.0252 - vertex 0.209244 0.265861 -1.04529 - endloop - endfacet - facet normal 0.0488431 0.661295 -0.748534 - outer loop - vertex -0.327179 0.397644 -1.17433 - vertex -0.327179 0.458568 -1.12051 - vertex -0.249759 0.455885 -1.11783 - endloop - endfacet - facet normal 0.0485717 0.661499 -0.748372 - outer loop - vertex -0.327179 0.397644 -1.17433 - vertex -0.249759 0.455885 -1.11783 - vertex -0.249379 0.395223 -1.17142 - endloop - endfacet - facet normal 0.13701 0.656347 -0.741914 - outer loop - vertex -0.249379 0.395223 -1.17142 - vertex -0.249759 0.455885 -1.11783 - vertex -0.173622 0.448425 -1.11037 - endloop - endfacet - facet normal 0.136576 0.6567 -0.741682 - outer loop - vertex -0.249379 0.395223 -1.17142 - vertex -0.173622 0.448425 -1.11037 - vertex -0.172822 0.38862 -1.16317 - endloop - endfacet - facet normal 0.218198 0.647566 -0.730102 - outer loop - vertex -0.172822 0.38862 -1.16317 - vertex -0.173622 0.448425 -1.11037 - vertex -0.100049 0.436772 -1.09871 - endloop - endfacet - facet normal 0.217806 0.647908 -0.729915 - outer loop - vertex -0.172822 0.38862 -1.16317 - vertex -0.100049 0.436772 -1.09871 - vertex -0.098749 0.378495 -1.15005 - endloop - endfacet - facet normal 0.295197 0.635288 -0.71363 - outer loop - vertex -0.098749 0.378495 -1.15005 - vertex -0.100049 0.436772 -1.09871 - vertex -0.0303229 0.421514 -1.08345 - endloop - endfacet - facet normal 0.29487 0.635594 -0.713493 - outer loop - vertex -0.098749 0.378495 -1.15005 - vertex -0.0303229 0.421514 -1.08345 - vertex -0.0284026 0.365508 -1.13255 - endloop - endfacet - facet normal 0.371045 0.619311 -0.691939 - outer loop - vertex -0.0284026 0.365508 -1.13255 - vertex -0.0303229 0.421514 -1.08345 - vertex 0.0342738 0.403235 -1.06518 - endloop - endfacet - facet normal 0.370577 0.619782 -0.691768 - outer loop - vertex -0.0284026 0.365508 -1.13255 - vertex 0.0342738 0.403235 -1.06518 - vertex 0.0369751 0.350319 -1.11114 - endloop - endfacet - facet normal 0.439021 0.601855 -0.667106 - outer loop - vertex 0.0369751 0.350319 -1.11114 - vertex 0.0342738 0.403235 -1.06518 - vertex 0.0917581 0.383347 -1.04529 - endloop - endfacet - facet normal 0.43935 0.601507 -0.667204 - outer loop - vertex 0.0369751 0.350319 -1.11114 - vertex 0.0917581 0.383347 -1.04529 - vertex 0.0958631 0.334806 -1.08635 - endloop - endfacet - facet normal 0.505853 0.581622 -0.637047 - outer loop - vertex 0.0958631 0.334806 -1.08635 - vertex 0.0917581 0.383347 -1.04529 - vertex 0.140147 0.363261 -1.0252 - endloop - endfacet - facet normal 0.505666 0.581828 -0.637007 - outer loop - vertex 0.0958631 0.334806 -1.08635 - vertex 0.140147 0.363261 -1.0252 - vertex 0.14674 0.320843 -1.05871 - endloop - endfacet - facet normal 0.568022 0.562734 -0.600568 - outer loop - vertex 0.14674 0.320843 -1.05871 - vertex 0.140147 0.363261 -1.0252 - vertex 0.173079 0.347181 -1.00912 - endloop - endfacet - facet normal 0.562734 0.568022 -0.600568 - outer loop - vertex 0.14674 0.320843 -1.05871 - vertex 0.173079 0.347181 -1.00912 - vertex 0.189158 0.31425 -1.0252 - endloop - endfacet - facet normal 0.0421465 -0.0423597 -0.998213 - outer loop - vertex -0.327179 -0.153076 -1.35078 - vertex -0.241404 -0.153076 -1.34716 - vertex -0.241784 -0.238471 -1.34355 - endloop - endfacet - facet normal 0.0423597 -0.0421465 -0.998213 - outer loop - vertex -0.327179 -0.153076 -1.35078 - vertex -0.241784 -0.238471 -1.34355 - vertex -0.327179 -0.238851 -1.34716 - endloop - endfacet - facet normal 0.042432 -0.127173 -0.990972 - outer loop - vertex -0.327179 -0.238851 -1.34716 - vertex -0.241784 -0.238471 -1.34355 - vertex -0.242733 -0.322982 -1.33275 - endloop - endfacet - facet normal 0.0429849 -0.126626 -0.991019 - outer loop - vertex -0.327179 -0.238851 -1.34716 - vertex -0.242733 -0.322982 -1.33275 - vertex -0.327179 -0.323738 -1.33632 - endloop - endfacet - facet normal 0.0431275 -0.212842 -0.976134 - outer loop - vertex -0.327179 -0.323738 -1.33632 - vertex -0.242733 -0.322982 -1.33275 - vertex -0.244063 -0.405728 -1.31477 - endloop - endfacet - facet normal 0.0439262 -0.212067 -0.976267 - outer loop - vertex -0.327179 -0.323738 -1.33632 - vertex -0.244063 -0.405728 -1.31477 - vertex -0.327179 -0.40685 -1.31826 - endloop - endfacet - facet normal 0.0441315 -0.299975 -0.952926 - outer loop - vertex -0.327179 -0.40685 -1.31826 - vertex -0.244063 -0.405728 -1.31477 - vertex -0.245582 -0.485823 -1.28962 - endloop - endfacet - facet normal 0.0450813 -0.299079 -0.953163 - outer loop - vertex -0.327179 -0.40685 -1.31826 - vertex -0.245582 -0.485823 -1.28962 - vertex -0.327179 -0.487299 -1.29302 - endloop - endfacet - facet normal 0.0453335 -0.388907 -0.920161 - outer loop - vertex -0.327179 -0.487299 -1.29302 - vertex -0.245582 -0.485823 -1.28962 - vertex -0.247101 -0.562384 -1.25734 - endloop - endfacet - facet normal 0.0463251 -0.388007 -0.920492 - outer loop - vertex -0.327179 -0.487299 -1.29302 - vertex -0.247101 -0.562384 -1.25734 - vertex -0.327179 -0.564198 -1.2606 - endloop - endfacet - facet normal 0.0465959 -0.479507 -0.8763 - outer loop - vertex -0.327179 -0.564198 -1.2606 - vertex -0.247101 -0.562384 -1.25734 - vertex -0.24843 -0.63453 -1.21793 - endloop - endfacet - facet normal 0.0475001 -0.478724 -0.876679 - outer loop - vertex -0.327179 -0.564198 -1.2606 - vertex -0.24843 -0.63453 -1.21793 - vertex -0.327179 -0.63666 -1.22104 - endloop - endfacet - facet normal 0.0477452 -0.570947 -0.819597 - outer loop - vertex -0.327179 -0.63666 -1.22104 - vertex -0.24843 -0.63453 -1.21793 - vertex -0.249379 -0.701375 -1.17142 - endloop - endfacet - facet normal 0.0484134 -0.570404 -0.819936 - outer loop - vertex -0.327179 -0.63666 -1.22104 - vertex -0.249379 -0.701375 -1.17142 - vertex -0.327179 -0.703796 -1.17433 - endloop - endfacet - facet normal 0.0485719 -0.661499 -0.748372 - outer loop - vertex -0.327179 -0.703796 -1.17433 - vertex -0.249379 -0.701375 -1.17142 - vertex -0.249759 -0.762037 -1.11783 - endloop - endfacet - facet normal 0.0488436 -0.661295 -0.748534 - outer loop - vertex -0.327179 -0.703796 -1.17433 - vertex -0.249759 -0.762037 -1.11783 - vertex -0.327179 -0.764719 -1.12051 - endloop - endfacet - facet normal 0.126626 -0.0429849 -0.991019 - outer loop - vertex -0.241404 -0.153076 -1.34716 - vertex -0.156517 -0.153076 -1.33632 - vertex -0.157272 -0.237521 -1.33275 - endloop - endfacet - facet normal 0.127173 -0.042432 -0.990972 - outer loop - vertex -0.241404 -0.153076 -1.34716 - vertex -0.157272 -0.237521 -1.33275 - vertex -0.241784 -0.238471 -1.34355 - endloop - endfacet - facet normal 0.127188 -0.128457 -0.983525 - outer loop - vertex -0.241784 -0.238471 -1.34355 - vertex -0.157272 -0.237521 -1.33275 - vertex -0.159172 -0.321083 -1.32208 - endloop - endfacet - facet normal 0.128457 -0.127188 -0.983525 - outer loop - vertex -0.241784 -0.238471 -1.34355 - vertex -0.159172 -0.321083 -1.32208 - vertex -0.242733 -0.322982 -1.33275 - endloop - endfacet - facet normal 0.128491 -0.214212 -0.968299 - outer loop - vertex -0.242733 -0.322982 -1.33275 - vertex -0.159172 -0.321083 -1.32208 - vertex -0.161848 -0.402877 -1.30434 - endloop - endfacet - facet normal 0.130164 -0.212567 -0.968438 - outer loop - vertex -0.242733 -0.322982 -1.33275 - vertex -0.161848 -0.402877 -1.30434 - vertex -0.244063 -0.405728 -1.31477 - endloop - endfacet - facet normal 0.13022 -0.300882 -0.944729 - outer loop - vertex -0.244063 -0.405728 -1.31477 - vertex -0.161848 -0.402877 -1.30434 - vertex -0.164936 -0.48202 -1.27956 - endloop - endfacet - facet normal 0.132011 -0.299162 -0.945027 - outer loop - vertex -0.244063 -0.405728 -1.31477 - vertex -0.164936 -0.48202 -1.27956 - vertex -0.245582 -0.485823 -1.28962 - endloop - endfacet - facet normal 0.132093 -0.388847 -0.911784 - outer loop - vertex -0.245582 -0.485823 -1.28962 - vertex -0.164936 -0.48202 -1.27956 - vertex -0.168068 -0.557627 -1.24777 - endloop - endfacet - facet normal 0.133746 -0.387304 -0.912199 - outer loop - vertex -0.245582 -0.485823 -1.28962 - vertex -0.168068 -0.557627 -1.24777 - vertex -0.247101 -0.562384 -1.25734 - endloop - endfacet - facet normal 0.133865 -0.47815 -0.868017 - outer loop - vertex -0.247101 -0.562384 -1.25734 - vertex -0.168068 -0.557627 -1.24777 - vertex -0.170834 -0.628833 -1.20897 - endloop - endfacet - facet normal 0.135277 -0.476878 -0.868497 - outer loop - vertex -0.247101 -0.562384 -1.25734 - vertex -0.170834 -0.628833 -1.20897 - vertex -0.24843 -0.63453 -1.21793 - endloop - endfacet - facet normal 0.135422 -0.567993 -0.811816 - outer loop - vertex -0.24843 -0.63453 -1.21793 - vertex -0.170834 -0.628833 -1.20897 - vertex -0.172822 -0.694772 -1.16317 - endloop - endfacet - facet normal 0.136454 -0.567105 -0.812264 - outer loop - vertex -0.24843 -0.63453 -1.21793 - vertex -0.172822 -0.694772 -1.16317 - vertex -0.249379 -0.701375 -1.17142 - endloop - endfacet - facet normal 0.136575 -0.6567 -0.741682 - outer loop - vertex -0.249379 -0.701375 -1.17142 - vertex -0.172822 -0.694772 -1.16317 - vertex -0.173622 -0.754577 -1.11037 - endloop - endfacet - facet normal 0.137009 -0.656347 -0.741914 - outer loop - vertex -0.249379 -0.701375 -1.17142 - vertex -0.173622 -0.754577 -1.11037 - vertex -0.249759 -0.762037 -1.11783 - endloop - endfacet - facet normal 0.212067 -0.0439248 -0.976268 - outer loop - vertex -0.156517 -0.153076 -1.33632 - vertex -0.0734048 -0.153076 -1.31826 - vertex -0.0745272 -0.236192 -1.31477 - endloop - endfacet - facet normal 0.21284 -0.0431274 -0.976135 - outer loop - vertex -0.156517 -0.153076 -1.33632 - vertex -0.0745272 -0.236192 -1.31477 - vertex -0.157272 -0.237521 -1.33275 - endloop - endfacet - facet normal 0.212566 -0.130166 -0.968438 - outer loop - vertex -0.157272 -0.237521 -1.33275 - vertex -0.0745272 -0.236192 -1.31477 - vertex -0.0773775 -0.318406 -1.30434 - endloop - endfacet - facet normal 0.214212 -0.128491 -0.968299 - outer loop - vertex -0.157272 -0.237521 -1.33275 - vertex -0.0773775 -0.318406 -1.30434 - vertex -0.159172 -0.321083 -1.32208 - endloop - endfacet - facet normal 0.213702 -0.215667 -0.952796 - outer loop - vertex -0.159172 -0.321083 -1.32208 - vertex -0.0773775 -0.318406 -1.30434 - vertex -0.0814389 -0.398816 -1.28705 - endloop - endfacet - facet normal 0.215666 -0.213702 -0.952796 - outer loop - vertex -0.159172 -0.321083 -1.32208 - vertex -0.0814389 -0.398816 -1.28705 - vertex -0.161848 -0.402877 -1.30434 - endloop - endfacet - facet normal 0.214972 -0.301199 -0.929014 - outer loop - vertex -0.161848 -0.402877 -1.30434 - vertex -0.0814389 -0.398816 -1.28705 - vertex -0.0861945 -0.476519 -1.26296 - endloop - endfacet - facet normal 0.216819 -0.299389 -0.929169 - outer loop - vertex -0.161848 -0.402877 -1.30434 - vertex -0.0861945 -0.476519 -1.26296 - vertex -0.164936 -0.48202 -1.27956 - endloop - endfacet - facet normal 0.216027 -0.387327 -0.896276 - outer loop - vertex -0.164936 -0.48202 -1.27956 - vertex -0.0861945 -0.476519 -1.26296 - vertex -0.0911277 -0.550613 -1.23213 - endloop - endfacet - facet normal 0.21745 -0.385964 -0.896519 - outer loop - vertex -0.164936 -0.48202 -1.27956 - vertex -0.0911277 -0.550613 -1.23213 - vertex -0.168068 -0.557627 -1.24777 - endloop - endfacet - facet normal 0.216707 -0.474514 -0.853155 - outer loop - vertex -0.168068 -0.557627 -1.24777 - vertex -0.0911277 -0.550613 -1.23213 - vertex -0.095544 -0.620266 -1.19451 - endloop - endfacet - facet normal 0.217822 -0.473473 -0.85345 - outer loop - vertex -0.168068 -0.557627 -1.24777 - vertex -0.095544 -0.620266 -1.19451 - vertex -0.170834 -0.628833 -1.20897 - endloop - endfacet - facet normal 0.217264 -0.561937 -0.798138 - outer loop - vertex -0.170834 -0.628833 -1.20897 - vertex -0.095544 -0.620266 -1.19451 - vertex -0.0987492 -0.684647 -1.15005 - endloop - endfacet - facet normal 0.218085 -0.561192 -0.798437 - outer loop - vertex -0.170834 -0.628833 -1.20897 - vertex -0.0987492 -0.684647 -1.15005 - vertex -0.172822 -0.694772 -1.16317 - endloop - endfacet - facet normal 0.217805 -0.647908 -0.729915 - outer loop - vertex -0.172822 -0.694772 -1.16317 - vertex -0.0987492 -0.684647 -1.15005 - vertex -0.100049 -0.742924 -1.09871 - endloop - endfacet - facet normal 0.218197 -0.647566 -0.730101 - outer loop - vertex -0.172822 -0.694772 -1.16317 - vertex -0.100049 -0.742924 -1.09871 - vertex -0.173622 -0.754577 -1.11037 - endloop - endfacet - facet normal 0.299079 -0.04508 -0.953163 - outer loop - vertex -0.0734048 -0.153076 -1.31826 - vertex 0.00704463 -0.153076 -1.29302 - vertex 0.00556791 -0.234673 -1.28962 - endloop - endfacet - facet normal 0.299974 -0.0441302 -0.952926 - outer loop - vertex -0.0734048 -0.153076 -1.31826 - vertex 0.00556791 -0.234673 -1.28962 - vertex -0.0745272 -0.236192 -1.31477 - endloop - endfacet - facet normal 0.299161 -0.132014 -0.945026 - outer loop - vertex -0.0745272 -0.236192 -1.31477 - vertex 0.00556791 -0.234673 -1.28962 - vertex 0.0017652 -0.315319 -1.27956 - endloop - endfacet - facet normal 0.300883 -0.130221 -0.944728 - outer loop - vertex -0.0745272 -0.236192 -1.31477 - vertex 0.0017652 -0.315319 -1.27956 - vertex -0.0773775 -0.318406 -1.30434 - endloop - endfacet - facet normal 0.29939 -0.216818 -0.929169 - outer loop - vertex -0.0773775 -0.318406 -1.30434 - vertex 0.0017652 -0.315319 -1.27956 - vertex -0.00373603 -0.39406 -1.26296 - endloop - endfacet - facet normal 0.301199 -0.214972 -0.929014 - outer loop - vertex -0.0773775 -0.318406 -1.30434 - vertex -0.00373603 -0.39406 -1.26296 - vertex -0.0814389 -0.398816 -1.28705 - endloop - endfacet - facet normal 0.299184 -0.300575 -0.905618 - outer loop - vertex -0.0814389 -0.398816 -1.28705 - vertex -0.00373603 -0.39406 -1.26296 - vertex -0.0103084 -0.469946 -1.23994 - endloop - endfacet - facet normal 0.300574 -0.299184 -0.905618 - outer loop - vertex -0.0814389 -0.398816 -1.28705 - vertex -0.0103084 -0.469946 -1.23994 - vertex -0.0861945 -0.476519 -1.26296 - endloop - endfacet - facet normal 0.298268 -0.384239 -0.873726 - outer loop - vertex -0.0861945 -0.476519 -1.26296 - vertex -0.0103084 -0.469946 -1.23994 - vertex -0.0173243 -0.542025 -1.21064 - endloop - endfacet - facet normal 0.299024 -0.383498 -0.873793 - outer loop - vertex -0.0861945 -0.476519 -1.26296 - vertex -0.0173243 -0.542025 -1.21064 - vertex -0.0911277 -0.550613 -1.23213 - endloop - endfacet - facet normal 0.296773 -0.468718 -0.832003 - outer loop - vertex -0.0911277 -0.550613 -1.23213 - vertex -0.0173243 -0.542025 -1.21064 - vertex -0.0237128 -0.609522 -1.1749 - endloop - endfacet - facet normal 0.297261 -0.468247 -0.832094 - outer loop - vertex -0.0911277 -0.550613 -1.23213 - vertex -0.0237128 -0.609522 -1.1749 - vertex -0.095544 -0.620266 -1.19451 - endloop - endfacet - facet normal 0.295445 -0.553116 -0.778958 - outer loop - vertex -0.095544 -0.620266 -1.19451 - vertex -0.0237128 -0.609522 -1.1749 - vertex -0.0284028 -0.67166 -1.13255 - endloop - endfacet - facet normal 0.295886 -0.552697 -0.779088 - outer loop - vertex -0.095544 -0.620266 -1.19451 - vertex -0.0284028 -0.67166 -1.13255 - vertex -0.0987492 -0.684647 -1.15005 - endloop - endfacet - facet normal 0.294869 -0.635595 -0.713492 - outer loop - vertex -0.0987492 -0.684647 -1.15005 - vertex -0.0284028 -0.67166 -1.13255 - vertex -0.0303231 -0.727665 -1.08345 - endloop - endfacet - facet normal 0.295197 -0.635288 -0.71363 - outer loop - vertex -0.0987492 -0.684647 -1.15005 - vertex -0.0303231 -0.727665 -1.08345 - vertex -0.100049 -0.742924 -1.09871 - endloop - endfacet - facet normal 0.388007 -0.0463253 -0.920491 - outer loop - vertex 0.00704463 -0.153076 -1.29302 - vertex 0.0839438 -0.153076 -1.2606 - vertex 0.0821297 -0.233154 -1.25734 - endloop - endfacet - facet normal 0.388909 -0.0453323 -0.92016 - outer loop - vertex 0.00704463 -0.153076 -1.29302 - vertex 0.0821297 -0.233154 -1.25734 - vertex 0.00556791 -0.234673 -1.28962 - endloop - endfacet - facet normal 0.387306 -0.133746 -0.912199 - outer loop - vertex 0.00556791 -0.234673 -1.28962 - vertex 0.0821297 -0.233154 -1.25734 - vertex 0.0773726 -0.312186 -1.24777 - endloop - endfacet - facet normal 0.388845 -0.132096 -0.911784 - outer loop - vertex 0.00556791 -0.234673 -1.28962 - vertex 0.0773726 -0.312186 -1.24777 - vertex 0.0017652 -0.315319 -1.27956 - endloop - endfacet - facet normal 0.385963 -0.21745 -0.89652 - outer loop - vertex 0.0017652 -0.315319 -1.27956 - vertex 0.0773726 -0.312186 -1.24777 - vertex 0.0703578 -0.389127 -1.23213 - endloop - endfacet - facet normal 0.387327 -0.216026 -0.896276 - outer loop - vertex 0.0017652 -0.315319 -1.27956 - vertex 0.0703578 -0.389127 -1.23213 - vertex -0.00373603 -0.39406 -1.26296 - endloop - endfacet - facet normal 0.383497 -0.299025 -0.873793 - outer loop - vertex -0.00373603 -0.39406 -1.26296 - vertex 0.0703578 -0.389127 -1.23213 - vertex 0.0617705 -0.462931 -1.21064 - endloop - endfacet - facet normal 0.384239 -0.298268 -0.873726 - outer loop - vertex -0.00373603 -0.39406 -1.26296 - vertex 0.0617705 -0.462931 -1.21064 - vertex -0.0103084 -0.469946 -1.23994 - endloop - endfacet - facet normal 0.379858 -0.380045 -0.84337 - outer loop - vertex -0.0103084 -0.469946 -1.23994 - vertex 0.0617705 -0.462931 -1.21064 - vertex 0.0522959 -0.532551 -1.18354 - endloop - endfacet - facet normal 0.380045 -0.379858 -0.84337 - outer loop - vertex -0.0103084 -0.469946 -1.23994 - vertex 0.0522959 -0.532551 -1.18354 - vertex -0.0173243 -0.542025 -1.21064 - endloop - endfacet - facet normal 0.375706 -0.461367 -0.803733 - outer loop - vertex -0.0173243 -0.542025 -1.21064 - vertex 0.0522959 -0.532551 -1.18354 - vertex 0.0435065 -0.597295 -1.15048 - endloop - endfacet - facet normal 0.375838 -0.461236 -0.803746 - outer loop - vertex -0.0173243 -0.542025 -1.21064 - vertex 0.0435065 -0.597295 -1.15048 - vertex -0.0237128 -0.609522 -1.1749 - endloop - endfacet - facet normal 0.372253 -0.541996 -0.753437 - outer loop - vertex -0.0237128 -0.609522 -1.1749 - vertex 0.0435065 -0.597295 -1.15048 - vertex 0.0369749 -0.656471 -1.11114 - endloop - endfacet - facet normal 0.372642 -0.54161 -0.753523 - outer loop - vertex -0.0237128 -0.609522 -1.1749 - vertex 0.0369749 -0.656471 -1.11114 - vertex -0.0284028 -0.67166 -1.13255 - endloop - endfacet - facet normal 0.370576 -0.619783 -0.691767 - outer loop - vertex -0.0284028 -0.67166 -1.13255 - vertex 0.0369749 -0.656471 -1.11114 - vertex 0.0342735 -0.709387 -1.06518 - endloop - endfacet - facet normal 0.371044 -0.619312 -0.691939 - outer loop - vertex -0.0284028 -0.67166 -1.13255 - vertex 0.0342735 -0.709387 -1.06518 - vertex -0.0303231 -0.727665 -1.08345 - endloop - endfacet - facet normal 0.478724 -0.0475003 -0.87668 - outer loop - vertex 0.0839438 -0.153076 -1.2606 - vertex 0.156405 -0.153076 -1.22104 - vertex 0.154275 -0.231825 -1.21793 - endloop - endfacet - facet normal 0.479506 -0.0465961 -0.8763 - outer loop - vertex 0.0839438 -0.153076 -1.2606 - vertex 0.154275 -0.231825 -1.21793 - vertex 0.0821297 -0.233154 -1.25734 - endloop - endfacet - facet normal 0.476878 -0.135278 -0.868497 - outer loop - vertex 0.0821297 -0.233154 -1.25734 - vertex 0.154275 -0.231825 -1.21793 - vertex 0.148579 -0.309421 -1.20897 - endloop - endfacet - facet normal 0.47815 -0.133865 -0.868017 - outer loop - vertex 0.0821297 -0.233154 -1.25734 - vertex 0.148579 -0.309421 -1.20897 - vertex 0.0773726 -0.312186 -1.24777 - endloop - endfacet - facet normal 0.473474 -0.217822 -0.853449 - outer loop - vertex 0.0773726 -0.312186 -1.24777 - vertex 0.148579 -0.309421 -1.20897 - vertex 0.140011 -0.384711 -1.19451 - endloop - endfacet - facet normal 0.474514 -0.216707 -0.853155 - outer loop - vertex 0.0773726 -0.312186 -1.24777 - vertex 0.140011 -0.384711 -1.19451 - vertex 0.0703578 -0.389127 -1.23213 - endloop - endfacet - facet normal 0.468247 -0.297262 -0.832094 - outer loop - vertex 0.0703578 -0.389127 -1.23213 - vertex 0.140011 -0.384711 -1.19451 - vertex 0.129267 -0.456542 -1.1749 - endloop - endfacet - facet normal 0.468718 -0.296773 -0.832003 - outer loop - vertex 0.0703578 -0.389127 -1.23213 - vertex 0.129267 -0.456542 -1.1749 - vertex 0.0617705 -0.462931 -1.21064 - endloop - endfacet - facet normal 0.461236 -0.375838 -0.803746 - outer loop - vertex 0.0617705 -0.462931 -1.21064 - vertex 0.129267 -0.456542 -1.1749 - vertex 0.11704 -0.523761 -1.15048 - endloop - endfacet - facet normal 0.461367 -0.375706 -0.803732 - outer loop - vertex 0.0617705 -0.462931 -1.21064 - vertex 0.11704 -0.523761 -1.15048 - vertex 0.0522959 -0.532551 -1.18354 - endloop - endfacet - facet normal 0.453469 -0.452544 -0.767834 - outer loop - vertex 0.0522959 -0.532551 -1.18354 - vertex 0.11704 -0.523761 -1.15048 - vertex 0.105262 -0.585517 -1.12104 - endloop - endfacet - facet normal 0.452545 -0.453469 -0.767834 - outer loop - vertex 0.0522959 -0.532551 -1.18354 - vertex 0.105262 -0.585517 -1.12104 - vertex 0.0435065 -0.597295 -1.15048 - endloop - endfacet - facet normal 0.445417 -0.527981 -0.723076 - outer loop - vertex 0.0435065 -0.597295 -1.15048 - vertex 0.105262 -0.585517 -1.12104 - vertex 0.0958629 -0.640958 -1.08635 - endloop - endfacet - facet normal 0.44384 -0.52958 -0.722877 - outer loop - vertex 0.0435065 -0.597295 -1.15048 - vertex 0.0958629 -0.640958 -1.08635 - vertex 0.0369749 -0.656471 -1.11114 - endloop - endfacet - facet normal 0.439351 -0.601507 -0.667203 - outer loop - vertex 0.0369749 -0.656471 -1.11114 - vertex 0.0958629 -0.640958 -1.08635 - vertex 0.0917579 -0.689499 -1.04529 - endloop - endfacet - facet normal 0.439022 -0.601856 -0.667105 - outer loop - vertex 0.0369749 -0.656471 -1.11114 - vertex 0.0917579 -0.689499 -1.04529 - vertex 0.0342735 -0.709387 -1.06518 - endloop - endfacet - facet normal 0.570404 -0.0484132 -0.819936 - outer loop - vertex 0.156405 -0.153076 -1.22104 - vertex 0.223541 -0.153076 -1.17433 - vertex 0.22112 -0.230875 -1.17142 - endloop - endfacet - facet normal 0.570947 -0.0477455 -0.819597 - outer loop - vertex 0.156405 -0.153076 -1.22104 - vertex 0.22112 -0.230875 -1.17142 - vertex 0.154275 -0.231825 -1.21793 - endloop - endfacet - facet normal 0.567105 -0.136455 -0.812264 - outer loop - vertex 0.154275 -0.231825 -1.21793 - vertex 0.22112 -0.230875 -1.17142 - vertex 0.214517 -0.307433 -1.16317 - endloop - endfacet - facet normal 0.567993 -0.135423 -0.811816 - outer loop - vertex 0.154275 -0.231825 -1.21793 - vertex 0.214517 -0.307433 -1.16317 - vertex 0.148579 -0.309421 -1.20897 - endloop - endfacet - facet normal 0.561192 -0.218085 -0.798437 - outer loop - vertex 0.148579 -0.309421 -1.20897 - vertex 0.214517 -0.307433 -1.16317 - vertex 0.204392 -0.381506 -1.15005 - endloop - endfacet - facet normal 0.561937 -0.217264 -0.798138 - outer loop - vertex 0.148579 -0.309421 -1.20897 - vertex 0.204392 -0.381506 -1.15005 - vertex 0.140011 -0.384711 -1.19451 - endloop - endfacet - facet normal 0.552697 -0.295887 -0.779087 - outer loop - vertex 0.140011 -0.384711 -1.19451 - vertex 0.204392 -0.381506 -1.15005 - vertex 0.191405 -0.451852 -1.13255 - endloop - endfacet - facet normal 0.553116 -0.295446 -0.778957 - outer loop - vertex 0.140011 -0.384711 -1.19451 - vertex 0.191405 -0.451852 -1.13255 - vertex 0.129267 -0.456542 -1.1749 - endloop - endfacet - facet normal 0.54161 -0.372644 -0.753522 - outer loop - vertex 0.129267 -0.456542 -1.1749 - vertex 0.191405 -0.451852 -1.13255 - vertex 0.176216 -0.51723 -1.11114 - endloop - endfacet - facet normal 0.541997 -0.372253 -0.753436 - outer loop - vertex 0.129267 -0.456542 -1.1749 - vertex 0.176216 -0.51723 -1.11114 - vertex 0.11704 -0.523761 -1.15048 - endloop - endfacet - facet normal 0.529582 -0.443839 -0.722877 - outer loop - vertex 0.11704 -0.523761 -1.15048 - vertex 0.176216 -0.51723 -1.11114 - vertex 0.160703 -0.576118 -1.08635 - endloop - endfacet - facet normal 0.527982 -0.445417 -0.723076 - outer loop - vertex 0.11704 -0.523761 -1.15048 - vertex 0.160703 -0.576118 -1.08635 - vertex 0.105262 -0.585517 -1.12104 - endloop - endfacet - facet normal 0.515982 -0.513857 -0.685357 - outer loop - vertex 0.105262 -0.585517 -1.12104 - vertex 0.160703 -0.576118 -1.08635 - vertex 0.14674 -0.626995 -1.05871 - endloop - endfacet - facet normal 0.513857 -0.515982 -0.685357 - outer loop - vertex 0.105262 -0.585517 -1.12104 - vertex 0.14674 -0.626995 -1.05871 - vertex 0.0958629 -0.640958 -1.08635 - endloop - endfacet - facet normal 0.505666 -0.581828 -0.637007 - outer loop - vertex 0.0958629 -0.640958 -1.08635 - vertex 0.14674 -0.626995 -1.05871 - vertex 0.140147 -0.669413 -1.0252 - endloop - endfacet - facet normal 0.505852 -0.581623 -0.637047 - outer loop - vertex 0.0958629 -0.640958 -1.08635 - vertex 0.140147 -0.669413 -1.0252 - vertex 0.0917579 -0.689499 -1.04529 - endloop - endfacet - facet normal 0.661295 -0.0488431 -0.748534 - outer loop - vertex 0.223541 -0.153076 -1.17433 - vertex 0.284465 -0.153076 -1.12051 - vertex 0.281783 -0.230496 -1.11783 - endloop - endfacet - facet normal 0.661499 -0.0485718 -0.748372 - outer loop - vertex 0.223541 -0.153076 -1.17433 - vertex 0.281783 -0.230496 -1.11783 - vertex 0.22112 -0.230875 -1.17142 - endloop - endfacet - facet normal 0.656347 -0.13701 -0.741914 - outer loop - vertex 0.22112 -0.230875 -1.17142 - vertex 0.281783 -0.230496 -1.11783 - vertex 0.274322 -0.306633 -1.11037 - endloop - endfacet - facet normal 0.656699 -0.136576 -0.741683 - outer loop - vertex 0.22112 -0.230875 -1.17142 - vertex 0.274322 -0.306633 -1.11037 - vertex 0.214517 -0.307433 -1.16317 - endloop - endfacet - facet normal 0.647566 -0.218198 -0.730102 - outer loop - vertex 0.214517 -0.307433 -1.16317 - vertex 0.274322 -0.306633 -1.11037 - vertex 0.262669 -0.380206 -1.09871 - endloop - endfacet - facet normal 0.647908 -0.217806 -0.729915 - outer loop - vertex 0.214517 -0.307433 -1.16317 - vertex 0.262669 -0.380206 -1.09871 - vertex 0.204392 -0.381506 -1.15005 - endloop - endfacet - facet normal 0.635288 -0.295197 -0.71363 - outer loop - vertex 0.204392 -0.381506 -1.15005 - vertex 0.262669 -0.380206 -1.09871 - vertex 0.247411 -0.449932 -1.08345 - endloop - endfacet - facet normal 0.635594 -0.29487 -0.713492 - outer loop - vertex 0.204392 -0.381506 -1.15005 - vertex 0.247411 -0.449932 -1.08345 - vertex 0.191405 -0.451852 -1.13255 - endloop - endfacet - facet normal 0.619311 -0.371045 -0.691939 - outer loop - vertex 0.191405 -0.451852 -1.13255 - vertex 0.247411 -0.449932 -1.08345 - vertex 0.229132 -0.514529 -1.06518 - endloop - endfacet - facet normal 0.619782 -0.370577 -0.691768 - outer loop - vertex 0.191405 -0.451852 -1.13255 - vertex 0.229132 -0.514529 -1.06518 - vertex 0.176216 -0.51723 -1.11114 - endloop - endfacet - facet normal 0.601855 -0.439022 -0.667106 - outer loop - vertex 0.176216 -0.51723 -1.11114 - vertex 0.229132 -0.514529 -1.06518 - vertex 0.209244 -0.572013 -1.04529 - endloop - endfacet - facet normal 0.601507 -0.43935 -0.667204 - outer loop - vertex 0.176216 -0.51723 -1.11114 - vertex 0.209244 -0.572013 -1.04529 - vertex 0.160703 -0.576118 -1.08635 - endloop - endfacet - facet normal 0.581622 -0.505853 -0.637047 - outer loop - vertex 0.160703 -0.576118 -1.08635 - vertex 0.209244 -0.572013 -1.04529 - vertex 0.189158 -0.620402 -1.0252 - endloop - endfacet - facet normal 0.581828 -0.505666 -0.637007 - outer loop - vertex 0.160703 -0.576118 -1.08635 - vertex 0.189158 -0.620402 -1.0252 - vertex 0.14674 -0.626995 -1.05871 - endloop - endfacet - facet normal 0.562734 -0.568022 -0.600568 - outer loop - vertex 0.14674 -0.626995 -1.05871 - vertex 0.189158 -0.620402 -1.0252 - vertex 0.173078 -0.653333 -1.00912 - endloop - endfacet - facet normal 0.568022 -0.562733 -0.600568 - outer loop - vertex 0.14674 -0.626995 -1.05871 - vertex 0.173078 -0.653333 -1.00912 - vertex 0.140147 -0.669413 -1.0252 - endloop - endfacet - facet normal -0.0423597 -0.0421465 -0.998213 - outer loop - vertex -0.327179 -0.153076 -1.35078 - vertex -0.327179 -0.238851 -1.34716 - vertex -0.412574 -0.238471 -1.34355 - endloop - endfacet - facet normal -0.0421465 -0.0423597 -0.998213 - outer loop - vertex -0.327179 -0.153076 -1.35078 - vertex -0.412574 -0.238471 -1.34355 - vertex -0.412953 -0.153076 -1.34716 - endloop - endfacet - facet normal -0.127173 -0.0424319 -0.990972 - outer loop - vertex -0.412953 -0.153076 -1.34716 - vertex -0.412574 -0.238471 -1.34355 - vertex -0.497085 -0.237521 -1.33275 - endloop - endfacet - facet normal -0.126626 -0.0429848 -0.991019 - outer loop - vertex -0.412953 -0.153076 -1.34716 - vertex -0.497085 -0.237521 -1.33275 - vertex -0.497841 -0.153076 -1.33632 - endloop - endfacet - facet normal -0.212842 -0.0431273 -0.976134 - outer loop - vertex -0.497841 -0.153076 -1.33632 - vertex -0.497085 -0.237521 -1.33275 - vertex -0.57983 -0.236192 -1.31477 - endloop - endfacet - facet normal -0.212067 -0.0439261 -0.976267 - outer loop - vertex -0.497841 -0.153076 -1.33632 - vertex -0.57983 -0.236192 -1.31477 - vertex -0.580953 -0.153076 -1.31826 - endloop - endfacet - facet normal -0.299974 -0.0441314 -0.952926 - outer loop - vertex -0.580953 -0.153076 -1.31826 - vertex -0.57983 -0.236192 -1.31477 - vertex -0.659926 -0.234673 -1.28962 - endloop - endfacet - facet normal -0.299079 -0.0450811 -0.953163 - outer loop - vertex -0.580953 -0.153076 -1.31826 - vertex -0.659926 -0.234673 -1.28962 - vertex -0.661402 -0.153076 -1.29302 - endloop - endfacet - facet normal -0.388908 -0.0453332 -0.920161 - outer loop - vertex -0.661402 -0.153076 -1.29302 - vertex -0.659926 -0.234673 -1.28962 - vertex -0.736487 -0.233154 -1.25734 - endloop - endfacet - facet normal -0.388007 -0.0463251 -0.920492 - outer loop - vertex -0.661402 -0.153076 -1.29302 - vertex -0.736487 -0.233154 -1.25734 - vertex -0.738301 -0.153076 -1.2606 - endloop - endfacet - facet normal -0.479506 -0.0465959 -0.876301 - outer loop - vertex -0.738301 -0.153076 -1.2606 - vertex -0.736487 -0.233154 -1.25734 - vertex -0.808633 -0.231825 -1.21793 - endloop - endfacet - facet normal -0.478724 -0.0474997 -0.87668 - outer loop - vertex -0.738301 -0.153076 -1.2606 - vertex -0.808633 -0.231825 -1.21793 - vertex -0.810763 -0.153076 -1.22104 - endloop - endfacet - facet normal -0.570947 -0.0477448 -0.819597 - outer loop - vertex -0.810763 -0.153076 -1.22104 - vertex -0.808633 -0.231825 -1.21793 - vertex -0.875478 -0.230875 -1.17142 - endloop - endfacet - facet normal -0.570404 -0.0484129 -0.819936 - outer loop - vertex -0.810763 -0.153076 -1.22104 - vertex -0.875478 -0.230875 -1.17142 - vertex -0.877899 -0.153076 -1.17433 - endloop - endfacet - facet normal -0.661499 -0.0485714 -0.748371 - outer loop - vertex -0.877899 -0.153076 -1.17433 - vertex -0.875478 -0.230875 -1.17142 - vertex -0.93614 -0.230495 -1.11783 - endloop - endfacet - facet normal -0.661295 -0.0488431 -0.748534 - outer loop - vertex -0.877899 -0.153076 -1.17433 - vertex -0.93614 -0.230495 -1.11783 - vertex -0.938822 -0.153076 -1.12051 - endloop - endfacet - facet normal -0.0429849 -0.126626 -0.991019 - outer loop - vertex -0.327179 -0.238851 -1.34716 - vertex -0.327179 -0.323738 -1.33632 - vertex -0.411624 -0.322982 -1.33275 - endloop - endfacet - facet normal -0.042432 -0.127173 -0.990972 - outer loop - vertex -0.327179 -0.238851 -1.34716 - vertex -0.411624 -0.322982 -1.33275 - vertex -0.412574 -0.238471 -1.34355 - endloop - endfacet - facet normal -0.128457 -0.127188 -0.983525 - outer loop - vertex -0.412574 -0.238471 -1.34355 - vertex -0.411624 -0.322982 -1.33275 - vertex -0.495186 -0.321083 -1.32208 - endloop - endfacet - facet normal -0.127188 -0.128457 -0.983525 - outer loop - vertex -0.412574 -0.238471 -1.34355 - vertex -0.495186 -0.321083 -1.32208 - vertex -0.497085 -0.237521 -1.33275 - endloop - endfacet - facet normal -0.214212 -0.128491 -0.968299 - outer loop - vertex -0.497085 -0.237521 -1.33275 - vertex -0.495186 -0.321083 -1.32208 - vertex -0.57698 -0.318406 -1.30434 - endloop - endfacet - facet normal -0.212567 -0.130165 -0.968438 - outer loop - vertex -0.497085 -0.237521 -1.33275 - vertex -0.57698 -0.318406 -1.30434 - vertex -0.57983 -0.236192 -1.31477 - endloop - endfacet - facet normal -0.300882 -0.13022 -0.944729 - outer loop - vertex -0.57983 -0.236192 -1.31477 - vertex -0.57698 -0.318406 -1.30434 - vertex -0.656123 -0.315318 -1.27956 - endloop - endfacet - facet normal -0.299161 -0.132012 -0.945027 - outer loop - vertex -0.57983 -0.236192 -1.31477 - vertex -0.656123 -0.315318 -1.27956 - vertex -0.659926 -0.234673 -1.28962 - endloop - endfacet - facet normal -0.388846 -0.132093 -0.911784 - outer loop - vertex -0.659926 -0.234673 -1.28962 - vertex -0.656123 -0.315318 -1.27956 - vertex -0.73173 -0.312186 -1.24777 - endloop - endfacet - facet normal -0.387305 -0.133745 -0.912199 - outer loop - vertex -0.659926 -0.234673 -1.28962 - vertex -0.73173 -0.312186 -1.24777 - vertex -0.736487 -0.233154 -1.25734 - endloop - endfacet - facet normal -0.47815 -0.133865 -0.868017 - outer loop - vertex -0.736487 -0.233154 -1.25734 - vertex -0.73173 -0.312186 -1.24777 - vertex -0.802936 -0.309421 -1.20897 - endloop - endfacet - facet normal -0.476878 -0.135278 -0.868497 - outer loop - vertex -0.736487 -0.233154 -1.25734 - vertex -0.802936 -0.309421 -1.20897 - vertex -0.808633 -0.231825 -1.21793 - endloop - endfacet - facet normal -0.567993 -0.135422 -0.811816 - outer loop - vertex -0.808633 -0.231825 -1.21793 - vertex -0.802936 -0.309421 -1.20897 - vertex -0.868875 -0.307433 -1.16317 - endloop - endfacet - facet normal -0.567105 -0.136454 -0.812264 - outer loop - vertex -0.808633 -0.231825 -1.21793 - vertex -0.868875 -0.307433 -1.16317 - vertex -0.875478 -0.230875 -1.17142 - endloop - endfacet - facet normal -0.656699 -0.136575 -0.741683 - outer loop - vertex -0.875478 -0.230875 -1.17142 - vertex -0.868875 -0.307433 -1.16317 - vertex -0.92868 -0.306633 -1.11037 - endloop - endfacet - facet normal -0.656348 -0.137009 -0.741914 - outer loop - vertex -0.875478 -0.230875 -1.17142 - vertex -0.92868 -0.306633 -1.11037 - vertex -0.93614 -0.230495 -1.11783 - endloop - endfacet - facet normal -0.0439248 -0.212067 -0.976268 - outer loop - vertex -0.327179 -0.323738 -1.33632 - vertex -0.327179 -0.40685 -1.31826 - vertex -0.410295 -0.405728 -1.31477 - endloop - endfacet - facet normal -0.0431275 -0.21284 -0.976135 - outer loop - vertex -0.327179 -0.323738 -1.33632 - vertex -0.410295 -0.405728 -1.31477 - vertex -0.411624 -0.322982 -1.33275 - endloop - endfacet - facet normal -0.130166 -0.212566 -0.968438 - outer loop - vertex -0.411624 -0.322982 -1.33275 - vertex -0.410295 -0.405728 -1.31477 - vertex -0.492509 -0.402877 -1.30434 - endloop - endfacet - facet normal -0.128491 -0.214212 -0.968299 - outer loop - vertex -0.411624 -0.322982 -1.33275 - vertex -0.492509 -0.402877 -1.30434 - vertex -0.495186 -0.321083 -1.32208 - endloop - endfacet - facet normal -0.215667 -0.213702 -0.952796 - outer loop - vertex -0.495186 -0.321083 -1.32208 - vertex -0.492509 -0.402877 -1.30434 - vertex -0.572919 -0.398816 -1.28705 - endloop - endfacet - facet normal -0.213702 -0.215666 -0.952796 - outer loop - vertex -0.495186 -0.321083 -1.32208 - vertex -0.572919 -0.398816 -1.28705 - vertex -0.57698 -0.318406 -1.30434 - endloop - endfacet - facet normal -0.301198 -0.214972 -0.929014 - outer loop - vertex -0.57698 -0.318406 -1.30434 - vertex -0.572919 -0.398816 -1.28705 - vertex -0.650622 -0.39406 -1.26296 - endloop - endfacet - facet normal -0.299389 -0.216818 -0.92917 - outer loop - vertex -0.57698 -0.318406 -1.30434 - vertex -0.650622 -0.39406 -1.26296 - vertex -0.656123 -0.315318 -1.27956 - endloop - endfacet - facet normal -0.387327 -0.216027 -0.896276 - outer loop - vertex -0.656123 -0.315318 -1.27956 - vertex -0.650622 -0.39406 -1.26296 - vertex -0.724715 -0.389127 -1.23213 - endloop - endfacet - facet normal -0.385964 -0.21745 -0.89652 - outer loop - vertex -0.656123 -0.315318 -1.27956 - vertex -0.724715 -0.389127 -1.23213 - vertex -0.73173 -0.312186 -1.24777 - endloop - endfacet - facet normal -0.474514 -0.216707 -0.853155 - outer loop - vertex -0.73173 -0.312186 -1.24777 - vertex -0.724715 -0.389127 -1.23213 - vertex -0.794369 -0.384711 -1.19451 - endloop - endfacet - facet normal -0.473474 -0.217822 -0.85345 - outer loop - vertex -0.73173 -0.312186 -1.24777 - vertex -0.794369 -0.384711 -1.19451 - vertex -0.802936 -0.309421 -1.20897 - endloop - endfacet - facet normal -0.561937 -0.217264 -0.798138 - outer loop - vertex -0.802936 -0.309421 -1.20897 - vertex -0.794369 -0.384711 -1.19451 - vertex -0.85875 -0.381506 -1.15005 - endloop - endfacet - facet normal -0.561192 -0.218085 -0.798437 - outer loop - vertex -0.802936 -0.309421 -1.20897 - vertex -0.85875 -0.381506 -1.15005 - vertex -0.868875 -0.307433 -1.16317 - endloop - endfacet - facet normal -0.647908 -0.217805 -0.729915 - outer loop - vertex -0.868875 -0.307433 -1.16317 - vertex -0.85875 -0.381506 -1.15005 - vertex -0.917027 -0.380206 -1.09871 - endloop - endfacet - facet normal -0.647566 -0.218198 -0.730102 - outer loop - vertex -0.868875 -0.307433 -1.16317 - vertex -0.917027 -0.380206 -1.09871 - vertex -0.92868 -0.306633 -1.11037 - endloop - endfacet - facet normal -0.04508 -0.299079 -0.953163 - outer loop - vertex -0.327179 -0.40685 -1.31826 - vertex -0.327179 -0.487299 -1.29302 - vertex -0.408776 -0.485823 -1.28962 - endloop - endfacet - facet normal -0.0441302 -0.299975 -0.952926 - outer loop - vertex -0.327179 -0.40685 -1.31826 - vertex -0.408776 -0.485823 -1.28962 - vertex -0.410295 -0.405728 -1.31477 - endloop - endfacet - facet normal -0.132014 -0.299162 -0.945026 - outer loop - vertex -0.410295 -0.405728 -1.31477 - vertex -0.408776 -0.485823 -1.28962 - vertex -0.489421 -0.48202 -1.27956 - endloop - endfacet - facet normal -0.130222 -0.300883 -0.944728 - outer loop - vertex -0.410295 -0.405728 -1.31477 - vertex -0.489421 -0.48202 -1.27956 - vertex -0.492509 -0.402877 -1.30434 - endloop - endfacet - facet normal -0.216817 -0.29939 -0.929169 - outer loop - vertex -0.492509 -0.402877 -1.30434 - vertex -0.489421 -0.48202 -1.27956 - vertex -0.568163 -0.476519 -1.26296 - endloop - endfacet - facet normal -0.214972 -0.301198 -0.929014 - outer loop - vertex -0.492509 -0.402877 -1.30434 - vertex -0.568163 -0.476519 -1.26296 - vertex -0.572919 -0.398816 -1.28705 - endloop - endfacet - facet normal -0.300575 -0.299184 -0.905618 - outer loop - vertex -0.572919 -0.398816 -1.28705 - vertex -0.568163 -0.476519 -1.26296 - vertex -0.644049 -0.469946 -1.23994 - endloop - endfacet - facet normal -0.299184 -0.300575 -0.905618 - outer loop - vertex -0.572919 -0.398816 -1.28705 - vertex -0.644049 -0.469946 -1.23994 - vertex -0.650622 -0.39406 -1.26296 - endloop - endfacet - facet normal -0.384239 -0.298268 -0.873726 - outer loop - vertex -0.650622 -0.39406 -1.26296 - vertex -0.644049 -0.469946 -1.23994 - vertex -0.716128 -0.46293 -1.21064 - endloop - endfacet - facet normal -0.383498 -0.299025 -0.873793 - outer loop - vertex -0.650622 -0.39406 -1.26296 - vertex -0.716128 -0.46293 -1.21064 - vertex -0.724715 -0.389127 -1.23213 - endloop - endfacet - facet normal -0.468718 -0.296773 -0.832003 - outer loop - vertex -0.724715 -0.389127 -1.23213 - vertex -0.716128 -0.46293 -1.21064 - vertex -0.783624 -0.456542 -1.1749 - endloop - endfacet - facet normal -0.468247 -0.297262 -0.832094 - outer loop - vertex -0.724715 -0.389127 -1.23213 - vertex -0.783624 -0.456542 -1.1749 - vertex -0.794369 -0.384711 -1.19451 - endloop - endfacet - facet normal -0.553116 -0.295446 -0.778957 - outer loop - vertex -0.794369 -0.384711 -1.19451 - vertex -0.783624 -0.456542 -1.1749 - vertex -0.845763 -0.451852 -1.13255 - endloop - endfacet - facet normal -0.552697 -0.295887 -0.779088 - outer loop - vertex -0.794369 -0.384711 -1.19451 - vertex -0.845763 -0.451852 -1.13255 - vertex -0.85875 -0.381506 -1.15005 - endloop - endfacet - facet normal -0.635594 -0.29487 -0.713493 - outer loop - vertex -0.85875 -0.381506 -1.15005 - vertex -0.845763 -0.451852 -1.13255 - vertex -0.901768 -0.449932 -1.08345 - endloop - endfacet - facet normal -0.635288 -0.295196 -0.71363 - outer loop - vertex -0.85875 -0.381506 -1.15005 - vertex -0.901768 -0.449932 -1.08345 - vertex -0.917027 -0.380206 -1.09871 - endloop - endfacet - facet normal -0.0463254 -0.388007 -0.920492 - outer loop - vertex -0.327179 -0.487299 -1.29302 - vertex -0.327179 -0.564198 -1.2606 - vertex -0.407257 -0.562384 -1.25734 - endloop - endfacet - facet normal -0.0453322 -0.388909 -0.92016 - outer loop - vertex -0.327179 -0.487299 -1.29302 - vertex -0.407257 -0.562384 -1.25734 - vertex -0.408776 -0.485823 -1.28962 - endloop - endfacet - facet normal -0.133745 -0.387306 -0.912199 - outer loop - vertex -0.408776 -0.485823 -1.28962 - vertex -0.407257 -0.562384 -1.25734 - vertex -0.486289 -0.557627 -1.24777 - endloop - endfacet - facet normal -0.132096 -0.388845 -0.911784 - outer loop - vertex -0.408776 -0.485823 -1.28962 - vertex -0.486289 -0.557627 -1.24777 - vertex -0.489421 -0.48202 -1.27956 - endloop - endfacet - facet normal -0.21745 -0.385963 -0.89652 - outer loop - vertex -0.489421 -0.48202 -1.27956 - vertex -0.486289 -0.557627 -1.24777 - vertex -0.56323 -0.550613 -1.23213 - endloop - endfacet - facet normal -0.216026 -0.387327 -0.896276 - outer loop - vertex -0.489421 -0.48202 -1.27956 - vertex -0.56323 -0.550613 -1.23213 - vertex -0.568163 -0.476519 -1.26296 - endloop - endfacet - facet normal -0.299025 -0.383497 -0.873793 - outer loop - vertex -0.568163 -0.476519 -1.26296 - vertex -0.56323 -0.550613 -1.23213 - vertex -0.637033 -0.542025 -1.21064 - endloop - endfacet - facet normal -0.298268 -0.384239 -0.873726 - outer loop - vertex -0.568163 -0.476519 -1.26296 - vertex -0.637033 -0.542025 -1.21064 - vertex -0.644049 -0.469946 -1.23994 - endloop - endfacet - facet normal -0.380045 -0.379858 -0.84337 - outer loop - vertex -0.644049 -0.469946 -1.23994 - vertex -0.637033 -0.542025 -1.21064 - vertex -0.706654 -0.532551 -1.18354 - endloop - endfacet - facet normal -0.379858 -0.380045 -0.84337 - outer loop - vertex -0.644049 -0.469946 -1.23994 - vertex -0.706654 -0.532551 -1.18354 - vertex -0.716128 -0.46293 -1.21064 - endloop - endfacet - facet normal -0.461367 -0.375705 -0.803733 - outer loop - vertex -0.716128 -0.46293 -1.21064 - vertex -0.706654 -0.532551 -1.18354 - vertex -0.771398 -0.523761 -1.15048 - endloop - endfacet - facet normal -0.461236 -0.375837 -0.803746 - outer loop - vertex -0.716128 -0.46293 -1.21064 - vertex -0.771398 -0.523761 -1.15048 - vertex -0.783624 -0.456542 -1.1749 - endloop - endfacet - facet normal -0.541996 -0.372253 -0.753437 - outer loop - vertex -0.783624 -0.456542 -1.1749 - vertex -0.771398 -0.523761 -1.15048 - vertex -0.830574 -0.51723 -1.11114 - endloop - endfacet - facet normal -0.54161 -0.372642 -0.753523 - outer loop - vertex -0.783624 -0.456542 -1.1749 - vertex -0.830574 -0.51723 -1.11114 - vertex -0.845763 -0.451852 -1.13255 - endloop - endfacet - facet normal -0.619784 -0.370576 -0.691767 - outer loop - vertex -0.845763 -0.451852 -1.13255 - vertex -0.830574 -0.51723 -1.11114 - vertex -0.883489 -0.514528 -1.06518 - endloop - endfacet - facet normal -0.619311 -0.371045 -0.691939 - outer loop - vertex -0.845763 -0.451852 -1.13255 - vertex -0.883489 -0.514528 -1.06518 - vertex -0.901768 -0.449932 -1.08345 - endloop - endfacet - facet normal -0.0475001 -0.478724 -0.876679 - outer loop - vertex -0.327179 -0.564198 -1.2606 - vertex -0.327179 -0.63666 -1.22104 - vertex -0.405928 -0.63453 -1.21793 - endloop - endfacet - facet normal -0.0465963 -0.479506 -0.876301 - outer loop - vertex -0.327179 -0.564198 -1.2606 - vertex -0.405928 -0.63453 -1.21793 - vertex -0.407257 -0.562384 -1.25734 - endloop - endfacet - facet normal -0.135278 -0.476878 -0.868497 - outer loop - vertex -0.407257 -0.562384 -1.25734 - vertex -0.405928 -0.63453 -1.21793 - vertex -0.483524 -0.628833 -1.20897 - endloop - endfacet - facet normal -0.133865 -0.47815 -0.868017 - outer loop - vertex -0.407257 -0.562384 -1.25734 - vertex -0.483524 -0.628833 -1.20897 - vertex -0.486289 -0.557627 -1.24777 - endloop - endfacet - facet normal -0.217822 -0.473474 -0.85345 - outer loop - vertex -0.486289 -0.557627 -1.24777 - vertex -0.483524 -0.628833 -1.20897 - vertex -0.558814 -0.620266 -1.19451 - endloop - endfacet - facet normal -0.216707 -0.474514 -0.853155 - outer loop - vertex -0.486289 -0.557627 -1.24777 - vertex -0.558814 -0.620266 -1.19451 - vertex -0.56323 -0.550613 -1.23213 - endloop - endfacet - facet normal -0.297262 -0.468247 -0.832094 - outer loop - vertex -0.56323 -0.550613 -1.23213 - vertex -0.558814 -0.620266 -1.19451 - vertex -0.630645 -0.609522 -1.1749 - endloop - endfacet - facet normal -0.296773 -0.468717 -0.832003 - outer loop - vertex -0.56323 -0.550613 -1.23213 - vertex -0.630645 -0.609522 -1.1749 - vertex -0.637033 -0.542025 -1.21064 - endloop - endfacet - facet normal -0.375838 -0.461236 -0.803746 - outer loop - vertex -0.637033 -0.542025 -1.21064 - vertex -0.630645 -0.609522 -1.1749 - vertex -0.697864 -0.597295 -1.15048 - endloop - endfacet - facet normal -0.375706 -0.461367 -0.803732 - outer loop - vertex -0.637033 -0.542025 -1.21064 - vertex -0.697864 -0.597295 -1.15048 - vertex -0.706654 -0.532551 -1.18354 - endloop - endfacet - facet normal -0.452545 -0.453469 -0.767834 - outer loop - vertex -0.706654 -0.532551 -1.18354 - vertex -0.697864 -0.597295 -1.15048 - vertex -0.75962 -0.585517 -1.12104 - endloop - endfacet - facet normal -0.453469 -0.452545 -0.767834 - outer loop - vertex -0.706654 -0.532551 -1.18354 - vertex -0.75962 -0.585517 -1.12104 - vertex -0.771398 -0.523761 -1.15048 - endloop - endfacet - facet normal -0.527981 -0.445418 -0.723076 - outer loop - vertex -0.771398 -0.523761 -1.15048 - vertex -0.75962 -0.585517 -1.12104 - vertex -0.81506 -0.576118 -1.08635 - endloop - endfacet - facet normal -0.52958 -0.443839 -0.722877 - outer loop - vertex -0.771398 -0.523761 -1.15048 - vertex -0.81506 -0.576118 -1.08635 - vertex -0.830574 -0.51723 -1.11114 - endloop - endfacet - facet normal -0.601507 -0.43935 -0.667203 - outer loop - vertex -0.830574 -0.51723 -1.11114 - vertex -0.81506 -0.576118 -1.08635 - vertex -0.863602 -0.572013 -1.04529 - endloop - endfacet - facet normal -0.601856 -0.439022 -0.667105 - outer loop - vertex -0.830574 -0.51723 -1.11114 - vertex -0.863602 -0.572013 -1.04529 - vertex -0.883489 -0.514528 -1.06518 - endloop - endfacet - facet normal -0.0484129 -0.570404 -0.819936 - outer loop - vertex -0.327179 -0.63666 -1.22104 - vertex -0.327179 -0.703796 -1.17433 - vertex -0.404978 -0.701375 -1.17142 - endloop - endfacet - facet normal -0.0477453 -0.570947 -0.819597 - outer loop - vertex -0.327179 -0.63666 -1.22104 - vertex -0.404978 -0.701375 -1.17142 - vertex -0.405928 -0.63453 -1.21793 - endloop - endfacet - facet normal -0.136455 -0.567104 -0.812264 - outer loop - vertex -0.405928 -0.63453 -1.21793 - vertex -0.404978 -0.701375 -1.17142 - vertex -0.481536 -0.694772 -1.16317 - endloop - endfacet - facet normal -0.135422 -0.567993 -0.811816 - outer loop - vertex -0.405928 -0.63453 -1.21793 - vertex -0.481536 -0.694772 -1.16317 - vertex -0.483524 -0.628833 -1.20897 - endloop - endfacet - facet normal -0.218086 -0.561192 -0.798437 - outer loop - vertex -0.483524 -0.628833 -1.20897 - vertex -0.481536 -0.694772 -1.16317 - vertex -0.555609 -0.684647 -1.15005 - endloop - endfacet - facet normal -0.217264 -0.561937 -0.798138 - outer loop - vertex -0.483524 -0.628833 -1.20897 - vertex -0.555609 -0.684647 -1.15005 - vertex -0.558814 -0.620266 -1.19451 - endloop - endfacet - facet normal -0.295887 -0.552697 -0.779087 - outer loop - vertex -0.558814 -0.620266 -1.19451 - vertex -0.555609 -0.684647 -1.15005 - vertex -0.625955 -0.67166 -1.13255 - endloop - endfacet - facet normal -0.295446 -0.553116 -0.778957 - outer loop - vertex -0.558814 -0.620266 -1.19451 - vertex -0.625955 -0.67166 -1.13255 - vertex -0.630645 -0.609522 -1.1749 - endloop - endfacet - facet normal -0.372643 -0.54161 -0.753522 - outer loop - vertex -0.630645 -0.609522 -1.1749 - vertex -0.625955 -0.67166 -1.13255 - vertex -0.691333 -0.656471 -1.11114 - endloop - endfacet - facet normal -0.372254 -0.541997 -0.753436 - outer loop - vertex -0.630645 -0.609522 -1.1749 - vertex -0.691333 -0.656471 -1.11114 - vertex -0.697864 -0.597295 -1.15048 - endloop - endfacet - facet normal -0.443838 -0.529582 -0.722877 - outer loop - vertex -0.697864 -0.597295 -1.15048 - vertex -0.691333 -0.656471 -1.11114 - vertex -0.750221 -0.640957 -1.08635 - endloop - endfacet - facet normal -0.445418 -0.527981 -0.723076 - outer loop - vertex -0.697864 -0.597295 -1.15048 - vertex -0.750221 -0.640957 -1.08635 - vertex -0.75962 -0.585517 -1.12104 - endloop - endfacet - facet normal -0.513856 -0.515982 -0.685358 - outer loop - vertex -0.75962 -0.585517 -1.12104 - vertex -0.750221 -0.640957 -1.08635 - vertex -0.801098 -0.626995 -1.05871 - endloop - endfacet - facet normal -0.515981 -0.513857 -0.685358 - outer loop - vertex -0.75962 -0.585517 -1.12104 - vertex -0.801098 -0.626995 -1.05871 - vertex -0.81506 -0.576118 -1.08635 - endloop - endfacet - facet normal -0.581828 -0.505665 -0.637007 - outer loop - vertex -0.81506 -0.576118 -1.08635 - vertex -0.801098 -0.626995 -1.05871 - vertex -0.843516 -0.620402 -1.0252 - endloop - endfacet - facet normal -0.581623 -0.505852 -0.637047 - outer loop - vertex -0.81506 -0.576118 -1.08635 - vertex -0.843516 -0.620402 -1.0252 - vertex -0.863602 -0.572013 -1.04529 - endloop - endfacet - facet normal -0.0488431 -0.661295 -0.748534 - outer loop - vertex -0.327179 -0.703796 -1.17433 - vertex -0.327179 -0.764719 -1.12051 - vertex -0.404599 -0.762037 -1.11783 - endloop - endfacet - facet normal -0.0485714 -0.661499 -0.748372 - outer loop - vertex -0.327179 -0.703796 -1.17433 - vertex -0.404599 -0.762037 -1.11783 - vertex -0.404978 -0.701375 -1.17142 - endloop - endfacet - facet normal -0.13701 -0.656347 -0.741914 - outer loop - vertex -0.404978 -0.701375 -1.17142 - vertex -0.404599 -0.762037 -1.11783 - vertex -0.480736 -0.754577 -1.11037 - endloop - endfacet - facet normal -0.136576 -0.656699 -0.741683 - outer loop - vertex -0.404978 -0.701375 -1.17142 - vertex -0.480736 -0.754577 -1.11037 - vertex -0.481536 -0.694772 -1.16317 - endloop - endfacet - facet normal -0.218198 -0.647565 -0.730102 - outer loop - vertex -0.481536 -0.694772 -1.16317 - vertex -0.480736 -0.754577 -1.11037 - vertex -0.554309 -0.742924 -1.09871 - endloop - endfacet - facet normal -0.217806 -0.647908 -0.729915 - outer loop - vertex -0.481536 -0.694772 -1.16317 - vertex -0.554309 -0.742924 -1.09871 - vertex -0.555609 -0.684647 -1.15005 - endloop - endfacet - facet normal -0.295197 -0.635288 -0.71363 - outer loop - vertex -0.555609 -0.684647 -1.15005 - vertex -0.554309 -0.742924 -1.09871 - vertex -0.624035 -0.727665 -1.08345 - endloop - endfacet - facet normal -0.29487 -0.635595 -0.713492 - outer loop - vertex -0.555609 -0.684647 -1.15005 - vertex -0.624035 -0.727665 -1.08345 - vertex -0.625955 -0.67166 -1.13255 - endloop - endfacet - facet normal -0.371044 -0.619312 -0.691939 - outer loop - vertex -0.625955 -0.67166 -1.13255 - vertex -0.624035 -0.727665 -1.08345 - vertex -0.688631 -0.709386 -1.06518 - endloop - endfacet - facet normal -0.370577 -0.619782 -0.691768 - outer loop - vertex -0.625955 -0.67166 -1.13255 - vertex -0.688631 -0.709386 -1.06518 - vertex -0.691333 -0.656471 -1.11114 - endloop - endfacet - facet normal -0.439021 -0.601855 -0.667106 - outer loop - vertex -0.691333 -0.656471 -1.11114 - vertex -0.688631 -0.709386 -1.06518 - vertex -0.746116 -0.689499 -1.04529 - endloop - endfacet - facet normal -0.43935 -0.601506 -0.667205 - outer loop - vertex -0.691333 -0.656471 -1.11114 - vertex -0.746116 -0.689499 -1.04529 - vertex -0.750221 -0.640957 -1.08635 - endloop - endfacet - facet normal -0.505853 -0.581622 -0.637047 - outer loop - vertex -0.750221 -0.640957 -1.08635 - vertex -0.746116 -0.689499 -1.04529 - vertex -0.794505 -0.669413 -1.0252 - endloop - endfacet - facet normal -0.505665 -0.581829 -0.637007 - outer loop - vertex -0.750221 -0.640957 -1.08635 - vertex -0.794505 -0.669413 -1.0252 - vertex -0.801098 -0.626995 -1.05871 - endloop - endfacet - facet normal -0.568023 -0.562734 -0.600567 - outer loop - vertex -0.801098 -0.626995 -1.05871 - vertex -0.794505 -0.669413 -1.0252 - vertex -0.827436 -0.653333 -1.00912 - endloop - endfacet - facet normal -0.562734 -0.568022 -0.600567 - outer loop - vertex -0.801098 -0.626995 -1.05871 - vertex -0.827436 -0.653333 -1.00912 - vertex -0.843516 -0.620402 -1.0252 - endloop - endfacet - facet normal -0.0421465 0.0423597 -0.998213 - outer loop - vertex -0.327179 -0.153076 -1.35078 - vertex -0.412953 -0.153076 -1.34716 - vertex -0.412574 -0.0676809 -1.34355 - endloop - endfacet - facet normal -0.0423597 0.0421465 -0.998213 - outer loop - vertex -0.327179 -0.153076 -1.35078 - vertex -0.412574 -0.0676809 -1.34355 - vertex -0.327179 -0.0673011 -1.34716 - endloop - endfacet - facet normal -0.042432 0.127173 -0.990972 - outer loop - vertex -0.327179 -0.0673011 -1.34716 - vertex -0.412574 -0.0676809 -1.34355 - vertex -0.411624 0.0168308 -1.33275 - endloop - endfacet - facet normal -0.0429848 0.126626 -0.991019 - outer loop - vertex -0.327179 -0.0673011 -1.34716 - vertex -0.411624 0.0168308 -1.33275 - vertex -0.327179 0.0175861 -1.33632 - endloop - endfacet - facet normal -0.0431274 0.212842 -0.976134 - outer loop - vertex -0.327179 0.0175861 -1.33632 - vertex -0.411624 0.0168308 -1.33275 - vertex -0.410295 0.0995758 -1.31477 - endloop - endfacet - facet normal -0.0439261 0.212067 -0.976267 - outer loop - vertex -0.327179 0.0175861 -1.33632 - vertex -0.410295 0.0995758 -1.31477 - vertex -0.327179 0.100698 -1.31826 - endloop - endfacet - facet normal -0.0441314 0.299974 -0.952926 - outer loop - vertex -0.327179 0.100698 -1.31826 - vertex -0.410295 0.0995758 -1.31477 - vertex -0.408776 0.179671 -1.28962 - endloop - endfacet - facet normal -0.0450813 0.299079 -0.953163 - outer loop - vertex -0.327179 0.100698 -1.31826 - vertex -0.408776 0.179671 -1.28962 - vertex -0.327179 0.181148 -1.29302 - endloop - endfacet - facet normal -0.0453334 0.388908 -0.920161 - outer loop - vertex -0.327179 0.181148 -1.29302 - vertex -0.408776 0.179671 -1.28962 - vertex -0.407257 0.256233 -1.25734 - endloop - endfacet - facet normal -0.0463251 0.388007 -0.920491 - outer loop - vertex -0.327179 0.181148 -1.29302 - vertex -0.407257 0.256233 -1.25734 - vertex -0.327179 0.258047 -1.2606 - endloop - endfacet - facet normal -0.0465959 0.479506 -0.8763 - outer loop - vertex -0.327179 0.258047 -1.2606 - vertex -0.407257 0.256233 -1.25734 - vertex -0.405928 0.328378 -1.21793 - endloop - endfacet - facet normal -0.0475001 0.478724 -0.87668 - outer loop - vertex -0.327179 0.258047 -1.2606 - vertex -0.405928 0.328378 -1.21793 - vertex -0.327179 0.330508 -1.22104 - endloop - endfacet - facet normal -0.0477452 0.570947 -0.819597 - outer loop - vertex -0.327179 0.330508 -1.22104 - vertex -0.405928 0.328378 -1.21793 - vertex -0.404978 0.395223 -1.17142 - endloop - endfacet - facet normal -0.0484131 0.570404 -0.819936 - outer loop - vertex -0.327179 0.330508 -1.22104 - vertex -0.404978 0.395223 -1.17142 - vertex -0.327179 0.397644 -1.17433 - endloop - endfacet - facet normal -0.0485717 0.661499 -0.748372 - outer loop - vertex -0.327179 0.397644 -1.17433 - vertex -0.404978 0.395223 -1.17142 - vertex -0.404598 0.455885 -1.11783 - endloop - endfacet - facet normal -0.0488428 0.661295 -0.748534 - outer loop - vertex -0.327179 0.397644 -1.17433 - vertex -0.404598 0.455885 -1.11783 - vertex -0.327179 0.458568 -1.12051 - endloop - endfacet - facet normal -0.126626 0.0429848 -0.991019 - outer loop - vertex -0.412953 -0.153076 -1.34716 - vertex -0.497841 -0.153076 -1.33632 - vertex -0.497085 -0.0686303 -1.33275 - endloop - endfacet - facet normal -0.127173 0.042432 -0.990972 - outer loop - vertex -0.412953 -0.153076 -1.34716 - vertex -0.497085 -0.0686303 -1.33275 - vertex -0.412574 -0.0676809 -1.34355 - endloop - endfacet - facet normal -0.127188 0.128457 -0.983525 - outer loop - vertex -0.412574 -0.0676809 -1.34355 - vertex -0.497085 -0.0686303 -1.33275 - vertex -0.495186 0.0149314 -1.32208 - endloop - endfacet - facet normal -0.128457 0.127188 -0.983525 - outer loop - vertex -0.412574 -0.0676809 -1.34355 - vertex -0.495186 0.0149314 -1.32208 - vertex -0.411624 0.0168308 -1.33275 - endloop - endfacet - facet normal -0.128491 0.214212 -0.968299 - outer loop - vertex -0.411624 0.0168308 -1.33275 - vertex -0.495186 0.0149314 -1.32208 - vertex -0.492509 0.0967255 -1.30434 - endloop - endfacet - facet normal -0.130164 0.212567 -0.968438 - outer loop - vertex -0.411624 0.0168308 -1.33275 - vertex -0.492509 0.0967255 -1.30434 - vertex -0.410295 0.0995758 -1.31477 - endloop - endfacet - facet normal -0.13022 0.300882 -0.944729 - outer loop - vertex -0.410295 0.0995758 -1.31477 - vertex -0.492509 0.0967255 -1.30434 - vertex -0.489421 0.175868 -1.27956 - endloop - endfacet - facet normal -0.132012 0.299162 -0.945027 - outer loop - vertex -0.410295 0.0995758 -1.31477 - vertex -0.489421 0.175868 -1.27956 - vertex -0.408776 0.179671 -1.28962 - endloop - endfacet - facet normal -0.132093 0.388846 -0.911784 - outer loop - vertex -0.408776 0.179671 -1.28962 - vertex -0.489421 0.175868 -1.27956 - vertex -0.486289 0.251476 -1.24777 - endloop - endfacet - facet normal -0.133745 0.387305 -0.912199 - outer loop - vertex -0.408776 0.179671 -1.28962 - vertex -0.486289 0.251476 -1.24777 - vertex -0.407257 0.256233 -1.25734 - endloop - endfacet - facet normal -0.133865 0.47815 -0.868017 - outer loop - vertex -0.407257 0.256233 -1.25734 - vertex -0.486289 0.251476 -1.24777 - vertex -0.483524 0.322682 -1.20897 - endloop - endfacet - facet normal -0.135278 0.476878 -0.868497 - outer loop - vertex -0.407257 0.256233 -1.25734 - vertex -0.483524 0.322682 -1.20897 - vertex -0.405928 0.328378 -1.21793 - endloop - endfacet - facet normal -0.135423 0.567993 -0.811816 - outer loop - vertex -0.405928 0.328378 -1.21793 - vertex -0.483524 0.322682 -1.20897 - vertex -0.481535 0.38862 -1.16317 - endloop - endfacet - facet normal -0.136455 0.567105 -0.812264 - outer loop - vertex -0.405928 0.328378 -1.21793 - vertex -0.481535 0.38862 -1.16317 - vertex -0.404978 0.395223 -1.17142 - endloop - endfacet - facet normal -0.136576 0.656699 -0.741683 - outer loop - vertex -0.404978 0.395223 -1.17142 - vertex -0.481535 0.38862 -1.16317 - vertex -0.480736 0.448425 -1.11037 - endloop - endfacet - facet normal -0.13701 0.656347 -0.741914 - outer loop - vertex -0.404978 0.395223 -1.17142 - vertex -0.480736 0.448425 -1.11037 - vertex -0.404598 0.455885 -1.11783 - endloop - endfacet - facet normal -0.212067 0.0439247 -0.976268 - outer loop - vertex -0.497841 -0.153076 -1.33632 - vertex -0.580953 -0.153076 -1.31826 - vertex -0.57983 -0.0699595 -1.31477 - endloop - endfacet - facet normal -0.21284 0.0431274 -0.976135 - outer loop - vertex -0.497841 -0.153076 -1.33632 - vertex -0.57983 -0.0699595 -1.31477 - vertex -0.497085 -0.0686303 -1.33275 - endloop - endfacet - facet normal -0.212566 0.130166 -0.968438 - outer loop - vertex -0.497085 -0.0686303 -1.33275 - vertex -0.57983 -0.0699595 -1.31477 - vertex -0.57698 0.0122546 -1.30434 - endloop - endfacet - facet normal -0.214211 0.128491 -0.968299 - outer loop - vertex -0.497085 -0.0686303 -1.33275 - vertex -0.57698 0.0122546 -1.30434 - vertex -0.495186 0.0149314 -1.32208 - endloop - endfacet - facet normal -0.213702 0.215666 -0.952796 - outer loop - vertex -0.495186 0.0149314 -1.32208 - vertex -0.57698 0.0122546 -1.30434 - vertex -0.572919 0.0926641 -1.28705 - endloop - endfacet - facet normal -0.215666 0.213702 -0.952796 - outer loop - vertex -0.495186 0.0149314 -1.32208 - vertex -0.572919 0.0926641 -1.28705 - vertex -0.492509 0.0967255 -1.30434 - endloop - endfacet - facet normal -0.214972 0.301199 -0.929014 - outer loop - vertex -0.492509 0.0967255 -1.30434 - vertex -0.572919 0.0926641 -1.28705 - vertex -0.568163 0.170367 -1.26296 - endloop - endfacet - facet normal -0.216819 0.299389 -0.929169 - outer loop - vertex -0.492509 0.0967255 -1.30434 - vertex -0.568163 0.170367 -1.26296 - vertex -0.489421 0.175868 -1.27956 - endloop - endfacet - facet normal -0.216027 0.387327 -0.896276 - outer loop - vertex -0.489421 0.175868 -1.27956 - vertex -0.568163 0.170367 -1.26296 - vertex -0.56323 0.244461 -1.23213 - endloop - endfacet - facet normal -0.21745 0.385964 -0.896519 - outer loop - vertex -0.489421 0.175868 -1.27956 - vertex -0.56323 0.244461 -1.23213 - vertex -0.486289 0.251476 -1.24777 - endloop - endfacet - facet normal -0.216707 0.474515 -0.853155 - outer loop - vertex -0.486289 0.251476 -1.24777 - vertex -0.56323 0.244461 -1.23213 - vertex -0.558814 0.314114 -1.19451 - endloop - endfacet - facet normal -0.217822 0.473474 -0.853449 - outer loop - vertex -0.486289 0.251476 -1.24777 - vertex -0.558814 0.314114 -1.19451 - vertex -0.483524 0.322682 -1.20897 - endloop - endfacet - facet normal -0.217264 0.561937 -0.798137 - outer loop - vertex -0.483524 0.322682 -1.20897 - vertex -0.558814 0.314114 -1.19451 - vertex -0.555608 0.378495 -1.15005 - endloop - endfacet - facet normal -0.218085 0.561192 -0.798437 - outer loop - vertex -0.483524 0.322682 -1.20897 - vertex -0.555608 0.378495 -1.15005 - vertex -0.481535 0.38862 -1.16317 - endloop - endfacet - facet normal -0.217805 0.647908 -0.729915 - outer loop - vertex -0.481535 0.38862 -1.16317 - vertex -0.555608 0.378495 -1.15005 - vertex -0.554309 0.436772 -1.09871 - endloop - endfacet - facet normal -0.218198 0.647565 -0.730102 - outer loop - vertex -0.481535 0.38862 -1.16317 - vertex -0.554309 0.436772 -1.09871 - vertex -0.480736 0.448425 -1.11037 - endloop - endfacet - facet normal -0.299079 0.0450799 -0.953163 - outer loop - vertex -0.580953 -0.153076 -1.31826 - vertex -0.661402 -0.153076 -1.29302 - vertex -0.659925 -0.0714786 -1.28962 - endloop - endfacet - facet normal -0.299975 0.0441301 -0.952926 - outer loop - vertex -0.580953 -0.153076 -1.31826 - vertex -0.659925 -0.0714786 -1.28962 - vertex -0.57983 -0.0699595 -1.31477 - endloop - endfacet - facet normal -0.299162 0.132014 -0.945026 - outer loop - vertex -0.57983 -0.0699595 -1.31477 - vertex -0.659925 -0.0714786 -1.28962 - vertex -0.656123 0.00916679 -1.27956 - endloop - endfacet - facet normal -0.300883 0.130221 -0.944728 - outer loop - vertex -0.57983 -0.0699595 -1.31477 - vertex -0.656123 0.00916679 -1.27956 - vertex -0.57698 0.0122546 -1.30434 - endloop - endfacet - facet normal -0.29939 0.216817 -0.929169 - outer loop - vertex -0.57698 0.0122546 -1.30434 - vertex -0.656123 0.00916679 -1.27956 - vertex -0.650622 0.0879085 -1.26296 - endloop - endfacet - facet normal -0.301199 0.214972 -0.929014 - outer loop - vertex -0.57698 0.0122546 -1.30434 - vertex -0.650622 0.0879085 -1.26296 - vertex -0.572919 0.0926641 -1.28705 - endloop - endfacet - facet normal -0.299184 0.300574 -0.905618 - outer loop - vertex -0.572919 0.0926641 -1.28705 - vertex -0.650622 0.0879085 -1.26296 - vertex -0.644049 0.163795 -1.23994 - endloop - endfacet - facet normal -0.300574 0.299184 -0.905618 - outer loop - vertex -0.572919 0.0926641 -1.28705 - vertex -0.644049 0.163795 -1.23994 - vertex -0.568163 0.170367 -1.26296 - endloop - endfacet - facet normal -0.298268 0.384239 -0.873726 - outer loop - vertex -0.568163 0.170367 -1.26296 - vertex -0.644049 0.163795 -1.23994 - vertex -0.637033 0.235874 -1.21064 - endloop - endfacet - facet normal -0.299025 0.383497 -0.873793 - outer loop - vertex -0.568163 0.170367 -1.26296 - vertex -0.637033 0.235874 -1.21064 - vertex -0.56323 0.244461 -1.23213 - endloop - endfacet - facet normal -0.296773 0.468718 -0.832003 - outer loop - vertex -0.56323 0.244461 -1.23213 - vertex -0.637033 0.235874 -1.21064 - vertex -0.630645 0.30337 -1.1749 - endloop - endfacet - facet normal -0.297262 0.468247 -0.832094 - outer loop - vertex -0.56323 0.244461 -1.23213 - vertex -0.630645 0.30337 -1.1749 - vertex -0.558814 0.314114 -1.19451 - endloop - endfacet - facet normal -0.295446 0.553116 -0.778957 - outer loop - vertex -0.558814 0.314114 -1.19451 - vertex -0.630645 0.30337 -1.1749 - vertex -0.625955 0.365508 -1.13255 - endloop - endfacet - facet normal -0.295887 0.552697 -0.779088 - outer loop - vertex -0.558814 0.314114 -1.19451 - vertex -0.625955 0.365508 -1.13255 - vertex -0.555608 0.378495 -1.15005 - endloop - endfacet - facet normal -0.294869 0.635595 -0.713493 - outer loop - vertex -0.555608 0.378495 -1.15005 - vertex -0.625955 0.365508 -1.13255 - vertex -0.624034 0.421514 -1.08345 - endloop - endfacet - facet normal -0.295197 0.635288 -0.713631 - outer loop - vertex -0.555608 0.378495 -1.15005 - vertex -0.624034 0.421514 -1.08345 - vertex -0.554309 0.436772 -1.09871 - endloop - endfacet - facet normal -0.388007 0.0463254 -0.920492 - outer loop - vertex -0.661402 -0.153076 -1.29302 - vertex -0.738301 -0.153076 -1.2606 - vertex -0.736487 -0.0729977 -1.25734 - endloop - endfacet - facet normal -0.388909 0.0453322 -0.92016 - outer loop - vertex -0.661402 -0.153076 -1.29302 - vertex -0.736487 -0.0729977 -1.25734 - vertex -0.659925 -0.0714786 -1.28962 - endloop - endfacet - facet normal -0.387306 0.133745 -0.912199 - outer loop - vertex -0.659925 -0.0714786 -1.28962 - vertex -0.736487 -0.0729977 -1.25734 - vertex -0.73173 0.00603466 -1.24777 - endloop - endfacet - facet normal -0.388845 0.132095 -0.911784 - outer loop - vertex -0.659925 -0.0714786 -1.28962 - vertex -0.73173 0.00603466 -1.24777 - vertex -0.656123 0.00916679 -1.27956 - endloop - endfacet - facet normal -0.385963 0.21745 -0.89652 - outer loop - vertex -0.656123 0.00916679 -1.27956 - vertex -0.73173 0.00603466 -1.24777 - vertex -0.724715 0.0829754 -1.23213 - endloop - endfacet - facet normal -0.387327 0.216026 -0.896276 - outer loop - vertex -0.656123 0.00916679 -1.27956 - vertex -0.724715 0.0829754 -1.23213 - vertex -0.650622 0.0879085 -1.26296 - endloop - endfacet - facet normal -0.383498 0.299024 -0.873793 - outer loop - vertex -0.650622 0.0879085 -1.26296 - vertex -0.724715 0.0829754 -1.23213 - vertex -0.716128 0.156779 -1.21064 - endloop - endfacet - facet normal -0.384239 0.298268 -0.873726 - outer loop - vertex -0.650622 0.0879085 -1.26296 - vertex -0.716128 0.156779 -1.21064 - vertex -0.644049 0.163795 -1.23994 - endloop - endfacet - facet normal -0.379858 0.380046 -0.84337 - outer loop - vertex -0.644049 0.163795 -1.23994 - vertex -0.716128 0.156779 -1.21064 - vertex -0.706653 0.226399 -1.18354 - endloop - endfacet - facet normal -0.380045 0.379858 -0.84337 - outer loop - vertex -0.644049 0.163795 -1.23994 - vertex -0.706653 0.226399 -1.18354 - vertex -0.637033 0.235874 -1.21064 - endloop - endfacet - facet normal -0.375705 0.461367 -0.803732 - outer loop - vertex -0.637033 0.235874 -1.21064 - vertex -0.706653 0.226399 -1.18354 - vertex -0.697864 0.291143 -1.15048 - endloop - endfacet - facet normal -0.375838 0.461236 -0.803746 - outer loop - vertex -0.637033 0.235874 -1.21064 - vertex -0.697864 0.291143 -1.15048 - vertex -0.630645 0.30337 -1.1749 - endloop - endfacet - facet normal -0.372253 0.541996 -0.753437 - outer loop - vertex -0.630645 0.30337 -1.1749 - vertex -0.697864 0.291143 -1.15048 - vertex -0.691333 0.35032 -1.11114 - endloop - endfacet - facet normal -0.372642 0.54161 -0.753523 - outer loop - vertex -0.630645 0.30337 -1.1749 - vertex -0.691333 0.35032 -1.11114 - vertex -0.625955 0.365508 -1.13255 - endloop - endfacet - facet normal -0.370576 0.619783 -0.691767 - outer loop - vertex -0.625955 0.365508 -1.13255 - vertex -0.691333 0.35032 -1.11114 - vertex -0.688631 0.403235 -1.06518 - endloop - endfacet - facet normal -0.371044 0.619312 -0.691939 - outer loop - vertex -0.625955 0.365508 -1.13255 - vertex -0.688631 0.403235 -1.06518 - vertex -0.624034 0.421514 -1.08345 - endloop - endfacet - facet normal -0.478724 0.0475005 -0.876679 - outer loop - vertex -0.738301 -0.153076 -1.2606 - vertex -0.810763 -0.153076 -1.22104 - vertex -0.808632 -0.0743269 -1.21793 - endloop - endfacet - facet normal -0.479507 0.0465963 -0.8763 - outer loop - vertex -0.738301 -0.153076 -1.2606 - vertex -0.808632 -0.0743269 -1.21793 - vertex -0.736487 -0.0729977 -1.25734 - endloop - endfacet - facet normal -0.476878 0.135278 -0.868497 - outer loop - vertex -0.736487 -0.0729977 -1.25734 - vertex -0.808632 -0.0743269 -1.21793 - vertex -0.802936 0.00326908 -1.20897 - endloop - endfacet - facet normal -0.47815 0.133865 -0.868016 - outer loop - vertex -0.736487 -0.0729977 -1.25734 - vertex -0.802936 0.00326908 -1.20897 - vertex -0.73173 0.00603466 -1.24777 - endloop - endfacet - facet normal -0.473474 0.217822 -0.853449 - outer loop - vertex -0.73173 0.00603466 -1.24777 - vertex -0.802936 0.00326908 -1.20897 - vertex -0.794369 0.0785591 -1.19451 - endloop - endfacet - facet normal -0.474514 0.216708 -0.853155 - outer loop - vertex -0.73173 0.00603466 -1.24777 - vertex -0.794369 0.0785591 -1.19451 - vertex -0.724715 0.0829754 -1.23213 - endloop - endfacet - facet normal -0.468247 0.297262 -0.832094 - outer loop - vertex -0.724715 0.0829754 -1.23213 - vertex -0.794369 0.0785591 -1.19451 - vertex -0.783624 0.15039 -1.1749 - endloop - endfacet - facet normal -0.468718 0.296773 -0.832003 - outer loop - vertex -0.724715 0.0829754 -1.23213 - vertex -0.783624 0.15039 -1.1749 - vertex -0.716128 0.156779 -1.21064 - endloop - endfacet - facet normal -0.461237 0.375838 -0.803746 - outer loop - vertex -0.716128 0.156779 -1.21064 - vertex -0.783624 0.15039 -1.1749 - vertex -0.771398 0.21761 -1.15048 - endloop - endfacet - facet normal -0.461367 0.375706 -0.803732 - outer loop - vertex -0.716128 0.156779 -1.21064 - vertex -0.771398 0.21761 -1.15048 - vertex -0.706653 0.226399 -1.18354 - endloop - endfacet - facet normal -0.453469 0.452545 -0.767833 - outer loop - vertex -0.706653 0.226399 -1.18354 - vertex -0.771398 0.21761 -1.15048 - vertex -0.75962 0.279365 -1.12104 - endloop - endfacet - facet normal -0.452545 0.45347 -0.767833 - outer loop - vertex -0.706653 0.226399 -1.18354 - vertex -0.75962 0.279365 -1.12104 - vertex -0.697864 0.291143 -1.15048 - endloop - endfacet - facet normal -0.445418 0.527981 -0.723076 - outer loop - vertex -0.697864 0.291143 -1.15048 - vertex -0.75962 0.279365 -1.12104 - vertex -0.750221 0.334806 -1.08635 - endloop - endfacet - facet normal -0.44384 0.52958 -0.722877 - outer loop - vertex -0.697864 0.291143 -1.15048 - vertex -0.750221 0.334806 -1.08635 - vertex -0.691333 0.35032 -1.11114 - endloop - endfacet - facet normal -0.439351 0.601507 -0.667203 - outer loop - vertex -0.691333 0.35032 -1.11114 - vertex -0.750221 0.334806 -1.08635 - vertex -0.746116 0.383347 -1.04529 - endloop - endfacet - facet normal -0.439022 0.601856 -0.667105 - outer loop - vertex -0.691333 0.35032 -1.11114 - vertex -0.746116 0.383347 -1.04529 - vertex -0.688631 0.403235 -1.06518 - endloop - endfacet - facet normal -0.570404 0.0484138 -0.819936 - outer loop - vertex -0.810763 -0.153076 -1.22104 - vertex -0.877899 -0.153076 -1.17433 - vertex -0.875478 -0.0752763 -1.17142 - endloop - endfacet - facet normal -0.570947 0.0477457 -0.819597 - outer loop - vertex -0.810763 -0.153076 -1.22104 - vertex -0.875478 -0.0752763 -1.17142 - vertex -0.808632 -0.0743269 -1.21793 - endloop - endfacet - facet normal -0.567105 0.136454 -0.812264 - outer loop - vertex -0.808632 -0.0743269 -1.21793 - vertex -0.875478 -0.0752763 -1.17142 - vertex -0.868875 0.001281 -1.16317 - endloop - endfacet - facet normal -0.567993 0.135422 -0.811816 - outer loop - vertex -0.808632 -0.0743269 -1.21793 - vertex -0.868875 0.001281 -1.16317 - vertex -0.802936 0.00326908 -1.20897 - endloop - endfacet - facet normal -0.561192 0.218085 -0.798438 - outer loop - vertex -0.802936 0.00326908 -1.20897 - vertex -0.868875 0.001281 -1.16317 - vertex -0.85875 0.0753539 -1.15005 - endloop - endfacet - facet normal -0.561936 0.217264 -0.798138 - outer loop - vertex -0.802936 0.00326908 -1.20897 - vertex -0.85875 0.0753539 -1.15005 - vertex -0.794369 0.0785591 -1.19451 - endloop - endfacet - facet normal -0.552696 0.295887 -0.779088 - outer loop - vertex -0.794369 0.0785591 -1.19451 - vertex -0.85875 0.0753539 -1.15005 - vertex -0.845763 0.1457 -1.13255 - endloop - endfacet - facet normal -0.553116 0.295446 -0.778957 - outer loop - vertex -0.794369 0.0785591 -1.19451 - vertex -0.845763 0.1457 -1.13255 - vertex -0.783624 0.15039 -1.1749 - endloop - endfacet - facet normal -0.54161 0.372644 -0.753522 - outer loop - vertex -0.783624 0.15039 -1.1749 - vertex -0.845763 0.1457 -1.13255 - vertex -0.830574 0.211078 -1.11114 - endloop - endfacet - facet normal -0.541998 0.372253 -0.753436 - outer loop - vertex -0.783624 0.15039 -1.1749 - vertex -0.830574 0.211078 -1.11114 - vertex -0.771398 0.21761 -1.15048 - endloop - endfacet - facet normal -0.529582 0.443839 -0.722876 - outer loop - vertex -0.771398 0.21761 -1.15048 - vertex -0.830574 0.211078 -1.11114 - vertex -0.81506 0.269966 -1.08635 - endloop - endfacet - facet normal -0.527981 0.445418 -0.723076 - outer loop - vertex -0.771398 0.21761 -1.15048 - vertex -0.81506 0.269966 -1.08635 - vertex -0.75962 0.279365 -1.12104 - endloop - endfacet - facet normal -0.515981 0.513857 -0.685357 - outer loop - vertex -0.75962 0.279365 -1.12104 - vertex -0.81506 0.269966 -1.08635 - vertex -0.801098 0.320843 -1.05871 - endloop - endfacet - facet normal -0.513857 0.515981 -0.685357 - outer loop - vertex -0.75962 0.279365 -1.12104 - vertex -0.801098 0.320843 -1.05871 - vertex -0.750221 0.334806 -1.08635 - endloop - endfacet - facet normal -0.505666 0.581829 -0.637007 - outer loop - vertex -0.750221 0.334806 -1.08635 - vertex -0.801098 0.320843 -1.05871 - vertex -0.794505 0.363261 -1.0252 - endloop - endfacet - facet normal -0.505853 0.581623 -0.637047 - outer loop - vertex -0.750221 0.334806 -1.08635 - vertex -0.794505 0.363261 -1.0252 - vertex -0.746116 0.383347 -1.04529 - endloop - endfacet - facet normal -0.661295 0.0488436 -0.748534 - outer loop - vertex -0.877899 -0.153076 -1.17433 - vertex -0.938822 -0.153076 -1.12051 - vertex -0.93614 -0.0756561 -1.11783 - endloop - endfacet - facet normal -0.661499 0.0485724 -0.748372 - outer loop - vertex -0.877899 -0.153076 -1.17433 - vertex -0.93614 -0.0756561 -1.11783 - vertex -0.875478 -0.0752763 -1.17142 - endloop - endfacet - facet normal -0.656347 0.13701 -0.741914 - outer loop - vertex -0.875478 -0.0752763 -1.17142 - vertex -0.93614 -0.0756561 -1.11783 - vertex -0.92868 0.00048133 -1.11037 - endloop - endfacet - facet normal -0.6567 0.136575 -0.741682 - outer loop - vertex -0.875478 -0.0752763 -1.17142 - vertex -0.92868 0.00048133 -1.11037 - vertex -0.868875 0.001281 -1.16317 - endloop - endfacet - facet normal -0.647566 0.218198 -0.730101 - outer loop - vertex -0.868875 0.001281 -1.16317 - vertex -0.92868 0.00048133 -1.11037 - vertex -0.917027 0.0740541 -1.09871 - endloop - endfacet - facet normal -0.647909 0.217805 -0.729914 - outer loop - vertex -0.868875 0.001281 -1.16317 - vertex -0.917027 0.0740541 -1.09871 - vertex -0.85875 0.0753539 -1.15005 - endloop - endfacet - facet normal -0.635288 0.295196 -0.71363 - outer loop - vertex -0.85875 0.0753539 -1.15005 - vertex -0.917027 0.0740541 -1.09871 - vertex -0.901768 0.14378 -1.08345 - endloop - endfacet - facet normal -0.635594 0.29487 -0.713493 - outer loop - vertex -0.85875 0.0753539 -1.15005 - vertex -0.901768 0.14378 -1.08345 - vertex -0.845763 0.1457 -1.13255 - endloop - endfacet - facet normal -0.619311 0.371045 -0.691939 - outer loop - vertex -0.845763 0.1457 -1.13255 - vertex -0.901768 0.14378 -1.08345 - vertex -0.883489 0.208377 -1.06518 - endloop - endfacet - facet normal -0.619782 0.370578 -0.691768 - outer loop - vertex -0.845763 0.1457 -1.13255 - vertex -0.883489 0.208377 -1.06518 - vertex -0.830574 0.211078 -1.11114 - endloop - endfacet - facet normal -0.601855 0.439021 -0.667106 - outer loop - vertex -0.830574 0.211078 -1.11114 - vertex -0.883489 0.208377 -1.06518 - vertex -0.863601 0.265861 -1.04529 - endloop - endfacet - facet normal -0.601507 0.43935 -0.667204 - outer loop - vertex -0.830574 0.211078 -1.11114 - vertex -0.863601 0.265861 -1.04529 - vertex -0.81506 0.269966 -1.08635 - endloop - endfacet - facet normal -0.581622 0.505853 -0.637047 - outer loop - vertex -0.81506 0.269966 -1.08635 - vertex -0.863601 0.265861 -1.04529 - vertex -0.843516 0.31425 -1.0252 - endloop - endfacet - facet normal -0.581828 0.505666 -0.637007 - outer loop - vertex -0.81506 0.269966 -1.08635 - vertex -0.843516 0.31425 -1.0252 - vertex -0.801098 0.320843 -1.05871 - endloop - endfacet - facet normal -0.562734 0.568022 -0.600567 - outer loop - vertex -0.801098 0.320843 -1.05871 - vertex -0.843516 0.31425 -1.0252 - vertex -0.827436 0.347181 -1.00912 - endloop - endfacet - facet normal -0.568022 0.562734 -0.600567 - outer loop - vertex -0.801098 0.320843 -1.05871 - vertex -0.827436 0.347181 -1.00912 - vertex -0.794505 0.363261 -1.0252 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -0.327179 -0.153076 0.491135 - vertex -0.212433 -0.153076 0.491135 - vertex -0.212921 -0.0388184 0.491135 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.327179 -0.153076 0.491135 - vertex -0.212921 -0.0388184 0.491135 - vertex -0.327179 -0.03833 0.491135 - endloop - endfacet - facet normal 2.47702e-05 0.00579568 0.999983 - outer loop - vertex -0.327179 -0.03833 0.491135 - vertex -0.212921 -0.0388184 0.491135 - vertex -0.214243 0.0748374 0.490477 - endloop - endfacet - facet normal 4.95093e-05 0.005771 0.999983 - outer loop - vertex -0.327179 -0.03833 0.491135 - vertex -0.214243 0.0748374 0.490477 - vertex -0.327179 0.0758114 0.490477 - endloop - endfacet - facet normal 0.0001513 0.0175732 0.999846 - outer loop - vertex -0.327179 0.0758114 0.490477 - vertex -0.214243 0.0748374 0.490477 - vertex -0.216257 0.187289 0.488501 - endloop - endfacet - facet normal 0.000229429 0.0174955 0.999847 - outer loop - vertex -0.327179 0.0758114 0.490477 - vertex -0.216257 0.187289 0.488501 - vertex -0.327179 0.188743 0.488501 - endloop - endfacet - facet normal 0.000468257 0.0357077 0.999362 - outer loop - vertex -0.327179 0.188743 0.488501 - vertex -0.216257 0.187289 0.488501 - vertex -0.218819 0.297934 0.484548 - endloop - endfacet - facet normal 0.000632262 0.0355451 0.999368 - outer loop - vertex -0.327179 0.188743 0.488501 - vertex -0.218819 0.297934 0.484548 - vertex -0.327179 0.299862 0.484548 - endloop - endfacet - facet normal 0.00108103 0.0607746 0.998151 - outer loop - vertex -0.327179 0.299862 0.484548 - vertex -0.218819 0.297934 0.484548 - vertex -0.221787 0.406171 0.477961 - endloop - endfacet - facet normal 0.00137169 0.0604876 0.998168 - outer loop - vertex -0.327179 0.299862 0.484548 - vertex -0.221787 0.406171 0.477961 - vertex -0.327179 0.408561 0.477961 - endloop - endfacet - facet normal 0.00336275 0.148288 0.988939 - outer loop - vertex -0.327179 0.408561 0.477961 - vertex -0.221787 0.406171 0.477961 - vertex -0.224856 0.506665 0.462903 - endloop - endfacet - facet normal 0.00406646 0.14757 0.989043 - outer loop - vertex -0.327179 0.408561 0.477961 - vertex -0.224856 0.506665 0.462903 - vertex -0.327179 0.509484 0.462903 - endloop - endfacet - facet normal 0.00878155 0.318691 0.947818 - outer loop - vertex -0.327179 0.509484 0.462903 - vertex -0.224856 0.506665 0.462903 - vertex -0.227722 0.59408 0.433537 - endloop - endfacet - facet normal 0.010184 0.31721 0.948301 - outer loop - vertex -0.327179 0.509484 0.462903 - vertex -0.227722 0.59408 0.433537 - vertex -0.327179 0.597273 0.433537 - endloop - endfacet - facet normal 0.0187264 0.583289 0.812049 - outer loop - vertex -0.327179 0.597273 0.433537 - vertex -0.227722 0.59408 0.433537 - vertex -0.230081 0.663083 0.384027 - endloop - endfacet - facet normal 0.0208773 0.581201 0.813492 - outer loop - vertex -0.327179 0.597273 0.433537 - vertex -0.230081 0.663083 0.384027 - vertex -0.327179 0.666571 0.384027 - endloop - endfacet - facet normal 0.005771 4.95043e-05 0.999983 - outer loop - vertex -0.212433 -0.153076 0.491135 - vertex -0.0982914 -0.153076 0.490477 - vertex -0.0992653 -0.0401406 0.490477 - endloop - endfacet - facet normal 0.00579568 2.47656e-05 0.999983 - outer loop - vertex -0.212433 -0.153076 0.491135 - vertex -0.0992653 -0.0401406 0.490477 - vertex -0.212921 -0.0388184 0.491135 - endloop - endfacet - facet normal 0.00586488 0.0059822 0.999965 - outer loop - vertex -0.212921 -0.0388184 0.491135 - vertex -0.0992653 -0.0401406 0.490477 - vertex -0.101917 0.0721853 0.48982 - endloop - endfacet - facet normal 0.00598221 0.00586488 0.999965 - outer loop - vertex -0.212921 -0.0388184 0.491135 - vertex -0.101917 0.0721853 0.48982 - vertex -0.214243 0.0748374 0.490477 - endloop - endfacet - facet normal 0.00626669 0.01795 0.999819 - outer loop - vertex -0.214243 0.0748374 0.490477 - vertex -0.101917 0.0721853 0.48982 - vertex -0.105977 0.183292 0.487851 - endloop - endfacet - facet normal 0.00653025 0.017687 0.999822 - outer loop - vertex -0.214243 0.0748374 0.490477 - vertex -0.105977 0.183292 0.487851 - vertex -0.216257 0.187289 0.488501 - endloop - endfacet - facet normal 0.00720401 0.0363589 0.999313 - outer loop - vertex -0.216257 0.187289 0.488501 - vertex -0.105977 0.183292 0.487851 - vertex -0.111175 0.292569 0.483912 - endloop - endfacet - facet normal 0.00769079 0.0358736 0.999327 - outer loop - vertex -0.216257 0.187289 0.488501 - vertex -0.111175 0.292569 0.483912 - vertex -0.218819 0.297934 0.484548 - endloop - endfacet - facet normal 0.00897686 0.0618294 0.998046 - outer loop - vertex -0.218819 0.297934 0.484548 - vertex -0.111175 0.292569 0.483912 - vertex -0.117241 0.399408 0.477348 - endloop - endfacet - facet normal 0.00979858 0.0610099 0.998089 - outer loop - vertex -0.218819 0.297934 0.484548 - vertex -0.117241 0.399408 0.477348 - vertex -0.221787 0.406171 0.477961 - endloop - endfacet - facet normal 0.0155474 0.150748 0.98845 - outer loop - vertex -0.221787 0.406171 0.477961 - vertex -0.117241 0.399408 0.477348 - vertex -0.123532 0.49856 0.462326 - endloop - endfacet - facet normal 0.0175281 0.148689 0.988729 - outer loop - vertex -0.221787 0.406171 0.477961 - vertex -0.123532 0.49856 0.462326 - vertex -0.224856 0.506665 0.462903 - endloop - endfacet - facet normal 0.0312768 0.323651 0.945659 - outer loop - vertex -0.224856 0.506665 0.462903 - vertex -0.123532 0.49856 0.462326 - vertex -0.129404 0.58478 0.433011 - endloop - endfacet - facet normal 0.03527 0.319286 0.947002 - outer loop - vertex -0.224856 0.506665 0.462903 - vertex -0.129404 0.58478 0.433011 - vertex -0.227722 0.59408 0.433537 - endloop - endfacet - facet normal 0.0600783 0.589543 0.805499 - outer loop - vertex -0.227722 0.59408 0.433537 - vertex -0.129404 0.58478 0.433011 - vertex -0.134213 0.652819 0.383572 - endloop - endfacet - facet normal 0.0662835 0.583181 0.809633 - outer loop - vertex -0.227722 0.59408 0.433537 - vertex -0.134213 0.652819 0.383572 - vertex -0.230081 0.663083 0.384027 - endloop - endfacet - facet normal 0.0174955 0.000229415 0.999847 - outer loop - vertex -0.0982914 -0.153076 0.490477 - vertex 0.0146407 -0.153076 0.488501 - vertex 0.0131862 -0.0421541 0.488501 - endloop - endfacet - facet normal 0.0175732 0.000151285 0.999846 - outer loop - vertex -0.0982914 -0.153076 0.490477 - vertex 0.0131862 -0.0421541 0.488501 - vertex -0.0992653 -0.0401406 0.490477 - endloop - endfacet - facet normal 0.017687 0.00653024 0.999822 - outer loop - vertex -0.0992653 -0.0401406 0.490477 - vertex 0.0131862 -0.0421541 0.488501 - vertex 0.00918925 0.0681253 0.487851 - endloop - endfacet - facet normal 0.01795 0.00626667 0.999819 - outer loop - vertex -0.0992653 -0.0401406 0.490477 - vertex 0.00918925 0.0681253 0.487851 - vertex -0.101917 0.0721853 0.48982 - endloop - endfacet - facet normal 0.0184092 0.0189147 0.999652 - outer loop - vertex -0.101917 0.0721853 0.48982 - vertex 0.00918925 0.0681253 0.487851 - vertex 0.00301646 0.177119 0.485902 - endloop - endfacet - facet normal 0.0189147 0.0184092 0.999652 - outer loop - vertex -0.101917 0.0721853 0.48982 - vertex 0.00301646 0.177119 0.485902 - vertex -0.105977 0.183292 0.487851 - endloop - endfacet - facet normal 0.0200061 0.0378594 0.999083 - outer loop - vertex -0.105977 0.183292 0.487851 - vertex 0.00301646 0.177119 0.485902 - vertex -0.0049655 0.284184 0.482005 - endloop - endfacet - facet normal 0.0208644 0.0370009 0.999097 - outer loop - vertex -0.105977 0.183292 0.487851 - vertex -0.0049655 0.284184 0.482005 - vertex -0.111175 0.292569 0.483912 - endloop - endfacet - facet normal 0.0229775 0.0640897 0.99768 - outer loop - vertex -0.111175 0.292569 0.483912 - vertex -0.0049655 0.284184 0.482005 - vertex -0.01439 0.388678 0.47551 - endloop - endfacet - facet normal 0.0243776 0.0626848 0.997736 - outer loop - vertex -0.111175 0.292569 0.483912 - vertex -0.01439 0.388678 0.47551 - vertex -0.117241 0.399408 0.477348 - endloop - endfacet - facet normal 0.033872 0.155491 0.987256 - outer loop - vertex -0.117241 0.399408 0.477348 - vertex -0.01439 0.388678 0.47551 - vertex -0.0242053 0.485525 0.460593 - endloop - endfacet - facet normal 0.0371759 0.152004 0.98768 - outer loop - vertex -0.117241 0.399408 0.477348 - vertex -0.0242053 0.485525 0.460593 - vertex -0.123532 0.49856 0.462326 - endloop - endfacet - facet normal 0.0600837 0.332749 0.941099 - outer loop - vertex -0.123532 0.49856 0.462326 - vertex -0.0242053 0.485525 0.460593 - vertex -0.0333596 0.56965 0.431433 - endloop - endfacet - facet normal 0.0667363 0.325253 0.943269 - outer loop - vertex -0.123532 0.49856 0.462326 - vertex -0.0333596 0.56965 0.431433 - vertex -0.129404 0.58478 0.433011 - endloop - endfacet - facet normal 0.107582 0.600266 0.792532 - outer loop - vertex -0.129404 0.58478 0.433011 - vertex -0.0333596 0.56965 0.431433 - vertex -0.0408013 0.635977 0.382207 - endloop - endfacet - facet normal 0.117909 0.58917 0.79936 - outer loop - vertex -0.129404 0.58478 0.433011 - vertex -0.0408013 0.635977 0.382207 - vertex -0.134213 0.652819 0.383572 - endloop - endfacet - facet normal 0.0355451 0.00063222 0.999368 - outer loop - vertex 0.0146407 -0.153076 0.488501 - vertex 0.125759 -0.153076 0.484548 - vertex 0.123831 -0.0447162 0.484548 - endloop - endfacet - facet normal 0.0357077 0.000468228 0.999362 - outer loop - vertex 0.0146407 -0.153076 0.488501 - vertex 0.123831 -0.0447162 0.484548 - vertex 0.0131862 -0.0421541 0.488501 - endloop - endfacet - facet normal 0.0358736 0.00769077 0.999327 - outer loop - vertex 0.0131862 -0.0421541 0.488501 - vertex 0.123831 -0.0447162 0.484548 - vertex 0.118467 0.0629272 0.483912 - endloop - endfacet - facet normal 0.0363589 0.00720398 0.999313 - outer loop - vertex 0.0131862 -0.0421541 0.488501 - vertex 0.118467 0.0629272 0.483912 - vertex 0.00918925 0.0681253 0.487851 - endloop - endfacet - facet normal 0.0370009 0.0208644 0.999097 - outer loop - vertex 0.00918925 0.0681253 0.487851 - vertex 0.118467 0.0629272 0.483912 - vertex 0.110082 0.169137 0.482005 - endloop - endfacet - facet normal 0.0378594 0.0200061 0.999083 - outer loop - vertex 0.00918925 0.0681253 0.487851 - vertex 0.110082 0.169137 0.482005 - vertex 0.00301646 0.177119 0.485902 - endloop - endfacet - facet normal 0.0393816 0.0407609 0.998393 - outer loop - vertex 0.00301646 0.177119 0.485902 - vertex 0.110082 0.169137 0.482005 - vertex 0.0990938 0.273196 0.47819 - endloop - endfacet - facet normal 0.0407609 0.0393816 0.998393 - outer loop - vertex 0.00301646 0.177119 0.485902 - vertex 0.0990938 0.273196 0.47819 - vertex -0.0049655 0.284184 0.482005 - endloop - endfacet - facet normal 0.043755 0.0683228 0.996703 - outer loop - vertex -0.0049655 0.284184 0.482005 - vertex 0.0990938 0.273196 0.47819 - vertex 0.0859205 0.374388 0.471832 - endloop - endfacet - facet normal 0.0459616 0.0661052 0.996754 - outer loop - vertex -0.0049655 0.284184 0.482005 - vertex 0.0859205 0.374388 0.471832 - vertex -0.01439 0.388678 0.47551 - endloop - endfacet - facet normal 0.0594071 0.163581 0.98474 - outer loop - vertex -0.01439 0.388678 0.47551 - vertex 0.0859205 0.374388 0.471832 - vertex 0.0721254 0.467913 0.457128 - endloop - endfacet - facet normal 0.0643797 0.15828 0.985293 - outer loop - vertex -0.01439 0.388678 0.47551 - vertex 0.0721254 0.467913 0.457128 - vertex -0.0242053 0.485525 0.460593 - endloop - endfacet - facet normal 0.0970594 0.347372 0.932691 - outer loop - vertex -0.0242053 0.485525 0.460593 - vertex 0.0721254 0.467913 0.457128 - vertex 0.0592722 0.548969 0.428277 - endloop - endfacet - facet normal 0.106898 0.335998 0.935777 - outer loop - vertex -0.0242053 0.485525 0.460593 - vertex 0.0592722 0.548969 0.428277 - vertex -0.0333596 0.56965 0.431433 - endloop - endfacet - facet normal 0.163787 0.616038 0.7705 - outer loop - vertex -0.0333596 0.56965 0.431433 - vertex 0.0592722 0.548969 0.428277 - vertex 0.0489247 0.612757 0.379476 - endloop - endfacet - facet normal 0.17882 0.599222 0.780356 - outer loop - vertex -0.0333596 0.56965 0.431433 - vertex 0.0489247 0.612757 0.379476 - vertex -0.0408013 0.635977 0.382207 - endloop - endfacet - facet normal 0.0604875 0.00137163 0.998168 - outer loop - vertex 0.125759 -0.153076 0.484548 - vertex 0.234458 -0.153076 0.477961 - vertex 0.232068 -0.0476842 0.477961 - endloop - endfacet - facet normal 0.0607746 0.00108096 0.998151 - outer loop - vertex 0.125759 -0.153076 0.484548 - vertex 0.232068 -0.0476842 0.477961 - vertex 0.123831 -0.0447162 0.484548 - endloop - endfacet - facet normal 0.0610099 0.00979855 0.998089 - outer loop - vertex 0.123831 -0.0447162 0.484548 - vertex 0.232068 -0.0476842 0.477961 - vertex 0.225305 0.056861 0.477348 - endloop - endfacet - facet normal 0.0618295 0.00897682 0.998046 - outer loop - vertex 0.123831 -0.0447162 0.484548 - vertex 0.225305 0.056861 0.477348 - vertex 0.118467 0.0629272 0.483912 - endloop - endfacet - facet normal 0.0626848 0.0243778 0.997736 - outer loop - vertex 0.118467 0.0629272 0.483912 - vertex 0.225305 0.056861 0.477348 - vertex 0.214576 0.159712 0.475509 - endloop - endfacet - facet normal 0.06409 0.0229775 0.99768 - outer loop - vertex 0.118467 0.0629272 0.483912 - vertex 0.214576 0.159712 0.475509 - vertex 0.110082 0.169137 0.482005 - endloop - endfacet - facet normal 0.0661054 0.0459613 0.996754 - outer loop - vertex 0.110082 0.169137 0.482005 - vertex 0.214576 0.159712 0.475509 - vertex 0.200286 0.260023 0.471832 - endloop - endfacet - facet normal 0.0683229 0.0437549 0.996703 - outer loop - vertex 0.110082 0.169137 0.482005 - vertex 0.200286 0.260023 0.471832 - vertex 0.0990938 0.273196 0.47819 - endloop - endfacet - facet normal 0.0723704 0.0759175 0.994484 - outer loop - vertex 0.0990938 0.273196 0.47819 - vertex 0.200286 0.260023 0.471832 - vertex 0.182843 0.356946 0.465702 - endloop - endfacet - facet normal 0.0759175 0.0723704 0.994484 - outer loop - vertex 0.0990938 0.273196 0.47819 - vertex 0.182843 0.356946 0.465702 - vertex 0.0859205 0.374388 0.471832 - endloop - endfacet - facet normal 0.0938263 0.177072 0.979715 - outer loop - vertex 0.0859205 0.374388 0.471832 - vertex 0.182843 0.356946 0.465702 - vertex 0.164461 0.446078 0.451353 - endloop - endfacet - facet normal 0.1013 0.169076 0.980383 - outer loop - vertex 0.0859205 0.374388 0.471832 - vertex 0.164461 0.446078 0.451353 - vertex 0.0721254 0.467913 0.457128 - endloop - endfacet - facet normal 0.144927 0.370172 0.917589 - outer loop - vertex 0.0721254 0.467913 0.457128 - vertex 0.164461 0.446078 0.451353 - vertex 0.147354 0.523016 0.423016 - endloop - endfacet - facet normal 0.159171 0.353361 0.921846 - outer loop - vertex 0.0721254 0.467913 0.457128 - vertex 0.147354 0.523016 0.423016 - vertex 0.0592722 0.548969 0.428277 - endloop - endfacet - facet normal 0.231775 0.637734 0.734558 - outer loop - vertex 0.0592722 0.548969 0.428277 - vertex 0.147354 0.523016 0.423016 - vertex 0.133737 0.583359 0.374925 - endloop - endfacet - facet normal 0.252783 0.613421 0.748208 - outer loop - vertex 0.0592722 0.548969 0.428277 - vertex 0.133737 0.583359 0.374925 - vertex 0.0489247 0.612757 0.379476 - endloop - endfacet - facet normal 0.14757 0.00406633 0.989043 - outer loop - vertex 0.234458 -0.153076 0.477961 - vertex 0.335381 -0.153076 0.462903 - vertex 0.332562 -0.0507537 0.462903 - endloop - endfacet - facet normal 0.148288 0.0033626 0.988939 - outer loop - vertex 0.234458 -0.153076 0.477961 - vertex 0.332562 -0.0507537 0.462903 - vertex 0.232068 -0.0476842 0.477961 - endloop - endfacet - facet normal 0.148689 0.017528 0.988729 - outer loop - vertex 0.232068 -0.0476842 0.477961 - vertex 0.332562 -0.0507537 0.462903 - vertex 0.324458 0.0505703 0.462326 - endloop - endfacet - facet normal 0.150748 0.0155473 0.98845 - outer loop - vertex 0.232068 -0.0476842 0.477961 - vertex 0.324458 0.0505703 0.462326 - vertex 0.225305 0.056861 0.477348 - endloop - endfacet - facet normal 0.152004 0.0371758 0.987681 - outer loop - vertex 0.225305 0.056861 0.477348 - vertex 0.324458 0.0505703 0.462326 - vertex 0.311423 0.149897 0.460593 - endloop - endfacet - facet normal 0.15549 0.0338721 0.987257 - outer loop - vertex 0.225305 0.056861 0.477348 - vertex 0.311423 0.149897 0.460593 - vertex 0.214576 0.159712 0.475509 - endloop - endfacet - facet normal 0.15828 0.0643795 0.985293 - outer loop - vertex 0.214576 0.159712 0.475509 - vertex 0.311423 0.149897 0.460593 - vertex 0.29381 0.246228 0.457128 - endloop - endfacet - facet normal 0.163581 0.0594066 0.98474 - outer loop - vertex 0.214576 0.159712 0.475509 - vertex 0.29381 0.246228 0.457128 - vertex 0.200286 0.260023 0.471832 - endloop - endfacet - facet normal 0.169076 0.1013 0.980383 - outer loop - vertex 0.200286 0.260023 0.471832 - vertex 0.29381 0.246228 0.457128 - vertex 0.271975 0.338564 0.451353 - endloop - endfacet - facet normal 0.177073 0.0938263 0.979715 - outer loop - vertex 0.200286 0.260023 0.471832 - vertex 0.271975 0.338564 0.451353 - vertex 0.182843 0.356946 0.465702 - endloop - endfacet - facet normal 0.197294 0.208973 0.957813 - outer loop - vertex 0.182843 0.356946 0.465702 - vertex 0.271975 0.338564 0.451353 - vertex 0.248628 0.422731 0.437799 - endloop - endfacet - facet normal 0.208973 0.197293 0.957813 - outer loop - vertex 0.182843 0.356946 0.465702 - vertex 0.248628 0.422731 0.437799 - vertex 0.164461 0.446078 0.451353 - endloop - endfacet - facet normal 0.253977 0.405924 0.877907 - outer loop - vertex 0.164461 0.446078 0.451353 - vertex 0.248628 0.422731 0.437799 - vertex 0.226481 0.494555 0.410996 - endloop - endfacet - facet normal 0.272522 0.3853 0.881632 - outer loop - vertex 0.164461 0.446078 0.451353 - vertex 0.226481 0.494555 0.410996 - vertex 0.147354 0.523016 0.423016 - endloop - endfacet - facet normal 0.338867 0.658151 0.672314 - outer loop - vertex 0.147354 0.523016 0.423016 - vertex 0.226481 0.494555 0.410996 - vertex 0.209403 0.550084 0.365244 - endloop - endfacet - facet normal 0.364544 0.62929 0.686369 - outer loop - vertex 0.147354 0.523016 0.423016 - vertex 0.209403 0.550084 0.365244 - vertex 0.133737 0.583359 0.374925 - endloop - endfacet - facet normal 0.31721 0.0101837 0.948301 - outer loop - vertex 0.335381 -0.153076 0.462903 - vertex 0.423171 -0.153076 0.433537 - vertex 0.419978 -0.0536202 0.433537 - endloop - endfacet - facet normal 0.318691 0.00878127 0.947818 - outer loop - vertex 0.335381 -0.153076 0.462903 - vertex 0.419978 -0.0536202 0.433537 - vertex 0.332562 -0.0507537 0.462903 - endloop - endfacet - facet normal 0.319286 0.0352698 0.947002 - outer loop - vertex 0.332562 -0.0507537 0.462903 - vertex 0.419978 -0.0536202 0.433537 - vertex 0.410677 0.0446986 0.433011 - endloop - endfacet - facet normal 0.323651 0.0312766 0.945659 - outer loop - vertex 0.332562 -0.0507537 0.462903 - vertex 0.410677 0.0446986 0.433011 - vertex 0.324458 0.0505703 0.462326 - endloop - endfacet - facet normal 0.325253 0.0667361 0.943269 - outer loop - vertex 0.324458 0.0505703 0.462326 - vertex 0.410677 0.0446986 0.433011 - vertex 0.395547 0.140743 0.431433 - endloop - endfacet - facet normal 0.332749 0.0600834 0.941099 - outer loop - vertex 0.324458 0.0505703 0.462326 - vertex 0.395547 0.140743 0.431433 - vertex 0.311423 0.149897 0.460593 - endloop - endfacet - facet normal 0.335998 0.106898 0.935777 - outer loop - vertex 0.311423 0.149897 0.460593 - vertex 0.395547 0.140743 0.431433 - vertex 0.374867 0.233374 0.428277 - endloop - endfacet - facet normal 0.347372 0.0970592 0.932691 - outer loop - vertex 0.311423 0.149897 0.460593 - vertex 0.374867 0.233374 0.428277 - vertex 0.29381 0.246228 0.457128 - endloop - endfacet - facet normal 0.353362 0.159171 0.921846 - outer loop - vertex 0.29381 0.246228 0.457128 - vertex 0.374867 0.233374 0.428277 - vertex 0.348914 0.321457 0.423016 - endloop - endfacet - facet normal 0.370172 0.144927 0.917589 - outer loop - vertex 0.29381 0.246228 0.457128 - vertex 0.348914 0.321457 0.423016 - vertex 0.271975 0.338564 0.451353 - endloop - endfacet - facet normal 0.3853 0.272522 0.881632 - outer loop - vertex 0.271975 0.338564 0.451353 - vertex 0.348914 0.321457 0.423016 - vertex 0.320453 0.400583 0.410996 - endloop - endfacet - facet normal 0.405925 0.253977 0.877907 - outer loop - vertex 0.271975 0.338564 0.451353 - vertex 0.320453 0.400583 0.410996 - vertex 0.248628 0.422731 0.437799 - endloop - endfacet - facet normal 0.431539 0.461335 0.775206 - outer loop - vertex 0.248628 0.422731 0.437799 - vertex 0.320453 0.400583 0.410996 - vertex 0.292246 0.466349 0.38756 - endloop - endfacet - facet normal 0.461336 0.431539 0.775206 - outer loop - vertex 0.248628 0.422731 0.437799 - vertex 0.292246 0.466349 0.38756 - vertex 0.226481 0.494555 0.410996 - endloop - endfacet - facet normal 0.487016 0.66907 0.561392 - outer loop - vertex 0.226481 0.494555 0.410996 - vertex 0.292246 0.466349 0.38756 - vertex 0.271692 0.515237 0.347126 - endloop - endfacet - facet normal 0.520668 0.632558 0.573389 - outer loop - vertex 0.226481 0.494555 0.410996 - vertex 0.271692 0.515237 0.347126 - vertex 0.209403 0.550084 0.365244 - endloop - endfacet - facet normal 0.581201 0.0208771 0.813492 - outer loop - vertex 0.423171 -0.153076 0.433537 - vertex 0.492468 -0.153076 0.384027 - vertex 0.48898 -0.0559793 0.384027 - endloop - endfacet - facet normal 0.583289 0.0187259 0.812049 - outer loop - vertex 0.423171 -0.153076 0.433537 - vertex 0.48898 -0.0559793 0.384027 - vertex 0.419978 -0.0536202 0.433537 - endloop - endfacet - facet normal 0.583182 0.0662831 0.809633 - outer loop - vertex 0.419978 -0.0536202 0.433537 - vertex 0.48898 -0.0559793 0.384027 - vertex 0.478716 0.0398893 0.383572 - endloop - endfacet - facet normal 0.589544 0.060078 0.805499 - outer loop - vertex 0.419978 -0.0536202 0.433537 - vertex 0.478716 0.0398893 0.383572 - vertex 0.410677 0.0446986 0.433011 - endloop - endfacet - facet normal 0.58917 0.117908 0.79936 - outer loop - vertex 0.410677 0.0446986 0.433011 - vertex 0.478716 0.0398893 0.383572 - vertex 0.461875 0.133301 0.382207 - endloop - endfacet - facet normal 0.600266 0.107582 0.792532 - outer loop - vertex 0.410677 0.0446986 0.433011 - vertex 0.461875 0.133301 0.382207 - vertex 0.395547 0.140743 0.431433 - endloop - endfacet - facet normal 0.599223 0.17882 0.780356 - outer loop - vertex 0.395547 0.140743 0.431433 - vertex 0.461875 0.133301 0.382207 - vertex 0.438655 0.223027 0.379476 - endloop - endfacet - facet normal 0.616038 0.163787 0.770501 - outer loop - vertex 0.395547 0.140743 0.431433 - vertex 0.438655 0.223027 0.379476 - vertex 0.374867 0.233374 0.428277 - endloop - endfacet - facet normal 0.61342 0.252783 0.748209 - outer loop - vertex 0.374867 0.233374 0.428277 - vertex 0.438655 0.223027 0.379476 - vertex 0.409257 0.307839 0.374925 - endloop - endfacet - facet normal 0.637734 0.231774 0.734559 - outer loop - vertex 0.374867 0.233374 0.428277 - vertex 0.409257 0.307839 0.374925 - vertex 0.348914 0.321457 0.423016 - endloop - endfacet - facet normal 0.62929 0.364543 0.686369 - outer loop - vertex 0.348914 0.321457 0.423016 - vertex 0.409257 0.307839 0.374925 - vertex 0.375982 0.383505 0.365244 - endloop - endfacet - facet normal 0.658151 0.338867 0.672314 - outer loop - vertex 0.348914 0.321457 0.423016 - vertex 0.375982 0.383505 0.365244 - vertex 0.320453 0.400583 0.410996 - endloop - endfacet - facet normal 0.632558 0.520668 0.573389 - outer loop - vertex 0.320453 0.400583 0.410996 - vertex 0.375982 0.383505 0.365244 - vertex 0.341135 0.445794 0.347126 - endloop - endfacet - facet normal 0.66907 0.487016 0.561392 - outer loop - vertex 0.320453 0.400583 0.410996 - vertex 0.341135 0.445794 0.347126 - vertex 0.292246 0.466349 0.38756 - endloop - endfacet - facet normal 0.623135 0.661619 0.417089 - outer loop - vertex 0.292246 0.466349 0.38756 - vertex 0.341135 0.445794 0.347126 - vertex 0.312305 0.486408 0.325773 - endloop - endfacet - facet normal 0.661619 0.623134 0.417089 - outer loop - vertex 0.292246 0.466349 0.38756 - vertex 0.312305 0.486408 0.325773 - vertex 0.271692 0.515237 0.347126 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -0.327179 -0.153076 0.491135 - vertex -0.327179 -0.03833 0.491135 - vertex -0.441437 -0.0388183 0.491135 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.327179 -0.153076 0.491135 - vertex -0.441437 -0.0388183 0.491135 - vertex -0.441925 -0.153076 0.491135 - endloop - endfacet - facet normal -0.00579568 2.47709e-05 0.999983 - outer loop - vertex -0.441925 -0.153076 0.491135 - vertex -0.441437 -0.0388183 0.491135 - vertex -0.555092 -0.0401404 0.490477 - endloop - endfacet - facet normal -0.005771 4.95104e-05 0.999983 - outer loop - vertex -0.441925 -0.153076 0.491135 - vertex -0.555092 -0.0401404 0.490477 - vertex -0.556066 -0.153076 0.490477 - endloop - endfacet - facet normal -0.0175732 0.000151303 0.999846 - outer loop - vertex -0.556066 -0.153076 0.490477 - vertex -0.555092 -0.0401404 0.490477 - vertex -0.667544 -0.0421538 0.488501 - endloop - endfacet - facet normal -0.0174955 0.000229429 0.999847 - outer loop - vertex -0.556066 -0.153076 0.490477 - vertex -0.667544 -0.0421538 0.488501 - vertex -0.668998 -0.153076 0.488501 - endloop - endfacet - facet normal -0.0357077 0.000468257 0.999362 - outer loop - vertex -0.668998 -0.153076 0.488501 - vertex -0.667544 -0.0421538 0.488501 - vertex -0.778189 -0.0447158 0.484548 - endloop - endfacet - facet normal -0.0355451 0.000632272 0.999368 - outer loop - vertex -0.668998 -0.153076 0.488501 - vertex -0.778189 -0.0447158 0.484548 - vertex -0.780117 -0.153076 0.484548 - endloop - endfacet - facet normal -0.0607746 0.00108105 0.998151 - outer loop - vertex -0.780117 -0.153076 0.484548 - vertex -0.778189 -0.0447158 0.484548 - vertex -0.886426 -0.0476838 0.477961 - endloop - endfacet - facet normal -0.0604876 0.00137167 0.998168 - outer loop - vertex -0.780117 -0.153076 0.484548 - vertex -0.886426 -0.0476838 0.477961 - vertex -0.888816 -0.153076 0.477961 - endloop - endfacet - facet normal -0.148288 0.00336271 0.988939 - outer loop - vertex -0.888816 -0.153076 0.477961 - vertex -0.886426 -0.0476838 0.477961 - vertex -0.98692 -0.0507532 0.462903 - endloop - endfacet - facet normal -0.14757 0.00406654 0.989043 - outer loop - vertex -0.888816 -0.153076 0.477961 - vertex -0.98692 -0.0507532 0.462903 - vertex -0.989739 -0.153076 0.462903 - endloop - endfacet - facet normal -0.318691 0.00878174 0.947818 - outer loop - vertex -0.989739 -0.153076 0.462903 - vertex -0.98692 -0.0507532 0.462903 - vertex -1.07434 -0.0536197 0.433537 - endloop - endfacet - facet normal -0.31721 0.0101843 0.948301 - outer loop - vertex -0.989739 -0.153076 0.462903 - vertex -1.07434 -0.0536197 0.433537 - vertex -1.07753 -0.153076 0.433537 - endloop - endfacet - facet normal -0.583289 0.0187271 0.812049 - outer loop - vertex -1.07753 -0.153076 0.433537 - vertex -1.07434 -0.0536197 0.433537 - vertex -1.14334 -0.0559787 0.384027 - endloop - endfacet - facet normal -0.581201 0.020878 0.813492 - outer loop - vertex -1.07753 -0.153076 0.433537 - vertex -1.14334 -0.0559787 0.384027 - vertex -1.14683 -0.153076 0.384027 - endloop - endfacet - facet normal -4.95047e-05 0.005771 0.999983 - outer loop - vertex -0.327179 -0.03833 0.491135 - vertex -0.327179 0.0758114 0.490477 - vertex -0.440114 0.0748374 0.490477 - endloop - endfacet - facet normal -2.47658e-05 0.00579568 0.999983 - outer loop - vertex -0.327179 -0.03833 0.491135 - vertex -0.440114 0.0748374 0.490477 - vertex -0.441437 -0.0388183 0.491135 - endloop - endfacet - facet normal -0.0059822 0.00586489 0.999965 - outer loop - vertex -0.441437 -0.0388183 0.491135 - vertex -0.440114 0.0748374 0.490477 - vertex -0.55244 0.0721855 0.48982 - endloop - endfacet - facet normal -0.00586488 0.00598221 0.999965 - outer loop - vertex -0.441437 -0.0388183 0.491135 - vertex -0.55244 0.0721855 0.48982 - vertex -0.555092 -0.0401404 0.490477 - endloop - endfacet - facet normal -0.01795 0.00626669 0.999819 - outer loop - vertex -0.555092 -0.0401404 0.490477 - vertex -0.55244 0.0721855 0.48982 - vertex -0.663547 0.0681255 0.487851 - endloop - endfacet - facet normal -0.017687 0.00653025 0.999822 - outer loop - vertex -0.555092 -0.0401404 0.490477 - vertex -0.663547 0.0681255 0.487851 - vertex -0.667544 -0.0421538 0.488501 - endloop - endfacet - facet normal -0.0363589 0.007204 0.999313 - outer loop - vertex -0.667544 -0.0421538 0.488501 - vertex -0.663547 0.0681255 0.487851 - vertex -0.772824 0.0629275 0.483912 - endloop - endfacet - facet normal -0.0358736 0.00769078 0.999327 - outer loop - vertex -0.667544 -0.0421538 0.488501 - vertex -0.772824 0.0629275 0.483912 - vertex -0.778189 -0.0447158 0.484548 - endloop - endfacet - facet normal -0.0618294 0.00897682 0.998046 - outer loop - vertex -0.778189 -0.0447158 0.484548 - vertex -0.772824 0.0629275 0.483912 - vertex -0.879663 0.0568614 0.477348 - endloop - endfacet - facet normal -0.0610099 0.00979856 0.998089 - outer loop - vertex -0.778189 -0.0447158 0.484548 - vertex -0.879663 0.0568614 0.477348 - vertex -0.886426 -0.0476838 0.477961 - endloop - endfacet - facet normal -0.150748 0.0155473 0.98845 - outer loop - vertex -0.886426 -0.0476838 0.477961 - vertex -0.879663 0.0568614 0.477348 - vertex -0.978815 0.0505708 0.462326 - endloop - endfacet - facet normal -0.148689 0.0175281 0.988729 - outer loop - vertex -0.886426 -0.0476838 0.477961 - vertex -0.978815 0.0505708 0.462326 - vertex -0.98692 -0.0507532 0.462903 - endloop - endfacet - facet normal -0.323651 0.0312767 0.945659 - outer loop - vertex -0.98692 -0.0507532 0.462903 - vertex -0.978815 0.0505708 0.462326 - vertex -1.06503 0.0446991 0.433011 - endloop - endfacet - facet normal -0.319286 0.03527 0.947002 - outer loop - vertex -0.98692 -0.0507532 0.462903 - vertex -1.06503 0.0446991 0.433011 - vertex -1.07434 -0.0536197 0.433537 - endloop - endfacet - facet normal -0.589544 0.0600784 0.805499 - outer loop - vertex -1.07434 -0.0536197 0.433537 - vertex -1.06503 0.0446991 0.433011 - vertex -1.13307 0.0398899 0.383572 - endloop - endfacet - facet normal -0.583182 0.0662835 0.809633 - outer loop - vertex -1.07434 -0.0536197 0.433537 - vertex -1.13307 0.0398899 0.383572 - vertex -1.14334 -0.0559787 0.384027 - endloop - endfacet - facet normal -0.000229415 0.0174955 0.999847 - outer loop - vertex -0.327179 0.0758114 0.490477 - vertex -0.327179 0.188743 0.488501 - vertex -0.438101 0.187289 0.488501 - endloop - endfacet - facet normal -0.000151286 0.0175732 0.999846 - outer loop - vertex -0.327179 0.0758114 0.490477 - vertex -0.438101 0.187289 0.488501 - vertex -0.440114 0.0748374 0.490477 - endloop - endfacet - facet normal -0.00653024 0.017687 0.999822 - outer loop - vertex -0.440114 0.0748374 0.490477 - vertex -0.438101 0.187289 0.488501 - vertex -0.54838 0.183292 0.487851 - endloop - endfacet - facet normal -0.00626667 0.01795 0.999819 - outer loop - vertex -0.440114 0.0748374 0.490477 - vertex -0.54838 0.183292 0.487851 - vertex -0.55244 0.0721855 0.48982 - endloop - endfacet - facet normal -0.0189147 0.0184092 0.999652 - outer loop - vertex -0.55244 0.0721855 0.48982 - vertex -0.54838 0.183292 0.487851 - vertex -0.657374 0.177119 0.485902 - endloop - endfacet - facet normal -0.0184092 0.0189147 0.999652 - outer loop - vertex -0.55244 0.0721855 0.48982 - vertex -0.657374 0.177119 0.485902 - vertex -0.663547 0.0681255 0.487851 - endloop - endfacet - facet normal -0.0378594 0.0200061 0.999083 - outer loop - vertex -0.663547 0.0681255 0.487851 - vertex -0.657374 0.177119 0.485902 - vertex -0.764439 0.169137 0.482005 - endloop - endfacet - facet normal -0.0370009 0.0208644 0.999097 - outer loop - vertex -0.663547 0.0681255 0.487851 - vertex -0.764439 0.169137 0.482005 - vertex -0.772824 0.0629275 0.483912 - endloop - endfacet - facet normal -0.0640897 0.0229775 0.99768 - outer loop - vertex -0.772824 0.0629275 0.483912 - vertex -0.764439 0.169137 0.482005 - vertex -0.868933 0.159713 0.47551 - endloop - endfacet - facet normal -0.0626848 0.0243776 0.997736 - outer loop - vertex -0.772824 0.0629275 0.483912 - vertex -0.868933 0.159713 0.47551 - vertex -0.879663 0.0568614 0.477348 - endloop - endfacet - facet normal -0.155491 0.033872 0.987256 - outer loop - vertex -0.879663 0.0568614 0.477348 - vertex -0.868933 0.159713 0.47551 - vertex -0.96578 0.149897 0.460593 - endloop - endfacet - facet normal -0.152004 0.037176 0.987681 - outer loop - vertex -0.879663 0.0568614 0.477348 - vertex -0.96578 0.149897 0.460593 - vertex -0.978815 0.0505708 0.462326 - endloop - endfacet - facet normal -0.332749 0.0600839 0.941099 - outer loop - vertex -0.978815 0.0505708 0.462326 - vertex -0.96578 0.149897 0.460593 - vertex -1.0499 0.140743 0.431433 - endloop - endfacet - facet normal -0.325254 0.0667366 0.943269 - outer loop - vertex -0.978815 0.0505708 0.462326 - vertex -1.0499 0.140743 0.431433 - vertex -1.06503 0.0446991 0.433011 - endloop - endfacet - facet normal -0.600265 0.107582 0.792532 - outer loop - vertex -1.06503 0.0446991 0.433011 - vertex -1.0499 0.140743 0.431433 - vertex -1.11623 0.133301 0.382207 - endloop - endfacet - facet normal -0.58917 0.117908 0.79936 - outer loop - vertex -1.06503 0.0446991 0.433011 - vertex -1.11623 0.133301 0.382207 - vertex -1.13307 0.0398899 0.383572 - endloop - endfacet - facet normal -0.000632223 0.0355451 0.999368 - outer loop - vertex -0.327179 0.188743 0.488501 - vertex -0.327179 0.299862 0.484548 - vertex -0.435539 0.297934 0.484548 - endloop - endfacet - facet normal -0.000468228 0.0357077 0.999362 - outer loop - vertex -0.327179 0.188743 0.488501 - vertex -0.435539 0.297934 0.484548 - vertex -0.438101 0.187289 0.488501 - endloop - endfacet - facet normal -0.00769078 0.0358736 0.999327 - outer loop - vertex -0.438101 0.187289 0.488501 - vertex -0.435539 0.297934 0.484548 - vertex -0.543182 0.292569 0.483912 - endloop - endfacet - facet normal -0.00720399 0.0363589 0.999313 - outer loop - vertex -0.438101 0.187289 0.488501 - vertex -0.543182 0.292569 0.483912 - vertex -0.54838 0.183292 0.487851 - endloop - endfacet - facet normal -0.0208644 0.0370009 0.999097 - outer loop - vertex -0.54838 0.183292 0.487851 - vertex -0.543182 0.292569 0.483912 - vertex -0.649392 0.284184 0.482005 - endloop - endfacet - facet normal -0.0200061 0.0378594 0.999083 - outer loop - vertex -0.54838 0.183292 0.487851 - vertex -0.649392 0.284184 0.482005 - vertex -0.657374 0.177119 0.485902 - endloop - endfacet - facet normal -0.0407609 0.0393816 0.998393 - outer loop - vertex -0.657374 0.177119 0.485902 - vertex -0.649392 0.284184 0.482005 - vertex -0.753451 0.273197 0.47819 - endloop - endfacet - facet normal -0.0393816 0.040761 0.998393 - outer loop - vertex -0.657374 0.177119 0.485902 - vertex -0.753451 0.273197 0.47819 - vertex -0.764439 0.169137 0.482005 - endloop - endfacet - facet normal -0.0683228 0.043755 0.996703 - outer loop - vertex -0.764439 0.169137 0.482005 - vertex -0.753451 0.273197 0.47819 - vertex -0.854643 0.260023 0.471832 - endloop - endfacet - facet normal -0.0661052 0.0459616 0.996754 - outer loop - vertex -0.764439 0.169137 0.482005 - vertex -0.854643 0.260023 0.471832 - vertex -0.868933 0.159713 0.47551 - endloop - endfacet - facet normal -0.163581 0.059407 0.98474 - outer loop - vertex -0.868933 0.159713 0.47551 - vertex -0.854643 0.260023 0.471832 - vertex -0.948168 0.246228 0.457128 - endloop - endfacet - facet normal -0.15828 0.0643797 0.985293 - outer loop - vertex -0.868933 0.159713 0.47551 - vertex -0.948168 0.246228 0.457128 - vertex -0.96578 0.149897 0.460593 - endloop - endfacet - facet normal -0.347372 0.0970594 0.932691 - outer loop - vertex -0.96578 0.149897 0.460593 - vertex -0.948168 0.246228 0.457128 - vertex -1.02922 0.233375 0.428277 - endloop - endfacet - facet normal -0.335998 0.106898 0.935777 - outer loop - vertex -0.96578 0.149897 0.460593 - vertex -1.02922 0.233375 0.428277 - vertex -1.0499 0.140743 0.431433 - endloop - endfacet - facet normal -0.616038 0.163786 0.770501 - outer loop - vertex -1.0499 0.140743 0.431433 - vertex -1.02922 0.233375 0.428277 - vertex -1.09301 0.223027 0.379476 - endloop - endfacet - facet normal -0.599222 0.17882 0.780357 - outer loop - vertex -1.0499 0.140743 0.431433 - vertex -1.09301 0.223027 0.379476 - vertex -1.11623 0.133301 0.382207 - endloop - endfacet - facet normal -0.00137164 0.0604876 0.998168 - outer loop - vertex -0.327179 0.299862 0.484548 - vertex -0.327179 0.408561 0.477961 - vertex -0.432571 0.406171 0.477961 - endloop - endfacet - facet normal -0.00108097 0.0607747 0.998151 - outer loop - vertex -0.327179 0.299862 0.484548 - vertex -0.432571 0.406171 0.477961 - vertex -0.435539 0.297934 0.484548 - endloop - endfacet - facet normal -0.00979853 0.0610099 0.998089 - outer loop - vertex -0.435539 0.297934 0.484548 - vertex -0.432571 0.406171 0.477961 - vertex -0.537116 0.399408 0.477348 - endloop - endfacet - facet normal -0.00897684 0.0618294 0.998046 - outer loop - vertex -0.435539 0.297934 0.484548 - vertex -0.537116 0.399408 0.477348 - vertex -0.543182 0.292569 0.483912 - endloop - endfacet - facet normal -0.0243778 0.0626848 0.997736 - outer loop - vertex -0.543182 0.292569 0.483912 - vertex -0.537116 0.399408 0.477348 - vertex -0.639967 0.388678 0.475509 - endloop - endfacet - facet normal -0.0229775 0.06409 0.99768 - outer loop - vertex -0.543182 0.292569 0.483912 - vertex -0.639967 0.388678 0.475509 - vertex -0.649392 0.284184 0.482005 - endloop - endfacet - facet normal -0.0459613 0.0661054 0.996754 - outer loop - vertex -0.649392 0.284184 0.482005 - vertex -0.639967 0.388678 0.475509 - vertex -0.740278 0.374389 0.471832 - endloop - endfacet - facet normal -0.0437549 0.0683228 0.996703 - outer loop - vertex -0.649392 0.284184 0.482005 - vertex -0.740278 0.374389 0.471832 - vertex -0.753451 0.273197 0.47819 - endloop - endfacet - facet normal -0.0759175 0.0723704 0.994484 - outer loop - vertex -0.753451 0.273197 0.47819 - vertex -0.740278 0.374389 0.471832 - vertex -0.837201 0.356946 0.465702 - endloop - endfacet - facet normal -0.0723703 0.0759175 0.994484 - outer loop - vertex -0.753451 0.273197 0.47819 - vertex -0.837201 0.356946 0.465702 - vertex -0.854643 0.260023 0.471832 - endloop - endfacet - facet normal -0.177072 0.0938264 0.979715 - outer loop - vertex -0.854643 0.260023 0.471832 - vertex -0.837201 0.356946 0.465702 - vertex -0.926333 0.338564 0.451353 - endloop - endfacet - facet normal -0.169076 0.101299 0.980383 - outer loop - vertex -0.854643 0.260023 0.471832 - vertex -0.926333 0.338564 0.451353 - vertex -0.948168 0.246228 0.457128 - endloop - endfacet - facet normal -0.370172 0.144926 0.917589 - outer loop - vertex -0.948168 0.246228 0.457128 - vertex -0.926333 0.338564 0.451353 - vertex -1.00327 0.321457 0.423016 - endloop - endfacet - facet normal -0.353361 0.159171 0.921846 - outer loop - vertex -0.948168 0.246228 0.457128 - vertex -1.00327 0.321457 0.423016 - vertex -1.02922 0.233375 0.428277 - endloop - endfacet - facet normal -0.637735 0.231775 0.734558 - outer loop - vertex -1.02922 0.233375 0.428277 - vertex -1.00327 0.321457 0.423016 - vertex -1.06361 0.307839 0.374925 - endloop - endfacet - facet normal -0.61342 0.252784 0.748208 - outer loop - vertex -1.02922 0.233375 0.428277 - vertex -1.06361 0.307839 0.374925 - vertex -1.09301 0.223027 0.379476 - endloop - endfacet - facet normal -0.00406628 0.14757 0.989043 - outer loop - vertex -0.327179 0.408561 0.477961 - vertex -0.327179 0.509484 0.462903 - vertex -0.429501 0.506665 0.462903 - endloop - endfacet - facet normal -0.00336262 0.148288 0.988939 - outer loop - vertex -0.327179 0.408561 0.477961 - vertex -0.429501 0.506665 0.462903 - vertex -0.432571 0.406171 0.477961 - endloop - endfacet - facet normal -0.017528 0.148689 0.988729 - outer loop - vertex -0.432571 0.406171 0.477961 - vertex -0.429501 0.506665 0.462903 - vertex -0.530825 0.498561 0.462326 - endloop - endfacet - facet normal -0.0155472 0.150748 0.98845 - outer loop - vertex -0.432571 0.406171 0.477961 - vertex -0.530825 0.498561 0.462326 - vertex -0.537116 0.399408 0.477348 - endloop - endfacet - facet normal -0.0371758 0.152004 0.98768 - outer loop - vertex -0.537116 0.399408 0.477348 - vertex -0.530825 0.498561 0.462326 - vertex -0.630152 0.485525 0.460593 - endloop - endfacet - facet normal -0.0338722 0.15549 0.987256 - outer loop - vertex -0.537116 0.399408 0.477348 - vertex -0.630152 0.485525 0.460593 - vertex -0.639967 0.388678 0.475509 - endloop - endfacet - facet normal -0.0643795 0.15828 0.985293 - outer loop - vertex -0.639967 0.388678 0.475509 - vertex -0.630152 0.485525 0.460593 - vertex -0.726483 0.467913 0.457128 - endloop - endfacet - facet normal -0.0594067 0.163581 0.98474 - outer loop - vertex -0.639967 0.388678 0.475509 - vertex -0.726483 0.467913 0.457128 - vertex -0.740278 0.374389 0.471832 - endloop - endfacet - facet normal -0.1013 0.169076 0.980383 - outer loop - vertex -0.740278 0.374389 0.471832 - vertex -0.726483 0.467913 0.457128 - vertex -0.818819 0.446078 0.451353 - endloop - endfacet - facet normal -0.0938263 0.177073 0.979715 - outer loop - vertex -0.740278 0.374389 0.471832 - vertex -0.818819 0.446078 0.451353 - vertex -0.837201 0.356946 0.465702 - endloop - endfacet - facet normal -0.208973 0.197294 0.957813 - outer loop - vertex -0.837201 0.356946 0.465702 - vertex -0.818819 0.446078 0.451353 - vertex -0.902986 0.422731 0.437799 - endloop - endfacet - facet normal -0.197293 0.208974 0.957813 - outer loop - vertex -0.837201 0.356946 0.465702 - vertex -0.902986 0.422731 0.437799 - vertex -0.926333 0.338564 0.451353 - endloop - endfacet - facet normal -0.405924 0.253977 0.877907 - outer loop - vertex -0.926333 0.338564 0.451353 - vertex -0.902986 0.422731 0.437799 - vertex -0.97481 0.400584 0.410996 - endloop - endfacet - facet normal -0.385299 0.272523 0.881632 - outer loop - vertex -0.926333 0.338564 0.451353 - vertex -0.97481 0.400584 0.410996 - vertex -1.00327 0.321457 0.423016 - endloop - endfacet - facet normal -0.658151 0.338868 0.672314 - outer loop - vertex -1.00327 0.321457 0.423016 - vertex -0.97481 0.400584 0.410996 - vertex -1.03034 0.383506 0.365244 - endloop - endfacet - facet normal -0.629291 0.364543 0.686368 - outer loop - vertex -1.00327 0.321457 0.423016 - vertex -1.03034 0.383506 0.365244 - vertex -1.06361 0.307839 0.374925 - endloop - endfacet - facet normal -0.0101838 0.31721 0.948301 - outer loop - vertex -0.327179 0.509484 0.462903 - vertex -0.327179 0.597273 0.433537 - vertex -0.426635 0.59408 0.433537 - endloop - endfacet - facet normal -0.00878118 0.318691 0.947818 - outer loop - vertex -0.327179 0.509484 0.462903 - vertex -0.426635 0.59408 0.433537 - vertex -0.429501 0.506665 0.462903 - endloop - endfacet - facet normal -0.0352697 0.319286 0.947002 - outer loop - vertex -0.429501 0.506665 0.462903 - vertex -0.426635 0.59408 0.433537 - vertex -0.524954 0.58478 0.433011 - endloop - endfacet - facet normal -0.0312766 0.323651 0.945659 - outer loop - vertex -0.429501 0.506665 0.462903 - vertex -0.524954 0.58478 0.433011 - vertex -0.530825 0.498561 0.462326 - endloop - endfacet - facet normal -0.0667361 0.325253 0.943269 - outer loop - vertex -0.530825 0.498561 0.462326 - vertex -0.524954 0.58478 0.433011 - vertex -0.620998 0.56965 0.431433 - endloop - endfacet - facet normal -0.0600834 0.332749 0.941099 - outer loop - vertex -0.530825 0.498561 0.462326 - vertex -0.620998 0.56965 0.431433 - vertex -0.630152 0.485525 0.460593 - endloop - endfacet - facet normal -0.106898 0.335998 0.935777 - outer loop - vertex -0.630152 0.485525 0.460593 - vertex -0.620998 0.56965 0.431433 - vertex -0.713629 0.54897 0.428277 - endloop - endfacet - facet normal -0.0970592 0.347373 0.932691 - outer loop - vertex -0.630152 0.485525 0.460593 - vertex -0.713629 0.54897 0.428277 - vertex -0.726483 0.467913 0.457128 - endloop - endfacet - facet normal -0.159171 0.353362 0.921846 - outer loop - vertex -0.726483 0.467913 0.457128 - vertex -0.713629 0.54897 0.428277 - vertex -0.801712 0.523017 0.423016 - endloop - endfacet - facet normal -0.144927 0.370172 0.917589 - outer loop - vertex -0.726483 0.467913 0.457128 - vertex -0.801712 0.523017 0.423016 - vertex -0.818819 0.446078 0.451353 - endloop - endfacet - facet normal -0.272522 0.3853 0.881633 - outer loop - vertex -0.818819 0.446078 0.451353 - vertex -0.801712 0.523017 0.423016 - vertex -0.880839 0.494555 0.410996 - endloop - endfacet - facet normal -0.253977 0.405924 0.877907 - outer loop - vertex -0.818819 0.446078 0.451353 - vertex -0.880839 0.494555 0.410996 - vertex -0.902986 0.422731 0.437799 - endloop - endfacet - facet normal -0.461335 0.431538 0.775206 - outer loop - vertex -0.902986 0.422731 0.437799 - vertex -0.880839 0.494555 0.410996 - vertex -0.946604 0.466349 0.38756 - endloop - endfacet - facet normal -0.431539 0.461335 0.775206 - outer loop - vertex -0.902986 0.422731 0.437799 - vertex -0.946604 0.466349 0.38756 - vertex -0.97481 0.400584 0.410996 - endloop - endfacet - facet normal -0.66907 0.487016 0.561392 - outer loop - vertex -0.97481 0.400584 0.410996 - vertex -0.946604 0.466349 0.38756 - vertex -0.995492 0.445794 0.347126 - endloop - endfacet - facet normal -0.632558 0.520668 0.573389 - outer loop - vertex -0.97481 0.400584 0.410996 - vertex -0.995492 0.445794 0.347126 - vertex -1.03034 0.383506 0.365244 - endloop - endfacet - facet normal -0.020877 0.581201 0.813492 - outer loop - vertex -0.327179 0.597273 0.433537 - vertex -0.327179 0.666571 0.384027 - vertex -0.424276 0.663083 0.384027 - endloop - endfacet - facet normal -0.018726 0.583289 0.812049 - outer loop - vertex -0.327179 0.597273 0.433537 - vertex -0.424276 0.663083 0.384027 - vertex -0.426635 0.59408 0.433537 - endloop - endfacet - facet normal -0.0662831 0.583182 0.809633 - outer loop - vertex -0.426635 0.59408 0.433537 - vertex -0.424276 0.663083 0.384027 - vertex -0.520144 0.652819 0.383572 - endloop - endfacet - facet normal -0.0600776 0.589544 0.805499 - outer loop - vertex -0.426635 0.59408 0.433537 - vertex -0.520144 0.652819 0.383572 - vertex -0.524954 0.58478 0.433011 - endloop - endfacet - facet normal -0.117908 0.589171 0.79936 - outer loop - vertex -0.524954 0.58478 0.433011 - vertex -0.520144 0.652819 0.383572 - vertex -0.613556 0.635977 0.382207 - endloop - endfacet - facet normal -0.107582 0.600266 0.792532 - outer loop - vertex -0.524954 0.58478 0.433011 - vertex -0.613556 0.635977 0.382207 - vertex -0.620998 0.56965 0.431433 - endloop - endfacet - facet normal -0.17882 0.599223 0.780356 - outer loop - vertex -0.620998 0.56965 0.431433 - vertex -0.613556 0.635977 0.382207 - vertex -0.703282 0.612758 0.379476 - endloop - endfacet - facet normal -0.163787 0.616038 0.7705 - outer loop - vertex -0.620998 0.56965 0.431433 - vertex -0.703282 0.612758 0.379476 - vertex -0.713629 0.54897 0.428277 - endloop - endfacet - facet normal -0.252783 0.61342 0.748209 - outer loop - vertex -0.713629 0.54897 0.428277 - vertex -0.703282 0.612758 0.379476 - vertex -0.788094 0.583359 0.374925 - endloop - endfacet - facet normal -0.231774 0.637735 0.734558 - outer loop - vertex -0.713629 0.54897 0.428277 - vertex -0.788094 0.583359 0.374925 - vertex -0.801712 0.523017 0.423016 - endloop - endfacet - facet normal -0.364543 0.629291 0.686368 - outer loop - vertex -0.801712 0.523017 0.423016 - vertex -0.788094 0.583359 0.374925 - vertex -0.86376 0.550085 0.365244 - endloop - endfacet - facet normal -0.338867 0.658152 0.672314 - outer loop - vertex -0.801712 0.523017 0.423016 - vertex -0.86376 0.550085 0.365244 - vertex -0.880839 0.494555 0.410996 - endloop - endfacet - facet normal -0.520668 0.632559 0.573389 - outer loop - vertex -0.880839 0.494555 0.410996 - vertex -0.86376 0.550085 0.365244 - vertex -0.926049 0.515237 0.347126 - endloop - endfacet - facet normal -0.487016 0.669071 0.561391 - outer loop - vertex -0.880839 0.494555 0.410996 - vertex -0.926049 0.515237 0.347126 - vertex -0.946604 0.466349 0.38756 - endloop - endfacet - facet normal -0.661618 0.623136 0.417089 - outer loop - vertex -0.946604 0.466349 0.38756 - vertex -0.926049 0.515237 0.347126 - vertex -0.966663 0.486408 0.325773 - endloop - endfacet - facet normal -0.623134 0.661619 0.417089 - outer loop - vertex -0.946604 0.466349 0.38756 - vertex -0.966663 0.486408 0.325773 - vertex -0.995492 0.445794 0.347126 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.327179 -0.153076 0.491135 - vertex -0.441925 -0.153076 0.491135 - vertex -0.441437 -0.267334 0.491135 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.327179 -0.153076 0.491135 - vertex -0.441437 -0.267334 0.491135 - vertex -0.327179 -0.267822 0.491135 - endloop - endfacet - facet normal -2.47694e-05 -0.00579569 0.999983 - outer loop - vertex -0.327179 -0.267822 0.491135 - vertex -0.441437 -0.267334 0.491135 - vertex -0.440115 -0.38099 0.490477 - endloop - endfacet - facet normal -4.95089e-05 -0.005771 0.999983 - outer loop - vertex -0.327179 -0.267822 0.491135 - vertex -0.440115 -0.38099 0.490477 - vertex -0.327179 -0.381964 0.490477 - endloop - endfacet - facet normal -0.000151299 -0.0175732 0.999846 - outer loop - vertex -0.327179 -0.381964 0.490477 - vertex -0.440115 -0.38099 0.490477 - vertex -0.438101 -0.493441 0.488501 - endloop - endfacet - facet normal -0.000229438 -0.0174955 0.999847 - outer loop - vertex -0.327179 -0.381964 0.490477 - vertex -0.438101 -0.493441 0.488501 - vertex -0.327179 -0.494896 0.488501 - endloop - endfacet - facet normal -0.000468276 -0.0357077 0.999362 - outer loop - vertex -0.327179 -0.494896 0.488501 - vertex -0.438101 -0.493441 0.488501 - vertex -0.435539 -0.604086 0.484548 - endloop - endfacet - facet normal -0.000632252 -0.0355451 0.999368 - outer loop - vertex -0.327179 -0.494896 0.488501 - vertex -0.435539 -0.604086 0.484548 - vertex -0.327179 -0.606014 0.484548 - endloop - endfacet - facet normal -0.00108102 -0.0607747 0.998151 - outer loop - vertex -0.327179 -0.606014 0.484548 - vertex -0.435539 -0.604086 0.484548 - vertex -0.432571 -0.712323 0.477961 - endloop - endfacet - facet normal -0.0013717 -0.0604875 0.998168 - outer loop - vertex -0.327179 -0.606014 0.484548 - vertex -0.432571 -0.712323 0.477961 - vertex -0.327179 -0.714713 0.477961 - endloop - endfacet - facet normal -0.00336279 -0.148288 0.988939 - outer loop - vertex -0.327179 -0.714713 0.477961 - vertex -0.432571 -0.712323 0.477961 - vertex -0.429502 -0.812817 0.462903 - endloop - endfacet - facet normal -0.00406646 -0.14757 0.989043 - outer loop - vertex -0.327179 -0.714713 0.477961 - vertex -0.429502 -0.812817 0.462903 - vertex -0.327179 -0.815636 0.462903 - endloop - endfacet - facet normal -0.00878156 -0.318691 0.947818 - outer loop - vertex -0.327179 -0.815636 0.462903 - vertex -0.429502 -0.812817 0.462903 - vertex -0.426635 -0.900232 0.433537 - endloop - endfacet - facet normal -0.010184 -0.31721 0.948301 - outer loop - vertex -0.327179 -0.815636 0.462903 - vertex -0.426635 -0.900232 0.433537 - vertex -0.327179 -0.903425 0.433537 - endloop - endfacet - facet normal -0.0187264 -0.583289 0.812049 - outer loop - vertex -0.327179 -0.903425 0.433537 - vertex -0.426635 -0.900232 0.433537 - vertex -0.424276 -0.969235 0.384027 - endloop - endfacet - facet normal -0.0208777 -0.581201 0.813492 - outer loop - vertex -0.327179 -0.903425 0.433537 - vertex -0.424276 -0.969235 0.384027 - vertex -0.327179 -0.972723 0.384027 - endloop - endfacet - facet normal -0.005771 -4.95074e-05 0.999983 - outer loop - vertex -0.441925 -0.153076 0.491135 - vertex -0.556066 -0.153076 0.490477 - vertex -0.555092 -0.266012 0.490477 - endloop - endfacet - facet normal -0.00579569 -2.47664e-05 0.999983 - outer loop - vertex -0.441925 -0.153076 0.491135 - vertex -0.555092 -0.266012 0.490477 - vertex -0.441437 -0.267334 0.491135 - endloop - endfacet - facet normal -0.00586489 -0.0059822 0.999965 - outer loop - vertex -0.441437 -0.267334 0.491135 - vertex -0.555092 -0.266012 0.490477 - vertex -0.552441 -0.378338 0.48982 - endloop - endfacet - facet normal -0.00598221 -0.00586488 0.999965 - outer loop - vertex -0.441437 -0.267334 0.491135 - vertex -0.552441 -0.378338 0.48982 - vertex -0.440115 -0.38099 0.490477 - endloop - endfacet - facet normal -0.00626669 -0.01795 0.999819 - outer loop - vertex -0.440115 -0.38099 0.490477 - vertex -0.552441 -0.378338 0.48982 - vertex -0.548381 -0.489444 0.487851 - endloop - endfacet - facet normal -0.00653024 -0.017687 0.999822 - outer loop - vertex -0.440115 -0.38099 0.490477 - vertex -0.548381 -0.489444 0.487851 - vertex -0.438101 -0.493441 0.488501 - endloop - endfacet - facet normal -0.007204 -0.0363589 0.999313 - outer loop - vertex -0.438101 -0.493441 0.488501 - vertex -0.548381 -0.489444 0.487851 - vertex -0.543183 -0.598721 0.483912 - endloop - endfacet - facet normal -0.00769081 -0.0358736 0.999327 - outer loop - vertex -0.438101 -0.493441 0.488501 - vertex -0.543183 -0.598721 0.483912 - vertex -0.435539 -0.604086 0.484548 - endloop - endfacet - facet normal -0.00897689 -0.0618295 0.998046 - outer loop - vertex -0.435539 -0.604086 0.484548 - vertex -0.543183 -0.598721 0.483912 - vertex -0.537117 -0.70556 0.477348 - endloop - endfacet - facet normal -0.0097986 -0.0610099 0.998089 - outer loop - vertex -0.435539 -0.604086 0.484548 - vertex -0.537117 -0.70556 0.477348 - vertex -0.432571 -0.712323 0.477961 - endloop - endfacet - facet normal -0.0155474 -0.150748 0.98845 - outer loop - vertex -0.432571 -0.712323 0.477961 - vertex -0.537117 -0.70556 0.477348 - vertex -0.530826 -0.804713 0.462326 - endloop - endfacet - facet normal -0.0175282 -0.148689 0.988729 - outer loop - vertex -0.432571 -0.712323 0.477961 - vertex -0.530826 -0.804713 0.462326 - vertex -0.429502 -0.812817 0.462903 - endloop - endfacet - facet normal -0.0312769 -0.323651 0.945659 - outer loop - vertex -0.429502 -0.812817 0.462903 - vertex -0.530826 -0.804713 0.462326 - vertex -0.524954 -0.890932 0.433011 - endloop - endfacet - facet normal -0.03527 -0.319286 0.947002 - outer loop - vertex -0.429502 -0.812817 0.462903 - vertex -0.524954 -0.890932 0.433011 - vertex -0.426635 -0.900232 0.433537 - endloop - endfacet - facet normal -0.0600783 -0.589544 0.805499 - outer loop - vertex -0.426635 -0.900232 0.433537 - vertex -0.524954 -0.890932 0.433011 - vertex -0.520145 -0.958971 0.383572 - endloop - endfacet - facet normal -0.0662835 -0.583182 0.809633 - outer loop - vertex -0.426635 -0.900232 0.433537 - vertex -0.520145 -0.958971 0.383572 - vertex -0.424276 -0.969235 0.384027 - endloop - endfacet - facet normal -0.0174955 -0.00022941 0.999847 - outer loop - vertex -0.556066 -0.153076 0.490477 - vertex -0.668998 -0.153076 0.488501 - vertex -0.667544 -0.263998 0.488501 - endloop - endfacet - facet normal -0.0175732 -0.000151294 0.999846 - outer loop - vertex -0.556066 -0.153076 0.490477 - vertex -0.667544 -0.263998 0.488501 - vertex -0.555092 -0.266012 0.490477 - endloop - endfacet - facet normal -0.017687 -0.00653024 0.999822 - outer loop - vertex -0.555092 -0.266012 0.490477 - vertex -0.667544 -0.263998 0.488501 - vertex -0.663547 -0.374277 0.487851 - endloop - endfacet - facet normal -0.01795 -0.00626667 0.999819 - outer loop - vertex -0.555092 -0.266012 0.490477 - vertex -0.663547 -0.374277 0.487851 - vertex -0.552441 -0.378338 0.48982 - endloop - endfacet - facet normal -0.0184092 -0.0189147 0.999652 - outer loop - vertex -0.552441 -0.378338 0.48982 - vertex -0.663547 -0.374277 0.487851 - vertex -0.657374 -0.483271 0.485902 - endloop - endfacet - facet normal -0.0189147 -0.0184092 0.999652 - outer loop - vertex -0.552441 -0.378338 0.48982 - vertex -0.657374 -0.483271 0.485902 - vertex -0.548381 -0.489444 0.487851 - endloop - endfacet - facet normal -0.0200061 -0.0378594 0.999083 - outer loop - vertex -0.548381 -0.489444 0.487851 - vertex -0.657374 -0.483271 0.485902 - vertex -0.649392 -0.590336 0.482005 - endloop - endfacet - facet normal -0.0208644 -0.0370009 0.999097 - outer loop - vertex -0.548381 -0.489444 0.487851 - vertex -0.649392 -0.590336 0.482005 - vertex -0.543183 -0.598721 0.483912 - endloop - endfacet - facet normal -0.0229775 -0.0640898 0.99768 - outer loop - vertex -0.543183 -0.598721 0.483912 - vertex -0.649392 -0.590336 0.482005 - vertex -0.639968 -0.69483 0.47551 - endloop - endfacet - facet normal -0.0243776 -0.0626848 0.997736 - outer loop - vertex -0.543183 -0.598721 0.483912 - vertex -0.639968 -0.69483 0.47551 - vertex -0.537117 -0.70556 0.477348 - endloop - endfacet - facet normal -0.033872 -0.155491 0.987256 - outer loop - vertex -0.537117 -0.70556 0.477348 - vertex -0.639968 -0.69483 0.47551 - vertex -0.630152 -0.791677 0.460593 - endloop - endfacet - facet normal -0.0371759 -0.152004 0.987681 - outer loop - vertex -0.537117 -0.70556 0.477348 - vertex -0.630152 -0.791677 0.460593 - vertex -0.530826 -0.804713 0.462326 - endloop - endfacet - facet normal -0.0600836 -0.332749 0.941099 - outer loop - vertex -0.530826 -0.804713 0.462326 - vertex -0.630152 -0.791677 0.460593 - vertex -0.620998 -0.875802 0.431433 - endloop - endfacet - facet normal -0.0667362 -0.325253 0.943269 - outer loop - vertex -0.530826 -0.804713 0.462326 - vertex -0.620998 -0.875802 0.431433 - vertex -0.524954 -0.890932 0.433011 - endloop - endfacet - facet normal -0.107582 -0.600267 0.792532 - outer loop - vertex -0.524954 -0.890932 0.433011 - vertex -0.620998 -0.875802 0.431433 - vertex -0.613557 -0.942129 0.382207 - endloop - endfacet - facet normal -0.117909 -0.58917 0.79936 - outer loop - vertex -0.524954 -0.890932 0.433011 - vertex -0.613557 -0.942129 0.382207 - vertex -0.520145 -0.958971 0.383572 - endloop - endfacet - facet normal -0.0355451 -0.000632252 0.999368 - outer loop - vertex -0.668998 -0.153076 0.488501 - vertex -0.780117 -0.153076 0.484548 - vertex -0.778189 -0.261436 0.484548 - endloop - endfacet - facet normal -0.0357077 -0.000468219 0.999362 - outer loop - vertex -0.668998 -0.153076 0.488501 - vertex -0.778189 -0.261436 0.484548 - vertex -0.667544 -0.263998 0.488501 - endloop - endfacet - facet normal -0.0358737 -0.00769073 0.999327 - outer loop - vertex -0.667544 -0.263998 0.488501 - vertex -0.778189 -0.261436 0.484548 - vertex -0.772824 -0.369079 0.483912 - endloop - endfacet - facet normal -0.0363589 -0.00720398 0.999313 - outer loop - vertex -0.667544 -0.263998 0.488501 - vertex -0.772824 -0.369079 0.483912 - vertex -0.663547 -0.374277 0.487851 - endloop - endfacet - facet normal -0.0370009 -0.0208644 0.999097 - outer loop - vertex -0.663547 -0.374277 0.487851 - vertex -0.772824 -0.369079 0.483912 - vertex -0.764439 -0.475289 0.482005 - endloop - endfacet - facet normal -0.0378594 -0.0200061 0.999083 - outer loop - vertex -0.663547 -0.374277 0.487851 - vertex -0.764439 -0.475289 0.482005 - vertex -0.657374 -0.483271 0.485902 - endloop - endfacet - facet normal -0.0393816 -0.0407609 0.998393 - outer loop - vertex -0.657374 -0.483271 0.485902 - vertex -0.764439 -0.475289 0.482005 - vertex -0.753452 -0.579348 0.47819 - endloop - endfacet - facet normal -0.0407609 -0.0393816 0.998393 - outer loop - vertex -0.657374 -0.483271 0.485902 - vertex -0.753452 -0.579348 0.47819 - vertex -0.649392 -0.590336 0.482005 - endloop - endfacet - facet normal -0.0437549 -0.0683228 0.996703 - outer loop - vertex -0.649392 -0.590336 0.482005 - vertex -0.753452 -0.579348 0.47819 - vertex -0.740278 -0.680541 0.471832 - endloop - endfacet - facet normal -0.0459616 -0.0661052 0.996754 - outer loop - vertex -0.649392 -0.590336 0.482005 - vertex -0.740278 -0.680541 0.471832 - vertex -0.639968 -0.69483 0.47551 - endloop - endfacet - facet normal -0.059407 -0.163581 0.98474 - outer loop - vertex -0.639968 -0.69483 0.47551 - vertex -0.740278 -0.680541 0.471832 - vertex -0.726483 -0.774065 0.457128 - endloop - endfacet - facet normal -0.0643796 -0.15828 0.985293 - outer loop - vertex -0.639968 -0.69483 0.47551 - vertex -0.726483 -0.774065 0.457128 - vertex -0.630152 -0.791677 0.460593 - endloop - endfacet - facet normal -0.0970594 -0.347373 0.932691 - outer loop - vertex -0.630152 -0.791677 0.460593 - vertex -0.726483 -0.774065 0.457128 - vertex -0.71363 -0.855122 0.428277 - endloop - endfacet - facet normal -0.106899 -0.335998 0.935777 - outer loop - vertex -0.630152 -0.791677 0.460593 - vertex -0.71363 -0.855122 0.428277 - vertex -0.620998 -0.875802 0.431433 - endloop - endfacet - facet normal -0.163788 -0.616038 0.7705 - outer loop - vertex -0.620998 -0.875802 0.431433 - vertex -0.71363 -0.855122 0.428277 - vertex -0.703282 -0.918909 0.379476 - endloop - endfacet - facet normal -0.178821 -0.599223 0.780356 - outer loop - vertex -0.620998 -0.875802 0.431433 - vertex -0.703282 -0.918909 0.379476 - vertex -0.613557 -0.942129 0.382207 - endloop - endfacet - facet normal -0.0604876 -0.00137164 0.998168 - outer loop - vertex -0.780117 -0.153076 0.484548 - vertex -0.888816 -0.153076 0.477961 - vertex -0.886426 -0.258468 0.477961 - endloop - endfacet - facet normal -0.0607746 -0.00108102 0.998151 - outer loop - vertex -0.780117 -0.153076 0.484548 - vertex -0.886426 -0.258468 0.477961 - vertex -0.778189 -0.261436 0.484548 - endloop - endfacet - facet normal -0.0610099 -0.00979853 0.998089 - outer loop - vertex -0.778189 -0.261436 0.484548 - vertex -0.886426 -0.258468 0.477961 - vertex -0.879663 -0.363013 0.477348 - endloop - endfacet - facet normal -0.0618295 -0.00897675 0.998046 - outer loop - vertex -0.778189 -0.261436 0.484548 - vertex -0.879663 -0.363013 0.477348 - vertex -0.772824 -0.369079 0.483912 - endloop - endfacet - facet normal -0.0626848 -0.0243778 0.997736 - outer loop - vertex -0.772824 -0.369079 0.483912 - vertex -0.879663 -0.363013 0.477348 - vertex -0.868933 -0.465865 0.475509 - endloop - endfacet - facet normal -0.06409 -0.0229775 0.99768 - outer loop - vertex -0.772824 -0.369079 0.483912 - vertex -0.868933 -0.465865 0.475509 - vertex -0.764439 -0.475289 0.482005 - endloop - endfacet - facet normal -0.0661054 -0.0459613 0.996754 - outer loop - vertex -0.764439 -0.475289 0.482005 - vertex -0.868933 -0.465865 0.475509 - vertex -0.854644 -0.566175 0.471832 - endloop - endfacet - facet normal -0.0683229 -0.0437549 0.996703 - outer loop - vertex -0.764439 -0.475289 0.482005 - vertex -0.854644 -0.566175 0.471832 - vertex -0.753452 -0.579348 0.47819 - endloop - endfacet - facet normal -0.0723704 -0.0759175 0.994484 - outer loop - vertex -0.753452 -0.579348 0.47819 - vertex -0.854644 -0.566175 0.471832 - vertex -0.837201 -0.663098 0.465702 - endloop - endfacet - facet normal -0.0759175 -0.0723704 0.994484 - outer loop - vertex -0.753452 -0.579348 0.47819 - vertex -0.837201 -0.663098 0.465702 - vertex -0.740278 -0.680541 0.471832 - endloop - endfacet - facet normal -0.0938263 -0.177072 0.979715 - outer loop - vertex -0.740278 -0.680541 0.471832 - vertex -0.837201 -0.663098 0.465702 - vertex -0.818819 -0.75223 0.451353 - endloop - endfacet - facet normal -0.1013 -0.169076 0.980383 - outer loop - vertex -0.740278 -0.680541 0.471832 - vertex -0.818819 -0.75223 0.451353 - vertex -0.726483 -0.774065 0.457128 - endloop - endfacet - facet normal -0.144927 -0.370172 0.917589 - outer loop - vertex -0.726483 -0.774065 0.457128 - vertex -0.818819 -0.75223 0.451353 - vertex -0.801712 -0.829169 0.423016 - endloop - endfacet - facet normal -0.159171 -0.353362 0.921846 - outer loop - vertex -0.726483 -0.774065 0.457128 - vertex -0.801712 -0.829169 0.423016 - vertex -0.71363 -0.855122 0.428277 - endloop - endfacet - facet normal -0.231774 -0.637734 0.734558 - outer loop - vertex -0.71363 -0.855122 0.428277 - vertex -0.801712 -0.829169 0.423016 - vertex -0.788094 -0.889511 0.374925 - endloop - endfacet - facet normal -0.252783 -0.613421 0.748208 - outer loop - vertex -0.71363 -0.855122 0.428277 - vertex -0.788094 -0.889511 0.374925 - vertex -0.703282 -0.918909 0.379476 - endloop - endfacet - facet normal -0.14757 -0.00406645 0.989043 - outer loop - vertex -0.888816 -0.153076 0.477961 - vertex -0.989739 -0.153076 0.462903 - vertex -0.98692 -0.255399 0.462903 - endloop - endfacet - facet normal -0.148288 -0.00336262 0.988939 - outer loop - vertex -0.888816 -0.153076 0.477961 - vertex -0.98692 -0.255399 0.462903 - vertex -0.886426 -0.258468 0.477961 - endloop - endfacet - facet normal -0.148689 -0.017528 0.988729 - outer loop - vertex -0.886426 -0.258468 0.477961 - vertex -0.98692 -0.255399 0.462903 - vertex -0.978816 -0.356723 0.462326 - endloop - endfacet - facet normal -0.150748 -0.0155472 0.98845 - outer loop - vertex -0.886426 -0.258468 0.477961 - vertex -0.978816 -0.356723 0.462326 - vertex -0.879663 -0.363013 0.477348 - endloop - endfacet - facet normal -0.152004 -0.0371759 0.987681 - outer loop - vertex -0.879663 -0.363013 0.477348 - vertex -0.978816 -0.356723 0.462326 - vertex -0.96578 -0.456049 0.460593 - endloop - endfacet - facet normal -0.155491 -0.0338721 0.987256 - outer loop - vertex -0.879663 -0.363013 0.477348 - vertex -0.96578 -0.456049 0.460593 - vertex -0.868933 -0.465865 0.475509 - endloop - endfacet - facet normal -0.15828 -0.0643794 0.985293 - outer loop - vertex -0.868933 -0.465865 0.475509 - vertex -0.96578 -0.456049 0.460593 - vertex -0.948168 -0.55238 0.457128 - endloop - endfacet - facet normal -0.163581 -0.0594065 0.98474 - outer loop - vertex -0.868933 -0.465865 0.475509 - vertex -0.948168 -0.55238 0.457128 - vertex -0.854644 -0.566175 0.471832 - endloop - endfacet - facet normal -0.169076 -0.1013 0.980383 - outer loop - vertex -0.854644 -0.566175 0.471832 - vertex -0.948168 -0.55238 0.457128 - vertex -0.926333 -0.644716 0.451353 - endloop - endfacet - facet normal -0.177073 -0.0938263 0.979715 - outer loop - vertex -0.854644 -0.566175 0.471832 - vertex -0.926333 -0.644716 0.451353 - vertex -0.837201 -0.663098 0.465702 - endloop - endfacet - facet normal -0.197294 -0.208973 0.957813 - outer loop - vertex -0.837201 -0.663098 0.465702 - vertex -0.926333 -0.644716 0.451353 - vertex -0.902986 -0.728883 0.437799 - endloop - endfacet - facet normal -0.208973 -0.197293 0.957813 - outer loop - vertex -0.837201 -0.663098 0.465702 - vertex -0.902986 -0.728883 0.437799 - vertex -0.818819 -0.75223 0.451353 - endloop - endfacet - facet normal -0.253977 -0.405925 0.877907 - outer loop - vertex -0.818819 -0.75223 0.451353 - vertex -0.902986 -0.728883 0.437799 - vertex -0.880839 -0.800707 0.410996 - endloop - endfacet - facet normal -0.272523 -0.3853 0.881632 - outer loop - vertex -0.818819 -0.75223 0.451353 - vertex -0.880839 -0.800707 0.410996 - vertex -0.801712 -0.829169 0.423016 - endloop - endfacet - facet normal -0.338868 -0.658151 0.672314 - outer loop - vertex -0.801712 -0.829169 0.423016 - vertex -0.880839 -0.800707 0.410996 - vertex -0.863761 -0.856237 0.365244 - endloop - endfacet - facet normal -0.364543 -0.62929 0.686368 - outer loop - vertex -0.801712 -0.829169 0.423016 - vertex -0.863761 -0.856237 0.365244 - vertex -0.788094 -0.889511 0.374925 - endloop - endfacet - facet normal -0.31721 -0.010184 0.948301 - outer loop - vertex -0.989739 -0.153076 0.462903 - vertex -1.07753 -0.153076 0.433537 - vertex -1.07434 -0.252532 0.433537 - endloop - endfacet - facet normal -0.318691 -0.00878155 0.947818 - outer loop - vertex -0.989739 -0.153076 0.462903 - vertex -1.07434 -0.252532 0.433537 - vertex -0.98692 -0.255399 0.462903 - endloop - endfacet - facet normal -0.319285 -0.0352696 0.947002 - outer loop - vertex -0.98692 -0.255399 0.462903 - vertex -1.07434 -0.252532 0.433537 - vertex -1.06503 -0.350851 0.433011 - endloop - endfacet - facet normal -0.323651 -0.0312765 0.945659 - outer loop - vertex -0.98692 -0.255399 0.462903 - vertex -1.06503 -0.350851 0.433011 - vertex -0.978816 -0.356723 0.462326 - endloop - endfacet - facet normal -0.325253 -0.0667365 0.943269 - outer loop - vertex -0.978816 -0.356723 0.462326 - vertex -1.06503 -0.350851 0.433011 - vertex -1.04991 -0.446895 0.431433 - endloop - endfacet - facet normal -0.332749 -0.0600835 0.941099 - outer loop - vertex -0.978816 -0.356723 0.462326 - vertex -1.04991 -0.446895 0.431433 - vertex -0.96578 -0.456049 0.460593 - endloop - endfacet - facet normal -0.335998 -0.106898 0.935777 - outer loop - vertex -0.96578 -0.456049 0.460593 - vertex -1.04991 -0.446895 0.431433 - vertex -1.02922 -0.539527 0.428277 - endloop - endfacet - facet normal -0.347373 -0.097059 0.932691 - outer loop - vertex -0.96578 -0.456049 0.460593 - vertex -1.02922 -0.539527 0.428277 - vertex -0.948168 -0.55238 0.457128 - endloop - endfacet - facet normal -0.353362 -0.15917 0.921846 - outer loop - vertex -0.948168 -0.55238 0.457128 - vertex -1.02922 -0.539527 0.428277 - vertex -1.00327 -0.627609 0.423016 - endloop - endfacet - facet normal -0.370172 -0.144927 0.917589 - outer loop - vertex -0.948168 -0.55238 0.457128 - vertex -1.00327 -0.627609 0.423016 - vertex -0.926333 -0.644716 0.451353 - endloop - endfacet - facet normal -0.3853 -0.272522 0.881632 - outer loop - vertex -0.926333 -0.644716 0.451353 - vertex -1.00327 -0.627609 0.423016 - vertex -0.97481 -0.706736 0.410996 - endloop - endfacet - facet normal -0.405924 -0.253977 0.877907 - outer loop - vertex -0.926333 -0.644716 0.451353 - vertex -0.97481 -0.706736 0.410996 - vertex -0.902986 -0.728883 0.437799 - endloop - endfacet - facet normal -0.431539 -0.461336 0.775205 - outer loop - vertex -0.902986 -0.728883 0.437799 - vertex -0.97481 -0.706736 0.410996 - vertex -0.946604 -0.772501 0.38756 - endloop - endfacet - facet normal -0.461336 -0.431539 0.775205 - outer loop - vertex -0.902986 -0.728883 0.437799 - vertex -0.946604 -0.772501 0.38756 - vertex -0.880839 -0.800707 0.410996 - endloop - endfacet - facet normal -0.487016 -0.66907 0.561392 - outer loop - vertex -0.880839 -0.800707 0.410996 - vertex -0.946604 -0.772501 0.38756 - vertex -0.926049 -0.821389 0.347126 - endloop - endfacet - facet normal -0.520668 -0.632558 0.573389 - outer loop - vertex -0.880839 -0.800707 0.410996 - vertex -0.926049 -0.821389 0.347126 - vertex -0.863761 -0.856237 0.365244 - endloop - endfacet - facet normal -0.581201 -0.0208773 0.813492 - outer loop - vertex -1.07753 -0.153076 0.433537 - vertex -1.14683 -0.153076 0.384027 - vertex -1.14334 -0.250173 0.384027 - endloop - endfacet - facet normal -0.583289 -0.0187264 0.812049 - outer loop - vertex -1.07753 -0.153076 0.433537 - vertex -1.14334 -0.250173 0.384027 - vertex -1.07434 -0.252532 0.433537 - endloop - endfacet - facet normal -0.583182 -0.0662835 0.809633 - outer loop - vertex -1.07434 -0.252532 0.433537 - vertex -1.14334 -0.250173 0.384027 - vertex -1.13307 -0.346042 0.383572 - endloop - endfacet - facet normal -0.589545 -0.0600777 0.805499 - outer loop - vertex -1.07434 -0.252532 0.433537 - vertex -1.13307 -0.346042 0.383572 - vertex -1.06503 -0.350851 0.433011 - endloop - endfacet - facet normal -0.589171 -0.117908 0.799359 - outer loop - vertex -1.06503 -0.350851 0.433011 - vertex -1.13307 -0.346042 0.383572 - vertex -1.11623 -0.439453 0.382207 - endloop - endfacet - facet normal -0.600266 -0.107582 0.792532 - outer loop - vertex -1.06503 -0.350851 0.433011 - vertex -1.11623 -0.439453 0.382207 - vertex -1.04991 -0.446895 0.431433 - endloop - endfacet - facet normal -0.599223 -0.17882 0.780356 - outer loop - vertex -1.04991 -0.446895 0.431433 - vertex -1.11623 -0.439453 0.382207 - vertex -1.09301 -0.529179 0.379476 - endloop - endfacet - facet normal -0.616038 -0.163787 0.7705 - outer loop - vertex -1.04991 -0.446895 0.431433 - vertex -1.09301 -0.529179 0.379476 - vertex -1.02922 -0.539527 0.428277 - endloop - endfacet - facet normal -0.613421 -0.252782 0.748209 - outer loop - vertex -1.02922 -0.539527 0.428277 - vertex -1.09301 -0.529179 0.379476 - vertex -1.06361 -0.613991 0.374925 - endloop - endfacet - facet normal -0.637734 -0.231773 0.734559 - outer loop - vertex -1.02922 -0.539527 0.428277 - vertex -1.06361 -0.613991 0.374925 - vertex -1.00327 -0.627609 0.423016 - endloop - endfacet - facet normal -0.62929 -0.364543 0.686369 - outer loop - vertex -1.00327 -0.627609 0.423016 - vertex -1.06361 -0.613991 0.374925 - vertex -1.03034 -0.689657 0.365244 - endloop - endfacet - facet normal -0.658151 -0.338867 0.672314 - outer loop - vertex -1.00327 -0.627609 0.423016 - vertex -1.03034 -0.689657 0.365244 - vertex -0.97481 -0.706736 0.410996 - endloop - endfacet - facet normal -0.632558 -0.520668 0.573389 - outer loop - vertex -0.97481 -0.706736 0.410996 - vertex -1.03034 -0.689657 0.365244 - vertex -0.995492 -0.751946 0.347126 - endloop - endfacet - facet normal -0.66907 -0.487016 0.561391 - outer loop - vertex -0.97481 -0.706736 0.410996 - vertex -0.995492 -0.751946 0.347126 - vertex -0.946604 -0.772501 0.38756 - endloop - endfacet - facet normal -0.623135 -0.661619 0.417089 - outer loop - vertex -0.946604 -0.772501 0.38756 - vertex -0.995492 -0.751946 0.347126 - vertex -0.966663 -0.79256 0.325773 - endloop - endfacet - facet normal -0.66162 -0.623134 0.417089 - outer loop - vertex -0.946604 -0.772501 0.38756 - vertex -0.966663 -0.79256 0.325773 - vertex -0.926049 -0.821389 0.347126 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.327179 -0.153076 0.491135 - vertex -0.327179 -0.267822 0.491135 - vertex -0.212921 -0.267334 0.491135 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.327179 -0.153076 0.491135 - vertex -0.212921 -0.267334 0.491135 - vertex -0.212433 -0.153076 0.491135 - endloop - endfacet - facet normal 0.00579568 -2.47709e-05 0.999983 - outer loop - vertex -0.212433 -0.153076 0.491135 - vertex -0.212921 -0.267334 0.491135 - vertex -0.0992654 -0.266012 0.490477 - endloop - endfacet - facet normal 0.005771 -4.95097e-05 0.999983 - outer loop - vertex -0.212433 -0.153076 0.491135 - vertex -0.0992654 -0.266012 0.490477 - vertex -0.0982914 -0.153076 0.490477 - endloop - endfacet - facet normal 0.0175732 -0.000151301 0.999846 - outer loop - vertex -0.0982914 -0.153076 0.490477 - vertex -0.0992654 -0.266012 0.490477 - vertex 0.0131861 -0.263998 0.488501 - endloop - endfacet - facet normal 0.0174955 -0.00022943 0.999847 - outer loop - vertex -0.0982914 -0.153076 0.490477 - vertex 0.0131861 -0.263998 0.488501 - vertex 0.0146407 -0.153076 0.488501 - endloop - endfacet - facet normal 0.0357077 -0.00046826 0.999362 - outer loop - vertex 0.0146407 -0.153076 0.488501 - vertex 0.0131861 -0.263998 0.488501 - vertex 0.123831 -0.261436 0.484548 - endloop - endfacet - facet normal 0.0355451 -0.000632257 0.999368 - outer loop - vertex 0.0146407 -0.153076 0.488501 - vertex 0.123831 -0.261436 0.484548 - vertex 0.125759 -0.153076 0.484548 - endloop - endfacet - facet normal 0.0607746 -0.00108103 0.998151 - outer loop - vertex 0.125759 -0.153076 0.484548 - vertex 0.123831 -0.261436 0.484548 - vertex 0.232068 -0.258468 0.477961 - endloop - endfacet - facet normal 0.0604875 -0.0013717 0.998168 - outer loop - vertex 0.125759 -0.153076 0.484548 - vertex 0.232068 -0.258468 0.477961 - vertex 0.234458 -0.153076 0.477961 - endloop - endfacet - facet normal 0.148288 -0.00336277 0.988939 - outer loop - vertex 0.234458 -0.153076 0.477961 - vertex 0.232068 -0.258468 0.477961 - vertex 0.332562 -0.255399 0.462903 - endloop - endfacet - facet normal 0.14757 -0.0040665 0.989043 - outer loop - vertex 0.234458 -0.153076 0.477961 - vertex 0.332562 -0.255399 0.462903 - vertex 0.335381 -0.153076 0.462903 - endloop - endfacet - facet normal 0.318691 -0.00878164 0.947818 - outer loop - vertex 0.335381 -0.153076 0.462903 - vertex 0.332562 -0.255399 0.462903 - vertex 0.419978 -0.252533 0.433537 - endloop - endfacet - facet normal 0.31721 -0.0101841 0.948301 - outer loop - vertex 0.335381 -0.153076 0.462903 - vertex 0.419978 -0.252533 0.433537 - vertex 0.423171 -0.153076 0.433537 - endloop - endfacet - facet normal 0.583289 -0.0187266 0.812049 - outer loop - vertex 0.423171 -0.153076 0.433537 - vertex 0.419978 -0.252533 0.433537 - vertex 0.48898 -0.250174 0.384027 - endloop - endfacet - facet normal 0.581201 -0.0208779 0.813492 - outer loop - vertex 0.423171 -0.153076 0.433537 - vertex 0.48898 -0.250174 0.384027 - vertex 0.492468 -0.153076 0.384027 - endloop - endfacet - facet normal 4.95028e-05 -0.005771 0.999983 - outer loop - vertex -0.327179 -0.267822 0.491135 - vertex -0.327179 -0.381964 0.490477 - vertex -0.214243 -0.38099 0.490477 - endloop - endfacet - facet normal 2.47649e-05 -0.00579568 0.999983 - outer loop - vertex -0.327179 -0.267822 0.491135 - vertex -0.214243 -0.38099 0.490477 - vertex -0.212921 -0.267334 0.491135 - endloop - endfacet - facet normal 0.0059822 -0.00586489 0.999965 - outer loop - vertex -0.212921 -0.267334 0.491135 - vertex -0.214243 -0.38099 0.490477 - vertex -0.101917 -0.378338 0.48982 - endloop - endfacet - facet normal 0.00586488 -0.00598221 0.999965 - outer loop - vertex -0.212921 -0.267334 0.491135 - vertex -0.101917 -0.378338 0.48982 - vertex -0.0992654 -0.266012 0.490477 - endloop - endfacet - facet normal 0.01795 -0.00626669 0.999819 - outer loop - vertex -0.0992654 -0.266012 0.490477 - vertex -0.101917 -0.378338 0.48982 - vertex 0.00918905 -0.374278 0.487851 - endloop - endfacet - facet normal 0.017687 -0.00653025 0.999822 - outer loop - vertex -0.0992654 -0.266012 0.490477 - vertex 0.00918905 -0.374278 0.487851 - vertex 0.0131861 -0.263998 0.488501 - endloop - endfacet - facet normal 0.0363589 -0.00720401 0.999313 - outer loop - vertex 0.0131861 -0.263998 0.488501 - vertex 0.00918905 -0.374278 0.487851 - vertex 0.118466 -0.36908 0.483912 - endloop - endfacet - facet normal 0.0358736 -0.0076908 0.999327 - outer loop - vertex 0.0131861 -0.263998 0.488501 - vertex 0.118466 -0.36908 0.483912 - vertex 0.123831 -0.261436 0.484548 - endloop - endfacet - facet normal 0.0618295 -0.00897687 0.998046 - outer loop - vertex 0.123831 -0.261436 0.484548 - vertex 0.118466 -0.36908 0.483912 - vertex 0.225305 -0.363014 0.477348 - endloop - endfacet - facet normal 0.0610099 -0.0097986 0.998089 - outer loop - vertex 0.123831 -0.261436 0.484548 - vertex 0.225305 -0.363014 0.477348 - vertex 0.232068 -0.258468 0.477961 - endloop - endfacet - facet normal 0.150748 -0.0155474 0.98845 - outer loop - vertex 0.232068 -0.258468 0.477961 - vertex 0.225305 -0.363014 0.477348 - vertex 0.324458 -0.356723 0.462326 - endloop - endfacet - facet normal 0.148689 -0.0175282 0.988729 - outer loop - vertex 0.232068 -0.258468 0.477961 - vertex 0.324458 -0.356723 0.462326 - vertex 0.332562 -0.255399 0.462903 - endloop - endfacet - facet normal 0.323651 -0.0312769 0.945659 - outer loop - vertex 0.332562 -0.255399 0.462903 - vertex 0.324458 -0.356723 0.462326 - vertex 0.410677 -0.350851 0.433011 - endloop - endfacet - facet normal 0.319286 -0.03527 0.947002 - outer loop - vertex 0.332562 -0.255399 0.462903 - vertex 0.410677 -0.350851 0.433011 - vertex 0.419978 -0.252533 0.433537 - endloop - endfacet - facet normal 0.589544 -0.0600783 0.805499 - outer loop - vertex 0.419978 -0.252533 0.433537 - vertex 0.410677 -0.350851 0.433011 - vertex 0.478716 -0.346042 0.383572 - endloop - endfacet - facet normal 0.583182 -0.0662833 0.809633 - outer loop - vertex 0.419978 -0.252533 0.433537 - vertex 0.478716 -0.346042 0.383572 - vertex 0.48898 -0.250174 0.384027 - endloop - endfacet - facet normal 0.00022942 -0.0174955 0.999847 - outer loop - vertex -0.327179 -0.381964 0.490477 - vertex -0.327179 -0.494896 0.488501 - vertex -0.216257 -0.493441 0.488501 - endloop - endfacet - facet normal 0.00015128 -0.0175732 0.999846 - outer loop - vertex -0.327179 -0.381964 0.490477 - vertex -0.216257 -0.493441 0.488501 - vertex -0.214243 -0.38099 0.490477 - endloop - endfacet - facet normal 0.00653023 -0.017687 0.999822 - outer loop - vertex -0.214243 -0.38099 0.490477 - vertex -0.216257 -0.493441 0.488501 - vertex -0.105978 -0.489444 0.487851 - endloop - endfacet - facet normal 0.00626667 -0.01795 0.999819 - outer loop - vertex -0.214243 -0.38099 0.490477 - vertex -0.105978 -0.489444 0.487851 - vertex -0.101917 -0.378338 0.48982 - endloop - endfacet - facet normal 0.0189147 -0.0184092 0.999652 - outer loop - vertex -0.101917 -0.378338 0.48982 - vertex -0.105978 -0.489444 0.487851 - vertex 0.00301617 -0.483271 0.485902 - endloop - endfacet - facet normal 0.0184092 -0.0189147 0.999652 - outer loop - vertex -0.101917 -0.378338 0.48982 - vertex 0.00301617 -0.483271 0.485902 - vertex 0.00918905 -0.374278 0.487851 - endloop - endfacet - facet normal 0.0378594 -0.0200061 0.999083 - outer loop - vertex 0.00918905 -0.374278 0.487851 - vertex 0.00301617 -0.483271 0.485902 - vertex 0.110081 -0.475289 0.482005 - endloop - endfacet - facet normal 0.0370009 -0.0208644 0.999097 - outer loop - vertex 0.00918905 -0.374278 0.487851 - vertex 0.110081 -0.475289 0.482005 - vertex 0.118466 -0.36908 0.483912 - endloop - endfacet - facet normal 0.0640897 -0.0229775 0.99768 - outer loop - vertex 0.118466 -0.36908 0.483912 - vertex 0.110081 -0.475289 0.482005 - vertex 0.214575 -0.465865 0.47551 - endloop - endfacet - facet normal 0.0626848 -0.0243775 0.997736 - outer loop - vertex 0.118466 -0.36908 0.483912 - vertex 0.214575 -0.465865 0.47551 - vertex 0.225305 -0.363014 0.477348 - endloop - endfacet - facet normal 0.155491 -0.033872 0.987256 - outer loop - vertex 0.225305 -0.363014 0.477348 - vertex 0.214575 -0.465865 0.47551 - vertex 0.311422 -0.45605 0.460593 - endloop - endfacet - facet normal 0.152004 -0.0371759 0.987681 - outer loop - vertex 0.225305 -0.363014 0.477348 - vertex 0.311422 -0.45605 0.460593 - vertex 0.324458 -0.356723 0.462326 - endloop - endfacet - facet normal 0.332749 -0.0600837 0.941099 - outer loop - vertex 0.324458 -0.356723 0.462326 - vertex 0.311422 -0.45605 0.460593 - vertex 0.395547 -0.446895 0.431433 - endloop - endfacet - facet normal 0.325253 -0.0667365 0.943269 - outer loop - vertex 0.324458 -0.356723 0.462326 - vertex 0.395547 -0.446895 0.431433 - vertex 0.410677 -0.350851 0.433011 - endloop - endfacet - facet normal 0.600266 -0.107582 0.792532 - outer loop - vertex 0.410677 -0.350851 0.433011 - vertex 0.395547 -0.446895 0.431433 - vertex 0.461874 -0.439454 0.382207 - endloop - endfacet - facet normal 0.58917 -0.117909 0.79936 - outer loop - vertex 0.410677 -0.350851 0.433011 - vertex 0.461874 -0.439454 0.382207 - vertex 0.478716 -0.346042 0.383572 - endloop - endfacet - facet normal 0.000632233 -0.0355451 0.999368 - outer loop - vertex -0.327179 -0.494896 0.488501 - vertex -0.327179 -0.606014 0.484548 - vertex -0.218819 -0.604086 0.484548 - endloop - endfacet - facet normal 0.000468238 -0.0357077 0.999362 - outer loop - vertex -0.327179 -0.494896 0.488501 - vertex -0.218819 -0.604086 0.484548 - vertex -0.216257 -0.493441 0.488501 - endloop - endfacet - facet normal 0.00769073 -0.0358737 0.999327 - outer loop - vertex -0.216257 -0.493441 0.488501 - vertex -0.218819 -0.604086 0.484548 - vertex -0.111176 -0.598722 0.483912 - endloop - endfacet - facet normal 0.00720397 -0.0363589 0.999313 - outer loop - vertex -0.216257 -0.493441 0.488501 - vertex -0.111176 -0.598722 0.483912 - vertex -0.105978 -0.489444 0.487851 - endloop - endfacet - facet normal 0.0208644 -0.0370009 0.999097 - outer loop - vertex -0.105978 -0.489444 0.487851 - vertex -0.111176 -0.598722 0.483912 - vertex -0.00496588 -0.590337 0.482005 - endloop - endfacet - facet normal 0.0200061 -0.0378594 0.999083 - outer loop - vertex -0.105978 -0.489444 0.487851 - vertex -0.00496588 -0.590337 0.482005 - vertex 0.00301617 -0.483271 0.485902 - endloop - endfacet - facet normal 0.0407609 -0.0393816 0.998393 - outer loop - vertex 0.00301617 -0.483271 0.485902 - vertex -0.00496588 -0.590337 0.482005 - vertex 0.0990935 -0.579349 0.47819 - endloop - endfacet - facet normal 0.0393816 -0.0407609 0.998393 - outer loop - vertex 0.00301617 -0.483271 0.485902 - vertex 0.0990935 -0.579349 0.47819 - vertex 0.110081 -0.475289 0.482005 - endloop - endfacet - facet normal 0.0683229 -0.043755 0.996703 - outer loop - vertex 0.110081 -0.475289 0.482005 - vertex 0.0990935 -0.579349 0.47819 - vertex 0.200286 -0.566175 0.471832 - endloop - endfacet - facet normal 0.0661051 -0.0459617 0.996754 - outer loop - vertex 0.110081 -0.475289 0.482005 - vertex 0.200286 -0.566175 0.471832 - vertex 0.214575 -0.465865 0.47551 - endloop - endfacet - facet normal 0.163581 -0.0594071 0.98474 - outer loop - vertex 0.214575 -0.465865 0.47551 - vertex 0.200286 -0.566175 0.471832 - vertex 0.29381 -0.55238 0.457128 - endloop - endfacet - facet normal 0.15828 -0.0643797 0.985293 - outer loop - vertex 0.214575 -0.465865 0.47551 - vertex 0.29381 -0.55238 0.457128 - vertex 0.311422 -0.45605 0.460593 - endloop - endfacet - facet normal 0.347372 -0.0970595 0.932691 - outer loop - vertex 0.311422 -0.45605 0.460593 - vertex 0.29381 -0.55238 0.457128 - vertex 0.374867 -0.539527 0.428277 - endloop - endfacet - facet normal 0.335998 -0.106899 0.935777 - outer loop - vertex 0.311422 -0.45605 0.460593 - vertex 0.374867 -0.539527 0.428277 - vertex 0.395547 -0.446895 0.431433 - endloop - endfacet - facet normal 0.616038 -0.163787 0.770501 - outer loop - vertex 0.395547 -0.446895 0.431433 - vertex 0.374867 -0.539527 0.428277 - vertex 0.438655 -0.52918 0.379476 - endloop - endfacet - facet normal 0.599223 -0.17882 0.780356 - outer loop - vertex 0.395547 -0.446895 0.431433 - vertex 0.438655 -0.52918 0.379476 - vertex 0.461874 -0.439454 0.382207 - endloop - endfacet - facet normal 0.00137164 -0.0604875 0.998168 - outer loop - vertex -0.327179 -0.606014 0.484548 - vertex -0.327179 -0.714713 0.477961 - vertex -0.221787 -0.712323 0.477961 - endloop - endfacet - facet normal 0.00108098 -0.0607746 0.998151 - outer loop - vertex -0.327179 -0.606014 0.484548 - vertex -0.221787 -0.712323 0.477961 - vertex -0.218819 -0.604086 0.484548 - endloop - endfacet - facet normal 0.00979853 -0.0610099 0.998089 - outer loop - vertex -0.218819 -0.604086 0.484548 - vertex -0.221787 -0.712323 0.477961 - vertex -0.117242 -0.70556 0.477348 - endloop - endfacet - facet normal 0.00897675 -0.0618295 0.998046 - outer loop - vertex -0.218819 -0.604086 0.484548 - vertex -0.117242 -0.70556 0.477348 - vertex -0.111176 -0.598722 0.483912 - endloop - endfacet - facet normal 0.0243778 -0.0626848 0.997736 - outer loop - vertex -0.111176 -0.598722 0.483912 - vertex -0.117242 -0.70556 0.477348 - vertex -0.0143905 -0.694831 0.475509 - endloop - endfacet - facet normal 0.0229775 -0.06409 0.99768 - outer loop - vertex -0.111176 -0.598722 0.483912 - vertex -0.0143905 -0.694831 0.475509 - vertex -0.00496588 -0.590337 0.482005 - endloop - endfacet - facet normal 0.0459613 -0.0661055 0.996754 - outer loop - vertex -0.00496588 -0.590337 0.482005 - vertex -0.0143905 -0.694831 0.475509 - vertex 0.08592 -0.680541 0.471832 - endloop - endfacet - facet normal 0.0437549 -0.0683229 0.996703 - outer loop - vertex -0.00496588 -0.590337 0.482005 - vertex 0.08592 -0.680541 0.471832 - vertex 0.0990935 -0.579349 0.47819 - endloop - endfacet - facet normal 0.0759175 -0.0723704 0.994484 - outer loop - vertex 0.0990935 -0.579349 0.47819 - vertex 0.08592 -0.680541 0.471832 - vertex 0.182843 -0.663098 0.465702 - endloop - endfacet - facet normal 0.0723704 -0.0759175 0.994484 - outer loop - vertex 0.0990935 -0.579349 0.47819 - vertex 0.182843 -0.663098 0.465702 - vertex 0.200286 -0.566175 0.471832 - endloop - endfacet - facet normal 0.177072 -0.0938264 0.979715 - outer loop - vertex 0.200286 -0.566175 0.471832 - vertex 0.182843 -0.663098 0.465702 - vertex 0.271975 -0.644716 0.451353 - endloop - endfacet - facet normal 0.169076 -0.1013 0.980383 - outer loop - vertex 0.200286 -0.566175 0.471832 - vertex 0.271975 -0.644716 0.451353 - vertex 0.29381 -0.55238 0.457128 - endloop - endfacet - facet normal 0.370172 -0.144927 0.917589 - outer loop - vertex 0.29381 -0.55238 0.457128 - vertex 0.271975 -0.644716 0.451353 - vertex 0.348914 -0.627609 0.423016 - endloop - endfacet - facet normal 0.353361 -0.159171 0.921846 - outer loop - vertex 0.29381 -0.55238 0.457128 - vertex 0.348914 -0.627609 0.423016 - vertex 0.374867 -0.539527 0.428277 - endloop - endfacet - facet normal 0.637734 -0.231775 0.734558 - outer loop - vertex 0.374867 -0.539527 0.428277 - vertex 0.348914 -0.627609 0.423016 - vertex 0.409256 -0.613992 0.374925 - endloop - endfacet - facet normal 0.61342 -0.252784 0.748209 - outer loop - vertex 0.374867 -0.539527 0.428277 - vertex 0.409256 -0.613992 0.374925 - vertex 0.438655 -0.52918 0.379476 - endloop - endfacet - facet normal 0.00406637 -0.14757 0.989043 - outer loop - vertex -0.327179 -0.714713 0.477961 - vertex -0.327179 -0.815636 0.462903 - vertex -0.224856 -0.812817 0.462903 - endloop - endfacet - facet normal 0.00336262 -0.148288 0.988939 - outer loop - vertex -0.327179 -0.714713 0.477961 - vertex -0.224856 -0.812817 0.462903 - vertex -0.221787 -0.712323 0.477961 - endloop - endfacet - facet normal 0.0175279 -0.148689 0.988729 - outer loop - vertex -0.221787 -0.712323 0.477961 - vertex -0.224856 -0.812817 0.462903 - vertex -0.123532 -0.804713 0.462326 - endloop - endfacet - facet normal 0.0155472 -0.150748 0.98845 - outer loop - vertex -0.221787 -0.712323 0.477961 - vertex -0.123532 -0.804713 0.462326 - vertex -0.117242 -0.70556 0.477348 - endloop - endfacet - facet normal 0.0371758 -0.152004 0.987681 - outer loop - vertex -0.117242 -0.70556 0.477348 - vertex -0.123532 -0.804713 0.462326 - vertex -0.0242058 -0.791678 0.460593 - endloop - endfacet - facet normal 0.0338721 -0.155491 0.987256 - outer loop - vertex -0.117242 -0.70556 0.477348 - vertex -0.0242058 -0.791678 0.460593 - vertex -0.0143905 -0.694831 0.475509 - endloop - endfacet - facet normal 0.0643794 -0.15828 0.985293 - outer loop - vertex -0.0143905 -0.694831 0.475509 - vertex -0.0242058 -0.791678 0.460593 - vertex 0.0721248 -0.774065 0.457128 - endloop - endfacet - facet normal 0.0594066 -0.163581 0.98474 - outer loop - vertex -0.0143905 -0.694831 0.475509 - vertex 0.0721248 -0.774065 0.457128 - vertex 0.08592 -0.680541 0.471832 - endloop - endfacet - facet normal 0.1013 -0.169076 0.980383 - outer loop - vertex 0.08592 -0.680541 0.471832 - vertex 0.0721248 -0.774065 0.457128 - vertex 0.164461 -0.75223 0.451353 - endloop - endfacet - facet normal 0.0938263 -0.177073 0.979715 - outer loop - vertex 0.08592 -0.680541 0.471832 - vertex 0.164461 -0.75223 0.451353 - vertex 0.182843 -0.663098 0.465702 - endloop - endfacet - facet normal 0.208973 -0.197294 0.957813 - outer loop - vertex 0.182843 -0.663098 0.465702 - vertex 0.164461 -0.75223 0.451353 - vertex 0.248628 -0.728883 0.437799 - endloop - endfacet - facet normal 0.197293 -0.208974 0.957813 - outer loop - vertex 0.182843 -0.663098 0.465702 - vertex 0.248628 -0.728883 0.437799 - vertex 0.271975 -0.644716 0.451353 - endloop - endfacet - facet normal 0.405924 -0.253977 0.877907 - outer loop - vertex 0.271975 -0.644716 0.451353 - vertex 0.248628 -0.728883 0.437799 - vertex 0.320452 -0.706736 0.410996 - endloop - endfacet - facet normal 0.3853 -0.272523 0.881632 - outer loop - vertex 0.271975 -0.644716 0.451353 - vertex 0.320452 -0.706736 0.410996 - vertex 0.348914 -0.627609 0.423016 - endloop - endfacet - facet normal 0.658151 -0.338868 0.672314 - outer loop - vertex 0.348914 -0.627609 0.423016 - vertex 0.320452 -0.706736 0.410996 - vertex 0.375982 -0.689658 0.365244 - endloop - endfacet - facet normal 0.62929 -0.364544 0.686369 - outer loop - vertex 0.348914 -0.627609 0.423016 - vertex 0.375982 -0.689658 0.365244 - vertex 0.409256 -0.613992 0.374925 - endloop - endfacet - facet normal 0.0101836 -0.31721 0.948301 - outer loop - vertex -0.327179 -0.815636 0.462903 - vertex -0.327179 -0.903425 0.433537 - vertex -0.227723 -0.900233 0.433537 - endloop - endfacet - facet normal 0.00878137 -0.318691 0.947818 - outer loop - vertex -0.327179 -0.815636 0.462903 - vertex -0.227723 -0.900233 0.433537 - vertex -0.224856 -0.812817 0.462903 - endloop - endfacet - facet normal 0.0352696 -0.319286 0.947002 - outer loop - vertex -0.224856 -0.812817 0.462903 - vertex -0.227723 -0.900233 0.433537 - vertex -0.129404 -0.890932 0.433011 - endloop - endfacet - facet normal 0.0312763 -0.323651 0.945659 - outer loop - vertex -0.224856 -0.812817 0.462903 - vertex -0.129404 -0.890932 0.433011 - vertex -0.123532 -0.804713 0.462326 - endloop - endfacet - facet normal 0.0667361 -0.325254 0.943269 - outer loop - vertex -0.123532 -0.804713 0.462326 - vertex -0.129404 -0.890932 0.433011 - vertex -0.0333602 -0.875802 0.431433 - endloop - endfacet - facet normal 0.0600835 -0.332749 0.941099 - outer loop - vertex -0.123532 -0.804713 0.462326 - vertex -0.0333602 -0.875802 0.431433 - vertex -0.0242058 -0.791678 0.460593 - endloop - endfacet - facet normal 0.106898 -0.335998 0.935777 - outer loop - vertex -0.0242058 -0.791678 0.460593 - vertex -0.0333602 -0.875802 0.431433 - vertex 0.0592716 -0.855122 0.428277 - endloop - endfacet - facet normal 0.0970591 -0.347373 0.932691 - outer loop - vertex -0.0242058 -0.791678 0.460593 - vertex 0.0592716 -0.855122 0.428277 - vertex 0.0721248 -0.774065 0.457128 - endloop - endfacet - facet normal 0.159171 -0.353362 0.921846 - outer loop - vertex 0.0721248 -0.774065 0.457128 - vertex 0.0592716 -0.855122 0.428277 - vertex 0.147354 -0.829169 0.423016 - endloop - endfacet - facet normal 0.144927 -0.370173 0.917588 - outer loop - vertex 0.0721248 -0.774065 0.457128 - vertex 0.147354 -0.829169 0.423016 - vertex 0.164461 -0.75223 0.451353 - endloop - endfacet - facet normal 0.272522 -0.3853 0.881632 - outer loop - vertex 0.164461 -0.75223 0.451353 - vertex 0.147354 -0.829169 0.423016 - vertex 0.226481 -0.800707 0.410996 - endloop - endfacet - facet normal 0.253977 -0.405925 0.877907 - outer loop - vertex 0.164461 -0.75223 0.451353 - vertex 0.226481 -0.800707 0.410996 - vertex 0.248628 -0.728883 0.437799 - endloop - endfacet - facet normal 0.461335 -0.431539 0.775206 - outer loop - vertex 0.248628 -0.728883 0.437799 - vertex 0.226481 -0.800707 0.410996 - vertex 0.292246 -0.772501 0.38756 - endloop - endfacet - facet normal 0.431539 -0.461336 0.775206 - outer loop - vertex 0.248628 -0.728883 0.437799 - vertex 0.292246 -0.772501 0.38756 - vertex 0.320452 -0.706736 0.410996 - endloop - endfacet - facet normal 0.66907 -0.487016 0.561392 - outer loop - vertex 0.320452 -0.706736 0.410996 - vertex 0.292246 -0.772501 0.38756 - vertex 0.341134 -0.751946 0.347126 - endloop - endfacet - facet normal 0.632558 -0.520668 0.573389 - outer loop - vertex 0.320452 -0.706736 0.410996 - vertex 0.341134 -0.751946 0.347126 - vertex 0.375982 -0.689658 0.365244 - endloop - endfacet - facet normal 0.020877 -0.581201 0.813492 - outer loop - vertex -0.327179 -0.903425 0.433537 - vertex -0.327179 -0.972723 0.384027 - vertex -0.230082 -0.969235 0.384027 - endloop - endfacet - facet normal 0.0187257 -0.583289 0.812049 - outer loop - vertex -0.327179 -0.903425 0.433537 - vertex -0.230082 -0.969235 0.384027 - vertex -0.227723 -0.900233 0.433537 - endloop - endfacet - facet normal 0.0662835 -0.583182 0.809633 - outer loop - vertex -0.227723 -0.900233 0.433537 - vertex -0.230082 -0.969235 0.384027 - vertex -0.134214 -0.958971 0.383572 - endloop - endfacet - facet normal 0.0600777 -0.589544 0.805499 - outer loop - vertex -0.227723 -0.900233 0.433537 - vertex -0.134214 -0.958971 0.383572 - vertex -0.129404 -0.890932 0.433011 - endloop - endfacet - facet normal 0.117908 -0.589171 0.799359 - outer loop - vertex -0.129404 -0.890932 0.433011 - vertex -0.134214 -0.958971 0.383572 - vertex -0.0408019 -0.942129 0.382207 - endloop - endfacet - facet normal 0.107582 -0.600267 0.792532 - outer loop - vertex -0.129404 -0.890932 0.433011 - vertex -0.0408019 -0.942129 0.382207 - vertex -0.0333602 -0.875802 0.431433 - endloop - endfacet - facet normal 0.178819 -0.599223 0.780356 - outer loop - vertex -0.0333602 -0.875802 0.431433 - vertex -0.0408019 -0.942129 0.382207 - vertex 0.0489241 -0.91891 0.379476 - endloop - endfacet - facet normal 0.163787 -0.616038 0.7705 - outer loop - vertex -0.0333602 -0.875802 0.431433 - vertex 0.0489241 -0.91891 0.379476 - vertex 0.0592716 -0.855122 0.428277 - endloop - endfacet - facet normal 0.252783 -0.61342 0.748209 - outer loop - vertex 0.0592716 -0.855122 0.428277 - vertex 0.0489241 -0.91891 0.379476 - vertex 0.133736 -0.889511 0.374925 - endloop - endfacet - facet normal 0.231774 -0.637734 0.734558 - outer loop - vertex 0.0592716 -0.855122 0.428277 - vertex 0.133736 -0.889511 0.374925 - vertex 0.147354 -0.829169 0.423016 - endloop - endfacet - facet normal 0.364543 -0.629291 0.686368 - outer loop - vertex 0.147354 -0.829169 0.423016 - vertex 0.133736 -0.889511 0.374925 - vertex 0.209402 -0.856237 0.365244 - endloop - endfacet - facet normal 0.338867 -0.658152 0.672314 - outer loop - vertex 0.147354 -0.829169 0.423016 - vertex 0.209402 -0.856237 0.365244 - vertex 0.226481 -0.800707 0.410996 - endloop - endfacet - facet normal 0.520667 -0.632559 0.573389 - outer loop - vertex 0.226481 -0.800707 0.410996 - vertex 0.209402 -0.856237 0.365244 - vertex 0.271691 -0.821389 0.347126 - endloop - endfacet - facet normal 0.487015 -0.669071 0.561391 - outer loop - vertex 0.226481 -0.800707 0.410996 - vertex 0.271691 -0.821389 0.347126 - vertex 0.292246 -0.772501 0.38756 - endloop - endfacet - facet normal 0.661618 -0.623135 0.41709 - outer loop - vertex 0.292246 -0.772501 0.38756 - vertex 0.271691 -0.821389 0.347126 - vertex 0.312305 -0.79256 0.325773 - endloop - endfacet - facet normal 0.623134 -0.661619 0.41709 - outer loop - vertex 0.292246 -0.772501 0.38756 - vertex 0.312305 -0.79256 0.325773 - vertex 0.341134 -0.751946 0.347126 - endloop - endfacet - facet normal 0.986795 0.0427593 -0.156226 - outer loop - vertex 0.552765 -0.153076 -0.457381 - vertex 0.536469 -0.153076 -0.560317 - vertex 0.532766 -0.0650228 -0.559605 - endloop - endfacet - facet normal 0.986749 0.042245 -0.15666 - outer loop - vertex 0.552765 -0.153076 -0.457381 - vertex 0.532766 -0.0650228 -0.559605 - vertex 0.549001 -0.0633138 -0.456883 - endloop - endfacet - facet normal 0.979297 0.1279 -0.156907 - outer loop - vertex 0.549001 -0.0633138 -0.456883 - vertex 0.532766 -0.0650228 -0.559605 - vertex 0.52167 0.0221176 -0.557825 - endloop - endfacet - facet normal 0.979289 0.126599 -0.158006 - outer loop - vertex 0.549001 -0.0633138 -0.456883 - vertex 0.52167 0.0221176 -0.557825 - vertex 0.537719 0.0255165 -0.455637 - endloop - endfacet - facet normal 0.964023 0.213401 -0.158495 - outer loop - vertex 0.537719 0.0255165 -0.455637 - vertex 0.52167 0.0221176 -0.557825 - vertex 0.503194 0.107432 -0.555333 - endloop - endfacet - facet normal 0.96417 0.211557 -0.160061 - outer loop - vertex 0.537719 0.0255165 -0.455637 - vertex 0.503194 0.107432 -0.555333 - vertex 0.518926 0.112483 -0.453892 - endloop - endfacet - facet normal 0.940346 0.299841 -0.160762 - outer loop - vertex 0.518926 0.112483 -0.453892 - vertex 0.503194 0.107432 -0.555333 - vertex 0.477351 0.190008 -0.552484 - endloop - endfacet - facet normal 0.940708 0.297714 -0.162587 - outer loop - vertex 0.518926 0.112483 -0.453892 - vertex 0.477351 0.190008 -0.552484 - vertex 0.492633 0.196653 -0.451898 - endloop - endfacet - facet normal 0.907257 0.387522 -0.163438 - outer loop - vertex 0.492633 0.196653 -0.451898 - vertex 0.477351 0.190008 -0.552484 - vertex 0.444153 0.268931 -0.549636 - endloop - endfacet - facet normal 0.907829 0.385384 -0.165303 - outer loop - vertex 0.492633 0.196653 -0.451898 - vertex 0.444153 0.268931 -0.549636 - vertex 0.458847 0.277094 -0.449905 - endloop - endfacet - facet normal 0.863428 0.476308 -0.166203 - outer loop - vertex 0.458847 0.277094 -0.449905 - vertex 0.444153 0.268931 -0.549636 - vertex 0.403613 0.34329 -0.547144 - endloop - endfacet - facet normal 0.86413 0.474447 -0.167869 - outer loop - vertex 0.458847 0.277094 -0.449905 - vertex 0.403613 0.34329 -0.547144 - vertex 0.417579 0.352876 -0.44816 - endloop - endfacet - facet normal 0.807358 0.565441 -0.168671 - outer loop - vertex 0.417579 0.352876 -0.44816 - vertex 0.403613 0.34329 -0.547144 - vertex 0.355744 0.41217 -0.545364 - endloop - endfacet - facet normal 0.808013 0.564141 -0.169881 - outer loop - vertex 0.417579 0.352876 -0.44816 - vertex 0.355744 0.41217 -0.545364 - vertex 0.368836 0.423065 -0.446914 - endloop - endfacet - facet normal 0.737627 0.653354 -0.170394 - outer loop - vertex 0.368836 0.423065 -0.446914 - vertex 0.355744 0.41217 -0.545364 - vertex 0.300558 0.47466 -0.544652 - endloop - endfacet - facet normal 0.737952 0.65286 -0.170881 - outer loop - vertex 0.368836 0.423065 -0.446914 - vertex 0.300558 0.47466 -0.544652 - vertex 0.312627 0.48673 -0.446415 - endloop - endfacet - facet normal 0.978082 0.0434599 -0.203632 - outer loop - vertex 0.536469 -0.153076 -0.560317 - vertex 0.516116 -0.153076 -0.658075 - vertex 0.51249 -0.0669691 -0.657112 - endloop - endfacet - facet normal 0.977991 0.0427772 -0.204216 - outer loop - vertex 0.536469 -0.153076 -0.560317 - vertex 0.51249 -0.0669691 -0.657112 - vertex 0.532766 -0.0650228 -0.559605 - endloop - endfacet - facet normal 0.970313 0.129361 -0.204348 - outer loop - vertex 0.532766 -0.0650228 -0.559605 - vertex 0.51249 -0.0669691 -0.657112 - vertex 0.50164 0.0182356 -0.654694 - endloop - endfacet - facet normal 0.970234 0.127744 -0.205738 - outer loop - vertex 0.532766 -0.0650228 -0.559605 - vertex 0.50164 0.0182356 -0.654694 - vertex 0.52167 0.0221176 -0.557825 - endloop - endfacet - facet normal 0.954641 0.214989 -0.206011 - outer loop - vertex 0.52167 0.0221176 -0.557825 - vertex 0.50164 0.0182356 -0.654694 - vertex 0.483593 0.101636 -0.65129 - endloop - endfacet - facet normal 0.95472 0.212829 -0.20788 - outer loop - vertex 0.52167 0.0221176 -0.557825 - vertex 0.483593 0.101636 -0.65129 - vertex 0.503194 0.107432 -0.555333 - endloop - endfacet - facet normal 0.930618 0.300948 -0.20828 - outer loop - vertex 0.503194 0.107432 -0.555333 - vertex 0.483593 0.101636 -0.65129 - vertex 0.458375 0.182328 -0.647371 - endloop - endfacet - facet normal 0.930913 0.298599 -0.210335 - outer loop - vertex 0.503194 0.107432 -0.555333 - vertex 0.458375 0.182328 -0.647371 - vertex 0.477351 0.190008 -0.552484 - endloop - endfacet - facet normal 0.897399 0.387587 -0.210834 - outer loop - vertex 0.477351 0.190008 -0.552484 - vertex 0.458375 0.182328 -0.647371 - vertex 0.426014 0.259412 -0.643408 - endloop - endfacet - facet normal 0.89789 0.385364 -0.212808 - outer loop - vertex 0.477351 0.190008 -0.552484 - vertex 0.426014 0.259412 -0.643408 - vertex 0.444153 0.268931 -0.549636 - endloop - endfacet - facet normal 0.853771 0.474922 -0.213365 - outer loop - vertex 0.444153 0.268931 -0.549636 - vertex 0.426014 0.259412 -0.643408 - vertex 0.386508 0.332001 -0.639916 - endloop - endfacet - facet normal 0.854393 0.473021 -0.215091 - outer loop - vertex 0.444153 0.268931 -0.549636 - vertex 0.386508 0.332001 -0.639916 - vertex 0.403613 0.34329 -0.547144 - endloop - endfacet - facet normal 0.798387 0.562217 -0.215617 - outer loop - vertex 0.403613 0.34329 -0.547144 - vertex 0.386508 0.332001 -0.639916 - vertex 0.339856 0.399212 -0.637409 - endloop - endfacet - facet normal 0.798991 0.560872 -0.216877 - outer loop - vertex 0.403613 0.34329 -0.547144 - vertex 0.339856 0.399212 -0.637409 - vertex 0.355744 0.41217 -0.545364 - endloop - endfacet - facet normal 0.730016 0.647986 -0.217235 - outer loop - vertex 0.355744 0.41217 -0.545364 - vertex 0.339856 0.399212 -0.637409 - vertex 0.286057 0.460159 -0.636401 - endloop - endfacet - facet normal 0.730333 0.647452 -0.217759 - outer loop - vertex 0.355744 0.41217 -0.545364 - vertex 0.286057 0.460159 -0.636401 - vertex 0.300558 0.47466 -0.544652 - endloop - endfacet - facet normal 0.964686 0.0443395 -0.259643 - outer loop - vertex 0.516116 -0.153076 -0.658075 - vertex 0.491272 -0.153076 -0.750381 - vertex 0.487742 -0.0690104 -0.74914 - endloop - endfacet - facet normal 0.964533 0.0435236 -0.260348 - outer loop - vertex 0.516116 -0.153076 -0.658075 - vertex 0.487742 -0.0690104 -0.74914 - vertex 0.51249 -0.0669691 -0.657112 - endloop - endfacet - facet normal 0.95664 0.130971 -0.260165 - outer loop - vertex 0.51249 -0.0669691 -0.657112 - vertex 0.487742 -0.0690104 -0.74914 - vertex 0.477214 0.0141425 -0.745993 - endloop - endfacet - facet normal 0.956462 0.129225 -0.261688 - outer loop - vertex 0.51249 -0.0669691 -0.657112 - vertex 0.477214 0.0141425 -0.745993 - vertex 0.50164 0.0182356 -0.654694 - endloop - endfacet - facet normal 0.940667 0.216405 -0.261371 - outer loop - vertex 0.50164 0.0182356 -0.654694 - vertex 0.477214 0.0141425 -0.745993 - vertex 0.459748 0.0954698 -0.741516 - endloop - endfacet - facet normal 0.940631 0.214292 -0.263233 - outer loop - vertex 0.50164 0.0182356 -0.654694 - vertex 0.459748 0.0954698 -0.741516 - vertex 0.483593 0.101636 -0.65129 - endloop - endfacet - facet normal 0.916564 0.301388 -0.262824 - outer loop - vertex 0.483593 0.101636 -0.65129 - vertex 0.459748 0.0954698 -0.741516 - vertex 0.435406 0.174058 -0.736286 - endloop - endfacet - facet normal 0.916709 0.299338 -0.264653 - outer loop - vertex 0.483593 0.101636 -0.65129 - vertex 0.435406 0.174058 -0.736286 - vertex 0.458375 0.182328 -0.647371 - endloop - endfacet - facet normal 0.883649 0.386465 -0.264216 - outer loop - vertex 0.458375 0.182328 -0.647371 - vertex 0.435406 0.174058 -0.736286 - vertex 0.404249 0.248996 -0.730878 - endloop - endfacet - facet normal 0.88393 0.384757 -0.265762 - outer loop - vertex 0.458375 0.182328 -0.647371 - vertex 0.404249 0.248996 -0.730878 - vertex 0.426014 0.259412 -0.643408 - endloop - endfacet - facet normal 0.840708 0.471991 -0.265396 - outer loop - vertex 0.426014 0.259412 -0.643408 - vertex 0.404249 0.248996 -0.730878 - vertex 0.366226 0.31944 -0.726046 - endloop - endfacet - facet normal 0.841086 0.470584 -0.266691 - outer loop - vertex 0.426014 0.259412 -0.643408 - vertex 0.366226 0.31944 -0.726046 - vertex 0.386508 0.332001 -0.639916 - endloop - endfacet - facet normal 0.786469 0.557194 -0.266462 - outer loop - vertex 0.386508 0.332001 -0.639916 - vertex 0.366226 0.31944 -0.726046 - vertex 0.321285 0.384548 -0.722544 - endloop - endfacet - facet normal 0.786871 0.556156 -0.267439 - outer loop - vertex 0.386508 0.332001 -0.639916 - vertex 0.321285 0.384548 -0.722544 - vertex 0.339856 0.399212 -0.637409 - endloop - endfacet - facet normal 0.719871 0.64055 -0.267361 - outer loop - vertex 0.339856 0.399212 -0.637409 - vertex 0.321285 0.384548 -0.722544 - vertex 0.269375 0.443478 -0.721126 - endloop - endfacet - facet normal 0.720117 0.640084 -0.267814 - outer loop - vertex 0.339856 0.399212 -0.637409 - vertex 0.269375 0.443478 -0.721126 - vertex 0.286057 0.460159 -0.636401 - endloop - endfacet - facet normal 0.944684 0.0453633 -0.324828 - outer loop - vertex 0.491272 -0.153076 -0.750381 - vertex 0.461502 -0.153076 -0.836959 - vertex 0.458089 -0.0710042 -0.835423 - endloop - endfacet - facet normal 0.944459 0.044464 -0.325608 - outer loop - vertex 0.491272 -0.153076 -0.750381 - vertex 0.458089 -0.0710042 -0.835423 - vertex 0.487742 -0.0690104 -0.74914 - endloop - endfacet - facet normal 0.936416 0.13258 -0.32488 - outer loop - vertex 0.487742 -0.0690104 -0.74914 - vertex 0.458089 -0.0710042 -0.835423 - vertex 0.447976 0.0101106 -0.831472 - endloop - endfacet - facet normal 0.936134 0.130881 -0.326378 - outer loop - vertex 0.487742 -0.0690104 -0.74914 - vertex 0.447976 0.0101106 -0.831472 - vertex 0.477214 0.0141425 -0.745993 - endloop - endfacet - facet normal 0.92037 0.217376 -0.325065 - outer loop - vertex 0.477214 0.0141425 -0.745993 - vertex 0.447976 0.0101106 -0.831472 - vertex 0.431286 0.0893112 -0.825763 - endloop - endfacet - facet normal 0.920225 0.215608 -0.326648 - outer loop - vertex 0.477214 0.0141425 -0.745993 - vertex 0.431286 0.0893112 -0.825763 - vertex 0.459748 0.0954698 -0.741516 - endloop - endfacet - facet normal 0.896631 0.300814 -0.324906 - outer loop - vertex 0.459748 0.0954698 -0.741516 - vertex 0.431286 0.0893112 -0.825763 - vertex 0.408146 0.16564 -0.818953 - endloop - endfacet - facet normal 0.896637 0.299431 -0.326163 - outer loop - vertex 0.459748 0.0954698 -0.741516 - vertex 0.408146 0.16564 -0.818953 - vertex 0.435406 0.174058 -0.736286 - endloop - endfacet - facet normal 0.864617 0.383838 -0.3242 - outer loop - vertex 0.435406 0.174058 -0.736286 - vertex 0.408146 0.16564 -0.818953 - vertex 0.37868 0.238141 -0.8117 - endloop - endfacet - facet normal 0.864701 0.382973 -0.324998 - outer loop - vertex 0.435406 0.174058 -0.736286 - vertex 0.37868 0.238141 -0.8117 - vertex 0.404249 0.248996 -0.730878 - endloop - endfacet - facet normal 0.823009 0.467174 -0.323116 - outer loop - vertex 0.404249 0.248996 -0.730878 - vertex 0.37868 0.238141 -0.8117 - vertex 0.342731 0.306032 -0.805104 - endloop - endfacet - facet normal 0.823142 0.466511 -0.323736 - outer loop - vertex 0.404249 0.248996 -0.730878 - vertex 0.342731 0.306032 -0.805104 - vertex 0.366226 0.31944 -0.726046 - endloop - endfacet - facet normal 0.770523 0.549954 -0.322249 - outer loop - vertex 0.366226 0.31944 -0.726046 - vertex 0.342731 0.306032 -0.805104 - vertex 0.300145 0.368534 -0.800266 - endloop - endfacet - facet normal 0.770715 0.549351 -0.322819 - outer loop - vertex 0.366226 0.31944 -0.726046 - vertex 0.300145 0.368534 -0.800266 - vertex 0.321285 0.384548 -0.722544 - endloop - endfacet - facet normal 0.706286 0.630455 -0.322005 - outer loop - vertex 0.321285 0.384548 -0.722544 - vertex 0.300145 0.368534 -0.800266 - vertex 0.250764 0.424866 -0.798286 - endloop - endfacet - facet normal 0.706464 0.630065 -0.322378 - outer loop - vertex 0.321285 0.384548 -0.722544 - vertex 0.250764 0.424866 -0.798286 - vertex 0.269375 0.443478 -0.721126 - endloop - endfacet - facet normal 0.915674 0.0464682 -0.399228 - outer loop - vertex 0.461502 -0.153076 -0.836959 - vertex 0.426371 -0.153076 -0.917536 - vertex 0.423099 -0.0728081 -0.915698 - endloop - endfacet - facet normal 0.915375 0.0455517 -0.400016 - outer loop - vertex 0.461502 -0.153076 -0.836959 - vertex 0.423099 -0.0728081 -0.915698 - vertex 0.458089 -0.0710042 -0.835423 - endloop - endfacet - facet normal 0.907322 0.134047 -0.398495 - outer loop - vertex 0.458089 -0.0710042 -0.835423 - vertex 0.423099 -0.0728081 -0.915698 - vertex 0.413511 0.00641203 -0.910881 - endloop - endfacet - facet normal 0.906962 0.132558 -0.39981 - outer loop - vertex 0.458089 -0.0710042 -0.835423 - vertex 0.413511 0.00641203 -0.910881 - vertex 0.447976 0.0101106 -0.831472 - endloop - endfacet - facet normal 0.891565 0.217775 -0.397097 - outer loop - vertex 0.447976 0.0101106 -0.831472 - vertex 0.413511 0.00641203 -0.910881 - vertex 0.397834 0.0835363 -0.903784 - endloop - endfacet - facet normal 0.891367 0.216537 -0.398217 - outer loop - vertex 0.447976 0.0101106 -0.831472 - vertex 0.397834 0.0835363 -0.903784 - vertex 0.431286 0.0893112 -0.825763 - endloop - endfacet - facet normal 0.868747 0.29923 -0.394639 - outer loop - vertex 0.431286 0.0893112 -0.825763 - vertex 0.397834 0.0835363 -0.903784 - vertex 0.376296 0.157517 -0.895101 - endloop - endfacet - facet normal 0.868701 0.298618 -0.395204 - outer loop - vertex 0.431286 0.0893112 -0.825763 - vertex 0.376296 0.157517 -0.895101 - vertex 0.408146 0.16564 -0.818953 - endloop - endfacet - facet normal 0.83823 0.379976 -0.391138 - outer loop - vertex 0.408146 0.16564 -0.818953 - vertex 0.376296 0.157517 -0.895101 - vertex 0.349125 0.227306 -0.885532 - endloop - endfacet - facet normal 0.838232 0.379826 -0.39128 - outer loop - vertex 0.408146 0.16564 -0.818953 - vertex 0.349125 0.227306 -0.885532 - vertex 0.37868 0.238141 -0.8117 - endloop - endfacet - facet normal 0.798606 0.460693 -0.387286 - outer loop - vertex 0.37868 0.238141 -0.8117 - vertex 0.349125 0.227306 -0.885532 - vertex 0.315988 0.292208 -0.876659 - endloop - endfacet - facet normal 0.798627 0.460515 -0.387454 - outer loop - vertex 0.37868 0.238141 -0.8117 - vertex 0.315988 0.292208 -0.876659 - vertex 0.342731 0.306032 -0.805104 - endloop - endfacet - facet normal 0.748594 0.54038 -0.384184 - outer loop - vertex 0.342731 0.306032 -0.805104 - vertex 0.315988 0.292208 -0.876659 - vertex 0.276548 0.35153 -0.870068 - endloop - endfacet - facet normal 0.748704 0.539916 -0.384621 - outer loop - vertex 0.342731 0.306032 -0.805104 - vertex 0.276548 0.35153 -0.870068 - vertex 0.300145 0.368534 -0.800266 - endloop - endfacet - facet normal 0.687654 0.616955 -0.382751 - outer loop - vertex 0.300145 0.368534 -0.800266 - vertex 0.276548 0.35153 -0.870068 - vertex 0.230473 0.404576 -0.867343 - endloop - endfacet - facet normal 0.687848 0.616443 -0.383228 - outer loop - vertex 0.300145 0.368534 -0.800266 - vertex 0.230473 0.404576 -0.867343 - vertex 0.250764 0.424866 -0.798286 - endloop - endfacet - facet normal 0.874919 0.0475438 -0.48193 - outer loop - vertex 0.426371 -0.153076 -0.917536 - vertex 0.385445 -0.153076 -0.991836 - vertex 0.38234 -0.0742797 -0.9897 - endloop - endfacet - facet normal 0.874574 0.0467026 -0.482638 - outer loop - vertex 0.426371 -0.153076 -0.917536 - vertex 0.38234 -0.0742797 -0.9897 - vertex 0.423099 -0.0728081 -0.915698 - endloop - endfacet - facet normal 0.866719 0.135378 -0.480074 - outer loop - vertex 0.423099 -0.0728081 -0.915698 - vertex 0.38234 -0.0742797 -0.9897 - vertex 0.373376 0.00336324 -0.983989 - endloop - endfacet - facet normal 0.8663 0.134109 -0.481184 - outer loop - vertex 0.423099 -0.0728081 -0.915698 - vertex 0.373376 0.00336324 -0.983989 - vertex 0.413511 0.00641203 -0.910881 - endloop - endfacet - facet normal 0.851656 0.217935 -0.47664 - outer loop - vertex 0.413511 0.00641203 -0.910881 - vertex 0.373376 0.00336324 -0.983989 - vertex 0.358904 0.0786992 -0.9754 - endloop - endfacet - facet normal 0.851423 0.217013 -0.477476 - outer loop - vertex 0.413511 0.00641203 -0.910881 - vertex 0.358904 0.0786992 -0.9754 - vertex 0.397834 0.0835363 -0.903784 - endloop - endfacet - facet normal 0.830275 0.297354 -0.471407 - outer loop - vertex 0.397834 0.0835363 -0.903784 - vertex 0.358904 0.0786992 -0.9754 - vertex 0.339276 0.150575 -0.964632 - endloop - endfacet - facet normal 0.830223 0.297057 -0.471685 - outer loop - vertex 0.397834 0.0835363 -0.903784 - vertex 0.339276 0.150575 -0.964632 - vertex 0.376296 0.157517 -0.895101 - endloop - endfacet - facet normal 0.801874 0.375867 -0.46446 - outer loop - vertex 0.376296 0.157517 -0.895101 - vertex 0.339276 0.150575 -0.964632 - vertex 0.314844 0.217836 -0.952382 - endloop - endfacet - facet normal 0.801874 0.375875 -0.464452 - outer loop - vertex 0.376296 0.157517 -0.895101 - vertex 0.314844 0.217836 -0.952382 - vertex 0.349125 0.227306 -0.885532 - endloop - endfacet - facet normal 0.765917 0.452391 -0.456851 - outer loop - vertex 0.349125 0.227306 -0.885532 - vertex 0.314844 0.217836 -0.952382 - vertex 0.285382 0.279631 -0.940583 - endloop - endfacet - facet normal 0.765903 0.453375 -0.455899 - outer loop - vertex 0.349125 0.227306 -0.885532 - vertex 0.285382 0.279631 -0.940583 - vertex 0.315988 0.292208 -0.876659 - endloop - endfacet - facet normal 0.72117 0.527498 -0.449066 - outer loop - vertex 0.315988 0.292208 -0.876659 - vertex 0.285382 0.279631 -0.940583 - vertex 0.250666 0.335108 -0.931169 - endloop - endfacet - facet normal 0.720954 0.529048 -0.447586 - outer loop - vertex 0.315988 0.292208 -0.876659 - vertex 0.250666 0.335108 -0.931169 - vertex 0.276548 0.35153 -0.870068 - endloop - endfacet - facet normal 0.665529 0.600462 -0.443302 - outer loop - vertex 0.276548 0.35153 -0.870068 - vertex 0.250666 0.335108 -0.931169 - vertex 0.209579 0.383682 -0.927058 - endloop - endfacet - facet normal 0.665441 0.600758 -0.443032 - outer loop - vertex 0.276548 0.35153 -0.870068 - vertex 0.209579 0.383682 -0.927058 - vertex 0.230473 0.404576 -0.867343 - endloop - endfacet - facet normal 0.819786 0.048414 -0.57062 - outer loop - vertex 0.385445 -0.153076 -0.991836 - vertex 0.338288 -0.153076 -1.05958 - vertex 0.335378 -0.0752766 -1.05716 - endloop - endfacet - facet normal 0.819466 0.0477769 -0.571133 - outer loop - vertex 0.385445 -0.153076 -0.991836 - vertex 0.335378 -0.0752766 -1.05716 - vertex 0.38234 -0.0742797 -0.9897 - endloop - endfacet - facet normal 0.812111 0.136457 -0.567323 - outer loop - vertex 0.38234 -0.0742797 -0.9897 - vertex 0.335378 -0.0752766 -1.05716 - vertex 0.327127 0.00128075 -1.05056 - endloop - endfacet - facet normal 0.811702 0.135503 -0.568137 - outer loop - vertex 0.38234 -0.0742797 -0.9897 - vertex 0.327127 0.00128075 -1.05056 - vertex 0.373376 0.00336324 -0.983989 - endloop - endfacet - facet normal 0.798289 0.218088 -0.561402 - outer loop - vertex 0.373376 0.00336324 -0.983989 - vertex 0.327127 0.00128075 -1.05056 - vertex 0.314011 0.0753537 -1.04044 - endloop - endfacet - facet normal 0.798032 0.21737 -0.562046 - outer loop - vertex 0.373376 0.00336324 -0.983989 - vertex 0.314011 0.0753537 -1.04044 - vertex 0.358904 0.0786992 -0.9754 - endloop - endfacet - facet normal 0.778939 0.295889 -0.552906 - outer loop - vertex 0.358904 0.0786992 -0.9754 - vertex 0.314011 0.0753537 -1.04044 - vertex 0.296508 0.1457 -1.02745 - endloop - endfacet - facet normal 0.778845 0.295565 -0.55321 - outer loop - vertex 0.358904 0.0786992 -0.9754 - vertex 0.296508 0.1457 -1.02745 - vertex 0.339276 0.150575 -0.964632 - endloop - endfacet - facet normal 0.753358 0.372643 -0.541838 - outer loop - vertex 0.339276 0.150575 -0.964632 - vertex 0.296508 0.1457 -1.02745 - vertex 0.275094 0.211078 -1.01226 - endloop - endfacet - facet normal 0.753299 0.372365 -0.542111 - outer loop - vertex 0.339276 0.150575 -0.964632 - vertex 0.275094 0.211078 -1.01226 - vertex 0.314844 0.217836 -0.952382 - endloop - endfacet - facet normal 0.722684 0.443829 -0.529853 - outer loop - vertex 0.314844 0.217836 -0.952382 - vertex 0.275094 0.211078 -1.01226 - vertex 0.250302 0.269966 -0.996746 - endloop - endfacet - facet normal 0.722881 0.445493 -0.528185 - outer loop - vertex 0.314844 0.217836 -0.952382 - vertex 0.250302 0.269966 -0.996746 - vertex 0.285382 0.279631 -0.940583 - endloop - endfacet - facet normal 0.685106 0.513821 -0.51635 - outer loop - vertex 0.285382 0.279631 -0.940583 - vertex 0.250302 0.269966 -0.996746 - vertex 0.222668 0.320843 -0.982784 - endloop - endfacet - facet normal 0.685089 0.515975 -0.51422 - outer loop - vertex 0.285382 0.279631 -0.940583 - vertex 0.222668 0.320843 -0.982784 - vertex 0.250666 0.335108 -0.931169 - endloop - endfacet - facet normal 0.63674 0.581694 -0.506157 - outer loop - vertex 0.250666 0.335108 -0.931169 - vertex 0.222668 0.320843 -0.982784 - vertex 0.189158 0.363261 -0.976191 - endloop - endfacet - facet normal 0.636782 0.581482 -0.506346 - outer loop - vertex 0.250666 0.335108 -0.931169 - vertex 0.189158 0.363261 -0.976191 - vertex 0.209579 0.383682 -0.927058 - endloop - endfacet - facet normal 0.748534 0.048843 -0.661295 - outer loop - vertex 0.338288 -0.153076 -1.05958 - vertex 0.284465 -0.153076 -1.12051 - vertex 0.281783 -0.0756563 -1.11783 - endloop - endfacet - facet normal 0.748372 0.0485716 -0.661499 - outer loop - vertex 0.338288 -0.153076 -1.05958 - vertex 0.281783 -0.0756563 -1.11783 - vertex 0.335378 -0.0752766 -1.05716 - endloop - endfacet - facet normal 0.741914 0.13701 -0.656347 - outer loop - vertex 0.335378 -0.0752766 -1.05716 - vertex 0.281783 -0.0756563 -1.11783 - vertex 0.274322 0.000481101 -1.11037 - endloop - endfacet - facet normal 0.741682 0.136575 -0.6567 - outer loop - vertex 0.335378 -0.0752766 -1.05716 - vertex 0.274322 0.000481101 -1.11037 - vertex 0.327127 0.00128075 -1.05056 - endloop - endfacet - facet normal 0.730102 0.218198 -0.647566 - outer loop - vertex 0.327127 0.00128075 -1.05056 - vertex 0.274322 0.000481101 -1.11037 - vertex 0.262669 0.0740539 -1.09871 - endloop - endfacet - facet normal 0.729915 0.217805 -0.647908 - outer loop - vertex 0.327127 0.00128075 -1.05056 - vertex 0.262669 0.0740539 -1.09871 - vertex 0.314011 0.0753537 -1.04044 - endloop - endfacet - facet normal 0.71363 0.295197 -0.635288 - outer loop - vertex 0.314011 0.0753537 -1.04044 - vertex 0.262669 0.0740539 -1.09871 - vertex 0.247411 0.14378 -1.08345 - endloop - endfacet - facet normal 0.713493 0.29487 -0.635594 - outer loop - vertex 0.314011 0.0753537 -1.04044 - vertex 0.247411 0.14378 -1.08345 - vertex 0.296508 0.1457 -1.02745 - endloop - endfacet - facet normal 0.691939 0.371044 -0.619311 - outer loop - vertex 0.296508 0.1457 -1.02745 - vertex 0.247411 0.14378 -1.08345 - vertex 0.229132 0.208376 -1.06518 - endloop - endfacet - facet normal 0.691768 0.370577 -0.619782 - outer loop - vertex 0.296508 0.1457 -1.02745 - vertex 0.229132 0.208376 -1.06518 - vertex 0.275094 0.211078 -1.01226 - endloop - endfacet - facet normal 0.667106 0.439021 -0.601855 - outer loop - vertex 0.275094 0.211078 -1.01226 - vertex 0.229132 0.208376 -1.06518 - vertex 0.209244 0.265861 -1.04529 - endloop - endfacet - facet normal 0.667205 0.43935 -0.601506 - outer loop - vertex 0.275094 0.211078 -1.01226 - vertex 0.209244 0.265861 -1.04529 - vertex 0.250302 0.269966 -0.996746 - endloop - endfacet - facet normal 0.637047 0.505853 -0.581622 - outer loop - vertex 0.250302 0.269966 -0.996746 - vertex 0.209244 0.265861 -1.04529 - vertex 0.189158 0.31425 -1.0252 - endloop - endfacet - facet normal 0.637008 0.505665 -0.581828 - outer loop - vertex 0.250302 0.269966 -0.996746 - vertex 0.189158 0.31425 -1.0252 - vertex 0.222668 0.320843 -0.982784 - endloop - endfacet - facet normal 0.600568 0.568022 -0.562734 - outer loop - vertex 0.222668 0.320843 -0.982784 - vertex 0.189158 0.31425 -1.0252 - vertex 0.173079 0.347181 -1.00912 - endloop - endfacet - facet normal 0.600568 0.562734 -0.568021 - outer loop - vertex 0.222668 0.320843 -0.982784 - vertex 0.173079 0.347181 -1.00912 - vertex 0.189158 0.363261 -0.976191 - endloop - endfacet - facet normal 0.992246 0.0422546 -0.116889 - outer loop - vertex 0.552765 -0.153076 -0.457381 - vertex 0.549001 -0.0633138 -0.456883 - vertex 0.561629 -0.0619847 -0.34921 - endloop - endfacet - facet normal 0.992289 0.0419425 -0.116629 - outer loop - vertex 0.552765 -0.153076 -0.457381 - vertex 0.561629 -0.0619847 -0.34921 - vertex 0.56544 -0.153076 -0.349542 - endloop - endfacet - facet normal 0.995935 0.0419603 -0.079708 - outer loop - vertex 0.56544 -0.153076 -0.349542 - vertex 0.561629 -0.0619847 -0.34921 - vertex 0.570497 -0.0609672 -0.237864 - endloop - endfacet - facet normal 0.995958 0.0417472 -0.0795333 - outer loop - vertex 0.56544 -0.153076 -0.349542 - vertex 0.570497 -0.0609672 -0.237864 - vertex 0.574342 -0.153076 -0.238072 - endloop - endfacet - facet normal 0.998167 0.0417589 -0.0437983 - outer loop - vertex 0.574342 -0.153076 -0.238072 - vertex 0.570497 -0.0609672 -0.237864 - vertex 0.575456 -0.0601934 -0.124123 - endloop - endfacet - facet normal 0.998183 0.0415597 -0.043636 - outer loop - vertex 0.574342 -0.153076 -0.238072 - vertex 0.575456 -0.0601934 -0.124123 - vertex 0.579318 -0.153076 -0.124242 - endloop - endfacet - facet normal 0.999104 0.0415525 -0.00802094 - outer loop - vertex 0.579318 -0.153076 -0.124242 - vertex 0.575456 -0.0601934 -0.124123 - vertex 0.576353 -0.0595952 -0.00926336 - endloop - endfacet - facet normal 0.999116 0.0412978 -0.00781355 - outer loop - vertex 0.579318 -0.153076 -0.124242 - vertex 0.576353 -0.0595952 -0.00926336 - vertex 0.580216 -0.153076 -0.0093227 - endloop - endfacet - facet normal 0.998737 0.0412589 0.0286887 - outer loop - vertex 0.580216 -0.153076 -0.0093227 - vertex 0.576353 -0.0595952 -0.00926336 - vertex 0.573038 -0.0591045 0.105437 - endloop - endfacet - facet normal 0.998743 0.0408892 0.0289919 - outer loop - vertex 0.580216 -0.153076 -0.0093227 - vertex 0.573038 -0.0591045 0.105437 - vertex 0.576886 -0.153076 0.105413 - endloop - endfacet - facet normal 0.992678 0.0406194 0.113756 - outer loop - vertex 0.576886 -0.153076 0.105413 - vertex 0.573038 -0.0591045 0.105437 - vertex 0.560627 -0.0584916 0.213522 - endloop - endfacet - facet normal 0.99263 0.039812 0.114456 - outer loop - vertex 0.576886 -0.153076 0.105413 - vertex 0.560627 -0.0584916 0.213522 - vertex 0.564421 -0.153076 0.213516 - endloop - endfacet - facet normal 0.962906 0.0386101 0.267062 - outer loop - vertex 0.564421 -0.153076 0.213516 - vertex 0.560627 -0.0584916 0.213522 - vertex 0.534235 -0.0575264 0.308537 - endloop - endfacet - facet normal 0.962569 0.0370842 0.268489 - outer loop - vertex 0.564421 -0.153076 0.213516 - vertex 0.534235 -0.0575264 0.308537 - vertex 0.537917 -0.153076 0.308537 - endloop - endfacet - facet normal 0.857519 0.033037 0.513391 - outer loop - vertex 0.537917 -0.153076 0.308537 - vertex 0.534235 -0.0575264 0.308537 - vertex 0.48898 -0.0559793 0.384027 - endloop - endfacet - facet normal 0.856314 0.0307594 0.515539 - outer loop - vertex 0.537917 -0.153076 0.308537 - vertex 0.48898 -0.0559793 0.384027 - vertex 0.492468 -0.153076 0.384027 - endloop - endfacet - facet normal 0.984922 0.12675 -0.117744 - outer loop - vertex 0.549001 -0.0633138 -0.456883 - vertex 0.537719 0.0255165 -0.455637 - vertex 0.550201 0.02816 -0.348379 - endloop - endfacet - facet normal 0.985101 0.125964 -0.117084 - outer loop - vertex 0.549001 -0.0633138 -0.456883 - vertex 0.550201 0.02816 -0.348379 - vertex 0.561629 -0.0619847 -0.34921 - endloop - endfacet - facet normal 0.988756 0.126089 -0.0803902 - outer loop - vertex 0.561629 -0.0619847 -0.34921 - vertex 0.550201 0.02816 -0.348379 - vertex 0.55897 0.0301767 -0.237353 - endloop - endfacet - facet normal 0.988869 0.125508 -0.0799087 - outer loop - vertex 0.561629 -0.0619847 -0.34921 - vertex 0.55897 0.0301767 -0.237353 - vertex 0.570497 -0.0609672 -0.237864 - endloop - endfacet - facet normal 0.991081 0.12559 -0.0445669 - outer loop - vertex 0.570497 -0.0609672 -0.237864 - vertex 0.55897 0.0301767 -0.237353 - vertex 0.563882 0.031695 -0.123858 - endloop - endfacet - facet normal 0.991181 0.124973 -0.0440598 - outer loop - vertex 0.570497 -0.0609672 -0.237864 - vertex 0.563882 0.031695 -0.123858 - vertex 0.575456 -0.0601934 -0.124123 - endloop - endfacet - facet normal 0.992116 0.12499 -0.00909636 - outer loop - vertex 0.575456 -0.0601934 -0.124123 - vertex 0.563882 0.031695 -0.123858 - vertex 0.564788 0.0328432 -0.00919506 - endloop - endfacet - facet normal 0.992229 0.12414 -0.00839736 - outer loop - vertex 0.575456 -0.0601934 -0.124123 - vertex 0.564788 0.0328432 -0.00919506 - vertex 0.576353 -0.0595952 -0.00926336 - endloop - endfacet - facet normal 0.991903 0.124072 0.0271125 - outer loop - vertex 0.576353 -0.0595952 -0.00926336 - vertex 0.564788 0.0328432 -0.00919506 - vertex 0.561544 0.0337499 0.105336 - endloop - endfacet - facet normal 0.992029 0.122824 0.028146 - outer loop - vertex 0.576353 -0.0595952 -0.00926336 - vertex 0.561544 0.0337499 0.105336 - vertex 0.573038 -0.0591045 0.105437 - endloop - endfacet - facet normal 0.986356 0.122211 0.110304 - outer loop - vertex 0.573038 -0.0591045 0.105437 - vertex 0.561544 0.0337499 0.105336 - vertex 0.54933 0.0349018 0.213278 - endloop - endfacet - facet normal 0.986417 0.119604 0.11259 - outer loop - vertex 0.573038 -0.0591045 0.105437 - vertex 0.54933 0.0349018 0.213278 - vertex 0.560627 -0.0584916 0.213522 - endloop - endfacet - facet normal 0.958457 0.116607 0.260313 - outer loop - vertex 0.560627 -0.0584916 0.213522 - vertex 0.54933 0.0349018 0.213278 - vertex 0.523327 0.036786 0.308176 - endloop - endfacet - facet normal 0.957776 0.11179 0.264894 - outer loop - vertex 0.560627 -0.0584916 0.213522 - vertex 0.523327 0.036786 0.308176 - vertex 0.534235 -0.0575264 0.308537 - endloop - endfacet - facet normal 0.858035 0.101168 0.503528 - outer loop - vertex 0.534235 -0.0575264 0.308537 - vertex 0.523327 0.036786 0.308176 - vertex 0.478716 0.0398893 0.383572 - endloop - endfacet - facet normal 0.854744 0.0939381 0.510479 - outer loop - vertex 0.534235 -0.0575264 0.308537 - vertex 0.478716 0.0398893 0.383572 - vertex 0.48898 -0.0559793 0.384027 - endloop - endfacet - facet normal 0.969991 0.211993 -0.119066 - outer loop - vertex 0.537719 0.0255165 -0.455637 - vertex 0.518926 0.112483 -0.453892 - vertex 0.531162 0.116411 -0.347216 - endloop - endfacet - facet normal 0.970346 0.210893 -0.118122 - outer loop - vertex 0.537719 0.0255165 -0.455637 - vertex 0.531162 0.116411 -0.347216 - vertex 0.550201 0.02816 -0.348379 - endloop - endfacet - facet normal 0.974038 0.211207 -0.0815011 - outer loop - vertex 0.550201 0.02816 -0.348379 - vertex 0.531162 0.116411 -0.347216 - vertex 0.539767 0.11939 -0.23665 - endloop - endfacet - facet normal 0.974284 0.210349 -0.0807775 - outer loop - vertex 0.550201 0.02816 -0.348379 - vertex 0.539767 0.11939 -0.23665 - vertex 0.55897 0.0301767 -0.237353 - endloop - endfacet - facet normal 0.976505 0.210552 -0.0458906 - outer loop - vertex 0.55897 0.0301767 -0.237353 - vertex 0.539767 0.11939 -0.23665 - vertex 0.544608 0.121594 -0.123539 - endloop - endfacet - facet normal 0.976754 0.20957 -0.0450704 - outer loop - vertex 0.55897 0.0301767 -0.237353 - vertex 0.544608 0.121594 -0.123539 - vertex 0.563882 0.031695 -0.123858 - endloop - endfacet - facet normal 0.977714 0.209655 -0.0109858 - outer loop - vertex 0.563882 0.031695 -0.123858 - vertex 0.544608 0.121594 -0.123539 - vertex 0.545549 0.123196 -0.00922753 - endloop - endfacet - facet normal 0.978025 0.208255 -0.00981876 - outer loop - vertex 0.563882 0.031695 -0.123858 - vertex 0.545549 0.123196 -0.00922753 - vertex 0.564788 0.0328432 -0.00919506 - endloop - endfacet - facet normal 0.97778 0.208215 0.0243506 - outer loop - vertex 0.564788 0.0328432 -0.00919506 - vertex 0.545549 0.123196 -0.00922753 - vertex 0.542456 0.124369 0.104939 - endloop - endfacet - facet normal 0.978171 0.206162 0.0260737 - outer loop - vertex 0.564788 0.0328432 -0.00919506 - vertex 0.542456 0.124369 0.104939 - vertex 0.561544 0.0337499 0.105336 - endloop - endfacet - facet normal 0.973116 0.205439 0.104119 - outer loop - vertex 0.561544 0.0337499 0.105336 - vertex 0.542456 0.124369 0.104939 - vertex 0.530619 0.125913 0.212524 - endloop - endfacet - facet normal 0.973604 0.201067 0.108019 - outer loop - vertex 0.561544 0.0337499 0.105336 - vertex 0.530619 0.125913 0.212524 - vertex 0.54933 0.0349018 0.213278 - endloop - endfacet - facet normal 0.948502 0.197066 0.248009 - outer loop - vertex 0.54933 0.0349018 0.213278 - vertex 0.530619 0.125913 0.212524 - vertex 0.505328 0.128624 0.307092 - endloop - endfacet - facet normal 0.948048 0.188828 0.256027 - outer loop - vertex 0.54933 0.0349018 0.213278 - vertex 0.505328 0.128624 0.307092 - vertex 0.523327 0.036786 0.308176 - endloop - endfacet - facet normal 0.857086 0.173704 0.485006 - outer loop - vertex 0.523327 0.036786 0.308176 - vertex 0.505328 0.128624 0.307092 - vertex 0.461875 0.133301 0.382207 - endloop - endfacet - facet normal 0.852302 0.160939 0.497675 - outer loop - vertex 0.523327 0.036786 0.308176 - vertex 0.461875 0.133301 0.382207 - vertex 0.478716 0.0398893 0.383572 - endloop - endfacet - facet normal 0.946715 0.298598 -0.120702 - outer loop - vertex 0.518926 0.112483 -0.453892 - vertex 0.492633 0.196653 -0.451898 - vertex 0.504519 0.201821 -0.345887 - endloop - endfacet - facet normal 0.947247 0.297353 -0.1196 - outer loop - vertex 0.518926 0.112483 -0.453892 - vertex 0.504519 0.201821 -0.345887 - vertex 0.531162 0.116411 -0.347216 - endloop - endfacet - facet normal 0.950974 0.297945 -0.0829253 - outer loop - vertex 0.531162 0.116411 -0.347216 - vertex 0.504519 0.201821 -0.345887 - vertex 0.512894 0.205708 -0.235868 - endloop - endfacet - facet normal 0.951368 0.29693 -0.0820466 - outer loop - vertex 0.531162 0.116411 -0.347216 - vertex 0.512894 0.205708 -0.235868 - vertex 0.539767 0.11939 -0.23665 - endloop - endfacet - facet normal 0.953592 0.29731 -0.0476354 - outer loop - vertex 0.539767 0.11939 -0.23665 - vertex 0.512894 0.205708 -0.235868 - vertex 0.517646 0.20851 -0.123256 - endloop - endfacet - facet normal 0.954022 0.296093 -0.0465952 - outer loop - vertex 0.539767 0.11939 -0.23665 - vertex 0.517646 0.20851 -0.123256 - vertex 0.544608 0.121594 -0.123539 - endloop - endfacet - facet normal 0.955003 0.29629 -0.0134867 - outer loop - vertex 0.544608 0.121594 -0.123539 - vertex 0.517646 0.20851 -0.123256 - vertex 0.51866 0.210421 -0.00947047 - endloop - endfacet - facet normal 0.955565 0.294536 -0.011993 - outer loop - vertex 0.544608 0.121594 -0.123539 - vertex 0.51866 0.210421 -0.00947047 - vertex 0.545549 0.123196 -0.00922753 - endloop - endfacet - facet normal 0.955403 0.294577 0.0207241 - outer loop - vertex 0.545549 0.123196 -0.00922753 - vertex 0.51866 0.210421 -0.00947047 - vertex 0.515822 0.211637 0.104073 - endloop - endfacet - facet normal 0.956134 0.292032 0.0229027 - outer loop - vertex 0.545549 0.123196 -0.00922753 - vertex 0.515822 0.211637 0.104073 - vertex 0.542456 0.124369 0.104939 - endloop - endfacet - facet normal 0.951819 0.291434 0.0954252 - outer loop - vertex 0.542456 0.124369 0.104939 - vertex 0.515822 0.211637 0.104073 - vertex 0.504578 0.213349 0.210997 - endloop - endfacet - facet normal 0.953039 0.285594 0.10076 - outer loop - vertex 0.542456 0.124369 0.104939 - vertex 0.504578 0.213349 0.210997 - vertex 0.530619 0.125913 0.212524 - endloop - endfacet - facet normal 0.931625 0.281472 0.229887 - outer loop - vertex 0.530619 0.125913 0.212524 - vertex 0.504578 0.213349 0.210997 - vertex 0.480374 0.216749 0.304924 - endloop - endfacet - facet normal 0.932106 0.269887 0.241537 - outer loop - vertex 0.530619 0.125913 0.212524 - vertex 0.480374 0.216749 0.304924 - vertex 0.505328 0.128624 0.307092 - endloop - endfacet - facet normal 0.853222 0.25283 0.456168 - outer loop - vertex 0.505328 0.128624 0.307092 - vertex 0.480374 0.216749 0.304924 - vertex 0.438655 0.223027 0.379476 - endloop - endfacet - facet normal 0.847828 0.233888 0.475903 - outer loop - vertex 0.505328 0.128624 0.307092 - vertex 0.438655 0.223027 0.379476 - vertex 0.461875 0.133301 0.382207 - endloop - endfacet - facet normal 0.913954 0.386895 -0.122471 - outer loop - vertex 0.492633 0.196653 -0.451898 - vertex 0.458847 0.277094 -0.449905 - vertex 0.470276 0.283444 -0.344558 - endloop - endfacet - facet normal 0.914619 0.385678 -0.121348 - outer loop - vertex 0.492633 0.196653 -0.451898 - vertex 0.470276 0.283444 -0.344558 - vertex 0.504519 0.201821 -0.345887 - endloop - endfacet - facet normal 0.918351 0.386643 -0.0844946 - outer loop - vertex 0.504519 0.201821 -0.345887 - vertex 0.470276 0.283444 -0.344558 - vertex 0.478357 0.288166 -0.235117 - endloop - endfacet - facet normal 0.918863 0.385623 -0.0835785 - outer loop - vertex 0.504519 0.201821 -0.345887 - vertex 0.478357 0.288166 -0.235117 - vertex 0.512894 0.205708 -0.235868 - endloop - endfacet - facet normal 0.921067 0.386237 -0.0495639 - outer loop - vertex 0.512894 0.205708 -0.235868 - vertex 0.478357 0.288166 -0.235117 - vertex 0.483009 0.291447 -0.123102 - endloop - endfacet - facet normal 0.921644 0.384997 -0.0484687 - outer loop - vertex 0.512894 0.205708 -0.235868 - vertex 0.483009 0.291447 -0.123102 - vertex 0.517646 0.20851 -0.123256 - endloop - endfacet - facet normal 0.922629 0.385348 -0.0162111 - outer loop - vertex 0.517646 0.20851 -0.123256 - vertex 0.483009 0.291447 -0.123102 - vertex 0.484149 0.293475 -0.0100336 - endloop - endfacet - facet normal 0.923385 0.383594 -0.0146712 - outer loop - vertex 0.517646 0.20851 -0.123256 - vertex 0.484149 0.293475 -0.0100336 - vertex 0.51866 0.210421 -0.00947047 - endloop - endfacet - facet normal 0.923278 0.383764 0.0168493 - outer loop - vertex 0.51866 0.210421 -0.00947047 - vertex 0.484149 0.293475 -0.0100336 - vertex 0.481695 0.294435 0.102567 - endloop - endfacet - facet normal 0.924255 0.381303 0.0190167 - outer loop - vertex 0.51866 0.210421 -0.00947047 - vertex 0.481695 0.294435 0.102567 - vertex 0.515822 0.211637 0.104073 - endloop - endfacet - facet normal 0.920675 0.381023 0.0847284 - outer loop - vertex 0.515822 0.211637 0.104073 - vertex 0.481695 0.294435 0.102567 - vertex 0.471296 0.296021 0.208436 - endloop - endfacet - facet normal 0.922813 0.374336 0.0910472 - outer loop - vertex 0.515822 0.211637 0.104073 - vertex 0.471296 0.296021 0.208436 - vertex 0.504578 0.213349 0.210997 - endloop - endfacet - facet normal 0.905583 0.370951 0.205706 - outer loop - vertex 0.504578 0.213349 0.210997 - vertex 0.471296 0.296021 0.208436 - vertex 0.4486 0.299924 0.30131 - endloop - endfacet - facet normal 0.907812 0.356398 0.221038 - outer loop - vertex 0.504578 0.213349 0.210997 - vertex 0.4486 0.299924 0.30131 - vertex 0.480374 0.216749 0.304924 - endloop - endfacet - facet normal 0.843993 0.340423 0.414473 - outer loop - vertex 0.480374 0.216749 0.304924 - vertex 0.4486 0.299924 0.30131 - vertex 0.409257 0.307839 0.374925 - endloop - endfacet - facet normal 0.839358 0.314731 0.443196 - outer loop - vertex 0.480374 0.216749 0.304924 - vertex 0.409257 0.307839 0.374925 - vertex 0.438655 0.223027 0.379476 - endloop - endfacet - facet normal 0.870222 0.476759 -0.124156 - outer loop - vertex 0.458847 0.277094 -0.449905 - vertex 0.417579 0.352876 -0.44816 - vertex 0.428441 0.360332 -0.343395 - endloop - endfacet - facet normal 0.870923 0.475737 -0.123158 - outer loop - vertex 0.458847 0.277094 -0.449905 - vertex 0.428441 0.360332 -0.343395 - vertex 0.470276 0.283444 -0.344558 - endloop - endfacet - facet normal 0.874594 0.477172 -0.0859816 - outer loop - vertex 0.470276 0.283444 -0.344558 - vertex 0.428441 0.360332 -0.343395 - vertex 0.436158 0.365813 -0.234478 - endloop - endfacet - facet normal 0.875139 0.476317 -0.0851728 - outer loop - vertex 0.470276 0.283444 -0.344558 - vertex 0.436158 0.365813 -0.234478 - vertex 0.478357 0.288166 -0.235117 - endloop - endfacet - facet normal 0.877289 0.477208 -0.0513492 - outer loop - vertex 0.478357 0.288166 -0.235117 - vertex 0.436158 0.365813 -0.234478 - vertex 0.440689 0.369475 -0.123039 - endloop - endfacet - facet normal 0.877897 0.476189 -0.0504062 - outer loop - vertex 0.478357 0.288166 -0.235117 - vertex 0.440689 0.369475 -0.123039 - vertex 0.483009 0.291447 -0.123102 - endloop - endfacet - facet normal 0.878872 0.476692 -0.0186724 - outer loop - vertex 0.483009 0.291447 -0.123102 - vertex 0.440689 0.369475 -0.123039 - vertex 0.441992 0.371472 -0.0107065 - endloop - endfacet - facet normal 0.879655 0.475294 -0.0173907 - outer loop - vertex 0.483009 0.291447 -0.123102 - vertex 0.441992 0.371472 -0.0107065 - vertex 0.484149 0.293475 -0.0100336 - endloop - endfacet - facet normal 0.879598 0.475529 0.0134131 - outer loop - vertex 0.484149 0.293475 -0.0100336 - vertex 0.441992 0.371472 -0.0107065 - vertex 0.440027 0.37196 0.100889 - endloop - endfacet - facet normal 0.880594 0.47363 0.0151526 - outer loop - vertex 0.484149 0.293475 -0.0100336 - vertex 0.440027 0.37196 0.100889 - vertex 0.481695 0.294435 0.102567 - endloop - endfacet - facet normal 0.877855 0.4734 0.0725466 - outer loop - vertex 0.481695 0.294435 0.102567 - vertex 0.440027 0.37196 0.100889 - vertex 0.431036 0.372679 0.204991 - endloop - endfacet - facet normal 0.881048 0.466288 0.0795588 - outer loop - vertex 0.481695 0.294435 0.102567 - vertex 0.431036 0.372679 0.204991 - vertex 0.471296 0.296021 0.208436 - endloop - endfacet - facet normal 0.868032 0.463838 0.177128 - outer loop - vertex 0.471296 0.296021 0.208436 - vertex 0.431036 0.372679 0.204991 - vertex 0.411266 0.375365 0.294843 - endloop - endfacet - facet normal 0.872439 0.448417 0.194351 - outer loop - vertex 0.471296 0.296021 0.208436 - vertex 0.411266 0.375365 0.294843 - vertex 0.4486 0.299924 0.30131 - endloop - endfacet - facet normal 0.822864 0.438232 0.36173 - outer loop - vertex 0.4486 0.299924 0.30131 - vertex 0.411266 0.375365 0.294843 - vertex 0.375982 0.383505 0.365244 - endloop - endfacet - facet normal 0.821391 0.411709 0.39473 - outer loop - vertex 0.4486 0.299924 0.30131 - vertex 0.375982 0.383505 0.365244 - vertex 0.409257 0.307839 0.374925 - endloop - endfacet - facet normal 0.813829 0.567392 -0.125491 - outer loop - vertex 0.417579 0.352876 -0.44816 - vertex 0.368836 0.423065 -0.446914 - vertex 0.379018 0.431539 -0.342564 - endloop - endfacet - facet normal 0.814413 0.566713 -0.124771 - outer loop - vertex 0.417579 0.352876 -0.44816 - vertex 0.379018 0.431539 -0.342564 - vertex 0.428441 0.360332 -0.343395 - endloop - endfacet - facet normal 0.817914 0.568703 -0.0871434 - outer loop - vertex 0.428441 0.360332 -0.343395 - vertex 0.379018 0.431539 -0.342564 - vertex 0.386298 0.437701 -0.234031 - endloop - endfacet - facet normal 0.818362 0.568145 -0.0865753 - outer loop - vertex 0.428441 0.360332 -0.343395 - vertex 0.386298 0.437701 -0.234031 - vertex 0.436158 0.365813 -0.234478 - endloop - endfacet - facet normal 0.820405 0.56935 -0.0526919 - outer loop - vertex 0.436158 0.365813 -0.234478 - vertex 0.386298 0.437701 -0.234031 - vertex 0.390679 0.441661 -0.12303 - endloop - endfacet - facet normal 0.820886 0.568714 -0.0520625 - outer loop - vertex 0.436158 0.365813 -0.234478 - vertex 0.390679 0.441661 -0.12303 - vertex 0.440689 0.369475 -0.123039 - endloop - endfacet - facet normal 0.82183 0.569365 -0.0204612 - outer loop - vertex 0.440689 0.369475 -0.123039 - vertex 0.390679 0.441661 -0.12303 - vertex 0.392168 0.443527 -0.0112786 - endloop - endfacet - facet normal 0.822426 0.568532 -0.0196505 - outer loop - vertex 0.440689 0.369475 -0.123039 - vertex 0.392168 0.443527 -0.0112786 - vertex 0.441992 0.371472 -0.0107065 - endloop - endfacet - facet normal 0.822422 0.568772 0.0109737 - outer loop - vertex 0.441992 0.371472 -0.0107065 - vertex 0.392168 0.443527 -0.0112786 - vertex 0.39077 0.44341 0.0995073 - endloop - endfacet - facet normal 0.823151 0.567695 0.0120154 - outer loop - vertex 0.441992 0.371472 -0.0107065 - vertex 0.39077 0.44341 0.0995073 - vertex 0.440027 0.37196 0.100889 - endloop - endfacet - facet normal 0.821185 0.567303 0.0618333 - outer loop - vertex 0.440027 0.37196 0.100889 - vertex 0.39077 0.44341 0.0995073 - vertex 0.384065 0.442075 0.20081 - endloop - endfacet - facet normal 0.824371 0.562033 0.0673161 - outer loop - vertex 0.440027 0.37196 0.100889 - vertex 0.384065 0.442075 0.20081 - vertex 0.431036 0.372679 0.204991 - endloop - endfacet - facet normal 0.814069 0.560227 0.153093 - outer loop - vertex 0.431036 0.372679 0.204991 - vertex 0.384065 0.442075 0.20081 - vertex 0.36963 0.440286 0.284113 - endloop - endfacet - facet normal 0.817941 0.551584 0.163483 - outer loop - vertex 0.431036 0.372679 0.204991 - vertex 0.36963 0.440286 0.284113 - vertex 0.411266 0.375365 0.294843 - endloop - endfacet - facet normal 0.778321 0.54939 0.303951 - outer loop - vertex 0.411266 0.375365 0.294843 - vertex 0.36963 0.440286 0.284113 - vertex 0.341135 0.445794 0.347126 - endloop - endfacet - facet normal 0.779957 0.532151 0.329367 - outer loop - vertex 0.411266 0.375365 0.294843 - vertex 0.341135 0.445794 0.347126 - vertex 0.375982 0.383505 0.365244 - endloop - endfacet - facet normal 0.743161 0.657109 -0.126173 - outer loop - vertex 0.368836 0.423065 -0.446914 - vertex 0.312627 0.48673 -0.446415 - vertex 0.322015 0.496117 -0.342232 - endloop - endfacet - facet normal 0.743423 0.656867 -0.125886 - outer loop - vertex 0.368836 0.423065 -0.446914 - vertex 0.322015 0.496117 -0.342232 - vertex 0.379018 0.431539 -0.342564 - endloop - endfacet - facet normal 0.746594 0.65947 -0.0877315 - outer loop - vertex 0.379018 0.431539 -0.342564 - vertex 0.322015 0.496117 -0.342232 - vertex 0.328777 0.50288 -0.233855 - endloop - endfacet - facet normal 0.746789 0.659278 -0.0875156 - outer loop - vertex 0.379018 0.431539 -0.342564 - vertex 0.328777 0.50288 -0.233855 - vertex 0.386298 0.437701 -0.234031 - endloop - endfacet - facet normal 0.748644 0.660823 -0.053339 - outer loop - vertex 0.386298 0.437701 -0.234031 - vertex 0.328777 0.50288 -0.233855 - vertex 0.332971 0.507073 -0.123039 - endloop - endfacet - facet normal 0.748835 0.660624 -0.053123 - outer loop - vertex 0.386298 0.437701 -0.234031 - vertex 0.332971 0.507073 -0.123039 - vertex 0.390679 0.441661 -0.12303 - endloop - endfacet - facet normal 0.749722 0.661411 -0.0212866 - outer loop - vertex 0.390679 0.441661 -0.12303 - vertex 0.332971 0.507073 -0.123039 - vertex 0.334653 0.508755 -0.0115394 - endloop - endfacet - facet normal 0.749937 0.661175 -0.0210369 - outer loop - vertex 0.390679 0.441661 -0.12303 - vertex 0.334653 0.508755 -0.0115394 - vertex 0.392168 0.443527 -0.0112786 - endloop - endfacet - facet normal 0.750005 0.661359 0.00987957 - outer loop - vertex 0.392168 0.443527 -0.0112786 - vertex 0.334653 0.508755 -0.0115394 - vertex 0.33388 0.507982 0.0988907 - endloop - endfacet - facet normal 0.750238 0.66109 0.0101606 - outer loop - vertex 0.392168 0.443527 -0.0112786 - vertex 0.33388 0.507982 0.0988907 - vertex 0.39077 0.44341 0.0995073 - endloop - endfacet - facet normal 0.748855 0.660314 0.0565848 - outer loop - vertex 0.39077 0.44341 0.0995073 - vertex 0.33388 0.507982 0.0988907 - vertex 0.329879 0.503981 0.198536 - endloop - endfacet - facet normal 0.750119 0.658725 0.0583346 - outer loop - vertex 0.39077 0.44341 0.0995073 - vertex 0.329879 0.503981 0.198536 - vertex 0.384065 0.442075 0.20081 - endloop - endfacet - facet normal 0.742338 0.65496 0.141286 - outer loop - vertex 0.384065 0.442075 0.20081 - vertex 0.329879 0.503981 0.198536 - vertex 0.321876 0.495978 0.277683 - endloop - endfacet - facet normal 0.743143 0.653715 0.142811 - outer loop - vertex 0.384065 0.442075 0.20081 - vertex 0.321876 0.495978 0.277683 - vertex 0.36963 0.440286 0.284113 - endloop - endfacet - facet normal 0.715155 0.644468 0.270584 - outer loop - vertex 0.36963 0.440286 0.284113 - vertex 0.321876 0.495978 0.277683 - vertex 0.312305 0.486408 0.325773 - endloop - endfacet - facet normal 0.714298 0.647132 0.266455 - outer loop - vertex 0.36963 0.440286 0.284113 - vertex 0.312305 0.486408 0.325773 - vertex 0.341135 0.445794 0.347126 - endloop - endfacet - facet normal 0.992289 -0.0419431 -0.116629 - outer loop - vertex 0.552765 -0.153076 -0.457381 - vertex 0.56544 -0.153076 -0.349542 - vertex 0.561629 -0.244168 -0.34921 - endloop - endfacet - facet normal 0.992246 -0.0422553 -0.116889 - outer loop - vertex 0.552765 -0.153076 -0.457381 - vertex 0.561629 -0.244168 -0.34921 - vertex 0.549001 -0.242839 -0.456883 - endloop - endfacet - facet normal 0.985101 -0.125965 -0.117084 - outer loop - vertex 0.549001 -0.242839 -0.456883 - vertex 0.561629 -0.244168 -0.34921 - vertex 0.550201 -0.334312 -0.348379 - endloop - endfacet - facet normal 0.984922 -0.12675 -0.117745 - outer loop - vertex 0.549001 -0.242839 -0.456883 - vertex 0.550201 -0.334312 -0.348379 - vertex 0.537718 -0.331669 -0.455637 - endloop - endfacet - facet normal 0.970346 -0.210894 -0.118122 - outer loop - vertex 0.537718 -0.331669 -0.455637 - vertex 0.550201 -0.334312 -0.348379 - vertex 0.531162 -0.422563 -0.347216 - endloop - endfacet - facet normal 0.969991 -0.211993 -0.119065 - outer loop - vertex 0.537718 -0.331669 -0.455637 - vertex 0.531162 -0.422563 -0.347216 - vertex 0.518926 -0.418635 -0.453892 - endloop - endfacet - facet normal 0.947247 -0.297353 -0.1196 - outer loop - vertex 0.518926 -0.418635 -0.453892 - vertex 0.531162 -0.422563 -0.347216 - vertex 0.504518 -0.507974 -0.345887 - endloop - endfacet - facet normal 0.946715 -0.298599 -0.120702 - outer loop - vertex 0.518926 -0.418635 -0.453892 - vertex 0.504518 -0.507974 -0.345887 - vertex 0.492633 -0.502805 -0.451898 - endloop - endfacet - facet normal 0.914618 -0.385678 -0.121349 - outer loop - vertex 0.492633 -0.502805 -0.451898 - vertex 0.504518 -0.507974 -0.345887 - vertex 0.470276 -0.589596 -0.344558 - endloop - endfacet - facet normal 0.913954 -0.386896 -0.122471 - outer loop - vertex 0.492633 -0.502805 -0.451898 - vertex 0.470276 -0.589596 -0.344558 - vertex 0.458847 -0.583247 -0.449905 - endloop - endfacet - facet normal 0.870922 -0.475738 -0.123158 - outer loop - vertex 0.458847 -0.583247 -0.449905 - vertex 0.470276 -0.589596 -0.344558 - vertex 0.42844 -0.666484 -0.343395 - endloop - endfacet - facet normal 0.870221 -0.47676 -0.124156 - outer loop - vertex 0.458847 -0.583247 -0.449905 - vertex 0.42844 -0.666484 -0.343395 - vertex 0.417578 -0.659028 -0.44816 - endloop - endfacet - facet normal 0.814412 -0.566714 -0.124772 - outer loop - vertex 0.417578 -0.659028 -0.44816 - vertex 0.42844 -0.666484 -0.343395 - vertex 0.379018 -0.737691 -0.342564 - endloop - endfacet - facet normal 0.813829 -0.567392 -0.12549 - outer loop - vertex 0.417578 -0.659028 -0.44816 - vertex 0.379018 -0.737691 -0.342564 - vertex 0.368835 -0.729217 -0.446914 - endloop - endfacet - facet normal 0.743423 -0.656867 -0.125886 - outer loop - vertex 0.368835 -0.729217 -0.446914 - vertex 0.379018 -0.737691 -0.342564 - vertex 0.322015 -0.80227 -0.342232 - endloop - endfacet - facet normal 0.743161 -0.657109 -0.126172 - outer loop - vertex 0.368835 -0.729217 -0.446914 - vertex 0.322015 -0.80227 -0.342232 - vertex 0.312627 -0.792882 -0.446415 - endloop - endfacet - facet normal 0.995958 -0.0417479 -0.0795333 - outer loop - vertex 0.56544 -0.153076 -0.349542 - vertex 0.574342 -0.153076 -0.238072 - vertex 0.570497 -0.245185 -0.237864 - endloop - endfacet - facet normal 0.995935 -0.041961 -0.079708 - outer loop - vertex 0.56544 -0.153076 -0.349542 - vertex 0.570497 -0.245185 -0.237864 - vertex 0.561629 -0.244168 -0.34921 - endloop - endfacet - facet normal 0.988869 -0.12551 -0.0799087 - outer loop - vertex 0.561629 -0.244168 -0.34921 - vertex 0.570497 -0.245185 -0.237864 - vertex 0.55897 -0.336329 -0.237353 - endloop - endfacet - facet normal 0.988756 -0.12609 -0.0803897 - outer loop - vertex 0.561629 -0.244168 -0.34921 - vertex 0.55897 -0.336329 -0.237353 - vertex 0.550201 -0.334312 -0.348379 - endloop - endfacet - facet normal 0.974283 -0.210349 -0.080777 - outer loop - vertex 0.550201 -0.334312 -0.348379 - vertex 0.55897 -0.336329 -0.237353 - vertex 0.539767 -0.425543 -0.23665 - endloop - endfacet - facet normal 0.974038 -0.211207 -0.0815006 - outer loop - vertex 0.550201 -0.334312 -0.348379 - vertex 0.539767 -0.425543 -0.23665 - vertex 0.531162 -0.422563 -0.347216 - endloop - endfacet - facet normal 0.951368 -0.29693 -0.0820462 - outer loop - vertex 0.531162 -0.422563 -0.347216 - vertex 0.539767 -0.425543 -0.23665 - vertex 0.512894 -0.511861 -0.235868 - endloop - endfacet - facet normal 0.950974 -0.297945 -0.0829249 - outer loop - vertex 0.531162 -0.422563 -0.347216 - vertex 0.512894 -0.511861 -0.235868 - vertex 0.504518 -0.507974 -0.345887 - endloop - endfacet - facet normal 0.918863 -0.385623 -0.0835781 - outer loop - vertex 0.504518 -0.507974 -0.345887 - vertex 0.512894 -0.511861 -0.235868 - vertex 0.478357 -0.594318 -0.235117 - endloop - endfacet - facet normal 0.91835 -0.386644 -0.0844947 - outer loop - vertex 0.504518 -0.507974 -0.345887 - vertex 0.478357 -0.594318 -0.235117 - vertex 0.470276 -0.589596 -0.344558 - endloop - endfacet - facet normal 0.875138 -0.476318 -0.0851731 - outer loop - vertex 0.470276 -0.589596 -0.344558 - vertex 0.478357 -0.594318 -0.235117 - vertex 0.436158 -0.671965 -0.234478 - endloop - endfacet - facet normal 0.874593 -0.477173 -0.0859817 - outer loop - vertex 0.470276 -0.589596 -0.344558 - vertex 0.436158 -0.671965 -0.234478 - vertex 0.42844 -0.666484 -0.343395 - endloop - endfacet - facet normal 0.818362 -0.568145 -0.0865756 - outer loop - vertex 0.42844 -0.666484 -0.343395 - vertex 0.436158 -0.671965 -0.234478 - vertex 0.386297 -0.743853 -0.234031 - endloop - endfacet - facet normal 0.817913 -0.568704 -0.0871441 - outer loop - vertex 0.42844 -0.666484 -0.343395 - vertex 0.386297 -0.743853 -0.234031 - vertex 0.379018 -0.737691 -0.342564 - endloop - endfacet - facet normal 0.746788 -0.659278 -0.0875164 - outer loop - vertex 0.379018 -0.737691 -0.342564 - vertex 0.386297 -0.743853 -0.234031 - vertex 0.328777 -0.809032 -0.233855 - endloop - endfacet - facet normal 0.746594 -0.65947 -0.0877318 - outer loop - vertex 0.379018 -0.737691 -0.342564 - vertex 0.328777 -0.809032 -0.233855 - vertex 0.322015 -0.80227 -0.342232 - endloop - endfacet - facet normal 0.998183 -0.041561 -0.043636 - outer loop - vertex 0.574342 -0.153076 -0.238072 - vertex 0.579318 -0.153076 -0.124242 - vertex 0.575456 -0.245959 -0.124123 - endloop - endfacet - facet normal 0.998167 -0.0417595 -0.0437977 - outer loop - vertex 0.574342 -0.153076 -0.238072 - vertex 0.575456 -0.245959 -0.124123 - vertex 0.570497 -0.245185 -0.237864 - endloop - endfacet - facet normal 0.991181 -0.124974 -0.0440594 - outer loop - vertex 0.570497 -0.245185 -0.237864 - vertex 0.575456 -0.245959 -0.124123 - vertex 0.563882 -0.337847 -0.123858 - endloop - endfacet - facet normal 0.991081 -0.125591 -0.0445669 - outer loop - vertex 0.570497 -0.245185 -0.237864 - vertex 0.563882 -0.337847 -0.123858 - vertex 0.55897 -0.336329 -0.237353 - endloop - endfacet - facet normal 0.976754 -0.209571 -0.0450704 - outer loop - vertex 0.55897 -0.336329 -0.237353 - vertex 0.563882 -0.337847 -0.123858 - vertex 0.544608 -0.427747 -0.123539 - endloop - endfacet - facet normal 0.976505 -0.210553 -0.0458906 - outer loop - vertex 0.55897 -0.336329 -0.237353 - vertex 0.544608 -0.427747 -0.123539 - vertex 0.539767 -0.425543 -0.23665 - endloop - endfacet - facet normal 0.954022 -0.296094 -0.0465952 - outer loop - vertex 0.539767 -0.425543 -0.23665 - vertex 0.544608 -0.427747 -0.123539 - vertex 0.517646 -0.514662 -0.123256 - endloop - endfacet - facet normal 0.953592 -0.29731 -0.0476354 - outer loop - vertex 0.539767 -0.425543 -0.23665 - vertex 0.517646 -0.514662 -0.123256 - vertex 0.512894 -0.511861 -0.235868 - endloop - endfacet - facet normal 0.921644 -0.384997 -0.0484687 - outer loop - vertex 0.512894 -0.511861 -0.235868 - vertex 0.517646 -0.514662 -0.123256 - vertex 0.483009 -0.5976 -0.123102 - endloop - endfacet - facet normal 0.921067 -0.386237 -0.0495637 - outer loop - vertex 0.512894 -0.511861 -0.235868 - vertex 0.483009 -0.5976 -0.123102 - vertex 0.478357 -0.594318 -0.235117 - endloop - endfacet - facet normal 0.877897 -0.47619 -0.050406 - outer loop - vertex 0.478357 -0.594318 -0.235117 - vertex 0.483009 -0.5976 -0.123102 - vertex 0.440689 -0.675627 -0.123039 - endloop - endfacet - facet normal 0.877289 -0.477208 -0.051349 - outer loop - vertex 0.478357 -0.594318 -0.235117 - vertex 0.440689 -0.675627 -0.123039 - vertex 0.436158 -0.671965 -0.234478 - endloop - endfacet - facet normal 0.820886 -0.568715 -0.0520624 - outer loop - vertex 0.436158 -0.671965 -0.234478 - vertex 0.440689 -0.675627 -0.123039 - vertex 0.390678 -0.747813 -0.12303 - endloop - endfacet - facet normal 0.820404 -0.569351 -0.0526919 - outer loop - vertex 0.436158 -0.671965 -0.234478 - vertex 0.390678 -0.747813 -0.12303 - vertex 0.386297 -0.743853 -0.234031 - endloop - endfacet - facet normal 0.748835 -0.660624 -0.0531231 - outer loop - vertex 0.386297 -0.743853 -0.234031 - vertex 0.390678 -0.747813 -0.12303 - vertex 0.33297 -0.813226 -0.123039 - endloop - endfacet - facet normal 0.748644 -0.660823 -0.0533397 - outer loop - vertex 0.386297 -0.743853 -0.234031 - vertex 0.33297 -0.813226 -0.123039 - vertex 0.328777 -0.809032 -0.233855 - endloop - endfacet - facet normal 0.999116 -0.0412984 -0.00781356 - outer loop - vertex 0.579318 -0.153076 -0.124242 - vertex 0.580216 -0.153076 -0.0093227 - vertex 0.576353 -0.246557 -0.00926336 - endloop - endfacet - facet normal 0.999104 -0.0415538 -0.00802149 - outer loop - vertex 0.579318 -0.153076 -0.124242 - vertex 0.576353 -0.246557 -0.00926336 - vertex 0.575456 -0.245959 -0.124123 - endloop - endfacet - facet normal 0.992229 -0.124141 -0.00839794 - outer loop - vertex 0.575456 -0.245959 -0.124123 - vertex 0.576353 -0.246557 -0.00926336 - vertex 0.564788 -0.338996 -0.00919506 - endloop - endfacet - facet normal 0.992116 -0.124991 -0.00909648 - outer loop - vertex 0.575456 -0.245959 -0.124123 - vertex 0.564788 -0.338996 -0.00919506 - vertex 0.563882 -0.337847 -0.123858 - endloop - endfacet - facet normal 0.978025 -0.208256 -0.00981895 - outer loop - vertex 0.563882 -0.337847 -0.123858 - vertex 0.564788 -0.338996 -0.00919506 - vertex 0.545549 -0.429349 -0.00922752 - endloop - endfacet - facet normal 0.977714 -0.209655 -0.0109859 - outer loop - vertex 0.563882 -0.337847 -0.123858 - vertex 0.545549 -0.429349 -0.00922752 - vertex 0.544608 -0.427747 -0.123539 - endloop - endfacet - facet normal 0.955565 -0.294536 -0.0119932 - outer loop - vertex 0.544608 -0.427747 -0.123539 - vertex 0.545549 -0.429349 -0.00922752 - vertex 0.51866 -0.516573 -0.00947047 - endloop - endfacet - facet normal 0.955003 -0.29629 -0.0134873 - outer loop - vertex 0.544608 -0.427747 -0.123539 - vertex 0.51866 -0.516573 -0.00947047 - vertex 0.517646 -0.514662 -0.123256 - endloop - endfacet - facet normal 0.923385 -0.383595 -0.0146719 - outer loop - vertex 0.517646 -0.514662 -0.123256 - vertex 0.51866 -0.516573 -0.00947047 - vertex 0.484149 -0.599627 -0.0100336 - endloop - endfacet - facet normal 0.922629 -0.385349 -0.0162111 - outer loop - vertex 0.517646 -0.514662 -0.123256 - vertex 0.484149 -0.599627 -0.0100336 - vertex 0.483009 -0.5976 -0.123102 - endloop - endfacet - facet normal 0.879655 -0.475294 -0.0173907 - outer loop - vertex 0.483009 -0.5976 -0.123102 - vertex 0.484149 -0.599627 -0.0100336 - vertex 0.441992 -0.677624 -0.0107065 - endloop - endfacet - facet normal 0.878871 -0.476693 -0.0186725 - outer loop - vertex 0.483009 -0.5976 -0.123102 - vertex 0.441992 -0.677624 -0.0107065 - vertex 0.440689 -0.675627 -0.123039 - endloop - endfacet - facet normal 0.822426 -0.568533 -0.0196506 - outer loop - vertex 0.440689 -0.675627 -0.123039 - vertex 0.441992 -0.677624 -0.0107065 - vertex 0.392167 -0.74968 -0.0112786 - endloop - endfacet - facet normal 0.82183 -0.569365 -0.020461 - outer loop - vertex 0.440689 -0.675627 -0.123039 - vertex 0.392167 -0.74968 -0.0112786 - vertex 0.390678 -0.747813 -0.12303 - endloop - endfacet - facet normal 0.749937 -0.661175 -0.0210367 - outer loop - vertex 0.390678 -0.747813 -0.12303 - vertex 0.392167 -0.74968 -0.0112786 - vertex 0.334652 -0.814908 -0.0115394 - endloop - endfacet - facet normal 0.749722 -0.661411 -0.0212866 - outer loop - vertex 0.390678 -0.747813 -0.12303 - vertex 0.334652 -0.814908 -0.0115394 - vertex 0.33297 -0.813226 -0.123039 - endloop - endfacet - facet normal 0.998743 -0.0408905 0.0289919 - outer loop - vertex 0.580216 -0.153076 -0.0093227 - vertex 0.576886 -0.153076 0.105413 - vertex 0.573038 -0.247048 0.105437 - endloop - endfacet - facet normal 0.998736 -0.0412596 0.0286892 - outer loop - vertex 0.580216 -0.153076 -0.0093227 - vertex 0.573038 -0.247048 0.105437 - vertex 0.576353 -0.246557 -0.00926336 - endloop - endfacet - facet normal 0.992029 -0.122824 0.0281464 - outer loop - vertex 0.576353 -0.246557 -0.00926336 - vertex 0.573038 -0.247048 0.105437 - vertex 0.561544 -0.339903 0.105336 - endloop - endfacet - facet normal 0.991903 -0.124074 0.0271125 - outer loop - vertex 0.576353 -0.246557 -0.00926336 - vertex 0.561544 -0.339903 0.105336 - vertex 0.564788 -0.338996 -0.00919506 - endloop - endfacet - facet normal 0.97817 -0.206162 0.0260736 - outer loop - vertex 0.564788 -0.338996 -0.00919506 - vertex 0.561544 -0.339903 0.105336 - vertex 0.542455 -0.430522 0.104939 - endloop - endfacet - facet normal 0.97778 -0.208216 0.0243505 - outer loop - vertex 0.564788 -0.338996 -0.00919506 - vertex 0.542455 -0.430522 0.104939 - vertex 0.545549 -0.429349 -0.00922752 - endloop - endfacet - facet normal 0.956134 -0.292032 0.0229026 - outer loop - vertex 0.545549 -0.429349 -0.00922752 - vertex 0.542455 -0.430522 0.104939 - vertex 0.515822 -0.51779 0.104073 - endloop - endfacet - facet normal 0.955403 -0.294577 0.0207239 - outer loop - vertex 0.545549 -0.429349 -0.00922752 - vertex 0.515822 -0.51779 0.104073 - vertex 0.51866 -0.516573 -0.00947047 - endloop - endfacet - facet normal 0.924254 -0.381304 0.0190163 - outer loop - vertex 0.51866 -0.516573 -0.00947047 - vertex 0.515822 -0.51779 0.104073 - vertex 0.481695 -0.600587 0.102567 - endloop - endfacet - facet normal 0.923277 -0.383765 0.0168493 - outer loop - vertex 0.51866 -0.516573 -0.00947047 - vertex 0.481695 -0.600587 0.102567 - vertex 0.484149 -0.599627 -0.0100336 - endloop - endfacet - facet normal 0.880593 -0.473631 0.0151526 - outer loop - vertex 0.484149 -0.599627 -0.0100336 - vertex 0.481695 -0.600587 0.102567 - vertex 0.440026 -0.678113 0.100889 - endloop - endfacet - facet normal 0.879598 -0.475529 0.0134132 - outer loop - vertex 0.484149 -0.599627 -0.0100336 - vertex 0.440026 -0.678113 0.100889 - vertex 0.441992 -0.677624 -0.0107065 - endloop - endfacet - facet normal 0.823151 -0.567696 0.0120155 - outer loop - vertex 0.441992 -0.677624 -0.0107065 - vertex 0.440026 -0.678113 0.100889 - vertex 0.39077 -0.749563 0.0995073 - endloop - endfacet - facet normal 0.822422 -0.568773 0.0109734 - outer loop - vertex 0.441992 -0.677624 -0.0107065 - vertex 0.39077 -0.749563 0.0995073 - vertex 0.392167 -0.74968 -0.0112786 - endloop - endfacet - facet normal 0.750237 -0.66109 0.0101603 - outer loop - vertex 0.392167 -0.74968 -0.0112786 - vertex 0.39077 -0.749563 0.0995073 - vertex 0.333879 -0.814135 0.0988907 - endloop - endfacet - facet normal 0.750005 -0.661359 0.00988013 - outer loop - vertex 0.392167 -0.74968 -0.0112786 - vertex 0.333879 -0.814135 0.0988907 - vertex 0.334652 -0.814908 -0.0115394 - endloop - endfacet - facet normal 0.99263 -0.0398133 0.114456 - outer loop - vertex 0.576886 -0.153076 0.105413 - vertex 0.564421 -0.153076 0.213516 - vertex 0.560627 -0.247661 0.213522 - endloop - endfacet - facet normal 0.992678 -0.0406207 0.113756 - outer loop - vertex 0.576886 -0.153076 0.105413 - vertex 0.560627 -0.247661 0.213522 - vertex 0.573038 -0.247048 0.105437 - endloop - endfacet - facet normal 0.986417 -0.119604 0.11259 - outer loop - vertex 0.573038 -0.247048 0.105437 - vertex 0.560627 -0.247661 0.213522 - vertex 0.54933 -0.341055 0.213278 - endloop - endfacet - facet normal 0.986356 -0.122211 0.110304 - outer loop - vertex 0.573038 -0.247048 0.105437 - vertex 0.54933 -0.341055 0.213278 - vertex 0.561544 -0.339903 0.105336 - endloop - endfacet - facet normal 0.973604 -0.201067 0.108019 - outer loop - vertex 0.561544 -0.339903 0.105336 - vertex 0.54933 -0.341055 0.213278 - vertex 0.530619 -0.432065 0.212524 - endloop - endfacet - facet normal 0.973116 -0.20544 0.104119 - outer loop - vertex 0.561544 -0.339903 0.105336 - vertex 0.530619 -0.432065 0.212524 - vertex 0.542455 -0.430522 0.104939 - endloop - endfacet - facet normal 0.953039 -0.285595 0.10076 - outer loop - vertex 0.542455 -0.430522 0.104939 - vertex 0.530619 -0.432065 0.212524 - vertex 0.504578 -0.519502 0.210997 - endloop - endfacet - facet normal 0.951819 -0.291434 0.0954256 - outer loop - vertex 0.542455 -0.430522 0.104939 - vertex 0.504578 -0.519502 0.210997 - vertex 0.515822 -0.51779 0.104073 - endloop - endfacet - facet normal 0.922812 -0.374337 0.0910475 - outer loop - vertex 0.515822 -0.51779 0.104073 - vertex 0.504578 -0.519502 0.210997 - vertex 0.471295 -0.602173 0.208436 - endloop - endfacet - facet normal 0.920674 -0.381024 0.0847285 - outer loop - vertex 0.515822 -0.51779 0.104073 - vertex 0.471295 -0.602173 0.208436 - vertex 0.481695 -0.600587 0.102567 - endloop - endfacet - facet normal 0.881047 -0.466289 0.0795589 - outer loop - vertex 0.481695 -0.600587 0.102567 - vertex 0.471295 -0.602173 0.208436 - vertex 0.431036 -0.678831 0.204991 - endloop - endfacet - facet normal 0.877854 -0.473401 0.072547 - outer loop - vertex 0.481695 -0.600587 0.102567 - vertex 0.431036 -0.678831 0.204991 - vertex 0.440026 -0.678113 0.100889 - endloop - endfacet - facet normal 0.824371 -0.562032 0.0673166 - outer loop - vertex 0.440026 -0.678113 0.100889 - vertex 0.431036 -0.678831 0.204991 - vertex 0.384065 -0.748227 0.20081 - endloop - endfacet - facet normal 0.821184 -0.567303 0.0618332 - outer loop - vertex 0.440026 -0.678113 0.100889 - vertex 0.384065 -0.748227 0.20081 - vertex 0.39077 -0.749563 0.0995073 - endloop - endfacet - facet normal 0.750119 -0.658725 0.0583344 - outer loop - vertex 0.39077 -0.749563 0.0995073 - vertex 0.384065 -0.748227 0.20081 - vertex 0.329878 -0.810133 0.198536 - endloop - endfacet - facet normal 0.748854 -0.660315 0.0565842 - outer loop - vertex 0.39077 -0.749563 0.0995073 - vertex 0.329878 -0.810133 0.198536 - vertex 0.333879 -0.814135 0.0988907 - endloop - endfacet - facet normal 0.962569 -0.0370854 0.268489 - outer loop - vertex 0.564421 -0.153076 0.213516 - vertex 0.537917 -0.153076 0.308537 - vertex 0.534235 -0.248626 0.308537 - endloop - endfacet - facet normal 0.962906 -0.0386113 0.267062 - outer loop - vertex 0.564421 -0.153076 0.213516 - vertex 0.534235 -0.248626 0.308537 - vertex 0.560627 -0.247661 0.213522 - endloop - endfacet - facet normal 0.957776 -0.11179 0.264894 - outer loop - vertex 0.560627 -0.247661 0.213522 - vertex 0.534235 -0.248626 0.308537 - vertex 0.523327 -0.342939 0.308176 - endloop - endfacet - facet normal 0.958457 -0.116608 0.260313 - outer loop - vertex 0.560627 -0.247661 0.213522 - vertex 0.523327 -0.342939 0.308176 - vertex 0.54933 -0.341055 0.213278 - endloop - endfacet - facet normal 0.948048 -0.188829 0.256026 - outer loop - vertex 0.54933 -0.341055 0.213278 - vertex 0.523327 -0.342939 0.308176 - vertex 0.505328 -0.434776 0.307092 - endloop - endfacet - facet normal 0.948502 -0.197067 0.248009 - outer loop - vertex 0.54933 -0.341055 0.213278 - vertex 0.505328 -0.434776 0.307092 - vertex 0.530619 -0.432065 0.212524 - endloop - endfacet - facet normal 0.932105 -0.269888 0.241537 - outer loop - vertex 0.530619 -0.432065 0.212524 - vertex 0.505328 -0.434776 0.307092 - vertex 0.480374 -0.522902 0.304924 - endloop - endfacet - facet normal 0.931625 -0.281472 0.229887 - outer loop - vertex 0.530619 -0.432065 0.212524 - vertex 0.480374 -0.522902 0.304924 - vertex 0.504578 -0.519502 0.210997 - endloop - endfacet - facet normal 0.907812 -0.356399 0.221038 - outer loop - vertex 0.504578 -0.519502 0.210997 - vertex 0.480374 -0.522902 0.304924 - vertex 0.4486 -0.606077 0.30131 - endloop - endfacet - facet normal 0.905582 -0.370952 0.205706 - outer loop - vertex 0.504578 -0.519502 0.210997 - vertex 0.4486 -0.606077 0.30131 - vertex 0.471295 -0.602173 0.208436 - endloop - endfacet - facet normal 0.872439 -0.448417 0.19435 - outer loop - vertex 0.471295 -0.602173 0.208436 - vertex 0.4486 -0.606077 0.30131 - vertex 0.411265 -0.681518 0.294843 - endloop - endfacet - facet normal 0.868032 -0.463839 0.177127 - outer loop - vertex 0.471295 -0.602173 0.208436 - vertex 0.411265 -0.681518 0.294843 - vertex 0.431036 -0.678831 0.204991 - endloop - endfacet - facet normal 0.817941 -0.551585 0.163482 - outer loop - vertex 0.431036 -0.678831 0.204991 - vertex 0.411265 -0.681518 0.294843 - vertex 0.36963 -0.746439 0.284113 - endloop - endfacet - facet normal 0.814069 -0.560227 0.153093 - outer loop - vertex 0.431036 -0.678831 0.204991 - vertex 0.36963 -0.746439 0.284113 - vertex 0.384065 -0.748227 0.20081 - endloop - endfacet - facet normal 0.743143 -0.653716 0.14281 - outer loop - vertex 0.384065 -0.748227 0.20081 - vertex 0.36963 -0.746439 0.284113 - vertex 0.321875 -0.802131 0.277683 - endloop - endfacet - facet normal 0.742337 -0.654961 0.141286 - outer loop - vertex 0.384065 -0.748227 0.20081 - vertex 0.321875 -0.802131 0.277683 - vertex 0.329878 -0.810133 0.198536 - endloop - endfacet - facet normal 0.856314 -0.0307604 0.515539 - outer loop - vertex 0.537917 -0.153076 0.308537 - vertex 0.492468 -0.153076 0.384027 - vertex 0.48898 -0.250174 0.384027 - endloop - endfacet - facet normal 0.857519 -0.0330381 0.513391 - outer loop - vertex 0.537917 -0.153076 0.308537 - vertex 0.48898 -0.250174 0.384027 - vertex 0.534235 -0.248626 0.308537 - endloop - endfacet - facet normal 0.854744 -0.0939384 0.510479 - outer loop - vertex 0.534235 -0.248626 0.308537 - vertex 0.48898 -0.250174 0.384027 - vertex 0.478716 -0.346042 0.383572 - endloop - endfacet - facet normal 0.858035 -0.101169 0.503528 - outer loop - vertex 0.534235 -0.248626 0.308537 - vertex 0.478716 -0.346042 0.383572 - vertex 0.523327 -0.342939 0.308176 - endloop - endfacet - facet normal 0.852302 -0.160941 0.497675 - outer loop - vertex 0.523327 -0.342939 0.308176 - vertex 0.478716 -0.346042 0.383572 - vertex 0.461874 -0.439454 0.382207 - endloop - endfacet - facet normal 0.857086 -0.173704 0.485006 - outer loop - vertex 0.523327 -0.342939 0.308176 - vertex 0.461874 -0.439454 0.382207 - vertex 0.505328 -0.434776 0.307092 - endloop - endfacet - facet normal 0.847828 -0.233889 0.475903 - outer loop - vertex 0.505328 -0.434776 0.307092 - vertex 0.461874 -0.439454 0.382207 - vertex 0.438655 -0.52918 0.379476 - endloop - endfacet - facet normal 0.853222 -0.252831 0.456167 - outer loop - vertex 0.505328 -0.434776 0.307092 - vertex 0.438655 -0.52918 0.379476 - vertex 0.480374 -0.522902 0.304924 - endloop - endfacet - facet normal 0.839358 -0.314732 0.443196 - outer loop - vertex 0.480374 -0.522902 0.304924 - vertex 0.438655 -0.52918 0.379476 - vertex 0.409256 -0.613992 0.374925 - endloop - endfacet - facet normal 0.843993 -0.340424 0.414474 - outer loop - vertex 0.480374 -0.522902 0.304924 - vertex 0.409256 -0.613992 0.374925 - vertex 0.4486 -0.606077 0.30131 - endloop - endfacet - facet normal 0.821391 -0.411709 0.39473 - outer loop - vertex 0.4486 -0.606077 0.30131 - vertex 0.409256 -0.613992 0.374925 - vertex 0.375982 -0.689658 0.365244 - endloop - endfacet - facet normal 0.822864 -0.438232 0.36173 - outer loop - vertex 0.4486 -0.606077 0.30131 - vertex 0.375982 -0.689658 0.365244 - vertex 0.411265 -0.681518 0.294843 - endloop - endfacet - facet normal 0.779957 -0.532151 0.329367 - outer loop - vertex 0.411265 -0.681518 0.294843 - vertex 0.375982 -0.689658 0.365244 - vertex 0.341134 -0.751946 0.347126 - endloop - endfacet - facet normal 0.778321 -0.54939 0.303951 - outer loop - vertex 0.411265 -0.681518 0.294843 - vertex 0.341134 -0.751946 0.347126 - vertex 0.36963 -0.746439 0.284113 - endloop - endfacet - facet normal 0.714298 -0.647132 0.266455 - outer loop - vertex 0.36963 -0.746439 0.284113 - vertex 0.341134 -0.751946 0.347126 - vertex 0.312305 -0.79256 0.325773 - endloop - endfacet - facet normal 0.715154 -0.644469 0.270582 - outer loop - vertex 0.36963 -0.746439 0.284113 - vertex 0.312305 -0.79256 0.325773 - vertex 0.321875 -0.802131 0.277683 - endloop - endfacet - facet normal 0.986749 -0.0422457 -0.15666 - outer loop - vertex 0.552765 -0.153076 -0.457381 - vertex 0.549001 -0.242839 -0.456883 - vertex 0.532766 -0.24113 -0.559605 - endloop - endfacet - facet normal 0.986795 -0.0427607 -0.156226 - outer loop - vertex 0.552765 -0.153076 -0.457381 - vertex 0.532766 -0.24113 -0.559605 - vertex 0.536469 -0.153076 -0.560317 - endloop - endfacet - facet normal 0.977991 -0.0427785 -0.204216 - outer loop - vertex 0.536469 -0.153076 -0.560317 - vertex 0.532766 -0.24113 -0.559605 - vertex 0.51249 -0.239183 -0.657112 - endloop - endfacet - facet normal 0.978082 -0.0434605 -0.203632 - outer loop - vertex 0.536469 -0.153076 -0.560317 - vertex 0.51249 -0.239183 -0.657112 - vertex 0.516116 -0.153076 -0.658075 - endloop - endfacet - facet normal 0.964533 -0.0435243 -0.260348 - outer loop - vertex 0.516116 -0.153076 -0.658075 - vertex 0.51249 -0.239183 -0.657112 - vertex 0.487742 -0.237142 -0.74914 - endloop - endfacet - facet normal 0.964686 -0.0443398 -0.259643 - outer loop - vertex 0.516116 -0.153076 -0.658075 - vertex 0.487742 -0.237142 -0.74914 - vertex 0.491272 -0.153076 -0.750381 - endloop - endfacet - facet normal 0.944459 -0.0444644 -0.325609 - outer loop - vertex 0.491272 -0.153076 -0.750381 - vertex 0.487742 -0.237142 -0.74914 - vertex 0.458089 -0.235148 -0.835423 - endloop - endfacet - facet normal 0.944684 -0.045364 -0.324828 - outer loop - vertex 0.491272 -0.153076 -0.750381 - vertex 0.458089 -0.235148 -0.835423 - vertex 0.461502 -0.153076 -0.836959 - endloop - endfacet - facet normal 0.915375 -0.0455524 -0.400016 - outer loop - vertex 0.461502 -0.153076 -0.836959 - vertex 0.458089 -0.235148 -0.835423 - vertex 0.423099 -0.233344 -0.915698 - endloop - endfacet - facet normal 0.915674 -0.0464689 -0.399228 - outer loop - vertex 0.461502 -0.153076 -0.836959 - vertex 0.423099 -0.233344 -0.915698 - vertex 0.426371 -0.153076 -0.917536 - endloop - endfacet - facet normal 0.874574 -0.0467032 -0.482638 - outer loop - vertex 0.426371 -0.153076 -0.917536 - vertex 0.423099 -0.233344 -0.915698 - vertex 0.38234 -0.231872 -0.9897 - endloop - endfacet - facet normal 0.874919 -0.0475448 -0.48193 - outer loop - vertex 0.426371 -0.153076 -0.917536 - vertex 0.38234 -0.231872 -0.9897 - vertex 0.385445 -0.153076 -0.991836 - endloop - endfacet - facet normal 0.819466 -0.047778 -0.571132 - outer loop - vertex 0.385445 -0.153076 -0.991836 - vertex 0.38234 -0.231872 -0.9897 - vertex 0.335378 -0.230876 -1.05716 - endloop - endfacet - facet normal 0.819786 -0.0484143 -0.57062 - outer loop - vertex 0.385445 -0.153076 -0.991836 - vertex 0.335378 -0.230876 -1.05716 - vertex 0.338288 -0.153076 -1.05958 - endloop - endfacet - facet normal 0.748372 -0.0485719 -0.661498 - outer loop - vertex 0.338288 -0.153076 -1.05958 - vertex 0.335378 -0.230876 -1.05716 - vertex 0.281783 -0.230496 -1.11783 - endloop - endfacet - facet normal 0.748534 -0.048843 -0.661295 - outer loop - vertex 0.338288 -0.153076 -1.05958 - vertex 0.281783 -0.230496 -1.11783 - vertex 0.284465 -0.153076 -1.12051 - endloop - endfacet - facet normal 0.979289 -0.1266 -0.158006 - outer loop - vertex 0.549001 -0.242839 -0.456883 - vertex 0.537718 -0.331669 -0.455637 - vertex 0.52167 -0.32827 -0.557825 - endloop - endfacet - facet normal 0.979297 -0.1279 -0.156907 - outer loop - vertex 0.549001 -0.242839 -0.456883 - vertex 0.52167 -0.32827 -0.557825 - vertex 0.532766 -0.24113 -0.559605 - endloop - endfacet - facet normal 0.970234 -0.127744 -0.205738 - outer loop - vertex 0.532766 -0.24113 -0.559605 - vertex 0.52167 -0.32827 -0.557825 - vertex 0.50164 -0.324388 -0.654694 - endloop - endfacet - facet normal 0.970313 -0.129362 -0.204348 - outer loop - vertex 0.532766 -0.24113 -0.559605 - vertex 0.50164 -0.324388 -0.654694 - vertex 0.51249 -0.239183 -0.657112 - endloop - endfacet - facet normal 0.956462 -0.129225 -0.261688 - outer loop - vertex 0.51249 -0.239183 -0.657112 - vertex 0.50164 -0.324388 -0.654694 - vertex 0.477214 -0.320295 -0.745993 - endloop - endfacet - facet normal 0.95664 -0.130972 -0.260165 - outer loop - vertex 0.51249 -0.239183 -0.657112 - vertex 0.477214 -0.320295 -0.745993 - vertex 0.487742 -0.237142 -0.74914 - endloop - endfacet - facet normal 0.936134 -0.130881 -0.326378 - outer loop - vertex 0.487742 -0.237142 -0.74914 - vertex 0.477214 -0.320295 -0.745993 - vertex 0.447976 -0.316263 -0.831472 - endloop - endfacet - facet normal 0.936416 -0.13258 -0.324881 - outer loop - vertex 0.487742 -0.237142 -0.74914 - vertex 0.447976 -0.316263 -0.831472 - vertex 0.458089 -0.235148 -0.835423 - endloop - endfacet - facet normal 0.906962 -0.132558 -0.399811 - outer loop - vertex 0.458089 -0.235148 -0.835423 - vertex 0.447976 -0.316263 -0.831472 - vertex 0.413511 -0.312564 -0.910881 - endloop - endfacet - facet normal 0.907322 -0.134048 -0.398495 - outer loop - vertex 0.458089 -0.235148 -0.835423 - vertex 0.413511 -0.312564 -0.910881 - vertex 0.423099 -0.233344 -0.915698 - endloop - endfacet - facet normal 0.866301 -0.13411 -0.481183 - outer loop - vertex 0.423099 -0.233344 -0.915698 - vertex 0.413511 -0.312564 -0.910881 - vertex 0.373376 -0.309515 -0.983989 - endloop - endfacet - facet normal 0.866719 -0.135377 -0.480075 - outer loop - vertex 0.423099 -0.233344 -0.915698 - vertex 0.373376 -0.309515 -0.983989 - vertex 0.38234 -0.231872 -0.9897 - endloop - endfacet - facet normal 0.811702 -0.135502 -0.568137 - outer loop - vertex 0.38234 -0.231872 -0.9897 - vertex 0.373376 -0.309515 -0.983989 - vertex 0.327127 -0.307433 -1.05056 - endloop - endfacet - facet normal 0.812111 -0.136457 -0.567323 - outer loop - vertex 0.38234 -0.231872 -0.9897 - vertex 0.327127 -0.307433 -1.05056 - vertex 0.335378 -0.230876 -1.05716 - endloop - endfacet - facet normal 0.741682 -0.136575 -0.6567 - outer loop - vertex 0.335378 -0.230876 -1.05716 - vertex 0.327127 -0.307433 -1.05056 - vertex 0.274322 -0.306633 -1.11037 - endloop - endfacet - facet normal 0.741914 -0.13701 -0.656347 - outer loop - vertex 0.335378 -0.230876 -1.05716 - vertex 0.274322 -0.306633 -1.11037 - vertex 0.281783 -0.230496 -1.11783 - endloop - endfacet - facet normal 0.96417 -0.211557 -0.160061 - outer loop - vertex 0.537718 -0.331669 -0.455637 - vertex 0.518926 -0.418635 -0.453892 - vertex 0.503194 -0.413584 -0.555333 - endloop - endfacet - facet normal 0.964022 -0.213401 -0.158495 - outer loop - vertex 0.537718 -0.331669 -0.455637 - vertex 0.503194 -0.413584 -0.555333 - vertex 0.52167 -0.32827 -0.557825 - endloop - endfacet - facet normal 0.95472 -0.212829 -0.20788 - outer loop - vertex 0.52167 -0.32827 -0.557825 - vertex 0.503194 -0.413584 -0.555333 - vertex 0.483593 -0.407788 -0.65129 - endloop - endfacet - facet normal 0.954641 -0.214989 -0.206011 - outer loop - vertex 0.52167 -0.32827 -0.557825 - vertex 0.483593 -0.407788 -0.65129 - vertex 0.50164 -0.324388 -0.654694 - endloop - endfacet - facet normal 0.940631 -0.214292 -0.263233 - outer loop - vertex 0.50164 -0.324388 -0.654694 - vertex 0.483593 -0.407788 -0.65129 - vertex 0.459748 -0.401622 -0.741516 - endloop - endfacet - facet normal 0.940667 -0.216405 -0.261371 - outer loop - vertex 0.50164 -0.324388 -0.654694 - vertex 0.459748 -0.401622 -0.741516 - vertex 0.477214 -0.320295 -0.745993 - endloop - endfacet - facet normal 0.920225 -0.215608 -0.326648 - outer loop - vertex 0.477214 -0.320295 -0.745993 - vertex 0.459748 -0.401622 -0.741516 - vertex 0.431286 -0.395463 -0.825763 - endloop - endfacet - facet normal 0.92037 -0.217376 -0.325065 - outer loop - vertex 0.477214 -0.320295 -0.745993 - vertex 0.431286 -0.395463 -0.825763 - vertex 0.447976 -0.316263 -0.831472 - endloop - endfacet - facet normal 0.891367 -0.216538 -0.398216 - outer loop - vertex 0.447976 -0.316263 -0.831472 - vertex 0.431286 -0.395463 -0.825763 - vertex 0.397833 -0.389688 -0.903784 - endloop - endfacet - facet normal 0.891565 -0.217775 -0.397098 - outer loop - vertex 0.447976 -0.316263 -0.831472 - vertex 0.397833 -0.389688 -0.903784 - vertex 0.413511 -0.312564 -0.910881 - endloop - endfacet - facet normal 0.851423 -0.217012 -0.477477 - outer loop - vertex 0.413511 -0.312564 -0.910881 - vertex 0.397833 -0.389688 -0.903784 - vertex 0.358904 -0.384851 -0.9754 - endloop - endfacet - facet normal 0.851656 -0.217936 -0.47664 - outer loop - vertex 0.413511 -0.312564 -0.910881 - vertex 0.358904 -0.384851 -0.9754 - vertex 0.373376 -0.309515 -0.983989 - endloop - endfacet - facet normal 0.798032 -0.217372 -0.562045 - outer loop - vertex 0.373376 -0.309515 -0.983989 - vertex 0.358904 -0.384851 -0.9754 - vertex 0.314011 -0.381506 -1.04044 - endloop - endfacet - facet normal 0.798289 -0.218088 -0.561402 - outer loop - vertex 0.373376 -0.309515 -0.983989 - vertex 0.314011 -0.381506 -1.04044 - vertex 0.327127 -0.307433 -1.05056 - endloop - endfacet - facet normal 0.729915 -0.217806 -0.647908 - outer loop - vertex 0.327127 -0.307433 -1.05056 - vertex 0.314011 -0.381506 -1.04044 - vertex 0.262669 -0.380206 -1.09871 - endloop - endfacet - facet normal 0.730102 -0.218198 -0.647566 - outer loop - vertex 0.327127 -0.307433 -1.05056 - vertex 0.262669 -0.380206 -1.09871 - vertex 0.274322 -0.306633 -1.11037 - endloop - endfacet - facet normal 0.940708 -0.297715 -0.162587 - outer loop - vertex 0.518926 -0.418635 -0.453892 - vertex 0.492633 -0.502805 -0.451898 - vertex 0.477351 -0.49616 -0.552484 - endloop - endfacet - facet normal 0.940346 -0.299842 -0.160762 - outer loop - vertex 0.518926 -0.418635 -0.453892 - vertex 0.477351 -0.49616 -0.552484 - vertex 0.503194 -0.413584 -0.555333 - endloop - endfacet - facet normal 0.930912 -0.298599 -0.210335 - outer loop - vertex 0.503194 -0.413584 -0.555333 - vertex 0.477351 -0.49616 -0.552484 - vertex 0.458375 -0.488481 -0.647371 - endloop - endfacet - facet normal 0.930618 -0.300948 -0.20828 - outer loop - vertex 0.503194 -0.413584 -0.555333 - vertex 0.458375 -0.488481 -0.647371 - vertex 0.483593 -0.407788 -0.65129 - endloop - endfacet - facet normal 0.916709 -0.299339 -0.264652 - outer loop - vertex 0.483593 -0.407788 -0.65129 - vertex 0.458375 -0.488481 -0.647371 - vertex 0.435406 -0.480211 -0.736286 - endloop - endfacet - facet normal 0.916564 -0.301388 -0.262824 - outer loop - vertex 0.483593 -0.407788 -0.65129 - vertex 0.435406 -0.480211 -0.736286 - vertex 0.459748 -0.401622 -0.741516 - endloop - endfacet - facet normal 0.896637 -0.299431 -0.326163 - outer loop - vertex 0.459748 -0.401622 -0.741516 - vertex 0.435406 -0.480211 -0.736286 - vertex 0.408146 -0.471793 -0.818954 - endloop - endfacet - facet normal 0.896631 -0.300814 -0.324906 - outer loop - vertex 0.459748 -0.401622 -0.741516 - vertex 0.408146 -0.471793 -0.818954 - vertex 0.431286 -0.395463 -0.825763 - endloop - endfacet - facet normal 0.8687 -0.298618 -0.395205 - outer loop - vertex 0.431286 -0.395463 -0.825763 - vertex 0.408146 -0.471793 -0.818954 - vertex 0.376296 -0.463669 -0.895101 - endloop - endfacet - facet normal 0.868747 -0.299231 -0.394639 - outer loop - vertex 0.431286 -0.395463 -0.825763 - vertex 0.376296 -0.463669 -0.895101 - vertex 0.397833 -0.389688 -0.903784 - endloop - endfacet - facet normal 0.830223 -0.297058 -0.471684 - outer loop - vertex 0.397833 -0.389688 -0.903784 - vertex 0.376296 -0.463669 -0.895101 - vertex 0.339276 -0.456727 -0.964632 - endloop - endfacet - facet normal 0.830274 -0.297353 -0.471408 - outer loop - vertex 0.397833 -0.389688 -0.903784 - vertex 0.339276 -0.456727 -0.964632 - vertex 0.358904 -0.384851 -0.9754 - endloop - endfacet - facet normal 0.778845 -0.295564 -0.55321 - outer loop - vertex 0.358904 -0.384851 -0.9754 - vertex 0.339276 -0.456727 -0.964632 - vertex 0.296508 -0.451852 -1.02745 - endloop - endfacet - facet normal 0.778939 -0.295889 -0.552905 - outer loop - vertex 0.358904 -0.384851 -0.9754 - vertex 0.296508 -0.451852 -1.02745 - vertex 0.314011 -0.381506 -1.04044 - endloop - endfacet - facet normal 0.713493 -0.29487 -0.635594 - outer loop - vertex 0.314011 -0.381506 -1.04044 - vertex 0.296508 -0.451852 -1.02745 - vertex 0.247411 -0.449932 -1.08345 - endloop - endfacet - facet normal 0.71363 -0.295197 -0.635288 - outer loop - vertex 0.314011 -0.381506 -1.04044 - vertex 0.247411 -0.449932 -1.08345 - vertex 0.262669 -0.380206 -1.09871 - endloop - endfacet - facet normal 0.907829 -0.385385 -0.165303 - outer loop - vertex 0.492633 -0.502805 -0.451898 - vertex 0.458847 -0.583247 -0.449905 - vertex 0.444153 -0.575083 -0.549636 - endloop - endfacet - facet normal 0.907256 -0.387523 -0.163438 - outer loop - vertex 0.492633 -0.502805 -0.451898 - vertex 0.444153 -0.575083 -0.549636 - vertex 0.477351 -0.49616 -0.552484 - endloop - endfacet - facet normal 0.89789 -0.385365 -0.212809 - outer loop - vertex 0.477351 -0.49616 -0.552484 - vertex 0.444153 -0.575083 -0.549636 - vertex 0.426013 -0.565564 -0.643408 - endloop - endfacet - facet normal 0.897399 -0.387588 -0.210834 - outer loop - vertex 0.477351 -0.49616 -0.552484 - vertex 0.426013 -0.565564 -0.643408 - vertex 0.458375 -0.488481 -0.647371 - endloop - endfacet - facet normal 0.88393 -0.384757 -0.265762 - outer loop - vertex 0.458375 -0.488481 -0.647371 - vertex 0.426013 -0.565564 -0.643408 - vertex 0.404249 -0.555148 -0.730878 - endloop - endfacet - facet normal 0.883648 -0.386466 -0.264216 - outer loop - vertex 0.458375 -0.488481 -0.647371 - vertex 0.404249 -0.555148 -0.730878 - vertex 0.435406 -0.480211 -0.736286 - endloop - endfacet - facet normal 0.864701 -0.382974 -0.324997 - outer loop - vertex 0.435406 -0.480211 -0.736286 - vertex 0.404249 -0.555148 -0.730878 - vertex 0.378679 -0.544293 -0.8117 - endloop - endfacet - facet normal 0.864617 -0.383839 -0.324199 - outer loop - vertex 0.435406 -0.480211 -0.736286 - vertex 0.378679 -0.544293 -0.8117 - vertex 0.408146 -0.471793 -0.818954 - endloop - endfacet - facet normal 0.838231 -0.379826 -0.39128 - outer loop - vertex 0.408146 -0.471793 -0.818954 - vertex 0.378679 -0.544293 -0.8117 - vertex 0.349125 -0.533458 -0.885532 - endloop - endfacet - facet normal 0.838229 -0.379977 -0.391139 - outer loop - vertex 0.408146 -0.471793 -0.818954 - vertex 0.349125 -0.533458 -0.885532 - vertex 0.376296 -0.463669 -0.895101 - endloop - endfacet - facet normal 0.801874 -0.375876 -0.464452 - outer loop - vertex 0.376296 -0.463669 -0.895101 - vertex 0.349125 -0.533458 -0.885532 - vertex 0.314844 -0.523988 -0.952382 - endloop - endfacet - facet normal 0.801873 -0.375868 -0.464459 - outer loop - vertex 0.376296 -0.463669 -0.895101 - vertex 0.314844 -0.523988 -0.952382 - vertex 0.339276 -0.456727 -0.964632 - endloop - endfacet - facet normal 0.753299 -0.372366 -0.54211 - outer loop - vertex 0.339276 -0.456727 -0.964632 - vertex 0.314844 -0.523988 -0.952382 - vertex 0.275093 -0.51723 -1.01226 - endloop - endfacet - facet normal 0.753358 -0.372642 -0.541839 - outer loop - vertex 0.339276 -0.456727 -0.964632 - vertex 0.275093 -0.51723 -1.01226 - vertex 0.296508 -0.451852 -1.02745 - endloop - endfacet - facet normal 0.691767 -0.370576 -0.619783 - outer loop - vertex 0.296508 -0.451852 -1.02745 - vertex 0.275093 -0.51723 -1.01226 - vertex 0.229132 -0.514529 -1.06518 - endloop - endfacet - facet normal 0.691939 -0.371045 -0.619311 - outer loop - vertex 0.296508 -0.451852 -1.02745 - vertex 0.229132 -0.514529 -1.06518 - vertex 0.247411 -0.449932 -1.08345 - endloop - endfacet - facet normal 0.864129 -0.474448 -0.167868 - outer loop - vertex 0.458847 -0.583247 -0.449905 - vertex 0.417578 -0.659028 -0.44816 - vertex 0.403613 -0.649442 -0.547144 - endloop - endfacet - facet normal 0.863427 -0.476309 -0.166203 - outer loop - vertex 0.458847 -0.583247 -0.449905 - vertex 0.403613 -0.649442 -0.547144 - vertex 0.444153 -0.575083 -0.549636 - endloop - endfacet - facet normal 0.854393 -0.473021 -0.215091 - outer loop - vertex 0.444153 -0.575083 -0.549636 - vertex 0.403613 -0.649442 -0.547144 - vertex 0.386507 -0.638154 -0.639916 - endloop - endfacet - facet normal 0.85377 -0.474922 -0.213365 - outer loop - vertex 0.444153 -0.575083 -0.549636 - vertex 0.386507 -0.638154 -0.639916 - vertex 0.426013 -0.565564 -0.643408 - endloop - endfacet - facet normal 0.841086 -0.470585 -0.266691 - outer loop - vertex 0.426013 -0.565564 -0.643408 - vertex 0.386507 -0.638154 -0.639916 - vertex 0.366225 -0.625592 -0.726046 - endloop - endfacet - facet normal 0.840708 -0.471991 -0.265396 - outer loop - vertex 0.426013 -0.565564 -0.643408 - vertex 0.366225 -0.625592 -0.726046 - vertex 0.404249 -0.555148 -0.730878 - endloop - endfacet - facet normal 0.823142 -0.466511 -0.323736 - outer loop - vertex 0.404249 -0.555148 -0.730878 - vertex 0.366225 -0.625592 -0.726046 - vertex 0.342731 -0.612185 -0.805104 - endloop - endfacet - facet normal 0.823009 -0.467175 -0.323116 - outer loop - vertex 0.404249 -0.555148 -0.730878 - vertex 0.342731 -0.612185 -0.805104 - vertex 0.378679 -0.544293 -0.8117 - endloop - endfacet - facet normal 0.798627 -0.460515 -0.387454 - outer loop - vertex 0.378679 -0.544293 -0.8117 - vertex 0.342731 -0.612185 -0.805104 - vertex 0.315987 -0.59836 -0.876659 - endloop - endfacet - facet normal 0.798606 -0.460693 -0.387286 - outer loop - vertex 0.378679 -0.544293 -0.8117 - vertex 0.315987 -0.59836 -0.876659 - vertex 0.349125 -0.533458 -0.885532 - endloop - endfacet - facet normal 0.765903 -0.453375 -0.455899 - outer loop - vertex 0.349125 -0.533458 -0.885532 - vertex 0.315987 -0.59836 -0.876659 - vertex 0.285382 -0.585784 -0.940583 - endloop - endfacet - facet normal 0.765917 -0.452391 -0.456851 - outer loop - vertex 0.349125 -0.533458 -0.885532 - vertex 0.285382 -0.585784 -0.940583 - vertex 0.314844 -0.523988 -0.952382 - endloop - endfacet - facet normal 0.722881 -0.445493 -0.528185 - outer loop - vertex 0.314844 -0.523988 -0.952382 - vertex 0.285382 -0.585784 -0.940583 - vertex 0.250302 -0.576118 -0.996746 - endloop - endfacet - facet normal 0.722684 -0.44383 -0.529852 - outer loop - vertex 0.314844 -0.523988 -0.952382 - vertex 0.250302 -0.576118 -0.996746 - vertex 0.275093 -0.51723 -1.01226 - endloop - endfacet - facet normal 0.667204 -0.439351 -0.601507 - outer loop - vertex 0.275093 -0.51723 -1.01226 - vertex 0.250302 -0.576118 -0.996746 - vertex 0.209244 -0.572013 -1.04529 - endloop - endfacet - facet normal 0.667105 -0.439022 -0.601856 - outer loop - vertex 0.275093 -0.51723 -1.01226 - vertex 0.209244 -0.572013 -1.04529 - vertex 0.229132 -0.514529 -1.06518 - endloop - endfacet - facet normal 0.808013 -0.564141 -0.169881 - outer loop - vertex 0.417578 -0.659028 -0.44816 - vertex 0.368835 -0.729217 -0.446914 - vertex 0.355743 -0.718323 -0.545364 - endloop - endfacet - facet normal 0.807358 -0.565441 -0.168671 - outer loop - vertex 0.417578 -0.659028 -0.44816 - vertex 0.355743 -0.718323 -0.545364 - vertex 0.403613 -0.649442 -0.547144 - endloop - endfacet - facet normal 0.798991 -0.560873 -0.216876 - outer loop - vertex 0.403613 -0.649442 -0.547144 - vertex 0.355743 -0.718323 -0.545364 - vertex 0.339855 -0.705364 -0.637409 - endloop - endfacet - facet normal 0.798387 -0.562216 -0.215617 - outer loop - vertex 0.403613 -0.649442 -0.547144 - vertex 0.339855 -0.705364 -0.637409 - vertex 0.386507 -0.638154 -0.639916 - endloop - endfacet - facet normal 0.786871 -0.556156 -0.26744 - outer loop - vertex 0.386507 -0.638154 -0.639916 - vertex 0.339855 -0.705364 -0.637409 - vertex 0.321285 -0.6907 -0.722544 - endloop - endfacet - facet normal 0.786468 -0.557194 -0.266462 - outer loop - vertex 0.386507 -0.638154 -0.639916 - vertex 0.321285 -0.6907 -0.722544 - vertex 0.366225 -0.625592 -0.726046 - endloop - endfacet - facet normal 0.770715 -0.549351 -0.322819 - outer loop - vertex 0.366225 -0.625592 -0.726046 - vertex 0.321285 -0.6907 -0.722544 - vertex 0.300144 -0.674686 -0.800266 - endloop - endfacet - facet normal 0.770523 -0.549954 -0.32225 - outer loop - vertex 0.366225 -0.625592 -0.726046 - vertex 0.300144 -0.674686 -0.800266 - vertex 0.342731 -0.612185 -0.805104 - endloop - endfacet - facet normal 0.748704 -0.539916 -0.384621 - outer loop - vertex 0.342731 -0.612185 -0.805104 - vertex 0.300144 -0.674686 -0.800266 - vertex 0.276548 -0.657682 -0.870068 - endloop - endfacet - facet normal 0.748594 -0.54038 -0.384184 - outer loop - vertex 0.342731 -0.612185 -0.805104 - vertex 0.276548 -0.657682 -0.870068 - vertex 0.315987 -0.59836 -0.876659 - endloop - endfacet - facet normal 0.720954 -0.529048 -0.447586 - outer loop - vertex 0.315987 -0.59836 -0.876659 - vertex 0.276548 -0.657682 -0.870068 - vertex 0.250666 -0.64126 -0.931169 - endloop - endfacet - facet normal 0.72117 -0.527498 -0.449066 - outer loop - vertex 0.315987 -0.59836 -0.876659 - vertex 0.250666 -0.64126 -0.931169 - vertex 0.285382 -0.585784 -0.940583 - endloop - endfacet - facet normal 0.685089 -0.515976 -0.51422 - outer loop - vertex 0.285382 -0.585784 -0.940583 - vertex 0.250666 -0.64126 -0.931169 - vertex 0.222668 -0.626995 -0.982784 - endloop - endfacet - facet normal 0.685106 -0.513821 -0.51635 - outer loop - vertex 0.285382 -0.585784 -0.940583 - vertex 0.222668 -0.626995 -0.982784 - vertex 0.250302 -0.576118 -0.996746 - endloop - endfacet - facet normal 0.637007 -0.505666 -0.581828 - outer loop - vertex 0.250302 -0.576118 -0.996746 - vertex 0.222668 -0.626995 -0.982784 - vertex 0.189158 -0.620402 -1.0252 - endloop - endfacet - facet normal 0.637047 -0.505853 -0.581622 - outer loop - vertex 0.250302 -0.576118 -0.996746 - vertex 0.189158 -0.620402 -1.0252 - vertex 0.209244 -0.572013 -1.04529 - endloop - endfacet - facet normal 0.737952 -0.652861 -0.170881 - outer loop - vertex 0.368835 -0.729217 -0.446914 - vertex 0.312627 -0.792882 -0.446415 - vertex 0.300557 -0.780813 -0.544652 - endloop - endfacet - facet normal 0.737627 -0.653354 -0.170394 - outer loop - vertex 0.368835 -0.729217 -0.446914 - vertex 0.300557 -0.780813 -0.544652 - vertex 0.355743 -0.718323 -0.545364 - endloop - endfacet - facet normal 0.730333 -0.647452 -0.21776 - outer loop - vertex 0.355743 -0.718323 -0.545364 - vertex 0.300557 -0.780813 -0.544652 - vertex 0.286056 -0.766311 -0.636401 - endloop - endfacet - facet normal 0.730015 -0.647987 -0.217235 - outer loop - vertex 0.355743 -0.718323 -0.545364 - vertex 0.286056 -0.766311 -0.636401 - vertex 0.339855 -0.705364 -0.637409 - endloop - endfacet - facet normal 0.720116 -0.640085 -0.267814 - outer loop - vertex 0.339855 -0.705364 -0.637409 - vertex 0.286056 -0.766311 -0.636401 - vertex 0.269375 -0.74963 -0.721126 - endloop - endfacet - facet normal 0.719871 -0.64055 -0.267362 - outer loop - vertex 0.339855 -0.705364 -0.637409 - vertex 0.269375 -0.74963 -0.721126 - vertex 0.321285 -0.6907 -0.722544 - endloop - endfacet - facet normal 0.706464 -0.630064 -0.322378 - outer loop - vertex 0.321285 -0.6907 -0.722544 - vertex 0.269375 -0.74963 -0.721126 - vertex 0.250763 -0.731018 -0.798286 - endloop - endfacet - facet normal 0.706286 -0.630455 -0.322004 - outer loop - vertex 0.321285 -0.6907 -0.722544 - vertex 0.250763 -0.731018 -0.798286 - vertex 0.300144 -0.674686 -0.800266 - endloop - endfacet - facet normal 0.687847 -0.616443 -0.383228 - outer loop - vertex 0.300144 -0.674686 -0.800266 - vertex 0.250763 -0.731018 -0.798286 - vertex 0.230473 -0.710728 -0.867343 - endloop - endfacet - facet normal 0.687653 -0.616956 -0.382751 - outer loop - vertex 0.300144 -0.674686 -0.800266 - vertex 0.230473 -0.710728 -0.867343 - vertex 0.276548 -0.657682 -0.870068 - endloop - endfacet - facet normal 0.665441 -0.600759 -0.443032 - outer loop - vertex 0.276548 -0.657682 -0.870068 - vertex 0.230473 -0.710728 -0.867343 - vertex 0.209579 -0.689834 -0.927058 - endloop - endfacet - facet normal 0.665528 -0.600463 -0.443302 - outer loop - vertex 0.276548 -0.657682 -0.870068 - vertex 0.209579 -0.689834 -0.927058 - vertex 0.250666 -0.64126 -0.931169 - endloop - endfacet - facet normal 0.636782 -0.581483 -0.506346 - outer loop - vertex 0.250666 -0.64126 -0.931169 - vertex 0.209579 -0.689834 -0.927058 - vertex 0.189158 -0.669413 -0.976191 - endloop - endfacet - facet normal 0.63674 -0.581694 -0.506157 - outer loop - vertex 0.250666 -0.64126 -0.931169 - vertex 0.189158 -0.669413 -0.976191 - vertex 0.222668 -0.626995 -0.982784 - endloop - endfacet - facet normal 0.600568 -0.562735 -0.568021 - outer loop - vertex 0.222668 -0.626995 -0.982784 - vertex 0.189158 -0.669413 -0.976191 - vertex 0.173078 -0.653333 -1.00912 - endloop - endfacet - facet normal 0.600568 -0.568022 -0.562734 - outer loop - vertex 0.222668 -0.626995 -0.982784 - vertex 0.173078 -0.653333 -1.00912 - vertex 0.189158 -0.620402 -1.0252 - endloop - endfacet - facet normal 0.0427593 -0.986795 -0.156226 - outer loop - vertex -0.327179 -1.03302 -0.457381 - vertex -0.327179 -1.01672 -0.560317 - vertex -0.239126 -1.01302 -0.559605 - endloop - endfacet - facet normal 0.042245 -0.986749 -0.15666 - outer loop - vertex -0.327179 -1.03302 -0.457381 - vertex -0.239126 -1.01302 -0.559605 - vertex -0.237417 -1.02926 -0.456883 - endloop - endfacet - facet normal 0.1279 -0.979297 -0.156907 - outer loop - vertex -0.237417 -1.02926 -0.456883 - vertex -0.239126 -1.01302 -0.559605 - vertex -0.151985 -1.00192 -0.557825 - endloop - endfacet - facet normal 0.126599 -0.979289 -0.158006 - outer loop - vertex -0.237417 -1.02926 -0.456883 - vertex -0.151985 -1.00192 -0.557825 - vertex -0.148586 -1.01797 -0.455637 - endloop - endfacet - facet normal 0.2134 -0.964023 -0.158496 - outer loop - vertex -0.148586 -1.01797 -0.455637 - vertex -0.151985 -1.00192 -0.557825 - vertex -0.0666708 -0.983449 -0.555333 - endloop - endfacet - facet normal 0.211557 -0.96417 -0.160061 - outer loop - vertex -0.148586 -1.01797 -0.455637 - vertex -0.0666708 -0.983449 -0.555333 - vertex -0.0616202 -0.999181 -0.453892 - endloop - endfacet - facet normal 0.299841 -0.940346 -0.160762 - outer loop - vertex -0.0616202 -0.999181 -0.453892 - vertex -0.0666708 -0.983449 -0.555333 - vertex 0.0159046 -0.957606 -0.552484 - endloop - endfacet - facet normal 0.297714 -0.940708 -0.162587 - outer loop - vertex -0.0616202 -0.999181 -0.453892 - vertex 0.0159046 -0.957606 -0.552484 - vertex 0.0225498 -0.972888 -0.451898 - endloop - endfacet - facet normal 0.387523 -0.907256 -0.163438 - outer loop - vertex 0.0225498 -0.972888 -0.451898 - vertex 0.0159046 -0.957606 -0.552484 - vertex 0.0948282 -0.924408 -0.549636 - endloop - endfacet - facet normal 0.385385 -0.907829 -0.165303 - outer loop - vertex 0.0225498 -0.972888 -0.451898 - vertex 0.0948282 -0.924408 -0.549636 - vertex 0.102992 -0.939102 -0.449905 - endloop - endfacet - facet normal 0.476308 -0.863428 -0.166203 - outer loop - vertex 0.102992 -0.939102 -0.449905 - vertex 0.0948282 -0.924408 -0.549636 - vertex 0.169187 -0.883868 -0.547144 - endloop - endfacet - facet normal 0.474448 -0.864129 -0.167868 - outer loop - vertex 0.102992 -0.939102 -0.449905 - vertex 0.169187 -0.883868 -0.547144 - vertex 0.178773 -0.897833 -0.44816 - endloop - endfacet - facet normal 0.565441 -0.807358 -0.168671 - outer loop - vertex 0.178773 -0.897833 -0.44816 - vertex 0.169187 -0.883868 -0.547144 - vertex 0.238068 -0.835998 -0.545364 - endloop - endfacet - facet normal 0.564141 -0.808013 -0.169881 - outer loop - vertex 0.178773 -0.897833 -0.44816 - vertex 0.238068 -0.835998 -0.545364 - vertex 0.248962 -0.849091 -0.446914 - endloop - endfacet - facet normal 0.653354 -0.737628 -0.170393 - outer loop - vertex 0.248962 -0.849091 -0.446914 - vertex 0.238068 -0.835998 -0.545364 - vertex 0.300557 -0.780813 -0.544652 - endloop - endfacet - facet normal 0.65286 -0.737952 -0.170881 - outer loop - vertex 0.248962 -0.849091 -0.446914 - vertex 0.300557 -0.780813 -0.544652 - vertex 0.312627 -0.792882 -0.446415 - endloop - endfacet - facet normal 0.0434612 -0.978083 -0.203631 - outer loop - vertex -0.327179 -1.01672 -0.560317 - vertex -0.327179 -0.996371 -0.658075 - vertex -0.241072 -0.992745 -0.657112 - endloop - endfacet - facet normal 0.0427772 -0.977991 -0.204216 - outer loop - vertex -0.327179 -1.01672 -0.560317 - vertex -0.241072 -0.992745 -0.657112 - vertex -0.239126 -1.01302 -0.559605 - endloop - endfacet - facet normal 0.12936 -0.970313 -0.204348 - outer loop - vertex -0.239126 -1.01302 -0.559605 - vertex -0.241072 -0.992745 -0.657112 - vertex -0.155867 -0.981895 -0.654694 - endloop - endfacet - facet normal 0.127744 -0.970234 -0.205738 - outer loop - vertex -0.239126 -1.01302 -0.559605 - vertex -0.155867 -0.981895 -0.654694 - vertex -0.151985 -1.00192 -0.557825 - endloop - endfacet - facet normal 0.214988 -0.954641 -0.20601 - outer loop - vertex -0.151985 -1.00192 -0.557825 - vertex -0.155867 -0.981895 -0.654694 - vertex -0.0724673 -0.963848 -0.65129 - endloop - endfacet - facet normal 0.212828 -0.95472 -0.20788 - outer loop - vertex -0.151985 -1.00192 -0.557825 - vertex -0.0724673 -0.963848 -0.65129 - vertex -0.0666708 -0.983449 -0.555333 - endloop - endfacet - facet normal 0.300948 -0.930618 -0.20828 - outer loop - vertex -0.0666708 -0.983449 -0.555333 - vertex -0.0724673 -0.963848 -0.65129 - vertex 0.0082256 -0.93863 -0.647371 - endloop - endfacet - facet normal 0.298599 -0.930913 -0.210335 - outer loop - vertex -0.0666708 -0.983449 -0.555333 - vertex 0.0082256 -0.93863 -0.647371 - vertex 0.0159046 -0.957606 -0.552484 - endloop - endfacet - facet normal 0.387589 -0.897398 -0.210834 - outer loop - vertex 0.0159046 -0.957606 -0.552484 - vertex 0.0082256 -0.93863 -0.647371 - vertex 0.0853091 -0.906268 -0.643408 - endloop - endfacet - facet normal 0.385365 -0.89789 -0.212809 - outer loop - vertex 0.0159046 -0.957606 -0.552484 - vertex 0.0853091 -0.906268 -0.643408 - vertex 0.0948282 -0.924408 -0.549636 - endloop - endfacet - facet normal 0.474921 -0.853771 -0.213366 - outer loop - vertex 0.0948282 -0.924408 -0.549636 - vertex 0.0853091 -0.906268 -0.643408 - vertex 0.157899 -0.866762 -0.639916 - endloop - endfacet - facet normal 0.47302 -0.854393 -0.215091 - outer loop - vertex 0.0948282 -0.924408 -0.549636 - vertex 0.157899 -0.866762 -0.639916 - vertex 0.169187 -0.883868 -0.547144 - endloop - endfacet - facet normal 0.562216 -0.798387 -0.215617 - outer loop - vertex 0.169187 -0.883868 -0.547144 - vertex 0.157899 -0.866762 -0.639916 - vertex 0.225109 -0.82011 -0.637409 - endloop - endfacet - facet normal 0.560872 -0.798991 -0.216876 - outer loop - vertex 0.169187 -0.883868 -0.547144 - vertex 0.225109 -0.82011 -0.637409 - vertex 0.238068 -0.835998 -0.545364 - endloop - endfacet - facet normal 0.647987 -0.730015 -0.217235 - outer loop - vertex 0.238068 -0.835998 -0.545364 - vertex 0.225109 -0.82011 -0.637409 - vertex 0.286056 -0.766311 -0.636401 - endloop - endfacet - facet normal 0.647452 -0.730333 -0.21776 - outer loop - vertex 0.238068 -0.835998 -0.545364 - vertex 0.286056 -0.766311 -0.636401 - vertex 0.300557 -0.780813 -0.544652 - endloop - endfacet - facet normal 0.0443395 -0.964686 -0.259644 - outer loop - vertex -0.327179 -0.996371 -0.658075 - vertex -0.327179 -0.971527 -0.750381 - vertex -0.243113 -0.967997 -0.74914 - endloop - endfacet - facet normal 0.043525 -0.964533 -0.260348 - outer loop - vertex -0.327179 -0.996371 -0.658075 - vertex -0.243113 -0.967997 -0.74914 - vertex -0.241072 -0.992745 -0.657112 - endloop - endfacet - facet normal 0.130971 -0.95664 -0.260166 - outer loop - vertex -0.241072 -0.992745 -0.657112 - vertex -0.243113 -0.967997 -0.74914 - vertex -0.15996 -0.957469 -0.745993 - endloop - endfacet - facet normal 0.129224 -0.956462 -0.261689 - outer loop - vertex -0.241072 -0.992745 -0.657112 - vertex -0.15996 -0.957469 -0.745993 - vertex -0.155867 -0.981895 -0.654694 - endloop - endfacet - facet normal 0.216405 -0.940667 -0.261371 - outer loop - vertex -0.155867 -0.981895 -0.654694 - vertex -0.15996 -0.957469 -0.745993 - vertex -0.0786331 -0.940003 -0.741516 - endloop - endfacet - facet normal 0.214292 -0.940631 -0.263234 - outer loop - vertex -0.155867 -0.981895 -0.654694 - vertex -0.0786331 -0.940003 -0.741516 - vertex -0.0724673 -0.963848 -0.65129 - endloop - endfacet - facet normal 0.301387 -0.916564 -0.262826 - outer loop - vertex -0.0724673 -0.963848 -0.65129 - vertex -0.0786331 -0.940003 -0.741516 - vertex -4.44334e-05 -0.915661 -0.736286 - endloop - endfacet - facet normal 0.299338 -0.916709 -0.264653 - outer loop - vertex -0.0724673 -0.963848 -0.65129 - vertex -4.44334e-05 -0.915661 -0.736286 - vertex 0.0082256 -0.93863 -0.647371 - endloop - endfacet - facet normal 0.386465 -0.883648 -0.264217 - outer loop - vertex 0.0082256 -0.93863 -0.647371 - vertex -4.44334e-05 -0.915661 -0.736286 - vertex 0.0748929 -0.884504 -0.730878 - endloop - endfacet - facet normal 0.384758 -0.88393 -0.265762 - outer loop - vertex 0.0082256 -0.93863 -0.647371 - vertex 0.0748929 -0.884504 -0.730878 - vertex 0.0853091 -0.906268 -0.643408 - endloop - endfacet - facet normal 0.471991 -0.840708 -0.265395 - outer loop - vertex 0.0853091 -0.906268 -0.643408 - vertex 0.0748929 -0.884504 -0.730878 - vertex 0.145337 -0.846481 -0.726046 - endloop - endfacet - facet normal 0.470584 -0.841087 -0.266691 - outer loop - vertex 0.0853091 -0.906268 -0.643408 - vertex 0.145337 -0.846481 -0.726046 - vertex 0.157899 -0.866762 -0.639916 - endloop - endfacet - facet normal 0.557194 -0.786469 -0.266462 - outer loop - vertex 0.157899 -0.866762 -0.639916 - vertex 0.145337 -0.846481 -0.726046 - vertex 0.210445 -0.80154 -0.722544 - endloop - endfacet - facet normal 0.556156 -0.786871 -0.26744 - outer loop - vertex 0.157899 -0.866762 -0.639916 - vertex 0.210445 -0.80154 -0.722544 - vertex 0.225109 -0.82011 -0.637409 - endloop - endfacet - facet normal 0.64055 -0.719871 -0.267361 - outer loop - vertex 0.225109 -0.82011 -0.637409 - vertex 0.210445 -0.80154 -0.722544 - vertex 0.269375 -0.74963 -0.721126 - endloop - endfacet - facet normal 0.640085 -0.720116 -0.267814 - outer loop - vertex 0.225109 -0.82011 -0.637409 - vertex 0.269375 -0.74963 -0.721126 - vertex 0.286056 -0.766311 -0.636401 - endloop - endfacet - facet normal 0.0453633 -0.944684 -0.324829 - outer loop - vertex -0.327179 -0.971527 -0.750381 - vertex -0.327179 -0.941757 -0.836959 - vertex -0.245107 -0.938344 -0.835423 - endloop - endfacet - facet normal 0.044464 -0.944458 -0.325609 - outer loop - vertex -0.327179 -0.971527 -0.750381 - vertex -0.245107 -0.938344 -0.835423 - vertex -0.243113 -0.967997 -0.74914 - endloop - endfacet - facet normal 0.13258 -0.936416 -0.324881 - outer loop - vertex -0.243113 -0.967997 -0.74914 - vertex -0.245107 -0.938344 -0.835423 - vertex -0.163992 -0.92823 -0.831472 - endloop - endfacet - facet normal 0.130881 -0.936134 -0.326378 - outer loop - vertex -0.243113 -0.967997 -0.74914 - vertex -0.163992 -0.92823 -0.831472 - vertex -0.15996 -0.957469 -0.745993 - endloop - endfacet - facet normal 0.217375 -0.92037 -0.325066 - outer loop - vertex -0.15996 -0.957469 -0.745993 - vertex -0.163992 -0.92823 -0.831472 - vertex -0.0847917 -0.911541 -0.825763 - endloop - endfacet - facet normal 0.215608 -0.920225 -0.326647 - outer loop - vertex -0.15996 -0.957469 -0.745993 - vertex -0.0847917 -0.911541 -0.825763 - vertex -0.0786331 -0.940003 -0.741516 - endloop - endfacet - facet normal 0.300813 -0.896631 -0.324905 - outer loop - vertex -0.0786331 -0.940003 -0.741516 - vertex -0.0847917 -0.911541 -0.825763 - vertex -0.0084626 -0.888401 -0.818953 - endloop - endfacet - facet normal 0.29943 -0.896638 -0.326163 - outer loop - vertex -0.0786331 -0.940003 -0.741516 - vertex -0.0084626 -0.888401 -0.818953 - vertex -4.44334e-05 -0.915661 -0.736286 - endloop - endfacet - facet normal 0.383839 -0.864617 -0.324199 - outer loop - vertex -4.44334e-05 -0.915661 -0.736286 - vertex -0.0084626 -0.888401 -0.818953 - vertex 0.064038 -0.858934 -0.8117 - endloop - endfacet - facet normal 0.382974 -0.864701 -0.324998 - outer loop - vertex -4.44334e-05 -0.915661 -0.736286 - vertex 0.064038 -0.858934 -0.8117 - vertex 0.0748929 -0.884504 -0.730878 - endloop - endfacet - facet normal 0.467173 -0.82301 -0.323116 - outer loop - vertex 0.0748929 -0.884504 -0.730878 - vertex 0.064038 -0.858934 -0.8117 - vertex 0.13193 -0.822986 -0.805104 - endloop - endfacet - facet normal 0.466511 -0.823142 -0.323736 - outer loop - vertex 0.0748929 -0.884504 -0.730878 - vertex 0.13193 -0.822986 -0.805104 - vertex 0.145337 -0.846481 -0.726046 - endloop - endfacet - facet normal 0.549954 -0.770523 -0.322249 - outer loop - vertex 0.145337 -0.846481 -0.726046 - vertex 0.13193 -0.822986 -0.805104 - vertex 0.194431 -0.780399 -0.800266 - endloop - endfacet - facet normal 0.549351 -0.770715 -0.322819 - outer loop - vertex 0.145337 -0.846481 -0.726046 - vertex 0.194431 -0.780399 -0.800266 - vertex 0.210445 -0.80154 -0.722544 - endloop - endfacet - facet normal 0.630455 -0.706286 -0.322005 - outer loop - vertex 0.210445 -0.80154 -0.722544 - vertex 0.194431 -0.780399 -0.800266 - vertex 0.250763 -0.731018 -0.798286 - endloop - endfacet - facet normal 0.630064 -0.706464 -0.322378 - outer loop - vertex 0.210445 -0.80154 -0.722544 - vertex 0.250763 -0.731018 -0.798286 - vertex 0.269375 -0.74963 -0.721126 - endloop - endfacet - facet normal 0.0464682 -0.915674 -0.399228 - outer loop - vertex -0.327179 -0.941757 -0.836959 - vertex -0.327179 -0.906626 -0.917536 - vertex -0.246911 -0.903354 -0.915698 - endloop - endfacet - facet normal 0.0455517 -0.915375 -0.400016 - outer loop - vertex -0.327179 -0.941757 -0.836959 - vertex -0.246911 -0.903354 -0.915698 - vertex -0.245107 -0.938344 -0.835423 - endloop - endfacet - facet normal 0.134047 -0.907322 -0.398495 - outer loop - vertex -0.245107 -0.938344 -0.835423 - vertex -0.246911 -0.903354 -0.915698 - vertex -0.167691 -0.893765 -0.910881 - endloop - endfacet - facet normal 0.132557 -0.906962 -0.39981 - outer loop - vertex -0.245107 -0.938344 -0.835423 - vertex -0.167691 -0.893765 -0.910881 - vertex -0.163992 -0.92823 -0.831472 - endloop - endfacet - facet normal 0.217775 -0.891565 -0.397097 - outer loop - vertex -0.163992 -0.92823 -0.831472 - vertex -0.167691 -0.893765 -0.910881 - vertex -0.0905666 -0.878088 -0.903784 - endloop - endfacet - facet normal 0.216536 -0.891367 -0.398217 - outer loop - vertex -0.163992 -0.92823 -0.831472 - vertex -0.0905666 -0.878088 -0.903784 - vertex -0.0847917 -0.911541 -0.825763 - endloop - endfacet - facet normal 0.29923 -0.868747 -0.394639 - outer loop - vertex -0.0847917 -0.911541 -0.825763 - vertex -0.0905666 -0.878088 -0.903784 - vertex -0.016586 -0.856551 -0.895101 - endloop - endfacet - facet normal 0.298617 -0.868701 -0.395205 - outer loop - vertex -0.0847917 -0.911541 -0.825763 - vertex -0.016586 -0.856551 -0.895101 - vertex -0.0084626 -0.888401 -0.818953 - endloop - endfacet - facet normal 0.379977 -0.838229 -0.391139 - outer loop - vertex -0.0084626 -0.888401 -0.818953 - vertex -0.016586 -0.856551 -0.895101 - vertex 0.0532029 -0.82938 -0.885532 - endloop - endfacet - facet normal 0.379827 -0.838231 -0.39128 - outer loop - vertex -0.0084626 -0.888401 -0.818953 - vertex 0.0532029 -0.82938 -0.885532 - vertex 0.064038 -0.858934 -0.8117 - endloop - endfacet - facet normal 0.460693 -0.798606 -0.387286 - outer loop - vertex 0.064038 -0.858934 -0.8117 - vertex 0.0532029 -0.82938 -0.885532 - vertex 0.118105 -0.796242 -0.876659 - endloop - endfacet - facet normal 0.460514 -0.798627 -0.387455 - outer loop - vertex 0.064038 -0.858934 -0.8117 - vertex 0.118105 -0.796242 -0.876659 - vertex 0.13193 -0.822986 -0.805104 - endloop - endfacet - facet normal 0.540379 -0.748594 -0.384184 - outer loop - vertex 0.13193 -0.822986 -0.805104 - vertex 0.118105 -0.796242 -0.876659 - vertex 0.177427 -0.756803 -0.870068 - endloop - endfacet - facet normal 0.539916 -0.748704 -0.384621 - outer loop - vertex 0.13193 -0.822986 -0.805104 - vertex 0.177427 -0.756803 -0.870068 - vertex 0.194431 -0.780399 -0.800266 - endloop - endfacet - facet normal 0.616956 -0.687653 -0.382751 - outer loop - vertex 0.194431 -0.780399 -0.800266 - vertex 0.177427 -0.756803 -0.870068 - vertex 0.230473 -0.710728 -0.867343 - endloop - endfacet - facet normal 0.616443 -0.687847 -0.383229 - outer loop - vertex 0.194431 -0.780399 -0.800266 - vertex 0.230473 -0.710728 -0.867343 - vertex 0.250763 -0.731018 -0.798286 - endloop - endfacet - facet normal 0.0475431 -0.874919 -0.48193 - outer loop - vertex -0.327179 -0.906626 -0.917536 - vertex -0.327179 -0.865699 -0.991836 - vertex -0.248383 -0.862594 -0.9897 - endloop - endfacet - facet normal 0.0467026 -0.874574 -0.482638 - outer loop - vertex -0.327179 -0.906626 -0.917536 - vertex -0.248383 -0.862594 -0.9897 - vertex -0.246911 -0.903354 -0.915698 - endloop - endfacet - facet normal 0.135377 -0.866719 -0.480074 - outer loop - vertex -0.246911 -0.903354 -0.915698 - vertex -0.248383 -0.862594 -0.9897 - vertex -0.17074 -0.85363 -0.983989 - endloop - endfacet - facet normal 0.134109 -0.8663 -0.481184 - outer loop - vertex -0.246911 -0.903354 -0.915698 - vertex -0.17074 -0.85363 -0.983989 - vertex -0.167691 -0.893765 -0.910881 - endloop - endfacet - facet normal 0.217935 -0.851656 -0.47664 - outer loop - vertex -0.167691 -0.893765 -0.910881 - vertex -0.17074 -0.85363 -0.983989 - vertex -0.0954038 -0.839159 -0.9754 - endloop - endfacet - facet normal 0.217012 -0.851423 -0.477477 - outer loop - vertex -0.167691 -0.893765 -0.910881 - vertex -0.0954038 -0.839159 -0.9754 - vertex -0.0905666 -0.878088 -0.903784 - endloop - endfacet - facet normal 0.297355 -0.830274 -0.471407 - outer loop - vertex -0.0905666 -0.878088 -0.903784 - vertex -0.0954038 -0.839159 -0.9754 - vertex -0.0235283 -0.819531 -0.964632 - endloop - endfacet - facet normal 0.297057 -0.830223 -0.471685 - outer loop - vertex -0.0905666 -0.878088 -0.903784 - vertex -0.0235283 -0.819531 -0.964632 - vertex -0.016586 -0.856551 -0.895101 - endloop - endfacet - facet normal 0.375866 -0.801874 -0.46446 - outer loop - vertex -0.016586 -0.856551 -0.895101 - vertex -0.0235283 -0.819531 -0.964632 - vertex 0.0437332 -0.795099 -0.952382 - endloop - endfacet - facet normal 0.375876 -0.801875 -0.464451 - outer loop - vertex -0.016586 -0.856551 -0.895101 - vertex 0.0437332 -0.795099 -0.952382 - vertex 0.0532029 -0.82938 -0.885532 - endloop - endfacet - facet normal 0.452391 -0.765918 -0.456851 - outer loop - vertex 0.0532029 -0.82938 -0.885532 - vertex 0.0437332 -0.795099 -0.952382 - vertex 0.105528 -0.765637 -0.940583 - endloop - endfacet - facet normal 0.453375 -0.765903 -0.455899 - outer loop - vertex 0.0532029 -0.82938 -0.885532 - vertex 0.105528 -0.765637 -0.940583 - vertex 0.118105 -0.796242 -0.876659 - endloop - endfacet - facet normal 0.527498 -0.72117 -0.449065 - outer loop - vertex 0.118105 -0.796242 -0.876659 - vertex 0.105528 -0.765637 -0.940583 - vertex 0.161005 -0.730921 -0.931169 - endloop - endfacet - facet normal 0.529048 -0.720954 -0.447586 - outer loop - vertex 0.118105 -0.796242 -0.876659 - vertex 0.161005 -0.730921 -0.931169 - vertex 0.177427 -0.756803 -0.870068 - endloop - endfacet - facet normal 0.600463 -0.665528 -0.443302 - outer loop - vertex 0.177427 -0.756803 -0.870068 - vertex 0.161005 -0.730921 -0.931169 - vertex 0.209579 -0.689834 -0.927058 - endloop - endfacet - facet normal 0.600759 -0.665441 -0.443032 - outer loop - vertex 0.177427 -0.756803 -0.870068 - vertex 0.209579 -0.689834 -0.927058 - vertex 0.230473 -0.710728 -0.867343 - endloop - endfacet - facet normal 0.0484137 -0.819786 -0.570619 - outer loop - vertex -0.327179 -0.865699 -0.991836 - vertex -0.327179 -0.818542 -1.05958 - vertex -0.249379 -0.815633 -1.05716 - endloop - endfacet - facet normal 0.0477763 -0.819466 -0.571133 - outer loop - vertex -0.327179 -0.865699 -0.991836 - vertex -0.249379 -0.815633 -1.05716 - vertex -0.248383 -0.862594 -0.9897 - endloop - endfacet - facet normal 0.136457 -0.812111 -0.567323 - outer loop - vertex -0.248383 -0.862594 -0.9897 - vertex -0.249379 -0.815633 -1.05716 - vertex -0.172822 -0.807382 -1.05056 - endloop - endfacet - facet normal 0.135503 -0.811702 -0.568137 - outer loop - vertex -0.248383 -0.862594 -0.9897 - vertex -0.172822 -0.807382 -1.05056 - vertex -0.17074 -0.85363 -0.983989 - endloop - endfacet - facet normal 0.218088 -0.798289 -0.561402 - outer loop - vertex -0.17074 -0.85363 -0.983989 - vertex -0.172822 -0.807382 -1.05056 - vertex -0.0987492 -0.794266 -1.04044 - endloop - endfacet - facet normal 0.21737 -0.798031 -0.562047 - outer loop - vertex -0.17074 -0.85363 -0.983989 - vertex -0.0987492 -0.794266 -1.04044 - vertex -0.0954038 -0.839159 -0.9754 - endloop - endfacet - facet normal 0.295888 -0.778938 -0.552906 - outer loop - vertex -0.0954038 -0.839159 -0.9754 - vertex -0.0987492 -0.794266 -1.04044 - vertex -0.0284028 -0.776763 -1.02745 - endloop - endfacet - facet normal 0.295566 -0.778846 -0.553209 - outer loop - vertex -0.0954038 -0.839159 -0.9754 - vertex -0.0284028 -0.776763 -1.02745 - vertex -0.0235283 -0.819531 -0.964632 - endloop - endfacet - facet normal 0.372643 -0.753359 -0.541838 - outer loop - vertex -0.0235283 -0.819531 -0.964632 - vertex -0.0284028 -0.776763 -1.02745 - vertex 0.0369749 -0.755348 -1.01226 - endloop - endfacet - facet normal 0.372364 -0.753299 -0.542112 - outer loop - vertex -0.0235283 -0.819531 -0.964632 - vertex 0.0369749 -0.755348 -1.01226 - vertex 0.0437332 -0.795099 -0.952382 - endloop - endfacet - facet normal 0.443829 -0.722683 -0.529853 - outer loop - vertex 0.0437332 -0.795099 -0.952382 - vertex 0.0369749 -0.755348 -1.01226 - vertex 0.0958629 -0.730557 -0.996746 - endloop - endfacet - facet normal 0.445493 -0.72288 -0.528186 - outer loop - vertex 0.0437332 -0.795099 -0.952382 - vertex 0.0958629 -0.730557 -0.996746 - vertex 0.105528 -0.765637 -0.940583 - endloop - endfacet - facet normal 0.51382 -0.685107 -0.516351 - outer loop - vertex 0.105528 -0.765637 -0.940583 - vertex 0.0958629 -0.730557 -0.996746 - vertex 0.14674 -0.702923 -0.982784 - endloop - endfacet - facet normal 0.515975 -0.685089 -0.51422 - outer loop - vertex 0.105528 -0.765637 -0.940583 - vertex 0.14674 -0.702923 -0.982784 - vertex 0.161005 -0.730921 -0.931169 - endloop - endfacet - facet normal 0.581695 -0.63674 -0.506156 - outer loop - vertex 0.161005 -0.730921 -0.931169 - vertex 0.14674 -0.702923 -0.982784 - vertex 0.189158 -0.669413 -0.976191 - endloop - endfacet - facet normal 0.581483 -0.636782 -0.506346 - outer loop - vertex 0.161005 -0.730921 -0.931169 - vertex 0.189158 -0.669413 -0.976191 - vertex 0.209579 -0.689834 -0.927058 - endloop - endfacet - facet normal 0.0488436 -0.748534 -0.661295 - outer loop - vertex -0.327179 -0.818542 -1.05958 - vertex -0.327179 -0.764719 -1.12051 - vertex -0.249759 -0.762037 -1.11783 - endloop - endfacet - facet normal 0.0485713 -0.748371 -0.661499 - outer loop - vertex -0.327179 -0.818542 -1.05958 - vertex -0.249759 -0.762037 -1.11783 - vertex -0.249379 -0.815633 -1.05716 - endloop - endfacet - facet normal 0.137009 -0.741914 -0.656347 - outer loop - vertex -0.249379 -0.815633 -1.05716 - vertex -0.249759 -0.762037 -1.11783 - vertex -0.173622 -0.754577 -1.11037 - endloop - endfacet - facet normal 0.136575 -0.741682 -0.6567 - outer loop - vertex -0.249379 -0.815633 -1.05716 - vertex -0.173622 -0.754577 -1.11037 - vertex -0.172822 -0.807382 -1.05056 - endloop - endfacet - facet normal 0.218197 -0.730102 -0.647566 - outer loop - vertex -0.172822 -0.807382 -1.05056 - vertex -0.173622 -0.754577 -1.11037 - vertex -0.100049 -0.742924 -1.09871 - endloop - endfacet - facet normal 0.217805 -0.729915 -0.647908 - outer loop - vertex -0.172822 -0.807382 -1.05056 - vertex -0.100049 -0.742924 -1.09871 - vertex -0.0987492 -0.794266 -1.04044 - endloop - endfacet - facet normal 0.295197 -0.71363 -0.635288 - outer loop - vertex -0.0987492 -0.794266 -1.04044 - vertex -0.100049 -0.742924 -1.09871 - vertex -0.0303231 -0.727665 -1.08345 - endloop - endfacet - facet normal 0.294869 -0.713492 -0.635595 - outer loop - vertex -0.0987492 -0.794266 -1.04044 - vertex -0.0303231 -0.727665 -1.08345 - vertex -0.0284028 -0.776763 -1.02745 - endloop - endfacet - facet normal 0.371043 -0.691939 -0.619312 - outer loop - vertex -0.0284028 -0.776763 -1.02745 - vertex -0.0303231 -0.727665 -1.08345 - vertex 0.0342735 -0.709387 -1.06518 - endloop - endfacet - facet normal 0.370577 -0.691768 -0.619782 - outer loop - vertex -0.0284028 -0.776763 -1.02745 - vertex 0.0342735 -0.709387 -1.06518 - vertex 0.0369749 -0.755348 -1.01226 - endloop - endfacet - facet normal 0.439022 -0.667106 -0.601855 - outer loop - vertex 0.0369749 -0.755348 -1.01226 - vertex 0.0342735 -0.709387 -1.06518 - vertex 0.0917579 -0.689499 -1.04529 - endloop - endfacet - facet normal 0.43935 -0.667204 -0.601506 - outer loop - vertex 0.0369749 -0.755348 -1.01226 - vertex 0.0917579 -0.689499 -1.04529 - vertex 0.0958629 -0.730557 -0.996746 - endloop - endfacet - facet normal 0.505852 -0.637047 -0.581622 - outer loop - vertex 0.0958629 -0.730557 -0.996746 - vertex 0.0917579 -0.689499 -1.04529 - vertex 0.140147 -0.669413 -1.0252 - endloop - endfacet - facet normal 0.505664 -0.637008 -0.581829 - outer loop - vertex 0.0958629 -0.730557 -0.996746 - vertex 0.140147 -0.669413 -1.0252 - vertex 0.14674 -0.702923 -0.982784 - endloop - endfacet - facet normal 0.568022 -0.600567 -0.562734 - outer loop - vertex 0.14674 -0.702923 -0.982784 - vertex 0.140147 -0.669413 -1.0252 - vertex 0.173078 -0.653333 -1.00912 - endloop - endfacet - facet normal 0.562735 -0.600567 -0.568021 - outer loop - vertex 0.14674 -0.702923 -0.982784 - vertex 0.173078 -0.653333 -1.00912 - vertex 0.189158 -0.669413 -0.976191 - endloop - endfacet - facet normal 0.0422546 -0.992246 -0.116889 - outer loop - vertex -0.327179 -1.03302 -0.457381 - vertex -0.237417 -1.02926 -0.456883 - vertex -0.236088 -1.04188 -0.34921 - endloop - endfacet - facet normal 0.0419438 -0.992289 -0.11663 - outer loop - vertex -0.327179 -1.03302 -0.457381 - vertex -0.236088 -1.04188 -0.34921 - vertex -0.327179 -1.04569 -0.349542 - endloop - endfacet - facet normal 0.0419616 -0.995935 -0.0797085 - outer loop - vertex -0.327179 -1.04569 -0.349542 - vertex -0.236088 -1.04188 -0.34921 - vertex -0.23507 -1.05075 -0.237864 - endloop - endfacet - facet normal 0.0417479 -0.995958 -0.0795333 - outer loop - vertex -0.327179 -1.04569 -0.349542 - vertex -0.23507 -1.05075 -0.237864 - vertex -0.327179 -1.0546 -0.238072 - endloop - endfacet - facet normal 0.0417595 -0.998167 -0.0437988 - outer loop - vertex -0.327179 -1.0546 -0.238072 - vertex -0.23507 -1.05075 -0.237864 - vertex -0.234296 -1.05571 -0.124123 - endloop - endfacet - facet normal 0.0415584 -0.998183 -0.043635 - outer loop - vertex -0.327179 -1.0546 -0.238072 - vertex -0.234296 -1.05571 -0.124123 - vertex -0.327179 -1.05957 -0.124242 - endloop - endfacet - facet normal 0.0415512 -0.999104 -0.00802042 - outer loop - vertex -0.327179 -1.05957 -0.124242 - vertex -0.234296 -1.05571 -0.124123 - vertex -0.233698 -1.05661 -0.00926336 - endloop - endfacet - facet normal 0.0412984 -0.999116 -0.00781459 - outer loop - vertex -0.327179 -1.05957 -0.124242 - vertex -0.233698 -1.05661 -0.00926336 - vertex -0.327179 -1.06047 -0.0093227 - endloop - endfacet - facet normal 0.0412595 -0.998736 0.0286893 - outer loop - vertex -0.327179 -1.06047 -0.0093227 - vertex -0.233698 -1.05661 -0.00926336 - vertex -0.233207 -1.05329 0.105437 - endloop - endfacet - facet normal 0.0408904 -0.998743 0.0289919 - outer loop - vertex -0.327179 -1.06047 -0.0093227 - vertex -0.233207 -1.05329 0.105437 - vertex -0.327179 -1.05714 0.105413 - endloop - endfacet - facet normal 0.0406207 -0.992678 0.113757 - outer loop - vertex -0.327179 -1.05714 0.105413 - vertex -0.233207 -1.05329 0.105437 - vertex -0.232594 -1.04088 0.213522 - endloop - endfacet - facet normal 0.0398126 -0.99263 0.114457 - outer loop - vertex -0.327179 -1.05714 0.105413 - vertex -0.232594 -1.04088 0.213522 - vertex -0.327179 -1.04468 0.213516 - endloop - endfacet - facet normal 0.0386106 -0.962906 0.267061 - outer loop - vertex -0.327179 -1.04468 0.213516 - vertex -0.232594 -1.04088 0.213522 - vertex -0.231629 -1.01449 0.308537 - endloop - endfacet - facet normal 0.0370842 -0.962569 0.268489 - outer loop - vertex -0.327179 -1.04468 0.213516 - vertex -0.231629 -1.01449 0.308537 - vertex -0.327179 -1.01817 0.308537 - endloop - endfacet - facet normal 0.033037 -0.857519 0.51339 - outer loop - vertex -0.327179 -1.01817 0.308537 - vertex -0.231629 -1.01449 0.308537 - vertex -0.230082 -0.969235 0.384027 - endloop - endfacet - facet normal 0.0307591 -0.856314 0.515538 - outer loop - vertex -0.327179 -1.01817 0.308537 - vertex -0.230082 -0.969235 0.384027 - vertex -0.327179 -0.972723 0.384027 - endloop - endfacet - facet normal 0.126749 -0.984922 -0.117745 - outer loop - vertex -0.237417 -1.02926 -0.456883 - vertex -0.148586 -1.01797 -0.455637 - vertex -0.145943 -1.03046 -0.348379 - endloop - endfacet - facet normal 0.125963 -0.985101 -0.117084 - outer loop - vertex -0.237417 -1.02926 -0.456883 - vertex -0.145943 -1.03046 -0.348379 - vertex -0.236088 -1.04188 -0.34921 - endloop - endfacet - facet normal 0.126088 -0.988756 -0.0803902 - outer loop - vertex -0.236088 -1.04188 -0.34921 - vertex -0.145943 -1.03046 -0.348379 - vertex -0.143926 -1.03923 -0.237353 - endloop - endfacet - facet normal 0.125508 -0.988869 -0.0799092 - outer loop - vertex -0.236088 -1.04188 -0.34921 - vertex -0.143926 -1.03923 -0.237353 - vertex -0.23507 -1.05075 -0.237864 - endloop - endfacet - facet normal 0.125589 -0.991081 -0.0445664 - outer loop - vertex -0.23507 -1.05075 -0.237864 - vertex -0.143926 -1.03923 -0.237353 - vertex -0.142408 -1.04414 -0.123858 - endloop - endfacet - facet normal 0.124974 -0.991181 -0.0440603 - outer loop - vertex -0.23507 -1.05075 -0.237864 - vertex -0.142408 -1.04414 -0.123858 - vertex -0.234296 -1.05571 -0.124123 - endloop - endfacet - facet normal 0.124991 -0.992116 -0.00909585 - outer loop - vertex -0.234296 -1.05571 -0.124123 - vertex -0.142408 -1.04414 -0.123858 - vertex -0.14126 -1.04504 -0.00919506 - endloop - endfacet - facet normal 0.12414 -0.992229 -0.00839684 - outer loop - vertex -0.234296 -1.05571 -0.124123 - vertex -0.14126 -1.04504 -0.00919506 - vertex -0.233698 -1.05661 -0.00926336 - endloop - endfacet - facet normal 0.124073 -0.991903 0.027113 - outer loop - vertex -0.233698 -1.05661 -0.00926336 - vertex -0.14126 -1.04504 -0.00919506 - vertex -0.140353 -1.0418 0.105336 - endloop - endfacet - facet normal 0.122824 -0.992029 0.0281465 - outer loop - vertex -0.233698 -1.05661 -0.00926336 - vertex -0.140353 -1.0418 0.105336 - vertex -0.233207 -1.05329 0.105437 - endloop - endfacet - facet normal 0.122211 -0.986356 0.110303 - outer loop - vertex -0.233207 -1.05329 0.105437 - vertex -0.140353 -1.0418 0.105336 - vertex -0.139201 -1.02959 0.213278 - endloop - endfacet - facet normal 0.119603 -0.986417 0.11259 - outer loop - vertex -0.233207 -1.05329 0.105437 - vertex -0.139201 -1.02959 0.213278 - vertex -0.232594 -1.04088 0.213522 - endloop - endfacet - facet normal 0.116607 -0.958457 0.260313 - outer loop - vertex -0.232594 -1.04088 0.213522 - vertex -0.139201 -1.02959 0.213278 - vertex -0.137317 -1.00358 0.308176 - endloop - endfacet - facet normal 0.11179 -0.957776 0.264893 - outer loop - vertex -0.232594 -1.04088 0.213522 - vertex -0.137317 -1.00358 0.308176 - vertex -0.231629 -1.01449 0.308537 - endloop - endfacet - facet normal 0.101168 -0.858036 0.503527 - outer loop - vertex -0.231629 -1.01449 0.308537 - vertex -0.137317 -1.00358 0.308176 - vertex -0.134214 -0.958971 0.383572 - endloop - endfacet - facet normal 0.0939387 -0.854744 0.510478 - outer loop - vertex -0.231629 -1.01449 0.308537 - vertex -0.134214 -0.958971 0.383572 - vertex -0.230082 -0.969235 0.384027 - endloop - endfacet - facet normal 0.211992 -0.969991 -0.119066 - outer loop - vertex -0.148586 -1.01797 -0.455637 - vertex -0.0616202 -0.999181 -0.453892 - vertex -0.0576919 -1.01142 -0.347216 - endloop - endfacet - facet normal 0.210893 -0.970346 -0.118123 - outer loop - vertex -0.148586 -1.01797 -0.455637 - vertex -0.0576919 -1.01142 -0.347216 - vertex -0.145943 -1.03046 -0.348379 - endloop - endfacet - facet normal 0.211207 -0.974038 -0.0815005 - outer loop - vertex -0.145943 -1.03046 -0.348379 - vertex -0.0576919 -1.01142 -0.347216 - vertex -0.0547126 -1.02002 -0.23665 - endloop - endfacet - facet normal 0.210349 -0.974283 -0.0807775 - outer loop - vertex -0.145943 -1.03046 -0.348379 - vertex -0.0547126 -1.02002 -0.23665 - vertex -0.143926 -1.03923 -0.237353 - endloop - endfacet - facet normal 0.210553 -0.976505 -0.0458901 - outer loop - vertex -0.143926 -1.03923 -0.237353 - vertex -0.0547126 -1.02002 -0.23665 - vertex -0.0525087 -1.02486 -0.123539 - endloop - endfacet - facet normal 0.209571 -0.976754 -0.0450699 - outer loop - vertex -0.143926 -1.03923 -0.237353 - vertex -0.0525087 -1.02486 -0.123539 - vertex -0.142408 -1.04414 -0.123858 - endloop - endfacet - facet normal 0.209655 -0.977714 -0.0109858 - outer loop - vertex -0.142408 -1.04414 -0.123858 - vertex -0.0525087 -1.02486 -0.123539 - vertex -0.0509067 -1.0258 -0.00922753 - endloop - endfacet - facet normal 0.208255 -0.978025 -0.00981825 - outer loop - vertex -0.142408 -1.04414 -0.123858 - vertex -0.0509067 -1.0258 -0.00922753 - vertex -0.14126 -1.04504 -0.00919506 - endloop - endfacet - facet normal 0.208215 -0.97778 0.0243501 - outer loop - vertex -0.14126 -1.04504 -0.00919506 - vertex -0.0509067 -1.0258 -0.00922753 - vertex -0.0497334 -1.02271 0.104939 - endloop - endfacet - facet normal 0.20616 -0.978171 0.0260742 - outer loop - vertex -0.14126 -1.04504 -0.00919506 - vertex -0.0497334 -1.02271 0.104939 - vertex -0.140353 -1.0418 0.105336 - endloop - endfacet - facet normal 0.205438 -0.973116 0.104119 - outer loop - vertex -0.140353 -1.0418 0.105336 - vertex -0.0497334 -1.02271 0.104939 - vertex -0.0481903 -1.01087 0.212524 - endloop - endfacet - facet normal 0.201066 -0.973604 0.108019 - outer loop - vertex -0.140353 -1.0418 0.105336 - vertex -0.0481903 -1.01087 0.212524 - vertex -0.139201 -1.02959 0.213278 - endloop - endfacet - facet normal 0.197066 -0.948502 0.248009 - outer loop - vertex -0.139201 -1.02959 0.213278 - vertex -0.0481903 -1.01087 0.212524 - vertex -0.0454792 -0.985583 0.307092 - endloop - endfacet - facet normal 0.188827 -0.948048 0.256027 - outer loop - vertex -0.139201 -1.02959 0.213278 - vertex -0.0454792 -0.985583 0.307092 - vertex -0.137317 -1.00358 0.308176 - endloop - endfacet - facet normal 0.173703 -0.857086 0.485005 - outer loop - vertex -0.137317 -1.00358 0.308176 - vertex -0.0454792 -0.985583 0.307092 - vertex -0.0408019 -0.942129 0.382207 - endloop - endfacet - facet normal 0.160939 -0.852302 0.497675 - outer loop - vertex -0.137317 -1.00358 0.308176 - vertex -0.0408019 -0.942129 0.382207 - vertex -0.134214 -0.958971 0.383572 - endloop - endfacet - facet normal 0.298598 -0.946716 -0.120701 - outer loop - vertex -0.0616202 -0.999181 -0.453892 - vertex 0.0225498 -0.972888 -0.451898 - vertex 0.0277183 -0.984773 -0.345887 - endloop - endfacet - facet normal 0.297354 -0.947247 -0.1196 - outer loop - vertex -0.0616202 -0.999181 -0.453892 - vertex 0.0277183 -0.984773 -0.345887 - vertex -0.0576919 -1.01142 -0.347216 - endloop - endfacet - facet normal 0.297946 -0.950974 -0.0829249 - outer loop - vertex -0.0576919 -1.01142 -0.347216 - vertex 0.0277183 -0.984773 -0.345887 - vertex 0.0316055 -0.993149 -0.235868 - endloop - endfacet - facet normal 0.296931 -0.951368 -0.0820461 - outer loop - vertex -0.0576919 -1.01142 -0.347216 - vertex 0.0316055 -0.993149 -0.235868 - vertex -0.0547126 -1.02002 -0.23665 - endloop - endfacet - facet normal 0.297311 -0.953592 -0.0476359 - outer loop - vertex -0.0547126 -1.02002 -0.23665 - vertex 0.0316055 -0.993149 -0.235868 - vertex 0.0344069 -0.997901 -0.123256 - endloop - endfacet - facet normal 0.296093 -0.954022 -0.0465947 - outer loop - vertex -0.0547126 -1.02002 -0.23665 - vertex 0.0344069 -0.997901 -0.123256 - vertex -0.0525087 -1.02486 -0.123539 - endloop - endfacet - facet normal 0.29629 -0.955003 -0.0134867 - outer loop - vertex -0.0525087 -1.02486 -0.123539 - vertex 0.0344069 -0.997901 -0.123256 - vertex 0.036318 -0.998915 -0.00947047 - endloop - endfacet - facet normal 0.294536 -0.955565 -0.011993 - outer loop - vertex -0.0525087 -1.02486 -0.123539 - vertex 0.036318 -0.998915 -0.00947047 - vertex -0.0509067 -1.0258 -0.00922753 - endloop - endfacet - facet normal 0.294577 -0.955403 0.0207241 - outer loop - vertex -0.0509067 -1.0258 -0.00922753 - vertex 0.036318 -0.998915 -0.00947047 - vertex 0.0375341 -0.996077 0.104073 - endloop - endfacet - facet normal 0.292032 -0.956134 0.0229022 - outer loop - vertex -0.0509067 -1.0258 -0.00922753 - vertex 0.0375341 -0.996077 0.104073 - vertex -0.0497334 -1.02271 0.104939 - endloop - endfacet - facet normal 0.291435 -0.951819 0.0954246 - outer loop - vertex -0.0497334 -1.02271 0.104939 - vertex 0.0375341 -0.996077 0.104073 - vertex 0.0392465 -0.984833 0.210997 - endloop - endfacet - facet normal 0.285594 -0.953039 0.10076 - outer loop - vertex -0.0497334 -1.02271 0.104939 - vertex 0.0392465 -0.984833 0.210997 - vertex -0.0481903 -1.01087 0.212524 - endloop - endfacet - facet normal 0.281472 -0.931625 0.229887 - outer loop - vertex -0.0481903 -1.01087 0.212524 - vertex 0.0392465 -0.984833 0.210997 - vertex 0.0426461 -0.960629 0.304924 - endloop - endfacet - facet normal 0.269887 -0.932106 0.241537 - outer loop - vertex -0.0481903 -1.01087 0.212524 - vertex 0.0426461 -0.960629 0.304924 - vertex -0.0454792 -0.985583 0.307092 - endloop - endfacet - facet normal 0.25283 -0.853223 0.456167 - outer loop - vertex -0.0454792 -0.985583 0.307092 - vertex 0.0426461 -0.960629 0.304924 - vertex 0.0489241 -0.91891 0.379476 - endloop - endfacet - facet normal 0.233888 -0.847829 0.475902 - outer loop - vertex -0.0454792 -0.985583 0.307092 - vertex 0.0489241 -0.91891 0.379476 - vertex -0.0408019 -0.942129 0.382207 - endloop - endfacet - facet normal 0.386896 -0.913954 -0.122471 - outer loop - vertex 0.0225498 -0.972888 -0.451898 - vertex 0.102992 -0.939102 -0.449905 - vertex 0.109341 -0.950531 -0.344558 - endloop - endfacet - facet normal 0.385678 -0.914619 -0.121347 - outer loop - vertex 0.0225498 -0.972888 -0.451898 - vertex 0.109341 -0.950531 -0.344558 - vertex 0.0277183 -0.984773 -0.345887 - endloop - endfacet - facet normal 0.386643 -0.918351 -0.0844947 - outer loop - vertex 0.0277183 -0.984773 -0.345887 - vertex 0.109341 -0.950531 -0.344558 - vertex 0.114063 -0.958612 -0.235117 - endloop - endfacet - facet normal 0.385623 -0.918863 -0.0835781 - outer loop - vertex 0.0277183 -0.984773 -0.345887 - vertex 0.114063 -0.958612 -0.235117 - vertex 0.0316055 -0.993149 -0.235868 - endloop - endfacet - facet normal 0.386236 -0.921067 -0.0495636 - outer loop - vertex 0.0316055 -0.993149 -0.235868 - vertex 0.114063 -0.958612 -0.235117 - vertex 0.117344 -0.963264 -0.123102 - endloop - endfacet - facet normal 0.384997 -0.921644 -0.0484691 - outer loop - vertex 0.0316055 -0.993149 -0.235868 - vertex 0.117344 -0.963264 -0.123102 - vertex 0.0344069 -0.997901 -0.123256 - endloop - endfacet - facet normal 0.385349 -0.922629 -0.0162111 - outer loop - vertex 0.0344069 -0.997901 -0.123256 - vertex 0.117344 -0.963264 -0.123102 - vertex 0.119372 -0.964404 -0.0100336 - endloop - endfacet - facet normal 0.383595 -0.923385 -0.0146712 - outer loop - vertex 0.0344069 -0.997901 -0.123256 - vertex 0.119372 -0.964404 -0.0100336 - vertex 0.036318 -0.998915 -0.00947047 - endloop - endfacet - facet normal 0.383764 -0.923278 0.0168492 - outer loop - vertex 0.036318 -0.998915 -0.00947047 - vertex 0.119372 -0.964404 -0.0100336 - vertex 0.120332 -0.96195 0.102567 - endloop - endfacet - facet normal 0.381303 -0.924254 0.0190166 - outer loop - vertex 0.036318 -0.998915 -0.00947047 - vertex 0.120332 -0.96195 0.102567 - vertex 0.0375341 -0.996077 0.104073 - endloop - endfacet - facet normal 0.381023 -0.920675 0.0847282 - outer loop - vertex 0.0375341 -0.996077 0.104073 - vertex 0.120332 -0.96195 0.102567 - vertex 0.121918 -0.95155 0.208436 - endloop - endfacet - facet normal 0.374336 -0.922812 0.0910466 - outer loop - vertex 0.0375341 -0.996077 0.104073 - vertex 0.121918 -0.95155 0.208436 - vertex 0.0392465 -0.984833 0.210997 - endloop - endfacet - facet normal 0.370952 -0.905583 0.205706 - outer loop - vertex 0.0392465 -0.984833 0.210997 - vertex 0.121918 -0.95155 0.208436 - vertex 0.125822 -0.928855 0.30131 - endloop - endfacet - facet normal 0.356398 -0.907812 0.221038 - outer loop - vertex 0.0392465 -0.984833 0.210997 - vertex 0.125822 -0.928855 0.30131 - vertex 0.0426461 -0.960629 0.304924 - endloop - endfacet - facet normal 0.340423 -0.843993 0.414473 - outer loop - vertex 0.0426461 -0.960629 0.304924 - vertex 0.125822 -0.928855 0.30131 - vertex 0.133736 -0.889511 0.374925 - endloop - endfacet - facet normal 0.314732 -0.839358 0.443195 - outer loop - vertex 0.0426461 -0.960629 0.304924 - vertex 0.133736 -0.889511 0.374925 - vertex 0.0489241 -0.91891 0.379476 - endloop - endfacet - facet normal 0.476759 -0.870222 -0.124156 - outer loop - vertex 0.102992 -0.939102 -0.449905 - vertex 0.178773 -0.897833 -0.44816 - vertex 0.186229 -0.908696 -0.343395 - endloop - endfacet - facet normal 0.475738 -0.870923 -0.123158 - outer loop - vertex 0.102992 -0.939102 -0.449905 - vertex 0.186229 -0.908696 -0.343395 - vertex 0.109341 -0.950531 -0.344558 - endloop - endfacet - facet normal 0.477172 -0.874593 -0.0859823 - outer loop - vertex 0.109341 -0.950531 -0.344558 - vertex 0.186229 -0.908696 -0.343395 - vertex 0.19171 -0.916413 -0.234478 - endloop - endfacet - facet normal 0.476317 -0.875139 -0.0851729 - outer loop - vertex 0.109341 -0.950531 -0.344558 - vertex 0.19171 -0.916413 -0.234478 - vertex 0.114063 -0.958612 -0.235117 - endloop - endfacet - facet normal 0.477207 -0.877289 -0.0513491 - outer loop - vertex 0.114063 -0.958612 -0.235117 - vertex 0.19171 -0.916413 -0.234478 - vertex 0.195372 -0.920944 -0.123039 - endloop - endfacet - facet normal 0.476189 -0.877897 -0.050406 - outer loop - vertex 0.114063 -0.958612 -0.235117 - vertex 0.195372 -0.920944 -0.123039 - vertex 0.117344 -0.963264 -0.123102 - endloop - endfacet - facet normal 0.476692 -0.878872 -0.0186722 - outer loop - vertex 0.117344 -0.963264 -0.123102 - vertex 0.195372 -0.920944 -0.123039 - vertex 0.197369 -0.922247 -0.0107065 - endloop - endfacet - facet normal 0.475293 -0.879655 -0.0173907 - outer loop - vertex 0.117344 -0.963264 -0.123102 - vertex 0.197369 -0.922247 -0.0107065 - vertex 0.119372 -0.964404 -0.0100336 - endloop - endfacet - facet normal 0.475528 -0.879598 0.0134135 - outer loop - vertex 0.119372 -0.964404 -0.0100336 - vertex 0.197369 -0.922247 -0.0107065 - vertex 0.197857 -0.920281 0.100889 - endloop - endfacet - facet normal 0.47363 -0.880594 0.0151525 - outer loop - vertex 0.119372 -0.964404 -0.0100336 - vertex 0.197857 -0.920281 0.100889 - vertex 0.120332 -0.96195 0.102567 - endloop - endfacet - facet normal 0.4734 -0.877855 0.0725464 - outer loop - vertex 0.120332 -0.96195 0.102567 - vertex 0.197857 -0.920281 0.100889 - vertex 0.198576 -0.911291 0.204991 - endloop - endfacet - facet normal 0.466288 -0.881048 0.0795586 - outer loop - vertex 0.120332 -0.96195 0.102567 - vertex 0.198576 -0.911291 0.204991 - vertex 0.121918 -0.95155 0.208436 - endloop - endfacet - facet normal 0.463838 -0.868032 0.177128 - outer loop - vertex 0.121918 -0.95155 0.208436 - vertex 0.198576 -0.911291 0.204991 - vertex 0.201262 -0.891521 0.294843 - endloop - endfacet - facet normal 0.448417 -0.872439 0.19435 - outer loop - vertex 0.121918 -0.95155 0.208436 - vertex 0.201262 -0.891521 0.294843 - vertex 0.125822 -0.928855 0.30131 - endloop - endfacet - facet normal 0.438232 -0.822864 0.36173 - outer loop - vertex 0.125822 -0.928855 0.30131 - vertex 0.201262 -0.891521 0.294843 - vertex 0.209402 -0.856237 0.365244 - endloop - endfacet - facet normal 0.411709 -0.821391 0.39473 - outer loop - vertex 0.125822 -0.928855 0.30131 - vertex 0.209402 -0.856237 0.365244 - vertex 0.133736 -0.889511 0.374925 - endloop - endfacet - facet normal 0.567392 -0.81383 -0.12549 - outer loop - vertex 0.178773 -0.897833 -0.44816 - vertex 0.248962 -0.849091 -0.446914 - vertex 0.257436 -0.859273 -0.342564 - endloop - endfacet - facet normal 0.566713 -0.814413 -0.124772 - outer loop - vertex 0.178773 -0.897833 -0.44816 - vertex 0.257436 -0.859273 -0.342564 - vertex 0.186229 -0.908696 -0.343395 - endloop - endfacet - facet normal 0.568704 -0.817913 -0.087144 - outer loop - vertex 0.186229 -0.908696 -0.343395 - vertex 0.257436 -0.859273 -0.342564 - vertex 0.263598 -0.866552 -0.234031 - endloop - endfacet - facet normal 0.568145 -0.818362 -0.0865761 - outer loop - vertex 0.186229 -0.908696 -0.343395 - vertex 0.263598 -0.866552 -0.234031 - vertex 0.19171 -0.916413 -0.234478 - endloop - endfacet - facet normal 0.569351 -0.820404 -0.0526919 - outer loop - vertex 0.19171 -0.916413 -0.234478 - vertex 0.263598 -0.866552 -0.234031 - vertex 0.267558 -0.870934 -0.12303 - endloop - endfacet - facet normal 0.568715 -0.820886 -0.0520624 - outer loop - vertex 0.19171 -0.916413 -0.234478 - vertex 0.267558 -0.870934 -0.12303 - vertex 0.195372 -0.920944 -0.123039 - endloop - endfacet - facet normal 0.569365 -0.82183 -0.0204614 - outer loop - vertex 0.195372 -0.920944 -0.123039 - vertex 0.267558 -0.870934 -0.12303 - vertex 0.269424 -0.872423 -0.0112786 - endloop - endfacet - facet normal 0.568532 -0.822426 -0.0196503 - outer loop - vertex 0.195372 -0.920944 -0.123039 - vertex 0.269424 -0.872423 -0.0112786 - vertex 0.197369 -0.922247 -0.0107065 - endloop - endfacet - facet normal 0.568772 -0.822422 0.0109735 - outer loop - vertex 0.197369 -0.922247 -0.0107065 - vertex 0.269424 -0.872423 -0.0112786 - vertex 0.269308 -0.871025 0.0995073 - endloop - endfacet - facet normal 0.567695 -0.823152 0.0120158 - outer loop - vertex 0.197369 -0.922247 -0.0107065 - vertex 0.269308 -0.871025 0.0995073 - vertex 0.197857 -0.920281 0.100889 - endloop - endfacet - facet normal 0.567302 -0.821185 0.0618331 - outer loop - vertex 0.197857 -0.920281 0.100889 - vertex 0.269308 -0.871025 0.0995073 - vertex 0.267972 -0.86432 0.20081 - endloop - endfacet - facet normal 0.562032 -0.824372 0.067316 - outer loop - vertex 0.197857 -0.920281 0.100889 - vertex 0.267972 -0.86432 0.20081 - vertex 0.198576 -0.911291 0.204991 - endloop - endfacet - facet normal 0.560226 -0.81407 0.153093 - outer loop - vertex 0.198576 -0.911291 0.204991 - vertex 0.267972 -0.86432 0.20081 - vertex 0.266183 -0.849885 0.284113 - endloop - endfacet - facet normal 0.551584 -0.817942 0.163483 - outer loop - vertex 0.198576 -0.911291 0.204991 - vertex 0.266183 -0.849885 0.284113 - vertex 0.201262 -0.891521 0.294843 - endloop - endfacet - facet normal 0.549389 -0.778322 0.303951 - outer loop - vertex 0.201262 -0.891521 0.294843 - vertex 0.266183 -0.849885 0.284113 - vertex 0.271691 -0.821389 0.347126 - endloop - endfacet - facet normal 0.532151 -0.779957 0.329367 - outer loop - vertex 0.201262 -0.891521 0.294843 - vertex 0.271691 -0.821389 0.347126 - vertex 0.209402 -0.856237 0.365244 - endloop - endfacet - facet normal 0.657109 -0.743161 -0.126172 - outer loop - vertex 0.248962 -0.849091 -0.446914 - vertex 0.312627 -0.792882 -0.446415 - vertex 0.322015 -0.80227 -0.342232 - endloop - endfacet - facet normal 0.656867 -0.743424 -0.125886 - outer loop - vertex 0.248962 -0.849091 -0.446914 - vertex 0.322015 -0.80227 -0.342232 - vertex 0.257436 -0.859273 -0.342564 - endloop - endfacet - facet normal 0.659469 -0.746594 -0.0877318 - outer loop - vertex 0.257436 -0.859273 -0.342564 - vertex 0.322015 -0.80227 -0.342232 - vertex 0.328777 -0.809032 -0.233855 - endloop - endfacet - facet normal 0.659278 -0.746789 -0.0875162 - outer loop - vertex 0.257436 -0.859273 -0.342564 - vertex 0.328777 -0.809032 -0.233855 - vertex 0.263598 -0.866552 -0.234031 - endloop - endfacet - facet normal 0.660823 -0.748644 -0.0533397 - outer loop - vertex 0.263598 -0.866552 -0.234031 - vertex 0.328777 -0.809032 -0.233855 - vertex 0.33297 -0.813226 -0.123039 - endloop - endfacet - facet normal 0.660623 -0.748836 -0.053123 - outer loop - vertex 0.263598 -0.866552 -0.234031 - vertex 0.33297 -0.813226 -0.123039 - vertex 0.267558 -0.870934 -0.12303 - endloop - endfacet - facet normal 0.66141 -0.749722 -0.0212866 - outer loop - vertex 0.267558 -0.870934 -0.12303 - vertex 0.33297 -0.813226 -0.123039 - vertex 0.334652 -0.814908 -0.0115394 - endloop - endfacet - facet normal 0.661175 -0.749937 -0.0210371 - outer loop - vertex 0.267558 -0.870934 -0.12303 - vertex 0.334652 -0.814908 -0.0115394 - vertex 0.269424 -0.872423 -0.0112786 - endloop - endfacet - facet normal 0.661358 -0.750005 0.00988015 - outer loop - vertex 0.269424 -0.872423 -0.0112786 - vertex 0.334652 -0.814908 -0.0115394 - vertex 0.333879 -0.814135 0.0988907 - endloop - endfacet - facet normal 0.66109 -0.750238 0.0101604 - outer loop - vertex 0.269424 -0.872423 -0.0112786 - vertex 0.333879 -0.814135 0.0988907 - vertex 0.269308 -0.871025 0.0995073 - endloop - endfacet - facet normal 0.660314 -0.748855 0.0565841 - outer loop - vertex 0.269308 -0.871025 0.0995073 - vertex 0.333879 -0.814135 0.0988907 - vertex 0.329878 -0.810133 0.198536 - endloop - endfacet - facet normal 0.658724 -0.75012 0.0583344 - outer loop - vertex 0.269308 -0.871025 0.0995073 - vertex 0.329878 -0.810133 0.198536 - vertex 0.267972 -0.86432 0.20081 - endloop - endfacet - facet normal 0.65496 -0.742338 0.141286 - outer loop - vertex 0.267972 -0.86432 0.20081 - vertex 0.329878 -0.810133 0.198536 - vertex 0.321875 -0.802131 0.277683 - endloop - endfacet - facet normal 0.653715 -0.743143 0.142811 - outer loop - vertex 0.267972 -0.86432 0.20081 - vertex 0.321875 -0.802131 0.277683 - vertex 0.266183 -0.849885 0.284113 - endloop - endfacet - facet normal 0.644468 -0.715155 0.270582 - outer loop - vertex 0.266183 -0.849885 0.284113 - vertex 0.321875 -0.802131 0.277683 - vertex 0.312305 -0.79256 0.325773 - endloop - endfacet - facet normal 0.647131 -0.714299 0.266456 - outer loop - vertex 0.266183 -0.849885 0.284113 - vertex 0.312305 -0.79256 0.325773 - vertex 0.271691 -0.821389 0.347126 - endloop - endfacet - facet normal -0.0419438 -0.992289 -0.11663 - outer loop - vertex -0.327179 -1.03302 -0.457381 - vertex -0.327179 -1.04569 -0.349542 - vertex -0.418271 -1.04188 -0.34921 - endloop - endfacet - facet normal -0.0422546 -0.992246 -0.116889 - outer loop - vertex -0.327179 -1.03302 -0.457381 - vertex -0.418271 -1.04188 -0.34921 - vertex -0.416941 -1.02926 -0.456883 - endloop - endfacet - facet normal -0.125965 -0.985101 -0.117084 - outer loop - vertex -0.416941 -1.02926 -0.456883 - vertex -0.418271 -1.04188 -0.34921 - vertex -0.508415 -1.03046 -0.348379 - endloop - endfacet - facet normal -0.126752 -0.984921 -0.117745 - outer loop - vertex -0.416941 -1.02926 -0.456883 - vertex -0.508415 -1.03046 -0.348379 - vertex -0.505772 -1.01797 -0.455637 - endloop - endfacet - facet normal -0.210893 -0.970346 -0.118123 - outer loop - vertex -0.505772 -1.01797 -0.455637 - vertex -0.508415 -1.03046 -0.348379 - vertex -0.596666 -1.01142 -0.347216 - endloop - endfacet - facet normal -0.211992 -0.969991 -0.119066 - outer loop - vertex -0.505772 -1.01797 -0.455637 - vertex -0.596666 -1.01142 -0.347216 - vertex -0.592738 -0.999181 -0.453892 - endloop - endfacet - facet normal -0.297354 -0.947247 -0.119601 - outer loop - vertex -0.592738 -0.999181 -0.453892 - vertex -0.596666 -1.01142 -0.347216 - vertex -0.682077 -0.984773 -0.345887 - endloop - endfacet - facet normal -0.298599 -0.946715 -0.120702 - outer loop - vertex -0.592738 -0.999181 -0.453892 - vertex -0.682077 -0.984773 -0.345887 - vertex -0.676908 -0.972887 -0.451898 - endloop - endfacet - facet normal -0.385678 -0.914619 -0.121348 - outer loop - vertex -0.676908 -0.972887 -0.451898 - vertex -0.682077 -0.984773 -0.345887 - vertex -0.763699 -0.950531 -0.344558 - endloop - endfacet - facet normal -0.386896 -0.913954 -0.122472 - outer loop - vertex -0.676908 -0.972887 -0.451898 - vertex -0.763699 -0.950531 -0.344558 - vertex -0.75735 -0.939102 -0.449905 - endloop - endfacet - facet normal -0.475738 -0.870922 -0.123158 - outer loop - vertex -0.75735 -0.939102 -0.449905 - vertex -0.763699 -0.950531 -0.344558 - vertex -0.840587 -0.908695 -0.343395 - endloop - endfacet - facet normal -0.476759 -0.870222 -0.124156 - outer loop - vertex -0.75735 -0.939102 -0.449905 - vertex -0.840587 -0.908695 -0.343395 - vertex -0.833131 -0.897833 -0.44816 - endloop - endfacet - facet normal -0.566714 -0.814413 -0.124771 - outer loop - vertex -0.833131 -0.897833 -0.44816 - vertex -0.840587 -0.908695 -0.343395 - vertex -0.911794 -0.859273 -0.342564 - endloop - endfacet - facet normal -0.567392 -0.813829 -0.12549 - outer loop - vertex -0.833131 -0.897833 -0.44816 - vertex -0.911794 -0.859273 -0.342564 - vertex -0.90332 -0.84909 -0.446914 - endloop - endfacet - facet normal -0.656867 -0.743424 -0.125886 - outer loop - vertex -0.90332 -0.84909 -0.446914 - vertex -0.911794 -0.859273 -0.342564 - vertex -0.976373 -0.802269 -0.342232 - endloop - endfacet - facet normal -0.657109 -0.743161 -0.126173 - outer loop - vertex -0.90332 -0.84909 -0.446914 - vertex -0.976373 -0.802269 -0.342232 - vertex -0.966985 -0.792882 -0.446415 - endloop - endfacet - facet normal -0.0417492 -0.995958 -0.0795333 - outer loop - vertex -0.327179 -1.04569 -0.349542 - vertex -0.327179 -1.0546 -0.238072 - vertex -0.419288 -1.05075 -0.237864 - endloop - endfacet - facet normal -0.0419616 -0.995935 -0.0797075 - outer loop - vertex -0.327179 -1.04569 -0.349542 - vertex -0.419288 -1.05075 -0.237864 - vertex -0.418271 -1.04188 -0.34921 - endloop - endfacet - facet normal -0.125509 -0.988869 -0.0799082 - outer loop - vertex -0.418271 -1.04188 -0.34921 - vertex -0.419288 -1.05075 -0.237864 - vertex -0.510432 -1.03923 -0.237353 - endloop - endfacet - facet normal -0.126091 -0.988756 -0.0803903 - outer loop - vertex -0.418271 -1.04188 -0.34921 - vertex -0.510432 -1.03923 -0.237353 - vertex -0.508415 -1.03046 -0.348379 - endloop - endfacet - facet normal -0.210349 -0.974283 -0.0807777 - outer loop - vertex -0.508415 -1.03046 -0.348379 - vertex -0.510432 -1.03923 -0.237353 - vertex -0.599646 -1.02002 -0.23665 - endloop - endfacet - facet normal -0.211207 -0.974038 -0.0815007 - outer loop - vertex -0.508415 -1.03046 -0.348379 - vertex -0.599646 -1.02002 -0.23665 - vertex -0.596666 -1.01142 -0.347216 - endloop - endfacet - facet normal -0.296931 -0.951368 -0.0820463 - outer loop - vertex -0.596666 -1.01142 -0.347216 - vertex -0.599646 -1.02002 -0.23665 - vertex -0.685964 -0.993149 -0.235868 - endloop - endfacet - facet normal -0.297946 -0.950974 -0.0829249 - outer loop - vertex -0.596666 -1.01142 -0.347216 - vertex -0.685964 -0.993149 -0.235868 - vertex -0.682077 -0.984773 -0.345887 - endloop - endfacet - facet normal -0.385623 -0.918863 -0.0835781 - outer loop - vertex -0.682077 -0.984773 -0.345887 - vertex -0.685964 -0.993149 -0.235868 - vertex -0.768421 -0.958612 -0.235117 - endloop - endfacet - facet normal -0.386643 -0.918351 -0.0844943 - outer loop - vertex -0.682077 -0.984773 -0.345887 - vertex -0.768421 -0.958612 -0.235117 - vertex -0.763699 -0.950531 -0.344558 - endloop - endfacet - facet normal -0.476318 -0.875138 -0.0851726 - outer loop - vertex -0.763699 -0.950531 -0.344558 - vertex -0.768421 -0.958612 -0.235117 - vertex -0.846068 -0.916412 -0.234478 - endloop - endfacet - facet normal -0.477173 -0.874593 -0.0859817 - outer loop - vertex -0.763699 -0.950531 -0.344558 - vertex -0.846068 -0.916412 -0.234478 - vertex -0.840587 -0.908695 -0.343395 - endloop - endfacet - facet normal -0.568145 -0.818362 -0.0865755 - outer loop - vertex -0.840587 -0.908695 -0.343395 - vertex -0.846068 -0.916412 -0.234478 - vertex -0.917956 -0.866552 -0.234031 - endloop - endfacet - facet normal -0.568704 -0.817913 -0.0871437 - outer loop - vertex -0.840587 -0.908695 -0.343395 - vertex -0.917956 -0.866552 -0.234031 - vertex -0.911794 -0.859273 -0.342564 - endloop - endfacet - facet normal -0.659278 -0.746789 -0.087516 - outer loop - vertex -0.911794 -0.859273 -0.342564 - vertex -0.917956 -0.866552 -0.234031 - vertex -0.983135 -0.809032 -0.233855 - endloop - endfacet - facet normal -0.659469 -0.746594 -0.0877318 - outer loop - vertex -0.911794 -0.859273 -0.342564 - vertex -0.983135 -0.809032 -0.233855 - vertex -0.976373 -0.802269 -0.342232 - endloop - endfacet - facet normal -0.041561 -0.998183 -0.043635 - outer loop - vertex -0.327179 -1.0546 -0.238072 - vertex -0.327179 -1.05957 -0.124242 - vertex -0.420062 -1.05571 -0.124123 - endloop - endfacet - facet normal -0.0417608 -0.998167 -0.0437977 - outer loop - vertex -0.327179 -1.0546 -0.238072 - vertex -0.420062 -1.05571 -0.124123 - vertex -0.419288 -1.05075 -0.237864 - endloop - endfacet - facet normal -0.124974 -0.991181 -0.0440594 - outer loop - vertex -0.419288 -1.05075 -0.237864 - vertex -0.420062 -1.05571 -0.124123 - vertex -0.51195 -1.04414 -0.123858 - endloop - endfacet - facet normal -0.12559 -0.991081 -0.0445664 - outer loop - vertex -0.419288 -1.05075 -0.237864 - vertex -0.51195 -1.04414 -0.123858 - vertex -0.510432 -1.03923 -0.237353 - endloop - endfacet - facet normal -0.209571 -0.976754 -0.0450699 - outer loop - vertex -0.510432 -1.03923 -0.237353 - vertex -0.51195 -1.04414 -0.123858 - vertex -0.60185 -1.02486 -0.123539 - endloop - endfacet - facet normal -0.210553 -0.976505 -0.0458901 - outer loop - vertex -0.510432 -1.03923 -0.237353 - vertex -0.60185 -1.02486 -0.123539 - vertex -0.599646 -1.02002 -0.23665 - endloop - endfacet - facet normal -0.296094 -0.954022 -0.0465947 - outer loop - vertex -0.599646 -1.02002 -0.23665 - vertex -0.60185 -1.02486 -0.123539 - vertex -0.688765 -0.997901 -0.123256 - endloop - endfacet - facet normal -0.297311 -0.953592 -0.0476349 - outer loop - vertex -0.599646 -1.02002 -0.23665 - vertex -0.688765 -0.997901 -0.123256 - vertex -0.685964 -0.993149 -0.235868 - endloop - endfacet - facet normal -0.384997 -0.921644 -0.0484682 - outer loop - vertex -0.685964 -0.993149 -0.235868 - vertex -0.688765 -0.997901 -0.123256 - vertex -0.771703 -0.963264 -0.123102 - endloop - endfacet - facet normal -0.386237 -0.921067 -0.0495639 - outer loop - vertex -0.685964 -0.993149 -0.235868 - vertex -0.771703 -0.963264 -0.123102 - vertex -0.768421 -0.958612 -0.235117 - endloop - endfacet - facet normal -0.476189 -0.877897 -0.0504062 - outer loop - vertex -0.768421 -0.958612 -0.235117 - vertex -0.771703 -0.963264 -0.123102 - vertex -0.84973 -0.920943 -0.123039 - endloop - endfacet - facet normal -0.477208 -0.877289 -0.0513495 - outer loop - vertex -0.768421 -0.958612 -0.235117 - vertex -0.84973 -0.920943 -0.123039 - vertex -0.846068 -0.916412 -0.234478 - endloop - endfacet - facet normal -0.568715 -0.820885 -0.0520628 - outer loop - vertex -0.846068 -0.916412 -0.234478 - vertex -0.84973 -0.920943 -0.123039 - vertex -0.921916 -0.870933 -0.12303 - endloop - endfacet - facet normal -0.569351 -0.820404 -0.0526922 - outer loop - vertex -0.846068 -0.916412 -0.234478 - vertex -0.921916 -0.870933 -0.12303 - vertex -0.917956 -0.866552 -0.234031 - endloop - endfacet - facet normal -0.660624 -0.748835 -0.0531232 - outer loop - vertex -0.917956 -0.866552 -0.234031 - vertex -0.921916 -0.870933 -0.12303 - vertex -0.987329 -0.813225 -0.123039 - endloop - endfacet - facet normal -0.660823 -0.748644 -0.0533389 - outer loop - vertex -0.917956 -0.866552 -0.234031 - vertex -0.987329 -0.813225 -0.123039 - vertex -0.983135 -0.809032 -0.233855 - endloop - endfacet - facet normal -0.0412997 -0.999116 -0.00781459 - outer loop - vertex -0.327179 -1.05957 -0.124242 - vertex -0.327179 -1.06047 -0.0093227 - vertex -0.42066 -1.05661 -0.00926336 - endloop - endfacet - facet normal -0.0415538 -0.999104 -0.0080215 - outer loop - vertex -0.327179 -1.05957 -0.124242 - vertex -0.42066 -1.05661 -0.00926336 - vertex -0.420062 -1.05571 -0.124123 - endloop - endfacet - facet normal -0.12414 -0.992229 -0.00839797 - outer loop - vertex -0.420062 -1.05571 -0.124123 - vertex -0.42066 -1.05661 -0.00926336 - vertex -0.513099 -1.04504 -0.00919506 - endloop - endfacet - facet normal -0.124991 -0.992116 -0.00909693 - outer loop - vertex -0.420062 -1.05571 -0.124123 - vertex -0.513099 -1.04504 -0.00919506 - vertex -0.51195 -1.04414 -0.123858 - endloop - endfacet - facet normal -0.208256 -0.978025 -0.00981936 - outer loop - vertex -0.51195 -1.04414 -0.123858 - vertex -0.513099 -1.04504 -0.00919506 - vertex -0.603452 -1.0258 -0.00922752 - endloop - endfacet - facet normal -0.209655 -0.977714 -0.0109858 - outer loop - vertex -0.51195 -1.04414 -0.123858 - vertex -0.603452 -1.0258 -0.00922752 - vertex -0.60185 -1.02486 -0.123539 - endloop - endfacet - facet normal -0.294536 -0.955565 -0.011993 - outer loop - vertex -0.60185 -1.02486 -0.123539 - vertex -0.603452 -1.0258 -0.00922752 - vertex -0.690676 -0.998915 -0.00947047 - endloop - endfacet - facet normal -0.296291 -0.955003 -0.0134877 - outer loop - vertex -0.60185 -1.02486 -0.123539 - vertex -0.690676 -0.998915 -0.00947047 - vertex -0.688765 -0.997901 -0.123256 - endloop - endfacet - facet normal -0.383595 -0.923385 -0.0146722 - outer loop - vertex -0.688765 -0.997901 -0.123256 - vertex -0.690676 -0.998915 -0.00947047 - vertex -0.77373 -0.964404 -0.0100336 - endloop - endfacet - facet normal -0.385348 -0.922629 -0.0162116 - outer loop - vertex -0.688765 -0.997901 -0.123256 - vertex -0.77373 -0.964404 -0.0100336 - vertex -0.771703 -0.963264 -0.123102 - endloop - endfacet - facet normal -0.475295 -0.879655 -0.0173912 - outer loop - vertex -0.771703 -0.963264 -0.123102 - vertex -0.77373 -0.964404 -0.0100336 - vertex -0.851727 -0.922247 -0.0107065 - endloop - endfacet - facet normal -0.476693 -0.878872 -0.0186722 - outer loop - vertex -0.771703 -0.963264 -0.123102 - vertex -0.851727 -0.922247 -0.0107065 - vertex -0.84973 -0.920943 -0.123039 - endloop - endfacet - facet normal -0.568532 -0.822426 -0.0196503 - outer loop - vertex -0.84973 -0.920943 -0.123039 - vertex -0.851727 -0.922247 -0.0107065 - vertex -0.923783 -0.872422 -0.0112786 - endloop - endfacet - facet normal -0.569366 -0.82183 -0.0204614 - outer loop - vertex -0.84973 -0.920943 -0.123039 - vertex -0.923783 -0.872422 -0.0112786 - vertex -0.921916 -0.870933 -0.12303 - endloop - endfacet - facet normal -0.661176 -0.749936 -0.0210372 - outer loop - vertex -0.921916 -0.870933 -0.12303 - vertex -0.923783 -0.872422 -0.0112786 - vertex -0.989011 -0.814907 -0.0115394 - endloop - endfacet - facet normal -0.661411 -0.749722 -0.0212866 - outer loop - vertex -0.921916 -0.870933 -0.12303 - vertex -0.989011 -0.814907 -0.0115394 - vertex -0.987329 -0.813225 -0.123039 - endloop - endfacet - facet normal -0.0408905 -0.998743 0.0289919 - outer loop - vertex -0.327179 -1.06047 -0.0093227 - vertex -0.327179 -1.05714 0.105413 - vertex -0.421151 -1.05329 0.105437 - endloop - endfacet - facet normal -0.0412608 -0.998736 0.0286882 - outer loop - vertex -0.327179 -1.06047 -0.0093227 - vertex -0.421151 -1.05329 0.105437 - vertex -0.42066 -1.05661 -0.00926336 - endloop - endfacet - facet normal -0.122824 -0.992029 0.0281454 - outer loop - vertex -0.42066 -1.05661 -0.00926336 - vertex -0.421151 -1.05329 0.105437 - vertex -0.514005 -1.0418 0.105336 - endloop - endfacet - facet normal -0.124073 -0.991903 0.027112 - outer loop - vertex -0.42066 -1.05661 -0.00926336 - vertex -0.514005 -1.0418 0.105336 - vertex -0.513099 -1.04504 -0.00919506 - endloop - endfacet - facet normal -0.206163 -0.97817 0.0260731 - outer loop - vertex -0.513099 -1.04504 -0.00919506 - vertex -0.514005 -1.0418 0.105336 - vertex -0.604625 -1.02271 0.104939 - endloop - endfacet - facet normal -0.208216 -0.97778 0.02435 - outer loop - vertex -0.513099 -1.04504 -0.00919506 - vertex -0.604625 -1.02271 0.104939 - vertex -0.603452 -1.0258 -0.00922752 - endloop - endfacet - facet normal -0.292032 -0.956134 0.0229021 - outer loop - vertex -0.603452 -1.0258 -0.00922752 - vertex -0.604625 -1.02271 0.104939 - vertex -0.691893 -0.996077 0.104073 - endloop - endfacet - facet normal -0.294577 -0.955403 0.0207239 - outer loop - vertex -0.603452 -1.0258 -0.00922752 - vertex -0.691893 -0.996077 0.104073 - vertex -0.690676 -0.998915 -0.00947047 - endloop - endfacet - facet normal -0.381303 -0.924254 0.0190164 - outer loop - vertex -0.690676 -0.998915 -0.00947047 - vertex -0.691893 -0.996077 0.104073 - vertex -0.77469 -0.961949 0.102567 - endloop - endfacet - facet normal -0.383764 -0.923278 0.0168491 - outer loop - vertex -0.690676 -0.998915 -0.00947047 - vertex -0.77469 -0.961949 0.102567 - vertex -0.77373 -0.964404 -0.0100336 - endloop - endfacet - facet normal -0.473631 -0.880593 0.0151523 - outer loop - vertex -0.77373 -0.964404 -0.0100336 - vertex -0.77469 -0.961949 0.102567 - vertex -0.852216 -0.920281 0.100889 - endloop - endfacet - facet normal -0.47553 -0.879598 0.0134128 - outer loop - vertex -0.77373 -0.964404 -0.0100336 - vertex -0.852216 -0.920281 0.100889 - vertex -0.851727 -0.922247 -0.0107065 - endloop - endfacet - facet normal -0.567695 -0.823151 0.012015 - outer loop - vertex -0.851727 -0.922247 -0.0107065 - vertex -0.852216 -0.920281 0.100889 - vertex -0.923666 -0.871025 0.0995073 - endloop - endfacet - facet normal -0.568772 -0.822422 0.0109732 - outer loop - vertex -0.851727 -0.922247 -0.0107065 - vertex -0.923666 -0.871025 0.0995073 - vertex -0.923783 -0.872422 -0.0112786 - endloop - endfacet - facet normal -0.66109 -0.750238 0.0101601 - outer loop - vertex -0.923783 -0.872422 -0.0112786 - vertex -0.923666 -0.871025 0.0995073 - vertex -0.988238 -0.814134 0.0988907 - endloop - endfacet - facet normal -0.661359 -0.750004 0.00987881 - outer loop - vertex -0.923783 -0.872422 -0.0112786 - vertex -0.988238 -0.814134 0.0988907 - vertex -0.989011 -0.814907 -0.0115394 - endloop - endfacet - facet normal -0.0398127 -0.99263 0.114457 - outer loop - vertex -0.327179 -1.05714 0.105413 - vertex -0.327179 -1.04468 0.213516 - vertex -0.421764 -1.04088 0.213522 - endloop - endfacet - facet normal -0.0406207 -0.992678 0.113757 - outer loop - vertex -0.327179 -1.05714 0.105413 - vertex -0.421764 -1.04088 0.213522 - vertex -0.421151 -1.05329 0.105437 - endloop - endfacet - facet normal -0.119603 -0.986417 0.11259 - outer loop - vertex -0.421151 -1.05329 0.105437 - vertex -0.421764 -1.04088 0.213522 - vertex -0.515157 -1.02959 0.213278 - endloop - endfacet - facet normal -0.122211 -0.986356 0.110303 - outer loop - vertex -0.421151 -1.05329 0.105437 - vertex -0.515157 -1.02959 0.213278 - vertex -0.514005 -1.0418 0.105336 - endloop - endfacet - facet normal -0.201067 -0.973604 0.108019 - outer loop - vertex -0.514005 -1.0418 0.105336 - vertex -0.515157 -1.02959 0.213278 - vertex -0.606168 -1.01087 0.212524 - endloop - endfacet - facet normal -0.20544 -0.973116 0.104118 - outer loop - vertex -0.514005 -1.0418 0.105336 - vertex -0.606168 -1.01087 0.212524 - vertex -0.604625 -1.02271 0.104939 - endloop - endfacet - facet normal -0.285595 -0.953039 0.100759 - outer loop - vertex -0.604625 -1.02271 0.104939 - vertex -0.606168 -1.01087 0.212524 - vertex -0.693605 -0.984833 0.210997 - endloop - endfacet - facet normal -0.291435 -0.951819 0.0954245 - outer loop - vertex -0.604625 -1.02271 0.104939 - vertex -0.693605 -0.984833 0.210997 - vertex -0.691893 -0.996077 0.104073 - endloop - endfacet - facet normal -0.374337 -0.922812 0.0910465 - outer loop - vertex -0.691893 -0.996077 0.104073 - vertex -0.693605 -0.984833 0.210997 - vertex -0.776276 -0.95155 0.208436 - endloop - endfacet - facet normal -0.381023 -0.920675 0.0847281 - outer loop - vertex -0.691893 -0.996077 0.104073 - vertex -0.776276 -0.95155 0.208436 - vertex -0.77469 -0.961949 0.102567 - endloop - endfacet - facet normal -0.46629 -0.881047 0.0795584 - outer loop - vertex -0.77469 -0.961949 0.102567 - vertex -0.776276 -0.95155 0.208436 - vertex -0.852934 -0.911291 0.204991 - endloop - endfacet - facet normal -0.473401 -0.877854 0.0725467 - outer loop - vertex -0.77469 -0.961949 0.102567 - vertex -0.852934 -0.911291 0.204991 - vertex -0.852216 -0.920281 0.100889 - endloop - endfacet - facet normal -0.562032 -0.824371 0.0673164 - outer loop - vertex -0.852216 -0.920281 0.100889 - vertex -0.852934 -0.911291 0.204991 - vertex -0.92233 -0.86432 0.20081 - endloop - endfacet - facet normal -0.567303 -0.821185 0.0618331 - outer loop - vertex -0.852216 -0.920281 0.100889 - vertex -0.92233 -0.86432 0.20081 - vertex -0.923666 -0.871025 0.0995073 - endloop - endfacet - facet normal -0.658726 -0.750118 0.0583344 - outer loop - vertex -0.923666 -0.871025 0.0995073 - vertex -0.92233 -0.86432 0.20081 - vertex -0.984236 -0.810133 0.198536 - endloop - endfacet - facet normal -0.660314 -0.748855 0.0565854 - outer loop - vertex -0.923666 -0.871025 0.0995073 - vertex -0.984236 -0.810133 0.198536 - vertex -0.988238 -0.814134 0.0988907 - endloop - endfacet - facet normal -0.0370842 -0.962569 0.268489 - outer loop - vertex -0.327179 -1.04468 0.213516 - vertex -0.327179 -1.01817 0.308537 - vertex -0.422729 -1.01449 0.308537 - endloop - endfacet - facet normal -0.0386107 -0.962906 0.267061 - outer loop - vertex -0.327179 -1.04468 0.213516 - vertex -0.422729 -1.01449 0.308537 - vertex -0.421764 -1.04088 0.213522 - endloop - endfacet - facet normal -0.11179 -0.957776 0.264893 - outer loop - vertex -0.421764 -1.04088 0.213522 - vertex -0.422729 -1.01449 0.308537 - vertex -0.517042 -1.00358 0.308176 - endloop - endfacet - facet normal -0.116607 -0.958457 0.260313 - outer loop - vertex -0.421764 -1.04088 0.213522 - vertex -0.517042 -1.00358 0.308176 - vertex -0.515157 -1.02959 0.213278 - endloop - endfacet - facet normal -0.188829 -0.948047 0.256026 - outer loop - vertex -0.515157 -1.02959 0.213278 - vertex -0.517042 -1.00358 0.308176 - vertex -0.608879 -0.985583 0.307092 - endloop - endfacet - facet normal -0.197067 -0.948502 0.24801 - outer loop - vertex -0.515157 -1.02959 0.213278 - vertex -0.608879 -0.985583 0.307092 - vertex -0.606168 -1.01087 0.212524 - endloop - endfacet - facet normal -0.269888 -0.932105 0.241537 - outer loop - vertex -0.606168 -1.01087 0.212524 - vertex -0.608879 -0.985583 0.307092 - vertex -0.697004 -0.960629 0.304924 - endloop - endfacet - facet normal -0.281473 -0.931625 0.229887 - outer loop - vertex -0.606168 -1.01087 0.212524 - vertex -0.697004 -0.960629 0.304924 - vertex -0.693605 -0.984833 0.210997 - endloop - endfacet - facet normal -0.356398 -0.907812 0.221039 - outer loop - vertex -0.693605 -0.984833 0.210997 - vertex -0.697004 -0.960629 0.304924 - vertex -0.78018 -0.928855 0.30131 - endloop - endfacet - facet normal -0.370952 -0.905583 0.205706 - outer loop - vertex -0.693605 -0.984833 0.210997 - vertex -0.78018 -0.928855 0.30131 - vertex -0.776276 -0.95155 0.208436 - endloop - endfacet - facet normal -0.448417 -0.872439 0.194351 - outer loop - vertex -0.776276 -0.95155 0.208436 - vertex -0.78018 -0.928855 0.30131 - vertex -0.855621 -0.89152 0.294843 - endloop - endfacet - facet normal -0.463839 -0.868032 0.177127 - outer loop - vertex -0.776276 -0.95155 0.208436 - vertex -0.855621 -0.89152 0.294843 - vertex -0.852934 -0.911291 0.204991 - endloop - endfacet - facet normal -0.551584 -0.817942 0.163482 - outer loop - vertex -0.852934 -0.911291 0.204991 - vertex -0.855621 -0.89152 0.294843 - vertex -0.920542 -0.849885 0.284113 - endloop - endfacet - facet normal -0.560226 -0.814069 0.153093 - outer loop - vertex -0.852934 -0.911291 0.204991 - vertex -0.920542 -0.849885 0.284113 - vertex -0.92233 -0.86432 0.20081 - endloop - endfacet - facet normal -0.653716 -0.743143 0.14281 - outer loop - vertex -0.92233 -0.86432 0.20081 - vertex -0.920542 -0.849885 0.284113 - vertex -0.976234 -0.80213 0.277683 - endloop - endfacet - facet normal -0.654961 -0.742337 0.141285 - outer loop - vertex -0.92233 -0.86432 0.20081 - vertex -0.976234 -0.80213 0.277683 - vertex -0.984236 -0.810133 0.198536 - endloop - endfacet - facet normal -0.0307602 -0.856314 0.515538 - outer loop - vertex -0.327179 -1.01817 0.308537 - vertex -0.327179 -0.972723 0.384027 - vertex -0.424276 -0.969235 0.384027 - endloop - endfacet - facet normal -0.033037 -0.857519 0.513391 - outer loop - vertex -0.327179 -1.01817 0.308537 - vertex -0.424276 -0.969235 0.384027 - vertex -0.422729 -1.01449 0.308537 - endloop - endfacet - facet normal -0.0939386 -0.854744 0.510479 - outer loop - vertex -0.422729 -1.01449 0.308537 - vertex -0.424276 -0.969235 0.384027 - vertex -0.520145 -0.958971 0.383572 - endloop - endfacet - facet normal -0.101168 -0.858035 0.503528 - outer loop - vertex -0.422729 -1.01449 0.308537 - vertex -0.520145 -0.958971 0.383572 - vertex -0.517042 -1.00358 0.308176 - endloop - endfacet - facet normal -0.16094 -0.852301 0.497676 - outer loop - vertex -0.517042 -1.00358 0.308176 - vertex -0.520145 -0.958971 0.383572 - vertex -0.613557 -0.942129 0.382207 - endloop - endfacet - facet normal -0.173705 -0.857086 0.485006 - outer loop - vertex -0.517042 -1.00358 0.308176 - vertex -0.613557 -0.942129 0.382207 - vertex -0.608879 -0.985583 0.307092 - endloop - endfacet - facet normal -0.23389 -0.847828 0.475902 - outer loop - vertex -0.608879 -0.985583 0.307092 - vertex -0.613557 -0.942129 0.382207 - vertex -0.703282 -0.918909 0.379476 - endloop - endfacet - facet normal -0.252831 -0.853222 0.456167 - outer loop - vertex -0.608879 -0.985583 0.307092 - vertex -0.703282 -0.918909 0.379476 - vertex -0.697004 -0.960629 0.304924 - endloop - endfacet - facet normal -0.314731 -0.839358 0.443196 - outer loop - vertex -0.697004 -0.960629 0.304924 - vertex -0.703282 -0.918909 0.379476 - vertex -0.788094 -0.889511 0.374925 - endloop - endfacet - facet normal -0.340423 -0.843993 0.414473 - outer loop - vertex -0.697004 -0.960629 0.304924 - vertex -0.788094 -0.889511 0.374925 - vertex -0.78018 -0.928855 0.30131 - endloop - endfacet - facet normal -0.411709 -0.821391 0.39473 - outer loop - vertex -0.78018 -0.928855 0.30131 - vertex -0.788094 -0.889511 0.374925 - vertex -0.863761 -0.856237 0.365244 - endloop - endfacet - facet normal -0.438232 -0.822864 0.361729 - outer loop - vertex -0.78018 -0.928855 0.30131 - vertex -0.863761 -0.856237 0.365244 - vertex -0.855621 -0.89152 0.294843 - endloop - endfacet - facet normal -0.532152 -0.779957 0.329366 - outer loop - vertex -0.855621 -0.89152 0.294843 - vertex -0.863761 -0.856237 0.365244 - vertex -0.926049 -0.821389 0.347126 - endloop - endfacet - facet normal -0.54939 -0.778321 0.303952 - outer loop - vertex -0.855621 -0.89152 0.294843 - vertex -0.926049 -0.821389 0.347126 - vertex -0.920542 -0.849885 0.284113 - endloop - endfacet - facet normal -0.647133 -0.714297 0.266455 - outer loop - vertex -0.920542 -0.849885 0.284113 - vertex -0.926049 -0.821389 0.347126 - vertex -0.966663 -0.79256 0.325773 - endloop - endfacet - facet normal -0.644469 -0.715154 0.270584 - outer loop - vertex -0.920542 -0.849885 0.284113 - vertex -0.966663 -0.79256 0.325773 - vertex -0.976234 -0.80213 0.277683 - endloop - endfacet - facet normal -0.042245 -0.986749 -0.15666 - outer loop - vertex -0.327179 -1.03302 -0.457381 - vertex -0.416941 -1.02926 -0.456883 - vertex -0.415232 -1.01302 -0.559605 - endloop - endfacet - facet normal -0.0427593 -0.986795 -0.156226 - outer loop - vertex -0.327179 -1.03302 -0.457381 - vertex -0.415232 -1.01302 -0.559605 - vertex -0.327179 -1.01672 -0.560317 - endloop - endfacet - facet normal -0.0427772 -0.977991 -0.204217 - outer loop - vertex -0.327179 -1.01672 -0.560317 - vertex -0.415232 -1.01302 -0.559605 - vertex -0.413286 -0.992745 -0.657112 - endloop - endfacet - facet normal -0.0434619 -0.978083 -0.203631 - outer loop - vertex -0.327179 -1.01672 -0.560317 - vertex -0.413286 -0.992745 -0.657112 - vertex -0.327179 -0.996371 -0.658075 - endloop - endfacet - facet normal -0.0435256 -0.964533 -0.260348 - outer loop - vertex -0.327179 -0.996371 -0.658075 - vertex -0.413286 -0.992745 -0.657112 - vertex -0.411245 -0.967997 -0.74914 - endloop - endfacet - facet normal -0.0443402 -0.964686 -0.259644 - outer loop - vertex -0.327179 -0.996371 -0.658075 - vertex -0.411245 -0.967997 -0.74914 - vertex -0.327179 -0.971527 -0.750381 - endloop - endfacet - facet normal -0.0444647 -0.944459 -0.325608 - outer loop - vertex -0.327179 -0.971527 -0.750381 - vertex -0.411245 -0.967997 -0.74914 - vertex -0.409251 -0.938344 -0.835423 - endloop - endfacet - facet normal -0.0453633 -0.944684 -0.324829 - outer loop - vertex -0.327179 -0.971527 -0.750381 - vertex -0.409251 -0.938344 -0.835423 - vertex -0.327179 -0.941757 -0.836959 - endloop - endfacet - facet normal -0.0455517 -0.915375 -0.400017 - outer loop - vertex -0.327179 -0.941757 -0.836959 - vertex -0.409251 -0.938344 -0.835423 - vertex -0.407447 -0.903354 -0.915698 - endloop - endfacet - facet normal -0.0464689 -0.915674 -0.399228 - outer loop - vertex -0.327179 -0.941757 -0.836959 - vertex -0.407447 -0.903354 -0.915698 - vertex -0.327179 -0.906626 -0.917536 - endloop - endfacet - facet normal -0.0467032 -0.874574 -0.482638 - outer loop - vertex -0.327179 -0.906626 -0.917536 - vertex -0.407447 -0.903354 -0.915698 - vertex -0.405975 -0.862594 -0.9897 - endloop - endfacet - facet normal -0.0475442 -0.874919 -0.48193 - outer loop - vertex -0.327179 -0.906626 -0.917536 - vertex -0.405975 -0.862594 -0.9897 - vertex -0.327179 -0.865699 -0.991836 - endloop - endfacet - facet normal -0.0477773 -0.819466 -0.571133 - outer loop - vertex -0.327179 -0.865699 -0.991836 - vertex -0.405975 -0.862594 -0.9897 - vertex -0.404978 -0.815633 -1.05716 - endloop - endfacet - facet normal -0.0484143 -0.819786 -0.570619 - outer loop - vertex -0.327179 -0.865699 -0.991836 - vertex -0.404978 -0.815633 -1.05716 - vertex -0.327179 -0.818542 -1.05958 - endloop - endfacet - facet normal -0.0485719 -0.748372 -0.661498 - outer loop - vertex -0.327179 -0.818542 -1.05958 - vertex -0.404978 -0.815633 -1.05716 - vertex -0.404599 -0.762037 -1.11783 - endloop - endfacet - facet normal -0.048843 -0.748534 -0.661295 - outer loop - vertex -0.327179 -0.818542 -1.05958 - vertex -0.404599 -0.762037 -1.11783 - vertex -0.327179 -0.764719 -1.12051 - endloop - endfacet - facet normal -0.126601 -0.979289 -0.158005 - outer loop - vertex -0.416941 -1.02926 -0.456883 - vertex -0.505772 -1.01797 -0.455637 - vertex -0.502373 -1.00192 -0.557825 - endloop - endfacet - facet normal -0.127901 -0.979296 -0.156907 - outer loop - vertex -0.416941 -1.02926 -0.456883 - vertex -0.502373 -1.00192 -0.557825 - vertex -0.415232 -1.01302 -0.559605 - endloop - endfacet - facet normal -0.127745 -0.970234 -0.205738 - outer loop - vertex -0.415232 -1.01302 -0.559605 - vertex -0.502373 -1.00192 -0.557825 - vertex -0.498491 -0.981895 -0.654694 - endloop - endfacet - facet normal -0.129361 -0.970313 -0.204349 - outer loop - vertex -0.415232 -1.01302 -0.559605 - vertex -0.498491 -0.981895 -0.654694 - vertex -0.413286 -0.992745 -0.657112 - endloop - endfacet - facet normal -0.129225 -0.956462 -0.261689 - outer loop - vertex -0.413286 -0.992745 -0.657112 - vertex -0.498491 -0.981895 -0.654694 - vertex -0.494398 -0.957469 -0.745993 - endloop - endfacet - facet normal -0.130972 -0.95664 -0.260166 - outer loop - vertex -0.413286 -0.992745 -0.657112 - vertex -0.494398 -0.957469 -0.745993 - vertex -0.411245 -0.967997 -0.74914 - endloop - endfacet - facet normal -0.130881 -0.936134 -0.326378 - outer loop - vertex -0.411245 -0.967997 -0.74914 - vertex -0.494398 -0.957469 -0.745993 - vertex -0.490366 -0.92823 -0.831472 - endloop - endfacet - facet normal -0.132581 -0.936416 -0.324881 - outer loop - vertex -0.411245 -0.967997 -0.74914 - vertex -0.490366 -0.92823 -0.831472 - vertex -0.409251 -0.938344 -0.835423 - endloop - endfacet - facet normal -0.132558 -0.906962 -0.399811 - outer loop - vertex -0.409251 -0.938344 -0.835423 - vertex -0.490366 -0.92823 -0.831472 - vertex -0.486667 -0.893765 -0.910881 - endloop - endfacet - facet normal -0.134048 -0.907322 -0.398495 - outer loop - vertex -0.409251 -0.938344 -0.835423 - vertex -0.486667 -0.893765 -0.910881 - vertex -0.407447 -0.903354 -0.915698 - endloop - endfacet - facet normal -0.13411 -0.866301 -0.481183 - outer loop - vertex -0.407447 -0.903354 -0.915698 - vertex -0.486667 -0.893765 -0.910881 - vertex -0.483618 -0.85363 -0.983989 - endloop - endfacet - facet normal -0.135376 -0.866719 -0.480075 - outer loop - vertex -0.407447 -0.903354 -0.915698 - vertex -0.483618 -0.85363 -0.983989 - vertex -0.405975 -0.862594 -0.9897 - endloop - endfacet - facet normal -0.135502 -0.811701 -0.568137 - outer loop - vertex -0.405975 -0.862594 -0.9897 - vertex -0.483618 -0.85363 -0.983989 - vertex -0.481536 -0.807382 -1.05056 - endloop - endfacet - facet normal -0.136457 -0.812111 -0.567323 - outer loop - vertex -0.405975 -0.862594 -0.9897 - vertex -0.481536 -0.807382 -1.05056 - vertex -0.404978 -0.815633 -1.05716 - endloop - endfacet - facet normal -0.136575 -0.741683 -0.656699 - outer loop - vertex -0.404978 -0.815633 -1.05716 - vertex -0.481536 -0.807382 -1.05056 - vertex -0.480736 -0.754577 -1.11037 - endloop - endfacet - facet normal -0.13701 -0.741915 -0.656347 - outer loop - vertex -0.404978 -0.815633 -1.05716 - vertex -0.480736 -0.754577 -1.11037 - vertex -0.404599 -0.762037 -1.11783 - endloop - endfacet - facet normal -0.211557 -0.96417 -0.16006 - outer loop - vertex -0.505772 -1.01797 -0.455637 - vertex -0.592738 -0.999181 -0.453892 - vertex -0.587687 -0.983449 -0.555333 - endloop - endfacet - facet normal -0.2134 -0.964023 -0.158495 - outer loop - vertex -0.505772 -1.01797 -0.455637 - vertex -0.587687 -0.983449 -0.555333 - vertex -0.502373 -1.00192 -0.557825 - endloop - endfacet - facet normal -0.212828 -0.95472 -0.207881 - outer loop - vertex -0.502373 -1.00192 -0.557825 - vertex -0.587687 -0.983449 -0.555333 - vertex -0.581891 -0.963848 -0.65129 - endloop - endfacet - facet normal -0.214989 -0.954641 -0.20601 - outer loop - vertex -0.502373 -1.00192 -0.557825 - vertex -0.581891 -0.963848 -0.65129 - vertex -0.498491 -0.981895 -0.654694 - endloop - endfacet - facet normal -0.214293 -0.940631 -0.263233 - outer loop - vertex -0.498491 -0.981895 -0.654694 - vertex -0.581891 -0.963848 -0.65129 - vertex -0.575725 -0.940003 -0.741516 - endloop - endfacet - facet normal -0.216405 -0.940667 -0.261372 - outer loop - vertex -0.498491 -0.981895 -0.654694 - vertex -0.575725 -0.940003 -0.741516 - vertex -0.494398 -0.957469 -0.745993 - endloop - endfacet - facet normal -0.215608 -0.920225 -0.326648 - outer loop - vertex -0.494398 -0.957469 -0.745993 - vertex -0.575725 -0.940003 -0.741516 - vertex -0.569566 -0.911541 -0.825763 - endloop - endfacet - facet normal -0.217376 -0.92037 -0.325065 - outer loop - vertex -0.494398 -0.957469 -0.745993 - vertex -0.569566 -0.911541 -0.825763 - vertex -0.490366 -0.92823 -0.831472 - endloop - endfacet - facet normal -0.216538 -0.891367 -0.398217 - outer loop - vertex -0.490366 -0.92823 -0.831472 - vertex -0.569566 -0.911541 -0.825763 - vertex -0.563791 -0.878088 -0.903784 - endloop - endfacet - facet normal -0.217775 -0.891565 -0.397098 - outer loop - vertex -0.490366 -0.92823 -0.831472 - vertex -0.563791 -0.878088 -0.903784 - vertex -0.486667 -0.893765 -0.910881 - endloop - endfacet - facet normal -0.217013 -0.851423 -0.477477 - outer loop - vertex -0.486667 -0.893765 -0.910881 - vertex -0.563791 -0.878088 -0.903784 - vertex -0.558954 -0.839159 -0.9754 - endloop - endfacet - facet normal -0.217937 -0.851657 -0.476639 - outer loop - vertex -0.486667 -0.893765 -0.910881 - vertex -0.558954 -0.839159 -0.9754 - vertex -0.483618 -0.85363 -0.983989 - endloop - endfacet - facet normal -0.217372 -0.798032 -0.562045 - outer loop - vertex -0.483618 -0.85363 -0.983989 - vertex -0.558954 -0.839159 -0.9754 - vertex -0.555609 -0.794266 -1.04044 - endloop - endfacet - facet normal -0.218088 -0.798288 -0.561403 - outer loop - vertex -0.483618 -0.85363 -0.983989 - vertex -0.555609 -0.794266 -1.04044 - vertex -0.481536 -0.807382 -1.05056 - endloop - endfacet - facet normal -0.217805 -0.729915 -0.647908 - outer loop - vertex -0.481536 -0.807382 -1.05056 - vertex -0.555609 -0.794266 -1.04044 - vertex -0.554309 -0.742924 -1.09871 - endloop - endfacet - facet normal -0.218198 -0.730102 -0.647565 - outer loop - vertex -0.481536 -0.807382 -1.05056 - vertex -0.554309 -0.742924 -1.09871 - vertex -0.480736 -0.754577 -1.11037 - endloop - endfacet - facet normal -0.297715 -0.940708 -0.162586 - outer loop - vertex -0.592738 -0.999181 -0.453892 - vertex -0.676908 -0.972887 -0.451898 - vertex -0.670263 -0.957606 -0.552484 - endloop - endfacet - facet normal -0.299842 -0.940346 -0.160761 - outer loop - vertex -0.592738 -0.999181 -0.453892 - vertex -0.670263 -0.957606 -0.552484 - vertex -0.587687 -0.983449 -0.555333 - endloop - endfacet - facet normal -0.298599 -0.930912 -0.210335 - outer loop - vertex -0.587687 -0.983449 -0.555333 - vertex -0.670263 -0.957606 -0.552484 - vertex -0.662584 -0.93863 -0.647371 - endloop - endfacet - facet normal -0.300948 -0.930618 -0.20828 - outer loop - vertex -0.587687 -0.983449 -0.555333 - vertex -0.662584 -0.93863 -0.647371 - vertex -0.581891 -0.963848 -0.65129 - endloop - endfacet - facet normal -0.299339 -0.916709 -0.264653 - outer loop - vertex -0.581891 -0.963848 -0.65129 - vertex -0.662584 -0.93863 -0.647371 - vertex -0.654314 -0.915661 -0.736286 - endloop - endfacet - facet normal -0.301388 -0.916564 -0.262825 - outer loop - vertex -0.581891 -0.963848 -0.65129 - vertex -0.654314 -0.915661 -0.736286 - vertex -0.575725 -0.940003 -0.741516 - endloop - endfacet - facet normal -0.299431 -0.896637 -0.326163 - outer loop - vertex -0.575725 -0.940003 -0.741516 - vertex -0.654314 -0.915661 -0.736286 - vertex -0.645895 -0.8884 -0.818954 - endloop - endfacet - facet normal -0.300814 -0.896631 -0.324906 - outer loop - vertex -0.575725 -0.940003 -0.741516 - vertex -0.645895 -0.8884 -0.818954 - vertex -0.569566 -0.911541 -0.825763 - endloop - endfacet - facet normal -0.298618 -0.868701 -0.395205 - outer loop - vertex -0.569566 -0.911541 -0.825763 - vertex -0.645895 -0.8884 -0.818954 - vertex -0.637772 -0.85655 -0.895101 - endloop - endfacet - facet normal -0.29923 -0.868747 -0.394639 - outer loop - vertex -0.569566 -0.911541 -0.825763 - vertex -0.637772 -0.85655 -0.895101 - vertex -0.563791 -0.878088 -0.903784 - endloop - endfacet - facet normal -0.297057 -0.830223 -0.471685 - outer loop - vertex -0.563791 -0.878088 -0.903784 - vertex -0.637772 -0.85655 -0.895101 - vertex -0.63083 -0.819531 -0.964632 - endloop - endfacet - facet normal -0.297354 -0.830275 -0.471407 - outer loop - vertex -0.563791 -0.878088 -0.903784 - vertex -0.63083 -0.819531 -0.964632 - vertex -0.558954 -0.839159 -0.9754 - endloop - endfacet - facet normal -0.295565 -0.778845 -0.55321 - outer loop - vertex -0.558954 -0.839159 -0.9754 - vertex -0.63083 -0.819531 -0.964632 - vertex -0.625955 -0.776762 -1.02745 - endloop - endfacet - facet normal -0.295889 -0.778939 -0.552905 - outer loop - vertex -0.558954 -0.839159 -0.9754 - vertex -0.625955 -0.776762 -1.02745 - vertex -0.555609 -0.794266 -1.04044 - endloop - endfacet - facet normal -0.29487 -0.713492 -0.635595 - outer loop - vertex -0.555609 -0.794266 -1.04044 - vertex -0.625955 -0.776762 -1.02745 - vertex -0.624035 -0.727665 -1.08345 - endloop - endfacet - facet normal -0.295197 -0.71363 -0.635288 - outer loop - vertex -0.555609 -0.794266 -1.04044 - vertex -0.624035 -0.727665 -1.08345 - vertex -0.554309 -0.742924 -1.09871 - endloop - endfacet - facet normal -0.385385 -0.907829 -0.165303 - outer loop - vertex -0.676908 -0.972887 -0.451898 - vertex -0.75735 -0.939102 -0.449905 - vertex -0.749186 -0.924408 -0.549636 - endloop - endfacet - facet normal -0.387524 -0.907256 -0.163437 - outer loop - vertex -0.676908 -0.972887 -0.451898 - vertex -0.749186 -0.924408 -0.549636 - vertex -0.670263 -0.957606 -0.552484 - endloop - endfacet - facet normal -0.385365 -0.89789 -0.212808 - outer loop - vertex -0.670263 -0.957606 -0.552484 - vertex -0.749186 -0.924408 -0.549636 - vertex -0.739667 -0.906268 -0.643408 - endloop - endfacet - facet normal -0.387588 -0.897399 -0.210834 - outer loop - vertex -0.670263 -0.957606 -0.552484 - vertex -0.739667 -0.906268 -0.643408 - vertex -0.662584 -0.93863 -0.647371 - endloop - endfacet - facet normal -0.384758 -0.88393 -0.265762 - outer loop - vertex -0.662584 -0.93863 -0.647371 - vertex -0.739667 -0.906268 -0.643408 - vertex -0.729251 -0.884504 -0.730878 - endloop - endfacet - facet normal -0.386466 -0.883648 -0.264216 - outer loop - vertex -0.662584 -0.93863 -0.647371 - vertex -0.729251 -0.884504 -0.730878 - vertex -0.654314 -0.915661 -0.736286 - endloop - endfacet - facet normal -0.382974 -0.864701 -0.324998 - outer loop - vertex -0.654314 -0.915661 -0.736286 - vertex -0.729251 -0.884504 -0.730878 - vertex -0.718396 -0.858934 -0.8117 - endloop - endfacet - facet normal -0.38384 -0.864617 -0.324199 - outer loop - vertex -0.654314 -0.915661 -0.736286 - vertex -0.718396 -0.858934 -0.8117 - vertex -0.645895 -0.8884 -0.818954 - endloop - endfacet - facet normal -0.379827 -0.838231 -0.39128 - outer loop - vertex -0.645895 -0.8884 -0.818954 - vertex -0.718396 -0.858934 -0.8117 - vertex -0.707561 -0.82938 -0.885532 - endloop - endfacet - facet normal -0.379976 -0.838229 -0.391139 - outer loop - vertex -0.645895 -0.8884 -0.818954 - vertex -0.707561 -0.82938 -0.885532 - vertex -0.637772 -0.85655 -0.895101 - endloop - endfacet - facet normal -0.375875 -0.801874 -0.464452 - outer loop - vertex -0.637772 -0.85655 -0.895101 - vertex -0.707561 -0.82938 -0.885532 - vertex -0.698091 -0.795099 -0.952382 - endloop - endfacet - facet normal -0.375867 -0.801874 -0.46446 - outer loop - vertex -0.637772 -0.85655 -0.895101 - vertex -0.698091 -0.795099 -0.952382 - vertex -0.63083 -0.819531 -0.964632 - endloop - endfacet - facet normal -0.372365 -0.7533 -0.54211 - outer loop - vertex -0.63083 -0.819531 -0.964632 - vertex -0.698091 -0.795099 -0.952382 - vertex -0.691333 -0.755348 -1.01226 - endloop - endfacet - facet normal -0.372642 -0.753359 -0.541839 - outer loop - vertex -0.63083 -0.819531 -0.964632 - vertex -0.691333 -0.755348 -1.01226 - vertex -0.625955 -0.776762 -1.02745 - endloop - endfacet - facet normal -0.370576 -0.691767 -0.619783 - outer loop - vertex -0.625955 -0.776762 -1.02745 - vertex -0.691333 -0.755348 -1.01226 - vertex -0.688631 -0.709386 -1.06518 - endloop - endfacet - facet normal -0.371044 -0.691939 -0.619312 - outer loop - vertex -0.625955 -0.776762 -1.02745 - vertex -0.688631 -0.709386 -1.06518 - vertex -0.624035 -0.727665 -1.08345 - endloop - endfacet - facet normal -0.474447 -0.864129 -0.167869 - outer loop - vertex -0.75735 -0.939102 -0.449905 - vertex -0.833131 -0.897833 -0.44816 - vertex -0.823545 -0.883868 -0.547144 - endloop - endfacet - facet normal -0.476308 -0.863427 -0.166203 - outer loop - vertex -0.75735 -0.939102 -0.449905 - vertex -0.823545 -0.883868 -0.547144 - vertex -0.749186 -0.924408 -0.549636 - endloop - endfacet - facet normal -0.473021 -0.854393 -0.215091 - outer loop - vertex -0.749186 -0.924408 -0.549636 - vertex -0.823545 -0.883868 -0.547144 - vertex -0.812257 -0.866762 -0.639916 - endloop - endfacet - facet normal -0.474922 -0.853771 -0.213365 - outer loop - vertex -0.749186 -0.924408 -0.549636 - vertex -0.812257 -0.866762 -0.639916 - vertex -0.739667 -0.906268 -0.643408 - endloop - endfacet - facet normal -0.470585 -0.841086 -0.266692 - outer loop - vertex -0.739667 -0.906268 -0.643408 - vertex -0.812257 -0.866762 -0.639916 - vertex -0.799695 -0.84648 -0.726046 - endloop - endfacet - facet normal -0.471992 -0.840708 -0.265396 - outer loop - vertex -0.739667 -0.906268 -0.643408 - vertex -0.799695 -0.84648 -0.726046 - vertex -0.729251 -0.884504 -0.730878 - endloop - endfacet - facet normal -0.466512 -0.823142 -0.323736 - outer loop - vertex -0.729251 -0.884504 -0.730878 - vertex -0.799695 -0.84648 -0.726046 - vertex -0.786288 -0.822986 -0.805104 - endloop - endfacet - facet normal -0.467174 -0.823009 -0.323117 - outer loop - vertex -0.729251 -0.884504 -0.730878 - vertex -0.786288 -0.822986 -0.805104 - vertex -0.718396 -0.858934 -0.8117 - endloop - endfacet - facet normal -0.460515 -0.798627 -0.387454 - outer loop - vertex -0.718396 -0.858934 -0.8117 - vertex -0.786288 -0.822986 -0.805104 - vertex -0.772463 -0.796242 -0.876659 - endloop - endfacet - facet normal -0.460693 -0.798606 -0.387286 - outer loop - vertex -0.718396 -0.858934 -0.8117 - vertex -0.772463 -0.796242 -0.876659 - vertex -0.707561 -0.82938 -0.885532 - endloop - endfacet - facet normal -0.453375 -0.765903 -0.455899 - outer loop - vertex -0.707561 -0.82938 -0.885532 - vertex -0.772463 -0.796242 -0.876659 - vertex -0.759887 -0.765637 -0.940583 - endloop - endfacet - facet normal -0.452391 -0.765917 -0.456851 - outer loop - vertex -0.707561 -0.82938 -0.885532 - vertex -0.759887 -0.765637 -0.940583 - vertex -0.698091 -0.795099 -0.952382 - endloop - endfacet - facet normal -0.445493 -0.722881 -0.528185 - outer loop - vertex -0.698091 -0.795099 -0.952382 - vertex -0.759887 -0.765637 -0.940583 - vertex -0.750221 -0.730557 -0.996746 - endloop - endfacet - facet normal -0.44383 -0.722684 -0.529852 - outer loop - vertex -0.698091 -0.795099 -0.952382 - vertex -0.750221 -0.730557 -0.996746 - vertex -0.691333 -0.755348 -1.01226 - endloop - endfacet - facet normal -0.439351 -0.667204 -0.601507 - outer loop - vertex -0.691333 -0.755348 -1.01226 - vertex -0.750221 -0.730557 -0.996746 - vertex -0.746116 -0.689499 -1.04529 - endloop - endfacet - facet normal -0.439021 -0.667105 -0.601856 - outer loop - vertex -0.691333 -0.755348 -1.01226 - vertex -0.746116 -0.689499 -1.04529 - vertex -0.688631 -0.709386 -1.06518 - endloop - endfacet - facet normal -0.564141 -0.808013 -0.169881 - outer loop - vertex -0.833131 -0.897833 -0.44816 - vertex -0.90332 -0.84909 -0.446914 - vertex -0.892426 -0.835998 -0.545364 - endloop - endfacet - facet normal -0.565441 -0.807358 -0.168672 - outer loop - vertex -0.833131 -0.897833 -0.44816 - vertex -0.892426 -0.835998 -0.545364 - vertex -0.823545 -0.883868 -0.547144 - endloop - endfacet - facet normal -0.560872 -0.798991 -0.216878 - outer loop - vertex -0.823545 -0.883868 -0.547144 - vertex -0.892426 -0.835998 -0.545364 - vertex -0.879467 -0.82011 -0.637409 - endloop - endfacet - facet normal -0.562217 -0.798387 -0.215617 - outer loop - vertex -0.823545 -0.883868 -0.547144 - vertex -0.879467 -0.82011 -0.637409 - vertex -0.812257 -0.866762 -0.639916 - endloop - endfacet - facet normal -0.556157 -0.786871 -0.267439 - outer loop - vertex -0.812257 -0.866762 -0.639916 - vertex -0.879467 -0.82011 -0.637409 - vertex -0.864803 -0.801539 -0.722544 - endloop - endfacet - facet normal -0.557194 -0.786468 -0.266462 - outer loop - vertex -0.812257 -0.866762 -0.639916 - vertex -0.864803 -0.801539 -0.722544 - vertex -0.799695 -0.84648 -0.726046 - endloop - endfacet - facet normal -0.549352 -0.770715 -0.322818 - outer loop - vertex -0.799695 -0.84648 -0.726046 - vertex -0.864803 -0.801539 -0.722544 - vertex -0.848789 -0.780399 -0.800266 - endloop - endfacet - facet normal -0.549954 -0.770523 -0.322249 - outer loop - vertex -0.799695 -0.84648 -0.726046 - vertex -0.848789 -0.780399 -0.800266 - vertex -0.786288 -0.822986 -0.805104 - endloop - endfacet - facet normal -0.539915 -0.748704 -0.384621 - outer loop - vertex -0.786288 -0.822986 -0.805104 - vertex -0.848789 -0.780399 -0.800266 - vertex -0.831785 -0.756803 -0.870068 - endloop - endfacet - facet normal -0.540379 -0.748594 -0.384184 - outer loop - vertex -0.786288 -0.822986 -0.805104 - vertex -0.831785 -0.756803 -0.870068 - vertex -0.772463 -0.796242 -0.876659 - endloop - endfacet - facet normal -0.529048 -0.720954 -0.447587 - outer loop - vertex -0.772463 -0.796242 -0.876659 - vertex -0.831785 -0.756803 -0.870068 - vertex -0.815363 -0.730921 -0.931169 - endloop - endfacet - facet normal -0.527498 -0.72117 -0.449066 - outer loop - vertex -0.772463 -0.796242 -0.876659 - vertex -0.815363 -0.730921 -0.931169 - vertex -0.759887 -0.765637 -0.940583 - endloop - endfacet - facet normal -0.515976 -0.685089 -0.51422 - outer loop - vertex -0.759887 -0.765637 -0.940583 - vertex -0.815363 -0.730921 -0.931169 - vertex -0.801098 -0.702923 -0.982784 - endloop - endfacet - facet normal -0.513822 -0.685106 -0.51635 - outer loop - vertex -0.759887 -0.765637 -0.940583 - vertex -0.801098 -0.702923 -0.982784 - vertex -0.750221 -0.730557 -0.996746 - endloop - endfacet - facet normal -0.505666 -0.637007 -0.581829 - outer loop - vertex -0.750221 -0.730557 -0.996746 - vertex -0.801098 -0.702923 -0.982784 - vertex -0.794505 -0.669413 -1.0252 - endloop - endfacet - facet normal -0.505853 -0.637047 -0.581622 - outer loop - vertex -0.750221 -0.730557 -0.996746 - vertex -0.794505 -0.669413 -1.0252 - vertex -0.746116 -0.689499 -1.04529 - endloop - endfacet - facet normal -0.652861 -0.737952 -0.170882 - outer loop - vertex -0.90332 -0.84909 -0.446914 - vertex -0.966985 -0.792882 -0.446415 - vertex -0.954915 -0.780812 -0.544652 - endloop - endfacet - facet normal -0.653355 -0.737626 -0.170394 - outer loop - vertex -0.90332 -0.84909 -0.446914 - vertex -0.954915 -0.780812 -0.544652 - vertex -0.892426 -0.835998 -0.545364 - endloop - endfacet - facet normal -0.647453 -0.730332 -0.217759 - outer loop - vertex -0.892426 -0.835998 -0.545364 - vertex -0.954915 -0.780812 -0.544652 - vertex -0.940414 -0.766311 -0.636401 - endloop - endfacet - facet normal -0.647986 -0.730015 -0.217236 - outer loop - vertex -0.892426 -0.835998 -0.545364 - vertex -0.940414 -0.766311 -0.636401 - vertex -0.879467 -0.82011 -0.637409 - endloop - endfacet - facet normal -0.640085 -0.720116 -0.267814 - outer loop - vertex -0.879467 -0.82011 -0.637409 - vertex -0.940414 -0.766311 -0.636401 - vertex -0.923733 -0.749629 -0.721126 - endloop - endfacet - facet normal -0.64055 -0.719871 -0.267361 - outer loop - vertex -0.879467 -0.82011 -0.637409 - vertex -0.923733 -0.749629 -0.721126 - vertex -0.864803 -0.801539 -0.722544 - endloop - endfacet - facet normal -0.630064 -0.706464 -0.322378 - outer loop - vertex -0.864803 -0.801539 -0.722544 - vertex -0.923733 -0.749629 -0.721126 - vertex -0.905121 -0.731018 -0.798286 - endloop - endfacet - facet normal -0.630456 -0.706286 -0.322003 - outer loop - vertex -0.864803 -0.801539 -0.722544 - vertex -0.905121 -0.731018 -0.798286 - vertex -0.848789 -0.780399 -0.800266 - endloop - endfacet - facet normal -0.616444 -0.687847 -0.383229 - outer loop - vertex -0.848789 -0.780399 -0.800266 - vertex -0.905121 -0.731018 -0.798286 - vertex -0.884831 -0.710728 -0.867343 - endloop - endfacet - facet normal -0.616957 -0.687652 -0.382751 - outer loop - vertex -0.848789 -0.780399 -0.800266 - vertex -0.884831 -0.710728 -0.867343 - vertex -0.831785 -0.756803 -0.870068 - endloop - endfacet - facet normal -0.60076 -0.66544 -0.443032 - outer loop - vertex -0.831785 -0.756803 -0.870068 - vertex -0.884831 -0.710728 -0.867343 - vertex -0.863937 -0.689834 -0.927058 - endloop - endfacet - facet normal -0.600463 -0.665528 -0.443303 - outer loop - vertex -0.831785 -0.756803 -0.870068 - vertex -0.863937 -0.689834 -0.927058 - vertex -0.815363 -0.730921 -0.931169 - endloop - endfacet - facet normal -0.581483 -0.636782 -0.506346 - outer loop - vertex -0.815363 -0.730921 -0.931169 - vertex -0.863937 -0.689834 -0.927058 - vertex -0.843516 -0.669413 -0.976191 - endloop - endfacet - facet normal -0.581694 -0.636739 -0.506157 - outer loop - vertex -0.815363 -0.730921 -0.931169 - vertex -0.843516 -0.669413 -0.976191 - vertex -0.801098 -0.702923 -0.982784 - endloop - endfacet - facet normal -0.562735 -0.600567 -0.568022 - outer loop - vertex -0.801098 -0.702923 -0.982784 - vertex -0.843516 -0.669413 -0.976191 - vertex -0.827436 -0.653333 -1.00912 - endloop - endfacet - facet normal -0.568022 -0.600567 -0.562734 - outer loop - vertex -0.801098 -0.702923 -0.982784 - vertex -0.827436 -0.653333 -1.00912 - vertex -0.794505 -0.669413 -1.0252 - endloop - endfacet - facet normal -0.986795 -0.0427593 -0.156227 - outer loop - vertex -1.20712 -0.153076 -0.457381 - vertex -1.19083 -0.153076 -0.560317 - vertex -1.18712 -0.241129 -0.559605 - endloop - endfacet - facet normal -0.986749 -0.042245 -0.156661 - outer loop - vertex -1.20712 -0.153076 -0.457381 - vertex -1.18712 -0.241129 -0.559605 - vertex -1.20336 -0.242838 -0.456883 - endloop - endfacet - facet normal -0.979296 -0.1279 -0.156908 - outer loop - vertex -1.20336 -0.242838 -0.456883 - vertex -1.18712 -0.241129 -0.559605 - vertex -1.17603 -0.32827 -0.557825 - endloop - endfacet - facet normal -0.979289 -0.1266 -0.158006 - outer loop - vertex -1.20336 -0.242838 -0.456883 - vertex -1.17603 -0.32827 -0.557825 - vertex -1.19208 -0.331668 -0.455637 - endloop - endfacet - facet normal -0.964023 -0.2134 -0.158496 - outer loop - vertex -1.19208 -0.331668 -0.455637 - vertex -1.17603 -0.32827 -0.557825 - vertex -1.15755 -0.413584 -0.555333 - endloop - endfacet - facet normal -0.96417 -0.211557 -0.160061 - outer loop - vertex -1.19208 -0.331668 -0.455637 - vertex -1.15755 -0.413584 -0.555333 - vertex -1.17328 -0.418635 -0.453892 - endloop - endfacet - facet normal -0.940347 -0.29984 -0.160762 - outer loop - vertex -1.17328 -0.418635 -0.453892 - vertex -1.15755 -0.413584 -0.555333 - vertex -1.13171 -0.496159 -0.552484 - endloop - endfacet - facet normal -0.940709 -0.297713 -0.162587 - outer loop - vertex -1.17328 -0.418635 -0.453892 - vertex -1.13171 -0.496159 -0.552484 - vertex -1.14699 -0.502805 -0.451898 - endloop - endfacet - facet normal -0.907256 -0.387523 -0.163438 - outer loop - vertex -1.14699 -0.502805 -0.451898 - vertex -1.13171 -0.496159 -0.552484 - vertex -1.09851 -0.575083 -0.549636 - endloop - endfacet - facet normal -0.907829 -0.385386 -0.165303 - outer loop - vertex -1.14699 -0.502805 -0.451898 - vertex -1.09851 -0.575083 -0.549636 - vertex -1.1132 -0.583246 -0.449905 - endloop - endfacet - facet normal -0.863428 -0.476307 -0.166203 - outer loop - vertex -1.1132 -0.583246 -0.449905 - vertex -1.09851 -0.575083 -0.549636 - vertex -1.05797 -0.649442 -0.547144 - endloop - endfacet - facet normal -0.864129 -0.474448 -0.167868 - outer loop - vertex -1.1132 -0.583246 -0.449905 - vertex -1.05797 -0.649442 -0.547144 - vertex -1.07194 -0.659028 -0.44816 - endloop - endfacet - facet normal -0.807358 -0.565441 -0.168671 - outer loop - vertex -1.07194 -0.659028 -0.44816 - vertex -1.05797 -0.649442 -0.547144 - vertex -1.0101 -0.718322 -0.545364 - endloop - endfacet - facet normal -0.808014 -0.56414 -0.169882 - outer loop - vertex -1.07194 -0.659028 -0.44816 - vertex -1.0101 -0.718322 -0.545364 - vertex -1.02319 -0.729217 -0.446914 - endloop - endfacet - facet normal -0.737627 -0.653355 -0.170394 - outer loop - vertex -1.02319 -0.729217 -0.446914 - vertex -1.0101 -0.718322 -0.545364 - vertex -0.954915 -0.780812 -0.544652 - endloop - endfacet - facet normal -0.737952 -0.652861 -0.170882 - outer loop - vertex -1.02319 -0.729217 -0.446914 - vertex -0.954915 -0.780812 -0.544652 - vertex -0.966985 -0.792882 -0.446415 - endloop - endfacet - facet normal -0.978082 -0.0434605 -0.203632 - outer loop - vertex -1.19083 -0.153076 -0.560317 - vertex -1.17047 -0.153076 -0.658075 - vertex -1.16685 -0.239183 -0.657112 - endloop - endfacet - facet normal -0.977991 -0.0427772 -0.204217 - outer loop - vertex -1.19083 -0.153076 -0.560317 - vertex -1.16685 -0.239183 -0.657112 - vertex -1.18712 -0.241129 -0.559605 - endloop - endfacet - facet normal -0.970313 -0.12936 -0.204349 - outer loop - vertex -1.18712 -0.241129 -0.559605 - vertex -1.16685 -0.239183 -0.657112 - vertex -1.156 -0.324387 -0.654694 - endloop - endfacet - facet normal -0.970234 -0.127744 -0.205738 - outer loop - vertex -1.18712 -0.241129 -0.559605 - vertex -1.156 -0.324387 -0.654694 - vertex -1.17603 -0.32827 -0.557825 - endloop - endfacet - facet normal -0.954641 -0.214987 -0.206011 - outer loop - vertex -1.17603 -0.32827 -0.557825 - vertex -1.156 -0.324387 -0.654694 - vertex -1.13795 -0.407788 -0.65129 - endloop - endfacet - facet normal -0.95472 -0.212828 -0.20788 - outer loop - vertex -1.17603 -0.32827 -0.557825 - vertex -1.13795 -0.407788 -0.65129 - vertex -1.15755 -0.413584 -0.555333 - endloop - endfacet - facet normal -0.930618 -0.300947 -0.20828 - outer loop - vertex -1.15755 -0.413584 -0.555333 - vertex -1.13795 -0.407788 -0.65129 - vertex -1.11273 -0.48848 -0.647371 - endloop - endfacet - facet normal -0.930913 -0.298597 -0.210335 - outer loop - vertex -1.15755 -0.413584 -0.555333 - vertex -1.11273 -0.48848 -0.647371 - vertex -1.13171 -0.496159 -0.552484 - endloop - endfacet - facet normal -0.897398 -0.387589 -0.210834 - outer loop - vertex -1.13171 -0.496159 -0.552484 - vertex -1.11273 -0.48848 -0.647371 - vertex -1.08037 -0.565564 -0.643408 - endloop - endfacet - facet normal -0.89789 -0.385365 -0.212809 - outer loop - vertex -1.13171 -0.496159 -0.552484 - vertex -1.08037 -0.565564 -0.643408 - vertex -1.09851 -0.575083 -0.549636 - endloop - endfacet - facet normal -0.853771 -0.474922 -0.213366 - outer loop - vertex -1.09851 -0.575083 -0.549636 - vertex -1.08037 -0.565564 -0.643408 - vertex -1.04087 -0.638153 -0.639916 - endloop - endfacet - facet normal -0.854393 -0.47302 -0.215091 - outer loop - vertex -1.09851 -0.575083 -0.549636 - vertex -1.04087 -0.638153 -0.639916 - vertex -1.05797 -0.649442 -0.547144 - endloop - endfacet - facet normal -0.798387 -0.562217 -0.215618 - outer loop - vertex -1.05797 -0.649442 -0.547144 - vertex -1.04087 -0.638153 -0.639916 - vertex -0.994213 -0.705364 -0.637409 - endloop - endfacet - facet normal -0.798991 -0.560873 -0.216877 - outer loop - vertex -1.05797 -0.649442 -0.547144 - vertex -0.994213 -0.705364 -0.637409 - vertex -1.0101 -0.718322 -0.545364 - endloop - endfacet - facet normal -0.730016 -0.647986 -0.217235 - outer loop - vertex -1.0101 -0.718322 -0.545364 - vertex -0.994213 -0.705364 -0.637409 - vertex -0.940414 -0.766311 -0.636401 - endloop - endfacet - facet normal -0.730333 -0.647453 -0.217759 - outer loop - vertex -1.0101 -0.718322 -0.545364 - vertex -0.940414 -0.766311 -0.636401 - vertex -0.954915 -0.780812 -0.544652 - endloop - endfacet - facet normal -0.964686 -0.0443388 -0.259643 - outer loop - vertex -1.17047 -0.153076 -0.658075 - vertex -1.14563 -0.153076 -0.750381 - vertex -1.1421 -0.237142 -0.74914 - endloop - endfacet - facet normal -0.964534 -0.0435243 -0.260347 - outer loop - vertex -1.17047 -0.153076 -0.658075 - vertex -1.1421 -0.237142 -0.74914 - vertex -1.16685 -0.239183 -0.657112 - endloop - endfacet - facet normal -0.956641 -0.13097 -0.260164 - outer loop - vertex -1.16685 -0.239183 -0.657112 - vertex -1.1421 -0.237142 -0.74914 - vertex -1.13157 -0.320294 -0.745993 - endloop - endfacet - facet normal -0.956463 -0.129224 -0.261687 - outer loop - vertex -1.16685 -0.239183 -0.657112 - vertex -1.13157 -0.320294 -0.745993 - vertex -1.156 -0.324387 -0.654694 - endloop - endfacet - facet normal -0.940667 -0.216405 -0.26137 - outer loop - vertex -1.156 -0.324387 -0.654694 - vertex -1.13157 -0.320294 -0.745993 - vertex -1.11411 -0.401622 -0.741516 - endloop - endfacet - facet normal -0.940632 -0.214291 -0.263233 - outer loop - vertex -1.156 -0.324387 -0.654694 - vertex -1.11411 -0.401622 -0.741516 - vertex -1.13795 -0.407788 -0.65129 - endloop - endfacet - facet normal -0.916564 -0.301387 -0.262825 - outer loop - vertex -1.13795 -0.407788 -0.65129 - vertex -1.11411 -0.401622 -0.741516 - vertex -1.08976 -0.48021 -0.736286 - endloop - endfacet - facet normal -0.916709 -0.299337 -0.264654 - outer loop - vertex -1.13795 -0.407788 -0.65129 - vertex -1.08976 -0.48021 -0.736286 - vertex -1.11273 -0.48848 -0.647371 - endloop - endfacet - facet normal -0.883648 -0.386465 -0.264217 - outer loop - vertex -1.11273 -0.48848 -0.647371 - vertex -1.08976 -0.48021 -0.736286 - vertex -1.05861 -0.555148 -0.730878 - endloop - endfacet - facet normal -0.88393 -0.384758 -0.265762 - outer loop - vertex -1.11273 -0.48848 -0.647371 - vertex -1.05861 -0.555148 -0.730878 - vertex -1.08037 -0.565564 -0.643408 - endloop - endfacet - facet normal -0.840708 -0.471991 -0.265395 - outer loop - vertex -1.08037 -0.565564 -0.643408 - vertex -1.05861 -0.555148 -0.730878 - vertex -1.02058 -0.625592 -0.726046 - endloop - endfacet - facet normal -0.841086 -0.470584 -0.266691 - outer loop - vertex -1.08037 -0.565564 -0.643408 - vertex -1.02058 -0.625592 -0.726046 - vertex -1.04087 -0.638153 -0.639916 - endloop - endfacet - facet normal -0.786469 -0.557194 -0.266462 - outer loop - vertex -1.04087 -0.638153 -0.639916 - vertex -1.02058 -0.625592 -0.726046 - vertex -0.975642 -0.690699 -0.722544 - endloop - endfacet - facet normal -0.786871 -0.556157 -0.267439 - outer loop - vertex -1.04087 -0.638153 -0.639916 - vertex -0.975642 -0.690699 -0.722544 - vertex -0.994213 -0.705364 -0.637409 - endloop - endfacet - facet normal -0.719871 -0.64055 -0.267361 - outer loop - vertex -0.994213 -0.705364 -0.637409 - vertex -0.975642 -0.690699 -0.722544 - vertex -0.923733 -0.749629 -0.721126 - endloop - endfacet - facet normal -0.720117 -0.640084 -0.267814 - outer loop - vertex -0.994213 -0.705364 -0.637409 - vertex -0.923733 -0.749629 -0.721126 - vertex -0.940414 -0.766311 -0.636401 - endloop - endfacet - facet normal -0.944684 -0.0453626 -0.324829 - outer loop - vertex -1.14563 -0.153076 -0.750381 - vertex -1.11586 -0.153076 -0.836959 - vertex -1.11245 -0.235148 -0.835423 - endloop - endfacet - facet normal -0.944459 -0.0444634 -0.325609 - outer loop - vertex -1.14563 -0.153076 -0.750381 - vertex -1.11245 -0.235148 -0.835423 - vertex -1.1421 -0.237142 -0.74914 - endloop - endfacet - facet normal -0.936416 -0.132579 -0.324881 - outer loop - vertex -1.1421 -0.237142 -0.74914 - vertex -1.11245 -0.235148 -0.835423 - vertex -1.10233 -0.316262 -0.831472 - endloop - endfacet - facet normal -0.936134 -0.13088 -0.326378 - outer loop - vertex -1.1421 -0.237142 -0.74914 - vertex -1.10233 -0.316262 -0.831472 - vertex -1.13157 -0.320294 -0.745993 - endloop - endfacet - facet normal -0.92037 -0.217375 -0.325066 - outer loop - vertex -1.13157 -0.320294 -0.745993 - vertex -1.10233 -0.316262 -0.831472 - vertex -1.08564 -0.395463 -0.825763 - endloop - endfacet - facet normal -0.920225 -0.215608 -0.326648 - outer loop - vertex -1.13157 -0.320294 -0.745993 - vertex -1.08564 -0.395463 -0.825763 - vertex -1.11411 -0.401622 -0.741516 - endloop - endfacet - facet normal -0.896631 -0.300814 -0.324905 - outer loop - vertex -1.11411 -0.401622 -0.741516 - vertex -1.08564 -0.395463 -0.825763 - vertex -1.0625 -0.471792 -0.818953 - endloop - endfacet - facet normal -0.896637 -0.29943 -0.326164 - outer loop - vertex -1.11411 -0.401622 -0.741516 - vertex -1.0625 -0.471792 -0.818953 - vertex -1.08976 -0.48021 -0.736286 - endloop - endfacet - facet normal -0.864617 -0.383839 -0.3242 - outer loop - vertex -1.08976 -0.48021 -0.736286 - vertex -1.0625 -0.471792 -0.818953 - vertex -1.03304 -0.544293 -0.8117 - endloop - endfacet - facet normal -0.864701 -0.382974 -0.324998 - outer loop - vertex -1.08976 -0.48021 -0.736286 - vertex -1.03304 -0.544293 -0.8117 - vertex -1.05861 -0.555148 -0.730878 - endloop - endfacet - facet normal -0.82301 -0.467173 -0.323117 - outer loop - vertex -1.05861 -0.555148 -0.730878 - vertex -1.03304 -0.544293 -0.8117 - vertex -0.997089 -0.612184 -0.805104 - endloop - endfacet - facet normal -0.823142 -0.466511 -0.323736 - outer loop - vertex -1.05861 -0.555148 -0.730878 - vertex -0.997089 -0.612184 -0.805104 - vertex -1.02058 -0.625592 -0.726046 - endloop - endfacet - facet normal -0.770523 -0.549955 -0.322249 - outer loop - vertex -1.02058 -0.625592 -0.726046 - vertex -0.997089 -0.612184 -0.805104 - vertex -0.954502 -0.674686 -0.800266 - endloop - endfacet - facet normal -0.770715 -0.549351 -0.322819 - outer loop - vertex -1.02058 -0.625592 -0.726046 - vertex -0.954502 -0.674686 -0.800266 - vertex -0.975642 -0.690699 -0.722544 - endloop - endfacet - facet normal -0.706286 -0.630455 -0.322004 - outer loop - vertex -0.975642 -0.690699 -0.722544 - vertex -0.954502 -0.674686 -0.800266 - vertex -0.905121 -0.731018 -0.798286 - endloop - endfacet - facet normal -0.706464 -0.630064 -0.322378 - outer loop - vertex -0.975642 -0.690699 -0.722544 - vertex -0.905121 -0.731018 -0.798286 - vertex -0.923733 -0.749629 -0.721126 - endloop - endfacet - facet normal -0.915674 -0.0464689 -0.399226 - outer loop - vertex -1.11586 -0.153076 -0.836959 - vertex -1.08073 -0.153076 -0.917536 - vertex -1.07746 -0.233344 -0.915698 - endloop - endfacet - facet normal -0.915375 -0.045551 -0.400016 - outer loop - vertex -1.11586 -0.153076 -0.836959 - vertex -1.07746 -0.233344 -0.915698 - vertex -1.11245 -0.235148 -0.835423 - endloop - endfacet - facet normal -0.907322 -0.134046 -0.398495 - outer loop - vertex -1.11245 -0.235148 -0.835423 - vertex -1.07746 -0.233344 -0.915698 - vertex -1.06787 -0.312564 -0.910881 - endloop - endfacet - facet normal -0.906962 -0.132557 -0.39981 - outer loop - vertex -1.11245 -0.235148 -0.835423 - vertex -1.06787 -0.312564 -0.910881 - vertex -1.10233 -0.316262 -0.831472 - endloop - endfacet - facet normal -0.891565 -0.217775 -0.397097 - outer loop - vertex -1.10233 -0.316262 -0.831472 - vertex -1.06787 -0.312564 -0.910881 - vertex -1.05219 -0.389688 -0.903784 - endloop - endfacet - facet normal -0.891367 -0.216536 -0.398217 - outer loop - vertex -1.10233 -0.316262 -0.831472 - vertex -1.05219 -0.389688 -0.903784 - vertex -1.08564 -0.395463 -0.825763 - endloop - endfacet - facet normal -0.868747 -0.29923 -0.394639 - outer loop - vertex -1.08564 -0.395463 -0.825763 - vertex -1.05219 -0.389688 -0.903784 - vertex -1.03065 -0.463669 -0.895101 - endloop - endfacet - facet normal -0.868701 -0.298619 -0.395204 - outer loop - vertex -1.08564 -0.395463 -0.825763 - vertex -1.03065 -0.463669 -0.895101 - vertex -1.0625 -0.471792 -0.818953 - endloop - endfacet - facet normal -0.83823 -0.379977 -0.391138 - outer loop - vertex -1.0625 -0.471792 -0.818953 - vertex -1.03065 -0.463669 -0.895101 - vertex -1.00348 -0.533458 -0.885532 - endloop - endfacet - facet normal -0.838232 -0.379826 -0.39128 - outer loop - vertex -1.0625 -0.471792 -0.818953 - vertex -1.00348 -0.533458 -0.885532 - vertex -1.03304 -0.544293 -0.8117 - endloop - endfacet - facet normal -0.798607 -0.460692 -0.387286 - outer loop - vertex -1.03304 -0.544293 -0.8117 - vertex -1.00348 -0.533458 -0.885532 - vertex -0.970345 -0.59836 -0.876659 - endloop - endfacet - facet normal -0.798628 -0.460514 -0.387455 - outer loop - vertex -1.03304 -0.544293 -0.8117 - vertex -0.970345 -0.59836 -0.876659 - vertex -0.997089 -0.612184 -0.805104 - endloop - endfacet - facet normal -0.748593 -0.54038 -0.384184 - outer loop - vertex -0.997089 -0.612184 -0.805104 - vertex -0.970345 -0.59836 -0.876659 - vertex -0.930906 -0.657682 -0.870068 - endloop - endfacet - facet normal -0.748704 -0.539916 -0.384621 - outer loop - vertex -0.997089 -0.612184 -0.805104 - vertex -0.930906 -0.657682 -0.870068 - vertex -0.954502 -0.674686 -0.800266 - endloop - endfacet - facet normal -0.687653 -0.616956 -0.382751 - outer loop - vertex -0.954502 -0.674686 -0.800266 - vertex -0.930906 -0.657682 -0.870068 - vertex -0.884831 -0.710728 -0.867343 - endloop - endfacet - facet normal -0.687847 -0.616443 -0.383229 - outer loop - vertex -0.954502 -0.674686 -0.800266 - vertex -0.884831 -0.710728 -0.867343 - vertex -0.905121 -0.731018 -0.798286 - endloop - endfacet - facet normal -0.874919 -0.0475438 -0.481931 - outer loop - vertex -1.08073 -0.153076 -0.917536 - vertex -1.0398 -0.153076 -0.991836 - vertex -1.0367 -0.231872 -0.9897 - endloop - endfacet - facet normal -0.874574 -0.0467032 -0.482638 - outer loop - vertex -1.08073 -0.153076 -0.917536 - vertex -1.0367 -0.231872 -0.9897 - vertex -1.07746 -0.233344 -0.915698 - endloop - endfacet - facet normal -0.866719 -0.135376 -0.480075 - outer loop - vertex -1.07746 -0.233344 -0.915698 - vertex -1.0367 -0.231872 -0.9897 - vertex -1.02773 -0.309515 -0.983989 - endloop - endfacet - facet normal -0.866301 -0.134108 -0.481184 - outer loop - vertex -1.07746 -0.233344 -0.915698 - vertex -1.02773 -0.309515 -0.983989 - vertex -1.06787 -0.312564 -0.910881 - endloop - endfacet - facet normal -0.851656 -0.217935 -0.476641 - outer loop - vertex -1.06787 -0.312564 -0.910881 - vertex -1.02773 -0.309515 -0.983989 - vertex -1.01326 -0.384851 -0.9754 - endloop - endfacet - facet normal -0.851423 -0.217013 -0.477477 - outer loop - vertex -1.06787 -0.312564 -0.910881 - vertex -1.01326 -0.384851 -0.9754 - vertex -1.05219 -0.389688 -0.903784 - endloop - endfacet - facet normal -0.830274 -0.297355 -0.471407 - outer loop - vertex -1.05219 -0.389688 -0.903784 - vertex -1.01326 -0.384851 -0.9754 - vertex -0.993634 -0.456726 -0.964632 - endloop - endfacet - facet normal -0.830223 -0.297057 -0.471685 - outer loop - vertex -1.05219 -0.389688 -0.903784 - vertex -0.993634 -0.456726 -0.964632 - vertex -1.03065 -0.463669 -0.895101 - endloop - endfacet - facet normal -0.801873 -0.375867 -0.46446 - outer loop - vertex -1.03065 -0.463669 -0.895101 - vertex -0.993634 -0.456726 -0.964632 - vertex -0.969202 -0.523988 -0.952382 - endloop - endfacet - facet normal -0.801874 -0.375875 -0.464452 - outer loop - vertex -1.03065 -0.463669 -0.895101 - vertex -0.969202 -0.523988 -0.952382 - vertex -1.00348 -0.533458 -0.885532 - endloop - endfacet - facet normal -0.765917 -0.452391 -0.456852 - outer loop - vertex -1.00348 -0.533458 -0.885532 - vertex -0.969202 -0.523988 -0.952382 - vertex -0.93974 -0.585783 -0.940583 - endloop - endfacet - facet normal -0.765903 -0.453374 -0.4559 - outer loop - vertex -1.00348 -0.533458 -0.885532 - vertex -0.93974 -0.585783 -0.940583 - vertex -0.970345 -0.59836 -0.876659 - endloop - endfacet - facet normal -0.72117 -0.527497 -0.449066 - outer loop - vertex -0.970345 -0.59836 -0.876659 - vertex -0.93974 -0.585783 -0.940583 - vertex -0.905024 -0.64126 -0.931169 - endloop - endfacet - facet normal -0.720954 -0.529048 -0.447586 - outer loop - vertex -0.970345 -0.59836 -0.876659 - vertex -0.905024 -0.64126 -0.931169 - vertex -0.930906 -0.657682 -0.870068 - endloop - endfacet - facet normal -0.665528 -0.600463 -0.443302 - outer loop - vertex -0.930906 -0.657682 -0.870068 - vertex -0.905024 -0.64126 -0.931169 - vertex -0.863937 -0.689834 -0.927058 - endloop - endfacet - facet normal -0.665441 -0.600759 -0.443032 - outer loop - vertex -0.930906 -0.657682 -0.870068 - vertex -0.863937 -0.689834 -0.927058 - vertex -0.884831 -0.710728 -0.867343 - endloop - endfacet - facet normal -0.819786 -0.0484137 -0.570619 - outer loop - vertex -1.0398 -0.153076 -0.991836 - vertex -0.992645 -0.153076 -1.05958 - vertex -0.989736 -0.230875 -1.05716 - endloop - endfacet - facet normal -0.819466 -0.0477769 -0.571132 - outer loop - vertex -1.0398 -0.153076 -0.991836 - vertex -0.989736 -0.230875 -1.05716 - vertex -1.0367 -0.231872 -0.9897 - endloop - endfacet - facet normal -0.812111 -0.136456 -0.567323 - outer loop - vertex -1.0367 -0.231872 -0.9897 - vertex -0.989736 -0.230875 -1.05716 - vertex -0.981485 -0.307433 -1.05056 - endloop - endfacet - facet normal -0.811702 -0.135501 -0.568137 - outer loop - vertex -1.0367 -0.231872 -0.9897 - vertex -0.981485 -0.307433 -1.05056 - vertex -1.02773 -0.309515 -0.983989 - endloop - endfacet - facet normal -0.798289 -0.218088 -0.561402 - outer loop - vertex -1.02773 -0.309515 -0.983989 - vertex -0.981485 -0.307433 -1.05056 - vertex -0.968369 -0.381505 -1.04044 - endloop - endfacet - facet normal -0.798031 -0.21737 -0.562047 - outer loop - vertex -1.02773 -0.309515 -0.983989 - vertex -0.968369 -0.381505 -1.04044 - vertex -1.01326 -0.384851 -0.9754 - endloop - endfacet - facet normal -0.778938 -0.295888 -0.552906 - outer loop - vertex -1.01326 -0.384851 -0.9754 - vertex -0.968369 -0.381505 -1.04044 - vertex -0.950866 -0.451852 -1.02745 - endloop - endfacet - facet normal -0.778845 -0.295566 -0.55321 - outer loop - vertex -1.01326 -0.384851 -0.9754 - vertex -0.950866 -0.451852 -1.02745 - vertex -0.993634 -0.456726 -0.964632 - endloop - endfacet - facet normal -0.753358 -0.372642 -0.541838 - outer loop - vertex -0.993634 -0.456726 -0.964632 - vertex -0.950866 -0.451852 -1.02745 - vertex -0.929451 -0.51723 -1.01226 - endloop - endfacet - facet normal -0.753299 -0.372365 -0.542111 - outer loop - vertex -0.993634 -0.456726 -0.964632 - vertex -0.929451 -0.51723 -1.01226 - vertex -0.969202 -0.523988 -0.952382 - endloop - endfacet - facet normal -0.722684 -0.443829 -0.529853 - outer loop - vertex -0.969202 -0.523988 -0.952382 - vertex -0.929451 -0.51723 -1.01226 - vertex -0.90466 -0.576118 -0.996746 - endloop - endfacet - facet normal -0.722881 -0.445493 -0.528185 - outer loop - vertex -0.969202 -0.523988 -0.952382 - vertex -0.90466 -0.576118 -0.996746 - vertex -0.93974 -0.585783 -0.940583 - endloop - endfacet - facet normal -0.685107 -0.513821 -0.51635 - outer loop - vertex -0.93974 -0.585783 -0.940583 - vertex -0.90466 -0.576118 -0.996746 - vertex -0.877026 -0.626995 -0.982784 - endloop - endfacet - facet normal -0.685089 -0.515975 -0.514221 - outer loop - vertex -0.93974 -0.585783 -0.940583 - vertex -0.877026 -0.626995 -0.982784 - vertex -0.905024 -0.64126 -0.931169 - endloop - endfacet - facet normal -0.63674 -0.581694 -0.506157 - outer loop - vertex -0.905024 -0.64126 -0.931169 - vertex -0.877026 -0.626995 -0.982784 - vertex -0.843516 -0.669413 -0.976191 - endloop - endfacet - facet normal -0.636782 -0.581483 -0.506346 - outer loop - vertex -0.905024 -0.64126 -0.931169 - vertex -0.843516 -0.669413 -0.976191 - vertex -0.863937 -0.689834 -0.927058 - endloop - endfacet - facet normal -0.748534 -0.048843 -0.661295 - outer loop - vertex -0.992645 -0.153076 -1.05958 - vertex -0.938822 -0.153076 -1.12051 - vertex -0.93614 -0.230495 -1.11783 - endloop - endfacet - facet normal -0.748372 -0.0485713 -0.661499 - outer loop - vertex -0.992645 -0.153076 -1.05958 - vertex -0.93614 -0.230495 -1.11783 - vertex -0.989736 -0.230875 -1.05716 - endloop - endfacet - facet normal -0.741914 -0.137009 -0.656347 - outer loop - vertex -0.989736 -0.230875 -1.05716 - vertex -0.93614 -0.230495 -1.11783 - vertex -0.92868 -0.306633 -1.11037 - endloop - endfacet - facet normal -0.741683 -0.136575 -0.656699 - outer loop - vertex -0.989736 -0.230875 -1.05716 - vertex -0.92868 -0.306633 -1.11037 - vertex -0.981485 -0.307433 -1.05056 - endloop - endfacet - facet normal -0.730102 -0.218198 -0.647565 - outer loop - vertex -0.981485 -0.307433 -1.05056 - vertex -0.92868 -0.306633 -1.11037 - vertex -0.917027 -0.380206 -1.09871 - endloop - endfacet - facet normal -0.729915 -0.217805 -0.647908 - outer loop - vertex -0.981485 -0.307433 -1.05056 - vertex -0.917027 -0.380206 -1.09871 - vertex -0.968369 -0.381505 -1.04044 - endloop - endfacet - facet normal -0.71363 -0.295196 -0.635288 - outer loop - vertex -0.968369 -0.381505 -1.04044 - vertex -0.917027 -0.380206 -1.09871 - vertex -0.901768 -0.449932 -1.08345 - endloop - endfacet - facet normal -0.713493 -0.294869 -0.635594 - outer loop - vertex -0.968369 -0.381505 -1.04044 - vertex -0.901768 -0.449932 -1.08345 - vertex -0.950866 -0.451852 -1.02745 - endloop - endfacet - facet normal -0.691939 -0.371045 -0.619311 - outer loop - vertex -0.950866 -0.451852 -1.02745 - vertex -0.901768 -0.449932 -1.08345 - vertex -0.883489 -0.514528 -1.06518 - endloop - endfacet - facet normal -0.691768 -0.370577 -0.619782 - outer loop - vertex -0.950866 -0.451852 -1.02745 - vertex -0.883489 -0.514528 -1.06518 - vertex -0.929451 -0.51723 -1.01226 - endloop - endfacet - facet normal -0.667106 -0.439022 -0.601855 - outer loop - vertex -0.929451 -0.51723 -1.01226 - vertex -0.883489 -0.514528 -1.06518 - vertex -0.863602 -0.572013 -1.04529 - endloop - endfacet - facet normal -0.667204 -0.43935 -0.601507 - outer loop - vertex -0.929451 -0.51723 -1.01226 - vertex -0.863602 -0.572013 -1.04529 - vertex -0.90466 -0.576118 -0.996746 - endloop - endfacet - facet normal -0.637047 -0.505851 -0.581623 - outer loop - vertex -0.90466 -0.576118 -0.996746 - vertex -0.863602 -0.572013 -1.04529 - vertex -0.843516 -0.620402 -1.0252 - endloop - endfacet - facet normal -0.637008 -0.505665 -0.581828 - outer loop - vertex -0.90466 -0.576118 -0.996746 - vertex -0.843516 -0.620402 -1.0252 - vertex -0.877026 -0.626995 -0.982784 - endloop - endfacet - facet normal -0.600568 -0.568022 -0.562733 - outer loop - vertex -0.877026 -0.626995 -0.982784 - vertex -0.843516 -0.620402 -1.0252 - vertex -0.827436 -0.653333 -1.00912 - endloop - endfacet - facet normal -0.600568 -0.562734 -0.568022 - outer loop - vertex -0.877026 -0.626995 -0.982784 - vertex -0.827436 -0.653333 -1.00912 - vertex -0.843516 -0.669413 -0.976191 - endloop - endfacet - facet normal -0.992246 -0.0422546 -0.11689 - outer loop - vertex -1.20712 -0.153076 -0.457381 - vertex -1.20336 -0.242838 -0.456883 - vertex -1.21599 -0.244167 -0.34921 - endloop - endfacet - facet normal -0.99229 -0.0419412 -0.116629 - outer loop - vertex -1.20712 -0.153076 -0.457381 - vertex -1.21599 -0.244167 -0.34921 - vertex -1.2198 -0.153076 -0.349542 - endloop - endfacet - facet normal -0.995935 -0.041959 -0.0797075 - outer loop - vertex -1.2198 -0.153076 -0.349542 - vertex -1.21599 -0.244167 -0.34921 - vertex -1.22485 -0.245185 -0.237864 - endloop - endfacet - facet normal -0.995958 -0.0417466 -0.0795333 - outer loop - vertex -1.2198 -0.153076 -0.349542 - vertex -1.22485 -0.245185 -0.237864 - vertex -1.2287 -0.153076 -0.238072 - endloop - endfacet - facet normal -0.998167 -0.0417582 -0.0437977 - outer loop - vertex -1.2287 -0.153076 -0.238072 - vertex -1.22485 -0.245185 -0.237864 - vertex -1.22981 -0.245959 -0.124123 - endloop - endfacet - facet normal -0.998183 -0.0415597 -0.043636 - outer loop - vertex -1.2287 -0.153076 -0.238072 - vertex -1.22981 -0.245959 -0.124123 - vertex -1.23368 -0.153076 -0.124242 - endloop - endfacet - facet normal -0.999104 -0.0415525 -0.00802043 - outer loop - vertex -1.23368 -0.153076 -0.124242 - vertex -1.22981 -0.245959 -0.124123 - vertex -1.23071 -0.246557 -0.00926336 - endloop - endfacet - facet normal -0.999116 -0.0412984 -0.00781355 - outer loop - vertex -1.23368 -0.153076 -0.124242 - vertex -1.23071 -0.246557 -0.00926336 - vertex -1.23457 -0.153076 -0.0093227 - endloop - endfacet - facet normal -0.998737 -0.0412596 0.0286882 - outer loop - vertex -1.23457 -0.153076 -0.0093227 - vertex -1.23071 -0.246557 -0.00926336 - vertex -1.2274 -0.247048 0.105437 - endloop - endfacet - facet normal -0.998743 -0.0408892 0.0289919 - outer loop - vertex -1.23457 -0.153076 -0.0093227 - vertex -1.2274 -0.247048 0.105437 - vertex -1.23124 -0.153076 0.105413 - endloop - endfacet - facet normal -0.992678 -0.0406194 0.113756 - outer loop - vertex -1.23124 -0.153076 0.105413 - vertex -1.2274 -0.247048 0.105437 - vertex -1.21498 -0.247661 0.213522 - endloop - endfacet - facet normal -0.99263 -0.0398127 0.114455 - outer loop - vertex -1.23124 -0.153076 0.105413 - vertex -1.21498 -0.247661 0.213522 - vertex -1.21878 -0.153076 0.213516 - endloop - endfacet - facet normal -0.962905 -0.0386107 0.267062 - outer loop - vertex -1.21878 -0.153076 0.213516 - vertex -1.21498 -0.247661 0.213522 - vertex -1.18859 -0.248626 0.308537 - endloop - endfacet - facet normal -0.962569 -0.0370854 0.268489 - outer loop - vertex -1.21878 -0.153076 0.213516 - vertex -1.18859 -0.248626 0.308537 - vertex -1.19227 -0.153076 0.308537 - endloop - endfacet - facet normal -0.857519 -0.0330381 0.51339 - outer loop - vertex -1.19227 -0.153076 0.308537 - vertex -1.18859 -0.248626 0.308537 - vertex -1.14334 -0.250173 0.384027 - endloop - endfacet - facet normal -0.856314 -0.0307597 0.515539 - outer loop - vertex -1.19227 -0.153076 0.308537 - vertex -1.14334 -0.250173 0.384027 - vertex -1.14683 -0.153076 0.384027 - endloop - endfacet - facet normal -0.984922 -0.12675 -0.117745 - outer loop - vertex -1.20336 -0.242838 -0.456883 - vertex -1.19208 -0.331668 -0.455637 - vertex -1.20456 -0.334312 -0.348379 - endloop - endfacet - facet normal -0.985101 -0.125966 -0.117085 - outer loop - vertex -1.20336 -0.242838 -0.456883 - vertex -1.20456 -0.334312 -0.348379 - vertex -1.21599 -0.244167 -0.34921 - endloop - endfacet - facet normal -0.988756 -0.126091 -0.0803903 - outer loop - vertex -1.21599 -0.244167 -0.34921 - vertex -1.20456 -0.334312 -0.348379 - vertex -1.21333 -0.336329 -0.237353 - endloop - endfacet - facet normal -0.988869 -0.125509 -0.0799082 - outer loop - vertex -1.21599 -0.244167 -0.34921 - vertex -1.21333 -0.336329 -0.237353 - vertex -1.22485 -0.245185 -0.237864 - endloop - endfacet - facet normal -0.991081 -0.12559 -0.0445664 - outer loop - vertex -1.22485 -0.245185 -0.237864 - vertex -1.21333 -0.336329 -0.237353 - vertex -1.21824 -0.337847 -0.123858 - endloop - endfacet - facet normal -0.991181 -0.124974 -0.0440594 - outer loop - vertex -1.22485 -0.245185 -0.237864 - vertex -1.21824 -0.337847 -0.123858 - vertex -1.22981 -0.245959 -0.124123 - endloop - endfacet - facet normal -0.992116 -0.124991 -0.00909693 - outer loop - vertex -1.22981 -0.245959 -0.124123 - vertex -1.21824 -0.337847 -0.123858 - vertex -1.21915 -0.338995 -0.00919506 - endloop - endfacet - facet normal -0.992229 -0.124139 -0.00839687 - outer loop - vertex -1.22981 -0.245959 -0.124123 - vertex -1.21915 -0.338995 -0.00919506 - vertex -1.23071 -0.246557 -0.00926336 - endloop - endfacet - facet normal -0.991903 -0.124072 0.027112 - outer loop - vertex -1.23071 -0.246557 -0.00926336 - vertex -1.21915 -0.338995 -0.00919506 - vertex -1.2159 -0.339902 0.105336 - endloop - endfacet - facet normal -0.992029 -0.122823 0.0281455 - outer loop - vertex -1.23071 -0.246557 -0.00926336 - vertex -1.2159 -0.339902 0.105336 - vertex -1.2274 -0.247048 0.105437 - endloop - endfacet - facet normal -0.986356 -0.12221 0.110303 - outer loop - vertex -1.2274 -0.247048 0.105437 - vertex -1.2159 -0.339902 0.105336 - vertex -1.20369 -0.341054 0.213278 - endloop - endfacet - facet normal -0.986417 -0.119603 0.112589 - outer loop - vertex -1.2274 -0.247048 0.105437 - vertex -1.20369 -0.341054 0.213278 - vertex -1.21498 -0.247661 0.213522 - endloop - endfacet - facet normal -0.958457 -0.116607 0.260313 - outer loop - vertex -1.21498 -0.247661 0.213522 - vertex -1.20369 -0.341054 0.213278 - vertex -1.17769 -0.342938 0.308176 - endloop - endfacet - facet normal -0.957776 -0.111788 0.264894 - outer loop - vertex -1.21498 -0.247661 0.213522 - vertex -1.17769 -0.342938 0.308176 - vertex -1.18859 -0.248626 0.308537 - endloop - endfacet - facet normal -0.858035 -0.101167 0.503528 - outer loop - vertex -1.18859 -0.248626 0.308537 - vertex -1.17769 -0.342938 0.308176 - vertex -1.13307 -0.346042 0.383572 - endloop - endfacet - facet normal -0.854744 -0.0939387 0.510478 - outer loop - vertex -1.18859 -0.248626 0.308537 - vertex -1.13307 -0.346042 0.383572 - vertex -1.14334 -0.250173 0.384027 - endloop - endfacet - facet normal -0.969991 -0.211992 -0.119066 - outer loop - vertex -1.19208 -0.331668 -0.455637 - vertex -1.17328 -0.418635 -0.453892 - vertex -1.18552 -0.422563 -0.347216 - endloop - endfacet - facet normal -0.970346 -0.210893 -0.118123 - outer loop - vertex -1.19208 -0.331668 -0.455637 - vertex -1.18552 -0.422563 -0.347216 - vertex -1.20456 -0.334312 -0.348379 - endloop - endfacet - facet normal -0.974038 -0.211207 -0.0815017 - outer loop - vertex -1.20456 -0.334312 -0.348379 - vertex -1.18552 -0.422563 -0.347216 - vertex -1.19413 -0.425542 -0.23665 - endloop - endfacet - facet normal -0.974284 -0.210348 -0.0807776 - outer loop - vertex -1.20456 -0.334312 -0.348379 - vertex -1.19413 -0.425542 -0.23665 - vertex -1.21333 -0.336329 -0.237353 - endloop - endfacet - facet normal -0.976505 -0.210551 -0.04589 - outer loop - vertex -1.21333 -0.336329 -0.237353 - vertex -1.19413 -0.425542 -0.23665 - vertex -1.19897 -0.427746 -0.123539 - endloop - endfacet - facet normal -0.976755 -0.209569 -0.0450699 - outer loop - vertex -1.21333 -0.336329 -0.237353 - vertex -1.19897 -0.427746 -0.123539 - vertex -1.21824 -0.337847 -0.123858 - endloop - endfacet - facet normal -0.977714 -0.209654 -0.0109859 - outer loop - vertex -1.21824 -0.337847 -0.123858 - vertex -1.19897 -0.427746 -0.123539 - vertex -1.19991 -0.429348 -0.00922753 - endloop - endfacet - facet normal -0.978025 -0.208255 -0.00981935 - outer loop - vertex -1.21824 -0.337847 -0.123858 - vertex -1.19991 -0.429348 -0.00922753 - vertex -1.21915 -0.338995 -0.00919506 - endloop - endfacet - facet normal -0.97778 -0.208215 0.0243501 - outer loop - vertex -1.21915 -0.338995 -0.00919506 - vertex -1.19991 -0.429348 -0.00922753 - vertex -1.19681 -0.430522 0.104939 - endloop - endfacet - facet normal -0.978171 -0.206162 0.0260732 - outer loop - vertex -1.21915 -0.338995 -0.00919506 - vertex -1.19681 -0.430522 0.104939 - vertex -1.2159 -0.339902 0.105336 - endloop - endfacet - facet normal -0.973116 -0.205439 0.104119 - outer loop - vertex -1.2159 -0.339902 0.105336 - vertex -1.19681 -0.430522 0.104939 - vertex -1.18498 -0.432065 0.212524 - endloop - endfacet - facet normal -0.973604 -0.201067 0.108019 - outer loop - vertex -1.2159 -0.339902 0.105336 - vertex -1.18498 -0.432065 0.212524 - vertex -1.20369 -0.341054 0.213278 - endloop - endfacet - facet normal -0.948502 -0.197067 0.248009 - outer loop - vertex -1.20369 -0.341054 0.213278 - vertex -1.18498 -0.432065 0.212524 - vertex -1.15969 -0.434776 0.307092 - endloop - endfacet - facet normal -0.948048 -0.188828 0.256026 - outer loop - vertex -1.20369 -0.341054 0.213278 - vertex -1.15969 -0.434776 0.307092 - vertex -1.17769 -0.342938 0.308176 - endloop - endfacet - facet normal -0.857086 -0.173704 0.485006 - outer loop - vertex -1.17769 -0.342938 0.308176 - vertex -1.15969 -0.434776 0.307092 - vertex -1.11623 -0.439453 0.382207 - endloop - endfacet - facet normal -0.852301 -0.160939 0.497676 - outer loop - vertex -1.17769 -0.342938 0.308176 - vertex -1.11623 -0.439453 0.382207 - vertex -1.13307 -0.346042 0.383572 - endloop - endfacet - facet normal -0.946716 -0.298597 -0.120701 - outer loop - vertex -1.17328 -0.418635 -0.453892 - vertex -1.14699 -0.502805 -0.451898 - vertex -1.15888 -0.507973 -0.345887 - endloop - endfacet - facet normal -0.947247 -0.297353 -0.119601 - outer loop - vertex -1.17328 -0.418635 -0.453892 - vertex -1.15888 -0.507973 -0.345887 - vertex -1.18552 -0.422563 -0.347216 - endloop - endfacet - facet normal -0.950974 -0.297945 -0.0829254 - outer loop - vertex -1.18552 -0.422563 -0.347216 - vertex -1.15888 -0.507973 -0.345887 - vertex -1.16725 -0.51186 -0.235868 - endloop - endfacet - facet normal -0.951368 -0.29693 -0.0820472 - outer loop - vertex -1.18552 -0.422563 -0.347216 - vertex -1.16725 -0.51186 -0.235868 - vertex -1.19413 -0.425542 -0.23665 - endloop - endfacet - facet normal -0.953592 -0.29731 -0.0476353 - outer loop - vertex -1.19413 -0.425542 -0.23665 - vertex -1.16725 -0.51186 -0.235868 - vertex -1.172 -0.514662 -0.123256 - endloop - endfacet - facet normal -0.954022 -0.296093 -0.0465946 - outer loop - vertex -1.19413 -0.425542 -0.23665 - vertex -1.172 -0.514662 -0.123256 - vertex -1.19897 -0.427746 -0.123539 - endloop - endfacet - facet normal -0.955003 -0.29629 -0.0134868 - outer loop - vertex -1.19897 -0.427746 -0.123539 - vertex -1.172 -0.514662 -0.123256 - vertex -1.17302 -0.516573 -0.00947047 - endloop - endfacet - facet normal -0.955565 -0.294536 -0.0119931 - outer loop - vertex -1.19897 -0.427746 -0.123539 - vertex -1.17302 -0.516573 -0.00947047 - vertex -1.19991 -0.429348 -0.00922753 - endloop - endfacet - facet normal -0.955403 -0.294577 0.0207232 - outer loop - vertex -1.19991 -0.429348 -0.00922753 - vertex -1.17302 -0.516573 -0.00947047 - vertex -1.17018 -0.517789 0.104073 - endloop - endfacet - facet normal -0.956135 -0.292031 0.0229022 - outer loop - vertex -1.19991 -0.429348 -0.00922753 - vertex -1.17018 -0.517789 0.104073 - vertex -1.19681 -0.430522 0.104939 - endloop - endfacet - facet normal -0.951819 -0.291434 0.0954258 - outer loop - vertex -1.19681 -0.430522 0.104939 - vertex -1.17018 -0.517789 0.104073 - vertex -1.15894 -0.519501 0.210997 - endloop - endfacet - facet normal -0.953039 -0.285594 0.10076 - outer loop - vertex -1.19681 -0.430522 0.104939 - vertex -1.15894 -0.519501 0.210997 - vertex -1.18498 -0.432065 0.212524 - endloop - endfacet - facet normal -0.931625 -0.281472 0.229886 - outer loop - vertex -1.18498 -0.432065 0.212524 - vertex -1.15894 -0.519501 0.210997 - vertex -1.13473 -0.522901 0.304924 - endloop - endfacet - facet normal -0.932106 -0.269887 0.241536 - outer loop - vertex -1.18498 -0.432065 0.212524 - vertex -1.13473 -0.522901 0.304924 - vertex -1.15969 -0.434776 0.307092 - endloop - endfacet - facet normal -0.853222 -0.25283 0.456168 - outer loop - vertex -1.15969 -0.434776 0.307092 - vertex -1.13473 -0.522901 0.304924 - vertex -1.09301 -0.529179 0.379476 - endloop - endfacet - facet normal -0.847828 -0.233889 0.475903 - outer loop - vertex -1.15969 -0.434776 0.307092 - vertex -1.09301 -0.529179 0.379476 - vertex -1.11623 -0.439453 0.382207 - endloop - endfacet - facet normal -0.913954 -0.386897 -0.122471 - outer loop - vertex -1.14699 -0.502805 -0.451898 - vertex -1.1132 -0.583246 -0.449905 - vertex -1.12463 -0.589596 -0.344558 - endloop - endfacet - facet normal -0.914619 -0.385678 -0.121348 - outer loop - vertex -1.14699 -0.502805 -0.451898 - vertex -1.12463 -0.589596 -0.344558 - vertex -1.15888 -0.507973 -0.345887 - endloop - endfacet - facet normal -0.91835 -0.386643 -0.0844948 - outer loop - vertex -1.15888 -0.507973 -0.345887 - vertex -1.12463 -0.589596 -0.344558 - vertex -1.13272 -0.594318 -0.235117 - endloop - endfacet - facet normal -0.918863 -0.385623 -0.0835786 - outer loop - vertex -1.15888 -0.507973 -0.345887 - vertex -1.13272 -0.594318 -0.235117 - vertex -1.16725 -0.51186 -0.235868 - endloop - endfacet - facet normal -0.921067 -0.386237 -0.0495646 - outer loop - vertex -1.16725 -0.51186 -0.235868 - vertex -1.13272 -0.594318 -0.235117 - vertex -1.13737 -0.597599 -0.123102 - endloop - endfacet - facet normal -0.921645 -0.384996 -0.0484685 - outer loop - vertex -1.16725 -0.51186 -0.235868 - vertex -1.13737 -0.597599 -0.123102 - vertex -1.172 -0.514662 -0.123256 - endloop - endfacet - facet normal -0.922629 -0.385347 -0.0162109 - outer loop - vertex -1.172 -0.514662 -0.123256 - vertex -1.13737 -0.597599 -0.123102 - vertex -1.13851 -0.599627 -0.0100336 - endloop - endfacet - facet normal -0.923385 -0.383594 -0.0146714 - outer loop - vertex -1.172 -0.514662 -0.123256 - vertex -1.13851 -0.599627 -0.0100336 - vertex -1.17302 -0.516573 -0.00947047 - endloop - endfacet - facet normal -0.923278 -0.383763 0.0168491 - outer loop - vertex -1.17302 -0.516573 -0.00947047 - vertex -1.13851 -0.599627 -0.0100336 - vertex -1.13605 -0.600587 0.102567 - endloop - endfacet - facet normal -0.924254 -0.381303 0.0190158 - outer loop - vertex -1.17302 -0.516573 -0.00947047 - vertex -1.13605 -0.600587 0.102567 - vertex -1.17018 -0.517789 0.104073 - endloop - endfacet - facet normal -0.920675 -0.381023 0.0847291 - outer loop - vertex -1.17018 -0.517789 0.104073 - vertex -1.13605 -0.600587 0.102567 - vertex -1.12565 -0.602173 0.208436 - endloop - endfacet - facet normal -0.922812 -0.374336 0.0910477 - outer loop - vertex -1.17018 -0.517789 0.104073 - vertex -1.12565 -0.602173 0.208436 - vertex -1.15894 -0.519501 0.210997 - endloop - endfacet - facet normal -0.905583 -0.370951 0.205705 - outer loop - vertex -1.15894 -0.519501 0.210997 - vertex -1.12565 -0.602173 0.208436 - vertex -1.10296 -0.606077 0.30131 - endloop - endfacet - facet normal -0.907812 -0.356399 0.221038 - outer loop - vertex -1.15894 -0.519501 0.210997 - vertex -1.10296 -0.606077 0.30131 - vertex -1.13473 -0.522901 0.304924 - endloop - endfacet - facet normal -0.843993 -0.340423 0.414472 - outer loop - vertex -1.13473 -0.522901 0.304924 - vertex -1.10296 -0.606077 0.30131 - vertex -1.06361 -0.613991 0.374925 - endloop - endfacet - facet normal -0.839358 -0.314729 0.443197 - outer loop - vertex -1.13473 -0.522901 0.304924 - vertex -1.06361 -0.613991 0.374925 - vertex -1.09301 -0.529179 0.379476 - endloop - endfacet - facet normal -0.870222 -0.476759 -0.124156 - outer loop - vertex -1.1132 -0.583246 -0.449905 - vertex -1.07194 -0.659028 -0.44816 - vertex -1.0828 -0.666484 -0.343395 - endloop - endfacet - facet normal -0.870923 -0.475737 -0.123158 - outer loop - vertex -1.1132 -0.583246 -0.449905 - vertex -1.0828 -0.666484 -0.343395 - vertex -1.12463 -0.589596 -0.344558 - endloop - endfacet - facet normal -0.874594 -0.477172 -0.0859817 - outer loop - vertex -1.12463 -0.589596 -0.344558 - vertex -1.0828 -0.666484 -0.343395 - vertex -1.09052 -0.671965 -0.234478 - endloop - endfacet - facet normal -0.875139 -0.476317 -0.0851731 - outer loop - vertex -1.12463 -0.589596 -0.344558 - vertex -1.09052 -0.671965 -0.234478 - vertex -1.13272 -0.594318 -0.235117 - endloop - endfacet - facet normal -0.877289 -0.477207 -0.0513495 - outer loop - vertex -1.13272 -0.594318 -0.235117 - vertex -1.09052 -0.671965 -0.234478 - vertex -1.09505 -0.675627 -0.123039 - endloop - endfacet - facet normal -0.877897 -0.47619 -0.0504069 - outer loop - vertex -1.13272 -0.594318 -0.235117 - vertex -1.09505 -0.675627 -0.123039 - vertex -1.13737 -0.597599 -0.123102 - endloop - endfacet - facet normal -0.878872 -0.476693 -0.0186736 - outer loop - vertex -1.13737 -0.597599 -0.123102 - vertex -1.09505 -0.675627 -0.123039 - vertex -1.09635 -0.677624 -0.0107065 - endloop - endfacet - facet normal -0.879656 -0.475293 -0.0173905 - outer loop - vertex -1.13737 -0.597599 -0.123102 - vertex -1.09635 -0.677624 -0.0107065 - vertex -1.13851 -0.599627 -0.0100336 - endloop - endfacet - facet normal -0.879599 -0.475527 0.013414 - outer loop - vertex -1.13851 -0.599627 -0.0100336 - vertex -1.09635 -0.677624 -0.0107065 - vertex -1.09438 -0.678112 0.100889 - endloop - endfacet - facet normal -0.880594 -0.47363 0.0151524 - outer loop - vertex -1.13851 -0.599627 -0.0100336 - vertex -1.09438 -0.678112 0.100889 - vertex -1.13605 -0.600587 0.102567 - endloop - endfacet - facet normal -0.877855 -0.4734 0.0725468 - outer loop - vertex -1.13605 -0.600587 0.102567 - vertex -1.09438 -0.678112 0.100889 - vertex -1.08539 -0.678831 0.204991 - endloop - endfacet - facet normal -0.881048 -0.466288 0.0795595 - outer loop - vertex -1.13605 -0.600587 0.102567 - vertex -1.08539 -0.678831 0.204991 - vertex -1.12565 -0.602173 0.208436 - endloop - endfacet - facet normal -0.868033 -0.463837 0.177128 - outer loop - vertex -1.12565 -0.602173 0.208436 - vertex -1.08539 -0.678831 0.204991 - vertex -1.06562 -0.681517 0.294843 - endloop - endfacet - facet normal -0.872439 -0.448417 0.19435 - outer loop - vertex -1.12565 -0.602173 0.208436 - vertex -1.06562 -0.681517 0.294843 - vertex -1.10296 -0.606077 0.30131 - endloop - endfacet - facet normal -0.822864 -0.438232 0.361729 - outer loop - vertex -1.10296 -0.606077 0.30131 - vertex -1.06562 -0.681517 0.294843 - vertex -1.03034 -0.689657 0.365244 - endloop - endfacet - facet normal -0.821392 -0.411709 0.394729 - outer loop - vertex -1.10296 -0.606077 0.30131 - vertex -1.03034 -0.689657 0.365244 - vertex -1.06361 -0.613991 0.374925 - endloop - endfacet - facet normal -0.81383 -0.567391 -0.125489 - outer loop - vertex -1.07194 -0.659028 -0.44816 - vertex -1.02319 -0.729217 -0.446914 - vertex -1.03338 -0.737691 -0.342564 - endloop - endfacet - facet normal -0.814412 -0.566714 -0.124772 - outer loop - vertex -1.07194 -0.659028 -0.44816 - vertex -1.03338 -0.737691 -0.342564 - vertex -1.0828 -0.666484 -0.343395 - endloop - endfacet - facet normal -0.817913 -0.568704 -0.0871452 - outer loop - vertex -1.0828 -0.666484 -0.343395 - vertex -1.03338 -0.737691 -0.342564 - vertex -1.04066 -0.743853 -0.234031 - endloop - endfacet - facet normal -0.818363 -0.568144 -0.0865755 - outer loop - vertex -1.0828 -0.666484 -0.343395 - vertex -1.04066 -0.743853 -0.234031 - vertex -1.09052 -0.671965 -0.234478 - endloop - endfacet - facet normal -0.820405 -0.56935 -0.0526916 - outer loop - vertex -1.09052 -0.671965 -0.234478 - vertex -1.04066 -0.743853 -0.234031 - vertex -1.04504 -0.747813 -0.12303 - endloop - endfacet - facet normal -0.820886 -0.568714 -0.0520628 - outer loop - vertex -1.09052 -0.671965 -0.234478 - vertex -1.04504 -0.747813 -0.12303 - vertex -1.09505 -0.675627 -0.123039 - endloop - endfacet - facet normal -0.82183 -0.569365 -0.0204612 - outer loop - vertex -1.09505 -0.675627 -0.123039 - vertex -1.04504 -0.747813 -0.12303 - vertex -1.04653 -0.749679 -0.0112786 - endloop - endfacet - facet normal -0.822426 -0.568533 -0.0196516 - outer loop - vertex -1.09505 -0.675627 -0.123039 - vertex -1.04653 -0.749679 -0.0112786 - vertex -1.09635 -0.677624 -0.0107065 - endloop - endfacet - facet normal -0.822421 -0.568773 0.0109732 - outer loop - vertex -1.09635 -0.677624 -0.0107065 - vertex -1.04653 -0.749679 -0.0112786 - vertex -1.04513 -0.749562 0.0995073 - endloop - endfacet - facet normal -0.823151 -0.567695 0.0120162 - outer loop - vertex -1.09635 -0.677624 -0.0107065 - vertex -1.04513 -0.749562 0.0995073 - vertex -1.09438 -0.678112 0.100889 - endloop - endfacet - facet normal -0.821185 -0.567302 0.0618327 - outer loop - vertex -1.09438 -0.678112 0.100889 - vertex -1.04513 -0.749562 0.0995073 - vertex -1.03842 -0.748227 0.20081 - endloop - endfacet - facet normal -0.824372 -0.562031 0.0673164 - outer loop - vertex -1.09438 -0.678112 0.100889 - vertex -1.03842 -0.748227 0.20081 - vertex -1.08539 -0.678831 0.204991 - endloop - endfacet - facet normal -0.81407 -0.560225 0.153094 - outer loop - vertex -1.08539 -0.678831 0.204991 - vertex -1.03842 -0.748227 0.20081 - vertex -1.02399 -0.746438 0.284113 - endloop - endfacet - facet normal -0.817942 -0.551584 0.163483 - outer loop - vertex -1.08539 -0.678831 0.204991 - vertex -1.02399 -0.746438 0.284113 - vertex -1.06562 -0.681517 0.294843 - endloop - endfacet - facet normal -0.778322 -0.54939 0.303951 - outer loop - vertex -1.06562 -0.681517 0.294843 - vertex -1.02399 -0.746438 0.284113 - vertex -0.995492 -0.751946 0.347126 - endloop - endfacet - facet normal -0.779957 -0.532151 0.329366 - outer loop - vertex -1.06562 -0.681517 0.294843 - vertex -0.995492 -0.751946 0.347126 - vertex -1.03034 -0.689657 0.365244 - endloop - endfacet - facet normal -0.743161 -0.657109 -0.126173 - outer loop - vertex -1.02319 -0.729217 -0.446914 - vertex -0.966985 -0.792882 -0.446415 - vertex -0.976373 -0.802269 -0.342232 - endloop - endfacet - facet normal -0.743424 -0.656866 -0.125885 - outer loop - vertex -1.02319 -0.729217 -0.446914 - vertex -0.976373 -0.802269 -0.342232 - vertex -1.03338 -0.737691 -0.342564 - endloop - endfacet - facet normal -0.746595 -0.659469 -0.0877319 - outer loop - vertex -1.03338 -0.737691 -0.342564 - vertex -0.976373 -0.802269 -0.342232 - vertex -0.983135 -0.809032 -0.233855 - endloop - endfacet - facet normal -0.746789 -0.659278 -0.0875172 - outer loop - vertex -1.03338 -0.737691 -0.342564 - vertex -0.983135 -0.809032 -0.233855 - vertex -1.04066 -0.743853 -0.234031 - endloop - endfacet - facet normal -0.748644 -0.660823 -0.053339 - outer loop - vertex -1.04066 -0.743853 -0.234031 - vertex -0.983135 -0.809032 -0.233855 - vertex -0.987329 -0.813225 -0.123039 - endloop - endfacet - facet normal -0.748835 -0.660624 -0.0531228 - outer loop - vertex -1.04066 -0.743853 -0.234031 - vertex -0.987329 -0.813225 -0.123039 - vertex -1.04504 -0.747813 -0.12303 - endloop - endfacet - facet normal -0.749722 -0.661411 -0.0212866 - outer loop - vertex -1.04504 -0.747813 -0.12303 - vertex -0.987329 -0.813225 -0.123039 - vertex -0.989011 -0.814907 -0.0115394 - endloop - endfacet - facet normal -0.749936 -0.661175 -0.0210369 - outer loop - vertex -1.04504 -0.747813 -0.12303 - vertex -0.989011 -0.814907 -0.0115394 - vertex -1.04653 -0.749679 -0.0112786 - endloop - endfacet - facet normal -0.750005 -0.661359 0.00987881 - outer loop - vertex -1.04653 -0.749679 -0.0112786 - vertex -0.989011 -0.814907 -0.0115394 - vertex -0.988238 -0.814134 0.0988907 - endloop - endfacet - facet normal -0.750238 -0.661089 0.0101601 - outer loop - vertex -1.04653 -0.749679 -0.0112786 - vertex -0.988238 -0.814134 0.0988907 - vertex -1.04513 -0.749562 0.0995073 - endloop - endfacet - facet normal -0.748855 -0.660314 0.0565854 - outer loop - vertex -1.04513 -0.749562 0.0995073 - vertex -0.988238 -0.814134 0.0988907 - vertex -0.984236 -0.810133 0.198536 - endloop - endfacet - facet normal -0.750119 -0.658726 0.058334 - outer loop - vertex -1.04513 -0.749562 0.0995073 - vertex -0.984236 -0.810133 0.198536 - vertex -1.03842 -0.748227 0.20081 - endloop - endfacet - facet normal -0.742337 -0.654961 0.141285 - outer loop - vertex -1.03842 -0.748227 0.20081 - vertex -0.984236 -0.810133 0.198536 - vertex -0.976234 -0.80213 0.277683 - endloop - endfacet - facet normal -0.743143 -0.653715 0.142812 - outer loop - vertex -1.03842 -0.748227 0.20081 - vertex -0.976234 -0.80213 0.277683 - vertex -1.02399 -0.746438 0.284113 - endloop - endfacet - facet normal -0.715155 -0.644467 0.270584 - outer loop - vertex -1.02399 -0.746438 0.284113 - vertex -0.976234 -0.80213 0.277683 - vertex -0.966663 -0.79256 0.325773 - endloop - endfacet - facet normal -0.714298 -0.647132 0.266455 - outer loop - vertex -1.02399 -0.746438 0.284113 - vertex -0.966663 -0.79256 0.325773 - vertex -0.995492 -0.751946 0.347126 - endloop - endfacet - facet normal -0.992289 0.0419425 -0.116629 - outer loop - vertex -1.20712 -0.153076 -0.457381 - vertex -1.2198 -0.153076 -0.349542 - vertex -1.21599 -0.0619842 -0.34921 - endloop - endfacet - facet normal -0.992246 0.0422546 -0.116889 - outer loop - vertex -1.20712 -0.153076 -0.457381 - vertex -1.21599 -0.0619842 -0.34921 - vertex -1.20336 -0.0633134 -0.456883 - endloop - endfacet - facet normal -0.985101 0.125964 -0.117084 - outer loop - vertex -1.20336 -0.0633134 -0.456883 - vertex -1.21599 -0.0619842 -0.34921 - vertex -1.20456 0.0281605 -0.348379 - endloop - endfacet - facet normal -0.984922 0.12675 -0.117745 - outer loop - vertex -1.20336 -0.0633134 -0.456883 - vertex -1.20456 0.0281605 -0.348379 - vertex -1.19208 0.0255169 -0.455637 - endloop - endfacet - facet normal -0.970346 0.210894 -0.118123 - outer loop - vertex -1.19208 0.0255169 -0.455637 - vertex -1.20456 0.0281605 -0.348379 - vertex -1.18552 0.116411 -0.347216 - endloop - endfacet - facet normal -0.969991 0.211994 -0.119066 - outer loop - vertex -1.19208 0.0255169 -0.455637 - vertex -1.18552 0.116411 -0.347216 - vertex -1.17328 0.112483 -0.453892 - endloop - endfacet - facet normal -0.947247 0.297354 -0.1196 - outer loop - vertex -1.17328 0.112483 -0.453892 - vertex -1.18552 0.116411 -0.347216 - vertex -1.15888 0.201822 -0.345887 - endloop - endfacet - facet normal -0.946716 0.298598 -0.120701 - outer loop - vertex -1.17328 0.112483 -0.453892 - vertex -1.15888 0.201822 -0.345887 - vertex -1.14699 0.196653 -0.451898 - endloop - endfacet - facet normal -0.914619 0.385678 -0.121348 - outer loop - vertex -1.14699 0.196653 -0.451898 - vertex -1.15888 0.201822 -0.345887 - vertex -1.12463 0.283444 -0.344558 - endloop - endfacet - facet normal -0.913954 0.386896 -0.122471 - outer loop - vertex -1.14699 0.196653 -0.451898 - vertex -1.12463 0.283444 -0.344558 - vertex -1.1132 0.277095 -0.449905 - endloop - endfacet - facet normal -0.870922 0.475738 -0.123158 - outer loop - vertex -1.1132 0.277095 -0.449905 - vertex -1.12463 0.283444 -0.344558 - vertex -1.0828 0.360332 -0.343395 - endloop - endfacet - facet normal -0.870222 0.476759 -0.124156 - outer loop - vertex -1.1132 0.277095 -0.449905 - vertex -1.0828 0.360332 -0.343395 - vertex -1.07194 0.352876 -0.44816 - endloop - endfacet - facet normal -0.814413 0.566714 -0.124771 - outer loop - vertex -1.07194 0.352876 -0.44816 - vertex -1.0828 0.360332 -0.343395 - vertex -1.03338 0.431539 -0.342564 - endloop - endfacet - facet normal -0.813829 0.567392 -0.12549 - outer loop - vertex -1.07194 0.352876 -0.44816 - vertex -1.03338 0.431539 -0.342564 - vertex -1.02319 0.423066 -0.446914 - endloop - endfacet - facet normal -0.743424 0.656867 -0.125885 - outer loop - vertex -1.02319 0.423066 -0.446914 - vertex -1.03338 0.431539 -0.342564 - vertex -0.976372 0.496118 -0.342232 - endloop - endfacet - facet normal -0.743161 0.657109 -0.126172 - outer loop - vertex -1.02319 0.423066 -0.446914 - vertex -0.976372 0.496118 -0.342232 - vertex -0.966985 0.48673 -0.446415 - endloop - endfacet - facet normal -0.995958 0.0417466 -0.0795333 - outer loop - vertex -1.2198 -0.153076 -0.349542 - vertex -1.2287 -0.153076 -0.238072 - vertex -1.22485 -0.0609667 -0.237864 - endloop - endfacet - facet normal -0.995935 0.0419603 -0.0797085 - outer loop - vertex -1.2198 -0.153076 -0.349542 - vertex -1.22485 -0.0609667 -0.237864 - vertex -1.21599 -0.0619842 -0.34921 - endloop - endfacet - facet normal -0.988869 0.125509 -0.0799092 - outer loop - vertex -1.21599 -0.0619842 -0.34921 - vertex -1.22485 -0.0609667 -0.237864 - vertex -1.21333 0.0301772 -0.237353 - endloop - endfacet - facet normal -0.988756 0.126089 -0.0803902 - outer loop - vertex -1.21599 -0.0619842 -0.34921 - vertex -1.21333 0.0301772 -0.237353 - vertex -1.20456 0.0281605 -0.348379 - endloop - endfacet - facet normal -0.974283 0.210349 -0.0807775 - outer loop - vertex -1.20456 0.0281605 -0.348379 - vertex -1.21333 0.0301772 -0.237353 - vertex -1.19413 0.119391 -0.23665 - endloop - endfacet - facet normal -0.974037 0.211208 -0.0815016 - outer loop - vertex -1.20456 0.0281605 -0.348379 - vertex -1.19413 0.119391 -0.23665 - vertex -1.18552 0.116411 -0.347216 - endloop - endfacet - facet normal -0.951367 0.296931 -0.0820471 - outer loop - vertex -1.18552 0.116411 -0.347216 - vertex -1.19413 0.119391 -0.23665 - vertex -1.16725 0.205709 -0.235868 - endloop - endfacet - facet normal -0.950974 0.297946 -0.0829254 - outer loop - vertex -1.18552 0.116411 -0.347216 - vertex -1.16725 0.205709 -0.235868 - vertex -1.15888 0.201822 -0.345887 - endloop - endfacet - facet normal -0.918863 0.385623 -0.0835786 - outer loop - vertex -1.15888 0.201822 -0.345887 - vertex -1.16725 0.205709 -0.235868 - vertex -1.13271 0.288166 -0.235117 - endloop - endfacet - facet normal -0.918351 0.386643 -0.0844948 - outer loop - vertex -1.15888 0.201822 -0.345887 - vertex -1.13271 0.288166 -0.235117 - vertex -1.12463 0.283444 -0.344558 - endloop - endfacet - facet normal -0.875138 0.476318 -0.0851731 - outer loop - vertex -1.12463 0.283444 -0.344558 - vertex -1.13271 0.288166 -0.235117 - vertex -1.09052 0.365813 -0.234478 - endloop - endfacet - facet normal -0.874593 0.477173 -0.0859819 - outer loop - vertex -1.12463 0.283444 -0.344558 - vertex -1.09052 0.365813 -0.234478 - vertex -1.0828 0.360332 -0.343395 - endloop - endfacet - facet normal -0.818362 0.568145 -0.0865756 - outer loop - vertex -1.0828 0.360332 -0.343395 - vertex -1.09052 0.365813 -0.234478 - vertex -1.04065 0.437701 -0.234031 - endloop - endfacet - facet normal -0.817913 0.568704 -0.0871444 - outer loop - vertex -1.0828 0.360332 -0.343395 - vertex -1.04065 0.437701 -0.234031 - vertex -1.03338 0.431539 -0.342564 - endloop - endfacet - facet normal -0.746789 0.659278 -0.0875166 - outer loop - vertex -1.03338 0.431539 -0.342564 - vertex -1.04065 0.437701 -0.234031 - vertex -0.983135 0.50288 -0.233855 - endloop - endfacet - facet normal -0.746594 0.659469 -0.0877321 - outer loop - vertex -1.03338 0.431539 -0.342564 - vertex -0.983135 0.50288 -0.233855 - vertex -0.976372 0.496118 -0.342232 - endloop - endfacet - facet normal -0.998183 0.0415597 -0.043636 - outer loop - vertex -1.2287 -0.153076 -0.238072 - vertex -1.23368 -0.153076 -0.124242 - vertex -1.22981 -0.0601929 -0.124123 - endloop - endfacet - facet normal -0.998167 0.0417582 -0.0437977 - outer loop - vertex -1.2287 -0.153076 -0.238072 - vertex -1.22981 -0.0601929 -0.124123 - vertex -1.22485 -0.0609667 -0.237864 - endloop - endfacet - facet normal -0.991181 0.124974 -0.0440593 - outer loop - vertex -1.22485 -0.0609667 -0.237864 - vertex -1.22981 -0.0601929 -0.124123 - vertex -1.21824 0.0316955 -0.123858 - endloop - endfacet - facet normal -0.991081 0.12559 -0.0445664 - outer loop - vertex -1.22485 -0.0609667 -0.237864 - vertex -1.21824 0.0316955 -0.123858 - vertex -1.21333 0.0301772 -0.237353 - endloop - endfacet - facet normal -0.976754 0.209571 -0.0450699 - outer loop - vertex -1.21333 0.0301772 -0.237353 - vertex -1.21824 0.0316955 -0.123858 - vertex -1.19897 0.121595 -0.123539 - endloop - endfacet - facet normal -0.976505 0.210553 -0.0458901 - outer loop - vertex -1.21333 0.0301772 -0.237353 - vertex -1.19897 0.121595 -0.123539 - vertex -1.19413 0.119391 -0.23665 - endloop - endfacet - facet normal -0.954022 0.296094 -0.0465947 - outer loop - vertex -1.19413 0.119391 -0.23665 - vertex -1.19897 0.121595 -0.123539 - vertex -1.172 0.20851 -0.123256 - endloop - endfacet - facet normal -0.953591 0.297312 -0.0476354 - outer loop - vertex -1.19413 0.119391 -0.23665 - vertex -1.172 0.20851 -0.123256 - vertex -1.16725 0.205709 -0.235868 - endloop - endfacet - facet normal -0.921644 0.384998 -0.0484687 - outer loop - vertex -1.16725 0.205709 -0.235868 - vertex -1.172 0.20851 -0.123256 - vertex -1.13737 0.291448 -0.123102 - endloop - endfacet - facet normal -0.921067 0.386237 -0.0495637 - outer loop - vertex -1.16725 0.205709 -0.235868 - vertex -1.13737 0.291448 -0.123102 - vertex -1.13271 0.288166 -0.235117 - endloop - endfacet - facet normal -0.877897 0.47619 -0.050406 - outer loop - vertex -1.13271 0.288166 -0.235117 - vertex -1.13737 0.291448 -0.123102 - vertex -1.09505 0.369475 -0.123039 - endloop - endfacet - facet normal -0.877289 0.477209 -0.0513492 - outer loop - vertex -1.13271 0.288166 -0.235117 - vertex -1.09505 0.369475 -0.123039 - vertex -1.09052 0.365813 -0.234478 - endloop - endfacet - facet normal -0.820886 0.568715 -0.0520625 - outer loop - vertex -1.09052 0.365813 -0.234478 - vertex -1.09505 0.369475 -0.123039 - vertex -1.04504 0.441661 -0.12303 - endloop - endfacet - facet normal -0.820404 0.569351 -0.0526916 - outer loop - vertex -1.09052 0.365813 -0.234478 - vertex -1.04504 0.441661 -0.12303 - vertex -1.04065 0.437701 -0.234031 - endloop - endfacet - facet normal -0.748835 0.660624 -0.0531228 - outer loop - vertex -1.04065 0.437701 -0.234031 - vertex -1.04504 0.441661 -0.12303 - vertex -0.987328 0.507074 -0.123039 - endloop - endfacet - facet normal -0.748644 0.660823 -0.0533393 - outer loop - vertex -1.04065 0.437701 -0.234031 - vertex -0.987328 0.507074 -0.123039 - vertex -0.983135 0.50288 -0.233855 - endloop - endfacet - facet normal -0.999116 0.0412984 -0.00781355 - outer loop - vertex -1.23368 -0.153076 -0.124242 - vertex -1.23457 -0.153076 -0.0093227 - vertex -1.23071 -0.0595947 -0.00926336 - endloop - endfacet - facet normal -0.999104 0.0415525 -0.00802043 - outer loop - vertex -1.23368 -0.153076 -0.124242 - vertex -1.23071 -0.0595947 -0.00926336 - vertex -1.22981 -0.0601929 -0.124123 - endloop - endfacet - facet normal -0.992229 0.12414 -0.00839687 - outer loop - vertex -1.22981 -0.0601929 -0.124123 - vertex -1.23071 -0.0595947 -0.00926336 - vertex -1.21915 0.0328437 -0.00919506 - endloop - endfacet - facet normal -0.992116 0.124991 -0.00909587 - outer loop - vertex -1.22981 -0.0601929 -0.124123 - vertex -1.21915 0.0328437 -0.00919506 - vertex -1.21824 0.0316955 -0.123858 - endloop - endfacet - facet normal -0.978025 0.208255 -0.00981828 - outer loop - vertex -1.21824 0.0316955 -0.123858 - vertex -1.21915 0.0328437 -0.00919506 - vertex -1.19991 0.123197 -0.00922752 - endloop - endfacet - facet normal -0.977714 0.209655 -0.0109858 - outer loop - vertex -1.21824 0.0316955 -0.123858 - vertex -1.19991 0.123197 -0.00922752 - vertex -1.19897 0.121595 -0.123539 - endloop - endfacet - facet normal -0.955565 0.294537 -0.011993 - outer loop - vertex -1.19897 0.121595 -0.123539 - vertex -1.19991 0.123197 -0.00922752 - vertex -1.17302 0.210421 -0.00947047 - endloop - endfacet - facet normal -0.955003 0.296291 -0.0134868 - outer loop - vertex -1.19897 0.121595 -0.123539 - vertex -1.17302 0.210421 -0.00947047 - vertex -1.172 0.20851 -0.123256 - endloop - endfacet - facet normal -0.923385 0.383595 -0.0146713 - outer loop - vertex -1.172 0.20851 -0.123256 - vertex -1.17302 0.210421 -0.00947047 - vertex -1.13851 0.293475 -0.0100336 - endloop - endfacet - facet normal -0.922629 0.385349 -0.0162111 - outer loop - vertex -1.172 0.20851 -0.123256 - vertex -1.13851 0.293475 -0.0100336 - vertex -1.13737 0.291448 -0.123102 - endloop - endfacet - facet normal -0.879655 0.475294 -0.0173907 - outer loop - vertex -1.13737 0.291448 -0.123102 - vertex -1.13851 0.293475 -0.0100336 - vertex -1.09635 0.371472 -0.0107065 - endloop - endfacet - facet normal -0.878871 0.476693 -0.0186728 - outer loop - vertex -1.13737 0.291448 -0.123102 - vertex -1.09635 0.371472 -0.0107065 - vertex -1.09505 0.369475 -0.123039 - endloop - endfacet - facet normal -0.822426 0.568532 -0.0196509 - outer loop - vertex -1.09505 0.369475 -0.123039 - vertex -1.09635 0.371472 -0.0107065 - vertex -1.04653 0.443528 -0.0112786 - endloop - endfacet - facet normal -0.82183 0.569365 -0.0204615 - outer loop - vertex -1.09505 0.369475 -0.123039 - vertex -1.04653 0.443528 -0.0112786 - vertex -1.04504 0.441661 -0.12303 - endloop - endfacet - facet normal -0.749936 0.661176 -0.0210372 - outer loop - vertex -1.04504 0.441661 -0.12303 - vertex -1.04653 0.443528 -0.0112786 - vertex -0.98901 0.508756 -0.0115394 - endloop - endfacet - facet normal -0.749722 0.66141 -0.0212858 - outer loop - vertex -1.04504 0.441661 -0.12303 - vertex -0.98901 0.508756 -0.0115394 - vertex -0.987328 0.507074 -0.123039 - endloop - endfacet - facet normal -0.998743 0.0408892 0.0289919 - outer loop - vertex -1.23457 -0.153076 -0.0093227 - vertex -1.23124 -0.153076 0.105413 - vertex -1.2274 -0.059104 0.105437 - endloop - endfacet - facet normal -0.998737 0.0412595 0.0286882 - outer loop - vertex -1.23457 -0.153076 -0.0093227 - vertex -1.2274 -0.059104 0.105437 - vertex -1.23071 -0.0595947 -0.00926336 - endloop - endfacet - facet normal -0.992029 0.122824 0.0281454 - outer loop - vertex -1.23071 -0.0595947 -0.00926336 - vertex -1.2274 -0.059104 0.105437 - vertex -1.2159 0.0337504 0.105336 - endloop - endfacet - facet normal -0.991903 0.124073 0.027112 - outer loop - vertex -1.23071 -0.0595947 -0.00926336 - vertex -1.2159 0.0337504 0.105336 - vertex -1.21915 0.0328437 -0.00919506 - endloop - endfacet - facet normal -0.97817 0.206163 0.0260732 - outer loop - vertex -1.21915 0.0328437 -0.00919506 - vertex -1.2159 0.0337504 0.105336 - vertex -1.19681 0.12437 0.104939 - endloop - endfacet - facet normal -0.97778 0.208215 0.0243511 - outer loop - vertex -1.21915 0.0328437 -0.00919506 - vertex -1.19681 0.12437 0.104939 - vertex -1.19991 0.123197 -0.00922752 - endloop - endfacet - facet normal -0.956134 0.292032 0.0229032 - outer loop - vertex -1.19991 0.123197 -0.00922752 - vertex -1.19681 0.12437 0.104939 - vertex -1.17018 0.211637 0.104073 - endloop - endfacet - facet normal -0.955403 0.294578 0.0207241 - outer loop - vertex -1.19991 0.123197 -0.00922752 - vertex -1.17018 0.211637 0.104073 - vertex -1.17302 0.210421 -0.00947047 - endloop - endfacet - facet normal -0.924254 0.381303 0.0190167 - outer loop - vertex -1.17302 0.210421 -0.00947047 - vertex -1.17018 0.211637 0.104073 - vertex -1.13605 0.294435 0.102567 - endloop - endfacet - facet normal -0.923277 0.383764 0.0168492 - outer loop - vertex -1.17302 0.210421 -0.00947047 - vertex -1.13605 0.294435 0.102567 - vertex -1.13851 0.293475 -0.0100336 - endloop - endfacet - facet normal -0.880593 0.473631 0.0151525 - outer loop - vertex -1.13851 0.293475 -0.0100336 - vertex -1.13605 0.294435 0.102567 - vertex -1.09438 0.371961 0.100889 - endloop - endfacet - facet normal -0.879598 0.475529 0.0134138 - outer loop - vertex -1.13851 0.293475 -0.0100336 - vertex -1.09438 0.371961 0.100889 - vertex -1.09635 0.371472 -0.0107065 - endloop - endfacet - facet normal -0.823151 0.567695 0.0120161 - outer loop - vertex -1.09635 0.371472 -0.0107065 - vertex -1.09438 0.371961 0.100889 - vertex -1.04513 0.443411 0.0995073 - endloop - endfacet - facet normal -0.822422 0.568772 0.0109735 - outer loop - vertex -1.09635 0.371472 -0.0107065 - vertex -1.04513 0.443411 0.0995073 - vertex -1.04653 0.443528 -0.0112786 - endloop - endfacet - facet normal -0.750238 0.66109 0.0101604 - outer loop - vertex -1.04653 0.443528 -0.0112786 - vertex -1.04513 0.443411 0.0995073 - vertex -0.988237 0.507983 0.0988907 - endloop - endfacet - facet normal -0.750004 0.66136 0.00987881 - outer loop - vertex -1.04653 0.443528 -0.0112786 - vertex -0.988237 0.507983 0.0988907 - vertex -0.98901 0.508756 -0.0115394 - endloop - endfacet - facet normal -0.99263 0.0398127 0.114455 - outer loop - vertex -1.23124 -0.153076 0.105413 - vertex -1.21878 -0.153076 0.213516 - vertex -1.21498 -0.058491 0.213522 - endloop - endfacet - facet normal -0.992678 0.0406194 0.113756 - outer loop - vertex -1.23124 -0.153076 0.105413 - vertex -1.21498 -0.058491 0.213522 - vertex -1.2274 -0.059104 0.105437 - endloop - endfacet - facet normal -0.986417 0.119606 0.112589 - outer loop - vertex -1.2274 -0.059104 0.105437 - vertex -1.21498 -0.058491 0.213522 - vertex -1.20369 0.0349024 0.213278 - endloop - endfacet - facet normal -0.986356 0.122211 0.110304 - outer loop - vertex -1.2274 -0.059104 0.105437 - vertex -1.20369 0.0349024 0.213278 - vertex -1.2159 0.0337504 0.105336 - endloop - endfacet - facet normal -0.973604 0.201066 0.10802 - outer loop - vertex -1.2159 0.0337504 0.105336 - vertex -1.20369 0.0349024 0.213278 - vertex -1.18498 0.125913 0.212524 - endloop - endfacet - facet normal -0.973116 0.20544 0.104118 - outer loop - vertex -1.2159 0.0337504 0.105336 - vertex -1.18498 0.125913 0.212524 - vertex -1.19681 0.12437 0.104939 - endloop - endfacet - facet normal -0.953039 0.285595 0.100759 - outer loop - vertex -1.19681 0.12437 0.104939 - vertex -1.18498 0.125913 0.212524 - vertex -1.15894 0.21335 0.210997 - endloop - endfacet - facet normal -0.951819 0.291435 0.0954246 - outer loop - vertex -1.19681 0.12437 0.104939 - vertex -1.15894 0.21335 0.210997 - vertex -1.17018 0.211637 0.104073 - endloop - endfacet - facet normal -0.922812 0.374336 0.0910466 - outer loop - vertex -1.17018 0.211637 0.104073 - vertex -1.15894 0.21335 0.210997 - vertex -1.12565 0.296021 0.208436 - endloop - endfacet - facet normal -0.920675 0.381023 0.0847281 - outer loop - vertex -1.17018 0.211637 0.104073 - vertex -1.12565 0.296021 0.208436 - vertex -1.13605 0.294435 0.102567 - endloop - endfacet - facet normal -0.881047 0.46629 0.0795583 - outer loop - vertex -1.13605 0.294435 0.102567 - vertex -1.12565 0.296021 0.208436 - vertex -1.08539 0.372679 0.204991 - endloop - endfacet - facet normal -0.877854 0.473401 0.0725467 - outer loop - vertex -1.13605 0.294435 0.102567 - vertex -1.08539 0.372679 0.204991 - vertex -1.09438 0.371961 0.100889 - endloop - endfacet - facet normal -0.824372 0.562032 0.0673164 - outer loop - vertex -1.09438 0.371961 0.100889 - vertex -1.08539 0.372679 0.204991 - vertex -1.03842 0.442075 0.20081 - endloop - endfacet - facet normal -0.821185 0.567302 0.0618331 - outer loop - vertex -1.09438 0.371961 0.100889 - vertex -1.03842 0.442075 0.20081 - vertex -1.04513 0.443411 0.0995073 - endloop - endfacet - facet normal -0.750119 0.658725 0.0583344 - outer loop - vertex -1.04513 0.443411 0.0995073 - vertex -1.03842 0.442075 0.20081 - vertex -0.984236 0.503981 0.198536 - endloop - endfacet - facet normal -0.748855 0.660314 0.0565845 - outer loop - vertex -1.04513 0.443411 0.0995073 - vertex -0.984236 0.503981 0.198536 - vertex -0.988237 0.507983 0.0988907 - endloop - endfacet - facet normal -0.962569 0.0370854 0.268489 - outer loop - vertex -1.21878 -0.153076 0.213516 - vertex -1.19227 -0.153076 0.308537 - vertex -1.18859 -0.0575259 0.308537 - endloop - endfacet - facet normal -0.962905 0.0386107 0.267062 - outer loop - vertex -1.21878 -0.153076 0.213516 - vertex -1.18859 -0.0575259 0.308537 - vertex -1.21498 -0.058491 0.213522 - endloop - endfacet - facet normal -0.957775 0.111791 0.264894 - outer loop - vertex -1.21498 -0.058491 0.213522 - vertex -1.18859 -0.0575259 0.308537 - vertex -1.17769 0.0367866 0.308176 - endloop - endfacet - facet normal -0.958457 0.116609 0.260313 - outer loop - vertex -1.21498 -0.058491 0.213522 - vertex -1.17769 0.0367866 0.308176 - vertex -1.20369 0.0349024 0.213278 - endloop - endfacet - facet normal -0.948048 0.188828 0.256027 - outer loop - vertex -1.20369 0.0349024 0.213278 - vertex -1.17769 0.0367866 0.308176 - vertex -1.15969 0.128624 0.307092 - endloop - endfacet - facet normal -0.948502 0.197066 0.24801 - outer loop - vertex -1.20369 0.0349024 0.213278 - vertex -1.15969 0.128624 0.307092 - vertex -1.18498 0.125913 0.212524 - endloop - endfacet - facet normal -0.932105 0.269887 0.241537 - outer loop - vertex -1.18498 0.125913 0.212524 - vertex -1.15969 0.128624 0.307092 - vertex -1.13473 0.216749 0.304924 - endloop - endfacet - facet normal -0.931625 0.281473 0.229886 - outer loop - vertex -1.18498 0.125913 0.212524 - vertex -1.13473 0.216749 0.304924 - vertex -1.15894 0.21335 0.210997 - endloop - endfacet - facet normal -0.907812 0.356399 0.221038 - outer loop - vertex -1.15894 0.21335 0.210997 - vertex -1.13473 0.216749 0.304924 - vertex -1.10296 0.299925 0.30131 - endloop - endfacet - facet normal -0.905583 0.370952 0.205706 - outer loop - vertex -1.15894 0.21335 0.210997 - vertex -1.10296 0.299925 0.30131 - vertex -1.12565 0.296021 0.208436 - endloop - endfacet - facet normal -0.872439 0.448418 0.19435 - outer loop - vertex -1.12565 0.296021 0.208436 - vertex -1.10296 0.299925 0.30131 - vertex -1.06562 0.375366 0.294843 - endloop - endfacet - facet normal -0.868032 0.46384 0.177127 - outer loop - vertex -1.12565 0.296021 0.208436 - vertex -1.06562 0.375366 0.294843 - vertex -1.08539 0.372679 0.204991 - endloop - endfacet - facet normal -0.817942 0.551584 0.163482 - outer loop - vertex -1.08539 0.372679 0.204991 - vertex -1.06562 0.375366 0.294843 - vertex -1.02399 0.440286 0.284113 - endloop - endfacet - facet normal -0.81407 0.560226 0.153093 - outer loop - vertex -1.08539 0.372679 0.204991 - vertex -1.02399 0.440286 0.284113 - vertex -1.03842 0.442075 0.20081 - endloop - endfacet - facet normal -0.743143 0.653715 0.142811 - outer loop - vertex -1.03842 0.442075 0.20081 - vertex -1.02399 0.440286 0.284113 - vertex -0.976233 0.495979 0.277683 - endloop - endfacet - facet normal -0.742338 0.654961 0.141286 - outer loop - vertex -1.03842 0.442075 0.20081 - vertex -0.976233 0.495979 0.277683 - vertex -0.984236 0.503981 0.198536 - endloop - endfacet - facet normal -0.856314 0.0307607 0.515539 - outer loop - vertex -1.19227 -0.153076 0.308537 - vertex -1.14683 -0.153076 0.384027 - vertex -1.14334 -0.0559787 0.384027 - endloop - endfacet - facet normal -0.857519 0.0330381 0.513391 - outer loop - vertex -1.19227 -0.153076 0.308537 - vertex -1.14334 -0.0559787 0.384027 - vertex -1.18859 -0.0575259 0.308537 - endloop - endfacet - facet normal -0.854744 0.0939387 0.510479 - outer loop - vertex -1.18859 -0.0575259 0.308537 - vertex -1.14334 -0.0559787 0.384027 - vertex -1.13307 0.0398899 0.383572 - endloop - endfacet - facet normal -0.858036 0.101169 0.503527 - outer loop - vertex -1.18859 -0.0575259 0.308537 - vertex -1.13307 0.0398899 0.383572 - vertex -1.17769 0.0367866 0.308176 - endloop - endfacet - facet normal -0.852302 0.160939 0.497675 - outer loop - vertex -1.17769 0.0367866 0.308176 - vertex -1.13307 0.0398899 0.383572 - vertex -1.11623 0.133301 0.382207 - endloop - endfacet - facet normal -0.857086 0.173704 0.485005 - outer loop - vertex -1.17769 0.0367866 0.308176 - vertex -1.11623 0.133301 0.382207 - vertex -1.15969 0.128624 0.307092 - endloop - endfacet - facet normal -0.847828 0.233889 0.475902 - outer loop - vertex -1.15969 0.128624 0.307092 - vertex -1.11623 0.133301 0.382207 - vertex -1.09301 0.223027 0.379476 - endloop - endfacet - facet normal -0.853222 0.252831 0.456167 - outer loop - vertex -1.15969 0.128624 0.307092 - vertex -1.09301 0.223027 0.379476 - vertex -1.13473 0.216749 0.304924 - endloop - endfacet - facet normal -0.839358 0.314733 0.443196 - outer loop - vertex -1.13473 0.216749 0.304924 - vertex -1.09301 0.223027 0.379476 - vertex -1.06361 0.307839 0.374925 - endloop - endfacet - facet normal -0.843992 0.340423 0.414474 - outer loop - vertex -1.13473 0.216749 0.304924 - vertex -1.06361 0.307839 0.374925 - vertex -1.10296 0.299925 0.30131 - endloop - endfacet - facet normal -0.821391 0.411709 0.394731 - outer loop - vertex -1.10296 0.299925 0.30131 - vertex -1.06361 0.307839 0.374925 - vertex -1.03034 0.383506 0.365244 - endloop - endfacet - facet normal -0.822863 0.438233 0.361729 - outer loop - vertex -1.10296 0.299925 0.30131 - vertex -1.03034 0.383506 0.365244 - vertex -1.06562 0.375366 0.294843 - endloop - endfacet - facet normal -0.779957 0.532151 0.329367 - outer loop - vertex -1.06562 0.375366 0.294843 - vertex -1.03034 0.383506 0.365244 - vertex -0.995492 0.445794 0.347126 - endloop - endfacet - facet normal -0.778322 0.54939 0.303951 - outer loop - vertex -1.06562 0.375366 0.294843 - vertex -0.995492 0.445794 0.347126 - vertex -1.02399 0.440286 0.284113 - endloop - endfacet - facet normal -0.714298 0.647132 0.266455 - outer loop - vertex -1.02399 0.440286 0.284113 - vertex -0.995492 0.445794 0.347126 - vertex -0.966663 0.486408 0.325773 - endloop - endfacet - facet normal -0.715154 0.644468 0.270584 - outer loop - vertex -1.02399 0.440286 0.284113 - vertex -0.966663 0.486408 0.325773 - vertex -0.976233 0.495979 0.277683 - endloop - endfacet - facet normal -0.986749 0.042245 -0.15666 - outer loop - vertex -1.20712 -0.153076 -0.457381 - vertex -1.20336 -0.0633134 -0.456883 - vertex -1.18712 -0.0650224 -0.559605 - endloop - endfacet - facet normal -0.986795 0.042758 -0.156227 - outer loop - vertex -1.20712 -0.153076 -0.457381 - vertex -1.18712 -0.0650224 -0.559605 - vertex -1.19083 -0.153076 -0.560317 - endloop - endfacet - facet normal -0.97799 0.0427758 -0.204218 - outer loop - vertex -1.19083 -0.153076 -0.560317 - vertex -1.18712 -0.0650224 -0.559605 - vertex -1.16685 -0.0669687 -0.657112 - endloop - endfacet - facet normal -0.978082 0.0434605 -0.203632 - outer loop - vertex -1.19083 -0.153076 -0.560317 - vertex -1.16685 -0.0669687 -0.657112 - vertex -1.17047 -0.153076 -0.658075 - endloop - endfacet - facet normal -0.964533 0.0435243 -0.260348 - outer loop - vertex -1.17047 -0.153076 -0.658075 - vertex -1.16685 -0.0669687 -0.657112 - vertex -1.1421 -0.06901 -0.74914 - endloop - endfacet - facet normal -0.964686 0.0443402 -0.259643 - outer loop - vertex -1.17047 -0.153076 -0.658075 - vertex -1.1421 -0.06901 -0.74914 - vertex -1.14563 -0.153076 -0.750381 - endloop - endfacet - facet normal -0.944458 0.0444647 -0.325609 - outer loop - vertex -1.14563 -0.153076 -0.750381 - vertex -1.1421 -0.06901 -0.74914 - vertex -1.11245 -0.0710038 -0.835423 - endloop - endfacet - facet normal -0.944684 0.045364 -0.324829 - outer loop - vertex -1.14563 -0.153076 -0.750381 - vertex -1.11245 -0.0710038 -0.835423 - vertex -1.11586 -0.153076 -0.836959 - endloop - endfacet - facet normal -0.915375 0.0455524 -0.400016 - outer loop - vertex -1.11586 -0.153076 -0.836959 - vertex -1.11245 -0.0710038 -0.835423 - vertex -1.07746 -0.0728077 -0.915698 - endloop - endfacet - facet normal -0.915674 0.0464702 -0.399226 - outer loop - vertex -1.11586 -0.153076 -0.836959 - vertex -1.07746 -0.0728077 -0.915698 - vertex -1.08073 -0.153076 -0.917536 - endloop - endfacet - facet normal -0.874574 0.0467045 -0.482637 - outer loop - vertex -1.08073 -0.153076 -0.917536 - vertex -1.07746 -0.0728077 -0.915698 - vertex -1.0367 -0.0742794 -0.9897 - endloop - endfacet - facet normal -0.874919 0.0475442 -0.481931 - outer loop - vertex -1.08073 -0.153076 -0.917536 - vertex -1.0367 -0.0742794 -0.9897 - vertex -1.0398 -0.153076 -0.991836 - endloop - endfacet - facet normal -0.819466 0.0477773 -0.571133 - outer loop - vertex -1.0398 -0.153076 -0.991836 - vertex -1.0367 -0.0742794 -0.9897 - vertex -0.989736 -0.0752763 -1.05716 - endloop - endfacet - facet normal -0.819786 0.0484149 -0.570619 - outer loop - vertex -1.0398 -0.153076 -0.991836 - vertex -0.989736 -0.0752763 -1.05716 - vertex -0.992645 -0.153076 -1.05958 - endloop - endfacet - facet normal -0.748372 0.0485724 -0.661498 - outer loop - vertex -0.992645 -0.153076 -1.05958 - vertex -0.989736 -0.0752763 -1.05716 - vertex -0.93614 -0.0756561 -1.11783 - endloop - endfacet - facet normal -0.748534 0.0488436 -0.661295 - outer loop - vertex -0.992645 -0.153076 -1.05958 - vertex -0.93614 -0.0756561 -1.11783 - vertex -0.938822 -0.153076 -1.12051 - endloop - endfacet - facet normal -0.979289 0.1266 -0.158006 - outer loop - vertex -1.20336 -0.0633134 -0.456883 - vertex -1.19208 0.0255169 -0.455637 - vertex -1.17603 0.022118 -0.557825 - endloop - endfacet - facet normal -0.979296 0.127901 -0.156907 - outer loop - vertex -1.20336 -0.0633134 -0.456883 - vertex -1.17603 0.022118 -0.557825 - vertex -1.18712 -0.0650224 -0.559605 - endloop - endfacet - facet normal -0.970233 0.127745 -0.20574 - outer loop - vertex -1.18712 -0.0650224 -0.559605 - vertex -1.17603 0.022118 -0.557825 - vertex -1.156 0.018236 -0.654694 - endloop - endfacet - facet normal -0.970313 0.129362 -0.20435 - outer loop - vertex -1.18712 -0.0650224 -0.559605 - vertex -1.156 0.018236 -0.654694 - vertex -1.16685 -0.0669687 -0.657112 - endloop - endfacet - facet normal -0.956463 0.129225 -0.261687 - outer loop - vertex -1.16685 -0.0669687 -0.657112 - vertex -1.156 0.018236 -0.654694 - vertex -1.13157 0.0141429 -0.745993 - endloop - endfacet - facet normal -0.95664 0.13097 -0.260166 - outer loop - vertex -1.16685 -0.0669687 -0.657112 - vertex -1.13157 0.0141429 -0.745993 - vertex -1.1421 -0.06901 -0.74914 - endloop - endfacet - facet normal -0.936134 0.13088 -0.326378 - outer loop - vertex -1.1421 -0.06901 -0.74914 - vertex -1.13157 0.0141429 -0.745993 - vertex -1.10233 0.010111 -0.831472 - endloop - endfacet - facet normal -0.936416 0.132579 -0.324881 - outer loop - vertex -1.1421 -0.06901 -0.74914 - vertex -1.10233 0.010111 -0.831472 - vertex -1.11245 -0.0710038 -0.835423 - endloop - endfacet - facet normal -0.906962 0.132557 -0.399812 - outer loop - vertex -1.11245 -0.0710038 -0.835423 - vertex -1.10233 0.010111 -0.831472 - vertex -1.06787 0.00641235 -0.910881 - endloop - endfacet - facet normal -0.907322 0.134048 -0.398495 - outer loop - vertex -1.11245 -0.0710038 -0.835423 - vertex -1.06787 0.00641235 -0.910881 - vertex -1.07746 -0.0728077 -0.915698 - endloop - endfacet - facet normal -0.866301 0.13411 -0.481183 - outer loop - vertex -1.07746 -0.0728077 -0.915698 - vertex -1.06787 0.00641235 -0.910881 - vertex -1.02773 0.00336352 -0.983989 - endloop - endfacet - facet normal -0.866719 0.135377 -0.480074 - outer loop - vertex -1.07746 -0.0728077 -0.915698 - vertex -1.02773 0.00336352 -0.983989 - vertex -1.0367 -0.0742794 -0.9897 - endloop - endfacet - facet normal -0.811701 0.135502 -0.568137 - outer loop - vertex -1.0367 -0.0742794 -0.9897 - vertex -1.02773 0.00336352 -0.983989 - vertex -0.981485 0.00128101 -1.05056 - endloop - endfacet - facet normal -0.812111 0.136457 -0.567323 - outer loop - vertex -1.0367 -0.0742794 -0.9897 - vertex -0.981485 0.00128101 -1.05056 - vertex -0.989736 -0.0752763 -1.05716 - endloop - endfacet - facet normal -0.741683 0.136575 -0.656699 - outer loop - vertex -0.989736 -0.0752763 -1.05716 - vertex -0.981485 0.00128101 -1.05056 - vertex -0.92868 0.00048133 -1.11037 - endloop - endfacet - facet normal -0.741915 0.13701 -0.656347 - outer loop - vertex -0.989736 -0.0752763 -1.05716 - vertex -0.92868 0.00048133 -1.11037 - vertex -0.93614 -0.0756561 -1.11783 - endloop - endfacet - facet normal -0.96417 0.211558 -0.160061 - outer loop - vertex -1.19208 0.0255169 -0.455637 - vertex -1.17328 0.112483 -0.453892 - vertex -1.15755 0.107432 -0.555333 - endloop - endfacet - facet normal -0.964022 0.213401 -0.158496 - outer loop - vertex -1.19208 0.0255169 -0.455637 - vertex -1.15755 0.107432 -0.555333 - vertex -1.17603 0.022118 -0.557825 - endloop - endfacet - facet normal -0.95472 0.212829 -0.20788 - outer loop - vertex -1.17603 0.022118 -0.557825 - vertex -1.15755 0.107432 -0.555333 - vertex -1.13795 0.101636 -0.65129 - endloop - endfacet - facet normal -0.954641 0.214987 -0.206012 - outer loop - vertex -1.17603 0.022118 -0.557825 - vertex -1.13795 0.101636 -0.65129 - vertex -1.156 0.018236 -0.654694 - endloop - endfacet - facet normal -0.940632 0.214291 -0.263233 - outer loop - vertex -1.156 0.018236 -0.654694 - vertex -1.13795 0.101636 -0.65129 - vertex -1.11411 0.0954701 -0.741516 - endloop - endfacet - facet normal -0.940667 0.216405 -0.26137 - outer loop - vertex -1.156 0.018236 -0.654694 - vertex -1.11411 0.0954701 -0.741516 - vertex -1.13157 0.0141429 -0.745993 - endloop - endfacet - facet normal -0.920225 0.215608 -0.326648 - outer loop - vertex -1.13157 0.0141429 -0.745993 - vertex -1.11411 0.0954701 -0.741516 - vertex -1.08564 0.0893115 -0.825763 - endloop - endfacet - facet normal -0.92037 0.217375 -0.325066 - outer loop - vertex -1.13157 0.0141429 -0.745993 - vertex -1.08564 0.0893115 -0.825763 - vertex -1.10233 0.010111 -0.831472 - endloop - endfacet - facet normal -0.891367 0.216536 -0.398218 - outer loop - vertex -1.10233 0.010111 -0.831472 - vertex -1.08564 0.0893115 -0.825763 - vertex -1.05219 0.0835366 -0.903784 - endloop - endfacet - facet normal -0.891565 0.217774 -0.397098 - outer loop - vertex -1.10233 0.010111 -0.831472 - vertex -1.05219 0.0835366 -0.903784 - vertex -1.06787 0.00641235 -0.910881 - endloop - endfacet - facet normal -0.851423 0.217012 -0.477477 - outer loop - vertex -1.06787 0.00641235 -0.910881 - vertex -1.05219 0.0835366 -0.903784 - vertex -1.01326 0.0786994 -0.9754 - endloop - endfacet - facet normal -0.851657 0.217937 -0.476639 - outer loop - vertex -1.06787 0.00641235 -0.910881 - vertex -1.01326 0.0786994 -0.9754 - vertex -1.02773 0.00336352 -0.983989 - endloop - endfacet - facet normal -0.798032 0.217372 -0.562045 - outer loop - vertex -1.02773 0.00336352 -0.983989 - vertex -1.01326 0.0786994 -0.9754 - vertex -0.968369 0.075354 -1.04044 - endloop - endfacet - facet normal -0.798289 0.218088 -0.561403 - outer loop - vertex -1.02773 0.00336352 -0.983989 - vertex -0.968369 0.075354 -1.04044 - vertex -0.981485 0.00128101 -1.05056 - endloop - endfacet - facet normal -0.729915 0.217805 -0.647908 - outer loop - vertex -0.981485 0.00128101 -1.05056 - vertex -0.968369 0.075354 -1.04044 - vertex -0.917027 0.0740541 -1.09871 - endloop - endfacet - facet normal -0.730102 0.218198 -0.647565 - outer loop - vertex -0.981485 0.00128101 -1.05056 - vertex -0.917027 0.0740541 -1.09871 - vertex -0.92868 0.00048133 -1.11037 - endloop - endfacet - facet normal -0.940708 0.297714 -0.162587 - outer loop - vertex -1.17328 0.112483 -0.453892 - vertex -1.14699 0.196653 -0.451898 - vertex -1.13171 0.190008 -0.552484 - endloop - endfacet - facet normal -0.940346 0.299841 -0.160762 - outer loop - vertex -1.17328 0.112483 -0.453892 - vertex -1.13171 0.190008 -0.552484 - vertex -1.15755 0.107432 -0.555333 - endloop - endfacet - facet normal -0.930912 0.298599 -0.210336 - outer loop - vertex -1.15755 0.107432 -0.555333 - vertex -1.13171 0.190008 -0.552484 - vertex -1.11273 0.182329 -0.647371 - endloop - endfacet - facet normal -0.930618 0.300949 -0.20828 - outer loop - vertex -1.15755 0.107432 -0.555333 - vertex -1.11273 0.182329 -0.647371 - vertex -1.13795 0.101636 -0.65129 - endloop - endfacet - facet normal -0.916709 0.29934 -0.264651 - outer loop - vertex -1.13795 0.101636 -0.65129 - vertex -1.11273 0.182329 -0.647371 - vertex -1.08976 0.174059 -0.736286 - endloop - endfacet - facet normal -0.916564 0.301387 -0.262824 - outer loop - vertex -1.13795 0.101636 -0.65129 - vertex -1.08976 0.174059 -0.736286 - vertex -1.11411 0.0954701 -0.741516 - endloop - endfacet - facet normal -0.896637 0.29943 -0.326164 - outer loop - vertex -1.11411 0.0954701 -0.741516 - vertex -1.08976 0.174059 -0.736286 - vertex -1.0625 0.165641 -0.818954 - endloop - endfacet - facet normal -0.896631 0.300814 -0.324905 - outer loop - vertex -1.11411 0.0954701 -0.741516 - vertex -1.0625 0.165641 -0.818954 - vertex -1.08564 0.0893115 -0.825763 - endloop - endfacet - facet normal -0.8687 0.298618 -0.395205 - outer loop - vertex -1.08564 0.0893115 -0.825763 - vertex -1.0625 0.165641 -0.818954 - vertex -1.03065 0.157517 -0.895101 - endloop - endfacet - facet normal -0.868747 0.299231 -0.39464 - outer loop - vertex -1.08564 0.0893115 -0.825763 - vertex -1.03065 0.157517 -0.895101 - vertex -1.05219 0.0835366 -0.903784 - endloop - endfacet - facet normal -0.830223 0.297057 -0.471685 - outer loop - vertex -1.05219 0.0835366 -0.903784 - vertex -1.03065 0.157517 -0.895101 - vertex -0.993634 0.150575 -0.964632 - endloop - endfacet - facet normal -0.830274 0.297354 -0.471408 - outer loop - vertex -1.05219 0.0835366 -0.903784 - vertex -0.993634 0.150575 -0.964632 - vertex -1.01326 0.0786994 -0.9754 - endloop - endfacet - facet normal -0.778845 0.295565 -0.55321 - outer loop - vertex -1.01326 0.0786994 -0.9754 - vertex -0.993634 0.150575 -0.964632 - vertex -0.950865 0.1457 -1.02745 - endloop - endfacet - facet normal -0.778939 0.295889 -0.552905 - outer loop - vertex -1.01326 0.0786994 -0.9754 - vertex -0.950865 0.1457 -1.02745 - vertex -0.968369 0.075354 -1.04044 - endloop - endfacet - facet normal -0.713493 0.29487 -0.635594 - outer loop - vertex -0.968369 0.075354 -1.04044 - vertex -0.950865 0.1457 -1.02745 - vertex -0.901768 0.14378 -1.08345 - endloop - endfacet - facet normal -0.71363 0.295196 -0.635288 - outer loop - vertex -0.968369 0.075354 -1.04044 - vertex -0.901768 0.14378 -1.08345 - vertex -0.917027 0.0740541 -1.09871 - endloop - endfacet - facet normal -0.907829 0.385385 -0.165303 - outer loop - vertex -1.14699 0.196653 -0.451898 - vertex -1.1132 0.277095 -0.449905 - vertex -1.09851 0.268931 -0.549636 - endloop - endfacet - facet normal -0.907256 0.387523 -0.163438 - outer loop - vertex -1.14699 0.196653 -0.451898 - vertex -1.09851 0.268931 -0.549636 - vertex -1.13171 0.190008 -0.552484 - endloop - endfacet - facet normal -0.89789 0.385365 -0.212809 - outer loop - vertex -1.13171 0.190008 -0.552484 - vertex -1.09851 0.268931 -0.549636 - vertex -1.08037 0.259412 -0.643408 - endloop - endfacet - facet normal -0.897399 0.387587 -0.210836 - outer loop - vertex -1.13171 0.190008 -0.552484 - vertex -1.08037 0.259412 -0.643408 - vertex -1.11273 0.182329 -0.647371 - endloop - endfacet - facet normal -0.88393 0.384757 -0.265762 - outer loop - vertex -1.11273 0.182329 -0.647371 - vertex -1.08037 0.259412 -0.643408 - vertex -1.05861 0.248996 -0.730878 - endloop - endfacet - facet normal -0.883648 0.386467 -0.264214 - outer loop - vertex -1.11273 0.182329 -0.647371 - vertex -1.05861 0.248996 -0.730878 - vertex -1.08976 0.174059 -0.736286 - endloop - endfacet - facet normal -0.8647 0.382975 -0.324998 - outer loop - vertex -1.08976 0.174059 -0.736286 - vertex -1.05861 0.248996 -0.730878 - vertex -1.03304 0.238141 -0.8117 - endloop - endfacet - facet normal -0.864616 0.38384 -0.3242 - outer loop - vertex -1.08976 0.174059 -0.736286 - vertex -1.03304 0.238141 -0.8117 - vertex -1.0625 0.165641 -0.818954 - endloop - endfacet - facet normal -0.838231 0.379827 -0.391281 - outer loop - vertex -1.0625 0.165641 -0.818954 - vertex -1.03304 0.238141 -0.8117 - vertex -1.00348 0.227306 -0.885532 - endloop - endfacet - facet normal -0.838228 0.379978 -0.391139 - outer loop - vertex -1.0625 0.165641 -0.818954 - vertex -1.00348 0.227306 -0.885532 - vertex -1.03065 0.157517 -0.895101 - endloop - endfacet - facet normal -0.801874 0.375877 -0.464451 - outer loop - vertex -1.03065 0.157517 -0.895101 - vertex -1.00348 0.227306 -0.885532 - vertex -0.969201 0.217836 -0.952382 - endloop - endfacet - facet normal -0.801873 0.375867 -0.46446 - outer loop - vertex -1.03065 0.157517 -0.895101 - vertex -0.969201 0.217836 -0.952382 - vertex -0.993634 0.150575 -0.964632 - endloop - endfacet - facet normal -0.7533 0.372365 -0.54211 - outer loop - vertex -0.993634 0.150575 -0.964632 - vertex -0.969201 0.217836 -0.952382 - vertex -0.929451 0.211078 -1.01226 - endloop - endfacet - facet normal -0.753359 0.372642 -0.541838 - outer loop - vertex -0.993634 0.150575 -0.964632 - vertex -0.929451 0.211078 -1.01226 - vertex -0.950865 0.1457 -1.02745 - endloop - endfacet - facet normal -0.691767 0.370576 -0.619783 - outer loop - vertex -0.950865 0.1457 -1.02745 - vertex -0.929451 0.211078 -1.01226 - vertex -0.883489 0.208377 -1.06518 - endloop - endfacet - facet normal -0.691939 0.371045 -0.619311 - outer loop - vertex -0.950865 0.1457 -1.02745 - vertex -0.883489 0.208377 -1.06518 - vertex -0.901768 0.14378 -1.08345 - endloop - endfacet - facet normal -0.864129 0.474448 -0.167869 - outer loop - vertex -1.1132 0.277095 -0.449905 - vertex -1.07194 0.352876 -0.44816 - vertex -1.05797 0.34329 -0.547144 - endloop - endfacet - facet normal -0.863427 0.476309 -0.166203 - outer loop - vertex -1.1132 0.277095 -0.449905 - vertex -1.05797 0.34329 -0.547144 - vertex -1.09851 0.268931 -0.549636 - endloop - endfacet - facet normal -0.854393 0.473021 -0.21509 - outer loop - vertex -1.09851 0.268931 -0.549636 - vertex -1.05797 0.34329 -0.547144 - vertex -1.04086 0.332002 -0.639916 - endloop - endfacet - facet normal -0.853771 0.474922 -0.213366 - outer loop - vertex -1.09851 0.268931 -0.549636 - vertex -1.04086 0.332002 -0.639916 - vertex -1.08037 0.259412 -0.643408 - endloop - endfacet - facet normal -0.841086 0.470584 -0.266691 - outer loop - vertex -1.08037 0.259412 -0.643408 - vertex -1.04086 0.332002 -0.639916 - vertex -1.02058 0.31944 -0.726046 - endloop - endfacet - facet normal -0.840708 0.471991 -0.265395 - outer loop - vertex -1.08037 0.259412 -0.643408 - vertex -1.02058 0.31944 -0.726046 - vertex -1.05861 0.248996 -0.730878 - endloop - endfacet - facet normal -0.823141 0.466511 -0.323737 - outer loop - vertex -1.05861 0.248996 -0.730878 - vertex -1.02058 0.31944 -0.726046 - vertex -0.997089 0.306033 -0.805104 - endloop - endfacet - facet normal -0.823009 0.467175 -0.323117 - outer loop - vertex -1.05861 0.248996 -0.730878 - vertex -0.997089 0.306033 -0.805104 - vertex -1.03304 0.238141 -0.8117 - endloop - endfacet - facet normal -0.798627 0.460515 -0.387454 - outer loop - vertex -1.03304 0.238141 -0.8117 - vertex -0.997089 0.306033 -0.805104 - vertex -0.970345 0.292209 -0.876659 - endloop - endfacet - facet normal -0.798606 0.460692 -0.387287 - outer loop - vertex -1.03304 0.238141 -0.8117 - vertex -0.970345 0.292209 -0.876659 - vertex -1.00348 0.227306 -0.885532 - endloop - endfacet - facet normal -0.765903 0.453375 -0.455899 - outer loop - vertex -1.00348 0.227306 -0.885532 - vertex -0.970345 0.292209 -0.876659 - vertex -0.93974 0.279632 -0.940583 - endloop - endfacet - facet normal -0.765918 0.452391 -0.456851 - outer loop - vertex -1.00348 0.227306 -0.885532 - vertex -0.93974 0.279632 -0.940583 - vertex -0.969201 0.217836 -0.952382 - endloop - endfacet - facet normal -0.722881 0.445493 -0.528185 - outer loop - vertex -0.969201 0.217836 -0.952382 - vertex -0.93974 0.279632 -0.940583 - vertex -0.90466 0.269966 -0.996746 - endloop - endfacet - facet normal -0.722684 0.44383 -0.529852 - outer loop - vertex -0.969201 0.217836 -0.952382 - vertex -0.90466 0.269966 -0.996746 - vertex -0.929451 0.211078 -1.01226 - endloop - endfacet - facet normal -0.667204 0.439351 -0.601506 - outer loop - vertex -0.929451 0.211078 -1.01226 - vertex -0.90466 0.269966 -0.996746 - vertex -0.863601 0.265861 -1.04529 - endloop - endfacet - facet normal -0.667105 0.439021 -0.601856 - outer loop - vertex -0.929451 0.211078 -1.01226 - vertex -0.863601 0.265861 -1.04529 - vertex -0.883489 0.208377 -1.06518 - endloop - endfacet - facet normal -0.808013 0.564141 -0.169881 - outer loop - vertex -1.07194 0.352876 -0.44816 - vertex -1.02319 0.423066 -0.446914 - vertex -1.0101 0.412171 -0.545364 - endloop - endfacet - facet normal -0.807358 0.565441 -0.168671 - outer loop - vertex -1.07194 0.352876 -0.44816 - vertex -1.0101 0.412171 -0.545364 - vertex -1.05797 0.34329 -0.547144 - endloop - endfacet - facet normal -0.798991 0.560872 -0.216877 - outer loop - vertex -1.05797 0.34329 -0.547144 - vertex -1.0101 0.412171 -0.545364 - vertex -0.994213 0.399212 -0.637409 - endloop - endfacet - facet normal -0.798387 0.562217 -0.215617 - outer loop - vertex -1.05797 0.34329 -0.547144 - vertex -0.994213 0.399212 -0.637409 - vertex -1.04086 0.332002 -0.639916 - endloop - endfacet - facet normal -0.786871 0.556157 -0.26744 - outer loop - vertex -1.04086 0.332002 -0.639916 - vertex -0.994213 0.399212 -0.637409 - vertex -0.975642 0.384548 -0.722544 - endloop - endfacet - facet normal -0.786468 0.557195 -0.266462 - outer loop - vertex -1.04086 0.332002 -0.639916 - vertex -0.975642 0.384548 -0.722544 - vertex -1.02058 0.31944 -0.726046 - endloop - endfacet - facet normal -0.770714 0.549352 -0.322819 - outer loop - vertex -1.02058 0.31944 -0.726046 - vertex -0.975642 0.384548 -0.722544 - vertex -0.954502 0.368535 -0.800266 - endloop - endfacet - facet normal -0.770523 0.549954 -0.32225 - outer loop - vertex -1.02058 0.31944 -0.726046 - vertex -0.954502 0.368535 -0.800266 - vertex -0.997089 0.306033 -0.805104 - endloop - endfacet - facet normal -0.748704 0.539915 -0.384621 - outer loop - vertex -0.997089 0.306033 -0.805104 - vertex -0.954502 0.368535 -0.800266 - vertex -0.930906 0.35153 -0.870068 - endloop - endfacet - facet normal -0.748594 0.540379 -0.384184 - outer loop - vertex -0.997089 0.306033 -0.805104 - vertex -0.930906 0.35153 -0.870068 - vertex -0.970345 0.292209 -0.876659 - endloop - endfacet - facet normal -0.720954 0.529048 -0.447587 - outer loop - vertex -0.970345 0.292209 -0.876659 - vertex -0.930906 0.35153 -0.870068 - vertex -0.905023 0.335108 -0.931169 - endloop - endfacet - facet normal -0.72117 0.527498 -0.449066 - outer loop - vertex -0.970345 0.292209 -0.876659 - vertex -0.905023 0.335108 -0.931169 - vertex -0.93974 0.279632 -0.940583 - endloop - endfacet - facet normal -0.685089 0.515975 -0.51422 - outer loop - vertex -0.93974 0.279632 -0.940583 - vertex -0.905023 0.335108 -0.931169 - vertex -0.877026 0.320843 -0.982784 - endloop - endfacet - facet normal -0.685106 0.513821 -0.51635 - outer loop - vertex -0.93974 0.279632 -0.940583 - vertex -0.877026 0.320843 -0.982784 - vertex -0.90466 0.269966 -0.996746 - endloop - endfacet - facet normal -0.637007 0.505666 -0.581829 - outer loop - vertex -0.90466 0.269966 -0.996746 - vertex -0.877026 0.320843 -0.982784 - vertex -0.843516 0.31425 -1.0252 - endloop - endfacet - facet normal -0.637047 0.505853 -0.581622 - outer loop - vertex -0.90466 0.269966 -0.996746 - vertex -0.843516 0.31425 -1.0252 - vertex -0.863601 0.265861 -1.04529 - endloop - endfacet - facet normal -0.737952 0.65286 -0.170881 - outer loop - vertex -1.02319 0.423066 -0.446914 - vertex -0.966985 0.48673 -0.446415 - vertex -0.954915 0.474661 -0.544652 - endloop - endfacet - facet normal -0.737627 0.653355 -0.170393 - outer loop - vertex -1.02319 0.423066 -0.446914 - vertex -0.954915 0.474661 -0.544652 - vertex -1.0101 0.412171 -0.545364 - endloop - endfacet - facet normal -0.730333 0.647453 -0.217759 - outer loop - vertex -1.0101 0.412171 -0.545364 - vertex -0.954915 0.474661 -0.544652 - vertex -0.940414 0.460159 -0.636401 - endloop - endfacet - facet normal -0.730015 0.647986 -0.217235 - outer loop - vertex -1.0101 0.412171 -0.545364 - vertex -0.940414 0.460159 -0.636401 - vertex -0.994213 0.399212 -0.637409 - endloop - endfacet - facet normal -0.720116 0.640084 -0.267815 - outer loop - vertex -0.994213 0.399212 -0.637409 - vertex -0.940414 0.460159 -0.636401 - vertex -0.923732 0.443478 -0.721126 - endloop - endfacet - facet normal -0.719871 0.64055 -0.267362 - outer loop - vertex -0.994213 0.399212 -0.637409 - vertex -0.923732 0.443478 -0.721126 - vertex -0.975642 0.384548 -0.722544 - endloop - endfacet - facet normal -0.706464 0.630064 -0.322379 - outer loop - vertex -0.975642 0.384548 -0.722544 - vertex -0.923732 0.443478 -0.721126 - vertex -0.905121 0.424866 -0.798286 - endloop - endfacet - facet normal -0.706285 0.630455 -0.322004 - outer loop - vertex -0.975642 0.384548 -0.722544 - vertex -0.905121 0.424866 -0.798286 - vertex -0.954502 0.368535 -0.800266 - endloop - endfacet - facet normal -0.687847 0.616444 -0.383228 - outer loop - vertex -0.954502 0.368535 -0.800266 - vertex -0.905121 0.424866 -0.798286 - vertex -0.88483 0.404576 -0.867343 - endloop - endfacet - facet normal -0.687653 0.616956 -0.382751 - outer loop - vertex -0.954502 0.368535 -0.800266 - vertex -0.88483 0.404576 -0.867343 - vertex -0.930906 0.35153 -0.870068 - endloop - endfacet - facet normal -0.66544 0.600759 -0.443032 - outer loop - vertex -0.930906 0.35153 -0.870068 - vertex -0.88483 0.404576 -0.867343 - vertex -0.863937 0.383682 -0.927058 - endloop - endfacet - facet normal -0.665528 0.600463 -0.443302 - outer loop - vertex -0.930906 0.35153 -0.870068 - vertex -0.863937 0.383682 -0.927058 - vertex -0.905023 0.335108 -0.931169 - endloop - endfacet - facet normal -0.636782 0.581483 -0.506347 - outer loop - vertex -0.905023 0.335108 -0.931169 - vertex -0.863937 0.383682 -0.927058 - vertex -0.843516 0.363261 -0.976191 - endloop - endfacet - facet normal -0.636739 0.581695 -0.506156 - outer loop - vertex -0.905023 0.335108 -0.931169 - vertex -0.843516 0.363261 -0.976191 - vertex -0.877026 0.320843 -0.982784 - endloop - endfacet - facet normal -0.600567 0.562735 -0.568021 - outer loop - vertex -0.877026 0.320843 -0.982784 - vertex -0.843516 0.363261 -0.976191 - vertex -0.827436 0.347181 -1.00912 - endloop - endfacet - facet normal -0.600567 0.568022 -0.562734 - outer loop - vertex -0.877026 0.320843 -0.982784 - vertex -0.827436 0.347181 -1.00912 - vertex -0.843516 0.31425 -1.0252 - endloop - endfacet - facet normal 0.0419438 0.992289 -0.11663 - outer loop - vertex -0.327179 0.726868 -0.457381 - vertex -0.327179 0.739543 -0.349542 - vertex -0.236087 0.735731 -0.34921 - endloop - endfacet - facet normal 0.0422553 0.992246 -0.116889 - outer loop - vertex -0.327179 0.726868 -0.457381 - vertex -0.236087 0.735731 -0.34921 - vertex -0.237416 0.723104 -0.456883 - endloop - endfacet - facet normal 0.125964 0.985101 -0.117084 - outer loop - vertex -0.237416 0.723104 -0.456883 - vertex -0.236087 0.735731 -0.34921 - vertex -0.145942 0.724303 -0.348379 - endloop - endfacet - facet normal 0.126749 0.984922 -0.117744 - outer loop - vertex -0.237416 0.723104 -0.456883 - vertex -0.145942 0.724303 -0.348379 - vertex -0.148586 0.711821 -0.455637 - endloop - endfacet - facet normal 0.210894 0.970346 -0.118122 - outer loop - vertex -0.148586 0.711821 -0.455637 - vertex -0.145942 0.724303 -0.348379 - vertex -0.0576914 0.705265 -0.347216 - endloop - endfacet - facet normal 0.211994 0.969991 -0.119065 - outer loop - vertex -0.148586 0.711821 -0.455637 - vertex -0.0576914 0.705265 -0.347216 - vertex -0.0616197 0.693029 -0.453892 - endloop - endfacet - facet normal 0.297353 0.947247 -0.119599 - outer loop - vertex -0.0616197 0.693029 -0.453892 - vertex -0.0576914 0.705265 -0.347216 - vertex 0.0277188 0.678621 -0.345887 - endloop - endfacet - facet normal 0.2986 0.946715 -0.120702 - outer loop - vertex -0.0616197 0.693029 -0.453892 - vertex 0.0277188 0.678621 -0.345887 - vertex 0.0225503 0.666735 -0.451898 - endloop - endfacet - facet normal 0.385679 0.914618 -0.121349 - outer loop - vertex 0.0225503 0.666735 -0.451898 - vertex 0.0277188 0.678621 -0.345887 - vertex 0.109341 0.644379 -0.344558 - endloop - endfacet - facet normal 0.386896 0.913954 -0.122471 - outer loop - vertex 0.0225503 0.666735 -0.451898 - vertex 0.109341 0.644379 -0.344558 - vertex 0.102992 0.63295 -0.449905 - endloop - endfacet - facet normal 0.475738 0.870923 -0.123157 - outer loop - vertex 0.102992 0.63295 -0.449905 - vertex 0.109341 0.644379 -0.344558 - vertex 0.18623 0.602543 -0.343395 - endloop - endfacet - facet normal 0.476759 0.870222 -0.124156 - outer loop - vertex 0.102992 0.63295 -0.449905 - vertex 0.18623 0.602543 -0.343395 - vertex 0.178774 0.591681 -0.44816 - endloop - endfacet - facet normal 0.566714 0.814413 -0.124771 - outer loop - vertex 0.178774 0.591681 -0.44816 - vertex 0.18623 0.602543 -0.343395 - vertex 0.257436 0.553121 -0.342564 - endloop - endfacet - facet normal 0.567393 0.813829 -0.12549 - outer loop - vertex 0.178774 0.591681 -0.44816 - vertex 0.257436 0.553121 -0.342564 - vertex 0.248963 0.542938 -0.446914 - endloop - endfacet - facet normal 0.656867 0.743424 -0.125886 - outer loop - vertex 0.248963 0.542938 -0.446914 - vertex 0.257436 0.553121 -0.342564 - vertex 0.322015 0.496117 -0.342232 - endloop - endfacet - facet normal 0.657109 0.743161 -0.126173 - outer loop - vertex 0.248963 0.542938 -0.446914 - vertex 0.322015 0.496117 -0.342232 - vertex 0.312627 0.48673 -0.446415 - endloop - endfacet - facet normal 0.0417479 0.995958 -0.0795322 - outer loop - vertex -0.327179 0.739543 -0.349542 - vertex -0.327179 0.748444 -0.238072 - vertex -0.23507 0.7446 -0.237864 - endloop - endfacet - facet normal 0.0419616 0.995935 -0.0797075 - outer loop - vertex -0.327179 0.739543 -0.349542 - vertex -0.23507 0.7446 -0.237864 - vertex -0.236087 0.735731 -0.34921 - endloop - endfacet - facet normal 0.125508 0.988869 -0.0799082 - outer loop - vertex -0.236087 0.735731 -0.34921 - vertex -0.23507 0.7446 -0.237864 - vertex -0.143926 0.733073 -0.237353 - endloop - endfacet - facet normal 0.126089 0.988756 -0.0803897 - outer loop - vertex -0.236087 0.735731 -0.34921 - vertex -0.143926 0.733073 -0.237353 - vertex -0.145942 0.724303 -0.348379 - endloop - endfacet - facet normal 0.21035 0.974283 -0.080777 - outer loop - vertex -0.145942 0.724303 -0.348379 - vertex -0.143926 0.733073 -0.237353 - vertex -0.054712 0.71387 -0.23665 - endloop - endfacet - facet normal 0.211208 0.974037 -0.0815006 - outer loop - vertex -0.145942 0.724303 -0.348379 - vertex -0.054712 0.71387 -0.23665 - vertex -0.0576914 0.705265 -0.347216 - endloop - endfacet - facet normal 0.29693 0.951368 -0.0820462 - outer loop - vertex -0.0576914 0.705265 -0.347216 - vertex -0.054712 0.71387 -0.23665 - vertex 0.031606 0.686997 -0.235868 - endloop - endfacet - facet normal 0.297945 0.950974 -0.0829244 - outer loop - vertex -0.0576914 0.705265 -0.347216 - vertex 0.031606 0.686997 -0.235868 - vertex 0.0277188 0.678621 -0.345887 - endloop - endfacet - facet normal 0.385623 0.918863 -0.0835777 - outer loop - vertex 0.0277188 0.678621 -0.345887 - vertex 0.031606 0.686997 -0.235868 - vertex 0.114063 0.65246 -0.235117 - endloop - endfacet - facet normal 0.386644 0.91835 -0.0844948 - outer loop - vertex 0.0277188 0.678621 -0.345887 - vertex 0.114063 0.65246 -0.235117 - vertex 0.109341 0.644379 -0.344558 - endloop - endfacet - facet normal 0.476317 0.875138 -0.0851731 - outer loop - vertex 0.109341 0.644379 -0.344558 - vertex 0.114063 0.65246 -0.235117 - vertex 0.191711 0.610261 -0.234478 - endloop - endfacet - facet normal 0.477173 0.874593 -0.0859819 - outer loop - vertex 0.109341 0.644379 -0.344558 - vertex 0.191711 0.610261 -0.234478 - vertex 0.18623 0.602543 -0.343395 - endloop - endfacet - facet normal 0.568146 0.818361 -0.0865757 - outer loop - vertex 0.18623 0.602543 -0.343395 - vertex 0.191711 0.610261 -0.234478 - vertex 0.263598 0.5604 -0.234031 - endloop - endfacet - facet normal 0.568704 0.817913 -0.0871435 - outer loop - vertex 0.18623 0.602543 -0.343395 - vertex 0.263598 0.5604 -0.234031 - vertex 0.257436 0.553121 -0.342564 - endloop - endfacet - facet normal 0.659278 0.746789 -0.0875158 - outer loop - vertex 0.257436 0.553121 -0.342564 - vertex 0.263598 0.5604 -0.234031 - vertex 0.328777 0.50288 -0.233855 - endloop - endfacet - facet normal 0.65947 0.746594 -0.0877314 - outer loop - vertex 0.257436 0.553121 -0.342564 - vertex 0.328777 0.50288 -0.233855 - vertex 0.322015 0.496117 -0.342232 - endloop - endfacet - facet normal 0.0415603 0.998183 -0.043636 - outer loop - vertex -0.327179 0.748444 -0.238072 - vertex -0.327179 0.75342 -0.124242 - vertex -0.234296 0.749558 -0.124123 - endloop - endfacet - facet normal 0.0417595 0.998167 -0.0437983 - outer loop - vertex -0.327179 0.748444 -0.238072 - vertex -0.234296 0.749558 -0.124123 - vertex -0.23507 0.7446 -0.237864 - endloop - endfacet - facet normal 0.124974 0.991181 -0.0440599 - outer loop - vertex -0.23507 0.7446 -0.237864 - vertex -0.234296 0.749558 -0.124123 - vertex -0.142407 0.737984 -0.123858 - endloop - endfacet - facet normal 0.12559 0.991081 -0.0445664 - outer loop - vertex -0.23507 0.7446 -0.237864 - vertex -0.142407 0.737984 -0.123858 - vertex -0.143926 0.733073 -0.237353 - endloop - endfacet - facet normal 0.209571 0.976754 -0.0450699 - outer loop - vertex -0.143926 0.733073 -0.237353 - vertex -0.142407 0.737984 -0.123858 - vertex -0.0525081 0.71871 -0.123539 - endloop - endfacet - facet normal 0.210553 0.976505 -0.0458901 - outer loop - vertex -0.143926 0.733073 -0.237353 - vertex -0.0525081 0.71871 -0.123539 - vertex -0.054712 0.71387 -0.23665 - endloop - endfacet - facet normal 0.296093 0.954022 -0.0465947 - outer loop - vertex -0.054712 0.71387 -0.23665 - vertex -0.0525081 0.71871 -0.123539 - vertex 0.0344075 0.691749 -0.123256 - endloop - endfacet - facet normal 0.29731 0.953592 -0.0476355 - outer loop - vertex -0.054712 0.71387 -0.23665 - vertex 0.0344075 0.691749 -0.123256 - vertex 0.031606 0.686997 -0.235868 - endloop - endfacet - facet normal 0.384998 0.921644 -0.0484687 - outer loop - vertex 0.031606 0.686997 -0.235868 - vertex 0.0344075 0.691749 -0.123256 - vertex 0.117345 0.657112 -0.123102 - endloop - endfacet - facet normal 0.386237 0.921067 -0.0495637 - outer loop - vertex 0.031606 0.686997 -0.235868 - vertex 0.117345 0.657112 -0.123102 - vertex 0.114063 0.65246 -0.235117 - endloop - endfacet - facet normal 0.47619 0.877897 -0.050406 - outer loop - vertex 0.114063 0.65246 -0.235117 - vertex 0.117345 0.657112 -0.123102 - vertex 0.195372 0.614792 -0.123039 - endloop - endfacet - facet normal 0.477208 0.877289 -0.0513487 - outer loop - vertex 0.114063 0.65246 -0.235117 - vertex 0.195372 0.614792 -0.123039 - vertex 0.191711 0.610261 -0.234478 - endloop - endfacet - facet normal 0.568715 0.820885 -0.0520621 - outer loop - vertex 0.191711 0.610261 -0.234478 - vertex 0.195372 0.614792 -0.123039 - vertex 0.267558 0.564781 -0.12303 - endloop - endfacet - facet normal 0.569352 0.820404 -0.0526916 - outer loop - vertex 0.191711 0.610261 -0.234478 - vertex 0.267558 0.564781 -0.12303 - vertex 0.263598 0.5604 -0.234031 - endloop - endfacet - facet normal 0.660624 0.748835 -0.0531228 - outer loop - vertex 0.263598 0.5604 -0.234031 - vertex 0.267558 0.564781 -0.12303 - vertex 0.332971 0.507073 -0.123039 - endloop - endfacet - facet normal 0.660823 0.748644 -0.0533389 - outer loop - vertex 0.263598 0.5604 -0.234031 - vertex 0.332971 0.507073 -0.123039 - vertex 0.328777 0.50288 -0.233855 - endloop - endfacet - facet normal 0.0412984 0.999116 -0.00781407 - outer loop - vertex -0.327179 0.75342 -0.124242 - vertex -0.327179 0.754319 -0.0093227 - vertex -0.233697 0.750456 -0.00926336 - endloop - endfacet - facet normal 0.0415531 0.999104 -0.00802148 - outer loop - vertex -0.327179 0.75342 -0.124242 - vertex -0.233697 0.750456 -0.00926336 - vertex -0.234296 0.749558 -0.124123 - endloop - endfacet - facet normal 0.124141 0.992229 -0.00839792 - outer loop - vertex -0.234296 0.749558 -0.124123 - vertex -0.233697 0.750456 -0.00926336 - vertex -0.141259 0.738891 -0.00919506 - endloop - endfacet - facet normal 0.124991 0.992116 -0.00909641 - outer loop - vertex -0.234296 0.749558 -0.124123 - vertex -0.141259 0.738891 -0.00919506 - vertex -0.142407 0.737984 -0.123858 - endloop - endfacet - facet normal 0.208256 0.978025 -0.00981885 - outer loop - vertex -0.142407 0.737984 -0.123858 - vertex -0.141259 0.738891 -0.00919506 - vertex -0.0509061 0.719651 -0.00922752 - endloop - endfacet - facet normal 0.209656 0.977714 -0.0109858 - outer loop - vertex -0.142407 0.737984 -0.123858 - vertex -0.0509061 0.719651 -0.00922752 - vertex -0.0525081 0.71871 -0.123539 - endloop - endfacet - facet normal 0.294536 0.955565 -0.011993 - outer loop - vertex -0.0525081 0.71871 -0.123539 - vertex -0.0509061 0.719651 -0.00922752 - vertex 0.0363185 0.692763 -0.00947047 - endloop - endfacet - facet normal 0.29629 0.955003 -0.0134868 - outer loop - vertex -0.0525081 0.71871 -0.123539 - vertex 0.0363185 0.692763 -0.00947047 - vertex 0.0344075 0.691749 -0.123256 - endloop - endfacet - facet normal 0.383595 0.923385 -0.0146713 - outer loop - vertex 0.0344075 0.691749 -0.123256 - vertex 0.0363185 0.692763 -0.00947047 - vertex 0.119372 0.658252 -0.0100336 - endloop - endfacet - facet normal 0.385349 0.922629 -0.0162112 - outer loop - vertex 0.0344075 0.691749 -0.123256 - vertex 0.119372 0.658252 -0.0100336 - vertex 0.117345 0.657112 -0.123102 - endloop - endfacet - facet normal 0.475295 0.879655 -0.0173909 - outer loop - vertex 0.117345 0.657112 -0.123102 - vertex 0.119372 0.658252 -0.0100336 - vertex 0.19737 0.616095 -0.0107065 - endloop - endfacet - facet normal 0.476693 0.878872 -0.0186723 - outer loop - vertex 0.117345 0.657112 -0.123102 - vertex 0.19737 0.616095 -0.0107065 - vertex 0.195372 0.614792 -0.123039 - endloop - endfacet - facet normal 0.568533 0.822426 -0.0196503 - outer loop - vertex 0.195372 0.614792 -0.123039 - vertex 0.19737 0.616095 -0.0107065 - vertex 0.269425 0.56627 -0.0112786 - endloop - endfacet - facet normal 0.569366 0.82183 -0.0204614 - outer loop - vertex 0.195372 0.614792 -0.123039 - vertex 0.269425 0.56627 -0.0112786 - vertex 0.267558 0.564781 -0.12303 - endloop - endfacet - facet normal 0.661175 0.749936 -0.0210371 - outer loop - vertex 0.267558 0.564781 -0.12303 - vertex 0.269425 0.56627 -0.0112786 - vertex 0.334653 0.508755 -0.0115394 - endloop - endfacet - facet normal 0.661411 0.749722 -0.0212866 - outer loop - vertex 0.267558 0.564781 -0.12303 - vertex 0.334653 0.508755 -0.0115394 - vertex 0.332971 0.507073 -0.123039 - endloop - endfacet - facet normal 0.0408905 0.998743 0.0289919 - outer loop - vertex -0.327179 0.754319 -0.0093227 - vertex -0.327179 0.750989 0.105413 - vertex -0.233207 0.747141 0.105437 - endloop - endfacet - facet normal 0.0412595 0.998736 0.0286893 - outer loop - vertex -0.327179 0.754319 -0.0093227 - vertex -0.233207 0.747141 0.105437 - vertex -0.233697 0.750456 -0.00926336 - endloop - endfacet - facet normal 0.122825 0.992029 0.0281465 - outer loop - vertex -0.233697 0.750456 -0.00926336 - vertex -0.233207 0.747141 0.105437 - vertex -0.140352 0.735647 0.105336 - endloop - endfacet - facet normal 0.124074 0.991903 0.027113 - outer loop - vertex -0.233697 0.750456 -0.00926336 - vertex -0.140352 0.735647 0.105336 - vertex -0.141259 0.738891 -0.00919506 - endloop - endfacet - facet normal 0.206162 0.97817 0.0260742 - outer loop - vertex -0.141259 0.738891 -0.00919506 - vertex -0.140352 0.735647 0.105336 - vertex -0.0497327 0.716558 0.104939 - endloop - endfacet - facet normal 0.208216 0.97778 0.0243505 - outer loop - vertex -0.141259 0.738891 -0.00919506 - vertex -0.0497327 0.716558 0.104939 - vertex -0.0509061 0.719651 -0.00922752 - endloop - endfacet - facet normal 0.292032 0.956134 0.0229026 - outer loop - vertex -0.0509061 0.719651 -0.00922752 - vertex -0.0497327 0.716558 0.104939 - vertex 0.0375347 0.689925 0.104073 - endloop - endfacet - facet normal 0.294577 0.955403 0.020724 - outer loop - vertex -0.0509061 0.719651 -0.00922752 - vertex 0.0375347 0.689925 0.104073 - vertex 0.0363185 0.692763 -0.00947047 - endloop - endfacet - facet normal 0.381304 0.924254 0.0190165 - outer loop - vertex 0.0363185 0.692763 -0.00947047 - vertex 0.0375347 0.689925 0.104073 - vertex 0.120333 0.655797 0.102567 - endloop - endfacet - facet normal 0.383764 0.923278 0.0168496 - outer loop - vertex 0.0363185 0.692763 -0.00947047 - vertex 0.120333 0.655797 0.102567 - vertex 0.119372 0.658252 -0.0100336 - endloop - endfacet - facet normal 0.47363 0.880593 0.0151529 - outer loop - vertex 0.119372 0.658252 -0.0100336 - vertex 0.120333 0.655797 0.102567 - vertex 0.197858 0.614129 0.100889 - endloop - endfacet - facet normal 0.475529 0.879598 0.0134131 - outer loop - vertex 0.119372 0.658252 -0.0100336 - vertex 0.197858 0.614129 0.100889 - vertex 0.19737 0.616095 -0.0107065 - endloop - endfacet - facet normal 0.567696 0.823151 0.0120153 - outer loop - vertex 0.19737 0.616095 -0.0107065 - vertex 0.197858 0.614129 0.100889 - vertex 0.269308 0.564873 0.0995073 - endloop - endfacet - facet normal 0.568773 0.822422 0.0109736 - outer loop - vertex 0.19737 0.616095 -0.0107065 - vertex 0.269308 0.564873 0.0995073 - vertex 0.269425 0.56627 -0.0112786 - endloop - endfacet - facet normal 0.66109 0.750238 0.0101605 - outer loop - vertex 0.269425 0.56627 -0.0112786 - vertex 0.269308 0.564873 0.0995073 - vertex 0.33388 0.507982 0.0988907 - endloop - endfacet - facet normal 0.661359 0.750004 0.00987957 - outer loop - vertex 0.269425 0.56627 -0.0112786 - vertex 0.33388 0.507982 0.0988907 - vertex 0.334653 0.508755 -0.0115394 - endloop - endfacet - facet normal 0.0398126 0.99263 0.114456 - outer loop - vertex -0.327179 0.750989 0.105413 - vertex -0.327179 0.738524 0.213516 - vertex -0.232594 0.734729 0.213522 - endloop - endfacet - facet normal 0.0406207 0.992678 0.113756 - outer loop - vertex -0.327179 0.750989 0.105413 - vertex -0.232594 0.734729 0.213522 - vertex -0.233207 0.747141 0.105437 - endloop - endfacet - facet normal 0.119605 0.986417 0.11259 - outer loop - vertex -0.233207 0.747141 0.105437 - vertex -0.232594 0.734729 0.213522 - vertex -0.1392 0.723433 0.213278 - endloop - endfacet - facet normal 0.122212 0.986356 0.110304 - outer loop - vertex -0.233207 0.747141 0.105437 - vertex -0.1392 0.723433 0.213278 - vertex -0.140352 0.735647 0.105336 - endloop - endfacet - facet normal 0.201067 0.973604 0.108019 - outer loop - vertex -0.140352 0.735647 0.105336 - vertex -0.1392 0.723433 0.213278 - vertex -0.0481896 0.704721 0.212524 - endloop - endfacet - facet normal 0.20544 0.973116 0.104119 - outer loop - vertex -0.140352 0.735647 0.105336 - vertex -0.0481896 0.704721 0.212524 - vertex -0.0497327 0.716558 0.104939 - endloop - endfacet - facet normal 0.285595 0.953039 0.10076 - outer loop - vertex -0.0497327 0.716558 0.104939 - vertex -0.0481896 0.704721 0.212524 - vertex 0.0392471 0.678681 0.210997 - endloop - endfacet - facet normal 0.291434 0.951819 0.0954256 - outer loop - vertex -0.0497327 0.716558 0.104939 - vertex 0.0392471 0.678681 0.210997 - vertex 0.0375347 0.689925 0.104073 - endloop - endfacet - facet normal 0.374337 0.922812 0.0910476 - outer loop - vertex 0.0375347 0.689925 0.104073 - vertex 0.0392471 0.678681 0.210997 - vertex 0.121918 0.645398 0.208436 - endloop - endfacet - facet normal 0.381024 0.920675 0.0847285 - outer loop - vertex 0.0375347 0.689925 0.104073 - vertex 0.121918 0.645398 0.208436 - vertex 0.120333 0.655797 0.102567 - endloop - endfacet - facet normal 0.466289 0.881048 0.0795589 - outer loop - vertex 0.120333 0.655797 0.102567 - vertex 0.121918 0.645398 0.208436 - vertex 0.198576 0.605139 0.204991 - endloop - endfacet - facet normal 0.473401 0.877855 0.0725468 - outer loop - vertex 0.120333 0.655797 0.102567 - vertex 0.198576 0.605139 0.204991 - vertex 0.197858 0.614129 0.100889 - endloop - endfacet - facet normal 0.562033 0.824371 0.0673163 - outer loop - vertex 0.197858 0.614129 0.100889 - vertex 0.198576 0.605139 0.204991 - vertex 0.267973 0.558167 0.20081 - endloop - endfacet - facet normal 0.567303 0.821184 0.0618332 - outer loop - vertex 0.197858 0.614129 0.100889 - vertex 0.267973 0.558167 0.20081 - vertex 0.269308 0.564873 0.0995073 - endloop - endfacet - facet normal 0.658725 0.750119 0.0583344 - outer loop - vertex 0.269308 0.564873 0.0995073 - vertex 0.267973 0.558167 0.20081 - vertex 0.329879 0.503981 0.198536 - endloop - endfacet - facet normal 0.660315 0.748854 0.0565848 - outer loop - vertex 0.269308 0.564873 0.0995073 - vertex 0.329879 0.503981 0.198536 - vertex 0.33388 0.507982 0.0988907 - endloop - endfacet - facet normal 0.0370854 0.962569 0.268489 - outer loop - vertex -0.327179 0.738524 0.213516 - vertex -0.327179 0.712019 0.308537 - vertex -0.231629 0.708338 0.308537 - endloop - endfacet - facet normal 0.0386106 0.962905 0.267062 - outer loop - vertex -0.327179 0.738524 0.213516 - vertex -0.231629 0.708338 0.308537 - vertex -0.232594 0.734729 0.213522 - endloop - endfacet - facet normal 0.11179 0.957776 0.264894 - outer loop - vertex -0.232594 0.734729 0.213522 - vertex -0.231629 0.708338 0.308537 - vertex -0.137316 0.69743 0.308176 - endloop - endfacet - facet normal 0.116608 0.958457 0.260313 - outer loop - vertex -0.232594 0.734729 0.213522 - vertex -0.137316 0.69743 0.308176 - vertex -0.1392 0.723433 0.213278 - endloop - endfacet - facet normal 0.188829 0.948048 0.256026 - outer loop - vertex -0.1392 0.723433 0.213278 - vertex -0.137316 0.69743 0.308176 - vertex -0.0454785 0.679431 0.307092 - endloop - endfacet - facet normal 0.197067 0.948502 0.248009 - outer loop - vertex -0.1392 0.723433 0.213278 - vertex -0.0454785 0.679431 0.307092 - vertex -0.0481896 0.704721 0.212524 - endloop - endfacet - facet normal 0.269888 0.932105 0.241537 - outer loop - vertex -0.0481896 0.704721 0.212524 - vertex -0.0454785 0.679431 0.307092 - vertex 0.0426467 0.654476 0.304924 - endloop - endfacet - facet normal 0.281472 0.931625 0.229887 - outer loop - vertex -0.0481896 0.704721 0.212524 - vertex 0.0426467 0.654476 0.304924 - vertex 0.0392471 0.678681 0.210997 - endloop - endfacet - facet normal 0.356399 0.907812 0.221038 - outer loop - vertex 0.0392471 0.678681 0.210997 - vertex 0.0426467 0.654476 0.304924 - vertex 0.125822 0.622702 0.30131 - endloop - endfacet - facet normal 0.370952 0.905583 0.205707 - outer loop - vertex 0.0392471 0.678681 0.210997 - vertex 0.125822 0.622702 0.30131 - vertex 0.121918 0.645398 0.208436 - endloop - endfacet - facet normal 0.448417 0.872439 0.194351 - outer loop - vertex 0.121918 0.645398 0.208436 - vertex 0.125822 0.622702 0.30131 - vertex 0.201263 0.585368 0.294843 - endloop - endfacet - facet normal 0.463838 0.868032 0.177129 - outer loop - vertex 0.121918 0.645398 0.208436 - vertex 0.201263 0.585368 0.294843 - vertex 0.198576 0.605139 0.204991 - endloop - endfacet - facet normal 0.551585 0.817941 0.163483 - outer loop - vertex 0.198576 0.605139 0.204991 - vertex 0.201263 0.585368 0.294843 - vertex 0.266184 0.543733 0.284113 - endloop - endfacet - facet normal 0.560227 0.814069 0.153093 - outer loop - vertex 0.198576 0.605139 0.204991 - vertex 0.266184 0.543733 0.284113 - vertex 0.267973 0.558167 0.20081 - endloop - endfacet - facet normal 0.653715 0.743143 0.142811 - outer loop - vertex 0.267973 0.558167 0.20081 - vertex 0.266184 0.543733 0.284113 - vertex 0.321876 0.495978 0.277683 - endloop - endfacet - facet normal 0.654961 0.742337 0.141286 - outer loop - vertex 0.267973 0.558167 0.20081 - vertex 0.321876 0.495978 0.277683 - vertex 0.329879 0.503981 0.198536 - endloop - endfacet - facet normal 0.0307596 0.856313 0.51554 - outer loop - vertex -0.327179 0.712019 0.308537 - vertex -0.327179 0.666571 0.384027 - vertex -0.230081 0.663083 0.384027 - endloop - endfacet - facet normal 0.0330381 0.857519 0.513391 - outer loop - vertex -0.327179 0.712019 0.308537 - vertex -0.230081 0.663083 0.384027 - vertex -0.231629 0.708338 0.308537 - endloop - endfacet - facet normal 0.0939386 0.854744 0.510479 - outer loop - vertex -0.231629 0.708338 0.308537 - vertex -0.230081 0.663083 0.384027 - vertex -0.134213 0.652819 0.383572 - endloop - endfacet - facet normal 0.101169 0.858035 0.503528 - outer loop - vertex -0.231629 0.708338 0.308537 - vertex -0.134213 0.652819 0.383572 - vertex -0.137316 0.69743 0.308176 - endloop - endfacet - facet normal 0.16094 0.852301 0.497675 - outer loop - vertex -0.137316 0.69743 0.308176 - vertex -0.134213 0.652819 0.383572 - vertex -0.0408013 0.635977 0.382207 - endloop - endfacet - facet normal 0.173704 0.857086 0.485006 - outer loop - vertex -0.137316 0.69743 0.308176 - vertex -0.0408013 0.635977 0.382207 - vertex -0.0454785 0.679431 0.307092 - endloop - endfacet - facet normal 0.233889 0.847828 0.475903 - outer loop - vertex -0.0454785 0.679431 0.307092 - vertex -0.0408013 0.635977 0.382207 - vertex 0.0489247 0.612757 0.379476 - endloop - endfacet - facet normal 0.252831 0.853222 0.456168 - outer loop - vertex -0.0454785 0.679431 0.307092 - vertex 0.0489247 0.612757 0.379476 - vertex 0.0426467 0.654476 0.304924 - endloop - endfacet - facet normal 0.314731 0.839357 0.443197 - outer loop - vertex 0.0426467 0.654476 0.304924 - vertex 0.0489247 0.612757 0.379476 - vertex 0.133737 0.583359 0.374925 - endloop - endfacet - facet normal 0.340424 0.843993 0.414473 - outer loop - vertex 0.0426467 0.654476 0.304924 - vertex 0.133737 0.583359 0.374925 - vertex 0.125822 0.622702 0.30131 - endloop - endfacet - facet normal 0.41171 0.821391 0.39473 - outer loop - vertex 0.125822 0.622702 0.30131 - vertex 0.133737 0.583359 0.374925 - vertex 0.209403 0.550084 0.365244 - endloop - endfacet - facet normal 0.438232 0.822863 0.361729 - outer loop - vertex 0.125822 0.622702 0.30131 - vertex 0.209403 0.550084 0.365244 - vertex 0.201263 0.585368 0.294843 - endloop - endfacet - facet normal 0.532151 0.779957 0.329367 - outer loop - vertex 0.201263 0.585368 0.294843 - vertex 0.209403 0.550084 0.365244 - vertex 0.271692 0.515237 0.347126 - endloop - endfacet - facet normal 0.54939 0.778321 0.303951 - outer loop - vertex 0.201263 0.585368 0.294843 - vertex 0.271692 0.515237 0.347126 - vertex 0.266184 0.543733 0.284113 - endloop - endfacet - facet normal 0.647132 0.714298 0.266455 - outer loop - vertex 0.266184 0.543733 0.284113 - vertex 0.271692 0.515237 0.347126 - vertex 0.312305 0.486408 0.325773 - endloop - endfacet - facet normal 0.644468 0.715154 0.270584 - outer loop - vertex 0.266184 0.543733 0.284113 - vertex 0.312305 0.486408 0.325773 - vertex 0.321876 0.495978 0.277683 - endloop - endfacet - facet normal 0.0422456 0.986749 -0.15666 - outer loop - vertex -0.327179 0.726868 -0.457381 - vertex -0.237416 0.723104 -0.456883 - vertex -0.239125 0.706869 -0.559605 - endloop - endfacet - facet normal 0.04276 0.986795 -0.156226 - outer loop - vertex -0.327179 0.726868 -0.457381 - vertex -0.239125 0.706869 -0.559605 - vertex -0.327179 0.710571 -0.560317 - endloop - endfacet - facet normal 0.0427778 0.977991 -0.204216 - outer loop - vertex -0.327179 0.710571 -0.560317 - vertex -0.239125 0.706869 -0.559605 - vertex -0.241072 0.686593 -0.657112 - endloop - endfacet - facet normal 0.0434605 0.978083 -0.203631 - outer loop - vertex -0.327179 0.710571 -0.560317 - vertex -0.241072 0.686593 -0.657112 - vertex -0.327179 0.690219 -0.658075 - endloop - endfacet - facet normal 0.0435243 0.964533 -0.260348 - outer loop - vertex -0.327179 0.690219 -0.658075 - vertex -0.241072 0.686593 -0.657112 - vertex -0.243113 0.661845 -0.74914 - endloop - endfacet - facet normal 0.0443402 0.964686 -0.259643 - outer loop - vertex -0.327179 0.690219 -0.658075 - vertex -0.243113 0.661845 -0.74914 - vertex -0.327179 0.665375 -0.750381 - endloop - endfacet - facet normal 0.0444647 0.944459 -0.325608 - outer loop - vertex -0.327179 0.665375 -0.750381 - vertex -0.243113 0.661845 -0.74914 - vertex -0.245107 0.632192 -0.835423 - endloop - endfacet - facet normal 0.045364 0.944684 -0.324829 - outer loop - vertex -0.327179 0.665375 -0.750381 - vertex -0.245107 0.632192 -0.835423 - vertex -0.327179 0.635605 -0.836959 - endloop - endfacet - facet normal 0.0455524 0.915375 -0.400016 - outer loop - vertex -0.327179 0.635605 -0.836959 - vertex -0.245107 0.632192 -0.835423 - vertex -0.246911 0.597202 -0.915698 - endloop - endfacet - facet normal 0.0464689 0.915674 -0.399228 - outer loop - vertex -0.327179 0.635605 -0.836959 - vertex -0.246911 0.597202 -0.915698 - vertex -0.327179 0.600474 -0.917536 - endloop - endfacet - facet normal 0.0467032 0.874574 -0.482638 - outer loop - vertex -0.327179 0.600474 -0.917536 - vertex -0.246911 0.597202 -0.915698 - vertex -0.248382 0.556442 -0.9897 - endloop - endfacet - facet normal 0.0475442 0.874919 -0.48193 - outer loop - vertex -0.327179 0.600474 -0.917536 - vertex -0.248382 0.556442 -0.9897 - vertex -0.327179 0.559548 -0.991836 - endloop - endfacet - facet normal 0.0477773 0.819466 -0.571133 - outer loop - vertex -0.327179 0.559548 -0.991836 - vertex -0.248382 0.556442 -0.9897 - vertex -0.249379 0.509481 -1.05716 - endloop - endfacet - facet normal 0.0484143 0.819786 -0.570619 - outer loop - vertex -0.327179 0.559548 -0.991836 - vertex -0.249379 0.509481 -1.05716 - vertex -0.327179 0.51239 -1.05958 - endloop - endfacet - facet normal 0.0485719 0.748372 -0.661498 - outer loop - vertex -0.327179 0.51239 -1.05958 - vertex -0.249379 0.509481 -1.05716 - vertex -0.249759 0.455885 -1.11783 - endloop - endfacet - facet normal 0.048843 0.748534 -0.661295 - outer loop - vertex -0.327179 0.51239 -1.05958 - vertex -0.249759 0.455885 -1.11783 - vertex -0.327179 0.458568 -1.12051 - endloop - endfacet - facet normal 0.126599 0.979289 -0.158006 - outer loop - vertex -0.237416 0.723104 -0.456883 - vertex -0.148586 0.711821 -0.455637 - vertex -0.151985 0.695773 -0.557825 - endloop - endfacet - facet normal 0.1279 0.979297 -0.156907 - outer loop - vertex -0.237416 0.723104 -0.456883 - vertex -0.151985 0.695773 -0.557825 - vertex -0.239125 0.706869 -0.559605 - endloop - endfacet - facet normal 0.127744 0.970234 -0.205738 - outer loop - vertex -0.239125 0.706869 -0.559605 - vertex -0.151985 0.695773 -0.557825 - vertex -0.155867 0.675743 -0.654694 - endloop - endfacet - facet normal 0.129361 0.970313 -0.204348 - outer loop - vertex -0.239125 0.706869 -0.559605 - vertex -0.155867 0.675743 -0.654694 - vertex -0.241072 0.686593 -0.657112 - endloop - endfacet - facet normal 0.129225 0.956462 -0.261689 - outer loop - vertex -0.241072 0.686593 -0.657112 - vertex -0.155867 0.675743 -0.654694 - vertex -0.15996 0.651317 -0.745993 - endloop - endfacet - facet normal 0.130972 0.95664 -0.260166 - outer loop - vertex -0.241072 0.686593 -0.657112 - vertex -0.15996 0.651317 -0.745993 - vertex -0.243113 0.661845 -0.74914 - endloop - endfacet - facet normal 0.130881 0.936134 -0.326378 - outer loop - vertex -0.243113 0.661845 -0.74914 - vertex -0.15996 0.651317 -0.745993 - vertex -0.163992 0.622078 -0.831472 - endloop - endfacet - facet normal 0.132581 0.936416 -0.324881 - outer loop - vertex -0.243113 0.661845 -0.74914 - vertex -0.163992 0.622078 -0.831472 - vertex -0.245107 0.632192 -0.835423 - endloop - endfacet - facet normal 0.132558 0.906962 -0.39981 - outer loop - vertex -0.245107 0.632192 -0.835423 - vertex -0.163992 0.622078 -0.831472 - vertex -0.167691 0.587614 -0.910881 - endloop - endfacet - facet normal 0.134048 0.907322 -0.398495 - outer loop - vertex -0.245107 0.632192 -0.835423 - vertex -0.167691 0.587614 -0.910881 - vertex -0.246911 0.597202 -0.915698 - endloop - endfacet - facet normal 0.13411 0.866301 -0.481184 - outer loop - vertex -0.246911 0.597202 -0.915698 - vertex -0.167691 0.587614 -0.910881 - vertex -0.170739 0.547478 -0.983989 - endloop - endfacet - facet normal 0.135377 0.866719 -0.480075 - outer loop - vertex -0.246911 0.597202 -0.915698 - vertex -0.170739 0.547478 -0.983989 - vertex -0.248382 0.556442 -0.9897 - endloop - endfacet - facet normal 0.135503 0.811702 -0.568137 - outer loop - vertex -0.248382 0.556442 -0.9897 - vertex -0.170739 0.547478 -0.983989 - vertex -0.172822 0.50123 -1.05056 - endloop - endfacet - facet normal 0.136458 0.812111 -0.567323 - outer loop - vertex -0.248382 0.556442 -0.9897 - vertex -0.172822 0.50123 -1.05056 - vertex -0.249379 0.509481 -1.05716 - endloop - endfacet - facet normal 0.136576 0.741683 -0.656699 - outer loop - vertex -0.249379 0.509481 -1.05716 - vertex -0.172822 0.50123 -1.05056 - vertex -0.173622 0.448425 -1.11037 - endloop - endfacet - facet normal 0.13701 0.741915 -0.656347 - outer loop - vertex -0.249379 0.509481 -1.05716 - vertex -0.173622 0.448425 -1.11037 - vertex -0.249759 0.455885 -1.11783 - endloop - endfacet - facet normal 0.211558 0.96417 -0.160061 - outer loop - vertex -0.148586 0.711821 -0.455637 - vertex -0.0616197 0.693029 -0.453892 - vertex -0.0666704 0.677297 -0.555333 - endloop - endfacet - facet normal 0.213401 0.964022 -0.158496 - outer loop - vertex -0.148586 0.711821 -0.455637 - vertex -0.0666704 0.677297 -0.555333 - vertex -0.151985 0.695773 -0.557825 - endloop - endfacet - facet normal 0.212829 0.95472 -0.20788 - outer loop - vertex -0.151985 0.695773 -0.557825 - vertex -0.0666704 0.677297 -0.555333 - vertex -0.0724669 0.657696 -0.65129 - endloop - endfacet - facet normal 0.214989 0.954641 -0.20601 - outer loop - vertex -0.151985 0.695773 -0.557825 - vertex -0.0724669 0.657696 -0.65129 - vertex -0.155867 0.675743 -0.654694 - endloop - endfacet - facet normal 0.214293 0.940631 -0.263233 - outer loop - vertex -0.155867 0.675743 -0.654694 - vertex -0.0724669 0.657696 -0.65129 - vertex -0.0786327 0.633851 -0.741516 - endloop - endfacet - facet normal 0.216405 0.940667 -0.261371 - outer loop - vertex -0.155867 0.675743 -0.654694 - vertex -0.0786327 0.633851 -0.741516 - vertex -0.15996 0.651317 -0.745993 - endloop - endfacet - facet normal 0.215608 0.920225 -0.326648 - outer loop - vertex -0.15996 0.651317 -0.745993 - vertex -0.0786327 0.633851 -0.741516 - vertex -0.0847914 0.605389 -0.825763 - endloop - endfacet - facet normal 0.217376 0.92037 -0.325065 - outer loop - vertex -0.15996 0.651317 -0.745993 - vertex -0.0847914 0.605389 -0.825763 - vertex -0.163992 0.622078 -0.831472 - endloop - endfacet - facet normal 0.216538 0.891367 -0.398217 - outer loop - vertex -0.163992 0.622078 -0.831472 - vertex -0.0847914 0.605389 -0.825763 - vertex -0.0905663 0.571936 -0.903784 - endloop - endfacet - facet normal 0.217776 0.891565 -0.397097 - outer loop - vertex -0.163992 0.622078 -0.831472 - vertex -0.0905663 0.571936 -0.903784 - vertex -0.167691 0.587614 -0.910881 - endloop - endfacet - facet normal 0.217013 0.851423 -0.477477 - outer loop - vertex -0.167691 0.587614 -0.910881 - vertex -0.0905663 0.571936 -0.903784 - vertex -0.0954035 0.533007 -0.9754 - endloop - endfacet - facet normal 0.217936 0.851656 -0.47664 - outer loop - vertex -0.167691 0.587614 -0.910881 - vertex -0.0954035 0.533007 -0.9754 - vertex -0.170739 0.547478 -0.983989 - endloop - endfacet - facet normal 0.217371 0.798032 -0.562045 - outer loop - vertex -0.170739 0.547478 -0.983989 - vertex -0.0954035 0.533007 -0.9754 - vertex -0.098749 0.488114 -1.04044 - endloop - endfacet - facet normal 0.218088 0.798289 -0.561402 - outer loop - vertex -0.170739 0.547478 -0.983989 - vertex -0.098749 0.488114 -1.04044 - vertex -0.172822 0.50123 -1.05056 - endloop - endfacet - facet normal 0.217805 0.729915 -0.647908 - outer loop - vertex -0.172822 0.50123 -1.05056 - vertex -0.098749 0.488114 -1.04044 - vertex -0.100049 0.436772 -1.09871 - endloop - endfacet - facet normal 0.218198 0.730102 -0.647565 - outer loop - vertex -0.172822 0.50123 -1.05056 - vertex -0.100049 0.436772 -1.09871 - vertex -0.173622 0.448425 -1.11037 - endloop - endfacet - facet normal 0.297715 0.940708 -0.162586 - outer loop - vertex -0.0616197 0.693029 -0.453892 - vertex 0.0225503 0.666735 -0.451898 - vertex 0.0159051 0.651454 -0.552484 - endloop - endfacet - facet normal 0.299842 0.940346 -0.160762 - outer loop - vertex -0.0616197 0.693029 -0.453892 - vertex 0.0159051 0.651454 -0.552484 - vertex -0.0666704 0.677297 -0.555333 - endloop - endfacet - facet normal 0.298599 0.930912 -0.210334 - outer loop - vertex -0.0666704 0.677297 -0.555333 - vertex 0.0159051 0.651454 -0.552484 - vertex 0.00822601 0.632478 -0.647371 - endloop - endfacet - facet normal 0.300948 0.930618 -0.20828 - outer loop - vertex -0.0666704 0.677297 -0.555333 - vertex 0.00822601 0.632478 -0.647371 - vertex -0.0724669 0.657696 -0.65129 - endloop - endfacet - facet normal 0.299339 0.916709 -0.264653 - outer loop - vertex -0.0724669 0.657696 -0.65129 - vertex 0.00822601 0.632478 -0.647371 - vertex -4.40478e-05 0.609509 -0.736286 - endloop - endfacet - facet normal 0.301388 0.916563 -0.262824 - outer loop - vertex -0.0724669 0.657696 -0.65129 - vertex -4.40478e-05 0.609509 -0.736286 - vertex -0.0786327 0.633851 -0.741516 - endloop - endfacet - facet normal 0.299432 0.896637 -0.326162 - outer loop - vertex -0.0786327 0.633851 -0.741516 - vertex -4.40478e-05 0.609509 -0.736286 - vertex -0.00846225 0.582249 -0.818954 - endloop - endfacet - facet normal 0.300814 0.896631 -0.324906 - outer loop - vertex -0.0786327 0.633851 -0.741516 - vertex -0.00846225 0.582249 -0.818954 - vertex -0.0847914 0.605389 -0.825763 - endloop - endfacet - facet normal 0.298618 0.868701 -0.395205 - outer loop - vertex -0.0847914 0.605389 -0.825763 - vertex -0.00846225 0.582249 -0.818954 - vertex -0.0165857 0.550399 -0.895101 - endloop - endfacet - facet normal 0.299231 0.868747 -0.394639 - outer loop - vertex -0.0847914 0.605389 -0.825763 - vertex -0.0165857 0.550399 -0.895101 - vertex -0.0905663 0.571936 -0.903784 - endloop - endfacet - facet normal 0.297057 0.830223 -0.471685 - outer loop - vertex -0.0905663 0.571936 -0.903784 - vertex -0.0165857 0.550399 -0.895101 - vertex -0.023528 0.513379 -0.964632 - endloop - endfacet - facet normal 0.297354 0.830275 -0.471407 - outer loop - vertex -0.0905663 0.571936 -0.903784 - vertex -0.023528 0.513379 -0.964632 - vertex -0.0954035 0.533007 -0.9754 - endloop - endfacet - facet normal 0.295565 0.778846 -0.55321 - outer loop - vertex -0.0954035 0.533007 -0.9754 - vertex -0.023528 0.513379 -0.964632 - vertex -0.0284025 0.470611 -1.02745 - endloop - endfacet - facet normal 0.295889 0.778939 -0.552905 - outer loop - vertex -0.0954035 0.533007 -0.9754 - vertex -0.0284025 0.470611 -1.02745 - vertex -0.098749 0.488114 -1.04044 - endloop - endfacet - facet normal 0.29487 0.713493 -0.635594 - outer loop - vertex -0.098749 0.488114 -1.04044 - vertex -0.0284025 0.470611 -1.02745 - vertex -0.0303229 0.421514 -1.08345 - endloop - endfacet - facet normal 0.295197 0.713631 -0.635288 - outer loop - vertex -0.098749 0.488114 -1.04044 - vertex -0.0303229 0.421514 -1.08345 - vertex -0.100049 0.436772 -1.09871 - endloop - endfacet - facet normal 0.385385 0.907829 -0.165302 - outer loop - vertex 0.0225503 0.666735 -0.451898 - vertex 0.102992 0.63295 -0.449905 - vertex 0.0948286 0.618256 -0.549636 - endloop - endfacet - facet normal 0.387523 0.907256 -0.163437 - outer loop - vertex 0.0225503 0.666735 -0.451898 - vertex 0.0948286 0.618256 -0.549636 - vertex 0.0159051 0.651454 -0.552484 - endloop - endfacet - facet normal 0.385365 0.89789 -0.212809 - outer loop - vertex 0.0159051 0.651454 -0.552484 - vertex 0.0948286 0.618256 -0.549636 - vertex 0.0853095 0.600116 -0.643408 - endloop - endfacet - facet normal 0.387589 0.897399 -0.210834 - outer loop - vertex 0.0159051 0.651454 -0.552484 - vertex 0.0853095 0.600116 -0.643408 - vertex 0.00822601 0.632478 -0.647371 - endloop - endfacet - facet normal 0.384758 0.88393 -0.265762 - outer loop - vertex 0.00822601 0.632478 -0.647371 - vertex 0.0853095 0.600116 -0.643408 - vertex 0.0748933 0.578352 -0.730878 - endloop - endfacet - facet normal 0.386465 0.883648 -0.264217 - outer loop - vertex 0.00822601 0.632478 -0.647371 - vertex 0.0748933 0.578352 -0.730878 - vertex -4.40478e-05 0.609509 -0.736286 - endloop - endfacet - facet normal 0.382974 0.864701 -0.324998 - outer loop - vertex -4.40478e-05 0.609509 -0.736286 - vertex 0.0748933 0.578352 -0.730878 - vertex 0.0640383 0.552782 -0.8117 - endloop - endfacet - facet normal 0.38384 0.864617 -0.324199 - outer loop - vertex -4.40478e-05 0.609509 -0.736286 - vertex 0.0640383 0.552782 -0.8117 - vertex -0.00846225 0.582249 -0.818954 - endloop - endfacet - facet normal 0.379827 0.838231 -0.39128 - outer loop - vertex -0.00846225 0.582249 -0.818954 - vertex 0.0640383 0.552782 -0.8117 - vertex 0.0532032 0.523228 -0.885532 - endloop - endfacet - facet normal 0.379977 0.838229 -0.391139 - outer loop - vertex -0.00846225 0.582249 -0.818954 - vertex 0.0532032 0.523228 -0.885532 - vertex -0.0165857 0.550399 -0.895101 - endloop - endfacet - facet normal 0.375876 0.801874 -0.464451 - outer loop - vertex -0.0165857 0.550399 -0.895101 - vertex 0.0532032 0.523228 -0.885532 - vertex 0.0437335 0.488947 -0.952382 - endloop - endfacet - facet normal 0.375867 0.801874 -0.46446 - outer loop - vertex -0.0165857 0.550399 -0.895101 - vertex 0.0437335 0.488947 -0.952382 - vertex -0.023528 0.513379 -0.964632 - endloop - endfacet - facet normal 0.372365 0.7533 -0.54211 - outer loop - vertex -0.023528 0.513379 -0.964632 - vertex 0.0437335 0.488947 -0.952382 - vertex 0.0369751 0.449196 -1.01226 - endloop - endfacet - facet normal 0.372642 0.753359 -0.541838 - outer loop - vertex -0.023528 0.513379 -0.964632 - vertex 0.0369751 0.449196 -1.01226 - vertex -0.0284025 0.470611 -1.02745 - endloop - endfacet - facet normal 0.370576 0.691767 -0.619783 - outer loop - vertex -0.0284025 0.470611 -1.02745 - vertex 0.0369751 0.449196 -1.01226 - vertex 0.0342738 0.403235 -1.06518 - endloop - endfacet - facet normal 0.371045 0.691939 -0.619311 - outer loop - vertex -0.0284025 0.470611 -1.02745 - vertex 0.0342738 0.403235 -1.06518 - vertex -0.0303229 0.421514 -1.08345 - endloop - endfacet - facet normal 0.474448 0.864129 -0.167868 - outer loop - vertex 0.102992 0.63295 -0.449905 - vertex 0.178774 0.591681 -0.44816 - vertex 0.169187 0.577716 -0.547144 - endloop - endfacet - facet normal 0.476309 0.863427 -0.166203 - outer loop - vertex 0.102992 0.63295 -0.449905 - vertex 0.169187 0.577716 -0.547144 - vertex 0.0948286 0.618256 -0.549636 - endloop - endfacet - facet normal 0.473022 0.854393 -0.21509 - outer loop - vertex 0.0948286 0.618256 -0.549636 - vertex 0.169187 0.577716 -0.547144 - vertex 0.157899 0.56061 -0.639916 - endloop - endfacet - facet normal 0.474922 0.853771 -0.213366 - outer loop - vertex 0.0948286 0.618256 -0.549636 - vertex 0.157899 0.56061 -0.639916 - vertex 0.0853095 0.600116 -0.643408 - endloop - endfacet - facet normal 0.470584 0.841086 -0.266691 - outer loop - vertex 0.0853095 0.600116 -0.643408 - vertex 0.157899 0.56061 -0.639916 - vertex 0.145337 0.540328 -0.726046 - endloop - endfacet - facet normal 0.471991 0.840708 -0.265396 - outer loop - vertex 0.0853095 0.600116 -0.643408 - vertex 0.145337 0.540328 -0.726046 - vertex 0.0748933 0.578352 -0.730878 - endloop - endfacet - facet normal 0.466511 0.823142 -0.323736 - outer loop - vertex 0.0748933 0.578352 -0.730878 - vertex 0.145337 0.540328 -0.726046 - vertex 0.13193 0.516834 -0.805104 - endloop - endfacet - facet normal 0.467174 0.823009 -0.323117 - outer loop - vertex 0.0748933 0.578352 -0.730878 - vertex 0.13193 0.516834 -0.805104 - vertex 0.0640383 0.552782 -0.8117 - endloop - endfacet - facet normal 0.460515 0.798627 -0.387454 - outer loop - vertex 0.0640383 0.552782 -0.8117 - vertex 0.13193 0.516834 -0.805104 - vertex 0.118106 0.49009 -0.876659 - endloop - endfacet - facet normal 0.460693 0.798606 -0.387285 - outer loop - vertex 0.0640383 0.552782 -0.8117 - vertex 0.118106 0.49009 -0.876659 - vertex 0.0532032 0.523228 -0.885532 - endloop - endfacet - facet normal 0.453375 0.765903 -0.455899 - outer loop - vertex 0.0532032 0.523228 -0.885532 - vertex 0.118106 0.49009 -0.876659 - vertex 0.105529 0.459485 -0.940583 - endloop - endfacet - facet normal 0.452391 0.765917 -0.456851 - outer loop - vertex 0.0532032 0.523228 -0.885532 - vertex 0.105529 0.459485 -0.940583 - vertex 0.0437335 0.488947 -0.952382 - endloop - endfacet - facet normal 0.445493 0.722881 -0.528185 - outer loop - vertex 0.0437335 0.488947 -0.952382 - vertex 0.105529 0.459485 -0.940583 - vertex 0.0958631 0.424405 -0.996746 - endloop - endfacet - facet normal 0.44383 0.722684 -0.529852 - outer loop - vertex 0.0437335 0.488947 -0.952382 - vertex 0.0958631 0.424405 -0.996746 - vertex 0.0369751 0.449196 -1.01226 - endloop - endfacet - facet normal 0.439351 0.667204 -0.601506 - outer loop - vertex 0.0369751 0.449196 -1.01226 - vertex 0.0958631 0.424405 -0.996746 - vertex 0.0917581 0.383347 -1.04529 - endloop - endfacet - facet normal 0.439022 0.667105 -0.601856 - outer loop - vertex 0.0369751 0.449196 -1.01226 - vertex 0.0917581 0.383347 -1.04529 - vertex 0.0342738 0.403235 -1.06518 - endloop - endfacet - facet normal 0.564142 0.808013 -0.169881 - outer loop - vertex 0.178774 0.591681 -0.44816 - vertex 0.248963 0.542938 -0.446914 - vertex 0.238068 0.529846 -0.545364 - endloop - endfacet - facet normal 0.565441 0.807357 -0.168671 - outer loop - vertex 0.178774 0.591681 -0.44816 - vertex 0.238068 0.529846 -0.545364 - vertex 0.169187 0.577716 -0.547144 - endloop - endfacet - facet normal 0.560873 0.798991 -0.216876 - outer loop - vertex 0.169187 0.577716 -0.547144 - vertex 0.238068 0.529846 -0.545364 - vertex 0.22511 0.513958 -0.637409 - endloop - endfacet - facet normal 0.562217 0.798387 -0.215617 - outer loop - vertex 0.169187 0.577716 -0.547144 - vertex 0.22511 0.513958 -0.637409 - vertex 0.157899 0.56061 -0.639916 - endloop - endfacet - facet normal 0.556157 0.786871 -0.267439 - outer loop - vertex 0.157899 0.56061 -0.639916 - vertex 0.22511 0.513958 -0.637409 - vertex 0.210445 0.495387 -0.722544 - endloop - endfacet - facet normal 0.557194 0.786469 -0.266462 - outer loop - vertex 0.157899 0.56061 -0.639916 - vertex 0.210445 0.495387 -0.722544 - vertex 0.145337 0.540328 -0.726046 - endloop - endfacet - facet normal 0.549351 0.770715 -0.322818 - outer loop - vertex 0.145337 0.540328 -0.726046 - vertex 0.210445 0.495387 -0.722544 - vertex 0.194432 0.474247 -0.800266 - endloop - endfacet - facet normal 0.549954 0.770523 -0.322249 - outer loop - vertex 0.145337 0.540328 -0.726046 - vertex 0.194432 0.474247 -0.800266 - vertex 0.13193 0.516834 -0.805104 - endloop - endfacet - facet normal 0.539915 0.748704 -0.384621 - outer loop - vertex 0.13193 0.516834 -0.805104 - vertex 0.194432 0.474247 -0.800266 - vertex 0.177427 0.450651 -0.870068 - endloop - endfacet - facet normal 0.54038 0.748594 -0.384184 - outer loop - vertex 0.13193 0.516834 -0.805104 - vertex 0.177427 0.450651 -0.870068 - vertex 0.118106 0.49009 -0.876659 - endloop - endfacet - facet normal 0.529048 0.720954 -0.447587 - outer loop - vertex 0.118106 0.49009 -0.876659 - vertex 0.177427 0.450651 -0.870068 - vertex 0.161005 0.424769 -0.931169 - endloop - endfacet - facet normal 0.527498 0.72117 -0.449065 - outer loop - vertex 0.118106 0.49009 -0.876659 - vertex 0.161005 0.424769 -0.931169 - vertex 0.105529 0.459485 -0.940583 - endloop - endfacet - facet normal 0.515976 0.685089 -0.514221 - outer loop - vertex 0.105529 0.459485 -0.940583 - vertex 0.161005 0.424769 -0.931169 - vertex 0.14674 0.396771 -0.982784 - endloop - endfacet - facet normal 0.513822 0.685106 -0.51635 - outer loop - vertex 0.105529 0.459485 -0.940583 - vertex 0.14674 0.396771 -0.982784 - vertex 0.0958631 0.424405 -0.996746 - endloop - endfacet - facet normal 0.505666 0.637007 -0.581828 - outer loop - vertex 0.0958631 0.424405 -0.996746 - vertex 0.14674 0.396771 -0.982784 - vertex 0.140147 0.363261 -1.0252 - endloop - endfacet - facet normal 0.505853 0.637047 -0.581622 - outer loop - vertex 0.0958631 0.424405 -0.996746 - vertex 0.140147 0.363261 -1.0252 - vertex 0.0917581 0.383347 -1.04529 - endloop - endfacet - facet normal 0.652861 0.737952 -0.170881 - outer loop - vertex 0.248963 0.542938 -0.446914 - vertex 0.312627 0.48673 -0.446415 - vertex 0.300558 0.47466 -0.544652 - endloop - endfacet - facet normal 0.653354 0.737627 -0.170394 - outer loop - vertex 0.248963 0.542938 -0.446914 - vertex 0.300558 0.47466 -0.544652 - vertex 0.238068 0.529846 -0.545364 - endloop - endfacet - facet normal 0.647452 0.730333 -0.217759 - outer loop - vertex 0.238068 0.529846 -0.545364 - vertex 0.300558 0.47466 -0.544652 - vertex 0.286057 0.460159 -0.636401 - endloop - endfacet - facet normal 0.647987 0.730015 -0.217234 - outer loop - vertex 0.238068 0.529846 -0.545364 - vertex 0.286057 0.460159 -0.636401 - vertex 0.22511 0.513958 -0.637409 - endloop - endfacet - facet normal 0.640085 0.720116 -0.267814 - outer loop - vertex 0.22511 0.513958 -0.637409 - vertex 0.286057 0.460159 -0.636401 - vertex 0.269375 0.443478 -0.721126 - endloop - endfacet - facet normal 0.64055 0.71987 -0.267361 - outer loop - vertex 0.22511 0.513958 -0.637409 - vertex 0.269375 0.443478 -0.721126 - vertex 0.210445 0.495387 -0.722544 - endloop - endfacet - facet normal 0.630065 0.706464 -0.322378 - outer loop - vertex 0.210445 0.495387 -0.722544 - vertex 0.269375 0.443478 -0.721126 - vertex 0.250764 0.424866 -0.798286 - endloop - endfacet - facet normal 0.630456 0.706286 -0.322004 - outer loop - vertex 0.210445 0.495387 -0.722544 - vertex 0.250764 0.424866 -0.798286 - vertex 0.194432 0.474247 -0.800266 - endloop - endfacet - facet normal 0.616444 0.687847 -0.383228 - outer loop - vertex 0.194432 0.474247 -0.800266 - vertex 0.250764 0.424866 -0.798286 - vertex 0.230473 0.404576 -0.867343 - endloop - endfacet - facet normal 0.616956 0.687653 -0.382751 - outer loop - vertex 0.194432 0.474247 -0.800266 - vertex 0.230473 0.404576 -0.867343 - vertex 0.177427 0.450651 -0.870068 - endloop - endfacet - facet normal 0.600759 0.66544 -0.443032 - outer loop - vertex 0.177427 0.450651 -0.870068 - vertex 0.230473 0.404576 -0.867343 - vertex 0.209579 0.383682 -0.927058 - endloop - endfacet - facet normal 0.600463 0.665528 -0.443302 - outer loop - vertex 0.177427 0.450651 -0.870068 - vertex 0.209579 0.383682 -0.927058 - vertex 0.161005 0.424769 -0.931169 - endloop - endfacet - facet normal 0.581483 0.636782 -0.506346 - outer loop - vertex 0.161005 0.424769 -0.931169 - vertex 0.209579 0.383682 -0.927058 - vertex 0.189158 0.363261 -0.976191 - endloop - endfacet - facet normal 0.581694 0.636739 -0.506157 - outer loop - vertex 0.161005 0.424769 -0.931169 - vertex 0.189158 0.363261 -0.976191 - vertex 0.14674 0.396771 -0.982784 - endloop - endfacet - facet normal 0.562735 0.600568 -0.568021 - outer loop - vertex 0.14674 0.396771 -0.982784 - vertex 0.189158 0.363261 -0.976191 - vertex 0.173079 0.347181 -1.00912 - endloop - endfacet - facet normal 0.568022 0.600568 -0.562734 - outer loop - vertex 0.14674 0.396771 -0.982784 - vertex 0.173079 0.347181 -1.00912 - vertex 0.140147 0.363261 -1.0252 - endloop - endfacet - facet normal -0.04276 0.986795 -0.156226 - outer loop - vertex -0.327179 0.726868 -0.457381 - vertex -0.327179 0.710571 -0.560317 - vertex -0.415232 0.706869 -0.559605 - endloop - endfacet - facet normal -0.0422456 0.986749 -0.15666 - outer loop - vertex -0.327179 0.726868 -0.457381 - vertex -0.415232 0.706869 -0.559605 - vertex -0.416941 0.723104 -0.456883 - endloop - endfacet - facet normal -0.1279 0.979297 -0.156907 - outer loop - vertex -0.416941 0.723104 -0.456883 - vertex -0.415232 0.706869 -0.559605 - vertex -0.502372 0.695773 -0.557825 - endloop - endfacet - facet normal -0.126599 0.979289 -0.158006 - outer loop - vertex -0.416941 0.723104 -0.456883 - vertex -0.502372 0.695773 -0.557825 - vertex -0.505771 0.711821 -0.455637 - endloop - endfacet - facet normal -0.2134 0.964023 -0.158495 - outer loop - vertex -0.505771 0.711821 -0.455637 - vertex -0.502372 0.695773 -0.557825 - vertex -0.587687 0.677297 -0.555333 - endloop - endfacet - facet normal -0.211558 0.96417 -0.16006 - outer loop - vertex -0.505771 0.711821 -0.455637 - vertex -0.587687 0.677297 -0.555333 - vertex -0.592737 0.693029 -0.453892 - endloop - endfacet - facet normal -0.299842 0.940346 -0.160761 - outer loop - vertex -0.592737 0.693029 -0.453892 - vertex -0.587687 0.677297 -0.555333 - vertex -0.670262 0.651454 -0.552484 - endloop - endfacet - facet normal -0.297714 0.940708 -0.162587 - outer loop - vertex -0.592737 0.693029 -0.453892 - vertex -0.670262 0.651454 -0.552484 - vertex -0.676908 0.666736 -0.451898 - endloop - endfacet - facet normal -0.387523 0.907256 -0.163438 - outer loop - vertex -0.676908 0.666736 -0.451898 - vertex -0.670262 0.651454 -0.552484 - vertex -0.749186 0.618256 -0.549636 - endloop - endfacet - facet normal -0.385384 0.907829 -0.165303 - outer loop - vertex -0.676908 0.666736 -0.451898 - vertex -0.749186 0.618256 -0.549636 - vertex -0.757349 0.63295 -0.449905 - endloop - endfacet - facet normal -0.476308 0.863428 -0.166203 - outer loop - vertex -0.757349 0.63295 -0.449905 - vertex -0.749186 0.618256 -0.549636 - vertex -0.823545 0.577716 -0.547144 - endloop - endfacet - facet normal -0.474447 0.86413 -0.167869 - outer loop - vertex -0.757349 0.63295 -0.449905 - vertex -0.823545 0.577716 -0.547144 - vertex -0.833131 0.591681 -0.44816 - endloop - endfacet - facet normal -0.56544 0.807358 -0.168672 - outer loop - vertex -0.833131 0.591681 -0.44816 - vertex -0.823545 0.577716 -0.547144 - vertex -0.892425 0.529846 -0.545364 - endloop - endfacet - facet normal -0.564141 0.808013 -0.169881 - outer loop - vertex -0.833131 0.591681 -0.44816 - vertex -0.892425 0.529846 -0.545364 - vertex -0.90332 0.542939 -0.446914 - endloop - endfacet - facet normal -0.653354 0.737628 -0.170394 - outer loop - vertex -0.90332 0.542939 -0.446914 - vertex -0.892425 0.529846 -0.545364 - vertex -0.954915 0.474661 -0.544652 - endloop - endfacet - facet normal -0.65286 0.737952 -0.170881 - outer loop - vertex -0.90332 0.542939 -0.446914 - vertex -0.954915 0.474661 -0.544652 - vertex -0.966985 0.48673 -0.446415 - endloop - endfacet - facet normal -0.0434605 0.978083 -0.203631 - outer loop - vertex -0.327179 0.710571 -0.560317 - vertex -0.327179 0.690219 -0.658075 - vertex -0.413286 0.686593 -0.657112 - endloop - endfacet - facet normal -0.0427778 0.977991 -0.204216 - outer loop - vertex -0.327179 0.710571 -0.560317 - vertex -0.413286 0.686593 -0.657112 - vertex -0.415232 0.706869 -0.559605 - endloop - endfacet - facet normal -0.129362 0.970313 -0.204348 - outer loop - vertex -0.415232 0.706869 -0.559605 - vertex -0.413286 0.686593 -0.657112 - vertex -0.49849 0.675743 -0.654694 - endloop - endfacet - facet normal -0.127744 0.970234 -0.205738 - outer loop - vertex -0.415232 0.706869 -0.559605 - vertex -0.49849 0.675743 -0.654694 - vertex -0.502372 0.695773 -0.557825 - endloop - endfacet - facet normal -0.214987 0.954641 -0.206011 - outer loop - vertex -0.502372 0.695773 -0.557825 - vertex -0.49849 0.675743 -0.654694 - vertex -0.58189 0.657696 -0.65129 - endloop - endfacet - facet normal -0.212828 0.95472 -0.20788 - outer loop - vertex -0.502372 0.695773 -0.557825 - vertex -0.58189 0.657696 -0.65129 - vertex -0.587687 0.677297 -0.555333 - endloop - endfacet - facet normal -0.300948 0.930618 -0.20828 - outer loop - vertex -0.587687 0.677297 -0.555333 - vertex -0.58189 0.657696 -0.65129 - vertex -0.662583 0.632478 -0.647371 - endloop - endfacet - facet normal -0.298599 0.930912 -0.210334 - outer loop - vertex -0.587687 0.677297 -0.555333 - vertex -0.662583 0.632478 -0.647371 - vertex -0.670262 0.651454 -0.552484 - endloop - endfacet - facet normal -0.387587 0.897399 -0.210834 - outer loop - vertex -0.670262 0.651454 -0.552484 - vertex -0.662583 0.632478 -0.647371 - vertex -0.739667 0.600116 -0.643408 - endloop - endfacet - facet normal -0.385365 0.89789 -0.212808 - outer loop - vertex -0.670262 0.651454 -0.552484 - vertex -0.739667 0.600116 -0.643408 - vertex -0.749186 0.618256 -0.549636 - endloop - endfacet - facet normal -0.474922 0.853771 -0.213364 - outer loop - vertex -0.749186 0.618256 -0.549636 - vertex -0.739667 0.600116 -0.643408 - vertex -0.812256 0.56061 -0.639916 - endloop - endfacet - facet normal -0.473021 0.854393 -0.21509 - outer loop - vertex -0.749186 0.618256 -0.549636 - vertex -0.812256 0.56061 -0.639916 - vertex -0.823545 0.577716 -0.547144 - endloop - endfacet - facet normal -0.562216 0.798387 -0.215616 - outer loop - vertex -0.823545 0.577716 -0.547144 - vertex -0.812256 0.56061 -0.639916 - vertex -0.879467 0.513958 -0.637409 - endloop - endfacet - facet normal -0.560872 0.798992 -0.216876 - outer loop - vertex -0.823545 0.577716 -0.547144 - vertex -0.879467 0.513958 -0.637409 - vertex -0.892425 0.529846 -0.545364 - endloop - endfacet - facet normal -0.647986 0.730016 -0.217235 - outer loop - vertex -0.892425 0.529846 -0.545364 - vertex -0.879467 0.513958 -0.637409 - vertex -0.940414 0.460159 -0.636401 - endloop - endfacet - facet normal -0.647452 0.730333 -0.217759 - outer loop - vertex -0.892425 0.529846 -0.545364 - vertex -0.940414 0.460159 -0.636401 - vertex -0.954915 0.474661 -0.544652 - endloop - endfacet - facet normal -0.0443402 0.964686 -0.259643 - outer loop - vertex -0.327179 0.690219 -0.658075 - vertex -0.327179 0.665375 -0.750381 - vertex -0.411244 0.661845 -0.74914 - endloop - endfacet - facet normal -0.0435243 0.964533 -0.260348 - outer loop - vertex -0.327179 0.690219 -0.658075 - vertex -0.411244 0.661845 -0.74914 - vertex -0.413286 0.686593 -0.657112 - endloop - endfacet - facet normal -0.130971 0.95664 -0.260166 - outer loop - vertex -0.413286 0.686593 -0.657112 - vertex -0.411244 0.661845 -0.74914 - vertex -0.494397 0.651317 -0.745993 - endloop - endfacet - facet normal -0.129225 0.956462 -0.261688 - outer loop - vertex -0.413286 0.686593 -0.657112 - vertex -0.494397 0.651317 -0.745993 - vertex -0.49849 0.675743 -0.654694 - endloop - endfacet - facet normal -0.216404 0.940667 -0.26137 - outer loop - vertex -0.49849 0.675743 -0.654694 - vertex -0.494397 0.651317 -0.745993 - vertex -0.575724 0.633851 -0.741516 - endloop - endfacet - facet normal -0.214291 0.940632 -0.263233 - outer loop - vertex -0.49849 0.675743 -0.654694 - vertex -0.575724 0.633851 -0.741516 - vertex -0.58189 0.657696 -0.65129 - endloop - endfacet - facet normal -0.301387 0.916564 -0.262825 - outer loop - vertex -0.58189 0.657696 -0.65129 - vertex -0.575724 0.633851 -0.741516 - vertex -0.654313 0.609509 -0.736286 - endloop - endfacet - facet normal -0.299339 0.916709 -0.264652 - outer loop - vertex -0.58189 0.657696 -0.65129 - vertex -0.654313 0.609509 -0.736286 - vertex -0.662583 0.632478 -0.647371 - endloop - endfacet - facet normal -0.386465 0.883649 -0.264216 - outer loop - vertex -0.662583 0.632478 -0.647371 - vertex -0.654313 0.609509 -0.736286 - vertex -0.729251 0.578352 -0.730878 - endloop - endfacet - facet normal -0.384757 0.88393 -0.265762 - outer loop - vertex -0.662583 0.632478 -0.647371 - vertex -0.729251 0.578352 -0.730878 - vertex -0.739667 0.600116 -0.643408 - endloop - endfacet - facet normal -0.471991 0.840708 -0.265396 - outer loop - vertex -0.739667 0.600116 -0.643408 - vertex -0.729251 0.578352 -0.730878 - vertex -0.799694 0.540329 -0.726046 - endloop - endfacet - facet normal -0.470584 0.841086 -0.266692 - outer loop - vertex -0.739667 0.600116 -0.643408 - vertex -0.799694 0.540329 -0.726046 - vertex -0.812256 0.56061 -0.639916 - endloop - endfacet - facet normal -0.557194 0.786469 -0.266462 - outer loop - vertex -0.812256 0.56061 -0.639916 - vertex -0.799694 0.540329 -0.726046 - vertex -0.864802 0.495388 -0.722544 - endloop - endfacet - facet normal -0.556156 0.786871 -0.26744 - outer loop - vertex -0.812256 0.56061 -0.639916 - vertex -0.864802 0.495388 -0.722544 - vertex -0.879467 0.513958 -0.637409 - endloop - endfacet - facet normal -0.64055 0.719871 -0.267361 - outer loop - vertex -0.879467 0.513958 -0.637409 - vertex -0.864802 0.495388 -0.722544 - vertex -0.923732 0.443478 -0.721126 - endloop - endfacet - facet normal -0.640084 0.720116 -0.267815 - outer loop - vertex -0.879467 0.513958 -0.637409 - vertex -0.923732 0.443478 -0.721126 - vertex -0.940414 0.460159 -0.636401 - endloop - endfacet - facet normal -0.0453633 0.944684 -0.324828 - outer loop - vertex -0.327179 0.665375 -0.750381 - vertex -0.327179 0.635605 -0.836959 - vertex -0.409251 0.632192 -0.835423 - endloop - endfacet - facet normal -0.0444647 0.944459 -0.325608 - outer loop - vertex -0.327179 0.665375 -0.750381 - vertex -0.409251 0.632192 -0.835423 - vertex -0.411244 0.661845 -0.74914 - endloop - endfacet - facet normal -0.13258 0.936416 -0.32488 - outer loop - vertex -0.411244 0.661845 -0.74914 - vertex -0.409251 0.632192 -0.835423 - vertex -0.490365 0.622079 -0.831472 - endloop - endfacet - facet normal -0.130881 0.936135 -0.326377 - outer loop - vertex -0.411244 0.661845 -0.74914 - vertex -0.490365 0.622079 -0.831472 - vertex -0.494397 0.651317 -0.745993 - endloop - endfacet - facet normal -0.217376 0.92037 -0.325064 - outer loop - vertex -0.494397 0.651317 -0.745993 - vertex -0.490365 0.622079 -0.831472 - vertex -0.569566 0.605389 -0.825763 - endloop - endfacet - facet normal -0.215608 0.920225 -0.326647 - outer loop - vertex -0.494397 0.651317 -0.745993 - vertex -0.569566 0.605389 -0.825763 - vertex -0.575724 0.633851 -0.741516 - endloop - endfacet - facet normal -0.300813 0.896631 -0.324905 - outer loop - vertex -0.575724 0.633851 -0.741516 - vertex -0.569566 0.605389 -0.825763 - vertex -0.645895 0.582249 -0.818953 - endloop - endfacet - facet normal -0.29943 0.896638 -0.326162 - outer loop - vertex -0.575724 0.633851 -0.741516 - vertex -0.645895 0.582249 -0.818953 - vertex -0.654313 0.609509 -0.736286 - endloop - endfacet - facet normal -0.383839 0.864617 -0.324199 - outer loop - vertex -0.654313 0.609509 -0.736286 - vertex -0.645895 0.582249 -0.818953 - vertex -0.718396 0.552782 -0.8117 - endloop - endfacet - facet normal -0.382974 0.864701 -0.324998 - outer loop - vertex -0.654313 0.609509 -0.736286 - vertex -0.718396 0.552782 -0.8117 - vertex -0.729251 0.578352 -0.730878 - endloop - endfacet - facet normal -0.467174 0.823009 -0.323116 - outer loop - vertex -0.729251 0.578352 -0.730878 - vertex -0.718396 0.552782 -0.8117 - vertex -0.786287 0.516834 -0.805104 - endloop - endfacet - facet normal -0.466511 0.823142 -0.323736 - outer loop - vertex -0.729251 0.578352 -0.730878 - vertex -0.786287 0.516834 -0.805104 - vertex -0.799694 0.540329 -0.726046 - endloop - endfacet - facet normal -0.549954 0.770523 -0.322249 - outer loop - vertex -0.799694 0.540329 -0.726046 - vertex -0.786287 0.516834 -0.805104 - vertex -0.848789 0.474247 -0.800266 - endloop - endfacet - facet normal -0.549351 0.770715 -0.322819 - outer loop - vertex -0.799694 0.540329 -0.726046 - vertex -0.848789 0.474247 -0.800266 - vertex -0.864802 0.495388 -0.722544 - endloop - endfacet - facet normal -0.630455 0.706286 -0.322005 - outer loop - vertex -0.864802 0.495388 -0.722544 - vertex -0.848789 0.474247 -0.800266 - vertex -0.905121 0.424866 -0.798286 - endloop - endfacet - facet normal -0.630064 0.706464 -0.322378 - outer loop - vertex -0.864802 0.495388 -0.722544 - vertex -0.905121 0.424866 -0.798286 - vertex -0.923732 0.443478 -0.721126 - endloop - endfacet - facet normal -0.0464682 0.915674 -0.399228 - outer loop - vertex -0.327179 0.635605 -0.836959 - vertex -0.327179 0.600474 -0.917536 - vertex -0.407447 0.597202 -0.915698 - endloop - endfacet - facet normal -0.0455517 0.915375 -0.400016 - outer loop - vertex -0.327179 0.635605 -0.836959 - vertex -0.407447 0.597202 -0.915698 - vertex -0.409251 0.632192 -0.835423 - endloop - endfacet - facet normal -0.134047 0.907322 -0.398495 - outer loop - vertex -0.409251 0.632192 -0.835423 - vertex -0.407447 0.597202 -0.915698 - vertex -0.486667 0.587614 -0.910881 - endloop - endfacet - facet normal -0.132557 0.906962 -0.399811 - outer loop - vertex -0.409251 0.632192 -0.835423 - vertex -0.486667 0.587614 -0.910881 - vertex -0.490365 0.622079 -0.831472 - endloop - endfacet - facet normal -0.217774 0.891565 -0.397097 - outer loop - vertex -0.490365 0.622079 -0.831472 - vertex -0.486667 0.587614 -0.910881 - vertex -0.563791 0.571936 -0.903784 - endloop - endfacet - facet normal -0.216537 0.891367 -0.398217 - outer loop - vertex -0.490365 0.622079 -0.831472 - vertex -0.563791 0.571936 -0.903784 - vertex -0.569566 0.605389 -0.825763 - endloop - endfacet - facet normal -0.299231 0.868747 -0.394639 - outer loop - vertex -0.569566 0.605389 -0.825763 - vertex -0.563791 0.571936 -0.903784 - vertex -0.637772 0.550399 -0.895101 - endloop - endfacet - facet normal -0.298618 0.868701 -0.395205 - outer loop - vertex -0.569566 0.605389 -0.825763 - vertex -0.637772 0.550399 -0.895101 - vertex -0.645895 0.582249 -0.818953 - endloop - endfacet - facet normal -0.379977 0.838229 -0.391139 - outer loop - vertex -0.645895 0.582249 -0.818953 - vertex -0.637772 0.550399 -0.895101 - vertex -0.70756 0.523228 -0.885532 - endloop - endfacet - facet normal -0.379827 0.838231 -0.39128 - outer loop - vertex -0.645895 0.582249 -0.818953 - vertex -0.70756 0.523228 -0.885532 - vertex -0.718396 0.552782 -0.8117 - endloop - endfacet - facet normal -0.460693 0.798606 -0.387286 - outer loop - vertex -0.718396 0.552782 -0.8117 - vertex -0.70756 0.523228 -0.885532 - vertex -0.772463 0.49009 -0.876659 - endloop - endfacet - facet normal -0.460515 0.798627 -0.387455 - outer loop - vertex -0.718396 0.552782 -0.8117 - vertex -0.772463 0.49009 -0.876659 - vertex -0.786287 0.516834 -0.805104 - endloop - endfacet - facet normal -0.54038 0.748593 -0.384184 - outer loop - vertex -0.786287 0.516834 -0.805104 - vertex -0.772463 0.49009 -0.876659 - vertex -0.831785 0.450651 -0.870068 - endloop - endfacet - facet normal -0.539916 0.748704 -0.384621 - outer loop - vertex -0.786287 0.516834 -0.805104 - vertex -0.831785 0.450651 -0.870068 - vertex -0.848789 0.474247 -0.800266 - endloop - endfacet - facet normal -0.616956 0.687653 -0.382751 - outer loop - vertex -0.848789 0.474247 -0.800266 - vertex -0.831785 0.450651 -0.870068 - vertex -0.88483 0.404576 -0.867343 - endloop - endfacet - facet normal -0.616443 0.687847 -0.383228 - outer loop - vertex -0.848789 0.474247 -0.800266 - vertex -0.88483 0.404576 -0.867343 - vertex -0.905121 0.424866 -0.798286 - endloop - endfacet - facet normal -0.0475431 0.874919 -0.48193 - outer loop - vertex -0.327179 0.600474 -0.917536 - vertex -0.327179 0.559548 -0.991836 - vertex -0.405975 0.556443 -0.9897 - endloop - endfacet - facet normal -0.0467026 0.874574 -0.482638 - outer loop - vertex -0.327179 0.600474 -0.917536 - vertex -0.405975 0.556443 -0.9897 - vertex -0.407447 0.597202 -0.915698 - endloop - endfacet - facet normal -0.135378 0.866719 -0.480074 - outer loop - vertex -0.407447 0.597202 -0.915698 - vertex -0.405975 0.556443 -0.9897 - vertex -0.483618 0.547478 -0.983989 - endloop - endfacet - facet normal -0.134109 0.8663 -0.481184 - outer loop - vertex -0.407447 0.597202 -0.915698 - vertex -0.483618 0.547478 -0.983989 - vertex -0.486667 0.587614 -0.910881 - endloop - endfacet - facet normal -0.217935 0.851656 -0.476641 - outer loop - vertex -0.486667 0.587614 -0.910881 - vertex -0.483618 0.547478 -0.983989 - vertex -0.558954 0.533007 -0.9754 - endloop - endfacet - facet normal -0.217012 0.851423 -0.477477 - outer loop - vertex -0.486667 0.587614 -0.910881 - vertex -0.558954 0.533007 -0.9754 - vertex -0.563791 0.571936 -0.903784 - endloop - endfacet - facet normal -0.297355 0.830274 -0.471407 - outer loop - vertex -0.563791 0.571936 -0.903784 - vertex -0.558954 0.533007 -0.9754 - vertex -0.630829 0.513379 -0.964632 - endloop - endfacet - facet normal -0.297057 0.830223 -0.471685 - outer loop - vertex -0.563791 0.571936 -0.903784 - vertex -0.630829 0.513379 -0.964632 - vertex -0.637772 0.550399 -0.895101 - endloop - endfacet - facet normal -0.375866 0.801874 -0.46446 - outer loop - vertex -0.637772 0.550399 -0.895101 - vertex -0.630829 0.513379 -0.964632 - vertex -0.698091 0.488947 -0.952382 - endloop - endfacet - facet normal -0.375876 0.801874 -0.464451 - outer loop - vertex -0.637772 0.550399 -0.895101 - vertex -0.698091 0.488947 -0.952382 - vertex -0.70756 0.523228 -0.885532 - endloop - endfacet - facet normal -0.452392 0.765917 -0.456851 - outer loop - vertex -0.70756 0.523228 -0.885532 - vertex -0.698091 0.488947 -0.952382 - vertex -0.759886 0.459485 -0.940583 - endloop - endfacet - facet normal -0.453375 0.765903 -0.455899 - outer loop - vertex -0.70756 0.523228 -0.885532 - vertex -0.759886 0.459485 -0.940583 - vertex -0.772463 0.49009 -0.876659 - endloop - endfacet - facet normal -0.527498 0.72117 -0.449066 - outer loop - vertex -0.772463 0.49009 -0.876659 - vertex -0.759886 0.459485 -0.940583 - vertex -0.815363 0.424769 -0.931169 - endloop - endfacet - facet normal -0.529048 0.720954 -0.447586 - outer loop - vertex -0.772463 0.49009 -0.876659 - vertex -0.815363 0.424769 -0.931169 - vertex -0.831785 0.450651 -0.870068 - endloop - endfacet - facet normal -0.600463 0.665528 -0.443302 - outer loop - vertex -0.831785 0.450651 -0.870068 - vertex -0.815363 0.424769 -0.931169 - vertex -0.863937 0.383682 -0.927058 - endloop - endfacet - facet normal -0.600759 0.665441 -0.443032 - outer loop - vertex -0.831785 0.450651 -0.870068 - vertex -0.863937 0.383682 -0.927058 - vertex -0.88483 0.404576 -0.867343 - endloop - endfacet - facet normal -0.0484136 0.819786 -0.570619 - outer loop - vertex -0.327179 0.559548 -0.991836 - vertex -0.327179 0.51239 -1.05958 - vertex -0.404978 0.509481 -1.05716 - endloop - endfacet - facet normal -0.0477763 0.819466 -0.571133 - outer loop - vertex -0.327179 0.559548 -0.991836 - vertex -0.404978 0.509481 -1.05716 - vertex -0.405975 0.556443 -0.9897 - endloop - endfacet - facet normal -0.136457 0.812111 -0.567323 - outer loop - vertex -0.405975 0.556443 -0.9897 - vertex -0.404978 0.509481 -1.05716 - vertex -0.481535 0.50123 -1.05056 - endloop - endfacet - facet normal -0.135503 0.811702 -0.568136 - outer loop - vertex -0.405975 0.556443 -0.9897 - vertex -0.481535 0.50123 -1.05056 - vertex -0.483618 0.547478 -0.983989 - endloop - endfacet - facet normal -0.218088 0.798289 -0.561402 - outer loop - vertex -0.483618 0.547478 -0.983989 - vertex -0.481535 0.50123 -1.05056 - vertex -0.555608 0.488114 -1.04044 - endloop - endfacet - facet normal -0.21737 0.798032 -0.562046 - outer loop - vertex -0.483618 0.547478 -0.983989 - vertex -0.555608 0.488114 -1.04044 - vertex -0.558954 0.533007 -0.9754 - endloop - endfacet - facet normal -0.295888 0.778939 -0.552906 - outer loop - vertex -0.558954 0.533007 -0.9754 - vertex -0.555608 0.488114 -1.04044 - vertex -0.625955 0.470611 -1.02745 - endloop - endfacet - facet normal -0.295566 0.778845 -0.553209 - outer loop - vertex -0.558954 0.533007 -0.9754 - vertex -0.625955 0.470611 -1.02745 - vertex -0.630829 0.513379 -0.964632 - endloop - endfacet - facet normal -0.372642 0.753359 -0.541838 - outer loop - vertex -0.630829 0.513379 -0.964632 - vertex -0.625955 0.470611 -1.02745 - vertex -0.691333 0.449197 -1.01226 - endloop - endfacet - facet normal -0.372365 0.753299 -0.542111 - outer loop - vertex -0.630829 0.513379 -0.964632 - vertex -0.691333 0.449197 -1.01226 - vertex -0.698091 0.488947 -0.952382 - endloop - endfacet - facet normal -0.44383 0.722683 -0.529853 - outer loop - vertex -0.698091 0.488947 -0.952382 - vertex -0.691333 0.449197 -1.01226 - vertex -0.750221 0.424405 -0.996746 - endloop - endfacet - facet normal -0.445493 0.722881 -0.528185 - outer loop - vertex -0.698091 0.488947 -0.952382 - vertex -0.750221 0.424405 -0.996746 - vertex -0.759886 0.459485 -0.940583 - endloop - endfacet - facet normal -0.513821 0.685106 -0.51635 - outer loop - vertex -0.759886 0.459485 -0.940583 - vertex -0.750221 0.424405 -0.996746 - vertex -0.801098 0.396771 -0.982784 - endloop - endfacet - facet normal -0.515976 0.685089 -0.51422 - outer loop - vertex -0.759886 0.459485 -0.940583 - vertex -0.801098 0.396771 -0.982784 - vertex -0.815363 0.424769 -0.931169 - endloop - endfacet - facet normal -0.581695 0.636739 -0.506156 - outer loop - vertex -0.815363 0.424769 -0.931169 - vertex -0.801098 0.396771 -0.982784 - vertex -0.843516 0.363261 -0.976191 - endloop - endfacet - facet normal -0.581483 0.636782 -0.506347 - outer loop - vertex -0.815363 0.424769 -0.931169 - vertex -0.843516 0.363261 -0.976191 - vertex -0.863937 0.383682 -0.927058 - endloop - endfacet - facet normal -0.0488427 0.748534 -0.661295 - outer loop - vertex -0.327179 0.51239 -1.05958 - vertex -0.327179 0.458568 -1.12051 - vertex -0.404598 0.455885 -1.11783 - endloop - endfacet - facet normal -0.0485713 0.748372 -0.661498 - outer loop - vertex -0.327179 0.51239 -1.05958 - vertex -0.404598 0.455885 -1.11783 - vertex -0.404978 0.509481 -1.05716 - endloop - endfacet - facet normal -0.13701 0.741915 -0.656347 - outer loop - vertex -0.404978 0.509481 -1.05716 - vertex -0.404598 0.455885 -1.11783 - vertex -0.480736 0.448425 -1.11037 - endloop - endfacet - facet normal -0.136575 0.741682 -0.6567 - outer loop - vertex -0.404978 0.509481 -1.05716 - vertex -0.480736 0.448425 -1.11037 - vertex -0.481535 0.50123 -1.05056 - endloop - endfacet - facet normal -0.218198 0.730102 -0.647566 - outer loop - vertex -0.481535 0.50123 -1.05056 - vertex -0.480736 0.448425 -1.11037 - vertex -0.554309 0.436772 -1.09871 - endloop - endfacet - facet normal -0.217805 0.729915 -0.647908 - outer loop - vertex -0.481535 0.50123 -1.05056 - vertex -0.554309 0.436772 -1.09871 - vertex -0.555608 0.488114 -1.04044 - endloop - endfacet - facet normal -0.295197 0.71363 -0.635288 - outer loop - vertex -0.555608 0.488114 -1.04044 - vertex -0.554309 0.436772 -1.09871 - vertex -0.624034 0.421514 -1.08345 - endloop - endfacet - facet normal -0.29487 0.713492 -0.635595 - outer loop - vertex -0.555608 0.488114 -1.04044 - vertex -0.624034 0.421514 -1.08345 - vertex -0.625955 0.470611 -1.02745 - endloop - endfacet - facet normal -0.371044 0.691939 -0.619312 - outer loop - vertex -0.625955 0.470611 -1.02745 - vertex -0.624034 0.421514 -1.08345 - vertex -0.688631 0.403235 -1.06518 - endloop - endfacet - facet normal -0.370577 0.691768 -0.619782 - outer loop - vertex -0.625955 0.470611 -1.02745 - vertex -0.688631 0.403235 -1.06518 - vertex -0.691333 0.449197 -1.01226 - endloop - endfacet - facet normal -0.439022 0.667106 -0.601855 - outer loop - vertex -0.691333 0.449197 -1.01226 - vertex -0.688631 0.403235 -1.06518 - vertex -0.746116 0.383347 -1.04529 - endloop - endfacet - facet normal -0.43935 0.667204 -0.601506 - outer loop - vertex -0.691333 0.449197 -1.01226 - vertex -0.746116 0.383347 -1.04529 - vertex -0.750221 0.424405 -0.996746 - endloop - endfacet - facet normal -0.505853 0.637047 -0.581622 - outer loop - vertex -0.750221 0.424405 -0.996746 - vertex -0.746116 0.383347 -1.04529 - vertex -0.794505 0.363261 -1.0252 - endloop - endfacet - facet normal -0.505665 0.637007 -0.581829 - outer loop - vertex -0.750221 0.424405 -0.996746 - vertex -0.794505 0.363261 -1.0252 - vertex -0.801098 0.396771 -0.982784 - endloop - endfacet - facet normal -0.568022 0.600567 -0.562734 - outer loop - vertex -0.801098 0.396771 -0.982784 - vertex -0.794505 0.363261 -1.0252 - vertex -0.827436 0.347181 -1.00912 - endloop - endfacet - facet normal -0.562735 0.600567 -0.568021 - outer loop - vertex -0.801098 0.396771 -0.982784 - vertex -0.827436 0.347181 -1.00912 - vertex -0.843516 0.363261 -0.976191 - endloop - endfacet - facet normal -0.0422553 0.992246 -0.116889 - outer loop - vertex -0.327179 0.726868 -0.457381 - vertex -0.416941 0.723104 -0.456883 - vertex -0.41827 0.735731 -0.34921 - endloop - endfacet - facet normal -0.0419438 0.992289 -0.11663 - outer loop - vertex -0.327179 0.726868 -0.457381 - vertex -0.41827 0.735731 -0.34921 - vertex -0.327179 0.739543 -0.349542 - endloop - endfacet - facet normal -0.0419616 0.995935 -0.079708 - outer loop - vertex -0.327179 0.739543 -0.349542 - vertex -0.41827 0.735731 -0.34921 - vertex -0.419288 0.7446 -0.237864 - endloop - endfacet - facet normal -0.0417472 0.995958 -0.0795322 - outer loop - vertex -0.327179 0.739543 -0.349542 - vertex -0.419288 0.7446 -0.237864 - vertex -0.327179 0.748444 -0.238072 - endloop - endfacet - facet normal -0.0417589 0.998167 -0.0437983 - outer loop - vertex -0.327179 0.748444 -0.238072 - vertex -0.419288 0.7446 -0.237864 - vertex -0.420061 0.749558 -0.124123 - endloop - endfacet - facet normal -0.0415597 0.998183 -0.043636 - outer loop - vertex -0.327179 0.748444 -0.238072 - vertex -0.420061 0.749558 -0.124123 - vertex -0.327179 0.75342 -0.124242 - endloop - endfacet - facet normal -0.0415525 0.999104 -0.00802147 - outer loop - vertex -0.327179 0.75342 -0.124242 - vertex -0.420061 0.749558 -0.124123 - vertex -0.42066 0.750456 -0.00926336 - endloop - endfacet - facet normal -0.0412978 0.999116 -0.00781407 - outer loop - vertex -0.327179 0.75342 -0.124242 - vertex -0.42066 0.750456 -0.00926336 - vertex -0.327179 0.754319 -0.0093227 - endloop - endfacet - facet normal -0.0412589 0.998737 0.0286893 - outer loop - vertex -0.327179 0.754319 -0.0093227 - vertex -0.42066 0.750456 -0.00926336 - vertex -0.42115 0.747141 0.105437 - endloop - endfacet - facet normal -0.0408898 0.998743 0.0289919 - outer loop - vertex -0.327179 0.754319 -0.0093227 - vertex -0.42115 0.747141 0.105437 - vertex -0.327179 0.750989 0.105413 - endloop - endfacet - facet normal -0.0406201 0.992678 0.113757 - outer loop - vertex -0.327179 0.750989 0.105413 - vertex -0.42115 0.747141 0.105437 - vertex -0.421763 0.734729 0.213522 - endloop - endfacet - facet normal -0.0398127 0.99263 0.114456 - outer loop - vertex -0.327179 0.750989 0.105413 - vertex -0.421763 0.734729 0.213522 - vertex -0.327179 0.738524 0.213516 - endloop - endfacet - facet normal -0.0386107 0.962906 0.267061 - outer loop - vertex -0.327179 0.738524 0.213516 - vertex -0.421763 0.734729 0.213522 - vertex -0.422729 0.708338 0.308537 - endloop - endfacet - facet normal -0.0370842 0.962569 0.268489 - outer loop - vertex -0.327179 0.738524 0.213516 - vertex -0.422729 0.708338 0.308537 - vertex -0.327179 0.712019 0.308537 - endloop - endfacet - facet normal -0.033037 0.857519 0.513391 - outer loop - vertex -0.327179 0.712019 0.308537 - vertex -0.422729 0.708338 0.308537 - vertex -0.424276 0.663083 0.384027 - endloop - endfacet - facet normal -0.0307591 0.856313 0.51554 - outer loop - vertex -0.327179 0.712019 0.308537 - vertex -0.424276 0.663083 0.384027 - vertex -0.327179 0.666571 0.384027 - endloop - endfacet - facet normal -0.12675 0.984922 -0.117745 - outer loop - vertex -0.416941 0.723104 -0.456883 - vertex -0.505771 0.711821 -0.455637 - vertex -0.508415 0.724304 -0.348379 - endloop - endfacet - facet normal -0.125964 0.985101 -0.117084 - outer loop - vertex -0.416941 0.723104 -0.456883 - vertex -0.508415 0.724304 -0.348379 - vertex -0.41827 0.735731 -0.34921 - endloop - endfacet - facet normal -0.126089 0.988756 -0.0803896 - outer loop - vertex -0.41827 0.735731 -0.34921 - vertex -0.508415 0.724304 -0.348379 - vertex -0.510432 0.733073 -0.237353 - endloop - endfacet - facet normal -0.125508 0.988869 -0.0799087 - outer loop - vertex -0.41827 0.735731 -0.34921 - vertex -0.510432 0.733073 -0.237353 - vertex -0.419288 0.7446 -0.237864 - endloop - endfacet - facet normal -0.12559 0.991081 -0.0445669 - outer loop - vertex -0.419288 0.7446 -0.237864 - vertex -0.510432 0.733073 -0.237353 - vertex -0.51195 0.737984 -0.123858 - endloop - endfacet - facet normal -0.124973 0.991181 -0.0440598 - outer loop - vertex -0.419288 0.7446 -0.237864 - vertex -0.51195 0.737984 -0.123858 - vertex -0.420061 0.749558 -0.124123 - endloop - endfacet - facet normal -0.12499 0.992116 -0.00909641 - outer loop - vertex -0.420061 0.749558 -0.124123 - vertex -0.51195 0.737984 -0.123858 - vertex -0.513098 0.738891 -0.00919506 - endloop - endfacet - facet normal -0.12414 0.992229 -0.0083979 - outer loop - vertex -0.420061 0.749558 -0.124123 - vertex -0.513098 0.738891 -0.00919506 - vertex -0.42066 0.750456 -0.00926336 - endloop - endfacet - facet normal -0.124073 0.991903 0.027113 - outer loop - vertex -0.42066 0.750456 -0.00926336 - vertex -0.513098 0.738891 -0.00919506 - vertex -0.514005 0.735647 0.105336 - endloop - endfacet - facet normal -0.122824 0.992029 0.0281465 - outer loop - vertex -0.42066 0.750456 -0.00926336 - vertex -0.514005 0.735647 0.105336 - vertex -0.42115 0.747141 0.105437 - endloop - endfacet - facet normal -0.122211 0.986356 0.110304 - outer loop - vertex -0.42115 0.747141 0.105437 - vertex -0.514005 0.735647 0.105336 - vertex -0.515157 0.723433 0.213278 - endloop - endfacet - facet normal -0.119604 0.986417 0.11259 - outer loop - vertex -0.42115 0.747141 0.105437 - vertex -0.515157 0.723433 0.213278 - vertex -0.421763 0.734729 0.213522 - endloop - endfacet - facet normal -0.116608 0.958457 0.260313 - outer loop - vertex -0.421763 0.734729 0.213522 - vertex -0.515157 0.723433 0.213278 - vertex -0.517041 0.69743 0.308176 - endloop - endfacet - facet normal -0.111791 0.957776 0.264893 - outer loop - vertex -0.421763 0.734729 0.213522 - vertex -0.517041 0.69743 0.308176 - vertex -0.422729 0.708338 0.308537 - endloop - endfacet - facet normal -0.101169 0.858036 0.503527 - outer loop - vertex -0.422729 0.708338 0.308537 - vertex -0.517041 0.69743 0.308176 - vertex -0.520144 0.652819 0.383572 - endloop - endfacet - facet normal -0.0939382 0.854743 0.510479 - outer loop - vertex -0.422729 0.708338 0.308537 - vertex -0.520144 0.652819 0.383572 - vertex -0.424276 0.663083 0.384027 - endloop - endfacet - facet normal -0.211993 0.969991 -0.119066 - outer loop - vertex -0.505771 0.711821 -0.455637 - vertex -0.592737 0.693029 -0.453892 - vertex -0.596666 0.705265 -0.347216 - endloop - endfacet - facet normal -0.210893 0.970346 -0.118123 - outer loop - vertex -0.505771 0.711821 -0.455637 - vertex -0.596666 0.705265 -0.347216 - vertex -0.508415 0.724304 -0.348379 - endloop - endfacet - facet normal -0.211207 0.974037 -0.0815011 - outer loop - vertex -0.508415 0.724304 -0.348379 - vertex -0.596666 0.705265 -0.347216 - vertex -0.599645 0.71387 -0.23665 - endloop - endfacet - facet normal -0.210349 0.974284 -0.080777 - outer loop - vertex -0.508415 0.724304 -0.348379 - vertex -0.599645 0.71387 -0.23665 - vertex -0.510432 0.733073 -0.237353 - endloop - endfacet - facet normal -0.210552 0.976505 -0.0458905 - outer loop - vertex -0.510432 0.733073 -0.237353 - vertex -0.599645 0.71387 -0.23665 - vertex -0.601849 0.718711 -0.123539 - endloop - endfacet - facet normal -0.20957 0.976754 -0.0450704 - outer loop - vertex -0.510432 0.733073 -0.237353 - vertex -0.601849 0.718711 -0.123539 - vertex -0.51195 0.737984 -0.123858 - endloop - endfacet - facet normal -0.209655 0.977714 -0.0109858 - outer loop - vertex -0.51195 0.737984 -0.123858 - vertex -0.601849 0.718711 -0.123539 - vertex -0.603451 0.719652 -0.00922753 - endloop - endfacet - facet normal -0.208255 0.978025 -0.00981884 - outer loop - vertex -0.51195 0.737984 -0.123858 - vertex -0.603451 0.719652 -0.00922753 - vertex -0.513098 0.738891 -0.00919506 - endloop - endfacet - facet normal -0.208215 0.97778 0.0243512 - outer loop - vertex -0.513098 0.738891 -0.00919506 - vertex -0.603451 0.719652 -0.00922753 - vertex -0.604624 0.716558 0.104939 - endloop - endfacet - facet normal -0.206162 0.97817 0.0260742 - outer loop - vertex -0.513098 0.738891 -0.00919506 - vertex -0.604624 0.716558 0.104939 - vertex -0.514005 0.735647 0.105336 - endloop - endfacet - facet normal -0.205439 0.973116 0.104119 - outer loop - vertex -0.514005 0.735647 0.105336 - vertex -0.604624 0.716558 0.104939 - vertex -0.606168 0.704722 0.212524 - endloop - endfacet - facet normal -0.201066 0.973604 0.10802 - outer loop - vertex -0.514005 0.735647 0.105336 - vertex -0.606168 0.704722 0.212524 - vertex -0.515157 0.723433 0.213278 - endloop - endfacet - facet normal -0.197066 0.948502 0.24801 - outer loop - vertex -0.515157 0.723433 0.213278 - vertex -0.606168 0.704722 0.212524 - vertex -0.608879 0.679431 0.307092 - endloop - endfacet - facet normal -0.188828 0.948048 0.256027 - outer loop - vertex -0.515157 0.723433 0.213278 - vertex -0.608879 0.679431 0.307092 - vertex -0.517041 0.69743 0.308176 - endloop - endfacet - facet normal -0.173704 0.857086 0.485005 - outer loop - vertex -0.517041 0.69743 0.308176 - vertex -0.608879 0.679431 0.307092 - vertex -0.613556 0.635977 0.382207 - endloop - endfacet - facet normal -0.160939 0.852302 0.497675 - outer loop - vertex -0.517041 0.69743 0.308176 - vertex -0.613556 0.635977 0.382207 - vertex -0.520144 0.652819 0.383572 - endloop - endfacet - facet normal -0.298598 0.946715 -0.120702 - outer loop - vertex -0.592737 0.693029 -0.453892 - vertex -0.676908 0.666736 -0.451898 - vertex -0.682076 0.678621 -0.345887 - endloop - endfacet - facet normal -0.297352 0.947247 -0.119601 - outer loop - vertex -0.592737 0.693029 -0.453892 - vertex -0.682076 0.678621 -0.345887 - vertex -0.596666 0.705265 -0.347216 - endloop - endfacet - facet normal -0.297944 0.950975 -0.0829247 - outer loop - vertex -0.596666 0.705265 -0.347216 - vertex -0.682076 0.678621 -0.345887 - vertex -0.685963 0.686997 -0.235868 - endloop - endfacet - facet normal -0.296929 0.951368 -0.0820467 - outer loop - vertex -0.596666 0.705265 -0.347216 - vertex -0.685963 0.686997 -0.235868 - vertex -0.599645 0.71387 -0.23665 - endloop - endfacet - facet normal -0.29731 0.953592 -0.0476354 - outer loop - vertex -0.599645 0.71387 -0.23665 - vertex -0.685963 0.686997 -0.235868 - vertex -0.688765 0.691749 -0.123256 - endloop - endfacet - facet normal -0.296093 0.954022 -0.0465951 - outer loop - vertex -0.599645 0.71387 -0.23665 - vertex -0.688765 0.691749 -0.123256 - vertex -0.601849 0.718711 -0.123539 - endloop - endfacet - facet normal -0.29629 0.955003 -0.0134867 - outer loop - vertex -0.601849 0.718711 -0.123539 - vertex -0.688765 0.691749 -0.123256 - vertex -0.690676 0.692763 -0.00947047 - endloop - endfacet - facet normal -0.294536 0.955565 -0.011993 - outer loop - vertex -0.601849 0.718711 -0.123539 - vertex -0.690676 0.692763 -0.00947047 - vertex -0.603451 0.719652 -0.00922753 - endloop - endfacet - facet normal -0.294577 0.955403 0.0207245 - outer loop - vertex -0.603451 0.719652 -0.00922753 - vertex -0.690676 0.692763 -0.00947047 - vertex -0.691892 0.689925 0.104073 - endloop - endfacet - facet normal -0.292031 0.956134 0.0229033 - outer loop - vertex -0.603451 0.719652 -0.00922753 - vertex -0.691892 0.689925 0.104073 - vertex -0.604624 0.716558 0.104939 - endloop - endfacet - facet normal -0.291434 0.951819 0.0954258 - outer loop - vertex -0.604624 0.716558 0.104939 - vertex -0.691892 0.689925 0.104073 - vertex -0.693604 0.678681 0.210997 - endloop - endfacet - facet normal -0.285595 0.953039 0.10076 - outer loop - vertex -0.604624 0.716558 0.104939 - vertex -0.693604 0.678681 0.210997 - vertex -0.606168 0.704722 0.212524 - endloop - endfacet - facet normal -0.281472 0.931625 0.229887 - outer loop - vertex -0.606168 0.704722 0.212524 - vertex -0.693604 0.678681 0.210997 - vertex -0.697004 0.654477 0.304924 - endloop - endfacet - facet normal -0.269887 0.932106 0.241537 - outer loop - vertex -0.606168 0.704722 0.212524 - vertex -0.697004 0.654477 0.304924 - vertex -0.608879 0.679431 0.307092 - endloop - endfacet - facet normal -0.252831 0.853222 0.456167 - outer loop - vertex -0.608879 0.679431 0.307092 - vertex -0.697004 0.654477 0.304924 - vertex -0.703282 0.612758 0.379476 - endloop - endfacet - facet normal -0.233889 0.847828 0.475902 - outer loop - vertex -0.608879 0.679431 0.307092 - vertex -0.703282 0.612758 0.379476 - vertex -0.613556 0.635977 0.382207 - endloop - endfacet - facet normal -0.386895 0.913954 -0.122472 - outer loop - vertex -0.676908 0.666736 -0.451898 - vertex -0.757349 0.63295 -0.449905 - vertex -0.763699 0.644379 -0.344558 - endloop - endfacet - facet normal -0.385678 0.914618 -0.121349 - outer loop - vertex -0.676908 0.666736 -0.451898 - vertex -0.763699 0.644379 -0.344558 - vertex -0.682076 0.678621 -0.345887 - endloop - endfacet - facet normal -0.386643 0.91835 -0.0844948 - outer loop - vertex -0.682076 0.678621 -0.345887 - vertex -0.763699 0.644379 -0.344558 - vertex -0.768421 0.65246 -0.235117 - endloop - endfacet - facet normal -0.385622 0.918863 -0.0835779 - outer loop - vertex -0.682076 0.678621 -0.345887 - vertex -0.768421 0.65246 -0.235117 - vertex -0.685963 0.686997 -0.235868 - endloop - endfacet - facet normal -0.386236 0.921067 -0.0495632 - outer loop - vertex -0.685963 0.686997 -0.235868 - vertex -0.768421 0.65246 -0.235117 - vertex -0.771702 0.657112 -0.123102 - endloop - endfacet - facet normal -0.384997 0.921644 -0.0484687 - outer loop - vertex -0.685963 0.686997 -0.235868 - vertex -0.771702 0.657112 -0.123102 - vertex -0.688765 0.691749 -0.123256 - endloop - endfacet - facet normal -0.385349 0.922629 -0.0162111 - outer loop - vertex -0.688765 0.691749 -0.123256 - vertex -0.771702 0.657112 -0.123102 - vertex -0.77373 0.658252 -0.0100336 - endloop - endfacet - facet normal -0.383595 0.923385 -0.0146712 - outer loop - vertex -0.688765 0.691749 -0.123256 - vertex -0.77373 0.658252 -0.0100336 - vertex -0.690676 0.692763 -0.00947047 - endloop - endfacet - facet normal -0.383764 0.923278 0.0168496 - outer loop - vertex -0.690676 0.692763 -0.00947047 - vertex -0.77373 0.658252 -0.0100336 - vertex -0.77469 0.655798 0.102567 - endloop - endfacet - facet normal -0.381303 0.924254 0.0190171 - outer loop - vertex -0.690676 0.692763 -0.00947047 - vertex -0.77469 0.655798 0.102567 - vertex -0.691892 0.689925 0.104073 - endloop - endfacet - facet normal -0.381023 0.920675 0.0847286 - outer loop - vertex -0.691892 0.689925 0.104073 - vertex -0.77469 0.655798 0.102567 - vertex -0.776276 0.645398 0.208436 - endloop - endfacet - facet normal -0.374336 0.922813 0.0910478 - outer loop - vertex -0.691892 0.689925 0.104073 - vertex -0.776276 0.645398 0.208436 - vertex -0.693604 0.678681 0.210997 - endloop - endfacet - facet normal -0.370951 0.905583 0.205707 - outer loop - vertex -0.693604 0.678681 0.210997 - vertex -0.776276 0.645398 0.208436 - vertex -0.78018 0.622703 0.30131 - endloop - endfacet - facet normal -0.356398 0.907812 0.221038 - outer loop - vertex -0.693604 0.678681 0.210997 - vertex -0.78018 0.622703 0.30131 - vertex -0.697004 0.654477 0.304924 - endloop - endfacet - facet normal -0.340423 0.843993 0.414473 - outer loop - vertex -0.697004 0.654477 0.304924 - vertex -0.78018 0.622703 0.30131 - vertex -0.788094 0.583359 0.374925 - endloop - endfacet - facet normal -0.314732 0.839358 0.443196 - outer loop - vertex -0.697004 0.654477 0.304924 - vertex -0.788094 0.583359 0.374925 - vertex -0.703282 0.612758 0.379476 - endloop - endfacet - facet normal -0.476759 0.870222 -0.124156 - outer loop - vertex -0.757349 0.63295 -0.449905 - vertex -0.833131 0.591681 -0.44816 - vertex -0.840587 0.602544 -0.343395 - endloop - endfacet - facet normal -0.475737 0.870922 -0.123158 - outer loop - vertex -0.757349 0.63295 -0.449905 - vertex -0.840587 0.602544 -0.343395 - vertex -0.763699 0.644379 -0.344558 - endloop - endfacet - facet normal -0.477173 0.874593 -0.0859817 - outer loop - vertex -0.763699 0.644379 -0.344558 - vertex -0.840587 0.602544 -0.343395 - vertex -0.846068 0.610261 -0.234478 - endloop - endfacet - facet normal -0.476318 0.875138 -0.0851731 - outer loop - vertex -0.763699 0.644379 -0.344558 - vertex -0.846068 0.610261 -0.234478 - vertex -0.768421 0.65246 -0.235117 - endloop - endfacet - facet normal -0.477208 0.877289 -0.0513495 - outer loop - vertex -0.768421 0.65246 -0.235117 - vertex -0.846068 0.610261 -0.234478 - vertex -0.84973 0.614792 -0.123039 - endloop - endfacet - facet normal -0.476189 0.877897 -0.0504055 - outer loop - vertex -0.768421 0.65246 -0.235117 - vertex -0.84973 0.614792 -0.123039 - vertex -0.771702 0.657112 -0.123102 - endloop - endfacet - facet normal -0.476692 0.878872 -0.0186715 - outer loop - vertex -0.771702 0.657112 -0.123102 - vertex -0.84973 0.614792 -0.123039 - vertex -0.851727 0.616095 -0.0107065 - endloop - endfacet - facet normal -0.475294 0.879655 -0.0173907 - outer loop - vertex -0.771702 0.657112 -0.123102 - vertex -0.851727 0.616095 -0.0107065 - vertex -0.77373 0.658252 -0.0100336 - endloop - endfacet - facet normal -0.475529 0.879598 0.0134134 - outer loop - vertex -0.77373 0.658252 -0.0100336 - vertex -0.851727 0.616095 -0.0107065 - vertex -0.852215 0.614129 0.100889 - endloop - endfacet - facet normal -0.47363 0.880593 0.0151528 - outer loop - vertex -0.77373 0.658252 -0.0100336 - vertex -0.852215 0.614129 0.100889 - vertex -0.77469 0.655798 0.102567 - endloop - endfacet - facet normal -0.473401 0.877855 0.072547 - outer loop - vertex -0.77469 0.655798 0.102567 - vertex -0.852215 0.614129 0.100889 - vertex -0.852933 0.605139 0.204991 - endloop - endfacet - facet normal -0.466289 0.881048 0.0795589 - outer loop - vertex -0.77469 0.655798 0.102567 - vertex -0.852933 0.605139 0.204991 - vertex -0.776276 0.645398 0.208436 - endloop - endfacet - facet normal -0.463839 0.868032 0.177127 - outer loop - vertex -0.776276 0.645398 0.208436 - vertex -0.852933 0.605139 0.204991 - vertex -0.85562 0.585368 0.294843 - endloop - endfacet - facet normal -0.448416 0.872439 0.194351 - outer loop - vertex -0.776276 0.645398 0.208436 - vertex -0.85562 0.585368 0.294843 - vertex -0.78018 0.622703 0.30131 - endloop - endfacet - facet normal -0.438231 0.822864 0.36173 - outer loop - vertex -0.78018 0.622703 0.30131 - vertex -0.85562 0.585368 0.294843 - vertex -0.86376 0.550085 0.365244 - endloop - endfacet - facet normal -0.411709 0.821392 0.39473 - outer loop - vertex -0.78018 0.622703 0.30131 - vertex -0.86376 0.550085 0.365244 - vertex -0.788094 0.583359 0.374925 - endloop - endfacet - facet normal -0.567392 0.81383 -0.12549 - outer loop - vertex -0.833131 0.591681 -0.44816 - vertex -0.90332 0.542939 -0.446914 - vertex -0.911794 0.553121 -0.342564 - endloop - endfacet - facet normal -0.566714 0.814413 -0.124772 - outer loop - vertex -0.833131 0.591681 -0.44816 - vertex -0.911794 0.553121 -0.342564 - vertex -0.840587 0.602544 -0.343395 - endloop - endfacet - facet normal -0.568704 0.817913 -0.0871441 - outer loop - vertex -0.840587 0.602544 -0.343395 - vertex -0.911794 0.553121 -0.342564 - vertex -0.917956 0.5604 -0.234031 - endloop - endfacet - facet normal -0.568145 0.818362 -0.0865755 - outer loop - vertex -0.840587 0.602544 -0.343395 - vertex -0.917956 0.5604 -0.234031 - vertex -0.846068 0.610261 -0.234478 - endloop - endfacet - facet normal -0.569351 0.820404 -0.0526921 - outer loop - vertex -0.846068 0.610261 -0.234478 - vertex -0.917956 0.5604 -0.234031 - vertex -0.921915 0.564782 -0.12303 - endloop - endfacet - facet normal -0.568715 0.820886 -0.0520628 - outer loop - vertex -0.846068 0.610261 -0.234478 - vertex -0.921915 0.564782 -0.12303 - vertex -0.84973 0.614792 -0.123039 - endloop - endfacet - facet normal -0.569365 0.82183 -0.0204611 - outer loop - vertex -0.84973 0.614792 -0.123039 - vertex -0.921915 0.564782 -0.12303 - vertex -0.923782 0.566271 -0.0112786 - endloop - endfacet - facet normal -0.568531 0.822427 -0.0196495 - outer loop - vertex -0.84973 0.614792 -0.123039 - vertex -0.923782 0.566271 -0.0112786 - vertex -0.851727 0.616095 -0.0107065 - endloop - endfacet - facet normal -0.568771 0.822422 0.0109736 - outer loop - vertex -0.851727 0.616095 -0.0107065 - vertex -0.923782 0.566271 -0.0112786 - vertex -0.923665 0.564873 0.0995073 - endloop - endfacet - facet normal -0.567694 0.823152 0.0120156 - outer loop - vertex -0.851727 0.616095 -0.0107065 - vertex -0.923665 0.564873 0.0995073 - vertex -0.852215 0.614129 0.100889 - endloop - endfacet - facet normal -0.567302 0.821185 0.0618336 - outer loop - vertex -0.852215 0.614129 0.100889 - vertex -0.923665 0.564873 0.0995073 - vertex -0.92233 0.558168 0.20081 - endloop - endfacet - facet normal -0.562031 0.824372 0.0673168 - outer loop - vertex -0.852215 0.614129 0.100889 - vertex -0.92233 0.558168 0.20081 - vertex -0.852933 0.605139 0.204991 - endloop - endfacet - facet normal -0.560226 0.81407 0.153093 - outer loop - vertex -0.852933 0.605139 0.204991 - vertex -0.92233 0.558168 0.20081 - vertex -0.920541 0.543733 0.284113 - endloop - endfacet - facet normal -0.551584 0.817942 0.163482 - outer loop - vertex -0.852933 0.605139 0.204991 - vertex -0.920541 0.543733 0.284113 - vertex -0.85562 0.585368 0.294843 - endloop - endfacet - facet normal -0.54939 0.778322 0.303951 - outer loop - vertex -0.85562 0.585368 0.294843 - vertex -0.920541 0.543733 0.284113 - vertex -0.926049 0.515237 0.347126 - endloop - endfacet - facet normal -0.532151 0.779957 0.329367 - outer loop - vertex -0.85562 0.585368 0.294843 - vertex -0.926049 0.515237 0.347126 - vertex -0.86376 0.550085 0.365244 - endloop - endfacet - facet normal -0.657109 0.743161 -0.126172 - outer loop - vertex -0.90332 0.542939 -0.446914 - vertex -0.966985 0.48673 -0.446415 - vertex -0.976372 0.496118 -0.342232 - endloop - endfacet - facet normal -0.656867 0.743424 -0.125886 - outer loop - vertex -0.90332 0.542939 -0.446914 - vertex -0.976372 0.496118 -0.342232 - vertex -0.911794 0.553121 -0.342564 - endloop - endfacet - facet normal -0.659469 0.746595 -0.087732 - outer loop - vertex -0.911794 0.553121 -0.342564 - vertex -0.976372 0.496118 -0.342232 - vertex -0.983135 0.50288 -0.233855 - endloop - endfacet - facet normal -0.659278 0.746789 -0.0875164 - outer loop - vertex -0.911794 0.553121 -0.342564 - vertex -0.983135 0.50288 -0.233855 - vertex -0.917956 0.5604 -0.234031 - endloop - endfacet - facet normal -0.660823 0.748644 -0.0533393 - outer loop - vertex -0.917956 0.5604 -0.234031 - vertex -0.983135 0.50288 -0.233855 - vertex -0.987328 0.507074 -0.123039 - endloop - endfacet - facet normal -0.660624 0.748835 -0.0531232 - outer loop - vertex -0.917956 0.5604 -0.234031 - vertex -0.987328 0.507074 -0.123039 - vertex -0.921915 0.564782 -0.12303 - endloop - endfacet - facet normal -0.66141 0.749722 -0.0212859 - outer loop - vertex -0.921915 0.564782 -0.12303 - vertex -0.987328 0.507074 -0.123039 - vertex -0.98901 0.508756 -0.0115394 - endloop - endfacet - facet normal -0.661176 0.749936 -0.0210368 - outer loop - vertex -0.921915 0.564782 -0.12303 - vertex -0.98901 0.508756 -0.0115394 - vertex -0.923782 0.566271 -0.0112786 - endloop - endfacet - facet normal -0.661359 0.750004 0.00987881 - outer loop - vertex -0.923782 0.566271 -0.0112786 - vertex -0.98901 0.508756 -0.0115394 - vertex -0.988237 0.507983 0.0988907 - endloop - endfacet - facet normal -0.661089 0.750238 0.0101605 - outer loop - vertex -0.923782 0.566271 -0.0112786 - vertex -0.988237 0.507983 0.0988907 - vertex -0.923665 0.564873 0.0995073 - endloop - endfacet - facet normal -0.660314 0.748855 0.0565847 - outer loop - vertex -0.923665 0.564873 0.0995073 - vertex -0.988237 0.507983 0.0988907 - vertex -0.984236 0.503981 0.198536 - endloop - endfacet - facet normal -0.658724 0.75012 0.0583349 - outer loop - vertex -0.923665 0.564873 0.0995073 - vertex -0.984236 0.503981 0.198536 - vertex -0.92233 0.558168 0.20081 - endloop - endfacet - facet normal -0.65496 0.742338 0.141285 - outer loop - vertex -0.92233 0.558168 0.20081 - vertex -0.984236 0.503981 0.198536 - vertex -0.976233 0.495979 0.277683 - endloop - endfacet - facet normal -0.653714 0.743144 0.142811 - outer loop - vertex -0.92233 0.558168 0.20081 - vertex -0.976233 0.495979 0.277683 - vertex -0.920541 0.543733 0.284113 - endloop - endfacet - facet normal -0.644467 0.715155 0.270584 - outer loop - vertex -0.920541 0.543733 0.284113 - vertex -0.976233 0.495979 0.277683 - vertex -0.966663 0.486408 0.325773 - endloop - endfacet - facet normal -0.647131 0.714299 0.266456 - outer loop - vertex -0.920541 0.543733 0.284113 - vertex -0.966663 0.486408 0.325773 - vertex -0.926049 0.515237 0.347126 - endloop - endfacet -endsolid patch1 diff --git a/tutorials/mesh/cvMesh/blob/system/collapseDict b/tutorials/mesh/cvMesh/blob/system/collapseDict deleted file mode 100644 index 4948b7a61dddeec6c67cc7210ed6cbd1007d222c..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/collapseDict +++ /dev/null @@ -1,54 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object collapseDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -collapseEdgesCoeffs -{ - minimumEdgeLength 1e-4; - maximumMergeAngle 180; - reductionFactor 0.5; -} - - -collapseFacesCoeffs -{ - initialFaceLengthFactor 0.5; - reductionFactor 0.5; - - allowEarlyCollapseToPoint on; - allowEarlyCollapseCoeff 0.2; - guardFraction 0.1; - maxCollapseFaceToPointSideLengthCoeff 0.3; -} - - -meshQualityCoeffs -{ - #include "meshQualityDict"; - maximumIterations 10; - maximumSmoothingIterations 1; - maxPointErrorCount 5; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/system/controlDict b/tutorials/mesh/cvMesh/blob/system/controlDict deleted file mode 100644 index 56534bc1d5ad67209fb7d79524d0684cc1d0e4f6..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/controlDict +++ /dev/null @@ -1,53 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object controlDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -startFrom startTime; - -startTime 0; - -stopAt endTime; - -endTime 80; - -deltaT 1; - -writeControl timeStep; - -writeInterval 80; - -purgeWrite 0; - -writeFormat ascii; - -writePrecision 12; - -writeCompression uncompressed; - -timeFormat general; - -timePrecision 6; - -runTimeModifiable yes; - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/system/cvMeshDict b/tutorials/mesh/cvMesh/blob/system/cvMeshDict deleted file mode 100644 index eda52324f55ca0fdb1431ce058ee1304f61ab4de..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/cvMeshDict +++ /dev/null @@ -1,212 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object cvMeshDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// Any scalar with a name <name>Coeff specifies a value that will be implemented -// as a faction of the local target cell size - -geometry -{ - blob.stl - { - type triSurfaceMesh; - } - - refinementBox - { - type searchableBox; - min (-0.2 -0.6 -0.2); - max ( 0.4 0.2 0.35); - } -} - - -backgroundMeshDecomposition -{ - minLevels 0; - sampleResolution 4; - spanScale 20; - maxCellWeightCoeff 20; -} - - -initialPoints -{ - minimumSurfaceDistanceCoeff 0.55; - - initialPointsMethod autoDensity; - // initialPointsMethod pointFile; - - autoDensityCoeffs - { - minLevels 0; - maxSizeRatio 5.0; - sampleResolution 5; - surfaceSampleResolution 5; - } - - pointFileCoeffs - { - pointFile "constant/internalDelaunayVertices"; - } -} - - -surfaceConformation -{ - locationInMesh (0.1 0.1 0.2); - - pointPairDistanceCoeff 0.1; - - mixedFeaturePointPPDistanceCoeff 5.0; - - featurePointExclusionDistanceCoeff 0.4; - - featureEdgeExclusionDistanceCoeff 0.2; - - surfaceSearchDistanceCoeff 5; - - nearBoundaryDistanceCoeff 5; - - maxSurfaceProtrusionCoeff 0.001; - - maxQuadAngle 125; - - surfaceConformationRebuildFrequency 10; - - specialiseFeaturePoints off; - - conformationControls - { - edgeSearchDistCoeff 5; - surfacePtReplaceDistCoeff 0.5; - surfacePtExclusionDistanceCoeff 0.5; - - maxIterations 15; - - iterationToInitialHitRatioLimit 0.0001; - } - - geometryToConformTo - { - blob.stl - { - featureMethod none; - } - } - - additionalFeatures - { - } -} - - -motionControl -{ - defaultCellSize 0.1; - - shapeControlFunctions - { - blob.stl - { - type searchableSurfaceControl; - priority 1; - mode bothSides; - - surfaceCellSizeFunction uniformValue; - uniformValueCoeffs - { - surfaceCellSize $defaultCellSize; - } - - cellSizeFunction uniform; - uniformCoeffs - {} - } - } - - maxRefinementIterations 1; - - cellAspectRatioControl - { - aspectRatio 1.0; - aspectRatioDirection (1 0 0); - } - - relaxationModel adaptiveLinear; - - adaptiveLinearCoeffs - { - relaxationStart 1.0; - relaxationEnd 0.0; - } - - objOutput no; - - timeChecks no; - - maxLoadUnbalance 0.5; - - alignmentSearchSpokes 24; - - alignmentAcceptanceAngle 48; - - sizeAndAlignmentRebuildFrequency 40; - - pointInsertionCriteria - { - cellCentreDistCoeff 1.75; - faceAreaRatioCoeff 0.0025; - acceptanceAngle 21.5; - } - - pointRemovalCriteria - { - cellCentreDistCoeff 0.65; - } - - faceAreaWeightModel piecewiseLinearRamp; - - piecewiseLinearRampCoeffs - { - lowerAreaFraction 0.5; - upperAreaFraction 1.0; - } -} - - -polyMeshFiltering -{ - filterEdges on; - filterFaces off; - writeTetDualMesh false; -} - - -meshQualityControls -{ - #include "meshQualityDict" -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/system/decomposeParDict b/tutorials/mesh/cvMesh/blob/system/decomposeParDict deleted file mode 100644 index 3d3806e87382b1f4fef074e2aad6f535c98881b6..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/decomposeParDict +++ /dev/null @@ -1,47 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object decomposeParDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -numberOfSubdomains 2; - -method scotch; -//method ptscotch; -// method hierarchical; - -simpleCoeffs -{ - n ( 2 2 1 ); - delta 0.001; -} - -hierarchicalCoeffs -{ - n ( 2 1 1 ); - delta 0.001; - order xyz; -} - -manualCoeffs -{ - dataFile ""; -} - -distributed no; - -roots ( ); - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/system/fvSchemes b/tutorials/mesh/cvMesh/blob/system/fvSchemes deleted file mode 100644 index 2e5c55b28ba64ca0cfc1a7c714148109cd736563..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/fvSchemes +++ /dev/null @@ -1,54 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSchemes; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -ddtSchemes -{ - default none; -} - -gradSchemes -{ - default none; -} - -divSchemes -{ - default none; -} - -laplacianSchemes -{ - default none; -} - -interpolationSchemes -{ - default none; -} - -snGradSchemes -{ - default none; -} - -fluxRequired -{ - default no; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/system/fvSolution b/tutorials/mesh/cvMesh/blob/system/fvSolution deleted file mode 100644 index 740eb61a4bcb97e64ae0b33558f5c7057e7a6d20..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/fvSolution +++ /dev/null @@ -1,22 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSolution; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -solvers -{ -} - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/system/meshQualityDict b/tutorials/mesh/cvMesh/blob/system/meshQualityDict deleted file mode 100644 index fa5319e087c5e36fe7c3cd93d3a69d5ebc75463e..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/meshQualityDict +++ /dev/null @@ -1,73 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object meshQualityDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -//- Maximum non-orthogonality allowed. Set to 180 to disable. -maxNonOrtho 65; - -//- Max skewness allowed. Set to <0 to disable. -maxBoundarySkewness 50; -maxInternalSkewness 10; - -//- Max concaveness allowed. Is angle (in degrees) below which concavity -// is allowed. 0 is straight face, <0 would be convex face. -// Set to 180 to disable. -maxConcave 80; - -//- Minimum quality of the tet formed by the face-centre -// and variable base point minimum decomposition triangles and -// the cell centre. This has to be a positive number for tracking -// to work. Set to very negative number (e.g. -1E30) to -// disable. -// <0 = inside out tet, -// 0 = flat tet -// 1 = regular tet -minTetQuality 1e-30; - -//- Minimum pyramid volume. Is absolute volume of cell pyramid. -// Set to a sensible fraction of the smallest cell volume expected. -// Set to very negative number (e.g. -1E30) to disable. -minVol 1e-20; - -//- Minimum face area. Set to <0 to disable. -minArea -1; - -//- Minimum face twist. Set to <-1 to disable. dot product of face normal -//- and face centre triangles normal -minTwist 0.001; - -//- minimum normalised cell determinant -//- 1 = hex, <= 0 = folded or flattened illegal cell -minDeterminant 0.001; - -//- minFaceWeight (0 -> 0.5) -minFaceWeight 0.02; - -//- minVolRatio (0 -> 1) -minVolRatio 0.01; - -//must be >0 for Fluent compatibility -minTriangleTwist -1; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/system/snappyHexMeshDict b/tutorials/mesh/cvMesh/blob/system/snappyHexMeshDict deleted file mode 100644 index c5723d829f22cd893114a969605b413cdcb75b84..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/snappyHexMeshDict +++ /dev/null @@ -1,310 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object snappyHexMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// Which of the steps to run -castellatedMesh false; -snap false; -addLayers true; - - -// Geometry. Definition of all surfaces. All surfaces are of class -// searchableSurface. -// Surfaces are used -// - to specify refinement for any mesh cell intersecting it -// - to specify refinement for any mesh cell inside/outside/near -// - to 'snap' the mesh boundary to the surface -geometry -{ -// motorBike.obj -// { -// type triSurfaceMesh; -// name motorBike; -// } -// -// refinementBox -// { -// type searchableBox; -// min (-1.0 -0.7 0.0); -// max ( 8.0 0.7 2.5); -// } -}; - - - -// Settings for the castellatedMesh generation. -castellatedMeshControls -{ - - // Refinement parameters - // ~~~~~~~~~~~~~~~~~~~~~ - - // If local number of cells is >= maxLocalCells on any processor - // switches from from refinement followed by balancing - // (current method) to (weighted) balancing before refinement. - maxLocalCells 100000; - - // Overall cell limit (approximately). Refinement will stop immediately - // upon reaching this number so a refinement level might not complete. - // Note that this is the number of cells before removing the part which - // is not 'visible' from the keepPoint. The final number of cells might - // actually be a lot less. - maxGlobalCells 2000000; - - // The surface refinement loop might spend lots of iterations refining just a - // few cells. This setting will cause refinement to stop if <= minimumRefine - // are selected for refinement. Note: it will at least do one iteration - // (unless the number of cells to refine is 0) - minRefinementCells 10; - - // Allow a certain level of imbalance during refining - // (since balancing is quite expensive) - // Expressed as fraction of perfect balance (= overall number of cells / - // nProcs). 0=balance always. - maxLoadUnbalance 0.10; - - - // Number of buffer layers between different levels. - // 1 means normal 2:1 refinement restriction, larger means slower - // refinement. - nCellsBetweenLevels 3; - - - - // Explicit feature edge refinement - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - // Specifies a level for any cell intersected by its edges. - // This is a featureEdgeMesh, read from constant/triSurface for now. - features - ( - //{ - // file "someLine.eMesh"; - // level 2; - //} - ); - - - - // Surface based refinement - // ~~~~~~~~~~~~~~~~~~~~~~~~ - - // Specifies two levels for every surface. The first is the minimum level, - // every cell intersecting a surface gets refined up to the minimum level. - // The second level is the maximum level. Cells that 'see' multiple - // intersections where the intersections make an - // angle > resolveFeatureAngle get refined up to the maximum level. - - refinementSurfaces - { -// motorBike -// { -// // Surface-wise min and max refinement level -// level (5 6); -// -// // Optional specification of patch type (default is wall). No -// // constraint types (cyclic, symmetry) etc. are allowed. -// patchInfo -// { -// type wall; -// inGroups (motorBike); -// } -// } - } - - // Resolve sharp angles - resolveFeatureAngle 30; - - - // Region-wise refinement - // ~~~~~~~~~~~~~~~~~~~~~~ - - // Specifies refinement level for cells in relation to a surface. One of - // three modes - // - distance. 'levels' specifies per distance to the surface the - // wanted refinement level. The distances need to be specified in - // descending order. - // - inside. 'levels' is only one entry and only the level is used. All - // cells inside the surface get refined up to the level. The surface - // needs to be closed for this to be possible. - // - outside. Same but cells outside. - - refinementRegions - { -// refinementBox -// { -// mode inside; -// levels ((1E15 4)); -// } - } - - - // Mesh selection - // ~~~~~~~~~~~~~~ - - // After refinement patches get added for all refinementSurfaces and - // all cells intersecting the surfaces get put into these patches. The - // section reachable from the locationInMesh is kept. - // NOTE: This point should never be on a face, always inside a cell, even - // after refinement. - locationInMesh (-1 0 0); - - - // Whether any faceZones (as specified in the refinementSurfaces) - // are only on the boundary of corresponding cellZones or also allow - // free-standing zone faces. Not used if there are no faceZones. - allowFreeStandingZoneFaces true; -} - - - -// Settings for the snapping. -snapControls -{ - //- Number of patch smoothing iterations before finding correspondence - // to surface - nSmoothPatch 3; - - //- Relative distance for points to be attracted by surface feature point - // or edge. True distance is this factor times local - // maximum edge length. - tolerance 4.0; - - //- Number of mesh displacement relaxation iterations. - nSolveIter 0; - - //- Maximum number of snapping relaxation iterations. Should stop - // before upon reaching a correct mesh. - nRelaxIter 5; - - //- Highly experimental and wip: number of feature edge snapping - // iterations. Leave out altogether to disable. - // Do not use here since mesh resolution too low and baffles present - //nFeatureSnapIter 10; -} - - - -// Settings for the layer addition. -addLayersControls -{ - // Are the thickness parameters below relative to the undistorted - // size of the refined cell outside layer (true) or absolute sizes (false). - relativeSizes false; - - // Per final patch (so not geometry!) the layer information - layers - { - blob.stl_patch1 - { - nSurfaceLayers 4; - } - } - - // Expansion factor for layer mesh - expansionRatio 1.5; - - // Wanted thickness of final added cell layer. If multiple layers - // is the thickness of the layer furthest away from the wall. - // Relative to undistorted size of cell outside layer. - // is the thickness of the layer furthest away from the wall. - // See relativeSizes parameter. - finalLayerThickness 0.02; - - // Minimum thickness of cell layer. If for any reason layer - // cannot be above minThickness do not add layer. - // Relative to undistorted size of cell outside layer. - minThickness 0.005; - - // If points get not extruded do nGrow layers of connected faces that are - // also not grown. This helps convergence of the layer addition process - // close to features. - // Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x) - nGrow 0; - - // Advanced settings - - // When not to extrude surface. 0 is flat surface, 90 is when two faces - // are perpendicular - featureAngle 90; - - // Maximum number of snapping relaxation iterations. Should stop - // before upon reaching a correct mesh. - nRelaxIter 3; - - // Number of smoothing iterations of surface normals - nSmoothSurfaceNormals 1; - - // Number of smoothing iterations of interior mesh movement direction - nSmoothNormals 3; - - // Smooth layer thickness over surface patches - nSmoothThickness 10; - - // Stop layer growth on highly warped cells - maxFaceThicknessRatio 1000; - - // Reduce layer growth where ratio thickness to medial - // distance is large - maxThicknessToMedialRatio 0.3; - - // Angle used to pick up medial axis points - // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 in 17x. - minMedianAxisAngle 90; - - - // Create buffer region for new layer terminations - nBufferCellsNoExtrude 0; - - - // Overall max number of layer addition iterations. The mesher will exit - // if it reaches this number of iterations; possibly with an illegal - // mesh. - nLayerIter 50; -} - - - -// Generic mesh quality settings. At any undoable phase these determine -// where to undo. -meshQualityControls -{ - #include "meshQualityDict" - - // Advanced - - //- Number of error distribution iterations - nSmoothScale 4; - //- amount to scale back displacement at error points - errorReduction 0.75; -} - - -// Advanced - -// Flags for optional output -// 0 : only write final meshes -// 1 : write intermediate meshes -// 2 : write volScalarField with cellLevel for postprocessing -// 4 : write current intersections as .obj files -debug 0; - - -// Merge tolerance. Is fraction of overall bounding box of initial mesh. -// Note: the write tolerance needs to be higher than this. -mergeTolerance 1e-6; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/blob/system/topoSetDict b/tutorials/mesh/cvMesh/blob/system/topoSetDict deleted file mode 100644 index f58b038ef44b5ca08da4e9f125f1ef933fa66ebd..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/blob/system/topoSetDict +++ /dev/null @@ -1,149 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object topoSetDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -actions -( - { - name z; - type cellSet; - action new; - source boxToCell; - sourceInfo - { - box (-100 -100 -0.2)(100 100 100); - } - } - - { - name zf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set z; - option all; - } - } - - { - name z; - type cellSet; - action invert; - } - - { - name zf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set z; - option all; - } - } - - // ~~~~~~~~~~~~~~~~ // - - { - name x; - type cellSet; - action new; - source boxToCell; - sourceInfo - { - box (-0.32 -100 -100)(100 100 100); - } - } - - { - name xf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set x; - option all; - } - } - - { - name x; - type cellSet; - action invert; - } - - { - name xf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set x; - option all; - } - } - - // ~~~~~~~~~~~~~~~~ // - - { - name sp; - type cellSet; - action new; - source sphereToCell; - sourceInfo - { - centre (-0.3 -0.3 -0.3); - radius 0.4; - } - } - - { - name spf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set sp; - option all; - } - } - - { - name sp; - type cellSet; - action invert; - } - - { - name spf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set sp; - option all; - } - } -); - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/Allclean b/tutorials/mesh/cvMesh/flange/Allclean deleted file mode 100755 index dc1ee49a8fe81c236846b581745b8bf9c0f9b13a..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/Allclean +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/CleanFunctions - -rm -rf constant/extendedFeatureEdgeMesh > /dev/null 2>&1 -rm -r constant/ccx constant/ccy constant/ccz > /dev/null 2>&1 -rm -r constant/internalDelaunayVertices constant/targetCellSize > /dev/null 2>&1 -rm -r 0/ccx 0/ccy 0/ccz > /dev/null 2>&1 - -cleanCase - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/flange/Allrun b/tutorials/mesh/cvMesh/flange/Allrun deleted file mode 100755 index f3f891243724f6262cc41d0e6115929907235b4d..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/Allrun +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -runApplication surfaceFeatureExtract - -# Create tight-fitting background mesh -runApplication blockMesh -runApplication topoSet -dict system/topoSetDict-background -mv log.topoSet log.topoSet.background -runApplication subsetMesh background -patch walls -overwrite - -runApplication cvMesh -runApplication collapseEdges -latestTime -collapseFaces -runApplication checkMesh -latestTime -allGeometry -allTopology - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/flange/Allrun-parallel b/tutorials/mesh/cvMesh/flange/Allrun-parallel deleted file mode 100755 index f5bedb8935ec8f063146fa1432b4769182cdc2f9..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/Allrun-parallel +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -# Get the number of processors to run on from system/decomposeParDict -nProc=$(getNumberOfProcessors) - -runApplication surfaceFeatureExtract - -# Create tight-fitting background mesh -runApplication blockMesh -runApplication topoSet -dict system/topoSetDict-background -mv log.topoSet log.topoSet.background -runApplication subsetMesh background -patch walls -overwrite - -runApplication decomposePar - -runParallel cvMesh $nProc -runParallel collapseEdges $nProc -latestTime -collapseFaces -runParallel checkMesh $nProc -latestTime -allTopology -allGeometry - -runApplication reconstructParMesh -latestTime - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/flange/Alltest b/tutorials/mesh/cvMesh/flange/Alltest deleted file mode 100755 index 75b5887193055fc87ce8120145c5e72d0c335399..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/Alltest +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -runApplication surfaceFeatureExtract - -# Create tight-fitting background mesh -runApplication blockMesh -runApplication cvMesh - -# Change collapseEdges to only do one iteration -cp system/collapseDict system/collapseDict.org - -sed -e s/"\(maximumIterations[ \t]*\)\([0-9]*\);"/"\1 1;"/g \ -system/collapseDict.org > system/collapseDict - -runApplication collapseEdges -latestTime -collapseFaces - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/flange/constant/polyMesh/blockMeshDict b/tutorials/mesh/cvMesh/flange/constant/polyMesh/blockMeshDict deleted file mode 100644 index 81d15816e37cbce5427f961bf339915ba1395524..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/constant/polyMesh/blockMeshDict +++ /dev/null @@ -1,69 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object blockMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -convertToMeters 1.0; - -xmin -0.0265; -xmax 0.0265; -ymin -0.028; -ymax 0.023; -zmin -0.024; -zmax 0.01; - -vertices -( - ($xmin $ymin $zmin) - ($xmax $ymin $zmin) - ($xmax $ymax $zmin) - ($xmin $ymax $zmin) - ($xmin $ymin $zmax) - ($xmax $ymin $zmax) - ($xmax $ymax $zmax) - ($xmin $ymax $zmax) - -); - -blocks -( - hex (0 1 2 3 4 5 6 7) (5 6 3) simpleGrading (1 1 1) -); - -edges -( -); - -boundary -( - walls - { - type wall; - faces - ( - (3 7 6 2) - (0 4 7 3) - (2 6 5 1) - (1 5 4 0) - (0 3 2 1) - (4 5 6 7) - ); - } -); - -mergePatchPairs -( -); - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/constant/polyMesh/boundary b/tutorials/mesh/cvMesh/flange/constant/polyMesh/boundary deleted file mode 100644 index efe6bfe832fedad4de807c79b291f6dcc2b14dde..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/constant/polyMesh/boundary +++ /dev/null @@ -1,28 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class polyBoundaryMesh; - location "constant/polyMesh"; - object boundary; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -1 -( - walls - { - type wall; - nFaces 126; - startFace 207; - } -) - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/constant/triSurface/flange.obj b/tutorials/mesh/cvMesh/flange/constant/triSurface/flange.obj deleted file mode 100644 index 8b3998fe8a8b0b5e4759cef6521038f4e71db02d..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/constant/triSurface/flange.obj +++ /dev/null @@ -1,9710 +0,0 @@ -# Wavefront OBJ file -# Regions: -# 0 patch1 -# 1 patch2 -# 2 patch3 -# 3 patch4 -# -# points : 3228 -# triangles : 6468 -# -v 0.003234 0.00317894 -0.01375 -v 0.00232785 0.00310005 -0.01375 -v 0.002302 0.00389537 -0.01375 -v 0.002302 -0.00389537 -0.01375 -v 0.00232785 -0.00310005 -0.01375 -v 0.003234 -0.00317894 -0.01375 -v 0.0097686 0.002 -0.0152248 -v 0.0111516 0.002 -0.014182 -v 0.0115415 0.002 -0.0156366 -v 0.0131584 0.002 -0.0151265 -v 0.0146963 0.002 -0.016257 -v 0.0131946 0.002 -0.0158693 -v 0.0144921 0.002 -0.01727 -v 0.015699 0.002 -0.0175533 -v 0.0125608 0.002 -0.0164174 -v 0.0134607 0.002 -0.01688 -v 0.0115415 0.002 -0.00286344 -v 0.0111516 0.002 -0.0043179 -v 0.0097686 0.002 -0.00327517 -v 0.0131946 0.002 -0.0026307 -v 0.0146963 0.002 -0.00224303 -v 0.0131584 0.002 -0.0033735 -v 0.015699 0.002 -0.00094673 -v 0.0144921 0.002 -0.00123011 -v 0.0134607 0.002 -0.0016199 -v 0.0125608 0.002 -0.00208264 -v -0.002302 0.00389537 -0.01375 -v -0.00232785 0.00310005 -0.01375 -v -0.003234 0.00317894 -0.01375 -v -0.003234 -0.00317894 -0.01375 -v -0.00232785 -0.00310005 -0.01375 -v -0.002302 -0.00389537 -0.01375 -v -0.0115415 0.002 -0.0156366 -v -0.0111516 0.002 -0.014182 -v -0.0097686 0.002 -0.0152248 -v -0.0131946 0.002 -0.0158693 -v -0.0146963 0.002 -0.016257 -v -0.0131584 0.002 -0.0151265 -v -0.015699 0.002 -0.0175533 -v -0.0144921 0.002 -0.01727 -v -0.0134607 0.002 -0.01688 -v -0.0125608 0.002 -0.0164174 -v -0.0097686 0.002 -0.00327517 -v -0.0111516 0.002 -0.0043179 -v -0.0115415 0.002 -0.00286344 -v -0.0131584 0.002 -0.0033735 -v -0.0146963 0.002 -0.00224303 -v -0.0131946 0.002 -0.0026307 -v -0.0144921 0.002 -0.00123011 -v -0.015699 0.002 -0.00094673 -v -0.0125608 0.002 -0.00208264 -v -0.0134607 0.002 -0.0016199 -v 0.00081649 0.0016143 -0.01375 -v 4.8963e-05 0.00165237 -0.01375 -v 4.8963e-05 0.00230474 -0.01375 -v 0.00120133 0.00230474 -0.01375 -v 0.00155489 0.00150593 -0.01375 -v 0.0023537 0.00230474 -0.01375 -v 0.0023537 0.00115237 -0.01375 -v 0.00166327 0.00076753 -0.01375 -v 0.0023537 -1.74e-18 -0.01375 -v 0.00170133 -3.04e-18 -0.01375 -v 0.00097284 0.00038268 -0.01375 -v 0.00104896 -3.91e-18 -0.01375 -v 0.00075607 0.0007071 -0.01375 -v 0.000431646 0.00092388 -0.01375 -v 4.8963e-05 0.001 -0.01375 -v 0.00249896 -0.00094365 -0.00925 -v 0.00249896 -6.98e-16 -0.00925 -v 0.0022979 -6.98e-16 -0.010222 -v 0.0022932 -0.00097703 -0.0102324 -v 0.00081649 -0.0016143 -0.01375 -v 0.00120133 -0.00230474 -0.01375 -v 4.8963e-05 -0.00230474 -0.01375 -v 4.8963e-05 -0.00165237 -0.01375 -v 0.00155489 -0.00150593 -0.01375 -v 0.0023537 -0.00230474 -0.01375 -v 0.00166327 -0.00076753 -0.01375 -v 0.0023537 -0.00115237 -0.01375 -v 0.00097284 -0.00038268 -0.01375 -v 0.00075607 -0.0007071 -0.01375 -v 0.000431646 -0.00092388 -0.01375 -v 4.8963e-05 -0.001 -0.01375 -v 0.0107846 0.002 -0.0109912 -v 0.0096058 0.002 -0.011181 -v 0.009799 0.002 -0.00925 -v 0.0107791 0.002 -0.00925 -v 0.0117593 0.002 -0.00925 -v 0.0119634 0.002 -0.0108016 -v 0.0162069 0.002 -0.0150457 -v 0.0166766 0.002 -0.0163743 -v 0.0147592 0.002 -0.014446 -v 0.0177593 0.002 -0.01525 -v 0.0177593 0.002 -0.0166736 -v 0.0167117 0.002 -0.0174385 -v 0.0177593 0.002 -0.0183878 -v 0.0159418 0.002 -0.0192534 -v 0.008014 0.002 -0.0171347 -v 0.0065 0.002 -0.0165607 -v 0.0079468 0.002 -0.0149673 -v 0.0090659 0.002 -0.016288 -v 0.008476 0.002 -0.0185554 -v 0.0065 0.002 -0.018933 -v 0.0106532 0.002 -0.017664 -v 0.0087366 0.002 -0.0205014 -v 0.0065 0.002 -0.0213056 -v 0.0092624 0.002 -0.0224344 -v 0.0065 0.002 -0.02375 -v 0.0116557 0.002 -0.019395 -v 0.010708 0.002 -0.0196982 -v 0.0120812 0.002 -0.0185232 -v 0.0117868 0.002 -0.021232 -v 0.0130909 0.002 -0.0192646 -v 0.0121778 0.002 -0.019964 -v 0.0139919 0.002 -0.020182 -v 0.0089605 0.002 -0.0132056 -v 0.0120464 0.002 -0.0172835 -v 0.0129252 0.002 -0.017769 -v 0.013513 0.002 -0.013489 -v 0.0141125 0.002 -0.0183892 -v 0.0107617 0.002 -0.0127276 -v 0.012563 0.002 -0.0122497 -v 0.0022932 -0.00097703 -0.0082676 -v 0.0022979 -6.98e-16 -0.008278 -v 0.0235547 0.002 -0.0108036 -v 0.0237593 0.002 -0.00925 -v 0.0248843 0.002 -0.00925 -v 0.02461 0.002 -0.0112059 -v 0.0260093 0.002 -0.00925 -v 0.025665 0.002 -0.0116081 -v 0.0229553 0.002 -0.0122503 -v 0.0238083 0.002 -0.01301 -v 0.024661 0.002 -0.0137696 -v 0.022002 0.002 -0.0134926 -v 0.0225418 0.002 -0.0145232 -v 0.0230815 0.002 -0.0155537 -v 0.0207594 0.002 -0.014446 -v 0.0209085 0.002 -0.015629 -v 0.0210577 0.002 -0.016812 -v 0.0193148 0.002 -0.0150449 -v 0.0193617 0.002 -0.016288 -v 0.01945 0.002 -0.0175827 -v 0.0235547 0.002 -0.0076964 -v 0.02461 0.002 -0.0072941 -v 0.025665 0.002 -0.0068919 -v 0.0229553 0.002 -0.0062497 -v 0.0238083 0.002 -0.00549006 -v 0.024661 0.002 -0.0047304 -v 0.022002 0.002 -0.00500735 -v 0.0225418 0.002 -0.0039768 -v 0.0230815 0.002 -0.0029463 -v 0.0207594 0.002 -0.00405388 -v 0.0209085 0.002 -0.00287096 -v 0.0210577 0.002 -0.00168803 -v 0.0193148 0.002 -0.00345514 -v 0.0193617 0.002 -0.0022119 -v 0.0194085 0.002 -0.0009687 -v 0.0177593 0.002 -0.00325 -v 0.0177593 0.002 -0.00182637 -v 0.0177593 0.002 -0.000249369 -v 0.0107846 0.002 -0.0075088 -v 0.0096058 0.002 -0.007319 -v 0.0119634 0.002 -0.0076985 -v 0.0162069 0.002 -0.0034543 -v 0.0147592 0.002 -0.0040539 -v 0.0166766 0.002 -0.00212568 -v 0.0167117 0.002 -0.00106153 -v 0.0158684 0.002 0.00057542 -v 0.008014 0.002 -0.00136532 -v 0.0090659 0.002 -0.00221207 -v 0.0079468 0.002 -0.0035327 -v 0.0065 0.002 -0.00193928 -v 0.0065 0.002 0.00043318 -v 0.008476 0.002 5.5378e-05 -v 0.0106532 0.002 -0.00083587 -v 0.0065 0.002 0.00225 -v 0.0088096 0.002 0.00225 -v 0.0116557 0.002 0.00089514 -v 0.0120812 0.002 2.32197e-05 -v 0.010708 0.002 0.0011982 -v 0.0121778 0.002 0.00146398 -v 0.0130909 0.002 0.00076461 -v 0.0120291 0.002 0.00225 -v 0.0139774 0.002 0.00140021 -v 0.0089605 0.002 -0.00529437 -v 0.0120464 0.002 -0.0012165 -v 0.0129252 0.002 -0.000731 -v 0.013513 0.002 -0.00501106 -v 0.0141125 0.002 -0.000110779 -v 0.0107617 0.002 -0.0057724 -v 0.012563 0.002 -0.0062503 -v -0.00081649 0.0016143 -0.01375 -v -0.00120133 0.00230474 -0.01375 -v -0.00155489 0.00150593 -0.01375 -v -0.0023537 0.00230474 -0.01375 -v -0.00166327 0.00076753 -0.01375 -v -0.0023537 0.00115237 -0.01375 -v -0.00170133 -3.04e-18 -0.01375 -v -0.0023537 -1.74e-18 -0.01375 -v -0.00097284 0.00038268 -0.01375 -v -0.00104896 -3.91e-18 -0.01375 -v -0.00075607 0.0007071 -0.01375 -v -0.000431646 0.00092388 -0.01375 -v -0.00249896 -0.00094365 -0.00925 -v -0.0022932 -0.00097703 -0.0102324 -v -0.0022979 -6.98e-16 -0.010222 -v -0.00249896 -6.98e-16 -0.00925 -v -0.00081649 -0.0016143 -0.01375 -v -0.00120133 -0.00230474 -0.01375 -v -0.00155489 -0.00150593 -0.01375 -v -0.0023537 -0.00230474 -0.01375 -v -0.0023537 -0.00115237 -0.01375 -v -0.00166327 -0.00076753 -0.01375 -v -0.00097284 -0.00038268 -0.01375 -v -0.00075607 -0.0007071 -0.01375 -v -0.000431646 -0.00092388 -0.01375 -v -0.0107846 0.002 -0.0109912 -v -0.0107791 0.002 -0.00925 -v -0.009799 0.002 -0.00925 -v -0.0096058 0.002 -0.011181 -v -0.0117593 0.002 -0.00925 -v -0.0119634 0.002 -0.0108016 -v -0.0162069 0.002 -0.0150457 -v -0.0147592 0.002 -0.014446 -v -0.0166766 0.002 -0.0163743 -v -0.0177593 0.002 -0.0166736 -v -0.0177593 0.002 -0.01525 -v -0.0167117 0.002 -0.0174385 -v -0.0159418 0.002 -0.0192534 -v -0.0177593 0.002 -0.0183878 -v -0.008014 0.002 -0.0171347 -v -0.0090659 0.002 -0.016288 -v -0.0079468 0.002 -0.0149673 -v -0.0065 0.002 -0.0165607 -v -0.0065 0.002 -0.018933 -v -0.008476 0.002 -0.0185554 -v -0.0106532 0.002 -0.017664 -v -0.0087366 0.002 -0.0205014 -v -0.0065 0.002 -0.0213056 -v -0.0065 0.002 -0.02375 -v -0.0092624 0.002 -0.0224344 -v -0.0116557 0.002 -0.019395 -v -0.0120812 0.002 -0.0185232 -v -0.010708 0.002 -0.0196982 -v -0.0117868 0.002 -0.021232 -v -0.0121778 0.002 -0.019964 -v -0.0130909 0.002 -0.0192646 -v -0.0139919 0.002 -0.020182 -v -0.0089605 0.002 -0.0132056 -v -0.0120464 0.002 -0.0172835 -v -0.0129252 0.002 -0.017769 -v -0.013513 0.002 -0.013489 -v -0.0141125 0.002 -0.0183892 -v -0.0107617 0.002 -0.0127276 -v -0.012563 0.002 -0.0122497 -v -0.0022979 -6.98e-16 -0.008278 -v -0.0022932 -0.00097703 -0.0082676 -v -0.0235547 0.002 -0.0108036 -v -0.02461 0.002 -0.0112059 -v -0.0248843 0.002 -0.00925 -v -0.0237593 0.002 -0.00925 -v -0.025665 0.002 -0.0116081 -v -0.0260093 0.002 -0.00925 -v -0.0229553 0.002 -0.0122503 -v -0.0238083 0.002 -0.01301 -v -0.024661 0.002 -0.0137696 -v -0.022002 0.002 -0.0134926 -v -0.0225418 0.002 -0.0145232 -v -0.0230815 0.002 -0.0155537 -v -0.0207594 0.002 -0.014446 -v -0.0209085 0.002 -0.015629 -v -0.0210577 0.002 -0.016812 -v -0.0193148 0.002 -0.0150449 -v -0.0193617 0.002 -0.016288 -v -0.01945 0.002 -0.0175827 -v -0.0235547 0.002 -0.0076964 -v -0.02461 0.002 -0.0072941 -v -0.025665 0.002 -0.0068919 -v -0.0229553 0.002 -0.0062497 -v -0.0238083 0.002 -0.00549006 -v -0.024661 0.002 -0.0047304 -v -0.022002 0.002 -0.00500735 -v -0.0225418 0.002 -0.0039768 -v -0.0230815 0.002 -0.0029463 -v -0.0207594 0.002 -0.00405388 -v -0.0209085 0.002 -0.00287096 -v -0.0210577 0.002 -0.00168803 -v -0.0193148 0.002 -0.00345514 -v -0.0193617 0.002 -0.0022119 -v -0.0194085 0.002 -0.0009687 -v -0.0177593 0.002 -0.00182637 -v -0.0177593 0.002 -0.00325 -v -0.0177593 0.002 -0.000249369 -v -0.0107846 0.002 -0.0075088 -v -0.0096058 0.002 -0.007319 -v -0.0119634 0.002 -0.0076985 -v -0.0162069 0.002 -0.0034543 -v -0.0166766 0.002 -0.00212568 -v -0.0147592 0.002 -0.0040539 -v -0.0167117 0.002 -0.00106153 -v -0.0158684 0.002 0.00057542 -v -0.008014 0.002 -0.00136532 -v -0.0065 0.002 -0.00193928 -v -0.0079468 0.002 -0.0035327 -v -0.0090659 0.002 -0.00221207 -v -0.008476 0.002 5.5378e-05 -v -0.0065 0.002 0.00043318 -v -0.0106532 0.002 -0.00083587 -v -0.0088096 0.002 0.00225 -v -0.0065 0.002 0.00225 -v -0.0116557 0.002 0.00089514 -v -0.010708 0.002 0.0011982 -v -0.0120812 0.002 2.32197e-05 -v -0.0130909 0.002 0.00076461 -v -0.0121778 0.002 0.00146398 -v -0.0120291 0.002 0.00225 -v -0.0139774 0.002 0.00140021 -v -0.0089605 0.002 -0.00529437 -v -0.0120464 0.002 -0.0012165 -v -0.0129252 0.002 -0.000731 -v -0.013513 0.002 -0.00501106 -v -0.0141125 0.002 -0.000110779 -v -0.0107617 0.002 -0.0057724 -v -0.012563 0.002 -0.0062503 -v 0.0039486 0.00224557 -0.01375 -v 0.00315117 0.00227516 -0.01375 -v 0.00315117 -0.00227516 -0.01375 -v 0.0039486 -0.00224557 -0.01375 -v 0.00288809 -0.0275 -0.013156 -v 0.00312345 -0.0275 -0.01375 -v 0.00391928 -0.0275 -0.013087 -v 0.0032891 -0.0275 -0.01259 -v 0.00429036 -0.0275 -0.0126724 -v 0.00312345 -0.0275 -0.00475 -v 0.00288809 -0.0275 -0.005344 -v 0.00391928 -0.0275 -0.0054129 -v 0.0032891 -0.0275 -0.0059101 -v 0.00429036 -0.0275 -0.00582756 -v 0.0031568 0.00226529 0.00225 -v 0.0039599 0.00222589 0.00225 -v 0.00323885 0.00317405 0.00225 -v 0.00216496 0.00397147 0.00225 -v 0.00233276 0.00310005 0.00225 -v 0.0039599 -0.00222589 0.00225 -v 0.0031568 -0.00226529 0.00225 -v 0.00323885 -0.00317405 0.00225 -v 0.00233276 -0.00310005 0.00225 -v 0.00216496 -0.00397147 0.00225 -v -0.00315117 0.00227516 -0.01375 -v -0.0039486 0.00224557 -0.01375 -v -0.0039486 -0.00224557 -0.01375 -v -0.00315117 -0.00227516 -0.01375 -v -0.00312345 -0.0275 -0.01375 -v -0.00288809 -0.0275 -0.013156 -v -0.00391928 -0.0275 -0.013087 -v -0.0032891 -0.0275 -0.01259 -v -0.00429036 -0.0275 -0.0126724 -v -0.00288809 -0.0275 -0.005344 -v -0.00312345 -0.0275 -0.00475 -v -0.00391928 -0.0275 -0.0054129 -v -0.0032891 -0.0275 -0.0059101 -v -0.00429036 -0.0275 -0.00582756 -v -0.0039599 0.00222589 0.00225 -v -0.0031568 0.00226529 0.00225 -v -0.00323885 0.00317405 0.00225 -v -0.00233276 0.00310005 0.00225 -v -0.00216496 0.00397147 0.00225 -v -0.0031568 -0.00226529 0.00225 -v -0.0039599 -0.00222589 0.00225 -v -0.00323885 -0.00317405 0.00225 -v -0.00216496 -0.00397147 0.00225 -v -0.00233276 -0.00310005 0.00225 -v 0.0065 0.003375 -0.0165157 -v 0.0079194 0.0033836 -0.0149475 -v 0.0089295 0.00338968 -0.0131919 -v 0.00789208 0.0047672 -0.0149277 -v 0.0088986 0.00477936 -0.013178 -v 0.0065 0.00475 -0.0164708 -v 0.0095725 0.0033932 -0.0111742 -v 0.009765 0.00339429 -0.00925 -v 0.0095392 0.0047864 -0.0111675 -v 0.009731 0.00478857 -0.00925 -v 0.007871 0.00616027 -0.014888 -v 0.0088701 0.0061845 -0.0131506 -v 0.0078374 0.0075345 -0.014888 -v 0.0088366 0.0075587 -0.0131506 -v 0.0065 0.006125 -0.0164258 -v 0.0065 0.0075 -0.0163808 -v 0.0095061 0.0061986 -0.011154 -v 0.0094726 0.0075728 -0.011154 -v 0.0096965 0.006203 -0.00925 -v 0.009663 0.0075771 -0.00925 -v 4.8963e-05 0.0045 -0.02375 -v 4.8963e-05 0.0055 -0.02375 -v 0.0011137 0.0053555 -0.02375 -v 0.00104896 0.00438748 -0.02375 -v 4.8963e-05 0.0075 -0.02375 -v 0.00148663 0.0075 -0.02375 -v 0.00221962 0.0051977 -0.02375 -v 0.00216496 0.00397147 -0.02375 -v 0.0029119 0.0075 -0.02375 -v 0.00367495 0.005513 -0.02375 -v 0.00323885 0.00317405 -0.02375 -v 0.0042271 0.0075 -0.02375 -v 0.0043992 0.00115128 -0.02375 -v 0.0054496 0.00157564 -0.02375 -v 0.00552448 -6.84e-16 -0.02375 -v 0.004549 -6.84e-16 -0.02375 -v 0.0039599 0.00222589 -0.02375 -v 0.00523 0.00280044 -0.02375 -v 0.0048694 0.003962 -0.02375 -v 0.0051534 0.005731 -0.02375 -v 0.0054374 0.0075 -0.02375 -v 0.0065 5.47e-15 -0.02375 -v 0.0065 0.003375 -0.02375 -v 0.0065 0.00475 -0.02375 -v 0.0065 0.006125 -0.02375 -v 0.0065 0.0075 -0.02375 -v 4.8963e-05 -0.0045 -0.02375 -v 0.00104896 -0.00438748 -0.02375 -v 0.0011137 -0.0053555 -0.02375 -v 4.8963e-05 -0.0055 -0.02375 -v 0.00148663 -0.0075 -0.02375 -v 4.8963e-05 -0.0075 -0.02375 -v 0.00216496 -0.00397147 -0.02375 -v 0.00221962 -0.0051977 -0.02375 -v 0.0029119 -0.0075 -0.02375 -v 0.00323885 -0.00317405 -0.02375 -v 0.00367495 -0.005513 -0.02375 -v 0.0042271 -0.0075 -0.02375 -v 0.0043992 -0.00115128 -0.02375 -v 0.0054496 -0.00157564 -0.02375 -v 0.00523 -0.00280044 -0.02375 -v 0.0039599 -0.00222589 -0.02375 -v 0.0048694 -0.003962 -0.02375 -v 0.0051534 -0.005731 -0.02375 -v 0.0054374 -0.0075 -0.02375 -v 0.0065 -0.002 -0.02375 -v 0.0065 -0.003375 -0.02375 -v 0.0065 -0.00475 -0.02375 -v 0.0065 -0.006125 -0.02375 -v 0.0065 -0.0075 -0.02375 -v 4.8963e-05 -0.0175 -0.0147 -v 4.8963e-05 -0.0175 -0.016475 -v 0.00124515 -0.0175 -0.0163737 -v 0.00109717 -0.0175 -0.0145982 -v 4.8963e-05 -0.0175 -0.01825 -v 0.00139314 -0.0175 -0.018149 -v 0.00238149 -0.0175 -0.0160825 -v 0.0020612 -0.0175 -0.014315 -v 0.00270178 -0.0175 -0.01785 -v 0.00354179 -0.0175 -0.0155529 -v 0.00312345 -0.0175 -0.01375 -v 0.0039601 -0.0175 -0.0173557 -v 0.00448925 -0.0175 -0.0149068 -v 0.00391928 -0.0175 -0.013087 -v 0.0050592 -0.0175 -0.0167264 -v 0.00529216 -0.0175 -0.0142016 -v 0.00429036 -0.0175 -0.0126724 -v 0.006294 -0.0175 -0.0157307 -v 0.0047034 -0.0175 -0.0120852 -v 0.006085 -0.0175 -0.0132161 -v 0.0066761 -0.0175 -0.0121268 -v 0.00501887 -0.0175 -0.0114866 -v 0.00746649 -0.0175 -0.014347 -v 0.0083333 -0.0175 -0.012767 -v 0.0053672 -0.0175 -0.010441 -v 0.00712418 -0.0175 -0.0107105 -v 0.0088811 -0.0175 -0.01098 -v 0.005499 -0.0175 -0.00925 -v 0.007274 -0.0175 -0.00925 -v 0.009049 -0.0175 -0.00925 -v 4.8962e-05 -0.0275 -0.01245 -v 4.89625e-05 -0.0275 -0.0132 -v 0.00107307 -0.0275 -0.0130425 -v 0.00106101 -0.0275 -0.0122646 -v 4.8962e-05 -0.0275 -0.0117 -v 0.00104896 -0.0275 -0.0114868 -v 0.002086 -0.0275 -0.0127852 -v 0.0019891 -0.0275 -0.0118203 -v 0.00178137 -0.0275 -0.0109825 -v 0.00251807 -0.0275 -0.0118038 -v 0.00276864 -0.0275 -0.012485 -v 0.00252846 -0.0275 -0.0112413 -v 0.00231247 -0.0275 -0.0101877 -v 0.0032963 -0.0275 -0.0103751 -v 0.00249896 -0.0275 -0.00925 -v 0.0033171 -0.0275 -0.0092501 -v 0.003269 -0.0275 -0.0120778 -v 0.0037536 -0.0275 -0.0113674 -v 0.0047034 -0.0275 -0.0120852 -v 0.00501887 -0.0275 -0.0114866 -v 0.00433179 -0.0275 -0.010408 -v 0.0053672 -0.0275 -0.010441 -v 0.004509 -0.0275 -0.00925 -v 0.005499 -0.0275 -0.00925 -v 4.89628e-05 -0.0275 -0.01395 -v 0.00108512 -0.0275 -0.0138204 -v 4.8963e-05 -0.0275 -0.0147 -v 0.00109717 -0.0275 -0.0145982 -v 0.0020873 -0.0275 -0.0135446 -v 0.0020612 -0.0275 -0.014315 -v 0.00104896 0.0225 -0.0161782 -v 0.00127296 0.0224614 -0.0174672 -v 4.8963e-05 0.0224614 -0.017558 -v 4.8963e-05 0.0225 -0.01625 -v 0.0015038 0.0225 -0.0183849 -v 4.8963e-05 0.0225 -0.0185 -v 0.0021601 0.0225 -0.015924 -v 0.002536 0.0224614 -0.017177 -v 0.00284678 0.0225 -0.0180667 -v 0.0032438 0.0225 -0.0154784 -v 0.00373546 0.0224614 -0.0166946 -v 0.00408266 0.0225 -0.017574 -v 0.0043334 0.0225 -0.0147856 -v 0.0048854 0.0224614 -0.016 -v 0.0052903 0.0225 -0.0168717 -v 0.0054108 0.0225 -0.01375 -v 0.0059554 0.0224614 -0.0150654 -v 0.00635 0.0225 -0.016022 -v 0.0061985 0.0225 -0.0125942 -v 0.006682 0.0225 -0.0114866 -v 0.0077593 0.0224908 -0.0123186 -v 0.007018 0.0224787 -0.0137412 -v 0.008537 0.0225 -0.0129264 -v 0.0075997 0.0225 -0.014593 -v 0.0069557 0.0225 -0.010389 -v 0.0082141 0.0224979 -0.0107716 -v 0.009116 0.0225 -0.011081 -v 0.007049 0.0225 -0.00925 -v 0.008356 0.0225 -0.00925 -v 0.009299 0.0225 -0.00925 -v 0.00249896 -0.0018873 -0.00925 -v 0.0022885 -0.00195405 -0.0102427 -v 0.0017277 5.66e-08 -0.0110345 -v 0.0017277 -0.00115243 -0.0110345 -v 0.0017277 -0.0023048 -0.0110345 -v 0.000781428 -0.00161437 -0.011588 -v 4.8963e-05 -0.00165243 -0.0116999 -v 4.8963e-05 -0.0023048 -0.0116999 -v 0.0010918 -0.0023048 -0.011467 -v 0.00133196 -0.00150598 -0.0113372 -v 0.00139701 -0.00076758 -0.0112958 -v 0.00141894 5.66e-08 -0.0112812 -v 0.00096135 -0.00040932 -0.0115238 -v 0.00104896 -6.98e-16 -0.0114866 -v 0.00074085 -0.0007218 -0.0116002 -v 0.000427704 -0.00092555 -0.0116705 -v 4.8963e-05 -0.00100006 -0.0116999 -v 0.0065 0.003375 -0.00198425 -v 0.0079194 0.0033836 -0.0035525 -v 0.0089295 0.00338968 -0.0053081 -v 0.00789208 0.0047672 -0.00357229 -v 0.0088986 0.00477936 -0.00532189 -v 0.0065 0.00475 -0.00202923 -v 0.0095725 0.0033932 -0.0073258 -v 0.0095392 0.0047864 -0.0073325 -v 0.007871 0.00616027 -0.00361186 -v 0.0088701 0.0061845 -0.0053494 -v 0.0088366 0.0075587 -0.0053494 -v 0.0078374 0.0075345 -0.00361186 -v 0.0065 0.006125 -0.0020742 -v 0.0065 0.0075 -0.00211917 -v 0.0095061 0.0061986 -0.007346 -v 0.0094726 0.0075728 -0.007346 -v 0.000902 0.0044184 0.00225 -v 0.0011137 0.0053555 0.00225 -v 4.8963e-05 0.0055 0.00224996 -v 4.8963e-05 0.0045 0.00225 -v 0.00149694 0.0075 0.00225 -v 4.8963e-05 0.0075 0.00225 -v 0.00221962 0.0051977 0.00225 -v 0.0029119 0.0075 0.00225 -v 0.00352837 0.00529856 0.00225 -v 0.0042271 0.0075 0.00225 -v 0.0043992 0.00115128 0.00225 -v 0.004549 -1.38e-15 0.00225 -v 0.00530456 -1.38e-15 0.00225 -v 0.0052181 0.00148194 0.00225 -v 0.00503615 0.0027323 0.00225 -v 0.0047612 0.00394096 0.00225 -v 0.0049116 0.00555049 0.00225 -v 0.0054374 0.0075 0.00225 -v 0.0065 1.92e-08 0.00225 -v 0.0065 0.003375 0.00225 -v 0.0065 0.00475 0.00225 -v 0.0065 0.006125 0.00225 -v 0.0065 0.0075 0.00225 -v 0.000902 -0.0044184 0.00225 -v 4.8963e-05 -0.0045 0.00225 -v 4.8963e-05 -0.0055 0.00224996 -v 0.0011137 -0.0053555 0.00225 -v 4.8963e-05 -0.0075 0.00225 -v 0.00149694 -0.0075 0.00225 -v 0.00221962 -0.0051977 0.00225 -v 0.0029119 -0.0075 0.00225 -v 0.00352837 -0.00529856 0.00225 -v 0.0042271 -0.0075 0.00225 -v 0.0043992 -0.00115128 0.00225 -v 0.0052181 -0.00148194 0.00225 -v 0.00503615 -0.0027323 0.00225 -v 0.0047612 -0.00394096 0.00225 -v 0.0049116 -0.00555049 0.00225 -v 0.0054374 -0.0075 0.00225 -v 0.0065 -0.002 0.00225 -v 0.0065 -0.003375 0.00225 -v 0.0065 -0.00475 0.00225 -v 0.0065 -0.006125 0.00225 -v 0.0065 -0.0075 0.00225 -v 4.8963e-05 -0.0175 -0.0038 -v 0.00109717 -0.0175 -0.00390175 -v 0.00124515 -0.0175 -0.00212635 -v 4.8963e-05 -0.0175 -0.002025 -v 0.00139314 -0.0175 -0.000350945 -v 4.8963e-05 -0.0175 -0.00025 -v 0.0020612 -0.0175 -0.00418508 -v 0.00238149 -0.0175 -0.00241747 -v 0.00270178 -0.0175 -0.00064985 -v 0.00312345 -0.0175 -0.00475 -v 0.00354179 -0.0175 -0.00294714 -v 0.0039601 -0.0175 -0.00114427 -v 0.00391928 -0.0175 -0.0054129 -v 0.00448925 -0.0175 -0.00359324 -v 0.0050592 -0.0175 -0.00177355 -v 0.00429036 -0.0175 -0.00582756 -v 0.00529216 -0.0175 -0.0042984 -v 0.006294 -0.0175 -0.00276926 -v 0.0047034 -0.0175 -0.0064148 -v 0.00501887 -0.0175 -0.00701337 -v 0.0066761 -0.0175 -0.00637318 -v 0.006085 -0.0175 -0.00528385 -v 0.0083333 -0.0175 -0.005733 -v 0.00746649 -0.0175 -0.0041529 -v 0.0053672 -0.0175 -0.008059 -v 0.00712418 -0.0175 -0.00778949 -v 0.0088811 -0.0175 -0.00752 -v 4.8962e-05 -0.0275 -0.00605 -v 0.00106101 -0.0275 -0.00623537 -v 0.00107307 -0.0275 -0.0054575 -v 4.89625e-05 -0.0275 -0.0053 -v 4.8962e-05 -0.0275 -0.0068 -v 0.00104896 -0.0275 -0.0070132 -v 0.0019891 -0.0275 -0.00667967 -v 0.002086 -0.0275 -0.00571477 -v 0.00178137 -0.0275 -0.0075175 -v 0.00251807 -0.0275 -0.0066962 -v 0.00276864 -0.0275 -0.006015 -v 0.00252846 -0.0275 -0.0072587 -v 0.00231247 -0.0275 -0.00831229 -v 0.0032963 -0.0275 -0.0081249 -v 0.0037536 -0.0275 -0.0071326 -v 0.003269 -0.0275 -0.0064222 -v 0.00501887 -0.0275 -0.00701337 -v 0.0047034 -0.0275 -0.0064148 -v 0.00433179 -0.0275 -0.008092 -v 0.0053672 -0.0275 -0.008059 -v 0.00108512 -0.0275 -0.0046796 -v 4.89628e-05 -0.0275 -0.00455 -v 0.00109717 -0.0275 -0.00390175 -v 4.8963e-05 -0.0275 -0.0038 -v 0.0020873 -0.0275 -0.0049554 -v 0.0020612 -0.0275 -0.00418508 -v 0.00104896 0.0225 -0.00232179 -v 4.8963e-05 0.0225 -0.00225 -v 4.8963e-05 0.0224614 -0.00094208 -v 0.00127296 0.0224614 -0.0010328 -v 4.8963e-05 0.0225 0 -v 0.0015038 0.0225 -0.000115125 -v 0.0021601 0.0225 -0.00257594 -v 0.002536 0.0224614 -0.00132308 -v 0.00284678 0.0225 -0.00043327 -v 0.00373546 0.0224614 -0.00180545 -v 0.0032438 0.0225 -0.0030216 -v 0.00408266 0.0225 -0.00092583 -v 0.0048854 0.0224614 -0.0025 -v 0.0043334 0.0225 -0.00371436 -v 0.0052903 0.0225 -0.0016283 -v 0.0059554 0.0224614 -0.00343458 -v 0.0054108 0.0225 -0.00475 -v 0.00635 0.0225 -0.002478 -v 0.0061985 0.0225 -0.0059058 -v 0.007018 0.0224787 -0.0047588 -v 0.0077593 0.0224908 -0.0061814 -v 0.006682 0.0225 -0.00701337 -v 0.0075997 0.0225 -0.0039069 -v 0.008537 0.0225 -0.0055736 -v 0.0082141 0.0224979 -0.0077284 -v 0.0069557 0.0225 -0.0081109 -v 0.009116 0.0225 -0.007419 -v 0.0022885 -0.00195405 -0.0082573 -v 0.0017277 -0.00115243 -0.0074655 -v 0.0017277 5.66e-08 -0.0074655 -v 0.0017277 -0.0023048 -0.0074655 -v 0.00102184 -0.0011524 -0.0070027 -v 0.0010918 -0.0023048 -0.007033 -v 4.8963e-05 -0.0023048 -0.0068001 -v 4.8963e-05 -0.0011524 -0.00680007 -v 0.0009519 2.24e-11 -0.0069725 -v 4.8963e-05 6.26e-10 -0.0068 -v 0.00120133 0.00115236 0.00225003 -v 0.00120133 0.00230474 0.00225 -v 4.8962e-05 0.00230474 0.00225 -v 4.8962e-05 0.00115234 0.00225007 -v 0.0023537 0.00115237 0.00225 -v 0.0023537 0.00230474 0.00225 -v 0.00120133 2.8e-08 0.00225007 -v 0.0023537 4.2e-16 0.00225 -v 4.8962e-05 -5.6e-08 0.00225014 -v 0.00338055 0.00113612 0.00225 -v 0.0034513 4.2e-16 0.00225 -v 0.00119592 0.00333005 0.00225 -v 4.8963e-05 0.0034442 0.00225 -v 0.00120133 -0.00115236 0.00225003 -v 4.8962e-05 -0.00115234 0.00225007 -v 4.8962e-05 -0.00230474 0.00225 -v 0.00120133 -0.00230474 0.00225 -v 0.0023537 -0.00115237 0.00225 -v 0.0023537 -0.00230474 0.00225 -v 0.00338055 -0.00113612 0.00225 -v 0.00119592 -0.00333005 0.00225 -v 4.8963e-05 -0.0034442 0.00225 -v -0.0065 0.003375 -0.0165157 -v -0.0079194 0.0033836 -0.0149475 -v -0.0089295 0.00338968 -0.0131919 -v -0.00789208 0.0047672 -0.0149277 -v -0.0088986 0.00477936 -0.013178 -v -0.0065 0.00475 -0.0164708 -v -0.0095725 0.0033932 -0.0111742 -v -0.009765 0.00339429 -0.00925 -v -0.0095392 0.0047864 -0.0111675 -v -0.009731 0.00478857 -0.00925 -v -0.007871 0.00616027 -0.014888 -v -0.0088701 0.0061845 -0.0131506 -v -0.0088366 0.0075587 -0.0131506 -v -0.0078374 0.0075345 -0.014888 -v -0.0065 0.006125 -0.0164258 -v -0.0065 0.0075 -0.0163808 -v -0.0095061 0.0061986 -0.011154 -v -0.0094726 0.0075728 -0.011154 -v -0.0096965 0.006203 -0.00925 -v -0.009663 0.0075771 -0.00925 -v -0.00104896 0.00438748 -0.02375 -v -0.0011137 0.0053555 -0.02375 -v -0.00148663 0.0075 -0.02375 -v -0.00216496 0.00397147 -0.02375 -v -0.00221962 0.0051977 -0.02375 -v -0.0029119 0.0075 -0.02375 -v -0.00323885 0.00317405 -0.02375 -v -0.00367495 0.005513 -0.02375 -v -0.0042271 0.0075 -0.02375 -v -0.0043992 0.00115128 -0.02375 -v -0.004549 -6.84e-16 -0.02375 -v -0.00552448 -6.84e-16 -0.02375 -v -0.0054496 0.00157564 -0.02375 -v -0.00523 0.00280044 -0.02375 -v -0.0039599 0.00222589 -0.02375 -v -0.0048694 0.003962 -0.02375 -v -0.0051534 0.005731 -0.02375 -v -0.0054374 0.0075 -0.02375 -v -0.0065 5.47e-15 -0.02375 -v -0.0065 0.003375 -0.02375 -v -0.0065 0.00475 -0.02375 -v -0.0065 0.006125 -0.02375 -v -0.0065 0.0075 -0.02375 -v -0.0011137 -0.0053555 -0.02375 -v -0.00104896 -0.00438748 -0.02375 -v -0.00148663 -0.0075 -0.02375 -v -0.00221962 -0.0051977 -0.02375 -v -0.00216496 -0.00397147 -0.02375 -v -0.0029119 -0.0075 -0.02375 -v -0.00367495 -0.005513 -0.02375 -v -0.00323885 -0.00317405 -0.02375 -v -0.0042271 -0.0075 -0.02375 -v -0.0043992 -0.00115128 -0.02375 -v -0.0054496 -0.00157564 -0.02375 -v -0.0039599 -0.00222589 -0.02375 -v -0.00523 -0.00280044 -0.02375 -v -0.0048694 -0.003962 -0.02375 -v -0.0051534 -0.005731 -0.02375 -v -0.0054374 -0.0075 -0.02375 -v -0.0065 -0.002 -0.02375 -v -0.0065 -0.003375 -0.02375 -v -0.0065 -0.00475 -0.02375 -v -0.0065 -0.006125 -0.02375 -v -0.0065 -0.0075 -0.02375 -v -0.00109717 -0.0175 -0.0145982 -v -0.00124515 -0.0175 -0.0163737 -v -0.00139314 -0.0175 -0.018149 -v -0.0020612 -0.0175 -0.014315 -v -0.00238149 -0.0175 -0.0160825 -v -0.00270178 -0.0175 -0.01785 -v -0.00312345 -0.0175 -0.01375 -v -0.00354179 -0.0175 -0.0155529 -v -0.0039601 -0.0175 -0.0173557 -v -0.00391928 -0.0175 -0.013087 -v -0.00448925 -0.0175 -0.0149068 -v -0.0050592 -0.0175 -0.0167264 -v -0.00429036 -0.0175 -0.0126724 -v -0.00529216 -0.0175 -0.0142016 -v -0.006294 -0.0175 -0.0157307 -v -0.0047034 -0.0175 -0.0120852 -v -0.00501887 -0.0175 -0.0114866 -v -0.0066761 -0.0175 -0.0121268 -v -0.006085 -0.0175 -0.0132161 -v -0.0083333 -0.0175 -0.012767 -v -0.00746649 -0.0175 -0.014347 -v -0.0053672 -0.0175 -0.010441 -v -0.00712418 -0.0175 -0.0107105 -v -0.0088811 -0.0175 -0.01098 -v -0.005499 -0.0175 -0.00925 -v -0.007274 -0.0175 -0.00925 -v -0.009049 -0.0175 -0.00925 -v -0.00106101 -0.0275 -0.0122646 -v -0.00107307 -0.0275 -0.0130425 -v -0.00104896 -0.0275 -0.0114868 -v -0.0019891 -0.0275 -0.0118203 -v -0.002086 -0.0275 -0.0127852 -v -0.00178137 -0.0275 -0.0109825 -v -0.00251807 -0.0275 -0.0118038 -v -0.00276864 -0.0275 -0.012485 -v -0.00252846 -0.0275 -0.0112413 -v -0.00231247 -0.0275 -0.0101877 -v -0.0032963 -0.0275 -0.0103751 -v -0.00249896 -0.0275 -0.00925 -v -0.0033171 -0.0275 -0.0092501 -v -0.0037536 -0.0275 -0.0113674 -v -0.003269 -0.0275 -0.0120778 -v -0.00501887 -0.0275 -0.0114866 -v -0.0047034 -0.0275 -0.0120852 -v -0.00433179 -0.0275 -0.010408 -v -0.0053672 -0.0275 -0.010441 -v -0.004509 -0.0275 -0.00925 -v -0.005499 -0.0275 -0.00925 -v -0.00108512 -0.0275 -0.0138204 -v -0.00109717 -0.0275 -0.0145982 -v -0.0020873 -0.0275 -0.0135446 -v -0.0020612 -0.0275 -0.014315 -v -0.00104896 0.0225 -0.0161782 -v -0.00127296 0.0224614 -0.0174672 -v -0.0015038 0.0225 -0.0183849 -v -0.0021601 0.0225 -0.015924 -v -0.002536 0.0224614 -0.017177 -v -0.00284678 0.0225 -0.0180667 -v -0.00373546 0.0224614 -0.0166946 -v -0.0032438 0.0225 -0.0154784 -v -0.00408266 0.0225 -0.017574 -v -0.0048854 0.0224614 -0.016 -v -0.0043334 0.0225 -0.0147856 -v -0.0052903 0.0225 -0.0168717 -v -0.0059554 0.0224614 -0.0150654 -v -0.0054108 0.0225 -0.01375 -v -0.00635 0.0225 -0.016022 -v -0.0061985 0.0225 -0.0125942 -v -0.007018 0.0224787 -0.0137412 -v -0.0077593 0.0224908 -0.0123186 -v -0.006682 0.0225 -0.0114866 -v -0.0075997 0.0225 -0.014593 -v -0.008537 0.0225 -0.0129264 -v -0.0082141 0.0224979 -0.0107716 -v -0.0069557 0.0225 -0.010389 -v -0.009116 0.0225 -0.011081 -v -0.008356 0.0225 -0.00925 -v -0.007049 0.0225 -0.00925 -v -0.009299 0.0225 -0.00925 -v -0.00249896 -0.0018873 -0.00925 -v -0.0022885 -0.00195405 -0.0102427 -v -0.0017277 -0.00115243 -0.0110345 -v -0.0017277 5.66e-08 -0.0110345 -v -0.0017277 -0.0023048 -0.0110345 -v -0.000781428 -0.00161437 -0.011588 -v -0.0010918 -0.0023048 -0.011467 -v -0.00133196 -0.00150598 -0.0113372 -v -0.00139701 -0.00076758 -0.0112958 -v -0.00141894 5.66e-08 -0.0112812 -v -0.00096135 -0.00040932 -0.0115238 -v -0.00104896 -6.98e-16 -0.0114866 -v -0.00074085 -0.0007218 -0.0116002 -v -0.000427704 -0.00092555 -0.0116705 -v -0.0065 0.003375 -0.00198425 -v -0.0079194 0.0033836 -0.0035525 -v -0.0089295 0.00338968 -0.0053081 -v -0.00789208 0.0047672 -0.00357229 -v -0.0088986 0.00477936 -0.00532189 -v -0.0065 0.00475 -0.00202923 -v -0.0095725 0.0033932 -0.0073258 -v -0.0095392 0.0047864 -0.0073325 -v -0.007871 0.00616027 -0.00361186 -v -0.0088701 0.0061845 -0.0053494 -v -0.0078374 0.0075345 -0.00361186 -v -0.0088366 0.0075587 -0.0053494 -v -0.0065 0.006125 -0.0020742 -v -0.0065 0.0075 -0.00211917 -v -0.0095061 0.0061986 -0.007346 -v -0.0094726 0.0075728 -0.007346 -v -0.000902 0.0044184 0.00225 -v -0.0011137 0.0053555 0.00225 -v -0.00149694 0.0075 0.00225 -v -0.00221962 0.0051977 0.00225 -v -0.0029119 0.0075 0.00225 -v -0.00352837 0.00529856 0.00225 -v -0.0042271 0.0075 0.00225 -v -0.0043992 0.00115128 0.00225 -v -0.0052181 0.00148194 0.00225 -v -0.00530456 -1.38e-15 0.00225 -v -0.004549 -1.38e-15 0.00225 -v -0.00503615 0.0027323 0.00225 -v -0.0047612 0.00394096 0.00225 -v -0.0049116 0.00555049 0.00225 -v -0.0054374 0.0075 0.00225 -v -0.0065 1.92e-08 0.00225 -v -0.0065 0.003375 0.00225 -v -0.0065 0.00475 0.00225 -v -0.0065 0.006125 0.00225 -v -0.0065 0.0075 0.00225 -v -0.000902 -0.0044184 0.00225 -v -0.0011137 -0.0053555 0.00225 -v -0.00149694 -0.0075 0.00225 -v -0.00221962 -0.0051977 0.00225 -v -0.0029119 -0.0075 0.00225 -v -0.00352837 -0.00529856 0.00225 -v -0.0042271 -0.0075 0.00225 -v -0.0043992 -0.00115128 0.00225 -v -0.0052181 -0.00148194 0.00225 -v -0.00503615 -0.0027323 0.00225 -v -0.0047612 -0.00394096 0.00225 -v -0.0049116 -0.00555049 0.00225 -v -0.0054374 -0.0075 0.00225 -v -0.0065 -0.002 0.00225 -v -0.0065 -0.003375 0.00225 -v -0.0065 -0.00475 0.00225 -v -0.0065 -0.006125 0.00225 -v -0.0065 -0.0075 0.00225 -v -0.00124515 -0.0175 -0.00212635 -v -0.00109717 -0.0175 -0.00390175 -v -0.00139314 -0.0175 -0.000350945 -v -0.00238149 -0.0175 -0.00241747 -v -0.0020612 -0.0175 -0.00418508 -v -0.00270178 -0.0175 -0.00064985 -v -0.00354179 -0.0175 -0.00294714 -v -0.00312345 -0.0175 -0.00475 -v -0.0039601 -0.0175 -0.00114427 -v -0.00448925 -0.0175 -0.00359324 -v -0.00391928 -0.0175 -0.0054129 -v -0.0050592 -0.0175 -0.00177355 -v -0.00529216 -0.0175 -0.0042984 -v -0.00429036 -0.0175 -0.00582756 -v -0.006294 -0.0175 -0.00276926 -v -0.0047034 -0.0175 -0.0064148 -v -0.006085 -0.0175 -0.00528385 -v -0.0066761 -0.0175 -0.00637318 -v -0.00501887 -0.0175 -0.00701337 -v -0.00746649 -0.0175 -0.0041529 -v -0.0083333 -0.0175 -0.005733 -v -0.0053672 -0.0175 -0.008059 -v -0.00712418 -0.0175 -0.00778949 -v -0.0088811 -0.0175 -0.00752 -v -0.00107307 -0.0275 -0.0054575 -v -0.00106101 -0.0275 -0.00623537 -v -0.00104896 -0.0275 -0.0070132 -v -0.002086 -0.0275 -0.00571477 -v -0.0019891 -0.0275 -0.00667967 -v -0.00178137 -0.0275 -0.0075175 -v -0.00251807 -0.0275 -0.0066962 -v -0.00276864 -0.0275 -0.006015 -v -0.00252846 -0.0275 -0.0072587 -v -0.00231247 -0.0275 -0.00831229 -v -0.0032963 -0.0275 -0.0081249 -v -0.003269 -0.0275 -0.0064222 -v -0.0037536 -0.0275 -0.0071326 -v -0.0047034 -0.0275 -0.0064148 -v -0.00501887 -0.0275 -0.00701337 -v -0.00433179 -0.0275 -0.008092 -v -0.0053672 -0.0275 -0.008059 -v -0.00108512 -0.0275 -0.0046796 -v -0.00109717 -0.0275 -0.00390175 -v -0.0020873 -0.0275 -0.0049554 -v -0.0020612 -0.0275 -0.00418508 -v -0.00104896 0.0225 -0.00232179 -v -0.00127296 0.0224614 -0.0010328 -v -0.0015038 0.0225 -0.000115125 -v -0.0021601 0.0225 -0.00257594 -v -0.002536 0.0224614 -0.00132308 -v -0.00284678 0.0225 -0.00043327 -v -0.0032438 0.0225 -0.0030216 -v -0.00373546 0.0224614 -0.00180545 -v -0.00408266 0.0225 -0.00092583 -v -0.0043334 0.0225 -0.00371436 -v -0.0048854 0.0224614 -0.0025 -v -0.0052903 0.0225 -0.0016283 -v -0.0054108 0.0225 -0.00475 -v -0.0059554 0.0224614 -0.00343458 -v -0.00635 0.0225 -0.002478 -v -0.0061985 0.0225 -0.0059058 -v -0.006682 0.0225 -0.00701337 -v -0.0077593 0.0224908 -0.0061814 -v -0.007018 0.0224787 -0.0047588 -v -0.008537 0.0225 -0.0055736 -v -0.0075997 0.0225 -0.0039069 -v -0.0069557 0.0225 -0.0081109 -v -0.0082141 0.0224979 -0.0077284 -v -0.009116 0.0225 -0.007419 -v -0.0022885 -0.00195405 -0.0082573 -v -0.0017277 5.66e-08 -0.0074655 -v -0.0017277 -0.00115243 -0.0074655 -v -0.0017277 -0.0023048 -0.0074655 -v -0.00102184 -0.0011524 -0.0070027 -v -0.0010918 -0.0023048 -0.007033 -v -0.0009519 2.24e-11 -0.0069725 -v -0.00120133 0.00115236 0.00225003 -v -0.00120133 0.00230474 0.00225 -v -0.0023537 0.00115237 0.00225 -v -0.0023537 0.00230474 0.00225 -v -0.00120133 2.8e-08 0.00225007 -v -0.0023537 4.2e-16 0.00225 -v -0.00338055 0.00113612 0.00225 -v -0.0034513 4.2e-16 0.00225 -v -0.00119592 0.00333005 0.00225 -v -0.00120133 -0.00115236 0.00225003 -v -0.00120133 -0.00230474 0.00225 -v -0.0023537 -0.00115237 0.00225 -v -0.0023537 -0.00230474 0.00225 -v -0.00338055 -0.00113612 0.00225 -v -0.00119592 -0.00333005 0.00225 -v 0.0039486 0.00224557 -0.01485 -v 0.0039486 0.00224557 -0.0143 -v 0.0032389 0.00317894 -0.0146142 -v 0.0032438 0.00317894 -0.0154784 -v 0.0039486 -0.00224557 -0.01485 -v 0.0032438 -0.00317894 -0.0154784 -v 0.0032389 -0.00317894 -0.0146142 -v 0.0039486 -0.00224557 -0.0143 -v 0.0088096 9.5e-11 0.00225 -v 0.0120291 9.5e-11 0.00225 -v -0.0039486 0.00224557 -0.01485 -v -0.0032438 0.00317894 -0.0154784 -v -0.0032389 0.00317894 -0.0146142 -v -0.0039486 0.00224557 -0.0143 -v -0.0039486 -0.00224557 -0.01485 -v -0.0039486 -0.00224557 -0.0143 -v -0.0032389 -0.00317894 -0.0146142 -v -0.0032438 -0.00317894 -0.0154784 -v -0.0120291 9.5e-11 0.00225 -v -0.0088096 9.5e-11 0.00225 -v 0.00338055 0.00113612 -0.01375 -v 0.0044074 0.00111986 -0.01375 -v 0.00345133 -3.26e-18 -0.01375 -v 0.004549 -3.91e-18 -0.01375 -v 0.001191 0.00333005 -0.01375 -v 4.8963e-05 0.00340234 -0.01375 -v 0.00118068 0.00435537 -0.01375 -v 4.8963e-05 0.0044999 -0.01375 -v 4.8963e-05 0.0044999 -0.015 -v 0.00118068 0.00435537 -0.015 -v 0.0011137 0.00435537 -0.0161782 -v 4.8963e-05 0.0044999 -0.01625 -v 0.002302 0.00389537 -0.015 -v 0.00227915 0.00389537 -0.015924 -v 0.0044074 0.00111986 -0.0143 -v 0.004549 -3.91e-18 -0.014375 -v 0.0011137 0.0043554 -0.017486 -v 4.8963e-05 0.0045 -0.017558 -v 0.000902 0.0044184 -0.0187562 -v 4.8963e-05 0.0045 -0.0188659 -v 0.00227915 0.0038954 -0.017232 -v 0.00216496 0.00397147 -0.0184252 -v 0.0032438 0.00317897 -0.0167863 -v 0.0032438 0.003179 -0.018094 -v 4.8963e-05 0.0045 -0.020494 -v 0.000902 0.0044184 -0.0203843 -v 0.000902 0.0044184 -0.0220123 -v 4.8963e-05 0.0045 -0.022122 -v 0.00216496 0.00397147 -0.0201824 -v 0.00216496 0.00397147 -0.0219396 -v 0.00324218 0.00317736 -0.0199606 -v 0.00324054 0.00317573 -0.021827 -v 0.00338055 -0.00113612 -0.01375 -v 0.0044074 -0.00111986 -0.01375 -v 0.001191 -0.00333005 -0.01375 -v 4.8963e-05 -0.00340234 -0.01375 -v 0.00118068 -0.00435537 -0.01375 -v 4.8963e-05 -0.0044999 -0.01375 -v 0.00118068 -0.00435537 -0.015 -v 4.8963e-05 -0.0044999 -0.015 -v 0.0011137 -0.00435537 -0.0161782 -v 4.8963e-05 -0.0044999 -0.01625 -v 0.002302 -0.00389537 -0.015 -v 0.00227915 -0.00389537 -0.015924 -v 0.0044074 -0.00111986 -0.0143 -v 0.0011137 -0.0043554 -0.017486 -v 4.8963e-05 -0.0045 -0.017558 -v 0.000902 -0.0044184 -0.0187562 -v 4.8963e-05 -0.0045 -0.0188659 -v 0.00227915 -0.0038954 -0.017232 -v 0.00216496 -0.00397147 -0.0184252 -v 0.0032438 -0.00317897 -0.0167863 -v 0.0032438 -0.003179 -0.018094 -v 0.000902 -0.0044184 -0.0203843 -v 4.8963e-05 -0.0045 -0.020494 -v 0.000902 -0.0044184 -0.0220123 -v 4.8963e-05 -0.0045 -0.022122 -v 0.00216496 -0.00397147 -0.0201824 -v 0.00216496 -0.00397147 -0.0219396 -v 0.00324218 -0.00317736 -0.0199606 -v 0.00324054 -0.00317573 -0.021827 -v 4.8963e-05 0.0065 -0.01625 -v 0.00104896 0.0065 -0.0161782 -v 0.00104896 0.0085771 -0.0161782 -v 4.8963e-05 0.0085771 -0.01625 -v 0.0021601 0.0065 -0.015924 -v 0.0021601 0.0085771 -0.015924 -v 0.0032438 0.0065 -0.0154784 -v 0.0032438 0.0085771 -0.0154784 -v 0.0043334 0.0065 -0.0147856 -v 0.0043334 0.0085771 -0.0147856 -v 0.0054108 0.0065 -0.01375 -v 0.0054108 0.0085771 -0.01375 -v 0.0061985 0.0065 -0.0125942 -v 0.006682 0.0065 -0.0114866 -v 0.006682 0.0085771 -0.0114866 -v 0.0061985 0.0085771 -0.0125942 -v 0.0069557 0.0065 -0.010389 -v 0.0069557 0.0085771 -0.010389 -v 0.007049 0.0065 -0.00925 -v 0.007049 0.0085771 -0.00925 -v 0.00104896 0.0065 -0.0023218 -v 4.8963e-05 0.0065 -0.00225 -v 4.8963e-05 0.0085771 -0.00225 -v 0.00104896 0.0085771 -0.0023218 -v 0.0021601 0.0065 -0.00257594 -v 0.0021601 0.0085771 -0.00257594 -v 0.0032438 0.0065 -0.0030216 -v 0.0032438 0.0085771 -0.0030216 -v 0.0043334 0.0065 -0.00371436 -v 0.0043334 0.0085771 -0.00371436 -v 0.0054108 0.0065 -0.00475 -v 0.0054108 0.0085771 -0.00475 -v 0.006682 0.0065 -0.00701337 -v 0.0061985 0.0065 -0.00590579 -v 0.0061985 0.0085771 -0.00590579 -v 0.006682 0.0085771 -0.00701337 -v 0.0069557 0.0065 -0.0081109 -v 0.0069557 0.0085771 -0.0081109 -v -0.00338055 0.00113612 -0.01375 -v -0.0044074 0.00111986 -0.01375 -v -0.00345133 -3.26e-18 -0.01375 -v -0.004549 -3.91e-18 -0.01375 -v -0.001191 0.00333005 -0.01375 -v -0.00118068 0.00435537 -0.01375 -v -0.00118068 0.00435537 -0.015 -v -0.0011137 0.00435537 -0.0161782 -v -0.002302 0.00389537 -0.015 -v -0.00227915 0.00389537 -0.015924 -v -0.0044074 0.00111986 -0.0143 -v -0.004549 -3.91e-18 -0.014375 -v -0.0011137 0.0043554 -0.017486 -v -0.000902 0.0044184 -0.0187562 -v -0.00227915 0.0038954 -0.017232 -v -0.00216496 0.00397147 -0.0184252 -v -0.0032438 0.00317897 -0.0167863 -v -0.0032438 0.003179 -0.018094 -v -0.000902 0.0044184 -0.0203843 -v -0.000902 0.0044184 -0.0220123 -v -0.00216496 0.00397147 -0.0201824 -v -0.00216496 0.00397147 -0.0219396 -v -0.00324218 0.00317736 -0.0199606 -v -0.00324054 0.00317573 -0.021827 -v -0.00338055 -0.00113612 -0.01375 -v -0.0044074 -0.00111986 -0.01375 -v -0.001191 -0.00333005 -0.01375 -v -0.00118068 -0.00435537 -0.01375 -v -0.00118068 -0.00435537 -0.015 -v -0.0011137 -0.00435537 -0.0161782 -v -0.002302 -0.00389537 -0.015 -v -0.00227915 -0.00389537 -0.015924 -v -0.0044074 -0.00111986 -0.0143 -v -0.0011137 -0.0043554 -0.017486 -v -0.000902 -0.0044184 -0.0187562 -v -0.00227915 -0.0038954 -0.017232 -v -0.00216496 -0.00397147 -0.0184252 -v -0.0032438 -0.00317897 -0.0167863 -v -0.0032438 -0.003179 -0.018094 -v -0.000902 -0.0044184 -0.0203843 -v -0.000902 -0.0044184 -0.0220123 -v -0.00216496 -0.00397147 -0.0201824 -v -0.00216496 -0.00397147 -0.0219396 -v -0.00324218 -0.00317736 -0.0199606 -v -0.00324054 -0.00317573 -0.021827 -v -0.00104896 0.0065 -0.0161782 -v -0.00104896 0.0085771 -0.0161782 -v -0.0021601 0.0065 -0.015924 -v -0.0021601 0.0085771 -0.015924 -v -0.0032438 0.0065 -0.0154784 -v -0.0032438 0.0085771 -0.0154784 -v -0.0043334 0.0065 -0.0147856 -v -0.0043334 0.0085771 -0.0147856 -v -0.0054108 0.0065 -0.01375 -v -0.0054108 0.0085771 -0.01375 -v -0.006682 0.0065 -0.0114866 -v -0.0061985 0.0065 -0.0125942 -v -0.0061985 0.0085771 -0.0125942 -v -0.006682 0.0085771 -0.0114866 -v -0.0069557 0.0065 -0.010389 -v -0.0069557 0.0085771 -0.010389 -v -0.007049 0.0065 -0.00925 -v -0.007049 0.0085771 -0.00925 -v -0.00104896 0.0065 -0.0023218 -v -0.00104896 0.0085771 -0.0023218 -v -0.0021601 0.0065 -0.00257594 -v -0.0021601 0.0085771 -0.00257594 -v -0.0032438 0.0065 -0.0030216 -v -0.0032438 0.0085771 -0.0030216 -v -0.0043334 0.0065 -0.00371436 -v -0.0043334 0.0085771 -0.00371436 -v -0.0054108 0.0065 -0.00475 -v -0.0054108 0.0085771 -0.00475 -v -0.0061985 0.0065 -0.00590579 -v -0.006682 0.0065 -0.00701337 -v -0.006682 0.0085771 -0.00701337 -v -0.0061985 0.0085771 -0.00590579 -v -0.0069557 0.0065 -0.0081109 -v -0.0069557 0.0085771 -0.0081109 -v 0.004549 -3.91e-18 -0.01485 -v 0.0044074 -0.00111986 -0.01485 -v 0.00391928 -0.0195 -0.013087 -v 0.00312345 -0.0195 -0.01375 -v 0.00391928 -0.0215 -0.013087 -v 0.00312345 -0.0215 -0.01375 -v 0.00391928 -0.0235 -0.013087 -v 0.00312345 -0.0235 -0.01375 -v 0.00391928 -0.0255 -0.013087 -v 0.00312345 -0.0255 -0.01375 -v 0.00429036 -0.0195 -0.0126724 -v 0.00429036 -0.0215 -0.0126724 -v 0.00429036 -0.0235 -0.0126724 -v 0.00429036 -0.0255 -0.0126724 -v 0.00170827 -0.00324768 -0.0074478 -v 0.0022838 -0.00293108 -0.008247 -v 0.0022791 -0.0039081 -0.0082366 -v 0.00168883 -0.00419057 -0.00743008 -v 0.00249896 -0.00377459 -0.00925 -v 0.00249896 -0.00283094 -0.00925 -v -0.004549 -3.91e-18 -0.01485 -v -0.0044074 0.00111986 -0.01485 -v -0.00170827 -0.00324768 -0.0110522 -v -0.0022838 -0.00293108 -0.010253 -v -0.0022791 -0.0039081 -0.0102634 -v -0.00168883 -0.00419057 -0.01107 -v -0.00249896 -0.00377459 -0.00925 -v -0.00249896 -0.00283094 -0.00925 -v -0.00391928 -0.0195 -0.0054129 -v -0.00312345 -0.0195 -0.00475 -v -0.00391928 -0.0215 -0.0054129 -v -0.00312345 -0.0215 -0.00475 -v -0.00391928 -0.0235 -0.0054129 -v -0.00312345 -0.0235 -0.00475 -v -0.00391928 -0.0255 -0.0054129 -v -0.00312345 -0.0255 -0.00475 -v -0.00429036 -0.0195 -0.00582756 -v -0.00429036 -0.0215 -0.00582756 -v -0.00429036 -0.0235 -0.00582756 -v -0.00429036 -0.0255 -0.00582756 -v -0.0120291 -0.0075 0.00225 -v -0.0088096 -0.0075 0.00225 -v -0.0088096 -0.006 0.00225 -v -0.0120291 -0.006 0.00225 -v -0.0088096 -0.0045 0.00225 -v -0.0120291 -0.0045 0.00225 -v -0.0088096 -0.003 0.00225 -v -0.0120291 -0.003 0.00225 -v -0.0088096 -0.0015 0.00225 -v -0.0120291 -0.0015 0.00225 -v 0.0044074 0.00111986 -0.01485 -v 0.0044074 0.00111989 -0.0161579 -v 0.004549 2.82e-08 -0.0161579 -v 0.004549 5.64e-08 -0.0174658 -v 0.0043992 0.00115128 -0.0176229 -v 0.0039486 0.0022456 -0.0161579 -v 0.0039599 0.00222589 -0.01778 -v 0.0043992 0.00115128 -0.0196448 -v 0.004549 3.78e-08 -0.0195396 -v 0.0043992 0.00115128 -0.0216668 -v 0.004549 1.92e-08 -0.0216134 -v 0.0039599 0.00222589 -0.01975 -v 0.0039599 0.00222589 -0.02172 -v 0.0065 0.003375 0.00040305 -v 0.0065 0.00475 0.00037292 -v 0.0065 0.006125 0.000342788 -v 0.0065 0.0075 0.000312658 -v 0.0022958 -0.005204 -0.0082745 -v 0.0017351 -0.00534529 -0.0074738 -v 0.00231247 -0.0075 -0.00831229 -v 0.00178137 -0.0075 -0.0075175 -v 0.00249896 -0.0051373 -0.00925 -v 0.00249896 -0.0075 -0.00925 -v 0.00231247 -0.01 -0.00831229 -v 0.00178137 -0.01 -0.0075175 -v 0.00231247 -0.0125 -0.00831229 -v 0.00178137 -0.0125 -0.0075175 -v 0.00231247 -0.015 -0.00831229 -v 0.00178137 -0.015 -0.0075175 -v 0.00231247 -0.0175 -0.00831229 -v 0.00178137 -0.0175 -0.0075175 -v 0.00249896 -0.01 -0.00925 -v 0.00249896 -0.0125 -0.00925 -v 0.00249896 -0.015 -0.00925 -v 0.00249896 -0.0175 -0.00925 -v 0.00231247 -0.0195 -0.00831229 -v 0.00178137 -0.0195 -0.0075175 -v 0.00231247 -0.0215 -0.00831229 -v 0.00178137 -0.0215 -0.0075175 -v 0.00231247 -0.0235 -0.00831229 -v 0.00178137 -0.0235 -0.0075175 -v 0.00231247 -0.0255 -0.00831229 -v 0.00178137 -0.0255 -0.0075175 -v 0.00249896 -0.0195 -0.00925 -v 0.00249896 -0.0215 -0.00925 -v 0.00249896 -0.0235 -0.00925 -v 0.00249896 -0.0255 -0.00925 -v 0.025665 9.5e-11 -0.0068919 -v 0.0260093 9.5e-11 -0.00925 -v 0.024661 9.5e-11 -0.0047304 -v 0.0230815 9.5e-11 -0.0029463 -v 0.0210577 9.5e-11 -0.00168803 -v 0.0194085 9.5e-11 -0.0009687 -v 0.0177593 9.5e-11 -0.000249369 -v 0.025665 -0.0015 -0.0068919 -v 0.0260093 -0.0015 -0.00925 -v 0.025665 -0.003 -0.0068919 -v 0.0260093 -0.003 -0.00925 -v 0.025665 -0.0045 -0.0068919 -v 0.0260093 -0.0045 -0.00925 -v 0.025665 -0.006 -0.0068919 -v 0.0260093 -0.006 -0.00925 -v 0.025665 -0.0075 -0.0068919 -v 0.0260093 -0.0075 -0.00925 -v 0.024661 -0.0015 -0.0047304 -v 0.024661 -0.003 -0.0047304 -v 0.024661 -0.0045 -0.0047304 -v 0.024661 -0.006 -0.0047304 -v 0.024661 -0.0075 -0.0047304 -v 0.0230815 -0.0015 -0.0029463 -v 0.0230815 -0.003 -0.0029463 -v 0.0230815 -0.0045 -0.0029463 -v 0.0230815 -0.006 -0.0029463 -v 0.0230815 -0.0075 -0.0029463 -v 0.0210577 -0.0015 -0.00168803 -v 0.0210577 -0.003 -0.00168803 -v 0.0210577 -0.0045 -0.00168803 -v 0.0210577 -0.006 -0.00168803 -v 0.0210577 -0.0075 -0.00168803 -v 0.0194085 -0.0015 -0.0009687 -v 0.0194085 -0.003 -0.0009687 -v 0.0194085 -0.0045 -0.0009687 -v 0.0194085 -0.006 -0.0009687 -v 0.0194085 -0.0075 -0.0009687 -v 0.0177593 -0.0015 -0.000249369 -v 0.0177593 -0.003 -0.000249369 -v 0.0177593 -0.0045 -0.000249369 -v 0.0177593 -0.006 -0.000249369 -v 0.0177593 -0.0075 -0.000249369 -v 0.0139774 9.5e-11 0.00140021 -v 0.0158684 9.5e-11 0.00057542 -v 0.0139774 -0.0015 0.00140021 -v 0.0158684 -0.0015 0.00057542 -v 0.0139774 -0.003 0.00140021 -v 0.0158684 -0.003 0.00057542 -v 0.0139774 -0.0045 0.00140021 -v 0.0158684 -0.0045 0.00057542 -v 0.0139774 -0.006 0.00140021 -v 0.0158684 -0.006 0.00057542 -v 0.0139774 -0.0075 0.00140021 -v 0.0158684 -0.0075 0.00057542 -v -0.0065 0.003375 -0.018903 -v -0.0065 0.003375 -0.0212904 -v -0.0065 0.00475 -0.018873 -v -0.0065 0.00475 -0.021275 -v -0.0065 0.006125 -0.0188428 -v -0.0065 0.006125 -0.0212598 -v -0.0065 0.0075 -0.0188127 -v -0.0065 0.0075 -0.0212445 -v -0.0022958 -0.005204 -0.0102255 -v -0.0017351 -0.00534529 -0.0110262 -v -0.00231247 -0.0075 -0.0101877 -v -0.00178137 -0.0075 -0.0109825 -v -0.00249896 -0.0051373 -0.00925 -v -0.00249896 -0.0075 -0.00925 -v -0.0044074 -0.00111986 -0.01485 -v -0.0044074 -0.00111989 -0.0161579 -v -0.004549 2.82e-08 -0.0161579 -v -0.004549 5.64e-08 -0.0174658 -v -0.0043992 -0.00115128 -0.0176229 -v -0.0039486 -0.0022456 -0.0161579 -v -0.0039599 -0.00222589 -0.01778 -v -0.0043992 -0.00115128 -0.0196448 -v -0.004549 3.78e-08 -0.0195396 -v -0.0043992 -0.00115128 -0.0216668 -v -0.004549 1.92e-08 -0.0216134 -v -0.0039599 -0.00222589 -0.01975 -v -0.0039599 -0.00222589 -0.02172 -v -0.00231247 -0.01 -0.0101877 -v -0.00178137 -0.01 -0.0109825 -v -0.00231247 -0.0125 -0.0101877 -v -0.00178137 -0.0125 -0.0109825 -v -0.00231247 -0.015 -0.0101877 -v -0.00178137 -0.015 -0.0109825 -v -0.00231247 -0.0175 -0.0101877 -v -0.00178137 -0.0175 -0.0109825 -v -0.00249896 -0.01 -0.00925 -v -0.00249896 -0.0125 -0.00925 -v -0.00249896 -0.015 -0.00925 -v -0.00249896 -0.0175 -0.00925 -v -0.00231247 -0.0195 -0.0101877 -v -0.00178137 -0.0195 -0.0109825 -v -0.00231247 -0.0215 -0.0101877 -v -0.00178137 -0.0215 -0.0109825 -v -0.00231247 -0.0235 -0.0101877 -v -0.00178137 -0.0235 -0.0109825 -v -0.00231247 -0.0255 -0.0101877 -v -0.00178137 -0.0255 -0.0109825 -v -0.00249896 -0.0195 -0.00925 -v -0.00249896 -0.0215 -0.00925 -v -0.00249896 -0.0235 -0.00925 -v -0.00249896 -0.0255 -0.00925 -v -0.0139919 9.5e-11 -0.020182 -v -0.0159418 9.5e-11 -0.0192534 -v -0.0139919 -0.0015 -0.020182 -v -0.0159418 -0.0015 -0.0192534 -v -0.0139919 -0.003 -0.020182 -v -0.0159418 -0.003 -0.0192534 -v -0.0139919 -0.0045 -0.020182 -v -0.0159418 -0.0045 -0.0192534 -v -0.0139919 -0.006 -0.020182 -v -0.0159418 -0.006 -0.0192534 -v -0.0139919 -0.0075 -0.020182 -v -0.0159418 -0.0075 -0.0192534 -v -0.025665 9.5e-11 -0.0116081 -v -0.0260093 9.5e-11 -0.00925 -v -0.024661 9.5e-11 -0.0137696 -v -0.0230815 9.5e-11 -0.0155537 -v -0.0210577 9.5e-11 -0.016812 -v -0.01945 9.5e-11 -0.0175827 -v -0.0177593 9.5e-11 -0.0183878 -v -0.025665 -0.0015 -0.0116081 -v -0.0260093 -0.0015 -0.00925 -v -0.025665 -0.003 -0.0116081 -v -0.0260093 -0.003 -0.00925 -v -0.025665 -0.0045 -0.0116081 -v -0.0260093 -0.0045 -0.00925 -v -0.025665 -0.006 -0.0116081 -v -0.0260093 -0.006 -0.00925 -v -0.025665 -0.0075 -0.0116081 -v -0.0260093 -0.0075 -0.00925 -v -0.024661 -0.0015 -0.0137696 -v -0.024661 -0.003 -0.0137696 -v -0.024661 -0.0045 -0.0137696 -v -0.024661 -0.006 -0.0137696 -v -0.024661 -0.0075 -0.0137696 -v -0.0230815 -0.0015 -0.0155537 -v -0.0230815 -0.003 -0.0155537 -v -0.0230815 -0.0045 -0.0155537 -v -0.0230815 -0.006 -0.0155537 -v -0.0230815 -0.0075 -0.0155537 -v -0.0210577 -0.0015 -0.016812 -v -0.0210577 -0.003 -0.016812 -v -0.0210577 -0.0045 -0.016812 -v -0.0210577 -0.006 -0.016812 -v -0.0210577 -0.0075 -0.016812 -v -0.01945 -0.0015 -0.0175827 -v -0.01945 -0.003 -0.0175827 -v -0.01945 -0.0045 -0.0175827 -v -0.01945 -0.006 -0.0175827 -v -0.01945 -0.0075 -0.0175827 -v -0.0177593 -0.0015 -0.0183878 -v -0.0177593 -0.003 -0.0183878 -v -0.0177593 -0.0045 -0.0183878 -v -0.0177593 -0.006 -0.0183878 -v -0.0177593 -0.0075 -0.0183878 -v 0.00170827 -0.00324768 -0.0110522 -v 0.00168883 -0.00419057 -0.01107 -v 0.0022791 -0.0039081 -0.0102634 -v 0.0022838 -0.00293108 -0.010253 -v 0.00312345 -0.0195 -0.00475 -v 0.00391928 -0.0195 -0.0054129 -v 0.00312345 -0.0215 -0.00475 -v 0.00391928 -0.0215 -0.0054129 -v 0.00312345 -0.0235 -0.00475 -v 0.00391928 -0.0235 -0.0054129 -v 0.00312345 -0.0255 -0.00475 -v 0.00391928 -0.0255 -0.0054129 -v 0.00429036 -0.0195 -0.00582756 -v 0.00429036 -0.0215 -0.00582756 -v 0.00429036 -0.0235 -0.00582756 -v 0.00429036 -0.0255 -0.00582756 -v 0.0120291 -0.0075 0.00225 -v 0.0120291 -0.006 0.00225 -v 0.0088096 -0.006 0.00225 -v 0.0088096 -0.0075 0.00225 -v 0.0120291 -0.0045 0.00225 -v 0.0088096 -0.0045 0.00225 -v 0.0120291 -0.003 0.00225 -v 0.0088096 -0.003 0.00225 -v 0.0120291 -0.0015 0.00225 -v 0.0088096 -0.0015 0.00225 -v -0.00312345 -0.0195 -0.01375 -v -0.00391928 -0.0195 -0.013087 -v -0.00312345 -0.0215 -0.01375 -v -0.00391928 -0.0215 -0.013087 -v -0.00312345 -0.0235 -0.01375 -v -0.00391928 -0.0235 -0.013087 -v -0.00312345 -0.0255 -0.01375 -v -0.00391928 -0.0255 -0.013087 -v -0.00429036 -0.0195 -0.0126724 -v -0.00429036 -0.0215 -0.0126724 -v -0.00429036 -0.0235 -0.0126724 -v -0.00429036 -0.0255 -0.0126724 -v -0.00170827 -0.00324768 -0.0074478 -v -0.00168883 -0.00419057 -0.00743008 -v -0.0022791 -0.0039081 -0.0082366 -v -0.0022838 -0.00293108 -0.008247 -v 0.00104896 2.83e-08 -0.012725 -v 0.00097284 0.00038271 -0.012725 -v 0.00096135 0.00040932 -0.0115238 -v 0.00075607 0.00070714 -0.012725 -v 0.00074085 0.0007218 -0.0116002 -v 0.000431646 0.0009239 -0.012725 -v 0.000427704 0.00092555 -0.0116705 -v 4.8963e-05 0.00100003 -0.012725 -v 4.8963e-05 0.00100006 -0.0116999 -v 4.8963e-05 0.0075 -0.0188659 -v 0.00149694 0.0075 -0.0187562 -v 0.00149694 0.0075 -0.0203843 -v 4.8963e-05 0.0075 -0.020494 -v 0.00149694 0.0075 -0.0220123 -v 4.8963e-05 0.0075 -0.022122 -v 0.0029119 0.0075 -0.0184298 -v 0.0029119 0.0075 -0.0201854 -v 0.0029119 0.0075 -0.021941 -v 0.0042271 0.0075 -0.0179107 -v 0.0042271 0.0075 -0.0198377 -v 0.0042271 0.0075 -0.0217646 -v 0.0054374 0.0075 -0.0172143 -v 0.0054374 0.0075 -0.019371 -v 0.0054374 0.0075 -0.0215278 -v 0.0065 0.0075 -0.0188127 -v 0.0065 0.0075 -0.0212445 -v 0.00107038 -0.00334614 -0.0114768 -v 4.8963e-05 -0.0034024 -0.0117 -v 0.00104896 -0.00438748 -0.0114866 -v 4.8963e-05 -0.0045 -0.0117 -v 4.8963e-05 -0.0055 -0.0117 -v 0.00104896 -0.0053875 -0.0114866 -v 4.8962e-05 -0.0075 -0.0117 -v 0.00104896 -0.0075 -0.0114868 -v 0.0017351 -0.00534529 -0.0110262 -v 0.00178137 -0.0075 -0.0109825 -v 4.8962e-05 -0.01 -0.0117 -v 0.00104896 -0.01 -0.0114868 -v 4.8962e-05 -0.0125 -0.0117 -v 0.00104896 -0.0125 -0.0114868 -v 4.8962e-05 -0.015 -0.0117 -v 0.00104896 -0.015 -0.0114868 -v 4.8962e-05 -0.0175 -0.0117 -v 0.00104896 -0.0175 -0.0114868 -v 0.00178137 -0.01 -0.0109825 -v 0.00178137 -0.0125 -0.0109825 -v 0.00178137 -0.015 -0.0109825 -v 0.00178137 -0.0175 -0.0109825 -v 0.00139314 -0.0075 -0.018149 -v 0.00139314 -0.01 -0.018149 -v 4.8963e-05 -0.01 -0.01825 -v 4.8963e-05 -0.0075 -0.01825 -v 0.00139314 -0.0125 -0.018149 -v 4.8963e-05 -0.0125 -0.01825 -v 0.00139314 -0.015 -0.018149 -v 4.8963e-05 -0.015 -0.01825 -v 0.00270178 -0.0075 -0.01785 -v 0.00270178 -0.01 -0.01785 -v 0.00270178 -0.0125 -0.01785 -v 0.00270178 -0.015 -0.01785 -v 0.0039601 -0.0075 -0.0173557 -v 0.0039601 -0.01 -0.0173557 -v 0.0039601 -0.0125 -0.0173557 -v 0.0039601 -0.015 -0.0173557 -v 0.0050592 -0.0075 -0.0167264 -v 0.0050592 -0.01 -0.0167264 -v 0.0050592 -0.0125 -0.0167264 -v 0.0050592 -0.015 -0.0167264 -v 0.006294 -0.0075 -0.0157307 -v 0.006294 -0.01 -0.0157307 -v 0.006294 -0.0125 -0.0157307 -v 0.006294 -0.015 -0.0157307 -v 0.0083333 -0.0075 -0.012767 -v 0.0083333 -0.01 -0.012767 -v 0.00746649 -0.01 -0.014347 -v 0.00746649 -0.0075 -0.014347 -v 0.0083333 -0.0125 -0.012767 -v 0.00746649 -0.0125 -0.014347 -v 0.0083333 -0.015 -0.012767 -v 0.00746649 -0.015 -0.014347 -v 0.0088811 -0.0075 -0.01098 -v 0.0088811 -0.01 -0.01098 -v 0.0088811 -0.0125 -0.01098 -v 0.0088811 -0.015 -0.01098 -v 0.009049 -0.0075 -0.00925 -v 0.009049 -0.01 -0.00925 -v 0.009049 -0.0125 -0.00925 -v 0.009049 -0.015 -0.00925 -v 4.8962e-05 -0.0195 -0.0117 -v 0.00104896 -0.0195 -0.0114868 -v 4.8962e-05 -0.0215 -0.0117 -v 0.00104896 -0.0215 -0.0114868 -v 4.8962e-05 -0.0235 -0.0117 -v 0.00104896 -0.0235 -0.0114868 -v 4.8962e-05 -0.0255 -0.0117 -v 0.00104896 -0.0255 -0.0114868 -v 0.00178137 -0.0195 -0.0109825 -v 0.00178137 -0.0215 -0.0109825 -v 0.00178137 -0.0235 -0.0109825 -v 0.00178137 -0.0255 -0.0109825 -v 0.00501887 -0.0195 -0.0114866 -v 0.0047034 -0.0195 -0.0120852 -v 0.00501887 -0.0215 -0.0114866 -v 0.0047034 -0.0215 -0.0120852 -v 0.00501887 -0.0235 -0.0114866 -v 0.0047034 -0.0235 -0.0120852 -v 0.00501887 -0.0255 -0.0114866 -v 0.0047034 -0.0255 -0.0120852 -v 0.0053672 -0.0195 -0.010441 -v 0.0053672 -0.0215 -0.010441 -v 0.0053672 -0.0235 -0.010441 -v 0.0053672 -0.0255 -0.010441 -v 0.005499 -0.0195 -0.00925 -v 0.005499 -0.0215 -0.00925 -v 0.005499 -0.0235 -0.00925 -v 0.005499 -0.0255 -0.00925 -v 0.00109717 -0.0195 -0.0145982 -v 4.8963e-05 -0.0195 -0.0147 -v 0.00109717 -0.0215 -0.0145982 -v 4.8963e-05 -0.0215 -0.0147 -v 0.00109717 -0.0235 -0.0145982 -v 4.8963e-05 -0.0235 -0.0147 -v 0.00109717 -0.0255 -0.0145982 -v 4.8963e-05 -0.0255 -0.0147 -v 0.0020612 -0.0195 -0.014315 -v 0.0020612 -0.0215 -0.014315 -v 0.0020612 -0.0235 -0.014315 -v 0.0020612 -0.0255 -0.014315 -v 0.00149327 0.0084994 -0.018732 -v 4.8963e-05 0.0085009 -0.0188414 -v 0.00290464 0.0084994 -0.0184065 -v 0.0042165 0.0084994 -0.0178887 -v 0.0054374 0.0085 -0.0172143 -v 0.0064836 0.0084994 -0.0163628 -v 0.0078177 0.0085339 -0.0148738 -v 0.0088143 0.0085581 -0.0131407 -v 0.0094487 0.0085722 -0.0111492 -v 0.0096393 0.0085474 -0.00925 -v 4.8963e-05 0.0112315 -0.0187748 -v 0.00149538 0.0112995 -0.0186627 -v 4.8963e-05 0.014088 -0.018705 -v 0.00149748 0.0140996 -0.0185932 -v 4.8963e-05 0.0168813 -0.018637 -v 0.0014996 0.0168998 -0.0185238 -v 4.8963e-05 0.0195887 -0.018571 -v 0.0015017 0.0197 -0.0184543 -v 0.00289307 0.0112995 -0.0183385 -v 0.0028815 0.0140996 -0.0182706 -v 0.0028699 0.0168997 -0.0182026 -v 0.00285835 0.0197 -0.0181347 -v 0.0041897 0.0112995 -0.0178258 -v 0.004163 0.0140996 -0.017763 -v 0.0041362 0.0168998 -0.0177 -v 0.0041094 0.0197 -0.017637 -v 0.005408 0.0113 -0.0171457 -v 0.0053786 0.0141 -0.0170772 -v 0.00534918 0.0169 -0.0170087 -v 0.00531976 0.0197 -0.0169402 -v 0.0064569 0.0112995 -0.0162946 -v 0.00643017 0.0140996 -0.0162265 -v 0.0064034 0.0168998 -0.0161583 -v 0.00637669 0.0197 -0.01609 -v 0.007774 0.011327 -0.0148177 -v 0.0087588 0.0113465 -0.0130978 -v 0.0077305 0.0141203 -0.0147615 -v 0.0087034 0.0141349 -0.013055 -v 0.0076869 0.0169133 -0.0147054 -v 0.008648 0.0169233 -0.013012 -v 0.0076433 0.0197062 -0.0146492 -v 0.0085925 0.0197116 -0.0129693 -v 0.0093822 0.0113578 -0.0111356 -v 0.0093156 0.0141433 -0.011122 -v 0.009249 0.0169289 -0.0111083 -v 0.0091825 0.0197144 -0.0110947 -v 0.009571 0.0113471 -0.00925 -v 0.0095026 0.0141504 -0.00925 -v 0.0094357 0.0168943 -0.00925 -v 0.0093668 0.0197167 -0.00925 -v 0.00097284 -0.00038271 -0.012725 -v 0.00075607 -0.00070714 -0.012725 -v 0.000431646 -0.0009239 -0.012725 -v 4.8963e-05 -0.00100003 -0.012725 -v 0.0177593 9.5e-11 -0.0183878 -v 0.0159418 9.5e-11 -0.0192534 -v 0.0092624 9.5e-11 -0.0224344 -v 0.0117868 9.5e-11 -0.021232 -v 0.0139919 9.5e-11 -0.020182 -v 0.0177593 -0.0015 -0.0183878 -v 0.0159418 -0.0015 -0.0192534 -v 0.0177593 -0.003 -0.0183878 -v 0.0159418 -0.003 -0.0192534 -v 0.0177593 -0.0045 -0.0183878 -v 0.0159418 -0.0045 -0.0192534 -v 0.0177593 -0.006 -0.0183878 -v 0.0159418 -0.006 -0.0192534 -v 0.0177593 -0.0075 -0.0183878 -v 0.0159418 -0.0075 -0.0192534 -v 0.0092624 -0.0015 -0.0224344 -v 0.0092624 -0.003 -0.0224344 -v 0.0092624 -0.0045 -0.0224344 -v 0.0092624 -0.006 -0.0224344 -v 0.0092624 -0.0075 -0.0224344 -v 0.0117868 -0.0015 -0.021232 -v 0.0117868 -0.003 -0.021232 -v 0.0117868 -0.0045 -0.021232 -v 0.0117868 -0.006 -0.021232 -v 0.0117868 -0.0075 -0.021232 -v 0.0139919 -0.0015 -0.020182 -v 0.0139919 -0.003 -0.020182 -v 0.0139919 -0.0045 -0.020182 -v 0.0139919 -0.006 -0.020182 -v 0.0139919 -0.0075 -0.020182 -v 4.8963e-05 0.0075 0.00036585 -v 4.8963e-05 0.0075 0.00134268 -v 0.00149694 0.0075 0.00123304 -v 0.00149694 0.0075 0.000256209 -v 0.0029119 0.0075 0.00103423 -v 0.0029119 0.0075 -7.0227e-05 -v 0.0042271 0.0075 0.00068645 -v 0.0042271 0.0075 -0.0005893 -v 0.0054374 0.0075 0.00021983 -v 0.0054374 0.0075 -0.00128575 -v 0.00107038 -0.00334614 -0.0070232 -v 4.8963e-05 -0.0034024 -0.0068001 -v 0.00104896 -0.00438748 -0.00701337 -v 4.8963e-05 -0.0045 -0.0068 -v 0.00104896 -0.0053875 -0.0070134 -v 4.8963e-05 -0.0055 -0.0068001 -v 0.00104896 -0.0075 -0.0070132 -v 4.8962e-05 -0.0075 -0.0068 -v 0.00104896 -0.01 -0.0070132 -v 4.8962e-05 -0.01 -0.0068 -v 0.00104896 -0.0125 -0.0070132 -v 4.8962e-05 -0.0125 -0.0068 -v 0.00104896 -0.015 -0.0070132 -v 4.8962e-05 -0.015 -0.0068 -v 0.00104896 -0.0175 -0.0070132 -v 4.8962e-05 -0.0175 -0.0068 -v 4.8963e-05 -0.0075 -0.00025 -v 4.8963e-05 -0.01 -0.00025 -v 0.00139314 -0.01 -0.000350945 -v 0.00139314 -0.0075 -0.000350945 -v 4.8963e-05 -0.0125 -0.00025 -v 0.00139314 -0.0125 -0.000350945 -v 4.8963e-05 -0.015 -0.00025 -v 0.00139314 -0.015 -0.000350945 -v 0.00270178 -0.01 -0.00064985 -v 0.00270178 -0.0075 -0.00064985 -v 0.00270178 -0.0125 -0.00064985 -v 0.00270178 -0.015 -0.00064985 -v 0.0039601 -0.01 -0.00114427 -v 0.0039601 -0.0075 -0.00114427 -v 0.0039601 -0.0125 -0.00114427 -v 0.0039601 -0.015 -0.00114427 -v 0.0050592 -0.01 -0.00177355 -v 0.0050592 -0.0075 -0.00177355 -v 0.0050592 -0.0125 -0.00177355 -v 0.0050592 -0.015 -0.00177355 -v 0.006294 -0.01 -0.00276926 -v 0.006294 -0.0075 -0.00276926 -v 0.006294 -0.0125 -0.00276926 -v 0.006294 -0.015 -0.00276926 -v 0.00746649 -0.0075 -0.0041529 -v 0.00746649 -0.01 -0.0041529 -v 0.0083333 -0.01 -0.005733 -v 0.0083333 -0.0075 -0.005733 -v 0.00746649 -0.0125 -0.0041529 -v 0.0083333 -0.0125 -0.005733 -v 0.00746649 -0.015 -0.0041529 -v 0.0083333 -0.015 -0.005733 -v 0.0088811 -0.01 -0.00752 -v 0.0088811 -0.0075 -0.00752 -v 0.0088811 -0.0125 -0.00752 -v 0.0088811 -0.015 -0.00752 -v 0.00104896 -0.0195 -0.0070132 -v 4.8962e-05 -0.0195 -0.0068 -v 0.00104896 -0.0215 -0.0070132 -v 4.8962e-05 -0.0215 -0.0068 -v 0.00104896 -0.0235 -0.0070132 -v 4.8962e-05 -0.0235 -0.0068 -v 0.00104896 -0.0255 -0.0070132 -v 4.8962e-05 -0.0255 -0.0068 -v 0.0047034 -0.0195 -0.0064148 -v 0.00501887 -0.0195 -0.00701337 -v 0.0047034 -0.0215 -0.0064148 -v 0.00501887 -0.0215 -0.00701337 -v 0.0047034 -0.0235 -0.0064148 -v 0.00501887 -0.0235 -0.00701337 -v 0.0047034 -0.0255 -0.0064148 -v 0.00501887 -0.0255 -0.00701337 -v 0.0053672 -0.0195 -0.008059 -v 0.0053672 -0.0215 -0.008059 -v 0.0053672 -0.0235 -0.008059 -v 0.0053672 -0.0255 -0.008059 -v 4.8963e-05 -0.0195 -0.0038 -v 0.00109717 -0.0195 -0.00390175 -v 4.8963e-05 -0.0215 -0.0038 -v 0.00109717 -0.0215 -0.00390175 -v 4.8963e-05 -0.0235 -0.0038 -v 0.00109717 -0.0235 -0.00390175 -v 4.8963e-05 -0.0255 -0.0038 -v 0.00109717 -0.0255 -0.00390175 -v 0.0020612 -0.0195 -0.00418508 -v 0.0020612 -0.0215 -0.00418508 -v 0.0020612 -0.0235 -0.00418508 -v 0.0020612 -0.0255 -0.00418508 -v 0.00149327 0.0084994 0.00023211 -v 4.8963e-05 0.0085009 0.00034144 -v 0.00290464 0.0084994 -9.3497e-05 -v 0.0042165 0.0084994 -0.00061125 -v 0.0054374 0.0085 -0.00128575 -v 0.0064836 0.0084994 -0.00213725 -v 0.0078177 0.0085339 -0.00362616 -v 0.0088143 0.0085581 -0.0053593 -v 0.0094487 0.0085722 -0.0073508 -v 4.8963e-05 0.0112315 0.00027484 -v 0.00149538 0.0112995 0.000162663 -v 0.00149748 0.0140996 9.3216e-05 -v 4.8963e-05 0.014088 0.00020517 -v 4.8963e-05 0.0168813 0.00013704 -v 0.0014996 0.0168998 2.3769e-05 -v 4.8963e-05 0.0195887 7.10078e-05 -v 0.0015017 0.0197 -4.56776e-05 -v 0.00289307 0.0112995 -0.000161452 -v 0.0028815 0.0140996 -0.000229407 -v 0.0028699 0.0168997 -0.00029736 -v 0.00285835 0.0197 -0.000365315 -v 0.0041897 0.0112995 -0.00067417 -v 0.004163 0.0140996 -0.00073708 -v 0.0041362 0.0168998 -0.0008 -v 0.0041094 0.0197 -0.00086291 -v 0.005408 0.0113 -0.00135426 -v 0.0053786 0.0141 -0.00142277 -v 0.00534918 0.0169 -0.00149127 -v 0.00531976 0.0197 -0.00155978 -v 0.0064569 0.0112995 -0.0022054 -v 0.00643017 0.0140996 -0.00227354 -v 0.0064034 0.0168998 -0.0023417 -v 0.00637669 0.0197 -0.00240984 -v 0.007774 0.011327 -0.0036823 -v 0.0087588 0.0113465 -0.00540216 -v 0.0077305 0.0141203 -0.00373847 -v 0.0087034 0.0141349 -0.005445 -v 0.0076869 0.0169133 -0.0037946 -v 0.008648 0.0169233 -0.00548788 -v 0.0076433 0.0197062 -0.00385076 -v 0.0085925 0.0197116 -0.0055307 -v 0.0093822 0.0113578 -0.0073644 -v 0.0093156 0.0141433 -0.00737808 -v 0.009249 0.0169289 -0.0073917 -v 0.0091825 0.0197144 -0.0074053 -v 0.0208985 0.002 -0.0100915 -v 0.0208985 9.5e-11 -0.0100915 -v 0.0210093 9.5e-11 -0.00925 -v 0.0210093 0.002 -0.00925 -v 0.0205738 0.002 -0.0108751 -v 0.0205738 9.5e-11 -0.0108751 -v 0.0200574 0.002 -0.011548 -v 0.0200574 9.5e-11 -0.011548 -v 0.0193844 0.002 -0.0120646 -v 0.0193844 9.5e-11 -0.0120646 -v 0.0186019 0.002 -0.0123889 -v 0.0186019 9.5e-11 -0.0123889 -v 0.0177593 0.002 -0.0125 -v 0.0177593 9.5e-11 -0.0125 -v 0.0169184 0.002 -0.0123893 -v 0.0169184 9.5e-11 -0.0123893 -v 0.0161343 0.002 -0.0120645 -v 0.0161343 9.5e-11 -0.0120645 -v 0.0154592 0.002 -0.011546 -v 0.0154592 9.5e-11 -0.011546 -v 0.0149446 0.002 -0.0108748 -v 0.0149446 9.5e-11 -0.0108748 -v 0.01462 0.002 -0.0100904 -v 0.01462 9.5e-11 -0.0100904 -v 0.0145093 0.002 -0.00925 -v 0.0145093 9.5e-11 -0.00925 -v 0.0208985 -0.0015 -0.0100915 -v 0.0210093 -0.0015 -0.00925 -v 0.0208985 -0.003 -0.0100915 -v 0.0210093 -0.003 -0.00925 -v 0.0208985 -0.0045 -0.0100915 -v 0.0210093 -0.0045 -0.00925 -v 0.0208985 -0.006 -0.0100915 -v 0.0210093 -0.006 -0.00925 -v 0.0208985 -0.0075 -0.0100915 -v 0.0210093 -0.0075 -0.00925 -v 0.0205738 -0.0015 -0.0108751 -v 0.0205738 -0.003 -0.0108751 -v 0.0205738 -0.0045 -0.0108751 -v 0.0205738 -0.006 -0.0108751 -v 0.0205738 -0.0075 -0.0108751 -v 0.0200574 -0.0015 -0.011548 -v 0.0200574 -0.003 -0.011548 -v 0.0200574 -0.0045 -0.011548 -v 0.0200574 -0.006 -0.011548 -v 0.0200574 -0.0075 -0.011548 -v 0.0193844 -0.0015 -0.0120646 -v 0.0193844 -0.003 -0.0120646 -v 0.0193844 -0.0045 -0.0120646 -v 0.0193844 -0.006 -0.0120646 -v 0.0193844 -0.0075 -0.0120646 -v 0.0186019 -0.0015 -0.0123889 -v 0.0186019 -0.003 -0.0123889 -v 0.0186019 -0.0045 -0.0123889 -v 0.0186019 -0.006 -0.0123889 -v 0.0186019 -0.0075 -0.0123889 -v 0.0177593 -0.0015 -0.0125 -v 0.0177593 -0.003 -0.0125 -v 0.0177593 -0.0045 -0.0125 -v 0.0177593 -0.006 -0.0125 -v 0.0177593 -0.0075 -0.0125 -v 0.0169184 -0.0015 -0.0123893 -v 0.0169184 -0.003 -0.0123893 -v 0.0169184 -0.0045 -0.0123893 -v 0.0169184 -0.006 -0.0123893 -v 0.0169184 -0.0075 -0.0123893 -v 0.0161343 -0.0015 -0.0120645 -v 0.0161343 -0.003 -0.0120645 -v 0.0161343 -0.0045 -0.0120645 -v 0.0161343 -0.006 -0.0120645 -v 0.0161343 -0.0075 -0.0120645 -v 0.0154592 -0.0015 -0.011546 -v 0.0154592 -0.003 -0.011546 -v 0.0154592 -0.0045 -0.011546 -v 0.0154592 -0.006 -0.011546 -v 0.0154592 -0.0075 -0.011546 -v 0.0149446 -0.0015 -0.0108748 -v 0.0149446 -0.003 -0.0108748 -v 0.0149446 -0.0045 -0.0108748 -v 0.0149446 -0.006 -0.0108748 -v 0.0149446 -0.0075 -0.0108748 -v 0.01462 -0.0015 -0.0100904 -v 0.01462 -0.003 -0.0100904 -v 0.01462 -0.0045 -0.0100904 -v 0.01462 -0.006 -0.0100904 -v 0.01462 -0.0075 -0.0100904 -v 0.0145093 -0.0015 -0.00925 -v 0.0145093 -0.003 -0.00925 -v 0.0145093 -0.0045 -0.00925 -v 0.0145093 -0.006 -0.00925 -v 0.0145093 -0.0075 -0.00925 -v 0.0208985 9.5e-11 -0.0084085 -v 0.0208985 0.002 -0.0084085 -v 0.0205738 9.5e-11 -0.0076249 -v 0.0205738 0.002 -0.0076249 -v 0.0200574 9.5e-11 -0.0069519 -v 0.0200574 0.002 -0.0069519 -v 0.0193844 9.5e-11 -0.0064354 -v 0.0193844 0.002 -0.0064354 -v 0.0186019 9.5e-11 -0.0061111 -v 0.0186019 0.002 -0.0061111 -v 0.0177593 9.5e-11 -0.006 -v 0.0177593 0.002 -0.006 -v 0.0169184 9.5e-11 -0.00611067 -v 0.0169184 0.002 -0.00611067 -v 0.0161343 9.5e-11 -0.0064355 -v 0.0161343 0.002 -0.0064355 -v 0.0154592 9.5e-11 -0.0069539 -v 0.0154592 0.002 -0.0069539 -v 0.0149446 9.5e-11 -0.00762518 -v 0.0149446 0.002 -0.00762518 -v 0.01462 9.5e-11 -0.0084096 -v 0.01462 0.002 -0.0084096 -v 0.0208985 -0.0015 -0.0084085 -v 0.0208985 -0.003 -0.0084085 -v 0.0208985 -0.0045 -0.0084085 -v 0.0208985 -0.006 -0.0084085 -v 0.0208985 -0.0075 -0.0084085 -v 0.0205738 -0.0015 -0.0076249 -v 0.0205738 -0.003 -0.0076249 -v 0.0205738 -0.0045 -0.0076249 -v 0.0205738 -0.006 -0.0076249 -v 0.0205738 -0.0075 -0.0076249 -v 0.0200574 -0.0015 -0.0069519 -v 0.0200574 -0.003 -0.0069519 -v 0.0200574 -0.0045 -0.0069519 -v 0.0200574 -0.006 -0.0069519 -v 0.0200574 -0.0075 -0.0069519 -v 0.0193844 -0.0015 -0.0064354 -v 0.0193844 -0.003 -0.0064354 -v 0.0193844 -0.0045 -0.0064354 -v 0.0193844 -0.006 -0.0064354 -v 0.0193844 -0.0075 -0.0064354 -v 0.0186019 -0.0015 -0.0061111 -v 0.0186019 -0.003 -0.0061111 -v 0.0186019 -0.0045 -0.0061111 -v 0.0186019 -0.006 -0.0061111 -v 0.0186019 -0.0075 -0.0061111 -v 0.0177593 -0.0015 -0.006 -v 0.0177593 -0.003 -0.006 -v 0.0177593 -0.0045 -0.006 -v 0.0177593 -0.006 -0.006 -v 0.0177593 -0.0075 -0.006 -v 0.0169184 -0.0015 -0.00611067 -v 0.0169184 -0.003 -0.00611067 -v 0.0169184 -0.0045 -0.00611067 -v 0.0169184 -0.006 -0.00611067 -v 0.0169184 -0.0075 -0.00611067 -v 0.0161343 -0.0015 -0.0064355 -v 0.0161343 -0.003 -0.0064355 -v 0.0161343 -0.0045 -0.0064355 -v 0.0161343 -0.006 -0.0064355 -v 0.0161343 -0.0075 -0.0064355 -v 0.0154592 -0.0015 -0.0069539 -v 0.0154592 -0.003 -0.0069539 -v 0.0154592 -0.0045 -0.0069539 -v 0.0154592 -0.006 -0.0069539 -v 0.0154592 -0.0075 -0.0069539 -v 0.0149446 -0.0015 -0.00762518 -v 0.0149446 -0.003 -0.00762518 -v 0.0149446 -0.0045 -0.00762518 -v 0.0149446 -0.006 -0.00762518 -v 0.0149446 -0.0075 -0.00762518 -v 0.01462 -0.0015 -0.0084096 -v 0.01462 -0.003 -0.0084096 -v 0.01462 -0.0045 -0.0084096 -v 0.01462 -0.006 -0.0084096 -v 0.01462 -0.0075 -0.0084096 -v -0.00097284 0.00038271 -0.012725 -v -0.00104896 2.83e-08 -0.012725 -v -0.00096135 0.00040932 -0.0115238 -v -0.00075607 0.00070714 -0.012725 -v -0.00074085 0.0007218 -0.0116002 -v -0.000431646 0.0009239 -0.012725 -v -0.000427704 0.00092555 -0.0116705 -v -0.00149694 0.0075 -0.0203843 -v -0.00149694 0.0075 -0.0187562 -v -0.00149694 0.0075 -0.0220123 -v -0.0029119 0.0075 -0.0201854 -v -0.0029119 0.0075 -0.0184298 -v -0.0029119 0.0075 -0.021941 -v -0.0042271 0.0075 -0.0198377 -v -0.0042271 0.0075 -0.0179107 -v -0.0042271 0.0075 -0.0217646 -v -0.0054374 0.0075 -0.019371 -v -0.0054374 0.0075 -0.0172143 -v -0.0054374 0.0075 -0.0215278 -v -0.00107038 -0.00334614 -0.0114768 -v -0.00104896 -0.00438748 -0.0114866 -v -0.00104896 -0.0053875 -0.0114866 -v -0.00104896 -0.0075 -0.0114868 -v -0.00104896 -0.01 -0.0114868 -v -0.00104896 -0.0125 -0.0114868 -v -0.00104896 -0.015 -0.0114868 -v -0.00104896 -0.0175 -0.0114868 -v -0.00139314 -0.01 -0.018149 -v -0.00139314 -0.0075 -0.018149 -v -0.00139314 -0.0125 -0.018149 -v -0.00139314 -0.015 -0.018149 -v -0.00270178 -0.01 -0.01785 -v -0.00270178 -0.0075 -0.01785 -v -0.00270178 -0.0125 -0.01785 -v -0.00270178 -0.015 -0.01785 -v -0.0039601 -0.01 -0.0173557 -v -0.0039601 -0.0075 -0.0173557 -v -0.0039601 -0.0125 -0.0173557 -v -0.0039601 -0.015 -0.0173557 -v -0.0050592 -0.01 -0.0167264 -v -0.0050592 -0.0075 -0.0167264 -v -0.0050592 -0.0125 -0.0167264 -v -0.0050592 -0.015 -0.0167264 -v -0.006294 -0.01 -0.0157307 -v -0.006294 -0.0075 -0.0157307 -v -0.006294 -0.0125 -0.0157307 -v -0.006294 -0.015 -0.0157307 -v -0.00746649 -0.0075 -0.014347 -v -0.00746649 -0.01 -0.014347 -v -0.0083333 -0.01 -0.012767 -v -0.0083333 -0.0075 -0.012767 -v -0.00746649 -0.0125 -0.014347 -v -0.0083333 -0.0125 -0.012767 -v -0.00746649 -0.015 -0.014347 -v -0.0083333 -0.015 -0.012767 -v -0.0088811 -0.01 -0.01098 -v -0.0088811 -0.0075 -0.01098 -v -0.0088811 -0.0125 -0.01098 -v -0.0088811 -0.015 -0.01098 -v -0.009049 -0.01 -0.00925 -v -0.009049 -0.0075 -0.00925 -v -0.009049 -0.0125 -0.00925 -v -0.009049 -0.015 -0.00925 -v -0.00104896 -0.0195 -0.0114868 -v -0.00104896 -0.0215 -0.0114868 -v -0.00104896 -0.0235 -0.0114868 -v -0.00104896 -0.0255 -0.0114868 -v -0.0047034 -0.0195 -0.0120852 -v -0.00501887 -0.0195 -0.0114866 -v -0.0047034 -0.0215 -0.0120852 -v -0.00501887 -0.0215 -0.0114866 -v -0.0047034 -0.0235 -0.0120852 -v -0.00501887 -0.0235 -0.0114866 -v -0.0047034 -0.0255 -0.0120852 -v -0.00501887 -0.0255 -0.0114866 -v -0.0053672 -0.0195 -0.010441 -v -0.0053672 -0.0215 -0.010441 -v -0.0053672 -0.0235 -0.010441 -v -0.0053672 -0.0255 -0.010441 -v -0.005499 -0.0195 -0.00925 -v -0.005499 -0.0215 -0.00925 -v -0.005499 -0.0235 -0.00925 -v -0.005499 -0.0255 -0.00925 -v -0.00109717 -0.0195 -0.0145982 -v -0.00109717 -0.0215 -0.0145982 -v -0.00109717 -0.0235 -0.0145982 -v -0.00109717 -0.0255 -0.0145982 -v -0.0020612 -0.0195 -0.014315 -v -0.0020612 -0.0215 -0.014315 -v -0.0020612 -0.0235 -0.014315 -v -0.0020612 -0.0255 -0.014315 -v -0.00149327 0.0084994 -0.018732 -v -0.00290464 0.0084994 -0.0184065 -v -0.0042165 0.0084994 -0.0178887 -v -0.0054374 0.0085 -0.0172143 -v -0.0064836 0.0084994 -0.0163628 -v -0.0078177 0.0085339 -0.0148738 -v -0.0088143 0.0085581 -0.0131407 -v -0.0094487 0.0085722 -0.0111492 -v -0.0096393 0.0085474 -0.00925 -v -0.00149538 0.0112995 -0.0186627 -v -0.00149748 0.0140996 -0.0185932 -v -0.0014996 0.0168998 -0.0185238 -v -0.0015017 0.0197 -0.0184543 -v -0.00289307 0.0112995 -0.0183385 -v -0.0028815 0.0140996 -0.0182706 -v -0.0028699 0.0168997 -0.0182026 -v -0.00285835 0.0197 -0.0181347 -v -0.0041897 0.0112995 -0.0178258 -v -0.004163 0.0140996 -0.017763 -v -0.0041362 0.0168998 -0.0177 -v -0.0041094 0.0197 -0.017637 -v -0.005408 0.0113 -0.0171457 -v -0.0053786 0.0141 -0.0170772 -v -0.00534918 0.0169 -0.0170087 -v -0.00531976 0.0197 -0.0169402 -v -0.0064569 0.0112995 -0.0162946 -v -0.00643017 0.0140996 -0.0162265 -v -0.0064034 0.0168998 -0.0161583 -v -0.00637669 0.0197 -0.01609 -v -0.007774 0.011327 -0.0148177 -v -0.0087588 0.0113465 -0.0130978 -v -0.0077305 0.0141203 -0.0147615 -v -0.0087034 0.0141349 -0.013055 -v -0.0076869 0.0169133 -0.0147054 -v -0.008648 0.0169233 -0.013012 -v -0.0076433 0.0197062 -0.0146492 -v -0.0085925 0.0197116 -0.0129693 -v -0.0093822 0.0113578 -0.0111356 -v -0.0093156 0.0141433 -0.011122 -v -0.009249 0.0169289 -0.0111083 -v -0.0091825 0.0197144 -0.0110947 -v -0.009571 0.0113471 -0.00925 -v -0.0095026 0.0141504 -0.00925 -v -0.0094357 0.0168943 -0.00925 -v -0.0093668 0.0197167 -0.00925 -v -0.00097284 -0.00038271 -0.012725 -v -0.00075607 -0.00070714 -0.012725 -v -0.000431646 -0.0009239 -0.012725 -v -0.0092624 9.5e-11 -0.0224344 -v -0.0117868 9.5e-11 -0.021232 -v -0.0092624 -0.0015 -0.0224344 -v -0.0092624 -0.003 -0.0224344 -v -0.0092624 -0.0045 -0.0224344 -v -0.0092624 -0.006 -0.0224344 -v -0.0092624 -0.0075 -0.0224344 -v -0.0117868 -0.0015 -0.021232 -v -0.0117868 -0.003 -0.021232 -v -0.0117868 -0.0045 -0.021232 -v -0.0117868 -0.006 -0.021232 -v -0.0117868 -0.0075 -0.021232 -v -0.00149694 0.0075 0.000256209 -v -0.00149694 0.0075 0.00123304 -v -0.0029119 0.0075 -7.0227e-05 -v -0.0029119 0.0075 0.00103423 -v -0.0042271 0.0075 -0.0005893 -v -0.0042271 0.0075 0.00068645 -v -0.0054374 0.0075 -0.00128575 -v -0.0054374 0.0075 0.00021983 -v -0.0065 0.0075 0.000312658 -v -0.00107038 -0.00334614 -0.0070232 -v -0.00104896 -0.00438748 -0.00701337 -v -0.00104896 -0.0053875 -0.0070134 -v -0.00104896 -0.0075 -0.0070132 -v -0.0017351 -0.00534529 -0.0074738 -v -0.00178137 -0.0075 -0.0075175 -v -0.00104896 -0.01 -0.0070132 -v -0.00104896 -0.0125 -0.0070132 -v -0.00104896 -0.015 -0.0070132 -v -0.00104896 -0.0175 -0.0070132 -v -0.00178137 -0.01 -0.0075175 -v -0.00178137 -0.0125 -0.0075175 -v -0.00178137 -0.015 -0.0075175 -v -0.00178137 -0.0175 -0.0075175 -v -0.00139314 -0.0075 -0.000350945 -v -0.00139314 -0.01 -0.000350945 -v -0.00139314 -0.0125 -0.000350945 -v -0.00139314 -0.015 -0.000350945 -v -0.00270178 -0.0075 -0.00064985 -v -0.00270178 -0.01 -0.00064985 -v -0.00270178 -0.0125 -0.00064985 -v -0.00270178 -0.015 -0.00064985 -v -0.0039601 -0.0075 -0.00114427 -v -0.0039601 -0.01 -0.00114427 -v -0.0039601 -0.0125 -0.00114427 -v -0.0039601 -0.015 -0.00114427 -v -0.0050592 -0.0075 -0.00177355 -v -0.0050592 -0.01 -0.00177355 -v -0.0050592 -0.0125 -0.00177355 -v -0.0050592 -0.015 -0.00177355 -v -0.006294 -0.0075 -0.00276926 -v -0.006294 -0.01 -0.00276926 -v -0.006294 -0.0125 -0.00276926 -v -0.006294 -0.015 -0.00276926 -v -0.0083333 -0.0075 -0.005733 -v -0.0083333 -0.01 -0.005733 -v -0.00746649 -0.01 -0.0041529 -v -0.00746649 -0.0075 -0.0041529 -v -0.0083333 -0.0125 -0.005733 -v -0.00746649 -0.0125 -0.0041529 -v -0.0083333 -0.015 -0.005733 -v -0.00746649 -0.015 -0.0041529 -v -0.0088811 -0.0075 -0.00752 -v -0.0088811 -0.01 -0.00752 -v -0.0088811 -0.0125 -0.00752 -v -0.0088811 -0.015 -0.00752 -v -0.00104896 -0.0195 -0.0070132 -v -0.00104896 -0.0215 -0.0070132 -v -0.00104896 -0.0235 -0.0070132 -v -0.00104896 -0.0255 -0.0070132 -v -0.00178137 -0.0195 -0.0075175 -v -0.00178137 -0.0215 -0.0075175 -v -0.00178137 -0.0235 -0.0075175 -v -0.00178137 -0.0255 -0.0075175 -v -0.00501887 -0.0195 -0.00701337 -v -0.0047034 -0.0195 -0.0064148 -v -0.00501887 -0.0215 -0.00701337 -v -0.0047034 -0.0215 -0.0064148 -v -0.00501887 -0.0235 -0.00701337 -v -0.0047034 -0.0235 -0.0064148 -v -0.00501887 -0.0255 -0.00701337 -v -0.0047034 -0.0255 -0.0064148 -v -0.0053672 -0.0195 -0.008059 -v -0.0053672 -0.0215 -0.008059 -v -0.0053672 -0.0235 -0.008059 -v -0.0053672 -0.0255 -0.008059 -v -0.00109717 -0.0195 -0.00390175 -v -0.00109717 -0.0215 -0.00390175 -v -0.00109717 -0.0235 -0.00390175 -v -0.00109717 -0.0255 -0.00390175 -v -0.0020612 -0.0195 -0.00418508 -v -0.0020612 -0.0215 -0.00418508 -v -0.0020612 -0.0235 -0.00418508 -v -0.0020612 -0.0255 -0.00418508 -v -0.00149327 0.0084994 0.00023211 -v -0.00290464 0.0084994 -9.3497e-05 -v -0.0042165 0.0084994 -0.00061125 -v -0.0054374 0.0085 -0.00128575 -v -0.0064836 0.0084994 -0.00213725 -v -0.0078177 0.0085339 -0.00362616 -v -0.0088143 0.0085581 -0.0053593 -v -0.0094487 0.0085722 -0.0073508 -v -0.00149538 0.0112995 0.000162663 -v -0.00149748 0.0140996 9.3216e-05 -v -0.0014996 0.0168998 2.3769e-05 -v -0.0015017 0.0197 -4.56776e-05 -v -0.00289307 0.0112995 -0.000161452 -v -0.0028815 0.0140996 -0.000229407 -v -0.0028699 0.0168997 -0.00029736 -v -0.00285835 0.0197 -0.000365315 -v -0.0041897 0.0112995 -0.00067417 -v -0.004163 0.0140996 -0.00073708 -v -0.0041362 0.0168998 -0.0008 -v -0.0041094 0.0197 -0.00086291 -v -0.005408 0.0113 -0.00135426 -v -0.0053786 0.0141 -0.00142277 -v -0.00534918 0.0169 -0.00149127 -v -0.00531976 0.0197 -0.00155978 -v -0.0064569 0.0112995 -0.0022054 -v -0.00643017 0.0140996 -0.00227354 -v -0.0064034 0.0168998 -0.0023417 -v -0.00637669 0.0197 -0.00240984 -v -0.007774 0.011327 -0.0036823 -v -0.0087588 0.0113465 -0.00540216 -v -0.0077305 0.0141203 -0.00373847 -v -0.0087034 0.0141349 -0.005445 -v -0.0076869 0.0169133 -0.0037946 -v -0.008648 0.0169233 -0.00548788 -v -0.0076433 0.0197062 -0.00385076 -v -0.0085925 0.0197116 -0.0055307 -v -0.0093822 0.0113578 -0.0073644 -v -0.0093156 0.0141433 -0.00737808 -v -0.009249 0.0169289 -0.0073917 -v -0.0091825 0.0197144 -0.0074053 -v -0.0210093 0.002 -0.00925 -v -0.0210093 9.5e-11 -0.00925 -v -0.0208985 9.5e-11 -0.0100915 -v -0.0208985 0.002 -0.0100915 -v -0.0205738 9.5e-11 -0.0108751 -v -0.0205738 0.002 -0.0108751 -v -0.0200574 9.5e-11 -0.011548 -v -0.0200574 0.002 -0.011548 -v -0.0193844 9.5e-11 -0.0120646 -v -0.0193844 0.002 -0.0120646 -v -0.0186019 9.5e-11 -0.0123889 -v -0.0186019 0.002 -0.0123889 -v -0.0177593 9.5e-11 -0.0125 -v -0.0177593 0.002 -0.0125 -v -0.0169184 9.5e-11 -0.0123893 -v -0.0169184 0.002 -0.0123893 -v -0.0161343 9.5e-11 -0.0120645 -v -0.0161343 0.002 -0.0120645 -v -0.0154592 9.5e-11 -0.011546 -v -0.0154592 0.002 -0.011546 -v -0.0149446 9.5e-11 -0.0108748 -v -0.0149446 0.002 -0.0108748 -v -0.01462 9.5e-11 -0.0100904 -v -0.01462 0.002 -0.0100904 -v -0.0145093 9.5e-11 -0.00925 -v -0.0145093 0.002 -0.00925 -v -0.0210093 -0.0015 -0.00925 -v -0.0208985 -0.0015 -0.0100915 -v -0.0210093 -0.003 -0.00925 -v -0.0208985 -0.003 -0.0100915 -v -0.0210093 -0.0045 -0.00925 -v -0.0208985 -0.0045 -0.0100915 -v -0.0210093 -0.006 -0.00925 -v -0.0208985 -0.006 -0.0100915 -v -0.0210093 -0.0075 -0.00925 -v -0.0208985 -0.0075 -0.0100915 -v -0.0205738 -0.0015 -0.0108751 -v -0.0205738 -0.003 -0.0108751 -v -0.0205738 -0.0045 -0.0108751 -v -0.0205738 -0.006 -0.0108751 -v -0.0205738 -0.0075 -0.0108751 -v -0.0200574 -0.0015 -0.011548 -v -0.0200574 -0.003 -0.011548 -v -0.0200574 -0.0045 -0.011548 -v -0.0200574 -0.006 -0.011548 -v -0.0200574 -0.0075 -0.011548 -v -0.0193844 -0.0015 -0.0120646 -v -0.0193844 -0.003 -0.0120646 -v -0.0193844 -0.0045 -0.0120646 -v -0.0193844 -0.006 -0.0120646 -v -0.0193844 -0.0075 -0.0120646 -v -0.0186019 -0.0015 -0.0123889 -v -0.0186019 -0.003 -0.0123889 -v -0.0186019 -0.0045 -0.0123889 -v -0.0186019 -0.006 -0.0123889 -v -0.0186019 -0.0075 -0.0123889 -v -0.0177593 -0.0015 -0.0125 -v -0.0177593 -0.003 -0.0125 -v -0.0177593 -0.0045 -0.0125 -v -0.0177593 -0.006 -0.0125 -v -0.0177593 -0.0075 -0.0125 -v -0.0169184 -0.0015 -0.0123893 -v -0.0169184 -0.003 -0.0123893 -v -0.0169184 -0.0045 -0.0123893 -v -0.0169184 -0.006 -0.0123893 -v -0.0169184 -0.0075 -0.0123893 -v -0.0161343 -0.0015 -0.0120645 -v -0.0161343 -0.003 -0.0120645 -v -0.0161343 -0.0045 -0.0120645 -v -0.0161343 -0.006 -0.0120645 -v -0.0161343 -0.0075 -0.0120645 -v -0.0154592 -0.0015 -0.011546 -v -0.0154592 -0.003 -0.011546 -v -0.0154592 -0.0045 -0.011546 -v -0.0154592 -0.006 -0.011546 -v -0.0154592 -0.0075 -0.011546 -v -0.0149446 -0.0015 -0.0108748 -v -0.0149446 -0.003 -0.0108748 -v -0.0149446 -0.0045 -0.0108748 -v -0.0149446 -0.006 -0.0108748 -v -0.0149446 -0.0075 -0.0108748 -v -0.01462 -0.0015 -0.0100904 -v -0.01462 -0.003 -0.0100904 -v -0.01462 -0.0045 -0.0100904 -v -0.01462 -0.006 -0.0100904 -v -0.01462 -0.0075 -0.0100904 -v -0.0145093 -0.0015 -0.00925 -v -0.0145093 -0.003 -0.00925 -v -0.0145093 -0.0045 -0.00925 -v -0.0145093 -0.006 -0.00925 -v -0.0145093 -0.0075 -0.00925 -v -0.0208985 0.002 -0.0084085 -v -0.0208985 9.5e-11 -0.0084085 -v -0.0205738 0.002 -0.0076249 -v -0.0205738 9.5e-11 -0.0076249 -v -0.0200574 0.002 -0.0069519 -v -0.0200574 9.5e-11 -0.0069519 -v -0.0193844 0.002 -0.0064354 -v -0.0193844 9.5e-11 -0.0064354 -v -0.0186019 0.002 -0.0061111 -v -0.0186019 9.5e-11 -0.0061111 -v -0.0177593 0.002 -0.006 -v -0.0177593 9.5e-11 -0.006 -v -0.0169184 0.002 -0.00611067 -v -0.0169184 9.5e-11 -0.00611067 -v -0.0161343 0.002 -0.0064355 -v -0.0161343 9.5e-11 -0.0064355 -v -0.0154592 0.002 -0.0069539 -v -0.0154592 9.5e-11 -0.0069539 -v -0.0149446 0.002 -0.00762518 -v -0.0149446 9.5e-11 -0.00762518 -v -0.01462 0.002 -0.0084096 -v -0.01462 9.5e-11 -0.0084096 -v -0.0208985 -0.0015 -0.0084085 -v -0.0208985 -0.003 -0.0084085 -v -0.0208985 -0.0045 -0.0084085 -v -0.0208985 -0.006 -0.0084085 -v -0.0208985 -0.0075 -0.0084085 -v -0.0205738 -0.0015 -0.0076249 -v -0.0205738 -0.003 -0.0076249 -v -0.0205738 -0.0045 -0.0076249 -v -0.0205738 -0.006 -0.0076249 -v -0.0205738 -0.0075 -0.0076249 -v -0.0200574 -0.0015 -0.0069519 -v -0.0200574 -0.003 -0.0069519 -v -0.0200574 -0.0045 -0.0069519 -v -0.0200574 -0.006 -0.0069519 -v -0.0200574 -0.0075 -0.0069519 -v -0.0193844 -0.0015 -0.0064354 -v -0.0193844 -0.003 -0.0064354 -v -0.0193844 -0.0045 -0.0064354 -v -0.0193844 -0.006 -0.0064354 -v -0.0193844 -0.0075 -0.0064354 -v -0.0186019 -0.0015 -0.0061111 -v -0.0186019 -0.003 -0.0061111 -v -0.0186019 -0.0045 -0.0061111 -v -0.0186019 -0.006 -0.0061111 -v -0.0186019 -0.0075 -0.0061111 -v -0.0177593 -0.0015 -0.006 -v -0.0177593 -0.003 -0.006 -v -0.0177593 -0.0045 -0.006 -v -0.0177593 -0.006 -0.006 -v -0.0177593 -0.0075 -0.006 -v -0.0169184 -0.0015 -0.00611067 -v -0.0169184 -0.003 -0.00611067 -v -0.0169184 -0.0045 -0.00611067 -v -0.0169184 -0.006 -0.00611067 -v -0.0169184 -0.0075 -0.00611067 -v -0.0161343 -0.0015 -0.0064355 -v -0.0161343 -0.003 -0.0064355 -v -0.0161343 -0.0045 -0.0064355 -v -0.0161343 -0.006 -0.0064355 -v -0.0161343 -0.0075 -0.0064355 -v -0.0154592 -0.0015 -0.0069539 -v -0.0154592 -0.003 -0.0069539 -v -0.0154592 -0.0045 -0.0069539 -v -0.0154592 -0.006 -0.0069539 -v -0.0154592 -0.0075 -0.0069539 -v -0.0149446 -0.0015 -0.00762518 -v -0.0149446 -0.003 -0.00762518 -v -0.0149446 -0.0045 -0.00762518 -v -0.0149446 -0.006 -0.00762518 -v -0.0149446 -0.0075 -0.00762518 -v -0.01462 -0.0015 -0.0084096 -v -0.01462 -0.003 -0.0084096 -v -0.01462 -0.0045 -0.0084096 -v -0.01462 -0.006 -0.0084096 -v -0.01462 -0.0075 -0.0084096 -v -0.0177593 9.5e-11 -0.000249369 -v -0.0158684 9.5e-11 0.00057542 -v -0.0139774 9.5e-11 0.00140021 -v -0.0177593 -0.0015 -0.000249369 -v -0.0158684 -0.0015 0.00057542 -v -0.0177593 -0.003 -0.000249369 -v -0.0158684 -0.003 0.00057542 -v -0.0177593 -0.0045 -0.000249369 -v -0.0158684 -0.0045 0.00057542 -v -0.0177593 -0.006 -0.000249369 -v -0.0158684 -0.006 0.00057542 -v -0.0177593 -0.0075 -0.000249369 -v -0.0158684 -0.0075 0.00057542 -v -0.0139774 -0.0015 0.00140021 -v -0.0139774 -0.003 0.00140021 -v -0.0139774 -0.0045 0.00140021 -v -0.0139774 -0.006 0.00140021 -v -0.0139774 -0.0075 0.00140021 -v 0.0065 0.003375 -0.018903 -v 0.0065 0.003375 -0.0212904 -v 0.0065 0.00475 -0.018873 -v 0.0065 0.00475 -0.021275 -v 0.0065 0.006125 -0.0188428 -v 0.0065 0.006125 -0.0212598 -v 0.0022958 -0.005204 -0.0102255 -v 0.00231247 -0.0075 -0.0101877 -v 0.0044074 -0.00111989 -0.0161579 -v 0.0043992 -0.00115128 -0.0176229 -v 0.0039486 -0.0022456 -0.0161579 -v 0.0039599 -0.00222589 -0.01778 -v 0.0043992 -0.00115128 -0.0196448 -v 0.0043992 -0.00115128 -0.0216668 -v 0.0039599 -0.00222589 -0.01975 -v 0.0039599 -0.00222589 -0.02172 -v 0.00231247 -0.01 -0.0101877 -v 0.00231247 -0.0125 -0.0101877 -v 0.00231247 -0.015 -0.0101877 -v 0.00231247 -0.0175 -0.0101877 -v 0.00231247 -0.0195 -0.0101877 -v 0.00231247 -0.0215 -0.0101877 -v 0.00231247 -0.0235 -0.0101877 -v 0.00231247 -0.0255 -0.0101877 -v 0.025665 9.5e-11 -0.0116081 -v 0.024661 9.5e-11 -0.0137696 -v 0.0230815 9.5e-11 -0.0155537 -v 0.0210577 9.5e-11 -0.016812 -v 0.01945 9.5e-11 -0.0175827 -v 0.025665 -0.0015 -0.0116081 -v 0.025665 -0.003 -0.0116081 -v 0.025665 -0.0045 -0.0116081 -v 0.025665 -0.006 -0.0116081 -v 0.025665 -0.0075 -0.0116081 -v 0.024661 -0.0015 -0.0137696 -v 0.024661 -0.003 -0.0137696 -v 0.024661 -0.0045 -0.0137696 -v 0.024661 -0.006 -0.0137696 -v 0.024661 -0.0075 -0.0137696 -v 0.0230815 -0.0015 -0.0155537 -v 0.0230815 -0.003 -0.0155537 -v 0.0230815 -0.0045 -0.0155537 -v 0.0230815 -0.006 -0.0155537 -v 0.0230815 -0.0075 -0.0155537 -v 0.0210577 -0.0015 -0.016812 -v 0.0210577 -0.003 -0.016812 -v 0.0210577 -0.0045 -0.016812 -v 0.0210577 -0.006 -0.016812 -v 0.0210577 -0.0075 -0.016812 -v 0.01945 -0.0015 -0.0175827 -v 0.01945 -0.003 -0.0175827 -v 0.01945 -0.0045 -0.0175827 -v 0.01945 -0.006 -0.0175827 -v 0.01945 -0.0075 -0.0175827 -v -0.0044074 0.00111989 -0.0161579 -v -0.0043992 0.00115128 -0.0176229 -v -0.0039486 0.0022456 -0.0161579 -v -0.0039599 0.00222589 -0.01778 -v -0.0043992 0.00115128 -0.0196448 -v -0.0043992 0.00115128 -0.0216668 -v -0.0039599 0.00222589 -0.01975 -v -0.0039599 0.00222589 -0.02172 -v -0.0065 0.003375 0.00040305 -v -0.0065 0.00475 0.00037292 -v -0.0065 0.006125 0.000342788 -v -0.0022958 -0.005204 -0.0082745 -v -0.00231247 -0.0075 -0.00831229 -v -0.00231247 -0.01 -0.00831229 -v -0.00231247 -0.0125 -0.00831229 -v -0.00231247 -0.015 -0.00831229 -v -0.00231247 -0.0175 -0.00831229 -v -0.00231247 -0.0195 -0.00831229 -v -0.00231247 -0.0215 -0.00831229 -v -0.00231247 -0.0235 -0.00831229 -v -0.00231247 -0.0255 -0.00831229 -v -0.025665 9.5e-11 -0.0068919 -v -0.024661 9.5e-11 -0.0047304 -v -0.0230815 9.5e-11 -0.0029463 -v -0.0210577 9.5e-11 -0.00168803 -v -0.0194085 9.5e-11 -0.0009687 -v -0.025665 -0.0015 -0.0068919 -v -0.025665 -0.003 -0.0068919 -v -0.025665 -0.0045 -0.0068919 -v -0.025665 -0.006 -0.0068919 -v -0.025665 -0.0075 -0.0068919 -v -0.024661 -0.0015 -0.0047304 -v -0.024661 -0.003 -0.0047304 -v -0.024661 -0.0045 -0.0047304 -v -0.024661 -0.006 -0.0047304 -v -0.024661 -0.0075 -0.0047304 -v -0.0230815 -0.0015 -0.0029463 -v -0.0230815 -0.003 -0.0029463 -v -0.0230815 -0.0045 -0.0029463 -v -0.0230815 -0.006 -0.0029463 -v -0.0230815 -0.0075 -0.0029463 -v -0.0210577 -0.0015 -0.00168803 -v -0.0210577 -0.003 -0.00168803 -v -0.0210577 -0.0045 -0.00168803 -v -0.0210577 -0.006 -0.00168803 -v -0.0210577 -0.0075 -0.00168803 -v -0.0194085 -0.0015 -0.0009687 -v -0.0194085 -0.003 -0.0009687 -v -0.0194085 -0.0045 -0.0009687 -v -0.0194085 -0.006 -0.0009687 -v -0.0194085 -0.0075 -0.0009687 -v 0.010708 -0.0075 0.0011982 -v -0.010708 -0.0075 0.0011982 -v 0.0097686 -0.0075 -0.0152248 -v 0.0115415 -0.0075 -0.0156366 -v 0.0111516 -0.0075 -0.014182 -v 0.0131584 -0.0075 -0.0151265 -v 0.0131946 -0.0075 -0.0158693 -v 0.0146963 -0.0075 -0.016257 -v 0.0144921 -0.0075 -0.01727 -v 0.015699 -0.0075 -0.0175533 -v 0.0125608 -0.0075 -0.0164174 -v 0.0134607 -0.0075 -0.01688 -v 0.0115415 -0.0075 -0.00286344 -v 0.0097686 -0.0075 -0.00327517 -v 0.0111516 -0.0075 -0.0043179 -v 0.0131946 -0.0075 -0.0026307 -v 0.0131584 -0.0075 -0.0033735 -v 0.0146963 -0.0075 -0.00224303 -v 0.015699 -0.0075 -0.00094673 -v 0.0144921 -0.0075 -0.00123011 -v 0.0134607 -0.0075 -0.0016199 -v 0.0125608 -0.0075 -0.00208264 -v -0.0115415 -0.0075 -0.0156366 -v -0.0097686 -0.0075 -0.0152248 -v -0.0111516 -0.0075 -0.014182 -v -0.0131946 -0.0075 -0.0158693 -v -0.0131584 -0.0075 -0.0151265 -v -0.0146963 -0.0075 -0.016257 -v -0.015699 -0.0075 -0.0175533 -v -0.0144921 -0.0075 -0.01727 -v -0.0134607 -0.0075 -0.01688 -v -0.0125608 -0.0075 -0.0164174 -v -0.0097686 -0.0075 -0.00327517 -v -0.0115415 -0.0075 -0.00286344 -v -0.0111516 -0.0075 -0.0043179 -v -0.0131584 -0.0075 -0.0033735 -v -0.0131946 -0.0075 -0.0026307 -v -0.0146963 -0.0075 -0.00224303 -v -0.0144921 -0.0075 -0.00123011 -v -0.015699 -0.0075 -0.00094673 -v -0.0125608 -0.0075 -0.00208264 -v -0.0134607 -0.0075 -0.0016199 -v 0.0107846 -0.0075 -0.0109912 -v 0.0107791 -0.0075 -0.00925 -v 0.0117593 -0.0075 -0.00925 -v 0.0119634 -0.0075 -0.0108016 -v 0.0162069 -0.0075 -0.0150457 -v 0.0147592 -0.0075 -0.014446 -v 0.0166766 -0.0075 -0.0163743 -v 0.0177593 -0.0075 -0.0166736 -v 0.0177593 -0.0075 -0.01525 -v 0.0167117 -0.0075 -0.0174385 -v 0.008014 -0.0075 -0.0171347 -v 0.0090659 -0.0075 -0.016288 -v 0.0065 -0.0075 -0.0188127 -v 0.008476 -0.0075 -0.0185554 -v 0.0106532 -0.0075 -0.017664 -v 0.0087366 -0.0075 -0.0205014 -v 0.0065 -0.0075 -0.0212445 -v 0.0116557 -0.0075 -0.019395 -v 0.0120812 -0.0075 -0.0185232 -v 0.010708 -0.0075 -0.0196982 -v 0.0121778 -0.0075 -0.019964 -v 0.0130909 -0.0075 -0.0192646 -v 0.0120464 -0.0075 -0.0172835 -v 0.0129252 -0.0075 -0.017769 -v 0.013513 -0.0075 -0.013489 -v 0.0141125 -0.0075 -0.0183892 -v 0.0107617 -0.0075 -0.0127276 -v 0.012563 -0.0075 -0.0122497 -v 0.0222266 -0.0075 -0.0104476 -v 0.0235547 -0.0075 -0.0108036 -v 0.0237593 -0.0075 -0.00925 -v 0.0223843 -0.0075 -0.00925 -v 0.0217646 -0.0075 -0.0115627 -v 0.0229553 -0.0075 -0.0122503 -v 0.0210297 -0.0075 -0.0125204 -v 0.022002 -0.0075 -0.0134926 -v 0.0200719 -0.0075 -0.0132553 -v 0.0207594 -0.0075 -0.014446 -v 0.0189584 -0.0075 -0.0137169 -v 0.0193148 -0.0075 -0.0150449 -v 0.0177593 -0.0075 -0.013875 -v 0.02461 -0.0075 -0.0112059 -v 0.0248843 -0.0075 -0.00925 -v 0.0238083 -0.0075 -0.01301 -v 0.0225418 -0.0075 -0.0145232 -v 0.0209085 -0.0075 -0.015629 -v 0.0193617 -0.0075 -0.016288 -v 0.0165626 -0.0075 -0.0137175 -v 0.0154467 -0.0075 -0.0132553 -v 0.014486 -0.0075 -0.0125175 -v 0.0137538 -0.0075 -0.0115622 -v 0.0132916 -0.0075 -0.010446 -v 0.0131343 -0.0075 -0.00925 -v 0.0222266 -0.0075 -0.0080524 -v 0.0235547 -0.0075 -0.0076964 -v 0.0217646 -0.0075 -0.0069373 -v 0.0229553 -0.0075 -0.0062497 -v 0.0210297 -0.0075 -0.0059796 -v 0.022002 -0.0075 -0.00500735 -v 0.0207594 -0.0075 -0.00405388 -v 0.0200719 -0.0075 -0.00524466 -v 0.0189584 -0.0075 -0.0047831 -v 0.0193148 -0.0075 -0.00345514 -v 0.0177593 -0.0075 -0.00325 -v 0.0177593 -0.0075 -0.004625 -v 0.02461 -0.0075 -0.0072941 -v 0.0238083 -0.0075 -0.00549006 -v 0.0225418 -0.0075 -0.0039768 -v 0.0209085 -0.0075 -0.00287096 -v 0.0193617 -0.0075 -0.0022119 -v 0.0177593 -0.0075 -0.00182637 -v 0.0162069 -0.0075 -0.0034543 -v 0.0165626 -0.0075 -0.0047825 -v 0.0147592 -0.0075 -0.0040539 -v 0.0154467 -0.0075 -0.00524469 -v 0.013513 -0.0075 -0.00501106 -v 0.014486 -0.0075 -0.00598248 -v 0.012563 -0.0075 -0.0062503 -v 0.0137538 -0.0075 -0.0069378 -v 0.0132916 -0.0075 -0.008054 -v 0.0119634 -0.0075 -0.0076985 -v 0.0107846 -0.0075 -0.0075088 -v 0.0166766 -0.0075 -0.00212568 -v 0.0167117 -0.0075 -0.00106153 -v 0.008014 -0.0075 -0.00136532 -v 0.0090659 -0.0075 -0.00221207 -v 0.008476 -0.0075 5.5378e-05 -v 0.0065 -0.0075 0.000312658 -v 0.0106532 -0.0075 -0.00083587 -v 0.0116557 -0.0075 0.00089514 -v 0.0120812 -0.0075 2.32197e-05 -v 0.0130909 -0.0075 0.00076461 -v 0.0121778 -0.0075 0.00146398 -v 0.0120464 -0.0075 -0.0012165 -v 0.0129252 -0.0075 -0.000731 -v 0.0141125 -0.0075 -0.000110779 -v 0.0107617 -0.0075 -0.0057724 -v -0.0107791 -0.0075 -0.00925 -v -0.0107846 -0.0075 -0.0109912 -v -0.0117593 -0.0075 -0.00925 -v -0.0119634 -0.0075 -0.0108016 -v -0.0162069 -0.0075 -0.0150457 -v -0.0166766 -0.0075 -0.0163743 -v -0.0147592 -0.0075 -0.014446 -v -0.0177593 -0.0075 -0.01525 -v -0.0177593 -0.0075 -0.0166736 -v -0.0167117 -0.0075 -0.0174385 -v -0.008014 -0.0075 -0.0171347 -v -0.0090659 -0.0075 -0.016288 -v -0.008476 -0.0075 -0.0185554 -v -0.0065 -0.0075 -0.0188127 -v -0.0106532 -0.0075 -0.017664 -v -0.0087366 -0.0075 -0.0205014 -v -0.0065 -0.0075 -0.0212445 -v -0.0116557 -0.0075 -0.019395 -v -0.010708 -0.0075 -0.0196982 -v -0.0120812 -0.0075 -0.0185232 -v -0.0130909 -0.0075 -0.0192646 -v -0.0121778 -0.0075 -0.019964 -v -0.0120464 -0.0075 -0.0172835 -v -0.0129252 -0.0075 -0.017769 -v -0.013513 -0.0075 -0.013489 -v -0.0141125 -0.0075 -0.0183892 -v -0.0107617 -0.0075 -0.0127276 -v -0.012563 -0.0075 -0.0122497 -v -0.0222266 -0.0075 -0.0104476 -v -0.0223843 -0.0075 -0.00925 -v -0.0237593 -0.0075 -0.00925 -v -0.0235547 -0.0075 -0.0108036 -v -0.0217646 -0.0075 -0.0115627 -v -0.0229553 -0.0075 -0.0122503 -v -0.0210297 -0.0075 -0.0125204 -v -0.022002 -0.0075 -0.0134926 -v -0.0207594 -0.0075 -0.014446 -v -0.0200719 -0.0075 -0.0132553 -v -0.0189584 -0.0075 -0.0137169 -v -0.0193148 -0.0075 -0.0150449 -v -0.0177593 -0.0075 -0.013875 -v -0.0248843 -0.0075 -0.00925 -v -0.02461 -0.0075 -0.0112059 -v -0.0238083 -0.0075 -0.01301 -v -0.0225418 -0.0075 -0.0145232 -v -0.0209085 -0.0075 -0.015629 -v -0.0193617 -0.0075 -0.016288 -v -0.0165626 -0.0075 -0.0137175 -v -0.0154467 -0.0075 -0.0132553 -v -0.014486 -0.0075 -0.0125175 -v -0.0137538 -0.0075 -0.0115622 -v -0.0132916 -0.0075 -0.010446 -v -0.0131343 -0.0075 -0.00925 -v -0.0222266 -0.0075 -0.0080524 -v -0.0235547 -0.0075 -0.0076964 -v -0.0217646 -0.0075 -0.0069373 -v -0.0229553 -0.0075 -0.0062497 -v -0.0210297 -0.0075 -0.0059796 -v -0.022002 -0.0075 -0.00500735 -v -0.0200719 -0.0075 -0.00524466 -v -0.0207594 -0.0075 -0.00405388 -v -0.0189584 -0.0075 -0.0047831 -v -0.0193148 -0.0075 -0.00345514 -v -0.0177593 -0.0075 -0.004625 -v -0.0177593 -0.0075 -0.00325 -v -0.02461 -0.0075 -0.0072941 -v -0.0238083 -0.0075 -0.00549006 -v -0.0225418 -0.0075 -0.0039768 -v -0.0209085 -0.0075 -0.00287096 -v -0.0193617 -0.0075 -0.0022119 -v -0.0177593 -0.0075 -0.00182637 -v -0.0165626 -0.0075 -0.0047825 -v -0.0162069 -0.0075 -0.0034543 -v -0.0154467 -0.0075 -0.00524469 -v -0.0147592 -0.0075 -0.0040539 -v -0.014486 -0.0075 -0.00598248 -v -0.013513 -0.0075 -0.00501106 -v -0.0137538 -0.0075 -0.0069378 -v -0.012563 -0.0075 -0.0062503 -v -0.0132916 -0.0075 -0.008054 -v -0.0119634 -0.0075 -0.0076985 -v -0.0107846 -0.0075 -0.0075088 -v -0.0166766 -0.0075 -0.00212568 -v -0.0167117 -0.0075 -0.00106153 -v -0.008014 -0.0075 -0.00136532 -v -0.0090659 -0.0075 -0.00221207 -v -0.0065 -0.0075 0.000312658 -v -0.008476 -0.0075 5.5378e-05 -v -0.0106532 -0.0075 -0.00083587 -v -0.0116557 -0.0075 0.00089514 -v -0.0120812 -0.0075 2.32197e-05 -v -0.0121778 -0.0075 0.00146398 -v -0.0130909 -0.0075 0.00076461 -v -0.0120464 -0.0075 -0.0012165 -v -0.0129252 -0.0075 -0.000731 -v -0.0141125 -0.0075 -0.000110779 -v -0.0107617 -0.0075 -0.0057724 -v 4.8963e-05 -0.0075 -0.020494 -v 0.00149694 -0.0075 -0.0203843 -v 0.00149694 -0.0075 -0.0220123 -v 4.8963e-05 -0.0075 -0.022122 -v 0.0029119 -0.0075 -0.0201854 -v 0.0029119 -0.0075 -0.021941 -v 0.0042271 -0.0075 -0.0198377 -v 0.0042271 -0.0075 -0.0217646 -v 0.0054374 -0.0075 -0.019371 -v 0.0054374 -0.0075 -0.0215278 -v 0.00149694 -0.0075 0.00123304 -v 4.8963e-05 -0.0075 0.00134268 -v 0.0029119 -0.0075 0.00103423 -v 0.0042271 -0.0075 0.00068645 -v 0.0054374 -0.0075 0.00021983 -v -0.00149694 -0.0075 -0.0203843 -v -0.00149694 -0.0075 -0.0220123 -v -0.0029119 -0.0075 -0.0201854 -v -0.0029119 -0.0075 -0.021941 -v -0.0042271 -0.0075 -0.0198377 -v -0.0042271 -0.0075 -0.0217646 -v -0.0054374 -0.0075 -0.019371 -v -0.0054374 -0.0075 -0.0215278 -v -0.00149694 -0.0075 0.00123304 -v -0.0029119 -0.0075 0.00103423 -v -0.0042271 -0.0075 0.00068645 -v -0.0054374 -0.0075 0.00021983 -v 0.0222266 0.002 -0.0104476 -v 0.0223843 0.002 -0.00925 -v 0.0217646 0.002 -0.0115627 -v 0.0210297 0.002 -0.0125204 -v 0.0200719 0.002 -0.0132553 -v 0.0189584 0.002 -0.0137169 -v 0.0177593 0.002 -0.013875 -v 0.0165626 0.002 -0.0137175 -v 0.0154467 0.002 -0.0132553 -v 0.014486 0.002 -0.0125175 -v 0.0137538 0.002 -0.0115622 -v 0.0132916 0.002 -0.010446 -v 0.0131343 0.002 -0.00925 -v 0.0222266 0.002 -0.0080524 -v 0.0217646 0.002 -0.0069373 -v 0.0210297 0.002 -0.0059796 -v 0.0200719 0.002 -0.00524466 -v 0.0189584 0.002 -0.0047831 -v 0.0177593 0.002 -0.004625 -v 0.0165626 0.002 -0.0047825 -v 0.0154467 0.002 -0.00524469 -v 0.014486 0.002 -0.00598248 -v 0.0137538 0.002 -0.0069378 -v 0.0132916 0.002 -0.008054 -v -0.0222266 0.002 -0.0104476 -v -0.0223843 0.002 -0.00925 -v -0.0217646 0.002 -0.0115627 -v -0.0210297 0.002 -0.0125204 -v -0.0200719 0.002 -0.0132553 -v -0.0189584 0.002 -0.0137169 -v -0.0177593 0.002 -0.013875 -v -0.0165626 0.002 -0.0137175 -v -0.0154467 0.002 -0.0132553 -v -0.014486 0.002 -0.0125175 -v -0.0137538 0.002 -0.0115622 -v -0.0132916 0.002 -0.010446 -v -0.0131343 0.002 -0.00925 -v -0.0222266 0.002 -0.0080524 -v -0.0217646 0.002 -0.0069373 -v -0.0210297 0.002 -0.0059796 -v -0.0200719 0.002 -0.00524466 -v -0.0189584 0.002 -0.0047831 -v -0.0177593 0.002 -0.004625 -v -0.0165626 0.002 -0.0047825 -v -0.0154467 0.002 -0.00524469 -v -0.014486 0.002 -0.00598248 -v -0.0137538 0.002 -0.0069378 -v -0.0132916 0.002 -0.008054 -v 0.000781428 0.00161437 -0.011588 -v 0.0010918 0.0023048 -0.011467 -v 4.8963e-05 0.0023048 -0.0116999 -v 4.8963e-05 0.00165243 -0.0116999 -v 0.00133196 0.00150598 -0.0113372 -v 0.0017277 0.0023048 -0.0110345 -v 0.00139701 0.00076758 -0.0112958 -v 0.0017277 0.00115243 -0.0110345 -v 0.00102184 0.0011524 -0.0070027 -v 4.8963e-05 0.0011524 -0.00680007 -v 4.8963e-05 0.0023048 -0.0068001 -v 0.0010918 0.0023048 -0.007033 -v 0.0017277 0.0023048 -0.0074655 -v 0.0017277 0.00115243 -0.0074655 -v -0.000781428 0.00161437 -0.011588 -v -0.0010918 0.0023048 -0.011467 -v -0.0017277 0.0023048 -0.0110345 -v -0.00133196 0.00150598 -0.0113372 -v -0.0017277 0.00115243 -0.0110345 -v -0.00139701 0.00076758 -0.0112958 -v -0.00102184 0.0011524 -0.0070027 -v -0.0010918 0.0023048 -0.007033 -v -0.0017277 0.00115243 -0.0074655 -v -0.0017277 0.0023048 -0.0074655 -v 0.0022885 0.00195405 -0.0102427 -v 0.0022932 0.00097703 -0.0102324 -v 0.00249896 0.0018873 -0.00925 -v 0.00249896 0.00094365 -0.00925 -v 0.0022885 0.00195405 -0.0082573 -v 0.0022932 0.00097703 -0.0082676 -v -0.0022885 0.00195405 -0.0102427 -v -0.0022932 0.00097703 -0.0102324 -v -0.00249896 0.0018873 -0.00925 -v -0.00249896 0.00094365 -0.00925 -v -0.0022885 0.00195405 -0.0082573 -v -0.0022932 0.00097703 -0.0082676 -v 0.00170827 0.00324768 -0.0110522 -v 0.0022838 0.00293108 -0.010253 -v 0.0022791 0.0039081 -0.0102634 -v 0.00168883 0.00419057 -0.01107 -v 0.00249896 0.00377459 -0.00925 -v 0.00249896 0.00283094 -0.00925 -v -0.00170827 0.00324768 -0.0074478 -v -0.0022838 0.00293108 -0.008247 -v -0.0022791 0.0039081 -0.0082366 -v -0.00168883 0.00419057 -0.00743008 -v -0.00249896 0.00377459 -0.00925 -v -0.00249896 0.00283094 -0.00925 -v 0.0022958 0.005204 -0.0102255 -v 0.0017351 0.00534529 -0.0110262 -v 0.00231247 0.0065 -0.0101876 -v 0.00178137 0.0065 -0.0109824 -v 0.00249896 0.0051373 -0.00925 -v 0.00249896 0.0065 -0.00925 -v -0.0022958 0.005204 -0.0082745 -v -0.0017351 0.00534529 -0.0074738 -v -0.00231247 0.0065 -0.0083124 -v -0.00178137 0.0065 -0.00751759 -v -0.00249896 0.0051373 -0.00925 -v -0.00249896 0.0065 -0.00925 -v 0.00170827 0.00324768 -0.0074478 -v 0.00168883 0.00419057 -0.00743008 -v 0.0022791 0.0039081 -0.0082366 -v 0.0022838 0.00293108 -0.008247 -v -0.00170827 0.00324768 -0.0110522 -v -0.00168883 0.00419057 -0.01107 -v -0.0022791 0.0039081 -0.0102634 -v -0.0022838 0.00293108 -0.010253 -v 0.00107038 0.00334614 -0.0114768 -v 4.8963e-05 0.0034024 -0.0117 -v 0.00104896 0.00438748 -0.0114866 -v 4.8963e-05 0.0045 -0.0117 -v 0.00104896 0.0053875 -0.0114866 -v 4.8963e-05 0.0055 -0.0117 -v 0.00104896 0.0065 -0.0114866 -v 4.8963e-05 0.0065 -0.0116999 -v 0.00107038 0.00334614 -0.0070232 -v 4.8963e-05 0.0034024 -0.0068001 -v 0.00104896 0.00438748 -0.00701337 -v 4.8963e-05 0.0045 -0.0068 -v 4.8963e-05 0.0055 -0.0068001 -v 0.00104896 0.0053875 -0.0070134 -v 4.8963e-05 0.0065 -0.0068001 -v 0.00104896 0.0065 -0.00701337 -v 0.0017351 0.00534529 -0.0074738 -v 0.00178137 0.0065 -0.00751759 -v -0.00107038 0.00334614 -0.0114768 -v -0.00104896 0.00438748 -0.0114866 -v -0.00104896 0.0053875 -0.0114866 -v -0.00104896 0.0065 -0.0114866 -v -0.0017351 0.00534529 -0.0110262 -v -0.00178137 0.0065 -0.0109824 -v -0.00107038 0.00334614 -0.0070232 -v -0.00104896 0.00438748 -0.00701337 -v -0.00104896 0.0053875 -0.0070134 -v -0.00104896 0.0065 -0.00701337 -v 0.0022958 0.005204 -0.0082745 -v 0.00231247 0.0065 -0.0083124 -v -0.0022958 0.005204 -0.0102255 -v -0.00231247 0.0065 -0.0101876 -v 0.0032389 0.0065 -0.0146142 -v 0.0043224 0.0065 -0.01375 -v 0.0032389 0.0065 -0.0038858 -v 0.0043224 0.0065 -0.00475 -v -0.0032389 0.0065 -0.0146142 -v -0.0043224 0.0065 -0.01375 -v -0.0032389 0.0065 -0.0038858 -v -0.0043224 0.0065 -0.00475 -v 4.8963e-05 0.0065 -0.012725 -v 0.0011229 0.0065 -0.0126915 -v 0.00111594 0.0065 -0.01375 -v 4.8963e-05 0.0065 -0.01375 -v 0.00219685 0.0065 -0.012658 -v 0.00218293 0.0065 -0.01375 -v 0.00325477 0.0065 -0.012625 -v 0.003234 0.0065 -0.01375 -v 0.00327555 0.0065 -0.0115 -v 0.0032963 0.0065 -0.010375 -v 0.0033171 0.0065 -0.00925 -v 0.0047266 0.0065 -0.0126096 -v 0.00497879 0.0065 -0.0114933 -v 0.005126 0.0065 -0.010382 -v 0.005183 0.0065 -0.00925 -v 4.8963e-05 0.0065 -0.00577507 -v 4.8963e-05 0.0065 -0.00475 -v 0.00111594 0.0065 -0.00475 -v 0.0011229 0.0065 -0.0058085 -v 0.00218293 0.0065 -0.00475 -v 0.00219685 0.0065 -0.005842 -v 0.003234 0.0065 -0.00475 -v 0.00325477 0.0065 -0.005875 -v 0.00327555 0.0065 -0.007 -v 0.0032963 0.0065 -0.008125 -v 0.0047266 0.0065 -0.0058904 -v 0.00497879 0.0065 -0.00700669 -v 0.005126 0.0065 -0.008118 -v -0.00111594 0.0065 -0.01375 -v -0.0011229 0.0065 -0.0126915 -v -0.00218293 0.0065 -0.01375 -v -0.00219685 0.0065 -0.012658 -v -0.003234 0.0065 -0.01375 -v -0.00325477 0.0065 -0.012625 -v -0.00327555 0.0065 -0.0115 -v -0.0032963 0.0065 -0.010375 -v -0.0033171 0.0065 -0.00925 -v -0.0047266 0.0065 -0.0126096 -v -0.00497879 0.0065 -0.0114933 -v -0.005126 0.0065 -0.010382 -v -0.005183 0.0065 -0.00925 -v -0.0011229 0.0065 -0.0058085 -v -0.00111594 0.0065 -0.00475 -v -0.00219685 0.0065 -0.005842 -v -0.00218293 0.0065 -0.00475 -v -0.00325477 0.0065 -0.005875 -v -0.003234 0.0065 -0.00475 -v -0.00327555 0.0065 -0.007 -v -0.0032963 0.0065 -0.008125 -v -0.0047266 0.0065 -0.0058904 -v -0.00497879 0.0065 -0.00700669 -v -0.005126 0.0065 -0.008118 -v 0.00111594 0.0065 -0.015 -v 4.8963e-05 0.0065 -0.015 -v 0.00218293 0.0065 -0.015 -v 4.8963e-05 0.0065 -0.0035 -v 0.00111594 0.0065 -0.0035 -v 0.00218293 0.0065 -0.0035 -v -0.00111594 0.0065 -0.015 -v -0.00218293 0.0065 -0.015 -v -0.00111594 0.0065 -0.0035 -v -0.00218293 0.0065 -0.0035 -v 0.00104896 0.0113617 -0.0161782 -v 4.8963e-05 0.0113617 -0.01625 -v 0.0021601 0.0113617 -0.015924 -v 0.0032438 0.0113617 -0.0154784 -v 0.0043334 0.0113617 -0.0147856 -v 0.0054108 0.0113617 -0.01375 -v 0.006682 0.0113617 -0.0114866 -v 0.0061985 0.0113617 -0.0125942 -v 0.0069557 0.0113617 -0.010389 -v 0.007049 0.0113617 -0.00925 -v 0.00104896 0.0113617 -0.00232179 -v 4.8963e-05 0.0113617 -0.00225 -v 0.0021601 0.0113617 -0.00257594 -v 0.0032438 0.0113617 -0.0030216 -v 0.0043334 0.0113617 -0.00371436 -v 0.0054108 0.0113617 -0.00475 -v 0.0061985 0.0113617 -0.0059058 -v 0.006682 0.0113617 -0.00701337 -v 0.0069557 0.0113617 -0.0081109 -v -0.00104896 0.0113617 -0.0161782 -v -0.0021601 0.0113617 -0.015924 -v -0.0032438 0.0113617 -0.0154784 -v -0.0043334 0.0113617 -0.0147856 -v -0.0054108 0.0113617 -0.01375 -v -0.0061985 0.0113617 -0.0125942 -v -0.006682 0.0113617 -0.0114866 -v -0.0069557 0.0113617 -0.010389 -v -0.007049 0.0113617 -0.00925 -v -0.00104896 0.0113617 -0.00232179 -v -0.0021601 0.0113617 -0.00257594 -v -0.0032438 0.0113617 -0.0030216 -v -0.0043334 0.0113617 -0.00371436 -v -0.0054108 0.0113617 -0.00475 -v -0.0061985 0.0113617 -0.0059058 -v -0.006682 0.0113617 -0.00701337 -v -0.0069557 0.0113617 -0.0081109 -v 0.00104896 0.0141463 -0.0161782 -v 4.8963e-05 0.0141463 -0.01625 -v 0.0021601 0.0141463 -0.015924 -v 0.0032438 0.0141463 -0.0154784 -v 0.0043334 0.0141463 -0.0147856 -v 0.0054108 0.0141463 -0.01375 -v 0.006682 0.0141463 -0.0114866 -v 0.0061985 0.0141463 -0.0125942 -v 0.0069557 0.0141463 -0.010389 -v 0.007049 0.0141463 -0.00925 -v 4.8963e-05 0.0141463 -0.00225 -v 0.00104896 0.0141463 -0.00232179 -v 0.0021601 0.0141463 -0.00257594 -v 0.0032438 0.0141463 -0.0030216 -v 0.0043334 0.0141463 -0.00371436 -v 0.0054108 0.0141463 -0.00475 -v 0.0061985 0.0141463 -0.0059058 -v 0.006682 0.0141463 -0.00701337 -v 0.0069557 0.0141463 -0.0081109 -v -0.00104896 0.0141463 -0.0161782 -v -0.0021601 0.0141463 -0.015924 -v -0.0032438 0.0141463 -0.0154784 -v -0.0043334 0.0141463 -0.0147856 -v -0.0054108 0.0141463 -0.01375 -v -0.0061985 0.0141463 -0.0125942 -v -0.006682 0.0141463 -0.0114866 -v -0.0069557 0.0141463 -0.010389 -v -0.007049 0.0141463 -0.00925 -v -0.00104896 0.0141463 -0.00232179 -v -0.0021601 0.0141463 -0.00257594 -v -0.0032438 0.0141463 -0.0030216 -v -0.0043334 0.0141463 -0.00371436 -v -0.0054108 0.0141463 -0.00475 -v -0.006682 0.0141463 -0.00701337 -v -0.0061985 0.0141463 -0.0059058 -v -0.0069557 0.0141463 -0.0081109 -v 0.00104896 0.0169309 -0.0161782 -v 4.8963e-05 0.0169309 -0.01625 -v 0.0021601 0.0169309 -0.015924 -v 0.0032438 0.0169309 -0.0154784 -v 0.0043334 0.0169309 -0.0147856 -v 0.0054108 0.0169309 -0.01375 -v 0.006682 0.0169309 -0.0114866 -v 0.0061985 0.0169309 -0.0125942 -v 0.0069557 0.0169309 -0.010389 -v 0.007049 0.0169309 -0.00925 -v 4.8963e-05 0.0169309 -0.00225 -v 0.00104896 0.0169309 -0.00232179 -v 0.0021601 0.0169309 -0.00257594 -v 0.0032438 0.0169309 -0.0030216 -v 0.0043334 0.0169309 -0.00371436 -v 0.0054108 0.0169309 -0.00475 -v 0.0061985 0.0169309 -0.0059058 -v 0.006682 0.0169309 -0.00701337 -v 0.0069557 0.0169309 -0.0081109 -v -0.00104896 0.0169309 -0.0161782 -v -0.0021601 0.0169309 -0.015924 -v -0.0032438 0.0169309 -0.0154784 -v -0.0043334 0.0169309 -0.0147856 -v -0.0054108 0.0169309 -0.01375 -v -0.0061985 0.0169309 -0.0125942 -v -0.006682 0.0169309 -0.0114866 -v -0.0069557 0.0169309 -0.010389 -v -0.007049 0.0169309 -0.00925 -v -0.00104896 0.0169309 -0.00232179 -v -0.0021601 0.0169309 -0.00257594 -v -0.0032438 0.0169309 -0.0030216 -v -0.0043334 0.0169309 -0.00371436 -v -0.0054108 0.0169309 -0.00475 -v -0.006682 0.0169309 -0.00701337 -v -0.0061985 0.0169309 -0.0059058 -v -0.0069557 0.0169309 -0.0081109 -v 0.00104896 0.0197154 -0.0161782 -v 4.8963e-05 0.0197154 -0.01625 -v 0.0021601 0.0197154 -0.015924 -v 0.0032438 0.0197154 -0.0154784 -v 0.0043334 0.0197154 -0.0147856 -v 0.0054108 0.0197154 -0.01375 -v 0.006682 0.0197154 -0.0114866 -v 0.0061985 0.0197154 -0.0125942 -v 0.0069557 0.0197154 -0.010389 -v 0.007049 0.0197154 -0.00925 -v 4.8963e-05 0.0197154 -0.00225 -v 0.00104896 0.0197154 -0.00232179 -v 0.0021601 0.0197154 -0.00257594 -v 0.0032438 0.0197154 -0.0030216 -v 0.0043334 0.0197154 -0.00371436 -v 0.0054108 0.0197154 -0.00475 -v 0.0061985 0.0197154 -0.0059058 -v 0.006682 0.0197154 -0.00701337 -v 0.0069557 0.0197154 -0.0081109 -v -0.00104896 0.0197154 -0.0161782 -v -0.0021601 0.0197154 -0.015924 -v -0.0032438 0.0197154 -0.0154784 -v -0.0043334 0.0197154 -0.0147856 -v -0.0054108 0.0197154 -0.01375 -v -0.0061985 0.0197154 -0.0125942 -v -0.006682 0.0197154 -0.0114866 -v -0.0069557 0.0197154 -0.010389 -v -0.007049 0.0197154 -0.00925 -v -0.00104896 0.0197154 -0.00232179 -v -0.0021601 0.0197154 -0.00257594 -v -0.0032438 0.0197154 -0.0030216 -v -0.0043334 0.0197154 -0.00371436 -v -0.0054108 0.0197154 -0.00475 -v -0.006682 0.0197154 -0.00701337 -v -0.0061985 0.0197154 -0.0059058 -v -0.0069557 0.0197154 -0.0081109 -g patch1 -f 1 2 3 -f 4 5 6 -f 7 8 9 -f 10 11 12 -f 13 11 14 -f 15 12 16 -f 17 18 19 -f 20 21 22 -f 23 21 24 -f 25 20 26 -f 27 28 29 -f 30 31 32 -f 33 34 35 -f 36 37 38 -f 39 37 40 -f 41 36 42 -f 43 44 45 -f 46 47 48 -f 49 47 50 -f 51 48 52 -f 53 54 55 -f 55 56 53 -f 57 53 56 -f 56 58 57 -f 57 58 59 -f 59 60 57 -f 60 59 61 -f 61 62 60 -f 63 60 62 -f 62 64 63 -f 60 63 65 -f 65 57 60 -f 53 57 65 -f 65 66 53 -f 66 67 54 -f 54 53 66 -f 68 69 70 -f 70 71 68 -f 72 73 74 -f 74 75 72 -f 76 77 73 -f 73 72 76 -f 76 78 79 -f 79 77 76 -f 78 62 61 -f 61 79 78 -f 80 64 62 -f 62 78 80 -f 78 76 81 -f 81 80 78 -f 72 82 81 -f 81 76 72 -f 82 72 75 -f 75 83 82 -f 84 85 86 -f 86 87 84 -f 88 89 84 -f 84 87 88 -f 90 91 11 -f 11 92 90 -f 91 90 93 -f 93 94 91 -f 95 96 97 -f 97 14 95 -f 95 91 94 -f 94 96 95 -f 14 11 91 -f 91 95 14 -f 98 99 100 -f 100 101 98 -f 98 102 103 -f 103 99 98 -f 98 101 104 -f 104 102 98 -f 105 106 103 -f 103 102 105 -f 106 105 107 -f 107 108 106 -f 109 110 104 -f 104 111 109 -f 110 105 102 -f 102 104 110 -f 110 112 107 -f 107 105 110 -f 109 111 113 -f 113 114 109 -f 114 112 110 -f 110 109 114 -f 114 113 115 -f 115 112 114 -f 7 101 100 -f 100 116 7 -f 7 9 104 -f 104 101 7 -f 117 118 111 -f 111 104 117 -f 15 16 118 -f 118 117 15 -f 117 104 9 -f 9 15 117 -f 12 15 9 -f 9 10 12 -f 92 11 10 -f 10 119 92 -f 16 12 11 -f 11 13 16 -f 120 97 115 -f 115 113 120 -f 14 97 120 -f 120 13 14 -f 118 120 113 -f 113 111 118 -f 16 13 120 -f 120 118 16 -f 85 84 121 -f 121 116 85 -f 89 122 121 -f 121 84 89 -f 8 7 116 -f 116 121 8 -f 122 119 8 -f 8 121 122 -f 10 9 8 -f 8 119 10 -f 68 123 124 -f 124 69 68 -f 125 126 127 -f 127 128 125 -f 128 127 129 -f 129 130 128 -f 131 125 128 -f 128 132 131 -f 132 128 130 -f 130 133 132 -f 134 131 132 -f 132 135 134 -f 135 132 133 -f 133 136 135 -f 137 134 135 -f 135 138 137 -f 138 135 136 -f 136 139 138 -f 140 137 138 -f 138 141 140 -f 141 138 139 -f 139 142 141 -f 141 94 93 -f 93 140 141 -f 142 96 94 -f 94 141 142 -f 143 144 127 -f 127 126 143 -f 144 145 129 -f 129 127 144 -f 146 147 144 -f 144 143 146 -f 147 148 145 -f 145 144 147 -f 149 150 147 -f 147 146 149 -f 150 151 148 -f 148 147 150 -f 152 153 150 -f 150 149 152 -f 153 154 151 -f 151 150 153 -f 155 156 153 -f 153 152 155 -f 156 157 154 -f 154 153 156 -f 156 155 158 -f 158 159 156 -f 157 156 159 -f 159 160 157 -f 161 87 86 -f 86 162 161 -f 88 87 161 -f 161 163 88 -f 164 165 21 -f 21 166 164 -f 166 159 158 -f 158 164 166 -f 167 23 168 -f 168 160 167 -f 167 160 159 -f 159 166 167 -f 23 167 166 -f 166 21 23 -f 169 170 171 -f 171 172 169 -f 169 172 173 -f 173 174 169 -f 169 174 175 -f 175 170 169 -f 173 176 177 -f 177 174 173 -f 178 179 175 -f 175 180 178 -f 180 175 174 -f 174 177 180 -f 178 181 182 -f 182 179 178 -f 181 178 180 -f 180 183 181 -f 181 183 184 -f 184 182 181 -f 19 185 171 -f 171 170 19 -f 19 170 175 -f 175 17 19 -f 186 175 179 -f 179 187 186 -f 26 186 187 -f 187 25 26 -f 186 26 17 -f 17 175 186 -f 20 22 17 -f 17 26 20 -f 165 188 22 -f 22 21 165 -f 25 24 21 -f 21 20 25 -f 184 168 189 -f 189 182 184 -f 23 24 189 -f 189 168 23 -f 187 179 182 -f 182 189 187 -f 25 187 189 -f 189 24 25 -f 162 185 190 -f 190 161 162 -f 163 161 190 -f 190 191 163 -f 18 190 185 -f 185 19 18 -f 191 190 18 -f 18 188 191 -f 22 188 18 -f 18 17 22 -f 192 193 55 -f 55 54 192 -f 194 195 193 -f 193 192 194 -f 194 196 197 -f 197 195 194 -f 196 198 199 -f 199 197 196 -f 200 201 198 -f 198 196 200 -f 196 194 202 -f 202 200 196 -f 192 203 202 -f 202 194 192 -f 203 192 54 -f 54 67 203 -f 204 205 206 -f 206 207 204 -f 208 75 74 -f 74 209 208 -f 210 208 209 -f 209 211 210 -f 210 211 212 -f 212 213 210 -f 213 212 199 -f 199 198 213 -f 214 213 198 -f 198 201 214 -f 213 214 215 -f 215 210 213 -f 208 210 215 -f 215 216 208 -f 216 83 75 -f 75 208 216 -f 217 218 219 -f 219 220 217 -f 221 218 217 -f 217 222 221 -f 223 224 37 -f 37 225 223 -f 225 226 227 -f 227 223 225 -f 228 39 229 -f 229 230 228 -f 228 230 226 -f 226 225 228 -f 39 228 225 -f 225 37 39 -f 231 232 233 -f 233 234 231 -f 231 234 235 -f 235 236 231 -f 231 236 237 -f 237 232 231 -f 238 236 235 -f 235 239 238 -f 239 240 241 -f 241 238 239 -f 242 243 237 -f 237 244 242 -f 244 237 236 -f 236 238 244 -f 244 238 241 -f 241 245 244 -f 242 246 247 -f 247 243 242 -f 246 242 244 -f 244 245 246 -f 246 245 248 -f 248 247 246 -f 35 249 233 -f 233 232 35 -f 35 232 237 -f 237 33 35 -f 250 237 243 -f 243 251 250 -f 42 250 251 -f 251 41 42 -f 250 42 33 -f 33 237 250 -f 36 38 33 -f 33 42 36 -f 224 252 38 -f 38 37 224 -f 41 40 37 -f 37 36 41 -f 253 247 248 -f 248 229 253 -f 39 40 253 -f 253 229 39 -f 251 243 247 -f 247 253 251 -f 41 251 253 -f 253 40 41 -f 220 249 254 -f 254 217 220 -f 222 217 254 -f 254 255 222 -f 34 254 249 -f 249 35 34 -f 255 254 34 -f 34 252 255 -f 38 252 34 -f 34 33 38 -f 204 207 256 -f 256 257 204 -f 258 259 260 -f 260 261 258 -f 259 262 263 -f 263 260 259 -f 264 265 259 -f 259 258 264 -f 265 266 262 -f 262 259 265 -f 267 268 265 -f 265 264 267 -f 268 269 266 -f 266 265 268 -f 270 271 268 -f 268 267 270 -f 271 272 269 -f 269 268 271 -f 273 274 271 -f 271 270 273 -f 274 275 272 -f 272 271 274 -f 274 273 227 -f 227 226 274 -f 275 274 226 -f 226 230 275 -f 276 261 260 -f 260 277 276 -f 277 260 263 -f 263 278 277 -f 279 276 277 -f 277 280 279 -f 280 277 278 -f 278 281 280 -f 282 279 280 -f 280 283 282 -f 283 280 281 -f 281 284 283 -f 285 282 283 -f 283 286 285 -f 286 283 284 -f 284 287 286 -f 288 285 286 -f 286 289 288 -f 289 286 287 -f 287 290 289 -f 289 291 292 -f 292 288 289 -f 290 293 291 -f 291 289 290 -f 294 295 219 -f 219 218 294 -f 221 296 294 -f 294 218 221 -f 297 298 47 -f 47 299 297 -f 298 297 292 -f 292 291 298 -f 300 293 301 -f 301 50 300 -f 300 298 291 -f 291 293 300 -f 50 47 298 -f 298 300 50 -f 302 303 304 -f 304 305 302 -f 302 306 307 -f 307 303 302 -f 302 305 308 -f 308 306 302 -f 307 306 309 -f 309 310 307 -f 311 312 308 -f 308 313 311 -f 312 309 306 -f 306 308 312 -f 311 313 314 -f 314 315 311 -f 315 316 312 -f 312 311 315 -f 315 314 317 -f 317 316 315 -f 43 305 304 -f 304 318 43 -f 43 45 308 -f 308 305 43 -f 319 320 313 -f 313 308 319 -f 51 52 320 -f 320 319 51 -f 319 308 45 -f 45 51 319 -f 48 51 45 -f 45 46 48 -f 299 47 46 -f 46 321 299 -f 52 48 47 -f 47 49 52 -f 317 314 322 -f 322 301 317 -f 50 301 322 -f 322 49 50 -f 320 322 314 -f 314 313 320 -f 52 49 322 -f 322 320 52 -f 295 294 323 -f 323 318 295 -f 296 324 323 -f 323 294 296 -f 44 43 318 -f 318 323 44 -f 324 321 44 -f 44 323 324 -f 46 45 44 -f 44 321 46 -f 325 326 1 -f 327 328 6 -f 329 330 331 -f 332 331 333 -f 334 335 336 -f 336 337 338 -f 177 183 180 -f 339 340 341 -f 342 343 341 -f 344 345 346 -f 347 348 346 -f 349 350 29 -f 351 352 30 -f 353 354 355 -f 355 356 357 -f 358 359 360 -f 361 360 362 -f 316 309 312 -f 363 364 365 -f 366 367 365 -f 368 369 370 -f 371 372 370 -f 58 2 1 -f 1 326 58 -f 373 374 100 -f 100 99 373 -f 374 375 116 -f 116 100 374 -f 376 377 375 -f 375 374 376 -f 378 376 374 -f 374 373 378 -f 375 379 85 -f 85 116 375 -f 379 380 86 -f 86 85 379 -f 377 381 379 -f 379 375 377 -f 381 382 380 -f 380 379 381 -f 383 384 377 -f 377 376 383 -f 383 385 386 -f 386 384 383 -f 387 383 376 -f 376 378 387 -f 388 385 383 -f 383 387 388 -f 384 389 381 -f 381 377 384 -f 384 386 390 -f 390 389 384 -f 389 391 382 -f 382 381 389 -f 392 391 389 -f 389 390 392 -f 393 394 395 -f 395 396 393 -f 394 397 398 -f 398 395 394 -f 396 395 399 -f 399 400 396 -f 398 401 399 -f 399 395 398 -f 400 399 402 -f 402 403 400 -f 402 399 401 -f 401 404 402 -f 405 406 407 -f 407 408 405 -f 406 405 409 -f 409 410 406 -f 409 403 411 -f 411 410 409 -f 411 403 402 -f 402 412 411 -f 412 402 404 -f 404 413 412 -f 406 108 414 -f 414 407 406 -f 108 406 410 -f 410 415 108 -f 415 410 411 -f 411 416 415 -f 416 411 412 -f 412 417 416 -f 417 412 413 -f 413 418 417 -f 77 327 6 -f 6 5 77 -f 419 420 421 -f 421 422 419 -f 422 421 423 -f 423 424 422 -f 420 425 426 -f 426 421 420 -f 423 421 426 -f 426 427 423 -f 425 428 429 -f 429 426 425 -f 429 430 427 -f 427 426 429 -f 431 408 407 -f 407 432 431 -f 432 433 434 -f 434 431 432 -f 434 433 435 -f 435 428 434 -f 435 436 429 -f 429 428 435 -f 436 437 430 -f 430 429 436 -f 432 407 414 -f 414 438 432 -f 438 439 433 -f 433 432 438 -f 439 440 435 -f 435 433 439 -f 440 441 436 -f 436 435 440 -f 441 442 437 -f 437 436 441 -f 443 444 445 -f 445 446 443 -f 444 447 448 -f 448 445 444 -f 446 445 449 -f 449 450 446 -f 445 448 451 -f 451 449 445 -f 450 449 452 -f 452 453 450 -f 449 451 454 -f 454 452 449 -f 453 452 455 -f 455 456 453 -f 452 454 457 -f 457 455 452 -f 456 455 458 -f 458 459 456 -f 455 457 460 -f 460 458 455 -f 461 462 463 -f 463 464 461 -f 462 465 466 -f 466 463 462 -f 459 458 462 -f 462 461 459 -f 458 460 465 -f 465 462 458 -f 467 464 463 -f 463 468 467 -f 468 463 466 -f 466 469 468 -f 470 467 468 -f 468 471 470 -f 471 468 469 -f 469 472 471 -f 473 474 475 -f 475 476 473 -f 477 473 476 -f 476 478 477 -f 476 475 479 -f 479 480 476 -f 478 476 480 -f 480 481 478 -f 482 480 479 -f 479 483 482 -f 484 481 480 -f 480 482 484 -f 485 481 484 -f 484 486 485 -f 487 485 486 -f 486 488 487 -f 482 489 490 -f 490 484 482 -f 490 489 491 -f 491 492 490 -f 483 332 489 -f 489 482 483 -f 333 491 489 -f 489 332 333 -f 486 484 490 -f 490 493 486 -f 493 490 492 -f 492 494 493 -f 493 495 488 -f 488 486 493 -f 495 493 494 -f 494 496 495 -f 474 497 498 -f 498 475 474 -f 497 499 500 -f 500 498 497 -f 501 479 475 -f 475 498 501 -f 502 501 498 -f 498 500 502 -f 479 501 329 -f 329 483 479 -f 501 502 330 -f 330 329 501 -f 332 483 329 -f 329 331 332 -f 503 504 505 -f 505 506 503 -f 504 507 508 -f 508 505 504 -f 509 510 504 -f 504 503 509 -f 510 511 507 -f 507 504 510 -f 509 512 513 -f 513 510 509 -f 510 513 514 -f 514 511 510 -f 512 515 516 -f 516 513 512 -f 513 516 517 -f 517 514 513 -f 515 518 519 -f 519 516 515 -f 520 517 516 -f 516 519 520 -f 521 522 523 -f 523 524 521 -f 524 523 525 -f 525 526 524 -f 518 521 524 -f 524 519 518 -f 519 524 526 -f 526 520 519 -f 522 527 528 -f 528 523 522 -f 523 528 529 -f 529 525 523 -f 527 530 531 -f 531 528 527 -f 528 531 532 -f 532 529 528 -f 533 68 71 -f 71 534 533 -f 71 70 535 -f 535 536 71 -f 534 71 536 -f 536 537 534 -f 538 539 540 -f 540 541 538 -f 541 537 542 -f 542 538 541 -f 542 537 536 -f 536 543 542 -f 543 536 535 -f 535 544 543 -f 545 543 544 -f 544 546 545 -f 543 545 547 -f 547 542 543 -f 538 542 547 -f 547 548 538 -f 548 549 539 -f 539 538 548 -f 550 172 171 -f 171 551 550 -f 551 171 185 -f 185 552 551 -f 553 551 552 -f 552 554 553 -f 555 550 551 -f 551 553 555 -f 552 185 162 -f 162 556 552 -f 556 162 86 -f 86 380 556 -f 554 552 556 -f 556 557 554 -f 557 556 380 -f 380 382 557 -f 558 553 554 -f 554 559 558 -f 558 559 560 -f 560 561 558 -f 562 555 553 -f 553 558 562 -f 563 562 558 -f 558 561 563 -f 559 554 557 -f 557 564 559 -f 559 564 565 -f 565 560 559 -f 564 557 382 -f 382 391 564 -f 392 565 564 -f 564 391 392 -f 566 567 568 -f 568 569 566 -f 568 567 570 -f 570 571 568 -f 566 342 572 -f 572 567 566 -f 570 567 572 -f 572 573 570 -f 342 341 574 -f 574 572 342 -f 574 575 573 -f 573 572 574 -f 576 577 578 -f 578 579 576 -f 579 580 340 -f 340 576 579 -f 580 581 341 -f 341 340 580 -f 581 582 574 -f 574 341 581 -f 582 583 575 -f 575 574 582 -f 579 578 584 -f 584 176 579 -f 176 585 580 -f 580 579 176 -f 585 586 581 -f 581 580 585 -f 582 581 586 -f 586 587 582 -f 587 588 583 -f 583 582 587 -f 589 590 591 -f 591 592 589 -f 591 593 594 -f 594 592 591 -f 589 592 595 -f 595 348 589 -f 594 596 595 -f 595 592 594 -f 348 595 597 -f 597 346 348 -f 597 595 596 -f 596 598 597 -f 599 600 578 -f 578 577 599 -f 600 599 344 -f 344 601 600 -f 601 344 346 -f 346 602 601 -f 602 346 597 -f 597 603 602 -f 603 597 598 -f 598 604 603 -f 600 605 584 -f 584 578 600 -f 605 600 601 -f 601 606 605 -f 606 601 602 -f 602 607 606 -f 603 608 607 -f 607 602 603 -f 608 603 604 -f 604 609 608 -f 610 611 612 -f 612 613 610 -f 613 612 614 -f 614 615 613 -f 611 616 617 -f 617 612 611 -f 612 617 618 -f 618 614 612 -f 616 619 620 -f 620 617 616 -f 617 620 621 -f 621 618 617 -f 619 622 623 -f 623 620 619 -f 620 623 624 -f 624 621 620 -f 622 625 626 -f 626 623 622 -f 623 626 627 -f 627 624 623 -f 628 629 630 -f 630 631 628 -f 631 630 632 -f 632 633 631 -f 625 628 631 -f 631 626 625 -f 626 631 633 -f 633 627 626 -f 634 635 630 -f 630 629 634 -f 635 636 632 -f 632 630 635 -f 470 471 635 -f 635 634 470 -f 471 472 636 -f 636 635 471 -f 637 638 639 -f 639 640 637 -f 641 642 638 -f 638 637 641 -f 638 643 644 -f 644 639 638 -f 642 645 643 -f 643 638 642 -f 646 647 644 -f 644 643 646 -f 648 646 643 -f 643 645 648 -f 649 650 648 -f 648 645 649 -f 487 488 650 -f 650 649 487 -f 646 648 651 -f 651 652 646 -f 651 653 654 -f 654 652 651 -f 647 646 652 -f 652 337 647 -f 338 337 652 -f 652 654 338 -f 650 655 651 -f 651 648 650 -f 655 656 653 -f 653 651 655 -f 655 650 488 -f 488 495 655 -f 495 496 656 -f 656 655 495 -f 640 639 657 -f 657 658 640 -f 658 657 659 -f 659 660 658 -f 661 657 639 -f 639 644 661 -f 662 659 657 -f 657 661 662 -f 644 647 335 -f 335 661 644 -f 661 335 334 -f 334 662 661 -f 337 336 335 -f 335 647 337 -f 663 664 665 -f 665 666 663 -f 666 665 667 -f 667 668 666 -f 669 663 666 -f 666 670 669 -f 670 666 668 -f 668 671 670 -f 669 670 672 -f 672 673 669 -f 670 671 674 -f 674 672 670 -f 673 672 675 -f 675 676 673 -f 672 674 677 -f 677 675 672 -f 676 675 678 -f 678 679 676 -f 680 678 675 -f 675 677 680 -f 681 682 683 -f 683 684 681 -f 682 685 686 -f 686 683 682 -f 679 678 682 -f 682 681 679 -f 678 680 685 -f 685 682 678 -f 684 683 687 -f 687 688 684 -f 683 686 689 -f 689 687 683 -f 688 687 531 -f 531 530 688 -f 687 689 532 -f 532 531 687 -f 533 690 123 -f 123 68 533 -f 123 691 692 -f 692 124 123 -f 690 693 691 -f 691 123 690 -f 694 695 696 -f 696 697 694 -f 695 694 691 -f 691 693 695 -f 694 698 692 -f 692 691 694 -f 698 694 697 -f 697 699 698 -f 700 701 702 -f 702 703 700 -f 704 705 701 -f 701 700 704 -f 706 707 704 -f 704 700 706 -f 706 700 703 -f 703 708 706 -f 339 705 704 -f 704 709 339 -f 340 339 709 -f 709 576 340 -f 709 704 707 -f 707 710 709 -f 576 709 710 -f 710 577 576 -f 711 712 702 -f 702 701 711 -f 566 569 712 -f 712 711 566 -f 343 711 701 -f 701 705 343 -f 342 566 711 -f 711 343 342 -f 705 339 341 -f 341 343 705 -f 713 714 715 -f 715 716 713 -f 717 713 716 -f 716 718 717 -f 707 706 713 -f 713 717 707 -f 708 714 713 -f 713 706 708 -f 345 719 717 -f 717 718 345 -f 344 599 719 -f 719 345 344 -f 719 710 707 -f 707 717 719 -f 599 577 710 -f 710 719 599 -f 720 716 715 -f 715 721 720 -f 589 720 721 -f 721 590 589 -f 347 718 716 -f 716 720 347 -f 348 347 720 -f 720 589 348 -f 718 347 346 -f 346 345 718 -f 195 349 29 -f 29 28 195 -f 722 234 233 -f 233 723 722 -f 723 233 249 -f 249 724 723 -f 725 723 724 -f 724 726 725 -f 727 722 723 -f 723 725 727 -f 724 249 220 -f 220 728 724 -f 728 220 219 -f 219 729 728 -f 726 724 728 -f 728 730 726 -f 730 728 729 -f 729 731 730 -f 732 725 726 -f 726 733 732 -f 732 733 734 -f 734 735 732 -f 736 727 725 -f 725 732 736 -f 737 736 732 -f 732 735 737 -f 733 726 730 -f 730 738 733 -f 733 738 739 -f 739 734 733 -f 738 730 731 -f 731 740 738 -f 741 739 738 -f 738 740 741 -f 393 742 743 -f 743 394 393 -f 394 743 744 -f 744 397 394 -f 742 745 746 -f 746 743 742 -f 744 743 746 -f 746 747 744 -f 745 748 749 -f 749 746 745 -f 749 750 747 -f 747 746 749 -f 751 752 753 -f 753 754 751 -f 754 755 756 -f 756 751 754 -f 756 755 757 -f 757 748 756 -f 757 758 749 -f 749 748 757 -f 758 759 750 -f 750 749 758 -f 754 753 760 -f 760 240 754 -f 240 761 755 -f 755 754 240 -f 761 762 757 -f 757 755 761 -f 762 763 758 -f 758 757 762 -f 763 764 759 -f 759 758 763 -f 211 31 30 -f 30 352 211 -f 419 422 765 -f 765 766 419 -f 422 424 767 -f 767 765 422 -f 766 765 768 -f 768 769 766 -f 767 770 768 -f 768 765 767 -f 769 768 771 -f 771 772 769 -f 771 768 770 -f 770 773 771 -f 774 775 753 -f 753 752 774 -f 775 774 776 -f 776 777 775 -f 776 772 778 -f 778 777 776 -f 778 772 771 -f 771 779 778 -f 779 771 773 -f 773 780 779 -f 775 781 760 -f 760 753 775 -f 781 775 777 -f 777 782 781 -f 782 777 778 -f 778 783 782 -f 783 778 779 -f 779 784 783 -f 784 779 780 -f 780 785 784 -f 443 786 787 -f 787 444 443 -f 444 787 788 -f 788 447 444 -f 786 789 790 -f 790 787 786 -f 787 790 791 -f 791 788 787 -f 789 792 793 -f 793 790 789 -f 790 793 794 -f 794 791 790 -f 792 795 796 -f 796 793 792 -f 793 796 797 -f 797 794 793 -f 795 798 799 -f 799 796 795 -f 796 799 800 -f 800 797 796 -f 801 802 803 -f 803 804 801 -f 804 803 805 -f 805 806 804 -f 798 801 804 -f 804 799 798 -f 799 804 806 -f 806 800 799 -f 807 808 803 -f 803 802 807 -f 808 809 805 -f 805 803 808 -f 810 811 808 -f 808 807 810 -f 811 812 809 -f 809 808 811 -f 473 813 814 -f 814 474 473 -f 477 815 813 -f 813 473 477 -f 813 816 817 -f 817 814 813 -f 815 818 816 -f 816 813 815 -f 819 820 817 -f 817 816 819 -f 821 819 816 -f 816 818 821 -f 822 823 821 -f 821 818 822 -f 824 825 823 -f 823 822 824 -f 819 821 826 -f 826 827 819 -f 826 828 829 -f 829 827 826 -f 820 819 827 -f 827 356 820 -f 357 356 827 -f 827 829 357 -f 823 830 826 -f 826 821 823 -f 830 831 828 -f 828 826 830 -f 830 823 825 -f 825 832 830 -f 832 833 831 -f 831 830 832 -f 474 814 834 -f 834 497 474 -f 497 834 835 -f 835 499 497 -f 836 834 814 -f 814 817 836 -f 837 835 834 -f 834 836 837 -f 817 820 354 -f 354 836 817 -f 836 354 353 -f 353 837 836 -f 356 355 354 -f 354 820 356 -f 838 506 505 -f 505 839 838 -f 839 505 508 -f 508 840 839 -f 841 838 839 -f 839 842 841 -f 842 839 840 -f 840 843 842 -f 841 842 844 -f 844 845 841 -f 842 843 846 -f 846 844 842 -f 845 844 847 -f 847 848 845 -f 844 846 849 -f 849 847 844 -f 848 847 850 -f 850 851 848 -f 852 850 847 -f 847 849 852 -f 853 854 855 -f 855 856 853 -f 854 857 858 -f 858 855 854 -f 851 850 854 -f 854 853 851 -f 850 852 857 -f 857 854 850 -f 856 855 859 -f 859 860 856 -f 855 858 861 -f 861 859 855 -f 860 859 862 -f 862 863 860 -f 859 861 864 -f 864 862 859 -f 865 866 205 -f 205 204 865 -f 205 867 868 -f 868 206 205 -f 866 869 867 -f 867 205 866 -f 870 871 540 -f 540 539 870 -f 871 870 872 -f 872 869 871 -f 872 873 867 -f 867 869 872 -f 873 874 868 -f 868 867 873 -f 875 876 874 -f 874 873 875 -f 873 872 877 -f 877 875 873 -f 870 878 877 -f 877 872 870 -f 878 870 539 -f 539 549 878 -f 879 880 304 -f 304 303 879 -f 880 881 318 -f 318 304 880 -f 882 883 881 -f 881 880 882 -f 884 882 880 -f 880 879 884 -f 881 885 295 -f 295 318 881 -f 885 729 219 -f 219 295 885 -f 883 886 885 -f 885 881 883 -f 886 731 729 -f 729 885 886 -f 887 888 883 -f 883 882 887 -f 887 889 890 -f 890 888 887 -f 891 887 882 -f 882 884 891 -f 892 889 887 -f 887 891 892 -f 888 893 886 -f 886 883 888 -f 888 890 894 -f 894 893 888 -f 893 740 731 -f 731 886 893 -f 741 740 893 -f 893 894 741 -f 895 569 568 -f 568 896 895 -f 568 571 897 -f 897 896 568 -f 895 896 898 -f 898 367 895 -f 897 899 898 -f 898 896 897 -f 367 898 900 -f 900 365 367 -f 900 898 899 -f 899 901 900 -f 902 903 904 -f 904 905 902 -f 903 902 363 -f 363 906 903 -f 906 363 365 -f 365 907 906 -f 907 365 900 -f 900 908 907 -f 908 900 901 -f 901 909 908 -f 903 310 910 -f 910 904 903 -f 310 903 906 -f 906 911 310 -f 911 906 907 -f 907 912 911 -f 908 913 912 -f 912 907 908 -f 913 908 909 -f 909 914 913 -f 915 916 591 -f 591 590 915 -f 591 916 917 -f 917 593 591 -f 915 371 918 -f 918 916 915 -f 917 916 918 -f 918 919 917 -f 371 370 920 -f 920 918 371 -f 920 921 919 -f 919 918 920 -f 922 905 904 -f 904 923 922 -f 923 924 369 -f 369 922 923 -f 924 925 370 -f 370 369 924 -f 925 926 920 -f 920 370 925 -f 926 927 921 -f 921 920 926 -f 923 904 910 -f 910 928 923 -f 928 929 924 -f 924 923 928 -f 929 930 925 -f 925 924 929 -f 926 925 930 -f 930 931 926 -f 931 932 927 -f 927 926 931 -f 610 613 933 -f 933 934 610 -f 613 615 935 -f 935 933 613 -f 934 933 936 -f 936 937 934 -f 933 935 938 -f 938 936 933 -f 937 936 939 -f 939 940 937 -f 936 938 941 -f 941 939 936 -f 940 939 942 -f 942 943 940 -f 939 941 944 -f 944 942 939 -f 943 942 945 -f 945 946 943 -f 942 944 947 -f 947 945 942 -f 948 949 950 -f 950 951 948 -f 949 952 953 -f 953 950 949 -f 946 945 949 -f 949 948 946 -f 945 947 952 -f 952 949 945 -f 954 951 950 -f 950 955 954 -f 955 950 953 -f 953 956 955 -f 810 954 955 -f 955 811 810 -f 811 955 956 -f 956 812 811 -f 637 640 957 -f 957 958 637 -f 641 637 958 -f 958 959 641 -f 958 957 960 -f 960 961 958 -f 959 958 961 -f 961 962 959 -f 963 961 960 -f 960 964 963 -f 965 962 961 -f 961 963 965 -f 966 962 965 -f 965 967 966 -f 824 966 967 -f 967 825 824 -f 963 968 969 -f 969 965 963 -f 969 968 970 -f 970 971 969 -f 964 361 968 -f 968 963 964 -f 362 970 968 -f 968 361 362 -f 967 965 969 -f 969 972 967 -f 972 969 971 -f 971 973 972 -f 972 832 825 -f 825 967 972 -f 832 972 973 -f 973 833 832 -f 640 658 974 -f 974 957 640 -f 658 660 975 -f 975 974 658 -f 976 960 957 -f 957 974 976 -f 977 976 974 -f 974 975 977 -f 960 976 358 -f 358 964 960 -f 976 977 359 -f 359 358 976 -f 361 964 358 -f 358 360 361 -f 978 979 665 -f 665 664 978 -f 979 980 667 -f 667 665 979 -f 981 982 979 -f 979 978 981 -f 982 983 980 -f 980 979 982 -f 981 984 985 -f 985 982 981 -f 982 985 986 -f 986 983 982 -f 984 987 988 -f 988 985 984 -f 985 988 989 -f 989 986 985 -f 987 990 991 -f 991 988 987 -f 992 989 988 -f 988 991 992 -f 993 994 995 -f 995 996 993 -f 996 995 997 -f 997 998 996 -f 990 993 996 -f 996 991 990 -f 991 996 998 -f 998 992 991 -f 994 999 1000 -f 1000 995 994 -f 995 1000 1001 -f 1001 997 995 -f 999 863 862 -f 862 1000 999 -f 1000 862 864 -f 864 1001 1000 -f 865 204 257 -f 257 1002 865 -f 257 256 1003 -f 1003 1004 257 -f 1002 257 1004 -f 1004 1005 1002 -f 1006 697 696 -f 696 1007 1006 -f 1007 1005 1004 -f 1004 1006 1007 -f 1006 1004 1003 -f 1003 1008 1006 -f 1008 699 697 -f 697 1006 1008 -f 1009 703 702 -f 702 1010 1009 -f 1011 1009 1010 -f 1010 1012 1011 -f 1013 1009 1011 -f 1011 1014 1013 -f 1013 708 703 -f 703 1009 1013 -f 364 1015 1011 -f 1011 1012 364 -f 363 902 1015 -f 1015 364 363 -f 1015 1016 1014 -f 1014 1011 1015 -f 902 905 1016 -f 1016 1015 902 -f 1017 1010 702 -f 702 712 1017 -f 895 1017 712 -f 712 569 895 -f 366 1012 1010 -f 1010 1017 366 -f 367 366 1017 -f 1017 895 367 -f 1012 366 365 -f 365 364 1012 -f 1018 1019 715 -f 715 714 1018 -f 1020 1021 1019 -f 1019 1018 1020 -f 1014 1020 1018 -f 1018 1013 1014 -f 708 1013 1018 -f 1018 714 708 -f 368 1021 1020 -f 1020 1022 368 -f 369 368 1022 -f 1022 922 369 -f 1022 1020 1014 -f 1014 1016 1022 -f 922 1022 1016 -f 1016 905 922 -f 1023 721 715 -f 715 1019 1023 -f 915 590 721 -f 721 1023 915 -f 372 1023 1019 -f 1019 1021 372 -f 371 915 1023 -f 1023 372 371 -f 1021 368 370 -f 370 372 1021 -f 1024 1025 1026 -f 1026 1027 1024 -f 1028 1029 1030 -f 1030 1031 1028 -f 1032 1033 183 -f 183 177 1032 -f 1034 1035 1036 -f 1036 1037 1034 -f 1038 1039 1040 -f 1040 1041 1038 -f 1042 1043 309 -f 309 316 1042 -f 326 1044 59 -f 59 58 326 -f 325 1045 1044 -f 1044 326 325 -f 1044 1046 61 -f 61 59 1044 -f 1045 1047 1046 -f 1046 1044 1045 -f 1048 56 55 -f 55 1049 1048 -f 1050 1048 1049 -f 1049 1051 1050 -f 2 58 56 -f 56 1048 2 -f 3 2 1048 -f 1048 1050 3 -f 1050 1051 1052 -f 1052 1053 1050 -f 1054 1053 1052 -f 1052 1055 1054 -f 3 1050 1053 -f 1053 1056 3 -f 1057 1056 1053 -f 1053 1054 1057 -f 1026 1 3 -f 3 1056 1026 -f 1027 1026 1056 -f 1056 1057 1027 -f 1045 325 1025 -f 1025 1058 1045 -f 1058 1059 1047 -f 1047 1045 1058 -f 1025 325 1 -f 1 1026 1025 -f 1060 1054 1055 -f 1055 1061 1060 -f 1062 1060 1061 -f 1061 1063 1062 -f 1054 1060 1064 -f 1064 1057 1054 -f 1060 1062 1065 -f 1065 1064 1060 -f 1066 1027 1057 -f 1057 1064 1066 -f 1064 1065 1067 -f 1067 1066 1064 -f 1063 1068 1069 -f 1069 1062 1063 -f 1070 1069 1068 -f 1068 1071 1070 -f 1071 393 396 -f 396 1070 1071 -f 1062 1069 1072 -f 1072 1065 1062 -f 1069 1070 1073 -f 1073 1072 1069 -f 396 400 1073 -f 1073 1070 396 -f 1065 1072 1074 -f 1074 1067 1065 -f 1072 1073 1075 -f 1075 1074 1072 -f 1073 400 403 -f 403 1075 1073 -f 327 77 79 -f 79 1076 327 -f 328 327 1076 -f 1076 1077 328 -f 1076 79 61 -f 61 1046 1076 -f 1077 1076 1046 -f 1046 1047 1077 -f 1078 1079 74 -f 74 73 1078 -f 1080 1081 1079 -f 1079 1078 1080 -f 5 1078 73 -f 73 77 5 -f 4 1080 1078 -f 1078 5 4 -f 1081 1080 1082 -f 1082 1083 1081 -f 1084 1085 1083 -f 1083 1082 1084 -f 1080 4 1086 -f 1086 1082 1080 -f 1087 1084 1082 -f 1082 1086 1087 -f 1030 1086 4 -f 4 6 1030 -f 1029 1087 1086 -f 1086 1030 1029 -f 328 1077 1088 -f 1088 1031 328 -f 1088 1077 1047 -f 1047 1059 1088 -f 1031 1030 6 -f 6 328 1031 -f 1089 1090 1085 -f 1085 1084 1089 -f 1091 1092 1090 -f 1090 1089 1091 -f 1084 1087 1093 -f 1093 1089 1084 -f 1089 1093 1094 -f 1094 1091 1089 -f 1095 1093 1087 -f 1087 1029 1095 -f 1093 1095 1096 -f 1096 1094 1093 -f 1092 1091 1097 -f 1097 1098 1092 -f 1099 1100 1098 -f 1098 1097 1099 -f 1100 1099 420 -f 420 419 1100 -f 1091 1094 1101 -f 1101 1097 1091 -f 1097 1101 1102 -f 1102 1099 1097 -f 420 1099 1102 -f 1102 425 420 -f 1094 1096 1103 -f 1103 1101 1094 -f 1101 1103 1104 -f 1104 1102 1101 -f 1102 1104 428 -f 428 425 1102 -f 1105 1106 1107 -f 1107 1108 1105 -f 1106 1109 1110 -f 1110 1107 1106 -f 1109 1111 1112 -f 1112 1110 1109 -f 1111 1113 1114 -f 1114 1112 1111 -f 1113 1115 1116 -f 1116 1114 1113 -f 1117 1118 1119 -f 1119 1120 1117 -f 1115 1117 1120 -f 1120 1116 1115 -f 1118 1121 1122 -f 1122 1119 1118 -f 1121 1123 1124 -f 1124 1122 1121 -f 1125 1126 1127 -f 1127 1128 1125 -f 1129 1125 1128 -f 1128 1130 1129 -f 1131 1129 1130 -f 1130 1132 1131 -f 1133 1131 1132 -f 1132 1134 1133 -f 1135 1133 1134 -f 1134 1136 1135 -f 1137 1138 1139 -f 1139 1140 1137 -f 1138 1135 1136 -f 1136 1139 1138 -f 1141 1137 1140 -f 1140 1142 1141 -f 1123 1141 1142 -f 1142 1124 1123 -f 349 195 197 -f 197 1143 349 -f 350 349 1143 -f 1143 1144 350 -f 1143 197 199 -f 199 1145 1143 -f 1144 1143 1145 -f 1145 1146 1144 -f 1147 1049 55 -f 55 193 1147 -f 1148 1051 1049 -f 1049 1147 1148 -f 28 1147 193 -f 193 195 28 -f 27 1148 1147 -f 1147 28 27 -f 1051 1148 1149 -f 1149 1052 1051 -f 1150 1055 1052 -f 1052 1149 1150 -f 1148 27 1151 -f 1151 1149 1148 -f 1152 1150 1149 -f 1149 1151 1152 -f 1036 1151 27 -f 27 29 1036 -f 1035 1152 1151 -f 1151 1036 1035 -f 350 1144 1153 -f 1153 1037 350 -f 1153 1144 1146 -f 1146 1154 1153 -f 1037 1036 29 -f 29 350 1037 -f 1155 1061 1055 -f 1055 1150 1155 -f 1156 1063 1061 -f 1061 1155 1156 -f 1150 1152 1157 -f 1157 1155 1150 -f 1155 1157 1158 -f 1158 1156 1155 -f 1159 1157 1152 -f 1152 1035 1159 -f 1157 1159 1160 -f 1160 1158 1157 -f 1063 1156 1161 -f 1161 1068 1063 -f 1162 1071 1068 -f 1068 1161 1162 -f 1071 1162 742 -f 742 393 1071 -f 1156 1158 1163 -f 1163 1161 1156 -f 1161 1163 1164 -f 1164 1162 1161 -f 742 1162 1164 -f 1164 745 742 -f 1158 1160 1165 -f 1165 1163 1158 -f 1163 1165 1166 -f 1166 1164 1163 -f 1164 1166 748 -f 748 745 1164 -f 352 1167 212 -f 212 211 352 -f 351 1168 1167 -f 1167 352 351 -f 1167 1145 199 -f 199 212 1167 -f 1168 1146 1145 -f 1145 1167 1168 -f 1169 209 74 -f 74 1079 1169 -f 1170 1169 1079 -f 1079 1081 1170 -f 31 211 209 -f 209 1169 31 -f 32 31 1169 -f 1169 1170 32 -f 1170 1081 1083 -f 1083 1171 1170 -f 1172 1171 1083 -f 1083 1085 1172 -f 32 1170 1171 -f 1171 1173 32 -f 1174 1173 1171 -f 1171 1172 1174 -f 1040 30 32 -f 32 1173 1040 -f 1041 1040 1173 -f 1173 1174 1041 -f 1168 351 1039 -f 1039 1175 1168 -f 1175 1154 1146 -f 1146 1168 1175 -f 1039 351 30 -f 30 1040 1039 -f 1176 1172 1085 -f 1085 1090 1176 -f 1177 1176 1090 -f 1090 1092 1177 -f 1172 1176 1178 -f 1178 1174 1172 -f 1176 1177 1179 -f 1179 1178 1176 -f 1180 1041 1174 -f 1174 1178 1180 -f 1178 1179 1181 -f 1181 1180 1178 -f 1092 1098 1182 -f 1182 1177 1092 -f 1183 1182 1098 -f 1098 1100 1183 -f 1100 419 766 -f 766 1183 1100 -f 1177 1182 1184 -f 1184 1179 1177 -f 1182 1183 1185 -f 1185 1184 1182 -f 766 769 1185 -f 1185 1183 766 -f 1179 1184 1186 -f 1186 1181 1179 -f 1184 1185 1187 -f 1187 1186 1184 -f 1185 769 772 -f 772 1187 1185 -f 1188 1105 1108 -f 1108 1189 1188 -f 1190 1188 1189 -f 1189 1191 1190 -f 1192 1190 1191 -f 1191 1193 1192 -f 1194 1192 1193 -f 1193 1195 1194 -f 1196 1194 1195 -f 1195 1197 1196 -f 1198 1199 1200 -f 1200 1201 1198 -f 1199 1196 1197 -f 1197 1200 1199 -f 1202 1198 1201 -f 1201 1203 1202 -f 1204 1202 1203 -f 1203 1205 1204 -f 1126 1206 1207 -f 1207 1127 1126 -f 1206 1208 1209 -f 1209 1207 1206 -f 1208 1210 1211 -f 1211 1209 1208 -f 1210 1212 1213 -f 1213 1211 1210 -f 1212 1214 1215 -f 1215 1213 1212 -f 1216 1217 1218 -f 1218 1219 1216 -f 1214 1216 1219 -f 1219 1215 1214 -f 1217 1220 1221 -f 1221 1218 1217 -f 1220 1204 1205 -f 1205 1221 1220 -f 1059 1222 1223 -f 1223 1088 1059 -f 1088 1223 1028 -f 1028 1031 1088 -f 453 456 1224 -f 1224 1225 453 -f 1225 1224 1226 -f 1226 1227 1225 -f 1227 1226 1228 -f 1228 1229 1227 -f 1229 1228 1230 -f 1230 1231 1229 -f 1231 1230 331 -f 331 330 1231 -f 456 459 1232 -f 1232 1224 456 -f 1224 1232 1233 -f 1233 1226 1224 -f 1226 1233 1234 -f 1234 1228 1226 -f 1228 1234 1235 -f 1235 1230 1228 -f 1230 1235 333 -f 333 331 1230 -f 1236 1237 1238 -f 1238 1239 1236 -f 1240 1238 1237 -f 1237 1241 1240 -f 1154 1242 1243 -f 1243 1153 1154 -f 1153 1243 1034 -f 1034 1037 1153 -f 1244 1245 1246 -f 1246 1247 1244 -f 1248 1246 1245 -f 1245 1249 1248 -f 940 943 1250 -f 1250 1251 940 -f 1251 1250 1252 -f 1252 1253 1251 -f 1253 1252 1254 -f 1254 1255 1253 -f 1255 1254 1256 -f 1256 1257 1255 -f 1257 1256 360 -f 360 359 1257 -f 943 946 1258 -f 1258 1250 943 -f 1250 1258 1259 -f 1259 1252 1250 -f 1252 1259 1260 -f 1260 1254 1252 -f 1254 1260 1261 -f 1261 1256 1254 -f 1256 1261 362 -f 362 360 1256 -f 1262 1263 1264 -f 1264 1265 1262 -f 1265 1264 1266 -f 1266 1267 1265 -f 1267 1266 1268 -f 1268 1269 1267 -f 1269 1268 1270 -f 1270 1271 1269 -f 1271 1270 1043 -f 1043 1042 1271 -f 1272 1273 1274 -f 1274 1222 1272 -f 1275 1274 1273 -f 1273 1276 1275 -f 1024 1277 1273 -f 1273 1272 1024 -f 1276 1273 1277 -f 1277 1278 1276 -f 1277 1024 1027 -f 1027 1066 1277 -f 1066 1067 1278 -f 1278 1277 1066 -f 1276 1279 1280 -f 1280 1275 1276 -f 1279 1281 1282 -f 1282 1280 1279 -f 1281 405 408 -f 408 1282 1281 -f 1278 1283 1279 -f 1279 1276 1278 -f 1283 1284 1281 -f 1281 1279 1283 -f 1284 409 405 -f 405 1281 1284 -f 1067 1074 1283 -f 1283 1278 1067 -f 1074 1075 1284 -f 1284 1283 1074 -f 1075 403 409 -f 409 1284 1075 -f 172 550 1285 -f 1285 173 172 -f 173 1285 585 -f 585 176 173 -f 550 555 1286 -f 1286 1285 550 -f 1285 1286 586 -f 586 585 1285 -f 555 562 1287 -f 1287 1286 555 -f 1286 1287 587 -f 587 586 1286 -f 562 563 1288 -f 1288 1287 562 -f 1287 1288 588 -f 588 587 1287 -f 1239 1238 1289 -f 1289 1290 1239 -f 1290 1289 1291 -f 1291 1292 1290 -f 1238 1240 1293 -f 1293 1289 1238 -f 1289 1293 1294 -f 1294 1291 1289 -f 1292 1291 1295 -f 1295 1296 1292 -f 1296 1295 1297 -f 1297 1298 1296 -f 1298 1297 1299 -f 1299 1300 1298 -f 1300 1299 1301 -f 1301 1302 1300 -f 1291 1294 1303 -f 1303 1295 1291 -f 1295 1303 1304 -f 1304 1297 1295 -f 1297 1304 1305 -f 1305 1299 1297 -f 1299 1305 1306 -f 1306 1301 1299 -f 1302 1301 1307 -f 1307 1308 1302 -f 1308 1307 1309 -f 1309 1310 1308 -f 1310 1309 1311 -f 1311 1312 1310 -f 1312 1311 1313 -f 1313 1314 1312 -f 1314 1313 649 -f 649 645 1314 -f 1301 1306 1315 -f 1315 1307 1301 -f 1307 1315 1316 -f 1316 1309 1307 -f 1309 1316 1317 -f 1317 1311 1309 -f 1311 1317 1318 -f 1318 1313 1311 -f 1313 1318 487 -f 487 649 1313 -f 129 145 1319 -f 1319 1320 129 -f 145 148 1321 -f 1321 1319 145 -f 148 151 1322 -f 1322 1321 148 -f 151 154 1323 -f 1323 1322 151 -f 154 157 1324 -f 1324 1323 154 -f 157 160 1325 -f 1325 1324 157 -f 1320 1319 1326 -f 1326 1327 1320 -f 1327 1326 1328 -f 1328 1329 1327 -f 1329 1328 1330 -f 1330 1331 1329 -f 1331 1330 1332 -f 1332 1333 1331 -f 1333 1332 1334 -f 1334 1335 1333 -f 1319 1321 1336 -f 1336 1326 1319 -f 1326 1336 1337 -f 1337 1328 1326 -f 1328 1337 1338 -f 1338 1330 1328 -f 1330 1338 1339 -f 1339 1332 1330 -f 1332 1339 1340 -f 1340 1334 1332 -f 1321 1322 1341 -f 1341 1336 1321 -f 1336 1341 1342 -f 1342 1337 1336 -f 1337 1342 1343 -f 1343 1338 1337 -f 1338 1343 1344 -f 1344 1339 1338 -f 1339 1344 1345 -f 1345 1340 1339 -f 1322 1323 1346 -f 1346 1341 1322 -f 1341 1346 1347 -f 1347 1342 1341 -f 1342 1347 1348 -f 1348 1343 1342 -f 1343 1348 1349 -f 1349 1344 1343 -f 1344 1349 1350 -f 1350 1345 1344 -f 1323 1324 1351 -f 1351 1346 1323 -f 1346 1351 1352 -f 1352 1347 1346 -f 1347 1352 1353 -f 1353 1348 1347 -f 1348 1353 1354 -f 1354 1349 1348 -f 1349 1354 1355 -f 1355 1350 1349 -f 1324 1325 1356 -f 1356 1351 1324 -f 1351 1356 1357 -f 1357 1352 1351 -f 1352 1357 1358 -f 1358 1353 1352 -f 1353 1358 1359 -f 1359 1354 1353 -f 1354 1359 1360 -f 1360 1355 1354 -f 168 184 1361 -f 1361 1362 168 -f 1362 1361 1363 -f 1363 1364 1362 -f 1364 1363 1365 -f 1365 1366 1364 -f 1366 1365 1367 -f 1367 1368 1366 -f 1368 1367 1369 -f 1369 1370 1368 -f 1370 1369 1371 -f 1371 1372 1370 -f 234 722 1373 -f 1373 235 234 -f 235 1373 1374 -f 1374 239 235 -f 239 1374 761 -f 761 240 239 -f 722 727 1375 -f 1375 1373 722 -f 1373 1375 1376 -f 1376 1374 1373 -f 1374 1376 762 -f 762 761 1374 -f 727 736 1377 -f 1377 1375 727 -f 1375 1377 1378 -f 1378 1376 1375 -f 1376 1378 763 -f 763 762 1376 -f 736 737 1379 -f 1379 1377 736 -f 1377 1379 1380 -f 1380 1378 1377 -f 1378 1380 764 -f 764 763 1378 -f 1247 1246 1381 -f 1381 1382 1247 -f 1382 1381 1383 -f 1383 1384 1382 -f 1246 1248 1385 -f 1385 1381 1246 -f 1381 1385 1386 -f 1386 1383 1381 -f 1387 1388 1389 -f 1389 1242 1387 -f 1390 1389 1388 -f 1388 1391 1390 -f 1038 1392 1388 -f 1388 1387 1038 -f 1391 1388 1392 -f 1392 1393 1391 -f 1392 1038 1041 -f 1041 1180 1392 -f 1180 1181 1393 -f 1393 1392 1180 -f 1391 1394 1395 -f 1395 1390 1391 -f 1394 1396 1397 -f 1397 1395 1394 -f 1396 774 752 -f 752 1397 1396 -f 1393 1398 1394 -f 1394 1391 1393 -f 1398 1399 1396 -f 1396 1394 1398 -f 1399 776 774 -f 774 1396 1399 -f 1181 1186 1398 -f 1398 1393 1181 -f 1186 1187 1399 -f 1399 1398 1186 -f 1187 772 776 -f 776 1399 1187 -f 1384 1383 1400 -f 1400 1401 1384 -f 1401 1400 1402 -f 1402 1403 1401 -f 1403 1402 1404 -f 1404 1405 1403 -f 1405 1404 1406 -f 1406 1407 1405 -f 1383 1386 1408 -f 1408 1400 1383 -f 1400 1408 1409 -f 1409 1402 1400 -f 1402 1409 1410 -f 1410 1404 1402 -f 1404 1410 1411 -f 1411 1406 1404 -f 1407 1406 1412 -f 1412 1413 1407 -f 1413 1412 1414 -f 1414 1415 1413 -f 1415 1414 1416 -f 1416 1417 1415 -f 1417 1416 1418 -f 1418 1419 1417 -f 1419 1418 822 -f 822 818 1419 -f 1406 1411 1420 -f 1420 1412 1406 -f 1412 1420 1421 -f 1421 1414 1412 -f 1414 1421 1422 -f 1422 1416 1414 -f 1416 1422 1423 -f 1423 1418 1416 -f 1418 1423 824 -f 824 822 1418 -f 229 248 1424 -f 1424 1425 229 -f 1425 1424 1426 -f 1426 1427 1425 -f 1427 1426 1428 -f 1428 1429 1427 -f 1429 1428 1430 -f 1430 1431 1429 -f 1431 1430 1432 -f 1432 1433 1431 -f 1433 1432 1434 -f 1434 1435 1433 -f 263 262 1436 -f 1436 1437 263 -f 262 266 1438 -f 1438 1436 262 -f 266 269 1439 -f 1439 1438 266 -f 269 272 1440 -f 1440 1439 269 -f 272 275 1441 -f 1441 1440 272 -f 275 230 1442 -f 1442 1441 275 -f 1437 1436 1443 -f 1443 1444 1437 -f 1444 1443 1445 -f 1445 1446 1444 -f 1446 1445 1447 -f 1447 1448 1446 -f 1448 1447 1449 -f 1449 1450 1448 -f 1450 1449 1451 -f 1451 1452 1450 -f 1436 1438 1453 -f 1453 1443 1436 -f 1443 1453 1454 -f 1454 1445 1443 -f 1445 1454 1455 -f 1455 1447 1445 -f 1447 1455 1456 -f 1456 1449 1447 -f 1449 1456 1457 -f 1457 1451 1449 -f 1438 1439 1458 -f 1458 1453 1438 -f 1453 1458 1459 -f 1459 1454 1453 -f 1454 1459 1460 -f 1460 1455 1454 -f 1455 1460 1461 -f 1461 1456 1455 -f 1456 1461 1462 -f 1462 1457 1456 -f 1439 1440 1463 -f 1463 1458 1439 -f 1458 1463 1464 -f 1464 1459 1458 -f 1459 1464 1465 -f 1465 1460 1459 -f 1460 1465 1466 -f 1466 1461 1460 -f 1461 1466 1467 -f 1467 1462 1461 -f 1440 1441 1468 -f 1468 1463 1440 -f 1463 1468 1469 -f 1469 1464 1463 -f 1464 1469 1470 -f 1470 1465 1464 -f 1465 1470 1471 -f 1471 1466 1465 -f 1466 1471 1472 -f 1472 1467 1466 -f 1441 1442 1473 -f 1473 1468 1441 -f 1468 1473 1474 -f 1474 1469 1468 -f 1469 1474 1475 -f 1475 1470 1469 -f 1470 1475 1476 -f 1476 1471 1470 -f 1471 1476 1477 -f 1477 1472 1471 -f 1059 1058 1272 -f 1272 1222 1059 -f 1058 1025 1024 -f 1024 1272 1058 -f 1478 1479 1480 -f 1480 1481 1478 -f 1240 1241 1481 -f 1481 1480 1240 -f 619 1482 1483 -f 1483 622 619 -f 1482 1484 1485 -f 1485 1483 1482 -f 1484 1486 1487 -f 1487 1485 1484 -f 1486 1488 1489 -f 1489 1487 1486 -f 1488 334 336 -f 336 1489 1488 -f 622 1483 1490 -f 1490 625 622 -f 1483 1485 1491 -f 1491 1490 1483 -f 1485 1487 1492 -f 1492 1491 1485 -f 1487 1489 1493 -f 1493 1492 1487 -f 1489 336 338 -f 338 1493 1489 -f 1494 1495 1496 -f 1496 1497 1494 -f 1495 1498 1499 -f 1499 1496 1495 -f 1498 1500 1501 -f 1501 1499 1498 -f 1500 1502 1503 -f 1503 1501 1500 -f 1502 1033 1032 -f 1032 1503 1502 -f 1154 1175 1387 -f 1387 1242 1154 -f 1175 1039 1038 -f 1038 1387 1175 -f 792 1504 1505 -f 1505 795 792 -f 1504 1506 1507 -f 1507 1505 1504 -f 1506 1508 1509 -f 1509 1507 1506 -f 1508 1510 1511 -f 1511 1509 1508 -f 1510 353 355 -f 355 1511 1510 -f 795 1505 1512 -f 1512 798 795 -f 1505 1507 1513 -f 1513 1512 1505 -f 1507 1509 1514 -f 1514 1513 1507 -f 1509 1511 1515 -f 1515 1514 1509 -f 1511 355 357 -f 357 1515 1511 -f 1516 1517 1518 -f 1518 1519 1516 -f 1248 1249 1519 -f 1519 1518 1248 -f 63 64 1520 -f 1520 1521 63 -f 1522 1521 1520 -f 1520 546 1522 -f 65 63 1521 -f 1521 1523 65 -f 1524 1523 1521 -f 1521 1522 1524 -f 1523 1525 66 -f 66 65 1523 -f 1526 1525 1523 -f 1523 1524 1526 -f 67 66 1525 -f 1525 1527 67 -f 1528 1527 1525 -f 1525 1526 1528 -f 1529 1530 1531 -f 1531 1532 1529 -f 1533 1534 1532 -f 1532 1531 1533 -f 1534 1533 398 -f 398 397 1534 -f 1530 1535 1536 -f 1536 1531 1530 -f 1531 1536 1537 -f 1537 1533 1531 -f 1533 1537 401 -f 401 398 1533 -f 1535 1538 1539 -f 1539 1536 1535 -f 1536 1539 1540 -f 1540 1537 1536 -f 1537 1540 404 -f 404 401 1537 -f 1538 1541 1542 -f 1542 1539 1538 -f 1539 1542 1543 -f 1543 1540 1539 -f 1540 1543 413 -f 413 404 1540 -f 1541 388 1544 -f 1544 1542 1541 -f 1542 1544 1545 -f 1545 1543 1542 -f 1543 1545 418 -f 418 413 1543 -f 1546 541 540 -f 540 1547 1546 -f 1548 1546 1547 -f 1547 1549 1548 -f 1478 537 541 -f 541 1546 1478 -f 1479 1478 1546 -f 1546 1548 1479 -f 537 1478 1481 -f 1481 534 537 -f 1241 533 534 -f 534 1481 1241 -f 1549 1550 1551 -f 1551 1548 1549 -f 1550 1552 1553 -f 1553 1551 1550 -f 1548 1551 1554 -f 1554 1479 1548 -f 1551 1553 1555 -f 1555 1554 1551 -f 1552 1556 1557 -f 1557 1553 1552 -f 1556 1558 1559 -f 1559 1557 1556 -f 1558 1560 1561 -f 1561 1559 1558 -f 1560 1562 1563 -f 1563 1561 1560 -f 1553 1557 1564 -f 1564 1555 1553 -f 1557 1559 1565 -f 1565 1564 1557 -f 1559 1561 1566 -f 1566 1565 1559 -f 1561 1563 1567 -f 1567 1566 1561 -f 1568 1569 1570 -f 1570 1571 1568 -f 1569 1572 1573 -f 1573 1570 1569 -f 1572 1574 1575 -f 1575 1573 1572 -f 1574 448 447 -f 447 1575 1574 -f 1576 1577 1569 -f 1569 1568 1576 -f 1577 1578 1572 -f 1572 1569 1577 -f 1578 1579 1574 -f 1574 1572 1578 -f 1579 451 448 -f 448 1574 1579 -f 1580 1581 1577 -f 1577 1576 1580 -f 1581 1582 1578 -f 1578 1577 1581 -f 1582 1583 1579 -f 1579 1578 1582 -f 1583 454 451 -f 451 1579 1583 -f 1584 1585 1581 -f 1581 1580 1584 -f 1585 1586 1582 -f 1582 1581 1585 -f 1586 1587 1583 -f 1583 1582 1586 -f 1587 457 454 -f 454 1583 1587 -f 1588 1589 1585 -f 1585 1584 1588 -f 1589 1590 1586 -f 1586 1585 1589 -f 1590 1591 1587 -f 1587 1586 1590 -f 1591 460 457 -f 457 1587 1591 -f 1592 1593 1594 -f 1594 1595 1592 -f 1593 1596 1597 -f 1597 1594 1593 -f 1596 1598 1599 -f 1599 1597 1596 -f 1598 466 465 -f 465 1599 1598 -f 1595 1594 1589 -f 1589 1588 1595 -f 1594 1597 1590 -f 1590 1589 1594 -f 1597 1599 1591 -f 1591 1590 1597 -f 1599 465 460 -f 460 1591 1599 -f 1600 1601 1593 -f 1593 1592 1600 -f 1601 1602 1596 -f 1596 1593 1601 -f 1602 1603 1598 -f 1598 1596 1602 -f 1603 469 466 -f 466 1598 1603 -f 1604 1605 1601 -f 1601 1600 1604 -f 1605 1606 1602 -f 1602 1601 1605 -f 1606 1607 1603 -f 1603 1602 1606 -f 1607 472 469 -f 469 1603 1607 -f 1562 1608 1609 -f 1609 1563 1562 -f 1608 1610 1611 -f 1611 1609 1608 -f 1610 1612 1613 -f 1613 1611 1610 -f 1612 1614 1615 -f 1615 1613 1612 -f 1614 477 478 -f 478 1615 1614 -f 1563 1609 1616 -f 1616 1567 1563 -f 1609 1611 1617 -f 1617 1616 1609 -f 1611 1613 1618 -f 1618 1617 1611 -f 1613 1615 1619 -f 1619 1618 1613 -f 1615 478 481 -f 481 1619 1615 -f 464 1620 1621 -f 1621 461 464 -f 1620 1622 1623 -f 1623 1621 1620 -f 1622 1624 1625 -f 1625 1623 1622 -f 1624 1626 1627 -f 1627 1625 1624 -f 1626 492 491 -f 491 1627 1626 -f 461 1621 1232 -f 1232 459 461 -f 1621 1623 1233 -f 1233 1232 1621 -f 1623 1625 1234 -f 1234 1233 1623 -f 1625 1627 1235 -f 1235 1234 1625 -f 1627 491 333 -f 333 1235 1627 -f 467 1628 1620 -f 1620 464 467 -f 1628 1629 1622 -f 1622 1620 1628 -f 1629 1630 1624 -f 1624 1622 1629 -f 1630 1631 1626 -f 1626 1624 1630 -f 1631 494 492 -f 492 1626 1631 -f 470 1632 1628 -f 1628 467 470 -f 1632 1633 1629 -f 1629 1628 1632 -f 1633 1634 1630 -f 1630 1629 1633 -f 1634 1635 1631 -f 1631 1630 1634 -f 1635 496 494 -f 494 1631 1635 -f 446 1636 1637 -f 1637 443 446 -f 1636 1638 1639 -f 1639 1637 1636 -f 1638 1640 1641 -f 1641 1639 1638 -f 1640 1642 1643 -f 1643 1641 1640 -f 1642 500 499 -f 499 1643 1642 -f 450 1644 1636 -f 1636 446 450 -f 1644 1645 1638 -f 1638 1636 1644 -f 1645 1646 1640 -f 1640 1638 1645 -f 1646 1647 1642 -f 1642 1640 1646 -f 1647 502 500 -f 500 1642 1647 -f 453 1225 1644 -f 1644 450 453 -f 1225 1227 1645 -f 1645 1644 1225 -f 1227 1229 1646 -f 1646 1645 1227 -f 1229 1231 1647 -f 1647 1646 1229 -f 1231 330 502 -f 502 1647 1231 -f 1648 1530 1529 -f 1529 1649 1648 -f 1648 1650 1535 -f 1535 1530 1648 -f 1650 1651 1538 -f 1538 1535 1650 -f 1651 1652 1541 -f 1541 1538 1651 -f 1653 388 1541 -f 1541 1652 1653 -f 1654 1655 386 -f 386 385 1654 -f 1653 1654 385 -f 385 388 1653 -f 1655 1656 390 -f 390 386 1655 -f 1657 392 390 -f 390 1656 1657 -f 1658 1659 1648 -f 1648 1649 1658 -f 1659 1658 1660 -f 1660 1661 1659 -f 1662 1663 1661 -f 1661 1660 1662 -f 1664 1665 1663 -f 1663 1662 1664 -f 1665 1664 508 -f 508 507 1665 -f 1659 1666 1650 -f 1650 1648 1659 -f 1661 1667 1666 -f 1666 1659 1661 -f 1663 1668 1667 -f 1667 1661 1663 -f 1665 1669 1668 -f 1668 1663 1665 -f 507 511 1669 -f 1669 1665 507 -f 1666 1670 1651 -f 1651 1650 1666 -f 1667 1671 1670 -f 1670 1666 1667 -f 1668 1672 1671 -f 1671 1667 1668 -f 1669 1673 1672 -f 1672 1668 1669 -f 511 514 1673 -f 1673 1669 511 -f 1652 1651 1670 -f 1670 1674 1652 -f 1674 1670 1671 -f 1671 1675 1674 -f 1675 1671 1672 -f 1672 1676 1675 -f 1676 1672 1673 -f 1673 1677 1676 -f 1677 1673 514 -f 514 517 1677 -f 1653 1652 1674 -f 1674 1678 1653 -f 1678 1674 1675 -f 1675 1679 1678 -f 1679 1675 1676 -f 1676 1680 1679 -f 1680 1676 1677 -f 1677 1681 1680 -f 1681 1677 517 -f 517 520 1681 -f 1682 1683 1655 -f 1655 1654 1682 -f 1684 1685 1683 -f 1683 1682 1684 -f 1686 1687 1685 -f 1685 1684 1686 -f 1688 1689 1687 -f 1687 1686 1688 -f 526 525 1689 -f 1689 1688 526 -f 1678 1682 1654 -f 1654 1653 1678 -f 1679 1684 1682 -f 1682 1678 1679 -f 1680 1686 1684 -f 1684 1679 1680 -f 1681 1688 1686 -f 1686 1680 1681 -f 520 526 1688 -f 1688 1681 520 -f 1683 1690 1656 -f 1656 1655 1683 -f 1685 1691 1690 -f 1690 1683 1685 -f 1687 1692 1691 -f 1691 1685 1687 -f 1689 1693 1692 -f 1692 1687 1689 -f 525 529 1693 -f 1693 1689 525 -f 1656 1690 1694 -f 1694 1657 1656 -f 1691 1695 1694 -f 1694 1690 1691 -f 1696 1695 1691 -f 1691 1692 1696 -f 1692 1693 1697 -f 1697 1696 1692 -f 529 532 1697 -f 1697 1693 529 -f 80 1698 1520 -f 1520 64 80 -f 545 546 1520 -f 1520 1698 545 -f 81 1699 1698 -f 1698 80 81 -f 547 545 1698 -f 1698 1699 547 -f 1699 81 82 -f 82 1700 1699 -f 548 547 1699 -f 1699 1700 548 -f 83 1701 1700 -f 1700 82 83 -f 549 548 1700 -f 1700 1701 549 -f 96 1702 1703 -f 1703 97 96 -f 1704 414 108 -f 108 107 1704 -f 112 1705 1704 -f 1704 107 112 -f 115 1706 1705 -f 1705 112 115 -f 1702 1707 1708 -f 1708 1703 1702 -f 1707 1709 1710 -f 1710 1708 1707 -f 1709 1711 1712 -f 1712 1710 1709 -f 1711 1713 1714 -f 1714 1712 1711 -f 1713 1715 1716 -f 1716 1714 1713 -f 1717 438 414 -f 414 1704 1717 -f 438 1717 1718 -f 1718 439 438 -f 439 1718 1719 -f 1719 440 439 -f 440 1719 1720 -f 1720 441 440 -f 441 1720 1721 -f 1721 442 441 -f 1705 1722 1717 -f 1717 1704 1705 -f 1722 1723 1718 -f 1718 1717 1722 -f 1723 1724 1719 -f 1719 1718 1723 -f 1724 1725 1720 -f 1720 1719 1724 -f 1725 1726 1721 -f 1721 1720 1725 -f 1706 1727 1722 -f 1722 1705 1706 -f 1727 1728 1723 -f 1723 1722 1727 -f 1728 1729 1724 -f 1724 1723 1728 -f 1729 1730 1725 -f 1725 1724 1729 -f 1730 1731 1726 -f 1726 1725 1730 -f 1732 1733 1734 -f 1734 1735 1732 -f 1733 571 570 -f 570 1734 1733 -f 1735 1734 1736 -f 1736 1737 1735 -f 1734 570 573 -f 573 1736 1734 -f 1737 1736 1738 -f 1738 1739 1737 -f 1736 573 575 -f 575 1738 1736 -f 1739 1738 1740 -f 1740 1741 1739 -f 1738 575 583 -f 583 1740 1738 -f 1741 1740 1288 -f 1288 563 1741 -f 1288 1740 583 -f 583 588 1288 -f 1742 1743 696 -f 696 695 1742 -f 1744 1745 1743 -f 1743 1742 1744 -f 1236 1742 695 -f 695 693 1236 -f 1239 1744 1742 -f 1742 1236 1239 -f 693 690 1237 -f 1237 1236 693 -f 1241 1237 690 -f 690 533 1241 -f 1745 1744 1746 -f 1746 1747 1745 -f 1747 1746 1748 -f 1748 1749 1747 -f 1744 1239 1290 -f 1290 1746 1744 -f 1746 1290 1292 -f 1292 1748 1746 -f 1748 1750 1751 -f 1751 1749 1748 -f 1750 1752 1753 -f 1753 1751 1750 -f 1752 1754 1755 -f 1755 1753 1752 -f 1754 1756 1757 -f 1757 1755 1754 -f 1292 1296 1750 -f 1750 1748 1292 -f 1296 1298 1752 -f 1752 1750 1296 -f 1298 1300 1754 -f 1754 1752 1298 -f 1300 1302 1756 -f 1756 1754 1300 -f 1758 1759 1760 -f 1760 1761 1758 -f 1759 1762 1763 -f 1763 1760 1759 -f 1762 1764 1765 -f 1765 1763 1762 -f 1764 615 614 -f 614 1765 1764 -f 1761 1760 1766 -f 1766 1767 1761 -f 1760 1763 1768 -f 1768 1766 1760 -f 1763 1765 1769 -f 1769 1768 1763 -f 1765 614 618 -f 618 1769 1765 -f 1767 1766 1770 -f 1770 1771 1767 -f 1766 1768 1772 -f 1772 1770 1766 -f 1768 1769 1773 -f 1773 1772 1768 -f 1769 618 621 -f 621 1773 1769 -f 1771 1770 1774 -f 1774 1775 1771 -f 1770 1772 1776 -f 1776 1774 1770 -f 1772 1773 1777 -f 1777 1776 1772 -f 1773 621 624 -f 624 1777 1773 -f 1775 1774 1778 -f 1778 1779 1775 -f 1774 1776 1780 -f 1780 1778 1774 -f 1776 1777 1781 -f 1781 1780 1776 -f 1777 624 627 -f 627 1781 1777 -f 1782 1783 1784 -f 1784 1785 1782 -f 1783 1786 1787 -f 1787 1784 1783 -f 1786 1788 1789 -f 1789 1787 1786 -f 1788 633 632 -f 632 1789 1788 -f 1779 1778 1783 -f 1783 1782 1779 -f 1778 1780 1786 -f 1786 1783 1778 -f 1780 1781 1788 -f 1788 1786 1780 -f 1781 627 633 -f 633 1788 1781 -f 1785 1784 1790 -f 1790 1791 1785 -f 1784 1787 1792 -f 1792 1790 1784 -f 1787 1789 1793 -f 1793 1792 1787 -f 1789 632 636 -f 636 1793 1789 -f 1791 1790 1605 -f 1605 1604 1791 -f 1790 1792 1606 -f 1606 1605 1790 -f 1792 1793 1607 -f 1607 1606 1792 -f 1793 636 472 -f 472 1607 1793 -f 1756 1794 1795 -f 1795 1757 1756 -f 1794 1796 1797 -f 1797 1795 1794 -f 1796 1798 1799 -f 1799 1797 1796 -f 1798 1800 1801 -f 1801 1799 1798 -f 1800 642 641 -f 641 1801 1800 -f 1302 1308 1794 -f 1794 1756 1302 -f 1308 1310 1796 -f 1796 1794 1308 -f 1310 1312 1798 -f 1798 1796 1310 -f 1312 1314 1800 -f 1800 1798 1312 -f 1314 645 642 -f 642 1800 1314 -f 628 1802 1803 -f 1803 629 628 -f 1802 1804 1805 -f 1805 1803 1802 -f 1804 1806 1807 -f 1807 1805 1804 -f 1806 1808 1809 -f 1809 1807 1806 -f 1808 654 653 -f 653 1809 1808 -f 625 1490 1802 -f 1802 628 625 -f 1490 1491 1804 -f 1804 1802 1490 -f 1491 1492 1806 -f 1806 1804 1491 -f 1492 1493 1808 -f 1808 1806 1492 -f 1493 338 654 -f 654 1808 1493 -f 629 1803 1810 -f 1810 634 629 -f 1803 1805 1811 -f 1811 1810 1803 -f 1805 1807 1812 -f 1812 1811 1805 -f 1807 1809 1813 -f 1813 1812 1807 -f 1809 653 656 -f 656 1813 1809 -f 634 1810 1632 -f 1632 470 634 -f 1810 1811 1633 -f 1633 1632 1810 -f 1811 1812 1634 -f 1634 1633 1811 -f 1812 1813 1635 -f 1635 1634 1812 -f 1813 656 496 -f 496 1635 1813 -f 610 1814 1815 -f 1815 611 610 -f 1814 1816 1817 -f 1817 1815 1814 -f 1816 1818 1819 -f 1819 1817 1816 -f 1818 1820 1821 -f 1821 1819 1818 -f 1820 660 659 -f 659 1821 1820 -f 611 1815 1822 -f 1822 616 611 -f 1815 1817 1823 -f 1823 1822 1815 -f 1817 1819 1824 -f 1824 1823 1817 -f 1819 1821 1825 -f 1825 1824 1819 -f 1821 659 662 -f 662 1825 1821 -f 616 1822 1482 -f 1482 619 616 -f 1822 1823 1484 -f 1484 1482 1822 -f 1823 1824 1486 -f 1486 1484 1823 -f 1824 1825 1488 -f 1488 1486 1824 -f 1825 662 334 -f 334 1488 1825 -f 1826 1827 1732 -f 1732 1735 1826 -f 1828 1826 1735 -f 1735 1737 1828 -f 1829 1828 1737 -f 1737 1739 1829 -f 1829 1739 1741 -f 1741 1830 1829 -f 1831 1830 1741 -f 1741 563 1831 -f 1832 561 560 -f 560 1833 1832 -f 1831 563 561 -f 561 1832 1831 -f 1833 560 565 -f 565 1834 1833 -f 1657 1834 565 -f 565 392 1657 -f 1835 1827 1826 -f 1826 1836 1835 -f 1836 1837 1838 -f 1838 1835 1836 -f 1839 1838 1837 -f 1837 1840 1839 -f 1841 1839 1840 -f 1840 1842 1841 -f 1842 668 667 -f 667 1841 1842 -f 1836 1826 1828 -f 1828 1843 1836 -f 1837 1836 1843 -f 1843 1844 1837 -f 1840 1837 1844 -f 1844 1845 1840 -f 1842 1840 1845 -f 1845 1846 1842 -f 668 1842 1846 -f 1846 671 668 -f 1843 1828 1829 -f 1829 1847 1843 -f 1844 1843 1847 -f 1847 1848 1844 -f 1845 1844 1848 -f 1848 1849 1845 -f 1846 1845 1849 -f 1849 1850 1846 -f 671 1846 1850 -f 1850 674 671 -f 1830 1851 1847 -f 1847 1829 1830 -f 1851 1852 1848 -f 1848 1847 1851 -f 1852 1853 1849 -f 1849 1848 1852 -f 1853 1854 1850 -f 1850 1849 1853 -f 1854 677 674 -f 674 1850 1854 -f 1831 1855 1851 -f 1851 1830 1831 -f 1855 1856 1852 -f 1852 1851 1855 -f 1856 1857 1853 -f 1853 1852 1856 -f 1857 1858 1854 -f 1854 1853 1857 -f 1858 680 677 -f 677 1854 1858 -f 1859 1832 1833 -f 1833 1860 1859 -f 1861 1859 1860 -f 1860 1862 1861 -f 1863 1861 1862 -f 1862 1864 1863 -f 1865 1863 1864 -f 1864 1866 1865 -f 685 1865 1866 -f 1866 686 685 -f 1855 1831 1832 -f 1832 1859 1855 -f 1856 1855 1859 -f 1859 1861 1856 -f 1857 1856 1861 -f 1861 1863 1857 -f 1858 1857 1863 -f 1863 1865 1858 -f 680 1858 1865 -f 1865 685 680 -f 1860 1833 1834 -f 1834 1867 1860 -f 1862 1860 1867 -f 1867 1868 1862 -f 1864 1862 1868 -f 1868 1869 1864 -f 1866 1864 1869 -f 1869 1870 1866 -f 686 1866 1870 -f 1870 689 686 -f 1834 1657 1694 -f 1694 1867 1834 -f 1868 1867 1694 -f 1694 1695 1868 -f 1696 1869 1868 -f 1868 1695 1696 -f 1869 1696 1697 -f 1697 1870 1869 -f 689 1870 1697 -f 1697 532 689 -f 1871 1872 1873 -f 1873 1874 1871 -f 1875 1876 1872 -f 1872 1871 1875 -f 1877 1878 1876 -f 1876 1875 1877 -f 1879 1880 1878 -f 1878 1877 1879 -f 1881 1882 1880 -f 1880 1879 1881 -f 1883 1884 1882 -f 1882 1881 1883 -f 1885 1886 1884 -f 1884 1883 1885 -f 1887 1888 1886 -f 1886 1885 1887 -f 1889 1890 1888 -f 1888 1887 1889 -f 1891 1892 1890 -f 1890 1889 1891 -f 1893 1894 1892 -f 1892 1891 1893 -f 1895 1896 1894 -f 1894 1893 1895 -f 1872 1897 1898 -f 1898 1873 1872 -f 1897 1899 1900 -f 1900 1898 1897 -f 1899 1901 1902 -f 1902 1900 1899 -f 1901 1903 1904 -f 1904 1902 1901 -f 1903 1905 1906 -f 1906 1904 1903 -f 1876 1907 1897 -f 1897 1872 1876 -f 1907 1908 1899 -f 1899 1897 1907 -f 1908 1909 1901 -f 1901 1899 1908 -f 1909 1910 1903 -f 1903 1901 1909 -f 1910 1911 1905 -f 1905 1903 1910 -f 1878 1912 1907 -f 1907 1876 1878 -f 1912 1913 1908 -f 1908 1907 1912 -f 1913 1914 1909 -f 1909 1908 1913 -f 1914 1915 1910 -f 1910 1909 1914 -f 1915 1916 1911 -f 1911 1910 1915 -f 1880 1917 1912 -f 1912 1878 1880 -f 1917 1918 1913 -f 1913 1912 1917 -f 1918 1919 1914 -f 1914 1913 1918 -f 1919 1920 1915 -f 1915 1914 1919 -f 1920 1921 1916 -f 1916 1915 1920 -f 1882 1922 1917 -f 1917 1880 1882 -f 1922 1923 1918 -f 1918 1917 1922 -f 1923 1924 1919 -f 1919 1918 1923 -f 1924 1925 1920 -f 1920 1919 1924 -f 1925 1926 1921 -f 1921 1920 1925 -f 1884 1927 1922 -f 1922 1882 1884 -f 1927 1928 1923 -f 1923 1922 1927 -f 1928 1929 1924 -f 1924 1923 1928 -f 1929 1930 1925 -f 1925 1924 1929 -f 1930 1931 1926 -f 1926 1925 1930 -f 1886 1932 1927 -f 1927 1884 1886 -f 1932 1933 1928 -f 1928 1927 1932 -f 1933 1934 1929 -f 1929 1928 1933 -f 1934 1935 1930 -f 1930 1929 1934 -f 1935 1936 1931 -f 1931 1930 1935 -f 1888 1937 1932 -f 1932 1886 1888 -f 1937 1938 1933 -f 1933 1932 1937 -f 1938 1939 1934 -f 1934 1933 1938 -f 1939 1940 1935 -f 1935 1934 1939 -f 1940 1941 1936 -f 1936 1935 1940 -f 1890 1942 1937 -f 1937 1888 1890 -f 1942 1943 1938 -f 1938 1937 1942 -f 1943 1944 1939 -f 1939 1938 1943 -f 1944 1945 1940 -f 1940 1939 1944 -f 1945 1946 1941 -f 1941 1940 1945 -f 1892 1947 1942 -f 1942 1890 1892 -f 1947 1948 1943 -f 1943 1942 1947 -f 1948 1949 1944 -f 1944 1943 1948 -f 1949 1950 1945 -f 1945 1944 1949 -f 1950 1951 1946 -f 1946 1945 1950 -f 1894 1952 1947 -f 1947 1892 1894 -f 1952 1953 1948 -f 1948 1947 1952 -f 1953 1954 1949 -f 1949 1948 1953 -f 1954 1955 1950 -f 1950 1949 1954 -f 1955 1956 1951 -f 1951 1950 1955 -f 1896 1957 1952 -f 1952 1894 1896 -f 1957 1958 1953 -f 1953 1952 1957 -f 1958 1959 1954 -f 1954 1953 1958 -f 1959 1960 1955 -f 1955 1954 1959 -f 1960 1961 1956 -f 1956 1955 1960 -f 1874 1873 1962 -f 1962 1963 1874 -f 1963 1962 1964 -f 1964 1965 1963 -f 1965 1964 1966 -f 1966 1967 1965 -f 1967 1966 1968 -f 1968 1969 1967 -f 1969 1968 1970 -f 1970 1971 1969 -f 1971 1970 1972 -f 1972 1973 1971 -f 1973 1972 1974 -f 1974 1975 1973 -f 1975 1974 1976 -f 1976 1977 1975 -f 1977 1976 1978 -f 1978 1979 1977 -f 1979 1978 1980 -f 1980 1981 1979 -f 1981 1980 1982 -f 1982 1983 1981 -f 1983 1982 1896 -f 1896 1895 1983 -f 1873 1898 1984 -f 1984 1962 1873 -f 1898 1900 1985 -f 1985 1984 1898 -f 1900 1902 1986 -f 1986 1985 1900 -f 1902 1904 1987 -f 1987 1986 1902 -f 1904 1906 1988 -f 1988 1987 1904 -f 1962 1984 1989 -f 1989 1964 1962 -f 1984 1985 1990 -f 1990 1989 1984 -f 1985 1986 1991 -f 1991 1990 1985 -f 1986 1987 1992 -f 1992 1991 1986 -f 1987 1988 1993 -f 1993 1992 1987 -f 1964 1989 1994 -f 1994 1966 1964 -f 1989 1990 1995 -f 1995 1994 1989 -f 1990 1991 1996 -f 1996 1995 1990 -f 1991 1992 1997 -f 1997 1996 1991 -f 1992 1993 1998 -f 1998 1997 1992 -f 1966 1994 1999 -f 1999 1968 1966 -f 1994 1995 2000 -f 2000 1999 1994 -f 1995 1996 2001 -f 2001 2000 1995 -f 1996 1997 2002 -f 2002 2001 1996 -f 1997 1998 2003 -f 2003 2002 1997 -f 1968 1999 2004 -f 2004 1970 1968 -f 1999 2000 2005 -f 2005 2004 1999 -f 2000 2001 2006 -f 2006 2005 2000 -f 2001 2002 2007 -f 2007 2006 2001 -f 2002 2003 2008 -f 2008 2007 2002 -f 1970 2004 2009 -f 2009 1972 1970 -f 2004 2005 2010 -f 2010 2009 2004 -f 2005 2006 2011 -f 2011 2010 2005 -f 2006 2007 2012 -f 2012 2011 2006 -f 2007 2008 2013 -f 2013 2012 2007 -f 1972 2009 2014 -f 2014 1974 1972 -f 2009 2010 2015 -f 2015 2014 2009 -f 2010 2011 2016 -f 2016 2015 2010 -f 2011 2012 2017 -f 2017 2016 2011 -f 2012 2013 2018 -f 2018 2017 2012 -f 1974 2014 2019 -f 2019 1976 1974 -f 2014 2015 2020 -f 2020 2019 2014 -f 2015 2016 2021 -f 2021 2020 2015 -f 2016 2017 2022 -f 2022 2021 2016 -f 2017 2018 2023 -f 2023 2022 2017 -f 1976 2019 2024 -f 2024 1978 1976 -f 2019 2020 2025 -f 2025 2024 2019 -f 2020 2021 2026 -f 2026 2025 2020 -f 2021 2022 2027 -f 2027 2026 2021 -f 2022 2023 2028 -f 2028 2027 2022 -f 1978 2024 2029 -f 2029 1980 1978 -f 2024 2025 2030 -f 2030 2029 2024 -f 2025 2026 2031 -f 2031 2030 2025 -f 2026 2027 2032 -f 2032 2031 2026 -f 2027 2028 2033 -f 2033 2032 2027 -f 1980 2029 2034 -f 2034 1982 1980 -f 2029 2030 2035 -f 2035 2034 2029 -f 2030 2031 2036 -f 2036 2035 2030 -f 2031 2032 2037 -f 2037 2036 2031 -f 2032 2033 2038 -f 2038 2037 2032 -f 1982 2034 1957 -f 1957 1896 1982 -f 2034 2035 1958 -f 1958 1957 2034 -f 2035 2036 1959 -f 1959 1958 2035 -f 2036 2037 1960 -f 1960 1959 2036 -f 2037 2038 1961 -f 1961 1960 2037 -f 168 1362 1325 -f 1325 160 168 -f 584 1032 177 -f 177 176 584 -f 183 1033 1361 -f 1361 184 183 -f 1362 1364 1356 -f 1356 1325 1362 -f 1364 1366 1357 -f 1357 1356 1364 -f 1366 1368 1358 -f 1358 1357 1366 -f 1368 1370 1359 -f 1359 1358 1368 -f 1370 1372 1360 -f 1360 1359 1370 -f 1503 1032 584 -f 584 605 1503 -f 605 606 1501 -f 1501 1503 605 -f 606 607 1499 -f 1499 1501 606 -f 607 608 1496 -f 1496 1499 607 -f 608 609 1497 -f 1497 1496 608 -f 1033 1502 1363 -f 1363 1361 1033 -f 1502 1500 1365 -f 1365 1363 1502 -f 1500 1498 1367 -f 1367 1365 1500 -f 1498 1495 1369 -f 1369 1367 1498 -f 1495 1494 1371 -f 1371 1369 1495 -f 200 2039 2040 -f 2040 201 200 -f 2041 876 2040 -f 2040 2039 2041 -f 202 2042 2039 -f 2039 200 202 -f 2043 2041 2039 -f 2039 2042 2043 -f 2042 202 203 -f 203 2044 2042 -f 2045 2043 2042 -f 2042 2044 2045 -f 67 1527 2044 -f 2044 203 67 -f 1528 2045 2044 -f 2044 1527 1528 -f 1529 1532 2046 -f 2046 2047 1529 -f 2048 2046 1532 -f 1532 1534 2048 -f 1534 397 744 -f 744 2048 1534 -f 2047 2046 2049 -f 2049 2050 2047 -f 2046 2048 2051 -f 2051 2049 2046 -f 2048 744 747 -f 747 2051 2048 -f 2050 2049 2052 -f 2052 2053 2050 -f 2049 2051 2054 -f 2054 2052 2049 -f 2051 747 750 -f 750 2054 2051 -f 2053 2052 2055 -f 2055 2056 2053 -f 2052 2054 2057 -f 2057 2055 2052 -f 2054 750 759 -f 759 2057 2054 -f 2056 2055 1379 -f 1379 737 2056 -f 2055 2057 1380 -f 1380 1379 2055 -f 2057 759 764 -f 764 1380 2057 -f 2058 1547 540 -f 540 871 2058 -f 2059 1549 1547 -f 1547 2058 2059 -f 1244 2058 871 -f 871 869 1244 -f 1247 2059 2058 -f 2058 1244 1247 -f 869 866 1245 -f 1245 1244 869 -f 1249 1245 866 -f 866 865 1249 -f 1549 2059 2060 -f 2060 1550 1549 -f 1550 2060 2061 -f 2061 1552 1550 -f 2059 1247 1382 -f 1382 2060 2059 -f 2060 1382 1384 -f 1384 2061 2060 -f 2061 2062 1556 -f 1556 1552 2061 -f 2062 2063 1558 -f 1558 1556 2062 -f 2063 2064 1560 -f 1560 1558 2063 -f 2064 2065 1562 -f 1562 1560 2064 -f 1384 1401 2062 -f 2062 2061 1384 -f 1401 1403 2063 -f 2063 2062 1401 -f 1403 1405 2064 -f 2064 2063 1403 -f 1405 1407 2065 -f 2065 2064 1405 -f 1571 1570 2066 -f 2066 2067 1571 -f 1570 1573 2068 -f 2068 2066 1570 -f 1573 1575 2069 -f 2069 2068 1573 -f 1575 447 788 -f 788 2069 1575 -f 2067 2066 2070 -f 2070 2071 2067 -f 2066 2068 2072 -f 2072 2070 2066 -f 2068 2069 2073 -f 2073 2072 2068 -f 2069 788 791 -f 791 2073 2069 -f 2071 2070 2074 -f 2074 2075 2071 -f 2070 2072 2076 -f 2076 2074 2070 -f 2072 2073 2077 -f 2077 2076 2072 -f 2073 791 794 -f 794 2077 2073 -f 2075 2074 2078 -f 2078 2079 2075 -f 2074 2076 2080 -f 2080 2078 2074 -f 2076 2077 2081 -f 2081 2080 2076 -f 2077 794 797 -f 797 2081 2077 -f 2079 2078 2082 -f 2082 2083 2079 -f 2078 2080 2084 -f 2084 2082 2078 -f 2080 2081 2085 -f 2085 2084 2080 -f 2081 797 800 -f 800 2085 2081 -f 2086 2087 2088 -f 2088 2089 2086 -f 2087 2090 2091 -f 2091 2088 2087 -f 2090 2092 2093 -f 2093 2091 2090 -f 2092 806 805 -f 805 2093 2092 -f 2083 2082 2087 -f 2087 2086 2083 -f 2082 2084 2090 -f 2090 2087 2082 -f 2084 2085 2092 -f 2092 2090 2084 -f 2085 800 806 -f 806 2092 2085 -f 2089 2088 2094 -f 2094 2095 2089 -f 2088 2091 2096 -f 2096 2094 2088 -f 2091 2093 2097 -f 2097 2096 2091 -f 2093 805 809 -f 809 2097 2093 -f 2095 2094 2098 -f 2098 2099 2095 -f 2094 2096 2100 -f 2100 2098 2094 -f 2096 2097 2101 -f 2101 2100 2096 -f 2097 809 812 -f 812 2101 2097 -f 2065 2102 1608 -f 1608 1562 2065 -f 2102 2103 1610 -f 1610 1608 2102 -f 2103 2104 1612 -f 1612 1610 2103 -f 2104 2105 1614 -f 1614 1612 2104 -f 2105 815 477 -f 477 1614 2105 -f 1407 1413 2102 -f 2102 2065 1407 -f 1413 1415 2103 -f 2103 2102 1413 -f 1415 1417 2104 -f 2104 2103 1415 -f 1417 1419 2105 -f 2105 2104 1417 -f 1419 818 815 -f 815 2105 1419 -f 801 2106 2107 -f 2107 802 801 -f 2106 2108 2109 -f 2109 2107 2106 -f 2108 2110 2111 -f 2111 2109 2108 -f 2110 2112 2113 -f 2113 2111 2110 -f 2112 829 828 -f 828 2113 2112 -f 798 1512 2106 -f 2106 801 798 -f 1512 1513 2108 -f 2108 2106 1512 -f 1513 1514 2110 -f 2110 2108 1513 -f 1514 1515 2112 -f 2112 2110 1514 -f 1515 357 829 -f 829 2112 1515 -f 802 2107 2114 -f 2114 807 802 -f 2107 2109 2115 -f 2115 2114 2107 -f 2109 2111 2116 -f 2116 2115 2109 -f 2111 2113 2117 -f 2117 2116 2111 -f 2113 828 831 -f 831 2117 2113 -f 807 2114 2118 -f 2118 810 807 -f 2114 2115 2119 -f 2119 2118 2114 -f 2115 2116 2120 -f 2120 2119 2115 -f 2116 2117 2121 -f 2121 2120 2116 -f 2117 831 833 -f 833 2121 2117 -f 443 1637 2122 -f 2122 786 443 -f 1637 1639 2123 -f 2123 2122 1637 -f 1639 1641 2124 -f 2124 2123 1639 -f 1641 1643 2125 -f 2125 2124 1641 -f 1643 499 835 -f 835 2125 1643 -f 786 2122 2126 -f 2126 789 786 -f 2122 2123 2127 -f 2127 2126 2122 -f 2123 2124 2128 -f 2128 2127 2123 -f 2124 2125 2129 -f 2129 2128 2124 -f 2125 835 837 -f 837 2129 2125 -f 789 2126 1504 -f 1504 792 789 -f 2126 2127 1506 -f 1506 1504 2126 -f 2127 2128 1508 -f 1508 1506 2127 -f 2128 2129 1510 -f 1510 1508 2128 -f 2129 837 353 -f 353 1510 2129 -f 2130 1649 1529 -f 1529 2047 2130 -f 2130 2047 2050 -f 2050 2131 2130 -f 2131 2050 2053 -f 2053 2132 2131 -f 2132 2053 2056 -f 2056 2133 2132 -f 2134 2133 2056 -f 2056 737 2134 -f 2135 735 734 -f 734 2136 2135 -f 2134 737 735 -f 735 2135 2134 -f 2136 734 739 -f 739 2137 2136 -f 2138 2137 739 -f 739 741 2138 -f 1658 1649 2130 -f 2130 2139 1658 -f 2139 2140 1660 -f 1660 1658 2139 -f 1662 1660 2140 -f 2140 2141 1662 -f 1664 1662 2141 -f 2141 2142 1664 -f 2142 840 508 -f 508 1664 2142 -f 2139 2130 2131 -f 2131 2143 2139 -f 2140 2139 2143 -f 2143 2144 2140 -f 2141 2140 2144 -f 2144 2145 2141 -f 2142 2141 2145 -f 2145 2146 2142 -f 840 2142 2146 -f 2146 843 840 -f 2143 2131 2132 -f 2132 2147 2143 -f 2144 2143 2147 -f 2147 2148 2144 -f 2145 2144 2148 -f 2148 2149 2145 -f 2146 2145 2149 -f 2149 2150 2146 -f 843 2146 2150 -f 2150 846 843 -f 2133 2151 2147 -f 2147 2132 2133 -f 2151 2152 2148 -f 2148 2147 2151 -f 2152 2153 2149 -f 2149 2148 2152 -f 2153 2154 2150 -f 2150 2149 2153 -f 2154 849 846 -f 846 2150 2154 -f 2134 2155 2151 -f 2151 2133 2134 -f 2155 2156 2152 -f 2152 2151 2155 -f 2156 2157 2153 -f 2153 2152 2156 -f 2157 2158 2154 -f 2154 2153 2157 -f 2158 852 849 -f 849 2154 2158 -f 2159 2135 2136 -f 2136 2160 2159 -f 2161 2159 2160 -f 2160 2162 2161 -f 2163 2161 2162 -f 2162 2164 2163 -f 2165 2163 2164 -f 2164 2166 2165 -f 857 2165 2166 -f 2166 858 857 -f 2155 2134 2135 -f 2135 2159 2155 -f 2156 2155 2159 -f 2159 2161 2156 -f 2157 2156 2161 -f 2161 2163 2157 -f 2158 2157 2163 -f 2163 2165 2158 -f 852 2158 2165 -f 2165 857 852 -f 2160 2136 2137 -f 2137 2167 2160 -f 2162 2160 2167 -f 2167 2168 2162 -f 2164 2162 2168 -f 2168 2169 2164 -f 2166 2164 2169 -f 2169 2170 2166 -f 858 2166 2170 -f 2170 861 858 -f 2137 2138 2171 -f 2171 2167 2137 -f 2168 2167 2171 -f 2171 2172 2168 -f 2173 2169 2168 -f 2168 2172 2173 -f 2169 2173 2174 -f 2174 2170 2169 -f 861 2170 2174 -f 2174 864 861 -f 214 201 2040 -f 2040 2175 214 -f 875 2175 2040 -f 2040 876 875 -f 215 214 2175 -f 2175 2176 215 -f 877 2176 2175 -f 2175 875 877 -f 2176 2177 216 -f 216 215 2176 -f 878 2177 2176 -f 2176 877 878 -f 83 216 2177 -f 2177 1701 83 -f 549 1701 2177 -f 2177 878 549 -f 229 1425 1442 -f 1442 230 229 -f 2178 241 240 -f 240 760 2178 -f 241 2178 2179 -f 2179 245 241 -f 245 2179 1424 -f 1424 248 245 -f 1425 1427 1473 -f 1473 1442 1425 -f 1427 1429 1474 -f 1474 1473 1427 -f 1429 1431 1475 -f 1475 1474 1429 -f 1431 1433 1476 -f 1476 1475 1431 -f 1433 1435 1477 -f 1477 1476 1433 -f 2180 2178 760 -f 760 781 2180 -f 781 782 2181 -f 2181 2180 781 -f 782 783 2182 -f 2182 2181 782 -f 783 784 2183 -f 2183 2182 783 -f 784 785 2184 -f 2184 2183 784 -f 2178 2180 2185 -f 2185 2179 2178 -f 2180 2181 2186 -f 2186 2185 2180 -f 2181 2182 2187 -f 2187 2186 2181 -f 2182 2183 2188 -f 2188 2187 2182 -f 2183 2184 2189 -f 2189 2188 2183 -f 2179 2185 1426 -f 1426 1424 2179 -f 2185 2186 1428 -f 1428 1426 2185 -f 2186 2187 1430 -f 1430 1428 2186 -f 2187 2188 1432 -f 1432 1430 2187 -f 2188 2189 1434 -f 1434 1432 2188 -f 1732 2190 2191 -f 2191 1733 1732 -f 1733 2191 897 -f 897 571 1733 -f 2190 2192 2193 -f 2193 2191 2190 -f 2191 2193 899 -f 899 897 2191 -f 2192 2194 2195 -f 2195 2193 2192 -f 2193 2195 901 -f 901 899 2193 -f 2194 2196 2197 -f 2197 2195 2194 -f 2195 2197 909 -f 909 901 2195 -f 2196 892 2198 -f 2198 2197 2196 -f 2198 914 909 -f 909 2197 2198 -f 2199 1007 696 -f 696 1743 2199 -f 2200 2199 1743 -f 1743 1745 2200 -f 1516 1005 1007 -f 1007 2199 1516 -f 1517 1516 2199 -f 2199 2200 1517 -f 1005 1516 1519 -f 1519 1002 1005 -f 1249 865 1002 -f 1002 1519 1249 -f 1745 1747 2201 -f 2201 2200 1745 -f 1747 1749 2202 -f 2202 2201 1747 -f 2200 2201 2203 -f 2203 1517 2200 -f 2201 2202 2204 -f 2204 2203 2201 -f 1749 1751 2205 -f 2205 2202 1749 -f 1751 1753 2206 -f 2206 2205 1751 -f 1753 1755 2207 -f 2207 2206 1753 -f 1755 1757 2208 -f 2208 2207 1755 -f 2202 2205 2209 -f 2209 2204 2202 -f 2205 2206 2210 -f 2210 2209 2205 -f 2206 2207 2211 -f 2211 2210 2206 -f 2207 2208 2212 -f 2212 2211 2207 -f 2213 2214 1759 -f 1759 1758 2213 -f 2214 2215 1762 -f 1762 1759 2214 -f 2215 2216 1764 -f 1764 1762 2215 -f 2216 935 615 -f 615 1764 2216 -f 2217 2218 2214 -f 2214 2213 2217 -f 2218 2219 2215 -f 2215 2214 2218 -f 2219 2220 2216 -f 2216 2215 2219 -f 2220 938 935 -f 935 2216 2220 -f 2221 2222 2218 -f 2218 2217 2221 -f 2222 2223 2219 -f 2219 2218 2222 -f 2223 2224 2220 -f 2220 2219 2223 -f 2224 941 938 -f 938 2220 2224 -f 2225 2226 2222 -f 2222 2221 2225 -f 2226 2227 2223 -f 2223 2222 2226 -f 2227 2228 2224 -f 2224 2223 2227 -f 2228 944 941 -f 941 2224 2228 -f 2229 2230 2226 -f 2226 2225 2229 -f 2230 2231 2227 -f 2227 2226 2230 -f 2231 2232 2228 -f 2228 2227 2231 -f 2232 947 944 -f 944 2228 2232 -f 2233 2234 2235 -f 2235 2236 2233 -f 2234 2237 2238 -f 2238 2235 2234 -f 2237 2239 2240 -f 2240 2238 2237 -f 2239 953 952 -f 952 2240 2239 -f 2236 2235 2230 -f 2230 2229 2236 -f 2235 2238 2231 -f 2231 2230 2235 -f 2238 2240 2232 -f 2232 2231 2238 -f 2240 952 947 -f 947 2232 2240 -f 2241 2242 2234 -f 2234 2233 2241 -f 2242 2243 2237 -f 2237 2234 2242 -f 2243 2244 2239 -f 2239 2237 2243 -f 2244 956 953 -f 953 2239 2244 -f 2099 2098 2242 -f 2242 2241 2099 -f 2098 2100 2243 -f 2243 2242 2098 -f 2100 2101 2244 -f 2244 2243 2100 -f 2101 812 956 -f 956 2244 2101 -f 1757 1795 2245 -f 2245 2208 1757 -f 1795 1797 2246 -f 2246 2245 1795 -f 1797 1799 2247 -f 2247 2246 1797 -f 1799 1801 2248 -f 2248 2247 1799 -f 1801 641 959 -f 959 2248 1801 -f 2208 2245 2249 -f 2249 2212 2208 -f 2245 2246 2250 -f 2250 2249 2245 -f 2246 2247 2251 -f 2251 2250 2246 -f 2247 2248 2252 -f 2252 2251 2247 -f 2248 959 962 -f 962 2252 2248 -f 951 2253 2254 -f 2254 948 951 -f 2253 2255 2256 -f 2256 2254 2253 -f 2255 2257 2258 -f 2258 2256 2255 -f 2257 2259 2260 -f 2260 2258 2257 -f 2259 971 970 -f 970 2260 2259 -f 948 2254 1258 -f 1258 946 948 -f 2254 2256 1259 -f 1259 1258 2254 -f 2256 2258 1260 -f 1260 1259 2256 -f 2258 2260 1261 -f 1261 1260 2258 -f 2260 970 362 -f 362 1261 2260 -f 954 2261 2253 -f 2253 951 954 -f 2261 2262 2255 -f 2255 2253 2261 -f 2262 2263 2257 -f 2257 2255 2262 -f 2263 2264 2259 -f 2259 2257 2263 -f 2264 973 971 -f 971 2259 2264 -f 810 2118 2261 -f 2261 954 810 -f 2118 2119 2262 -f 2262 2261 2118 -f 2119 2120 2263 -f 2263 2262 2119 -f 2120 2121 2264 -f 2264 2263 2120 -f 2121 833 973 -f 973 2264 2121 -f 934 2265 1814 -f 1814 610 934 -f 2265 2266 1816 -f 1816 1814 2265 -f 2266 2267 1818 -f 1818 1816 2266 -f 2267 2268 1820 -f 1820 1818 2267 -f 2268 975 660 -f 660 1820 2268 -f 937 2269 2265 -f 2265 934 937 -f 2269 2270 2266 -f 2266 2265 2269 -f 2270 2271 2267 -f 2267 2266 2270 -f 2271 2272 2268 -f 2268 2267 2271 -f 2272 977 975 -f 975 2268 2272 -f 940 1251 2269 -f 2269 937 940 -f 1251 1253 2270 -f 2270 2269 1251 -f 1253 1255 2271 -f 2271 2270 1253 -f 1255 1257 2272 -f 2272 2271 1255 -f 1257 359 977 -f 977 2272 1257 -f 2273 2190 1732 -f 1732 1827 2273 -f 2274 2192 2190 -f 2190 2273 2274 -f 2275 2194 2192 -f 2192 2274 2275 -f 2275 2276 2196 -f 2196 2194 2275 -f 2277 892 2196 -f 2196 2276 2277 -f 2278 2279 890 -f 890 889 2278 -f 2277 2278 889 -f 889 892 2277 -f 2279 2280 894 -f 894 890 2279 -f 2138 741 894 -f 894 2280 2138 -f 1835 2281 2273 -f 2273 1827 1835 -f 2281 1835 1838 -f 1838 2282 2281 -f 1839 2283 2282 -f 2282 1838 1839 -f 1841 2284 2283 -f 2283 1839 1841 -f 2284 1841 667 -f 667 980 2284 -f 2281 2285 2274 -f 2274 2273 2281 -f 2282 2286 2285 -f 2285 2281 2282 -f 2283 2287 2286 -f 2286 2282 2283 -f 2284 2288 2287 -f 2287 2283 2284 -f 980 983 2288 -f 2288 2284 980 -f 2285 2289 2275 -f 2275 2274 2285 -f 2286 2290 2289 -f 2289 2285 2286 -f 2287 2291 2290 -f 2290 2286 2287 -f 2288 2292 2291 -f 2291 2287 2288 -f 983 986 2292 -f 2292 2288 983 -f 2276 2275 2289 -f 2289 2293 2276 -f 2293 2289 2290 -f 2290 2294 2293 -f 2294 2290 2291 -f 2291 2295 2294 -f 2295 2291 2292 -f 2292 2296 2295 -f 2296 2292 986 -f 986 989 2296 -f 2277 2276 2293 -f 2293 2297 2277 -f 2297 2293 2294 -f 2294 2298 2297 -f 2298 2294 2295 -f 2295 2299 2298 -f 2299 2295 2296 -f 2296 2300 2299 -f 2300 2296 989 -f 989 992 2300 -f 2301 2302 2279 -f 2279 2278 2301 -f 2303 2304 2302 -f 2302 2301 2303 -f 2305 2306 2304 -f 2304 2303 2305 -f 2307 2308 2306 -f 2306 2305 2307 -f 998 997 2308 -f 2308 2307 998 -f 2297 2301 2278 -f 2278 2277 2297 -f 2298 2303 2301 -f 2301 2297 2298 -f 2299 2305 2303 -f 2303 2298 2299 -f 2300 2307 2305 -f 2305 2299 2300 -f 992 998 2307 -f 2307 2300 992 -f 2302 2309 2280 -f 2280 2279 2302 -f 2304 2310 2309 -f 2309 2302 2304 -f 2306 2311 2310 -f 2310 2304 2306 -f 2308 2312 2311 -f 2311 2306 2308 -f 997 1001 2312 -f 2312 2308 997 -f 2280 2309 2171 -f 2171 2138 2280 -f 2310 2172 2171 -f 2171 2309 2310 -f 2173 2172 2310 -f 2310 2311 2173 -f 2311 2312 2174 -f 2174 2173 2311 -f 1001 864 2174 -f 2174 2312 1001 -f 2313 2314 2315 -f 2315 2316 2313 -f 2316 2315 2317 -f 2317 2318 2316 -f 2318 2317 2319 -f 2319 2320 2318 -f 2320 2319 2321 -f 2321 2322 2320 -f 2322 2321 2323 -f 2323 2324 2322 -f 2324 2323 2325 -f 2325 2326 2324 -f 2326 2325 2327 -f 2327 2328 2326 -f 2328 2327 2329 -f 2329 2330 2328 -f 2330 2329 2331 -f 2331 2332 2330 -f 2332 2331 2333 -f 2333 2334 2332 -f 2334 2333 2335 -f 2335 2336 2334 -f 2336 2335 2337 -f 2337 2338 2336 -f 2314 2339 2340 -f 2340 2315 2314 -f 2339 2341 2342 -f 2342 2340 2339 -f 2341 2343 2344 -f 2344 2342 2341 -f 2343 2345 2346 -f 2346 2344 2343 -f 2345 2347 2348 -f 2348 2346 2345 -f 2315 2340 2349 -f 2349 2317 2315 -f 2340 2342 2350 -f 2350 2349 2340 -f 2342 2344 2351 -f 2351 2350 2342 -f 2344 2346 2352 -f 2352 2351 2344 -f 2346 2348 2353 -f 2353 2352 2346 -f 2317 2349 2354 -f 2354 2319 2317 -f 2349 2350 2355 -f 2355 2354 2349 -f 2350 2351 2356 -f 2356 2355 2350 -f 2351 2352 2357 -f 2357 2356 2351 -f 2352 2353 2358 -f 2358 2357 2352 -f 2319 2354 2359 -f 2359 2321 2319 -f 2354 2355 2360 -f 2360 2359 2354 -f 2355 2356 2361 -f 2361 2360 2355 -f 2356 2357 2362 -f 2362 2361 2356 -f 2357 2358 2363 -f 2363 2362 2357 -f 2321 2359 2364 -f 2364 2323 2321 -f 2359 2360 2365 -f 2365 2364 2359 -f 2360 2361 2366 -f 2366 2365 2360 -f 2361 2362 2367 -f 2367 2366 2361 -f 2362 2363 2368 -f 2368 2367 2362 -f 2323 2364 2369 -f 2369 2325 2323 -f 2364 2365 2370 -f 2370 2369 2364 -f 2365 2366 2371 -f 2371 2370 2365 -f 2366 2367 2372 -f 2372 2371 2366 -f 2367 2368 2373 -f 2373 2372 2367 -f 2325 2369 2374 -f 2374 2327 2325 -f 2369 2370 2375 -f 2375 2374 2369 -f 2370 2371 2376 -f 2376 2375 2370 -f 2371 2372 2377 -f 2377 2376 2371 -f 2372 2373 2378 -f 2378 2377 2372 -f 2327 2374 2379 -f 2379 2329 2327 -f 2374 2375 2380 -f 2380 2379 2374 -f 2375 2376 2381 -f 2381 2380 2375 -f 2376 2377 2382 -f 2382 2381 2376 -f 2377 2378 2383 -f 2383 2382 2377 -f 2329 2379 2384 -f 2384 2331 2329 -f 2379 2380 2385 -f 2385 2384 2379 -f 2380 2381 2386 -f 2386 2385 2380 -f 2381 2382 2387 -f 2387 2386 2381 -f 2382 2383 2388 -f 2388 2387 2382 -f 2331 2384 2389 -f 2389 2333 2331 -f 2384 2385 2390 -f 2390 2389 2384 -f 2385 2386 2391 -f 2391 2390 2385 -f 2386 2387 2392 -f 2392 2391 2386 -f 2387 2388 2393 -f 2393 2392 2387 -f 2333 2389 2394 -f 2394 2335 2333 -f 2389 2390 2395 -f 2395 2394 2389 -f 2390 2391 2396 -f 2396 2395 2390 -f 2391 2392 2397 -f 2397 2396 2391 -f 2392 2393 2398 -f 2398 2397 2392 -f 2335 2394 2399 -f 2399 2337 2335 -f 2394 2395 2400 -f 2400 2399 2394 -f 2395 2396 2401 -f 2401 2400 2395 -f 2396 2397 2402 -f 2402 2401 2396 -f 2397 2398 2403 -f 2403 2402 2397 -f 2404 2405 2314 -f 2314 2313 2404 -f 2406 2407 2405 -f 2405 2404 2406 -f 2408 2409 2407 -f 2407 2406 2408 -f 2410 2411 2409 -f 2409 2408 2410 -f 2412 2413 2411 -f 2411 2410 2412 -f 2414 2415 2413 -f 2413 2412 2414 -f 2416 2417 2415 -f 2415 2414 2416 -f 2418 2419 2417 -f 2417 2416 2418 -f 2420 2421 2419 -f 2419 2418 2420 -f 2422 2423 2421 -f 2421 2420 2422 -f 2424 2425 2423 -f 2423 2422 2424 -f 2338 2337 2425 -f 2425 2424 2338 -f 2405 2426 2339 -f 2339 2314 2405 -f 2426 2427 2341 -f 2341 2339 2426 -f 2427 2428 2343 -f 2343 2341 2427 -f 2428 2429 2345 -f 2345 2343 2428 -f 2429 2430 2347 -f 2347 2345 2429 -f 2407 2431 2426 -f 2426 2405 2407 -f 2431 2432 2427 -f 2427 2426 2431 -f 2432 2433 2428 -f 2428 2427 2432 -f 2433 2434 2429 -f 2429 2428 2433 -f 2434 2435 2430 -f 2430 2429 2434 -f 2409 2436 2431 -f 2431 2407 2409 -f 2436 2437 2432 -f 2432 2431 2436 -f 2437 2438 2433 -f 2433 2432 2437 -f 2438 2439 2434 -f 2434 2433 2438 -f 2439 2440 2435 -f 2435 2434 2439 -f 2411 2441 2436 -f 2436 2409 2411 -f 2441 2442 2437 -f 2437 2436 2441 -f 2442 2443 2438 -f 2438 2437 2442 -f 2443 2444 2439 -f 2439 2438 2443 -f 2444 2445 2440 -f 2440 2439 2444 -f 2413 2446 2441 -f 2441 2411 2413 -f 2446 2447 2442 -f 2442 2441 2446 -f 2447 2448 2443 -f 2443 2442 2447 -f 2448 2449 2444 -f 2444 2443 2448 -f 2449 2450 2445 -f 2445 2444 2449 -f 2415 2451 2446 -f 2446 2413 2415 -f 2451 2452 2447 -f 2447 2446 2451 -f 2452 2453 2448 -f 2448 2447 2452 -f 2453 2454 2449 -f 2449 2448 2453 -f 2454 2455 2450 -f 2450 2449 2454 -f 2417 2456 2451 -f 2451 2415 2417 -f 2456 2457 2452 -f 2452 2451 2456 -f 2457 2458 2453 -f 2453 2452 2457 -f 2458 2459 2454 -f 2454 2453 2458 -f 2459 2460 2455 -f 2455 2454 2459 -f 2419 2461 2456 -f 2456 2417 2419 -f 2461 2462 2457 -f 2457 2456 2461 -f 2462 2463 2458 -f 2458 2457 2462 -f 2463 2464 2459 -f 2459 2458 2463 -f 2464 2465 2460 -f 2460 2459 2464 -f 2421 2466 2461 -f 2461 2419 2421 -f 2466 2467 2462 -f 2462 2461 2466 -f 2467 2468 2463 -f 2463 2462 2467 -f 2468 2469 2464 -f 2464 2463 2468 -f 2469 2470 2465 -f 2465 2464 2469 -f 2423 2471 2466 -f 2466 2421 2423 -f 2471 2472 2467 -f 2467 2466 2471 -f 2472 2473 2468 -f 2468 2467 2472 -f 2473 2474 2469 -f 2469 2468 2473 -f 2474 2475 2470 -f 2470 2469 2474 -f 2425 2476 2471 -f 2471 2423 2425 -f 2476 2477 2472 -f 2472 2471 2476 -f 2477 2478 2473 -f 2473 2472 2477 -f 2478 2479 2474 -f 2474 2473 2478 -f 2479 2480 2475 -f 2475 2474 2479 -f 2337 2399 2476 -f 2476 2425 2337 -f 2399 2400 2477 -f 2477 2476 2399 -f 2400 2401 2478 -f 2478 2477 2400 -f 2401 2402 2479 -f 2479 2478 2401 -f 2402 2403 2480 -f 2480 2479 2402 -f 293 2481 2482 -f 2482 301 293 -f 910 310 309 -f 309 1043 910 -f 317 2483 1042 -f 1042 316 317 -f 2481 2484 2485 -f 2485 2482 2481 -f 2484 2486 2487 -f 2487 2485 2484 -f 2486 2488 2489 -f 2489 2487 2486 -f 2488 2490 2491 -f 2491 2489 2488 -f 2490 2492 2493 -f 2493 2491 2490 -f 1270 928 910 -f 910 1043 1270 -f 928 1270 1268 -f 1268 929 928 -f 929 1268 1266 -f 1266 930 929 -f 930 1266 1264 -f 1264 931 930 -f 931 1264 1263 -f 1263 932 931 -f 2483 2494 1271 -f 1271 1042 2483 -f 2494 2495 1269 -f 1269 1271 2494 -f 2495 2496 1267 -f 1267 1269 2495 -f 2496 2497 1265 -f 1265 1267 2496 -f 2497 2498 1262 -f 1262 1265 2497 -f 99 103 2499 -f 2499 373 99 -f 103 106 2500 -f 2500 2499 103 -f 106 108 415 -f 415 2500 106 -f 373 2499 2501 -f 2501 378 373 -f 2499 2500 2502 -f 2502 2501 2499 -f 2500 415 416 -f 416 2502 2500 -f 378 2501 2503 -f 2503 387 378 -f 2501 2502 2504 -f 2504 2503 2501 -f 2502 416 417 -f 417 2504 2502 -f 387 2503 1544 -f 1544 388 387 -f 2503 2504 1545 -f 1545 1544 2503 -f 2504 417 418 -f 418 1545 2504 -f 1479 1554 2505 -f 2505 1480 1479 -f 1554 1555 2506 -f 2506 2505 1554 -f 1480 2505 1293 -f 1293 1240 1480 -f 2505 2506 1294 -f 1294 1293 2505 -f 1223 1222 1274 -f 1274 2507 1223 -f 1275 2508 2507 -f 2507 1274 1275 -f 2507 2509 1028 -f 1028 1223 2507 -f 2508 2510 2509 -f 2509 2507 2508 -f 2509 1095 1029 -f 1029 1028 2509 -f 1095 2509 2510 -f 2510 1096 1095 -f 2508 1275 1280 -f 1280 2511 2508 -f 2511 1280 1282 -f 1282 2512 2511 -f 2512 1282 408 -f 408 431 2512 -f 2510 2508 2511 -f 2511 2513 2510 -f 2513 2511 2512 -f 2512 2514 2513 -f 2514 2512 431 -f 431 434 2514 -f 1096 2510 2513 -f 2513 1103 1096 -f 1103 2513 2514 -f 2514 1104 1103 -f 1104 2514 434 -f 434 428 1104 -f 1555 1564 2515 -f 2515 2506 1555 -f 1564 1565 2516 -f 2516 2515 1564 -f 1565 1566 2517 -f 2517 2516 1565 -f 1566 1567 2518 -f 2518 2517 1566 -f 2506 2515 1303 -f 1303 1294 2506 -f 2515 2516 1304 -f 1304 1303 2515 -f 2516 2517 1305 -f 1305 1304 2516 -f 2517 2518 1306 -f 1306 1305 2517 -f 1567 1616 2519 -f 2519 2518 1567 -f 1616 1617 2520 -f 2520 2519 1616 -f 1617 1618 2521 -f 2521 2520 1617 -f 1618 1619 2522 -f 2522 2521 1618 -f 1619 481 485 -f 485 2522 1619 -f 2518 2519 1315 -f 1315 1306 2518 -f 2519 2520 1316 -f 1316 1315 2519 -f 2520 2521 1317 -f 1317 1316 2520 -f 2521 2522 1318 -f 1318 1317 2521 -f 2522 485 487 -f 487 1318 2522 -f 97 1703 1706 -f 1706 115 97 -f 1703 1708 1727 -f 1727 1706 1703 -f 1708 1710 1728 -f 1728 1727 1708 -f 1710 1712 1729 -f 1729 1728 1710 -f 1712 1714 1730 -f 1730 1729 1712 -f 1714 1716 1731 -f 1731 1730 1714 -f 129 1320 2523 -f 2523 130 129 -f 130 2523 2524 -f 2524 133 130 -f 133 2524 2525 -f 2525 136 133 -f 136 2525 2526 -f 2526 139 136 -f 139 2526 2527 -f 2527 142 139 -f 142 2527 1702 -f 1702 96 142 -f 1320 1327 2528 -f 2528 2523 1320 -f 1327 1329 2529 -f 2529 2528 1327 -f 1329 1331 2530 -f 2530 2529 1329 -f 1331 1333 2531 -f 2531 2530 1331 -f 1333 1335 2532 -f 2532 2531 1333 -f 2523 2528 2533 -f 2533 2524 2523 -f 2528 2529 2534 -f 2534 2533 2528 -f 2529 2530 2535 -f 2535 2534 2529 -f 2530 2531 2536 -f 2536 2535 2530 -f 2531 2532 2537 -f 2537 2536 2531 -f 2524 2533 2538 -f 2538 2525 2524 -f 2533 2534 2539 -f 2539 2538 2533 -f 2534 2535 2540 -f 2540 2539 2534 -f 2535 2536 2541 -f 2541 2540 2535 -f 2536 2537 2542 -f 2542 2541 2536 -f 2525 2538 2543 -f 2543 2526 2525 -f 2538 2539 2544 -f 2544 2543 2538 -f 2539 2540 2545 -f 2545 2544 2539 -f 2540 2541 2546 -f 2546 2545 2540 -f 2541 2542 2547 -f 2547 2546 2541 -f 2526 2543 2548 -f 2548 2527 2526 -f 2543 2544 2549 -f 2549 2548 2543 -f 2544 2545 2550 -f 2550 2549 2544 -f 2545 2546 2551 -f 2551 2550 2545 -f 2546 2547 2552 -f 2552 2551 2546 -f 2527 2548 1707 -f 1707 1702 2527 -f 2548 2549 1709 -f 1709 1707 2548 -f 2549 2550 1711 -f 1711 1709 2549 -f 2550 2551 1713 -f 1713 1711 2550 -f 2551 2552 1715 -f 1715 1713 2551 -f 1243 1242 1389 -f 1389 2553 1243 -f 1390 2554 2553 -f 2553 1389 1390 -f 2553 2555 1034 -f 1034 1243 2553 -f 2554 2556 2555 -f 2555 2553 2554 -f 2555 1159 1035 -f 1035 1034 2555 -f 1159 2555 2556 -f 2556 1160 1159 -f 2554 1390 1395 -f 1395 2557 2554 -f 2557 1395 1397 -f 1397 2558 2557 -f 2558 1397 752 -f 752 751 2558 -f 2556 2554 2557 -f 2557 2559 2556 -f 2559 2557 2558 -f 2558 2560 2559 -f 2560 2558 751 -f 751 756 2560 -f 1160 2556 2559 -f 2559 1165 1160 -f 1165 2559 2560 -f 2560 1166 1165 -f 1166 2560 756 -f 756 748 1166 -f 303 307 2561 -f 2561 879 303 -f 307 310 911 -f 911 2561 307 -f 879 2561 2562 -f 2562 884 879 -f 2561 911 912 -f 912 2562 2561 -f 884 2562 2563 -f 2563 891 884 -f 2562 912 913 -f 913 2563 2562 -f 891 2563 2198 -f 2198 892 891 -f 2563 913 914 -f 914 2198 2563 -f 1517 2203 2564 -f 2564 1518 1517 -f 2203 2204 2565 -f 2565 2564 2203 -f 1518 2564 1385 -f 1385 1248 1518 -f 2564 2565 1386 -f 1386 1385 2564 -f 2204 2209 2566 -f 2566 2565 2204 -f 2209 2210 2567 -f 2567 2566 2209 -f 2210 2211 2568 -f 2568 2567 2210 -f 2211 2212 2569 -f 2569 2568 2211 -f 2565 2566 1408 -f 1408 1386 2565 -f 2566 2567 1409 -f 1409 1408 2566 -f 2567 2568 1410 -f 1410 1409 2567 -f 2568 2569 1411 -f 1411 1410 2568 -f 2212 2249 2570 -f 2570 2569 2212 -f 2249 2250 2571 -f 2571 2570 2249 -f 2250 2251 2572 -f 2572 2571 2250 -f 2251 2252 2573 -f 2573 2572 2251 -f 2252 962 966 -f 966 2573 2252 -f 2569 2570 1420 -f 1420 1411 2569 -f 2570 2571 1421 -f 1421 1420 2570 -f 2571 2572 1422 -f 1422 1421 2571 -f 2572 2573 1423 -f 1423 1422 2572 -f 2573 966 824 -f 824 1423 2573 -f 263 1437 2574 -f 2574 278 263 -f 278 2574 2575 -f 2575 281 278 -f 281 2575 2576 -f 2576 284 281 -f 284 2576 2577 -f 2577 287 284 -f 287 2577 2578 -f 2578 290 287 -f 290 2578 2481 -f 2481 293 290 -f 1437 1444 2579 -f 2579 2574 1437 -f 1444 1446 2580 -f 2580 2579 1444 -f 1446 1448 2581 -f 2581 2580 1446 -f 1448 1450 2582 -f 2582 2581 1448 -f 1450 1452 2583 -f 2583 2582 1450 -f 2574 2579 2584 -f 2584 2575 2574 -f 2579 2580 2585 -f 2585 2584 2579 -f 2580 2581 2586 -f 2586 2585 2580 -f 2581 2582 2587 -f 2587 2586 2581 -f 2582 2583 2588 -f 2588 2587 2582 -f 2575 2584 2589 -f 2589 2576 2575 -f 2584 2585 2590 -f 2590 2589 2584 -f 2585 2586 2591 -f 2591 2590 2585 -f 2586 2587 2592 -f 2592 2591 2586 -f 2587 2588 2593 -f 2593 2592 2587 -f 2576 2589 2594 -f 2594 2577 2576 -f 2589 2590 2595 -f 2595 2594 2589 -f 2590 2591 2596 -f 2596 2595 2590 -f 2591 2592 2597 -f 2597 2596 2591 -f 2592 2593 2598 -f 2598 2597 2592 -f 2577 2594 2599 -f 2599 2578 2577 -f 2594 2595 2600 -f 2600 2599 2594 -f 2595 2596 2601 -f 2601 2600 2595 -f 2596 2597 2602 -f 2602 2601 2596 -f 2597 2598 2603 -f 2603 2602 2597 -f 2578 2599 2484 -f 2484 2481 2578 -f 2599 2600 2486 -f 2486 2484 2599 -f 2600 2601 2488 -f 2488 2486 2600 -f 2601 2602 2490 -f 2490 2488 2601 -f 2602 2603 2492 -f 2492 2490 2602 -f 301 2482 2483 -f 2483 317 301 -f 2482 2485 2494 -f 2494 2483 2482 -f 2485 2487 2495 -f 2495 2494 2485 -f 2487 2489 2496 -f 2496 2495 2487 -f 2489 2491 2497 -f 2497 2496 2489 -f 2491 2493 2498 -f 2498 2497 2491 -g patch2 -f 1494 1497 2604 -f 2605 1263 1262 -f 2606 2607 2608 -f 2609 2610 2611 -f 2612 2613 2611 -f 2614 2615 2610 -f 2616 2617 2618 -f 2619 2620 2621 -f 2622 2623 2621 -f 2624 2625 2619 -f 2626 2627 2628 -f 2629 2630 2631 -f 2632 2633 2631 -f 2634 2635 2629 -f 2636 2637 2638 -f 2639 2640 2641 -f 2642 2643 2641 -f 2644 2645 2640 -f 1604 1600 2646 -f 2646 2647 1604 -f 2648 2647 2646 -f 2646 2649 2648 -f 2650 2651 2611 -f 2611 2652 2650 -f 2652 2653 2654 -f 2654 2650 2652 -f 2655 2613 1716 -f 1716 1715 2655 -f 2655 1715 2653 -f 2653 2652 2655 -f 2613 2655 2652 -f 2652 2611 2613 -f 2656 2657 1595 -f 1595 1588 2656 -f 2656 1588 2658 -f 2658 2659 2656 -f 2656 2659 2660 -f 2660 2657 2656 -f 2661 2659 2658 -f 2658 2662 2661 -f 2662 442 1721 -f 1721 2661 2662 -f 2663 2664 2660 -f 2660 2665 2663 -f 2665 2660 2659 -f 2659 2661 2665 -f 2665 2661 1721 -f 1721 1726 2665 -f 2663 2666 2667 -f 2667 2664 2663 -f 2666 2663 2665 -f 2665 1726 2666 -f 2666 1726 1731 -f 1731 2667 2666 -f 2606 1592 1595 -f 1595 2657 2606 -f 2606 2657 2660 -f 2660 2607 2606 -f 2668 2660 2664 -f 2664 2669 2668 -f 2614 2668 2669 -f 2669 2615 2614 -f 2668 2614 2607 -f 2607 2660 2668 -f 2610 2609 2607 -f 2607 2614 2610 -f 2651 2670 2609 -f 2609 2611 2651 -f 2615 2612 2611 -f 2611 2610 2615 -f 2671 2667 1731 -f 1731 1716 2671 -f 2613 2612 2671 -f 2671 1716 2613 -f 2669 2664 2667 -f 2667 2671 2669 -f 2615 2669 2671 -f 2671 2612 2615 -f 1600 1592 2672 -f 2672 2646 1600 -f 2649 2646 2672 -f 2672 2673 2649 -f 2608 2672 1592 -f 1592 2606 2608 -f 2673 2672 2608 -f 2608 2670 2673 -f 2609 2670 2608 -f 2608 2607 2609 -f 2674 2675 2676 -f 2676 2677 2674 -f 2678 2679 2675 -f 2675 2674 2678 -f 2680 2681 2679 -f 2679 2678 2680 -f 2680 2682 2683 -f 2683 2681 2680 -f 2684 2685 2683 -f 2683 2682 2684 -f 2684 2686 2654 -f 2654 2685 2684 -f 1905 2674 2677 -f 2677 1906 1905 -f 1905 1911 2678 -f 2678 2674 1905 -f 1911 1916 2680 -f 2680 2678 1911 -f 1921 2682 2680 -f 2680 1916 1921 -f 1921 1926 2684 -f 2684 2682 1921 -f 1926 1931 2686 -f 2686 2684 1926 -f 2675 2687 2688 -f 2688 2676 2675 -f 2687 2532 1335 -f 1335 2688 2687 -f 2679 2689 2687 -f 2687 2675 2679 -f 2689 2537 2532 -f 2532 2687 2689 -f 2681 2690 2689 -f 2689 2679 2681 -f 2690 2542 2537 -f 2537 2689 2690 -f 2683 2691 2690 -f 2690 2681 2683 -f 2691 2547 2542 -f 2542 2690 2691 -f 2685 2692 2691 -f 2691 2683 2685 -f 2692 2552 2547 -f 2547 2691 2692 -f 2692 2685 2654 -f 2654 2653 2692 -f 2552 2692 2653 -f 2653 1715 2552 -f 2686 2693 2650 -f 2650 2654 2686 -f 2693 2694 2651 -f 2651 2650 2693 -f 2694 2695 2670 -f 2670 2651 2694 -f 2695 2696 2673 -f 2673 2670 2695 -f 2696 2697 2649 -f 2649 2673 2696 -f 2697 2698 2648 -f 2648 2649 2697 -f 1931 1936 2693 -f 2693 2686 1931 -f 1936 1941 2694 -f 2694 2693 1936 -f 1946 2695 2694 -f 2694 1941 1946 -f 1951 2696 2695 -f 2695 1946 1951 -f 1951 1956 2697 -f 2697 2696 1951 -f 1961 2698 2697 -f 2697 1956 1961 -f 2699 2677 2676 -f 2676 2700 2699 -f 2701 2699 2700 -f 2700 2702 2701 -f 2703 2701 2702 -f 2702 2704 2703 -f 2703 2704 2705 -f 2705 2706 2703 -f 2707 2706 2705 -f 2705 2708 2707 -f 2707 2708 2709 -f 2709 2710 2707 -f 1988 1906 2677 -f 2677 2699 1988 -f 1988 2699 2701 -f 2701 1993 1988 -f 1998 1993 2701 -f 2701 2703 1998 -f 2003 1998 2703 -f 2703 2706 2003 -f 2003 2706 2707 -f 2707 2008 2003 -f 2008 2707 2710 -f 2710 2013 2008 -f 2700 2676 2688 -f 2688 2711 2700 -f 2711 2688 1335 -f 1335 1334 2711 -f 2702 2700 2711 -f 2711 2712 2702 -f 2712 2711 1334 -f 1334 1340 2712 -f 2704 2702 2712 -f 2712 2713 2704 -f 2713 2712 1340 -f 1340 1345 2713 -f 2705 2704 2713 -f 2713 2714 2705 -f 2714 2713 1345 -f 1345 1350 2714 -f 2708 2705 2714 -f 2714 2715 2708 -f 2715 2714 1350 -f 1350 1355 2715 -f 2715 2716 2709 -f 2709 2708 2715 -f 1355 1360 2716 -f 2716 2715 1355 -f 2710 2709 2717 -f 2717 2718 2710 -f 2718 2717 2719 -f 2719 2720 2718 -f 2720 2719 2721 -f 2721 2722 2720 -f 2722 2721 2723 -f 2723 2724 2722 -f 2725 2724 2723 -f 2723 2726 2725 -f 2698 2725 2726 -f 2726 2648 2698 -f 2018 2013 2710 -f 2710 2718 2018 -f 2018 2718 2720 -f 2720 2023 2018 -f 2028 2023 2720 -f 2720 2722 2028 -f 2033 2028 2722 -f 2722 2724 2033 -f 2033 2724 2725 -f 2725 2038 2033 -f 1961 2038 2725 -f 2725 2698 1961 -f 1604 2647 2727 -f 2727 1791 1604 -f 2648 2726 2727 -f 2727 2647 2648 -f 2717 2728 2621 -f 2621 2719 2717 -f 2728 2717 2709 -f 2709 2716 2728 -f 2729 1360 1372 -f 1372 2622 2729 -f 2729 2728 2716 -f 2716 1360 2729 -f 2622 2621 2728 -f 2728 2729 2622 -f 2730 1779 1782 -f 1782 2731 2730 -f 2730 2732 2733 -f 2733 1779 2730 -f 2730 2731 2734 -f 2734 2732 2730 -f 2733 2732 1497 -f 1497 609 2733 -f 2735 2604 2734 -f 2734 2736 2735 -f 2604 1497 2732 -f 2732 2734 2604 -f 2735 2736 2737 -f 2737 2738 2735 -f 2738 1494 2604 -f 2604 2735 2738 -f 2738 2737 1371 -f 1371 1494 2738 -f 2617 2731 1782 -f 1782 1785 2617 -f 2617 2616 2734 -f 2734 2731 2617 -f 2739 2740 2736 -f 2736 2734 2739 -f 2625 2624 2740 -f 2740 2739 2625 -f 2739 2734 2616 -f 2616 2625 2739 -f 2619 2625 2616 -f 2616 2620 2619 -f 2719 2621 2620 -f 2620 2721 2719 -f 2624 2619 2621 -f 2621 2623 2624 -f 1371 2737 2741 -f 2741 1372 1371 -f 2622 1372 2741 -f 2741 2623 2622 -f 2740 2741 2737 -f 2737 2736 2740 -f 2624 2623 2741 -f 2741 2740 2624 -f 1791 2727 2742 -f 2742 1785 1791 -f 2726 2723 2742 -f 2742 2727 2726 -f 2618 2617 1785 -f 1785 2742 2618 -f 2723 2721 2618 -f 2618 2742 2723 -f 2620 2616 2618 -f 2618 2721 2620 -f 2099 2743 2744 -f 2744 2095 2099 -f 2745 2746 2744 -f 2744 2743 2745 -f 2747 2748 2631 -f 2631 2749 2747 -f 2748 2747 2750 -f 2750 2751 2748 -f 2752 1477 1435 -f 1435 2632 2752 -f 2752 2748 2751 -f 2751 1477 2752 -f 2632 2631 2748 -f 2748 2752 2632 -f 2753 2083 2086 -f 2086 2754 2753 -f 2753 2755 2756 -f 2756 2083 2753 -f 2753 2754 2757 -f 2757 2755 2753 -f 2758 2759 2756 -f 2756 2755 2758 -f 2759 2758 2184 -f 2184 785 2759 -f 2760 2761 2757 -f 2757 2762 2760 -f 2761 2758 2755 -f 2755 2757 2761 -f 2761 2189 2184 -f 2184 2758 2761 -f 2760 2762 2763 -f 2763 2764 2760 -f 2764 2189 2761 -f 2761 2760 2764 -f 2764 2763 1434 -f 1434 2189 2764 -f 2627 2754 2086 -f 2086 2089 2627 -f 2627 2626 2757 -f 2757 2754 2627 -f 2765 2766 2762 -f 2762 2757 2765 -f 2635 2634 2766 -f 2766 2765 2635 -f 2765 2757 2626 -f 2626 2635 2765 -f 2629 2635 2626 -f 2626 2630 2629 -f 2749 2631 2630 -f 2630 2767 2749 -f 2634 2629 2631 -f 2631 2633 2634 -f 2768 1435 1434 -f 1434 2763 2768 -f 2632 1435 2768 -f 2768 2633 2632 -f 2766 2768 2763 -f 2763 2762 2766 -f 2634 2633 2768 -f 2768 2766 2634 -f 2095 2744 2769 -f 2769 2089 2095 -f 2746 2770 2769 -f 2769 2744 2746 -f 2628 2627 2089 -f 2089 2769 2628 -f 2770 2767 2628 -f 2628 2769 2770 -f 2630 2626 2628 -f 2628 2767 2630 -f 2771 2772 2773 -f 2773 2774 2771 -f 2775 2771 2774 -f 2774 2776 2775 -f 2777 2775 2776 -f 2776 2778 2777 -f 2777 2778 2779 -f 2779 2780 2777 -f 2781 2780 2779 -f 2779 2782 2781 -f 2781 2782 2750 -f 2750 2783 2781 -f 2348 2347 2772 -f 2772 2771 2348 -f 2348 2771 2775 -f 2775 2353 2348 -f 2353 2775 2777 -f 2777 2358 2353 -f 2363 2358 2777 -f 2777 2780 2363 -f 2363 2780 2781 -f 2781 2368 2363 -f 2368 2781 2783 -f 2783 2373 2368 -f 2774 2773 2784 -f 2784 2785 2774 -f 2785 2784 1452 -f 1452 1451 2785 -f 2776 2774 2785 -f 2785 2786 2776 -f 2786 2785 1451 -f 1451 1457 2786 -f 2778 2776 2786 -f 2786 2787 2778 -f 2787 2786 1457 -f 1457 1462 2787 -f 2779 2778 2787 -f 2787 2788 2779 -f 2788 2787 1462 -f 1462 1467 2788 -f 2782 2779 2788 -f 2788 2789 2782 -f 2789 2788 1467 -f 1467 1472 2789 -f 2789 2751 2750 -f 2750 2782 2789 -f 1472 1477 2751 -f 2751 2789 1472 -f 2783 2750 2747 -f 2747 2790 2783 -f 2790 2747 2749 -f 2749 2791 2790 -f 2791 2749 2767 -f 2767 2792 2791 -f 2792 2767 2770 -f 2770 2793 2792 -f 2793 2770 2746 -f 2746 2794 2793 -f 2794 2746 2745 -f 2745 2795 2794 -f 2373 2783 2790 -f 2790 2378 2373 -f 2378 2790 2791 -f 2791 2383 2378 -f 2388 2383 2791 -f 2791 2792 2388 -f 2393 2388 2792 -f 2792 2793 2393 -f 2393 2793 2794 -f 2794 2398 2393 -f 2403 2398 2794 -f 2794 2795 2403 -f 2796 2797 2773 -f 2773 2772 2796 -f 2798 2799 2797 -f 2797 2796 2798 -f 2800 2801 2799 -f 2799 2798 2800 -f 2800 2802 2803 -f 2803 2801 2800 -f 2804 2805 2803 -f 2803 2802 2804 -f 2804 2806 2807 -f 2807 2805 2804 -f 2430 2796 2772 -f 2772 2347 2430 -f 2430 2435 2798 -f 2798 2796 2430 -f 2440 2800 2798 -f 2798 2435 2440 -f 2445 2802 2800 -f 2800 2440 2445 -f 2445 2450 2804 -f 2804 2802 2445 -f 2450 2455 2806 -f 2806 2804 2450 -f 2797 2808 2784 -f 2784 2773 2797 -f 2808 2583 1452 -f 1452 2784 2808 -f 2799 2809 2808 -f 2808 2797 2799 -f 2809 2588 2583 -f 2583 2808 2809 -f 2801 2810 2809 -f 2809 2799 2801 -f 2810 2593 2588 -f 2588 2809 2810 -f 2803 2811 2810 -f 2810 2801 2803 -f 2811 2598 2593 -f 2593 2810 2811 -f 2805 2812 2811 -f 2811 2803 2805 -f 2812 2603 2598 -f 2598 2811 2812 -f 2812 2805 2807 -f 2807 2813 2812 -f 2603 2812 2813 -f 2813 2492 2603 -f 2806 2814 2815 -f 2815 2807 2806 -f 2814 2816 2817 -f 2817 2815 2814 -f 2816 2818 2819 -f 2819 2817 2816 -f 2818 2820 2821 -f 2821 2819 2818 -f 2822 2823 2821 -f 2821 2820 2822 -f 2795 2745 2823 -f 2823 2822 2795 -f 2460 2814 2806 -f 2806 2455 2460 -f 2460 2465 2816 -f 2816 2814 2460 -f 2470 2818 2816 -f 2816 2465 2470 -f 2475 2820 2818 -f 2818 2470 2475 -f 2475 2480 2822 -f 2822 2820 2475 -f 2403 2795 2822 -f 2822 2480 2403 -f 2099 2241 2824 -f 2824 2743 2099 -f 2745 2743 2824 -f 2824 2823 2745 -f 2815 2817 2641 -f 2641 2825 2815 -f 2825 2813 2807 -f 2807 2815 2825 -f 2826 2643 2493 -f 2493 2492 2826 -f 2826 2492 2813 -f 2813 2825 2826 -f 2643 2826 2825 -f 2825 2641 2643 -f 2827 2828 2236 -f 2236 2229 2827 -f 2827 2229 2829 -f 2829 2830 2827 -f 2827 2830 2831 -f 2831 2828 2827 -f 2829 932 1263 -f 1263 2830 2829 -f 2832 2833 2831 -f 2831 2605 2832 -f 2605 2831 2830 -f 2830 1263 2605 -f 2832 2834 2835 -f 2835 2833 2832 -f 2834 2832 2605 -f 2605 1262 2834 -f 2834 1262 2498 -f 2498 2835 2834 -f 2636 2233 2236 -f 2236 2828 2636 -f 2636 2828 2831 -f 2831 2637 2636 -f 2836 2831 2833 -f 2833 2837 2836 -f 2644 2836 2837 -f 2837 2645 2644 -f 2836 2644 2637 -f 2637 2831 2836 -f 2640 2639 2637 -f 2637 2644 2640 -f 2817 2819 2639 -f 2639 2641 2817 -f 2645 2642 2641 -f 2641 2640 2645 -f 2498 2493 2838 -f 2838 2835 2498 -f 2643 2642 2838 -f 2838 2493 2643 -f 2837 2833 2835 -f 2835 2838 2837 -f 2645 2837 2838 -f 2838 2642 2645 -f 2241 2233 2839 -f 2839 2824 2241 -f 2823 2824 2839 -f 2839 2821 2823 -f 2638 2839 2233 -f 2233 2636 2638 -f 2821 2839 2638 -f 2638 2819 2821 -f 2639 2819 2638 -f 2638 2637 2639 -f 1571 2840 2841 -f 2841 1568 1571 -f 2842 2841 2840 -f 2840 2843 2842 -f 2843 424 423 -f 423 2842 2843 -f 1568 2841 2844 -f 2844 1576 1568 -f 2841 2842 2845 -f 2845 2844 2841 -f 2842 423 427 -f 427 2845 2842 -f 1576 2844 2846 -f 2846 1580 1576 -f 2844 2845 2847 -f 2847 2846 2844 -f 2845 427 430 -f 430 2847 2845 -f 1580 2846 2848 -f 2848 1584 1580 -f 2846 2847 2849 -f 2849 2848 2846 -f 2847 430 437 -f 437 2849 2847 -f 1584 2848 2658 -f 2658 1588 1584 -f 2848 2849 2662 -f 2662 2658 2848 -f 2849 437 442 -f 442 2662 2849 -f 1758 1761 2850 -f 2850 2851 1758 -f 2851 2850 594 -f 594 593 2851 -f 1761 1767 2852 -f 2852 2850 1761 -f 2850 2852 596 -f 596 594 2850 -f 1767 1771 2853 -f 2853 2852 1767 -f 2852 2853 598 -f 598 596 2852 -f 1771 1775 2854 -f 2854 2853 1771 -f 2853 2854 604 -f 604 598 2853 -f 1775 1779 2733 -f 2733 2854 1775 -f 2733 609 604 -f 604 2854 2733 -f 1571 2067 2855 -f 2855 2840 1571 -f 2856 2843 2840 -f 2840 2855 2856 -f 2843 2856 767 -f 767 424 2843 -f 2067 2071 2857 -f 2857 2855 2067 -f 2855 2857 2858 -f 2858 2856 2855 -f 2856 2858 770 -f 770 767 2856 -f 2071 2075 2859 -f 2859 2857 2071 -f 2857 2859 2860 -f 2860 2858 2857 -f 2858 2860 773 -f 773 770 2858 -f 2075 2079 2861 -f 2861 2859 2075 -f 2859 2861 2862 -f 2862 2860 2859 -f 2860 2862 780 -f 780 773 2860 -f 2079 2083 2756 -f 2756 2861 2079 -f 2861 2756 2759 -f 2759 2862 2861 -f 2862 2759 785 -f 785 780 2862 -f 1758 2851 2863 -f 2863 2213 1758 -f 2851 593 917 -f 917 2863 2851 -f 2213 2863 2864 -f 2864 2217 2213 -f 2863 917 919 -f 919 2864 2863 -f 2217 2864 2865 -f 2865 2221 2217 -f 2864 919 921 -f 921 2865 2864 -f 2221 2865 2866 -f 2866 2225 2221 -f 2865 921 927 -f 927 2866 2865 -f 2225 2866 2829 -f 2829 2229 2225 -f 2829 2866 927 -f 927 932 2829 -g patch3 -f 2867 2868 126 -f 126 125 2867 -f 2869 2867 125 -f 125 131 2869 -f 2870 2869 131 -f 131 134 2870 -f 2870 134 137 -f 137 2871 2870 -f 2872 2871 137 -f 137 140 2872 -f 2872 140 93 -f 93 2873 2872 -f 1871 1874 2868 -f 2868 2867 1871 -f 1871 2867 2869 -f 2869 1875 1871 -f 1875 2869 2870 -f 2870 1877 1875 -f 1879 1877 2870 -f 2870 2871 1879 -f 1879 2871 2872 -f 2872 1881 1879 -f 1881 2872 2873 -f 2873 1883 1881 -f 2873 93 90 -f 90 2874 2873 -f 2874 90 92 -f 92 2875 2874 -f 2875 92 119 -f 119 2876 2875 -f 2876 119 122 -f 122 2877 2876 -f 2877 122 89 -f 89 2878 2877 -f 2878 89 88 -f 88 2879 2878 -f 1883 2873 2874 -f 2874 1885 1883 -f 1885 2874 2875 -f 2875 1887 1885 -f 1889 1887 2875 -f 2875 2876 1889 -f 1891 1889 2876 -f 2876 2877 1891 -f 1891 2877 2878 -f 2878 1893 1891 -f 1895 1893 2878 -f 2878 2879 1895 -f 2880 143 126 -f 126 2868 2880 -f 2881 146 143 -f 143 2880 2881 -f 2882 149 146 -f 146 2881 2882 -f 2882 2883 152 -f 152 149 2882 -f 2884 155 152 -f 152 2883 2884 -f 2884 2885 158 -f 158 155 2884 -f 1963 2880 2868 -f 2868 1874 1963 -f 1963 1965 2881 -f 2881 2880 1963 -f 1967 2882 2881 -f 2881 1965 1967 -f 1969 2883 2882 -f 2882 1967 1969 -f 1969 1971 2884 -f 2884 2883 1969 -f 1971 1973 2885 -f 2885 2884 1971 -f 2885 2886 164 -f 164 158 2885 -f 2886 2887 165 -f 165 164 2886 -f 2887 2888 188 -f 188 165 2887 -f 2888 2889 191 -f 191 188 2888 -f 2890 163 191 -f 191 2889 2890 -f 2879 88 163 -f 163 2890 2879 -f 1975 2886 2885 -f 2885 1973 1975 -f 1975 1977 2887 -f 2887 2886 1975 -f 1979 2888 2887 -f 2887 1977 1979 -f 1981 2889 2888 -f 2888 1979 1981 -f 1981 1983 2890 -f 2890 2889 1981 -f 1895 2879 2890 -f 2890 1983 1895 -f 2891 258 261 -f 261 2892 2891 -f 2893 264 258 -f 258 2891 2893 -f 2894 267 264 -f 264 2893 2894 -f 2894 2895 270 -f 270 267 2894 -f 2896 273 270 -f 270 2895 2896 -f 2896 2897 227 -f 227 273 2896 -f 2316 2891 2892 -f 2892 2313 2316 -f 2316 2318 2893 -f 2893 2891 2316 -f 2318 2320 2894 -f 2894 2893 2318 -f 2322 2895 2894 -f 2894 2320 2322 -f 2322 2324 2896 -f 2896 2895 2322 -f 2324 2326 2897 -f 2897 2896 2324 -f 2897 2898 223 -f 223 227 2897 -f 2898 2899 224 -f 224 223 2898 -f 2899 2900 252 -f 252 224 2899 -f 2900 2901 255 -f 255 252 2900 -f 2901 2902 222 -f 222 255 2901 -f 2902 2903 221 -f 221 222 2902 -f 2326 2328 2898 -f 2898 2897 2326 -f 2328 2330 2899 -f 2899 2898 2328 -f 2332 2900 2899 -f 2899 2330 2332 -f 2334 2901 2900 -f 2900 2332 2334 -f 2334 2336 2902 -f 2902 2901 2334 -f 2338 2903 2902 -f 2902 2336 2338 -f 2904 2892 261 -f 261 276 2904 -f 2905 2904 276 -f 276 279 2905 -f 2906 2905 279 -f 279 282 2906 -f 2906 282 285 -f 285 2907 2906 -f 2908 2907 285 -f 285 288 2908 -f 2908 288 292 -f 292 2909 2908 -f 2404 2313 2892 -f 2892 2904 2404 -f 2404 2904 2905 -f 2905 2406 2404 -f 2408 2406 2905 -f 2905 2906 2408 -f 2410 2408 2906 -f 2906 2907 2410 -f 2410 2907 2908 -f 2908 2412 2410 -f 2412 2908 2909 -f 2909 2414 2412 -f 2909 292 297 -f 297 2910 2909 -f 2910 297 299 -f 299 2911 2910 -f 2911 299 321 -f 321 2912 2911 -f 2912 321 324 -f 324 2913 2912 -f 2914 2913 324 -f 324 296 2914 -f 2903 2914 296 -f 296 221 2903 -f 2416 2414 2909 -f 2909 2910 2416 -f 2416 2910 2911 -f 2911 2418 2416 -f 2420 2418 2911 -f 2911 2912 2420 -f 2422 2420 2912 -f 2912 2913 2422 -f 2422 2913 2914 -f 2914 2424 2422 -f 2338 2424 2914 -f 2914 2903 2338 -g patch4 -f 2915 2916 2917 -f 2917 2918 2915 -f 2916 2915 2919 -f 2919 2920 2916 -f 2919 2921 2922 -f 2922 2920 2919 -f 2921 544 535 -f 535 2922 2921 -f 1522 546 544 -f 544 2921 1522 -f 2921 2919 1524 -f 1524 1522 2921 -f 2915 1526 1524 -f 1524 2919 2915 -f 1526 2915 2918 -f 2918 1528 1526 -f 2923 2924 2925 -f 2925 2926 2923 -f 2926 2927 2928 -f 2928 2923 2926 -f 2923 2928 692 -f 692 698 2923 -f 698 699 2924 -f 2924 2923 698 -f 2929 2918 2917 -f 2917 2930 2929 -f 2930 2931 2932 -f 2932 2929 2930 -f 2932 2931 2933 -f 2933 2934 2932 -f 2934 2933 868 -f 868 874 2934 -f 2041 2934 874 -f 874 876 2041 -f 2934 2041 2043 -f 2043 2932 2934 -f 2929 2932 2043 -f 2043 2045 2929 -f 2045 1528 2918 -f 2918 2929 2045 -f 2935 2936 2925 -f 2925 2924 2935 -f 2936 2935 2937 -f 2937 2938 2936 -f 2935 1008 1003 -f 1003 2937 2935 -f 1008 2935 2924 -f 2924 699 1008 -f 2939 2920 2922 -f 2922 2940 2939 -f 2941 2939 2940 -f 2940 2942 2941 -f 2940 2922 535 -f 535 70 2940 -f 2942 2940 70 -f 70 69 2942 -f 2943 2944 2928 -f 2928 2927 2943 -f 2941 2942 2944 -f 2944 2943 2941 -f 2944 124 692 -f 692 2928 2944 -f 2942 69 124 -f 124 2944 2942 -f 2945 2946 2933 -f 2933 2931 2945 -f 2947 2948 2946 -f 2946 2945 2947 -f 2946 206 868 -f 868 2933 2946 -f 2948 207 206 -f 206 2946 2948 -f 2949 2938 2937 -f 2937 2950 2949 -f 2947 2949 2950 -f 2950 2948 2947 -f 2950 2937 1003 -f 1003 256 2950 -f 2948 2950 256 -f 256 207 2948 -f 2951 2952 2953 -f 2953 2954 2951 -f 2955 2953 2952 -f 2952 2956 2955 -f 2957 2958 2959 -f 2959 2960 2957 -f 2961 2959 2958 -f 2958 2962 2961 -f 2954 2953 2963 -f 2963 2964 2954 -f 2964 2963 2965 -f 2965 2966 2964 -f 2953 2955 2967 -f 2967 2963 2953 -f 2963 2967 2968 -f 2968 2965 2963 -f 2960 2959 2969 -f 2969 2970 2960 -f 2970 2969 2971 -f 2971 2972 2970 -f 2959 2961 2973 -f 2973 2969 2959 -f 2969 2973 2974 -f 2974 2971 2969 -f 2975 2976 2977 -f 2977 2978 2975 -f 2955 2956 2978 -f 2978 2977 2955 -f 2979 2980 2981 -f 2981 2982 2979 -f 2961 2962 2982 -f 2982 2981 2961 -f 2983 2984 2917 -f 2917 2916 2983 -f 2985 2986 2984 -f 2984 2983 2985 -f 2951 2983 2916 -f 2916 2920 2951 -f 2954 2985 2983 -f 2983 2951 2954 -f 2920 2939 2952 -f 2952 2951 2920 -f 2956 2952 2939 -f 2939 2941 2956 -f 2986 2985 2987 -f 2987 2988 2986 -f 2988 2987 2989 -f 2989 2990 2988 -f 2985 2954 2964 -f 2964 2987 2985 -f 2987 2964 2966 -f 2966 2989 2987 -f 2991 2926 2925 -f 2925 2992 2991 -f 2993 2991 2992 -f 2992 2994 2993 -f 2975 2927 2926 -f 2926 2991 2975 -f 2976 2975 2991 -f 2991 2993 2976 -f 2927 2975 2978 -f 2978 2943 2927 -f 2956 2941 2943 -f 2943 2978 2956 -f 2994 2995 2996 -f 2996 2993 2994 -f 2995 2997 2998 -f 2998 2996 2995 -f 2993 2996 2999 -f 2999 2976 2993 -f 2996 2998 3000 -f 3000 2999 2996 -f 3001 2930 2917 -f 2917 2984 3001 -f 3002 3001 2984 -f 2984 2986 3002 -f 2979 2931 2930 -f 2930 3001 2979 -f 2980 2979 3001 -f 3001 3002 2980 -f 2931 2979 2982 -f 2982 2945 2931 -f 2962 2947 2945 -f 2945 2982 2962 -f 2986 2988 3003 -f 3003 3002 2986 -f 2988 2990 3004 -f 3004 3003 2988 -f 3002 3003 3005 -f 3005 2980 3002 -f 3003 3004 3006 -f 3006 3005 3003 -f 3007 2992 2925 -f 2925 2936 3007 -f 3008 2994 2992 -f 2992 3007 3008 -f 2957 3007 2936 -f 2936 2938 2957 -f 2960 3008 3007 -f 3007 2957 2960 -f 2938 2949 2958 -f 2958 2957 2938 -f 2962 2958 2949 -f 2949 2947 2962 -f 2994 3008 3009 -f 3009 2995 2994 -f 2995 3009 3010 -f 3010 2997 2995 -f 3008 2960 2970 -f 2970 3009 3008 -f 3009 2970 2972 -f 2972 3010 3009 -f 2976 2999 3011 -f 3011 2977 2976 -f 2999 3000 3012 -f 3012 3011 2999 -f 2977 3011 2967 -f 2967 2955 2977 -f 3011 3012 2968 -f 2968 2967 3011 -f 2980 3005 3013 -f 3013 2981 2980 -f 3005 3006 3014 -f 3014 3013 3005 -f 2981 3013 2973 -f 2973 2961 2981 -f 3013 3014 2974 -f 2974 2973 3013 -f 1111 3015 1113 -f 1113 3016 1115 -f 3017 1131 1133 -f 3018 1133 1135 -f 3019 1192 1194 -f 3020 1194 1196 -f 1210 3021 1212 -f 1212 3022 1214 -f 3023 3024 3025 -f 3025 3026 3023 -f 2990 2989 3024 -f 3024 3023 2990 -f 3024 3027 3028 -f 3028 3025 3024 -f 2989 2966 3027 -f 3027 3024 2989 -f 3027 3029 3030 -f 3030 3028 3027 -f 3031 3029 3027 -f 3027 2966 3031 -f 2965 3032 3031 -f 3031 2966 2965 -f 2968 3033 3032 -f 3032 2965 2968 -f 3034 3029 3031 -f 3031 3035 3034 -f 1117 3034 3035 -f 3035 1118 1117 -f 3016 3030 3029 -f 3029 3034 3016 -f 1115 3016 3034 -f 3034 1117 1115 -f 3035 3031 3032 -f 3032 3036 3035 -f 1118 3035 3036 -f 3036 1121 1118 -f 3036 3032 3033 -f 3033 3037 3036 -f 1121 3036 3037 -f 3037 1123 1121 -f 3038 3039 3040 -f 3040 3041 3038 -f 2997 3038 3041 -f 3041 2998 2997 -f 3041 3040 3042 -f 3042 3043 3041 -f 2998 3041 3043 -f 3043 3000 2998 -f 3043 3042 3044 -f 3044 3045 3043 -f 3046 3000 3043 -f 3043 3045 3046 -f 3012 3000 3046 -f 3046 3047 3012 -f 2968 3012 3047 -f 3047 3033 2968 -f 3048 3049 3046 -f 3046 3045 3048 -f 1138 1137 3049 -f 3049 3048 1138 -f 3018 3048 3045 -f 3045 3044 3018 -f 1135 1138 3048 -f 3048 3018 1135 -f 3049 3050 3047 -f 3047 3046 3049 -f 1137 1141 3050 -f 3050 3049 1137 -f 3050 3037 3033 -f 3033 3047 3050 -f 1141 1123 3037 -f 3037 3050 1141 -f 3023 3026 3051 -f 3051 3052 3023 -f 2990 3023 3052 -f 3052 3004 2990 -f 3052 3051 3053 -f 3053 3054 3052 -f 3004 3052 3054 -f 3054 3006 3004 -f 3054 3053 3055 -f 3055 3056 3054 -f 3057 3006 3054 -f 3054 3056 3057 -f 3014 3006 3057 -f 3057 3058 3014 -f 2974 3014 3058 -f 3058 3059 2974 -f 3060 3061 3057 -f 3057 3056 3060 -f 1199 1198 3061 -f 3061 3060 1199 -f 3020 3060 3056 -f 3056 3055 3020 -f 1196 1199 3060 -f 3060 3020 1196 -f 3061 3062 3058 -f 3058 3057 3061 -f 1198 1202 3062 -f 3062 3061 1198 -f 3062 3063 3059 -f 3059 3058 3062 -f 1202 1204 3063 -f 3063 3062 1202 -f 3038 3064 3065 -f 3065 3039 3038 -f 2997 3010 3064 -f 3064 3038 2997 -f 3064 3066 3067 -f 3067 3065 3064 -f 3010 2972 3066 -f 3066 3064 3010 -f 3066 3068 3069 -f 3069 3067 3066 -f 3070 3068 3066 -f 3066 2972 3070 -f 2971 3071 3070 -f 3070 2972 2971 -f 2974 3059 3071 -f 3071 2971 2974 -f 3072 3068 3070 -f 3070 3073 3072 -f 1216 3072 3073 -f 3073 1217 1216 -f 3022 3069 3068 -f 3068 3072 3022 -f 1214 3022 3072 -f 3072 1216 1214 -f 3073 3070 3071 -f 3071 3074 3073 -f 1217 3073 3074 -f 3074 1220 1217 -f 3074 3071 3059 -f 3059 3063 3074 -f 1220 3074 3063 -f 3063 1204 1220 -f 3025 3075 3076 -f 3076 3026 3025 -f 1106 1105 3076 -f 3076 3075 1106 -f 3028 3077 3075 -f 3075 3025 3028 -f 1109 1106 3075 -f 3075 3077 1109 -f 3015 3077 3028 -f 3028 3030 3015 -f 1111 1109 3077 -f 3077 3015 1111 -f 3015 3030 3016 -f 3016 1113 3015 -f 3039 3078 3079 -f 3079 3040 3039 -f 1125 3079 3078 -f 3078 1126 1125 -f 3040 3079 3080 -f 3080 3042 3040 -f 1129 3080 3079 -f 3079 1125 1129 -f 3017 3044 3042 -f 3042 3080 3017 -f 1131 3017 3080 -f 3080 1129 1131 -f 3017 1133 3018 -f 3018 3044 3017 -f 3026 3076 3081 -f 3081 3051 3026 -f 1188 3081 3076 -f 3076 1105 1188 -f 3051 3081 3082 -f 3082 3053 3051 -f 1190 3082 3081 -f 3081 1188 1190 -f 3019 3055 3053 -f 3053 3082 3019 -f 1192 3019 3082 -f 3082 1190 1192 -f 3019 1194 3020 -f 3020 3055 3019 -f 3065 3083 3078 -f 3078 3039 3065 -f 1206 1126 3078 -f 3078 3083 1206 -f 3067 3084 3083 -f 3083 3065 3067 -f 1208 1206 3083 -f 3083 3084 1208 -f 3021 3084 3067 -f 3067 3069 3021 -f 1210 1208 3084 -f 3084 3021 1210 -f 3021 3069 3022 -f 3022 1212 3021 -f 1108 1107 3085 -f 3085 3086 1108 -f 1107 1110 3087 -f 3087 3085 1107 -f 1110 1112 3088 -f 3088 3087 1110 -f 1112 1114 3089 -f 3089 3088 1112 -f 1114 1116 3090 -f 3090 3089 1114 -f 1120 1119 3091 -f 3091 3092 1120 -f 1116 1120 3092 -f 3092 3090 1116 -f 1119 1122 3093 -f 3093 3091 1119 -f 1122 1124 3094 -f 3094 3093 1122 -f 3095 1128 1127 -f 1127 3096 3095 -f 1128 3095 3097 -f 3097 1130 1128 -f 1132 1130 3097 -f 3097 3098 1132 -f 1134 1132 3098 -f 3098 3099 1134 -f 1136 1134 3099 -f 3099 3100 1136 -f 3101 3102 1140 -f 1140 1139 3101 -f 1139 1136 3100 -f 3100 3101 1139 -f 1142 1140 3102 -f 3102 3103 1142 -f 1124 1142 3103 -f 3103 3094 1124 -f 1189 1108 3086 -f 3086 3104 1189 -f 1191 1189 3104 -f 3104 3105 1191 -f 1193 1191 3105 -f 3105 3106 1193 -f 1195 1193 3106 -f 3106 3107 1195 -f 1197 1195 3107 -f 3107 3108 1197 -f 1201 1200 3109 -f 3109 3110 1201 -f 1200 1197 3108 -f 3108 3109 1200 -f 1203 1201 3110 -f 3110 3111 1203 -f 1205 1203 3111 -f 3111 3112 1205 -f 3113 3096 1127 -f 1127 1207 3113 -f 1207 1209 3114 -f 3114 3113 1207 -f 1209 1211 3115 -f 3115 3114 1209 -f 1211 1213 3116 -f 3116 3115 1211 -f 1213 1215 3117 -f 3117 3116 1213 -f 3118 1219 1218 -f 1218 3119 3118 -f 1219 3118 3117 -f 3117 1215 1219 -f 1218 1221 3120 -f 3120 3119 1218 -f 1221 1205 3112 -f 3112 3120 1221 -f 3086 3085 3121 -f 3121 3122 3086 -f 3085 3087 3123 -f 3123 3121 3085 -f 3087 3088 3124 -f 3124 3123 3087 -f 3088 3089 3125 -f 3125 3124 3088 -f 3089 3090 3126 -f 3126 3125 3089 -f 3092 3091 3127 -f 3127 3128 3092 -f 3090 3092 3128 -f 3128 3126 3090 -f 3091 3093 3129 -f 3129 3127 3091 -f 3093 3094 3130 -f 3130 3129 3093 -f 3095 3096 3131 -f 3131 3132 3095 -f 3097 3095 3132 -f 3132 3133 3097 -f 3098 3097 3133 -f 3133 3134 3098 -f 3099 3098 3134 -f 3134 3135 3099 -f 3100 3099 3135 -f 3135 3136 3100 -f 3102 3101 3137 -f 3137 3138 3102 -f 3101 3100 3136 -f 3136 3137 3101 -f 3103 3102 3138 -f 3138 3139 3103 -f 3094 3103 3139 -f 3139 3130 3094 -f 3104 3086 3122 -f 3122 3140 3104 -f 3105 3104 3140 -f 3140 3141 3105 -f 3106 3105 3141 -f 3141 3142 3106 -f 3107 3106 3142 -f 3142 3143 3107 -f 3108 3107 3143 -f 3143 3144 3108 -f 3110 3109 3145 -f 3145 3146 3110 -f 3109 3108 3144 -f 3144 3145 3109 -f 3111 3110 3146 -f 3146 3147 3111 -f 3112 3111 3147 -f 3147 3148 3112 -f 3096 3113 3149 -f 3149 3131 3096 -f 3113 3114 3150 -f 3150 3149 3113 -f 3114 3115 3151 -f 3151 3150 3114 -f 3115 3116 3152 -f 3152 3151 3115 -f 3116 3117 3153 -f 3153 3152 3116 -f 3118 3119 3154 -f 3154 3155 3118 -f 3117 3118 3155 -f 3155 3153 3117 -f 3119 3120 3156 -f 3156 3154 3119 -f 3120 3112 3148 -f 3148 3156 3120 -f 3122 3121 3157 -f 3157 3158 3122 -f 3121 3123 3159 -f 3159 3157 3121 -f 3123 3124 3160 -f 3160 3159 3123 -f 3124 3125 3161 -f 3161 3160 3124 -f 3125 3126 3162 -f 3162 3161 3125 -f 3128 3127 3163 -f 3163 3164 3128 -f 3126 3128 3164 -f 3164 3162 3126 -f 3127 3129 3165 -f 3165 3163 3127 -f 3129 3130 3166 -f 3166 3165 3129 -f 3132 3131 3167 -f 3167 3168 3132 -f 3133 3132 3168 -f 3168 3169 3133 -f 3134 3133 3169 -f 3169 3170 3134 -f 3135 3134 3170 -f 3170 3171 3135 -f 3136 3135 3171 -f 3171 3172 3136 -f 3138 3137 3173 -f 3173 3174 3138 -f 3137 3136 3172 -f 3172 3173 3137 -f 3139 3138 3174 -f 3174 3175 3139 -f 3130 3139 3175 -f 3175 3166 3130 -f 3140 3122 3158 -f 3158 3176 3140 -f 3141 3140 3176 -f 3176 3177 3141 -f 3142 3141 3177 -f 3177 3178 3142 -f 3143 3142 3178 -f 3178 3179 3143 -f 3144 3143 3179 -f 3179 3180 3144 -f 3146 3145 3181 -f 3181 3182 3146 -f 3145 3144 3180 -f 3180 3181 3145 -f 3147 3146 3182 -f 3182 3183 3147 -f 3148 3147 3183 -f 3183 3184 3148 -f 3131 3149 3185 -f 3185 3167 3131 -f 3149 3150 3186 -f 3186 3185 3149 -f 3150 3151 3187 -f 3187 3186 3150 -f 3151 3152 3188 -f 3188 3187 3151 -f 3152 3153 3189 -f 3189 3188 3152 -f 3155 3154 3190 -f 3190 3191 3155 -f 3153 3155 3191 -f 3191 3189 3153 -f 3154 3156 3192 -f 3192 3190 3154 -f 3156 3148 3184 -f 3184 3192 3156 -f 3158 3157 3193 -f 3193 3194 3158 -f 3157 3159 3195 -f 3195 3193 3157 -f 3159 3160 3196 -f 3196 3195 3159 -f 3160 3161 3197 -f 3197 3196 3160 -f 3161 3162 3198 -f 3198 3197 3161 -f 3164 3163 3199 -f 3199 3200 3164 -f 3162 3164 3200 -f 3200 3198 3162 -f 3163 3165 3201 -f 3201 3199 3163 -f 3165 3166 3202 -f 3202 3201 3165 -f 3168 3167 3203 -f 3203 3204 3168 -f 3169 3168 3204 -f 3204 3205 3169 -f 3170 3169 3205 -f 3205 3206 3170 -f 3171 3170 3206 -f 3206 3207 3171 -f 3172 3171 3207 -f 3207 3208 3172 -f 3174 3173 3209 -f 3209 3210 3174 -f 3173 3172 3208 -f 3208 3209 3173 -f 3175 3174 3210 -f 3210 3211 3175 -f 3166 3175 3211 -f 3211 3202 3166 -f 3176 3158 3194 -f 3194 3212 3176 -f 3177 3176 3212 -f 3212 3213 3177 -f 3178 3177 3213 -f 3213 3214 3178 -f 3179 3178 3214 -f 3214 3215 3179 -f 3180 3179 3215 -f 3215 3216 3180 -f 3182 3181 3217 -f 3217 3218 3182 -f 3181 3180 3216 -f 3216 3217 3181 -f 3183 3182 3218 -f 3218 3219 3183 -f 3184 3183 3219 -f 3219 3220 3184 -f 3167 3185 3221 -f 3221 3203 3167 -f 3185 3186 3222 -f 3222 3221 3185 -f 3186 3187 3223 -f 3223 3222 3186 -f 3187 3188 3224 -f 3224 3223 3187 -f 3188 3189 3225 -f 3225 3224 3188 -f 3191 3190 3226 -f 3226 3227 3191 -f 3189 3191 3227 -f 3227 3225 3189 -f 3190 3192 3228 -f 3228 3226 3190 -f 3192 3184 3220 -f 3220 3228 3192 -f 3194 3193 503 -f 503 506 3194 -f 3193 3195 509 -f 509 503 3193 -f 3195 3196 512 -f 512 509 3195 -f 3196 3197 515 -f 515 512 3196 -f 3197 3198 518 -f 518 515 3197 -f 3200 3199 522 -f 522 521 3200 -f 3198 3200 521 -f 521 518 3198 -f 3199 3201 527 -f 527 522 3199 -f 3201 3202 530 -f 530 527 3201 -f 3204 3203 664 -f 664 663 3204 -f 3205 3204 663 -f 663 669 3205 -f 3206 3205 669 -f 669 673 3206 -f 3207 3206 673 -f 673 676 3207 -f 3208 3207 676 -f 676 679 3208 -f 3210 3209 681 -f 681 684 3210 -f 3209 3208 679 -f 679 681 3209 -f 3211 3210 684 -f 684 688 3211 -f 3202 3211 688 -f 688 530 3202 -f 3212 3194 506 -f 506 838 3212 -f 3213 3212 838 -f 838 841 3213 -f 3214 3213 841 -f 841 845 3214 -f 3215 3214 845 -f 845 848 3215 -f 3216 3215 848 -f 848 851 3216 -f 3218 3217 853 -f 853 856 3218 -f 3217 3216 851 -f 851 853 3217 -f 3219 3218 856 -f 856 860 3219 -f 3220 3219 860 -f 860 863 3220 -f 3203 3221 978 -f 978 664 3203 -f 3221 3222 981 -f 981 978 3221 -f 3222 3223 984 -f 984 981 3222 -f 3223 3224 987 -f 987 984 3223 -f 3224 3225 990 -f 990 987 3224 -f 3227 3226 994 -f 994 993 3227 -f 3225 3227 993 -f 993 990 3225 -f 3226 3228 999 -f 999 994 3226 -f 3228 3220 863 -f 863 999 3228 diff --git a/tutorials/mesh/cvMesh/flange/system/collapseDict b/tutorials/mesh/cvMesh/flange/system/collapseDict deleted file mode 100644 index 729710d9fdd70b60a0f0787fc62d2fe3e0d0b415..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/collapseDict +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object collapseDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -collapseEdgesCoeffs -{ - minimumEdgeLength 1e-6; - maximumMergeAngle 180; - reductionFactor 0.5; -} - -collapseFacesCoeffs -{ - initialFaceLengthFactor 0.5; - reductionFactor 0.5; - - allowEarlyCollapseToPoint on; - allowEarlyCollapseCoeff 0.2; - guardFraction 0.1; - maxCollapseFaceToPointSideLengthCoeff 0.3; -} - -meshQualityCoeffs -{ - #include "meshQualityDict"; - maximumIterations 10; - maximumSmoothingIterations 1; - maxPointErrorCount 5; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/controlDict b/tutorials/mesh/cvMesh/flange/system/controlDict deleted file mode 100644 index 8d7092895478f5bc1dc88904efe55f2249ce6ee6..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/controlDict +++ /dev/null @@ -1,58 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object controlDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -application cvMesh; - -startFrom startTime; - -startTime 0; - -stopAt endTime; - -endTime 100; - -deltaT 1; - -writeControl timeStep; - -writeInterval 100; - -purgeWrite 0; - -writeFormat ascii; - -writePrecision 10; - -writeCompression uncompressed; - -timeFormat general; - -timePrecision 6; - -runTimeModifiable yes; - -libs ("libdistributed.so"); - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/cvMeshDict b/tutorials/mesh/cvMesh/flange/system/cvMeshDict deleted file mode 100644 index fe581a549397396649d5df9696bac8cef3367406..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/cvMeshDict +++ /dev/null @@ -1,200 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object cvMeshDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// Any scalar with a name <name>Coeff specifies a value that will be implemented -// as a faction of the local target cell size - -geometry -{ - flange.obj - { - type triSurfaceMesh; - } -} - - -backgroundMeshDecomposition -{ - minLevels 1; - sampleResolution 4; - spanScale 5; - maxCellWeightCoeff 10; -} - - -surfaceConformation -{ - locationInMesh (0 0 0); - - pointPairDistanceCoeff 0.1; - - mixedFeaturePointPPDistanceCoeff 5.0; - - featurePointExclusionDistanceCoeff 0.7; - - featureEdgeExclusionDistanceCoeff 0.7; - - surfaceSearchDistanceCoeff 5; - - maxSurfaceProtrusionCoeff 0.1; - - maxQuadAngle 125; - - surfaceConformationRebuildFrequency 10; - - specialiseFeaturePoints on; - - conformationControls - { - edgeSearchDistCoeff 5; - surfacePtReplaceDistCoeff 0.5; - surfacePtExclusionDistanceCoeff 0.5; - - maxIterations 15; - - iterationToInitialHitRatioLimit 0.0001; - } - - geometryToConformTo - { - flange.obj - { - featureMethod extendedFeatureEdgeMesh; - extendedFeatureEdgeMesh "flange.extendedFeatureEdgeMesh"; - } - } - - additionalFeatures - { - } -} - - -initialPoints -{ - minimumSurfaceDistanceCoeff 0.55; - - initialPointsMethod autoDensity; - //initialPointsMethod pointFile; - - autoDensityCoeffs - { - minLevels 1; - maxSizeRatio 3.0; - sampleResolution 4; - surfaceSampleResolution 5; - } - - pointFileCoeffs - { - pointFile "constant/internalDelaunayVertices"; - } -} - - -motionControl -{ - defaultCellSize 0.001; - - shapeControlFunctions - { - flange.obj - { - type searchableSurfaceControl; - priority 1; - mode inside; - surfaceCellSizeFunction uniformValue; - uniformValueCoeffs - { - surfaceCellSize $defaultCellSize; - } - - cellSizeFunction uniform; - uniformCoeffs{} - } - } - - cellAspectRatioControl - { - aspectRatio 1.0; - aspectRatioDirection (0 0 0); - } - - relaxationModel adaptiveLinear; - - adaptiveLinearCoeffs - { - relaxationStart 1.0; - relaxationEnd 0.0; - } - - objOutput no; - - timeChecks no; - - maxLoadUnbalance 0.2; - - alignmentSearchSpokes 36; - - alignmentAcceptanceAngle 48; - - sizeAndAlignmentRebuildFrequency 20; - - pointInsertionCriteria - { - cellCentreDistCoeff 1.75; - faceAreaRatioCoeff 0.0025; - acceptanceAngle 21.5; - } - - pointRemovalCriteria - { - cellCentreDistCoeff 0.65; - } - - faceAreaWeightModel piecewiseLinearRamp; - - piecewiseLinearRampCoeffs - { - lowerAreaFraction 0.5; - upperAreaFraction 1.0; - } -} - - -polyMeshFiltering -{ - filterEdges on; - filterFaces off; - writeTetDualMesh false; -} - - -meshQualityControls -{ - #include "meshQualityDict" -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/decomposeParDict b/tutorials/mesh/cvMesh/flange/system/decomposeParDict deleted file mode 100644 index afb5d8a226cc699ab6db67b043e65ba01103f2d7..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/decomposeParDict +++ /dev/null @@ -1,46 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object decomposeParDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -numberOfSubdomains 8; - -//method scotch; -method hierarchical; - -simpleCoeffs -{ - n ( 2 2 2 ); - delta 0.001; -} - -hierarchicalCoeffs -{ - n ( 2 2 2 ); - delta 0.001; - order xyz; -} - -manualCoeffs -{ - dataFile ""; -} - -distributed no; - -roots ( ); - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/faceSetDict b/tutorials/mesh/cvMesh/flange/system/faceSetDict deleted file mode 100644 index 68666ebc86dbf5e0b216a9c6d6e51a790506f54d..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/faceSetDict +++ /dev/null @@ -1,35 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object faceSetDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// Name of set to operate on -name facesToBeRemoved; - -// One of clear/new/invert/add/delete|subset/list -action new; - -// Actions to apply to pointSet. These are all the topoSetSource's ending -// in ..ToFace (see the meshTools library). -topoSetSources -( - // Select by explicitly providing face labels - labelToFace - { - value #include "../facesToBeRemoved"; - } -); - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/fvSchemes b/tutorials/mesh/cvMesh/flange/system/fvSchemes deleted file mode 100644 index 046181f3576de294a25da6429547f491989dd144..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/fvSchemes +++ /dev/null @@ -1,55 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSchemes; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -ddtSchemes -{ - default none; -} - -gradSchemes -{ - default Gauss linear; -} - -divSchemes -{ - default none; -} - -laplacianSchemes -{ - default none; - laplacian(nn) Gauss linear corrected; -} - -interpolationSchemes -{ - default none; -} - -snGradSchemes -{ - default corrected; -} - -fluxRequired -{ - default no; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/fvSolution b/tutorials/mesh/cvMesh/flange/system/fvSolution deleted file mode 100644 index 6368c1229865b54c53db9d5d239567540a12540b..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/fvSolution +++ /dev/null @@ -1,29 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSolution; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -solvers -{ - nn - { - solver PCG; - preconditioner DIC; - tolerance 1e-06; - relTol 0; - } -} - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/meshQualityDict b/tutorials/mesh/cvMesh/flange/system/meshQualityDict deleted file mode 100644 index 4a182cc0b58b9795df86df5d6e220f285bd42595..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/meshQualityDict +++ /dev/null @@ -1,73 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object meshQualityDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -//- Maximum non-orthogonality allowed. Set to 180 to disable. -maxNonOrtho 45; - -//- Max skewness allowed. Set to <0 to disable. -maxBoundarySkewness 50; -maxInternalSkewness 10; - -//- Max concaveness allowed. Is angle (in degrees) below which concavity -// is allowed. 0 is straight face, <0 would be convex face. -// Set to 180 to disable. -maxConcave 80; - -//- Minimum quality of the tet formed by the face-centre -// and variable base point minimum decomposition triangles and -// the cell centre. This has to be a positive number for tracking -// to work. Set to very negative number (e.g. -1E30) to -// disable. -// <0 = inside out tet, -// 0 = flat tet -// 1 = regular tet -minTetQuality 1e-30; - -//- Minimum pyramid volume. Is absolute volume of cell pyramid. -// Set to a sensible fraction of the smallest cell volume expected. -// Set to very negative number (e.g. -1E30) to disable. -minVol 0; - -//- Minimum face area. Set to <0 to disable. -minArea -1; - -//- Minimum face twist. Set to <-1 to disable. dot product of face normal -//- and face centre triangles normal -minTwist 0.001; - -//- minimum normalised cell determinant -//- 1 = hex, <= 0 = folded or flattened illegal cell -minDeterminant 0.001; - -//- minFaceWeight (0 -> 0.5) -minFaceWeight 0.02; - -//- minVolRatio (0 -> 1) -minVolRatio 0.01; - -//must be >0 for Fluent compatibility -minTriangleTwist -1; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/snappyHexMeshDict b/tutorials/mesh/cvMesh/flange/system/snappyHexMeshDict deleted file mode 100644 index 12c88b16c4dba21ff638a3d6c8738fb70fa44c40..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/snappyHexMeshDict +++ /dev/null @@ -1,308 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object snappyHexMeshDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// Which of the steps to run -castellatedMesh false; -snap false; -addLayers true; - - -// Geometry. Definition of all surfaces. All surfaces are of class -// searchableSurface. -// Surfaces are used -// - to specify refinement for any mesh cell intersecting it -// - to specify refinement for any mesh cell inside/outside/near -// - to 'snap' the mesh boundary to the surface -geometry -{ -// motorBike.obj -// { -// type triSurfaceMesh; -// name motorBike; -// } -// -// refinementBox -// { -// type searchableBox; -// min (-1.0 -0.7 0.0); -// max ( 8.0 0.7 2.5); -// } -}; - - - -// Settings for the castellatedMesh generation. -castellatedMeshControls -{ - - // Refinement parameters - // ~~~~~~~~~~~~~~~~~~~~~ - - // If local number of cells is >= maxLocalCells on any processor - // switches from from refinement followed by balancing - // (current method) to (weighted) balancing before refinement. - maxLocalCells 100000; - - // Overall cell limit (approximately). Refinement will stop immediately - // upon reaching this number so a refinement level might not complete. - // Note that this is the number of cells before removing the part which - // is not 'visible' from the keepPoint. The final number of cells might - // actually be a lot less. - maxGlobalCells 2000000; - - // The surface refinement loop might spend lots of iterations refining just a - // few cells. This setting will cause refinement to stop if <= minimumRefine - // are selected for refinement. Note: it will at least do one iteration - // (unless the number of cells to refine is 0) - minRefinementCells 10; - - // Allow a certain level of imbalance during refining - // (since balancing is quite expensive) - // Expressed as fraction of perfect balance (= overall number of cells / - // nProcs). 0=balance always. - maxLoadUnbalance 0.10; - - - // Number of buffer layers between different levels. - // 1 means normal 2:1 refinement restriction, larger means slower - // refinement. - nCellsBetweenLevels 3; - - - - // Explicit feature edge refinement - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - // Specifies a level for any cell intersected by its edges. - // This is a featureEdgeMesh, read from constant/triSurface for now. - features - ( - //{ - // file "someLine.eMesh"; - // level 2; - //} - ); - - - - // Surface based refinement - // ~~~~~~~~~~~~~~~~~~~~~~~~ - - // Specifies two levels for every surface. The first is the minimum level, - // every cell intersecting a surface gets refined up to the minimum level. - // The second level is the maximum level. Cells that 'see' multiple - // intersections where the intersections make an - // angle > resolveFeatureAngle get refined up to the maximum level. - - refinementSurfaces - { -// motorBike -// { -// // Surface-wise min and max refinement level -// level (5 6); -// -// // Optional specification of patch type (default is wall). No -// // constraint types (cyclic, symmetry) etc. are allowed. -// patchInfo -// { -// type wall; -// inGroups (motorBike); -// } -// } - } - - // Resolve sharp angles - resolveFeatureAngle 30; - - - // Region-wise refinement - // ~~~~~~~~~~~~~~~~~~~~~~ - - // Specifies refinement level for cells in relation to a surface. One of - // three modes - // - distance. 'levels' specifies per distance to the surface the - // wanted refinement level. The distances need to be specified in - // descending order. - // - inside. 'levels' is only one entry and only the level is used. All - // cells inside the surface get refined up to the level. The surface - // needs to be closed for this to be possible. - // - outside. Same but cells outside. - - refinementRegions - { -// refinementBox -// { -// mode inside; -// levels ((1E15 4)); -// } - } - - - // Mesh selection - // ~~~~~~~~~~~~~~ - - // After refinement patches get added for all refinementSurfaces and - // all cells intersecting the surfaces get put into these patches. The - // section reachable from the locationInMesh is kept. - // NOTE: This point should never be on a face, always inside a cell, even - // after refinement. - locationInMesh (-1 0 0); - - - // Whether any faceZones (as specified in the refinementSurfaces) - // are only on the boundary of corresponding cellZones or also allow - // free-standing zone faces. Not used if there are no faceZones. - allowFreeStandingZoneFaces true; -} - - - -// Settings for the snapping. -snapControls -{ - //- Number of patch smoothing iterations before finding correspondence - // to surface - nSmoothPatch 3; - - //- Relative distance for points to be attracted by surface feature point - // or edge. True distance is this factor times local - // maximum edge length. - tolerance 4.0; - - //- Number of mesh displacement relaxation iterations. - nSolveIter 0; - - //- Maximum number of snapping relaxation iterations. Should stop - // before upon reaching a correct mesh. - nRelaxIter 5; - - //- Highly experimental and wip: number of feature edge snapping - // iterations. Leave out altogether to disable. - // Do not use here since mesh resolution too low and baffles present - //nFeatureSnapIter 10; -} - - - -// Settings for the layer addition. -addLayersControls -{ - // Are the thickness parameters below relative to the undistorted - // size of the refined cell outside layer (true) or absolute sizes (false). - relativeSizes false; - - // Per final patch (so not geometry!) the layer information - layers - { - "flange.obj.*" - { - nSurfaceLayers 1; - } - } - - // Expansion factor for layer mesh - expansionRatio 1.5; - - // Wanted thickness of final added cell layer. If multiple layers - // is the thickness of the layer furthest away from the wall. - // Relative to undistorted size of cell outside layer. - // is the thickness of the layer furthest away from the wall. - // See relativeSizes parameter. - finalLayerThickness 0.0003; - - // Minimum thickness of cell layer. If for any reason layer - // cannot be above minThickness do not add layer. - // Relative to undistorted size of cell outside layer. - minThickness 0.0001; - - // If points get not extruded do nGrow layers of connected faces that are - // also not grown. This helps convergence of the layer addition process - // close to features. - // Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x) - nGrow 0; - - // Advanced settings - - // When not to extrude surface. 0 is flat surface, 90 is when two faces - // are perpendicular - featureAngle 90; - - // Maximum number of snapping relaxation iterations. Should stop - // before upon reaching a correct mesh. - nRelaxIter 3; - - // Number of smoothing iterations of surface normals - nSmoothSurfaceNormals 1; - - // Number of smoothing iterations of interior mesh movement direction - nSmoothNormals 3; - - // Smooth layer thickness over surface patches - nSmoothThickness 10; - - // Stop layer growth on highly warped cells - maxFaceThicknessRatio 1000; - - // Reduce layer growth where ratio thickness to medial - // distance is large - maxThicknessToMedialRatio 0.3; - - // Angle used to pick up medial axis points - // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 in 17x. - minMedianAxisAngle 90; - - - // Create buffer region for new layer terminations - nBufferCellsNoExtrude 0; - - - // Overall max number of layer addition iterations. The mesher will exit - // if it reaches this number of iterations; possibly with an illegal - // mesh. - nLayerIter 50; -} - - - -meshQualityControls -{ - // Generic mesh quality settings. At any undoable phase these determine - // where to undo. - #include "meshQualityDict" - - //- Number of error distribution iterations - nSmoothScale 4; - //- amount to scale back displacement at error points - errorReduction 0.75; -} - - -// Advanced - -// Flags for optional output -// 0 : only write final meshes -// 1 : write intermediate meshes -// 2 : write volScalarField with cellLevel for postprocessing -// 4 : write current intersections as .obj files -debug 0; - - -// Merge tolerance. Is fraction of overall bounding box of initial mesh. -// Note: the write tolerance needs to be higher than this. -mergeTolerance 1e-6; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/surfaceFeatureExtractDict b/tutorials/mesh/cvMesh/flange/system/surfaceFeatureExtractDict deleted file mode 100644 index 520df11958ba69a71cf8b55c16a97653b883cdd3..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/surfaceFeatureExtractDict +++ /dev/null @@ -1,38 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object surfaceFeatureExtractDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -flange.obj -{ - extractionMethod extractFromSurface; - - extractFromSurfaceCoeffs - { - // Mark edges whose adjacent surface normals are at an angle less - // than includedAngle as features - // - 0 : selects no edges - // - 180: selects all edges - includedAngle 100; - } - - - // Write options - - // Write features to obj format for postprocessing - writeObj yes; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/topoSetDict-background b/tutorials/mesh/cvMesh/flange/system/topoSetDict-background deleted file mode 100644 index 03ae10303e7b0724ba72c8fce5db5ae5611aafe3..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/topoSetDict-background +++ /dev/null @@ -1,319 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object topoSetDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -// List of actions. Each action is a dictionary with e.g. -// // name of set -// name c0; -// -// // type: pointSet/faceSet/cellSet/faceZoneSet/cellZoneSet -// type cellSet; -// -// // action to perform on set. Two types: -// // - require no source : clear/invert -// // - require source : new/add/delete/subset -// action new; -// -// The source entry varies according to the type of set: -// -// cellSet -// ~~~~~~~ -// -// // Select by explicitly providing cell labels -// source labelToCell; -// { -// value (12 13 56); // labels of cells -// } -// -// // Copy elements from cellSet -// source cellToCell; -// { -// set c1; -// } -// -// // Cells in cell zone -// source zoneToCell; -// { -// name ".*Zone"; // Name of cellZone, regular expressions allowed -// } -// -// // Cells on master or slave side of faceZone -// source faceZoneToCell; -// { -// name ".*Zone"; // Name of faceZone, regular expressions allowed -// option master; // master/slave -// } -// -// // Select based on faceSet -// source faceToCell; -// { -// set f0; // Name of faceSet -// -// //option neighbour; // cell with neighbour in faceSet -// //option owner; // ,, owner -// option any; // cell with any face in faceSet -// //option all; // cell with all faces in faceSet -// } -// -// // Select based on pointSet -// source pointToCell; -// { -// set p0; -// option any; // cell with any point in pointSet -// //option all; // cell with all points in pointSet -// } -// -// // Select based on cellShape -// source shapeToCell; -// { -// type hex; // hex/wedge/prism/pyr/tet/tetWedge/splitHex -// } -// -// // Cells with cell centre within box -// source boxToCell; -// { -// box (0 0 0) (1 1 1); -// } -// -// // Cells with cell centre within box -// // Is skewed, rotated box. Given as origin and three spanning vectors. -// source rotatedBoxToCell; -// { -// origin (0.2 0.2 -10); -// i (0.2 0.2 0); -// j (-0.2 0.2 0); -// k (10 10 10); -// } -// -// // Cells with centre within cylinder -// source cylinderToCell; -// { -// p1 (0.2 0.2 -10); // start point on cylinder axis -// p2 (0.2 0.2 0); // end point on cylinder axis -// radius 5.0; -// } -// -// // Cells with centre within sphere -// source sphereToCell; -// { -// centre (0.2 0.2 -10); -// radius 5.0; -// } -// -// // Cells with cellCentre nearest to coordinates -// source nearestToCell; -// { -// points ((0 0 0) (1 1 1)(2 2 2)); -// } -// -// // Select based on surface -// source surfaceToCell; -// { -// file "www.avl.com-geometry.stl"; -// outsidePoints ((-99 -99 -59)); // definition of outside -// includeCut false; // cells cut by surface -// includeInside false; // cells not on outside of surf -// includeOutside false; // cells on outside of surf -// nearDistance -1; // cells with centre near surf -// // (set to -1 if not used) -// curvature 0.9; // cells within nearDistance -// // and near surf curvature -// // (set to -100 if not used) -// } -// -// // values of field within certain range -// source fieldToCell; -// { -// fieldName U; // Note: uses mag(U) since volVectorField -// min 0.1; -// max 0.5; -// } -// -// // Mesh region (non-face connected part of (subset of)mesh) -// source regionToCell; -// { -// set c0; // name of cellSet giving mesh subset -// insidePoint (1 2 3); // point inside region to select -// } -// -// -// -// faceSet -// ~~~~~~~ -// -// // Copy elements from faceSet -// source faceToFace; -// { -// set f1; -// } -// -// // Select based on cellSet -// source cellToFace; -// { -// set c0; -// option all; // All faces of cells -// //option both; // Only faces whose owner&neighbour are in cellSet -// } -// -// // Select based on pointSet -// source pointToFace; -// { -// set p0; -// option any; // Faces using any point in pointSet -// //option all // Faces with all points in pointSet -// } -// -// // Select by explicitly providing face labels -// source labelToFace; -// { -// value (12 13 56); // labels of faces -// } -// -// // All faces of patch -// source patchToFace; -// { -// name ".*Wall"; // Name of patch, regular expressions allowed -// } -// -// // All faces of faceZone -// source zoneToFace; -// { -// name ".*Zone1"; // Name of faceZone, regular expressions allowed -// } -// -// // Faces with face centre within box -// source boxToFace; -// { -// box (0 0 0) (1 1 1); -// } -// -// // Faces with normal to within certain angle aligned with vector. -// source normalToFace; -// { -// normal (0 0 1); // Vector -// cos 0.01; // Tolerance (max cos of angle) -// } -// -// -// -// pointSet -// ~~~~~~~ -// -// // Copy elements from pointSet -// source pointToPoint; -// { -// set p1; -// } -// -// // Select based on cellSet -// source cellToPoint; -// { -// set c0; -// option all; // all points of cell -// } -// -// // Select based on faceSet -// source faceToPoint; -// { -// set f0; // name of faceSet -// option all; // all points of face -// } -// -// // Select by explicitly providing point labels -// source labelToPoint; -// { -// value (12 13 56); // labels of points -// } -// -// // All points in pointzone -// source zoneToPoint; -// { -// name ".*Zone"; // name of pointZone, regular expressions allowed -// } -// -// // Points nearest to coordinates -// source nearestToPoint; -// { -// points ((0 0 0) (1 1 1)); -// } -// -// // Points with coordinate within box -// source boxToPoint; -// { -// box (0 0 0) (1 1 1); -// } -// -// // Select based on surface -// source surfaceToPoint; -// { -// file "www.avl.com-geometry.stl"; -// nearDistance 0.1; // points near to surface -// includeInside false; // points on inside of surface -// // (requires closed surface with consistent -// // normals) -// includeOutside false; // ,, outside ,, -// } -// -// -// -// -// cellZoneSet -// ~~~~~~~~~~~ -// (mirrors operations on a cellSet into a cellZone) -// -// // Select based on cellSet -// source setToCellZone; -// { -// set c0; // name of cellSet -// } -// -// -// -// faceZoneSet -// ~~~~~~~~~~~ -// // Select based on faceSet without orientation -// source setToFaceZone; -// { -// set f0; // name of faceSet -// } -// -// // Select based on faceSet, using cellSet to determine orientation -// source setsToFaceZone; -// { -// faceSet f0; // name of faceSet -// cellSet c0; // name of cellSet of slave side -// } - -actions -( - { - name background; - type cellSet; - action new; - source surfaceToCell; - sourceInfo - { - file "constant/triSurface/flange.obj"; - outsidePoints ((-0.026 -0.0275 -0.0235)); - includeCut true; - includeInside true; - includeOutside false; - nearDistance -1; - curvature -100; - } - } -); - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/flange/system/topoSetDict-slices b/tutorials/mesh/cvMesh/flange/system/topoSetDict-slices deleted file mode 100644 index 2b158377884d20598c8b95069b483b7a5c9b739b..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/flange/system/topoSetDict-slices +++ /dev/null @@ -1,152 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object topoSetDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -zSlice -0.009; -ySlice 0.0; -xSlice 0.0; - -actions -( - { - name z; - type cellSet; - action new; - source boxToCell; - sourceInfo - { - box (-100 -100 $zSlice)(100 100 100); - } - } - - { - name zf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set z; - option all; - } - } - - { - name z; - type cellSet; - action invert; - } - - { - name zf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set z; - option all; - } - } - - // ~~~~~~~~~~~~~~~~ // - - { - name y; - type cellSet; - action new; - source boxToCell; - sourceInfo - { - box (-100 $ySlice -100)(100 100 100); - } - } - - { - name yf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set y; - option all; - } - } - - { - name y; - type cellSet; - action invert; - } - - { - name yf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set y; - option all; - } - } - - // ~~~~~~~~~~~~~~~~ // - - { - name x; - type cellSet; - action new; - source boxToCell; - sourceInfo - { - box ($xSlice -100 -100)(100 100 100); - } - } - - { - name xf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set x; - option all; - } - } - - { - name x; - type cellSet; - action invert; - } - - { - name xf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set x; - option all; - } - } -); - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/simpleShapes/Allclean b/tutorials/mesh/cvMesh/simpleShapes/Allclean deleted file mode 100755 index 5361756c0d83d2cb6bf35f75930d4b625fd7d142..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/Allclean +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/CleanFunctions - -rm -r constant/extendedFeatureEdgeMesh constant/internalDelaunayVertices > /dev/null 2>&1 -rm constant/triSurface/*.eMesh > /dev/null 2>&1 -rm constant/triSurface/*_clean* > /dev/null 2>&1 -rm -r constant/polyMesh > /dev/null 2>&1 -rm constant/targetCellSize > /dev/null 2>&1 -rm -r constant/tetDualMesh > /dev/null 2>&1 - -rm domain coneAndSphere > /dev/null 2>&1 - -cleanCase - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/simpleShapes/Allrun b/tutorials/mesh/cvMesh/simpleShapes/Allrun deleted file mode 100755 index c37109987b9f66122fdddb9d394a3ccaea0e059a..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/Allrun +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory - -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -# Remove any small triangles (edges < 1e-4, sliver with Q < 1e-6) from surface -# (cvMesh will try to conform to every feature). -runApplication surfaceClean \ - constant/triSurface/coneAndSphere.obj \ - 1e-4 1e-6 \ - constant/triSurface/coneAndSphere_clean.obj -mv log.surfaceClean log.surfaceClean.coneAndSphere -# Orient so point to be meshed is inside surface -runApplication surfaceOrient \ - constant/triSurface/coneAndSphere_clean.obj \ - -inside '(0 -0.5 0)' \ - constant/triSurface/coneAndSphere_clean_orient.obj -mv log.surfaceOrient log.surfaceOrient.coneAndSphere - -# Same for outside -runApplication surfaceClean \ - constant/triSurface/domain.stl \ - 1e-4 1e-6 \ - constant/triSurface/domain_clean.stl -mv log.surfaceClean log.surfaceClean.domain -runApplication surfaceOrient \ - constant/triSurface/domain_clean.stl \ - -inside '(0 -0.5 0)' \ - constant/triSurface/domain_clean_orient.stl -mv log.surfaceOrient log.surfaceOrient.domain - -unset FOAM_SIGFPE -runApplication surfaceFeatureExtract - -# Generate aligned points (in constant/internalDelaunayVertices) and a -# mesh from that. -runApplication cvMesh - -# Generate some sets for a bit of mesh inspection -runApplication topoSet -time 0:100 - -# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/cone.stl b/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/cone.stl deleted file mode 100644 index 98e4698edbb223cbe7ea60d269b901911fdcd368..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/cone.stl +++ /dev/null @@ -1,828 +0,0 @@ -solid ascii - facet normal -1 0 0 - outer loop - vertex -0.5 0.475528 -0.154509 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.489074 -0.103956 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.489074 -0.103956 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.497261 -0.0522642 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.497261 -0.0522642 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.5 0 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.5 0 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.497261 0.0522642 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.497261 0.0522642 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.489074 0.103956 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.489074 0.103956 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.475528 0.154509 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.475528 0.154509 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.456773 0.203368 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.456773 0.203368 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.433013 0.25 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.433013 -0.25 - vertex -0.5 0.433013 0.25 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.433013 0.25 - vertex -0.5 0.433013 -0.25 - vertex -0.5 0.404509 0.293893 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.404509 0.293893 - vertex -0.5 0.433013 -0.25 - vertex -0.5 0.371572 0.334565 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.433013 -0.25 - vertex -0.5 0.404509 -0.293893 - vertex -0.5 0.371572 0.334565 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.404509 -0.293893 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.371572 0.334565 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.371572 0.334565 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.334565 0.371572 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.334565 0.371572 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.293893 0.404509 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.293893 0.404509 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.25 0.433013 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.25 0.433013 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.203368 0.456773 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.203368 0.456773 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.154509 0.475528 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.154509 0.475528 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.103956 0.489074 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.103956 0.489074 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.0522642 0.497261 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.0522642 0.497261 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -1.02552e-10 0.5 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -1.02552e-10 0.5 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.0522642 0.497261 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.0522642 0.497261 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.103956 0.489074 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.103956 0.489074 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.154509 0.475528 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.154509 0.475528 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.203368 0.456773 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.203368 0.456773 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.25 0.433013 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.25 0.433013 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.293893 0.404509 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.293893 0.404509 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.334565 0.371572 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.334565 0.371572 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.371572 0.334565 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.371572 0.334565 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.404509 0.293893 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.404509 0.293893 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.433013 0.25 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.433013 0.25 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.456773 0.203368 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.456773 0.203368 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.475528 0.154509 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.475528 0.154509 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.489074 0.103956 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.489074 0.103956 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.497261 0.0522642 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.497261 0.0522642 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.5 -2.05103e-10 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.5 -2.05103e-10 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.497261 -0.0522642 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.497261 -0.0522642 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.489074 -0.103956 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.489074 -0.103956 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.475528 -0.154509 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.475528 -0.154509 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.456773 -0.203368 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.456773 -0.203368 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.433013 -0.25 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.433013 -0.25 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.404509 -0.293893 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.404509 -0.293893 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.371572 -0.334565 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex -0.5 -0.371572 -0.334565 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.334565 -0.371572 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.334565 -0.371572 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.293893 -0.404509 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.293893 -0.404509 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.25 -0.433013 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.25 -0.433013 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.203368 -0.456773 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.203368 -0.456773 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.154509 -0.475528 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.154509 -0.475528 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.103956 -0.489074 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.103956 -0.489074 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 -0.0522642 -0.497261 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 -0.0522642 -0.497261 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 3.07655e-10 -0.5 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 3.07655e-10 -0.5 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.0522642 -0.497261 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.0522642 -0.497261 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.103956 -0.489074 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.103956 -0.489074 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.154509 -0.475528 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.334565 -0.371572 - vertex -0.5 0.154509 -0.475528 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex -0.5 0.334565 -0.371572 - vertex -0.5 0.293893 -0.404509 - vertex -0.5 0.154509 -0.475528 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex -0.5 0.293893 -0.404509 - vertex -0.5 0.25 -0.433013 - vertex -0.5 0.154509 -0.475528 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.5 0.203368 -0.456773 - vertex -0.5 0.154509 -0.475528 - vertex -0.5 0.25 -0.433013 - endloop - endfacet - facet normal 0.446723 0.893446 0.0468234 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.5 0 - vertex -0.5 0.497261 0.0522642 - endloop - endfacet - facet normal 0.446723 0.883657 0.139958 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.497261 0.0522642 - vertex -0.5 0.489074 0.103956 - endloop - endfacet - facet normal 0.446723 0.864187 0.231558 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.489074 0.103956 - vertex -0.5 0.475528 0.154509 - endloop - endfacet - facet normal 0.446723 0.835248 0.320622 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.475528 0.154509 - vertex -0.5 0.456773 0.203368 - endloop - endfacet - facet normal 0.446723 0.797159 0.406173 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.456773 0.203368 - vertex -0.5 0.433013 0.25 - endloop - endfacet - facet normal 0.446723 0.750335 0.487273 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.433013 0.25 - vertex -0.5 0.404509 0.293893 - endloop - endfacet - facet normal 0.446723 0.695291 0.563036 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.404509 0.293893 - vertex -0.5 0.371572 0.334565 - endloop - endfacet - facet normal 0.446723 0.632629 0.632629 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.371572 0.334565 - vertex -0.5 0.334565 0.371572 - endloop - endfacet - facet normal 0.446723 0.563036 0.695291 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.334565 0.371572 - vertex -0.5 0.293893 0.404509 - endloop - endfacet - facet normal 0.446723 0.487273 0.750335 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.293893 0.404509 - vertex -0.5 0.25 0.433013 - endloop - endfacet - facet normal 0.446723 0.406173 0.797159 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.25 0.433013 - vertex -0.5 0.203368 0.456773 - endloop - endfacet - facet normal 0.446723 0.320622 0.835248 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.203368 0.456773 - vertex -0.5 0.154509 0.475528 - endloop - endfacet - facet normal 0.446723 0.231558 0.864187 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.154509 0.475528 - vertex -0.5 0.103956 0.489074 - endloop - endfacet - facet normal 0.446723 0.139958 0.883657 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.103956 0.489074 - vertex -0.5 0.0522642 0.497261 - endloop - endfacet - facet normal 0.446723 0.0468234 0.893446 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.0522642 0.497261 - vertex -0.5 -1.02552e-10 0.5 - endloop - endfacet - facet normal 0.446723 -0.0468234 0.893446 - outer loop - vertex 0.5 0 0 - vertex -0.5 -1.02552e-10 0.5 - vertex -0.5 -0.0522642 0.497261 - endloop - endfacet - facet normal 0.446723 -0.139958 0.883657 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.0522642 0.497261 - vertex -0.5 -0.103956 0.489074 - endloop - endfacet - facet normal 0.446723 -0.231558 0.864187 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.103956 0.489074 - vertex -0.5 -0.154509 0.475528 - endloop - endfacet - facet normal 0.446723 -0.320622 0.835248 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.154509 0.475528 - vertex -0.5 -0.203368 0.456773 - endloop - endfacet - facet normal 0.446723 -0.406173 0.797159 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.203368 0.456773 - vertex -0.5 -0.25 0.433013 - endloop - endfacet - facet normal 0.446723 -0.487273 0.750335 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.25 0.433013 - vertex -0.5 -0.293893 0.404509 - endloop - endfacet - facet normal 0.446723 -0.563036 0.695291 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.293893 0.404509 - vertex -0.5 -0.334565 0.371572 - endloop - endfacet - facet normal 0.446723 -0.632629 0.632629 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.334565 0.371572 - vertex -0.5 -0.371572 0.334565 - endloop - endfacet - facet normal 0.446723 -0.695291 0.563036 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.371572 0.334565 - vertex -0.5 -0.404509 0.293893 - endloop - endfacet - facet normal 0.446723 -0.750335 0.487273 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.404509 0.293893 - vertex -0.5 -0.433013 0.25 - endloop - endfacet - facet normal 0.446723 -0.797159 0.406173 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.433013 0.25 - vertex -0.5 -0.456773 0.203368 - endloop - endfacet - facet normal 0.446723 -0.835248 0.320622 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.456773 0.203368 - vertex -0.5 -0.475528 0.154509 - endloop - endfacet - facet normal 0.446723 -0.864187 0.231558 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.475528 0.154509 - vertex -0.5 -0.489074 0.103956 - endloop - endfacet - facet normal 0.446723 -0.883657 0.139958 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.489074 0.103956 - vertex -0.5 -0.497261 0.0522642 - endloop - endfacet - facet normal 0.446723 -0.893446 0.0468234 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.497261 0.0522642 - vertex -0.5 -0.5 -2.05103e-10 - endloop - endfacet - facet normal 0.446723 -0.893446 -0.0468234 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.5 -2.05103e-10 - vertex -0.5 -0.497261 -0.0522642 - endloop - endfacet - facet normal 0.446723 -0.883657 -0.139958 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.497261 -0.0522642 - vertex -0.5 -0.489074 -0.103956 - endloop - endfacet - facet normal 0.446723 -0.864187 -0.231558 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.489074 -0.103956 - vertex -0.5 -0.475528 -0.154509 - endloop - endfacet - facet normal 0.446723 -0.835248 -0.320622 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.475528 -0.154509 - vertex -0.5 -0.456773 -0.203368 - endloop - endfacet - facet normal 0.446723 -0.797159 -0.406173 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.456773 -0.203368 - vertex -0.5 -0.433013 -0.25 - endloop - endfacet - facet normal 0.446723 -0.750335 -0.487273 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.433013 -0.25 - vertex -0.5 -0.404509 -0.293893 - endloop - endfacet - facet normal 0.446723 -0.695291 -0.563036 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.404509 -0.293893 - vertex -0.5 -0.371572 -0.334565 - endloop - endfacet - facet normal 0.446723 -0.632629 -0.632629 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.371572 -0.334565 - vertex -0.5 -0.334565 -0.371572 - endloop - endfacet - facet normal 0.446723 -0.563036 -0.695291 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.334565 -0.371572 - vertex -0.5 -0.293893 -0.404509 - endloop - endfacet - facet normal 0.446723 -0.487273 -0.750335 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.293893 -0.404509 - vertex -0.5 -0.25 -0.433013 - endloop - endfacet - facet normal 0.446723 -0.406173 -0.797159 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.25 -0.433013 - vertex -0.5 -0.203368 -0.456773 - endloop - endfacet - facet normal 0.446723 -0.320622 -0.835248 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.203368 -0.456773 - vertex -0.5 -0.154509 -0.475528 - endloop - endfacet - facet normal 0.446723 -0.231558 -0.864187 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.154509 -0.475528 - vertex -0.5 -0.103956 -0.489074 - endloop - endfacet - facet normal 0.446723 -0.139958 -0.883657 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.103956 -0.489074 - vertex -0.5 -0.0522642 -0.497261 - endloop - endfacet - facet normal 0.446723 -0.0468234 -0.893446 - outer loop - vertex 0.5 0 0 - vertex -0.5 -0.0522642 -0.497261 - vertex -0.5 3.07655e-10 -0.5 - endloop - endfacet - facet normal 0.446723 0.0468234 -0.893446 - outer loop - vertex 0.5 0 0 - vertex -0.5 3.07655e-10 -0.5 - vertex -0.5 0.0522642 -0.497261 - endloop - endfacet - facet normal 0.446723 0.139958 -0.883657 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.0522642 -0.497261 - vertex -0.5 0.103956 -0.489074 - endloop - endfacet - facet normal 0.446723 0.231558 -0.864187 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.103956 -0.489074 - vertex -0.5 0.154509 -0.475528 - endloop - endfacet - facet normal 0.446723 0.320622 -0.835248 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.154509 -0.475528 - vertex -0.5 0.203368 -0.456773 - endloop - endfacet - facet normal 0.446723 0.406173 -0.797159 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.203368 -0.456773 - vertex -0.5 0.25 -0.433013 - endloop - endfacet - facet normal 0.446723 0.487273 -0.750335 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.25 -0.433013 - vertex -0.5 0.293893 -0.404509 - endloop - endfacet - facet normal 0.446723 0.563036 -0.695291 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.293893 -0.404509 - vertex -0.5 0.334565 -0.371572 - endloop - endfacet - facet normal 0.446723 0.632629 -0.632629 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.334565 -0.371572 - vertex -0.5 0.371572 -0.334565 - endloop - endfacet - facet normal 0.446723 0.695291 -0.563036 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.371572 -0.334565 - vertex -0.5 0.404509 -0.293893 - endloop - endfacet - facet normal 0.446723 0.750335 -0.487273 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.404509 -0.293893 - vertex -0.5 0.433013 -0.25 - endloop - endfacet - facet normal 0.446723 0.797159 -0.406173 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.433013 -0.25 - vertex -0.5 0.456773 -0.203368 - endloop - endfacet - facet normal 0.446723 0.835248 -0.320622 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.456773 -0.203368 - vertex -0.5 0.475528 -0.154509 - endloop - endfacet - facet normal 0.446723 0.864187 -0.231558 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.475528 -0.154509 - vertex -0.5 0.489074 -0.103956 - endloop - endfacet - facet normal 0.446723 0.883657 -0.139958 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.489074 -0.103956 - vertex -0.5 0.497261 -0.0522642 - endloop - endfacet - facet normal 0.446723 0.893446 -0.0468234 - outer loop - vertex 0.5 0 0 - vertex -0.5 0.497261 -0.0522642 - vertex -0.5 0.5 0 - endloop - endfacet -endsolid diff --git a/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/coneAndSphere.obj b/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/coneAndSphere.obj deleted file mode 100644 index d90d10e85faf369f8cb5347a328e1ba3889e63d2..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/coneAndSphere.obj +++ /dev/null @@ -1,1489 +0,0 @@ -# Wavefront OBJ file -# Regions: -# 0 patch0 -# -# points : 495 -# triangles : 986 -# -v -0.5 0.371572 0.334565 -v -0.5 0.371572 -0.334565 -v -0.5 0.334565 0.371572 -v -0.5 -0.334565 0.371572 -v -0.5 -0.371572 0.334565 -v -0.5 -0.371572 -0.334565 -v -0.5 -0.334565 -0.371572 -v -0.5 0.334565 -0.371572 -v -0.5 0.475528 -0.154509 -v -0.5 0.475528 0.154509 -v -0.5 0.154509 0.475528 -v -0.5 -0.154509 0.475528 -v -0.5 -0.475528 0.154509 -v -0.5 -0.475528 -0.154509 -v -0.5 -0.154509 -0.475528 -v -0.5 0.154509 -0.475528 -v -0.5 0.5 0 -v -0.5 -1.02552e-10 0.5 -v -0.5 -0.5 -2.05103e-10 -v -0.5 3.07655e-10 -0.5 -v -0.5 0.497261 -0.0522642 -v -0.5 0.497261 0.0522642 -v -0.5 0.0522642 0.497261 -v -0.5 -0.0522642 0.497261 -v -0.5 -0.497261 0.0522642 -v -0.5 -0.497261 -0.0522642 -v -0.5 -0.0522642 -0.497261 -v -0.5 0.0522642 -0.497261 -v -0.5 0.456773 -0.203368 -v -0.5 0.456773 0.203368 -v -0.5 0.203368 0.456773 -v -0.5 -0.203368 0.456773 -v -0.5 -0.456773 0.203368 -v -0.5 -0.456773 -0.203368 -v -0.5 -0.203368 -0.456773 -v -0.5 0.203368 -0.456773 -v -0.5 0.489074 -0.103956 -v -0.5 0.489074 0.103956 -v -0.5 0.103956 0.489074 -v -0.5 -0.103956 0.489074 -v -0.5 -0.489074 0.103956 -v -0.5 -0.489074 -0.103956 -v -0.5 -0.103956 -0.489074 -v -0.5 0.103956 -0.489074 -v -0.5 0.433013 0.25 -v -0.5 0.433013 -0.25 -v -0.5 0.25 0.433013 -v -0.5 -0.25 0.433013 -v -0.5 -0.433013 0.25 -v -0.5 -0.433013 -0.25 -v -0.5 -0.25 -0.433013 -v -0.5 0.25 -0.433013 -v -0.5 0.404509 0.293893 -v -0.5 0.404509 -0.293893 -v -0.5 0.293893 0.404509 -v -0.5 -0.293893 0.404509 -v -0.5 -0.404509 0.293893 -v -0.5 -0.404509 -0.293893 -v -0.5 -0.293893 -0.404509 -v -0.5 0.293893 -0.404509 -v 0.139023 0.150219 0.122743 -v 0.139023 0.150219 -0.122743 -v 0.164524 0.158505 0.200848 -v 0.164524 0.158505 -0.200848 -v 0.229562 0.0308609 0.200848 -v 0.229562 0.0308609 -0.200848 -v 0.101708 0.3 0.0412897 -v 0.101708 0.3 -0.0412897 -v 0.307111 -0.103127 0.0412897 -v 0.307111 -0.103127 -0.0412897 -v 0.1153 0.3 0.122743 -v 0.1153 0.3 -0.122743 -v 0.3151 -0.0921307 0.122743 -v 0.3151 -0.0921307 -0.122743 -v 0.201904 0.170651 0.273474 -v 0.201904 0.170651 -0.273474 -v 0.261359 0.0539629 0.273474 -v 0.261359 0.0539629 -0.273474 -v 0.142113 0.3 0.200848 -v 0.142113 0.3 -0.200848 -v 0.330861 -0.0704381 0.200848 -v 0.330861 -0.0704381 -0.200848 -v 0.181417 0.3 0.273474 -v 0.181417 0.3 -0.273474 -v 0.353963 -0.038641 0.273474 -v 0.353963 -0.038641 -0.273474 -v 0.250142 0.186324 0.338641 -v 0.250143 0.186324 -0.338641 -v 0.302393 0.0837761 0.338641 -v 0.302393 0.0837761 -0.338641 -v 0.126096 0.453981 0.0412897 -v 0.126096 0.453981 -0.0412897 -v 0.446019 -0.173904 0.0412897 -v 0.446019 -0.173904 -0.0412897 -v 0.139023 0.449781 0.122743 -v 0.139023 0.449781 -0.122743 -v 0.450219 -0.160977 0.122743 -v 0.450219 -0.160977 -0.122743 -v 0.232138 0.3 0.338641 -v 0.232138 0.3 -0.338641 -v 0.383776 0.0023934 0.338641 -v 0.383776 0.00239342 -0.338641 -v 0.164524 0.441495 0.200848 -v 0.164524 0.441495 -0.200848 -v 0.458505 -0.135476 0.200848 -v 0.458505 -0.135476 -0.200848 -v 0.307925 0.205099 0.39457 -v 0.307925 0.205099 -0.39457 -v 0.351546 0.119487 0.39457 -v 0.351546 0.119487 -0.39457 -v 0.201904 0.429349 0.273474 -v 0.201904 0.429349 -0.273474 -v 0.470651 -0.0980963 0.273474 -v 0.470651 -0.0980963 -0.273474 -v 0.292894 0.3 0.39457 -v 0.292894 0.3 -0.39457 -v 0.419487 0.0515457 0.39457 -v 0.419487 0.0515457 -0.39457 -v 0.250142 0.413676 0.338641 -v 0.250143 0.413676 -0.338641 -v 0.486324 -0.0498575 0.338641 -v 0.486324 -0.0498575 -0.338641 -v 0.373674 0.226462 0.439737 -v 0.373674 0.226462 -0.439737 -v 0.407475 0.160123 0.439737 -v 0.407475 0.160123 -0.439737 -v 0.196873 0.592889 0.0412897 -v 0.196873 0.592889 -0.0412897 -v 0.207869 0.5849 0.122743 -v 0.207869 0.5849 -0.122743 -v 0.6 -0.198292 0.0412897 -v 0.6 -0.198292 -0.0412897 -v 0.307924 0.394901 0.39457 -v 0.307925 0.394901 -0.39457 -v 0.6 -0.1847 0.122743 -v 0.6 -0.1847 -0.122743 -v 0.505099 0.00792448 0.39457 -v 0.505099 0.00792451 -0.39457 -v 0.362026 0.3 0.439737 -v 0.362026 0.3 -0.439737 -v 0.460123 0.107475 0.439737 -v 0.460123 0.107475 -0.439737 -v 0.229562 0.569139 0.200848 -v 0.229562 0.569139 -0.200848 -v 0.6 -0.157887 0.200848 -v 0.6 -0.157887 -0.200848 -v 0.261359 0.546037 0.273474 -v 0.261359 0.546037 -0.273474 -v 0.6 -0.118583 0.273474 -v 0.6 -0.118583 -0.273474 -v 0.373674 0.373538 0.439737 -v 0.373674 0.373538 -0.439737 -v 0.302393 0.516224 0.338641 -v 0.302393 0.516224 -0.338641 -v 0.526462 0.0736736 0.439737 -v 0.526462 0.0736736 -0.439737 -v 0.6 -0.0678619 -0.338641 -v 0.6 -0.067862 0.338641 -v 0.445596 0.249831 0.472909 -v 0.445596 0.249831 -0.472909 -v 0.468656 0.204573 0.472909 -v 0.468656 0.204573 -0.472909 -v 0.43765 0.3 0.472909 -v 0.43765 0.3 -0.472909 -v 0.504573 0.168656 0.472909 -v 0.504573 0.168656 -0.472909 -v 0.351546 0.480513 0.39457 -v 0.351546 0.480513 -0.39457 -v 0.6 -0.00710633 -0.39457 -v 0.6 -0.00710636 0.39457 -v 0.445596 0.350169 0.472909 -v 0.445596 0.350169 -0.472909 -v 0.549831 0.145596 0.472909 -v 0.549831 0.145596 -0.472909 -v 0.407475 0.439877 0.439737 -v 0.407475 0.439877 -0.439737 -v 0.6 0.0620263 0.439737 -v 0.6 0.0620263 -0.439737 -v 0.307111 0.703127 0.0412897 -v 0.307111 0.703127 -0.0412897 -v 0.521731 0.274569 0.493181 -v 0.521731 0.274569 -0.493181 -v 0.53342 0.251627 0.493181 -v 0.53342 0.251627 -0.493181 -v 0.3151 0.692131 0.122743 -v 0.3151 0.692131 -0.122743 -v 0.330861 0.670438 0.200848 -v 0.330861 0.670438 -0.200848 -v 0.468656 0.395427 0.472909 -v 0.468656 0.395427 -0.472909 -v 0.753981 -0.173904 0.0412897 -v 0.753981 -0.173904 -0.0412897 -v 0.517703 0.3 0.493181 -v 0.517703 0.3 -0.493181 -v 0.551627 0.23342 0.493181 -v 0.551627 0.23342 -0.493181 -v 0.6 0.13765 0.472909 -v 0.6 0.13765 -0.472909 -v 0.749781 -0.160977 0.122743 -v 0.749781 -0.160977 -0.122743 -v 0.353963 0.638641 0.273474 -v 0.353963 0.638641 -0.273474 -v 0.741495 -0.135476 0.200848 -v 0.741495 -0.135476 -0.200848 -v 0.729349 -0.0980963 0.273474 -v 0.729349 -0.0980963 -0.273474 -v 0.383776 0.597607 0.338641 -v 0.383776 0.597607 -0.338641 -v 0.521731 0.325431 0.493181 -v 0.521731 0.325431 -0.493181 -v 0.574569 0.221731 0.493181 -v 0.574569 0.221731 -0.493181 -v 0.713676 -0.0498575 0.338641 -v 0.713676 -0.0498575 -0.338641 -v 0.419487 0.548454 0.39457 -v 0.419487 0.548454 -0.39457 -v 0.694901 0.0079245 0.39457 -v 0.694901 0.00792454 -0.39457 -v 0.460123 0.492525 0.439737 -v 0.460123 0.492525 -0.439737 -v 0.53342 0.348373 0.493181 -v 0.53342 0.348373 -0.493181 -v 0.6 0.217703 0.493181 -v 0.6 0.217703 -0.493181 -v 0.673538 0.0736736 0.439737 -v 0.673538 0.0736736 -0.439737 -v 0.504573 0.431344 0.472909 -v 0.504573 0.431344 -0.472909 -v 0.650169 0.145596 0.472909 -v 0.650169 0.145596 -0.472909 -v 0.551627 0.36658 0.493181 -v 0.551627 0.36658 -0.493181 -v 0.625431 0.221731 0.493181 -v 0.625431 0.221731 -0.493181 -v 0.6 0.3 0.5 -v 0.6 0.3 -0.5 -v 0.574569 0.378269 0.493181 -v 0.574569 0.378269 -0.493181 -v 0.648373 0.23342 0.493181 -v 0.648373 0.23342 -0.493181 -v 0.549831 0.454404 0.472909 -v 0.549831 0.454404 -0.472909 -v 0.695427 0.168656 0.472909 -v 0.695427 0.168656 -0.472909 -v 0.526462 0.526326 0.439737 -v 0.526462 0.526326 -0.439737 -v 0.6 0.382297 0.493181 -v 0.6 0.382297 -0.493181 -v 0.66658 0.251627 0.493181 -v 0.66658 0.251627 -0.493181 -v 0.739877 0.107475 0.439737 -v 0.739877 0.107475 -0.439737 -v 0.505099 0.592075 -0.39457 -v 0.505099 0.592076 0.39457 -v 0.780513 0.0515458 0.39457 -v 0.780513 0.0515458 -0.39457 -v 0.486324 0.649857 -0.338641 -v 0.486324 0.649858 0.338641 -v 0.625431 0.378269 0.493181 -v 0.625431 0.378269 -0.493181 -v 0.678269 0.274569 0.493181 -v 0.678269 0.274569 -0.493181 -v 0.816224 0.00239345 0.338641 -v 0.816224 0.00239348 -0.338641 -v 0.470651 0.698096 0.273474 -v 0.470651 0.698096 -0.273474 -v 0.458505 0.735476 0.200848 -v 0.458505 0.735476 -0.200848 -v 0.846037 -0.0386409 0.273474 -v 0.846037 -0.0386409 -0.273474 -v 0.450219 0.760977 0.122743 -v 0.450219 0.760977 -0.122743 -v 0.6 0.46235 0.472909 -v 0.6 0.46235 -0.472909 -v 0.648373 0.36658 0.493181 -v 0.648373 0.36658 -0.493181 -v 0.682297 0.3 0.493181 -v 0.682297 0.3 -0.493181 -v 0.446019 0.773904 0.0412897 -v 0.446019 0.773904 -0.0412897 -v 0.731344 0.204573 0.472909 -v 0.731344 0.204573 -0.472909 -v 0.869139 -0.070438 -0.200848 -v 0.869139 -0.0704381 0.200848 -v 0.8849 -0.0921306 0.122743 -v 0.8849 -0.0921306 -0.122743 -v 0.66658 0.348373 0.493181 -v 0.66658 0.348373 -0.493181 -v 0.678269 0.325431 0.493181 -v 0.678269 0.325431 -0.493181 -v 0.892889 -0.103127 0.0412897 -v 0.892889 -0.103127 -0.0412897 -v 0.6 0.537974 0.439737 -v 0.6 0.537974 -0.439737 -v 0.792525 0.160123 0.439737 -v 0.792525 0.160123 -0.439737 -v 0.650169 0.454404 0.472909 -v 0.650169 0.454404 -0.472909 -v 0.754404 0.249831 0.472909 -v 0.754404 0.249831 -0.472909 -v 0.6 0.607106 0.39457 -v 0.6 0.607106 -0.39457 -v 0.848454 0.119487 0.39457 -v 0.848454 0.119487 -0.39457 -v 0.695427 0.431344 0.472909 -v 0.695427 0.431344 -0.472909 -v 0.76235 0.3 0.472909 -v 0.76235 0.3 -0.472909 -v 0.731344 0.395427 0.472909 -v 0.731344 0.395427 -0.472909 -v 0.754404 0.350169 0.472909 -v 0.754404 0.350169 -0.472909 -v 0.6 0.667862 0.338641 -v 0.6 0.667862 -0.338641 -v 0.673538 0.526326 0.439737 -v 0.673538 0.526326 -0.439737 -v 0.897607 0.0837762 0.338641 -v 0.897607 0.0837762 -0.338641 -v 0.826326 0.226462 0.439737 -v 0.826326 0.226462 -0.439737 -v 0.6 0.718583 0.273474 -v 0.6 0.718583 -0.273474 -v 0.938641 0.053963 0.273474 -v 0.938641 0.053963 -0.273474 -v 0.6 0.757887 0.200848 -v 0.6 0.757887 -0.200848 -v 0.970438 0.030861 0.200848 -v 0.970438 0.030861 -0.200848 -v 0.739877 0.492525 0.439737 -v 0.739877 0.492525 -0.439737 -v 0.837974 0.3 0.439737 -v 0.837974 0.3 -0.439737 -v 0.694901 0.592075 -0.39457 -v 0.694901 0.592076 0.39457 -v 0.6 0.7847 0.122743 -v 0.6 0.7847 -0.122743 -v 0.892075 0.205099 -0.39457 -v 0.892076 0.205099 0.39457 -v 0.6 0.798292 0.0412897 -v 0.6 0.798292 -0.0412897 -v 0.992131 0.0151005 0.122743 -v 0.992131 0.0151005 -0.122743 -v 1.00313 0.00711123 0.0412897 -v 1.00313 0.00711123 -0.0412897 -v 0.792525 0.439877 0.439737 -v 0.792525 0.439877 -0.439737 -v 0.826326 0.373538 0.439737 -v 0.826326 0.373538 -0.439737 -v 0.713676 0.649858 0.338641 -v 0.713676 0.649858 -0.338641 -v 0.949858 0.186324 0.338641 -v 0.949858 0.186324 -0.338641 -v 0.780513 0.548454 0.39457 -v 0.780513 0.548454 -0.39457 -v 0.907106 0.3 0.39457 -v 0.907106 0.3 -0.39457 -v 0.729349 0.698096 0.273474 -v 0.729349 0.698096 -0.273474 -v 0.998096 0.170651 0.273474 -v 0.998096 0.170651 -0.273474 -v 0.848454 0.480513 0.39457 -v 0.848454 0.480513 -0.39457 -v 0.892075 0.394901 0.39457 -v 0.892075 0.394901 -0.39457 -v 0.741495 0.735476 0.200848 -v 0.741495 0.735476 -0.200848 -v 1.03548 0.158505 0.200848 -v 1.03548 0.158505 -0.200848 -v 0.816224 0.597607 0.338641 -v 0.816224 0.597607 -0.338641 -v 0.967862 0.3 0.338641 -v 0.967862 0.3 -0.338641 -v 0.749781 0.760977 0.122743 -v 0.749781 0.760977 -0.122743 -v 1.06098 0.15022 0.122743 -v 1.06098 0.15022 -0.122743 -v 0.753981 0.773904 0.0412897 -v 0.753981 0.773904 -0.0412897 -v 1.0739 0.146019 0.0412897 -v 1.0739 0.146019 -0.0412897 -v 0.897607 0.516224 0.338641 -v 0.897607 0.516224 -0.338641 -v 0.949857 0.413676 -0.338641 -v 0.949858 0.413676 0.338641 -v 0.846037 0.638641 0.273474 -v 0.846037 0.638641 -0.273474 -v 1.01858 0.3 0.273474 -v 1.01858 0.3 -0.273474 -v 0.869139 0.670438 0.200848 -v 0.869139 0.670438 -0.200848 -v 1.05789 0.3 0.200848 -v 1.05789 0.3 -0.200848 -v 0.938641 0.546037 0.273474 -v 0.938641 0.546037 -0.273474 -v 0.998096 0.429349 0.273474 -v 0.998096 0.429349 -0.273474 -v 0.8849 0.692131 0.122743 -v 0.8849 0.692131 -0.122743 -v 1.0847 0.3 0.122743 -v 1.0847 0.3 -0.122743 -v 0.892889 0.703127 0.0412897 -v 0.892889 0.703127 -0.0412897 -v 1.09829 0.3 0.0412897 -v 1.09829 0.3 -0.0412897 -v 0.970438 0.569139 0.200848 -v 0.970438 0.569139 -0.200848 -v 1.03548 0.441495 0.200848 -v 1.03548 0.441495 -0.200848 -v 0.992131 0.5849 0.122743 -v 0.992131 0.5849 -0.122743 -v 1.06098 0.449781 0.122743 -v 1.06098 0.449781 -0.122743 -v 1.00313 0.592889 0.0412897 -v 1.00313 0.592889 -0.0412897 -v 1.0739 0.453981 0.0412897 -v 1.0739 0.453981 -0.0412897 -v 0.302656 -0.098672 -4.04758e-11 -v 0.119055 0.190472 0 -v 0.302295 -0.098311 0.0103329 -v 0.301208 -0.097224 0.0206656 -v 0.299383 -0.095399 0.0309971 -v 0.11977 0.185961 0.0395272 -v 0.119235 0.18934 0.0199004 -v 0.15894 0.114107 -0.126728 -v 0.170235 0.0969156 -0.133393 -v 0.180792 0.0798019 -0.138221 -v 0.190576 0.0629269 -0.141336 -v 0.199568 0.0464194 -0.142864 -v 0.207764 0.0303797 -0.142925 -v 0.239765 -0.013601 -0.129405 -v 0.216833 0.0147995 -0.140808 -v 0.22907 8.3353e-11 -0.135465 -v 0.249054 -0.0260873 -0.122731 -v 0.258454 -0.0373211 -0.114862 -v 0.266658 -0.0474544 -0.106585 -v 0.273756 -0.0565611 -0.0979668 -v 0.279826 -0.0647075 -0.0890622 -v 0.284938 -0.0719522 -0.079911 -v 0.289149 -0.0783464 -0.0705434 -v 0.292507 -0.0839329 -0.0609809 -v 0.295049 -0.0887464 -0.0512377 -v 0.296806 -0.0928137 -0.0413232 -v 0.137914 0.146467 -0.106414 -v 0.148 0.130793 -0.117767 -v 0.123693 0.178944 -0.0581427 -v 0.128047 0.169898 -0.0756434 -v 0.132459 0.15915 -0.0918852 -v 0.119235 0.18934 -0.0199004 -v 0.11977 0.185961 -0.0395272 -v 0.299383 -0.095399 -0.0309971 -v 0.301208 -0.097224 -0.0206656 -v 0.302295 -0.098311 -0.0103329 -v 0.284938 -0.0719522 0.079911 -v 0.279826 -0.0647075 0.0890622 -v 0.273756 -0.0565611 0.0979668 -v 0.266657 -0.0474544 0.106585 -v 0.258454 -0.0373211 0.114862 -v 0.249054 -0.0260873 0.122731 -v 0.207764 0.0303797 0.142925 -v 0.199568 0.0464194 0.142864 -v 0.190576 0.0629269 0.141336 -v 0.180792 0.0798019 0.138221 -v 0.170235 0.0969156 0.133393 -v 0.15894 0.114107 0.126728 -v 0.239765 -0.013601 0.129405 -v 0.22907 -2.77844e-11 0.135465 -v 0.216833 0.0147995 0.140808 -v 0.296806 -0.0928137 0.0413232 -v 0.295049 -0.0887464 0.0512377 -v 0.292507 -0.0839329 0.0609809 -v 0.289149 -0.0783464 0.0705434 -v 0.148 0.130793 0.117767 -v 0.137914 0.146467 0.106414 -v 0.132459 0.15915 0.0918852 -v 0.128047 0.169898 0.0756434 -v 0.123693 0.178944 0.0581428 -v 0.275476 -0.0588694 -0.0954436 -v 0.249037 -0.0260675 -0.122743 -v 0.153399 0.122005 -0.122743 -v 0.213211 0.0189815 -0.141977 -v 0.136027 0.149246 -0.103866 -v 0.228378 0.000836743 -0.135767 -v 0.298434 -0.0944504 -0.0347901 -v 0.296809 -0.0928248 -0.0412897 -v 0.119851 0.185446 -0.0412897 -v 0.295059 -0.0887695 0.0511813 -v 0.296809 -0.0928248 0.0412897 -v 0.144975 0.135494 0.114362 -v 0.119851 0.185446 0.0412897 -v 0.123804 0.178715 0.0585855 -v 0.136027 0.149246 0.103866 -v 0.249037 -0.0260675 0.122743 -v 0.153399 0.122005 0.122743 -v 0.19695 0.0512265 0.142419 -v 0.213211 0.0189815 0.141977 -g patch0 -f 19 417 26 -f 417 452 26 -f 25 19 26 -f 25 26 41 -f 41 26 13 -f 13 26 33 -f 33 26 49 -f 49 26 57 -f 57 26 5 -f 5 26 4 -f 4 26 56 -f 56 26 48 -f 48 26 32 -f 32 26 12 -f 12 26 40 -f 40 26 24 -f 24 26 18 -f 18 26 23 -f 23 26 39 -f 39 26 11 -f 11 26 31 -f 31 26 47 -f 47 26 55 -f 55 26 3 -f 3 26 1 -f 1 26 53 -f 53 26 45 -f 45 26 30 -f 30 26 10 -f 10 26 38 -f 38 26 22 -f 22 26 17 -f 17 26 21 -f 21 26 37 -f 37 26 9 -f 9 26 29 -f 29 26 46 -f 46 26 54 -f 54 26 2 -f 2 26 8 -f 8 26 60 -f 60 26 52 -f 52 26 36 -f 36 26 16 -f 16 26 44 -f 44 26 28 -f 28 26 20 -f 20 26 27 -f 27 26 43 -f 43 26 15 -f 15 26 35 -f 35 26 51 -f 51 26 59 -f 59 26 7 -f 7 26 6 -f 6 26 58 -f 58 26 50 -f 50 26 34 -f 34 26 14 -f 14 26 42 -f 19 25 417 -f 25 419 417 -f 421 487 69 -f 421 69 420 -f 419 420 69 -f 417 419 69 -f 452 417 69 -f 70 452 69 -f 70 451 452 -f 483 450 70 -f 70 450 451 -f 26 452 42 -f 452 451 42 -f 42 451 14 -f 451 450 14 -f 14 450 34 -f 450 483 34 -f 484 442 34 -f 483 484 34 -f 34 442 50 -f 442 441 50 -f 50 441 58 -f 441 440 58 -f 58 440 6 -f 440 439 6 -f 6 439 7 -f 439 438 7 -f 59 7 438 -f 59 438 437 -f 51 59 437 -f 51 437 436 -f 436 437 477 -f 35 51 436 -f 35 436 435 -f 15 35 435 -f 15 435 434 -f 43 15 434 -f 43 434 433 -f 27 43 433 -f 27 478 430 -f 27 433 478 -f 20 27 430 -f 20 430 432 -f 28 20 432 -f 28 432 431 -f 431 432 482 -f 44 28 431 -f 44 480 429 -f 44 431 480 -f 16 44 429 -f 16 429 428 -f 36 16 428 -f 36 428 427 -f 52 36 427 -f 52 427 426 -f 60 52 426 -f 60 426 425 -f 8 60 425 -f 8 425 424 -f 2 8 424 -f 2 479 444 -f 2 424 479 -f 54 2 444 -f 54 444 443 -f 46 54 443 -f 46 481 447 -f 46 443 481 -f 29 46 447 -f 29 447 446 -f 9 29 446 -f 9 446 445 -f 37 9 445 -f 37 485 449 -f 37 445 485 -f 21 37 449 -f 21 449 448 -f 17 21 448 -f 17 448 418 -f 423 22 17 -f 423 17 418 -f 422 38 22 -f 422 22 423 -f 476 10 38 -f 476 38 489 -f 489 38 422 -f 475 30 10 -f 475 10 490 -f 490 10 476 -f 474 45 30 -f 474 30 475 -f 473 53 45 -f 473 45 491 -f 491 45 474 -f 472 1 53 -f 472 53 488 -f 488 53 473 -f 464 3 1 -f 464 1 493 -f 493 1 472 -f 55 3 463 -f 3 464 463 -f 47 55 462 -f 55 463 462 -f 31 47 461 -f 47 462 461 -f 11 31 460 -f 31 461 494 -f 31 494 460 -f 39 11 459 -f 11 460 459 -f 23 39 467 -f 39 459 495 -f 39 495 467 -f 18 23 466 -f 23 467 466 -f 24 18 465 -f 18 466 465 -f 40 24 458 -f 24 465 492 -f 24 492 458 -f 12 40 457 -f 40 458 457 -f 32 12 456 -f 12 457 456 -f 48 32 455 -f 32 456 455 -f 56 48 454 -f 48 455 454 -f 4 56 453 -f 56 454 453 -f 5 4 471 -f 4 453 471 -f 57 5 470 -f 5 471 470 -f 49 57 469 -f 57 470 469 -f 33 49 468 -f 49 469 486 -f 49 486 468 -f 13 33 421 -f 33 468 487 -f 33 487 421 -f 41 13 420 -f 13 421 420 -f 25 41 419 -f 41 420 419 -f 70 69 94 -f 69 93 94 -f 468 486 69 -f 468 69 487 -f 458 492 73 -f 458 73 457 -f 456 457 73 -f 455 456 73 -f 454 455 73 -f 453 454 73 -f 471 453 73 -f 470 471 73 -f 469 470 73 -f 486 469 73 -f 486 73 69 -f 69 73 93 -f 70 94 98 -f 70 98 74 -f 74 477 437 -f 74 437 70 -f 484 70 442 -f 442 70 441 -f 441 70 440 -f 440 70 439 -f 70 437 438 -f 70 438 439 -f 484 483 70 -f 74 478 433 -f 74 436 477 -f 74 435 436 -f 74 434 435 -f 74 433 434 -f 82 482 432 -f 82 432 74 -f 74 430 478 -f 74 432 430 -f 480 431 66 -f 431 482 82 -f 431 82 66 -f 66 62 479 -f 66 429 480 -f 66 428 429 -f 66 427 428 -f 66 426 427 -f 66 425 426 -f 66 424 425 -f 66 479 424 -f 62 481 443 -f 62 444 479 -f 62 443 444 -f 62 447 481 -f 62 446 447 -f 62 68 445 -f 445 68 485 -f 62 445 446 -f 485 68 67 -f 485 67 449 -f 449 67 448 -f 418 448 67 -f 423 418 67 -f 422 423 67 -f 489 422 67 -f 489 67 71 -f 489 71 476 -f 476 71 490 -f 490 71 61 -f 490 61 475 -f 475 61 474 -f 491 474 61 -f 473 491 61 -f 473 61 488 -f 472 61 493 -f 488 61 472 -f 493 61 63 -f 493 63 464 -f 464 63 463 -f 462 463 63 -f 461 462 63 -f 494 461 63 -f 494 63 65 -f 494 65 460 -f 460 65 459 -f 495 459 65 -f 467 495 65 -f 467 65 466 -f 465 466 65 -f 492 465 65 -f 492 65 73 -f 94 93 132 -f 93 131 132 -f 73 97 93 -f 93 97 131 -f 94 132 136 -f 94 136 98 -f 65 81 73 -f 73 81 97 -f 98 136 146 -f 98 146 106 -f 74 98 106 -f 74 106 82 -f 82 106 114 -f 82 114 86 -f 66 82 86 -f 66 86 78 -f 64 66 78 -f 62 66 64 -f 72 62 64 -f 68 62 72 -f 68 72 92 -f 67 68 92 -f 67 92 91 -f 67 91 95 -f 67 95 71 -f 71 95 103 -f 71 103 79 -f 71 79 61 -f 61 79 63 -f 79 83 63 -f 63 83 75 -f 63 75 65 -f 75 77 65 -f 65 77 81 -f 132 131 192 -f 131 191 192 -f 97 135 131 -f 131 135 191 -f 132 192 200 -f 132 200 136 -f 81 105 97 -f 97 105 135 -f 136 200 204 -f 136 204 146 -f 77 85 81 -f 81 85 105 -f 146 204 206 -f 146 206 150 -f 106 146 150 -f 106 150 114 -f 114 150 157 -f 114 157 122 -f 86 114 122 -f 86 122 102 -f 78 86 102 -f 78 102 90 -f 76 78 90 -f 64 78 76 -f 80 64 76 -f 72 64 80 -f 72 80 96 -f 72 96 92 -f 92 96 128 -f 91 92 128 -f 91 128 127 -f 91 127 129 -f 91 129 95 -f 95 129 143 -f 95 143 103 -f 103 143 147 -f 103 147 111 -f 79 103 111 -f 79 111 83 -f 83 111 119 -f 83 119 99 -f 83 99 75 -f 75 99 87 -f 75 87 77 -f 87 89 77 -f 77 89 85 -f 192 191 292 -f 191 291 292 -f 135 199 191 -f 199 291 191 -f 192 292 286 -f 200 192 286 -f 105 145 135 -f 135 145 199 -f 200 286 283 -f 204 200 283 -f 85 113 105 -f 105 113 145 -f 204 283 270 -f 206 204 270 -f 89 101 85 -f 85 101 113 -f 206 270 264 -f 214 206 264 -f 150 206 214 -f 150 214 157 -f 157 214 218 -f 157 218 169 -f 122 157 169 -f 122 169 138 -f 102 122 138 -f 102 138 118 -f 90 102 118 -f 90 118 110 -f 88 90 110 -f 76 90 88 -f 84 76 88 -f 80 76 84 -f 80 84 104 -f 96 80 104 -f 96 104 130 -f 96 130 128 -f 128 130 180 -f 127 128 180 -f 127 180 179 -f 127 179 185 -f 127 185 129 -f 129 185 187 -f 129 187 143 -f 147 143 187 -f 147 187 201 -f 147 201 153 -f 201 207 153 -f 111 147 153 -f 111 153 119 -f 119 153 167 -f 119 167 133 -f 99 119 133 -f 99 133 115 -f 99 115 87 -f 87 115 107 -f 87 107 89 -f 89 107 109 -f 89 109 101 -f 292 291 344 -f 291 343 344 -f 199 285 291 -f 285 343 291 -f 292 344 342 -f 286 292 342 -f 145 203 199 -f 203 285 199 -f 286 342 328 -f 283 286 328 -f 113 149 145 -f 145 149 203 -f 283 328 324 -f 270 283 324 -f 101 121 113 -f 113 121 149 -f 270 324 318 -f 264 270 318 -f 109 117 101 -f 101 117 121 -f 264 318 304 -f 256 264 304 -f 214 264 256 -f 218 214 256 -f 218 256 252 -f 226 218 252 -f 169 218 226 -f 169 226 178 -f 138 169 178 -f 138 178 156 -f 118 138 156 -f 118 156 142 -f 110 118 142 -f 110 142 126 -f 108 110 126 -f 88 110 108 -f 100 88 108 -f 84 88 100 -f 84 100 112 -f 104 84 112 -f 104 112 144 -f 104 144 130 -f 130 144 186 -f 130 186 180 -f 180 186 280 -f 179 180 280 -f 179 280 279 -f 179 279 271 -f 179 271 185 -f 185 271 267 -f 185 267 187 -f 187 267 265 -f 187 265 201 -f 201 265 258 -f 201 258 207 -f 207 258 254 -f 207 254 215 -f 153 207 167 -f 207 215 167 -f 167 215 219 -f 167 219 175 -f 133 167 175 -f 133 175 151 -f 115 133 151 -f 115 151 139 -f 115 139 107 -f 107 139 123 -f 107 123 109 -f 109 123 125 -f 109 125 117 -f 344 343 380 -f 343 379 380 -f 285 341 343 -f 341 379 343 -f 344 380 376 -f 342 344 376 -f 203 284 285 -f 284 341 285 -f 342 376 368 -f 328 342 368 -f 149 205 203 -f 205 284 203 -f 328 368 360 -f 324 328 360 -f 121 158 149 -f 149 158 205 -f 324 360 352 -f 318 324 352 -f 117 137 121 -f 121 137 158 -f 337 318 352 -f 304 318 337 -f 125 141 117 -f 117 141 137 -f 320 304 337 -f 296 304 320 -f 256 304 296 -f 252 256 296 -f 282 252 296 -f 244 252 282 -f 226 252 244 -f 230 226 244 -f 178 226 230 -f 178 230 198 -f 156 178 198 -f 156 198 174 -f 142 156 174 -f 142 174 166 -f 126 142 166 -f 126 166 162 -f 124 126 162 -f 108 126 124 -f 116 108 124 -f 100 108 116 -f 100 116 120 -f 112 100 120 -f 112 120 148 -f 112 148 144 -f 188 144 148 -f 188 148 202 -f 144 188 186 -f 186 188 272 -f 186 272 280 -f 280 272 340 -f 279 280 340 -f 279 340 339 -f 279 339 335 -f 279 335 271 -f 271 335 325 -f 271 325 267 -f 267 325 321 -f 267 321 265 -f 265 321 313 -f 265 313 258 -f 258 313 301 -f 258 301 254 -f 254 301 293 -f 254 293 245 -f 215 254 245 -f 215 245 219 -f 219 245 241 -f 219 241 227 -f 175 219 227 -f 175 227 189 -f 151 175 189 -f 151 189 171 -f 139 151 171 -f 139 171 163 -f 139 163 123 -f 123 163 159 -f 123 159 125 -f 125 159 161 -f 125 161 141 -f 380 379 404 -f 379 403 404 -f 341 375 379 -f 375 403 379 -f 380 404 400 -f 376 380 400 -f 284 327 341 -f 327 375 341 -f 392 376 400 -f 368 376 392 -f 205 269 284 -f 269 327 284 -f 388 368 392 -f 360 368 388 -f 158 213 205 -f 213 269 205 -f 372 360 388 -f 352 360 372 -f 137 170 158 -f 158 170 213 -f 356 352 372 -f 337 352 356 -f 141 155 137 -f 137 155 170 -f 332 337 356 -f 320 337 332 -f 141 161 165 -f 141 165 155 -f 308 320 332 -f 300 320 308 -f 300 296 320 -f 282 296 300 -f 262 282 300 -f 250 282 262 -f 250 244 282 -f 240 244 250 -f 240 230 244 -f 234 230 240 -f 198 230 234 -f 198 234 224 -f 174 198 224 -f 174 224 212 -f 166 174 212 -f 166 212 196 -f 162 166 196 -f 162 196 184 -f 160 162 184 -f 124 162 160 -f 140 124 160 -f 116 124 140 -f 116 140 134 -f 120 116 134 -f 120 134 154 -f 120 154 148 -f 202 148 154 -f 202 154 208 -f 202 208 266 -f 202 266 268 -f 188 202 268 -f 188 268 272 -f 272 268 336 -f 272 336 340 -f 336 378 340 -f 339 340 378 -f 339 378 377 -f 339 377 373 -f 335 339 373 -f 335 373 365 -f 325 335 365 -f 325 365 357 -f 321 325 357 -f 321 357 349 -f 313 321 349 -f 313 349 334 -f 301 313 334 -f 301 334 315 -f 293 301 315 -f 293 315 297 -f 273 293 297 -f 245 293 273 -f 245 273 241 -f 241 273 247 -f 241 247 237 -f 227 241 237 -f 227 237 231 -f 189 227 231 -f 189 231 221 -f 171 189 221 -f 171 221 209 -f 163 171 209 -f 163 209 193 -f 163 193 159 -f 159 193 181 -f 159 181 161 -f 161 181 183 -f 161 183 165 -f 375 399 403 -f 415 403 399 -f 416 404 415 -f 404 403 415 -f 412 404 416 -f 412 400 404 -f 327 367 375 -f 367 399 375 -f 408 400 412 -f 408 392 400 -f 269 323 327 -f 323 367 327 -f 396 392 408 -f 396 388 392 -f 213 263 269 -f 263 323 269 -f 383 388 396 -f 383 372 388 -f 170 217 213 -f 217 263 213 -f 364 372 383 -f 364 356 372 -f 155 177 170 -f 170 177 217 -f 348 356 364 -f 348 332 356 -f 165 173 155 -f 155 173 177 -f 312 332 348 -f 312 308 332 -f 165 183 195 -f 165 195 173 -f 278 300 308 -f 290 308 312 -f 290 278 308 -f 262 300 278 -f 236 262 278 -f 236 250 262 -f 236 240 250 -f 236 234 240 -f 224 234 236 -f 212 224 236 -f 196 212 236 -f 184 196 236 -f 182 184 236 -f 160 184 182 -f 164 160 182 -f 140 160 164 -f 140 164 152 -f 134 140 152 -f 134 152 168 -f 154 134 168 -f 208 154 168 -f 208 168 216 -f 208 216 257 -f 208 257 266 -f 266 257 322 -f 266 322 326 -f 268 266 326 -f 268 326 336 -f 326 374 336 -f 336 374 378 -f 374 402 378 -f 377 378 402 -f 377 402 401 -f 377 401 397 -f 373 377 397 -f 373 397 389 -f 365 373 389 -f 365 389 385 -f 357 365 385 -f 357 385 369 -f 349 357 369 -f 349 369 353 -f 334 349 353 -f 334 353 329 -f 315 334 329 -f 315 329 305 -f 297 315 305 -f 275 297 305 -f 259 297 275 -f 273 297 259 -f 247 273 259 -f 235 247 259 -f 237 247 235 -f 231 237 235 -f 221 231 235 -f 209 221 235 -f 193 209 235 -f 193 235 181 -f 181 235 183 -f 183 235 195 -f 367 391 399 -f 391 411 399 -f 411 415 399 -f 414 416 413 -f 416 415 413 -f 413 415 411 -f 410 416 414 -f 410 412 416 -f 406 412 410 -f 406 408 412 -f 323 359 367 -f 359 391 367 -f 394 408 406 -f 394 396 408 -f 263 317 323 -f 317 359 323 -f 382 396 394 -f 382 383 396 -f 217 255 263 -f 255 317 263 -f 362 383 382 -f 362 364 383 -f 177 225 217 -f 225 255 217 -f 346 364 362 -f 346 348 364 -f 173 197 177 -f 177 197 225 -f 310 348 346 -f 310 312 348 -f 173 195 211 -f 173 211 197 -f 288 312 310 -f 288 290 312 -f 195 235 211 -f 236 278 290 -f 236 290 288 -f 236 288 276 -f 236 276 260 -f 236 260 248 -f 238 236 248 -f 232 236 238 -f 222 236 232 -f 210 236 222 -f 194 236 210 -f 194 182 236 -f 164 182 194 -f 164 194 172 -f 152 164 172 -f 152 172 176 -f 168 152 176 -f 168 176 216 -f 176 220 216 -f 216 220 253 -f 216 253 257 -f 257 253 314 -f 257 314 322 -f 314 358 322 -f 322 358 366 -f 322 366 326 -f 326 366 374 -f 366 398 374 -f 374 398 402 -f 398 414 402 -f 401 402 414 -f 401 414 413 -f 401 413 409 -f 397 401 409 -f 397 409 405 -f 389 397 405 -f 389 405 393 -f 385 389 393 -f 385 393 381 -f 369 385 381 -f 369 381 361 -f 353 369 361 -f 353 361 345 -f 329 353 345 -f 309 329 345 -f 305 329 309 -f 287 305 309 -f 275 305 287 -f 235 275 287 -f 235 259 275 -f 235 277 261 -f 235 261 249 -f 235 249 239 -f 235 239 233 -f 223 235 233 -f 211 235 223 -f 235 287 289 -f 235 289 277 -f 359 387 391 -f 387 407 391 -f 407 411 391 -f 409 413 411 -f 409 411 407 -f 398 410 414 -f 390 410 398 -f 390 406 410 -f 386 406 390 -f 386 394 406 -f 317 351 359 -f 351 387 359 -f 370 394 386 -f 370 382 394 -f 255 303 317 -f 303 351 317 -f 354 382 370 -f 354 362 382 -f 225 251 255 -f 251 303 255 -f 330 362 354 -f 330 346 362 -f 197 229 225 -f 229 251 225 -f 306 346 330 -f 306 310 346 -f 211 223 197 -f 197 223 229 -f 276 310 306 -f 276 288 310 -f 260 276 306 -f 248 260 298 -f 260 306 298 -f 238 248 274 -f 248 298 274 -f 242 232 238 -f 242 238 274 -f 228 222 232 -f 228 232 242 -f 190 210 222 -f 190 222 228 -f 172 194 210 -f 172 210 190 -f 176 172 190 -f 176 190 220 -f 220 190 228 -f 220 228 246 -f 220 246 253 -f 253 246 302 -f 253 302 314 -f 302 350 314 -f 314 350 358 -f 350 386 358 -f 358 386 390 -f 358 390 366 -f 366 390 398 -f 405 409 407 -f 405 407 395 -f 393 405 395 -f 393 395 384 -f 381 393 384 -f 363 381 384 -f 361 381 363 -f 347 361 363 -f 345 361 347 -f 311 345 347 -f 309 345 311 -f 289 309 311 -f 287 309 289 -f 261 277 307 -f 289 311 277 -f 277 311 307 -f 261 307 299 -f 249 261 299 -f 249 299 281 -f 239 249 281 -f 239 281 243 -f 233 239 243 -f 233 243 229 -f 223 233 229 -f 351 371 387 -f 371 395 387 -f 395 407 387 -f 350 370 386 -f 303 338 351 -f 338 371 351 -f 333 370 350 -f 333 354 370 -f 251 295 303 -f 295 338 303 -f 316 354 333 -f 316 330 354 -f 229 243 251 -f 243 295 251 -f 298 330 316 -f 298 306 330 -f 274 298 316 -f 274 316 294 -f 242 274 294 -f 246 242 294 -f 228 242 246 -f 246 294 302 -f 294 333 302 -f 302 333 350 -f 384 395 371 -f 355 384 371 -f 363 384 355 -f 331 363 355 -f 347 363 331 -f 307 347 331 -f 311 347 307 -f 299 307 331 -f 299 331 319 -f 281 299 319 -f 281 319 295 -f 243 281 295 -f 338 355 371 -f 295 319 338 -f 319 355 338 -f 294 316 333 -f 319 331 355 diff --git a/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/domain.stl b/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/domain.stl deleted file mode 100644 index 5650ed200133c64ccaf37ccf55701500b6acfbac..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/domain.stl +++ /dev/null @@ -1,86 +0,0 @@ -solid ascii - facet normal -1 0 0 - outer loop - vertex -0.7 -0.9 -1 - vertex -0.7 -0.9 1 - vertex -0.7 1.1 -1 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -0.7 1.1 1 - vertex -0.7 1.1 -1 - vertex -0.7 -0.9 1 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 1.3 -0.9 -1 - vertex 1.3 1.1 -1 - vertex 1.3 -0.9 1 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 1.3 1.1 1 - vertex 1.3 -0.9 1 - vertex 1.3 1.1 -1 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex -0.7 -0.9 -1 - vertex 1.3 -0.9 -1 - vertex -0.7 -0.9 1 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 1.3 -0.9 1 - vertex -0.7 -0.9 1 - vertex 1.3 -0.9 -1 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex -0.7 1.1 -1 - vertex -0.7 1.1 1 - vertex 1.3 1.1 -1 - endloop - endfacet - facet normal 0 1 -0 - outer loop - vertex 1.3 1.1 1 - vertex 1.3 1.1 -1 - vertex -0.7 1.1 1 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.7 -0.9 -1 - vertex -0.7 1.1 -1 - vertex 1.3 -0.9 -1 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.3 1.1 -1 - vertex 1.3 -0.9 -1 - vertex -0.7 1.1 -1 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.7 -0.9 1 - vertex 1.3 -0.9 1 - vertex -0.7 1.1 1 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.3 1.1 1 - vertex -0.7 1.1 1 - vertex 1.3 -0.9 1 - endloop - endfacet -endsolid diff --git a/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/sphere.stl b/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/sphere.stl deleted file mode 100644 index f054ffb23807b393279709c553e34fa393031aa6..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/constant/triSurface/sphere.stl +++ /dev/null @@ -1,5042 +0,0 @@ -solid ascii - facet normal 0.0825722 0.0130781 0.996499 - outer loop - vertex 0.682297 0.3 0.493181 - vertex 0.678269 0.325431 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0744894 0.0379543 0.996499 - outer loop - vertex 0.678269 0.325431 0.493181 - vertex 0.66658 0.348373 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0591152 0.0591152 0.996499 - outer loop - vertex 0.66658 0.348373 0.493181 - vertex 0.648373 0.36658 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0379542 0.0744895 0.996499 - outer loop - vertex 0.648373 0.36658 0.493181 - vertex 0.625431 0.378269 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0130782 0.0825722 0.996499 - outer loop - vertex 0.625431 0.378269 0.493181 - vertex 0.6 0.382297 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0130782 0.0825722 0.996499 - outer loop - vertex 0.6 0.382297 0.493181 - vertex 0.574569 0.378269 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0379542 0.0744894 0.996499 - outer loop - vertex 0.574569 0.378269 0.493181 - vertex 0.551627 0.36658 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0591151 0.0591151 0.996499 - outer loop - vertex 0.551627 0.36658 0.493181 - vertex 0.53342 0.348373 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0744894 0.0379543 0.996499 - outer loop - vertex 0.53342 0.348373 0.493181 - vertex 0.521731 0.325431 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0825721 0.0130781 0.996499 - outer loop - vertex 0.521731 0.325431 0.493181 - vertex 0.517703 0.3 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0825721 -0.0130781 0.996499 - outer loop - vertex 0.517703 0.3 0.493181 - vertex 0.521731 0.274569 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0744894 -0.0379543 0.996499 - outer loop - vertex 0.521731 0.274569 0.493181 - vertex 0.53342 0.251627 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0591151 -0.0591151 0.996499 - outer loop - vertex 0.53342 0.251627 0.493181 - vertex 0.551627 0.23342 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0379542 -0.0744894 0.996499 - outer loop - vertex 0.551627 0.23342 0.493181 - vertex 0.574569 0.221731 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal -0.0130781 -0.0825721 0.996499 - outer loop - vertex 0.574569 0.221731 0.493181 - vertex 0.6 0.217703 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0130781 -0.0825721 0.996499 - outer loop - vertex 0.6 0.217703 0.493181 - vertex 0.625431 0.221731 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0379543 -0.0744894 0.996499 - outer loop - vertex 0.625431 0.221731 0.493181 - vertex 0.648373 0.23342 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0591152 -0.0591151 0.996499 - outer loop - vertex 0.648373 0.23342 0.493181 - vertex 0.66658 0.251627 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0744894 -0.0379543 0.996499 - outer loop - vertex 0.66658 0.251627 0.493181 - vertex 0.678269 0.274569 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0825722 -0.0130781 0.996499 - outer loop - vertex 0.678269 0.274569 0.493181 - vertex 0.682297 0.3 0.493181 - vertex 0.6 0.3 0.5 - endloop - endfacet - facet normal 0.0825722 0.0130781 -0.996499 - outer loop - vertex 0.682297 0.3 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.678269 0.325431 -0.493181 - endloop - endfacet - facet normal 0.0744895 0.0379542 -0.996499 - outer loop - vertex 0.678269 0.325431 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.66658 0.348373 -0.493181 - endloop - endfacet - facet normal 0.0591152 0.0591152 -0.996499 - outer loop - vertex 0.66658 0.348373 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.648373 0.36658 -0.493181 - endloop - endfacet - facet normal 0.0379542 0.0744895 -0.996499 - outer loop - vertex 0.648373 0.36658 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.625431 0.378269 -0.493181 - endloop - endfacet - facet normal 0.0130781 0.0825722 -0.996499 - outer loop - vertex 0.625431 0.378269 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.6 0.382297 -0.493181 - endloop - endfacet - facet normal -0.0130781 0.0825722 -0.996499 - outer loop - vertex 0.6 0.382297 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.574569 0.378269 -0.493181 - endloop - endfacet - facet normal -0.0379543 0.0744894 -0.996499 - outer loop - vertex 0.574569 0.378269 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.551627 0.36658 -0.493181 - endloop - endfacet - facet normal -0.0591152 0.0591151 -0.996499 - outer loop - vertex 0.551627 0.36658 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.53342 0.348373 -0.493181 - endloop - endfacet - facet normal -0.0744894 0.0379543 -0.996499 - outer loop - vertex 0.53342 0.348373 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.521731 0.325431 -0.493181 - endloop - endfacet - facet normal -0.0825722 0.0130781 -0.996499 - outer loop - vertex 0.521731 0.325431 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.517703 0.3 -0.493181 - endloop - endfacet - facet normal -0.0825722 -0.0130781 -0.996499 - outer loop - vertex 0.517703 0.3 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.521731 0.274569 -0.493181 - endloop - endfacet - facet normal -0.0744894 -0.0379543 -0.996499 - outer loop - vertex 0.521731 0.274569 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.53342 0.251627 -0.493181 - endloop - endfacet - facet normal -0.0591151 -0.0591152 -0.996499 - outer loop - vertex 0.53342 0.251627 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.551627 0.23342 -0.493181 - endloop - endfacet - facet normal -0.0379543 -0.0744894 -0.996499 - outer loop - vertex 0.551627 0.23342 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.574569 0.221731 -0.493181 - endloop - endfacet - facet normal -0.0130781 -0.0825722 -0.996499 - outer loop - vertex 0.574569 0.221731 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.6 0.217703 -0.493181 - endloop - endfacet - facet normal 0.0130782 -0.0825722 -0.996499 - outer loop - vertex 0.6 0.217703 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.625431 0.221731 -0.493181 - endloop - endfacet - facet normal 0.0379543 -0.0744895 -0.996499 - outer loop - vertex 0.625431 0.221731 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.648373 0.23342 -0.493181 - endloop - endfacet - facet normal 0.0591152 -0.0591152 -0.996499 - outer loop - vertex 0.648373 0.23342 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.66658 0.251627 -0.493181 - endloop - endfacet - facet normal 0.0744895 -0.0379542 -0.996499 - outer loop - vertex 0.66658 0.251627 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.678269 0.274569 -0.493181 - endloop - endfacet - facet normal 0.0825722 -0.0130781 -0.996499 - outer loop - vertex 0.678269 0.274569 -0.493181 - vertex 0.6 0.3 -0.5 - vertex 0.682297 0.3 -0.493181 - endloop - endfacet - facet normal 0.2453 0.0388517 0.968668 - outer loop - vertex 0.682297 0.3 0.493181 - vertex 0.76235 0.3 0.472909 - vertex 0.754404 0.350169 0.472909 - endloop - endfacet - facet normal 0.2453 0.0388517 0.968668 - outer loop - vertex 0.682297 0.3 0.493181 - vertex 0.754404 0.350169 0.472909 - vertex 0.678269 0.325431 0.493181 - endloop - endfacet - facet normal 0.400885 0.063494 0.913926 - outer loop - vertex 0.76235 0.3 0.472909 - vertex 0.837974 0.3 0.439737 - vertex 0.826326 0.373538 0.439737 - endloop - endfacet - facet normal 0.400885 0.0634939 0.913926 - outer loop - vertex 0.76235 0.3 0.472909 - vertex 0.826326 0.373538 0.439737 - vertex 0.754404 0.350169 0.472909 - endloop - endfacet - facet normal 0.544907 0.0863049 0.834043 - outer loop - vertex 0.837974 0.3 0.439737 - vertex 0.907106 0.3 0.39457 - vertex 0.892075 0.394901 0.39457 - endloop - endfacet - facet normal 0.544907 0.086305 0.834043 - outer loop - vertex 0.837974 0.3 0.439737 - vertex 0.892075 0.394901 0.39457 - vertex 0.826326 0.373538 0.439737 - endloop - endfacet - facet normal 0.673418 0.106659 0.731527 - outer loop - vertex 0.907106 0.3 0.39457 - vertex 0.967862 0.3 0.338641 - vertex 0.949858 0.413676 0.338641 - endloop - endfacet - facet normal 0.673418 0.106659 0.731527 - outer loop - vertex 0.907106 0.3 0.39457 - vertex 0.949858 0.413676 0.338641 - vertex 0.892075 0.394901 0.39457 - endloop - endfacet - facet normal 0.783048 0.124023 0.609471 - outer loop - vertex 0.967862 0.3 0.338641 - vertex 1.01858 0.3 0.273474 - vertex 0.998096 0.429349 0.273474 - endloop - endfacet - facet normal 0.783048 0.124022 0.609471 - outer loop - vertex 0.967862 0.3 0.338641 - vertex 0.998096 0.429349 0.273474 - vertex 0.949858 0.413676 0.338641 - endloop - endfacet - facet normal 0.871064 0.137963 0.471396 - outer loop - vertex 1.01858 0.3 0.273474 - vertex 1.05789 0.3 0.200848 - vertex 1.03548 0.441495 0.200848 - endloop - endfacet - facet normal 0.871064 0.137963 0.471396 - outer loop - vertex 1.01858 0.3 0.273474 - vertex 1.03548 0.441495 0.200848 - vertex 0.998096 0.429349 0.273474 - endloop - endfacet - facet normal 0.93538 0.14815 0.321116 - outer loop - vertex 1.05789 0.3 0.200848 - vertex 1.0847 0.3 0.122743 - vertex 1.06098 0.449781 0.122743 - endloop - endfacet - facet normal 0.93538 0.14815 0.321116 - outer loop - vertex 1.05789 0.3 0.200848 - vertex 1.06098 0.449781 0.122743 - vertex 1.03548 0.441495 0.200848 - endloop - endfacet - facet normal 0.974541 0.154352 0.162622 - outer loop - vertex 1.0847 0.3 0.122743 - vertex 1.09829 0.3 0.0412897 - vertex 1.0739 0.453981 0.0412897 - endloop - endfacet - facet normal 0.974541 0.154352 0.162621 - outer loop - vertex 1.0847 0.3 0.122743 - vertex 1.0739 0.453981 0.0412897 - vertex 1.06098 0.449781 0.122743 - endloop - endfacet - facet normal 0.987688 0.156435 -0 - outer loop - vertex 1.09829 0.3 0.0412897 - vertex 1.09829 0.3 -0.0412897 - vertex 1.0739 0.453981 -0.0412897 - endloop - endfacet - facet normal 0.987688 0.156435 -0 - outer loop - vertex 1.09829 0.3 0.0412897 - vertex 1.0739 0.453981 -0.0412897 - vertex 1.0739 0.453981 0.0412897 - endloop - endfacet - facet normal 0.974541 0.154352 -0.162622 - outer loop - vertex 1.09829 0.3 -0.0412897 - vertex 1.0847 0.3 -0.122743 - vertex 1.06098 0.449781 -0.122743 - endloop - endfacet - facet normal 0.974541 0.154352 -0.162621 - outer loop - vertex 1.09829 0.3 -0.0412897 - vertex 1.06098 0.449781 -0.122743 - vertex 1.0739 0.453981 -0.0412897 - endloop - endfacet - facet normal 0.93538 0.148149 -0.321117 - outer loop - vertex 1.0847 0.3 -0.122743 - vertex 1.05789 0.3 -0.200848 - vertex 1.03548 0.441495 -0.200848 - endloop - endfacet - facet normal 0.93538 0.14815 -0.321116 - outer loop - vertex 1.0847 0.3 -0.122743 - vertex 1.03548 0.441495 -0.200848 - vertex 1.06098 0.449781 -0.122743 - endloop - endfacet - facet normal 0.871064 0.137963 -0.471396 - outer loop - vertex 1.05789 0.3 -0.200848 - vertex 1.01858 0.3 -0.273474 - vertex 0.998096 0.429349 -0.273474 - endloop - endfacet - facet normal 0.871064 0.137963 -0.471396 - outer loop - vertex 1.05789 0.3 -0.200848 - vertex 0.998096 0.429349 -0.273474 - vertex 1.03548 0.441495 -0.200848 - endloop - endfacet - facet normal 0.783048 0.124023 -0.60947 - outer loop - vertex 1.01858 0.3 -0.273474 - vertex 0.967862 0.3 -0.338641 - vertex 0.949857 0.413676 -0.338641 - endloop - endfacet - facet normal 0.783048 0.124022 -0.609471 - outer loop - vertex 1.01858 0.3 -0.273474 - vertex 0.949857 0.413676 -0.338641 - vertex 0.998096 0.429349 -0.273474 - endloop - endfacet - facet normal 0.673418 0.106659 -0.731527 - outer loop - vertex 0.967862 0.3 -0.338641 - vertex 0.907106 0.3 -0.39457 - vertex 0.892075 0.394901 -0.39457 - endloop - endfacet - facet normal 0.673418 0.106659 -0.731527 - outer loop - vertex 0.967862 0.3 -0.338641 - vertex 0.892075 0.394901 -0.39457 - vertex 0.949857 0.413676 -0.338641 - endloop - endfacet - facet normal 0.544907 0.0863046 -0.834043 - outer loop - vertex 0.907106 0.3 -0.39457 - vertex 0.837974 0.3 -0.439737 - vertex 0.826326 0.373538 -0.439737 - endloop - endfacet - facet normal 0.544908 0.0863049 -0.834043 - outer loop - vertex 0.907106 0.3 -0.39457 - vertex 0.826326 0.373538 -0.439737 - vertex 0.892075 0.394901 -0.39457 - endloop - endfacet - facet normal 0.400885 0.0634944 -0.913925 - outer loop - vertex 0.837974 0.3 -0.439737 - vertex 0.76235 0.3 -0.472909 - vertex 0.754404 0.350169 -0.472909 - endloop - endfacet - facet normal 0.400885 0.0634937 -0.913926 - outer loop - vertex 0.837974 0.3 -0.439737 - vertex 0.754404 0.350169 -0.472909 - vertex 0.826326 0.373538 -0.439737 - endloop - endfacet - facet normal 0.2453 0.0388516 -0.968668 - outer loop - vertex 0.76235 0.3 -0.472909 - vertex 0.682297 0.3 -0.493181 - vertex 0.678269 0.325431 -0.493181 - endloop - endfacet - facet normal 0.2453 0.038852 -0.968668 - outer loop - vertex 0.76235 0.3 -0.472909 - vertex 0.678269 0.325431 -0.493181 - vertex 0.754404 0.350169 -0.472909 - endloop - endfacet - facet normal 0.221289 0.112752 0.968668 - outer loop - vertex 0.678269 0.325431 0.493181 - vertex 0.754404 0.350169 0.472909 - vertex 0.731344 0.395427 0.472909 - endloop - endfacet - facet normal 0.221289 0.112752 0.968668 - outer loop - vertex 0.678269 0.325431 0.493181 - vertex 0.731344 0.395427 0.472909 - vertex 0.66658 0.348373 0.493181 - endloop - endfacet - facet normal 0.361643 0.184267 0.913926 - outer loop - vertex 0.754404 0.350169 0.472909 - vertex 0.826326 0.373538 0.439737 - vertex 0.792525 0.439877 0.439737 - endloop - endfacet - facet normal 0.361643 0.184267 0.913926 - outer loop - vertex 0.754404 0.350169 0.472909 - vertex 0.792525 0.439877 0.439737 - vertex 0.731344 0.395427 0.472909 - endloop - endfacet - facet normal 0.491568 0.250466 0.834043 - outer loop - vertex 0.826326 0.373538 0.439737 - vertex 0.892075 0.394901 0.39457 - vertex 0.848454 0.480513 0.39457 - endloop - endfacet - facet normal 0.491568 0.250466 0.834043 - outer loop - vertex 0.826326 0.373538 0.439737 - vertex 0.848454 0.480513 0.39457 - vertex 0.792525 0.439877 0.439737 - endloop - endfacet - facet normal 0.607499 0.309536 0.731527 - outer loop - vertex 0.892075 0.394901 0.39457 - vertex 0.949858 0.413676 0.338641 - vertex 0.897607 0.516224 0.338641 - endloop - endfacet - facet normal 0.607499 0.309536 0.731527 - outer loop - vertex 0.892075 0.394901 0.39457 - vertex 0.897607 0.516224 0.338641 - vertex 0.848454 0.480513 0.39457 - endloop - endfacet - facet normal 0.706398 0.359928 0.609471 - outer loop - vertex 0.949858 0.413676 0.338641 - vertex 0.998096 0.429349 0.273474 - vertex 0.938641 0.546037 0.273474 - endloop - endfacet - facet normal 0.706397 0.359928 0.609471 - outer loop - vertex 0.949858 0.413676 0.338641 - vertex 0.938641 0.546037 0.273474 - vertex 0.897607 0.516224 0.338641 - endloop - endfacet - facet normal 0.785798 0.400384 0.471396 - outer loop - vertex 0.998096 0.429349 0.273474 - vertex 1.03548 0.441495 0.200848 - vertex 0.970438 0.569139 0.200848 - endloop - endfacet - facet normal 0.785798 0.400384 0.471396 - outer loop - vertex 0.998096 0.429349 0.273474 - vertex 0.970438 0.569139 0.200848 - vertex 0.938641 0.546037 0.273474 - endloop - endfacet - facet normal 0.843819 0.429947 0.321116 - outer loop - vertex 1.03548 0.441495 0.200848 - vertex 1.06098 0.449781 0.122743 - vertex 0.992131 0.5849 0.122743 - endloop - endfacet - facet normal 0.843819 0.429947 0.321116 - outer loop - vertex 1.03548 0.441495 0.200848 - vertex 0.992131 0.5849 0.122743 - vertex 0.970438 0.569139 0.200848 - endloop - endfacet - facet normal 0.879146 0.447947 0.162622 - outer loop - vertex 1.06098 0.449781 0.122743 - vertex 1.0739 0.453981 0.0412897 - vertex 1.00313 0.592889 0.0412897 - endloop - endfacet - facet normal 0.879146 0.447947 0.162622 - outer loop - vertex 1.06098 0.449781 0.122743 - vertex 1.00313 0.592889 0.0412897 - vertex 0.992131 0.5849 0.122743 - endloop - endfacet - facet normal 0.891007 0.45399 -0 - outer loop - vertex 1.0739 0.453981 0.0412897 - vertex 1.0739 0.453981 -0.0412897 - vertex 1.00313 0.592889 -0.0412897 - endloop - endfacet - facet normal 0.891007 0.45399 -0 - outer loop - vertex 1.0739 0.453981 0.0412897 - vertex 1.00313 0.592889 -0.0412897 - vertex 1.00313 0.592889 0.0412897 - endloop - endfacet - facet normal 0.879146 0.447947 -0.162622 - outer loop - vertex 1.0739 0.453981 -0.0412897 - vertex 1.06098 0.449781 -0.122743 - vertex 0.992131 0.5849 -0.122743 - endloop - endfacet - facet normal 0.879146 0.447947 -0.162622 - outer loop - vertex 1.0739 0.453981 -0.0412897 - vertex 0.992131 0.5849 -0.122743 - vertex 1.00313 0.592889 -0.0412897 - endloop - endfacet - facet normal 0.843818 0.429947 -0.321116 - outer loop - vertex 1.06098 0.449781 -0.122743 - vertex 1.03548 0.441495 -0.200848 - vertex 0.970438 0.569139 -0.200848 - endloop - endfacet - facet normal 0.843818 0.429947 -0.321117 - outer loop - vertex 1.06098 0.449781 -0.122743 - vertex 0.970438 0.569139 -0.200848 - vertex 0.992131 0.5849 -0.122743 - endloop - endfacet - facet normal 0.785798 0.400384 -0.471396 - outer loop - vertex 1.03548 0.441495 -0.200848 - vertex 0.998096 0.429349 -0.273474 - vertex 0.938641 0.546037 -0.273474 - endloop - endfacet - facet normal 0.785798 0.400384 -0.471396 - outer loop - vertex 1.03548 0.441495 -0.200848 - vertex 0.938641 0.546037 -0.273474 - vertex 0.970438 0.569139 -0.200848 - endloop - endfacet - facet normal 0.706398 0.359928 -0.609471 - outer loop - vertex 0.998096 0.429349 -0.273474 - vertex 0.949857 0.413676 -0.338641 - vertex 0.897607 0.516224 -0.338641 - endloop - endfacet - facet normal 0.706398 0.359927 -0.609471 - outer loop - vertex 0.998096 0.429349 -0.273474 - vertex 0.897607 0.516224 -0.338641 - vertex 0.938641 0.546037 -0.273474 - endloop - endfacet - facet normal 0.607499 0.309536 -0.731527 - outer loop - vertex 0.949857 0.413676 -0.338641 - vertex 0.892075 0.394901 -0.39457 - vertex 0.848454 0.480513 -0.39457 - endloop - endfacet - facet normal 0.607499 0.309536 -0.731527 - outer loop - vertex 0.949857 0.413676 -0.338641 - vertex 0.848454 0.480513 -0.39457 - vertex 0.897607 0.516224 -0.338641 - endloop - endfacet - facet normal 0.491568 0.250467 -0.834043 - outer loop - vertex 0.892075 0.394901 -0.39457 - vertex 0.826326 0.373538 -0.439737 - vertex 0.792525 0.439877 -0.439737 - endloop - endfacet - facet normal 0.491568 0.250466 -0.834043 - outer loop - vertex 0.892075 0.394901 -0.39457 - vertex 0.792525 0.439877 -0.439737 - vertex 0.848454 0.480513 -0.39457 - endloop - endfacet - facet normal 0.361643 0.184266 -0.913926 - outer loop - vertex 0.826326 0.373538 -0.439737 - vertex 0.754404 0.350169 -0.472909 - vertex 0.731344 0.395427 -0.472909 - endloop - endfacet - facet normal 0.361643 0.184267 -0.913926 - outer loop - vertex 0.826326 0.373538 -0.439737 - vertex 0.731344 0.395427 -0.472909 - vertex 0.792525 0.439877 -0.439737 - endloop - endfacet - facet normal 0.221288 0.112752 -0.968668 - outer loop - vertex 0.754404 0.350169 -0.472909 - vertex 0.678269 0.325431 -0.493181 - vertex 0.66658 0.348373 -0.493181 - endloop - endfacet - facet normal 0.221288 0.112752 -0.968668 - outer loop - vertex 0.754404 0.350169 -0.472909 - vertex 0.66658 0.348373 -0.493181 - vertex 0.731344 0.395427 -0.472909 - endloop - endfacet - facet normal 0.175616 0.175616 0.968668 - outer loop - vertex 0.66658 0.348373 0.493181 - vertex 0.731344 0.395427 0.472909 - vertex 0.695427 0.431344 0.472909 - endloop - endfacet - facet normal 0.175616 0.175616 0.968668 - outer loop - vertex 0.66658 0.348373 0.493181 - vertex 0.695427 0.431344 0.472909 - vertex 0.648373 0.36658 0.493181 - endloop - endfacet - facet normal 0.287002 0.287002 0.913926 - outer loop - vertex 0.731344 0.395427 0.472909 - vertex 0.792525 0.439877 0.439737 - vertex 0.739877 0.492525 0.439737 - endloop - endfacet - facet normal 0.287002 0.287002 0.913925 - outer loop - vertex 0.731344 0.395427 0.472909 - vertex 0.739877 0.492525 0.439737 - vertex 0.695427 0.431344 0.472909 - endloop - endfacet - facet normal 0.390111 0.390111 0.834043 - outer loop - vertex 0.792525 0.439877 0.439737 - vertex 0.848454 0.480513 0.39457 - vertex 0.780513 0.548454 0.39457 - endloop - endfacet - facet normal 0.39011 0.390111 0.834043 - outer loop - vertex 0.792525 0.439877 0.439737 - vertex 0.780513 0.548454 0.39457 - vertex 0.739877 0.492525 0.439737 - endloop - endfacet - facet normal 0.482114 0.482114 0.731527 - outer loop - vertex 0.848454 0.480513 0.39457 - vertex 0.897607 0.516224 0.338641 - vertex 0.816224 0.597607 0.338641 - endloop - endfacet - facet normal 0.482114 0.482114 0.731527 - outer loop - vertex 0.848454 0.480513 0.39457 - vertex 0.816224 0.597607 0.338641 - vertex 0.780513 0.548454 0.39457 - endloop - endfacet - facet normal 0.5606 0.560601 0.609471 - outer loop - vertex 0.897607 0.516224 0.338641 - vertex 0.938641 0.546037 0.273474 - vertex 0.846037 0.638641 0.273474 - endloop - endfacet - facet normal 0.5606 0.5606 0.60947 - outer loop - vertex 0.897607 0.516224 0.338641 - vertex 0.846037 0.638641 0.273474 - vertex 0.816224 0.597607 0.338641 - endloop - endfacet - facet normal 0.623613 0.623613 0.471396 - outer loop - vertex 0.938641 0.546037 0.273474 - vertex 0.970438 0.569139 0.200848 - vertex 0.869139 0.670438 0.200848 - endloop - endfacet - facet normal 0.623612 0.623613 0.471396 - outer loop - vertex 0.938641 0.546037 0.273474 - vertex 0.869139 0.670438 0.200848 - vertex 0.846037 0.638641 0.273474 - endloop - endfacet - facet normal 0.669658 0.669658 0.321116 - outer loop - vertex 0.970438 0.569139 0.200848 - vertex 0.992131 0.5849 0.122743 - vertex 0.8849 0.692131 0.122743 - endloop - endfacet - facet normal 0.669658 0.669658 0.321116 - outer loop - vertex 0.970438 0.569139 0.200848 - vertex 0.8849 0.692131 0.122743 - vertex 0.869139 0.670438 0.200848 - endloop - endfacet - facet normal 0.697694 0.697694 0.162622 - outer loop - vertex 0.992131 0.5849 0.122743 - vertex 1.00313 0.592889 0.0412897 - vertex 0.892889 0.703127 0.0412897 - endloop - endfacet - facet normal 0.697694 0.697694 0.162622 - outer loop - vertex 0.992131 0.5849 0.122743 - vertex 0.892889 0.703127 0.0412897 - vertex 0.8849 0.692131 0.122743 - endloop - endfacet - facet normal 0.707107 0.707107 -0 - outer loop - vertex 1.00313 0.592889 0.0412897 - vertex 1.00313 0.592889 -0.0412897 - vertex 0.892889 0.703127 -0.0412897 - endloop - endfacet - facet normal 0.707107 0.707107 -0 - outer loop - vertex 1.00313 0.592889 0.0412897 - vertex 0.892889 0.703127 -0.0412897 - vertex 0.892889 0.703127 0.0412897 - endloop - endfacet - facet normal 0.697694 0.697694 -0.162622 - outer loop - vertex 1.00313 0.592889 -0.0412897 - vertex 0.992131 0.5849 -0.122743 - vertex 0.8849 0.692131 -0.122743 - endloop - endfacet - facet normal 0.697694 0.697694 -0.162623 - outer loop - vertex 1.00313 0.592889 -0.0412897 - vertex 0.8849 0.692131 -0.122743 - vertex 0.892889 0.703127 -0.0412897 - endloop - endfacet - facet normal 0.669658 0.669658 -0.321117 - outer loop - vertex 0.992131 0.5849 -0.122743 - vertex 0.970438 0.569139 -0.200848 - vertex 0.869139 0.670438 -0.200848 - endloop - endfacet - facet normal 0.669658 0.669659 -0.321116 - outer loop - vertex 0.992131 0.5849 -0.122743 - vertex 0.869139 0.670438 -0.200848 - vertex 0.8849 0.692131 -0.122743 - endloop - endfacet - facet normal 0.623613 0.623613 -0.471396 - outer loop - vertex 0.970438 0.569139 -0.200848 - vertex 0.938641 0.546037 -0.273474 - vertex 0.846037 0.638641 -0.273474 - endloop - endfacet - facet normal 0.623613 0.623612 -0.471396 - outer loop - vertex 0.970438 0.569139 -0.200848 - vertex 0.846037 0.638641 -0.273474 - vertex 0.869139 0.670438 -0.200848 - endloop - endfacet - facet normal 0.5606 0.560601 -0.609471 - outer loop - vertex 0.938641 0.546037 -0.273474 - vertex 0.897607 0.516224 -0.338641 - vertex 0.816224 0.597607 -0.338641 - endloop - endfacet - facet normal 0.5606 0.5606 -0.609471 - outer loop - vertex 0.938641 0.546037 -0.273474 - vertex 0.816224 0.597607 -0.338641 - vertex 0.846037 0.638641 -0.273474 - endloop - endfacet - facet normal 0.482114 0.482114 -0.731527 - outer loop - vertex 0.897607 0.516224 -0.338641 - vertex 0.848454 0.480513 -0.39457 - vertex 0.780513 0.548454 -0.39457 - endloop - endfacet - facet normal 0.482114 0.482114 -0.731527 - outer loop - vertex 0.897607 0.516224 -0.338641 - vertex 0.780513 0.548454 -0.39457 - vertex 0.816224 0.597607 -0.338641 - endloop - endfacet - facet normal 0.390111 0.390111 -0.834043 - outer loop - vertex 0.848454 0.480513 -0.39457 - vertex 0.792525 0.439877 -0.439737 - vertex 0.739877 0.492525 -0.439737 - endloop - endfacet - facet normal 0.390111 0.390111 -0.834043 - outer loop - vertex 0.848454 0.480513 -0.39457 - vertex 0.739877 0.492525 -0.439737 - vertex 0.780513 0.548454 -0.39457 - endloop - endfacet - facet normal 0.287002 0.287002 -0.913926 - outer loop - vertex 0.792525 0.439877 -0.439737 - vertex 0.731344 0.395427 -0.472909 - vertex 0.695427 0.431344 -0.472909 - endloop - endfacet - facet normal 0.287002 0.287002 -0.913926 - outer loop - vertex 0.792525 0.439877 -0.439737 - vertex 0.695427 0.431344 -0.472909 - vertex 0.739877 0.492525 -0.439737 - endloop - endfacet - facet normal 0.175615 0.175615 -0.968668 - outer loop - vertex 0.731344 0.395427 -0.472909 - vertex 0.66658 0.348373 -0.493181 - vertex 0.648373 0.36658 -0.493181 - endloop - endfacet - facet normal 0.175615 0.175615 -0.968668 - outer loop - vertex 0.731344 0.395427 -0.472909 - vertex 0.648373 0.36658 -0.493181 - vertex 0.695427 0.431344 -0.472909 - endloop - endfacet - facet normal 0.112752 0.221289 0.968668 - outer loop - vertex 0.648373 0.36658 0.493181 - vertex 0.695427 0.431344 0.472909 - vertex 0.650169 0.454404 0.472909 - endloop - endfacet - facet normal 0.112752 0.221289 0.968668 - outer loop - vertex 0.648373 0.36658 0.493181 - vertex 0.650169 0.454404 0.472909 - vertex 0.625431 0.378269 0.493181 - endloop - endfacet - facet normal 0.184267 0.361644 0.913925 - outer loop - vertex 0.695427 0.431344 0.472909 - vertex 0.739877 0.492525 0.439737 - vertex 0.673538 0.526326 0.439737 - endloop - endfacet - facet normal 0.184267 0.361644 0.913925 - outer loop - vertex 0.695427 0.431344 0.472909 - vertex 0.673538 0.526326 0.439737 - vertex 0.650169 0.454404 0.472909 - endloop - endfacet - facet normal 0.250466 0.491568 0.834043 - outer loop - vertex 0.739877 0.492525 0.439737 - vertex 0.780513 0.548454 0.39457 - vertex 0.694901 0.592076 0.39457 - endloop - endfacet - facet normal 0.250466 0.491568 0.834043 - outer loop - vertex 0.739877 0.492525 0.439737 - vertex 0.694901 0.592076 0.39457 - vertex 0.673538 0.526326 0.439737 - endloop - endfacet - facet normal 0.309536 0.607499 0.731527 - outer loop - vertex 0.780513 0.548454 0.39457 - vertex 0.816224 0.597607 0.338641 - vertex 0.713676 0.649858 0.338641 - endloop - endfacet - facet normal 0.309536 0.607499 0.731527 - outer loop - vertex 0.780513 0.548454 0.39457 - vertex 0.713676 0.649858 0.338641 - vertex 0.694901 0.592076 0.39457 - endloop - endfacet - facet normal 0.359928 0.706398 0.60947 - outer loop - vertex 0.816224 0.597607 0.338641 - vertex 0.846037 0.638641 0.273474 - vertex 0.729349 0.698096 0.273474 - endloop - endfacet - facet normal 0.359927 0.706398 0.609471 - outer loop - vertex 0.816224 0.597607 0.338641 - vertex 0.729349 0.698096 0.273474 - vertex 0.713676 0.649858 0.338641 - endloop - endfacet - facet normal 0.400384 0.785798 0.471396 - outer loop - vertex 0.846037 0.638641 0.273474 - vertex 0.869139 0.670438 0.200848 - vertex 0.741495 0.735476 0.200848 - endloop - endfacet - facet normal 0.400384 0.785798 0.471396 - outer loop - vertex 0.846037 0.638641 0.273474 - vertex 0.741495 0.735476 0.200848 - vertex 0.729349 0.698096 0.273474 - endloop - endfacet - facet normal 0.429947 0.843819 0.321116 - outer loop - vertex 0.869139 0.670438 0.200848 - vertex 0.8849 0.692131 0.122743 - vertex 0.749781 0.760977 0.122743 - endloop - endfacet - facet normal 0.429947 0.843819 0.321116 - outer loop - vertex 0.869139 0.670438 0.200848 - vertex 0.749781 0.760977 0.122743 - vertex 0.741495 0.735476 0.200848 - endloop - endfacet - facet normal 0.447947 0.879146 0.162622 - outer loop - vertex 0.8849 0.692131 0.122743 - vertex 0.892889 0.703127 0.0412897 - vertex 0.753981 0.773904 0.0412897 - endloop - endfacet - facet normal 0.447947 0.879146 0.162622 - outer loop - vertex 0.8849 0.692131 0.122743 - vertex 0.753981 0.773904 0.0412897 - vertex 0.749781 0.760977 0.122743 - endloop - endfacet - facet normal 0.45399 0.891007 -0 - outer loop - vertex 0.892889 0.703127 0.0412897 - vertex 0.892889 0.703127 -0.0412897 - vertex 0.753981 0.773904 -0.0412897 - endloop - endfacet - facet normal 0.45399 0.891007 -0 - outer loop - vertex 0.892889 0.703127 0.0412897 - vertex 0.753981 0.773904 -0.0412897 - vertex 0.753981 0.773904 0.0412897 - endloop - endfacet - facet normal 0.447947 0.879146 -0.162623 - outer loop - vertex 0.892889 0.703127 -0.0412897 - vertex 0.8849 0.692131 -0.122743 - vertex 0.749781 0.760977 -0.122743 - endloop - endfacet - facet normal 0.447947 0.879146 -0.162622 - outer loop - vertex 0.892889 0.703127 -0.0412897 - vertex 0.749781 0.760977 -0.122743 - vertex 0.753981 0.773904 -0.0412897 - endloop - endfacet - facet normal 0.429947 0.843819 -0.321116 - outer loop - vertex 0.8849 0.692131 -0.122743 - vertex 0.869139 0.670438 -0.200848 - vertex 0.741495 0.735476 -0.200848 - endloop - endfacet - facet normal 0.429947 0.843819 -0.321116 - outer loop - vertex 0.8849 0.692131 -0.122743 - vertex 0.741495 0.735476 -0.200848 - vertex 0.749781 0.760977 -0.122743 - endloop - endfacet - facet normal 0.400384 0.785798 -0.471397 - outer loop - vertex 0.869139 0.670438 -0.200848 - vertex 0.846037 0.638641 -0.273474 - vertex 0.729349 0.698096 -0.273474 - endloop - endfacet - facet normal 0.400384 0.785798 -0.471396 - outer loop - vertex 0.869139 0.670438 -0.200848 - vertex 0.729349 0.698096 -0.273474 - vertex 0.741495 0.735476 -0.200848 - endloop - endfacet - facet normal 0.359928 0.706397 -0.609471 - outer loop - vertex 0.846037 0.638641 -0.273474 - vertex 0.816224 0.597607 -0.338641 - vertex 0.713676 0.649858 -0.338641 - endloop - endfacet - facet normal 0.359928 0.706398 -0.609471 - outer loop - vertex 0.846037 0.638641 -0.273474 - vertex 0.713676 0.649858 -0.338641 - vertex 0.729349 0.698096 -0.273474 - endloop - endfacet - facet normal 0.309536 0.607499 -0.731527 - outer loop - vertex 0.816224 0.597607 -0.338641 - vertex 0.780513 0.548454 -0.39457 - vertex 0.694901 0.592075 -0.39457 - endloop - endfacet - facet normal 0.309536 0.607499 -0.731527 - outer loop - vertex 0.816224 0.597607 -0.338641 - vertex 0.694901 0.592075 -0.39457 - vertex 0.713676 0.649858 -0.338641 - endloop - endfacet - facet normal 0.250467 0.491568 -0.834043 - outer loop - vertex 0.780513 0.548454 -0.39457 - vertex 0.739877 0.492525 -0.439737 - vertex 0.673538 0.526326 -0.439737 - endloop - endfacet - facet normal 0.250467 0.491568 -0.834043 - outer loop - vertex 0.780513 0.548454 -0.39457 - vertex 0.673538 0.526326 -0.439737 - vertex 0.694901 0.592075 -0.39457 - endloop - endfacet - facet normal 0.184266 0.361644 -0.913925 - outer loop - vertex 0.739877 0.492525 -0.439737 - vertex 0.695427 0.431344 -0.472909 - vertex 0.650169 0.454404 -0.472909 - endloop - endfacet - facet normal 0.184267 0.361643 -0.913926 - outer loop - vertex 0.739877 0.492525 -0.439737 - vertex 0.650169 0.454404 -0.472909 - vertex 0.673538 0.526326 -0.439737 - endloop - endfacet - facet normal 0.112752 0.221288 -0.968668 - outer loop - vertex 0.695427 0.431344 -0.472909 - vertex 0.648373 0.36658 -0.493181 - vertex 0.625431 0.378269 -0.493181 - endloop - endfacet - facet normal 0.112752 0.221288 -0.968668 - outer loop - vertex 0.695427 0.431344 -0.472909 - vertex 0.625431 0.378269 -0.493181 - vertex 0.650169 0.454404 -0.472909 - endloop - endfacet - facet normal 0.0388517 0.2453 0.968668 - outer loop - vertex 0.625431 0.378269 0.493181 - vertex 0.650169 0.454404 0.472909 - vertex 0.6 0.46235 0.472909 - endloop - endfacet - facet normal 0.038852 0.2453 0.968668 - outer loop - vertex 0.625431 0.378269 0.493181 - vertex 0.6 0.46235 0.472909 - vertex 0.6 0.382297 0.493181 - endloop - endfacet - facet normal 0.063494 0.400885 0.913925 - outer loop - vertex 0.650169 0.454404 0.472909 - vertex 0.673538 0.526326 0.439737 - vertex 0.6 0.537974 0.439737 - endloop - endfacet - facet normal 0.0634938 0.400885 0.913926 - outer loop - vertex 0.650169 0.454404 0.472909 - vertex 0.6 0.537974 0.439737 - vertex 0.6 0.46235 0.472909 - endloop - endfacet - facet normal 0.0863048 0.544907 0.834043 - outer loop - vertex 0.673538 0.526326 0.439737 - vertex 0.694901 0.592076 0.39457 - vertex 0.6 0.607106 0.39457 - endloop - endfacet - facet normal 0.0863049 0.544907 0.834043 - outer loop - vertex 0.673538 0.526326 0.439737 - vertex 0.6 0.607106 0.39457 - vertex 0.6 0.537974 0.439737 - endloop - endfacet - facet normal 0.106659 0.673418 0.731527 - outer loop - vertex 0.694901 0.592076 0.39457 - vertex 0.713676 0.649858 0.338641 - vertex 0.6 0.667862 0.338641 - endloop - endfacet - facet normal 0.106659 0.673418 0.731527 - outer loop - vertex 0.694901 0.592076 0.39457 - vertex 0.6 0.667862 0.338641 - vertex 0.6 0.607106 0.39457 - endloop - endfacet - facet normal 0.124022 0.783048 0.609471 - outer loop - vertex 0.713676 0.649858 0.338641 - vertex 0.729349 0.698096 0.273474 - vertex 0.6 0.718583 0.273474 - endloop - endfacet - facet normal 0.124022 0.783048 0.609471 - outer loop - vertex 0.713676 0.649858 0.338641 - vertex 0.6 0.718583 0.273474 - vertex 0.6 0.667862 0.338641 - endloop - endfacet - facet normal 0.137963 0.871064 0.471396 - outer loop - vertex 0.729349 0.698096 0.273474 - vertex 0.741495 0.735476 0.200848 - vertex 0.6 0.757887 0.200848 - endloop - endfacet - facet normal 0.137963 0.871064 0.471396 - outer loop - vertex 0.729349 0.698096 0.273474 - vertex 0.6 0.757887 0.200848 - vertex 0.6 0.718583 0.273474 - endloop - endfacet - facet normal 0.14815 0.93538 0.321116 - outer loop - vertex 0.741495 0.735476 0.200848 - vertex 0.749781 0.760977 0.122743 - vertex 0.6 0.7847 0.122743 - endloop - endfacet - facet normal 0.14815 0.93538 0.321117 - outer loop - vertex 0.741495 0.735476 0.200848 - vertex 0.6 0.7847 0.122743 - vertex 0.6 0.757887 0.200848 - endloop - endfacet - facet normal 0.154352 0.974541 0.162622 - outer loop - vertex 0.749781 0.760977 0.122743 - vertex 0.753981 0.773904 0.0412897 - vertex 0.6 0.798292 0.0412897 - endloop - endfacet - facet normal 0.154352 0.974541 0.162621 - outer loop - vertex 0.749781 0.760977 0.122743 - vertex 0.6 0.798292 0.0412897 - vertex 0.6 0.7847 0.122743 - endloop - endfacet - facet normal 0.156434 0.987688 -0 - outer loop - vertex 0.753981 0.773904 0.0412897 - vertex 0.753981 0.773904 -0.0412897 - vertex 0.6 0.798292 -0.0412897 - endloop - endfacet - facet normal 0.156434 0.987688 -0 - outer loop - vertex 0.753981 0.773904 0.0412897 - vertex 0.6 0.798292 -0.0412897 - vertex 0.6 0.798292 0.0412897 - endloop - endfacet - facet normal 0.154352 0.974541 -0.162622 - outer loop - vertex 0.753981 0.773904 -0.0412897 - vertex 0.749781 0.760977 -0.122743 - vertex 0.6 0.7847 -0.122743 - endloop - endfacet - facet normal 0.154352 0.974541 -0.162622 - outer loop - vertex 0.753981 0.773904 -0.0412897 - vertex 0.6 0.7847 -0.122743 - vertex 0.6 0.798292 -0.0412897 - endloop - endfacet - facet normal 0.14815 0.93538 -0.321116 - outer loop - vertex 0.749781 0.760977 -0.122743 - vertex 0.741495 0.735476 -0.200848 - vertex 0.6 0.757887 -0.200848 - endloop - endfacet - facet normal 0.14815 0.93538 -0.321117 - outer loop - vertex 0.749781 0.760977 -0.122743 - vertex 0.6 0.757887 -0.200848 - vertex 0.6 0.7847 -0.122743 - endloop - endfacet - facet normal 0.137963 0.871064 -0.471396 - outer loop - vertex 0.741495 0.735476 -0.200848 - vertex 0.729349 0.698096 -0.273474 - vertex 0.6 0.718583 -0.273474 - endloop - endfacet - facet normal 0.137963 0.871064 -0.471396 - outer loop - vertex 0.741495 0.735476 -0.200848 - vertex 0.6 0.718583 -0.273474 - vertex 0.6 0.757887 -0.200848 - endloop - endfacet - facet normal 0.124022 0.783048 -0.609471 - outer loop - vertex 0.729349 0.698096 -0.273474 - vertex 0.713676 0.649858 -0.338641 - vertex 0.6 0.667862 -0.338641 - endloop - endfacet - facet normal 0.124022 0.783048 -0.609471 - outer loop - vertex 0.729349 0.698096 -0.273474 - vertex 0.6 0.667862 -0.338641 - vertex 0.6 0.718583 -0.273474 - endloop - endfacet - facet normal 0.106659 0.673418 -0.731527 - outer loop - vertex 0.713676 0.649858 -0.338641 - vertex 0.694901 0.592075 -0.39457 - vertex 0.6 0.607106 -0.39457 - endloop - endfacet - facet normal 0.106659 0.673418 -0.731527 - outer loop - vertex 0.713676 0.649858 -0.338641 - vertex 0.6 0.607106 -0.39457 - vertex 0.6 0.667862 -0.338641 - endloop - endfacet - facet normal 0.0863046 0.544908 -0.834043 - outer loop - vertex 0.694901 0.592075 -0.39457 - vertex 0.673538 0.526326 -0.439737 - vertex 0.6 0.537974 -0.439737 - endloop - endfacet - facet normal 0.0863049 0.544907 -0.834043 - outer loop - vertex 0.694901 0.592075 -0.39457 - vertex 0.6 0.537974 -0.439737 - vertex 0.6 0.607106 -0.39457 - endloop - endfacet - facet normal 0.0634938 0.400885 -0.913926 - outer loop - vertex 0.673538 0.526326 -0.439737 - vertex 0.650169 0.454404 -0.472909 - vertex 0.6 0.46235 -0.472909 - endloop - endfacet - facet normal 0.0634937 0.400885 -0.913926 - outer loop - vertex 0.673538 0.526326 -0.439737 - vertex 0.6 0.46235 -0.472909 - vertex 0.6 0.537974 -0.439737 - endloop - endfacet - facet normal 0.0388516 0.2453 -0.968668 - outer loop - vertex 0.650169 0.454404 -0.472909 - vertex 0.625431 0.378269 -0.493181 - vertex 0.6 0.382297 -0.493181 - endloop - endfacet - facet normal 0.0388516 0.2453 -0.968668 - outer loop - vertex 0.650169 0.454404 -0.472909 - vertex 0.6 0.382297 -0.493181 - vertex 0.6 0.46235 -0.472909 - endloop - endfacet - facet normal -0.0388517 0.2453 0.968668 - outer loop - vertex 0.6 0.382297 0.493181 - vertex 0.6 0.46235 0.472909 - vertex 0.549831 0.454404 0.472909 - endloop - endfacet - facet normal -0.0388519 0.2453 0.968668 - outer loop - vertex 0.6 0.382297 0.493181 - vertex 0.549831 0.454404 0.472909 - vertex 0.574569 0.378269 0.493181 - endloop - endfacet - facet normal -0.0634941 0.400885 0.913925 - outer loop - vertex 0.6 0.46235 0.472909 - vertex 0.6 0.537974 0.439737 - vertex 0.526462 0.526326 0.439737 - endloop - endfacet - facet normal -0.0634939 0.400885 0.913925 - outer loop - vertex 0.6 0.46235 0.472909 - vertex 0.526462 0.526326 0.439737 - vertex 0.549831 0.454404 0.472909 - endloop - endfacet - facet normal -0.0863048 0.544907 0.834043 - outer loop - vertex 0.6 0.537974 0.439737 - vertex 0.6 0.607106 0.39457 - vertex 0.505099 0.592076 0.39457 - endloop - endfacet - facet normal -0.086305 0.544907 0.834043 - outer loop - vertex 0.6 0.537974 0.439737 - vertex 0.505099 0.592076 0.39457 - vertex 0.526462 0.526326 0.439737 - endloop - endfacet - facet normal -0.106659 0.673419 0.731527 - outer loop - vertex 0.6 0.607106 0.39457 - vertex 0.6 0.667862 0.338641 - vertex 0.486324 0.649858 0.338641 - endloop - endfacet - facet normal -0.106659 0.673418 0.731527 - outer loop - vertex 0.6 0.607106 0.39457 - vertex 0.486324 0.649858 0.338641 - vertex 0.505099 0.592076 0.39457 - endloop - endfacet - facet normal -0.124022 0.783048 0.609471 - outer loop - vertex 0.6 0.667862 0.338641 - vertex 0.6 0.718583 0.273474 - vertex 0.470651 0.698096 0.273474 - endloop - endfacet - facet normal -0.124022 0.783048 0.609471 - outer loop - vertex 0.6 0.667862 0.338641 - vertex 0.470651 0.698096 0.273474 - vertex 0.486324 0.649858 0.338641 - endloop - endfacet - facet normal -0.137963 0.871064 0.471396 - outer loop - vertex 0.6 0.718583 0.273474 - vertex 0.6 0.757887 0.200848 - vertex 0.458505 0.735476 0.200848 - endloop - endfacet - facet normal -0.137963 0.871064 0.471396 - outer loop - vertex 0.6 0.718583 0.273474 - vertex 0.458505 0.735476 0.200848 - vertex 0.470651 0.698096 0.273474 - endloop - endfacet - facet normal -0.14815 0.93538 0.321117 - outer loop - vertex 0.6 0.757887 0.200848 - vertex 0.6 0.7847 0.122743 - vertex 0.450219 0.760977 0.122743 - endloop - endfacet - facet normal -0.14815 0.93538 0.321116 - outer loop - vertex 0.6 0.757887 0.200848 - vertex 0.450219 0.760977 0.122743 - vertex 0.458505 0.735476 0.200848 - endloop - endfacet - facet normal -0.154352 0.974541 0.162621 - outer loop - vertex 0.6 0.7847 0.122743 - vertex 0.6 0.798292 0.0412897 - vertex 0.446019 0.773904 0.0412897 - endloop - endfacet - facet normal -0.154352 0.974541 0.162622 - outer loop - vertex 0.6 0.7847 0.122743 - vertex 0.446019 0.773904 0.0412897 - vertex 0.450219 0.760977 0.122743 - endloop - endfacet - facet normal -0.156434 0.987688 0 - outer loop - vertex 0.6 0.798292 0.0412897 - vertex 0.6 0.798292 -0.0412897 - vertex 0.446019 0.773904 -0.0412897 - endloop - endfacet - facet normal -0.156434 0.987688 0 - outer loop - vertex 0.6 0.798292 0.0412897 - vertex 0.446019 0.773904 -0.0412897 - vertex 0.446019 0.773904 0.0412897 - endloop - endfacet - facet normal -0.154352 0.974541 -0.162621 - outer loop - vertex 0.6 0.798292 -0.0412897 - vertex 0.6 0.7847 -0.122743 - vertex 0.450219 0.760977 -0.122743 - endloop - endfacet - facet normal -0.154352 0.974541 -0.162622 - outer loop - vertex 0.6 0.798292 -0.0412897 - vertex 0.450219 0.760977 -0.122743 - vertex 0.446019 0.773904 -0.0412897 - endloop - endfacet - facet normal -0.14815 0.93538 -0.321117 - outer loop - vertex 0.6 0.7847 -0.122743 - vertex 0.6 0.757887 -0.200848 - vertex 0.458505 0.735476 -0.200848 - endloop - endfacet - facet normal -0.14815 0.93538 -0.321116 - outer loop - vertex 0.6 0.7847 -0.122743 - vertex 0.458505 0.735476 -0.200848 - vertex 0.450219 0.760977 -0.122743 - endloop - endfacet - facet normal -0.137963 0.871064 -0.471396 - outer loop - vertex 0.6 0.757887 -0.200848 - vertex 0.6 0.718583 -0.273474 - vertex 0.470651 0.698096 -0.273474 - endloop - endfacet - facet normal -0.137963 0.871064 -0.471396 - outer loop - vertex 0.6 0.757887 -0.200848 - vertex 0.470651 0.698096 -0.273474 - vertex 0.458505 0.735476 -0.200848 - endloop - endfacet - facet normal -0.124023 0.783048 -0.609471 - outer loop - vertex 0.6 0.718583 -0.273474 - vertex 0.6 0.667862 -0.338641 - vertex 0.486324 0.649857 -0.338641 - endloop - endfacet - facet normal -0.124023 0.783048 -0.609471 - outer loop - vertex 0.6 0.718583 -0.273474 - vertex 0.486324 0.649857 -0.338641 - vertex 0.470651 0.698096 -0.273474 - endloop - endfacet - facet normal -0.106659 0.673418 -0.731527 - outer loop - vertex 0.6 0.667862 -0.338641 - vertex 0.6 0.607106 -0.39457 - vertex 0.505099 0.592075 -0.39457 - endloop - endfacet - facet normal -0.106659 0.673418 -0.731527 - outer loop - vertex 0.6 0.667862 -0.338641 - vertex 0.505099 0.592075 -0.39457 - vertex 0.486324 0.649857 -0.338641 - endloop - endfacet - facet normal -0.0863046 0.544907 -0.834043 - outer loop - vertex 0.6 0.607106 -0.39457 - vertex 0.6 0.537974 -0.439737 - vertex 0.526462 0.526326 -0.439737 - endloop - endfacet - facet normal -0.086305 0.544908 -0.834043 - outer loop - vertex 0.6 0.607106 -0.39457 - vertex 0.526462 0.526326 -0.439737 - vertex 0.505099 0.592075 -0.39457 - endloop - endfacet - facet normal -0.0634939 0.400885 -0.913926 - outer loop - vertex 0.6 0.537974 -0.439737 - vertex 0.6 0.46235 -0.472909 - vertex 0.549831 0.454404 -0.472909 - endloop - endfacet - facet normal -0.0634937 0.400885 -0.913926 - outer loop - vertex 0.6 0.537974 -0.439737 - vertex 0.549831 0.454404 -0.472909 - vertex 0.526462 0.526326 -0.439737 - endloop - endfacet - facet normal -0.0388516 0.2453 -0.968668 - outer loop - vertex 0.6 0.46235 -0.472909 - vertex 0.6 0.382297 -0.493181 - vertex 0.574569 0.378269 -0.493181 - endloop - endfacet - facet normal -0.0388517 0.2453 -0.968668 - outer loop - vertex 0.6 0.46235 -0.472909 - vertex 0.574569 0.378269 -0.493181 - vertex 0.549831 0.454404 -0.472909 - endloop - endfacet - facet normal -0.112752 0.221289 0.968668 - outer loop - vertex 0.574569 0.378269 0.493181 - vertex 0.549831 0.454404 0.472909 - vertex 0.504573 0.431344 0.472909 - endloop - endfacet - facet normal -0.112752 0.221289 0.968668 - outer loop - vertex 0.574569 0.378269 0.493181 - vertex 0.504573 0.431344 0.472909 - vertex 0.551627 0.36658 0.493181 - endloop - endfacet - facet normal -0.184266 0.361644 0.913925 - outer loop - vertex 0.549831 0.454404 0.472909 - vertex 0.526462 0.526326 0.439737 - vertex 0.460123 0.492525 0.439737 - endloop - endfacet - facet normal -0.184267 0.361643 0.913926 - outer loop - vertex 0.549831 0.454404 0.472909 - vertex 0.460123 0.492525 0.439737 - vertex 0.504573 0.431344 0.472909 - endloop - endfacet - facet normal -0.250466 0.491568 0.834043 - outer loop - vertex 0.526462 0.526326 0.439737 - vertex 0.505099 0.592076 0.39457 - vertex 0.419487 0.548454 0.39457 - endloop - endfacet - facet normal -0.250466 0.491568 0.834043 - outer loop - vertex 0.526462 0.526326 0.439737 - vertex 0.419487 0.548454 0.39457 - vertex 0.460123 0.492525 0.439737 - endloop - endfacet - facet normal -0.309537 0.607499 0.731527 - outer loop - vertex 0.505099 0.592076 0.39457 - vertex 0.486324 0.649858 0.338641 - vertex 0.383776 0.597607 0.338641 - endloop - endfacet - facet normal -0.309537 0.6075 0.731527 - outer loop - vertex 0.505099 0.592076 0.39457 - vertex 0.383776 0.597607 0.338641 - vertex 0.419487 0.548454 0.39457 - endloop - endfacet - facet normal -0.359928 0.706398 0.609471 - outer loop - vertex 0.486324 0.649858 0.338641 - vertex 0.470651 0.698096 0.273474 - vertex 0.353963 0.638641 0.273474 - endloop - endfacet - facet normal -0.359928 0.706397 0.609471 - outer loop - vertex 0.486324 0.649858 0.338641 - vertex 0.353963 0.638641 0.273474 - vertex 0.383776 0.597607 0.338641 - endloop - endfacet - facet normal -0.400384 0.785798 0.471396 - outer loop - vertex 0.470651 0.698096 0.273474 - vertex 0.458505 0.735476 0.200848 - vertex 0.330861 0.670438 0.200848 - endloop - endfacet - facet normal -0.400384 0.785798 0.471396 - outer loop - vertex 0.470651 0.698096 0.273474 - vertex 0.330861 0.670438 0.200848 - vertex 0.353963 0.638641 0.273474 - endloop - endfacet - facet normal -0.429947 0.843819 0.321116 - outer loop - vertex 0.458505 0.735476 0.200848 - vertex 0.450219 0.760977 0.122743 - vertex 0.3151 0.692131 0.122743 - endloop - endfacet - facet normal -0.429947 0.843818 0.321117 - outer loop - vertex 0.458505 0.735476 0.200848 - vertex 0.3151 0.692131 0.122743 - vertex 0.330861 0.670438 0.200848 - endloop - endfacet - facet normal -0.447947 0.879146 0.162622 - outer loop - vertex 0.450219 0.760977 0.122743 - vertex 0.446019 0.773904 0.0412897 - vertex 0.307111 0.703127 0.0412897 - endloop - endfacet - facet normal -0.447947 0.879146 0.162622 - outer loop - vertex 0.450219 0.760977 0.122743 - vertex 0.307111 0.703127 0.0412897 - vertex 0.3151 0.692131 0.122743 - endloop - endfacet - facet normal -0.453991 0.891006 0 - outer loop - vertex 0.446019 0.773904 0.0412897 - vertex 0.446019 0.773904 -0.0412897 - vertex 0.307111 0.703127 -0.0412897 - endloop - endfacet - facet normal -0.45399 0.891007 -6.43116e-07 - outer loop - vertex 0.446019 0.773904 0.0412897 - vertex 0.307111 0.703127 -0.0412897 - vertex 0.307111 0.703127 0.0412897 - endloop - endfacet - facet normal -0.447947 0.879146 -0.162622 - outer loop - vertex 0.446019 0.773904 -0.0412897 - vertex 0.450219 0.760977 -0.122743 - vertex 0.3151 0.692131 -0.122743 - endloop - endfacet - facet normal -0.447947 0.879146 -0.162622 - outer loop - vertex 0.446019 0.773904 -0.0412897 - vertex 0.3151 0.692131 -0.122743 - vertex 0.307111 0.703127 -0.0412897 - endloop - endfacet - facet normal -0.429947 0.843819 -0.321116 - outer loop - vertex 0.450219 0.760977 -0.122743 - vertex 0.458505 0.735476 -0.200848 - vertex 0.330861 0.670438 -0.200848 - endloop - endfacet - facet normal -0.429947 0.843819 -0.321116 - outer loop - vertex 0.450219 0.760977 -0.122743 - vertex 0.330861 0.670438 -0.200848 - vertex 0.3151 0.692131 -0.122743 - endloop - endfacet - facet normal -0.400384 0.785798 -0.471396 - outer loop - vertex 0.458505 0.735476 -0.200848 - vertex 0.470651 0.698096 -0.273474 - vertex 0.353963 0.638641 -0.273474 - endloop - endfacet - facet normal -0.400384 0.785798 -0.471396 - outer loop - vertex 0.458505 0.735476 -0.200848 - vertex 0.353963 0.638641 -0.273474 - vertex 0.330861 0.670438 -0.200848 - endloop - endfacet - facet normal -0.359927 0.706398 -0.609471 - outer loop - vertex 0.470651 0.698096 -0.273474 - vertex 0.486324 0.649857 -0.338641 - vertex 0.383776 0.597607 -0.338641 - endloop - endfacet - facet normal -0.359927 0.706398 -0.609471 - outer loop - vertex 0.470651 0.698096 -0.273474 - vertex 0.383776 0.597607 -0.338641 - vertex 0.353963 0.638641 -0.273474 - endloop - endfacet - facet normal -0.309536 0.607499 -0.731527 - outer loop - vertex 0.486324 0.649857 -0.338641 - vertex 0.505099 0.592075 -0.39457 - vertex 0.419487 0.548454 -0.39457 - endloop - endfacet - facet normal -0.309536 0.607499 -0.731527 - outer loop - vertex 0.486324 0.649857 -0.338641 - vertex 0.419487 0.548454 -0.39457 - vertex 0.383776 0.597607 -0.338641 - endloop - endfacet - facet normal -0.250467 0.491568 -0.834043 - outer loop - vertex 0.505099 0.592075 -0.39457 - vertex 0.526462 0.526326 -0.439737 - vertex 0.460123 0.492525 -0.439737 - endloop - endfacet - facet normal -0.250466 0.491568 -0.834043 - outer loop - vertex 0.505099 0.592075 -0.39457 - vertex 0.460123 0.492525 -0.439737 - vertex 0.419487 0.548454 -0.39457 - endloop - endfacet - facet normal -0.184267 0.361643 -0.913926 - outer loop - vertex 0.526462 0.526326 -0.439737 - vertex 0.549831 0.454404 -0.472909 - vertex 0.504573 0.431344 -0.472909 - endloop - endfacet - facet normal -0.184267 0.361643 -0.913926 - outer loop - vertex 0.526462 0.526326 -0.439737 - vertex 0.504573 0.431344 -0.472909 - vertex 0.460123 0.492525 -0.439737 - endloop - endfacet - facet normal -0.112752 0.221288 -0.968668 - outer loop - vertex 0.549831 0.454404 -0.472909 - vertex 0.574569 0.378269 -0.493181 - vertex 0.551627 0.36658 -0.493181 - endloop - endfacet - facet normal -0.112752 0.221288 -0.968668 - outer loop - vertex 0.549831 0.454404 -0.472909 - vertex 0.551627 0.36658 -0.493181 - vertex 0.504573 0.431344 -0.472909 - endloop - endfacet - facet normal -0.175616 0.175616 0.968668 - outer loop - vertex 0.551627 0.36658 0.493181 - vertex 0.504573 0.431344 0.472909 - vertex 0.468656 0.395427 0.472909 - endloop - endfacet - facet normal -0.175616 0.175616 0.968668 - outer loop - vertex 0.551627 0.36658 0.493181 - vertex 0.468656 0.395427 0.472909 - vertex 0.53342 0.348373 0.493181 - endloop - endfacet - facet normal -0.287002 0.287002 0.913926 - outer loop - vertex 0.504573 0.431344 0.472909 - vertex 0.460123 0.492525 0.439737 - vertex 0.407475 0.439877 0.439737 - endloop - endfacet - facet normal -0.287002 0.287002 0.913925 - outer loop - vertex 0.504573 0.431344 0.472909 - vertex 0.407475 0.439877 0.439737 - vertex 0.468656 0.395427 0.472909 - endloop - endfacet - facet normal -0.390111 0.39011 0.834043 - outer loop - vertex 0.460123 0.492525 0.439737 - vertex 0.419487 0.548454 0.39457 - vertex 0.351546 0.480513 0.39457 - endloop - endfacet - facet normal -0.390111 0.39011 0.834043 - outer loop - vertex 0.460123 0.492525 0.439737 - vertex 0.351546 0.480513 0.39457 - vertex 0.407475 0.439877 0.439737 - endloop - endfacet - facet normal -0.482114 0.482114 0.731527 - outer loop - vertex 0.419487 0.548454 0.39457 - vertex 0.383776 0.597607 0.338641 - vertex 0.302393 0.516224 0.338641 - endloop - endfacet - facet normal -0.482114 0.482114 0.731527 - outer loop - vertex 0.419487 0.548454 0.39457 - vertex 0.302393 0.516224 0.338641 - vertex 0.351546 0.480513 0.39457 - endloop - endfacet - facet normal -0.5606 0.5606 0.609471 - outer loop - vertex 0.383776 0.597607 0.338641 - vertex 0.353963 0.638641 0.273474 - vertex 0.261359 0.546037 0.273474 - endloop - endfacet - facet normal -0.5606 0.5606 0.609471 - outer loop - vertex 0.383776 0.597607 0.338641 - vertex 0.261359 0.546037 0.273474 - vertex 0.302393 0.516224 0.338641 - endloop - endfacet - facet normal -0.623613 0.623613 0.471396 - outer loop - vertex 0.353963 0.638641 0.273474 - vertex 0.330861 0.670438 0.200848 - vertex 0.229562 0.569139 0.200848 - endloop - endfacet - facet normal -0.623613 0.623613 0.471396 - outer loop - vertex 0.353963 0.638641 0.273474 - vertex 0.229562 0.569139 0.200848 - vertex 0.261359 0.546037 0.273474 - endloop - endfacet - facet normal -0.669658 0.669658 0.321117 - outer loop - vertex 0.330861 0.670438 0.200848 - vertex 0.3151 0.692131 0.122743 - vertex 0.207869 0.5849 0.122743 - endloop - endfacet - facet normal -0.669658 0.669658 0.321116 - outer loop - vertex 0.330861 0.670438 0.200848 - vertex 0.207869 0.5849 0.122743 - vertex 0.229562 0.569139 0.200848 - endloop - endfacet - facet normal -0.697694 0.697694 0.162622 - outer loop - vertex 0.3151 0.692131 0.122743 - vertex 0.307111 0.703127 0.0412897 - vertex 0.196873 0.592889 0.0412897 - endloop - endfacet - facet normal -0.697694 0.697694 0.162622 - outer loop - vertex 0.3151 0.692131 0.122743 - vertex 0.196873 0.592889 0.0412897 - vertex 0.207869 0.5849 0.122743 - endloop - endfacet - facet normal -0.707107 0.707107 -5.1038e-07 - outer loop - vertex 0.307111 0.703127 0.0412897 - vertex 0.307111 0.703127 -0.0412897 - vertex 0.196873 0.592889 -0.0412897 - endloop - endfacet - facet normal -0.707107 0.707107 0 - outer loop - vertex 0.307111 0.703127 0.0412897 - vertex 0.196873 0.592889 -0.0412897 - vertex 0.196873 0.592889 0.0412897 - endloop - endfacet - facet normal -0.697694 0.697694 -0.162622 - outer loop - vertex 0.307111 0.703127 -0.0412897 - vertex 0.3151 0.692131 -0.122743 - vertex 0.207869 0.5849 -0.122743 - endloop - endfacet - facet normal -0.697694 0.697694 -0.162622 - outer loop - vertex 0.307111 0.703127 -0.0412897 - vertex 0.207869 0.5849 -0.122743 - vertex 0.196873 0.592889 -0.0412897 - endloop - endfacet - facet normal -0.669658 0.669658 -0.321116 - outer loop - vertex 0.3151 0.692131 -0.122743 - vertex 0.330861 0.670438 -0.200848 - vertex 0.229562 0.569139 -0.200848 - endloop - endfacet - facet normal -0.669658 0.669658 -0.321116 - outer loop - vertex 0.3151 0.692131 -0.122743 - vertex 0.229562 0.569139 -0.200848 - vertex 0.207869 0.5849 -0.122743 - endloop - endfacet - facet normal -0.623613 0.623613 -0.471396 - outer loop - vertex 0.330861 0.670438 -0.200848 - vertex 0.353963 0.638641 -0.273474 - vertex 0.261359 0.546037 -0.273474 - endloop - endfacet - facet normal -0.623613 0.623613 -0.471396 - outer loop - vertex 0.330861 0.670438 -0.200848 - vertex 0.261359 0.546037 -0.273474 - vertex 0.229562 0.569139 -0.200848 - endloop - endfacet - facet normal -0.5606 0.5606 -0.609471 - outer loop - vertex 0.353963 0.638641 -0.273474 - vertex 0.383776 0.597607 -0.338641 - vertex 0.302393 0.516224 -0.338641 - endloop - endfacet - facet normal -0.5606 0.5606 -0.609471 - outer loop - vertex 0.353963 0.638641 -0.273474 - vertex 0.302393 0.516224 -0.338641 - vertex 0.261359 0.546037 -0.273474 - endloop - endfacet - facet normal -0.482114 0.482114 -0.731527 - outer loop - vertex 0.383776 0.597607 -0.338641 - vertex 0.419487 0.548454 -0.39457 - vertex 0.351546 0.480513 -0.39457 - endloop - endfacet - facet normal -0.482114 0.482114 -0.731527 - outer loop - vertex 0.383776 0.597607 -0.338641 - vertex 0.351546 0.480513 -0.39457 - vertex 0.302393 0.516224 -0.338641 - endloop - endfacet - facet normal -0.390111 0.390111 -0.834043 - outer loop - vertex 0.419487 0.548454 -0.39457 - vertex 0.460123 0.492525 -0.439737 - vertex 0.407475 0.439877 -0.439737 - endloop - endfacet - facet normal -0.390111 0.390111 -0.834043 - outer loop - vertex 0.419487 0.548454 -0.39457 - vertex 0.407475 0.439877 -0.439737 - vertex 0.351546 0.480513 -0.39457 - endloop - endfacet - facet normal -0.287002 0.287002 -0.913926 - outer loop - vertex 0.460123 0.492525 -0.439737 - vertex 0.504573 0.431344 -0.472909 - vertex 0.468656 0.395427 -0.472909 - endloop - endfacet - facet normal -0.287002 0.287002 -0.913926 - outer loop - vertex 0.460123 0.492525 -0.439737 - vertex 0.468656 0.395427 -0.472909 - vertex 0.407475 0.439877 -0.439737 - endloop - endfacet - facet normal -0.175616 0.175615 -0.968668 - outer loop - vertex 0.504573 0.431344 -0.472909 - vertex 0.551627 0.36658 -0.493181 - vertex 0.53342 0.348373 -0.493181 - endloop - endfacet - facet normal -0.175615 0.175615 -0.968668 - outer loop - vertex 0.504573 0.431344 -0.472909 - vertex 0.53342 0.348373 -0.493181 - vertex 0.468656 0.395427 -0.472909 - endloop - endfacet - facet normal -0.221289 0.112752 0.968668 - outer loop - vertex 0.53342 0.348373 0.493181 - vertex 0.468656 0.395427 0.472909 - vertex 0.445596 0.350169 0.472909 - endloop - endfacet - facet normal -0.221289 0.112752 0.968668 - outer loop - vertex 0.53342 0.348373 0.493181 - vertex 0.445596 0.350169 0.472909 - vertex 0.521731 0.325431 0.493181 - endloop - endfacet - facet normal -0.361643 0.184267 0.913925 - outer loop - vertex 0.468656 0.395427 0.472909 - vertex 0.407475 0.439877 0.439737 - vertex 0.373674 0.373538 0.439737 - endloop - endfacet - facet normal -0.361643 0.184267 0.913925 - outer loop - vertex 0.468656 0.395427 0.472909 - vertex 0.373674 0.373538 0.439737 - vertex 0.445596 0.350169 0.472909 - endloop - endfacet - facet normal -0.491568 0.250466 0.834043 - outer loop - vertex 0.407475 0.439877 0.439737 - vertex 0.351546 0.480513 0.39457 - vertex 0.307924 0.394901 0.39457 - endloop - endfacet - facet normal -0.491568 0.250466 0.834043 - outer loop - vertex 0.407475 0.439877 0.439737 - vertex 0.307924 0.394901 0.39457 - vertex 0.373674 0.373538 0.439737 - endloop - endfacet - facet normal -0.607499 0.309536 0.731527 - outer loop - vertex 0.351546 0.480513 0.39457 - vertex 0.302393 0.516224 0.338641 - vertex 0.250142 0.413676 0.338641 - endloop - endfacet - facet normal -0.607499 0.309536 0.731527 - outer loop - vertex 0.351546 0.480513 0.39457 - vertex 0.250142 0.413676 0.338641 - vertex 0.307924 0.394901 0.39457 - endloop - endfacet - facet normal -0.706398 0.359928 0.609471 - outer loop - vertex 0.302393 0.516224 0.338641 - vertex 0.261359 0.546037 0.273474 - vertex 0.201904 0.429349 0.273474 - endloop - endfacet - facet normal -0.706398 0.359928 0.609471 - outer loop - vertex 0.302393 0.516224 0.338641 - vertex 0.201904 0.429349 0.273474 - vertex 0.250142 0.413676 0.338641 - endloop - endfacet - facet normal -0.785798 0.400384 0.471396 - outer loop - vertex 0.261359 0.546037 0.273474 - vertex 0.229562 0.569139 0.200848 - vertex 0.164524 0.441495 0.200848 - endloop - endfacet - facet normal -0.785798 0.400384 0.471396 - outer loop - vertex 0.261359 0.546037 0.273474 - vertex 0.164524 0.441495 0.200848 - vertex 0.201904 0.429349 0.273474 - endloop - endfacet - facet normal -0.843819 0.429947 0.321116 - outer loop - vertex 0.229562 0.569139 0.200848 - vertex 0.207869 0.5849 0.122743 - vertex 0.139023 0.449781 0.122743 - endloop - endfacet - facet normal -0.843819 0.429947 0.321116 - outer loop - vertex 0.229562 0.569139 0.200848 - vertex 0.139023 0.449781 0.122743 - vertex 0.164524 0.441495 0.200848 - endloop - endfacet - facet normal -0.879146 0.447947 0.162622 - outer loop - vertex 0.207869 0.5849 0.122743 - vertex 0.196873 0.592889 0.0412897 - vertex 0.126096 0.453981 0.0412897 - endloop - endfacet - facet normal -0.879146 0.447947 0.162622 - outer loop - vertex 0.207869 0.5849 0.122743 - vertex 0.126096 0.453981 0.0412897 - vertex 0.139023 0.449781 0.122743 - endloop - endfacet - facet normal -0.891007 0.45399 0 - outer loop - vertex 0.196873 0.592889 0.0412897 - vertex 0.196873 0.592889 -0.0412897 - vertex 0.126096 0.453981 -0.0412897 - endloop - endfacet - facet normal -0.891007 0.45399 -1.60779e-07 - outer loop - vertex 0.196873 0.592889 0.0412897 - vertex 0.126096 0.453981 -0.0412897 - vertex 0.126096 0.453981 0.0412897 - endloop - endfacet - facet normal -0.879146 0.447947 -0.162622 - outer loop - vertex 0.196873 0.592889 -0.0412897 - vertex 0.207869 0.5849 -0.122743 - vertex 0.139023 0.449781 -0.122743 - endloop - endfacet - facet normal -0.879146 0.447947 -0.162622 - outer loop - vertex 0.196873 0.592889 -0.0412897 - vertex 0.139023 0.449781 -0.122743 - vertex 0.126096 0.453981 -0.0412897 - endloop - endfacet - facet normal -0.843819 0.429947 -0.321116 - outer loop - vertex 0.207869 0.5849 -0.122743 - vertex 0.229562 0.569139 -0.200848 - vertex 0.164524 0.441495 -0.200848 - endloop - endfacet - facet normal -0.843819 0.429947 -0.321116 - outer loop - vertex 0.207869 0.5849 -0.122743 - vertex 0.164524 0.441495 -0.200848 - vertex 0.139023 0.449781 -0.122743 - endloop - endfacet - facet normal -0.785798 0.400384 -0.471396 - outer loop - vertex 0.229562 0.569139 -0.200848 - vertex 0.261359 0.546037 -0.273474 - vertex 0.201904 0.429349 -0.273474 - endloop - endfacet - facet normal -0.785798 0.400384 -0.471396 - outer loop - vertex 0.229562 0.569139 -0.200848 - vertex 0.201904 0.429349 -0.273474 - vertex 0.164524 0.441495 -0.200848 - endloop - endfacet - facet normal -0.706398 0.359927 -0.609471 - outer loop - vertex 0.261359 0.546037 -0.273474 - vertex 0.302393 0.516224 -0.338641 - vertex 0.250143 0.413676 -0.338641 - endloop - endfacet - facet normal -0.706398 0.359927 -0.609471 - outer loop - vertex 0.261359 0.546037 -0.273474 - vertex 0.250143 0.413676 -0.338641 - vertex 0.201904 0.429349 -0.273474 - endloop - endfacet - facet normal -0.607499 0.309536 -0.731527 - outer loop - vertex 0.302393 0.516224 -0.338641 - vertex 0.351546 0.480513 -0.39457 - vertex 0.307925 0.394901 -0.39457 - endloop - endfacet - facet normal -0.607499 0.309536 -0.731527 - outer loop - vertex 0.302393 0.516224 -0.338641 - vertex 0.307925 0.394901 -0.39457 - vertex 0.250143 0.413676 -0.338641 - endloop - endfacet - facet normal -0.491568 0.250467 -0.834043 - outer loop - vertex 0.351546 0.480513 -0.39457 - vertex 0.407475 0.439877 -0.439737 - vertex 0.373674 0.373538 -0.439737 - endloop - endfacet - facet normal -0.491568 0.250466 -0.834043 - outer loop - vertex 0.351546 0.480513 -0.39457 - vertex 0.373674 0.373538 -0.439737 - vertex 0.307925 0.394901 -0.39457 - endloop - endfacet - facet normal -0.361643 0.184267 -0.913926 - outer loop - vertex 0.407475 0.439877 -0.439737 - vertex 0.468656 0.395427 -0.472909 - vertex 0.445596 0.350169 -0.472909 - endloop - endfacet - facet normal -0.361643 0.184267 -0.913926 - outer loop - vertex 0.407475 0.439877 -0.439737 - vertex 0.445596 0.350169 -0.472909 - vertex 0.373674 0.373538 -0.439737 - endloop - endfacet - facet normal -0.221288 0.112752 -0.968668 - outer loop - vertex 0.468656 0.395427 -0.472909 - vertex 0.53342 0.348373 -0.493181 - vertex 0.521731 0.325431 -0.493181 - endloop - endfacet - facet normal -0.221288 0.112752 -0.968668 - outer loop - vertex 0.468656 0.395427 -0.472909 - vertex 0.521731 0.325431 -0.493181 - vertex 0.445596 0.350169 -0.472909 - endloop - endfacet - facet normal -0.2453 0.0388517 0.968668 - outer loop - vertex 0.521731 0.325431 0.493181 - vertex 0.445596 0.350169 0.472909 - vertex 0.43765 0.3 0.472909 - endloop - endfacet - facet normal -0.2453 0.0388516 0.968668 - outer loop - vertex 0.521731 0.325431 0.493181 - vertex 0.43765 0.3 0.472909 - vertex 0.517703 0.3 0.493181 - endloop - endfacet - facet normal -0.400885 0.0634939 0.913926 - outer loop - vertex 0.445596 0.350169 0.472909 - vertex 0.373674 0.373538 0.439737 - vertex 0.362026 0.3 0.439737 - endloop - endfacet - facet normal -0.400885 0.0634939 0.913926 - outer loop - vertex 0.445596 0.350169 0.472909 - vertex 0.362026 0.3 0.439737 - vertex 0.43765 0.3 0.472909 - endloop - endfacet - facet normal -0.544907 0.0863047 0.834043 - outer loop - vertex 0.373674 0.373538 0.439737 - vertex 0.307924 0.394901 0.39457 - vertex 0.292894 0.3 0.39457 - endloop - endfacet - facet normal -0.544907 0.0863048 0.834043 - outer loop - vertex 0.373674 0.373538 0.439737 - vertex 0.292894 0.3 0.39457 - vertex 0.362026 0.3 0.439737 - endloop - endfacet - facet normal -0.673418 0.106659 0.731527 - outer loop - vertex 0.307924 0.394901 0.39457 - vertex 0.250142 0.413676 0.338641 - vertex 0.232138 0.3 0.338641 - endloop - endfacet - facet normal -0.673418 0.106659 0.731527 - outer loop - vertex 0.307924 0.394901 0.39457 - vertex 0.232138 0.3 0.338641 - vertex 0.292894 0.3 0.39457 - endloop - endfacet - facet normal -0.783048 0.124023 0.609471 - outer loop - vertex 0.250142 0.413676 0.338641 - vertex 0.201904 0.429349 0.273474 - vertex 0.181417 0.3 0.273474 - endloop - endfacet - facet normal -0.783048 0.124023 0.609471 - outer loop - vertex 0.250142 0.413676 0.338641 - vertex 0.181417 0.3 0.273474 - vertex 0.232138 0.3 0.338641 - endloop - endfacet - facet normal -0.871064 0.137963 0.471396 - outer loop - vertex 0.201904 0.429349 0.273474 - vertex 0.164524 0.441495 0.200848 - vertex 0.142113 0.3 0.200848 - endloop - endfacet - facet normal -0.871064 0.137963 0.471396 - outer loop - vertex 0.201904 0.429349 0.273474 - vertex 0.142113 0.3 0.200848 - vertex 0.181417 0.3 0.273474 - endloop - endfacet - facet normal -0.93538 0.14815 0.321116 - outer loop - vertex 0.164524 0.441495 0.200848 - vertex 0.139023 0.449781 0.122743 - vertex 0.1153 0.3 0.122743 - endloop - endfacet - facet normal -0.93538 0.14815 0.321116 - outer loop - vertex 0.164524 0.441495 0.200848 - vertex 0.1153 0.3 0.122743 - vertex 0.142113 0.3 0.200848 - endloop - endfacet - facet normal -0.974541 0.154352 0.162622 - outer loop - vertex 0.139023 0.449781 0.122743 - vertex 0.126096 0.453981 0.0412897 - vertex 0.101708 0.3 0.0412897 - endloop - endfacet - facet normal -0.974541 0.154352 0.162622 - outer loop - vertex 0.139023 0.449781 0.122743 - vertex 0.101708 0.3 0.0412897 - vertex 0.1153 0.3 0.122743 - endloop - endfacet - facet normal -0.987688 0.156434 -1.78225e-07 - outer loop - vertex 0.126096 0.453981 0.0412897 - vertex 0.126096 0.453981 -0.0412897 - vertex 0.101708 0.3 -0.0412897 - endloop - endfacet - facet normal -0.987688 0.156434 -8.91125e-08 - outer loop - vertex 0.126096 0.453981 0.0412897 - vertex 0.101708 0.3 -0.0412897 - vertex 0.101708 0.3 0.0412897 - endloop - endfacet - facet normal -0.974541 0.154352 -0.162622 - outer loop - vertex 0.126096 0.453981 -0.0412897 - vertex 0.139023 0.449781 -0.122743 - vertex 0.1153 0.3 -0.122743 - endloop - endfacet - facet normal -0.974541 0.154352 -0.162622 - outer loop - vertex 0.126096 0.453981 -0.0412897 - vertex 0.1153 0.3 -0.122743 - vertex 0.101708 0.3 -0.0412897 - endloop - endfacet - facet normal -0.93538 0.14815 -0.321116 - outer loop - vertex 0.139023 0.449781 -0.122743 - vertex 0.164524 0.441495 -0.200848 - vertex 0.142113 0.3 -0.200848 - endloop - endfacet - facet normal -0.93538 0.14815 -0.321116 - outer loop - vertex 0.139023 0.449781 -0.122743 - vertex 0.142113 0.3 -0.200848 - vertex 0.1153 0.3 -0.122743 - endloop - endfacet - facet normal -0.871064 0.137963 -0.471396 - outer loop - vertex 0.164524 0.441495 -0.200848 - vertex 0.201904 0.429349 -0.273474 - vertex 0.181417 0.3 -0.273474 - endloop - endfacet - facet normal -0.871064 0.137963 -0.471396 - outer loop - vertex 0.164524 0.441495 -0.200848 - vertex 0.181417 0.3 -0.273474 - vertex 0.142113 0.3 -0.200848 - endloop - endfacet - facet normal -0.783048 0.124023 -0.609471 - outer loop - vertex 0.201904 0.429349 -0.273474 - vertex 0.250143 0.413676 -0.338641 - vertex 0.232138 0.3 -0.338641 - endloop - endfacet - facet normal -0.783048 0.124022 -0.609471 - outer loop - vertex 0.201904 0.429349 -0.273474 - vertex 0.232138 0.3 -0.338641 - vertex 0.181417 0.3 -0.273474 - endloop - endfacet - facet normal -0.673418 0.106659 -0.731527 - outer loop - vertex 0.250143 0.413676 -0.338641 - vertex 0.307925 0.394901 -0.39457 - vertex 0.292894 0.3 -0.39457 - endloop - endfacet - facet normal -0.673418 0.106659 -0.731527 - outer loop - vertex 0.250143 0.413676 -0.338641 - vertex 0.292894 0.3 -0.39457 - vertex 0.232138 0.3 -0.338641 - endloop - endfacet - facet normal -0.544908 0.0863048 -0.834043 - outer loop - vertex 0.307925 0.394901 -0.39457 - vertex 0.373674 0.373538 -0.439737 - vertex 0.362026 0.3 -0.439737 - endloop - endfacet - facet normal -0.544908 0.0863048 -0.834043 - outer loop - vertex 0.307925 0.394901 -0.39457 - vertex 0.362026 0.3 -0.439737 - vertex 0.292894 0.3 -0.39457 - endloop - endfacet - facet normal -0.400885 0.0634939 -0.913926 - outer loop - vertex 0.373674 0.373538 -0.439737 - vertex 0.445596 0.350169 -0.472909 - vertex 0.43765 0.3 -0.472909 - endloop - endfacet - facet normal -0.400885 0.0634939 -0.913926 - outer loop - vertex 0.373674 0.373538 -0.439737 - vertex 0.43765 0.3 -0.472909 - vertex 0.362026 0.3 -0.439737 - endloop - endfacet - facet normal -0.2453 0.0388516 -0.968668 - outer loop - vertex 0.445596 0.350169 -0.472909 - vertex 0.521731 0.325431 -0.493181 - vertex 0.517703 0.3 -0.493181 - endloop - endfacet - facet normal -0.2453 0.0388517 -0.968668 - outer loop - vertex 0.445596 0.350169 -0.472909 - vertex 0.517703 0.3 -0.493181 - vertex 0.43765 0.3 -0.472909 - endloop - endfacet - facet normal -0.2453 -0.0388517 0.968668 - outer loop - vertex 0.517703 0.3 0.493181 - vertex 0.43765 0.3 0.472909 - vertex 0.445596 0.249831 0.472909 - endloop - endfacet - facet normal -0.2453 -0.0388517 0.968668 - outer loop - vertex 0.517703 0.3 0.493181 - vertex 0.445596 0.249831 0.472909 - vertex 0.521731 0.274569 0.493181 - endloop - endfacet - facet normal -0.400885 -0.0634939 0.913926 - outer loop - vertex 0.43765 0.3 0.472909 - vertex 0.362026 0.3 0.439737 - vertex 0.373674 0.226462 0.439737 - endloop - endfacet - facet normal -0.400885 -0.0634939 0.913926 - outer loop - vertex 0.43765 0.3 0.472909 - vertex 0.373674 0.226462 0.439737 - vertex 0.445596 0.249831 0.472909 - endloop - endfacet - facet normal -0.544907 -0.0863049 0.834043 - outer loop - vertex 0.362026 0.3 0.439737 - vertex 0.292894 0.3 0.39457 - vertex 0.307925 0.205099 0.39457 - endloop - endfacet - facet normal -0.544907 -0.0863048 0.834043 - outer loop - vertex 0.362026 0.3 0.439737 - vertex 0.307925 0.205099 0.39457 - vertex 0.373674 0.226462 0.439737 - endloop - endfacet - facet normal -0.673418 -0.106659 0.731527 - outer loop - vertex 0.292894 0.3 0.39457 - vertex 0.232138 0.3 0.338641 - vertex 0.250142 0.186324 0.338641 - endloop - endfacet - facet normal -0.673418 -0.106659 0.731527 - outer loop - vertex 0.292894 0.3 0.39457 - vertex 0.250142 0.186324 0.338641 - vertex 0.307925 0.205099 0.39457 - endloop - endfacet - facet normal -0.783048 -0.124023 0.609471 - outer loop - vertex 0.232138 0.3 0.338641 - vertex 0.181417 0.3 0.273474 - vertex 0.201904 0.170651 0.273474 - endloop - endfacet - facet normal -0.783048 -0.124023 0.609471 - outer loop - vertex 0.232138 0.3 0.338641 - vertex 0.201904 0.170651 0.273474 - vertex 0.250142 0.186324 0.338641 - endloop - endfacet - facet normal -0.871064 -0.137963 0.471396 - outer loop - vertex 0.181417 0.3 0.273474 - vertex 0.142113 0.3 0.200848 - vertex 0.164524 0.158505 0.200848 - endloop - endfacet - facet normal -0.871064 -0.137963 0.471396 - outer loop - vertex 0.181417 0.3 0.273474 - vertex 0.164524 0.158505 0.200848 - vertex 0.201904 0.170651 0.273474 - endloop - endfacet - facet normal -0.93538 -0.14815 0.321116 - outer loop - vertex 0.142113 0.3 0.200848 - vertex 0.1153 0.3 0.122743 - vertex 0.139023 0.150219 0.122743 - endloop - endfacet - facet normal -0.93538 -0.14815 0.321116 - outer loop - vertex 0.142113 0.3 0.200848 - vertex 0.139023 0.150219 0.122743 - vertex 0.164524 0.158505 0.200848 - endloop - endfacet - facet normal -0.974541 -0.154352 0.162622 - outer loop - vertex 0.1153 0.3 0.122743 - vertex 0.101708 0.3 0.0412897 - vertex 0.126096 0.146019 0.0412897 - endloop - endfacet - facet normal -0.974541 -0.154352 0.162622 - outer loop - vertex 0.1153 0.3 0.122743 - vertex 0.126096 0.146019 0.0412897 - vertex 0.139023 0.150219 0.122743 - endloop - endfacet - facet normal -0.987688 -0.156435 -8.91125e-08 - outer loop - vertex 0.101708 0.3 0.0412897 - vertex 0.101708 0.3 -0.0412897 - vertex 0.126096 0.146019 -0.0412897 - endloop - endfacet - facet normal -0.987688 -0.156435 -1.78225e-07 - outer loop - vertex 0.101708 0.3 0.0412897 - vertex 0.126096 0.146019 -0.0412897 - vertex 0.126096 0.146019 0.0412897 - endloop - endfacet - facet normal -0.974541 -0.154352 -0.162622 - outer loop - vertex 0.101708 0.3 -0.0412897 - vertex 0.1153 0.3 -0.122743 - vertex 0.139023 0.150219 -0.122743 - endloop - endfacet - facet normal -0.974541 -0.154352 -0.162622 - outer loop - vertex 0.101708 0.3 -0.0412897 - vertex 0.139023 0.150219 -0.122743 - vertex 0.126096 0.146019 -0.0412897 - endloop - endfacet - facet normal -0.93538 -0.14815 -0.321116 - outer loop - vertex 0.1153 0.3 -0.122743 - vertex 0.142113 0.3 -0.200848 - vertex 0.164524 0.158505 -0.200848 - endloop - endfacet - facet normal -0.93538 -0.14815 -0.321116 - outer loop - vertex 0.1153 0.3 -0.122743 - vertex 0.164524 0.158505 -0.200848 - vertex 0.139023 0.150219 -0.122743 - endloop - endfacet - facet normal -0.871064 -0.137963 -0.471396 - outer loop - vertex 0.142113 0.3 -0.200848 - vertex 0.181417 0.3 -0.273474 - vertex 0.201904 0.170651 -0.273474 - endloop - endfacet - facet normal -0.871064 -0.137963 -0.471396 - outer loop - vertex 0.142113 0.3 -0.200848 - vertex 0.201904 0.170651 -0.273474 - vertex 0.164524 0.158505 -0.200848 - endloop - endfacet - facet normal -0.783048 -0.124023 -0.609471 - outer loop - vertex 0.181417 0.3 -0.273474 - vertex 0.232138 0.3 -0.338641 - vertex 0.250143 0.186324 -0.338641 - endloop - endfacet - facet normal -0.783048 -0.124023 -0.609471 - outer loop - vertex 0.181417 0.3 -0.273474 - vertex 0.250143 0.186324 -0.338641 - vertex 0.201904 0.170651 -0.273474 - endloop - endfacet - facet normal -0.673418 -0.106659 -0.731527 - outer loop - vertex 0.232138 0.3 -0.338641 - vertex 0.292894 0.3 -0.39457 - vertex 0.307925 0.205099 -0.39457 - endloop - endfacet - facet normal -0.673418 -0.106659 -0.731527 - outer loop - vertex 0.232138 0.3 -0.338641 - vertex 0.307925 0.205099 -0.39457 - vertex 0.250143 0.186324 -0.338641 - endloop - endfacet - facet normal -0.544908 -0.086305 -0.834043 - outer loop - vertex 0.292894 0.3 -0.39457 - vertex 0.362026 0.3 -0.439737 - vertex 0.373674 0.226462 -0.439737 - endloop - endfacet - facet normal -0.544907 -0.0863049 -0.834043 - outer loop - vertex 0.292894 0.3 -0.39457 - vertex 0.373674 0.226462 -0.439737 - vertex 0.307925 0.205099 -0.39457 - endloop - endfacet - facet normal -0.400885 -0.0634941 -0.913925 - outer loop - vertex 0.362026 0.3 -0.439737 - vertex 0.43765 0.3 -0.472909 - vertex 0.445596 0.249831 -0.472909 - endloop - endfacet - facet normal -0.400885 -0.063494 -0.913926 - outer loop - vertex 0.362026 0.3 -0.439737 - vertex 0.445596 0.249831 -0.472909 - vertex 0.373674 0.226462 -0.439737 - endloop - endfacet - facet normal -0.2453 -0.0388516 -0.968668 - outer loop - vertex 0.43765 0.3 -0.472909 - vertex 0.517703 0.3 -0.493181 - vertex 0.521731 0.274569 -0.493181 - endloop - endfacet - facet normal -0.2453 -0.0388518 -0.968668 - outer loop - vertex 0.43765 0.3 -0.472909 - vertex 0.521731 0.274569 -0.493181 - vertex 0.445596 0.249831 -0.472909 - endloop - endfacet - facet normal -0.221289 -0.112752 0.968668 - outer loop - vertex 0.521731 0.274569 0.493181 - vertex 0.445596 0.249831 0.472909 - vertex 0.468656 0.204573 0.472909 - endloop - endfacet - facet normal -0.221289 -0.112752 0.968668 - outer loop - vertex 0.521731 0.274569 0.493181 - vertex 0.468656 0.204573 0.472909 - vertex 0.53342 0.251627 0.493181 - endloop - endfacet - facet normal -0.361643 -0.184267 0.913926 - outer loop - vertex 0.445596 0.249831 0.472909 - vertex 0.373674 0.226462 0.439737 - vertex 0.407475 0.160123 0.439737 - endloop - endfacet - facet normal -0.361643 -0.184267 0.913926 - outer loop - vertex 0.445596 0.249831 0.472909 - vertex 0.407475 0.160123 0.439737 - vertex 0.468656 0.204573 0.472909 - endloop - endfacet - facet normal -0.491568 -0.250466 0.834043 - outer loop - vertex 0.373674 0.226462 0.439737 - vertex 0.307925 0.205099 0.39457 - vertex 0.351546 0.119487 0.39457 - endloop - endfacet - facet normal -0.491568 -0.250466 0.834043 - outer loop - vertex 0.373674 0.226462 0.439737 - vertex 0.351546 0.119487 0.39457 - vertex 0.407475 0.160123 0.439737 - endloop - endfacet - facet normal -0.607499 -0.309536 0.731527 - outer loop - vertex 0.307925 0.205099 0.39457 - vertex 0.250142 0.186324 0.338641 - vertex 0.302393 0.0837761 0.338641 - endloop - endfacet - facet normal -0.607499 -0.309536 0.731527 - outer loop - vertex 0.307925 0.205099 0.39457 - vertex 0.302393 0.0837761 0.338641 - vertex 0.351546 0.119487 0.39457 - endloop - endfacet - facet normal -0.706398 -0.359928 0.609471 - outer loop - vertex 0.250142 0.186324 0.338641 - vertex 0.201904 0.170651 0.273474 - vertex 0.261359 0.0539629 0.273474 - endloop - endfacet - facet normal -0.706398 -0.359928 0.609471 - outer loop - vertex 0.250142 0.186324 0.338641 - vertex 0.261359 0.0539629 0.273474 - vertex 0.302393 0.0837761 0.338641 - endloop - endfacet - facet normal -0.785798 -0.400384 0.471396 - outer loop - vertex 0.201904 0.170651 0.273474 - vertex 0.164524 0.158505 0.200848 - vertex 0.229562 0.0308609 0.200848 - endloop - endfacet - facet normal -0.785798 -0.400384 0.471396 - outer loop - vertex 0.201904 0.170651 0.273474 - vertex 0.229562 0.0308609 0.200848 - vertex 0.261359 0.0539629 0.273474 - endloop - endfacet - facet normal -0.843819 -0.429947 0.321116 - outer loop - vertex 0.164524 0.158505 0.200848 - vertex 0.139023 0.150219 0.122743 - vertex 0.207869 0.0151004 0.122743 - endloop - endfacet - facet normal -0.843819 -0.429947 0.321116 - outer loop - vertex 0.164524 0.158505 0.200848 - vertex 0.207869 0.0151004 0.122743 - vertex 0.229562 0.0308609 0.200848 - endloop - endfacet - facet normal -0.879146 -0.447947 0.162622 - outer loop - vertex 0.139023 0.150219 0.122743 - vertex 0.126096 0.146019 0.0412897 - vertex 0.196873 0.00711112 0.0412897 - endloop - endfacet - facet normal -0.879146 -0.447947 0.162622 - outer loop - vertex 0.139023 0.150219 0.122743 - vertex 0.196873 0.00711112 0.0412897 - vertex 0.207869 0.0151004 0.122743 - endloop - endfacet - facet normal -0.891006 -0.453991 -1.60779e-07 - outer loop - vertex 0.126096 0.146019 0.0412897 - vertex 0.126096 0.146019 -0.0412897 - vertex 0.196873 0.00711113 -0.0412897 - endloop - endfacet - facet normal -0.891006 -0.453991 -1.73579e-07 - outer loop - vertex 0.126096 0.146019 0.0412897 - vertex 0.196873 0.00711113 -0.0412897 - vertex 0.196873 0.00711112 0.0412897 - endloop - endfacet - facet normal -0.879146 -0.447947 -0.162622 - outer loop - vertex 0.126096 0.146019 -0.0412897 - vertex 0.139023 0.150219 -0.122743 - vertex 0.207869 0.0151004 -0.122743 - endloop - endfacet - facet normal -0.879146 -0.447947 -0.162622 - outer loop - vertex 0.126096 0.146019 -0.0412897 - vertex 0.207869 0.0151004 -0.122743 - vertex 0.196873 0.00711113 -0.0412897 - endloop - endfacet - facet normal -0.843819 -0.429947 -0.321116 - outer loop - vertex 0.139023 0.150219 -0.122743 - vertex 0.164524 0.158505 -0.200848 - vertex 0.229562 0.0308609 -0.200848 - endloop - endfacet - facet normal -0.843819 -0.429947 -0.321116 - outer loop - vertex 0.139023 0.150219 -0.122743 - vertex 0.229562 0.0308609 -0.200848 - vertex 0.207869 0.0151004 -0.122743 - endloop - endfacet - facet normal -0.785798 -0.400384 -0.471396 - outer loop - vertex 0.164524 0.158505 -0.200848 - vertex 0.201904 0.170651 -0.273474 - vertex 0.261359 0.0539629 -0.273474 - endloop - endfacet - facet normal -0.785798 -0.400384 -0.471396 - outer loop - vertex 0.164524 0.158505 -0.200848 - vertex 0.261359 0.0539629 -0.273474 - vertex 0.229562 0.0308609 -0.200848 - endloop - endfacet - facet normal -0.706398 -0.359928 -0.609471 - outer loop - vertex 0.201904 0.170651 -0.273474 - vertex 0.250143 0.186324 -0.338641 - vertex 0.302393 0.0837761 -0.338641 - endloop - endfacet - facet normal -0.706398 -0.359928 -0.609471 - outer loop - vertex 0.201904 0.170651 -0.273474 - vertex 0.302393 0.0837761 -0.338641 - vertex 0.261359 0.0539629 -0.273474 - endloop - endfacet - facet normal -0.607499 -0.309536 -0.731527 - outer loop - vertex 0.250143 0.186324 -0.338641 - vertex 0.307925 0.205099 -0.39457 - vertex 0.351546 0.119487 -0.39457 - endloop - endfacet - facet normal -0.607499 -0.309536 -0.731527 - outer loop - vertex 0.250143 0.186324 -0.338641 - vertex 0.351546 0.119487 -0.39457 - vertex 0.302393 0.0837761 -0.338641 - endloop - endfacet - facet normal -0.491568 -0.250466 -0.834043 - outer loop - vertex 0.307925 0.205099 -0.39457 - vertex 0.373674 0.226462 -0.439737 - vertex 0.407475 0.160123 -0.439737 - endloop - endfacet - facet normal -0.491568 -0.250467 -0.834043 - outer loop - vertex 0.307925 0.205099 -0.39457 - vertex 0.407475 0.160123 -0.439737 - vertex 0.351546 0.119487 -0.39457 - endloop - endfacet - facet normal -0.361643 -0.184266 -0.913926 - outer loop - vertex 0.373674 0.226462 -0.439737 - vertex 0.445596 0.249831 -0.472909 - vertex 0.468656 0.204573 -0.472909 - endloop - endfacet - facet normal -0.361644 -0.184266 -0.913926 - outer loop - vertex 0.373674 0.226462 -0.439737 - vertex 0.468656 0.204573 -0.472909 - vertex 0.407475 0.160123 -0.439737 - endloop - endfacet - facet normal -0.221288 -0.112752 -0.968668 - outer loop - vertex 0.445596 0.249831 -0.472909 - vertex 0.521731 0.274569 -0.493181 - vertex 0.53342 0.251627 -0.493181 - endloop - endfacet - facet normal -0.221288 -0.112752 -0.968668 - outer loop - vertex 0.445596 0.249831 -0.472909 - vertex 0.53342 0.251627 -0.493181 - vertex 0.468656 0.204573 -0.472909 - endloop - endfacet - facet normal -0.175616 -0.175616 0.968668 - outer loop - vertex 0.53342 0.251627 0.493181 - vertex 0.468656 0.204573 0.472909 - vertex 0.504573 0.168656 0.472909 - endloop - endfacet - facet normal -0.175616 -0.175616 0.968668 - outer loop - vertex 0.53342 0.251627 0.493181 - vertex 0.504573 0.168656 0.472909 - vertex 0.551627 0.23342 0.493181 - endloop - endfacet - facet normal -0.287002 -0.287002 0.913926 - outer loop - vertex 0.468656 0.204573 0.472909 - vertex 0.407475 0.160123 0.439737 - vertex 0.460123 0.107475 0.439737 - endloop - endfacet - facet normal -0.287002 -0.287002 0.913926 - outer loop - vertex 0.468656 0.204573 0.472909 - vertex 0.460123 0.107475 0.439737 - vertex 0.504573 0.168656 0.472909 - endloop - endfacet - facet normal -0.390111 -0.390111 0.834043 - outer loop - vertex 0.407475 0.160123 0.439737 - vertex 0.351546 0.119487 0.39457 - vertex 0.419487 0.0515457 0.39457 - endloop - endfacet - facet normal -0.390111 -0.390111 0.834043 - outer loop - vertex 0.407475 0.160123 0.439737 - vertex 0.419487 0.0515457 0.39457 - vertex 0.460123 0.107475 0.439737 - endloop - endfacet - facet normal -0.482114 -0.482114 0.731527 - outer loop - vertex 0.351546 0.119487 0.39457 - vertex 0.302393 0.0837761 0.338641 - vertex 0.383776 0.0023934 0.338641 - endloop - endfacet - facet normal -0.482114 -0.482114 0.731527 - outer loop - vertex 0.351546 0.119487 0.39457 - vertex 0.383776 0.0023934 0.338641 - vertex 0.419487 0.0515457 0.39457 - endloop - endfacet - facet normal -0.5606 -0.560601 0.609471 - outer loop - vertex 0.302393 0.0837761 0.338641 - vertex 0.261359 0.0539629 0.273474 - vertex 0.353963 -0.038641 0.273474 - endloop - endfacet - facet normal -0.5606 -0.560601 0.60947 - outer loop - vertex 0.302393 0.0837761 0.338641 - vertex 0.353963 -0.038641 0.273474 - vertex 0.383776 0.0023934 0.338641 - endloop - endfacet - facet normal -0.623613 -0.623613 0.471396 - outer loop - vertex 0.261359 0.0539629 0.273474 - vertex 0.229562 0.0308609 0.200848 - vertex 0.330861 -0.0704381 0.200848 - endloop - endfacet - facet normal -0.623613 -0.623613 0.471396 - outer loop - vertex 0.261359 0.0539629 0.273474 - vertex 0.330861 -0.0704381 0.200848 - vertex 0.353963 -0.038641 0.273474 - endloop - endfacet - facet normal -0.669658 -0.669658 0.321116 - outer loop - vertex 0.229562 0.0308609 0.200848 - vertex 0.207869 0.0151004 0.122743 - vertex 0.3151 -0.0921307 0.122743 - endloop - endfacet - facet normal -0.669658 -0.669658 0.321116 - outer loop - vertex 0.229562 0.0308609 0.200848 - vertex 0.3151 -0.0921307 0.122743 - vertex 0.330861 -0.0704381 0.200848 - endloop - endfacet - facet normal -0.697694 -0.697694 0.162622 - outer loop - vertex 0.207869 0.0151004 0.122743 - vertex 0.196873 0.00711112 0.0412897 - vertex 0.307111 -0.103127 0.0412897 - endloop - endfacet - facet normal -0.697694 -0.697694 0.162622 - outer loop - vertex 0.207869 0.0151004 0.122743 - vertex 0.307111 -0.103127 0.0412897 - vertex 0.3151 -0.0921307 0.122743 - endloop - endfacet - facet normal -0.707107 -0.707107 -1.47532e-07 - outer loop - vertex 0.196873 0.00711112 0.0412897 - vertex 0.196873 0.00711113 -0.0412897 - vertex 0.307111 -0.103127 -0.0412897 - endloop - endfacet - facet normal -0.707107 -0.707107 0 - outer loop - vertex 0.196873 0.00711112 0.0412897 - vertex 0.307111 -0.103127 -0.0412897 - vertex 0.307111 -0.103127 0.0412897 - endloop - endfacet - facet normal -0.697694 -0.697694 -0.162622 - outer loop - vertex 0.196873 0.00711113 -0.0412897 - vertex 0.207869 0.0151004 -0.122743 - vertex 0.3151 -0.0921307 -0.122743 - endloop - endfacet - facet normal -0.697694 -0.697694 -0.162622 - outer loop - vertex 0.196873 0.00711113 -0.0412897 - vertex 0.3151 -0.0921307 -0.122743 - vertex 0.307111 -0.103127 -0.0412897 - endloop - endfacet - facet normal -0.669658 -0.669658 -0.321116 - outer loop - vertex 0.207869 0.0151004 -0.122743 - vertex 0.229562 0.0308609 -0.200848 - vertex 0.330861 -0.0704381 -0.200848 - endloop - endfacet - facet normal -0.669658 -0.669658 -0.321116 - outer loop - vertex 0.207869 0.0151004 -0.122743 - vertex 0.330861 -0.0704381 -0.200848 - vertex 0.3151 -0.0921307 -0.122743 - endloop - endfacet - facet normal -0.623613 -0.623613 -0.471396 - outer loop - vertex 0.229562 0.0308609 -0.200848 - vertex 0.261359 0.0539629 -0.273474 - vertex 0.353963 -0.038641 -0.273474 - endloop - endfacet - facet normal -0.623613 -0.623613 -0.471396 - outer loop - vertex 0.229562 0.0308609 -0.200848 - vertex 0.353963 -0.038641 -0.273474 - vertex 0.330861 -0.0704381 -0.200848 - endloop - endfacet - facet normal -0.5606 -0.560601 -0.609471 - outer loop - vertex 0.261359 0.0539629 -0.273474 - vertex 0.302393 0.0837761 -0.338641 - vertex 0.383776 0.00239342 -0.338641 - endloop - endfacet - facet normal -0.5606 -0.5606 -0.609471 - outer loop - vertex 0.261359 0.0539629 -0.273474 - vertex 0.383776 0.00239342 -0.338641 - vertex 0.353963 -0.038641 -0.273474 - endloop - endfacet - facet normal -0.482114 -0.482114 -0.731527 - outer loop - vertex 0.302393 0.0837761 -0.338641 - vertex 0.351546 0.119487 -0.39457 - vertex 0.419487 0.0515457 -0.39457 - endloop - endfacet - facet normal -0.482114 -0.482114 -0.731527 - outer loop - vertex 0.302393 0.0837761 -0.338641 - vertex 0.419487 0.0515457 -0.39457 - vertex 0.383776 0.00239342 -0.338641 - endloop - endfacet - facet normal -0.390111 -0.390111 -0.834043 - outer loop - vertex 0.351546 0.119487 -0.39457 - vertex 0.407475 0.160123 -0.439737 - vertex 0.460123 0.107475 -0.439737 - endloop - endfacet - facet normal -0.390111 -0.390111 -0.834043 - outer loop - vertex 0.351546 0.119487 -0.39457 - vertex 0.460123 0.107475 -0.439737 - vertex 0.419487 0.0515457 -0.39457 - endloop - endfacet - facet normal -0.287002 -0.287002 -0.913926 - outer loop - vertex 0.407475 0.160123 -0.439737 - vertex 0.468656 0.204573 -0.472909 - vertex 0.504573 0.168656 -0.472909 - endloop - endfacet - facet normal -0.287002 -0.287002 -0.913926 - outer loop - vertex 0.407475 0.160123 -0.439737 - vertex 0.504573 0.168656 -0.472909 - vertex 0.460123 0.107475 -0.439737 - endloop - endfacet - facet normal -0.175615 -0.175615 -0.968668 - outer loop - vertex 0.468656 0.204573 -0.472909 - vertex 0.53342 0.251627 -0.493181 - vertex 0.551627 0.23342 -0.493181 - endloop - endfacet - facet normal -0.175615 -0.175615 -0.968668 - outer loop - vertex 0.468656 0.204573 -0.472909 - vertex 0.551627 0.23342 -0.493181 - vertex 0.504573 0.168656 -0.472909 - endloop - endfacet - facet normal -0.112752 -0.221289 0.968668 - outer loop - vertex 0.551627 0.23342 0.493181 - vertex 0.504573 0.168656 0.472909 - vertex 0.549831 0.145596 0.472909 - endloop - endfacet - facet normal -0.112752 -0.221289 0.968668 - outer loop - vertex 0.551627 0.23342 0.493181 - vertex 0.549831 0.145596 0.472909 - vertex 0.574569 0.221731 0.493181 - endloop - endfacet - facet normal -0.184266 -0.361644 0.913926 - outer loop - vertex 0.504573 0.168656 0.472909 - vertex 0.460123 0.107475 0.439737 - vertex 0.526462 0.0736736 0.439737 - endloop - endfacet - facet normal -0.184266 -0.361644 0.913926 - outer loop - vertex 0.504573 0.168656 0.472909 - vertex 0.526462 0.0736736 0.439737 - vertex 0.549831 0.145596 0.472909 - endloop - endfacet - facet normal -0.250466 -0.491568 0.834043 - outer loop - vertex 0.460123 0.107475 0.439737 - vertex 0.419487 0.0515457 0.39457 - vertex 0.505099 0.00792448 0.39457 - endloop - endfacet - facet normal -0.250466 -0.491568 0.834043 - outer loop - vertex 0.460123 0.107475 0.439737 - vertex 0.505099 0.00792448 0.39457 - vertex 0.526462 0.0736736 0.439737 - endloop - endfacet - facet normal -0.309536 -0.607499 0.731527 - outer loop - vertex 0.419487 0.0515457 0.39457 - vertex 0.383776 0.0023934 0.338641 - vertex 0.486324 -0.0498575 0.338641 - endloop - endfacet - facet normal -0.309536 -0.607499 0.731527 - outer loop - vertex 0.419487 0.0515457 0.39457 - vertex 0.486324 -0.0498575 0.338641 - vertex 0.505099 0.00792448 0.39457 - endloop - endfacet - facet normal -0.359928 -0.706398 0.609471 - outer loop - vertex 0.383776 0.0023934 0.338641 - vertex 0.353963 -0.038641 0.273474 - vertex 0.470651 -0.0980963 0.273474 - endloop - endfacet - facet normal -0.359927 -0.706398 0.609471 - outer loop - vertex 0.383776 0.0023934 0.338641 - vertex 0.470651 -0.0980963 0.273474 - vertex 0.486324 -0.0498575 0.338641 - endloop - endfacet - facet normal -0.400384 -0.785798 0.471396 - outer loop - vertex 0.353963 -0.038641 0.273474 - vertex 0.330861 -0.0704381 0.200848 - vertex 0.458505 -0.135476 0.200848 - endloop - endfacet - facet normal -0.400384 -0.785798 0.471396 - outer loop - vertex 0.353963 -0.038641 0.273474 - vertex 0.458505 -0.135476 0.200848 - vertex 0.470651 -0.0980963 0.273474 - endloop - endfacet - facet normal -0.429947 -0.843819 0.321116 - outer loop - vertex 0.330861 -0.0704381 0.200848 - vertex 0.3151 -0.0921307 0.122743 - vertex 0.450219 -0.160977 0.122743 - endloop - endfacet - facet normal -0.429947 -0.843819 0.321116 - outer loop - vertex 0.330861 -0.0704381 0.200848 - vertex 0.450219 -0.160977 0.122743 - vertex 0.458505 -0.135476 0.200848 - endloop - endfacet - facet normal -0.447947 -0.879146 0.162622 - outer loop - vertex 0.3151 -0.0921307 0.122743 - vertex 0.307111 -0.103127 0.0412897 - vertex 0.446019 -0.173904 0.0412897 - endloop - endfacet - facet normal -0.447947 -0.879146 0.162622 - outer loop - vertex 0.3151 -0.0921307 0.122743 - vertex 0.446019 -0.173904 0.0412897 - vertex 0.450219 -0.160977 0.122743 - endloop - endfacet - facet normal -0.45399 -0.891007 0 - outer loop - vertex 0.307111 -0.103127 0.0412897 - vertex 0.307111 -0.103127 -0.0412897 - vertex 0.446019 -0.173904 -0.0412897 - endloop - endfacet - facet normal -0.45399 -0.891007 0 - outer loop - vertex 0.307111 -0.103127 0.0412897 - vertex 0.446019 -0.173904 -0.0412897 - vertex 0.446019 -0.173904 0.0412897 - endloop - endfacet - facet normal -0.447947 -0.879146 -0.162622 - outer loop - vertex 0.307111 -0.103127 -0.0412897 - vertex 0.3151 -0.0921307 -0.122743 - vertex 0.450219 -0.160977 -0.122743 - endloop - endfacet - facet normal -0.447947 -0.879146 -0.162622 - outer loop - vertex 0.307111 -0.103127 -0.0412897 - vertex 0.450219 -0.160977 -0.122743 - vertex 0.446019 -0.173904 -0.0412897 - endloop - endfacet - facet normal -0.429947 -0.843819 -0.321116 - outer loop - vertex 0.3151 -0.0921307 -0.122743 - vertex 0.330861 -0.0704381 -0.200848 - vertex 0.458505 -0.135476 -0.200848 - endloop - endfacet - facet normal -0.429947 -0.843819 -0.321116 - outer loop - vertex 0.3151 -0.0921307 -0.122743 - vertex 0.458505 -0.135476 -0.200848 - vertex 0.450219 -0.160977 -0.122743 - endloop - endfacet - facet normal -0.400384 -0.785798 -0.471396 - outer loop - vertex 0.330861 -0.0704381 -0.200848 - vertex 0.353963 -0.038641 -0.273474 - vertex 0.470651 -0.0980963 -0.273474 - endloop - endfacet - facet normal -0.400384 -0.785798 -0.471396 - outer loop - vertex 0.330861 -0.0704381 -0.200848 - vertex 0.470651 -0.0980963 -0.273474 - vertex 0.458505 -0.135476 -0.200848 - endloop - endfacet - facet normal -0.359928 -0.706398 -0.609471 - outer loop - vertex 0.353963 -0.038641 -0.273474 - vertex 0.383776 0.00239342 -0.338641 - vertex 0.486324 -0.0498575 -0.338641 - endloop - endfacet - facet normal -0.359927 -0.706398 -0.609471 - outer loop - vertex 0.353963 -0.038641 -0.273474 - vertex 0.486324 -0.0498575 -0.338641 - vertex 0.470651 -0.0980963 -0.273474 - endloop - endfacet - facet normal -0.309536 -0.607499 -0.731527 - outer loop - vertex 0.383776 0.00239342 -0.338641 - vertex 0.419487 0.0515457 -0.39457 - vertex 0.505099 0.00792451 -0.39457 - endloop - endfacet - facet normal -0.309536 -0.607499 -0.731527 - outer loop - vertex 0.383776 0.00239342 -0.338641 - vertex 0.505099 0.00792451 -0.39457 - vertex 0.486324 -0.0498575 -0.338641 - endloop - endfacet - facet normal -0.250466 -0.491568 -0.834043 - outer loop - vertex 0.419487 0.0515457 -0.39457 - vertex 0.460123 0.107475 -0.439737 - vertex 0.526462 0.0736736 -0.439737 - endloop - endfacet - facet normal -0.250466 -0.491568 -0.834043 - outer loop - vertex 0.419487 0.0515457 -0.39457 - vertex 0.526462 0.0736736 -0.439737 - vertex 0.505099 0.00792451 -0.39457 - endloop - endfacet - facet normal -0.184267 -0.361643 -0.913926 - outer loop - vertex 0.460123 0.107475 -0.439737 - vertex 0.504573 0.168656 -0.472909 - vertex 0.549831 0.145596 -0.472909 - endloop - endfacet - facet normal -0.184266 -0.361644 -0.913926 - outer loop - vertex 0.460123 0.107475 -0.439737 - vertex 0.549831 0.145596 -0.472909 - vertex 0.526462 0.0736736 -0.439737 - endloop - endfacet - facet normal -0.112752 -0.221288 -0.968668 - outer loop - vertex 0.504573 0.168656 -0.472909 - vertex 0.551627 0.23342 -0.493181 - vertex 0.574569 0.221731 -0.493181 - endloop - endfacet - facet normal -0.112752 -0.221288 -0.968668 - outer loop - vertex 0.504573 0.168656 -0.472909 - vertex 0.574569 0.221731 -0.493181 - vertex 0.549831 0.145596 -0.472909 - endloop - endfacet - facet normal -0.0388517 -0.2453 0.968668 - outer loop - vertex 0.574569 0.221731 0.493181 - vertex 0.549831 0.145596 0.472909 - vertex 0.6 0.13765 0.472909 - endloop - endfacet - facet normal -0.0388518 -0.2453 0.968668 - outer loop - vertex 0.574569 0.221731 0.493181 - vertex 0.6 0.13765 0.472909 - vertex 0.6 0.217703 0.493181 - endloop - endfacet - facet normal -0.0634939 -0.400885 0.913926 - outer loop - vertex 0.549831 0.145596 0.472909 - vertex 0.526462 0.0736736 0.439737 - vertex 0.6 0.0620263 0.439737 - endloop - endfacet - facet normal -0.0634939 -0.400885 0.913926 - outer loop - vertex 0.549831 0.145596 0.472909 - vertex 0.6 0.0620263 0.439737 - vertex 0.6 0.13765 0.472909 - endloop - endfacet - facet normal -0.0863048 -0.544907 0.834043 - outer loop - vertex 0.526462 0.0736736 0.439737 - vertex 0.505099 0.00792448 0.39457 - vertex 0.6 -0.00710636 0.39457 - endloop - endfacet - facet normal -0.0863048 -0.544907 0.834043 - outer loop - vertex 0.526462 0.0736736 0.439737 - vertex 0.6 -0.00710636 0.39457 - vertex 0.6 0.0620263 0.439737 - endloop - endfacet - facet normal -0.106659 -0.673418 0.731527 - outer loop - vertex 0.505099 0.00792448 0.39457 - vertex 0.486324 -0.0498575 0.338641 - vertex 0.6 -0.067862 0.338641 - endloop - endfacet - facet normal -0.106659 -0.673418 0.731527 - outer loop - vertex 0.505099 0.00792448 0.39457 - vertex 0.6 -0.067862 0.338641 - vertex 0.6 -0.00710636 0.39457 - endloop - endfacet - facet normal -0.124022 -0.783048 0.609471 - outer loop - vertex 0.486324 -0.0498575 0.338641 - vertex 0.470651 -0.0980963 0.273474 - vertex 0.6 -0.118583 0.273474 - endloop - endfacet - facet normal -0.124023 -0.783048 0.60947 - outer loop - vertex 0.486324 -0.0498575 0.338641 - vertex 0.6 -0.118583 0.273474 - vertex 0.6 -0.067862 0.338641 - endloop - endfacet - facet normal -0.137963 -0.871064 0.471396 - outer loop - vertex 0.470651 -0.0980963 0.273474 - vertex 0.458505 -0.135476 0.200848 - vertex 0.6 -0.157887 0.200848 - endloop - endfacet - facet normal -0.137963 -0.871064 0.471396 - outer loop - vertex 0.470651 -0.0980963 0.273474 - vertex 0.6 -0.157887 0.200848 - vertex 0.6 -0.118583 0.273474 - endloop - endfacet - facet normal -0.148149 -0.93538 0.321116 - outer loop - vertex 0.458505 -0.135476 0.200848 - vertex 0.450219 -0.160977 0.122743 - vertex 0.6 -0.1847 0.122743 - endloop - endfacet - facet normal -0.14815 -0.93538 0.321116 - outer loop - vertex 0.458505 -0.135476 0.200848 - vertex 0.6 -0.1847 0.122743 - vertex 0.6 -0.157887 0.200848 - endloop - endfacet - facet normal -0.154352 -0.974541 0.162622 - outer loop - vertex 0.450219 -0.160977 0.122743 - vertex 0.446019 -0.173904 0.0412897 - vertex 0.6 -0.198292 0.0412897 - endloop - endfacet - facet normal -0.154352 -0.974541 0.162622 - outer loop - vertex 0.450219 -0.160977 0.122743 - vertex 0.6 -0.198292 0.0412897 - vertex 0.6 -0.1847 0.122743 - endloop - endfacet - facet normal -0.156434 -0.987688 0 - outer loop - vertex 0.446019 -0.173904 0.0412897 - vertex 0.446019 -0.173904 -0.0412897 - vertex 0.6 -0.198292 -0.0412897 - endloop - endfacet - facet normal -0.156434 -0.987688 -1.78225e-07 - outer loop - vertex 0.446019 -0.173904 0.0412897 - vertex 0.6 -0.198292 -0.0412897 - vertex 0.6 -0.198292 0.0412897 - endloop - endfacet - facet normal -0.154352 -0.974541 -0.162622 - outer loop - vertex 0.446019 -0.173904 -0.0412897 - vertex 0.450219 -0.160977 -0.122743 - vertex 0.6 -0.1847 -0.122743 - endloop - endfacet - facet normal -0.154352 -0.974541 -0.162622 - outer loop - vertex 0.446019 -0.173904 -0.0412897 - vertex 0.6 -0.1847 -0.122743 - vertex 0.6 -0.198292 -0.0412897 - endloop - endfacet - facet normal -0.14815 -0.93538 -0.321116 - outer loop - vertex 0.450219 -0.160977 -0.122743 - vertex 0.458505 -0.135476 -0.200848 - vertex 0.6 -0.157887 -0.200848 - endloop - endfacet - facet normal -0.14815 -0.93538 -0.321116 - outer loop - vertex 0.450219 -0.160977 -0.122743 - vertex 0.6 -0.157887 -0.200848 - vertex 0.6 -0.1847 -0.122743 - endloop - endfacet - facet normal -0.137963 -0.871064 -0.471396 - outer loop - vertex 0.458505 -0.135476 -0.200848 - vertex 0.470651 -0.0980963 -0.273474 - vertex 0.6 -0.118583 -0.273474 - endloop - endfacet - facet normal -0.137963 -0.871064 -0.471396 - outer loop - vertex 0.458505 -0.135476 -0.200848 - vertex 0.6 -0.118583 -0.273474 - vertex 0.6 -0.157887 -0.200848 - endloop - endfacet - facet normal -0.124023 -0.783048 -0.609471 - outer loop - vertex 0.470651 -0.0980963 -0.273474 - vertex 0.486324 -0.0498575 -0.338641 - vertex 0.6 -0.0678619 -0.338641 - endloop - endfacet - facet normal -0.124022 -0.783048 -0.609471 - outer loop - vertex 0.470651 -0.0980963 -0.273474 - vertex 0.6 -0.0678619 -0.338641 - vertex 0.6 -0.118583 -0.273474 - endloop - endfacet - facet normal -0.106659 -0.673418 -0.731527 - outer loop - vertex 0.486324 -0.0498575 -0.338641 - vertex 0.505099 0.00792451 -0.39457 - vertex 0.6 -0.00710633 -0.39457 - endloop - endfacet - facet normal -0.106659 -0.673418 -0.731527 - outer loop - vertex 0.486324 -0.0498575 -0.338641 - vertex 0.6 -0.00710633 -0.39457 - vertex 0.6 -0.0678619 -0.338641 - endloop - endfacet - facet normal -0.0863048 -0.544908 -0.834043 - outer loop - vertex 0.505099 0.00792451 -0.39457 - vertex 0.526462 0.0736736 -0.439737 - vertex 0.6 0.0620263 -0.439737 - endloop - endfacet - facet normal -0.0863048 -0.544908 -0.834043 - outer loop - vertex 0.505099 0.00792451 -0.39457 - vertex 0.6 0.0620263 -0.439737 - vertex 0.6 -0.00710633 -0.39457 - endloop - endfacet - facet normal -0.0634939 -0.400885 -0.913926 - outer loop - vertex 0.526462 0.0736736 -0.439737 - vertex 0.549831 0.145596 -0.472909 - vertex 0.6 0.13765 -0.472909 - endloop - endfacet - facet normal -0.0634939 -0.400885 -0.913926 - outer loop - vertex 0.526462 0.0736736 -0.439737 - vertex 0.6 0.13765 -0.472909 - vertex 0.6 0.0620263 -0.439737 - endloop - endfacet - facet normal -0.0388516 -0.2453 -0.968668 - outer loop - vertex 0.549831 0.145596 -0.472909 - vertex 0.574569 0.221731 -0.493181 - vertex 0.6 0.217703 -0.493181 - endloop - endfacet - facet normal -0.0388517 -0.2453 -0.968668 - outer loop - vertex 0.549831 0.145596 -0.472909 - vertex 0.6 0.217703 -0.493181 - vertex 0.6 0.13765 -0.472909 - endloop - endfacet - facet normal 0.0388518 -0.2453 0.968668 - outer loop - vertex 0.6 0.217703 0.493181 - vertex 0.6 0.13765 0.472909 - vertex 0.650169 0.145596 0.472909 - endloop - endfacet - facet normal 0.0388518 -0.2453 0.968668 - outer loop - vertex 0.6 0.217703 0.493181 - vertex 0.650169 0.145596 0.472909 - vertex 0.625431 0.221731 0.493181 - endloop - endfacet - facet normal 0.063494 -0.400885 0.913926 - outer loop - vertex 0.6 0.13765 0.472909 - vertex 0.6 0.0620263 0.439737 - vertex 0.673538 0.0736736 0.439737 - endloop - endfacet - facet normal 0.063494 -0.400885 0.913926 - outer loop - vertex 0.6 0.13765 0.472909 - vertex 0.673538 0.0736736 0.439737 - vertex 0.650169 0.145596 0.472909 - endloop - endfacet - facet normal 0.0863049 -0.544907 0.834043 - outer loop - vertex 0.6 0.0620263 0.439737 - vertex 0.6 -0.00710636 0.39457 - vertex 0.694901 0.0079245 0.39457 - endloop - endfacet - facet normal 0.0863049 -0.544907 0.834043 - outer loop - vertex 0.6 0.0620263 0.439737 - vertex 0.694901 0.0079245 0.39457 - vertex 0.673538 0.0736736 0.439737 - endloop - endfacet - facet normal 0.106659 -0.673418 0.731527 - outer loop - vertex 0.6 -0.00710636 0.39457 - vertex 0.6 -0.067862 0.338641 - vertex 0.713676 -0.0498575 0.338641 - endloop - endfacet - facet normal 0.106659 -0.673418 0.731527 - outer loop - vertex 0.6 -0.00710636 0.39457 - vertex 0.713676 -0.0498575 0.338641 - vertex 0.694901 0.0079245 0.39457 - endloop - endfacet - facet normal 0.124023 -0.783048 0.609471 - outer loop - vertex 0.6 -0.067862 0.338641 - vertex 0.6 -0.118583 0.273474 - vertex 0.729349 -0.0980963 0.273474 - endloop - endfacet - facet normal 0.124023 -0.783048 0.609471 - outer loop - vertex 0.6 -0.067862 0.338641 - vertex 0.729349 -0.0980963 0.273474 - vertex 0.713676 -0.0498575 0.338641 - endloop - endfacet - facet normal 0.137963 -0.871064 0.471396 - outer loop - vertex 0.6 -0.118583 0.273474 - vertex 0.6 -0.157887 0.200848 - vertex 0.741495 -0.135476 0.200848 - endloop - endfacet - facet normal 0.137963 -0.871064 0.471396 - outer loop - vertex 0.6 -0.118583 0.273474 - vertex 0.741495 -0.135476 0.200848 - vertex 0.729349 -0.0980963 0.273474 - endloop - endfacet - facet normal 0.14815 -0.93538 0.321116 - outer loop - vertex 0.6 -0.157887 0.200848 - vertex 0.6 -0.1847 0.122743 - vertex 0.749781 -0.160977 0.122743 - endloop - endfacet - facet normal 0.14815 -0.93538 0.321116 - outer loop - vertex 0.6 -0.157887 0.200848 - vertex 0.749781 -0.160977 0.122743 - vertex 0.741495 -0.135476 0.200848 - endloop - endfacet - facet normal 0.154352 -0.974541 0.162622 - outer loop - vertex 0.6 -0.1847 0.122743 - vertex 0.6 -0.198292 0.0412897 - vertex 0.753981 -0.173904 0.0412897 - endloop - endfacet - facet normal 0.154352 -0.974541 0.162622 - outer loop - vertex 0.6 -0.1847 0.122743 - vertex 0.753981 -0.173904 0.0412897 - vertex 0.749781 -0.160977 0.122743 - endloop - endfacet - facet normal 0.156435 -0.987688 -1.78225e-07 - outer loop - vertex 0.6 -0.198292 0.0412897 - vertex 0.6 -0.198292 -0.0412897 - vertex 0.753981 -0.173904 -0.0412897 - endloop - endfacet - facet normal 0.156435 -0.987688 0 - outer loop - vertex 0.6 -0.198292 0.0412897 - vertex 0.753981 -0.173904 -0.0412897 - vertex 0.753981 -0.173904 0.0412897 - endloop - endfacet - facet normal 0.154352 -0.974541 -0.162622 - outer loop - vertex 0.6 -0.198292 -0.0412897 - vertex 0.6 -0.1847 -0.122743 - vertex 0.749781 -0.160977 -0.122743 - endloop - endfacet - facet normal 0.154352 -0.974541 -0.162622 - outer loop - vertex 0.6 -0.198292 -0.0412897 - vertex 0.749781 -0.160977 -0.122743 - vertex 0.753981 -0.173904 -0.0412897 - endloop - endfacet - facet normal 0.14815 -0.93538 -0.321116 - outer loop - vertex 0.6 -0.1847 -0.122743 - vertex 0.6 -0.157887 -0.200848 - vertex 0.741495 -0.135476 -0.200848 - endloop - endfacet - facet normal 0.14815 -0.93538 -0.321116 - outer loop - vertex 0.6 -0.1847 -0.122743 - vertex 0.741495 -0.135476 -0.200848 - vertex 0.749781 -0.160977 -0.122743 - endloop - endfacet - facet normal 0.137963 -0.871064 -0.471396 - outer loop - vertex 0.6 -0.157887 -0.200848 - vertex 0.6 -0.118583 -0.273474 - vertex 0.729349 -0.0980963 -0.273474 - endloop - endfacet - facet normal 0.137963 -0.871064 -0.471396 - outer loop - vertex 0.6 -0.157887 -0.200848 - vertex 0.729349 -0.0980963 -0.273474 - vertex 0.741495 -0.135476 -0.200848 - endloop - endfacet - facet normal 0.124023 -0.783048 -0.609471 - outer loop - vertex 0.6 -0.118583 -0.273474 - vertex 0.6 -0.0678619 -0.338641 - vertex 0.713676 -0.0498575 -0.338641 - endloop - endfacet - facet normal 0.124023 -0.783048 -0.609471 - outer loop - vertex 0.6 -0.118583 -0.273474 - vertex 0.713676 -0.0498575 -0.338641 - vertex 0.729349 -0.0980963 -0.273474 - endloop - endfacet - facet normal 0.106659 -0.673418 -0.731527 - outer loop - vertex 0.6 -0.0678619 -0.338641 - vertex 0.6 -0.00710633 -0.39457 - vertex 0.694901 0.00792454 -0.39457 - endloop - endfacet - facet normal 0.106659 -0.673418 -0.731527 - outer loop - vertex 0.6 -0.0678619 -0.338641 - vertex 0.694901 0.00792454 -0.39457 - vertex 0.713676 -0.0498575 -0.338641 - endloop - endfacet - facet normal 0.086305 -0.544908 -0.834043 - outer loop - vertex 0.6 -0.00710633 -0.39457 - vertex 0.6 0.0620263 -0.439737 - vertex 0.673538 0.0736736 -0.439737 - endloop - endfacet - facet normal 0.0863049 -0.544907 -0.834043 - outer loop - vertex 0.6 -0.00710633 -0.39457 - vertex 0.673538 0.0736736 -0.439737 - vertex 0.694901 0.00792454 -0.39457 - endloop - endfacet - facet normal 0.063494 -0.400885 -0.913926 - outer loop - vertex 0.6 0.0620263 -0.439737 - vertex 0.6 0.13765 -0.472909 - vertex 0.650169 0.145596 -0.472909 - endloop - endfacet - facet normal 0.063494 -0.400885 -0.913926 - outer loop - vertex 0.6 0.0620263 -0.439737 - vertex 0.650169 0.145596 -0.472909 - vertex 0.673538 0.0736736 -0.439737 - endloop - endfacet - facet normal 0.0388518 -0.2453 -0.968668 - outer loop - vertex 0.6 0.13765 -0.472909 - vertex 0.6 0.217703 -0.493181 - vertex 0.625431 0.221731 -0.493181 - endloop - endfacet - facet normal 0.0388517 -0.2453 -0.968668 - outer loop - vertex 0.6 0.13765 -0.472909 - vertex 0.625431 0.221731 -0.493181 - vertex 0.650169 0.145596 -0.472909 - endloop - endfacet - facet normal 0.112752 -0.221289 0.968668 - outer loop - vertex 0.625431 0.221731 0.493181 - vertex 0.650169 0.145596 0.472909 - vertex 0.695427 0.168656 0.472909 - endloop - endfacet - facet normal 0.112752 -0.221288 0.968668 - outer loop - vertex 0.625431 0.221731 0.493181 - vertex 0.695427 0.168656 0.472909 - vertex 0.648373 0.23342 0.493181 - endloop - endfacet - facet normal 0.184267 -0.361643 0.913926 - outer loop - vertex 0.650169 0.145596 0.472909 - vertex 0.673538 0.0736736 0.439737 - vertex 0.739877 0.107475 0.439737 - endloop - endfacet - facet normal 0.184266 -0.361644 0.913925 - outer loop - vertex 0.650169 0.145596 0.472909 - vertex 0.739877 0.107475 0.439737 - vertex 0.695427 0.168656 0.472909 - endloop - endfacet - facet normal 0.250466 -0.491568 0.834043 - outer loop - vertex 0.673538 0.0736736 0.439737 - vertex 0.694901 0.0079245 0.39457 - vertex 0.780513 0.0515458 0.39457 - endloop - endfacet - facet normal 0.250467 -0.491568 0.834043 - outer loop - vertex 0.673538 0.0736736 0.439737 - vertex 0.780513 0.0515458 0.39457 - vertex 0.739877 0.107475 0.439737 - endloop - endfacet - facet normal 0.309536 -0.607499 0.731527 - outer loop - vertex 0.694901 0.0079245 0.39457 - vertex 0.713676 -0.0498575 0.338641 - vertex 0.816224 0.00239345 0.338641 - endloop - endfacet - facet normal 0.309536 -0.607499 0.731527 - outer loop - vertex 0.694901 0.0079245 0.39457 - vertex 0.816224 0.00239345 0.338641 - vertex 0.780513 0.0515458 0.39457 - endloop - endfacet - facet normal 0.359928 -0.706398 0.609471 - outer loop - vertex 0.713676 -0.0498575 0.338641 - vertex 0.729349 -0.0980963 0.273474 - vertex 0.846037 -0.0386409 0.273474 - endloop - endfacet - facet normal 0.359928 -0.706398 0.609471 - outer loop - vertex 0.713676 -0.0498575 0.338641 - vertex 0.846037 -0.0386409 0.273474 - vertex 0.816224 0.00239345 0.338641 - endloop - endfacet - facet normal 0.400384 -0.785798 0.471396 - outer loop - vertex 0.729349 -0.0980963 0.273474 - vertex 0.741495 -0.135476 0.200848 - vertex 0.869139 -0.0704381 0.200848 - endloop - endfacet - facet normal 0.400384 -0.785798 0.471396 - outer loop - vertex 0.729349 -0.0980963 0.273474 - vertex 0.869139 -0.0704381 0.200848 - vertex 0.846037 -0.0386409 0.273474 - endloop - endfacet - facet normal 0.429947 -0.843819 0.321116 - outer loop - vertex 0.741495 -0.135476 0.200848 - vertex 0.749781 -0.160977 0.122743 - vertex 0.8849 -0.0921306 0.122743 - endloop - endfacet - facet normal 0.429947 -0.843818 0.321117 - outer loop - vertex 0.741495 -0.135476 0.200848 - vertex 0.8849 -0.0921306 0.122743 - vertex 0.869139 -0.0704381 0.200848 - endloop - endfacet - facet normal 0.447947 -0.879146 0.162622 - outer loop - vertex 0.749781 -0.160977 0.122743 - vertex 0.753981 -0.173904 0.0412897 - vertex 0.892889 -0.103127 0.0412897 - endloop - endfacet - facet normal 0.447947 -0.879146 0.162622 - outer loop - vertex 0.749781 -0.160977 0.122743 - vertex 0.892889 -0.103127 0.0412897 - vertex 0.8849 -0.0921306 0.122743 - endloop - endfacet - facet normal 0.453991 -0.891007 0 - outer loop - vertex 0.753981 -0.173904 0.0412897 - vertex 0.753981 -0.173904 -0.0412897 - vertex 0.892889 -0.103127 -0.0412897 - endloop - endfacet - facet normal 0.453991 -0.891007 0 - outer loop - vertex 0.753981 -0.173904 0.0412897 - vertex 0.892889 -0.103127 -0.0412897 - vertex 0.892889 -0.103127 0.0412897 - endloop - endfacet - facet normal 0.447947 -0.879146 -0.162622 - outer loop - vertex 0.753981 -0.173904 -0.0412897 - vertex 0.749781 -0.160977 -0.122743 - vertex 0.8849 -0.0921306 -0.122743 - endloop - endfacet - facet normal 0.447947 -0.879146 -0.162622 - outer loop - vertex 0.753981 -0.173904 -0.0412897 - vertex 0.8849 -0.0921306 -0.122743 - vertex 0.892889 -0.103127 -0.0412897 - endloop - endfacet - facet normal 0.429947 -0.843818 -0.321116 - outer loop - vertex 0.749781 -0.160977 -0.122743 - vertex 0.741495 -0.135476 -0.200848 - vertex 0.869139 -0.070438 -0.200848 - endloop - endfacet - facet normal 0.429947 -0.843818 -0.321116 - outer loop - vertex 0.749781 -0.160977 -0.122743 - vertex 0.869139 -0.070438 -0.200848 - vertex 0.8849 -0.0921306 -0.122743 - endloop - endfacet - facet normal 0.400384 -0.785798 -0.471396 - outer loop - vertex 0.741495 -0.135476 -0.200848 - vertex 0.729349 -0.0980963 -0.273474 - vertex 0.846037 -0.0386409 -0.273474 - endloop - endfacet - facet normal 0.400384 -0.785798 -0.471396 - outer loop - vertex 0.741495 -0.135476 -0.200848 - vertex 0.846037 -0.0386409 -0.273474 - vertex 0.869139 -0.070438 -0.200848 - endloop - endfacet - facet normal 0.359928 -0.706398 -0.609471 - outer loop - vertex 0.729349 -0.0980963 -0.273474 - vertex 0.713676 -0.0498575 -0.338641 - vertex 0.816224 0.00239348 -0.338641 - endloop - endfacet - facet normal 0.359928 -0.706398 -0.609471 - outer loop - vertex 0.729349 -0.0980963 -0.273474 - vertex 0.816224 0.00239348 -0.338641 - vertex 0.846037 -0.0386409 -0.273474 - endloop - endfacet - facet normal 0.309536 -0.607499 -0.731527 - outer loop - vertex 0.713676 -0.0498575 -0.338641 - vertex 0.694901 0.00792454 -0.39457 - vertex 0.780513 0.0515458 -0.39457 - endloop - endfacet - facet normal 0.309536 -0.607499 -0.731527 - outer loop - vertex 0.713676 -0.0498575 -0.338641 - vertex 0.780513 0.0515458 -0.39457 - vertex 0.816224 0.00239348 -0.338641 - endloop - endfacet - facet normal 0.250466 -0.491568 -0.834043 - outer loop - vertex 0.694901 0.00792454 -0.39457 - vertex 0.673538 0.0736736 -0.439737 - vertex 0.739877 0.107475 -0.439737 - endloop - endfacet - facet normal 0.250467 -0.491568 -0.834043 - outer loop - vertex 0.694901 0.00792454 -0.39457 - vertex 0.739877 0.107475 -0.439737 - vertex 0.780513 0.0515458 -0.39457 - endloop - endfacet - facet normal 0.184267 -0.361643 -0.913925 - outer loop - vertex 0.673538 0.0736736 -0.439737 - vertex 0.650169 0.145596 -0.472909 - vertex 0.695427 0.168656 -0.472909 - endloop - endfacet - facet normal 0.184266 -0.361643 -0.913926 - outer loop - vertex 0.673538 0.0736736 -0.439737 - vertex 0.695427 0.168656 -0.472909 - vertex 0.739877 0.107475 -0.439737 - endloop - endfacet - facet normal 0.112752 -0.221288 -0.968668 - outer loop - vertex 0.650169 0.145596 -0.472909 - vertex 0.625431 0.221731 -0.493181 - vertex 0.648373 0.23342 -0.493181 - endloop - endfacet - facet normal 0.112752 -0.221288 -0.968668 - outer loop - vertex 0.650169 0.145596 -0.472909 - vertex 0.648373 0.23342 -0.493181 - vertex 0.695427 0.168656 -0.472909 - endloop - endfacet - facet normal 0.175616 -0.175615 0.968668 - outer loop - vertex 0.648373 0.23342 0.493181 - vertex 0.695427 0.168656 0.472909 - vertex 0.731344 0.204573 0.472909 - endloop - endfacet - facet normal 0.175616 -0.175616 0.968668 - outer loop - vertex 0.648373 0.23342 0.493181 - vertex 0.731344 0.204573 0.472909 - vertex 0.66658 0.251627 0.493181 - endloop - endfacet - facet normal 0.287002 -0.287002 0.913925 - outer loop - vertex 0.695427 0.168656 0.472909 - vertex 0.739877 0.107475 0.439737 - vertex 0.792525 0.160123 0.439737 - endloop - endfacet - facet normal 0.287002 -0.287002 0.913926 - outer loop - vertex 0.695427 0.168656 0.472909 - vertex 0.792525 0.160123 0.439737 - vertex 0.731344 0.204573 0.472909 - endloop - endfacet - facet normal 0.390111 -0.39011 0.834043 - outer loop - vertex 0.739877 0.107475 0.439737 - vertex 0.780513 0.0515458 0.39457 - vertex 0.848454 0.119487 0.39457 - endloop - endfacet - facet normal 0.390111 -0.390111 0.834043 - outer loop - vertex 0.739877 0.107475 0.439737 - vertex 0.848454 0.119487 0.39457 - vertex 0.792525 0.160123 0.439737 - endloop - endfacet - facet normal 0.482114 -0.482114 0.731527 - outer loop - vertex 0.780513 0.0515458 0.39457 - vertex 0.816224 0.00239345 0.338641 - vertex 0.897607 0.0837762 0.338641 - endloop - endfacet - facet normal 0.482114 -0.482114 0.731527 - outer loop - vertex 0.780513 0.0515458 0.39457 - vertex 0.897607 0.0837762 0.338641 - vertex 0.848454 0.119487 0.39457 - endloop - endfacet - facet normal 0.5606 -0.5606 0.609471 - outer loop - vertex 0.816224 0.00239345 0.338641 - vertex 0.846037 -0.0386409 0.273474 - vertex 0.938641 0.053963 0.273474 - endloop - endfacet - facet normal 0.5606 -0.5606 0.609471 - outer loop - vertex 0.816224 0.00239345 0.338641 - vertex 0.938641 0.053963 0.273474 - vertex 0.897607 0.0837762 0.338641 - endloop - endfacet - facet normal 0.623613 -0.623613 0.471396 - outer loop - vertex 0.846037 -0.0386409 0.273474 - vertex 0.869139 -0.0704381 0.200848 - vertex 0.970438 0.030861 0.200848 - endloop - endfacet - facet normal 0.623613 -0.623613 0.471396 - outer loop - vertex 0.846037 -0.0386409 0.273474 - vertex 0.970438 0.030861 0.200848 - vertex 0.938641 0.053963 0.273474 - endloop - endfacet - facet normal 0.669658 -0.669658 0.321117 - outer loop - vertex 0.869139 -0.0704381 0.200848 - vertex 0.8849 -0.0921306 0.122743 - vertex 0.992131 0.0151005 0.122743 - endloop - endfacet - facet normal 0.669658 -0.669658 0.321117 - outer loop - vertex 0.869139 -0.0704381 0.200848 - vertex 0.992131 0.0151005 0.122743 - vertex 0.970438 0.030861 0.200848 - endloop - endfacet - facet normal 0.697694 -0.697694 0.162622 - outer loop - vertex 0.8849 -0.0921306 0.122743 - vertex 0.892889 -0.103127 0.0412897 - vertex 1.00313 0.00711123 0.0412897 - endloop - endfacet - facet normal 0.697694 -0.697694 0.162622 - outer loop - vertex 0.8849 -0.0921306 0.122743 - vertex 1.00313 0.00711123 0.0412897 - vertex 0.992131 0.0151005 0.122743 - endloop - endfacet - facet normal 0.707107 -0.707107 0 - outer loop - vertex 0.892889 -0.103127 0.0412897 - vertex 0.892889 -0.103127 -0.0412897 - vertex 1.00313 0.00711123 -0.0412897 - endloop - endfacet - facet normal 0.707107 -0.707107 -1.99367e-08 - outer loop - vertex 0.892889 -0.103127 0.0412897 - vertex 1.00313 0.00711123 -0.0412897 - vertex 1.00313 0.00711123 0.0412897 - endloop - endfacet - facet normal 0.697694 -0.697694 -0.162623 - outer loop - vertex 0.892889 -0.103127 -0.0412897 - vertex 0.8849 -0.0921306 -0.122743 - vertex 0.992131 0.0151005 -0.122743 - endloop - endfacet - facet normal 0.697694 -0.697694 -0.162622 - outer loop - vertex 0.892889 -0.103127 -0.0412897 - vertex 0.992131 0.0151005 -0.122743 - vertex 1.00313 0.00711123 -0.0412897 - endloop - endfacet - facet normal 0.669658 -0.669658 -0.321116 - outer loop - vertex 0.8849 -0.0921306 -0.122743 - vertex 0.869139 -0.070438 -0.200848 - vertex 0.970438 0.030861 -0.200848 - endloop - endfacet - facet normal 0.669658 -0.669658 -0.321117 - outer loop - vertex 0.8849 -0.0921306 -0.122743 - vertex 0.970438 0.030861 -0.200848 - vertex 0.992131 0.0151005 -0.122743 - endloop - endfacet - facet normal 0.623613 -0.623613 -0.471396 - outer loop - vertex 0.869139 -0.070438 -0.200848 - vertex 0.846037 -0.0386409 -0.273474 - vertex 0.938641 0.053963 -0.273474 - endloop - endfacet - facet normal 0.623613 -0.623613 -0.471396 - outer loop - vertex 0.869139 -0.070438 -0.200848 - vertex 0.938641 0.053963 -0.273474 - vertex 0.970438 0.030861 -0.200848 - endloop - endfacet - facet normal 0.5606 -0.5606 -0.609471 - outer loop - vertex 0.846037 -0.0386409 -0.273474 - vertex 0.816224 0.00239348 -0.338641 - vertex 0.897607 0.0837762 -0.338641 - endloop - endfacet - facet normal 0.560601 -0.5606 -0.60947 - outer loop - vertex 0.846037 -0.0386409 -0.273474 - vertex 0.897607 0.0837762 -0.338641 - vertex 0.938641 0.053963 -0.273474 - endloop - endfacet - facet normal 0.482114 -0.482114 -0.731527 - outer loop - vertex 0.816224 0.00239348 -0.338641 - vertex 0.780513 0.0515458 -0.39457 - vertex 0.848454 0.119487 -0.39457 - endloop - endfacet - facet normal 0.482114 -0.482114 -0.731527 - outer loop - vertex 0.816224 0.00239348 -0.338641 - vertex 0.848454 0.119487 -0.39457 - vertex 0.897607 0.0837762 -0.338641 - endloop - endfacet - facet normal 0.390111 -0.390111 -0.834043 - outer loop - vertex 0.780513 0.0515458 -0.39457 - vertex 0.739877 0.107475 -0.439737 - vertex 0.792525 0.160123 -0.439737 - endloop - endfacet - facet normal 0.390111 -0.390111 -0.834043 - outer loop - vertex 0.780513 0.0515458 -0.39457 - vertex 0.792525 0.160123 -0.439737 - vertex 0.848454 0.119487 -0.39457 - endloop - endfacet - facet normal 0.287002 -0.287002 -0.913926 - outer loop - vertex 0.739877 0.107475 -0.439737 - vertex 0.695427 0.168656 -0.472909 - vertex 0.731344 0.204573 -0.472909 - endloop - endfacet - facet normal 0.287002 -0.287002 -0.913926 - outer loop - vertex 0.739877 0.107475 -0.439737 - vertex 0.731344 0.204573 -0.472909 - vertex 0.792525 0.160123 -0.439737 - endloop - endfacet - facet normal 0.175615 -0.175615 -0.968668 - outer loop - vertex 0.695427 0.168656 -0.472909 - vertex 0.648373 0.23342 -0.493181 - vertex 0.66658 0.251627 -0.493181 - endloop - endfacet - facet normal 0.175615 -0.175615 -0.968668 - outer loop - vertex 0.695427 0.168656 -0.472909 - vertex 0.66658 0.251627 -0.493181 - vertex 0.731344 0.204573 -0.472909 - endloop - endfacet - facet normal 0.221289 -0.112752 0.968668 - outer loop - vertex 0.66658 0.251627 0.493181 - vertex 0.731344 0.204573 0.472909 - vertex 0.754404 0.249831 0.472909 - endloop - endfacet - facet normal 0.221289 -0.112752 0.968668 - outer loop - vertex 0.66658 0.251627 0.493181 - vertex 0.754404 0.249831 0.472909 - vertex 0.678269 0.274569 0.493181 - endloop - endfacet - facet normal 0.361643 -0.184266 0.913926 - outer loop - vertex 0.731344 0.204573 0.472909 - vertex 0.792525 0.160123 0.439737 - vertex 0.826326 0.226462 0.439737 - endloop - endfacet - facet normal 0.361643 -0.184267 0.913925 - outer loop - vertex 0.731344 0.204573 0.472909 - vertex 0.826326 0.226462 0.439737 - vertex 0.754404 0.249831 0.472909 - endloop - endfacet - facet normal 0.491568 -0.250466 0.834043 - outer loop - vertex 0.792525 0.160123 0.439737 - vertex 0.848454 0.119487 0.39457 - vertex 0.892076 0.205099 0.39457 - endloop - endfacet - facet normal 0.491568 -0.250466 0.834043 - outer loop - vertex 0.792525 0.160123 0.439737 - vertex 0.892076 0.205099 0.39457 - vertex 0.826326 0.226462 0.439737 - endloop - endfacet - facet normal 0.607499 -0.309536 0.731527 - outer loop - vertex 0.848454 0.119487 0.39457 - vertex 0.897607 0.0837762 0.338641 - vertex 0.949858 0.186324 0.338641 - endloop - endfacet - facet normal 0.607499 -0.309536 0.731527 - outer loop - vertex 0.848454 0.119487 0.39457 - vertex 0.949858 0.186324 0.338641 - vertex 0.892076 0.205099 0.39457 - endloop - endfacet - facet normal 0.706398 -0.359927 0.609471 - outer loop - vertex 0.897607 0.0837762 0.338641 - vertex 0.938641 0.053963 0.273474 - vertex 0.998096 0.170651 0.273474 - endloop - endfacet - facet normal 0.706398 -0.359927 0.609471 - outer loop - vertex 0.897607 0.0837762 0.338641 - vertex 0.998096 0.170651 0.273474 - vertex 0.949858 0.186324 0.338641 - endloop - endfacet - facet normal 0.785798 -0.400384 0.471396 - outer loop - vertex 0.938641 0.053963 0.273474 - vertex 0.970438 0.030861 0.200848 - vertex 1.03548 0.158505 0.200848 - endloop - endfacet - facet normal 0.785798 -0.400384 0.471396 - outer loop - vertex 0.938641 0.053963 0.273474 - vertex 1.03548 0.158505 0.200848 - vertex 0.998096 0.170651 0.273474 - endloop - endfacet - facet normal 0.843819 -0.429947 0.321117 - outer loop - vertex 0.970438 0.030861 0.200848 - vertex 0.992131 0.0151005 0.122743 - vertex 1.06098 0.15022 0.122743 - endloop - endfacet - facet normal 0.843819 -0.429947 0.321116 - outer loop - vertex 0.970438 0.030861 0.200848 - vertex 1.06098 0.15022 0.122743 - vertex 1.03548 0.158505 0.200848 - endloop - endfacet - facet normal 0.879146 -0.447947 0.162622 - outer loop - vertex 0.992131 0.0151005 0.122743 - vertex 1.00313 0.00711123 0.0412897 - vertex 1.0739 0.146019 0.0412897 - endloop - endfacet - facet normal 0.879146 -0.447947 0.162623 - outer loop - vertex 0.992131 0.0151005 0.122743 - vertex 1.0739 0.146019 0.0412897 - vertex 1.06098 0.15022 0.122743 - endloop - endfacet - facet normal 0.891007 -0.45399 -1.28002e-08 - outer loop - vertex 1.00313 0.00711123 0.0412897 - vertex 1.00313 0.00711123 -0.0412897 - vertex 1.0739 0.146019 -0.0412897 - endloop - endfacet - facet normal 0.891007 -0.45399 0 - outer loop - vertex 1.00313 0.00711123 0.0412897 - vertex 1.0739 0.146019 -0.0412897 - vertex 1.0739 0.146019 0.0412897 - endloop - endfacet - facet normal 0.879146 -0.447947 -0.162622 - outer loop - vertex 1.00313 0.00711123 -0.0412897 - vertex 0.992131 0.0151005 -0.122743 - vertex 1.06098 0.15022 -0.122743 - endloop - endfacet - facet normal 0.879146 -0.447947 -0.162623 - outer loop - vertex 1.00313 0.00711123 -0.0412897 - vertex 1.06098 0.15022 -0.122743 - vertex 1.0739 0.146019 -0.0412897 - endloop - endfacet - facet normal 0.843819 -0.429947 -0.321117 - outer loop - vertex 0.992131 0.0151005 -0.122743 - vertex 0.970438 0.030861 -0.200848 - vertex 1.03548 0.158505 -0.200848 - endloop - endfacet - facet normal 0.843819 -0.429947 -0.321116 - outer loop - vertex 0.992131 0.0151005 -0.122743 - vertex 1.03548 0.158505 -0.200848 - vertex 1.06098 0.15022 -0.122743 - endloop - endfacet - facet normal 0.785798 -0.400384 -0.471396 - outer loop - vertex 0.970438 0.030861 -0.200848 - vertex 0.938641 0.053963 -0.273474 - vertex 0.998096 0.170651 -0.273474 - endloop - endfacet - facet normal 0.785798 -0.400384 -0.471396 - outer loop - vertex 0.970438 0.030861 -0.200848 - vertex 0.998096 0.170651 -0.273474 - vertex 1.03548 0.158505 -0.200848 - endloop - endfacet - facet normal 0.706398 -0.359928 -0.60947 - outer loop - vertex 0.938641 0.053963 -0.273474 - vertex 0.897607 0.0837762 -0.338641 - vertex 0.949858 0.186324 -0.338641 - endloop - endfacet - facet normal 0.706398 -0.359928 -0.609471 - outer loop - vertex 0.938641 0.053963 -0.273474 - vertex 0.949858 0.186324 -0.338641 - vertex 0.998096 0.170651 -0.273474 - endloop - endfacet - facet normal 0.607499 -0.309536 -0.731527 - outer loop - vertex 0.897607 0.0837762 -0.338641 - vertex 0.848454 0.119487 -0.39457 - vertex 0.892075 0.205099 -0.39457 - endloop - endfacet - facet normal 0.607499 -0.309536 -0.731527 - outer loop - vertex 0.897607 0.0837762 -0.338641 - vertex 0.892075 0.205099 -0.39457 - vertex 0.949858 0.186324 -0.338641 - endloop - endfacet - facet normal 0.491568 -0.250466 -0.834043 - outer loop - vertex 0.848454 0.119487 -0.39457 - vertex 0.792525 0.160123 -0.439737 - vertex 0.826326 0.226462 -0.439737 - endloop - endfacet - facet normal 0.491568 -0.250466 -0.834043 - outer loop - vertex 0.848454 0.119487 -0.39457 - vertex 0.826326 0.226462 -0.439737 - vertex 0.892075 0.205099 -0.39457 - endloop - endfacet - facet normal 0.361643 -0.184267 -0.913926 - outer loop - vertex 0.792525 0.160123 -0.439737 - vertex 0.731344 0.204573 -0.472909 - vertex 0.754404 0.249831 -0.472909 - endloop - endfacet - facet normal 0.361643 -0.184267 -0.913926 - outer loop - vertex 0.792525 0.160123 -0.439737 - vertex 0.754404 0.249831 -0.472909 - vertex 0.826326 0.226462 -0.439737 - endloop - endfacet - facet normal 0.221288 -0.112752 -0.968668 - outer loop - vertex 0.731344 0.204573 -0.472909 - vertex 0.66658 0.251627 -0.493181 - vertex 0.678269 0.274569 -0.493181 - endloop - endfacet - facet normal 0.221288 -0.112752 -0.968668 - outer loop - vertex 0.731344 0.204573 -0.472909 - vertex 0.678269 0.274569 -0.493181 - vertex 0.754404 0.249831 -0.472909 - endloop - endfacet - facet normal 0.2453 -0.0388517 0.968668 - outer loop - vertex 0.678269 0.274569 0.493181 - vertex 0.754404 0.249831 0.472909 - vertex 0.76235 0.3 0.472909 - endloop - endfacet - facet normal 0.2453 -0.0388516 0.968668 - outer loop - vertex 0.678269 0.274569 0.493181 - vertex 0.76235 0.3 0.472909 - vertex 0.682297 0.3 0.493181 - endloop - endfacet - facet normal 0.400885 -0.0634941 0.913926 - outer loop - vertex 0.754404 0.249831 0.472909 - vertex 0.826326 0.226462 0.439737 - vertex 0.837974 0.3 0.439737 - endloop - endfacet - facet normal 0.400885 -0.0634939 0.913926 - outer loop - vertex 0.754404 0.249831 0.472909 - vertex 0.837974 0.3 0.439737 - vertex 0.76235 0.3 0.472909 - endloop - endfacet - facet normal 0.544907 -0.0863045 0.834043 - outer loop - vertex 0.826326 0.226462 0.439737 - vertex 0.892076 0.205099 0.39457 - vertex 0.907106 0.3 0.39457 - endloop - endfacet - facet normal 0.544907 -0.0863051 0.834043 - outer loop - vertex 0.826326 0.226462 0.439737 - vertex 0.907106 0.3 0.39457 - vertex 0.837974 0.3 0.439737 - endloop - endfacet - facet normal 0.673418 -0.106659 0.731527 - outer loop - vertex 0.892076 0.205099 0.39457 - vertex 0.949858 0.186324 0.338641 - vertex 0.967862 0.3 0.338641 - endloop - endfacet - facet normal 0.673418 -0.106659 0.731527 - outer loop - vertex 0.892076 0.205099 0.39457 - vertex 0.967862 0.3 0.338641 - vertex 0.907106 0.3 0.39457 - endloop - endfacet - facet normal 0.783048 -0.124023 0.609471 - outer loop - vertex 0.949858 0.186324 0.338641 - vertex 0.998096 0.170651 0.273474 - vertex 1.01858 0.3 0.273474 - endloop - endfacet - facet normal 0.783048 -0.124022 0.609471 - outer loop - vertex 0.949858 0.186324 0.338641 - vertex 1.01858 0.3 0.273474 - vertex 0.967862 0.3 0.338641 - endloop - endfacet - facet normal 0.871064 -0.137963 0.471396 - outer loop - vertex 0.998096 0.170651 0.273474 - vertex 1.03548 0.158505 0.200848 - vertex 1.05789 0.3 0.200848 - endloop - endfacet - facet normal 0.871064 -0.137963 0.471396 - outer loop - vertex 0.998096 0.170651 0.273474 - vertex 1.05789 0.3 0.200848 - vertex 1.01858 0.3 0.273474 - endloop - endfacet - facet normal 0.93538 -0.14815 0.321116 - outer loop - vertex 1.03548 0.158505 0.200848 - vertex 1.06098 0.15022 0.122743 - vertex 1.0847 0.3 0.122743 - endloop - endfacet - facet normal 0.93538 -0.14815 0.321115 - outer loop - vertex 1.03548 0.158505 0.200848 - vertex 1.0847 0.3 0.122743 - vertex 1.05789 0.3 0.200848 - endloop - endfacet - facet normal 0.974541 -0.154352 0.162623 - outer loop - vertex 1.06098 0.15022 0.122743 - vertex 1.0739 0.146019 0.0412897 - vertex 1.09829 0.3 0.0412897 - endloop - endfacet - facet normal 0.974541 -0.154352 0.162622 - outer loop - vertex 1.06098 0.15022 0.122743 - vertex 1.09829 0.3 0.0412897 - vertex 1.0847 0.3 0.122743 - endloop - endfacet - facet normal 0.987688 -0.156434 0 - outer loop - vertex 1.0739 0.146019 0.0412897 - vertex 1.0739 0.146019 -0.0412897 - vertex 1.09829 0.3 -0.0412897 - endloop - endfacet - facet normal 0.987688 -0.156434 0 - outer loop - vertex 1.0739 0.146019 0.0412897 - vertex 1.09829 0.3 -0.0412897 - vertex 1.09829 0.3 0.0412897 - endloop - endfacet - facet normal 0.974541 -0.154352 -0.162623 - outer loop - vertex 1.0739 0.146019 -0.0412897 - vertex 1.06098 0.15022 -0.122743 - vertex 1.0847 0.3 -0.122743 - endloop - endfacet - facet normal 0.974541 -0.154352 -0.162622 - outer loop - vertex 1.0739 0.146019 -0.0412897 - vertex 1.0847 0.3 -0.122743 - vertex 1.09829 0.3 -0.0412897 - endloop - endfacet - facet normal 0.93538 -0.148149 -0.321116 - outer loop - vertex 1.06098 0.15022 -0.122743 - vertex 1.03548 0.158505 -0.200848 - vertex 1.05789 0.3 -0.200848 - endloop - endfacet - facet normal 0.93538 -0.14815 -0.321117 - outer loop - vertex 1.06098 0.15022 -0.122743 - vertex 1.05789 0.3 -0.200848 - vertex 1.0847 0.3 -0.122743 - endloop - endfacet - facet normal 0.871064 -0.137962 -0.471396 - outer loop - vertex 1.03548 0.158505 -0.200848 - vertex 0.998096 0.170651 -0.273474 - vertex 1.01858 0.3 -0.273474 - endloop - endfacet - facet normal 0.871064 -0.137963 -0.471396 - outer loop - vertex 1.03548 0.158505 -0.200848 - vertex 1.01858 0.3 -0.273474 - vertex 1.05789 0.3 -0.200848 - endloop - endfacet - facet normal 0.783048 -0.124022 -0.609471 - outer loop - vertex 0.998096 0.170651 -0.273474 - vertex 0.949858 0.186324 -0.338641 - vertex 0.967862 0.3 -0.338641 - endloop - endfacet - facet normal 0.783048 -0.124022 -0.60947 - outer loop - vertex 0.998096 0.170651 -0.273474 - vertex 0.967862 0.3 -0.338641 - vertex 1.01858 0.3 -0.273474 - endloop - endfacet - facet normal 0.673418 -0.106659 -0.731527 - outer loop - vertex 0.949858 0.186324 -0.338641 - vertex 0.892075 0.205099 -0.39457 - vertex 0.907106 0.3 -0.39457 - endloop - endfacet - facet normal 0.673418 -0.106659 -0.731527 - outer loop - vertex 0.949858 0.186324 -0.338641 - vertex 0.907106 0.3 -0.39457 - vertex 0.967862 0.3 -0.338641 - endloop - endfacet - facet normal 0.544908 -0.0863047 -0.834043 - outer loop - vertex 0.892075 0.205099 -0.39457 - vertex 0.826326 0.226462 -0.439737 - vertex 0.837974 0.3 -0.439737 - endloop - endfacet - facet normal 0.544907 -0.0863049 -0.834043 - outer loop - vertex 0.892075 0.205099 -0.39457 - vertex 0.837974 0.3 -0.439737 - vertex 0.907106 0.3 -0.39457 - endloop - endfacet - facet normal 0.400885 -0.0634939 -0.913926 - outer loop - vertex 0.826326 0.226462 -0.439737 - vertex 0.754404 0.249831 -0.472909 - vertex 0.76235 0.3 -0.472909 - endloop - endfacet - facet normal 0.400885 -0.0634938 -0.913925 - outer loop - vertex 0.826326 0.226462 -0.439737 - vertex 0.76235 0.3 -0.472909 - vertex 0.837974 0.3 -0.439737 - endloop - endfacet - facet normal 0.2453 -0.0388516 -0.968668 - outer loop - vertex 0.754404 0.249831 -0.472909 - vertex 0.678269 0.274569 -0.493181 - vertex 0.682297 0.3 -0.493181 - endloop - endfacet - facet normal 0.2453 -0.0388517 -0.968668 - outer loop - vertex 0.754404 0.249831 -0.472909 - vertex 0.682297 0.3 -0.493181 - vertex 0.76235 0.3 -0.472909 - endloop - endfacet -endsolid diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/collapseDict b/tutorials/mesh/cvMesh/simpleShapes/system/collapseDict deleted file mode 100644 index 9034677ca9c28252bd5ecf19eb24095c33c763c9..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/system/collapseDict +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object collapseDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -collapseEdgesCoeffs -{ - minimumEdgeLength 1e-6; - maximumMergeAngle 180; - reductionFactor 0.5; -} - -collapseFacesCoeffs -{ - initialFaceLengthFactor 0.5; - reductionFactor 0.5; - - allowEarlyCollapseToPoint on; - allowEarlyCollapseCoeff 0.2; - guardFraction 0.1; - maxCollapseFaceToPointSideLengthCoeff 0.3; -} - -meshQualityCoeffs -{ - #include "meshQualityDict"; - maximumIterations 30; - maximumSmoothingIterations 1; - maxPointErrorCount 5; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/controlDict b/tutorials/mesh/cvMesh/simpleShapes/system/controlDict deleted file mode 100644 index 8bbced6c67a446eef989729934ebaa162998c034..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/system/controlDict +++ /dev/null @@ -1,54 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object controlDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -startFrom latestTime; - -startTime 0; - -stopAt endTime; - -endTime 80; - -deltaT 1; - -writeControl timeStep; - -writeInterval 80; // 10 to see the meshing steps - -purgeWrite 0; - -writeFormat ascii; - -writePrecision 10; - -writeCompression uncompressed; - -timeFormat general; - -timePrecision 6; - -runTimeModifiable yes; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/cvMeshDict b/tutorials/mesh/cvMesh/simpleShapes/system/cvMeshDict deleted file mode 100644 index 99379e62c9399731eb8f9949bfcf84f4daf669cc..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/system/cvMeshDict +++ /dev/null @@ -1,371 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object cvMeshDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -/* - -Control dictionary for cvMesh - polyhedral mesh generator. - -cvMesh phases: -1. fill volume with initial points (initialPoints subdictionary). An option - is to reread from previous set of points. - -2. internal point motion (motionControl subdictionary) - -3. every once in a while add point duplets/triplets to conform to - surfaces and features (surfaceConformation subdictionary) - -4. back to 2 - -5. construct polyMesh. - - filter (polyMeshFiltering subdictionary) - - check (meshQualityControls subdictionary) and undo filtering - - -See also cvControls.H in the conformalVoronoiMesh library - -*/ - - -// Important: -// ---------- -// Any scalar with a name <name>Coeff specifies a value that will be implemented -// as a faction of the local target cell size -// Any scalar with a name <name>Size specifies an absolute size. - - -// Geometry. Definition of all surfaces. All surfaces are of class -// searchableSurface. -// Surfaces need to be (almost) closed - use closedTriSurfaceMesh -// if they are not topologically closed. Surfaces need to be oriented so -// the space to be meshed is always on the inside of all surfaces. Use e.g. -// surfaceOrient. -geometry -{ - // Internal shape - coneAndSphere_clean_orient.obj - { - name coneAndSphere; - type triSurfaceMesh; - } - - // Outside of domain - domain_clean_orient.stl - { - name domain; - type triSurfaceMesh; - } - -} - - -// Controls for conforming to the surfaces. -surfaceConformation -{ - // A point inside surfaces that is inside mesh. - locationInMesh (0 -0.5 0); - - // How far apart are point-duplets generated. Balance this between - // - very low distance: little chance of interference from other - // surfaces - // - largish distance: less non-orthogonality in final cell - // (circumcentre far away from centroid) - pointPairDistanceCoeff 0.1; - - // Mixed feature edges - both inside and outside edges. Recreated - // by inserting triplets of points to recreate a single edge. Done for - // all edges emanating from point. triplets of points get inserted - // mixedFeaturePointPPDistanceCoeff distance away from feature point. - mixedFeaturePointPPDistanceCoeff 5.0; - - // Distance to a feature point within which surface and edge - // conformation points are excluded - fraction of the local target - // cell size - featurePointExclusionDistanceCoeff 0.6; - - // Distance to an existing feature edge conformation location - // within which other edge conformation location are excluded - - // fraction of the local target cell size - featureEdgeExclusionDistanceCoeff 0.6; - - // Optimisation: do not check for surface intersection (of dual edges) - // for points near to surface. - surfaceSearchDistanceCoeff 2.5; - - // Maximum allowable protrusion through the surface before - // conformation points are added - fraction of the local target - // cell size. These small protusions are (hopefully) done by mesh filtering - // instead. - maxSurfaceProtrusionCoeff 0.1; - - // If feature edge with large angle (so more than 125 degrees) introduce - // additional points to create two half angled cells (= mitering). - maxQuadAngle 125; - - // Frequency to redo surface conformation (expensive). - surfaceConformationRebuildFrequency 10; - - // Specialised feature point handling - specialiseFeaturePoints on; - - // Initial and intermediate controls - conformationControls - { - // We've got a point poking through the surface. Don't do any - // surface conformation if near feature edge (since feature edge - // conformation should have priority) - - // distance to search for near feature edges - edgeSearchDistCoeff 2; - - // Proximity to a feature edge where a surface hit is - // not created, only the edge conformation is created - // - fraction of the local target cell size. Coarse - // conformation, initial protrusion tests. - surfacePtReplaceDistCoeff 0.5; - - - surfacePtExclusionDistanceCoeff 0.5; - - // Stop either at maxIterations or if the number of surface pokes - // is very small (iterationToInitialHitRatioLimit * initial number) - // Note: perhaps iterationToInitialHitRatioLimit should be absolute - // count? - maxIterations 15; - - iterationToInitialHitRatioLimit 0.001; - } - - // Geometry to mesh to - geometryToConformTo - { - coneAndSphere - { - featureMethod extendedFeatureEdgeMesh; - extendedFeatureEdgeMesh "coneAndSphere_clean_orient.extendedFeatureEdgeMesh"; - } - - domain - { - featureMethod extendedFeatureEdgeMesh; - extendedFeatureEdgeMesh "domain_clean_orient.extendedFeatureEdgeMesh"; - } - } - - additionalFeatures {} -} - - -// Controls for seeding initial points and general control of the target -// cell size (used everywhere) -initialPoints -{ - // Do not place point closer than minimumSurfaceDistanceCoeff - // to the surface. Is fraction of local target cell size (see below) - minimumSurfaceDistanceCoeff 0.55; - - initialPointsMethod autoDensity; - // initialPointsMethod uniformGrid; - // initialPointsMethod bodyCentredCubic; - // initialPointsMethod pointFile; - - // Take boundbox of all geometry. Samples with this box. If too much - // samples (due to target cell size) in box split box. - autoDensityCoeffs - { - minCellSizeLimit 0.1; - // Initial number of refinement levels. Needs to be enough to pick - // up features due to size ratio. If not enough it will take longer - // to determine point seeding. - minLevels 4; - // Split box if ratio of min to max cell size larger than maxSizeRatio - maxSizeRatio 5.0; - // Per box sample 3x3x3 internally - sampleResolution 3; - // Additionally per face of the box sample 3 - surfaceSampleResolution 3; - } - - uniformGridCoeffs - { - // Absolute cell size. - initialCellSize 0.0015; - randomiseInitialGrid yes; - randomPerturbationCoeff 0.02; - } - - bodyCentredCubicCoeffs - { - initialCellSize 0.0015; - randomiseInitialGrid no; - randomPerturbationCoeff 0.1; - } - - pointFileCoeffs - { - // Reads points from file. Still rejects points that are too - // close to the surface (minimumSurfaceDistanceCoeff) or on the - // wrong side of the surfaces. - pointFile "constant/internalDelaunayVertices"; - } -} - - -// Control size of voronoi cells i.e. distance between points. This -// determines the target cell size which is used everywhere. -// It determines the cell size given a location. It then uses all -// the rules -// - defaultCellSize -// - cellSizeControlGeometry -// to determine target cell size. Rule with highest priority wins. If same -// priority smallest cell size wins. -motionControl -{ - // Absolute cell size of back ground mesh. This is the maximum cell size. - defaultCellSize 0.1; - - shapeControlFunctions - { - coneAndSphere - { - type searchableSurfaceControl; - priority 1; - mode bothSides; - - surfaceCellSizeFunction uniformValue; - uniformValueCoeffs - { - surfaceCellSize 0.075; - } - - cellSizeFunction uniform; - uniformCoeffs - {} - } - - domain - { - type searchableSurfaceControl; - priority 1; - mode bothSides; - - surfaceCellSizeFunction uniformValue; - uniformValueCoeffs - { - surfaceCellSize $defaultCellSize; - } - - cellSizeFunction uniform; - uniformCoeffs - {} - } - } - - cellAspectRatioControl - { - aspectRatio 1.0; - aspectRatioDirection (0 0 0); - } - - // Underrelaxation for point motion. Simulated annealing: starts off at 1 - // and lowers to 0 (at simulation endTime) to converge points. - // adaptiveLinear is preferred choice. - // Points move by e.g. 10% of tet size. - relaxationModel adaptiveLinear; //rampHoldFall - - adaptiveLinearCoeffs - { - relaxationStart 1.0; - relaxationEnd 0.0; - } - - // Output lots and lots of .obj files - objOutput no; - - // Timing and memory usage. - timeChecks no; - - // Number of rays in plane parallel to nearest surface. Used to detect - // next closest surfaces. Used to work out alignment (three vectors) - // to surface. - // Note that only the initial points (from the seeding) calculate this - // information so if these are not fine enough the alignment will - // not be correct. (any points added during the running will lookup - // this information from the nearest initial point since it is - // expensive) - alignmentSearchSpokes 36; - - // For each delaunay edge (between two vertices, becomes - // the Voronoi face normal) snap to the alignment direction if within - // alignmentAcceptanceAngle. Slightly > 45 is a good choice - prevents - // flipping. - alignmentAcceptanceAngle 48; - - // How often to rebuild the alignment info (expensive) - sizeAndAlignmentRebuildFrequency 20; - - // When to insert points. Not advisable change to - // these settings. - pointInsertionCriteria - { - // If edge larger than 1.75 target cell size - // (so tets too large/stretched) insert point - cellCentreDistCoeff 1.75; - // Do not insert point if voronoi face (on edge) very small. - faceAreaRatioCoeff 0.0025; - // Insert point only if edge closely aligned to local alignment - // direction. - acceptanceAngle 21.5; - } - - // Opposite: remove point if mesh too compressed. Do not change these - // settings. - pointRemovalCriteria - { - cellCentreDistCoeff 0.65; - } - - // How to determine the point motion. All edges got some direction. - // Sum all edge contributions to determine point motion. Weigh by - // face area so motion is preferentially determined by large faces - // (or more importantly ignore contribution from small faces). - // Do not change these settings. - faceAreaWeightModel piecewiseLinearRamp; - - piecewiseLinearRampCoeffs - { - lowerAreaFraction 0.5; - upperAreaFraction 1.0; - } -} - - -// After simulation, when converting to polyMesh, filter out small faces/edges. -// Do not change. See cvControls.H -polyMeshFiltering -{ - filterEdges on; - filterFaces on; - writeTetDualMesh false; -} - - -#include "meshQualityDict"; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/fvSchemes b/tutorials/mesh/cvMesh/simpleShapes/system/fvSchemes deleted file mode 100644 index d8d476c57fee0824977fcf92dc4d484653bd003b..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/system/fvSchemes +++ /dev/null @@ -1,55 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSchemes; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -d2dt2Schemes -{ - default steadyState; -} - -gradSchemes -{ - default Gauss cubic; -} - -divSchemes -{ - default Gauss cubic; -} - -laplacianSchemes -{ - default Gauss linear uncorrected; -} - -interpolationSchemes -{ - default cubic; -} - -snGradSchemes -{ - default uncorrected; -} - -fluxRequired -{ - default no; - D ; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/fvSolution b/tutorials/mesh/cvMesh/simpleShapes/system/fvSolution deleted file mode 100644 index 8dabfdac0a8192e197f0550d41b1691f1c3b68e6..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/system/fvSolution +++ /dev/null @@ -1,41 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object fvSolution; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -solvers -{ - "(D|Dcorr)" - { - solver GAMG; - tolerance 1e-06; - relTol 0.99; - smoother GaussSeidel; - cacheAgglomeration true; - nCellsInCoarsestLevel 6; - agglomerator faceAreaPair; - mergeLevels 1; - } -} - -stressAnalysis -{ - nCorrectors 1; - D 1e-10; - accelerationFactor 2; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/meshQualityDict b/tutorials/mesh/cvMesh/simpleShapes/system/meshQualityDict deleted file mode 100644 index 1b83e2bd87b647e97cf8b39d2dccbb30af267c8e..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/system/meshQualityDict +++ /dev/null @@ -1,73 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ - -FoamFile -{ - version 2.0; - format ascii; - - root ""; - case ""; - instance ""; - local ""; - - class dictionary; - object meshQualityDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -//- Maximum non-orthogonality allowed. Set to 180 to disable. -maxNonOrtho 65; - -//- Max skewness allowed. Set to <0 to disable. -maxBoundarySkewness 50; -maxInternalSkewness 10; - -//- Max concaveness allowed. Is angle (in degrees) below which concavity -// is allowed. 0 is straight face, <0 would be convex face. -// Set to 180 to disable. -maxConcave 80; - -//- Minimum quality of the tet formed by the face-centre -// and variable base point minimum decomposition triangles and -// the cell centre. This has to be a positive number for tracking -// to work. Set to very negative number (e.g. -1E30) to -// disable. -// <0 = inside out tet, -// 0 = flat tet -// 1 = regular tet -minTetQuality 1e-30; - -//- Minimum pyramid volume. Is absolute volume of cell pyramid. -// Set to a sensible fraction of the smallest cell volume expected. -// Set to very negative number (e.g. -1E30) to disable. -minVol 0; - -//- Minimum face area. Set to <0 to disable. -minArea -1; - -//- Minimum face twist. Set to <-1 to disable. dot product of face normal -//- and face centre triangles normal -minTwist 0.001; - -//- minimum normalised cell determinant -//- 1 = hex, <= 0 = folded or flattened illegal cell -minDeterminant 0.001; - -//- minFaceWeight (0 -> 0.5) -minFaceWeight 0.02; - -//- minVolRatio (0 -> 1) -minVolRatio 0.01; - -//must be >0 for Fluent compatibility -minTriangleTwist -1; - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/surfaceFeatureExtractDict b/tutorials/mesh/cvMesh/simpleShapes/system/surfaceFeatureExtractDict deleted file mode 100644 index 850a4ea41f48c278271672540d2f1eff0dd60b03..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/system/surfaceFeatureExtractDict +++ /dev/null @@ -1,57 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object surfaceFeatureExtractDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -coneAndSphere_clean_orient.obj -{ - extractionMethod extractFromSurface; - - extractFromSurfaceCoeffs - { - // Mark edges whose adjacent surface normals are at an angle less - // than includedAngle as features - // - 0 : selects no edges - // - 180: selects all edges - includedAngle 125; - } - - // Write options - - // Write features to obj format for postprocessing - writeObj no; -} - - -domain_clean_orient.stl -{ - extractionMethod extractFromSurface; - - extractFromSurfaceCoeffs - { - // Mark edges whose adjacent surface normals are at an angle less - // than includedAngle as features - // - 0 : selects no edges - // - 180: selects all edges - includedAngle 125; - } - - // Write options - - // Write features to obj format for postprocessing - writeObj no; -} - - -// ************************************************************************* // diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/topoSetDict b/tutorials/mesh/cvMesh/simpleShapes/system/topoSetDict deleted file mode 100644 index 363fbd4fc15ac9b64be4c912371670f1c256f1f3..0000000000000000000000000000000000000000 --- a/tutorials/mesh/cvMesh/simpleShapes/system/topoSetDict +++ /dev/null @@ -1,148 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: dev | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object topoSetDict; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -actions -( - { - name z; - type cellSet; - action new; - source boxToCell; - sourceInfo - { - box (-100 -100 0)(100 100 100); - } - } - - { - name zf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set z; - option all; - } - } - - { - name z; - type cellSet; - action invert; - } - - { - name zf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set z; - option all; - } - } - - // ~~~~~~~~~~~~~~~~ // - - { - name y; - type cellSet; - action new; - source boxToCell; - sourceInfo - { - box (-100 0.1 -100)(100 100 100); - } - } - - { - name yf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set y; - option all; - } - } - - { - name y; - type cellSet; - action invert; - } - - { - name yf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set y; - option all; - } - } - - // ~~~~~~~~~~~~~~~~ // - - { - name x; - type cellSet; - action new; - source boxToCell; - sourceInfo - { - box (0.3 -100 -100)(100 100 100); - } - } - - { - name xf; - type faceSet; - action new; - source cellToFace; - sourceInfo - { - set x; - option all; - } - } - - { - name x; - type cellSet; - action invert; - } - - { - name xf; - type faceSet; - action subset; - source cellToFace; - sourceInfo - { - set x; - option all; - } - } -); - -// ************************************************************************* //