diff --git a/cmake/common/set/sparta_cmake_defaults.cmake b/cmake/common/set/sparta_cmake_defaults.cmake index 59afc947f..b95fbe5af 100644 --- a/cmake/common/set/sparta_cmake_defaults.cmake +++ b/cmake/common/set/sparta_cmake_defaults.cmake @@ -56,6 +56,7 @@ if(SPARTA_ENABLE_TESTING) "explicit2implicit" "mfp_mct" "optmove" + "region_mesh" "torque") set(SPARTA_DISABLED_TESTS diff --git a/data/README b/data/README index 8c432a681..635b45637 100644 --- a/data/README +++ b/data/README @@ -19,11 +19,15 @@ Files that end in ".tce" list reactions gas-phase chemistry for the Total Collision Energy (TCE) model and are read by the react command. Files that start with "sdata." contain lists of surface elements and -are read by the read_surf command. +are read by the read_surf command. They can also be read by the region +command with its mesh style, which defines the region as the volume +enclosed by the surface. Files that end in ".stl" are STL-formatted surface files which can be converted to SPARTA formatted surface files via the stl2surf.py tool -in the tools directory. +in the tools directory. They can also be read directly by the region +command with its mesh style, which defines the region as the volume +enclosed by the surface. Files that end in ".surf" list reactions for surface chemistry and are read by the surf_react command. @@ -35,6 +39,6 @@ species = doc/species.html species.vib = doc/species.html vss/vhs/hs = doc/collide.html tce = doc/react.html -sdata = doc/read_surf.html -stl = doc/Section_tools.html#stl2surf +sdata = doc/read_surf.html and doc/region.html +stl = doc/Section_tools.html#stl2surf and doc/region.html surf = doc/surf_react.html diff --git a/doc/region.html b/doc/region.html index ea522a005..466f5dcc3 100644 --- a/doc/region.html +++ b/doc/region.html @@ -17,7 +17,7 @@
block or block/kk args = xlo xhi ylo yhi zlo zhi
xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all dimensions (distance units)
@@ -26,6 +26,9 @@ region command
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
radius = cylinder radius (distance units)
lo,hi = bounds of cylinder in dim (distance units)
+ mesh args = file
+ file = name of file with a closed surface, in STL format or in the
+ format the read_surf command reads
plane or plane/kk args = px py pz nx ny nz
px,py,pz = point on the plane (distance units)
nx,ny,nz = direction normal to plane (distance units)
@@ -41,11 +44,20 @@ region command
side value = in or out
in = the region is inside the specified geometry
- out = the region is outside the specified geometry
+ out = the region is outside the specified geometry
+ origin values = Ox Oy Oz (only for style mesh)
+ Ox,Oy,Oz = point that scale and rotate operate around (distance units)
+ trans values = Dx Dy Dz (only for style mesh)
+ Dx,Dy,Dz = distance to translate the mesh by (distance units)
+ scale values = Sx Sy Sz (only for style mesh)
+ Sx,Sy,Sz = scale factor to apply to the mesh in each dimension
+ rotate values = theta Rx Ry Rz (only for style mesh)
+ theta = angle to rotate the mesh by (degrees)
+ Rx,Ry,Rz = axis of rotation
region 1 block -3.0 5.0 INF 10.0 INF INF region 2 sphere 0.0 0.0 0.0 5 side out region void cylinder y 2 3 5 -5.0 INF -region outside union 4 side1 side2 side3 side4 +region outside union 4 side1 side2 side3 side4 +region flask mesh flask.stl +region duct mesh duct.stl scale 0.001 0.001 0.001 side out +region shell mesh data.circle side out
Description:
@@ -82,6 +97,53 @@The mesh style defines the region as the volume enclosed by a closed +surface which is read from a file. Two file formats are supported and +SPARTA detects which one a file is from its contents, not from its name: +
+STL (stereolithography) files, in either of the two variants of that +format, plain text ("ASCII") or binary. An STL file always stores a 3d +triangulated surface. +
+Surface files in the format the read_surf command +reads, which store a 3d surface as triangles or a 2d surface as line +segments. As for read_surf, a Points section is optional, and a +per-surface type column is skipped if it is present. Per-surface custom +attributes are not supported. +
+Only the geometry in the file is used. Surface types, surface IDs, and +the direction of the normals are all ignored. Every processor reads and +stores the entire mesh, so this style is best suited to small and medium +sized meshes. +
+A point is tested against a 3d mesh by casting a ray from the point in +the +x direction and counting how many triangles it crosses. An odd +count means the point is inside the surface. A 2d mesh is a closed +curve in the x-y plane, so the ray is cast in that plane and crossings +of the line segments are counted instead. The z coordinate of the point +does not matter for a 2d mesh, which means the region it defines is the +curve extruded to infinity in both z directions. A 2d mesh can thus be +used in a 3d simulation as well, where it defines a prism. +
+Either way this requires the surface to be closed, and SPARTA prints a +warning if the elements in the file do not enclose a volume (or an area +in 2d), in which case the inside/outside test gives arbitrary answers. +As for the other styles, a point that lies exactly on the surface is +considered to be inside it, and the side keyword selects whether the +region is the volume inside or outside the mesh. +
+The origin, trans, scale, and rotate keywords can only be used +with the mesh style. They transform the mesh after it is read, which +is useful when the file uses different units or is positioned +differently than the simulation box. They are applied in the order they +appear in the command, and follow the same conventions as the +read_surf keywords of the same name. Trans +translates the mesh by the specified distance. Scale multiplies the +distance of every vertex from the origin point by the specified +factors. Rotate rotates the mesh by theta degrees around the axis +Rx,Ry,Rz which passes through the origin point. The origin point is +0,0,0 by default and is moved along by any preceding trans. +
The union style creates a region consisting of the volume of all the listed regions combined. The intersect style creates a region consisting of the volume that is common to all the listed regions. @@ -127,11 +189,28 @@
Restrictions: none +
Restrictions: +
+An STL file always describes a 3d surface, so a 2d region can only be +defined with a read_surf format file containing lines. +Unlike read_surf, the mesh style does not require the dimensionality +of the file to match the dimension of the simulation, +since as noted above regions in SPARTA are 3d objects in either case. +
+There is no mesh/kk style. The +create_particles command tests points against a +region on the host, so a mesh region can be used with +create_particles/kk, either on its own or as one of the regions listed +by a union or intersect region. Commands that test regions on the +device, such as fix emit/face and fix ave/histo, +will generate an error if they are given a mesh region when running +with the KOKKOS package, whether it is given to them directly or nested +inside a union or intersect region.
Related commands:
-create_particles, read_surf, +dump_modify
Default:
diff --git a/doc/region.txt b/doc/region.txt index a7cbbe022..e4b40014b 100644 --- a/doc/region.txt +++ b/doc/region.txt @@ -13,7 +13,7 @@ region command :h3 region ID style args keyword value ... :pre ID = user-assigned name for the region :ulb,l -style = {block} or {cylinder} or {plane} or {sphere} or {union} or {intersect} or {block/kk} or {cylinder/kk} or {plane/kk} or {sphere/kk} or {union/kk} or {intersect/kk} :l +style = {block} or {cylinder} or {mesh} or {plane} or {sphere} or {union} or {intersect} or {block/kk} or {cylinder/kk} or {plane/kk} or {sphere/kk} or {union/kk} or {intersect/kk} :l {block} or {block/kk} args = xlo xhi ylo yhi zlo zhi xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all dimensions (distance units) {cylinder} or {cylinder/kk} args = dim c1 c2 radius lo hi @@ -21,6 +21,9 @@ style = {block} or {cylinder} or {plane} or {sphere} or {union} or {intersect} o c1,c2 = coords of cylinder axis in other 2 dimensions (distance units) radius = cylinder radius (distance units) lo,hi = bounds of cylinder in dim (distance units) + {mesh} args = file + file = name of file with a closed surface, in STL format or in the + format the "read_surf"_read_surf.html command reads {plane} or {plane/kk} args = px py pz nx ny nz px,py,pz = point on the plane (distance units) nx,ny,nz = direction normal to plane (distance units) @@ -34,10 +37,19 @@ style = {block} or {cylinder} or {plane} or {sphere} or {union} or {intersect} o N = # of regions to follow, must be 2 or greater reg-ID1,reg-ID2, ... = IDs of regions to intersect :pre zero or more keyword/value pairs may be appended :l -keyword = {side} :l +keyword = {side} or {origin} or {trans} or {scale} or {rotate} :l {side} value = {in} or {out} {in} = the region is inside the specified geometry - {out} = the region is outside the specified geometry :pre + {out} = the region is outside the specified geometry + {origin} values = Ox Oy Oz (only for style {mesh}) + Ox,Oy,Oz = point that {scale} and {rotate} operate around (distance units) + {trans} values = Dx Dy Dz (only for style {mesh}) + Dx,Dy,Dz = distance to translate the mesh by (distance units) + {scale} values = Sx Sy Sz (only for style {mesh}) + Sx,Sy,Sz = scale factor to apply to the mesh in each dimension + {rotate} values = theta Rx Ry Rz (only for style {mesh}) + theta = angle to rotate the mesh by (degrees) + Rx,Ry,Rz = axis of rotation :pre :ule [Examples:] @@ -45,7 +57,10 @@ keyword = {side} :l region 1 block -3.0 5.0 INF 10.0 INF INF region 2 sphere 0.0 0.0 0.0 5 side out region void cylinder y 2 3 5 -5.0 INF -region outside union 4 side1 side2 side3 side4 :pre +region outside union 4 side1 side2 side3 side4 +region flask mesh flask.stl +region duct mesh duct.stl scale 0.001 0.001 0.001 side out +region shell mesh data.circle side out :pre [Description:] @@ -73,6 +88,53 @@ third example above specifies a cylinder with its axis in the y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and extending in the y-direction from -5.0 to infinity. +The {mesh} style defines the region as the volume enclosed by a closed +surface which is read from a file. Two file formats are supported and +SPARTA detects which one a file is from its contents, not from its name: + +STL (stereolithography) files, in either of the two variants of that +format, plain text ("ASCII") or binary. An STL file always stores a 3d +triangulated surface. + +Surface files in the format the "read_surf"_read_surf.html command +reads, which store a 3d surface as triangles or a 2d surface as line +segments. As for read_surf, a {Points} section is optional, and a +per-surface type column is skipped if it is present. Per-surface custom +attributes are not supported. + +Only the geometry in the file is used. Surface types, surface IDs, and +the direction of the normals are all ignored. Every processor reads and +stores the entire mesh, so this style is best suited to small and medium +sized meshes. + +A point is tested against a 3d mesh by casting a ray from the point in +the +x direction and counting how many triangles it crosses. An odd +count means the point is inside the surface. A 2d mesh is a closed +curve in the x-y plane, so the ray is cast in that plane and crossings +of the line segments are counted instead. The z coordinate of the point +does not matter for a 2d mesh, which means the region it defines is the +curve extruded to infinity in both z directions. A 2d mesh can thus be +used in a 3d simulation as well, where it defines a prism. + +Either way this requires the surface to be closed, and SPARTA prints a +warning if the elements in the file do not enclose a volume (or an area +in 2d), in which case the inside/outside test gives arbitrary answers. +As for the other styles, a point that lies exactly on the surface is +considered to be inside it, and the {side} keyword selects whether the +region is the volume inside or outside the mesh. + +The {origin}, {trans}, {scale}, and {rotate} keywords can only be used +with the {mesh} style. They transform the mesh after it is read, which +is useful when the file uses different units or is positioned +differently than the simulation box. They are applied in the order they +appear in the command, and follow the same conventions as the +"read_surf"_read_surf.html keywords of the same name. {Trans} +translates the mesh by the specified distance. {Scale} multiplies the +distance of every vertex from the {origin} point by the specified +factors. {Rotate} rotates the mesh by theta degrees around the axis +Rx,Ry,Rz which passes through the {origin} point. The {origin} point is +0,0,0 by default and is moved along by any preceding {trans}. + The {union} style creates a region consisting of the volume of all the listed regions combined. The {intersect} style creates a region consisting of the volume that is common to all the listed regions. @@ -118,10 +180,28 @@ effectively. :line -[Restrictions:] none +[Restrictions:] + +An STL file always describes a 3d surface, so a 2d region can only be +defined with a "read_surf"_read_surf.html format file containing lines. +Unlike read_surf, the {mesh} style does not require the dimensionality +of the file to match the "dimension"_dimension.html of the simulation, +since as noted above regions in SPARTA are 3d objects in either case. + +There is no {mesh/kk} style. The +"create_particles"_create_particles.html command tests points against a +region on the host, so a {mesh} region can be used with +create_particles/kk, either on its own or as one of the regions listed +by a {union} or {intersect} region. Commands that test regions on the +device, such as "fix emit/face"_fix_emit_face.html and "fix +ave/histo"_fix_ave_histo.html, will generate an error if they are given +a {mesh} region when running with the KOKKOS package, whether it is +given to them directly or nested inside a {union} or {intersect} +region. [Related commands:] +"create_particles"_create_particles.html, "read_surf"_read_surf.html, "dump_modify"_dump_modify.html [Default:] diff --git a/examples/region_mesh/air.species b/examples/region_mesh/air.species new file mode 100644 index 000000000..d102d9070 --- /dev/null +++ b/examples/region_mesh/air.species @@ -0,0 +1,24 @@ +# Species data + +# ID +# Molwt (amu) +# Molmass (kg) +# Rotational dof +# RotRel +# Vibrational dof +# VibRel +# VibTemp (K) +# species wt +# charge + +O2 32.00 5.31E-26 2 0.2 2 5.58659E-5 2256.0 1.0 0.0 +N2 28.016 4.65E-26 2 0.2 2 1.90114E-5 3371.0 1.0 0.0 +O 16.00 2.65E-26 0 0.0 0 0.0 0.0 1.0 0.0 +N 14.008 2.325E-26 0 0.0 0 0.0 0.0 1.0 0.0 +NO 30.008 4.98E-26 2 0.2 2 7.14285E-4 2719.0 1.0 0.0 +O2+ 32.00 5.31E-26 2 0.2 2 5.58659E-5 2256.0 1.0 1.0 +N2+ 28.016 4.65E-26 2 0.2 2 1.90114E-5 3371.0 1.0 1.0 +O+ 16.00 2.65E-26 0 0.0 0 0.0 0.0 1.0 1.0 +N+ 14.008 2.325E-26 0 0.0 0 0.0 0.0 1.0 1.0 +NO+ 30.008 4.98E-26 2 0.2 2 7.14285E-4 2719.0 1.0 1.0 +e 0.001 9.10938188E-31 0 0.0 0 0.0 0.0 1.0 -1.0 diff --git a/examples/region_mesh/air.vss b/examples/region_mesh/air.vss new file mode 100644 index 000000000..9c7ecbe5d --- /dev/null +++ b/examples/region_mesh/air.vss @@ -0,0 +1,22 @@ +# VSS collision model parameters for each species + +# diameter (mass) +# omega (unitless) +# tref (temperature) +# alpha (unitless) +# Zrotinf (unitless) +# T* (temperature) +# C1 (temperature) +# C2 (temperature^(1/3)) + +O2 3.96E-10 0.77 273.15 1.4 16.5 113.5 56.5 153.5 +N2 4.07E-10 0.74 273.15 1.6 18.1 91.5 9.1 220.0 +O 3.0E-10 0.80 273.15 1.0 0.0 0.0 0.0 0.0 +N 3.0E-10 0.80 273.15 1.0 0.0 0.0 0.0 0.0 +NO 4.0E-10 0.80 273.15 1.0 7.5 119.0 9.10 220.00 +O2+ 3.96E-10 0.77 273.15 1.4 16.5 113.5 56.5 153.5 +N2+ 4.07E-10 0.74 273.15 1.6 18.1 91.5 9.1 220.0 +O+ 3.0E-10 0.80 273.15 1.0 0.0 0.0 0.0 0.0 +N+ 3.0E-10 0.80 273.15 1.0 0.0 0.0 0.0 0.0 +NO+ 4.0E-10 0.80 273.15 1.0 7.5 119.0 9.10 220.00 +e 7.0E-13 0.50 273.15 1.0 0.0 0.0 0.0 0.0 diff --git a/examples/region_mesh/data.annulus b/examples/region_mesh/data.annulus new file mode 100644 index 000000000..c6b6eadc9 --- /dev/null +++ b/examples/region_mesh/data.annulus @@ -0,0 +1,202 @@ +surf file for an annulus, outer radius 4, inner radius 2 + +96 points +96 lines + +Points + +1 4 0 +2 3.980738907 0.3920685613 +3 3.923141122 0.7803612881 +4 3.827761343 1.161138709 +5 3.69551813 1.530733729 +6 3.527685057 1.885586947 +7 3.325878449 2.222280932 +8 3.092041813 2.537573137 +9 2.828427125 2.828427125 +10 2.537573137 3.092041813 +11 2.222280932 3.325878449 +12 1.885586947 3.527685057 +13 1.530733729 3.69551813 +14 1.161138709 3.827761343 +15 0.7803612881 3.923141122 +16 0.3920685613 3.980738907 +17 2.449293598e-16 4 +18 -0.3920685613 3.980738907 +19 -0.7803612881 3.923141122 +20 -1.161138709 3.827761343 +21 -1.530733729 3.69551813 +22 -1.885586947 3.527685057 +23 -2.222280932 3.325878449 +24 -2.537573137 3.092041813 +25 -2.828427125 2.828427125 +26 -3.092041813 2.537573137 +27 -3.325878449 2.222280932 +28 -3.527685057 1.885586947 +29 -3.69551813 1.530733729 +30 -3.827761343 1.161138709 +31 -3.923141122 0.7803612881 +32 -3.980738907 0.3920685613 +33 -4 4.898587197e-16 +34 -3.980738907 -0.3920685613 +35 -3.923141122 -0.7803612881 +36 -3.827761343 -1.161138709 +37 -3.69551813 -1.530733729 +38 -3.527685057 -1.885586947 +39 -3.325878449 -2.222280932 +40 -3.092041813 -2.537573137 +41 -2.828427125 -2.828427125 +42 -2.537573137 -3.092041813 +43 -2.222280932 -3.325878449 +44 -1.885586947 -3.527685057 +45 -1.530733729 -3.69551813 +46 -1.161138709 -3.827761343 +47 -0.7803612881 -3.923141122 +48 -0.3920685613 -3.980738907 +49 -7.347880795e-16 -4 +50 0.3920685613 -3.980738907 +51 0.7803612881 -3.923141122 +52 1.161138709 -3.827761343 +53 1.530733729 -3.69551813 +54 1.885586947 -3.527685057 +55 2.222280932 -3.325878449 +56 2.537573137 -3.092041813 +57 2.828427125 -2.828427125 +58 3.092041813 -2.537573137 +59 3.325878449 -2.222280932 +60 3.527685057 -1.885586947 +61 3.69551813 -1.530733729 +62 3.827761343 -1.161138709 +63 3.923141122 -0.7803612881 +64 3.980738907 -0.3920685613 +65 1.961570561 -0.390180644 +66 1.847759065 -0.7653668647 +67 1.662939225 -1.111140466 +68 1.414213562 -1.414213562 +69 1.111140466 -1.662939225 +70 0.7653668647 -1.847759065 +71 0.390180644 -1.961570561 +72 -3.673940397e-16 -2 +73 -0.390180644 -1.961570561 +74 -0.7653668647 -1.847759065 +75 -1.111140466 -1.662939225 +76 -1.414213562 -1.414213562 +77 -1.662939225 -1.111140466 +78 -1.847759065 -0.7653668647 +79 -1.961570561 -0.390180644 +80 -2 2.449293598e-16 +81 -1.961570561 0.390180644 +82 -1.847759065 0.7653668647 +83 -1.662939225 1.111140466 +84 -1.414213562 1.414213562 +85 -1.111140466 1.662939225 +86 -0.7653668647 1.847759065 +87 -0.390180644 1.961570561 +88 1.224646799e-16 2 +89 0.390180644 1.961570561 +90 0.7653668647 1.847759065 +91 1.111140466 1.662939225 +92 1.414213562 1.414213562 +93 1.662939225 1.111140466 +94 1.847759065 0.7653668647 +95 1.961570561 0.390180644 +96 2 0 + +Lines + +1 1 2 +2 2 3 +3 3 4 +4 4 5 +5 5 6 +6 6 7 +7 7 8 +8 8 9 +9 9 10 +10 10 11 +11 11 12 +12 12 13 +13 13 14 +14 14 15 +15 15 16 +16 16 17 +17 17 18 +18 18 19 +19 19 20 +20 20 21 +21 21 22 +22 22 23 +23 23 24 +24 24 25 +25 25 26 +26 26 27 +27 27 28 +28 28 29 +29 29 30 +30 30 31 +31 31 32 +32 32 33 +33 33 34 +34 34 35 +35 35 36 +36 36 37 +37 37 38 +38 38 39 +39 39 40 +40 40 41 +41 41 42 +42 42 43 +43 43 44 +44 44 45 +45 45 46 +46 46 47 +47 47 48 +48 48 49 +49 49 50 +50 50 51 +51 51 52 +52 52 53 +53 53 54 +54 54 55 +55 55 56 +56 56 57 +57 57 58 +58 58 59 +59 59 60 +60 60 61 +61 61 62 +62 62 63 +63 63 64 +64 64 1 +65 65 66 +66 66 67 +67 67 68 +68 68 69 +69 69 70 +70 70 71 +71 71 72 +72 72 73 +73 73 74 +74 74 75 +75 75 76 +76 76 77 +77 77 78 +78 78 79 +79 79 80 +80 80 81 +81 81 82 +82 82 83 +83 83 84 +84 84 85 +85 85 86 +86 86 87 +87 87 88 +88 88 89 +89 89 90 +90 90 91 +91 91 92 +92 92 93 +93 93 94 +94 94 95 +95 95 96 +96 96 65 diff --git a/examples/region_mesh/data.torus.stl b/examples/region_mesh/data.torus.stl new file mode 100644 index 000000000..5266fd9b9 --- /dev/null +++ b/examples/region_mesh/data.torus.stl @@ -0,0 +1,4034 @@ +solid torus + facet normal 0.958209 0.126151 0.256751 + outer loop + vertex 4 0 0 + vertex 3.8637 1.03528 0 + vertex 3.73429 1.0006 0.5 + endloop + endfacet + facet normal 0.958209 0.126151 0.256751 + outer loop + vertex 4 0 0 + vertex 3.73429 1.0006 0.5 + vertex 3.86603 0 0.5 + endloop + endfacet + facet normal 0.704063 0.0926916 0.704063 + outer loop + vertex 3.86603 0 0.5 + vertex 3.73429 1.0006 0.5 + vertex 3.38074 0.905867 0.866025 + endloop + endfacet + facet normal 0.704063 0.0926916 0.704063 + outer loop + vertex 3.86603 0 0.5 + vertex 3.38074 0.905867 0.866025 + vertex 3.5 0 0.866025 + endloop + endfacet + facet normal 0.258669 0.0340544 0.965366 + outer loop + vertex 3.5 0 0.866025 + vertex 3.38074 0.905867 0.866025 + vertex 2.89778 0.776457 1 + endloop + endfacet + facet normal 0.258669 0.0340544 0.965366 + outer loop + vertex 3.5 0 0.866025 + vertex 2.89778 0.776457 1 + vertex 3 0 1 + endloop + endfacet + facet normal -0.258669 -0.0340544 0.965366 + outer loop + vertex 3 0 1 + vertex 2.89778 0.776457 1 + vertex 2.41481 0.647048 0.866025 + endloop + endfacet + facet normal -0.258669 -0.0340544 0.965366 + outer loop + vertex 3 0 1 + vertex 2.41481 0.647048 0.866025 + vertex 2.5 0 0.866025 + endloop + endfacet + facet normal -0.704063 -0.0926916 0.704063 + outer loop + vertex 2.5 0 0.866025 + vertex 2.41481 0.647048 0.866025 + vertex 2.06126 0.552313 0.5 + endloop + endfacet + facet normal -0.704063 -0.0926916 0.704063 + outer loop + vertex 2.5 0 0.866025 + vertex 2.06126 0.552313 0.5 + vertex 2.13397 0 0.5 + endloop + endfacet + facet normal -0.958209 -0.126151 0.256751 + outer loop + vertex 2.13397 0 0.5 + vertex 2.06126 0.552313 0.5 + vertex 1.93185 0.517638 1.22465e-16 + endloop + endfacet + facet normal -0.958209 -0.126151 0.256751 + outer loop + vertex 2.13397 0 0.5 + vertex 1.93185 0.517638 1.22465e-16 + vertex 2 0 1.22465e-16 + endloop + endfacet + facet normal -0.958209 -0.126151 -0.256751 + outer loop + vertex 2 0 1.22465e-16 + vertex 1.93185 0.517638 1.22465e-16 + vertex 2.06126 0.552313 -0.5 + endloop + endfacet + facet normal -0.958209 -0.126151 -0.256751 + outer loop + vertex 2 0 1.22465e-16 + vertex 2.06126 0.552313 -0.5 + vertex 2.13397 0 -0.5 + endloop + endfacet + facet normal -0.704063 -0.0926916 -0.704063 + outer loop + vertex 2.13397 0 -0.5 + vertex 2.06126 0.552313 -0.5 + vertex 2.41481 0.647048 -0.866025 + endloop + endfacet + facet normal -0.704063 -0.0926916 -0.704063 + outer loop + vertex 2.13397 0 -0.5 + vertex 2.41481 0.647048 -0.866025 + vertex 2.5 0 -0.866025 + endloop + endfacet + facet normal -0.258669 -0.0340544 -0.965366 + outer loop + vertex 2.5 0 -0.866025 + vertex 2.41481 0.647048 -0.866025 + vertex 2.89778 0.776457 -1 + endloop + endfacet + facet normal -0.258669 -0.0340544 -0.965366 + outer loop + vertex 2.5 0 -0.866025 + vertex 2.89778 0.776457 -1 + vertex 3 0 -1 + endloop + endfacet + facet normal 0.258669 0.0340544 -0.965366 + outer loop + vertex 3 0 -1 + vertex 2.89778 0.776457 -1 + vertex 3.38074 0.905867 -0.866025 + endloop + endfacet + facet normal 0.258669 0.0340544 -0.965366 + outer loop + vertex 3 0 -1 + vertex 3.38074 0.905867 -0.866025 + vertex 3.5 0 -0.866025 + endloop + endfacet + facet normal 0.704063 0.0926916 -0.704063 + outer loop + vertex 3.5 0 -0.866025 + vertex 3.38074 0.905867 -0.866025 + vertex 3.73429 1.0006 -0.5 + endloop + endfacet + facet normal 0.704063 0.0926916 -0.704063 + outer loop + vertex 3.5 0 -0.866025 + vertex 3.73429 1.0006 -0.5 + vertex 3.86603 0 -0.5 + endloop + endfacet + facet normal 0.958209 0.126151 -0.256751 + outer loop + vertex 3.86603 0 -0.5 + vertex 3.73429 1.0006 -0.5 + vertex 3.8637 1.03528 -2.44929e-16 + endloop + endfacet + facet normal 0.958209 0.126151 -0.256751 + outer loop + vertex 3.86603 0 -0.5 + vertex 3.8637 1.03528 -2.44929e-16 + vertex 4 0 -2.44929e-16 + endloop + endfacet + facet normal 0.892909 0.369855 0.256751 + outer loop + vertex 3.8637 1.03528 0 + vertex 3.4641 2 0 + vertex 3.34808 1.93301 0.5 + endloop + endfacet + facet normal 0.892909 0.369855 0.256751 + outer loop + vertex 3.8637 1.03528 0 + vertex 3.34808 1.93301 0.5 + vertex 3.73429 1.0006 0.5 + endloop + endfacet + facet normal 0.656082 0.271758 0.704063 + outer loop + vertex 3.73429 1.0006 0.5 + vertex 3.34808 1.93301 0.5 + vertex 3.03109 1.75 0.866025 + endloop + endfacet + facet normal 0.656082 0.271758 0.704063 + outer loop + vertex 3.73429 1.0006 0.5 + vertex 3.03109 1.75 0.866025 + vertex 3.38074 0.905867 0.866025 + endloop + endfacet + facet normal 0.241041 0.0998425 0.965366 + outer loop + vertex 3.38074 0.905867 0.866025 + vertex 3.03109 1.75 0.866025 + vertex 2.59808 1.5 1 + endloop + endfacet + facet normal 0.241041 0.0998425 0.965366 + outer loop + vertex 3.38074 0.905867 0.866025 + vertex 2.59808 1.5 1 + vertex 2.89778 0.776457 1 + endloop + endfacet + facet normal -0.241041 -0.0998425 0.965366 + outer loop + vertex 2.89778 0.776457 1 + vertex 2.59808 1.5 1 + vertex 2.16506 1.25 0.866025 + endloop + endfacet + facet normal -0.241041 -0.0998425 0.965366 + outer loop + vertex 2.89778 0.776457 1 + vertex 2.16506 1.25 0.866025 + vertex 2.41481 0.647048 0.866025 + endloop + endfacet + facet normal -0.656082 -0.271758 0.704063 + outer loop + vertex 2.41481 0.647048 0.866025 + vertex 2.16506 1.25 0.866025 + vertex 1.84808 1.06699 0.5 + endloop + endfacet + facet normal -0.656082 -0.271758 0.704063 + outer loop + vertex 2.41481 0.647048 0.866025 + vertex 1.84808 1.06699 0.5 + vertex 2.06126 0.552313 0.5 + endloop + endfacet + facet normal -0.892909 -0.369855 0.256751 + outer loop + vertex 2.06126 0.552313 0.5 + vertex 1.84808 1.06699 0.5 + vertex 1.73205 1 1.22465e-16 + endloop + endfacet + facet normal -0.892909 -0.369855 0.256751 + outer loop + vertex 2.06126 0.552313 0.5 + vertex 1.73205 1 1.22465e-16 + vertex 1.93185 0.517638 1.22465e-16 + endloop + endfacet + facet normal -0.892909 -0.369855 -0.256751 + outer loop + vertex 1.93185 0.517638 1.22465e-16 + vertex 1.73205 1 1.22465e-16 + vertex 1.84808 1.06699 -0.5 + endloop + endfacet + facet normal -0.892909 -0.369855 -0.256751 + outer loop + vertex 1.93185 0.517638 1.22465e-16 + vertex 1.84808 1.06699 -0.5 + vertex 2.06126 0.552313 -0.5 + endloop + endfacet + facet normal -0.656082 -0.271758 -0.704063 + outer loop + vertex 2.06126 0.552313 -0.5 + vertex 1.84808 1.06699 -0.5 + vertex 2.16506 1.25 -0.866025 + endloop + endfacet + facet normal -0.656082 -0.271758 -0.704063 + outer loop + vertex 2.06126 0.552313 -0.5 + vertex 2.16506 1.25 -0.866025 + vertex 2.41481 0.647048 -0.866025 + endloop + endfacet + facet normal -0.241041 -0.0998425 -0.965366 + outer loop + vertex 2.41481 0.647048 -0.866025 + vertex 2.16506 1.25 -0.866025 + vertex 2.59808 1.5 -1 + endloop + endfacet + facet normal -0.241041 -0.0998425 -0.965366 + outer loop + vertex 2.41481 0.647048 -0.866025 + vertex 2.59808 1.5 -1 + vertex 2.89778 0.776457 -1 + endloop + endfacet + facet normal 0.241041 0.0998425 -0.965366 + outer loop + vertex 2.89778 0.776457 -1 + vertex 2.59808 1.5 -1 + vertex 3.03109 1.75 -0.866025 + endloop + endfacet + facet normal 0.241041 0.0998425 -0.965366 + outer loop + vertex 2.89778 0.776457 -1 + vertex 3.03109 1.75 -0.866025 + vertex 3.38074 0.905867 -0.866025 + endloop + endfacet + facet normal 0.656082 0.271758 -0.704063 + outer loop + vertex 3.38074 0.905867 -0.866025 + vertex 3.03109 1.75 -0.866025 + vertex 3.34808 1.93301 -0.5 + endloop + endfacet + facet normal 0.656082 0.271758 -0.704063 + outer loop + vertex 3.38074 0.905867 -0.866025 + vertex 3.34808 1.93301 -0.5 + vertex 3.73429 1.0006 -0.5 + endloop + endfacet + facet normal 0.892909 0.369855 -0.256751 + outer loop + vertex 3.73429 1.0006 -0.5 + vertex 3.34808 1.93301 -0.5 + vertex 3.4641 2 -2.44929e-16 + endloop + endfacet + facet normal 0.892909 0.369855 -0.256751 + outer loop + vertex 3.73429 1.0006 -0.5 + vertex 3.4641 2 -2.44929e-16 + vertex 3.8637 1.03528 -2.44929e-16 + endloop + endfacet + facet normal 0.766758 0.588354 0.256751 + outer loop + vertex 3.4641 2 0 + vertex 2.82843 2.82843 0 + vertex 2.73369 2.73369 0.5 + endloop + endfacet + facet normal 0.766758 0.588354 0.256751 + outer loop + vertex 3.4641 2 0 + vertex 2.73369 2.73369 0.5 + vertex 3.34808 1.93301 0.5 + endloop + endfacet + facet normal 0.56339 0.432305 0.704063 + outer loop + vertex 3.34808 1.93301 0.5 + vertex 2.73369 2.73369 0.5 + vertex 2.47487 2.47487 0.866025 + endloop + endfacet + facet normal 0.56339 0.432305 0.704063 + outer loop + vertex 3.34808 1.93301 0.5 + vertex 2.47487 2.47487 0.866025 + vertex 3.03109 1.75 0.866025 + endloop + endfacet + facet normal 0.206987 0.158826 0.965366 + outer loop + vertex 3.03109 1.75 0.866025 + vertex 2.47487 2.47487 0.866025 + vertex 2.12132 2.12132 1 + endloop + endfacet + facet normal 0.206987 0.158826 0.965366 + outer loop + vertex 3.03109 1.75 0.866025 + vertex 2.12132 2.12132 1 + vertex 2.59808 1.5 1 + endloop + endfacet + facet normal -0.206987 -0.158826 0.965366 + outer loop + vertex 2.59808 1.5 1 + vertex 2.12132 2.12132 1 + vertex 1.76777 1.76777 0.866025 + endloop + endfacet + facet normal -0.206987 -0.158826 0.965366 + outer loop + vertex 2.59808 1.5 1 + vertex 1.76777 1.76777 0.866025 + vertex 2.16506 1.25 0.866025 + endloop + endfacet + facet normal -0.56339 -0.432305 0.704063 + outer loop + vertex 2.16506 1.25 0.866025 + vertex 1.76777 1.76777 0.866025 + vertex 1.50895 1.50895 0.5 + endloop + endfacet + facet normal -0.56339 -0.432305 0.704063 + outer loop + vertex 2.16506 1.25 0.866025 + vertex 1.50895 1.50895 0.5 + vertex 1.84808 1.06699 0.5 + endloop + endfacet + facet normal -0.766758 -0.588354 0.256751 + outer loop + vertex 1.84808 1.06699 0.5 + vertex 1.50895 1.50895 0.5 + vertex 1.41421 1.41421 1.22465e-16 + endloop + endfacet + facet normal -0.766758 -0.588354 0.256751 + outer loop + vertex 1.84808 1.06699 0.5 + vertex 1.41421 1.41421 1.22465e-16 + vertex 1.73205 1 1.22465e-16 + endloop + endfacet + facet normal -0.766758 -0.588354 -0.256751 + outer loop + vertex 1.73205 1 1.22465e-16 + vertex 1.41421 1.41421 1.22465e-16 + vertex 1.50895 1.50895 -0.5 + endloop + endfacet + facet normal -0.766758 -0.588354 -0.256751 + outer loop + vertex 1.73205 1 1.22465e-16 + vertex 1.50895 1.50895 -0.5 + vertex 1.84808 1.06699 -0.5 + endloop + endfacet + facet normal -0.56339 -0.432305 -0.704063 + outer loop + vertex 1.84808 1.06699 -0.5 + vertex 1.50895 1.50895 -0.5 + vertex 1.76777 1.76777 -0.866025 + endloop + endfacet + facet normal -0.56339 -0.432305 -0.704063 + outer loop + vertex 1.84808 1.06699 -0.5 + vertex 1.76777 1.76777 -0.866025 + vertex 2.16506 1.25 -0.866025 + endloop + endfacet + facet normal -0.206987 -0.158826 -0.965366 + outer loop + vertex 2.16506 1.25 -0.866025 + vertex 1.76777 1.76777 -0.866025 + vertex 2.12132 2.12132 -1 + endloop + endfacet + facet normal -0.206987 -0.158826 -0.965366 + outer loop + vertex 2.16506 1.25 -0.866025 + vertex 2.12132 2.12132 -1 + vertex 2.59808 1.5 -1 + endloop + endfacet + facet normal 0.206987 0.158826 -0.965366 + outer loop + vertex 2.59808 1.5 -1 + vertex 2.12132 2.12132 -1 + vertex 2.47487 2.47487 -0.866025 + endloop + endfacet + facet normal 0.206987 0.158826 -0.965366 + outer loop + vertex 2.59808 1.5 -1 + vertex 2.47487 2.47487 -0.866025 + vertex 3.03109 1.75 -0.866025 + endloop + endfacet + facet normal 0.56339 0.432305 -0.704063 + outer loop + vertex 3.03109 1.75 -0.866025 + vertex 2.47487 2.47487 -0.866025 + vertex 2.73369 2.73369 -0.5 + endloop + endfacet + facet normal 0.56339 0.432305 -0.704063 + outer loop + vertex 3.03109 1.75 -0.866025 + vertex 2.73369 2.73369 -0.5 + vertex 3.34808 1.93301 -0.5 + endloop + endfacet + facet normal 0.766758 0.588354 -0.256751 + outer loop + vertex 3.34808 1.93301 -0.5 + vertex 2.73369 2.73369 -0.5 + vertex 2.82843 2.82843 -2.44929e-16 + endloop + endfacet + facet normal 0.766758 0.588354 -0.256751 + outer loop + vertex 3.34808 1.93301 -0.5 + vertex 2.82843 2.82843 -2.44929e-16 + vertex 3.4641 2 -2.44929e-16 + endloop + endfacet + facet normal 0.588354 0.766758 0.256751 + outer loop + vertex 2.82843 2.82843 0 + vertex 2 3.4641 0 + vertex 1.93301 3.34808 0.5 + endloop + endfacet + facet normal 0.588354 0.766758 0.256751 + outer loop + vertex 2.82843 2.82843 0 + vertex 1.93301 3.34808 0.5 + vertex 2.73369 2.73369 0.5 + endloop + endfacet + facet normal 0.432305 0.56339 0.704063 + outer loop + vertex 2.73369 2.73369 0.5 + vertex 1.93301 3.34808 0.5 + vertex 1.75 3.03109 0.866025 + endloop + endfacet + facet normal 0.432305 0.56339 0.704063 + outer loop + vertex 2.73369 2.73369 0.5 + vertex 1.75 3.03109 0.866025 + vertex 2.47487 2.47487 0.866025 + endloop + endfacet + facet normal 0.158826 0.206987 0.965366 + outer loop + vertex 2.47487 2.47487 0.866025 + vertex 1.75 3.03109 0.866025 + vertex 1.5 2.59808 1 + endloop + endfacet + facet normal 0.158826 0.206987 0.965366 + outer loop + vertex 2.47487 2.47487 0.866025 + vertex 1.5 2.59808 1 + vertex 2.12132 2.12132 1 + endloop + endfacet + facet normal -0.158826 -0.206987 0.965366 + outer loop + vertex 2.12132 2.12132 1 + vertex 1.5 2.59808 1 + vertex 1.25 2.16506 0.866025 + endloop + endfacet + facet normal -0.158826 -0.206987 0.965366 + outer loop + vertex 2.12132 2.12132 1 + vertex 1.25 2.16506 0.866025 + vertex 1.76777 1.76777 0.866025 + endloop + endfacet + facet normal -0.432305 -0.56339 0.704063 + outer loop + vertex 1.76777 1.76777 0.866025 + vertex 1.25 2.16506 0.866025 + vertex 1.06699 1.84808 0.5 + endloop + endfacet + facet normal -0.432305 -0.56339 0.704063 + outer loop + vertex 1.76777 1.76777 0.866025 + vertex 1.06699 1.84808 0.5 + vertex 1.50895 1.50895 0.5 + endloop + endfacet + facet normal -0.588354 -0.766758 0.256751 + outer loop + vertex 1.50895 1.50895 0.5 + vertex 1.06699 1.84808 0.5 + vertex 1 1.73205 1.22465e-16 + endloop + endfacet + facet normal -0.588354 -0.766758 0.256751 + outer loop + vertex 1.50895 1.50895 0.5 + vertex 1 1.73205 1.22465e-16 + vertex 1.41421 1.41421 1.22465e-16 + endloop + endfacet + facet normal -0.588354 -0.766758 -0.256751 + outer loop + vertex 1.41421 1.41421 1.22465e-16 + vertex 1 1.73205 1.22465e-16 + vertex 1.06699 1.84808 -0.5 + endloop + endfacet + facet normal -0.588354 -0.766758 -0.256751 + outer loop + vertex 1.41421 1.41421 1.22465e-16 + vertex 1.06699 1.84808 -0.5 + vertex 1.50895 1.50895 -0.5 + endloop + endfacet + facet normal -0.432305 -0.56339 -0.704063 + outer loop + vertex 1.50895 1.50895 -0.5 + vertex 1.06699 1.84808 -0.5 + vertex 1.25 2.16506 -0.866025 + endloop + endfacet + facet normal -0.432305 -0.56339 -0.704063 + outer loop + vertex 1.50895 1.50895 -0.5 + vertex 1.25 2.16506 -0.866025 + vertex 1.76777 1.76777 -0.866025 + endloop + endfacet + facet normal -0.158826 -0.206987 -0.965366 + outer loop + vertex 1.76777 1.76777 -0.866025 + vertex 1.25 2.16506 -0.866025 + vertex 1.5 2.59808 -1 + endloop + endfacet + facet normal -0.158826 -0.206987 -0.965366 + outer loop + vertex 1.76777 1.76777 -0.866025 + vertex 1.5 2.59808 -1 + vertex 2.12132 2.12132 -1 + endloop + endfacet + facet normal 0.158826 0.206987 -0.965366 + outer loop + vertex 2.12132 2.12132 -1 + vertex 1.5 2.59808 -1 + vertex 1.75 3.03109 -0.866025 + endloop + endfacet + facet normal 0.158826 0.206987 -0.965366 + outer loop + vertex 2.12132 2.12132 -1 + vertex 1.75 3.03109 -0.866025 + vertex 2.47487 2.47487 -0.866025 + endloop + endfacet + facet normal 0.432305 0.56339 -0.704063 + outer loop + vertex 2.47487 2.47487 -0.866025 + vertex 1.75 3.03109 -0.866025 + vertex 1.93301 3.34808 -0.5 + endloop + endfacet + facet normal 0.432305 0.56339 -0.704063 + outer loop + vertex 2.47487 2.47487 -0.866025 + vertex 1.93301 3.34808 -0.5 + vertex 2.73369 2.73369 -0.5 + endloop + endfacet + facet normal 0.588354 0.766758 -0.256751 + outer loop + vertex 2.73369 2.73369 -0.5 + vertex 1.93301 3.34808 -0.5 + vertex 2 3.4641 -2.44929e-16 + endloop + endfacet + facet normal 0.588354 0.766758 -0.256751 + outer loop + vertex 2.73369 2.73369 -0.5 + vertex 2 3.4641 -2.44929e-16 + vertex 2.82843 2.82843 -2.44929e-16 + endloop + endfacet + facet normal 0.369855 0.892909 0.256751 + outer loop + vertex 2 3.4641 0 + vertex 1.03528 3.8637 0 + vertex 1.0006 3.73429 0.5 + endloop + endfacet + facet normal 0.369855 0.892909 0.256751 + outer loop + vertex 2 3.4641 0 + vertex 1.0006 3.73429 0.5 + vertex 1.93301 3.34808 0.5 + endloop + endfacet + facet normal 0.271758 0.656082 0.704063 + outer loop + vertex 1.93301 3.34808 0.5 + vertex 1.0006 3.73429 0.5 + vertex 0.905867 3.38074 0.866025 + endloop + endfacet + facet normal 0.271758 0.656082 0.704063 + outer loop + vertex 1.93301 3.34808 0.5 + vertex 0.905867 3.38074 0.866025 + vertex 1.75 3.03109 0.866025 + endloop + endfacet + facet normal 0.0998425 0.241041 0.965366 + outer loop + vertex 1.75 3.03109 0.866025 + vertex 0.905867 3.38074 0.866025 + vertex 0.776457 2.89778 1 + endloop + endfacet + facet normal 0.0998425 0.241041 0.965366 + outer loop + vertex 1.75 3.03109 0.866025 + vertex 0.776457 2.89778 1 + vertex 1.5 2.59808 1 + endloop + endfacet + facet normal -0.0998425 -0.241041 0.965366 + outer loop + vertex 1.5 2.59808 1 + vertex 0.776457 2.89778 1 + vertex 0.647048 2.41481 0.866025 + endloop + endfacet + facet normal -0.0998425 -0.241041 0.965366 + outer loop + vertex 1.5 2.59808 1 + vertex 0.647048 2.41481 0.866025 + vertex 1.25 2.16506 0.866025 + endloop + endfacet + facet normal -0.271758 -0.656082 0.704063 + outer loop + vertex 1.25 2.16506 0.866025 + vertex 0.647048 2.41481 0.866025 + vertex 0.552313 2.06126 0.5 + endloop + endfacet + facet normal -0.271758 -0.656082 0.704063 + outer loop + vertex 1.25 2.16506 0.866025 + vertex 0.552313 2.06126 0.5 + vertex 1.06699 1.84808 0.5 + endloop + endfacet + facet normal -0.369855 -0.892909 0.256751 + outer loop + vertex 1.06699 1.84808 0.5 + vertex 0.552313 2.06126 0.5 + vertex 0.517638 1.93185 1.22465e-16 + endloop + endfacet + facet normal -0.369855 -0.892909 0.256751 + outer loop + vertex 1.06699 1.84808 0.5 + vertex 0.517638 1.93185 1.22465e-16 + vertex 1 1.73205 1.22465e-16 + endloop + endfacet + facet normal -0.369855 -0.892909 -0.256751 + outer loop + vertex 1 1.73205 1.22465e-16 + vertex 0.517638 1.93185 1.22465e-16 + vertex 0.552313 2.06126 -0.5 + endloop + endfacet + facet normal -0.369855 -0.892909 -0.256751 + outer loop + vertex 1 1.73205 1.22465e-16 + vertex 0.552313 2.06126 -0.5 + vertex 1.06699 1.84808 -0.5 + endloop + endfacet + facet normal -0.271758 -0.656082 -0.704063 + outer loop + vertex 1.06699 1.84808 -0.5 + vertex 0.552313 2.06126 -0.5 + vertex 0.647048 2.41481 -0.866025 + endloop + endfacet + facet normal -0.271758 -0.656082 -0.704063 + outer loop + vertex 1.06699 1.84808 -0.5 + vertex 0.647048 2.41481 -0.866025 + vertex 1.25 2.16506 -0.866025 + endloop + endfacet + facet normal -0.0998425 -0.241041 -0.965366 + outer loop + vertex 1.25 2.16506 -0.866025 + vertex 0.647048 2.41481 -0.866025 + vertex 0.776457 2.89778 -1 + endloop + endfacet + facet normal -0.0998425 -0.241041 -0.965366 + outer loop + vertex 1.25 2.16506 -0.866025 + vertex 0.776457 2.89778 -1 + vertex 1.5 2.59808 -1 + endloop + endfacet + facet normal 0.0998425 0.241041 -0.965366 + outer loop + vertex 1.5 2.59808 -1 + vertex 0.776457 2.89778 -1 + vertex 0.905867 3.38074 -0.866025 + endloop + endfacet + facet normal 0.0998425 0.241041 -0.965366 + outer loop + vertex 1.5 2.59808 -1 + vertex 0.905867 3.38074 -0.866025 + vertex 1.75 3.03109 -0.866025 + endloop + endfacet + facet normal 0.271758 0.656082 -0.704063 + outer loop + vertex 1.75 3.03109 -0.866025 + vertex 0.905867 3.38074 -0.866025 + vertex 1.0006 3.73429 -0.5 + endloop + endfacet + facet normal 0.271758 0.656082 -0.704063 + outer loop + vertex 1.75 3.03109 -0.866025 + vertex 1.0006 3.73429 -0.5 + vertex 1.93301 3.34808 -0.5 + endloop + endfacet + facet normal 0.369855 0.892909 -0.256751 + outer loop + vertex 1.93301 3.34808 -0.5 + vertex 1.0006 3.73429 -0.5 + vertex 1.03528 3.8637 -2.44929e-16 + endloop + endfacet + facet normal 0.369855 0.892909 -0.256751 + outer loop + vertex 1.93301 3.34808 -0.5 + vertex 1.03528 3.8637 -2.44929e-16 + vertex 2 3.4641 -2.44929e-16 + endloop + endfacet + facet normal 0.126151 0.958209 0.256751 + outer loop + vertex 1.03528 3.8637 0 + vertex 2.44929e-16 4 0 + vertex 2.36726e-16 3.86603 0.5 + endloop + endfacet + facet normal 0.126151 0.958209 0.256751 + outer loop + vertex 1.03528 3.8637 0 + vertex 2.36726e-16 3.86603 0.5 + vertex 1.0006 3.73429 0.5 + endloop + endfacet + facet normal 0.0926916 0.704063 0.704063 + outer loop + vertex 1.0006 3.73429 0.5 + vertex 2.36726e-16 3.86603 0.5 + vertex 2.14313e-16 3.5 0.866025 + endloop + endfacet + facet normal 0.0926916 0.704063 0.704063 + outer loop + vertex 1.0006 3.73429 0.5 + vertex 2.14313e-16 3.5 0.866025 + vertex 0.905867 3.38074 0.866025 + endloop + endfacet + facet normal 0.0340544 0.258669 0.965366 + outer loop + vertex 0.905867 3.38074 0.866025 + vertex 2.14313e-16 3.5 0.866025 + vertex 1.83697e-16 3 1 + endloop + endfacet + facet normal 0.0340544 0.258669 0.965366 + outer loop + vertex 0.905867 3.38074 0.866025 + vertex 1.83697e-16 3 1 + vertex 0.776457 2.89778 1 + endloop + endfacet + facet normal -0.0340544 -0.258669 0.965366 + outer loop + vertex 0.776457 2.89778 1 + vertex 1.83697e-16 3 1 + vertex 1.53081e-16 2.5 0.866025 + endloop + endfacet + facet normal -0.0340544 -0.258669 0.965366 + outer loop + vertex 0.776457 2.89778 1 + vertex 1.53081e-16 2.5 0.866025 + vertex 0.647048 2.41481 0.866025 + endloop + endfacet + facet normal -0.0926916 -0.704063 0.704063 + outer loop + vertex 0.647048 2.41481 0.866025 + vertex 1.53081e-16 2.5 0.866025 + vertex 1.30668e-16 2.13397 0.5 + endloop + endfacet + facet normal -0.0926916 -0.704063 0.704063 + outer loop + vertex 0.647048 2.41481 0.866025 + vertex 1.30668e-16 2.13397 0.5 + vertex 0.552313 2.06126 0.5 + endloop + endfacet + facet normal -0.126151 -0.958209 0.256751 + outer loop + vertex 0.552313 2.06126 0.5 + vertex 1.30668e-16 2.13397 0.5 + vertex 1.22465e-16 2 1.22465e-16 + endloop + endfacet + facet normal -0.126151 -0.958209 0.256751 + outer loop + vertex 0.552313 2.06126 0.5 + vertex 1.22465e-16 2 1.22465e-16 + vertex 0.517638 1.93185 1.22465e-16 + endloop + endfacet + facet normal -0.126151 -0.958209 -0.256751 + outer loop + vertex 0.517638 1.93185 1.22465e-16 + vertex 1.22465e-16 2 1.22465e-16 + vertex 1.30668e-16 2.13397 -0.5 + endloop + endfacet + facet normal -0.126151 -0.958209 -0.256751 + outer loop + vertex 0.517638 1.93185 1.22465e-16 + vertex 1.30668e-16 2.13397 -0.5 + vertex 0.552313 2.06126 -0.5 + endloop + endfacet + facet normal -0.0926916 -0.704063 -0.704063 + outer loop + vertex 0.552313 2.06126 -0.5 + vertex 1.30668e-16 2.13397 -0.5 + vertex 1.53081e-16 2.5 -0.866025 + endloop + endfacet + facet normal -0.0926916 -0.704063 -0.704063 + outer loop + vertex 0.552313 2.06126 -0.5 + vertex 1.53081e-16 2.5 -0.866025 + vertex 0.647048 2.41481 -0.866025 + endloop + endfacet + facet normal -0.0340544 -0.258669 -0.965366 + outer loop + vertex 0.647048 2.41481 -0.866025 + vertex 1.53081e-16 2.5 -0.866025 + vertex 1.83697e-16 3 -1 + endloop + endfacet + facet normal -0.0340544 -0.258669 -0.965366 + outer loop + vertex 0.647048 2.41481 -0.866025 + vertex 1.83697e-16 3 -1 + vertex 0.776457 2.89778 -1 + endloop + endfacet + facet normal 0.0340544 0.258669 -0.965366 + outer loop + vertex 0.776457 2.89778 -1 + vertex 1.83697e-16 3 -1 + vertex 2.14313e-16 3.5 -0.866025 + endloop + endfacet + facet normal 0.0340544 0.258669 -0.965366 + outer loop + vertex 0.776457 2.89778 -1 + vertex 2.14313e-16 3.5 -0.866025 + vertex 0.905867 3.38074 -0.866025 + endloop + endfacet + facet normal 0.0926916 0.704063 -0.704063 + outer loop + vertex 0.905867 3.38074 -0.866025 + vertex 2.14313e-16 3.5 -0.866025 + vertex 2.36726e-16 3.86603 -0.5 + endloop + endfacet + facet normal 0.0926916 0.704063 -0.704063 + outer loop + vertex 0.905867 3.38074 -0.866025 + vertex 2.36726e-16 3.86603 -0.5 + vertex 1.0006 3.73429 -0.5 + endloop + endfacet + facet normal 0.126151 0.958209 -0.256751 + outer loop + vertex 1.0006 3.73429 -0.5 + vertex 2.36726e-16 3.86603 -0.5 + vertex 2.44929e-16 4 -2.44929e-16 + endloop + endfacet + facet normal 0.126151 0.958209 -0.256751 + outer loop + vertex 1.0006 3.73429 -0.5 + vertex 2.44929e-16 4 -2.44929e-16 + vertex 1.03528 3.8637 -2.44929e-16 + endloop + endfacet + facet normal -0.126151 0.958209 0.256751 + outer loop + vertex 2.44929e-16 4 0 + vertex -1.03528 3.8637 0 + vertex -1.0006 3.73429 0.5 + endloop + endfacet + facet normal -0.126151 0.958209 0.256751 + outer loop + vertex 2.44929e-16 4 0 + vertex -1.0006 3.73429 0.5 + vertex 2.36726e-16 3.86603 0.5 + endloop + endfacet + facet normal -0.0926916 0.704063 0.704063 + outer loop + vertex 2.36726e-16 3.86603 0.5 + vertex -1.0006 3.73429 0.5 + vertex -0.905867 3.38074 0.866025 + endloop + endfacet + facet normal -0.0926916 0.704063 0.704063 + outer loop + vertex 2.36726e-16 3.86603 0.5 + vertex -0.905867 3.38074 0.866025 + vertex 2.14313e-16 3.5 0.866025 + endloop + endfacet + facet normal -0.0340544 0.258669 0.965366 + outer loop + vertex 2.14313e-16 3.5 0.866025 + vertex -0.905867 3.38074 0.866025 + vertex -0.776457 2.89778 1 + endloop + endfacet + facet normal -0.0340544 0.258669 0.965366 + outer loop + vertex 2.14313e-16 3.5 0.866025 + vertex -0.776457 2.89778 1 + vertex 1.83697e-16 3 1 + endloop + endfacet + facet normal 0.0340544 -0.258669 0.965366 + outer loop + vertex 1.83697e-16 3 1 + vertex -0.776457 2.89778 1 + vertex -0.647048 2.41481 0.866025 + endloop + endfacet + facet normal 0.0340544 -0.258669 0.965366 + outer loop + vertex 1.83697e-16 3 1 + vertex -0.647048 2.41481 0.866025 + vertex 1.53081e-16 2.5 0.866025 + endloop + endfacet + facet normal 0.0926916 -0.704063 0.704063 + outer loop + vertex 1.53081e-16 2.5 0.866025 + vertex -0.647048 2.41481 0.866025 + vertex -0.552313 2.06126 0.5 + endloop + endfacet + facet normal 0.0926916 -0.704063 0.704063 + outer loop + vertex 1.53081e-16 2.5 0.866025 + vertex -0.552313 2.06126 0.5 + vertex 1.30668e-16 2.13397 0.5 + endloop + endfacet + facet normal 0.126151 -0.958209 0.256751 + outer loop + vertex 1.30668e-16 2.13397 0.5 + vertex -0.552313 2.06126 0.5 + vertex -0.517638 1.93185 1.22465e-16 + endloop + endfacet + facet normal 0.126151 -0.958209 0.256751 + outer loop + vertex 1.30668e-16 2.13397 0.5 + vertex -0.517638 1.93185 1.22465e-16 + vertex 1.22465e-16 2 1.22465e-16 + endloop + endfacet + facet normal 0.126151 -0.958209 -0.256751 + outer loop + vertex 1.22465e-16 2 1.22465e-16 + vertex -0.517638 1.93185 1.22465e-16 + vertex -0.552313 2.06126 -0.5 + endloop + endfacet + facet normal 0.126151 -0.958209 -0.256751 + outer loop + vertex 1.22465e-16 2 1.22465e-16 + vertex -0.552313 2.06126 -0.5 + vertex 1.30668e-16 2.13397 -0.5 + endloop + endfacet + facet normal 0.0926916 -0.704063 -0.704063 + outer loop + vertex 1.30668e-16 2.13397 -0.5 + vertex -0.552313 2.06126 -0.5 + vertex -0.647048 2.41481 -0.866025 + endloop + endfacet + facet normal 0.0926916 -0.704063 -0.704063 + outer loop + vertex 1.30668e-16 2.13397 -0.5 + vertex -0.647048 2.41481 -0.866025 + vertex 1.53081e-16 2.5 -0.866025 + endloop + endfacet + facet normal 0.0340544 -0.258669 -0.965366 + outer loop + vertex 1.53081e-16 2.5 -0.866025 + vertex -0.647048 2.41481 -0.866025 + vertex -0.776457 2.89778 -1 + endloop + endfacet + facet normal 0.0340544 -0.258669 -0.965366 + outer loop + vertex 1.53081e-16 2.5 -0.866025 + vertex -0.776457 2.89778 -1 + vertex 1.83697e-16 3 -1 + endloop + endfacet + facet normal -0.0340544 0.258669 -0.965366 + outer loop + vertex 1.83697e-16 3 -1 + vertex -0.776457 2.89778 -1 + vertex -0.905867 3.38074 -0.866025 + endloop + endfacet + facet normal -0.0340544 0.258669 -0.965366 + outer loop + vertex 1.83697e-16 3 -1 + vertex -0.905867 3.38074 -0.866025 + vertex 2.14313e-16 3.5 -0.866025 + endloop + endfacet + facet normal -0.0926916 0.704063 -0.704063 + outer loop + vertex 2.14313e-16 3.5 -0.866025 + vertex -0.905867 3.38074 -0.866025 + vertex -1.0006 3.73429 -0.5 + endloop + endfacet + facet normal -0.0926916 0.704063 -0.704063 + outer loop + vertex 2.14313e-16 3.5 -0.866025 + vertex -1.0006 3.73429 -0.5 + vertex 2.36726e-16 3.86603 -0.5 + endloop + endfacet + facet normal -0.126151 0.958209 -0.256751 + outer loop + vertex 2.36726e-16 3.86603 -0.5 + vertex -1.0006 3.73429 -0.5 + vertex -1.03528 3.8637 -2.44929e-16 + endloop + endfacet + facet normal -0.126151 0.958209 -0.256751 + outer loop + vertex 2.36726e-16 3.86603 -0.5 + vertex -1.03528 3.8637 -2.44929e-16 + vertex 2.44929e-16 4 -2.44929e-16 + endloop + endfacet + facet normal -0.369855 0.892909 0.256751 + outer loop + vertex -1.03528 3.8637 0 + vertex -2 3.4641 0 + vertex -1.93301 3.34808 0.5 + endloop + endfacet + facet normal -0.369855 0.892909 0.256751 + outer loop + vertex -1.03528 3.8637 0 + vertex -1.93301 3.34808 0.5 + vertex -1.0006 3.73429 0.5 + endloop + endfacet + facet normal -0.271758 0.656082 0.704063 + outer loop + vertex -1.0006 3.73429 0.5 + vertex -1.93301 3.34808 0.5 + vertex -1.75 3.03109 0.866025 + endloop + endfacet + facet normal -0.271758 0.656082 0.704063 + outer loop + vertex -1.0006 3.73429 0.5 + vertex -1.75 3.03109 0.866025 + vertex -0.905867 3.38074 0.866025 + endloop + endfacet + facet normal -0.0998425 0.241041 0.965366 + outer loop + vertex -0.905867 3.38074 0.866025 + vertex -1.75 3.03109 0.866025 + vertex -1.5 2.59808 1 + endloop + endfacet + facet normal -0.0998425 0.241041 0.965366 + outer loop + vertex -0.905867 3.38074 0.866025 + vertex -1.5 2.59808 1 + vertex -0.776457 2.89778 1 + endloop + endfacet + facet normal 0.0998425 -0.241041 0.965366 + outer loop + vertex -0.776457 2.89778 1 + vertex -1.5 2.59808 1 + vertex -1.25 2.16506 0.866025 + endloop + endfacet + facet normal 0.0998425 -0.241041 0.965366 + outer loop + vertex -0.776457 2.89778 1 + vertex -1.25 2.16506 0.866025 + vertex -0.647048 2.41481 0.866025 + endloop + endfacet + facet normal 0.271758 -0.656082 0.704063 + outer loop + vertex -0.647048 2.41481 0.866025 + vertex -1.25 2.16506 0.866025 + vertex -1.06699 1.84808 0.5 + endloop + endfacet + facet normal 0.271758 -0.656082 0.704063 + outer loop + vertex -0.647048 2.41481 0.866025 + vertex -1.06699 1.84808 0.5 + vertex -0.552313 2.06126 0.5 + endloop + endfacet + facet normal 0.369855 -0.892909 0.256751 + outer loop + vertex -0.552313 2.06126 0.5 + vertex -1.06699 1.84808 0.5 + vertex -1 1.73205 1.22465e-16 + endloop + endfacet + facet normal 0.369855 -0.892909 0.256751 + outer loop + vertex -0.552313 2.06126 0.5 + vertex -1 1.73205 1.22465e-16 + vertex -0.517638 1.93185 1.22465e-16 + endloop + endfacet + facet normal 0.369855 -0.892909 -0.256751 + outer loop + vertex -0.517638 1.93185 1.22465e-16 + vertex -1 1.73205 1.22465e-16 + vertex -1.06699 1.84808 -0.5 + endloop + endfacet + facet normal 0.369855 -0.892909 -0.256751 + outer loop + vertex -0.517638 1.93185 1.22465e-16 + vertex -1.06699 1.84808 -0.5 + vertex -0.552313 2.06126 -0.5 + endloop + endfacet + facet normal 0.271758 -0.656082 -0.704063 + outer loop + vertex -0.552313 2.06126 -0.5 + vertex -1.06699 1.84808 -0.5 + vertex -1.25 2.16506 -0.866025 + endloop + endfacet + facet normal 0.271758 -0.656082 -0.704063 + outer loop + vertex -0.552313 2.06126 -0.5 + vertex -1.25 2.16506 -0.866025 + vertex -0.647048 2.41481 -0.866025 + endloop + endfacet + facet normal 0.0998425 -0.241041 -0.965366 + outer loop + vertex -0.647048 2.41481 -0.866025 + vertex -1.25 2.16506 -0.866025 + vertex -1.5 2.59808 -1 + endloop + endfacet + facet normal 0.0998425 -0.241041 -0.965366 + outer loop + vertex -0.647048 2.41481 -0.866025 + vertex -1.5 2.59808 -1 + vertex -0.776457 2.89778 -1 + endloop + endfacet + facet normal -0.0998425 0.241041 -0.965366 + outer loop + vertex -0.776457 2.89778 -1 + vertex -1.5 2.59808 -1 + vertex -1.75 3.03109 -0.866025 + endloop + endfacet + facet normal -0.0998425 0.241041 -0.965366 + outer loop + vertex -0.776457 2.89778 -1 + vertex -1.75 3.03109 -0.866025 + vertex -0.905867 3.38074 -0.866025 + endloop + endfacet + facet normal -0.271758 0.656082 -0.704063 + outer loop + vertex -0.905867 3.38074 -0.866025 + vertex -1.75 3.03109 -0.866025 + vertex -1.93301 3.34808 -0.5 + endloop + endfacet + facet normal -0.271758 0.656082 -0.704063 + outer loop + vertex -0.905867 3.38074 -0.866025 + vertex -1.93301 3.34808 -0.5 + vertex -1.0006 3.73429 -0.5 + endloop + endfacet + facet normal -0.369855 0.892909 -0.256751 + outer loop + vertex -1.0006 3.73429 -0.5 + vertex -1.93301 3.34808 -0.5 + vertex -2 3.4641 -2.44929e-16 + endloop + endfacet + facet normal -0.369855 0.892909 -0.256751 + outer loop + vertex -1.0006 3.73429 -0.5 + vertex -2 3.4641 -2.44929e-16 + vertex -1.03528 3.8637 -2.44929e-16 + endloop + endfacet + facet normal -0.588354 0.766758 0.256751 + outer loop + vertex -2 3.4641 0 + vertex -2.82843 2.82843 0 + vertex -2.73369 2.73369 0.5 + endloop + endfacet + facet normal -0.588354 0.766758 0.256751 + outer loop + vertex -2 3.4641 0 + vertex -2.73369 2.73369 0.5 + vertex -1.93301 3.34808 0.5 + endloop + endfacet + facet normal -0.432305 0.56339 0.704063 + outer loop + vertex -1.93301 3.34808 0.5 + vertex -2.73369 2.73369 0.5 + vertex -2.47487 2.47487 0.866025 + endloop + endfacet + facet normal -0.432305 0.56339 0.704063 + outer loop + vertex -1.93301 3.34808 0.5 + vertex -2.47487 2.47487 0.866025 + vertex -1.75 3.03109 0.866025 + endloop + endfacet + facet normal -0.158826 0.206987 0.965366 + outer loop + vertex -1.75 3.03109 0.866025 + vertex -2.47487 2.47487 0.866025 + vertex -2.12132 2.12132 1 + endloop + endfacet + facet normal -0.158826 0.206987 0.965366 + outer loop + vertex -1.75 3.03109 0.866025 + vertex -2.12132 2.12132 1 + vertex -1.5 2.59808 1 + endloop + endfacet + facet normal 0.158826 -0.206987 0.965366 + outer loop + vertex -1.5 2.59808 1 + vertex -2.12132 2.12132 1 + vertex -1.76777 1.76777 0.866025 + endloop + endfacet + facet normal 0.158826 -0.206987 0.965366 + outer loop + vertex -1.5 2.59808 1 + vertex -1.76777 1.76777 0.866025 + vertex -1.25 2.16506 0.866025 + endloop + endfacet + facet normal 0.432305 -0.56339 0.704063 + outer loop + vertex -1.25 2.16506 0.866025 + vertex -1.76777 1.76777 0.866025 + vertex -1.50895 1.50895 0.5 + endloop + endfacet + facet normal 0.432305 -0.56339 0.704063 + outer loop + vertex -1.25 2.16506 0.866025 + vertex -1.50895 1.50895 0.5 + vertex -1.06699 1.84808 0.5 + endloop + endfacet + facet normal 0.588354 -0.766758 0.256751 + outer loop + vertex -1.06699 1.84808 0.5 + vertex -1.50895 1.50895 0.5 + vertex -1.41421 1.41421 1.22465e-16 + endloop + endfacet + facet normal 0.588354 -0.766758 0.256751 + outer loop + vertex -1.06699 1.84808 0.5 + vertex -1.41421 1.41421 1.22465e-16 + vertex -1 1.73205 1.22465e-16 + endloop + endfacet + facet normal 0.588354 -0.766758 -0.256751 + outer loop + vertex -1 1.73205 1.22465e-16 + vertex -1.41421 1.41421 1.22465e-16 + vertex -1.50895 1.50895 -0.5 + endloop + endfacet + facet normal 0.588354 -0.766758 -0.256751 + outer loop + vertex -1 1.73205 1.22465e-16 + vertex -1.50895 1.50895 -0.5 + vertex -1.06699 1.84808 -0.5 + endloop + endfacet + facet normal 0.432305 -0.56339 -0.704063 + outer loop + vertex -1.06699 1.84808 -0.5 + vertex -1.50895 1.50895 -0.5 + vertex -1.76777 1.76777 -0.866025 + endloop + endfacet + facet normal 0.432305 -0.56339 -0.704063 + outer loop + vertex -1.06699 1.84808 -0.5 + vertex -1.76777 1.76777 -0.866025 + vertex -1.25 2.16506 -0.866025 + endloop + endfacet + facet normal 0.158826 -0.206987 -0.965366 + outer loop + vertex -1.25 2.16506 -0.866025 + vertex -1.76777 1.76777 -0.866025 + vertex -2.12132 2.12132 -1 + endloop + endfacet + facet normal 0.158826 -0.206987 -0.965366 + outer loop + vertex -1.25 2.16506 -0.866025 + vertex -2.12132 2.12132 -1 + vertex -1.5 2.59808 -1 + endloop + endfacet + facet normal -0.158826 0.206987 -0.965366 + outer loop + vertex -1.5 2.59808 -1 + vertex -2.12132 2.12132 -1 + vertex -2.47487 2.47487 -0.866025 + endloop + endfacet + facet normal -0.158826 0.206987 -0.965366 + outer loop + vertex -1.5 2.59808 -1 + vertex -2.47487 2.47487 -0.866025 + vertex -1.75 3.03109 -0.866025 + endloop + endfacet + facet normal -0.432305 0.56339 -0.704063 + outer loop + vertex -1.75 3.03109 -0.866025 + vertex -2.47487 2.47487 -0.866025 + vertex -2.73369 2.73369 -0.5 + endloop + endfacet + facet normal -0.432305 0.56339 -0.704063 + outer loop + vertex -1.75 3.03109 -0.866025 + vertex -2.73369 2.73369 -0.5 + vertex -1.93301 3.34808 -0.5 + endloop + endfacet + facet normal -0.588354 0.766758 -0.256751 + outer loop + vertex -1.93301 3.34808 -0.5 + vertex -2.73369 2.73369 -0.5 + vertex -2.82843 2.82843 -2.44929e-16 + endloop + endfacet + facet normal -0.588354 0.766758 -0.256751 + outer loop + vertex -1.93301 3.34808 -0.5 + vertex -2.82843 2.82843 -2.44929e-16 + vertex -2 3.4641 -2.44929e-16 + endloop + endfacet + facet normal -0.766758 0.588354 0.256751 + outer loop + vertex -2.82843 2.82843 0 + vertex -3.4641 2 0 + vertex -3.34808 1.93301 0.5 + endloop + endfacet + facet normal -0.766758 0.588354 0.256751 + outer loop + vertex -2.82843 2.82843 0 + vertex -3.34808 1.93301 0.5 + vertex -2.73369 2.73369 0.5 + endloop + endfacet + facet normal -0.56339 0.432305 0.704063 + outer loop + vertex -2.73369 2.73369 0.5 + vertex -3.34808 1.93301 0.5 + vertex -3.03109 1.75 0.866025 + endloop + endfacet + facet normal -0.56339 0.432305 0.704063 + outer loop + vertex -2.73369 2.73369 0.5 + vertex -3.03109 1.75 0.866025 + vertex -2.47487 2.47487 0.866025 + endloop + endfacet + facet normal -0.206987 0.158826 0.965366 + outer loop + vertex -2.47487 2.47487 0.866025 + vertex -3.03109 1.75 0.866025 + vertex -2.59808 1.5 1 + endloop + endfacet + facet normal -0.206987 0.158826 0.965366 + outer loop + vertex -2.47487 2.47487 0.866025 + vertex -2.59808 1.5 1 + vertex -2.12132 2.12132 1 + endloop + endfacet + facet normal 0.206987 -0.158826 0.965366 + outer loop + vertex -2.12132 2.12132 1 + vertex -2.59808 1.5 1 + vertex -2.16506 1.25 0.866025 + endloop + endfacet + facet normal 0.206987 -0.158826 0.965366 + outer loop + vertex -2.12132 2.12132 1 + vertex -2.16506 1.25 0.866025 + vertex -1.76777 1.76777 0.866025 + endloop + endfacet + facet normal 0.56339 -0.432305 0.704063 + outer loop + vertex -1.76777 1.76777 0.866025 + vertex -2.16506 1.25 0.866025 + vertex -1.84808 1.06699 0.5 + endloop + endfacet + facet normal 0.56339 -0.432305 0.704063 + outer loop + vertex -1.76777 1.76777 0.866025 + vertex -1.84808 1.06699 0.5 + vertex -1.50895 1.50895 0.5 + endloop + endfacet + facet normal 0.766758 -0.588354 0.256751 + outer loop + vertex -1.50895 1.50895 0.5 + vertex -1.84808 1.06699 0.5 + vertex -1.73205 1 1.22465e-16 + endloop + endfacet + facet normal 0.766758 -0.588354 0.256751 + outer loop + vertex -1.50895 1.50895 0.5 + vertex -1.73205 1 1.22465e-16 + vertex -1.41421 1.41421 1.22465e-16 + endloop + endfacet + facet normal 0.766758 -0.588354 -0.256751 + outer loop + vertex -1.41421 1.41421 1.22465e-16 + vertex -1.73205 1 1.22465e-16 + vertex -1.84808 1.06699 -0.5 + endloop + endfacet + facet normal 0.766758 -0.588354 -0.256751 + outer loop + vertex -1.41421 1.41421 1.22465e-16 + vertex -1.84808 1.06699 -0.5 + vertex -1.50895 1.50895 -0.5 + endloop + endfacet + facet normal 0.56339 -0.432305 -0.704063 + outer loop + vertex -1.50895 1.50895 -0.5 + vertex -1.84808 1.06699 -0.5 + vertex -2.16506 1.25 -0.866025 + endloop + endfacet + facet normal 0.56339 -0.432305 -0.704063 + outer loop + vertex -1.50895 1.50895 -0.5 + vertex -2.16506 1.25 -0.866025 + vertex -1.76777 1.76777 -0.866025 + endloop + endfacet + facet normal 0.206987 -0.158826 -0.965366 + outer loop + vertex -1.76777 1.76777 -0.866025 + vertex -2.16506 1.25 -0.866025 + vertex -2.59808 1.5 -1 + endloop + endfacet + facet normal 0.206987 -0.158826 -0.965366 + outer loop + vertex -1.76777 1.76777 -0.866025 + vertex -2.59808 1.5 -1 + vertex -2.12132 2.12132 -1 + endloop + endfacet + facet normal -0.206987 0.158826 -0.965366 + outer loop + vertex -2.12132 2.12132 -1 + vertex -2.59808 1.5 -1 + vertex -3.03109 1.75 -0.866025 + endloop + endfacet + facet normal -0.206987 0.158826 -0.965366 + outer loop + vertex -2.12132 2.12132 -1 + vertex -3.03109 1.75 -0.866025 + vertex -2.47487 2.47487 -0.866025 + endloop + endfacet + facet normal -0.56339 0.432305 -0.704063 + outer loop + vertex -2.47487 2.47487 -0.866025 + vertex -3.03109 1.75 -0.866025 + vertex -3.34808 1.93301 -0.5 + endloop + endfacet + facet normal -0.56339 0.432305 -0.704063 + outer loop + vertex -2.47487 2.47487 -0.866025 + vertex -3.34808 1.93301 -0.5 + vertex -2.73369 2.73369 -0.5 + endloop + endfacet + facet normal -0.766758 0.588354 -0.256751 + outer loop + vertex -2.73369 2.73369 -0.5 + vertex -3.34808 1.93301 -0.5 + vertex -3.4641 2 -2.44929e-16 + endloop + endfacet + facet normal -0.766758 0.588354 -0.256751 + outer loop + vertex -2.73369 2.73369 -0.5 + vertex -3.4641 2 -2.44929e-16 + vertex -2.82843 2.82843 -2.44929e-16 + endloop + endfacet + facet normal -0.892909 0.369855 0.256751 + outer loop + vertex -3.4641 2 0 + vertex -3.8637 1.03528 0 + vertex -3.73429 1.0006 0.5 + endloop + endfacet + facet normal -0.892909 0.369855 0.256751 + outer loop + vertex -3.4641 2 0 + vertex -3.73429 1.0006 0.5 + vertex -3.34808 1.93301 0.5 + endloop + endfacet + facet normal -0.656082 0.271758 0.704063 + outer loop + vertex -3.34808 1.93301 0.5 + vertex -3.73429 1.0006 0.5 + vertex -3.38074 0.905867 0.866025 + endloop + endfacet + facet normal -0.656082 0.271758 0.704063 + outer loop + vertex -3.34808 1.93301 0.5 + vertex -3.38074 0.905867 0.866025 + vertex -3.03109 1.75 0.866025 + endloop + endfacet + facet normal -0.241041 0.0998425 0.965366 + outer loop + vertex -3.03109 1.75 0.866025 + vertex -3.38074 0.905867 0.866025 + vertex -2.89778 0.776457 1 + endloop + endfacet + facet normal -0.241041 0.0998425 0.965366 + outer loop + vertex -3.03109 1.75 0.866025 + vertex -2.89778 0.776457 1 + vertex -2.59808 1.5 1 + endloop + endfacet + facet normal 0.241041 -0.0998425 0.965366 + outer loop + vertex -2.59808 1.5 1 + vertex -2.89778 0.776457 1 + vertex -2.41481 0.647048 0.866025 + endloop + endfacet + facet normal 0.241041 -0.0998425 0.965366 + outer loop + vertex -2.59808 1.5 1 + vertex -2.41481 0.647048 0.866025 + vertex -2.16506 1.25 0.866025 + endloop + endfacet + facet normal 0.656082 -0.271758 0.704063 + outer loop + vertex -2.16506 1.25 0.866025 + vertex -2.41481 0.647048 0.866025 + vertex -2.06126 0.552313 0.5 + endloop + endfacet + facet normal 0.656082 -0.271758 0.704063 + outer loop + vertex -2.16506 1.25 0.866025 + vertex -2.06126 0.552313 0.5 + vertex -1.84808 1.06699 0.5 + endloop + endfacet + facet normal 0.892909 -0.369855 0.256751 + outer loop + vertex -1.84808 1.06699 0.5 + vertex -2.06126 0.552313 0.5 + vertex -1.93185 0.517638 1.22465e-16 + endloop + endfacet + facet normal 0.892909 -0.369855 0.256751 + outer loop + vertex -1.84808 1.06699 0.5 + vertex -1.93185 0.517638 1.22465e-16 + vertex -1.73205 1 1.22465e-16 + endloop + endfacet + facet normal 0.892909 -0.369855 -0.256751 + outer loop + vertex -1.73205 1 1.22465e-16 + vertex -1.93185 0.517638 1.22465e-16 + vertex -2.06126 0.552313 -0.5 + endloop + endfacet + facet normal 0.892909 -0.369855 -0.256751 + outer loop + vertex -1.73205 1 1.22465e-16 + vertex -2.06126 0.552313 -0.5 + vertex -1.84808 1.06699 -0.5 + endloop + endfacet + facet normal 0.656082 -0.271758 -0.704063 + outer loop + vertex -1.84808 1.06699 -0.5 + vertex -2.06126 0.552313 -0.5 + vertex -2.41481 0.647048 -0.866025 + endloop + endfacet + facet normal 0.656082 -0.271758 -0.704063 + outer loop + vertex -1.84808 1.06699 -0.5 + vertex -2.41481 0.647048 -0.866025 + vertex -2.16506 1.25 -0.866025 + endloop + endfacet + facet normal 0.241041 -0.0998425 -0.965366 + outer loop + vertex -2.16506 1.25 -0.866025 + vertex -2.41481 0.647048 -0.866025 + vertex -2.89778 0.776457 -1 + endloop + endfacet + facet normal 0.241041 -0.0998425 -0.965366 + outer loop + vertex -2.16506 1.25 -0.866025 + vertex -2.89778 0.776457 -1 + vertex -2.59808 1.5 -1 + endloop + endfacet + facet normal -0.241041 0.0998425 -0.965366 + outer loop + vertex -2.59808 1.5 -1 + vertex -2.89778 0.776457 -1 + vertex -3.38074 0.905867 -0.866025 + endloop + endfacet + facet normal -0.241041 0.0998425 -0.965366 + outer loop + vertex -2.59808 1.5 -1 + vertex -3.38074 0.905867 -0.866025 + vertex -3.03109 1.75 -0.866025 + endloop + endfacet + facet normal -0.656082 0.271758 -0.704063 + outer loop + vertex -3.03109 1.75 -0.866025 + vertex -3.38074 0.905867 -0.866025 + vertex -3.73429 1.0006 -0.5 + endloop + endfacet + facet normal -0.656082 0.271758 -0.704063 + outer loop + vertex -3.03109 1.75 -0.866025 + vertex -3.73429 1.0006 -0.5 + vertex -3.34808 1.93301 -0.5 + endloop + endfacet + facet normal -0.892909 0.369855 -0.256751 + outer loop + vertex -3.34808 1.93301 -0.5 + vertex -3.73429 1.0006 -0.5 + vertex -3.8637 1.03528 -2.44929e-16 + endloop + endfacet + facet normal -0.892909 0.369855 -0.256751 + outer loop + vertex -3.34808 1.93301 -0.5 + vertex -3.8637 1.03528 -2.44929e-16 + vertex -3.4641 2 -2.44929e-16 + endloop + endfacet + facet normal -0.958209 0.126151 0.256751 + outer loop + vertex -3.8637 1.03528 0 + vertex -4 4.89859e-16 0 + vertex -3.86603 4.73452e-16 0.5 + endloop + endfacet + facet normal -0.958209 0.126151 0.256751 + outer loop + vertex -3.8637 1.03528 0 + vertex -3.86603 4.73452e-16 0.5 + vertex -3.73429 1.0006 0.5 + endloop + endfacet + facet normal -0.704063 0.0926916 0.704063 + outer loop + vertex -3.73429 1.0006 0.5 + vertex -3.86603 4.73452e-16 0.5 + vertex -3.5 4.28626e-16 0.866025 + endloop + endfacet + facet normal -0.704063 0.0926916 0.704063 + outer loop + vertex -3.73429 1.0006 0.5 + vertex -3.5 4.28626e-16 0.866025 + vertex -3.38074 0.905867 0.866025 + endloop + endfacet + facet normal -0.258669 0.0340544 0.965366 + outer loop + vertex -3.38074 0.905867 0.866025 + vertex -3.5 4.28626e-16 0.866025 + vertex -3 3.67394e-16 1 + endloop + endfacet + facet normal -0.258669 0.0340544 0.965366 + outer loop + vertex -3.38074 0.905867 0.866025 + vertex -3 3.67394e-16 1 + vertex -2.89778 0.776457 1 + endloop + endfacet + facet normal 0.258669 -0.0340544 0.965366 + outer loop + vertex -2.89778 0.776457 1 + vertex -3 3.67394e-16 1 + vertex -2.5 3.06162e-16 0.866025 + endloop + endfacet + facet normal 0.258669 -0.0340544 0.965366 + outer loop + vertex -2.89778 0.776457 1 + vertex -2.5 3.06162e-16 0.866025 + vertex -2.41481 0.647048 0.866025 + endloop + endfacet + facet normal 0.704063 -0.0926916 0.704063 + outer loop + vertex -2.41481 0.647048 0.866025 + vertex -2.5 3.06162e-16 0.866025 + vertex -2.13397 2.61337e-16 0.5 + endloop + endfacet + facet normal 0.704063 -0.0926916 0.704063 + outer loop + vertex -2.41481 0.647048 0.866025 + vertex -2.13397 2.61337e-16 0.5 + vertex -2.06126 0.552313 0.5 + endloop + endfacet + facet normal 0.958209 -0.126151 0.256751 + outer loop + vertex -2.06126 0.552313 0.5 + vertex -2.13397 2.61337e-16 0.5 + vertex -2 2.44929e-16 1.22465e-16 + endloop + endfacet + facet normal 0.958209 -0.126151 0.256751 + outer loop + vertex -2.06126 0.552313 0.5 + vertex -2 2.44929e-16 1.22465e-16 + vertex -1.93185 0.517638 1.22465e-16 + endloop + endfacet + facet normal 0.958209 -0.126151 -0.256751 + outer loop + vertex -1.93185 0.517638 1.22465e-16 + vertex -2 2.44929e-16 1.22465e-16 + vertex -2.13397 2.61337e-16 -0.5 + endloop + endfacet + facet normal 0.958209 -0.126151 -0.256751 + outer loop + vertex -1.93185 0.517638 1.22465e-16 + vertex -2.13397 2.61337e-16 -0.5 + vertex -2.06126 0.552313 -0.5 + endloop + endfacet + facet normal 0.704063 -0.0926916 -0.704063 + outer loop + vertex -2.06126 0.552313 -0.5 + vertex -2.13397 2.61337e-16 -0.5 + vertex -2.5 3.06162e-16 -0.866025 + endloop + endfacet + facet normal 0.704063 -0.0926916 -0.704063 + outer loop + vertex -2.06126 0.552313 -0.5 + vertex -2.5 3.06162e-16 -0.866025 + vertex -2.41481 0.647048 -0.866025 + endloop + endfacet + facet normal 0.258669 -0.0340544 -0.965366 + outer loop + vertex -2.41481 0.647048 -0.866025 + vertex -2.5 3.06162e-16 -0.866025 + vertex -3 3.67394e-16 -1 + endloop + endfacet + facet normal 0.258669 -0.0340544 -0.965366 + outer loop + vertex -2.41481 0.647048 -0.866025 + vertex -3 3.67394e-16 -1 + vertex -2.89778 0.776457 -1 + endloop + endfacet + facet normal -0.258669 0.0340544 -0.965366 + outer loop + vertex -2.89778 0.776457 -1 + vertex -3 3.67394e-16 -1 + vertex -3.5 4.28626e-16 -0.866025 + endloop + endfacet + facet normal -0.258669 0.0340544 -0.965366 + outer loop + vertex -2.89778 0.776457 -1 + vertex -3.5 4.28626e-16 -0.866025 + vertex -3.38074 0.905867 -0.866025 + endloop + endfacet + facet normal -0.704063 0.0926916 -0.704063 + outer loop + vertex -3.38074 0.905867 -0.866025 + vertex -3.5 4.28626e-16 -0.866025 + vertex -3.86603 4.73452e-16 -0.5 + endloop + endfacet + facet normal -0.704063 0.0926916 -0.704063 + outer loop + vertex -3.38074 0.905867 -0.866025 + vertex -3.86603 4.73452e-16 -0.5 + vertex -3.73429 1.0006 -0.5 + endloop + endfacet + facet normal -0.958209 0.126151 -0.256751 + outer loop + vertex -3.73429 1.0006 -0.5 + vertex -3.86603 4.73452e-16 -0.5 + vertex -4 4.89859e-16 -2.44929e-16 + endloop + endfacet + facet normal -0.958209 0.126151 -0.256751 + outer loop + vertex -3.73429 1.0006 -0.5 + vertex -4 4.89859e-16 -2.44929e-16 + vertex -3.8637 1.03528 -2.44929e-16 + endloop + endfacet + facet normal -0.958209 -0.126151 0.256751 + outer loop + vertex -4 4.89859e-16 0 + vertex -3.8637 -1.03528 0 + vertex -3.73429 -1.0006 0.5 + endloop + endfacet + facet normal -0.958209 -0.126151 0.256751 + outer loop + vertex -4 4.89859e-16 0 + vertex -3.73429 -1.0006 0.5 + vertex -3.86603 4.73452e-16 0.5 + endloop + endfacet + facet normal -0.704063 -0.0926916 0.704063 + outer loop + vertex -3.86603 4.73452e-16 0.5 + vertex -3.73429 -1.0006 0.5 + vertex -3.38074 -0.905867 0.866025 + endloop + endfacet + facet normal -0.704063 -0.0926916 0.704063 + outer loop + vertex -3.86603 4.73452e-16 0.5 + vertex -3.38074 -0.905867 0.866025 + vertex -3.5 4.28626e-16 0.866025 + endloop + endfacet + facet normal -0.258669 -0.0340544 0.965366 + outer loop + vertex -3.5 4.28626e-16 0.866025 + vertex -3.38074 -0.905867 0.866025 + vertex -2.89778 -0.776457 1 + endloop + endfacet + facet normal -0.258669 -0.0340544 0.965366 + outer loop + vertex -3.5 4.28626e-16 0.866025 + vertex -2.89778 -0.776457 1 + vertex -3 3.67394e-16 1 + endloop + endfacet + facet normal 0.258669 0.0340544 0.965366 + outer loop + vertex -3 3.67394e-16 1 + vertex -2.89778 -0.776457 1 + vertex -2.41481 -0.647048 0.866025 + endloop + endfacet + facet normal 0.258669 0.0340544 0.965366 + outer loop + vertex -3 3.67394e-16 1 + vertex -2.41481 -0.647048 0.866025 + vertex -2.5 3.06162e-16 0.866025 + endloop + endfacet + facet normal 0.704063 0.0926916 0.704063 + outer loop + vertex -2.5 3.06162e-16 0.866025 + vertex -2.41481 -0.647048 0.866025 + vertex -2.06126 -0.552313 0.5 + endloop + endfacet + facet normal 0.704063 0.0926916 0.704063 + outer loop + vertex -2.5 3.06162e-16 0.866025 + vertex -2.06126 -0.552313 0.5 + vertex -2.13397 2.61337e-16 0.5 + endloop + endfacet + facet normal 0.958209 0.126151 0.256751 + outer loop + vertex -2.13397 2.61337e-16 0.5 + vertex -2.06126 -0.552313 0.5 + vertex -1.93185 -0.517638 1.22465e-16 + endloop + endfacet + facet normal 0.958209 0.126151 0.256751 + outer loop + vertex -2.13397 2.61337e-16 0.5 + vertex -1.93185 -0.517638 1.22465e-16 + vertex -2 2.44929e-16 1.22465e-16 + endloop + endfacet + facet normal 0.958209 0.126151 -0.256751 + outer loop + vertex -2 2.44929e-16 1.22465e-16 + vertex -1.93185 -0.517638 1.22465e-16 + vertex -2.06126 -0.552313 -0.5 + endloop + endfacet + facet normal 0.958209 0.126151 -0.256751 + outer loop + vertex -2 2.44929e-16 1.22465e-16 + vertex -2.06126 -0.552313 -0.5 + vertex -2.13397 2.61337e-16 -0.5 + endloop + endfacet + facet normal 0.704063 0.0926916 -0.704063 + outer loop + vertex -2.13397 2.61337e-16 -0.5 + vertex -2.06126 -0.552313 -0.5 + vertex -2.41481 -0.647048 -0.866025 + endloop + endfacet + facet normal 0.704063 0.0926916 -0.704063 + outer loop + vertex -2.13397 2.61337e-16 -0.5 + vertex -2.41481 -0.647048 -0.866025 + vertex -2.5 3.06162e-16 -0.866025 + endloop + endfacet + facet normal 0.258669 0.0340544 -0.965366 + outer loop + vertex -2.5 3.06162e-16 -0.866025 + vertex -2.41481 -0.647048 -0.866025 + vertex -2.89778 -0.776457 -1 + endloop + endfacet + facet normal 0.258669 0.0340544 -0.965366 + outer loop + vertex -2.5 3.06162e-16 -0.866025 + vertex -2.89778 -0.776457 -1 + vertex -3 3.67394e-16 -1 + endloop + endfacet + facet normal -0.258669 -0.0340544 -0.965366 + outer loop + vertex -3 3.67394e-16 -1 + vertex -2.89778 -0.776457 -1 + vertex -3.38074 -0.905867 -0.866025 + endloop + endfacet + facet normal -0.258669 -0.0340544 -0.965366 + outer loop + vertex -3 3.67394e-16 -1 + vertex -3.38074 -0.905867 -0.866025 + vertex -3.5 4.28626e-16 -0.866025 + endloop + endfacet + facet normal -0.704063 -0.0926916 -0.704063 + outer loop + vertex -3.5 4.28626e-16 -0.866025 + vertex -3.38074 -0.905867 -0.866025 + vertex -3.73429 -1.0006 -0.5 + endloop + endfacet + facet normal -0.704063 -0.0926916 -0.704063 + outer loop + vertex -3.5 4.28626e-16 -0.866025 + vertex -3.73429 -1.0006 -0.5 + vertex -3.86603 4.73452e-16 -0.5 + endloop + endfacet + facet normal -0.958209 -0.126151 -0.256751 + outer loop + vertex -3.86603 4.73452e-16 -0.5 + vertex -3.73429 -1.0006 -0.5 + vertex -3.8637 -1.03528 -2.44929e-16 + endloop + endfacet + facet normal -0.958209 -0.126151 -0.256751 + outer loop + vertex -3.86603 4.73452e-16 -0.5 + vertex -3.8637 -1.03528 -2.44929e-16 + vertex -4 4.89859e-16 -2.44929e-16 + endloop + endfacet + facet normal -0.892909 -0.369855 0.256751 + outer loop + vertex -3.8637 -1.03528 0 + vertex -3.4641 -2 0 + vertex -3.34808 -1.93301 0.5 + endloop + endfacet + facet normal -0.892909 -0.369855 0.256751 + outer loop + vertex -3.8637 -1.03528 0 + vertex -3.34808 -1.93301 0.5 + vertex -3.73429 -1.0006 0.5 + endloop + endfacet + facet normal -0.656082 -0.271758 0.704063 + outer loop + vertex -3.73429 -1.0006 0.5 + vertex -3.34808 -1.93301 0.5 + vertex -3.03109 -1.75 0.866025 + endloop + endfacet + facet normal -0.656082 -0.271758 0.704063 + outer loop + vertex -3.73429 -1.0006 0.5 + vertex -3.03109 -1.75 0.866025 + vertex -3.38074 -0.905867 0.866025 + endloop + endfacet + facet normal -0.241041 -0.0998425 0.965366 + outer loop + vertex -3.38074 -0.905867 0.866025 + vertex -3.03109 -1.75 0.866025 + vertex -2.59808 -1.5 1 + endloop + endfacet + facet normal -0.241041 -0.0998425 0.965366 + outer loop + vertex -3.38074 -0.905867 0.866025 + vertex -2.59808 -1.5 1 + vertex -2.89778 -0.776457 1 + endloop + endfacet + facet normal 0.241041 0.0998425 0.965366 + outer loop + vertex -2.89778 -0.776457 1 + vertex -2.59808 -1.5 1 + vertex -2.16506 -1.25 0.866025 + endloop + endfacet + facet normal 0.241041 0.0998425 0.965366 + outer loop + vertex -2.89778 -0.776457 1 + vertex -2.16506 -1.25 0.866025 + vertex -2.41481 -0.647048 0.866025 + endloop + endfacet + facet normal 0.656082 0.271758 0.704063 + outer loop + vertex -2.41481 -0.647048 0.866025 + vertex -2.16506 -1.25 0.866025 + vertex -1.84808 -1.06699 0.5 + endloop + endfacet + facet normal 0.656082 0.271758 0.704063 + outer loop + vertex -2.41481 -0.647048 0.866025 + vertex -1.84808 -1.06699 0.5 + vertex -2.06126 -0.552313 0.5 + endloop + endfacet + facet normal 0.892909 0.369855 0.256751 + outer loop + vertex -2.06126 -0.552313 0.5 + vertex -1.84808 -1.06699 0.5 + vertex -1.73205 -1 1.22465e-16 + endloop + endfacet + facet normal 0.892909 0.369855 0.256751 + outer loop + vertex -2.06126 -0.552313 0.5 + vertex -1.73205 -1 1.22465e-16 + vertex -1.93185 -0.517638 1.22465e-16 + endloop + endfacet + facet normal 0.892909 0.369855 -0.256751 + outer loop + vertex -1.93185 -0.517638 1.22465e-16 + vertex -1.73205 -1 1.22465e-16 + vertex -1.84808 -1.06699 -0.5 + endloop + endfacet + facet normal 0.892909 0.369855 -0.256751 + outer loop + vertex -1.93185 -0.517638 1.22465e-16 + vertex -1.84808 -1.06699 -0.5 + vertex -2.06126 -0.552313 -0.5 + endloop + endfacet + facet normal 0.656082 0.271758 -0.704063 + outer loop + vertex -2.06126 -0.552313 -0.5 + vertex -1.84808 -1.06699 -0.5 + vertex -2.16506 -1.25 -0.866025 + endloop + endfacet + facet normal 0.656082 0.271758 -0.704063 + outer loop + vertex -2.06126 -0.552313 -0.5 + vertex -2.16506 -1.25 -0.866025 + vertex -2.41481 -0.647048 -0.866025 + endloop + endfacet + facet normal 0.241041 0.0998425 -0.965366 + outer loop + vertex -2.41481 -0.647048 -0.866025 + vertex -2.16506 -1.25 -0.866025 + vertex -2.59808 -1.5 -1 + endloop + endfacet + facet normal 0.241041 0.0998425 -0.965366 + outer loop + vertex -2.41481 -0.647048 -0.866025 + vertex -2.59808 -1.5 -1 + vertex -2.89778 -0.776457 -1 + endloop + endfacet + facet normal -0.241041 -0.0998425 -0.965366 + outer loop + vertex -2.89778 -0.776457 -1 + vertex -2.59808 -1.5 -1 + vertex -3.03109 -1.75 -0.866025 + endloop + endfacet + facet normal -0.241041 -0.0998425 -0.965366 + outer loop + vertex -2.89778 -0.776457 -1 + vertex -3.03109 -1.75 -0.866025 + vertex -3.38074 -0.905867 -0.866025 + endloop + endfacet + facet normal -0.656082 -0.271758 -0.704063 + outer loop + vertex -3.38074 -0.905867 -0.866025 + vertex -3.03109 -1.75 -0.866025 + vertex -3.34808 -1.93301 -0.5 + endloop + endfacet + facet normal -0.656082 -0.271758 -0.704063 + outer loop + vertex -3.38074 -0.905867 -0.866025 + vertex -3.34808 -1.93301 -0.5 + vertex -3.73429 -1.0006 -0.5 + endloop + endfacet + facet normal -0.892909 -0.369855 -0.256751 + outer loop + vertex -3.73429 -1.0006 -0.5 + vertex -3.34808 -1.93301 -0.5 + vertex -3.4641 -2 -2.44929e-16 + endloop + endfacet + facet normal -0.892909 -0.369855 -0.256751 + outer loop + vertex -3.73429 -1.0006 -0.5 + vertex -3.4641 -2 -2.44929e-16 + vertex -3.8637 -1.03528 -2.44929e-16 + endloop + endfacet + facet normal -0.766758 -0.588354 0.256751 + outer loop + vertex -3.4641 -2 0 + vertex -2.82843 -2.82843 0 + vertex -2.73369 -2.73369 0.5 + endloop + endfacet + facet normal -0.766758 -0.588354 0.256751 + outer loop + vertex -3.4641 -2 0 + vertex -2.73369 -2.73369 0.5 + vertex -3.34808 -1.93301 0.5 + endloop + endfacet + facet normal -0.56339 -0.432305 0.704063 + outer loop + vertex -3.34808 -1.93301 0.5 + vertex -2.73369 -2.73369 0.5 + vertex -2.47487 -2.47487 0.866025 + endloop + endfacet + facet normal -0.56339 -0.432305 0.704063 + outer loop + vertex -3.34808 -1.93301 0.5 + vertex -2.47487 -2.47487 0.866025 + vertex -3.03109 -1.75 0.866025 + endloop + endfacet + facet normal -0.206987 -0.158826 0.965366 + outer loop + vertex -3.03109 -1.75 0.866025 + vertex -2.47487 -2.47487 0.866025 + vertex -2.12132 -2.12132 1 + endloop + endfacet + facet normal -0.206987 -0.158826 0.965366 + outer loop + vertex -3.03109 -1.75 0.866025 + vertex -2.12132 -2.12132 1 + vertex -2.59808 -1.5 1 + endloop + endfacet + facet normal 0.206987 0.158826 0.965366 + outer loop + vertex -2.59808 -1.5 1 + vertex -2.12132 -2.12132 1 + vertex -1.76777 -1.76777 0.866025 + endloop + endfacet + facet normal 0.206987 0.158826 0.965366 + outer loop + vertex -2.59808 -1.5 1 + vertex -1.76777 -1.76777 0.866025 + vertex -2.16506 -1.25 0.866025 + endloop + endfacet + facet normal 0.56339 0.432305 0.704063 + outer loop + vertex -2.16506 -1.25 0.866025 + vertex -1.76777 -1.76777 0.866025 + vertex -1.50895 -1.50895 0.5 + endloop + endfacet + facet normal 0.56339 0.432305 0.704063 + outer loop + vertex -2.16506 -1.25 0.866025 + vertex -1.50895 -1.50895 0.5 + vertex -1.84808 -1.06699 0.5 + endloop + endfacet + facet normal 0.766758 0.588354 0.256751 + outer loop + vertex -1.84808 -1.06699 0.5 + vertex -1.50895 -1.50895 0.5 + vertex -1.41421 -1.41421 1.22465e-16 + endloop + endfacet + facet normal 0.766758 0.588354 0.256751 + outer loop + vertex -1.84808 -1.06699 0.5 + vertex -1.41421 -1.41421 1.22465e-16 + vertex -1.73205 -1 1.22465e-16 + endloop + endfacet + facet normal 0.766758 0.588354 -0.256751 + outer loop + vertex -1.73205 -1 1.22465e-16 + vertex -1.41421 -1.41421 1.22465e-16 + vertex -1.50895 -1.50895 -0.5 + endloop + endfacet + facet normal 0.766758 0.588354 -0.256751 + outer loop + vertex -1.73205 -1 1.22465e-16 + vertex -1.50895 -1.50895 -0.5 + vertex -1.84808 -1.06699 -0.5 + endloop + endfacet + facet normal 0.56339 0.432305 -0.704063 + outer loop + vertex -1.84808 -1.06699 -0.5 + vertex -1.50895 -1.50895 -0.5 + vertex -1.76777 -1.76777 -0.866025 + endloop + endfacet + facet normal 0.56339 0.432305 -0.704063 + outer loop + vertex -1.84808 -1.06699 -0.5 + vertex -1.76777 -1.76777 -0.866025 + vertex -2.16506 -1.25 -0.866025 + endloop + endfacet + facet normal 0.206987 0.158826 -0.965366 + outer loop + vertex -2.16506 -1.25 -0.866025 + vertex -1.76777 -1.76777 -0.866025 + vertex -2.12132 -2.12132 -1 + endloop + endfacet + facet normal 0.206987 0.158826 -0.965366 + outer loop + vertex -2.16506 -1.25 -0.866025 + vertex -2.12132 -2.12132 -1 + vertex -2.59808 -1.5 -1 + endloop + endfacet + facet normal -0.206987 -0.158826 -0.965366 + outer loop + vertex -2.59808 -1.5 -1 + vertex -2.12132 -2.12132 -1 + vertex -2.47487 -2.47487 -0.866025 + endloop + endfacet + facet normal -0.206987 -0.158826 -0.965366 + outer loop + vertex -2.59808 -1.5 -1 + vertex -2.47487 -2.47487 -0.866025 + vertex -3.03109 -1.75 -0.866025 + endloop + endfacet + facet normal -0.56339 -0.432305 -0.704063 + outer loop + vertex -3.03109 -1.75 -0.866025 + vertex -2.47487 -2.47487 -0.866025 + vertex -2.73369 -2.73369 -0.5 + endloop + endfacet + facet normal -0.56339 -0.432305 -0.704063 + outer loop + vertex -3.03109 -1.75 -0.866025 + vertex -2.73369 -2.73369 -0.5 + vertex -3.34808 -1.93301 -0.5 + endloop + endfacet + facet normal -0.766758 -0.588354 -0.256751 + outer loop + vertex -3.34808 -1.93301 -0.5 + vertex -2.73369 -2.73369 -0.5 + vertex -2.82843 -2.82843 -2.44929e-16 + endloop + endfacet + facet normal -0.766758 -0.588354 -0.256751 + outer loop + vertex -3.34808 -1.93301 -0.5 + vertex -2.82843 -2.82843 -2.44929e-16 + vertex -3.4641 -2 -2.44929e-16 + endloop + endfacet + facet normal -0.588354 -0.766758 0.256751 + outer loop + vertex -2.82843 -2.82843 0 + vertex -2 -3.4641 0 + vertex -1.93301 -3.34808 0.5 + endloop + endfacet + facet normal -0.588354 -0.766758 0.256751 + outer loop + vertex -2.82843 -2.82843 0 + vertex -1.93301 -3.34808 0.5 + vertex -2.73369 -2.73369 0.5 + endloop + endfacet + facet normal -0.432305 -0.56339 0.704063 + outer loop + vertex -2.73369 -2.73369 0.5 + vertex -1.93301 -3.34808 0.5 + vertex -1.75 -3.03109 0.866025 + endloop + endfacet + facet normal -0.432305 -0.56339 0.704063 + outer loop + vertex -2.73369 -2.73369 0.5 + vertex -1.75 -3.03109 0.866025 + vertex -2.47487 -2.47487 0.866025 + endloop + endfacet + facet normal -0.158826 -0.206987 0.965366 + outer loop + vertex -2.47487 -2.47487 0.866025 + vertex -1.75 -3.03109 0.866025 + vertex -1.5 -2.59808 1 + endloop + endfacet + facet normal -0.158826 -0.206987 0.965366 + outer loop + vertex -2.47487 -2.47487 0.866025 + vertex -1.5 -2.59808 1 + vertex -2.12132 -2.12132 1 + endloop + endfacet + facet normal 0.158826 0.206987 0.965366 + outer loop + vertex -2.12132 -2.12132 1 + vertex -1.5 -2.59808 1 + vertex -1.25 -2.16506 0.866025 + endloop + endfacet + facet normal 0.158826 0.206987 0.965366 + outer loop + vertex -2.12132 -2.12132 1 + vertex -1.25 -2.16506 0.866025 + vertex -1.76777 -1.76777 0.866025 + endloop + endfacet + facet normal 0.432305 0.56339 0.704063 + outer loop + vertex -1.76777 -1.76777 0.866025 + vertex -1.25 -2.16506 0.866025 + vertex -1.06699 -1.84808 0.5 + endloop + endfacet + facet normal 0.432305 0.56339 0.704063 + outer loop + vertex -1.76777 -1.76777 0.866025 + vertex -1.06699 -1.84808 0.5 + vertex -1.50895 -1.50895 0.5 + endloop + endfacet + facet normal 0.588354 0.766758 0.256751 + outer loop + vertex -1.50895 -1.50895 0.5 + vertex -1.06699 -1.84808 0.5 + vertex -1 -1.73205 1.22465e-16 + endloop + endfacet + facet normal 0.588354 0.766758 0.256751 + outer loop + vertex -1.50895 -1.50895 0.5 + vertex -1 -1.73205 1.22465e-16 + vertex -1.41421 -1.41421 1.22465e-16 + endloop + endfacet + facet normal 0.588354 0.766758 -0.256751 + outer loop + vertex -1.41421 -1.41421 1.22465e-16 + vertex -1 -1.73205 1.22465e-16 + vertex -1.06699 -1.84808 -0.5 + endloop + endfacet + facet normal 0.588354 0.766758 -0.256751 + outer loop + vertex -1.41421 -1.41421 1.22465e-16 + vertex -1.06699 -1.84808 -0.5 + vertex -1.50895 -1.50895 -0.5 + endloop + endfacet + facet normal 0.432305 0.56339 -0.704063 + outer loop + vertex -1.50895 -1.50895 -0.5 + vertex -1.06699 -1.84808 -0.5 + vertex -1.25 -2.16506 -0.866025 + endloop + endfacet + facet normal 0.432305 0.56339 -0.704063 + outer loop + vertex -1.50895 -1.50895 -0.5 + vertex -1.25 -2.16506 -0.866025 + vertex -1.76777 -1.76777 -0.866025 + endloop + endfacet + facet normal 0.158826 0.206987 -0.965366 + outer loop + vertex -1.76777 -1.76777 -0.866025 + vertex -1.25 -2.16506 -0.866025 + vertex -1.5 -2.59808 -1 + endloop + endfacet + facet normal 0.158826 0.206987 -0.965366 + outer loop + vertex -1.76777 -1.76777 -0.866025 + vertex -1.5 -2.59808 -1 + vertex -2.12132 -2.12132 -1 + endloop + endfacet + facet normal -0.158826 -0.206987 -0.965366 + outer loop + vertex -2.12132 -2.12132 -1 + vertex -1.5 -2.59808 -1 + vertex -1.75 -3.03109 -0.866025 + endloop + endfacet + facet normal -0.158826 -0.206987 -0.965366 + outer loop + vertex -2.12132 -2.12132 -1 + vertex -1.75 -3.03109 -0.866025 + vertex -2.47487 -2.47487 -0.866025 + endloop + endfacet + facet normal -0.432305 -0.56339 -0.704063 + outer loop + vertex -2.47487 -2.47487 -0.866025 + vertex -1.75 -3.03109 -0.866025 + vertex -1.93301 -3.34808 -0.5 + endloop + endfacet + facet normal -0.432305 -0.56339 -0.704063 + outer loop + vertex -2.47487 -2.47487 -0.866025 + vertex -1.93301 -3.34808 -0.5 + vertex -2.73369 -2.73369 -0.5 + endloop + endfacet + facet normal -0.588354 -0.766758 -0.256751 + outer loop + vertex -2.73369 -2.73369 -0.5 + vertex -1.93301 -3.34808 -0.5 + vertex -2 -3.4641 -2.44929e-16 + endloop + endfacet + facet normal -0.588354 -0.766758 -0.256751 + outer loop + vertex -2.73369 -2.73369 -0.5 + vertex -2 -3.4641 -2.44929e-16 + vertex -2.82843 -2.82843 -2.44929e-16 + endloop + endfacet + facet normal -0.369855 -0.892909 0.256751 + outer loop + vertex -2 -3.4641 0 + vertex -1.03528 -3.8637 0 + vertex -1.0006 -3.73429 0.5 + endloop + endfacet + facet normal -0.369855 -0.892909 0.256751 + outer loop + vertex -2 -3.4641 0 + vertex -1.0006 -3.73429 0.5 + vertex -1.93301 -3.34808 0.5 + endloop + endfacet + facet normal -0.271758 -0.656082 0.704063 + outer loop + vertex -1.93301 -3.34808 0.5 + vertex -1.0006 -3.73429 0.5 + vertex -0.905867 -3.38074 0.866025 + endloop + endfacet + facet normal -0.271758 -0.656082 0.704063 + outer loop + vertex -1.93301 -3.34808 0.5 + vertex -0.905867 -3.38074 0.866025 + vertex -1.75 -3.03109 0.866025 + endloop + endfacet + facet normal -0.0998425 -0.241041 0.965366 + outer loop + vertex -1.75 -3.03109 0.866025 + vertex -0.905867 -3.38074 0.866025 + vertex -0.776457 -2.89778 1 + endloop + endfacet + facet normal -0.0998425 -0.241041 0.965366 + outer loop + vertex -1.75 -3.03109 0.866025 + vertex -0.776457 -2.89778 1 + vertex -1.5 -2.59808 1 + endloop + endfacet + facet normal 0.0998425 0.241041 0.965366 + outer loop + vertex -1.5 -2.59808 1 + vertex -0.776457 -2.89778 1 + vertex -0.647048 -2.41481 0.866025 + endloop + endfacet + facet normal 0.0998425 0.241041 0.965366 + outer loop + vertex -1.5 -2.59808 1 + vertex -0.647048 -2.41481 0.866025 + vertex -1.25 -2.16506 0.866025 + endloop + endfacet + facet normal 0.271758 0.656082 0.704063 + outer loop + vertex -1.25 -2.16506 0.866025 + vertex -0.647048 -2.41481 0.866025 + vertex -0.552313 -2.06126 0.5 + endloop + endfacet + facet normal 0.271758 0.656082 0.704063 + outer loop + vertex -1.25 -2.16506 0.866025 + vertex -0.552313 -2.06126 0.5 + vertex -1.06699 -1.84808 0.5 + endloop + endfacet + facet normal 0.369855 0.892909 0.256751 + outer loop + vertex -1.06699 -1.84808 0.5 + vertex -0.552313 -2.06126 0.5 + vertex -0.517638 -1.93185 1.22465e-16 + endloop + endfacet + facet normal 0.369855 0.892909 0.256751 + outer loop + vertex -1.06699 -1.84808 0.5 + vertex -0.517638 -1.93185 1.22465e-16 + vertex -1 -1.73205 1.22465e-16 + endloop + endfacet + facet normal 0.369855 0.892909 -0.256751 + outer loop + vertex -1 -1.73205 1.22465e-16 + vertex -0.517638 -1.93185 1.22465e-16 + vertex -0.552313 -2.06126 -0.5 + endloop + endfacet + facet normal 0.369855 0.892909 -0.256751 + outer loop + vertex -1 -1.73205 1.22465e-16 + vertex -0.552313 -2.06126 -0.5 + vertex -1.06699 -1.84808 -0.5 + endloop + endfacet + facet normal 0.271758 0.656082 -0.704063 + outer loop + vertex -1.06699 -1.84808 -0.5 + vertex -0.552313 -2.06126 -0.5 + vertex -0.647048 -2.41481 -0.866025 + endloop + endfacet + facet normal 0.271758 0.656082 -0.704063 + outer loop + vertex -1.06699 -1.84808 -0.5 + vertex -0.647048 -2.41481 -0.866025 + vertex -1.25 -2.16506 -0.866025 + endloop + endfacet + facet normal 0.0998425 0.241041 -0.965366 + outer loop + vertex -1.25 -2.16506 -0.866025 + vertex -0.647048 -2.41481 -0.866025 + vertex -0.776457 -2.89778 -1 + endloop + endfacet + facet normal 0.0998425 0.241041 -0.965366 + outer loop + vertex -1.25 -2.16506 -0.866025 + vertex -0.776457 -2.89778 -1 + vertex -1.5 -2.59808 -1 + endloop + endfacet + facet normal -0.0998425 -0.241041 -0.965366 + outer loop + vertex -1.5 -2.59808 -1 + vertex -0.776457 -2.89778 -1 + vertex -0.905867 -3.38074 -0.866025 + endloop + endfacet + facet normal -0.0998425 -0.241041 -0.965366 + outer loop + vertex -1.5 -2.59808 -1 + vertex -0.905867 -3.38074 -0.866025 + vertex -1.75 -3.03109 -0.866025 + endloop + endfacet + facet normal -0.271758 -0.656082 -0.704063 + outer loop + vertex -1.75 -3.03109 -0.866025 + vertex -0.905867 -3.38074 -0.866025 + vertex -1.0006 -3.73429 -0.5 + endloop + endfacet + facet normal -0.271758 -0.656082 -0.704063 + outer loop + vertex -1.75 -3.03109 -0.866025 + vertex -1.0006 -3.73429 -0.5 + vertex -1.93301 -3.34808 -0.5 + endloop + endfacet + facet normal -0.369855 -0.892909 -0.256751 + outer loop + vertex -1.93301 -3.34808 -0.5 + vertex -1.0006 -3.73429 -0.5 + vertex -1.03528 -3.8637 -2.44929e-16 + endloop + endfacet + facet normal -0.369855 -0.892909 -0.256751 + outer loop + vertex -1.93301 -3.34808 -0.5 + vertex -1.03528 -3.8637 -2.44929e-16 + vertex -2 -3.4641 -2.44929e-16 + endloop + endfacet + facet normal -0.126151 -0.958209 0.256751 + outer loop + vertex -1.03528 -3.8637 0 + vertex -7.34788e-16 -4 0 + vertex -7.10177e-16 -3.86603 0.5 + endloop + endfacet + facet normal -0.126151 -0.958209 0.256751 + outer loop + vertex -1.03528 -3.8637 0 + vertex -7.10177e-16 -3.86603 0.5 + vertex -1.0006 -3.73429 0.5 + endloop + endfacet + facet normal -0.0926916 -0.704063 0.704063 + outer loop + vertex -1.0006 -3.73429 0.5 + vertex -7.10177e-16 -3.86603 0.5 + vertex -6.4294e-16 -3.5 0.866025 + endloop + endfacet + facet normal -0.0926916 -0.704063 0.704063 + outer loop + vertex -1.0006 -3.73429 0.5 + vertex -6.4294e-16 -3.5 0.866025 + vertex -0.905867 -3.38074 0.866025 + endloop + endfacet + facet normal -0.0340544 -0.258669 0.965366 + outer loop + vertex -0.905867 -3.38074 0.866025 + vertex -6.4294e-16 -3.5 0.866025 + vertex -5.51091e-16 -3 1 + endloop + endfacet + facet normal -0.0340544 -0.258669 0.965366 + outer loop + vertex -0.905867 -3.38074 0.866025 + vertex -5.51091e-16 -3 1 + vertex -0.776457 -2.89778 1 + endloop + endfacet + facet normal 0.0340544 0.258669 0.965366 + outer loop + vertex -0.776457 -2.89778 1 + vertex -5.51091e-16 -3 1 + vertex -4.59243e-16 -2.5 0.866025 + endloop + endfacet + facet normal 0.0340544 0.258669 0.965366 + outer loop + vertex -0.776457 -2.89778 1 + vertex -4.59243e-16 -2.5 0.866025 + vertex -0.647048 -2.41481 0.866025 + endloop + endfacet + facet normal 0.0926916 0.704063 0.704063 + outer loop + vertex -0.647048 -2.41481 0.866025 + vertex -4.59243e-16 -2.5 0.866025 + vertex -3.92005e-16 -2.13397 0.5 + endloop + endfacet + facet normal 0.0926916 0.704063 0.704063 + outer loop + vertex -0.647048 -2.41481 0.866025 + vertex -3.92005e-16 -2.13397 0.5 + vertex -0.552313 -2.06126 0.5 + endloop + endfacet + facet normal 0.126151 0.958209 0.256751 + outer loop + vertex -0.552313 -2.06126 0.5 + vertex -3.92005e-16 -2.13397 0.5 + vertex -3.67394e-16 -2 1.22465e-16 + endloop + endfacet + facet normal 0.126151 0.958209 0.256751 + outer loop + vertex -0.552313 -2.06126 0.5 + vertex -3.67394e-16 -2 1.22465e-16 + vertex -0.517638 -1.93185 1.22465e-16 + endloop + endfacet + facet normal 0.126151 0.958209 -0.256751 + outer loop + vertex -0.517638 -1.93185 1.22465e-16 + vertex -3.67394e-16 -2 1.22465e-16 + vertex -3.92005e-16 -2.13397 -0.5 + endloop + endfacet + facet normal 0.126151 0.958209 -0.256751 + outer loop + vertex -0.517638 -1.93185 1.22465e-16 + vertex -3.92005e-16 -2.13397 -0.5 + vertex -0.552313 -2.06126 -0.5 + endloop + endfacet + facet normal 0.0926916 0.704063 -0.704063 + outer loop + vertex -0.552313 -2.06126 -0.5 + vertex -3.92005e-16 -2.13397 -0.5 + vertex -4.59243e-16 -2.5 -0.866025 + endloop + endfacet + facet normal 0.0926916 0.704063 -0.704063 + outer loop + vertex -0.552313 -2.06126 -0.5 + vertex -4.59243e-16 -2.5 -0.866025 + vertex -0.647048 -2.41481 -0.866025 + endloop + endfacet + facet normal 0.0340544 0.258669 -0.965366 + outer loop + vertex -0.647048 -2.41481 -0.866025 + vertex -4.59243e-16 -2.5 -0.866025 + vertex -5.51091e-16 -3 -1 + endloop + endfacet + facet normal 0.0340544 0.258669 -0.965366 + outer loop + vertex -0.647048 -2.41481 -0.866025 + vertex -5.51091e-16 -3 -1 + vertex -0.776457 -2.89778 -1 + endloop + endfacet + facet normal -0.0340544 -0.258669 -0.965366 + outer loop + vertex -0.776457 -2.89778 -1 + vertex -5.51091e-16 -3 -1 + vertex -6.4294e-16 -3.5 -0.866025 + endloop + endfacet + facet normal -0.0340544 -0.258669 -0.965366 + outer loop + vertex -0.776457 -2.89778 -1 + vertex -6.4294e-16 -3.5 -0.866025 + vertex -0.905867 -3.38074 -0.866025 + endloop + endfacet + facet normal -0.0926916 -0.704063 -0.704063 + outer loop + vertex -0.905867 -3.38074 -0.866025 + vertex -6.4294e-16 -3.5 -0.866025 + vertex -7.10177e-16 -3.86603 -0.5 + endloop + endfacet + facet normal -0.0926916 -0.704063 -0.704063 + outer loop + vertex -0.905867 -3.38074 -0.866025 + vertex -7.10177e-16 -3.86603 -0.5 + vertex -1.0006 -3.73429 -0.5 + endloop + endfacet + facet normal -0.126151 -0.958209 -0.256751 + outer loop + vertex -1.0006 -3.73429 -0.5 + vertex -7.10177e-16 -3.86603 -0.5 + vertex -7.34788e-16 -4 -2.44929e-16 + endloop + endfacet + facet normal -0.126151 -0.958209 -0.256751 + outer loop + vertex -1.0006 -3.73429 -0.5 + vertex -7.34788e-16 -4 -2.44929e-16 + vertex -1.03528 -3.8637 -2.44929e-16 + endloop + endfacet + facet normal 0.126151 -0.958209 0.256751 + outer loop + vertex -7.34788e-16 -4 0 + vertex 1.03528 -3.8637 0 + vertex 1.0006 -3.73429 0.5 + endloop + endfacet + facet normal 0.126151 -0.958209 0.256751 + outer loop + vertex -7.34788e-16 -4 0 + vertex 1.0006 -3.73429 0.5 + vertex -7.10177e-16 -3.86603 0.5 + endloop + endfacet + facet normal 0.0926916 -0.704063 0.704063 + outer loop + vertex -7.10177e-16 -3.86603 0.5 + vertex 1.0006 -3.73429 0.5 + vertex 0.905867 -3.38074 0.866025 + endloop + endfacet + facet normal 0.0926916 -0.704063 0.704063 + outer loop + vertex -7.10177e-16 -3.86603 0.5 + vertex 0.905867 -3.38074 0.866025 + vertex -6.4294e-16 -3.5 0.866025 + endloop + endfacet + facet normal 0.0340544 -0.258669 0.965366 + outer loop + vertex -6.4294e-16 -3.5 0.866025 + vertex 0.905867 -3.38074 0.866025 + vertex 0.776457 -2.89778 1 + endloop + endfacet + facet normal 0.0340544 -0.258669 0.965366 + outer loop + vertex -6.4294e-16 -3.5 0.866025 + vertex 0.776457 -2.89778 1 + vertex -5.51091e-16 -3 1 + endloop + endfacet + facet normal -0.0340544 0.258669 0.965366 + outer loop + vertex -5.51091e-16 -3 1 + vertex 0.776457 -2.89778 1 + vertex 0.647048 -2.41481 0.866025 + endloop + endfacet + facet normal -0.0340544 0.258669 0.965366 + outer loop + vertex -5.51091e-16 -3 1 + vertex 0.647048 -2.41481 0.866025 + vertex -4.59243e-16 -2.5 0.866025 + endloop + endfacet + facet normal -0.0926916 0.704063 0.704063 + outer loop + vertex -4.59243e-16 -2.5 0.866025 + vertex 0.647048 -2.41481 0.866025 + vertex 0.552313 -2.06126 0.5 + endloop + endfacet + facet normal -0.0926916 0.704063 0.704063 + outer loop + vertex -4.59243e-16 -2.5 0.866025 + vertex 0.552313 -2.06126 0.5 + vertex -3.92005e-16 -2.13397 0.5 + endloop + endfacet + facet normal -0.126151 0.958209 0.256751 + outer loop + vertex -3.92005e-16 -2.13397 0.5 + vertex 0.552313 -2.06126 0.5 + vertex 0.517638 -1.93185 1.22465e-16 + endloop + endfacet + facet normal -0.126151 0.958209 0.256751 + outer loop + vertex -3.92005e-16 -2.13397 0.5 + vertex 0.517638 -1.93185 1.22465e-16 + vertex -3.67394e-16 -2 1.22465e-16 + endloop + endfacet + facet normal -0.126151 0.958209 -0.256751 + outer loop + vertex -3.67394e-16 -2 1.22465e-16 + vertex 0.517638 -1.93185 1.22465e-16 + vertex 0.552313 -2.06126 -0.5 + endloop + endfacet + facet normal -0.126151 0.958209 -0.256751 + outer loop + vertex -3.67394e-16 -2 1.22465e-16 + vertex 0.552313 -2.06126 -0.5 + vertex -3.92005e-16 -2.13397 -0.5 + endloop + endfacet + facet normal -0.0926916 0.704063 -0.704063 + outer loop + vertex -3.92005e-16 -2.13397 -0.5 + vertex 0.552313 -2.06126 -0.5 + vertex 0.647048 -2.41481 -0.866025 + endloop + endfacet + facet normal -0.0926916 0.704063 -0.704063 + outer loop + vertex -3.92005e-16 -2.13397 -0.5 + vertex 0.647048 -2.41481 -0.866025 + vertex -4.59243e-16 -2.5 -0.866025 + endloop + endfacet + facet normal -0.0340544 0.258669 -0.965366 + outer loop + vertex -4.59243e-16 -2.5 -0.866025 + vertex 0.647048 -2.41481 -0.866025 + vertex 0.776457 -2.89778 -1 + endloop + endfacet + facet normal -0.0340544 0.258669 -0.965366 + outer loop + vertex -4.59243e-16 -2.5 -0.866025 + vertex 0.776457 -2.89778 -1 + vertex -5.51091e-16 -3 -1 + endloop + endfacet + facet normal 0.0340544 -0.258669 -0.965366 + outer loop + vertex -5.51091e-16 -3 -1 + vertex 0.776457 -2.89778 -1 + vertex 0.905867 -3.38074 -0.866025 + endloop + endfacet + facet normal 0.0340544 -0.258669 -0.965366 + outer loop + vertex -5.51091e-16 -3 -1 + vertex 0.905867 -3.38074 -0.866025 + vertex -6.4294e-16 -3.5 -0.866025 + endloop + endfacet + facet normal 0.0926916 -0.704063 -0.704063 + outer loop + vertex -6.4294e-16 -3.5 -0.866025 + vertex 0.905867 -3.38074 -0.866025 + vertex 1.0006 -3.73429 -0.5 + endloop + endfacet + facet normal 0.0926916 -0.704063 -0.704063 + outer loop + vertex -6.4294e-16 -3.5 -0.866025 + vertex 1.0006 -3.73429 -0.5 + vertex -7.10177e-16 -3.86603 -0.5 + endloop + endfacet + facet normal 0.126151 -0.958209 -0.256751 + outer loop + vertex -7.10177e-16 -3.86603 -0.5 + vertex 1.0006 -3.73429 -0.5 + vertex 1.03528 -3.8637 -2.44929e-16 + endloop + endfacet + facet normal 0.126151 -0.958209 -0.256751 + outer loop + vertex -7.10177e-16 -3.86603 -0.5 + vertex 1.03528 -3.8637 -2.44929e-16 + vertex -7.34788e-16 -4 -2.44929e-16 + endloop + endfacet + facet normal 0.369855 -0.892909 0.256751 + outer loop + vertex 1.03528 -3.8637 0 + vertex 2 -3.4641 0 + vertex 1.93301 -3.34808 0.5 + endloop + endfacet + facet normal 0.369855 -0.892909 0.256751 + outer loop + vertex 1.03528 -3.8637 0 + vertex 1.93301 -3.34808 0.5 + vertex 1.0006 -3.73429 0.5 + endloop + endfacet + facet normal 0.271758 -0.656082 0.704063 + outer loop + vertex 1.0006 -3.73429 0.5 + vertex 1.93301 -3.34808 0.5 + vertex 1.75 -3.03109 0.866025 + endloop + endfacet + facet normal 0.271758 -0.656082 0.704063 + outer loop + vertex 1.0006 -3.73429 0.5 + vertex 1.75 -3.03109 0.866025 + vertex 0.905867 -3.38074 0.866025 + endloop + endfacet + facet normal 0.0998425 -0.241041 0.965366 + outer loop + vertex 0.905867 -3.38074 0.866025 + vertex 1.75 -3.03109 0.866025 + vertex 1.5 -2.59808 1 + endloop + endfacet + facet normal 0.0998425 -0.241041 0.965366 + outer loop + vertex 0.905867 -3.38074 0.866025 + vertex 1.5 -2.59808 1 + vertex 0.776457 -2.89778 1 + endloop + endfacet + facet normal -0.0998425 0.241041 0.965366 + outer loop + vertex 0.776457 -2.89778 1 + vertex 1.5 -2.59808 1 + vertex 1.25 -2.16506 0.866025 + endloop + endfacet + facet normal -0.0998425 0.241041 0.965366 + outer loop + vertex 0.776457 -2.89778 1 + vertex 1.25 -2.16506 0.866025 + vertex 0.647048 -2.41481 0.866025 + endloop + endfacet + facet normal -0.271758 0.656082 0.704063 + outer loop + vertex 0.647048 -2.41481 0.866025 + vertex 1.25 -2.16506 0.866025 + vertex 1.06699 -1.84808 0.5 + endloop + endfacet + facet normal -0.271758 0.656082 0.704063 + outer loop + vertex 0.647048 -2.41481 0.866025 + vertex 1.06699 -1.84808 0.5 + vertex 0.552313 -2.06126 0.5 + endloop + endfacet + facet normal -0.369855 0.892909 0.256751 + outer loop + vertex 0.552313 -2.06126 0.5 + vertex 1.06699 -1.84808 0.5 + vertex 1 -1.73205 1.22465e-16 + endloop + endfacet + facet normal -0.369855 0.892909 0.256751 + outer loop + vertex 0.552313 -2.06126 0.5 + vertex 1 -1.73205 1.22465e-16 + vertex 0.517638 -1.93185 1.22465e-16 + endloop + endfacet + facet normal -0.369855 0.892909 -0.256751 + outer loop + vertex 0.517638 -1.93185 1.22465e-16 + vertex 1 -1.73205 1.22465e-16 + vertex 1.06699 -1.84808 -0.5 + endloop + endfacet + facet normal -0.369855 0.892909 -0.256751 + outer loop + vertex 0.517638 -1.93185 1.22465e-16 + vertex 1.06699 -1.84808 -0.5 + vertex 0.552313 -2.06126 -0.5 + endloop + endfacet + facet normal -0.271758 0.656082 -0.704063 + outer loop + vertex 0.552313 -2.06126 -0.5 + vertex 1.06699 -1.84808 -0.5 + vertex 1.25 -2.16506 -0.866025 + endloop + endfacet + facet normal -0.271758 0.656082 -0.704063 + outer loop + vertex 0.552313 -2.06126 -0.5 + vertex 1.25 -2.16506 -0.866025 + vertex 0.647048 -2.41481 -0.866025 + endloop + endfacet + facet normal -0.0998425 0.241041 -0.965366 + outer loop + vertex 0.647048 -2.41481 -0.866025 + vertex 1.25 -2.16506 -0.866025 + vertex 1.5 -2.59808 -1 + endloop + endfacet + facet normal -0.0998425 0.241041 -0.965366 + outer loop + vertex 0.647048 -2.41481 -0.866025 + vertex 1.5 -2.59808 -1 + vertex 0.776457 -2.89778 -1 + endloop + endfacet + facet normal 0.0998425 -0.241041 -0.965366 + outer loop + vertex 0.776457 -2.89778 -1 + vertex 1.5 -2.59808 -1 + vertex 1.75 -3.03109 -0.866025 + endloop + endfacet + facet normal 0.0998425 -0.241041 -0.965366 + outer loop + vertex 0.776457 -2.89778 -1 + vertex 1.75 -3.03109 -0.866025 + vertex 0.905867 -3.38074 -0.866025 + endloop + endfacet + facet normal 0.271758 -0.656082 -0.704063 + outer loop + vertex 0.905867 -3.38074 -0.866025 + vertex 1.75 -3.03109 -0.866025 + vertex 1.93301 -3.34808 -0.5 + endloop + endfacet + facet normal 0.271758 -0.656082 -0.704063 + outer loop + vertex 0.905867 -3.38074 -0.866025 + vertex 1.93301 -3.34808 -0.5 + vertex 1.0006 -3.73429 -0.5 + endloop + endfacet + facet normal 0.369855 -0.892909 -0.256751 + outer loop + vertex 1.0006 -3.73429 -0.5 + vertex 1.93301 -3.34808 -0.5 + vertex 2 -3.4641 -2.44929e-16 + endloop + endfacet + facet normal 0.369855 -0.892909 -0.256751 + outer loop + vertex 1.0006 -3.73429 -0.5 + vertex 2 -3.4641 -2.44929e-16 + vertex 1.03528 -3.8637 -2.44929e-16 + endloop + endfacet + facet normal 0.588354 -0.766758 0.256751 + outer loop + vertex 2 -3.4641 0 + vertex 2.82843 -2.82843 0 + vertex 2.73369 -2.73369 0.5 + endloop + endfacet + facet normal 0.588354 -0.766758 0.256751 + outer loop + vertex 2 -3.4641 0 + vertex 2.73369 -2.73369 0.5 + vertex 1.93301 -3.34808 0.5 + endloop + endfacet + facet normal 0.432305 -0.56339 0.704063 + outer loop + vertex 1.93301 -3.34808 0.5 + vertex 2.73369 -2.73369 0.5 + vertex 2.47487 -2.47487 0.866025 + endloop + endfacet + facet normal 0.432305 -0.56339 0.704063 + outer loop + vertex 1.93301 -3.34808 0.5 + vertex 2.47487 -2.47487 0.866025 + vertex 1.75 -3.03109 0.866025 + endloop + endfacet + facet normal 0.158826 -0.206987 0.965366 + outer loop + vertex 1.75 -3.03109 0.866025 + vertex 2.47487 -2.47487 0.866025 + vertex 2.12132 -2.12132 1 + endloop + endfacet + facet normal 0.158826 -0.206987 0.965366 + outer loop + vertex 1.75 -3.03109 0.866025 + vertex 2.12132 -2.12132 1 + vertex 1.5 -2.59808 1 + endloop + endfacet + facet normal -0.158826 0.206987 0.965366 + outer loop + vertex 1.5 -2.59808 1 + vertex 2.12132 -2.12132 1 + vertex 1.76777 -1.76777 0.866025 + endloop + endfacet + facet normal -0.158826 0.206987 0.965366 + outer loop + vertex 1.5 -2.59808 1 + vertex 1.76777 -1.76777 0.866025 + vertex 1.25 -2.16506 0.866025 + endloop + endfacet + facet normal -0.432305 0.56339 0.704063 + outer loop + vertex 1.25 -2.16506 0.866025 + vertex 1.76777 -1.76777 0.866025 + vertex 1.50895 -1.50895 0.5 + endloop + endfacet + facet normal -0.432305 0.56339 0.704063 + outer loop + vertex 1.25 -2.16506 0.866025 + vertex 1.50895 -1.50895 0.5 + vertex 1.06699 -1.84808 0.5 + endloop + endfacet + facet normal -0.588354 0.766758 0.256751 + outer loop + vertex 1.06699 -1.84808 0.5 + vertex 1.50895 -1.50895 0.5 + vertex 1.41421 -1.41421 1.22465e-16 + endloop + endfacet + facet normal -0.588354 0.766758 0.256751 + outer loop + vertex 1.06699 -1.84808 0.5 + vertex 1.41421 -1.41421 1.22465e-16 + vertex 1 -1.73205 1.22465e-16 + endloop + endfacet + facet normal -0.588354 0.766758 -0.256751 + outer loop + vertex 1 -1.73205 1.22465e-16 + vertex 1.41421 -1.41421 1.22465e-16 + vertex 1.50895 -1.50895 -0.5 + endloop + endfacet + facet normal -0.588354 0.766758 -0.256751 + outer loop + vertex 1 -1.73205 1.22465e-16 + vertex 1.50895 -1.50895 -0.5 + vertex 1.06699 -1.84808 -0.5 + endloop + endfacet + facet normal -0.432305 0.56339 -0.704063 + outer loop + vertex 1.06699 -1.84808 -0.5 + vertex 1.50895 -1.50895 -0.5 + vertex 1.76777 -1.76777 -0.866025 + endloop + endfacet + facet normal -0.432305 0.56339 -0.704063 + outer loop + vertex 1.06699 -1.84808 -0.5 + vertex 1.76777 -1.76777 -0.866025 + vertex 1.25 -2.16506 -0.866025 + endloop + endfacet + facet normal -0.158826 0.206987 -0.965366 + outer loop + vertex 1.25 -2.16506 -0.866025 + vertex 1.76777 -1.76777 -0.866025 + vertex 2.12132 -2.12132 -1 + endloop + endfacet + facet normal -0.158826 0.206987 -0.965366 + outer loop + vertex 1.25 -2.16506 -0.866025 + vertex 2.12132 -2.12132 -1 + vertex 1.5 -2.59808 -1 + endloop + endfacet + facet normal 0.158826 -0.206987 -0.965366 + outer loop + vertex 1.5 -2.59808 -1 + vertex 2.12132 -2.12132 -1 + vertex 2.47487 -2.47487 -0.866025 + endloop + endfacet + facet normal 0.158826 -0.206987 -0.965366 + outer loop + vertex 1.5 -2.59808 -1 + vertex 2.47487 -2.47487 -0.866025 + vertex 1.75 -3.03109 -0.866025 + endloop + endfacet + facet normal 0.432305 -0.56339 -0.704063 + outer loop + vertex 1.75 -3.03109 -0.866025 + vertex 2.47487 -2.47487 -0.866025 + vertex 2.73369 -2.73369 -0.5 + endloop + endfacet + facet normal 0.432305 -0.56339 -0.704063 + outer loop + vertex 1.75 -3.03109 -0.866025 + vertex 2.73369 -2.73369 -0.5 + vertex 1.93301 -3.34808 -0.5 + endloop + endfacet + facet normal 0.588354 -0.766758 -0.256751 + outer loop + vertex 1.93301 -3.34808 -0.5 + vertex 2.73369 -2.73369 -0.5 + vertex 2.82843 -2.82843 -2.44929e-16 + endloop + endfacet + facet normal 0.588354 -0.766758 -0.256751 + outer loop + vertex 1.93301 -3.34808 -0.5 + vertex 2.82843 -2.82843 -2.44929e-16 + vertex 2 -3.4641 -2.44929e-16 + endloop + endfacet + facet normal 0.766758 -0.588354 0.256751 + outer loop + vertex 2.82843 -2.82843 0 + vertex 3.4641 -2 0 + vertex 3.34808 -1.93301 0.5 + endloop + endfacet + facet normal 0.766758 -0.588354 0.256751 + outer loop + vertex 2.82843 -2.82843 0 + vertex 3.34808 -1.93301 0.5 + vertex 2.73369 -2.73369 0.5 + endloop + endfacet + facet normal 0.56339 -0.432305 0.704063 + outer loop + vertex 2.73369 -2.73369 0.5 + vertex 3.34808 -1.93301 0.5 + vertex 3.03109 -1.75 0.866025 + endloop + endfacet + facet normal 0.56339 -0.432305 0.704063 + outer loop + vertex 2.73369 -2.73369 0.5 + vertex 3.03109 -1.75 0.866025 + vertex 2.47487 -2.47487 0.866025 + endloop + endfacet + facet normal 0.206987 -0.158826 0.965366 + outer loop + vertex 2.47487 -2.47487 0.866025 + vertex 3.03109 -1.75 0.866025 + vertex 2.59808 -1.5 1 + endloop + endfacet + facet normal 0.206987 -0.158826 0.965366 + outer loop + vertex 2.47487 -2.47487 0.866025 + vertex 2.59808 -1.5 1 + vertex 2.12132 -2.12132 1 + endloop + endfacet + facet normal -0.206987 0.158826 0.965366 + outer loop + vertex 2.12132 -2.12132 1 + vertex 2.59808 -1.5 1 + vertex 2.16506 -1.25 0.866025 + endloop + endfacet + facet normal -0.206987 0.158826 0.965366 + outer loop + vertex 2.12132 -2.12132 1 + vertex 2.16506 -1.25 0.866025 + vertex 1.76777 -1.76777 0.866025 + endloop + endfacet + facet normal -0.56339 0.432305 0.704063 + outer loop + vertex 1.76777 -1.76777 0.866025 + vertex 2.16506 -1.25 0.866025 + vertex 1.84808 -1.06699 0.5 + endloop + endfacet + facet normal -0.56339 0.432305 0.704063 + outer loop + vertex 1.76777 -1.76777 0.866025 + vertex 1.84808 -1.06699 0.5 + vertex 1.50895 -1.50895 0.5 + endloop + endfacet + facet normal -0.766758 0.588354 0.256751 + outer loop + vertex 1.50895 -1.50895 0.5 + vertex 1.84808 -1.06699 0.5 + vertex 1.73205 -1 1.22465e-16 + endloop + endfacet + facet normal -0.766758 0.588354 0.256751 + outer loop + vertex 1.50895 -1.50895 0.5 + vertex 1.73205 -1 1.22465e-16 + vertex 1.41421 -1.41421 1.22465e-16 + endloop + endfacet + facet normal -0.766758 0.588354 -0.256751 + outer loop + vertex 1.41421 -1.41421 1.22465e-16 + vertex 1.73205 -1 1.22465e-16 + vertex 1.84808 -1.06699 -0.5 + endloop + endfacet + facet normal -0.766758 0.588354 -0.256751 + outer loop + vertex 1.41421 -1.41421 1.22465e-16 + vertex 1.84808 -1.06699 -0.5 + vertex 1.50895 -1.50895 -0.5 + endloop + endfacet + facet normal -0.56339 0.432305 -0.704063 + outer loop + vertex 1.50895 -1.50895 -0.5 + vertex 1.84808 -1.06699 -0.5 + vertex 2.16506 -1.25 -0.866025 + endloop + endfacet + facet normal -0.56339 0.432305 -0.704063 + outer loop + vertex 1.50895 -1.50895 -0.5 + vertex 2.16506 -1.25 -0.866025 + vertex 1.76777 -1.76777 -0.866025 + endloop + endfacet + facet normal -0.206987 0.158826 -0.965366 + outer loop + vertex 1.76777 -1.76777 -0.866025 + vertex 2.16506 -1.25 -0.866025 + vertex 2.59808 -1.5 -1 + endloop + endfacet + facet normal -0.206987 0.158826 -0.965366 + outer loop + vertex 1.76777 -1.76777 -0.866025 + vertex 2.59808 -1.5 -1 + vertex 2.12132 -2.12132 -1 + endloop + endfacet + facet normal 0.206987 -0.158826 -0.965366 + outer loop + vertex 2.12132 -2.12132 -1 + vertex 2.59808 -1.5 -1 + vertex 3.03109 -1.75 -0.866025 + endloop + endfacet + facet normal 0.206987 -0.158826 -0.965366 + outer loop + vertex 2.12132 -2.12132 -1 + vertex 3.03109 -1.75 -0.866025 + vertex 2.47487 -2.47487 -0.866025 + endloop + endfacet + facet normal 0.56339 -0.432305 -0.704063 + outer loop + vertex 2.47487 -2.47487 -0.866025 + vertex 3.03109 -1.75 -0.866025 + vertex 3.34808 -1.93301 -0.5 + endloop + endfacet + facet normal 0.56339 -0.432305 -0.704063 + outer loop + vertex 2.47487 -2.47487 -0.866025 + vertex 3.34808 -1.93301 -0.5 + vertex 2.73369 -2.73369 -0.5 + endloop + endfacet + facet normal 0.766758 -0.588354 -0.256751 + outer loop + vertex 2.73369 -2.73369 -0.5 + vertex 3.34808 -1.93301 -0.5 + vertex 3.4641 -2 -2.44929e-16 + endloop + endfacet + facet normal 0.766758 -0.588354 -0.256751 + outer loop + vertex 2.73369 -2.73369 -0.5 + vertex 3.4641 -2 -2.44929e-16 + vertex 2.82843 -2.82843 -2.44929e-16 + endloop + endfacet + facet normal 0.892909 -0.369855 0.256751 + outer loop + vertex 3.4641 -2 0 + vertex 3.8637 -1.03528 0 + vertex 3.73429 -1.0006 0.5 + endloop + endfacet + facet normal 0.892909 -0.369855 0.256751 + outer loop + vertex 3.4641 -2 0 + vertex 3.73429 -1.0006 0.5 + vertex 3.34808 -1.93301 0.5 + endloop + endfacet + facet normal 0.656082 -0.271758 0.704063 + outer loop + vertex 3.34808 -1.93301 0.5 + vertex 3.73429 -1.0006 0.5 + vertex 3.38074 -0.905867 0.866025 + endloop + endfacet + facet normal 0.656082 -0.271758 0.704063 + outer loop + vertex 3.34808 -1.93301 0.5 + vertex 3.38074 -0.905867 0.866025 + vertex 3.03109 -1.75 0.866025 + endloop + endfacet + facet normal 0.241041 -0.0998425 0.965366 + outer loop + vertex 3.03109 -1.75 0.866025 + vertex 3.38074 -0.905867 0.866025 + vertex 2.89778 -0.776457 1 + endloop + endfacet + facet normal 0.241041 -0.0998425 0.965366 + outer loop + vertex 3.03109 -1.75 0.866025 + vertex 2.89778 -0.776457 1 + vertex 2.59808 -1.5 1 + endloop + endfacet + facet normal -0.241041 0.0998425 0.965366 + outer loop + vertex 2.59808 -1.5 1 + vertex 2.89778 -0.776457 1 + vertex 2.41481 -0.647048 0.866025 + endloop + endfacet + facet normal -0.241041 0.0998425 0.965366 + outer loop + vertex 2.59808 -1.5 1 + vertex 2.41481 -0.647048 0.866025 + vertex 2.16506 -1.25 0.866025 + endloop + endfacet + facet normal -0.656082 0.271758 0.704063 + outer loop + vertex 2.16506 -1.25 0.866025 + vertex 2.41481 -0.647048 0.866025 + vertex 2.06126 -0.552313 0.5 + endloop + endfacet + facet normal -0.656082 0.271758 0.704063 + outer loop + vertex 2.16506 -1.25 0.866025 + vertex 2.06126 -0.552313 0.5 + vertex 1.84808 -1.06699 0.5 + endloop + endfacet + facet normal -0.892909 0.369855 0.256751 + outer loop + vertex 1.84808 -1.06699 0.5 + vertex 2.06126 -0.552313 0.5 + vertex 1.93185 -0.517638 1.22465e-16 + endloop + endfacet + facet normal -0.892909 0.369855 0.256751 + outer loop + vertex 1.84808 -1.06699 0.5 + vertex 1.93185 -0.517638 1.22465e-16 + vertex 1.73205 -1 1.22465e-16 + endloop + endfacet + facet normal -0.892909 0.369855 -0.256751 + outer loop + vertex 1.73205 -1 1.22465e-16 + vertex 1.93185 -0.517638 1.22465e-16 + vertex 2.06126 -0.552313 -0.5 + endloop + endfacet + facet normal -0.892909 0.369855 -0.256751 + outer loop + vertex 1.73205 -1 1.22465e-16 + vertex 2.06126 -0.552313 -0.5 + vertex 1.84808 -1.06699 -0.5 + endloop + endfacet + facet normal -0.656082 0.271758 -0.704063 + outer loop + vertex 1.84808 -1.06699 -0.5 + vertex 2.06126 -0.552313 -0.5 + vertex 2.41481 -0.647048 -0.866025 + endloop + endfacet + facet normal -0.656082 0.271758 -0.704063 + outer loop + vertex 1.84808 -1.06699 -0.5 + vertex 2.41481 -0.647048 -0.866025 + vertex 2.16506 -1.25 -0.866025 + endloop + endfacet + facet normal -0.241041 0.0998425 -0.965366 + outer loop + vertex 2.16506 -1.25 -0.866025 + vertex 2.41481 -0.647048 -0.866025 + vertex 2.89778 -0.776457 -1 + endloop + endfacet + facet normal -0.241041 0.0998425 -0.965366 + outer loop + vertex 2.16506 -1.25 -0.866025 + vertex 2.89778 -0.776457 -1 + vertex 2.59808 -1.5 -1 + endloop + endfacet + facet normal 0.241041 -0.0998425 -0.965366 + outer loop + vertex 2.59808 -1.5 -1 + vertex 2.89778 -0.776457 -1 + vertex 3.38074 -0.905867 -0.866025 + endloop + endfacet + facet normal 0.241041 -0.0998425 -0.965366 + outer loop + vertex 2.59808 -1.5 -1 + vertex 3.38074 -0.905867 -0.866025 + vertex 3.03109 -1.75 -0.866025 + endloop + endfacet + facet normal 0.656082 -0.271758 -0.704063 + outer loop + vertex 3.03109 -1.75 -0.866025 + vertex 3.38074 -0.905867 -0.866025 + vertex 3.73429 -1.0006 -0.5 + endloop + endfacet + facet normal 0.656082 -0.271758 -0.704063 + outer loop + vertex 3.03109 -1.75 -0.866025 + vertex 3.73429 -1.0006 -0.5 + vertex 3.34808 -1.93301 -0.5 + endloop + endfacet + facet normal 0.892909 -0.369855 -0.256751 + outer loop + vertex 3.34808 -1.93301 -0.5 + vertex 3.73429 -1.0006 -0.5 + vertex 3.8637 -1.03528 -2.44929e-16 + endloop + endfacet + facet normal 0.892909 -0.369855 -0.256751 + outer loop + vertex 3.34808 -1.93301 -0.5 + vertex 3.8637 -1.03528 -2.44929e-16 + vertex 3.4641 -2 -2.44929e-16 + endloop + endfacet + facet normal 0.958209 -0.126151 0.256751 + outer loop + vertex 3.8637 -1.03528 0 + vertex 4 -9.79717e-16 0 + vertex 3.86603 -9.46903e-16 0.5 + endloop + endfacet + facet normal 0.958209 -0.126151 0.256751 + outer loop + vertex 3.8637 -1.03528 0 + vertex 3.86603 -9.46903e-16 0.5 + vertex 3.73429 -1.0006 0.5 + endloop + endfacet + facet normal 0.704063 -0.0926916 0.704063 + outer loop + vertex 3.73429 -1.0006 0.5 + vertex 3.86603 -9.46903e-16 0.5 + vertex 3.5 -8.57253e-16 0.866025 + endloop + endfacet + facet normal 0.704063 -0.0926916 0.704063 + outer loop + vertex 3.73429 -1.0006 0.5 + vertex 3.5 -8.57253e-16 0.866025 + vertex 3.38074 -0.905867 0.866025 + endloop + endfacet + facet normal 0.258669 -0.0340544 0.965366 + outer loop + vertex 3.38074 -0.905867 0.866025 + vertex 3.5 -8.57253e-16 0.866025 + vertex 3 -7.34788e-16 1 + endloop + endfacet + facet normal 0.258669 -0.0340544 0.965366 + outer loop + vertex 3.38074 -0.905867 0.866025 + vertex 3 -7.34788e-16 1 + vertex 2.89778 -0.776457 1 + endloop + endfacet + facet normal -0.258669 0.0340544 0.965366 + outer loop + vertex 2.89778 -0.776457 1 + vertex 3 -7.34788e-16 1 + vertex 2.5 -6.12323e-16 0.866025 + endloop + endfacet + facet normal -0.258669 0.0340544 0.965366 + outer loop + vertex 2.89778 -0.776457 1 + vertex 2.5 -6.12323e-16 0.866025 + vertex 2.41481 -0.647048 0.866025 + endloop + endfacet + facet normal -0.704063 0.0926916 0.704063 + outer loop + vertex 2.41481 -0.647048 0.866025 + vertex 2.5 -6.12323e-16 0.866025 + vertex 2.13397 -5.22673e-16 0.5 + endloop + endfacet + facet normal -0.704063 0.0926916 0.704063 + outer loop + vertex 2.41481 -0.647048 0.866025 + vertex 2.13397 -5.22673e-16 0.5 + vertex 2.06126 -0.552313 0.5 + endloop + endfacet + facet normal -0.958209 0.126151 0.256751 + outer loop + vertex 2.06126 -0.552313 0.5 + vertex 2.13397 -5.22673e-16 0.5 + vertex 2 -4.89859e-16 1.22465e-16 + endloop + endfacet + facet normal -0.958209 0.126151 0.256751 + outer loop + vertex 2.06126 -0.552313 0.5 + vertex 2 -4.89859e-16 1.22465e-16 + vertex 1.93185 -0.517638 1.22465e-16 + endloop + endfacet + facet normal -0.958209 0.126151 -0.256751 + outer loop + vertex 1.93185 -0.517638 1.22465e-16 + vertex 2 -4.89859e-16 1.22465e-16 + vertex 2.13397 -5.22673e-16 -0.5 + endloop + endfacet + facet normal -0.958209 0.126151 -0.256751 + outer loop + vertex 1.93185 -0.517638 1.22465e-16 + vertex 2.13397 -5.22673e-16 -0.5 + vertex 2.06126 -0.552313 -0.5 + endloop + endfacet + facet normal -0.704063 0.0926916 -0.704063 + outer loop + vertex 2.06126 -0.552313 -0.5 + vertex 2.13397 -5.22673e-16 -0.5 + vertex 2.5 -6.12323e-16 -0.866025 + endloop + endfacet + facet normal -0.704063 0.0926916 -0.704063 + outer loop + vertex 2.06126 -0.552313 -0.5 + vertex 2.5 -6.12323e-16 -0.866025 + vertex 2.41481 -0.647048 -0.866025 + endloop + endfacet + facet normal -0.258669 0.0340544 -0.965366 + outer loop + vertex 2.41481 -0.647048 -0.866025 + vertex 2.5 -6.12323e-16 -0.866025 + vertex 3 -7.34788e-16 -1 + endloop + endfacet + facet normal -0.258669 0.0340544 -0.965366 + outer loop + vertex 2.41481 -0.647048 -0.866025 + vertex 3 -7.34788e-16 -1 + vertex 2.89778 -0.776457 -1 + endloop + endfacet + facet normal 0.258669 -0.0340544 -0.965366 + outer loop + vertex 2.89778 -0.776457 -1 + vertex 3 -7.34788e-16 -1 + vertex 3.5 -8.57253e-16 -0.866025 + endloop + endfacet + facet normal 0.258669 -0.0340544 -0.965366 + outer loop + vertex 2.89778 -0.776457 -1 + vertex 3.5 -8.57253e-16 -0.866025 + vertex 3.38074 -0.905867 -0.866025 + endloop + endfacet + facet normal 0.704063 -0.0926916 -0.704063 + outer loop + vertex 3.38074 -0.905867 -0.866025 + vertex 3.5 -8.57253e-16 -0.866025 + vertex 3.86603 -9.46903e-16 -0.5 + endloop + endfacet + facet normal 0.704063 -0.0926916 -0.704063 + outer loop + vertex 3.38074 -0.905867 -0.866025 + vertex 3.86603 -9.46903e-16 -0.5 + vertex 3.73429 -1.0006 -0.5 + endloop + endfacet + facet normal 0.958209 -0.126151 -0.256751 + outer loop + vertex 3.73429 -1.0006 -0.5 + vertex 3.86603 -9.46903e-16 -0.5 + vertex 4 -9.79717e-16 -2.44929e-16 + endloop + endfacet + facet normal 0.958209 -0.126151 -0.256751 + outer loop + vertex 3.73429 -1.0006 -0.5 + vertex 4 -9.79717e-16 -2.44929e-16 + vertex 3.8637 -1.03528 -2.44929e-16 + endloop + endfacet +endsolid torus diff --git a/examples/region_mesh/in.region_mesh b/examples/region_mesh/in.region_mesh new file mode 100644 index 000000000..89bae0d60 --- /dev/null +++ b/examples/region_mesh/in.region_mesh @@ -0,0 +1,44 @@ +################################################################################ +# thermal gas filling the volume enclosed by a triangulated surface mesh +# +# the mesh is a torus, read from an STL file by the region mesh style, +# which is a shape none of the analytic region styles can describe +# +# Note: +# - The "comm/sort" option to the "global" command is used to match MPI runs. +# - The "twopass" option is used to match Kokkos runs. +# The "comm/sort" and "twopass" options should not be used for production runs. +################################################################################ + +seed 12345 +dimension 3 +global gridcut 0.0 comm/sort yes + +boundary rr rr rr + +create_box -5 5 -5 5 -5 5 +create_grid 20 20 20 + +balance_grid rcb cell + +species air.species N O +mixture air N O vstream 0.0 0.0 0.0 temp 300.0 + +global nrho 1.0e20 +global fnum 1.0e17 + +# the torus in the file has a major radius of 3 and a minor radius of 1 +# and is centered on the origin with its axis along z + +region tor mesh data.torus.stl + +create_particles air n 0 region tor twopass + +stats 20 +compute temp temp +stats_style step cpu np nattempt ncoll c_temp + +collide vss air air.vss + +timestep 1.0e-5 +run 100 diff --git a/examples/region_mesh/in.region_mesh.2d b/examples/region_mesh/in.region_mesh.2d new file mode 100644 index 000000000..1cf80f947 --- /dev/null +++ b/examples/region_mesh/in.region_mesh.2d @@ -0,0 +1,44 @@ +################################################################################ +# thermal gas filling the area enclosed by a 2d surface mesh +# +# the mesh is an annulus, read from a file in the same format read_surf +# reads, so a ray cast from a point in the gas crosses both of its loops +# +# Note: +# - The "comm/sort" option to the "global" command is used to match MPI runs. +# - The "twopass" option is used to match Kokkos runs. +# The "comm/sort" and "twopass" options should not be used for production runs. +################################################################################ + +seed 12345 +dimension 2 +global gridcut 0.0 comm/sort yes + +boundary rr rr p + +create_box -5 5 -5 5 -0.5 0.5 +create_grid 40 40 1 + +balance_grid rcb cell + +species air.species N O +mixture air N O vstream 0.0 0.0 0.0 temp 300.0 + +global nrho 1.0e20 +global fnum 1.0e17 + +# the annulus in the file has an outer radius of 4 and an inner radius of 2 +# and is centered on the origin + +region ann mesh data.annulus + +create_particles air n 0 region ann twopass + +stats 20 +compute temp temp +stats_style step cpu np nattempt ncoll c_temp + +collide vss air air.vss + +timestep 1.0e-5 +run 100 diff --git a/examples/region_mesh/log.27Aug26.mpi_1.region_mesh b/examples/region_mesh/log.27Aug26.mpi_1.region_mesh new file mode 100644 index 000000000..246328170 --- /dev/null +++ b/examples/region_mesh/log.27Aug26.mpi_1.region_mesh @@ -0,0 +1,122 @@ +SPARTA (24 Sep 2025) +Running on 1 MPI task(s) +################################################################################ +# thermal gas filling the volume enclosed by a triangulated surface mesh +# +# the mesh is a torus, read from an STL file by the region mesh style, +# which is a shape none of the analytic region styles can describe +# +# Note: +# - The "comm/sort" option to the "global" command is used to match MPI runs. +# - The "twopass" option is used to match Kokkos runs. +# The "comm/sort" and "twopass" options should not be used for production runs. +################################################################################ + +seed 12345 +dimension 3 +global gridcut 0.0 comm/sort yes + +boundary rr rr rr + +create_box -5 5 -5 5 -5 5 +Created orthogonal box = (-5 -5 -5) to (5 5 5) +create_grid 20 20 20 +Created 8000 child grid cells + CPU time = 0.00188663 secs + create/ghost percent = 44.943 55.057 + +balance_grid rcb cell +Balance grid migrated 0 cells + CPU time = 0.00122457 secs + reassign/sort/migrate/ghost percent = 41.7409 3.72498 9.41123 45.1229 + +species air.species N O +mixture air N O vstream 0.0 0.0 0.0 temp 300.0 + +global nrho 1.0e20 +global fnum 1.0e17 + +# the torus in the file has a major radius of 3 and a minor radius of 1 +# and is centered on the origin with its axis along z + +region tor mesh data.torus.stl +Reading STL object torus with 576 triangles from file data.torus.stl + -4 -4 -1 to 4 4 1 mesh bounding box + 55.9049 enclosed mesh volume + +create_particles air n 0 region tor twopass +Created 55854 particles + CPU time = 0.0395966 secs + +stats 20 +compute temp temp +stats_style step cpu np nattempt ncoll c_temp + +collide vss air air.vss + +timestep 1.0e-5 +run 100 +Memory usage per proc in Mbytes: + particles (ave,min,max) = 6.25 6.25 6.25 + grid (ave,min,max) = 1.51379 1.51379 1.51379 + surf (ave,min,max) = 0 0 0 + modify (ave,min,max) = 0 0 0 + total (ave,min,max) = 7.76379 7.76379 7.76379 +Step CPU Np Natt Ncoll c_temp + 0 0 55854 0 0 299.39732 + 20 0.0523511 55854 8447 5725 299.39732 + 40 0.098892916 55854 8101 5481 299.39732 + 60 0.13834398 55854 7469 4918 299.39732 + 80 0.17101096 55854 6738 4337 299.39732 + 100 0.20099609 55854 5985 3839 299.39732 +Loop time of 0.201027 on 1 procs for 100 steps with 55854 particles +Performance: 497.445 timesteps/s, 27.784 Mparticle-step/s + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Move | 0.044279 | 0.044279 | 0.044279 | 0.0 | 22.03 +Coll | 0.13465 | 0.13465 | 0.13465 | 0.0 | 66.98 +Sort | 0.02067 | 0.02067 | 0.02067 | 0.0 | 10.28 +Comm | 9.7879e-05 | 9.7879e-05 | 9.7879e-05 | 0.0 | 0.05 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0.0011631 | 0.0011631 | 0.0011631 | 0.0 | 0.58 +MPI Sync| 0.00015136 | 0.00015136 | 0.00015136 | 0.0 | 0.08 +Other | | 1.971e-05 | | | 0.01 + +Particle moves = 5585400 (5.59M) +Cells touched = 5682200 (5.68M) +Particle comms = 0 (0K) +Boundary collides = 0 (0K) +Boundary exits = 0 (0K) +SurfColl checks = 0 (0K) +SurfColl occurs = 0 (0K) +Surf reactions = 0 (0K) +Collide attempts = 757351 (0.757M) +Collide occurs = 505027 (0.505M) +Reactions = 0 (0K) +Particles stuck = 0 +Axisymm bad moves = 0 + +Particle-moves/CPUsec/proc: 2.77843e+07 +Particle-moves/step: 55854 +Cell-touches/particle/step: 1.01733 +Particle comm iterations/step: 1 +Particle fraction communicated: 0 +Particle fraction colliding with boundary: 0 +Particle fraction exiting boundary: 0 +Surface-checks/particle/step: 0 +Surface-collisions/particle/step: 0 +Surf-reactions/particle/step: 0 +Collision-attempts/particle/step: 0.135595 +Collisions/particle/step: 0.0904191 +Reactions/particle/step: 0 + +Particles: 55854 ave 55854 max 55854 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Cells: 8000 ave 8000 max 8000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +GhostCell: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +EmptyCell: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/region_mesh/log.27Aug26.mpi_1.region_mesh.2d b/examples/region_mesh/log.27Aug26.mpi_1.region_mesh.2d new file mode 100644 index 000000000..4e995016e --- /dev/null +++ b/examples/region_mesh/log.27Aug26.mpi_1.region_mesh.2d @@ -0,0 +1,122 @@ +SPARTA (24 Sep 2025) +Running on 1 MPI task(s) +################################################################################ +# thermal gas filling the area enclosed by a 2d surface mesh +# +# the mesh is an annulus, read from a file in the same format read_surf +# reads, so a ray cast from a point in the gas crosses both of its loops +# +# Note: +# - The "comm/sort" option to the "global" command is used to match MPI runs. +# - The "twopass" option is used to match Kokkos runs. +# The "comm/sort" and "twopass" options should not be used for production runs. +################################################################################ + +seed 12345 +dimension 2 +global gridcut 0.0 comm/sort yes + +boundary rr rr p + +create_box -5 5 -5 5 -0.5 0.5 +Created orthogonal box = (-5 -5 -0.5) to (5 5 0.5) +create_grid 40 40 1 +Created 1600 child grid cells + CPU time = 0.000863477 secs + create/ghost percent = 79.1457 20.8543 + +balance_grid rcb cell +Balance grid migrated 0 cells + CPU time = 0.000254395 secs + reassign/sort/migrate/ghost percent = 51.31 0.952456 7.77177 39.9658 + +species air.species N O +mixture air N O vstream 0.0 0.0 0.0 temp 300.0 + +global nrho 1.0e20 +global fnum 1.0e17 + +# the annulus in the file has an outer radius of 4 and an inner radius of 2 +# and is centered on the origin + +region ann mesh data.annulus +Reading 96 lines from surf file data.annulus + -4 -4 0 to 4 4 0 mesh bounding box + 37.699 enclosed mesh area + +create_particles air n 0 region ann twopass +Created 37647 particles + CPU time = 0.00909305 secs + +stats 20 +compute temp temp +stats_style step cpu np nattempt ncoll c_temp + +collide vss air air.vss + +timestep 1.0e-5 +run 100 +Memory usage per proc in Mbytes: + particles (ave,min,max) = 4.6875 4.6875 4.6875 + grid (ave,min,max) = 1.51379 1.51379 1.51379 + surf (ave,min,max) = 0 0 0 + modify (ave,min,max) = 0 0 0 + total (ave,min,max) = 6.20129 6.20129 6.20129 +Step CPU Np Natt Ncoll c_temp + 0 0 37647 0 0 298.58341 + 20 0.021459459 37647 6375 4473 298.58341 + 40 0.056167176 37647 6291 4258 298.58341 + 60 0.078458566 37647 6069 4076 298.58341 + 80 0.1005359 37647 5802 3840 298.58341 + 100 0.12196574 37647 5481 3607 298.58341 +Loop time of 0.121991 on 1 procs for 100 steps with 37647 particles +Performance: 819.734 timesteps/s, 30.861 Mparticle-step/s + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Move | 0.02247 | 0.02247 | 0.02247 | 0.0 | 18.42 +Coll | 0.085601 | 0.085601 | 0.085601 | 0.0 | 70.17 +Sort | 0.0090205 | 0.0090205 | 0.0090205 | 0.0 | 7.39 +Comm | 6.9983e-05 | 6.9983e-05 | 6.9983e-05 | 0.0 | 0.06 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0.0047351 | 0.0047351 | 0.0047351 | 0.0 | 3.88 +MPI Sync| 7.9022e-05 | 7.9022e-05 | 7.9022e-05 | 0.0 | 0.06 +Other | | 1.556e-05 | | | 0.01 + +Particle moves = 3764700 (3.76M) +Cells touched = 3860633 (3.86M) +Particle comms = 0 (0K) +Boundary collides = 9 (0.009K) +Boundary exits = 0 (0K) +SurfColl checks = 0 (0K) +SurfColl occurs = 0 (0K) +Surf reactions = 0 (0K) +Collide attempts = 607009 (0.607M) +Collide occurs = 412535 (0.413M) +Reactions = 0 (0K) +Particles stuck = 0 +Axisymm bad moves = 0 + +Particle-moves/CPUsec/proc: 3.08605e+07 +Particle-moves/step: 37647 +Cell-touches/particle/step: 1.02548 +Particle comm iterations/step: 1 +Particle fraction communicated: 0 +Particle fraction colliding with boundary: 2.39063e-06 +Particle fraction exiting boundary: 0 +Surface-checks/particle/step: 0 +Surface-collisions/particle/step: 0 +Surf-reactions/particle/step: 0 +Collision-attempts/particle/step: 0.161237 +Collisions/particle/step: 0.10958 +Reactions/particle/step: 0 + +Particles: 37647 ave 37647 max 37647 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Cells: 1600 ave 1600 max 1600 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +GhostCell: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +EmptyCell: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/region_mesh/log.27Aug26.mpi_4.region_mesh b/examples/region_mesh/log.27Aug26.mpi_4.region_mesh new file mode 100644 index 000000000..311d8571b --- /dev/null +++ b/examples/region_mesh/log.27Aug26.mpi_4.region_mesh @@ -0,0 +1,123 @@ +SPARTA (24 Sep 2025) +Running on 4 MPI task(s) +################################################################################ +# thermal gas filling the volume enclosed by a triangulated surface mesh +# +# the mesh is a torus, read from an STL file by the region mesh style, +# which is a shape none of the analytic region styles can describe +# +# Note: +# - The "comm/sort" option to the "global" command is used to match MPI runs. +# - The "twopass" option is used to match Kokkos runs. +# The "comm/sort" and "twopass" options should not be used for production runs. +################################################################################ + +seed 12345 +dimension 3 +global gridcut 0.0 comm/sort yes + +boundary rr rr rr + +create_box -5 5 -5 5 -5 5 +Created orthogonal box = (-5 -5 -5) to (5 5 5) +create_grid 20 20 20 +WARNING: Could not acquire nearby ghost cells b/c grid partition is not clumped (../grid.cpp:486) +Created 8000 child grid cells + CPU time = 0.0399973 secs + create/ghost percent = 20.0147 79.9853 + +balance_grid rcb cell +Balance grid migrated 5600 cells + CPU time = 0.299996 secs + reassign/sort/migrate/ghost percent = 49.3344 2.66504 13.3774 34.6232 + +species air.species N O +mixture air N O vstream 0.0 0.0 0.0 temp 300.0 + +global nrho 1.0e20 +global fnum 1.0e17 + +# the torus in the file has a major radius of 3 and a minor radius of 1 +# and is centered on the origin with its axis along z + +region tor mesh data.torus.stl +Reading STL object torus with 576 triangles from file data.torus.stl + -4 -4 -1 to 4 4 1 mesh bounding box + 55.9049 enclosed mesh volume + +create_particles air n 0 region tor twopass +Created 56099 particles + CPU time = 0.0337464 secs + +stats 20 +compute temp temp +stats_style step cpu np nattempt ncoll c_temp + +collide vss air air.vss + +timestep 1.0e-5 +run 100 +Memory usage per proc in Mbytes: + particles (ave,min,max) = 1.5625 1.5625 1.5625 + grid (ave,min,max) = 1.51379 1.51379 1.51379 + surf (ave,min,max) = 0 0 0 + modify (ave,min,max) = 0 0 0 + total (ave,min,max) = 3.07629 3.07629 3.07629 +Step CPU Np Natt Ncoll c_temp + 0 0 56099 0 0 298.92493 + 20 0.9640167 56099 8453 5796 298.92493 + 40 1.8520067 56099 8089 5414 298.92493 + 60 2.7880367 56099 7458 4838 298.92493 + 80 3.8134074 56099 6749 4404 298.92493 + 100 4.7640505 56099 5991 3873 298.92493 +Loop time of 4.779 on 4 procs for 100 steps with 56099 particles +Performance: 20.925 timesteps/s, 1.174 Mparticle-step/s + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Move | 0.010177 | 0.010261 | 0.010431 | 0.1 | 0.21 +Coll | 0.027048 | 0.027708 | 0.028343 | 0.3 | 0.58 +Sort | 0.0075804 | 0.0083599 | 0.010366 | 1.3 | 0.17 +Comm | 3.4012 | 3.5247 | 3.6188 | 4.8 | 73.75 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0.11893 | 0.12648 | 0.13431 | 1.7 | 2.65 +MPI Sync| 0.99722 | 1.0814 | 1.2078 | 8.5 | 22.63 +Other | | 2.098e-05 | | | 0.00 + +Particle moves = 5609900 (5.61M) +Cells touched = 5707445 (5.71M) +Particle comms = 3853 (3.85K) +Boundary collides = 3 (0.003K) +Boundary exits = 0 (0K) +SurfColl checks = 0 (0K) +SurfColl occurs = 0 (0K) +Surf reactions = 0 (0K) +Collide attempts = 756950 (0.757M) +Collide occurs = 506143 (0.506M) +Reactions = 0 (0K) +Particles stuck = 0 +Axisymm bad moves = 0 + +Particle-moves/CPUsec/proc: 293466 +Particle-moves/step: 56099 +Cell-touches/particle/step: 1.01739 +Particle comm iterations/step: 2 +Particle fraction communicated: 0.000686822 +Particle fraction colliding with boundary: 5.34769e-07 +Particle fraction exiting boundary: 0 +Surface-checks/particle/step: 0 +Surface-collisions/particle/step: 0 +Surf-reactions/particle/step: 0 +Collision-attempts/particle/step: 0.134931 +Collisions/particle/step: 0.0902232 +Reactions/particle/step: 0 + +Particles: 14024.8 ave 14058 max 13982 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Cells: 2000 ave 2000 max 2000 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +GhostCell: 420 ave 420 max 420 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +EmptyCell: 420 ave 420 max 420 min +Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/region_mesh/log.27Aug26.mpi_4.region_mesh.2d b/examples/region_mesh/log.27Aug26.mpi_4.region_mesh.2d new file mode 100644 index 000000000..84f9d0d62 --- /dev/null +++ b/examples/region_mesh/log.27Aug26.mpi_4.region_mesh.2d @@ -0,0 +1,123 @@ +SPARTA (24 Sep 2025) +Running on 4 MPI task(s) +################################################################################ +# thermal gas filling the area enclosed by a 2d surface mesh +# +# the mesh is an annulus, read from a file in the same format read_surf +# reads, so a ray cast from a point in the gas crosses both of its loops +# +# Note: +# - The "comm/sort" option to the "global" command is used to match MPI runs. +# - The "twopass" option is used to match Kokkos runs. +# The "comm/sort" and "twopass" options should not be used for production runs. +################################################################################ + +seed 12345 +dimension 2 +global gridcut 0.0 comm/sort yes + +boundary rr rr p + +create_box -5 5 -5 5 -0.5 0.5 +Created orthogonal box = (-5 -5 -0.5) to (5 5 0.5) +create_grid 40 40 1 +WARNING: Could not acquire nearby ghost cells b/c grid partition is not clumped (../grid.cpp:486) +Created 1600 child grid cells + CPU time = 0.0440137 secs + create/ghost percent = 18.198 81.802 + +balance_grid rcb cell +Balance grid migrated 1200 cells + CPU time = 0.222461 secs + reassign/sort/migrate/ghost percent = 95.3043 3.5935 1.04958 0.0525962 + +species air.species N O +mixture air N O vstream 0.0 0.0 0.0 temp 300.0 + +global nrho 1.0e20 +global fnum 1.0e17 + +# the annulus in the file has an outer radius of 4 and an inner radius of 2 +# and is centered on the origin + +region ann mesh data.annulus +Reading 96 lines from surf file data.annulus + -4 -4 0 to 4 4 0 mesh bounding box + 37.699 enclosed mesh area + +create_particles air n 0 region ann twopass +Created 37678 particles + CPU time = 0.0188268 secs + +stats 20 +compute temp temp +stats_style step cpu np nattempt ncoll c_temp + +collide vss air air.vss + +timestep 1.0e-5 +run 100 +Memory usage per proc in Mbytes: + particles (ave,min,max) = 1.5625 1.5625 1.5625 + grid (ave,min,max) = 1.51379 1.51379 1.51379 + surf (ave,min,max) = 0 0 0 + modify (ave,min,max) = 0 0 0 + total (ave,min,max) = 3.07629 3.07629 3.07629 +Step CPU Np Natt Ncoll c_temp + 0 0 37678 0 0 300.95773 + 20 0.009582402 37678 6410 4434 300.95773 + 40 0.019269321 37678 6265 4228 300.95773 + 60 0.048919185 37678 6070 4045 300.95773 + 80 0.35980408 37678 5775 3801 300.95773 + 100 0.86410683 37678 5487 3623 300.95773 +Loop time of 0.864184 on 4 procs for 100 steps with 37678 particles +Performance: 115.716 timesteps/s, 4.360 Mparticle-step/s + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Move | 0.0075852 | 0.0092281 | 0.0099604 | 1.0 | 1.07 +Coll | 0.026225 | 0.036557 | 0.042412 | 3.2 | 4.23 +Sort | 0.0019483 | 0.0020117 | 0.0020507 | 0.1 | 0.23 +Comm | 0.54616 | 0.58986 | 0.62014 | 4.0 | 68.26 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Output | 0.023883 | 0.02496 | 0.02787 | 1.1 | 2.89 +MPI Sync| 0.17263 | 0.20155 | 0.24227 | 6.0 | 23.32 +Other | | 1.782e-05 | | | 0.00 + +Particle moves = 3767800 (3.77M) +Cells touched = 3864319 (3.86M) +Particle comms = 2670 (2.67K) +Boundary collides = 6 (0.006K) +Boundary exits = 0 (0K) +SurfColl checks = 0 (0K) +SurfColl occurs = 0 (0K) +Surf reactions = 0 (0K) +Collide attempts = 607828 (0.608M) +Collide occurs = 412809 (0.413M) +Reactions = 0 (0K) +Particles stuck = 0 +Axisymm bad moves = 0 + +Particle-moves/CPUsec/proc: 1.08999e+06 +Particle-moves/step: 37678 +Cell-touches/particle/step: 1.02562 +Particle comm iterations/step: 2 +Particle fraction communicated: 0.000708636 +Particle fraction colliding with boundary: 1.59244e-06 +Particle fraction exiting boundary: 0 +Surface-checks/particle/step: 0 +Surface-collisions/particle/step: 0 +Surf-reactions/particle/step: 0 +Collision-attempts/particle/step: 0.161322 +Collisions/particle/step: 0.109562 +Reactions/particle/step: 0 + +Particles: 9419.5 ave 9466 max 9363 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Cells: 400 ave 400 max 400 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +GhostCell: 41 ave 41 max 41 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +EmptyCell: 41 ave 41 max 41 min +Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/src/region_mesh.cpp b/src/region_mesh.cpp new file mode 100644 index 000000000..5d3b3e540 --- /dev/null +++ b/src/region_mesh.cpp @@ -0,0 +1,800 @@ +/* ---------------------------------------------------------------------- + SPARTA - Stochastic PArallel Rarefied-gas Time-accurate Analyzer + http://sparta.github.io + Steve Plimpton, sjplimp@gmail.com, Michael Gallis, magalli@sandia.gov + Sandia National Laboratories + + Copyright (2014) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level SPARTA directory. +------------------------------------------------------------------------- */ + +#include "math.h" +#include "stdlib.h" +#include "string.h" +#include "region_mesh.h" +#include "stl_reader.h" +#include "comm.h" +#include "input.h" +#include "math_const.h" +#include "math_extra.h" +#include "utils.h" +#include "memory.h" +#include "error.h" + +using namespace SPARTA_NS; +using namespace MathConst; + +#define BIG 1.0e20 // same "infinity" the other region styles use +#define EPSILON 1.0e-9 // relative tolerance for a degenerate ray hit +#define JITTER 1.0e-6 // relative offset used to move a degenerate ray +#define MAXJITTER 8 // max # of times a degenerate ray is moved +#define CLOSED 1.0e-6 // relative tolerance on the closure of the mesh +#define MAXBIN 1024 // max # of ray-casting bins in y or z +#define MAXLINE 1024 +#define MAXWORD 16 // more words on a line than any valid format has + +// angle between successive jittered rays, the golden angle in radians +// keeps the rays from repeating a direction that was already degenerate + +#define GOLDEN_ANGLE 2.39996322972865332 + +/* ---------------------------------------------------------------------- + return the next non-blank line of a file with any comment stripped off, + or NULL at end of file +------------------------------------------------------------------------- */ + +static char *next_line(FILE *fp, char *line) +{ + while (fgets(line,MAXLINE,fp)) { + char *ptr = strchr(line,'#'); + if (ptr) *ptr = '\0'; + if (strspn(line," \t\n\r") != strlen(line)) return line; + } + return NULL; +} + +/* ---------------------------------------------------------------------- + split a line into whitespace delimited words, return # of words + words point into line, which is modified +------------------------------------------------------------------------- */ + +static int split_line(char *line, char **words) +{ + int nwords = 0; + char *ptr = strtok(line," \t\n\r\f"); + + while (ptr && nwords < MAXWORD) { + words[nwords++] = ptr; + ptr = strtok(NULL," \t\n\r\f"); + } + + return nwords; +} + +/* ---------------------------------------------------------------------- */ + +RegMesh::RegMesh(SPARTA *sparta, int narg, char **arg) : + Region(sparta, narg, arg) +{ + if (narg < 3) error->all(FLERR,"Illegal region mesh command"); + + verts = NULL; + esize = NULL; + binfirst = binlist = NULL; + + // read the surface, every proc keeps a copy of the entire mesh + + read_mesh(arg[2]); + + // optional args + // side is parsed by the base class, everything else transforms the mesh + // transforms are applied in the order they appear, as in read_surf + + origin[0] = origin[1] = origin[2] = 0.0; + interior = 1; + + int iarg = 3; + while (iarg < narg) { + if (strcmp(arg[iarg],"origin") == 0) { + if (iarg+4 > narg) error->all(FLERR,"Illegal region mesh command"); + origin[0] = input->numeric(FLERR,arg[iarg+1]); + origin[1] = input->numeric(FLERR,arg[iarg+2]); + origin[2] = input->numeric(FLERR,arg[iarg+3]); + iarg += 4; + } else if (strcmp(arg[iarg],"trans") == 0) { + if (iarg+4 > narg) error->all(FLERR,"Illegal region mesh command"); + double dx = input->numeric(FLERR,arg[iarg+1]); + double dy = input->numeric(FLERR,arg[iarg+2]); + double dz = input->numeric(FLERR,arg[iarg+3]); + origin[0] += dx; + origin[1] += dy; + origin[2] += dz; + translate(dx,dy,dz); + iarg += 4; + } else if (strcmp(arg[iarg],"scale") == 0) { + if (iarg+4 > narg) error->all(FLERR,"Illegal region mesh command"); + double sx = input->numeric(FLERR,arg[iarg+1]); + double sy = input->numeric(FLERR,arg[iarg+2]); + double sz = input->numeric(FLERR,arg[iarg+3]); + scale(sx,sy,sz); + iarg += 4; + } else if (strcmp(arg[iarg],"rotate") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal region mesh command"); + double theta = input->numeric(FLERR,arg[iarg+1]); + double rx = input->numeric(FLERR,arg[iarg+2]); + double ry = input->numeric(FLERR,arg[iarg+3]); + double rz = input->numeric(FLERR,arg[iarg+4]); + if (rx == 0.0 && ry == 0.0 && rz == 0.0) + error->all(FLERR,"Illegal region mesh command"); + rotate(theta,rx,ry,rz); + iarg += 5; + } else if (strcmp(arg[iarg],"side") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal region mesh command"); + options(2,&arg[iarg]); + iarg += 2; + } else error->all(FLERR,"Illegal region mesh command"); + } + + // bounding box, enclosed volume, and the bins used by inside() + + setup(); + + // extent of the mesh + // as for the other styles, only an interior region has a bounding box + // a 2d mesh is a closed curve in x-y, so the region is a prism in z + + if (interior) { + bboxflag = 1; + extent_xlo = bblo[0]; + extent_xhi = bbhi[0]; + extent_ylo = bblo[1]; + extent_yhi = bbhi[1]; + if (meshdim == 3) { + extent_zlo = bblo[2]; + extent_zhi = bbhi[2]; + } else { + extent_zlo = -BIG; + extent_zhi = BIG; + } + } else bboxflag = 0; + + if (comm->me == 0) { + const char *what = (meshdim == 2) ? "area" : "volume"; + if (screen) { + fprintf(screen," %g %g %g to %g %g %g mesh bounding box\n", + bblo[0],bblo[1],bblo[2],bbhi[0],bbhi[1],bbhi[2]); + fprintf(screen," %g enclosed mesh %s\n",enclosed,what); + } + if (logfile) { + fprintf(logfile," %g %g %g to %g %g %g mesh bounding box\n", + bblo[0],bblo[1],bblo[2],bbhi[0],bbhi[1],bbhi[2]); + fprintf(logfile," %g enclosed mesh %s\n",enclosed,what); + } + } +} + +/* ---------------------------------------------------------------------- */ + +RegMesh::~RegMesh() +{ + memory->destroy(verts); + memory->destroy(esize); + memory->destroy(binfirst); + memory->destroy(binlist); +} + +/* ---------------------------------------------------------------------- + read the surface from an STL file or a SPARTA surf file + which one it is is detected from the contents of the file +------------------------------------------------------------------------- */ + +void RegMesh::read_mesh(char *file) +{ + int stlflag = 0; + + if (comm->me == 0) { + try { + stlflag = STLReader::is_stl_file(file); + } catch (std::exception &e) { + error->one(FLERR,e.what()); + } + } + MPI_Bcast(&stlflag,1,MPI_INT,0,world); + + if (stlflag) read_stl_file(file); + else read_surf_file(file); +} + +/* ---------------------------------------------------------------------- + read triangles from an ASCII or binary STL file +------------------------------------------------------------------------- */ + +void RegMesh::read_stl_file(char *file) +{ + STLReader reader(sparta); + double **tris; + + meshdim = 3; + nelem = reader.read_file(file,tris); + nvert = 3*nelem; + + // the reader owns the array it fills, so keep our own copy of it + + memory->create(verts,nvert,3,"region/mesh:verts"); + + for (int i = 0; i < nelem; i++) + for (int j = 0; j < 3; j++) + for (int k = 0; k < 3; k++) + verts[3*i+j][k] = tris[i][3*j+k]; +} + +/* ---------------------------------------------------------------------- + read lines or triangles from a SPARTA surf file, the same format + read_surf reads, on proc 0, then broadcast them + only the geometry is used, so a type column is skipped and the ids are + ignored, but per-surf custom attributes are not supported +------------------------------------------------------------------------- */ + +void RegMesh::read_surf_file(char *file) +{ + if (comm->me == 0) { + char line[MAXLINE]; + char *words[MAXWORD]; + double **pts = NULL; + + FILE *fp = fopen(file,"r"); + if (fp == NULL) surf_error(file,"Cannot open mesh file"); + + // 1st line of the file is a comment + + if (fgets(line,MAXLINE,fp) == NULL) + surf_error(file,"Unexpected end of surf file"); + + // header = keyword lines with counts on them + // it ends at the 1st line with no header keyword, the section keyword + + int npoint = 0; + int nline = 0; + int ntri = 0; + + while (1) { + if (next_line(fp,line) == NULL) { + line[0] = '\0'; + break; + } + if (strstr(line,"points")) npoint = atoi(line); + else if (strstr(line,"lines")) nline = atoi(line); + else if (strstr(line,"triangles")) ntri = atoi(line); + else break; + } + + if (nline && ntri) + surf_error(file,"Surf file contains both lines and triangles"); + if (nline <= 0 && ntri <= 0) + surf_error(file,"Surf file does not contain lines or triangles"); + + meshdim = nline ? 2 : 3; + nelem = nline ? nline : ntri; + nvert = meshdim*nelem; + memory->create(verts,nvert,3,"region/mesh:verts"); + + // sections, in whatever order they appear + // a Points section is optional, elements may carry their own coords + + int nelemread = 0; + + while (strlen(line)) { + if (strstr(line,"Points")) { + if (npoint <= 0) surf_error(file,"Surf file has no points count"); + memory->create(pts,npoint,3,"region/mesh:pts"); + + for (int i = 0; i < npoint; i++) { + if (next_line(fp,line) == NULL) + surf_error(file,"Unexpected end of surf file"); + int nwords = split_line(line,words); + if (nwords != 3 && nwords != 4) + surf_error(file,"Incorrect point format in surf file"); + pts[i][0] = surf_numeric(file,words[1]); + pts[i][1] = surf_numeric(file,words[2]); + pts[i][2] = (nwords == 4) ? surf_numeric(file,words[3]) : 0.0; + } + + } else if (strstr(line,"Lines") || strstr(line,"Triangles")) { + int nvper = meshdim; + + // # of words per element, with and without a leading type column + // an id is always present, and point indices replace the coords + // if the file has a Points section + + int nbase = npoint ? 1+nvper : 1+3*nvper; + if (meshdim == 2 && !npoint) nbase = 1+2*nvper; + + for (int i = 0; i < nelem; i++) { + if (next_line(fp,line) == NULL) + surf_error(file,"Unexpected end of surf file"); + int nwords = split_line(line,words); + if (nwords != nbase && nwords != nbase+1) + surf_error(file,(meshdim == 2) ? + "Incorrect line format in surf file" : + "Incorrect triangle format in surf file"); + + // skip the id, and the type column if there is one + + int iw = (nwords == nbase) ? 1 : 2; + + for (int j = 0; j < nvper; j++) { + double *v = verts[nvper*i+j]; + if (npoint) { + int ipoint = surf_inumeric(file,words[iw++]); + if (ipoint < 1 || ipoint > npoint) + surf_error(file,"Invalid point index in surf file"); + v[0] = pts[ipoint-1][0]; + v[1] = pts[ipoint-1][1]; + v[2] = pts[ipoint-1][2]; + } else { + v[0] = surf_numeric(file,words[iw++]); + v[1] = surf_numeric(file,words[iw++]); + v[2] = (meshdim == 3) ? surf_numeric(file,words[iw++]) : 0.0; + } + } + } + + nelemread = nelem; + + } else surf_error(file,"Unknown section in surf file"); + + if (next_line(fp,line) == NULL) line[0] = '\0'; + } + + memory->destroy(pts); + fclose(fp); + + if (nelemread == 0) + surf_error(file,(meshdim == 2) ? + "Surf file has no Lines section" : + "Surf file has no Triangles section"); + + if (screen) + fprintf(screen,"Reading %d %s from surf file %s\n", + nelem,(meshdim == 2) ? "lines" : "triangles",file); + if (logfile) + fprintf(logfile,"Reading %d %s from surf file %s\n", + nelem,(meshdim == 2) ? "lines" : "triangles",file); + } + + bcast_verts(); +} + +/* ---------------------------------------------------------------------- + send the mesh proc 0 read to all the other procs +------------------------------------------------------------------------- */ + +void RegMesh::bcast_verts() +{ + MPI_Bcast(&meshdim,1,MPI_INT,0,world); + MPI_Bcast(&nelem,1,MPI_INT,0,world); + MPI_Bcast(&nvert,1,MPI_INT,0,world); + + if (comm->me) memory->create(verts,nvert,3,"region/mesh:verts"); + + // allow for 3*nvert to exceed the max allowed size of a single MPI_Bcast() + + bigint ntotal = (bigint) nvert * 3; + if (ntotal < MAXSMALLINT) + MPI_Bcast(&verts[0][0],3*nvert,MPI_DOUBLE,0,world); + else { + double *source = &verts[0][0]; + bigint n = 0; + while (n < ntotal) { + int nsize = MIN(MAXSMALLINT,ntotal-n); + MPI_Bcast(&source[n],nsize,MPI_DOUBLE,0,world); + n += nsize; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void RegMesh::surf_error(const char *file, const char *mesg) +{ + char str[256]; + snprintf(str,256,"%s: %s",mesg,file); + error->one(FLERR,str); +} + +/* ---------------------------------------------------------------------- + convert a word of a surf file to a number + Input::numeric() cannot be used here, it reports a bad value with + Error::all(), which the other procs would never reach while proc 0 is + the only one reading the file +------------------------------------------------------------------------- */ + +double RegMesh::surf_numeric(const char *file, const char *word) +{ + if (!utils::is_double(word)) + surf_error(file,"Expected floating point value in surf file"); + return atof(word); +} + +/* ---------------------------------------------------------------------- */ + +int RegMesh::surf_inumeric(const char *file, const char *word) +{ + if (!utils::is_integer(word)) + surf_error(file,"Expected integer value in surf file"); + return atoi(word); +} + +/* ---------------------------------------------------------------------- + inside = 1 if x,y,z is inside the closed surface, else 0 + cast a ray in +x from the point and count the elements it crosses + an odd count means the point is inside + a 2d mesh is a closed curve in the x-y plane, so the ray is cast in that + plane and the z coord of the point does not matter +------------------------------------------------------------------------- */ + +int RegMesh::inside(double *x) +{ + if (x[0] < bblo[0] || x[0] > bbhi[0] || + x[1] < bblo[1] || x[1] > bbhi[1]) return 0; + if (meshdim == 3 && (x[2] < bblo[2] || x[2] > bbhi[2])) return 0; + + // a ray that grazes an edge or a vertex cannot be counted reliably + // move it a little across the ray direction and cast it again + + double dy = 0.0; + double dz = 0.0; + + for (int attempt = 0; attempt <= MAXJITTER; attempt++) { + int ncross = crossings(x[0],x[1]+dy,x[2]+dz); + if (ncross >= 0) return ncross & 1; + + double offset = jitter * (attempt+1); + if (meshdim == 2) { + dy = (attempt & 1) ? -offset : offset; + dz = 0.0; + } else { + double angle = GOLDEN_ANGLE * (attempt+1); + dy = offset * cos(angle); + dz = offset * sin(angle); + } + } + + // every ray was degenerate, so the point is on the surface itself + // as for the other region styles, the surface counts as inside + + return 1; +} + +/* ---------------------------------------------------------------------- + count the elements crossed by a +x ray from the point px,py,pz + return -1 if the ray grazes an edge or a vertex, so the count is unreliable +------------------------------------------------------------------------- */ + +int RegMesh::crossings(double px, double py, double pz) +{ + int iy = static_cast