diff --git a/assets/advection_diffusion/Pentagon_2D_Mesh.png b/assets/advection_diffusion/Pentagon_2D_Mesh.png new file mode 100644 index 00000000..bd7b10a2 Binary files /dev/null and b/assets/advection_diffusion/Pentagon_2D_Mesh.png differ diff --git a/assets/advection_diffusion/Result_non_zero.png b/assets/advection_diffusion/Result_non_zero.png new file mode 100644 index 00000000..5e8ccce0 Binary files /dev/null and b/assets/advection_diffusion/Result_non_zero.png differ diff --git a/assets/advection_diffusion/Result_zero.png b/assets/advection_diffusion/Result_zero.png new file mode 100644 index 00000000..2bf5c22e Binary files /dev/null and b/assets/advection_diffusion/Result_zero.png differ diff --git a/deps/build.jl b/deps/build.jl index 9cb4104b..27aa344e 100644 --- a/deps/build.jl +++ b/deps/build.jl @@ -5,6 +5,7 @@ repo_src = joinpath(@__DIR__,"..","src") notebooks_dir = joinpath(@__DIR__,"..","notebooks") files = [ + "Gmsh/Gridap workflow"=>"gmsh_gridap.jl" "Poisson equation"=>"poisson.jl", "Code validation"=>"validation.jl", "Linear elasticity"=>"elasticity.jl", diff --git a/models/pentagon.geo b/models/pentagon.geo new file mode 100644 index 00000000..93aab5fd --- /dev/null +++ b/models/pentagon.geo @@ -0,0 +1,156 @@ +// Gmsh project created on Wed Dec 4 14:27:19 2024 +// ----------------------------------------------------------------------------- +// +// Gmsh GEO tutorial 1 +// +// Geometry basics, elementary entities, physical groups +// +// ----------------------------------------------------------------------------- + +// The simplest construction in Gmsh's scripting language is the +// `affectation'. The following command defines a new variable `lc': + +lc = 1e-1; + +// This variable can then be used in the definition of Gmsh's simplest +// `elementary entity', a `Point'. A Point is uniquely identified by a tag (a +// strictly positive integer; here `1') and defined by a list of four numbers: +// three coordinates (X, Y and Z) and the target mesh size (lc) close to the +// point: + + + +// The distribution of the mesh element sizes will then be obtained by +// interpolation of these mesh sizes throughout the geometry. Another method to +// specify mesh sizes is to use general mesh size Fields (see `t10.geo'). A +// particular case is the use of a background mesh (see `t7.geo'). + +// If no target mesh size of provided, a default uniform coarse size will be +// used for the model, based on the overall model size. + +// We can then define some additional points. All points should have different +// tags: + +Point(1) = {0, -1.0000, 0, lc}; +Point(2) = {0, 1.0000, 0, lc}; +Point(3) = {1.9015, 1.6190, 0, lc}; +Point(4) = {3.0777, 0, 0, lc}; +Point(5) = {1.9015, -1.6190, 0, lc}; + +// Point(1) = {0.8507, 0, 0, lc}; +// Point(2) = {0.2629, 0.8090, 0, lc}; +// Point(3) = {-0.6882, 0.5000, 0, lc}; +// Point(4) = {-0.6882, -0.5000, 0, lc}; +// Point(5) = {0.2629, -0.8090, 0, lc}; + +// Curves are Gmsh's second type of elementary entities, and, amongst curves, +// straight lines are the simplest. A straight line is identified by a tag and +// is defined by a list of two point tags. In the commands below, for example, +// the line 1 starts at point 1 and ends at point 2. +// +// Note that curve tags are separate from point tags - hence we can reuse tag +// `1' for our first curve. And as a general rule, elementary entity tags in +// Gmsh have to be unique per geometrical dimension. + +Line(1) = {1, 2}; +Line(2) = {2, 3}; +Line(3) = {3, 4}; +Line(4) = {4, 5}; +Line(5) = {5, 1}; + +// The third elementary entity is the surface. In order to define a simple +// rectangular surface from the four curves defined above, a curve loop has +// first to be defined. A curve loop is also identified by a tag (unique amongst +// curve loops) and defined by an ordered list of connected curves, a sign being +// associated with each curve (depending on the orientation of the curve to form +// a loop): + +Curve Loop(1) = {1, 2, 3, 4, 5}; + +// We can then define the surface as a list of curve loops (only one here, +// representing the external contour, since there are no holes--see `t4.geo' for +// an example of a surface with a hole): + +Plane Surface(1) = {1}; + +// At this level, Gmsh knows everything to display the rectangular surface 1 and +// to mesh it. An optional step is needed if we want to group elementary +// geometrical entities into more meaningful groups, e.g. to define some +// mathematical ("domain", "boundary"), functional ("left wing", "fuselage") or +// material ("steel", "carbon") properties. +// +// Such groups are called "Physical Groups" in Gmsh. By default, if physical +// groups are defined, Gmsh will export in output files only mesh elements that +// belong to at least one physical group. (To force Gmsh to save all elements, +// whether they belong to physical groups or not, set `Mesh.SaveAll=1;', or +// specify `-save_all' on the command line.) Physical groups are also identified +// by tags, i.e. strictly positive integers, that should be unique per dimension +// (0D, 1D, 2D or 3D). Physical groups can also be given names. +// +// Here we define a physical curve that groups the left, bottom and right curves +// in a single group (with prescribed tag 5); and a physical surface with name +// "My surface" (with an automatic tag) containing the geometrical surface 1: + +Physical Line("l1") = {1}; +Physical Line("l2") = {2}; +Physical Line("l3") = {3}; +Physical Line("l4") = {4}; +Physical Line("l5") = {5}; + +Physical Curve(“b1”) = {1, 2, 4}; +Physical Curve("b2") = {3}; + +Physical Surface("My surface") = {1}; + +// Now that the geometry is complete, you can +// - either open this file with Gmsh and select `2D' in the `Mesh' module to +// create a mesh; then select `Save' to save it to disk in the default format +// (or use `File->Export' to export in other formats); +// - or run `gmsh t1.geo -2` to mesh in batch mode on the command line. + +// You could also uncomment the following lines in this script: +// +Mesh 2; +Save "pentagon_mesh.msh"; +// +// which would lead Gmsh to mesh and save the mesh every time the file is +// parsed. (To simply parse the file from the command line, you can use `gmsh +// t1.geo -') + +// By default, Gmsh saves meshes in the latest version of the Gmsh mesh file +// format (the `MSH' format). You can save meshes in other mesh formats by +// specifying a filename with a different extension in the GUI, on the command +// line or in scripts. For example +// +// Save "t1.unv"; +// +// will save the mesh in the UNV format. You can also save the mesh in older +// versions of the MSH format: +// +// - In the GUI: open `File->Export', enter your `filename.msh' and then pick +// the version in the dropdown menu. +// - On the command line: use the `-format' option (e.g. `gmsh file.geo -format +// msh2 -2'). +// - In a `.geo' script: add `Mesh.MshFileVersion = x.y;' for any version +// number `x.y'. +// - As an alternative method, you can also not specify the format explicitly, +// and just choose a filename with the `.msh2' or `.msh4' extension. + +// Note that starting with Gmsh 3.0, models can be built using other geometry +// kernels than the default built-in kernel. By specifying +// +// SetFactory("OpenCASCADE"); +// +// any subsequent command in the `.geo' file would be handled by the OpenCASCADE +// geometry kernel instead of the built-in kernel. Different geometry kernels +// have different features. With OpenCASCADE, instead of defining the surface by +// successively defining 4 points, 4 curves and 1 curve loop, one can define the +// rectangular surface directly with +// +// Rectangle(2) = {.2, 0, 0, .1, .3}; +// +// The underlying curves and points could be accessed with the `Boundary' or +// `CombinedBoundary' operators. +// +// See e.g. `t16.geo', `t18.geo', `t19.geo' or `t20.geo' for complete examples +// based on OpenCASCADE, and `examples/boolean' for more. diff --git a/models/pentagon_mesh.msh b/models/pentagon_mesh.msh new file mode 100644 index 00000000..a2667f3d --- /dev/null +++ b/models/pentagon_mesh.msh @@ -0,0 +1,3644 @@ +$MeshFormat +4.1 0 8 +$EndMeshFormat +$PhysicalNames +7 +1 1 "l1" +1 2 "l2" +1 3 "l3" +1 4 "l4" +1 5 "l5" +1 6 "b2" +2 7 "My surface" +$EndPhysicalNames +$Entities +5 5 1 0 +1 0 -1 0 0 +2 0 1 0 0 +3 1.9015 1.619 0 0 +4 3.0777 0 0 0 +5 1.9015 -1.619 0 0 +1 0 -1 0 0 1 0 1 1 2 1 -2 +2 0 1 0 1.9015 1.619 0 1 2 2 2 -3 +3 1.9015 0 0 3.0777 1.619 0 2 3 6 2 3 -4 +4 1.9015 -1.619 0 3.0777 0 0 1 4 2 4 -5 +5 0 -1.619 0 1.9015 -1 0 1 5 2 5 -1 +1 0 -1.619 0 3.0777 1.619 0 1 7 5 1 2 3 4 5 +$EndEntities +$Nodes +11 899 1 899 +0 1 0 1 +1 +0 -1 0 +0 2 0 1 +2 +0 1 0 +0 3 0 1 +3 +1.9015 1.619 0 +0 4 0 1 +4 +3.0777 0 0 +0 5 0 1 +5 +1.9015 -1.619 0 +1 1 0 19 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +0 -0.9000000000002774 0 +0 -0.8000000000005548 0 +0 -0.7000000000008322 0 +0 -0.6000000000011096 0 +0 -0.500000000001387 0 +0 -0.4000000000016644 0 +0 -0.3000000000019418 0 +0 -0.2000000000022192 0 +0 -0.1000000000024964 0 +0 -2.752242878045763e-12 0 +0 0.09999999999750342 0 +0 0.1999999999977808 0 +0 0.2999999999980583 0 +0 0.3999999999983355 0 +0 0.4999999999986129 0 +0 0.5999999999988903 0 +0 0.699999999999168 0 +0 0.7999999999994454 0 +0 0.8999999999997226 0 +1 2 0 19 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +0.0950749999999513 1.030949999999984 0 +0.1901499999998764 1.06189999999996 0 +0.2852249999996721 1.092849999999893 0 +0.3802999999993886 1.123799999999801 0 +0.4753749999990936 1.154749999999705 0 +0.570449999998771 1.1856999999996 0 +0.6655249999985033 1.216649999999513 0 +0.7605999999982083 1.247599999999417 0 +0.8556749999979406 1.27854999999933 0 +0.9507499999976378 1.309499999999231 0 +1.045824999997864 1.340449999999305 0 +1.140899999997953 1.371399999999334 0 +1.235974999998199 1.402349999999414 0 +1.331049999998504 1.433299999999513 0 +1.426124999998714 1.464249999999581 0 +1.521199999998924 1.49519999999965 0 +1.616274999999251 1.526149999999756 0 +1.711349999999578 1.557099999999862 0 +1.806424999999748 1.588049999999918 0 +1 3 0 20 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +1.957509523809481 1.541904761904821 0 +2.013519047618965 1.464809523809637 0 +2.069528571428499 1.387714285714385 0 +2.125538095237881 1.310619047619342 0 +2.181547619047298 1.233523809524251 0 +2.237557142856715 1.15642857142916 0 +2.293566666665952 1.079333333334316 0 +2.349576190475354 1.002238095239246 0 +2.405585714284737 0.9251428571442032 0 +2.461595238093958 0.8480476190493816 0 +2.517604761903469 0.770952380954161 0 +2.573614285713265 0.6938571428585484 0 +2.629623809522898 0.6167619047631596 0 +2.685633333332661 0.5396666666675918 0 +2.741642857142657 0.4625714285717046 0 +2.797652380952183 0.3854761904764623 0 +2.853661904761622 0.3083809523813417 0 +2.909671428571357 0.2312857142858136 0 +2.965680952381006 0.1541904761904029 0 +3.021690476190308 0.07709523809546948 0 +1 4 0 20 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +3.02169047619055 -0.07709523809513734 0 +2.965680952381114 -0.1541904761902538 0 +2.909671428571647 -0.2312857142854132 0 +2.853661904762247 -0.3083809523804816 0 +2.797652380952942 -0.3854761904754183 0 +2.74164285714358 -0.4625714285704337 0 +2.685633333334157 -0.5396666666655333 0 +2.629623809524809 -0.6167619047605289 0 +2.57361428571549 -0.6938571428554852 0 +2.517604761905936 -0.7709523809507651 0 +2.461595238096387 -0.8480476190460379 0 +2.405585714286823 -0.9251428571413314 0 +2.349576190477042 -1.002238095236923 0 +2.293566666667174 -1.079333333332636 0 +2.237557142857532 -1.156428571428036 0 +2.181547619047921 -1.233523809523394 0 +2.125538095238194 -1.310619047618912 0 +2.069528571428778 -1.387714285714001 0 +2.013519047619252 -1.464809523809242 0 +1.95750952380958 -1.541904761904685 0 +1 5 0 19 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +1.806424999999988 -1.588049999999996 0 +1.711350000000144 -1.557100000000047 0 +1.616275000000513 -1.526150000000167 0 +1.521200000001193 -1.495200000000388 0 +1.426125000001456 -1.464250000000474 0 +1.331050000001704 -1.433300000000555 0 +1.23597500000149 -1.402350000000485 0 +1.140900000001541 -1.371400000000502 0 +1.045825000001829 -1.340450000000595 0 +0.9507500000022843 -1.309500000000744 0 +0.8556750000020659 -1.278550000000672 0 +0.7606000000019846 -1.247600000000646 0 +0.6655250000017467 -1.216650000000569 0 +0.5704500000014623 -1.185700000000476 0 +0.4753750000012598 -1.15475000000041 0 +0.3803000000010575 -1.123800000000344 0 +0.2852250000007381 -1.09285000000024 0 +0.190150000000419 -1.061900000000136 0 +0.09507500000025648 -1.030950000000084 0 +2 1 0 797 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +2.419062238420698 -0.762517921477972 0 +1.014731885584493 1.23694006457682 0 +0.09277697650642991 -0.04210349394075914 0 +2.424346788805457 0.7609483546884029 0 +1.02497641644238 -1.243886205299044 0 +0.08482066125451299 0.3470102411084579 0 +2.652575759712259 0.4459528848679714 0 +0.6451828602645092 -1.119326535726239 0 +2.202364619364047 -1.064872712900882 0 +2.19879547006039 1.069375281909069 0 +0.6460926896607622 1.119840433747513 0 +2.649797310051199 -0.4414934374038115 0 +1.405390986248636 -1.36643763473593 0 +1.403579585264983 1.366204229157955 0 +0.08483924449896735 -0.4556914145598611 0 +0.09658669476808318 0.6574800324336051 0 +2.800064510101552 0.221557654279335 0 +2.039183185980462 -1.292788386845884 0 +2.035483598980191 1.304372049326406 0 +0.363202328704777 -1.028984591556457 0 +0.3718631934516975 1.027583682077196 0 +2.805622083137015 -0.2227986481458256 0 +0.0843616101538031 -0.7497664518525138 0 +1.688561837164651 -1.446294456082219 0 +1.677950361464764 1.45870415622072 0 +1.217790133294273 1.30875265759401 0 +1.215312758780504 -1.304755807852595 0 +0.8373244332825709 -1.182382836590184 0 +0.8329401545567858 1.184016876767695 0 +0.07877495700978437 0.1513639908857153 0 +0.08551613737499253 -0.2481234993776065 0 +2.535710617849256 -0.607041431518667 0 +2.312799940884601 -0.9166272113817534 0 +2.534255805029885 0.6068445806715524 0 +2.302235734434943 0.9095487922557217 0 +0.07790817477577118 0.8535214768000868 0 +2.926175649378878 0.06979214854402362 0 +1.918747851013096 -1.454851472384021 0 +1.925035450589137 1.450944510135823 0 +0.175831633585368 -0.9693506826476785 0 +0.1685824380022866 0.9723717014636828 0 +2.927348014641516 -0.07036354855102264 0 +1.309538198037667 -1.335786057092677 0 +1.288603511994927 -1.238361516679974 0 +1.19486453982773 -1.207329417966388 0 +1.268662933033961 -1.141068269601592 0 +1.175864233571133 -1.110821916620546 0 +1.249246386753033 -1.044130394885824 0 +1.342536743142646 -1.074877726070863 0 +1.321947087515063 -0.9782507197813676 0 +1.22894461035991 -0.9472457024775053 0 +1.301662184242379 -0.8815861411192858 0 +1.208645496295883 -0.8505659181386745 0 +1.281717250266827 -0.7848769900705724 0 +1.188535444933108 -0.7539315075635389 0 +1.261539103899144 -0.6882950801246484 0 +1.167936652822505 -0.6574627659587073 0 +1.241393655776612 -0.5918278066896148 0 +1.147719952901014 -0.5609581713183723 0 +1.221248226338056 -0.4953477796109287 0 +1.314531330246448 -0.5261655037295594 0 +1.294503931709574 -0.429717329921721 0 +1.201166246263897 -0.3988484595551683 0 +1.274603235704004 -0.3335041183241037 0 +1.367059171412693 -0.363374206659956 0 +1.347726687992417 -0.2680128779795954 0 +1.254640849458675 -0.237106820317937 0 +1.328011924687791 -0.1720768989489249 0 +1.420991414873997 -0.2028577839667571 0 +1.401216621937966 -0.1070001911728814 0 +1.30822264175236 -0.07615666647450697 0 +1.38143103841039 -0.01108214027747223 0 +1.494094743040279 -0.1378205805912762 0 +1.28839283326308 0.01980337379237602 0 +1.361692025420168 0.0850267591582323 0 +1.268546125729376 0.1158750951498057 0 +1.341932092474306 0.1811677853182288 0 +1.248665987541188 0.2120486177791762 0 +1.322091518060421 0.2773200208209456 0 +1.415309862175454 0.2464293265980971 0 +1.175245396135304 0.1467205423880568 0 +1.395547093313333 0.3425111431176888 0 +1.488537183608341 0.3116874984526595 0 +1.155309008335802 0.2430495458698828 0 +1.468883860742753 0.407612605923534 0 +1.08178763364903 0.1775905439955032 0 +1.5617207241385 0.376842865870541 0 +1.542111419162659 0.4726379112859168 0 +1.376020510729488 -0.8140279565450904 0 +1.061811580951448 0.2741151499778839 0 +0.9881451077590639 0.2085456925732485 0 +0.9681632622142504 0.3052165735529884 0 +1.63484451362091 0.4417685068017391 0 +1.615740358306693 0.5391462440730961 0 +1.449422397860809 0.5040511280435753 0 +1.654200294080266 0.3457338239741439 0 +1.727794392517313 0.4127399088238545 0 +1.747169893647023 0.3155330898340242 0 +0.8943943732431927 0.2395434597951437 0 +0.8743675499315557 0.3363047628358249 0 +0.948281749388023 0.4020557081302734 0 +0.914422063524821 0.1428194417527354 0 +1.074150392332086 -0.6266469153346873 0 +0.8543443581779215 0.4331802359105966 0 +1.820311845136729 0.382348943630397 0 +1.839281711820054 0.2847516451837046 0 +0.9283969787467337 0.4990105417322654 0 +0.8205587433118657 0.1738410870502693 0 +0.8406221696895174 0.07695223437613657 0 +1.911977498515262 0.3499059984253357 0 +1.931268740804641 0.253971973791047 0 +1.892418810095884 0.4446263850706695 0 +0.7466468599547157 0.1080549030261574 0 +0.7667447446514959 0.01105255321155766 0 +0.8343996314545239 0.5301530052580476 0 +0.7602953328793819 0.46430200756387 0 +2.003931924876501 0.3190491298132603 0 +2.023398194759777 0.2241389027116178 0 +1.951140390607217 0.1587984722764449 0 +2.043006696441736 0.12936089889221 0 +1.97087667718822 0.06520721996856234 0 +2.062616214045248 0.03487212891951721 0 +1.990538924958191 -0.02940105362568293 0 +2.082210026999774 -0.05970538075736415 0 +2.010181940546583 -0.1239634672826707 0 +2.154247482346156 0.004538697323232328 0 +2.101784022864065 -0.1542552359152392 0 +2.029753056126111 -0.2184862582190458 0 +0.9084991280543397 0.5959347900840621 0 +0.740448356702446 0.5614766262800044 0 +0.6661227307801076 0.4954835235338948 0 +2.095439295628043 0.2887393695330447 0 +0.6726849330750282 0.04215128182613632 0 +0.6928121432341227 -0.05488230969044705 0 +2.12134830409996 -0.2487625839725403 0 +2.049340886407965 -0.3129876608725412 0 +1.957671838162949 -0.2827102711353188 0 +1.977316310331068 -0.37729873837734 0 +1.885546238624799 -0.3469966220362229 0 +1.905214412075326 -0.4416509455250991 0 +1.997076755410577 -0.4717094783054537 0 +1.92489904584992 -0.5362688169537783 0 +1.83305095580034 -0.5060488283602471 0 +1.852774994748974 -0.6007936590961054 0 +0.7868369780630435 -0.08528498568605315 0 +0.7127740053048331 -0.151640806824624 0 +0.6187898132320347 -0.120838298142383 0 +0.6389308415162384 -0.2179252685863376 0 +0.6462120284985875 0.5928547908701334 0 +0.5717893081735286 0.5267017691033463 0 +0.7327099476077096 -0.2482106351703069 0 +0.6588177993400468 -0.3150528356078652 0 +0.564815954925745 -0.2840381090122685 0 +0.5850660503160789 -0.3812713529135845 0 +1.944625407191249 -0.6309953126240261 0 +1.872574567200585 -0.6955058534452823 0 +1.002461333459269 0.5647957482580931 0 +0.9825566771831699 0.6617333481130241 0 +1.760713765674336 -0.570547660792162 0 +0.6791053514338918 -0.4123883841183332 0 +0.6053415361359917 -0.4785373510494213 0 +0.5516879264586869 0.6241090711572546 0 +1.899089674613496 -0.0004338387371464261 0 +0.6264024666846899 0.6903872012576873 0 +1.508394950840602 0.2155642628950346 0 +2.193311260318494 -0.1846219247091345 0 +2.212805587512504 -0.2789266624031901 0 +2.284660377167293 -0.2149605246746719 0 +2.07619433328186 0.3831668434750236 0 +2.167499775394824 0.352974255155899 0 +2.148328144316099 0.4471621238634715 0 +1.136316941627339 -0.9194117442735023 0 +1.076477015854922 0.6305646429713089 0 +1.05661453033752 0.7274605432836851 0 +0.963104254285102 0.7591267996173723 0 +1.150465804436413 0.6962642793739465 0 +1.130628004273279 0.7931633244378633 0 +1.224420465728822 0.7619905547828403 0 +1.204537753595502 0.8589251630117891 0 +1.298314306712469 0.8277384026841507 0 +1.415715689548148 -1.005772182287037 0 +1.215082733606698 -0.04498723189825558 0 +0.5919124188911695 0.4293575360369482 0 +0.6993380886870378 -0.5096701300345268 0 +0.6256185894306588 -0.5757999497887187 0 +0.5312616177431423 -0.5446622932342731 0 +0.7196406556215953 -0.6069462369761723 0 +0.6458931077164458 -0.67308512973016 0 +0.7403231265543959 -0.7041702208030381 0 +1.054003823077716 -0.5300410202392901 0 +1.741242944033459 -0.4758898026984539 0 +0.4773200671267616 0.5579535196786936 0 +1.96440415263497 -0.7256698862980518 0 +1.892424319063299 -0.7902297795587347 0 +2.036498395980473 -0.6608087309192917 0 +1.800509049111643 -0.7600089019804748 0 +1.820368319432569 -0.8548603389188478 0 +1.278438220764105 0.9245462651325403 0 +1.372122881213985 0.893413543428042 0 +0.4907172249155679 -0.350210861713292 0 +0.470477248311164 -0.2528826552964685 0 +0.4571831000509599 0.6554635284902222 0 +2.304088682957596 -0.3092276740884486 0 +2.376690817221895 -0.246901071512389 0 +2.356574547979796 -0.1514257674784008 0 +2.448569700807296 -0.1832022091707851 0 +2.428328345762688 -0.08775709960292545 0 +1.111040534383649 0.8900753374943943 0 +1.352329549044681 0.9900945298818149 0 +1.445865286948736 0.9588511976466463 0 +2.239685065765266 0.4168530313116977 0 +2.258440616210796 0.3217963910766974 0 +1.465574609010114 0.8624631021324061 0 +1.539017328896974 0.9278910505614026 0 +1.51957654760083 1.02417833526813 0 +1.612445119890424 0.9929087080980357 0 +1.631907573185967 0.8971324777123201 0 +1.705272125864413 0.9628373750089647 0 +1.724571003075438 0.8666418593874236 0 +1.797629197662995 0.9321151473464454 0 +1.816839813681402 0.836077231692286 0 +1.686382362211045 1.059178164845755 0 +1.889800642389633 0.9011463167500369 0 +1.909440323986108 0.8032227725294752 0 +1.669039027434258 -0.5408604902662251 0 +1.728215676194709 -0.8245940377059636 0 +1.748100860694912 -0.9195202683555945 0 +1.840316045577079 -0.9497524880873405 0 +1.768009852443575 -1.014494243730475 0 +1.871313826286217 0.9980128389286919 0 +2.519313852343975 -0.1178706073875323 0 +2.499769098767518 -0.02373576719133677 0 +2.590663243194516 -0.05385129227024766 0 +0.6662341076258909 -0.7704229910451291 0 +0.7607248524541994 -0.8014683261696074 0 +0.5717380522442009 -0.739323367520206 0 +2.571278774555131 0.03992218268425291 0 +2.480416839818693 0.07005054918922438 0 +2.551952889875967 0.133680013255176 0 +2.22034303764347 0.5111103155616764 0 +2.129019520093909 0.5414305760983587 0 +1.302585186209624 0.3737807932595528 0 +1.984294804830047 -0.8206673951187486 0 +1.513906106599991 -0.2334969934915682 0 +1.586795533126815 -0.1684496191734666 0 +2.331011197538579 0.3849468989477448 0 +0.3962656006078269 -0.3191009679873757 0 +0.3760826312048942 -0.2217540946115391 0 +1.982215138881946 0.8673265645910494 0 +1.836435029090956 0.7406092583560424 0 +1.567052400168806 -0.07293097560821152 0 +1.438699567249199 -1.100517261988607 0 +2.232406319840199 -0.3730708819911766 0 +1.766391535851038 0.2191381211558312 0 +0.9346847963870111 0.04682182784433842 0 +1.865869856645022 -0.2523007118876694 0 +0.6525829997513305 0.1392420110538886 0 +0.5785086617879441 0.07325590489176442 0 +0.5583860053562928 0.1704828431759942 0 +0.48419573988077 0.1043838036629327 0 +0.4640533686969703 0.2017593413590641 0 +1.860256104207631 -1.04456131556154 0 +1.788033881797571 -1.109528139285789 0 +0.7727223372091614 -0.4414591777173674 0 +0.382763166177393 0.5892568324341014 0 +0.3626037129593072 0.6868608502221751 0 +0.4029863794855651 0.4919289798063136 0 +1.25850788391163 1.021383519015175 0 +2.200967079516182 0.6053382322916372 0 +0.4370966222452502 0.7530895777391213 0 +0.3903336575161332 0.1349805915096306 0 +0.3678423475919344 0.2297587645463701 0 +0.5920524526825602 -0.8367839799034417 0 +0.497435480169377 -0.8056390411563686 0 +2.323576516751416 -0.403321608816537 0 +2.251997186198184 -0.4670812277385394 0 +0.3083301547380053 0.5229986590791746 0 +1.332551810673932 1.086987158374932 0 +2.66207199905887 0.009799238724011596 0 +2.541892986780252 -0.2162152904963306 0 +1.65572437446575 -0.8892884482065522 0 +1.635837524499462 -0.7942594479242258 0 +1.651688732437037 0.8014847703287333 0 +2.110539283474222 0.635874492936179 0 +1.660344361290494 -0.102761177989281 0 +1.639899602836628 -0.008103929559524617 0 +2.461097653759947 0.1638116381257657 0 +1.318169763098578 0.7309544364319349 0 +0.8347719576733958 -0.733923078116566 0 +0.855172007523867 -0.8322864793978823 0 +1.170320966532881 0.599333825032666 0 +1.69580080609609 -1.079320207606936 0 +1.717216011580548 -1.176689888969919 0 +2.389114607812534 0.1008015335234643 0 +2.532608985673482 0.2274056891449891 0 +0.409989440948121 0.03817663850370559 0 +2.181767836735697 0.699623403798469 0 +0.7814263112613832 -0.8977258836337519 0 +0.8756376497891893 -0.9296044447853814 0 +1.808401385330911 -1.204975538496625 0 +0.3160990766145945 0.06867510651068458 0 +1.60660919543384 -0.2639010815547618 0 +2.292196680836029 0.5750846522675859 0 +0.340983565583883 0.780105883023155 0 +2.343148656659063 -0.4971443955955768 0 +2.271441349574225 -0.5617898635702203 0 +2.412217099437968 -0.432433356864274 0 +0.3061851728548916 -0.2870277615307998 0 +0.3228173347704824 -0.3850204618234623 0 +0.2877689086379451 -0.1891712160588695 0 +0.9806515975170722 -0.5957433621615078 0 +0.9287162794524837 -0.7634541785665867 0 +0.5177683930857548 -0.903229484836428 0 +1.932296050592632 -0.9799559617404341 0 +1.952260496414172 -1.074449488234324 0 +1.928709089284781 0.7086454136105568 0 +1.855934172037655 0.6456449659531349 0 +1.533415691773723 -0.3274854553959254 0 +1.454698711607516 0.05377092004923041 0 +2.180389649174721 -0.5311493653398159 0 +2.199865026619679 -0.6259096452865763 0 +2.337176547266685 -0.05714450410849226 0 +2.038755155213219 0.5743345836550058 0 +1.135575451408918 0.3396009898866939 0 +0.4771396794280177 -0.7081130952824392 0 +0.4027721201049275 -0.7744522310864643 0 +0.3824465399358387 -0.6768692515213148 0 +0.3080402903828102 -0.7432506723796104 0 +0.2877370287218893 -0.6455754869113091 0 +1.101881951219032 0.08148152752510188 0 +1.763871614183603 0.6764615215155092 0 +0.4503835580265355 -0.1556068114478894 0 +0.632566981111008 0.2363831246931892 0 +1.793670206907043 -0.3175611240172921 0 +0.362356599019482 -0.579455259222713 0 +0.2677113947423239 -0.5481843425500235 0 +0.443707494953992 0.2980900457286038 0 +0.3288646793066477 0.4259388841338024 0 +0.9605100791895264 -0.4990066061557635 0 +1.033908560641241 -0.4332793724858559 0 +0.940405305577774 -0.4022518109128324 0 +1.013829932228847 -0.336519853545004 0 +0.9202890392163475 -0.3058451095425737 0 +0.9937694359179792 -0.239899511696669 0 +1.56413248199857 -0.8601005432516213 0 +1.543409204686064 -0.7645985722766309 0 +1.583367625381109 -0.9576032609065592 0 +2.623378315232558 0.1972691444050813 0 +2.023516787512333 -1.009422715973795 0 +1.238273867316278 1.117501155432726 0 +1.164974950479818 1.052573533764301 0 +2.681436119069887 -0.0838095735404164 0 +1.624572607370748 -1.146251670768804 0 +1.64499922432798 -1.24288112016449 0 +0.407307764386454 0.8580359361721285 0 +0.5100813574852967 0.8205587367813055 0 +0.4916104131589749 0.9170917428855204 0 +0.5860631972490069 0.8858505332471442 0 +0.6121016889898774 -0.9323518664412112 0 +2.044640992873963 -1.105620531594572 0 +0.8008327615694408 -0.9921831060609483 0 +0.8958277438549944 -1.024558438433343 0 +2.751840132913862 -0.02045848650450585 0 +0.328705160505622 -0.8398649024393451 0 +0.2676717305392418 0.7175311948233398 0 +2.360288280972721 -0.5893096271307168 0 +0.2353705784609577 0.4571072171448153 0 +0.2526100718353467 0.359109459880129 0 +0.1787157747249632 -0.6174781230696128 0 +1.782868072913681 0.5797310485347646 0 +2.09087188199921 0.730058555088994 0 +2.162344840823164 0.7938175837191023 0 +1.31065930369737 1.179422450605801 0 +1.406329386983427 1.151896233001099 0 +1.550299016074868 -1.210880065290754 0 +1.56967985957821 -1.306171971341387 0 +2.730685632806689 0.07286684243014088 0 +2.247593727838781 0.7621870864360962 0 +2.441760901288024 0.2575549135957235 0 +2.513188107104516 0.3207984264949175 0 +1.733905146035036 -0.03707655774041302 0 +1.712867926032907 0.05690485619308764 0 +1.620270015755464 0.087303822752628 0 +0.2408762425338777 -0.3467710099884304 0 +1.087476674130383 -0.2709629384392552 0 +1.06734421604058 -0.1743260421035474 0 +0.9736993672381626 -0.1432049585991914 0 +0.8873927170186519 -0.5671242893621992 0 +0.3368704359510533 -0.02776653063754379 0 +0.9701093574318338 -0.9607892336315242 0 +0.9885117886307269 -1.055254730809853 0 +1.68831686454669 -0.6353562743173443 0 +1.595965439034995 -0.6048425283534438 0 +1.576530118657099 -0.5111846678912171 0 +1.503224814143105 -0.5745108875356454 0 +1.047880213638852 -0.078281109723963 0 +1.77349198157034 -0.2249326952896376 0 +1.846970450116635 -0.1589030796975408 0 +0.2496890962686541 0.8095222213812268 0 +1.628520545520632 -0.3562012657476596 0 +0.5373245692920432 -0.9986134716618491 0 +1.483313825943263 -0.4789164823934015 0 +0.2383575595333854 -0.8117837415323318 0 +0.2442346274935371 0.008938239315517663 0 +1.970125971686124 -1.163291671707049 0 +0.2188485649665037 0.5554366233105215 0 +0.5652790078979357 0.9807662869009819 0 +0.6715673298624021 0.9598569352889107 0 +0.6827395150895362 0.8555907042915485 0 +0.7614047839588476 0.9176276492297789 0 +0.7766777032861765 0.822552131525611 0 +0.8510376577752209 0.8884119122961224 0 +0.8352730144810941 0.9815323170034025 0 +0.9253836470831445 0.9538363143148445 0 +0.9083303146343602 1.048587459835419 0 +0.9989451159710341 1.021118485750269 0 +1.145940689230145 1.150980685622412 0 +0.2208611911578329 0.1007393917236416 0 +0.1548992965598503 0.4980447923693059 0 +0.174894559586314 0.7401664611526513 0 +0.9838567463638608 1.129034714122018 0 +1.666591629635857 -1.343198501716262 0 +2.77363722711259 -0.1158806727709521 0 +2.705621822627424 -0.1825149960470372 0 +2.718155383490982 -0.2835318731968846 0 +1.380510836127955 1.259524643894944 0 +1.481031176406975 1.218251844248579 0 +1.477626035632671 -1.282687289662159 0 +1.490512107023264 -0.9351609105972751 0 +1.511752637080682 -1.028395433593109 0 +2.050158776006644 -1.198624902822289 0 +1.5937771324733 -1.414710907455635 0 +1.76194521742084 -1.376784031585603 0 +1.801545122344479 -1.477231109619628 0 +0.4729329516048922 1.007501249006219 0 +1.875218164258259 0.5499214439557409 0 +2.634825496477919 -0.2487980086899893 0 +2.658045949113887 -0.341866405376192 0 +2.566192874722099 -0.3088533703456752 0 +2.47183506335255 -0.2831755002755894 0 +2.827241009956478 0.04794294606058546 0 +1.689659985215873 0.6070211597357416 0 +0.1726496965657714 -0.516574104002634 0 +2.07106707272531 0.8241996421639843 0 +2.143013680007858 0.8880457283778636 0 +0.149439660895694 0.03398621693364427 0 +1.063436708546514 -0.9889438504519116 0 +1.693015640621668 0.1525503414607395 0 +1.785897365687708 0.122441802291681 0 +1.000507183284498 -0.6925594461495961 0 +1.673109798736283 0.2485490030672542 0 +1.802018774284471 0.482856228638075 0 +0.8466269439254621 -0.372777478507096 0 +0.5444187978159527 1.081116987496331 0 +1.740268147055011 -1.273562047919961 0 +1.831747532436276 -1.292967421038092 0 +2.422444762582003 0.3513085116593932 0 +2.492844136970048 0.4130142625683451 0 +2.34990073725528 0.289480328378022 0 +2.277033595688664 0.2270722675544977 0 +2.108589192033146 -0.5956073691901823 0 +0.2543206236305933 -0.9060512303551234 0 +2.00406723878846 -0.9154001176865159 0 +2.092659526567606 -0.9454528007209763 0 +2.075976151562045 -0.8515123156162431 0 +2.160314663054512 -0.8831216760885644 0 +2.14758032249469 -0.7874440589606064 0 +2.228512544306607 -0.8189908962590311 0 +2.219091781668819 -0.7234452198674429 0 +2.314688039278595 -0.7616341652390997 0 +2.29052264876197 -0.6595153706810232 0 +1.100456208224265 -1.178516421302775 0 +0.9441113398292391 0.8567387459659324 0 +1.500593103817231 1.121526231779827 0 +1.574300579164299 1.186703284207826 0 +1.556166739429528 1.282119797359469 0 +1.648498938751431 1.252112555673287 0 +1.638002030274533 1.360107129319726 0 +1.722279008080104 1.317688455273736 0 +1.741594551576261 1.221541002594577 0 +1.814854774413265 1.286136276767558 0 +1.83421914040563 1.190849293525825 0 +1.795823512050429 1.381982511352497 0 +1.902962203313603 1.252031125038001 0 +1.925176733549153 1.15829362561392 0 +1.542596859004945 1.380901629945827 0 +1.852959402384284 1.09521264830898 0 +1.944801267381724 1.064049157258444 0 +2.035423695535219 1.130181792884703 0 +2.041427409915229 1.028447665375757 0 +1.964449653165353 0.9688768373465446 0 +2.057508405653932 0.927037246585988 0 +2.145462300847784 0.9861101953774516 0 +1.667849687442869 1.155803226514254 0 +0.4430048603082608 -0.9660436088062607 0 +2.496270923043084 -0.3776527213748502 0 +1.888109336880159 1.357108688190537 0 +1.779370048547341 1.029926870231839 0 +1.161120651878182 -0.2059200014255919 0 +0.701536867123409 0.7568362727043958 0 +0.7955890374453343 0.7252922915786706 0 +2.128280257308702 -0.6907403976818443 0 +1.775460000234061 1.478219790543936 0 +1.391931673576778 0.7967872231671895 0 +1.411777182653298 0.700183983413381 0 +1.338001063642482 0.6344262592110161 0 +1.431649629276006 0.603650433668398 0 +1.505061644768484 0.6690146924196605 0 +1.485620116980518 0.7661245602092246 0 +1.57814296274888 0.7347949117410861 0 +2.869955402235835 -0.1409981927165168 0 +1.308569295753204 1.33824460919361 0 +2.056168717817046 -0.7557735119393379 0 +2.270699433339213 0.668786859277101 0 +2.356890483708497 0.6358924720115927 0 +2.381024255470419 0.5434262677017203 0 +2.311185003168833 0.4804065999512778 0 +2.402134783786429 0.4479923575593419 0 +2.487040628093558 0.5144430826687545 0 +1.912294463047348 -0.8851443468517701 0 +1.435000878287024 0.1499763098638802 0 +1.10758447127074 -0.3677901521040939 0 +1.355231753828774 -0.7193135642331882 0 +1.334745169672355 -0.6227526806533901 0 +1.428535886611289 -0.6537665458464502 0 +1.120659831263512 1.255184387497672 0 +1.426254520640023 1.055485311404372 0 +1.363792030965002 -1.168857034136678 0 +2.173778487222779 -0.09012511215138755 0 +2.245831493094159 -0.02642150072186519 0 +2.225700254324936 0.06851452812132007 0 +2.425889609514074 -0.5148799319352589 0 +0.9308149071409895 -1.214167627905651 0 +1.984370894835732 0.4137992686905493 0 +0.6065884110210252 0.7879792988555206 0 +0.7207994935081002 0.6589683207251731 0 +1.096409891738356 0.5336756623117337 0 +1.190051752018923 0.5023431763857391 0 +1.264068930155238 0.5681611387942364 0 +1.283234189119138 0.4709547737917719 0 +1.115924333676011 0.4364591019211056 0 +1.022228074020843 0.4677957657437113 0 +2.603950582001668 0.2905458516396847 0 +2.696730850641295 0.257381359099958 0 +2.672612968806175 0.3461585413341979 0 +2.714073367487492 0.1672788664490159 0 +2.114673856847839 0.1940263179526786 0 +2.134260036633453 0.09906882017761749 0 +0.9249846259185102 1.211809700314584 0 +1.244267598928653 0.6648417464913268 0 +0.8137964087146805 -0.635746124134966 0 +1.474319006764182 -0.04209229864585699 0 +0.9489459613125713 -0.8630899232456846 0 +1.021697486178835 -0.7927791407607639 0 +1.87819730936467 -1.136475808692365 0 +2.232236556242197 0.855706674964078 0 +2.069143927945819 -0.4072108166662325 0 +2.642240163169451 0.1034693813246131 0 +1.806890621426306 0.02849248382063613 0 +0.7419202828859017 -1.150938215373907 0 +0.08741859886414863 -0.1483635892981559 0 +0.1710982847357824 -0.1074787586612106 0 +0.1671183204631073 -0.199462014749349 0 +1.708821016143157 0.5105438494345451 0 +1.85908186467268 0.188841311272225 0 +0.7393308166334955 1.150599756658954 0 +0.7104502430284444 1.056586424187145 0 +1.127605213415444 -0.4643774925522848 0 +2.612292253415662 -0.1505099614052589 0 +2.140986992437694 -0.3429934802619009 0 +0.08497626902618706 0.2497135396519127 0 +0.1804887707156719 0.1890048668929901 0 +0.1731192024853135 0.2999070107691366 0 +0.2705216372674301 0.261733742590054 0 +0.8609855880192289 -0.0188300826719376 0 +0.0841076610704838 -0.3517122567704881 0 +1.679332161292374 -0.1988813733865108 0 +1.600613690257786 0.1835116548516844 0 +1.597209626688612 0.6375920182066288 0 +1.440011344670398 -0.2975461166458798 0 +0.08197704814514881 -0.8431339572842944 0 +0.08660136372090921 -0.6500020380311877 0 +0.2644909862468297 0.9950376347353433 0 +0.3358612020576677 0.932674889411485 0 +0.9005256858649157 -0.2101966162037339 0 +2.870909755775033 0.1442324247652847 0 +1.558658553876582 0.831648478780862 0 +1.947816276116115 0.6090402567559704 0 +1.593409390497746 1.089640073038475 0 +0.6862103358247165 0.398242033521777 0 +0.5044128633644173 0.007169906199925895 0 +2.478078399044795 -0.6874210113654856 0 +2.59488720247301 -0.5271698159773113 0 +0.4974887679526362 0.4606662939030417 0 +0.4234179001841954 -0.8702540428727269 0 +1.120389153879708 -1.274389642070316 0 +0.5381905096570332 0.2673089138627739 0 +2.59152929799806 0.5301835174373084 0 +2.265222118841534 -0.1207832223073254 0 +2.016634081478283 -0.5662891179944992 0 +0.5447268589550001 -0.1868899556666978 0 +0.2889356018790148 0.6206835767834658 0 +1.700460556632821 -0.2917810829748732 0 +0.4167665909908174 -0.4162532828969535 0 +2.366824041490284 -0.8380895676207409 0 +1.547407258891255 0.02254350559669929 0 +1.008290123807842 0.1124547994107435 0 +0.7265935820047944 0.2050098178984631 0 +0.6869297734993343 -0.8662790315491758 0 +0.7803463771768646 0.3673218008922535 0 +0.5315847821442059 0.7215213754841382 0 +0.2179349077054693 -0.7187837990779586 0 +0.7220651893685162 -1.05411128644223 0 +2.484534020759539 0.6879217040637371 0 +0.5110454833980695 -0.4474069673750314 0 +1.094999568328484 -0.7237630031015663 0 +1.041997408609916 0.3708738815354427 0 +1.938184734852359 -0.1883353516228442 0 +2.37136159884635 0.8327713985055112 0 +0.5986552351027508 -0.02383691489589651 0 +0.5514056877063412 -0.6419435458649181 0 +1.228811832336969 0.308299874033666 0 +2.408829957168932 0.006468221651530309 0 +1.780587193110542 -0.6653495761121306 0 +2.260859407815571 -0.9933383193972456 0 +0.4569550006866068 -0.610758351261387 0 +2.251090861539645 0.9950590992483959 0 +2.142465267867844 1.146706997501438 0 +2.369684152563134 0.1947140140969541 0 +1.181098688117647 -0.3023554150276917 0 +1.18479026334733 0.9557065953250659 0 +1.96592358033609 0.511536346161428 0 +2.057059626627441 0.4782643422811135 0 +0.8005154709735611 0.2706108878888539 0 +0.193396281893638 0.6520173008314821 0 +1.744222877071811 0.7713781927095279 0 +2.160836194007531 -0.4370286805016979 0 +1.971790514016812 -1.380099646351775 0 +2.086356331613974 1.223685625886798 0 +1.813842374844774 -0.4119936842460963 0 +1.195291904461324 0.05085691351155419 0 +1.523300863092096 0.5703197422381562 0 +0.524612284008366 -0.08979370878689452 0 +1.581155566170044 0.2807855676199763 0 +1.234638232810917 -0.14091089365703 0 +1.357357228003631 0.5377659446050793 0 +1.209363790794931 0.4052397848797549 0 +1.376171659208215 0.4394460647902004 0 +1.387501892013642 -0.4599973814676575 0 +1.919006316335088 -0.09431066716398652 0 +1.675800458061204 -0.9842414894105146 0 +1.527801406063034 0.1185270962385542 0 +0.43683276072194 -0.5134573136151641 0 +1.141444739131614 -0.1096961841160246 0 +0.8147525050692087 0.6274287195137331 0 +2.317087761363498 0.03769912793970322 0 +1.70835811514076 -0.7298528754342161 0 +1.670799299724302 0.704788762372871 0 +0.8888662047169227 0.6931080901052248 0 +0.7065151167682905 0.3017333262635898 0 +2.088778300008346 -0.501499137999647 0 +1.407239287671864 -0.5571475832968801 0 +2.296908689045305 0.1325530232269185 0 +0.8698976995563326 0.7908716618481556 0 +0.4304307330365878 -0.0587675233920362 0 +2.3950437247584 -0.3401627291370073 0 +1.037268934398064 0.8247333328799443 0 +0.3567903568832297 -0.1246808127950602 0 +2.134751855786465 -1.148457944677212 0 +0.6122416166800909 0.3328731308728888 0 +1.091758210515166 0.9876060137302077 0 +0.3424067950747109 -0.4822241381662636 0 +1.760395865427905 1.125418534336872 0 +1.616020458004874 -0.6994716587078791 0 +0.2523232217981752 -0.449395767605491 0 +0.5180018841200866 0.364148250793778 0 +2.205554368313409 0.1632834050962627 0 +1.448877671923348 -0.7464080890908091 0 +0.4235766658640582 0.3953631818068233 0 +0.3478538161365681 0.3283323464476304 0 +0.8062856759160743 -0.1815962478932338 0 +1.121981721514323 -0.01382865524508052 0 +2.186440251347262 0.2579820010615133 0 +1.394679801114937 -0.9116110591335906 0 +0.7525851617969527 -0.3449739024229931 0 +1.018084630363383 0.9223513716892653 0 +1.523391869326287 -0.66996978901361 0 +0.8666021887163563 -0.4706184986865763 0 +2.58253633448196 0.378983658648323 0 +1.028571912884606 0.0170828832450738 0 +0.7932487326612471 -0.538594076151968 0 +1.936763041292089 -1.291260415085975 0 +0.8120793725018218 1.07804857478313 0 +0.9076393572767969 -0.6647584130819035 0 +0.8265037423879102 -0.2772666649566562 0 +1.878829432365938 0.09389124181540048 0 +1.604785541073617 -1.053104336496752 0 +0.9552883527812805 -0.048379516424628 0 +1.072683455629571 1.084326883566799 0 +0.8809272875697576 -0.1144565083245146 0 +1.976663135520664 1.379140765316419 0 +1.11512285145393 -0.8226073449168365 0 +1.827079358351619 -0.06528575958435584 0 +1.04260488442517 -0.8912702062133704 0 +1.382506778695553 -1.266542576936614 0 +1.75352057644275 -0.1313067739479565 0 +1.156371930526657 -1.015708746973604 0 +0.08713434658510184 -0.5566242799442986 0 +2.111741546219724 -1.042045119124881 0 +1.722403330627229 -0.3837377517143971 0 +1.499363064075949 -1.383387981026202 0 +1.857536431102908 -1.386490508246429 0 +2.555634903721481 -0.4484199937105675 0 +0.2910244468105995 0.1641487439622285 0 +1.649792662958647 -0.4481181123071194 0 +2.379277177944407 -0.6807895912996579 0 +2.020168271356481 0.6698953238823467 0 +1.55557703596341 -0.4191629428962571 0 +2.000411963038973 0.7672247119777343 0 +1.217793692860795 1.210800526437012 0 +2.837772707571131 -0.05147009635563376 0 +0.2619659926072226 -0.0908120237820301 0 +1.081130477831467 -1.083447510640043 0 +1.45805643244265 -0.3903177727730765 0 +1.006651898982827 -1.149086637303177 0 +0.2699251621421876 -0.9985719155785217 0 +0.8186653344314256 -1.087236868460385 0 +0.458853303928785 -1.060924232038103 0 +0.7071787171499422 -0.9602529182206569 0 +0.3470960059126059 -0.9349617152680724 0 +1.990521072869222 1.22945981946729 0 +0.9140215956271306 -1.119247327861697 0 +2.339545143671266 0.7391568332714084 0 +0.5532929443226324 -1.092140223931859 0 +0.08276633193241112 0.7570506555674084 0 +0.6295243282312534 -1.026132717070674 0 +0.1629129294402498 0.398992311142578 0 +1.469605296245945 -0.8386511884825028 0 +0.07948228598767916 0.5466923184612621 0 +0.2341271811263808 0.8993528425586682 0 +0.08294659388553333 -0.9396853030078614 0 +0.08023489474607826 0.9425494374594293 0 +2.977895490960575 -9.523333441530228e-05 0 +2.443868003939483 0.6103824745549471 0 +1.877145499433428 -1.536207468781666 0 +1.868272063780542 1.519908332209007 0 +1.599204850148483 1.444212583097136 0 +2.761216887846132 0.315058318213681 0 +1.532383345940758 -1.121283100960401 0 +0.1631840835616793 -0.302469061832201 0 +1.457551129093008 -1.191794554829202 0 +1.470322951384884 1.310502575006201 0 +0.1693381734790117 -0.8749315705613937 0 +2.114691257265986 1.067166771162454 0 +0.1666579798896998 -0.4077208253100266 0 +2.175751248312087 -0.9756679528807638 0 +2.448665299961093 -0.5986910734967499 0 +2.788594855225449 0.1307757467968724 0 +1.894597702653523 -1.221852541029811 0 +0.6334249569932671 1.035222733457481 0 +1.063824179168119 1.168543613976851 0 +2.508942469204577 -0.5208349577847824 0 +0.08035252887371536 0.448456610513092 0 +0.07007122815667005 0.05312551916221901 0 +0.4159151049319372 0.9485774999105097 0 +0.1669124107428758 0.8317477390917597 0 +2.560046452297098 0.4574319849848215 0 +1.282510219835313 1.259336124515824 0 +2.721952354086187 -0.3822421444431895 0 +2.207994889161451 0.9304186304169653 0 +0.1547790566034424 -0.7887226850789056 0 +0.8997199316327488 1.132932972350567 0 +2.238114777264129 -0.9095561400754548 0 +2.894465082053663 -0.0002183352579120658 0 +1.846194268348216 1.439983203197538 0 +2.596371679179886 -0.3831793755768125 0 +0.2321472136937756 -0.247335147986929 0 +0.3135103788678911 0.8556622653340803 0 +1.95772387422319 1.308194698053915 0 +1.989351977088674 -1.240091795530921 0 +1.72204070010579 1.395748497036147 0 +0.4471831779348628 1.082202632306775 0 +2.296658316430117 0.82126740672457 0 +0.1487499585526239 0.5918539403835354 0 +0.147436504354135 0.1082118336408841 0 +2.482708043745313 -0.4510593591952317 0 +0.1406676975399576 -0.700000382834437 0 +2.409265656730445 0.6922442552565854 0 +2.784602164368523 -0.31710221830945 0 +1.466856513722635 1.404512084323795 0 +0.1455530198786785 0.8999086394747254 0 +0.7584184149856146 0.9938142675480894 0 +2.728810477541066 0.3941876147619384 0 +0.1809596692263014 -0.03444482201385127 0 +2.297615707592562 -0.8483220051923679 0 +2.110259368869129 -1.240166775647858 0 +0.2234755292272363 -0.1543615802394423 0 +$EndNodes +$Elements +6 1796 1 1796 +1 1 1 20 +1 1 6 +2 6 7 +3 7 8 +4 8 9 +5 9 10 +6 10 11 +7 11 12 +8 12 13 +9 13 14 +10 14 15 +11 15 16 +12 16 17 +13 17 18 +14 18 19 +15 19 20 +16 20 21 +17 21 22 +18 22 23 +19 23 24 +20 24 2 +1 2 1 20 +21 2 25 +22 25 26 +23 26 27 +24 27 28 +25 28 29 +26 29 30 +27 30 31 +28 31 32 +29 32 33 +30 33 34 +31 34 35 +32 35 36 +33 36 37 +34 37 38 +35 38 39 +36 39 40 +37 40 41 +38 41 42 +39 42 43 +40 43 3 +1 3 1 21 +41 3 44 +42 44 45 +43 45 46 +44 46 47 +45 47 48 +46 48 49 +47 49 50 +48 50 51 +49 51 52 +50 52 53 +51 53 54 +52 54 55 +53 55 56 +54 56 57 +55 57 58 +56 58 59 +57 59 60 +58 60 61 +59 61 62 +60 62 63 +61 63 4 +1 4 1 21 +62 4 64 +63 64 65 +64 65 66 +65 66 67 +66 67 68 +67 68 69 +68 69 70 +69 70 71 +70 71 72 +71 72 73 +72 73 74 +73 74 75 +74 75 76 +75 76 77 +76 77 78 +77 78 79 +78 79 80 +79 80 81 +80 81 82 +81 82 83 +82 83 5 +1 5 1 20 +83 5 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 97 +97 97 98 +98 98 99 +99 99 100 +100 100 101 +101 101 102 +102 102 1 +2 1 2 1694 +103 794 740 814 +104 646 119 648 +105 730 591 741 +106 525 124 526 +107 140 536 814 +108 591 730 856 +109 520 674 816 +110 104 523 651 +111 87 88 813 +112 118 522 737 +113 526 124 527 +114 126 86 534 +115 524 126 534 +116 536 140 847 +117 126 524 535 +118 86 87 534 +119 471 684 810 +120 558 794 814 +121 523 104 863 +122 119 646 850 +123 519 628 822 +124 522 118 837 +125 534 87 813 +126 678 852 857 +127 628 519 863 +128 674 676 816 +129 621 136 700 +130 116 528 614 +131 283 531 532 +132 531 449 532 +133 545 471 810 +134 20 841 865 +135 852 486 857 +136 546 351 594 +137 374 676 782 +138 676 470 782 +139 771 462 811 +140 740 140 814 +141 580 127 883 +142 127 580 849 +143 134 859 864 +144 547 546 594 +145 84 85 536 +146 139 543 688 +147 594 592 595 +148 841 521 865 +149 456 395 557 +150 124 525 613 +151 572 103 707 +152 807 630 853 +153 621 700 869 +154 535 557 558 +155 326 351 821 +156 595 112 729 +157 859 634 864 +158 786 191 840 +159 103 572 818 +160 382 539 541 +161 207 199 554 +162 88 115 813 +163 306 308 542 +164 741 591 833 +165 111 771 811 +166 544 472 666 +167 382 541 542 +168 196 544 666 +169 99 122 830 +170 104 628 863 +171 539 382 671 +172 535 558 814 +173 85 126 536 +174 605 585 883 +175 530 115 807 +176 592 591 856 +177 351 546 821 +178 531 283 786 +179 395 402 557 +180 595 592 856 +181 690 425 734 +182 528 116 854 +183 662 715 829 +184 780 627 789 +185 65 66 613 +186 628 128 822 +187 538 690 734 +188 524 456 557 +189 448 780 789 +190 308 382 542 +191 115 530 813 +192 837 138 868 +193 648 119 860 +194 532 449 799 +195 214 538 734 +196 538 214 554 +197 414 391 796 +198 681 612 760 +199 214 207 554 +200 751 504 764 +201 533 462 771 +202 30 113 556 +203 721 106 835 +204 497 627 764 +205 530 807 853 +206 351 593 594 +207 588 40 849 +208 504 497 764 +209 522 837 868 +210 414 552 656 +211 688 543 860 +212 332 589 590 +213 656 552 718 +214 126 535 536 +215 526 539 671 +216 526 527 539 +217 599 141 803 +218 322 320 600 +219 554 199 666 +220 542 598 768 +221 598 409 768 +222 531 786 840 +223 614 528 870 +224 675 470 676 +225 472 554 666 +226 535 524 557 +227 679 387 808 +228 544 196 681 +229 351 325 593 +230 552 414 796 +231 540 527 871 +232 114 540 871 +233 306 542 768 +234 332 590 593 +235 29 30 556 +236 627 497 789 +237 122 597 830 +238 127 605 883 +239 676 374 816 +240 828 564 832 +241 122 828 832 +242 560 620 621 +243 559 348 620 +244 544 681 760 +245 560 559 620 +246 408 468 573 +247 536 535 814 +248 324 596 775 +249 144 65 613 +250 66 124 613 +251 136 621 846 +252 84 536 847 +253 208 213 667 +254 656 804 806 +255 679 499 705 +256 550 356 551 +257 715 463 829 +258 547 594 595 +259 499 436 705 +260 396 758 765 +261 314 348 561 +262 40 588 892 +263 804 274 806 +264 325 332 593 +265 348 559 561 +266 510 669 894 +267 871 527 891 +268 661 551 798 +269 117 545 810 +270 332 322 600 +271 109 647 791 +272 589 332 600 +273 423 408 573 +274 320 324 600 +275 198 200 553 +276 366 790 793 +277 604 569 615 +278 571 423 573 +279 423 571 604 +280 790 490 793 +281 610 612 681 +282 418 326 821 +283 356 550 553 +284 600 324 775 +285 721 835 885 +286 825 574 827 +287 562 561 731 +288 577 596 691 +289 690 418 819 +290 758 633 765 +291 499 679 808 +292 596 324 691 +293 595 729 872 +294 819 418 821 +295 213 221 667 +296 542 541 598 +297 385 612 689 +298 200 356 553 +299 141 599 877 +300 609 610 744 +301 356 208 667 +302 642 748 750 +303 610 681 744 +304 787 253 797 +305 551 356 667 +306 609 197 748 +307 571 569 604 +308 562 731 765 +309 391 653 796 +310 680 267 746 +311 590 592 593 +312 540 114 878 +313 640 642 749 +314 197 609 744 +315 265 661 798 +316 314 561 562 +317 731 396 765 +318 539 527 540 +319 646 647 850 +320 297 563 604 +321 748 197 750 +322 642 344 749 +323 612 611 689 +324 553 680 746 +325 593 592 594 +326 557 402 558 +327 567 345 615 +328 198 553 746 +329 669 510 862 +330 563 297 702 +331 623 267 754 +332 569 567 615 +333 576 577 691 +334 487 601 732 +335 610 607 611 +336 490 653 793 +337 297 604 615 +338 555 366 787 +339 601 169 732 +340 537 123 884 +341 476 576 629 +342 610 611 612 +343 576 317 629 +344 702 243 763 +345 565 345 567 +346 107 574 698 +347 516 518 788 +348 560 621 869 +349 267 680 754 +350 251 266 638 +351 274 549 806 +352 575 277 766 +353 142 843 855 +354 420 820 826 +355 579 582 596 +356 631 632 701 +357 345 565 622 +358 643 426 719 +359 783 247 802 +360 266 602 638 +361 644 643 719 +362 127 42 605 +363 348 619 620 +364 305 306 768 +365 607 606 611 +366 98 99 830 +367 555 787 797 +368 779 649 785 +369 632 424 701 +370 582 581 583 +371 160 163 626 +372 366 555 790 +373 608 641 652 +374 115 89 145 +375 653 490 796 +376 606 315 611 +377 579 581 582 +378 348 313 619 +379 563 423 604 +380 514 575 766 +381 301 315 606 +382 38 116 614 +383 280 390 652 +384 584 583 586 +385 232 251 638 +386 380 476 629 +387 582 583 584 +388 493 825 827 +389 612 385 760 +390 85 86 126 +391 41 42 127 +392 92 107 698 +393 442 624 670 +394 421 177 623 +395 563 702 763 +396 643 640 749 +397 584 586 587 +398 458 637 713 +399 405 616 617 +400 624 165 670 +401 299 296 622 +402 656 718 804 +403 602 266 637 +404 648 479 660 +405 577 579 596 +406 583 585 599 +407 145 129 146 +408 313 342 619 +409 174 421 654 +410 642 641 748 +411 317 576 691 +412 405 371 616 +413 297 257 702 +414 590 587 591 +415 402 365 657 +416 579 580 581 +417 42 43 605 +418 278 280 652 +419 296 345 622 +420 268 631 701 +421 330 299 622 +422 282 301 606 +423 177 179 623 +424 586 583 599 +425 315 312 316 +426 553 550 680 +427 632 633 758 +428 268 229 631 +429 344 642 750 +430 390 608 652 +431 228 224 650 +432 364 330 416 +433 572 573 818 +434 104 35 628 +435 163 751 764 +436 316 318 319 +437 583 581 585 +438 271 219 636 +439 301 312 315 +440 319 318 320 +441 633 228 650 +442 417 451 462 +443 476 529 576 +444 284 747 756 +445 158 160 626 +446 539 540 541 +447 90 129 145 +448 148 150 151 +449 417 416 451 +450 416 330 622 +451 654 421 708 +452 151 152 283 +453 637 266 713 +454 576 529 577 +455 364 416 417 +456 107 93 635 +457 611 315 689 +458 128 37 614 +459 316 317 318 +460 88 89 115 +461 321 320 322 +462 323 322 325 +463 625 158 626 +464 345 295 615 +465 38 39 116 +466 483 661 805 +467 219 212 636 +468 590 591 592 +469 625 626 627 +470 624 487 732 +471 549 274 809 +472 319 385 689 +473 326 325 351 +474 199 195 666 +475 316 319 689 +476 301 311 312 +477 627 626 764 +478 382 333 671 +479 609 607 610 +480 146 147 148 +481 147 129 698 +482 390 606 607 +483 146 129 147 +484 639 393 640 +485 319 320 321 +486 203 209 644 +487 198 195 199 +488 507 462 533 +489 747 601 756 +490 154 156 191 +491 390 282 606 +492 220 234 649 +493 407 409 634 +494 191 156 625 +495 589 587 590 +496 189 190 195 +497 321 322 323 +498 200 199 207 +499 655 414 656 +500 120 533 898 +501 451 565 566 +502 182 185 267 +503 565 416 622 +504 392 414 655 +505 325 322 332 +506 90 91 129 +507 734 425 735 +508 156 158 625 +509 574 147 698 +510 151 150 152 +511 275 393 639 +512 189 195 198 +513 636 734 735 +514 323 325 326 +515 36 128 628 +516 208 207 212 +517 502 404 705 +518 295 297 615 +519 198 199 200 +520 295 257 297 +521 203 644 719 +522 213 212 219 +523 229 226 631 +524 277 761 766 +525 36 37 128 +526 131 33 651 +527 405 617 618 +528 596 582 775 +529 474 547 658 +530 220 219 234 +531 160 162 163 +532 450 648 660 +533 185 187 189 +534 346 175 347 +535 171 172 175 +536 212 214 636 +537 224 222 650 +538 234 271 272 +539 280 282 390 +540 272 273 313 +541 399 474 480 +542 200 207 208 +543 314 313 348 +544 164 166 167 +545 502 705 812 +546 640 393 641 +547 182 184 185 +548 638 603 757 +549 269 355 672 +550 282 300 301 +551 843 683 855 +552 566 567 568 +553 371 399 616 +554 172 174 654 +555 640 641 642 +556 89 90 145 +557 222 220 649 +558 237 269 672 +559 168 170 171 +560 292 442 670 +561 468 407 634 +562 641 608 748 +563 243 240 659 +564 195 190 196 +565 37 38 614 +566 354 283 532 +567 208 212 213 +568 213 219 220 +569 342 371 405 +570 341 450 660 +571 387 388 483 +572 631 228 632 +573 151 354 630 +574 387 483 808 +575 237 229 268 +576 237 268 269 +577 487 488 601 +578 407 377 409 +579 346 347 404 +580 296 295 345 +581 171 175 346 +582 171 346 682 +583 163 162 164 +584 269 268 270 +585 620 618 621 +586 479 381 660 +587 421 623 754 +588 269 270 305 +589 222 649 650 +590 347 353 387 +591 240 238 659 +592 458 460 637 +593 346 420 682 +594 476 528 529 +595 404 347 679 +596 568 569 570 +597 179 182 623 +598 212 207 214 +599 305 270 306 +600 226 224 228 +601 492 401 655 +602 92 93 107 +603 608 607 609 +604 167 166 168 +605 226 228 631 +606 133 663 665 +607 275 278 393 +608 272 313 314 +609 171 170 172 +610 484 550 551 +611 313 273 342 +612 259 275 639 +613 148 151 630 +614 663 664 665 +615 451 416 565 +616 272 271 273 +617 148 149 150 +618 258 257 295 +619 639 643 644 +620 308 333 382 +621 570 571 572 +622 397 482 645 +623 211 357 677 +624 130 95 662 +625 391 291 653 +626 444 446 487 +627 169 601 747 +628 94 130 635 +629 493 492 549 +630 151 283 354 +631 291 289 653 +632 234 219 271 +633 342 405 619 +634 392 391 414 +635 189 187 190 +636 401 392 655 +637 399 480 616 +638 511 512 513 +639 442 444 624 +640 381 339 660 +641 408 407 468 +642 209 259 644 +643 602 513 603 +644 514 516 575 +645 380 475 476 +646 450 645 646 +647 444 487 624 +648 34 104 651 +649 659 238 672 +650 357 204 709 +651 308 309 333 +652 331 330 364 +653 280 281 282 +654 341 397 450 +655 34 35 104 +656 286 262 366 +657 306 307 308 +658 32 131 668 +659 278 279 280 +660 378 377 407 +661 646 645 647 +662 179 181 182 +663 483 484 661 +664 566 565 567 +665 355 305 377 +666 513 512 514 +667 133 13 663 +668 230 229 237 +669 454 465 525 +670 454 381 465 +671 464 401 492 +672 333 334 335 +673 337 291 391 +674 174 177 421 +675 417 462 507 +676 393 278 652 +677 487 446 488 +678 335 339 381 +679 450 397 645 +680 316 312 317 +681 339 341 660 +682 639 640 643 +683 577 578 579 +684 221 220 222 +685 632 228 633 +686 674 675 676 +687 335 381 454 +688 195 196 666 +689 608 609 748 +690 465 479 543 +691 483 388 484 +692 474 546 547 +693 146 148 630 +694 663 105 664 +695 227 226 229 +696 347 175 353 +697 480 474 658 +698 113 668 669 +699 225 224 226 +700 457 686 867 +701 483 805 808 +702 460 510 511 +703 223 222 224 +704 538 419 690 +705 387 353 388 +706 152 153 154 +707 154 155 156 +708 511 513 602 +709 511 510 512 +710 484 551 661 +711 329 299 330 +712 311 380 629 +713 93 94 635 +714 602 603 638 +715 156 157 158 +716 35 36 628 +717 584 587 589 +718 94 95 130 +719 158 159 160 +720 246 244 257 +721 259 260 275 +722 352 326 418 +723 275 276 278 +724 420 404 502 +725 167 168 682 +726 148 147 149 +727 333 309 334 +728 160 161 162 +729 419 418 690 +730 335 334 339 +731 132 673 674 +732 259 639 644 +733 399 473 474 +734 723 427 728 +735 190 197 744 +736 267 185 746 +737 164 165 166 +738 450 646 648 +739 465 381 479 +740 568 567 569 +741 308 307 309 +742 189 198 746 +743 168 169 170 +744 32 33 131 +745 694 103 818 +746 673 108 675 +747 14 105 663 +748 185 184 187 +749 242 240 243 +750 306 270 307 +751 14 15 105 +752 209 231 259 +753 371 386 399 +754 182 267 623 +755 641 393 652 +756 337 391 392 +757 472 419 538 +758 570 569 571 +759 674 673 675 +760 390 607 608 +761 216 211 677 +762 442 443 444 +763 96 110 662 +764 18 108 673 +765 572 571 573 +766 258 295 296 +767 342 343 371 +768 247 216 677 +769 619 618 620 +770 257 244 702 +771 292 441 442 +772 372 458 713 +773 514 515 516 +774 33 34 651 +775 182 181 184 +776 516 517 518 +777 315 316 689 +778 482 559 560 +779 757 603 761 +780 395 365 402 +781 117 11 678 +782 113 31 668 +783 211 204 357 +784 454 525 526 +785 95 96 662 +786 397 481 482 +787 269 305 355 +788 341 389 397 +789 347 387 679 +790 464 492 493 +791 685 123 686 +792 301 300 311 +793 333 335 671 +794 16 17 132 +795 454 526 671 +796 339 340 341 +797 277 575 769 +798 12 13 133 +799 132 17 673 +800 31 32 668 +801 320 318 324 +802 236 216 247 +803 378 407 408 +804 444 445 446 +805 12 133 678 +806 355 377 378 +807 230 237 238 +808 165 624 732 +809 13 14 663 +810 238 237 672 +811 263 262 286 +812 288 723 728 +813 435 361 699 +814 460 511 637 +815 551 667 798 +816 125 8 684 +817 172 173 174 +818 213 220 221 +819 130 662 829 +820 200 208 356 +821 488 489 498 +822 287 286 289 +823 154 153 155 +824 385 321 738 +825 8 9 684 +826 175 172 654 +827 319 321 385 +828 227 229 230 +829 250 248 253 +830 246 257 258 +831 96 97 110 +832 429 431 437 +833 252 285 696 +834 30 31 113 +835 280 279 281 +836 156 155 157 +837 18 19 108 +838 335 454 671 +839 458 459 460 +840 17 18 673 +841 158 157 159 +842 256 254 262 +843 10 11 117 +844 11 12 678 +845 223 224 225 +846 168 171 682 +847 221 222 223 +848 372 457 458 +849 460 509 510 +850 160 159 161 +851 303 434 703 +852 7 125 683 +853 303 350 434 +854 210 215 710 +855 21 22 118 +856 282 281 300 +857 6 7 683 +858 7 8 125 +859 206 202 712 +860 23 24 138 +861 225 226 227 +862 27 28 123 +863 99 100 122 +864 27 123 685 +865 26 27 685 +866 64 65 144 +867 62 63 139 +868 101 102 142 +869 25 26 143 +870 61 62 688 +871 143 26 685 +872 242 243 244 +873 62 139 688 +874 404 679 705 +875 66 67 124 +876 60 61 119 +877 476 475 528 +878 346 404 420 +879 119 61 688 +880 259 231 260 +881 275 260 276 +882 164 162 165 +883 323 326 352 +884 278 276 279 +885 233 218 692 +886 484 485 550 +887 514 512 515 +888 405 618 619 +889 168 166 169 +890 290 289 291 +891 152 150 153 +892 69 70 114 +893 442 441 443 +894 57 58 109 +895 437 431 438 +896 458 457 459 +897 236 247 248 +898 294 252 696 +899 196 190 744 +900 338 376 427 +901 161 292 670 +902 511 602 637 +903 367 294 369 +904 285 233 692 +905 426 192 719 +906 400 392 401 +907 444 443 445 +908 342 273 343 +909 339 334 340 +910 363 374 439 +911 129 91 698 +912 361 363 699 +913 516 515 517 +914 358 499 500 +915 352 418 419 +916 379 369 440 +917 362 360 693 +918 336 291 337 +919 359 361 435 +920 243 659 763 +921 218 206 712 +922 474 473 546 +923 427 428 429 +924 518 517 523 +925 250 253 254 +926 252 233 285 +927 472 538 554 +928 341 340 389 +929 271 636 735 +930 399 386 473 +931 70 71 695 +932 263 286 287 +933 460 459 509 +934 256 262 263 +935 397 389 481 +936 659 672 739 +937 429 437 728 +938 174 176 177 +939 482 481 559 +940 488 446 489 +941 469 440 470 +942 761 603 766 +943 215 359 710 +944 91 92 698 +945 56 57 700 +946 309 307 424 +947 194 202 203 +948 304 368 372 +949 172 170 173 +950 188 183 432 +951 463 401 464 +952 114 70 695 +953 427 376 428 +954 371 343 386 +955 422 408 423 +956 429 430 431 +957 270 268 701 +958 398 362 693 +959 373 362 398 +960 201 193 204 +961 239 238 240 +962 372 406 457 +963 438 471 545 +964 403 398 491 +965 71 72 134 +966 415 375 461 +967 363 439 699 +968 367 369 379 +969 438 431 471 +970 162 161 670 +971 369 294 696 +972 353 175 654 +973 509 537 556 +974 57 109 700 +975 429 428 430 +976 372 368 406 +977 406 368 467 +978 251 264 266 +979 186 192 426 +980 562 779 785 +981 415 503 597 +982 287 289 290 +983 203 206 209 +984 255 302 303 +985 505 466 564 +986 215 211 216 +987 417 507 657 +988 177 178 179 +989 235 216 236 +990 210 204 211 +991 303 349 350 +992 350 410 412 +993 337 392 400 +994 501 467 522 +995 379 440 469 +996 509 459 537 +997 415 461 503 +998 249 248 250 +999 406 467 501 +1000 410 349 411 +1001 209 217 231 +1002 508 469 521 +1003 550 485 680 +1004 484 388 485 +1005 166 165 732 +1006 55 56 136 +1007 577 529 578 +1008 244 243 702 +1009 349 302 706 +1010 179 180 181 +1011 430 428 466 +1012 312 311 629 +1013 192 194 719 +1014 379 469 508 +1015 304 367 368 +1016 403 506 520 +1017 446 445 687 +1018 403 491 506 +1019 72 73 694 +1020 161 205 292 +1021 470 440 782 +1022 304 294 367 +1023 432 183 743 +1024 255 254 256 +1025 338 375 376 +1026 292 413 441 +1027 364 417 657 +1028 290 291 336 +1029 373 398 403 +1030 430 466 505 +1031 520 506 548 +1032 264 252 294 +1033 692 218 712 +1034 236 248 249 +1035 376 375 415 +1036 579 578 580 +1037 263 287 288 +1038 174 173 176 +1039 363 373 374 +1040 215 216 235 +1041 250 254 255 +1042 264 294 304 +1043 350 349 410 +1044 71 134 695 +1045 410 411 486 +1046 662 110 715 +1047 303 302 349 +1048 359 435 710 +1049 338 427 723 +1050 361 362 363 +1051 210 211 215 +1052 336 337 711 +1053 363 362 373 +1054 190 187 197 +1055 232 218 233 +1056 428 376 697 +1057 589 600 775 +1058 215 235 359 +1059 203 202 206 +1060 201 204 210 +1061 73 74 103 +1062 411 349 706 +1063 255 256 302 +1064 251 233 252 +1065 163 164 751 +1066 318 317 691 +1067 241 240 242 +1068 161 159 205 +1069 245 244 246 +1070 400 401 463 +1071 378 408 422 +1072 251 252 264 +1073 54 55 716 +1074 249 250 703 +1075 184 181 344 +1076 232 233 251 +1077 290 336 338 +1078 338 336 375 +1079 230 238 239 +1080 358 500 720 +1081 217 206 218 +1082 307 270 701 +1083 298 296 299 +1084 361 360 362 +1085 155 153 274 +1086 471 431 714 +1087 368 367 704 +1088 445 443 555 +1089 217 218 232 +1090 340 334 725 +1091 467 368 704 +1092 489 446 687 +1093 367 379 704 +1094 276 260 277 +1095 431 430 714 +1096 706 302 717 +1097 165 162 670 +1098 223 225 265 +1099 359 360 361 +1100 304 372 713 +1101 209 206 217 +1102 188 432 709 +1103 337 400 711 +1104 376 415 697 +1105 334 309 725 +1106 194 193 201 +1107 192 188 193 +1108 74 75 707 +1109 180 178 183 +1110 194 201 202 +1111 441 413 490 +1112 179 178 180 +1113 194 203 719 +1114 186 183 188 +1115 136 56 700 +1116 309 424 725 +1117 204 193 709 +1118 255 303 703 +1119 149 147 574 +1120 389 340 396 +1121 424 307 701 +1122 266 264 713 +1123 413 205 552 +1124 177 176 178 +1125 359 235 360 +1126 415 597 697 +1127 461 375 711 +1128 311 370 380 +1129 379 508 704 +1130 380 452 475 +1131 250 255 703 +1132 422 423 563 +1133 181 180 724 +1134 169 166 732 +1135 466 428 697 +1136 467 704 737 +1137 192 193 194 +1138 186 188 192 +1139 256 263 717 +1140 559 481 561 +1141 53 54 106 +1142 433 419 472 +1143 292 205 413 +1144 430 505 714 +1145 681 196 744 +1146 693 360 722 +1147 388 353 708 +1148 180 183 186 +1149 134 72 694 +1150 327 261 494 +1151 343 273 735 +1152 239 240 241 +1153 281 279 310 +1154 636 214 734 +1155 75 76 135 +1156 242 244 245 +1157 427 429 728 +1158 258 296 298 +1159 186 426 724 +1160 302 256 717 +1161 704 508 737 +1162 264 304 713 +1163 633 650 779 +1164 52 53 721 +1165 329 330 331 +1166 672 355 739 +1167 235 236 722 +1168 365 364 657 +1169 236 249 722 +1170 375 336 711 +1171 273 271 735 +1172 193 188 709 +1173 494 261 726 +1174 496 497 504 +1175 184 344 750 +1176 239 241 358 +1177 263 288 717 +1178 245 261 293 +1179 386 343 425 +1180 358 436 499 +1181 51 52 137 +1182 76 77 727 +1183 159 157 718 +1184 452 370 453 +1185 344 181 724 +1186 485 388 708 +1187 327 495 496 +1188 396 340 725 +1189 513 514 766 +1190 353 654 708 +1191 180 186 724 +1192 170 169 747 +1193 352 419 433 +1194 50 51 729 +1195 461 831 838 +1196 48 49 730 +1197 426 643 749 +1198 227 230 720 +1199 176 173 284 +1200 358 241 436 +1201 73 103 694 +1202 452 453 519 +1203 288 287 723 +1204 488 498 756 +1205 77 78 111 +1206 331 364 365 +1207 55 136 716 +1208 478 456 524 +1209 321 323 738 +1210 311 300 370 +1211 355 378 739 +1212 49 50 112 +1213 245 246 261 +1214 287 290 723 +1215 202 201 736 +1216 360 235 722 +1217 481 389 731 +1218 712 202 736 +1219 433 472 544 +1220 201 210 736 +1221 290 338 723 +1222 380 370 452 +1223 425 343 735 +1224 210 710 736 +1225 293 261 327 +1226 328 383 384 +1227 205 159 718 +1228 327 494 495 +1229 522 467 737 +1230 384 447 448 +1231 328 299 329 +1232 246 258 726 +1233 496 495 497 +1234 728 437 755 +1235 230 239 720 +1236 447 383 449 +1237 103 74 707 +1238 377 305 768 +1239 232 638 757 +1240 298 299 328 +1241 552 205 718 +1242 626 163 764 +1243 245 293 742 +1244 389 396 731 +1245 47 48 741 +1246 300 281 733 +1247 722 249 745 +1248 378 422 739 +1249 561 481 731 +1250 703 434 745 +1251 106 54 716 +1252 185 189 746 +1253 317 312 629 +1254 314 562 785 +1255 239 358 720 +1256 447 449 531 +1257 75 135 707 +1258 384 383 447 +1259 693 722 745 +1260 261 246 726 +1261 258 298 726 +1262 183 178 743 +1263 424 632 758 +1264 242 245 742 +1265 241 242 742 +1266 328 329 383 +1267 323 352 738 +1268 281 310 733 +1269 708 421 754 +1270 53 106 721 +1271 187 184 750 +1272 80 81 120 +1273 46 47 121 +1274 518 773 788 +1275 135 76 727 +1276 324 318 691 +1277 178 176 743 +1278 453 370 733 +1279 370 300 733 +1280 625 627 780 +1281 137 52 721 +1282 265 225 752 +1283 249 703 745 +1284 491 398 767 +1285 436 241 742 +1286 217 232 757 +1287 502 812 817 +1288 176 284 743 +1289 477 478 530 +1290 173 170 747 +1291 437 438 774 +1292 51 137 729 +1293 455 456 477 +1294 720 500 752 +1295 77 111 727 +1296 394 365 395 +1297 164 167 751 +1298 352 433 738 +1299 227 720 752 +1300 394 395 455 +1301 659 739 763 +1302 112 50 729 +1303 284 173 747 +1304 478 524 534 +1305 277 260 761 +1306 49 112 730 +1307 385 738 760 +1308 225 227 752 +1309 584 589 775 +1310 154 191 786 +1311 455 395 456 +1312 78 79 771 +1313 331 365 394 +1314 687 783 802 +1315 344 724 749 +1316 350 412 770 +1317 197 187 750 +1318 601 488 756 +1319 580 578 588 +1320 485 708 754 +1321 736 710 762 +1322 712 736 762 +1323 48 730 741 +1324 288 728 755 +1325 649 234 785 +1326 81 82 740 +1327 477 456 478 +1328 724 426 749 +1329 717 288 755 +1330 680 485 754 +1331 438 545 777 +1332 449 383 753 +1333 755 437 774 +1334 231 217 757 +1335 774 438 777 +1336 725 424 758 +1337 276 277 769 +1338 491 767 770 +1339 283 152 786 +1340 706 717 755 +1341 328 384 759 +1342 310 279 769 +1343 739 422 763 +1344 745 434 767 +1345 765 633 779 +1346 260 231 761 +1347 329 331 753 +1348 231 757 761 +1349 383 329 753 +1350 817 496 820 +1351 693 745 767 +1352 396 725 758 +1353 272 314 785 +1354 545 117 857 +1355 726 298 759 +1356 603 513 766 +1357 756 498 784 +1358 494 726 759 +1359 121 47 741 +1360 425 690 819 +1361 298 328 759 +1362 738 433 760 +1363 440 369 781 +1364 433 544 760 +1365 82 83 140 +1366 44 45 141 +1367 366 262 787 +1368 331 394 753 +1369 422 563 763 +1370 759 384 776 +1371 710 435 762 +1372 692 712 762 +1373 253 248 783 +1374 409 377 768 +1375 482 560 791 +1376 706 755 774 +1377 398 693 767 +1378 762 435 772 +1379 494 759 776 +1380 692 762 772 +1381 310 769 788 +1382 653 289 793 +1383 809 149 825 +1384 279 276 769 +1385 784 498 792 +1386 254 253 787 +1387 647 645 791 +1388 686 457 880 +1389 434 350 770 +1390 435 699 772 +1391 767 434 770 +1392 286 366 793 +1393 120 81 740 +1394 575 516 788 +1395 285 692 772 +1396 111 78 771 +1397 582 584 775 +1398 411 706 774 +1399 668 131 795 +1400 115 145 807 +1401 411 774 777 +1402 772 699 778 +1403 384 448 776 +1404 285 772 778 +1405 357 709 792 +1406 441 490 790 +1407 733 310 773 +1408 574 107 827 +1409 486 411 777 +1410 495 494 776 +1411 555 443 790 +1412 453 733 773 +1413 696 285 778 +1414 518 523 801 +1415 699 439 778 +1416 769 575 788 +1417 776 448 789 +1418 82 140 740 +1419 667 221 798 +1420 778 439 781 +1421 677 357 800 +1422 191 625 780 +1423 687 445 797 +1424 696 778 781 +1425 146 630 807 +1426 743 284 784 +1427 221 223 798 +1428 650 649 779 +1429 490 413 796 +1430 284 756 784 +1431 655 656 806 +1432 549 492 806 +1433 440 781 782 +1434 357 792 800 +1435 247 677 802 +1436 369 696 781 +1437 684 471 889 +1438 123 537 867 +1439 432 743 784 +1440 439 374 782 +1441 248 247 783 +1442 495 776 789 +1443 234 272 785 +1444 394 455 799 +1445 677 800 802 +1446 562 765 779 +1447 152 154 786 +1448 432 784 792 +1449 155 274 804 +1450 253 783 797 +1451 718 157 804 +1452 820 504 826 +1453 262 254 787 +1454 517 515 795 +1455 462 451 811 +1456 150 149 809 +1457 453 773 801 +1458 497 495 789 +1459 142 564 828 +1460 645 482 791 +1461 773 518 801 +1462 191 780 840 +1463 443 441 790 +1464 274 153 809 +1465 684 9 810 +1466 10 117 810 +1467 783 687 797 +1468 46 121 803 +1469 781 439 782 +1470 289 286 793 +1471 709 432 792 +1472 449 753 799 +1473 773 310 788 +1474 669 668 795 +1475 792 498 800 +1476 141 45 803 +1477 661 265 805 +1478 413 552 796 +1479 445 555 797 +1480 587 586 833 +1481 223 265 798 +1482 265 752 805 +1483 498 489 800 +1484 556 113 862 +1485 403 520 816 +1486 374 373 816 +1487 682 420 826 +1488 354 532 851 +1489 120 740 794 +1490 465 543 823 +1491 705 436 812 +1492 504 751 826 +1493 597 122 832 +1494 327 496 817 +1495 530 478 813 +1496 573 468 818 +1497 519 453 801 +1498 137 658 872 +1499 753 394 799 +1500 549 809 825 +1501 800 489 802 +1502 617 616 835 +1503 117 678 857 +1504 751 167 826 +1505 436 742 812 +1506 506 491 824 +1507 489 687 802 +1508 386 425 819 +1509 45 46 803 +1510 635 130 834 +1511 630 354 853 +1512 475 452 822 +1513 354 851 853 +1514 729 137 872 +1515 122 100 828 +1516 101 142 828 +1517 527 124 891 +1518 502 817 820 +1519 157 155 804 +1520 564 466 832 +1521 850 647 895 +1522 118 22 837 +1523 23 138 837 +1524 463 715 831 +1525 400 463 831 +1526 831 715 838 +1527 461 711 831 +1528 697 597 832 +1529 647 109 895 +1530 492 655 806 +1531 805 500 808 +1532 145 146 807 +1533 97 98 836 +1534 752 500 805 +1535 500 499 808 +1536 153 150 809 +1537 694 818 859 +1538 770 412 824 +1539 493 549 825 +1540 521 469 839 +1541 9 10 810 +1542 464 493 834 +1543 506 824 896 +1544 685 686 842 +1545 20 21 841 +1546 451 566 811 +1547 799 455 851 +1548 1 6 843 +1549 24 2 844 +1550 102 1 843 +1551 2 25 844 +1552 63 4 845 +1553 4 64 845 +1554 598 541 878 +1555 448 447 840 +1556 533 120 882 +1557 742 293 812 +1558 548 105 866 +1559 144 613 823 +1560 40 41 849 +1561 613 525 823 +1562 114 695 815 +1563 812 293 817 +1564 60 119 850 +1565 478 534 813 +1566 780 448 840 +1567 678 133 852 +1568 528 475 870 +1569 373 403 816 +1570 5 84 847 +1571 43 3 848 +1572 496 504 820 +1573 529 528 854 +1574 674 520 887 +1575 130 829 834 +1576 293 327 817 +1577 568 570 875 +1578 532 799 851 +1579 83 5 847 +1580 3 44 848 +1581 473 386 819 +1582 420 502 820 +1583 546 473 821 +1584 473 819 821 +1585 525 465 823 +1586 566 568 858 +1587 452 519 822 +1588 543 479 860 +1589 588 578 854 +1590 167 682 826 +1591 657 507 861 +1592 149 574 825 +1593 836 503 838 +1594 107 635 827 +1595 110 836 838 +1596 824 664 896 +1597 509 556 862 +1598 100 101 828 +1599 491 770 824 +1600 585 605 877 +1601 463 464 829 +1602 543 139 876 +1603 597 503 830 +1604 591 587 833 +1605 110 97 836 +1606 711 400 831 +1607 503 461 838 +1608 466 697 832 +1609 861 507 882 +1610 616 480 835 +1611 599 585 877 +1612 815 598 878 +1613 98 830 836 +1614 19 20 865 +1615 22 23 837 +1616 121 741 833 +1617 777 545 857 +1618 105 15 866 +1619 16 132 866 +1620 715 110 838 +1621 459 457 867 +1622 695 134 864 +1623 621 618 846 +1624 618 617 846 +1625 69 114 871 +1626 493 827 834 +1627 727 111 858 +1628 112 595 856 +1629 581 580 883 +1630 842 868 893 +1631 39 40 892 +1632 521 839 865 +1633 572 707 897 +1634 109 58 895 +1635 771 79 898 +1636 512 510 894 +1637 123 28 884 +1638 457 406 880 +1639 124 67 891 +1640 410 486 879 +1641 714 505 873 +1642 470 675 839 +1643 875 570 897 +1644 508 521 886 +1645 605 43 848 +1646 833 586 881 +1647 795 131 874 +1648 795 515 894 +1649 80 120 898 +1650 675 108 839 +1651 533 771 898 +1652 469 470 839 +1653 669 795 894 +1654 829 464 834 +1655 842 501 868 +1656 29 556 884 +1657 447 531 840 +1658 801 523 863 +1659 134 694 859 +1660 21 118 841 +1661 143 685 842 +1662 818 468 859 +1663 119 688 860 +1664 517 795 874 +1665 111 811 858 +1666 580 588 849 +1667 6 683 843 +1668 138 24 844 +1669 866 132 887 +1670 142 102 843 +1671 25 143 844 +1672 64 144 845 +1673 139 63 845 +1674 564 142 855 +1675 827 635 834 +1676 716 136 846 +1677 830 503 836 +1678 41 127 849 +1679 556 537 884 +1680 140 83 847 +1681 44 141 848 +1682 59 60 850 +1683 558 402 861 +1684 133 665 852 +1685 455 477 851 +1686 471 714 889 +1687 658 137 885 +1688 851 477 853 +1689 118 737 886 +1690 477 530 853 +1691 578 529 854 +1692 121 833 881 +1693 137 721 885 +1694 651 523 874 +1695 505 564 855 +1696 686 123 867 +1697 521 841 886 +1698 835 480 885 +1699 588 854 892 +1700 839 108 865 +1701 570 572 897 +1702 846 617 890 +1703 634 409 888 +1704 714 873 889 +1705 730 112 856 +1706 105 548 896 +1707 486 852 879 +1708 794 558 861 +1709 794 861 882 +1710 700 109 869 +1711 479 648 860 +1712 402 657 861 +1713 468 634 859 +1714 486 777 857 +1715 858 568 875 +1716 547 595 872 +1717 132 674 887 +1718 113 669 862 +1719 510 509 862 +1720 109 791 869 +1721 716 846 890 +1722 59 850 895 +1723 683 125 873 +1724 842 686 880 +1725 664 105 896 +1726 143 842 893 +1727 811 566 858 +1728 108 19 865 +1729 507 533 882 +1730 131 651 874 +1731 791 560 869 +1732 823 543 876 +1733 15 16 866 +1734 537 459 867 +1735 501 522 868 +1736 605 848 877 +1737 475 822 870 +1738 128 614 870 +1739 519 801 863 +1740 658 547 872 +1741 68 69 871 +1742 586 599 881 +1743 617 835 890 +1744 523 517 874 +1745 854 116 892 +1746 114 815 878 +1747 879 665 899 +1748 135 727 875 +1749 548 866 887 +1750 412 879 899 +1751 845 144 876 +1752 139 845 876 +1753 815 695 864 +1754 68 871 891 +1755 848 141 877 +1756 541 540 878 +1757 412 410 879 +1758 406 501 880 +1759 135 875 897 +1760 480 658 885 +1761 599 803 881 +1762 409 598 888 +1763 28 29 884 +1764 585 581 883 +1765 803 121 881 +1766 822 128 870 +1767 737 508 886 +1768 116 39 892 +1769 864 634 888 +1770 125 684 889 +1771 520 548 887 +1772 67 68 891 +1773 665 664 899 +1774 58 59 895 +1775 106 716 890 +1776 515 512 894 +1777 548 506 896 +1778 79 80 898 +1779 501 842 880 +1780 120 794 882 +1781 707 135 897 +1782 727 858 875 +1783 855 683 873 +1784 144 823 876 +1785 835 106 890 +1786 824 412 899 +1787 873 125 889 +1788 841 118 886 +1789 598 815 888 +1790 505 855 873 +1791 852 665 879 +1792 664 824 899 +1793 138 844 893 +1794 844 143 893 +1795 815 864 888 +1796 868 138 893 +$EndElements diff --git a/src/advection_diffusion.jl b/src/advection_diffusion.jl new file mode 100644 index 00000000..af58d8e3 --- /dev/null +++ b/src/advection_diffusion.jl @@ -0,0 +1,172 @@ +# In this tutorial, we will learn: +# - Advection and diffusion term explanation +# - How to create models with arbitrary geometry in Gmsh +# - How to define the equation in the weak form +# - How to solve for and visualize the results + +# ## Problem statement + +# In this tutorial we will solve the steady-state advection-diffusion equation. + +# In fluid mechanics, advection refers to the transport of a substance or property (such as heat, mass and momentum) by the motion of the fluid itself. It is a key mechanism in which quantities are carried along with the bulk movement of the fluid. As opposed to advection, diffusion refers to the process where substances spread out due to concentration gradients, moving from regions of higher concentration to regions of lower concentration. + +# The advection-diffusion equation combines the effects of both mechanisms, making it a powerful tool for modeling real-world transport processes where substances are not only carried by the flow of a fluid but also spread out over time due to diffusion. The best example of an advection-diffusion equation in the real case is the temperature distribution in a flow field. + +# Formally, a steady-state advection-diffusion equation with Dirichlet boundary conditions could be defined as: + +# $ \nabla \cdot \left ( D\nabla T - \vec{V}T \right ) =0 $ ,\ +# $ T = g $ on boundaries, + +# where: +# - $T$ is the scalar quantity being transported (here T refers to temperature); +# - $\vec{V}$ is the velocity vector of the fluid (representing advection); +# - $D$ is the diffusion coefficient (a constant that characterizes the rate of diffusion). + +# In order to help users get to know the strong feasibility of Gmsh, where users can create the geometry needed for Gridap, we will define the domain in the shape of a pentagon. We will see both result plottings with and without advection effect. + +# ## Model geometry in Gmsh + +# This is one of the most important parts of this tutorial. In this case, we make fully use of `Gmsh`, an open-source finite element mesh generator with a built-in CAD engine and post-processor. Gmsh is the tool highly bound to `Gridap.jl`, and it has its own scripting language (`.geo` scripts), and the scripts could be loaded to a very nice-designed user interface, `ONELAB`. In `ONELAB`, you could easily run the script you wrote, and generate the mesh you want. Here we would illustrate the whole process of creating a 2D model in a pentagon shape using `Gmsh` step by step. + +# Note that all the code in this part ("Model geometry in Gmsh") is for the `.geo` scripts. + +# First thing we need to create is the point, which is the simplest entity we can define in `Gmsh`. Note that in `Gmsh`, all points are uniquely identified by a tag (a strictly positive integer) and defined by a list of four numbers: three coordinates (`X`, `Y` and `Z`) and the target mesh size (we always use `lc`, which stands for characteristic length) close to the point. + +# Here we would like to define a pentagon with side length of 2, and `lc` as following: +# ```js +# lc = 1e-1; +# ``` + +# So, all five points could be defined as: +# ```js +# Point(1) = {0, -1.0000, 0, lc}; +# Point(2) = {0, 1.0000, 0, lc}; +# Point(3) = {1.9015, 1.6190, 0, lc}; +# Point(4) = {3.0777, 0, 0, lc}; +# Point(5) = {1.9015, -1.6190, 0, lc}; +# ``` + +# Once we have the points, we could naturally try to define the lines. Obviously here we have 5 sides of the pentagon to define. The definition of lines is pretty much the same as points. A straight line is defined by a list of two-point tags, and itself can also be identified by a tag. +# ```js +# Line(1) = {1, 2}; +# Line(2) = {2, 3}; +# Line(3) = {3, 4}; +# Line(4) = {4, 5}; +# Line(5) = {5, 1}; +# ``` + +# With the lines defined, we can now define the curve loop, which we could utilize to make a surface. A curve loop is defined by an ordered list of connected lines. +# ```js +# Curve Loop(1) = {1, 2, 3, 4, 5}; +# ``` + +# And now is the final step, that is to define the surface. Until now Gmsh has totally understand what we are going to design with the model. +# ```js +# Plane Surface(1) = {1}; +# ``` + +# There is another option here: we can try to define physical groups among the entities we defined before. By defining physical groups, we can better assign the “roles” to the entities we defined. Here for example: +# ```js +# Physical Line("l1") = {1}; +# Physical Line("l2") = {2}; +# Physical Line("l3") = {3}; +# Physical Line("l4") = {4}; +# Physical Line("l5") = {5}; +# ``` + +# Once we have the model geometry, we can simply click `2D` under the `mesh` category and then click `save`. Then Gmsh would generate a `.msh` file for us. Or we could use code below to ouput the `.msh` file directly: +# ```js +# Mesh 2; +# Save "pentagon_mesh.msh"; +# ``` + +# The meshed model is like following: + +# ![Pentagon_2D_Mesh](Pentagon_2D_Mesh.png) + +# ## Numerical Scheme + +# The weak form of a PDE is a reformulation that allows the problem to be solved in a broader function space. Instead of requiring the solution to satisfy the PDE at every point (as in the strong form), the weak form requires the solution to satisfy an integral equation. This makes it particularly suitable for numerical methods such as the Finite Element Method. + +# Since we already hcave the original PDE (strong form), we can multiply each side by a test function $v \in H^1(\Omega)$(functions with square-integrable first derivatives). $v$ satisfies the Dirichlet boundary condition of $0$. Make integral on both sides. + +# The weak form associated with this formulation is, find $T \in H^1(\Omega)$, such that: +# $$ +# \int_\Omega v (\mathbf{u} \cdot \nabla T) \, \mathrm{d}\Omega +# + \int_\Omega D \nabla T \cdot \nabla v \, \mathrm{d}\Omega +# = 0 +# $$ + +# ## FE spaces + +# First, import `Gridap.jl`. + +using Gridap +using GridapGmsh + +# Import the model from file using GmshDiscreteModel: + +model_pentagon = GmshDiscreteModel("pentagon_mesh.msh") + +# Set up the test FE space $V_0$, which conforms the zero value boundary conditions. + +order = 1 +reffe = ReferenceFE(lagrangian,Float64,order) +V_0 = TestFESpace(model_pentagon,reffe;conformity=:H1,dirichlet_tags=["l1","l2","l3","l4","l5"]) + +# Set up the boundary conditions. Here we set 5 values, representing 5 different temperatures on 5 sides of the pentagon. Notw that $l1$ is the most left vertical side, we would like to define this as 200. We define the middle two 2 sides as 100, and the most right two sides as 0. Define the trial space $U_g$. + +boundary_cond = [200,100,0,0,100]; +U_g = TrialFESpace(V_0,boundary_cond) + +# Do the integration over domain $\Omega$. + +degree = 2 +Ω = Triangulation(model_pentagon) +dΩ = Measure(Ω,degree) + +# ## Weak form + +# Define the velocity field $\vec{V}T = (u_1,u_2)$. Here we have two options: +# - zero velocity; +# - $u_1 = 0$, and $u_2 = 2$. That means the flow is going up at a velocity of 2. + +velocity_zero = VectorValue(0.0, 0.0); + +velocity_nonzero = VectorValue(0.0, 2.0); + +# Duffusion coefficient is defined as: + +D = 0.1; + +# The weak form can thus be represented as: + +a_zero(u, v) = ∫(v * (velocity_zero ⋅∇(u)) + ∇(v) ⋅ (D * ∇(u))) * dΩ +a_non_zero(u, v) = ∫(v * (velocity_nonzero ⋅∇(u)) + ∇(v) ⋅ (D * ∇(u))) * dΩ +b(v) = 0.0 + +# ## Solution + +# Now build the FE problem and use the solver. We are solving for both zero and non-zero flow velocity. + +op_zero = AffineFEOperator(a_zero,b,U_g,V_0) +uh_zero = Gridap.Algebra.solve(op_zero) + +op_non_zero = AffineFEOperator(a_non_zero,b,U_g,V_0) +uh_non_zero = Gridap.Algebra.solve(op_non_zero) + +# Ouput the result as a `.vtk` file. + +writevtk(Ω,"results_zero",cellfields=["uh_zero"=>uh_zero]) + +writevtk(Ω,"results_non_zero",cellfields=["uh_non_zero"=>uh_non_zero]) + +# ## Visualization + +# We can use the ParaView to preview the results clearly. Here is the temperature distribution without any flow velocity: + +# ![Result_zero](Result_zero.png) + +# Here is the temperature distribution with a flow velocity of 2 going up: + +# ![Result_zero](Result_non_zero.png)