Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev

This commit is contained in:
Chris Greenshields
2021-06-22 10:39:19 +01:00
15 changed files with 143 additions and 6377 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -33,7 +33,7 @@ Description
#include "argList.H"
#include "polyMesh.H"
#include "Time.H"
#include "boundaryMesh.H"
#include "repatchMesh.H"
#include "repatchPolyTopoChanger.H"
#include "unitConversion.H"
#include "OFstream.H"
@ -44,21 +44,21 @@ using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Get all feature edges.
void collectFeatureEdges(const boundaryMesh& bMesh, labelList& markedEdges)
void collectFeatureEdges(const repatchMesh& rMesh, labelList& markedEdges)
{
markedEdges.setSize(bMesh.mesh().nEdges());
markedEdges.setSize(rMesh.mesh().nEdges());
label markedI = 0;
forAll(bMesh.featureSegments(), i)
forAll(rMesh.featureSegments(), i)
{
const labelList& segment = bMesh.featureSegments()[i];
const labelList& segment = rMesh.featureSegments()[i];
forAll(segment, j)
{
label featEdgeI = segment[j];
label meshEdgeI = bMesh.featureToEdge()[featEdgeI];
label meshEdgeI = rMesh.featureToEdge()[featEdgeI];
markedEdges[markedI++] = meshEdgeI;
}
@ -95,24 +95,24 @@ int main(int argc, char *argv[])
<< endl;
//
// Use boundaryMesh to reuse all the featureEdge stuff in there.
// Use repatchMesh to reuse all the featureEdge stuff in there.
//
boundaryMesh bMesh;
bMesh.read(mesh);
repatchMesh rMesh;
rMesh.read(mesh);
// Set feature angle (calculate feature edges)
bMesh.setFeatureEdges(minCos);
rMesh.setFeatureEdges(minCos);
// Collect all feature edges as edge labels
labelList markedEdges;
collectFeatureEdges(bMesh, markedEdges);
collectFeatureEdges(rMesh, markedEdges);
// (new) patch ID for every face in mesh.
labelList patchIDs(bMesh.mesh().size(), -1);
labelList patchIDs(rMesh.mesh().size(), -1);
//
// Fill patchIDs with values for every face by floodfilling without
@ -120,7 +120,7 @@ int main(int argc, char *argv[])
//
// Current patch number.
label newPatchi = bMesh.patches().size();
label newPatchi = rMesh.patches().size();
label suffix = 0;
@ -141,17 +141,17 @@ int main(int argc, char *argv[])
{
patchName = "auto" + name(suffix++);
}
while (bMesh.findPatchID(patchName) != -1);
while (rMesh.findPatchID(patchName) != -1);
bMesh.addPatch(patchName);
rMesh.addPatch(patchName);
bMesh.changePatchType(patchName, "patch");
rMesh.changePatchType(patchName, "patch");
// Fill visited with all faces reachable from unsetFacei.
boolList visited(bMesh.mesh().size());
boolList visited(rMesh.mesh().size());
bMesh.markFaces(markedEdges, unsetFacei, visited);
rMesh.markFaces(markedEdges, unsetFacei, visited);
// Assign all visited faces to current patch
@ -175,7 +175,7 @@ int main(int argc, char *argv[])
const PtrList<boundaryPatch>& patches = bMesh.patches();
const PtrList<repatchPatch>& patches = rMesh.patches();
// Create new list of patches with old ones first
List<polyPatch*> newPatchPtrList(patches.size());
@ -202,7 +202,7 @@ int main(int argc, char *argv[])
// Add new ones with empty size.
for (label patchi = newPatchi; patchi < patches.size(); patchi++)
{
const boundaryPatch& bp = patches[patchi];
const repatchPatch& bp = patches[patchi];
newPatchPtrList[newPatchi] = polyPatch::New
(
@ -230,9 +230,9 @@ int main(int argc, char *argv[])
// Change face ordering
// Since bMesh read from mesh there is one to one mapping so we don't
// Since rMesh read from mesh there is one to one mapping so we don't
// have to do the geometric stuff.
const labelList& meshFace = bMesh.meshFace();
const labelList& meshFace = rMesh.meshFace();
forAll(patchIDs, facei)
{

View File

@ -3,7 +3,6 @@ EXE_INC = \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude
EXE_LIBS = \
-ltriSurface \
-lmeshTools \

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -25,14 +25,14 @@ Application
surfaceToPatch
Description
Reads surface and applies surface regioning to a mesh. Uses boundaryMesh
Reads surface and applies surface regioning to a mesh. Uses repatchMesh
to do the hard work.
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "Time.H"
#include "boundaryMesh.H"
#include "repatchMesh.H"
#include "polyMesh.H"
#include "faceSet.H"
#include "polyTopoChange.H"
@ -103,7 +103,7 @@ label addPatch(polyMesh& mesh, const word& patchName)
bool repatchFace
(
const polyMesh& mesh,
const boundaryMesh& bMesh,
const repatchMesh& rMesh,
const labelList& nearest,
const labelList& surfToMeshPatch,
const label facei,
@ -117,9 +117,9 @@ bool repatchFace
if (nearest[bFacei] != -1)
{
// Use boundary mesh one.
label bMeshPatchID = bMesh.whichPatch(nearest[bFacei]);
label rMeshPatchID = rMesh.whichPatch(nearest[bFacei]);
label patchID = surfToMeshPatch[bMeshPatchID];
label patchID = surfToMeshPatch[rMeshPatchID];
if (patchID != mesh.boundaryMesh().whichPatch(facei))
{
@ -230,13 +230,13 @@ int main(int argc, char *argv[])
Info<< endl;
boundaryMesh bMesh;
repatchMesh rMesh;
// Load in the surface.
bMesh.readTriSurface(surfName);
rMesh.readTriSurface(surfName);
// Add all the boundaryMesh patches to the mesh.
const PtrList<boundaryPatch>& bPatches = bMesh.patches();
const PtrList<repatchPatch>& bPatches = rMesh.patches();
// Map from surface patch ( = boundaryMesh patch) to polyMesh patch
labelList patchMap(bPatches.size());
@ -246,10 +246,10 @@ int main(int argc, char *argv[])
patchMap[i] = addPatch(mesh, bPatches[i].name());
}
// Obtain nearest face in bMesh for each boundary face in mesh that
// Obtain nearest face in rMesh for each boundary face in mesh that
// is within search span.
// Note: should only determine for faceSet if working with that.
labelList nearest(bMesh.getNearest(mesh, searchSpan));
labelList nearest(rMesh.getNearest(mesh, searchSpan));
{
// Dump unmatched faces to faceSet for debugging.
@ -285,7 +285,7 @@ int main(int argc, char *argv[])
{
label facei = iter.key();
if (repatchFace(mesh, bMesh, nearest, patchMap, facei, meshMod))
if (repatchFace(mesh, rMesh, nearest, patchMap, facei, meshMod))
{
nChanged++;
}
@ -297,7 +297,7 @@ int main(int argc, char *argv[])
{
label facei = mesh.nInternalFaces() + bFacei;
if (repatchFace(mesh, bMesh, nearest, patchMap, facei, meshMod))
if (repatchFace(mesh, rMesh, nearest, patchMap, facei, meshMod))
{
nChanged++;
}

View File

@ -35,6 +35,7 @@ SourceFiles
#define codedFunction1Template_H
#include "Function1.H"
#include "fieldTypes.H"
//{{{ begin codeInclude
${codeInclude}

View File

@ -53,8 +53,9 @@ slidingInterface/decoupleSlidingInterface.C
perfectInterface/perfectInterface.C
boundaryMesh/boundaryMesh.C
boundaryPatch/boundaryPatch.C
repatchMesh/repatchMesh.C
repatchMesh/repatchPatch.C
setUpdater/setUpdater.C
meshModifiers = meshCut/meshModifiers

View File

@ -1,51 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 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/>.
Typedef
Foam::bMesh
Description
Holder of faceList and points. (v.s. e.g. primitivePatch which references
points)
\*---------------------------------------------------------------------------*/
#ifndef bMesh_H
#define bMesh_H
#include "PrimitivePatch.H"
#include "faceList.H"
#include "pointField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
typedef PrimitivePatch<faceList, const pointField> bMesh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,22 +22,21 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::boundaryMesh
Foam::repatchMesh
Description
Addressing for all faces on surface of mesh. Can either be read
from polyMesh or from triSurface. Used for repatching existing meshes.
SourceFiles
boundaryMesh.C
repatchMesh.C
\*---------------------------------------------------------------------------*/
#ifndef boundaryMesh_H
#define boundaryMesh_H
#ifndef repatchMesh_H
#define repatchMesh_H
#include "bMesh.H"
#include "boundaryPatch.H"
#include "repatchPatch.H"
#include "PrimitivePatch.H"
#include "PtrList.H"
#include "polyPatchList.H"
@ -49,16 +48,25 @@ namespace Foam
{
// Forward declaration of classes
class Time;
class polyMesh;
class primitiveMesh;
/*---------------------------------------------------------------------------*\
Class boundaryMesh Declaration
Class repatchMesh Declaration
\*---------------------------------------------------------------------------*/
class boundaryMesh
class repatchMesh
{
public:
// Public Typedefs
//- Type of the mesh
typedef PrimitivePatch<faceList, const pointField> rMesh;
private:
// Static data
//- Normal along which to divide faces into categories
@ -74,20 +82,15 @@ class boundaryMesh
// Private Data
//- All boundary mesh data. Reconstructed every time faces are repatched
bMesh* meshPtr_;
autoPtr<rMesh> meshPtr_;
//- Patches. Reconstructed every time faces are repatched.
PtrList<boundaryPatch> patches_;
PtrList<repatchPatch> patches_;
//- For every face in mesh() gives corresponding polyMesh face
// (not sensible if mesh read from triSurface)
labelList meshFace_;
//
// Edge handling
//
//- Points referenced by feature edges.
pointField featurePoints_;
@ -104,9 +107,6 @@ class boundaryMesh
// Indices into featureEdges_.
labelListList featureSegments_;
//- Additional edges (indices of mesh edges)
labelList extraEdges_;
// Private Member Functions
@ -124,24 +124,6 @@ class boundaryMesh
boolList& featVisited
) const;
//- Do point-edge walk to determine nearest (to edgeI). Stops if
// distance >= maxDistance. Used to determine edges close to seed
// point.
void markEdges
(
const label maxDistance,
const label edgeI,
const label distance,
labelList& minDistance,
DynamicList<label>& visited
) const;
//- Get index of polypatch by name
label findPatchID(const polyPatchList&, const word&) const;
//- Get index of patch for face
label whichPatch(const polyPatchList&, const label) const;
//- Gets labels of changed faces and propagates them to the edges.
// Returns labels of edges changed. Fills edgeRegion of visited edges
// with current region.
@ -175,31 +157,30 @@ class boundaryMesh
public:
//- Runtime type information
ClassName("boundaryMesh");
ClassName("repatchMesh");
// Constructors
//- Construct null
boundaryMesh();
repatchMesh();
//- Disallow default bitwise copy construction
boundaryMesh(const boundaryMesh&) = delete;
repatchMesh(const repatchMesh&) = delete;
//- Destructor
~boundaryMesh();
void clearOut();
~repatchMesh();
// Member Functions
// Access
const bMesh& mesh() const
//- Access the boundary mesh
const rMesh& mesh() const
{
if (!meshPtr_)
if (!meshPtr_.valid())
{
FatalErrorInFunction
<< "No mesh available. Probably mesh not yet"
@ -208,12 +189,12 @@ public:
return *meshPtr_;
}
const PtrList<boundaryPatch>& patches() const
//- Access the patches
const PtrList<repatchPatch>& patches() const
{
return patches_;
}
//- Label of original face in polyMesh (before patchify(...))
const labelList& meshFace() const
{
@ -250,25 +231,16 @@ public:
return featureSegments_;
}
//- Indices into edges of additional edges.
const labelList& extraEdges() const
{
return extraEdges_;
}
// Edit
//- Read from boundaryMesh of polyMesh.
//- Read from repatchMesh of polyMesh.
void read(const polyMesh&);
//- Read from triSurface
void readTriSurface(const fileName&);
//- Write to file.
void writeTriSurface(const fileName&) const;
//- Get bMesh index of nearest face for every boundary face in
//- Get rMesh index of nearest face for every boundary face in
// pMesh. Gets passed initial search box. If not found
// returns -1 for the face.
labelList getNearest
@ -277,20 +249,6 @@ public:
const vector& searchSpan
) const;
//- Take over patches onto polyMesh from nearest face in *this
// (from call to getNearest). Insert as
// -new set of patches (newMesh.addPatches)
// -topoChanges to change faces.
// nearest is list of nearest face in *this for every boundary
// face. oldPatches is list of existing patches in mesh.
// newMesh is the mesh to which the new patches are added.
// (so has to be constructed without patches).
void patchify
(
const labelList& nearest,
const polyBoundaryMesh& oldPatches,
polyMesh& newMesh
) const;
// Patches
@ -300,9 +258,6 @@ public:
//- Get index of patch by name
label findPatchID(const word& patchName) const;
//- Get names of patches
wordList patchNames() const;
//- Add to back of patch list.
void addPatch(const word& patchName);
@ -312,10 +267,6 @@ public:
//- Change patch.
void changePatchType(const word& patchName, const word& type);
//- Recalculate face ordering and patches. Return old to new
// mapping.
void changeFaces(const labelList& patchIDs, labelList& oldToNew);
// Edges
@ -323,50 +274,6 @@ public:
// to angle of faces across edge
void setFeatureEdges(const scalar minCos);
//- Set extraEdges to edges 'near' to edgeI. Uses point-edge walk
// to determine 'near'.
void setExtraEdges(const label edgeI);
// Faces
//- Simple triangulation of face subset. Returns number of triangles
// needed.
label getNTris(const label facei) const;
//- Simple triangulation of face subset. TotalNTris is total number
// of triangles, nTris is per face number of triangles.
label getNTris
(
const label startFacei,
const label nFaces,
labelList& nTris
) const;
//- Simple triangulation of face subset. TotalNTris is total number
// of triangles (from call to getNTris)
// triVerts is triangle vertices, three per triangle.
void triangulate
(
const label startFacei,
const label nFaces,
const label totalNTris,
labelList& triVerts
) const;
//- Number of points used in face subset.
label getNPoints(const label startFacei, const label nFaces) const;
//- Same as triangulate but in local vertex numbering.
// (Map returned).
void triangulateLocal
(
const label startFacei,
const label nFaces,
const label totalNTris,
labelList& triVerts,
labelList& localToGlobal
) const;
// Other
@ -382,7 +289,7 @@ public:
// Member Operators
//- Disallow default bitwise assignment
void operator=(const boundaryMesh&) = delete;
void operator=(const repatchMesh&) = delete;
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -23,13 +23,13 @@ License
\*---------------------------------------------------------------------------*/
#include "boundaryPatch.H"
#include "repatchPatch.H"
#include "dictionary.H"
#include "Ostream.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::boundaryPatch::boundaryPatch
Foam::repatchPatch::repatchPatch
(
const word& name,
const label index,
@ -44,7 +44,7 @@ Foam::boundaryPatch::boundaryPatch
{}
Foam::boundaryPatch::boundaryPatch
Foam::repatchPatch::repatchPatch
(
const word& name,
const dictionary& dict,
@ -57,7 +57,7 @@ Foam::boundaryPatch::boundaryPatch
{}
Foam::boundaryPatch::boundaryPatch(const boundaryPatch& p, const label index)
Foam::repatchPatch::repatchPatch(const repatchPatch& p, const label index)
:
patchIdentifier(p.name(), index, p.physicalType()),
size_(p.size()),
@ -65,21 +65,21 @@ Foam::boundaryPatch::boundaryPatch(const boundaryPatch& p, const label index)
{}
Foam::autoPtr<Foam::boundaryPatch> Foam::boundaryPatch::clone() const
Foam::autoPtr<Foam::repatchPatch> Foam::repatchPatch::clone() const
{
return autoPtr<boundaryPatch>(new boundaryPatch(*this));
return autoPtr<repatchPatch>(new repatchPatch(*this));
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::boundaryPatch::~boundaryPatch()
Foam::repatchPatch::~repatchPatch()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::boundaryPatch::write(Ostream& os) const
void Foam::repatchPatch::write(Ostream& os) const
{
patchIdentifier::write(os);
writeEntry(os, "nFaces", size_);
@ -89,10 +89,10 @@ void Foam::boundaryPatch::write(Ostream& os) const
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
Foam::Ostream& Foam::operator<<(Ostream& os, const boundaryPatch& p)
Foam::Ostream& Foam::operator<<(Ostream& os, const repatchPatch& p)
{
p.write(os);
os.check("Ostream& operator<<(Ostream& f, const boundaryPatch&)");
os.check("Ostream& operator<<(Ostream& f, const repatchPatch&)");
return os;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,19 +22,19 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::boundaryPatch
Foam::repatchPatch
Description
Like polyPatch but without reference to mesh. patchIdentifier::index
is not used. Used in boundaryMesh to hold data on patches.
is not used. Used in repatchMesh to hold data on patches.
SourceFiles
boundaryPatch.C
repatchPatch.C
\*---------------------------------------------------------------------------*/
#ifndef boundaryPatch_H
#define boundaryPatch_H
#ifndef repatchPatch_H
#define repatchPatch_H
#include "patchIdentifier.H"
#include "autoPtr.H"
@ -46,16 +46,16 @@ namespace Foam
// Forward declaration of friend functions and operators
class boundaryPatch;
class repatchPatch;
Ostream& operator<<(Ostream&, const boundaryPatch&);
Ostream& operator<<(Ostream&, const repatchPatch&);
/*---------------------------------------------------------------------------*\
Class boundaryPatch Declaration
Class repatchPatch Declaration
\*---------------------------------------------------------------------------*/
class boundaryPatch
class repatchPatch
:
public patchIdentifier
{
@ -69,7 +69,7 @@ public:
// Constructors
//- Construct from components
boundaryPatch
repatchPatch
(
const word& name,
const label index,
@ -79,7 +79,7 @@ public:
);
//- Construct from dictionary
boundaryPatch
repatchPatch
(
const word& name,
const dictionary& dict,
@ -87,14 +87,14 @@ public:
);
//- Copy constructor, resetting the index
boundaryPatch(const boundaryPatch&, const label index);
repatchPatch(const repatchPatch&, const label index);
//- Clone
autoPtr<boundaryPatch> clone() const;
autoPtr<repatchPatch> clone() const;
//- Destructor
~boundaryPatch();
~repatchPatch();
// Member Functions
@ -126,7 +126,7 @@ public:
// Ostream Operator
friend Ostream& operator<<(Ostream&, const boundaryPatch&);
friend Ostream& operator<<(Ostream&, const repatchPatch&);
};

View File

@ -1,243 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class featureEdgeMesh;
location "constant/geometry";
object rotorBlades.eMesh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// points:
104
(
(0.0375 9.18455e-18 0.04)
(2.29614e-18 -0.0375 0.04)
(0.0125 3.06152e-18 0.04)
(-0.0375 -4.59227e-18 0.04)
(7.65379e-19 -0.0125 0.04)
(-6.88841e-18 0.0375 0.04)
(-0.0125 -1.53076e-18 0.04)
(0.0375 9.18455e-18 0.08)
(-2.29614e-18 0.0125 0.04)
(2.29614e-18 -0.0375 0.08)
(0.0125 3.06152e-18 0.08)
(-0.0375 -4.59227e-18 0.08)
(7.65379e-19 -0.0125 0.08)
(-6.88841e-18 0.0375 0.08)
(-0.0125 -1.53076e-18 0.08)
(-2.29614e-18 0.0125 0.08)
(-6.88841e-18 0.0375 0.055)
(-6.88841e-18 0.0375 0.06)
(0.0375 9.18455e-18 0.065)
(0.0375 9.18455e-18 0.06)
(-0.0125 -1.53076e-18 0.06)
(-0.0125 -1.53076e-18 0.055)
(-4.13305e-18 0.0225 0.04)
(-5.0515e-18 0.0275 0.04)
(0.0225 5.51073e-18 0.08)
(0.0275 6.73533e-18 0.08)
(2.29614e-18 -0.0375 0.06)
(2.29614e-18 -0.0375 0.065)
(-2.29614e-18 0.0125 0.06)
(-2.29614e-18 0.0125 0.055)
(0.0125 3.06152e-18 0.06)
(0.0125 3.06152e-18 0.065)
(0.0325 7.95994e-18 0.04)
(0.0275 6.73533e-18 0.04)
(1.68383e-18 -0.0275 0.08)
(1.37768e-18 -0.0225 0.08)
(-0.0375 -4.59227e-18 0.06)
(-0.0375 -4.59227e-18 0.065)
(7.65379e-19 -0.0125 0.065)
(7.65379e-19 -0.0125 0.06)
(1.68383e-18 -0.0275 0.04)
(1.98999e-18 -0.0325 0.04)
(-0.0275 -3.36767e-18 0.08)
(-0.0225 -2.75536e-18 0.08)
(-6.88841e-18 0.0375 0.065)
(0.0375 9.18455e-18 0.07)
(-0.0125 -1.53076e-18 0.065)
(-0.0275 -3.36767e-18 0.04)
(-0.0325 -3.97997e-18 0.04)
(-5.0515e-18 0.0275 0.08)
(-4.13305e-18 0.0225 0.08)
(2.29614e-18 -0.0375 0.07)
(-2.29614e-18 0.0125 0.065)
(0.0125 3.06152e-18 0.07)
(-5.96996e-18 0.0325 0.04)
(0.0325 7.95994e-18 0.08)
(-0.0375 -4.59227e-18 0.07)
(7.65379e-19 -0.0125 0.07)
(0.0375 9.18455e-18 0.045)
(1.98999e-18 -0.0325 0.08)
(-6.88841e-18 0.0375 0.07)
(0.0375 9.18455e-18 0.075)
(-0.0125 -1.53076e-18 0.07)
(2.29614e-18 -0.0375 0.045)
(0.0125 3.06152e-18 0.045)
(0.0175 4.28612e-18 0.04)
(-0.0325 -3.97997e-18 0.08)
(2.29614e-18 -0.0375 0.075)
(-2.29614e-18 0.0125 0.07)
(0.0125 3.06152e-18 0.075)
(-0.0375 -4.59227e-18 0.045)
(1.07153e-18 -0.0175 0.04)
(7.65379e-19 -0.0125 0.045)
(-5.96996e-18 0.0325 0.08)
(-0.0375 -4.59227e-18 0.075)
(7.65379e-19 -0.0125 0.075)
(-6.88841e-18 0.0375 0.045)
(0.0375 9.18455e-18 0.05)
(-0.0175 -2.14306e-18 0.04)
(-0.0125 -1.53076e-18 0.045)
(-6.88841e-18 0.0375 0.075)
(-0.0125 -1.53076e-18 0.075)
(2.29614e-18 -0.0375 0.05)
(-3.21459e-18 0.0175 0.04)
(-2.29614e-18 0.0125 0.045)
(0.0125 3.06152e-18 0.05)
(-2.29614e-18 0.0125 0.075)
(0.0175 4.28612e-18 0.08)
(-0.0375 -4.59227e-18 0.05)
(7.65379e-19 -0.0125 0.05)
(0.0225 5.51073e-18 0.04)
(1.07153e-18 -0.0175 0.08)
(-6.88841e-18 0.0375 0.05)
(0.0375 9.18455e-18 0.055)
(-0.0125 -1.53076e-18 0.05)
(1.37768e-18 -0.0225 0.04)
(-0.0175 -2.14306e-18 0.08)
(2.29614e-18 -0.0375 0.055)
(-2.29614e-18 0.0125 0.05)
(0.0125 3.06152e-18 0.055)
(-0.0225 -2.75536e-18 0.04)
(-3.21459e-18 0.0175 0.08)
(-0.0375 -4.59227e-18 0.055)
(7.65379e-19 -0.0125 0.055)
)
// edges:
104
(
(16 17)
(18 19)
(20 21)
(22 23)
(24 25)
(26 27)
(28 29)
(30 31)
(32 33)
(34 35)
(36 37)
(38 39)
(40 41)
(42 43)
(17 44)
(45 18)
(46 20)
(47 48)
(49 50)
(27 51)
(52 28)
(31 53)
(23 54)
(25 55)
(37 56)
(57 38)
(0 32)
(58 0)
(59 34)
(44 60)
(61 45)
(62 46)
(41 1)
(1 63)
(2 64)
(65 2)
(66 42)
(51 67)
(68 52)
(53 69)
(48 3)
(3 70)
(4 71)
(72 4)
(73 49)
(56 74)
(75 57)
(54 5)
(5 76)
(77 58)
(6 78)
(79 6)
(60 80)
(7 61)
(55 7)
(81 62)
(63 82)
(8 83)
(84 8)
(64 85)
(9 59)
(67 9)
(86 68)
(69 10)
(10 87)
(70 88)
(89 72)
(90 65)
(11 66)
(74 11)
(12 75)
(91 12)
(76 92)
(93 77)
(94 79)
(71 95)
(13 73)
(80 13)
(14 81)
(96 14)
(82 97)
(98 84)
(85 99)
(78 100)
(15 86)
(101 15)
(88 102)
(103 89)
(83 22)
(87 24)
(92 16)
(19 93)
(21 94)
(33 90)
(35 91)
(97 26)
(29 98)
(99 30)
(95 40)
(43 96)
(102 36)
(39 103)
(100 47)
(50 101)
)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// ************************************************************************* //

View File

@ -1,739 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class featureEdgeMesh;
location "constant/geometry";
object statorBlades.eMesh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// points:
352
(
(0.08 1.95937e-17 0)
(4.89843e-18 -0.08 0)
(-0.08 -9.79685e-18 0)
(-1.46953e-17 0.08 0)
(0.1 2.44921e-17 0)
(6.12303e-18 -0.1 0)
(-0.1 -1.22461e-17 0)
(-1.83691e-17 0.1 0)
(0.08 1.95937e-17 0.2)
(4.89843e-18 -0.08 0.2)
(-0.08 -9.79685e-18 0.2)
(-1.46953e-17 0.08 0.2)
(0.1 2.44921e-17 0.2)
(6.12303e-18 -0.1 0.2)
(-0.1 -1.22461e-17 0.2)
(-1.83691e-17 0.1 0.2)
(-1.83691e-17 0.1 0.13)
(-1.83691e-17 0.1 0.135)
(0.08 1.95937e-17 0.065)
(0.08 1.95937e-17 0.07)
(0.08 1.95937e-17 0.135)
(0.08 1.95937e-17 0.14)
(4.89843e-18 -0.08 0.07)
(4.89843e-18 -0.08 0.065)
(4.89843e-18 -0.08 0.14)
(4.89843e-18 -0.08 0.135)
(0.1 2.44921e-17 0.02)
(0.1 2.44921e-17 0.015)
(-0.08 -9.79685e-18 0.07)
(-0.08 -9.79685e-18 0.065)
(0.1 2.44921e-17 0.09)
(0.1 2.44921e-17 0.085)
(-0.08 -9.79685e-18 0.14)
(-0.08 -9.79685e-18 0.135)
(6.12303e-18 -0.1 0.015)
(6.12303e-18 -0.1 0.02)
(-1.46953e-17 0.08 0.07)
(-1.46953e-17 0.08 0.065)
(0.1 2.44921e-17 0.16)
(0.1 2.44921e-17 0.155)
(6.12303e-18 -0.1 0.085)
(6.12303e-18 -0.1 0.09)
(-0.1 -1.22461e-17 0.015)
(-0.1 -1.22461e-17 0.02)
(-1.46953e-17 0.08 0.14)
(-1.46953e-17 0.08 0.135)
(6.12303e-18 -0.1 0.155)
(6.12303e-18 -0.1 0.16)
(-0.1 -1.22461e-17 0.085)
(-0.1 -1.22461e-17 0.09)
(-1.83691e-17 0.1 0.015)
(-1.83691e-17 0.1 0.02)
(-0.1 -1.22461e-17 0.155)
(-0.1 -1.22461e-17 0.16)
(-1.83691e-17 0.1 0.085)
(-1.83691e-17 0.1 0.09)
(0.08 1.95937e-17 0.02)
(0.08 1.95937e-17 0.025)
(-1.83691e-17 0.1 0.155)
(-1.83691e-17 0.1 0.16)
(0.08 1.95937e-17 0.09)
(0.08 1.95937e-17 0.095)
(4.89843e-18 -0.08 0.025)
(4.89843e-18 -0.08 0.02)
(0.08 1.95937e-17 0.16)
(0.08 1.95937e-17 0.165)
(4.89843e-18 -0.08 0.095)
(4.89843e-18 -0.08 0.09)
(-0.08 -9.79685e-18 0.025)
(-0.08 -9.79685e-18 0.02)
(4.89843e-18 -0.08 0.165)
(4.89843e-18 -0.08 0.16)
(0.1 2.44921e-17 0.045)
(0.1 2.44921e-17 0.04)
(-0.08 -9.79685e-18 0.095)
(-0.08 -9.79685e-18 0.09)
(-1.46953e-17 0.08 0.025)
(-1.46953e-17 0.08 0.02)
(0.1 2.44921e-17 0.115)
(0.1 2.44921e-17 0.11)
(-0.08 -9.79685e-18 0.165)
(-0.08 -9.79685e-18 0.16)
(6.12303e-18 -0.1 0.04)
(6.12303e-18 -0.1 0.045)
(-1.46953e-17 0.08 0.095)
(-1.46953e-17 0.08 0.09)
(0.1 2.44921e-17 0.185)
(0.1 2.44921e-17 0.18)
(6.12303e-18 -0.1 0.11)
(6.12303e-18 -0.1 0.115)
(-0.1 -1.22461e-17 0.04)
(-0.1 -1.22461e-17 0.045)
(-1.46953e-17 0.08 0.165)
(-1.46953e-17 0.08 0.16)
(6.12303e-18 -0.1 0.18)
(6.12303e-18 -0.1 0.185)
(-0.1 -1.22461e-17 0.11)
(-0.1 -1.22461e-17 0.115)
(-1.83691e-17 0.1 0.04)
(-1.83691e-17 0.1 0.045)
(-0.1 -1.22461e-17 0.18)
(-0.1 -1.22461e-17 0.185)
(-1.83691e-17 0.1 0.11)
(-1.83691e-17 0.1 0.115)
(0.08 1.95937e-17 0.045)
(0.08 1.95937e-17 0.05)
(-1.83691e-17 0.1 0.18)
(-1.83691e-17 0.1 0.185)
(0.08 1.95937e-17 0.115)
(0.08 1.95937e-17 0.12)
(4.89843e-18 -0.08 0.05)
(4.89843e-18 -0.08 0.045)
(0.08 1.95937e-17 0.185)
(0.08 1.95937e-17 0.19)
(4.89843e-18 -0.08 0.12)
(4.89843e-18 -0.08 0.115)
(-0.08 -9.79685e-18 0.05)
(-0.08 -9.79685e-18 0.045)
(4.89843e-18 -0.08 0.19)
(4.89843e-18 -0.08 0.185)
(0.1 2.44921e-17 0.07)
(0.1 2.44921e-17 0.065)
(-0.08 -9.79685e-18 0.12)
(-0.08 -9.79685e-18 0.115)
(-1.46953e-17 0.08 0.05)
(-1.46953e-17 0.08 0.045)
(0.1 2.44921e-17 0.14)
(0.1 2.44921e-17 0.135)
(-0.08 -9.79685e-18 0.19)
(-0.08 -9.79685e-18 0.185)
(6.12303e-18 -0.1 0.065)
(6.12303e-18 -0.1 0.07)
(-1.46953e-17 0.08 0.12)
(-1.46953e-17 0.08 0.115)
(6.12303e-18 -0.1 0.135)
(6.12303e-18 -0.1 0.14)
(-0.1 -1.22461e-17 0.065)
(-0.1 -1.22461e-17 0.07)
(-1.46953e-17 0.08 0.19)
(-1.46953e-17 0.08 0.185)
(-0.1 -1.22461e-17 0.135)
(-0.1 -1.22461e-17 0.14)
(-1.83691e-17 0.1 0.065)
(-1.83691e-17 0.1 0.07)
(0.08 1.95937e-17 0.005)
(0.085 2.08183e-17 0)
(-1.83691e-17 0.1 0.14)
(0.08 1.95937e-17 0.075)
(5.20458e-18 -0.085 0)
(4.89843e-18 -0.08 0.005)
(0.08 1.95937e-17 0.145)
(4.89843e-18 -0.08 0.075)
(-0.085 -1.04092e-17 0)
(-0.08 -9.79685e-18 0.005)
(4.89843e-18 -0.08 0.145)
(0.1 2.44921e-17 0.025)
(-0.08 -9.79685e-18 0.075)
(-1.56137e-17 0.085 0)
(-1.46953e-17 0.08 0.005)
(0.1 2.44921e-17 0.095)
(-0.08 -9.79685e-18 0.145)
(6.12303e-18 -0.1 0.025)
(-1.46953e-17 0.08 0.075)
(0.1 2.44921e-17 0.165)
(6.12303e-18 -0.1 0.095)
(-0.1 -1.22461e-17 0.025)
(-1.46953e-17 0.08 0.145)
(0.09 2.20429e-17 0)
(6.12303e-18 -0.1 0.165)
(-0.1 -1.22461e-17 0.095)
(-1.83691e-17 0.1 0.025)
(-0.1 -1.22461e-17 0.165)
(-1.83691e-17 0.1 0.095)
(5.51073e-18 -0.09 0)
(0.08 1.95937e-17 0.03)
(-1.83691e-17 0.1 0.165)
(0.08 1.95937e-17 0.1)
(-0.09 -1.10215e-17 0)
(4.89843e-18 -0.08 0.03)
(0.08 1.95937e-17 0.17)
(4.89843e-18 -0.08 0.1)
(-1.65322e-17 0.09 0)
(-0.08 -9.79685e-18 0.03)
(4.89843e-18 -0.08 0.17)
(0.1 2.44921e-17 0.05)
(-0.08 -9.79685e-18 0.1)
(-1.46953e-17 0.08 0.03)
(0.095 2.32675e-17 0)
(0.1 2.44921e-17 0.12)
(-0.08 -9.79685e-18 0.17)
(6.12303e-18 -0.1 0.05)
(-1.46953e-17 0.08 0.1)
(0.1 2.44921e-17 0.19)
(6.12303e-18 -0.1 0.12)
(-0.1 -1.22461e-17 0.05)
(5.81688e-18 -0.095 0)
(-1.46953e-17 0.08 0.17)
(6.12303e-18 -0.1 0.19)
(-0.1 -1.22461e-17 0.12)
(-1.83691e-17 0.1 0.05)
(-0.1 -1.22461e-17 0.19)
(-0.095 -1.16338e-17 0)
(-1.83691e-17 0.1 0.12)
(0.08 1.95937e-17 0.055)
(-1.83691e-17 0.1 0.19)
(0.08 1.95937e-17 0.125)
(-1.74506e-17 0.095 0)
(4.89843e-18 -0.08 0.055)
(0.08 1.95937e-17 0.195)
(4.89843e-18 -0.08 0.125)
(0.1 2.44921e-17 0.005)
(-0.08 -9.79685e-18 0.055)
(4.89843e-18 -0.08 0.195)
(0.1 2.44921e-17 0.075)
(-0.08 -9.79685e-18 0.125)
(6.12303e-18 -0.1 0.005)
(-1.46953e-17 0.08 0.055)
(0.1 2.44921e-17 0.145)
(-0.08 -9.79685e-18 0.195)
(6.12303e-18 -0.1 0.075)
(-0.1 -1.22461e-17 0.005)
(-1.46953e-17 0.08 0.125)
(6.12303e-18 -0.1 0.145)
(-0.1 -1.22461e-17 0.075)
(-1.83691e-17 0.1 0.005)
(-1.46953e-17 0.08 0.195)
(-0.1 -1.22461e-17 0.145)
(-1.83691e-17 0.1 0.075)
(0.08 1.95937e-17 0.01)
(-1.83691e-17 0.1 0.145)
(0.08 1.95937e-17 0.08)
(4.89843e-18 -0.08 0.01)
(0.08 1.95937e-17 0.15)
(4.89843e-18 -0.08 0.08)
(-0.08 -9.79685e-18 0.01)
(4.89843e-18 -0.08 0.15)
(0.1 2.44921e-17 0.03)
(-0.08 -9.79685e-18 0.08)
(-1.46953e-17 0.08 0.01)
(0.1 2.44921e-17 0.1)
(-0.08 -9.79685e-18 0.15)
(6.12303e-18 -0.1 0.03)
(-1.46953e-17 0.08 0.08)
(0.1 2.44921e-17 0.17)
(6.12303e-18 -0.1 0.1)
(-0.1 -1.22461e-17 0.03)
(-1.46953e-17 0.08 0.15)
(6.12303e-18 -0.1 0.17)
(-0.1 -1.22461e-17 0.1)
(-1.83691e-17 0.1 0.03)
(-0.1 -1.22461e-17 0.17)
(-1.83691e-17 0.1 0.1)
(0.08 1.95937e-17 0.035)
(-1.83691e-17 0.1 0.17)
(0.08 1.95937e-17 0.105)
(4.89843e-18 -0.08 0.035)
(0.08 1.95937e-17 0.175)
(4.89843e-18 -0.08 0.105)
(-0.08 -9.79685e-18 0.035)
(4.89843e-18 -0.08 0.175)
(0.1 2.44921e-17 0.055)
(-0.08 -9.79685e-18 0.105)
(-1.46953e-17 0.08 0.035)
(0.1 2.44921e-17 0.125)
(-0.08 -9.79685e-18 0.175)
(6.12303e-18 -0.1 0.055)
(-1.46953e-17 0.08 0.105)
(0.1 2.44921e-17 0.195)
(6.12303e-18 -0.1 0.125)
(-0.1 -1.22461e-17 0.055)
(-1.46953e-17 0.08 0.175)
(6.12303e-18 -0.1 0.195)
(-0.1 -1.22461e-17 0.125)
(-1.83691e-17 0.1 0.055)
(-0.1 -1.22461e-17 0.195)
(-1.83691e-17 0.1 0.125)
(0.08 1.95937e-17 0.06)
(-1.83691e-17 0.1 0.195)
(0.08 1.95937e-17 0.13)
(4.89843e-18 -0.08 0.06)
(0.085 2.08183e-17 0.2)
(4.89843e-18 -0.08 0.13)
(5.20458e-18 -0.085 0.2)
(0.1 2.44921e-17 0.01)
(-0.08 -9.79685e-18 0.06)
(-0.085 -1.04092e-17 0.2)
(0.1 2.44921e-17 0.08)
(-0.08 -9.79685e-18 0.13)
(6.12303e-18 -0.1 0.01)
(-1.46953e-17 0.08 0.06)
(0.1 2.44921e-17 0.15)
(6.12303e-18 -0.1 0.08)
(-1.56137e-17 0.085 0.2)
(-0.1 -1.22461e-17 0.01)
(-1.46953e-17 0.08 0.13)
(6.12303e-18 -0.1 0.15)
(-0.1 -1.22461e-17 0.08)
(0.09 2.20429e-17 0.2)
(-1.83691e-17 0.1 0.01)
(-0.1 -1.22461e-17 0.15)
(5.51073e-18 -0.09 0.2)
(-1.83691e-17 0.1 0.08)
(0.08 1.95937e-17 0.015)
(-1.83691e-17 0.1 0.15)
(-0.09 -1.10215e-17 0.2)
(0.08 1.95937e-17 0.085)
(4.89843e-18 -0.08 0.015)
(0.08 1.95937e-17 0.155)
(-1.65322e-17 0.09 0.2)
(4.89843e-18 -0.08 0.085)
(0.095 2.32675e-17 0.2)
(-0.08 -9.79685e-18 0.015)
(4.89843e-18 -0.08 0.155)
(0.1 2.44921e-17 0.035)
(-0.08 -9.79685e-18 0.085)
(5.81688e-18 -0.095 0.2)
(-1.46953e-17 0.08 0.015)
(0.1 2.44921e-17 0.105)
(-0.08 -9.79685e-18 0.155)
(6.12303e-18 -0.1 0.035)
(-0.095 -1.16338e-17 0.2)
(-1.46953e-17 0.08 0.085)
(0.1 2.44921e-17 0.175)
(6.12303e-18 -0.1 0.105)
(-0.1 -1.22461e-17 0.035)
(-1.74506e-17 0.095 0.2)
(-1.46953e-17 0.08 0.155)
(6.12303e-18 -0.1 0.175)
(-0.1 -1.22461e-17 0.105)
(-1.83691e-17 0.1 0.035)
(-0.1 -1.22461e-17 0.175)
(-1.83691e-17 0.1 0.105)
(0.08 1.95937e-17 0.04)
(-1.83691e-17 0.1 0.175)
(0.08 1.95937e-17 0.11)
(4.89843e-18 -0.08 0.04)
(0.08 1.95937e-17 0.18)
(4.89843e-18 -0.08 0.11)
(-0.08 -9.79685e-18 0.04)
(4.89843e-18 -0.08 0.18)
(0.1 2.44921e-17 0.06)
(-0.08 -9.79685e-18 0.11)
(-1.46953e-17 0.08 0.04)
(0.1 2.44921e-17 0.13)
(-0.08 -9.79685e-18 0.18)
(6.12303e-18 -0.1 0.06)
(-1.46953e-17 0.08 0.11)
(6.12303e-18 -0.1 0.13)
(-0.1 -1.22461e-17 0.06)
(-1.46953e-17 0.08 0.18)
(-0.1 -1.22461e-17 0.13)
(-1.83691e-17 0.1 0.06)
)
// edges:
352
(
(16 17)
(18 19)
(20 21)
(22 23)
(24 25)
(26 27)
(28 29)
(30 31)
(32 33)
(34 35)
(36 37)
(38 39)
(40 41)
(42 43)
(44 45)
(46 47)
(48 49)
(50 51)
(52 53)
(54 55)
(56 57)
(58 59)
(60 61)
(62 63)
(64 65)
(66 67)
(68 69)
(70 71)
(72 73)
(74 75)
(76 77)
(78 79)
(80 81)
(82 83)
(84 85)
(86 87)
(88 89)
(90 91)
(92 93)
(94 95)
(96 97)
(98 99)
(100 101)
(102 103)
(104 105)
(106 107)
(108 109)
(110 111)
(112 113)
(114 115)
(116 117)
(118 119)
(120 121)
(122 123)
(124 125)
(126 127)
(128 129)
(130 131)
(132 133)
(134 135)
(136 137)
(138 139)
(140 141)
(142 143)
(0 144)
(145 0)
(17 146)
(19 147)
(1 148)
(149 1)
(21 150)
(151 22)
(2 152)
(153 2)
(154 24)
(155 26)
(156 28)
(3 157)
(158 3)
(159 30)
(160 32)
(35 161)
(162 36)
(163 38)
(41 164)
(43 165)
(166 44)
(167 145)
(47 168)
(49 169)
(51 170)
(53 171)
(55 172)
(148 173)
(57 174)
(59 175)
(61 176)
(152 177)
(178 62)
(65 179)
(180 66)
(157 181)
(182 68)
(183 70)
(184 72)
(185 74)
(186 76)
(187 167)
(188 78)
(189 80)
(83 190)
(191 84)
(192 86)
(89 193)
(91 194)
(173 195)
(196 92)
(95 197)
(97 198)
(99 199)
(101 200)
(177 201)
(103 202)
(105 203)
(107 204)
(109 205)
(181 206)
(207 110)
(113 208)
(209 114)
(4 187)
(210 4)
(211 116)
(212 118)
(213 120)
(214 122)
(195 5)
(5 215)
(216 124)
(217 126)
(218 128)
(131 219)
(201 6)
(6 220)
(221 132)
(135 222)
(137 223)
(206 7)
(7 224)
(225 138)
(141 226)
(143 227)
(144 228)
(146 229)
(147 230)
(231 149)
(150 232)
(233 151)
(234 153)
(235 154)
(236 155)
(237 156)
(238 158)
(239 159)
(240 160)
(161 241)
(242 162)
(243 163)
(164 244)
(165 245)
(246 166)
(168 247)
(169 248)
(170 249)
(171 250)
(172 251)
(174 252)
(175 253)
(176 254)
(255 178)
(179 256)
(257 180)
(258 182)
(259 183)
(260 184)
(261 185)
(262 186)
(263 188)
(264 189)
(190 265)
(266 191)
(267 192)
(193 268)
(194 269)
(270 196)
(197 271)
(198 272)
(199 273)
(200 274)
(202 275)
(203 276)
(204 277)
(205 278)
(279 207)
(208 8)
(8 280)
(281 209)
(9 212)
(282 9)
(283 210)
(284 211)
(10 218)
(285 10)
(286 213)
(287 214)
(215 288)
(289 216)
(290 217)
(219 291)
(11 225)
(292 11)
(220 293)
(294 221)
(222 295)
(223 296)
(280 297)
(224 298)
(226 299)
(300 282)
(227 301)
(228 302)
(229 303)
(304 285)
(230 305)
(306 231)
(232 307)
(308 292)
(309 233)
(297 310)
(311 234)
(312 235)
(313 236)
(314 237)
(315 300)
(316 238)
(317 239)
(318 240)
(241 319)
(320 304)
(321 242)
(322 243)
(244 323)
(245 324)
(325 308)
(326 246)
(247 327)
(248 328)
(249 329)
(12 267)
(310 12)
(250 330)
(13 315)
(271 13)
(251 331)
(252 332)
(14 320)
(274 14)
(253 333)
(15 325)
(277 15)
(254 334)
(335 255)
(256 336)
(337 257)
(338 258)
(339 259)
(340 260)
(341 261)
(342 262)
(343 263)
(344 264)
(265 345)
(346 266)
(268 347)
(269 348)
(349 270)
(272 350)
(273 351)
(275 16)
(276 18)
(278 20)
(23 279)
(25 281)
(27 283)
(29 284)
(31 286)
(33 287)
(288 34)
(37 289)
(39 290)
(291 40)
(293 42)
(45 294)
(295 46)
(296 48)
(298 50)
(299 52)
(301 54)
(302 56)
(303 58)
(305 60)
(63 306)
(307 64)
(67 309)
(69 311)
(71 312)
(73 313)
(75 314)
(77 316)
(79 317)
(81 318)
(319 82)
(85 321)
(87 322)
(323 88)
(324 90)
(93 326)
(327 94)
(328 96)
(329 98)
(330 100)
(331 102)
(332 104)
(333 106)
(334 108)
(111 335)
(336 112)
(115 337)
(117 338)
(119 339)
(121 340)
(123 341)
(125 342)
(127 343)
(129 344)
(345 130)
(133 346)
(347 134)
(348 136)
(139 349)
(350 140)
(351 142)
)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// ************************************************************************* //