From 3c80e40bd32d800998f9d07e65b55705fa6b814a Mon Sep 17 00:00:00 2001 From: Henrik Finsberg Date: Wed, 15 Mar 2023 14:07:34 +0100 Subject: [PATCH 1/5] Add patient specific mesh and demo for running it - still need to write description --- demos/geometries/patient.msh | 2503 ++++++++++++++++++++++++++++++++++ demos/patient_specific_lv.py | 118 ++ 2 files changed, 2621 insertions(+) create mode 100644 demos/geometries/patient.msh create mode 100644 demos/patient_specific_lv.py diff --git a/demos/geometries/patient.msh b/demos/geometries/patient.msh new file mode 100644 index 00000000..09fc3016 --- /dev/null +++ b/demos/geometries/patient.msh @@ -0,0 +1,2503 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$PhysicalNames +6 +1 1 "ENDORING" +1 2 "EPIRING" +2 3 "ENDO" +2 4 "EPI" +2 5 "BASE" +3 6 "WALL" +$EndPhysicalNames +$Nodes +417 +1 0 -4.08873 18.7323 +2 0 -17.0543 22.104 +3 0 -20.92169360651705 13.322898431033 +4 0 -24.06482971026128 3.91016332616261 +5 0 -27.8296273580107 -5.250098231392347 +6 0 -27.41765154198385 -14.606449744949 +7 0 -22.7991103625242 -23.35312504936918 +8 0 -16.23999695156371 -30.78401633702789 +9 0 -7.547807306321949 -35.31028147009878 +10 0 2.26474555802414 -34.44050233395654 +11 0 11.58904084497593 -31.19929471135899 +12 0 18.86825759065133 -24.64564640984026 +13 0 23.03856901918471 -15.75880624738409 +14 0 23.4524283156248 -5.903873957295458 +15 0 20.78679477303614 3.569279526657586 +16 0 15.01467672115492 11.60863575898595 +17 0 7.893364953763634 18.51980555129403 +18 0 0.08635138876129361 24.62493167315609 +19 0 -9.326695563160195 27.02354087695576 +20 0 -11.20745833628276 13.24412417749366 +21 0 -14.97696416923967 4.706914706329271 +22 0 -19.76460681221648 -3.288919172112618 +23 0 -22.70540497697779 -11.85833671533467 +24 0 -18.32964333883642 -19.98910483540399 +25 0 -11.24657461451624 -25.88892814364407 +26 0 -2.165971759808733 -26.65850467371133 +27 0 6.584966341338367 -23.55504046278231 +28 0 13.26945156168215 -17.14804057789181 +29 0 16.56060098172139 -8.486350889720022 +30 0 15.97885465549517 0.7179266731622708 +31 0 11.13962067874378 8.610171963660649 +32 0 4.06117588268799 14.59483799488757 +33 7.448779973604421 -17.15022628920414 -23.66962638748364 +34 8.522825963803957 -6.443877440464002 -29.48431969653264 +35 13.95913743489459 -15.33582105303895 -25.35789917017534 +36 7.653028324718617 -23.82194087627976 -16.48093798926005 +37 16.6687413281247 -10.03631871259767 -28.59081044919171 +38 8.983982769993272 3.954563686141312 -28.67615400655057 +39 14.83274408431513 -20.75249773777303 -20.21499347900392 +40 16.23260714111709 -1.0774729783227 -30.48504782499904 +41 22.15391179811057 -16.00177343818009 -23.93461959069082 +42 24.68348917482993 -5.539466423517712 -29.5686243002655 +43 17.22621821359849 7.741931195623879 -29.25249071602389 +44 7.058910029689272 12.44356886352536 -23.73713477832988 +45 16.43585916450608 -25.79314055091896 -12.97804181451465 +46 23.4477380318809 2.799386256653581 -30.48171640505018 +47 29.34073227828177 -11.03789561168514 -26.24019695342673 +48 23.66196202370763 -22.35174645108417 -16.57067042684687 +49 10.25884679891796 -28.5641223058875 -8.529675059890561 +50 30.29638742733491 -17.60335263682406 -20.33074035194509 +51 14.91946298899708 14.05015122832037 -25.77042579110711 +52 25.02718034123425 8.591794319880519 -29.26276745585576 +53 30.88489124829792 2.902904540268085 -29.71141157873169 +54 34.90116278001376 -4.363254273158828 -28.05392471845651 +55 36.63127587203689 -11.71375289191589 -23.30958860284859 +56 4.550572572584066 -27.60441919310328 -3.910090818901076 +57 24.29767521004977 15.65864435148031 -26.24376407988852 +58 32.14472697524729 -22.24723561096141 -12.92826535263237 +59 38.90192870639611 3.069899954155302 -28.08356703289408 +60 8.983306168855803 17.70798989653839 -19.22209177798223 +61 33.24798430672013 11.5811798048879 -27.59238062159664 +62 25.31498062178061 -26.04181748795833 -8.429492119229696 +63 38.54908481885317 -17.4233503970794 -16.78651717436129 +64 43.02539175262896 -4.818849264859092 -25.05264418575287 +65 18.07214832687444 19.2666112877238 -21.8438941559357 +66 44.88666183779295 -11.45370757709978 -19.67338827669957 +67 18.26865193475653 -28.96116273140222 -3.857155680374895 +68 42.92752152189982 10.40285123163568 -25.67383986786976 +69 48.07067953982276 2.574918829911059 -25.2877096945182 +70 39.2463765726184 -21.22551728212457 -9.335354440570388 +71 31.78182538203497 19.14941859347784 -22.68204217838468 +72 38.43410535119774 16.58631135042786 -23.71296481473699 +73 52.30246745402489 -5.007005890341746 -20.36268181320077 +74 46.34242979819398 -16.72843360762819 -12.12010691973697 +75 51.2885869036785 -11.4271147259609 -15.4013016269969 +76 4.767220463282153 17.90482800982392 -14.25813295930327 +77 24.30265127061283 21.70991659346159 -19.31470700598309 +78 33.72876255620618 -24.51981727103 -4.105589852782979 +79 51.38376635772131 10.58003240421179 -22.86883800371972 +80 56.2416463392513 2.895866771325708 -21.64037390875898 +81 45.57419694319447 17.37327365287137 -21.08236020552606 +82 53.05091858658736 -13.96973715492087 -10.07907229251865 +83 57.15074464022867 -9.151203823113054 -13.05059136531754 +84 59.54868729137259 -3.639862309937451 -16.22651289407136 +85 44.74905228546724 -20.2205487860411 -4.547855883307411 +86 10.3934940931312 -30.29685213492358 0.9934248320317202 +87 15.69328460122501 21.90476873552791 -14.96646146812438 +88 38.94341932728339 21.48660368338019 -17.70718020834186 +89 59.67245848876811 10.7009449173997 -19.10614148710278 +90 26.48693578504671 -27.04242065247794 0.7034955735527466 +91 64.32704164993395 3.630954386216625 -16.93565618427205 +92 53.95998238457977 17.41354056076658 -17.40168375751758 +93 52.09180415460124 -17.00290909398256 -3.268043360794629 +94 40.28557558399203 -22.44428646801605 -0.2715123698750852 +95 59.12154832516642 -11.97986736576427 -5.939884218344144 +96 65.88411889465924 -1.679909991625326 -11.66670059792541 +97 63.17388471975613 -7.277970444623863 -8.567449481601258 +98 31.52103279446494 23.24210224527295 -14.56976910914006 +99 67.83670905361858 10.24174838223005 -13.87780311568203 +100 47.00349146511623 21.72074941192898 -13.84303465480857 +101 61.83380714495279 16.92802042260412 -13.04638056756776 +102 70.75406109172296 4.077930179413192 -9.113853124025894 +103 69.54080269976527 -2.605056487173517 -4.2036351807411 +104 65.44970021572806 -8.861578173832235 -1.259058699974246 +105 59.2016418287469 -13.75712528301143 1.893582331305099 +106 67.97538305779825 16.07245034461997 -8.250458914013455 +107 54.787074662055 21.17818829548329 -9.179705296795241 +108 72.89250452614124 10.65810005085912 -4.083758060619653 +109 8.941280849993964 20.65596603996691 -10.98333655271419 +110 44.94323410403708 -20.37292583972775 4.5490612616812 +111 39.38911631191886 23.36860368997002 -9.549364968250662 +112 52.79901891244276 -16.97248562107586 5.090660589740303 +113 73.16856833321377 3.718050297932875 0.6136774431611549 +114 34.84518604590016 -23.75582952978685 5.213792050536025 +115 23.35967871431737 23.73654943406388 -10.47091232290459 +116 62.37135390090654 19.77392433028236 -4.319158222313106 +117 70.79874075375686 -3.984340845508322 4.254725056642727 +118 65.04432138873057 -10.03113531217208 7.421859812878917 +119 69.67293364353725 16.9129337496732 0.5490510203938692 +120 17.81757929900229 -29.28118180106523 5.410384080873686 +121 73.82901640560632 10.49833611776435 5.821404320582565 +122 46.84687938462702 22.52221541721631 -4.871794508037294 +123 58.10502346529092 -13.78418083665488 9.194055405722004 +124 73.67476962837289 2.599111441785198 9.82078151539579 +125 70.06725347182694 -4.908897265334819 13.21534926148135 +126 54.52537060373931 21.25837531509583 0.02201717481986776 +127 62.10011556999675 19.87758334409828 4.812922411310649 +128 69.44626385267748 17.3708538873948 9.508399859414853 +129 72.54436575577289 10.30034235054138 14.75086227679119 +130 63.45768332467618 -8.818561664522797 15.08413622550428 +131 50.03110174105674 -16.49882963794842 11.52685525969579 +132 71.14230753457467 2.336482867529004 18.35709606210282 +133 31.07834840161353 23.70021984499989 -5.469662081793186 +134 67.49069626710269 15.24253078512464 17.26623212351012 +135 56.58956124831789 -11.75313087156566 15.55570321447263 +136 40.75384254887521 -19.89311242948061 11.04198690108657 +137 64.24143526770543 -3.510960818164576 19.96329761375619 +138 67.00216690994961 9.879941325101191 21.445766534589 +139 61.40694662454477 18.8418091711452 13.84853584434925 +140 64.80438484464797 3.549241616551068 22.59846164954293 +141 53.95357883031163 20.17817389589451 9.305014529947083 +142 38.73573037561555 22.65669751382974 -0.6224420504300431 +143 46.37657047521123 21.30710055399214 4.231454141077555 +144 25.22955348869951 -25.68722767518611 9.362311945933115 +145 60.77558393355525 11.89625134840504 21.1354314731939 +146 55.34404840391373 -5.397162577655731 20.95020102043585 +147 4.049858619994144 -23.92204291180823 4.250309173218137 +148 15.27273611223745 22.76217470667682 -6.289242624148283 +149 57.39503052131879 2.106166285739742 23.00587950024245 +150 48.96268567342409 -11.83978808087525 18.2467119951997 +151 53.2931110649826 15.68341371560397 17.0213897311221 +152 42.99383940028331 -15.96773416160429 16.05297441833715 +153 53.18657638977884 8.818328322345828 21.72304022744351 +154 31.91789299518873 -21.31200275068343 13.32834472692463 +155 46.17275938465571 17.58408281242839 12.90996680427441 +156 48.48861239628025 1.856160663391885 22.47482026170066 +157 22.93614641152845 22.98591315442371 -1.371262621473735 +158 38.30911707628159 19.64527738601506 8.04086074726267 +159 9.610893991966162 -28.28246389464925 9.576484523060396 +160 44.65200768324348 -5.691195607915111 21.40815224833056 +161 36.82024933246822 -15.83569553950043 17.51108363787082 +162 30.56013763286419 21.56290835488317 3.443727235944728 +163 44.84478405660504 10.1642200643647 19.49451479901571 +164 38.77663974302963 -10.65364323409769 20.0268863405316 +165 39.16161564809167 14.4180857457867 14.9186952846598 +166 17.33025692070601 -26.59888496065528 14.12056917774865 +167 39.34732819241049 2.469625428161285 21.26789589217102 +168 7.361102597343282 20.19820643815242 -3.276963076001783 +169 23.90042145588417 -20.66009096933144 17.07637453337775 +170 30.95769747289462 16.11677509248132 11.34287481713845 +171 30.36572326859687 -13.75613938583293 19.26780233895897 +172 34.64307202571784 -5.477233555452264 20.92458278693101 +173 34.48282574306671 9.21229809603628 17.69305418031103 +174 15.36496344047903 20.6927951185698 2.202532480982045 +175 22.66174152056189 18.7749673081216 6.861045550817435 +176 30.44144284790174 2.342076335551404 19.86054963012439 +177 9.903051501899572 -25.06552155561485 16.64190196549471 +178 26.45026173745399 9.326050306248851 16.02243481518707 +179 22.80253019858609 13.87458457812409 11.82763484163873 +180 25.66390415545649 -5.539379296745693 20.47075944685474 +181 15.38738447130638 -20.43651954695399 20.59188151081152 +182 20.88704546745263 -13.10807130156594 20.72611574686708 +183 4.071238775379787 -20.07323898282335 11.4133889050466 +184 21.69615606204712 2.276088082172034 18.90570807298424 +185 14.4960608979723 14.61604638493822 9.840098848140784 +186 8.080523637162605 17.11041184577218 5.271218530420949 +187 18.00507457743994 8.840268577859314 15.0727876256033 +188 6.874756573476144 -18.89541022877309 20.21726669012563 +189 16.59808731716947 -5.013864613778511 21.33208964288081 +190 11.96544600916883 -12.58303212103716 23.41096454604387 +191 12.8791129221392 2.694018633963311 19.1398366321811 +192 8.438292252997115 9.592838843992123 14.1457988004806 +193 7.776260973655607 -4.636129768297464 23.50210742383238 +194 2.827695472884697 -11.76983846602866 21.65705555610473 +195 4.70440845342304 1.690804052273721 20.44507772766683 +196 9.014610006153127 -2.402367287157379 -35.48111872797466 +197 8.430906928259956 7.574316910397078 -34.31081543088436 +198 9.206795257662234 -12.23173179180194 -33.63044900034191 +199 8.522269236120945 16.08261728242844 -30.87116661267181 +200 16.91003096408046 2.518453117502228 -34.94359310853996 +201 16.23377529464769 -6.0657653834369 -34.51221381840724 +202 16.20599122961276 11.46064305620382 -33.33183524708338 +203 9.974784630677433 21.60091137040835 -27.1558522879004 +204 9.124757521240879 -20.92343009720664 -27.49610340481177 +205 15.26937918912036 -16.70156091072709 -30.41864066806369 +206 19.63532080117314 -11.89708350023947 -32.32355667713315 +207 24.72417728091371 4.653313145213466 -33.97060831284858 +208 7.562818495609603 24.7704920844733 -21.79919526103203 +209 18.68774683620449 20.26799925378358 -29.14478652929603 +210 23.95242572036523 13.37207883502168 -32.18620465100962 +211 25.43825811390148 -5.246040892774757 -33.33912019274771 +212 16.04107616408374 26.84213696822413 -22.26852008354735 +213 31.32029659477656 10.06596341661562 -31.91924666510161 +214 33.04587026115995 0.8336640817622508 -32.70827448492297 +215 28.51870235318564 19.21886200610644 -28.76085409564928 +216 27.21231430021002 -14.36801916674135 -29.90604904297959 +217 21.67358064037035 -19.95978536711999 -27.1771838221914 +218 9.182903691028121 27.73420218266203 -16.24146304494867 +219 24.75201925998428 25.81832311567705 -23.33042725003718 +220 16.78244659210084 -24.56143308089086 -23.3566029208457 +221 34.73871588481479 -8.589356416802342 -30.57001550495467 +222 8.299694021197316 -27.12102479403101 -20.35182341320365 +223 37.14658367240403 15.82658339967148 -28.29937928499907 +224 39.8027053454672 7.047367643301498 -30.80320734439832 +225 33.77200574256956 23.72650396592615 -23.32019983633028 +226 41.8742352662714 -2.31213924893795 -30.35930495874129 +227 22.71654835321103 29.76797009232455 -16.56186738143269 +228 28.87812162576721 -21.00216744458358 -24.7085920590104 +229 16.53577152250351 30.47928052520518 -12.99373969332068 +230 35.57556561946306 -16.76443658697643 -26.25977049243625 +231 7.577644144361045 28.67155770341395 -9.000182547465171 +232 45.01470596535129 12.33193408313722 -27.70197575432293 +233 41.29914199495131 20.24516534549781 -23.73472966243709 +234 48.62861836754411 3.758273002290621 -29.00435094528395 +235 43.28986509746684 -11.1308250843843 -26.84891544345019 +236 30.57279848488387 29.40530227256723 -14.80507188649833 +237 37.92765825337268 26.15097546388009 -18.06020455994797 +238 50.4705267331863 -4.935363855492239 -26.73149973470268 +239 49.96353562332327 18.41096517340615 -22.01135574751692 +240 54.14593121610575 10.75062069800738 -25.71613415564793 +241 25.0920773130624 -26.74309190563969 -18.72945707662296 +242 45.02322546890522 24.80117836111283 -16.87210005287243 +243 57.34430938299872 1.727424578424158 -25.79522276124593 +244 34.45369886119568 -23.78530419884411 -19.53424148004679 +245 24.87823937471594 31.90248463435794 -7.601589142353989 +246 43.25646627373998 -18.92592463084048 -21.07307618057845 +247 51.00427818235489 -13.14968495810659 -21.65528548975036 +248 38.48591303815001 29.63935394874005 -10.29997270143162 +249 58.99493596562584 16.68724673692309 -19.60629478714607 +250 15.04684859244714 31.08782502227107 -3.66625996004805 +251 63.12828677016271 8.953687643539416 -23.18157348442233 +252 16.34852231750038 -30.05487740445515 -15.37063128423501 +253 53.93814434854913 23.21429881340436 -14.91963751387775 +254 58.15802417383998 -6.812669504908305 -21.33122205158234 +255 64.9565581230769 -0.1935167316959228 -20.45632468349154 +256 48.33146538903782 28.74351701045742 -8.876016327932218 +257 32.62578093550605 31.29442262942169 -3.900695066961868 +258 68.16405564997289 14.42705826161878 -16.71384099110506 +259 70.34307387179821 6.443445290284606 -19.04335081993801 +260 63.15551017861097 21.11239276881383 -12.05576649467341 +261 57.62103501660293 -13.95528457899884 -15.19766137850194 +262 50.54727380497582 -19.64218797937516 -14.55844571101453 +263 58.09093308377946 28.0006423490377 -6.890749906787327 +264 64.74362655832113 -7.201311643581931 -14.23066162256437 +265 41.92590766697513 -24.29774563965549 -13.17853403672545 +266 6.962264330096106 27.25372995814061 0.1271888857170775 +267 70.95568966828162 0.3886168249516072 -12.68504573335074 +268 42.27339781532569 30.79672593372275 -1.668412918992884 +269 74.67902388397691 9.247286166644288 -11.28671579424512 +270 70.96840429906368 17.36456036964592 -8.192760326298794 +271 21.97534764025756 31.12495419036185 1.025042386950658 +272 7.653080121004834 -32.25322281570374 -12.70885230362269 +273 66.69272119107222 25.57817936033877 -4.137221049061582 +274 33.03595504484527 -27.86914292107559 -11.45330788539692 +275 52.43177187033584 31.15500344972872 -0.1315707238618442 +276 63.62595969571817 -13.0713028850542 -7.59846051362959 +277 69.26449445539834 -7.067355269190314 -6.121849953230571 +278 62.07336235045812 31.32484363028138 1.702437038845474 +279 76.20003309177329 10.94681375611088 -2.04036848588744 +280 74.07706740994539 1.478880077156726 -3.812268155527901 +281 73.20242438961256 20.31866005802656 0.431149401146047 +282 56.50897327309259 -18.99903928088351 -7.30236565655352 +283 69.39644292183388 27.26970939551232 5.241043682771248 +284 24.02998368846722 -30.72449455940795 -9.600621565926255 +285 72.70868644068634 -5.081011442937193 0.08103586484616493 +286 48.3051162325815 -23.70380595604988 -6.065516651798026 +287 76.01361875443949 13.29593462215106 6.516233096643594 +288 76.07849887219508 3.192592864096756 4.842076678590285 +289 72.31902366089002 20.95800251285075 8.938504467396003 +290 28.37904783002351 29.49710148661809 5.440579306519955 +291 36.70533311510086 29.03596806828988 5.955896390884022 +292 45.83446925294534 28.80282666984458 7.051845833942307 +293 62.45794928297613 27.70942750456219 9.972965064673257 +294 54.24594992193099 28.66595759732047 8.75897409179843 +295 68.18506938488881 -11.6995735235547 1.650805130844677 +296 61.69313151094763 -16.95288880078286 -0.5803061774814269 +297 76.20506403673447 8.290441453468349 11.67720005820007 +298 14.81892935595123 28.22902771844137 5.514726449981487 +299 73.31219725510847 -5.488718398164033 7.429915906476849 +300 73.65267819661038 15.49769249637839 13.76795944709662 +301 66.79386431619464 21.79468655261245 14.46811925102924 +302 39.59582244098232 -27.01235117479069 -4.345510905703963 +303 75.14679055688569 1.470400022542207 13.56409231635285 +304 54.5809877726918 -21.5432961107505 1.463301050025901 +305 58.68560157177129 22.87480709124771 15.65146087346993 +306 74.09337697895384 9.114318610864041 18.9580130883299 +307 69.4463277992747 15.85189866475206 19.87458332636964 +308 67.81617300618103 -11.87051155717443 9.95214300779163 +309 71.25126012872599 -6.029883842443665 15.87289336299308 +310 49.73263615532855 23.42539787344705 14.45650529812864 +311 60.79553381774798 -17.31168886327973 8.36994680588319 +312 71.14639548473865 1.391706249484163 22.07728243153642 +313 62.06250111349991 16.32827918315361 21.61770129381757 +314 67.45941029468537 9.445365161051473 25.39777544472221 +315 40.32408206638099 23.87232638237391 13.23375552458955 +316 45.51627726858768 -25.09984865338823 2.904090294385999 +317 15.04690718574853 -34.25141030894542 -6.866122614548233 +318 30.79240475629796 -29.69190181149672 -2.343110727045644 +319 63.59058595674506 -12.60657654698548 16.4121390158591 +320 66.31261649193273 -5.575701514250062 21.78955878640193 +321 53.76076748590062 17.16506775113701 20.538038168141 +322 30.61933560350145 24.45950821684058 12.28772919376712 +323 62.83210132068972 0.8930281738688597 25.89817247844347 +324 20.63591403168926 25.59942216421248 10.77913642990706 +325 58.19140687614055 9.60163130625952 25.59472912158873 +326 51.12498883169692 -21.75323053209879 10.05310729238745 +327 59.61962194649917 -9.247265824570418 22.29916369855239 +328 55.80004666033634 -16.93400490255731 16.70084199377121 +329 44.45209129371116 17.53501030775841 19.2542183159384 +330 9.125815816893704 23.78159304484705 9.141311998730668 +331 36.43385444862063 -27.42790924273689 4.655421977751618 +332 53.06030893316311 2.531202319525145 26.13381815354201 +333 48.4581707890497 10.26253642601327 24.06818830706502 +334 53.87820723258523 -5.573764787216695 25.09072166884511 +335 34.87589301586944 17.96110277919367 18.49971995223328 +336 21.65098592888755 -32.99272260294184 -0.5856148732876789 +337 41.77267895689472 -24.04359098941333 11.77122329426935 +338 49.77862189375355 -12.31418026524747 23.10049713591954 +339 46.02871109104736 -19.19561107854965 18.27871956808379 +340 6.59160355363543 -35.60201843080185 -4.794802757071014 +341 39.5869959173529 10.84866840387358 23.19210563733677 +342 43.20808881467947 2.436377019829497 25.77849041457846 +343 45.32249378402854 -5.650546082445426 25.45062136765906 +344 24.99442398868 18.67785958738627 17.69254571407244 +345 27.29110825355644 -29.9067461289955 6.341137311692226 +346 15.38468004390271 19.33801805447522 16.02103539562144 +347 32.5659350815412 -25.48437440771267 13.17304471073466 +348 39.6797514135815 -11.43230107247702 24.27198069520301 +349 29.24053783767063 11.4436293755554 22.51592341085625 +350 37.08983377047032 -19.56735981921613 19.97834083252471 +351 34.83188254417614 4.331138086903217 25.28428726475152 +352 12.60509485781253 -36.3177279250917 1.813409106664028 +353 34.6440569056288 -4.372423572278795 25.90441623450257 +354 6.74691765726974 17.41639190904019 14.71113219865231 +355 18.54848073908204 -33.27023208403615 8.464881600997085 +356 19.07453679306255 11.9102355979948 22.01182493969936 +357 30.86914440153068 -13.60434100630429 24.14938703744764 +358 23.6721068146383 -28.16832466519515 14.83762025174227 +359 26.99062095508112 2.041261081124258 25.84517728314554 +360 27.75352771249185 -21.68328441292905 20.30136445222603 +361 21.71875501564048 6.009868923413284 24.84109965692426 +362 3.33651199743372 -33.58725532087718 2.714023901854832 +363 10.19323196521705 13.36955102432155 19.70545078754862 +364 25.07293180031312 -6.938482892780691 26.45301950537121 +365 9.266288176517792 -36.36572485631734 10.4633950710671 +366 15.66878039173036 -32.10368982722626 16.99342513033617 +367 22.10587507868382 -15.99302214876553 25.07840520413738 +368 19.19334987953735 -24.5869733741417 21.94051269474404 +369 18.81213232808082 -2.803827940536923 27.1676030253066 +370 15.16397801993665 2.807970648553197 26.10576425818326 +371 8.77016192928148 6.520608632083997 24.26948916618105 +372 7.304974084333731 -33.83880693742044 18.9096403148132 +373 15.25139133994422 -10.03445121759556 28.08156057294394 +374 11.15473839340323 -27.97976631288769 24.7393235196738 +375 2.716834184618818 -30.00414387119214 11.29741594712698 +376 13.75073629383578 -19.21615758127576 27.30289947370491 +377 8.765221223480804 -2.762626314096272 28.49368477703557 +378 7.414842143793682 -12.93381599656523 30.01329791601531 +379 2.77621185373673 -26.08956192984735 20.72313239861376 +380 5.026727281437515 -22.40422359815177 27.79061802814724 +381 0 -17.1538237162645 -25.00380549146777 +382 0 -22.81295454328435 -17.45175522854448 +383 0 -25.25414176404805 -9.665226797378034 +384 0 -23.37721728555564 -6.320688732481738 +385 0 18.16236193973029 -3.790485097253462 +386 0 19.19816203211989 -1.370401893378521 +387 0 15.72998854011457 6.12650113804207 +388 0 9.527208099658957 13.33336530344867 +389 0 1.988028275270783 19.11798561944491 +390 0 -10.69564533248903 19.94103774737335 +391 4.31425784703274 16.57560124143309 -23.13876835833995 +392 3.905594687519309 -4.498918920463677 -31.69597396476705 +393 5.21455979023129 20.88334021502228 1.939956460969137 +394 3.943253445523008 11.1789228422026 14.03581180290972 +395 3.924166801685657 20.88083937255172 -16.49482833546826 +396 3.446138722517016 -23.98346454029647 -17.91154306597463 +397 4.107196521344878 -29.54535844343495 -8.167372569836381 +398 3.869103195757228 3.978606114565892 -30.74679043817983 +399 1.211008707802279 -9.295077199923284 21.95242461626947 +400 2.501530437176908 -16.65029327101869 -24.72895240438886 +401 3.147995559953476 19.95203690039072 -3.719117237694474 +402 1.754417271963415 2.122781230137931 19.21976116812318 +403 2.309268438536918 -24.06217326606387 6.803514288708853 +404 4.255102895173839 22.95227294310864 -2.832886695569624 +405 2.157755143064588 -27.75150024344047 -2.272486630928911 +406 4.116025040474271 -11.80638104715107 -29.84464531766659 +407 2.034100384478299 -14.93880452994189 21.69922185131382 +408 2.522342087720308 -20.57462391598152 15.17163868505287 +409 3.328202689753814 0.3448991694490103 23.27647692286257 +410 4.329435908988678 22.33326010581968 -9.256440916203156 +411 4.333714325453447 16.70739848834601 8.118907836176826 +412 4.13944460794198 7.110933102394901 17.4596811782284 +413 2.032773586287972 -26.66051641298053 -6.637697193010194 +414 4.140300625909807 10.70918116573965 -28.29986246532468 +415 4.491212125449512 -20.85717566648215 -23.05822953429023 +416 4.468023858424545 -27.29269538947383 -12.07383684083893 +417 3.788341669058472 -6.133192262749835 24.38950030219534 +$EndNodes +$Elements +2068 +1 1 2 1 3 2 3 +2 1 2 1 3 3 4 +3 1 2 1 3 4 5 +4 1 2 1 3 5 6 +5 1 2 1 3 6 7 +6 1 2 1 3 7 8 +7 1 2 1 3 8 9 +8 1 2 1 3 9 10 +9 1 2 1 3 10 11 +10 1 2 1 3 11 12 +11 1 2 1 3 12 13 +12 1 2 1 3 13 14 +13 1 2 1 3 14 15 +14 1 2 1 3 15 16 +15 1 2 1 3 16 17 +16 1 2 1 3 17 18 +17 1 2 1 3 18 19 +18 1 2 1 3 19 2 +19 1 2 2 4 1 20 +20 1 2 2 4 20 21 +21 1 2 2 4 21 22 +22 1 2 2 4 22 23 +23 1 2 2 4 23 24 +24 1 2 2 4 24 25 +25 1 2 2 4 25 26 +26 1 2 2 4 26 27 +27 1 2 2 4 27 28 +28 1 2 2 4 28 29 +29 1 2 2 4 29 30 +30 1 2 2 4 30 31 +31 1 2 2 4 31 32 +32 1 2 2 4 32 1 +33 2 2 3 5 24 36 33 +34 2 2 3 5 24 23 36 +35 2 2 3 5 26 38 27 +36 2 2 3 5 26 34 38 +37 2 2 3 5 33 39 35 +38 2 2 3 5 33 36 39 +39 2 2 3 5 34 40 38 +40 2 2 3 5 34 37 40 +41 2 2 3 5 23 49 36 +42 2 2 3 5 23 56 49 +43 2 2 3 5 23 22 56 +44 2 2 3 5 35 41 37 +45 2 2 3 5 35 39 41 +46 2 2 3 5 27 44 28 +47 2 2 3 5 27 38 44 +48 2 2 3 5 36 45 39 +49 2 2 3 5 36 49 45 +50 2 2 3 5 37 42 40 +51 2 2 3 5 38 51 44 +52 2 2 3 5 38 43 51 +53 2 2 3 5 38 40 43 +54 2 2 3 5 39 48 41 +55 2 2 3 5 39 45 48 +56 2 2 3 5 40 46 43 +57 2 2 3 5 40 42 46 +58 2 2 3 5 41 50 47 +59 2 2 3 5 41 48 50 +60 2 2 3 5 42 53 46 +61 2 2 3 5 42 54 53 +62 2 2 3 5 42 47 54 +63 2 2 3 5 43 57 51 +64 2 2 3 5 43 52 57 +65 2 2 3 5 43 46 52 +66 2 2 3 5 44 60 28 +67 2 2 3 5 45 62 48 +68 2 2 3 5 45 67 62 +69 2 2 3 5 45 49 67 +70 2 2 3 5 46 53 52 +71 2 2 3 5 47 55 54 +72 2 2 3 5 47 50 55 +73 2 2 3 5 48 58 50 +74 2 2 3 5 48 62 58 +75 2 2 3 5 49 86 67 +76 2 2 3 5 49 56 86 +77 2 2 3 5 28 76 29 +78 2 2 3 5 28 60 76 +79 2 2 3 5 50 63 55 +80 2 2 3 5 50 58 63 +81 2 2 3 5 51 57 65 +82 2 2 3 5 52 61 57 +83 2 2 3 5 52 53 61 +84 2 2 3 5 53 59 61 +85 2 2 3 5 53 54 59 +86 2 2 3 5 54 64 59 +87 2 2 3 5 54 55 64 +88 2 2 3 5 55 66 64 +89 2 2 3 5 55 63 66 +90 2 2 3 5 56 22 147 +91 2 2 3 5 57 77 65 +92 2 2 3 5 57 71 77 +93 2 2 3 5 57 61 71 +94 2 2 3 5 58 70 63 +95 2 2 3 5 58 78 70 +96 2 2 3 5 58 62 78 +97 2 2 3 5 59 68 61 +98 2 2 3 5 59 69 68 +99 2 2 3 5 59 64 69 +100 2 2 3 5 60 109 76 +101 2 2 3 5 60 87 109 +102 2 2 3 5 60 65 87 +103 2 2 3 5 61 72 71 +104 2 2 3 5 61 68 72 +105 2 2 3 5 62 90 78 +106 2 2 3 5 62 67 90 +107 2 2 3 5 63 74 66 +108 2 2 3 5 63 70 74 +109 2 2 3 5 64 73 69 +110 2 2 3 5 64 66 73 +111 2 2 3 5 65 77 87 +112 2 2 3 5 66 75 73 +113 2 2 3 5 66 74 75 +114 2 2 3 5 67 120 90 +115 2 2 3 5 67 86 120 +116 2 2 3 5 68 81 72 +117 2 2 3 5 68 79 81 +118 2 2 3 5 68 69 79 +119 2 2 3 5 69 80 79 +120 2 2 3 5 69 73 80 +121 2 2 3 5 22 21 147 +122 2 2 3 5 70 85 74 +123 2 2 3 5 70 94 85 +124 2 2 3 5 70 78 94 +125 2 2 3 5 71 98 77 +126 2 2 3 5 71 88 98 +127 2 2 3 5 71 72 88 +128 2 2 3 5 72 81 88 +129 2 2 3 5 73 84 80 +130 2 2 3 5 73 83 84 +131 2 2 3 5 73 75 83 +132 2 2 3 5 74 82 75 +133 2 2 3 5 74 93 82 +134 2 2 3 5 74 85 93 +135 2 2 3 5 75 82 83 +136 2 2 3 5 76 109 29 +137 2 2 3 5 77 115 87 +138 2 2 3 5 77 98 115 +139 2 2 3 5 78 114 94 +140 2 2 3 5 78 90 114 +141 2 2 3 5 79 92 81 +142 2 2 3 5 79 89 92 +143 2 2 3 5 79 80 89 +144 2 2 3 5 80 91 89 +145 2 2 3 5 80 84 91 +146 2 2 3 5 81 100 88 +147 2 2 3 5 81 92 100 +148 2 2 3 5 82 95 83 +149 2 2 3 5 82 93 95 +150 2 2 3 5 83 97 84 +151 2 2 3 5 83 95 97 +152 2 2 3 5 84 96 91 +153 2 2 3 5 84 97 96 +154 2 2 3 5 85 110 93 +155 2 2 3 5 85 94 110 +156 2 2 3 5 86 159 120 +157 2 2 3 5 87 148 109 +158 2 2 3 5 87 115 148 +159 2 2 3 5 88 111 98 +160 2 2 3 5 88 100 111 +161 2 2 3 5 89 101 92 +162 2 2 3 5 89 99 101 +163 2 2 3 5 89 91 99 +164 2 2 3 5 90 144 114 +165 2 2 3 5 90 120 144 +166 2 2 3 5 91 102 99 +167 2 2 3 5 91 96 102 +168 2 2 3 5 92 107 100 +169 2 2 3 5 92 101 107 +170 2 2 3 5 93 105 95 +171 2 2 3 5 93 112 105 +172 2 2 3 5 93 110 112 +173 2 2 3 5 94 114 110 +174 2 2 3 5 95 104 97 +175 2 2 3 5 95 105 104 +176 2 2 3 5 96 103 102 +177 2 2 3 5 96 97 103 +178 2 2 3 5 97 104 103 +179 2 2 3 5 98 133 115 +180 2 2 3 5 98 111 133 +181 2 2 3 5 99 106 101 +182 2 2 3 5 99 108 106 +183 2 2 3 5 99 102 108 +184 2 2 3 5 100 122 111 +185 2 2 3 5 100 107 122 +186 2 2 3 5 102 113 108 +187 2 2 3 5 102 103 113 +188 2 2 3 5 103 117 113 +189 2 2 3 5 103 104 117 +190 2 2 3 5 104 118 117 +191 2 2 3 5 104 105 118 +192 2 2 3 5 105 123 118 +193 2 2 3 5 105 112 123 +194 2 2 3 5 106 119 116 +195 2 2 3 5 106 108 119 +196 2 2 3 5 107 126 122 +197 2 2 3 5 107 116 126 +198 2 2 3 5 108 121 119 +199 2 2 3 5 108 113 121 +200 2 2 3 5 109 168 29 +201 2 2 3 5 109 148 168 +202 2 2 3 5 110 131 112 +203 2 2 3 5 110 136 131 +204 2 2 3 5 110 114 136 +205 2 2 3 5 111 142 133 +206 2 2 3 5 111 122 142 +207 2 2 3 5 112 131 123 +208 2 2 3 5 113 124 121 +209 2 2 3 5 113 117 124 +210 2 2 3 5 114 154 136 +211 2 2 3 5 114 144 154 +212 2 2 3 5 115 157 148 +213 2 2 3 5 115 133 157 +214 2 2 3 5 116 127 126 +215 2 2 3 5 116 119 127 +216 2 2 3 5 117 125 124 +217 2 2 3 5 117 118 125 +218 2 2 3 5 118 130 125 +219 2 2 3 5 118 123 130 +220 2 2 3 5 119 128 127 +221 2 2 3 5 119 121 128 +222 2 2 3 5 120 166 144 +223 2 2 3 5 120 159 166 +224 2 2 3 5 121 129 128 +225 2 2 3 5 121 124 129 +226 2 2 3 5 122 143 142 +227 2 2 3 5 122 126 143 +228 2 2 3 5 123 135 130 +229 2 2 3 5 123 131 135 +230 2 2 3 5 124 132 129 +231 2 2 3 5 124 125 132 +232 2 2 3 5 125 137 132 +233 2 2 3 5 125 130 137 +234 2 2 3 5 126 141 143 +235 2 2 3 5 126 127 141 +236 2 2 3 5 127 139 141 +237 2 2 3 5 127 128 139 +238 2 2 3 5 128 134 139 +239 2 2 3 5 128 129 134 +240 2 2 3 5 129 138 134 +241 2 2 3 5 129 132 138 +242 2 2 3 5 131 150 135 +243 2 2 3 5 131 152 150 +244 2 2 3 5 131 136 152 +245 2 2 3 5 132 140 138 +246 2 2 3 5 132 137 140 +247 2 2 3 5 29 168 30 +248 2 2 3 5 133 162 157 +249 2 2 3 5 133 142 162 +250 2 2 3 5 134 138 145 +251 2 2 3 5 135 150 146 +252 2 2 3 5 139 151 141 +253 2 2 3 5 141 155 143 +254 2 2 3 5 141 151 155 +255 2 2 3 5 142 158 162 +256 2 2 3 5 142 143 158 +257 2 2 3 5 143 155 158 +258 2 2 3 5 144 169 154 +259 2 2 3 5 144 166 169 +260 2 2 3 5 145 153 151 +261 2 2 3 5 145 149 153 +262 2 2 3 5 146 150 160 +263 2 2 3 5 147 183 159 +264 2 2 3 5 147 21 183 +265 2 2 3 5 148 174 168 +266 2 2 3 5 148 157 174 +267 2 2 3 5 149 156 153 +268 2 2 3 5 150 164 160 +269 2 2 3 5 150 152 164 +270 2 2 3 5 151 163 155 +271 2 2 3 5 151 153 163 +272 2 2 3 5 152 161 164 +273 2 2 3 5 153 156 163 +274 2 2 3 5 155 165 158 +275 2 2 3 5 155 163 165 +276 2 2 3 5 156 167 163 +277 2 2 3 5 157 175 174 +278 2 2 3 5 157 162 175 +279 2 2 3 5 158 170 162 +280 2 2 3 5 158 165 170 +281 2 2 3 5 159 177 166 +282 2 2 3 5 159 183 177 +283 2 2 3 5 160 164 172 +284 2 2 3 5 161 171 164 +285 2 2 3 5 162 170 175 +286 2 2 3 5 163 173 165 +287 2 2 3 5 163 167 173 +288 2 2 3 5 164 171 172 +289 2 2 3 5 165 173 170 +290 2 2 3 5 166 181 169 +291 2 2 3 5 166 177 181 +292 2 2 3 5 167 176 173 +293 2 2 3 5 167 172 176 +294 2 2 3 5 168 186 30 +295 2 2 3 5 168 174 186 +296 2 2 3 5 169 182 171 +297 2 2 3 5 169 181 182 +298 2 2 3 5 170 179 175 +299 2 2 3 5 170 178 179 +300 2 2 3 5 170 173 178 +301 2 2 3 5 171 182 180 +302 2 2 3 5 171 180 172 +303 2 2 3 5 172 180 176 +304 2 2 3 5 173 176 178 +305 2 2 3 5 174 185 186 +306 2 2 3 5 174 175 185 +307 2 2 3 5 175 179 185 +308 2 2 3 5 176 184 178 +309 2 2 3 5 176 180 184 +310 2 2 3 5 177 188 181 +311 2 2 3 5 177 183 188 +312 2 2 3 5 178 187 179 +313 2 2 3 5 178 184 187 +314 2 2 3 5 179 187 185 +315 2 2 3 5 180 189 184 +316 2 2 3 5 180 182 189 +317 2 2 3 5 181 190 182 +318 2 2 3 5 181 188 190 +319 2 2 3 5 182 190 189 +320 2 2 3 5 21 20 183 +321 2 2 3 5 183 20 188 +322 2 2 3 5 184 191 187 +323 2 2 3 5 184 189 191 +324 2 2 3 5 30 186 31 +325 2 2 3 5 185 192 186 +326 2 2 3 5 185 187 192 +327 2 2 3 5 186 192 31 +328 2 2 3 5 187 191 192 +329 2 2 3 5 188 194 190 +330 2 2 3 5 188 20 194 +331 2 2 3 5 189 193 191 +332 2 2 3 5 189 190 193 +333 2 2 3 5 190 194 193 +334 2 2 3 5 191 195 192 +335 2 2 3 5 191 193 195 +336 2 2 3 5 192 32 31 +337 2 2 3 5 192 195 32 +338 2 2 3 5 193 1 195 +339 2 2 3 5 193 194 1 +340 2 2 3 5 194 20 1 +341 2 2 3 5 195 1 32 +342 2 2 3 5 47 37 41 +343 2 2 3 5 42 37 47 +344 2 2 3 5 65 44 51 +345 2 2 3 5 60 44 65 +346 2 2 3 5 56 159 86 +347 2 2 3 5 56 147 159 +348 2 2 3 5 106 107 101 +349 2 2 3 5 116 107 106 +350 2 2 3 5 135 137 130 +351 2 2 3 5 146 137 135 +352 2 2 3 5 134 151 139 +353 2 2 3 5 134 145 151 +354 2 2 3 5 154 152 136 +355 2 2 3 5 161 152 154 +356 2 2 3 5 146 140 137 +357 2 2 3 5 149 140 146 +358 2 2 3 5 149 138 140 +359 2 2 3 5 145 138 149 +360 2 2 3 5 160 149 146 +361 2 2 3 5 156 149 160 +362 2 2 3 5 169 161 154 +363 2 2 3 5 171 161 169 +364 2 2 3 5 172 156 160 +365 2 2 3 5 167 156 172 +366 2 2 3 5 24 33 25 +367 2 2 3 5 34 26 25 +368 2 2 3 5 33 34 25 +369 2 2 3 5 33 37 34 +370 2 2 3 5 33 35 37 +371 2 2 4 6 9 10 196 +372 2 2 4 6 9 196 198 +373 2 2 4 6 9 198 8 +374 2 2 4 6 10 11 197 +375 2 2 4 6 10 197 196 +376 2 2 4 6 11 12 199 +377 2 2 4 6 11 199 197 +378 2 2 4 6 8 198 204 +379 2 2 4 6 8 204 7 +380 2 2 4 6 196 197 200 +381 2 2 4 6 196 200 201 +382 2 2 4 6 196 201 198 +383 2 2 4 6 197 199 202 +384 2 2 4 6 197 202 200 +385 2 2 4 6 198 201 206 +386 2 2 4 6 198 206 205 +387 2 2 4 6 198 205 204 +388 2 2 4 6 12 13 208 +389 2 2 4 6 12 208 203 +390 2 2 4 6 12 203 199 +391 2 2 4 6 199 203 209 +392 2 2 4 6 199 209 202 +393 2 2 4 6 200 202 207 +394 2 2 4 6 200 207 211 +395 2 2 4 6 200 211 201 +396 2 2 4 6 201 211 206 +397 2 2 4 6 202 209 210 +398 2 2 4 6 202 210 207 +399 2 2 4 6 7 204 222 +400 2 2 4 6 7 222 6 +401 2 2 4 6 203 208 212 +402 2 2 4 6 203 212 209 +403 2 2 4 6 204 205 220 +404 2 2 4 6 204 220 222 +405 2 2 4 6 205 206 217 +406 2 2 4 6 205 217 220 +407 2 2 4 6 206 211 216 +408 2 2 4 6 206 216 217 +409 2 2 4 6 207 210 213 +410 2 2 4 6 207 213 214 +411 2 2 4 6 207 214 211 +412 2 2 4 6 208 13 218 +413 2 2 4 6 208 218 212 +414 2 2 4 6 13 14 231 +415 2 2 4 6 13 231 218 +416 2 2 4 6 209 212 219 +417 2 2 4 6 209 219 215 +418 2 2 4 6 209 215 210 +419 2 2 4 6 210 215 213 +420 2 2 4 6 211 214 221 +421 2 2 4 6 211 221 216 +422 2 2 4 6 212 218 229 +423 2 2 4 6 212 229 227 +424 2 2 4 6 212 227 219 +425 2 2 4 6 213 215 223 +426 2 2 4 6 213 223 224 +427 2 2 4 6 213 224 214 +428 2 2 4 6 214 224 226 +429 2 2 4 6 214 226 221 +430 2 2 4 6 215 219 225 +431 2 2 4 6 215 225 223 +432 2 2 4 6 216 221 230 +433 2 2 4 6 216 230 228 +434 2 2 4 6 216 228 217 +435 2 2 4 6 217 228 241 +436 2 2 4 6 217 241 220 +437 2 2 4 6 218 231 229 +438 2 2 4 6 219 227 236 +439 2 2 4 6 219 236 225 +440 2 2 4 6 220 241 252 +441 2 2 4 6 220 252 222 +442 2 2 4 6 221 226 235 +443 2 2 4 6 221 235 230 +444 2 2 4 6 222 252 272 +445 2 2 4 6 222 272 6 +446 2 2 4 6 223 225 233 +447 2 2 4 6 223 233 232 +448 2 2 4 6 223 232 224 +449 2 2 4 6 224 232 234 +450 2 2 4 6 224 234 226 +451 2 2 4 6 225 236 237 +452 2 2 4 6 225 237 233 +453 2 2 4 6 226 234 238 +454 2 2 4 6 226 238 235 +455 2 2 4 6 227 229 245 +456 2 2 4 6 227 245 236 +457 2 2 4 6 228 230 244 +458 2 2 4 6 228 244 241 +459 2 2 4 6 229 231 250 +460 2 2 4 6 229 250 245 +461 2 2 4 6 230 235 246 +462 2 2 4 6 230 246 244 +463 2 2 4 6 231 14 266 +464 2 2 4 6 231 266 250 +465 2 2 4 6 232 233 239 +466 2 2 4 6 232 239 240 +467 2 2 4 6 232 240 234 +468 2 2 4 6 233 237 242 +469 2 2 4 6 233 242 239 +470 2 2 4 6 14 15 266 +471 2 2 4 6 234 240 243 +472 2 2 4 6 234 243 238 +473 2 2 4 6 235 238 247 +474 2 2 4 6 235 247 246 +475 2 2 4 6 236 245 257 +476 2 2 4 6 236 257 248 +477 2 2 4 6 236 248 237 +478 2 2 4 6 237 248 242 +479 2 2 4 6 238 243 254 +480 2 2 4 6 238 254 247 +481 2 2 4 6 239 242 253 +482 2 2 4 6 239 253 249 +483 2 2 4 6 239 249 240 +484 2 2 4 6 240 249 251 +485 2 2 4 6 240 251 243 +486 2 2 4 6 241 244 274 +487 2 2 4 6 241 274 284 +488 2 2 4 6 241 284 252 +489 2 2 4 6 242 248 256 +490 2 2 4 6 242 256 253 +491 2 2 4 6 243 255 254 +492 2 2 4 6 244 246 265 +493 2 2 4 6 244 265 274 +494 2 2 4 6 245 250 271 +495 2 2 4 6 245 271 257 +496 2 2 4 6 246 247 262 +497 2 2 4 6 246 262 265 +498 2 2 4 6 247 254 261 +499 2 2 4 6 247 261 262 +500 2 2 4 6 248 257 268 +501 2 2 4 6 248 268 256 +502 2 2 4 6 249 253 260 +503 2 2 4 6 249 260 258 +504 2 2 4 6 249 258 251 +505 2 2 4 6 250 266 298 +506 2 2 4 6 250 298 271 +507 2 2 4 6 251 258 259 +508 2 2 4 6 252 284 317 +509 2 2 4 6 252 317 272 +510 2 2 4 6 253 256 263 +511 2 2 4 6 253 263 260 +512 2 2 4 6 254 255 264 +513 2 2 4 6 254 264 261 +514 2 2 4 6 255 259 267 +515 2 2 4 6 255 267 264 +516 2 2 4 6 256 268 275 +517 2 2 4 6 256 275 263 +518 2 2 4 6 257 271 290 +519 2 2 4 6 257 290 291 +520 2 2 4 6 257 291 268 +521 2 2 4 6 258 260 270 +522 2 2 4 6 258 270 269 +523 2 2 4 6 258 269 259 +524 2 2 4 6 259 269 267 +525 2 2 4 6 260 263 273 +526 2 2 4 6 260 273 270 +527 2 2 4 6 261 264 276 +528 2 2 4 6 261 276 282 +529 2 2 4 6 261 282 262 +530 2 2 4 6 262 282 286 +531 2 2 4 6 262 286 265 +532 2 2 4 6 263 275 278 +533 2 2 4 6 263 278 273 +534 2 2 4 6 264 267 277 +535 2 2 4 6 264 277 276 +536 2 2 4 6 265 286 302 +537 2 2 4 6 265 302 274 +538 2 2 4 6 266 15 330 +539 2 2 4 6 266 330 298 +540 2 2 4 6 267 269 280 +541 2 2 4 6 267 280 277 +542 2 2 4 6 268 291 292 +543 2 2 4 6 268 292 275 +544 2 2 4 6 269 270 279 +545 2 2 4 6 269 279 280 +546 2 2 4 6 270 273 281 +547 2 2 4 6 270 281 279 +548 2 2 4 6 271 298 324 +549 2 2 4 6 271 324 290 +550 2 2 4 6 272 317 340 +551 2 2 4 6 273 278 283 +552 2 2 4 6 273 283 281 +553 2 2 4 6 274 302 318 +554 2 2 4 6 274 318 284 +555 2 2 4 6 275 292 294 +556 2 2 4 6 275 294 278 +557 2 2 4 6 276 277 295 +558 2 2 4 6 276 295 296 +559 2 2 4 6 276 296 282 +560 2 2 4 6 277 280 285 +561 2 2 4 6 277 285 295 +562 2 2 4 6 278 294 293 +563 2 2 4 6 278 293 283 +564 2 2 4 6 279 281 287 +565 2 2 4 6 279 287 288 +566 2 2 4 6 279 288 280 +567 2 2 4 6 280 288 285 +568 2 2 4 6 281 283 289 +569 2 2 4 6 281 289 287 +570 2 2 4 6 282 296 304 +571 2 2 4 6 282 304 286 +572 2 2 4 6 283 293 301 +573 2 2 4 6 283 301 289 +574 2 2 4 6 284 318 336 +575 2 2 4 6 284 336 317 +576 2 2 4 6 285 288 299 +577 2 2 4 6 285 299 295 +578 2 2 4 6 286 304 316 +579 2 2 4 6 286 316 302 +580 2 2 4 6 287 289 300 +581 2 2 4 6 287 300 297 +582 2 2 4 6 287 297 288 +583 2 2 4 6 288 297 303 +584 2 2 4 6 288 303 299 +585 2 2 4 6 289 301 300 +586 2 2 4 6 290 324 322 +587 2 2 4 6 290 322 291 +588 2 2 4 6 291 322 315 +589 2 2 4 6 291 315 292 +590 2 2 4 6 292 315 310 +591 2 2 4 6 292 310 294 +592 2 2 4 6 293 294 305 +593 2 2 4 6 293 305 301 +594 2 2 4 6 294 310 305 +595 2 2 4 6 295 299 308 +596 2 2 4 6 295 308 311 +597 2 2 4 6 295 311 296 +598 2 2 4 6 296 311 304 +599 2 2 4 6 297 300 306 +600 2 2 4 6 297 306 303 +601 2 2 4 6 298 330 324 +602 2 2 4 6 299 303 309 +603 2 2 4 6 299 309 308 +604 2 2 4 6 300 301 307 +605 2 2 4 6 300 307 306 +606 2 2 4 6 301 305 313 +607 2 2 4 6 301 313 307 +608 2 2 4 6 302 316 331 +609 2 2 4 6 302 331 318 +610 2 2 4 6 303 306 312 +611 2 2 4 6 303 312 309 +612 2 2 4 6 304 311 326 +613 2 2 4 6 304 326 316 +614 2 2 4 6 305 310 321 +615 2 2 4 6 305 321 313 +616 2 2 4 6 306 307 314 +617 2 2 4 6 306 314 312 +618 2 2 4 6 307 313 314 +619 2 2 4 6 308 309 319 +620 2 2 4 6 308 319 311 +621 2 2 4 6 309 312 320 +622 2 2 4 6 309 320 319 +623 2 2 4 6 310 315 329 +624 2 2 4 6 310 329 321 +625 2 2 4 6 311 319 328 +626 2 2 4 6 311 328 326 +627 2 2 4 6 15 16 330 +628 2 2 4 6 312 314 323 +629 2 2 4 6 312 323 320 +630 2 2 4 6 313 321 325 +631 2 2 4 6 313 325 314 +632 2 2 4 6 314 325 323 +633 2 2 4 6 315 322 335 +634 2 2 4 6 315 335 329 +635 2 2 4 6 316 326 337 +636 2 2 4 6 316 337 331 +637 2 2 4 6 317 336 352 +638 2 2 4 6 317 352 340 +639 2 2 4 6 318 331 345 +640 2 2 4 6 318 345 336 +641 2 2 4 6 319 320 327 +642 2 2 4 6 319 327 328 +643 2 2 4 6 320 323 327 +644 2 2 4 6 321 329 333 +645 2 2 4 6 321 333 325 +646 2 2 4 6 322 324 344 +647 2 2 4 6 322 344 335 +648 2 2 4 6 323 325 332 +649 2 2 4 6 323 332 334 +650 2 2 4 6 323 334 327 +651 2 2 4 6 324 330 346 +652 2 2 4 6 324 346 344 +653 2 2 4 6 325 333 332 +654 2 2 4 6 326 328 339 +655 2 2 4 6 326 339 337 +656 2 2 4 6 327 334 338 +657 2 2 4 6 327 338 328 +658 2 2 4 6 328 338 339 +659 2 2 4 6 329 335 341 +660 2 2 4 6 329 341 333 +661 2 2 4 6 330 16 354 +662 2 2 4 6 330 354 346 +663 2 2 4 6 331 337 347 +664 2 2 4 6 331 347 345 +665 2 2 4 6 332 333 342 +666 2 2 4 6 332 342 343 +667 2 2 4 6 332 343 334 +668 2 2 4 6 333 341 342 +669 2 2 4 6 334 343 338 +670 2 2 4 6 335 344 349 +671 2 2 4 6 335 349 341 +672 2 2 4 6 336 345 355 +673 2 2 4 6 336 355 352 +674 2 2 4 6 337 339 350 +675 2 2 4 6 337 350 347 +676 2 2 4 6 338 343 348 +677 2 2 4 6 340 362 5 +678 2 2 4 6 341 349 351 +679 2 2 4 6 341 351 342 +680 2 2 4 6 342 351 353 +681 2 2 4 6 342 353 343 +682 2 2 4 6 343 353 348 +683 2 2 4 6 344 346 356 +684 2 2 4 6 344 356 349 +685 2 2 4 6 345 347 358 +686 2 2 4 6 345 358 355 +687 2 2 4 6 346 354 363 +688 2 2 4 6 346 363 356 +689 2 2 4 6 347 350 360 +690 2 2 4 6 347 360 358 +691 2 2 4 6 348 353 357 +692 2 2 4 6 348 357 350 +693 2 2 4 6 349 356 361 +694 2 2 4 6 349 361 359 +695 2 2 4 6 349 359 351 +696 2 2 4 6 350 357 360 +697 2 2 4 6 351 359 353 +698 2 2 4 6 352 355 365 +699 2 2 4 6 5 362 4 +700 2 2 4 6 353 359 364 +701 2 2 4 6 353 364 357 +702 2 2 4 6 354 16 17 +703 2 2 4 6 354 17 363 +704 2 2 4 6 355 358 366 +705 2 2 4 6 355 366 365 +706 2 2 4 6 356 363 371 +707 2 2 4 6 356 371 370 +708 2 2 4 6 356 370 361 +709 2 2 4 6 357 364 367 +710 2 2 4 6 357 367 360 +711 2 2 4 6 358 360 368 +712 2 2 4 6 358 368 366 +713 2 2 4 6 359 361 369 +714 2 2 4 6 359 369 364 +715 2 2 4 6 360 367 368 +716 2 2 4 6 361 370 369 +717 2 2 4 6 362 365 375 +718 2 2 4 6 362 375 4 +719 2 2 4 6 363 17 371 +720 2 2 4 6 364 369 373 +721 2 2 4 6 364 373 367 +722 2 2 4 6 365 366 372 +723 2 2 4 6 365 372 375 +724 2 2 4 6 366 368 374 +725 2 2 4 6 366 374 372 +726 2 2 4 6 367 373 376 +727 2 2 4 6 367 376 368 +728 2 2 4 6 368 376 374 +729 2 2 4 6 369 370 377 +730 2 2 4 6 369 377 373 +731 2 2 4 6 370 371 377 +732 2 2 4 6 371 17 18 +733 2 2 4 6 371 18 377 +734 2 2 4 6 372 379 375 +735 2 2 4 6 373 377 378 +736 2 2 4 6 373 378 376 +737 2 2 4 6 374 376 380 +738 2 2 4 6 375 379 3 +739 2 2 4 6 375 3 4 +740 2 2 4 6 376 378 380 +741 2 2 4 6 377 18 19 +742 2 2 4 6 377 19 378 +743 2 2 4 6 379 380 2 +744 2 2 4 6 379 2 3 +745 2 2 4 6 340 5 6 +746 2 2 4 6 272 340 6 +747 2 2 4 6 243 251 259 +748 2 2 4 6 243 259 255 +749 2 2 4 6 350 339 338 +750 2 2 4 6 348 350 338 +751 2 2 4 6 340 352 365 +752 2 2 4 6 340 365 362 +753 2 2 4 6 372 374 380 +754 2 2 4 6 372 380 379 +755 2 2 4 6 19 2 380 +756 2 2 4 6 19 380 378 +757 2 2 5 8 9 10 26 +758 2 2 5 8 9 26 25 +759 2 2 5 8 9 25 8 +760 2 2 5 8 10 11 27 +761 2 2 5 8 10 27 26 +762 2 2 5 8 11 12 27 +763 2 2 5 8 8 25 381 +764 2 2 5 8 8 381 7 +765 2 2 5 8 25 24 381 +766 2 2 5 8 381 24 7 +767 2 2 5 8 12 13 28 +768 2 2 5 8 12 28 27 +769 2 2 5 8 7 24 382 +770 2 2 5 8 7 382 6 +771 2 2 5 8 24 23 382 +772 2 2 5 8 382 23 6 +773 2 2 5 8 28 13 29 +774 2 2 5 8 13 14 29 +775 2 2 5 8 6 23 383 +776 2 2 5 8 6 383 5 +777 2 2 5 8 23 22 384 +778 2 2 5 8 23 384 383 +779 2 2 5 8 383 384 5 +780 2 2 5 8 29 14 385 +781 2 2 5 8 29 385 30 +782 2 2 5 8 384 22 5 +783 2 2 5 8 14 15 386 +784 2 2 5 8 14 386 385 +785 2 2 5 8 5 22 4 +786 2 2 5 8 385 386 30 +787 2 2 5 8 22 21 4 +788 2 2 5 8 386 15 30 +789 2 2 5 8 30 15 387 +790 2 2 5 8 30 387 31 +791 2 2 5 8 15 16 387 +792 2 2 5 8 4 21 3 +793 2 2 5 8 21 20 3 +794 2 2 5 8 387 16 31 +795 2 2 5 8 31 16 388 +796 2 2 5 8 31 388 32 +797 2 2 5 8 16 17 388 +798 2 2 5 8 20 1 390 +799 2 2 5 8 20 390 2 +800 2 2 5 8 20 2 3 +801 2 2 5 8 388 17 32 +802 2 2 5 8 32 17 389 +803 2 2 5 8 32 389 1 +804 2 2 5 8 17 18 389 +805 2 2 5 8 1 389 18 +806 2 2 5 8 1 18 19 +807 2 2 5 8 1 19 390 +808 2 2 5 8 390 19 2 +809 4 2 6 10 228 244 230 50 +810 4 2 6 10 401 410 14 404 +811 4 2 6 10 295 311 105 296 +812 4 2 6 10 75 74 66 262 +813 4 2 6 10 184 180 176 359 +814 4 2 6 10 175 344 322 324 +815 4 2 6 10 24 415 396 7 +816 4 2 6 10 35 220 204 205 +817 4 2 6 10 411 30 393 186 +818 4 2 6 10 162 322 175 170 +819 4 2 6 10 106 269 108 99 +820 4 2 6 10 64 66 238 73 +821 4 2 6 10 107 101 92 253 +822 4 2 6 10 195 371 191 192 +823 4 2 6 10 85 316 286 304 +824 4 2 6 10 180 357 364 182 +825 4 2 6 10 13 14 410 231 +826 4 2 6 10 200 46 43 40 +827 4 2 6 10 69 234 226 59 +828 4 2 6 10 101 258 106 99 +829 4 2 6 10 126 278 127 116 +830 4 2 6 10 98 71 219 225 +831 4 2 6 10 63 74 246 66 +832 4 2 6 10 343 156 342 332 +833 4 2 6 10 114 347 331 337 +834 4 2 6 10 392 26 34 38 +835 4 2 6 10 52 57 213 210 +836 4 2 6 10 87 229 231 148 +837 4 2 6 10 98 115 236 227 +838 4 2 6 10 59 53 61 224 +839 4 2 6 10 87 218 109 231 +840 4 2 6 10 114 345 331 347 +841 4 2 6 10 98 219 71 77 +842 4 2 6 10 149 334 323 332 +843 4 2 6 10 250 266 231 148 +844 4 2 6 10 53 213 61 224 +845 4 2 6 10 229 218 87 231 +846 4 2 6 10 93 112 110 304 +847 4 2 6 10 351 349 176 359 +848 4 2 6 10 357 367 364 182 +849 4 2 6 10 250 266 148 174 +850 4 2 6 10 38 196 40 34 +851 4 2 6 10 211 206 42 201 +852 4 2 6 10 167 351 342 341 +853 4 2 6 10 295 299 285 117 +854 4 2 6 10 233 225 88 237 +855 4 2 6 10 133 142 248 257 +856 4 2 6 10 201 200 196 40 +857 4 2 6 10 245 250 229 115 +858 4 2 6 10 307 313 138 314 +859 4 2 6 10 121 288 287 297 +860 4 2 6 10 97 264 83 84 +861 4 2 6 10 75 261 262 247 +862 4 2 6 10 189 190 373 193 +863 4 2 6 10 96 277 103 97 +864 4 2 6 10 96 102 103 267 +865 4 2 6 10 15 411 30 393 +866 4 2 6 10 388 31 16 394 +867 4 2 6 10 103 285 117 104 +868 4 2 6 10 290 322 324 175 +869 4 2 6 10 79 68 81 232 +870 4 2 6 10 411 30 186 31 +871 4 2 6 10 396 415 24 36 +872 4 2 6 10 69 64 226 238 +873 4 2 6 10 355 345 336 120 +874 4 2 6 10 239 81 100 242 +875 4 2 6 10 355 120 159 166 +876 4 2 6 10 345 90 336 120 +877 4 2 6 10 256 107 253 263 +878 4 2 6 10 93 296 282 95 +879 4 2 6 10 346 174 324 175 +880 4 2 6 10 109 87 231 148 +881 4 2 6 10 70 274 265 302 +882 4 2 6 10 69 64 238 73 +883 4 2 6 10 234 69 226 238 +884 4 2 6 10 201 37 40 34 +885 4 2 6 10 189 184 370 369 +886 4 2 6 10 223 213 61 215 +887 4 2 6 10 338 327 135 146 +888 4 2 6 10 328 123 326 131 +889 4 2 6 10 255 96 264 267 +890 4 2 6 10 93 296 105 304 +891 4 2 6 10 222 33 39 204 +892 4 2 6 10 74 262 265 246 +893 4 2 6 10 57 71 61 215 +894 4 2 6 10 228 41 50 47 +895 4 2 6 10 75 262 66 247 +896 4 2 6 10 182 360 367 169 +897 4 2 6 10 244 63 265 246 +898 4 2 6 10 350 136 347 154 +899 4 2 6 10 169 161 360 154 +900 4 2 6 10 321 145 153 151 +901 4 2 6 10 416 397 56 413 +902 4 2 6 10 5 413 22 405 +903 4 2 6 10 119 279 270 281 +904 4 2 6 10 360 161 169 171 +905 4 2 6 10 268 143 275 292 +906 4 2 6 10 349 178 361 356 +907 4 2 6 10 4 405 22 403 +908 4 2 6 10 126 143 275 122 +909 4 2 6 10 85 74 286 265 +910 4 2 6 10 206 201 198 37 +911 4 2 6 10 191 371 363 192 +912 4 2 6 10 74 85 70 265 +913 4 2 6 10 63 74 265 246 +914 4 2 6 10 107 263 122 126 +915 4 2 6 10 242 88 111 237 +916 4 2 6 10 90 331 345 318 +917 4 2 6 10 332 153 325 149 +918 4 2 6 10 338 146 160 334 +919 4 2 6 10 288 299 117 285 +920 4 2 6 10 340 397 5 405 +921 4 2 6 10 296 93 105 95 +922 4 2 6 10 118 299 308 295 +923 4 2 6 10 345 347 144 358 +924 4 2 6 10 190 367 181 182 +925 4 2 6 10 173 178 176 349 +926 4 2 6 10 157 250 245 115 +927 4 2 6 10 142 158 292 291 +928 4 2 6 10 306 129 132 138 +929 4 2 6 10 301 127 128 139 +930 4 2 6 10 173 349 176 351 +931 4 2 6 10 108 119 121 279 +932 4 2 6 10 74 63 265 70 +933 4 2 6 10 112 93 105 304 +934 4 2 6 10 286 93 304 282 +935 4 2 6 10 321 151 153 333 +936 4 2 6 10 190 189 373 182 +937 4 2 6 10 179 178 170 344 +938 4 2 6 10 254 247 73 238 +939 4 2 6 10 213 53 214 224 +940 4 2 6 10 93 296 304 282 +941 4 2 6 10 354 185 186 330 +942 4 2 6 10 333 151 153 163 +943 4 2 6 10 218 13 208 395 +944 4 2 6 10 140 312 314 323 +945 4 2 6 10 154 114 347 144 +946 4 2 6 10 343 338 160 334 +947 4 2 6 10 53 54 211 214 +948 4 2 6 10 404 266 231 14 +949 4 2 6 10 262 93 74 286 +950 4 2 6 10 135 123 130 319 +951 4 2 6 10 326 136 337 339 +952 4 2 6 10 261 262 282 82 +953 4 2 6 10 262 93 286 282 +954 4 2 6 10 246 63 66 55 +955 4 2 6 10 398 26 27 10 +956 4 2 6 10 48 244 58 274 +957 4 2 6 10 107 256 100 122 +958 4 2 6 10 258 251 89 249 +959 4 2 6 10 81 88 100 242 +960 4 2 6 10 229 87 115 148 +961 4 2 6 10 272 416 6 397 +962 4 2 6 10 124 129 303 297 +963 4 2 6 10 184 180 359 369 +964 4 2 6 10 308 130 319 309 +965 4 2 6 10 246 235 66 247 +966 4 2 6 10 16 394 17 388 +967 4 2 6 10 124 299 303 125 +968 4 2 6 10 125 137 309 132 +969 4 2 6 10 262 93 282 82 +970 4 2 6 10 407 390 399 20 +971 4 2 6 10 24 25 400 381 +972 4 2 6 10 317 284 67 336 +973 4 2 6 10 274 58 62 78 +974 4 2 6 10 197 196 398 10 +975 4 2 6 10 261 83 95 276 +976 4 2 6 10 360 358 154 347 +977 4 2 6 10 160 338 348 150 +978 4 2 6 10 365 355 159 366 +979 4 2 6 10 107 263 116 260 +980 4 2 6 10 65 208 87 212 +981 4 2 6 10 211 201 42 40 +982 4 2 6 10 310 143 155 315 +983 4 2 6 10 411 31 394 16 +984 4 2 6 10 125 299 309 308 +985 4 2 6 10 270 258 106 260 +986 4 2 6 10 46 211 42 40 +987 4 2 6 10 168 109 231 148 +988 4 2 6 10 299 125 309 303 +989 4 2 6 10 312 132 303 309 +990 4 2 6 10 30 401 385 386 +991 4 2 6 10 31 411 387 16 +992 4 2 6 10 98 225 237 88 +993 4 2 6 10 266 393 330 15 +994 4 2 6 10 112 311 326 304 +995 4 2 6 10 173 335 341 165 +996 4 2 6 10 145 321 153 325 +997 4 2 6 10 356 346 187 363 +998 4 2 6 10 200 211 40 201 +999 4 2 6 10 163 173 341 165 +1000 4 2 6 10 220 222 39 204 +1001 4 2 6 10 200 46 40 211 +1002 4 2 6 10 212 87 77 227 +1003 4 2 6 10 52 57 210 43 +1004 4 2 6 10 167 173 351 341 +1005 4 2 6 10 173 167 163 341 +1006 4 2 6 10 133 248 142 111 +1007 4 2 6 10 323 332 325 149 +1008 4 2 6 10 266 168 148 174 +1009 4 2 6 10 174 324 298 330 +1010 4 2 6 10 291 133 257 142 +1011 4 2 6 10 35 220 39 204 +1012 4 2 6 10 162 157 290 133 +1013 4 2 6 10 98 248 133 111 +1014 4 2 6 10 262 74 66 246 +1015 4 2 6 10 49 252 317 272 +1016 4 2 6 10 221 216 42 211 +1017 4 2 6 10 41 206 217 205 +1018 4 2 6 10 118 299 295 117 +1019 4 2 6 10 93 85 286 304 +1020 4 2 6 10 300 121 287 297 +1021 4 2 6 10 118 299 125 308 +1022 4 2 6 10 113 288 121 124 +1023 4 2 6 10 97 264 276 83 +1024 4 2 6 10 252 36 222 272 +1025 4 2 6 10 188 2 407 408 +1026 4 2 6 10 68 223 61 72 +1027 4 2 6 10 63 58 265 70 +1028 4 2 6 10 268 142 111 122 +1029 4 2 6 10 288 113 121 279 +1030 4 2 6 10 53 211 207 214 +1031 4 2 6 10 141 294 127 126 +1032 4 2 6 10 300 121 297 129 +1033 4 2 6 10 110 112 326 304 +1034 4 2 6 10 156 167 342 163 +1035 4 2 6 10 236 98 237 248 +1036 4 2 6 10 376 367 368 181 +1037 4 2 6 10 234 69 243 240 +1038 4 2 6 10 130 118 125 308 +1039 4 2 6 10 317 86 67 49 +1040 4 2 6 10 98 219 236 225 +1041 4 2 6 10 135 123 328 131 +1042 4 2 6 10 349 361 176 359 +1043 4 2 6 10 362 56 159 86 +1044 4 2 6 10 79 239 81 92 +1045 4 2 6 10 314 145 149 325 +1046 4 2 6 10 328 339 150 131 +1047 4 2 6 10 123 135 328 319 +1048 4 2 6 10 285 295 117 104 +1049 4 2 6 10 129 306 303 297 +1050 4 2 6 10 294 310 141 305 +1051 4 2 6 10 389 402 32 17 +1052 4 2 6 10 402 18 17 389 +1053 4 2 6 10 295 296 104 276 +1054 4 2 6 10 118 319 308 130 +1055 4 2 6 10 310 151 141 305 +1056 4 2 6 10 262 246 66 247 +1057 4 2 6 10 113 103 285 117 +1058 4 2 6 10 18 409 17 371 +1059 4 2 6 10 295 118 117 104 +1060 4 2 6 10 49 252 272 36 +1061 4 2 6 10 96 277 97 264 +1062 4 2 6 10 235 64 55 66 +1063 4 2 6 10 296 276 282 95 +1064 4 2 6 10 118 319 130 123 +1065 4 2 6 10 102 113 280 108 +1066 4 2 6 10 106 273 270 260 +1067 4 2 6 10 102 267 280 103 +1068 4 2 6 10 288 113 279 280 +1069 4 2 6 10 85 316 302 286 +1070 4 2 6 10 126 294 275 143 +1071 4 2 6 10 340 397 6 5 +1072 4 2 6 10 382 23 396 24 +1073 4 2 6 10 250 229 115 148 +1074 4 2 6 10 252 36 45 39 +1075 4 2 6 10 263 278 126 116 +1076 4 2 6 10 397 383 6 5 +1077 4 2 6 10 180 369 364 359 +1078 4 2 6 10 176 351 359 353 +1079 4 2 6 10 233 223 232 72 +1080 4 2 6 10 296 311 105 304 +1081 4 2 6 10 25 8 400 381 +1082 4 2 6 10 261 75 262 82 +1083 4 2 6 10 372 159 375 177 +1084 4 2 6 10 252 36 39 222 +1085 4 2 6 10 8 25 406 9 +1086 4 2 6 10 65 208 212 203 +1087 4 2 6 10 397 49 340 272 +1088 4 2 6 10 206 37 198 205 +1089 4 2 6 10 379 372 375 177 +1090 4 2 6 10 8 415 7 204 +1091 4 2 6 10 394 388 32 17 +1092 4 2 6 10 29 410 13 14 +1093 4 2 6 10 340 362 405 5 +1094 4 2 6 10 175 344 324 346 +1095 4 2 6 10 340 86 56 362 +1096 4 2 6 10 120 90 336 67 +1097 4 2 6 10 142 268 111 248 +1098 4 2 6 10 68 79 69 234 +1099 4 2 6 10 57 65 219 209 +1100 4 2 6 10 65 57 219 77 +1101 4 2 6 10 371 195 17 412 +1102 4 2 6 10 17 195 402 412 +1103 4 2 6 10 233 239 81 232 +1104 4 2 6 10 321 310 151 329 +1105 4 2 6 10 333 151 163 329 +1106 4 2 6 10 157 162 290 175 +1107 4 2 6 10 344 170 175 322 +1108 4 2 6 10 321 151 333 329 +1109 4 2 6 10 92 101 89 249 +1110 4 2 6 10 104 296 95 276 +1111 4 2 6 10 4 405 403 362 +1112 4 2 6 10 367 169 368 181 +1113 4 2 6 10 397 49 272 416 +1114 4 2 6 10 86 365 340 352 +1115 4 2 6 10 74 262 286 265 +1116 4 2 6 10 379 2 380 188 +1117 4 2 6 10 382 7 24 396 +1118 4 2 6 10 159 56 362 147 +1119 4 2 6 10 4 405 362 5 +1120 4 2 6 10 322 344 170 335 +1121 4 2 6 10 120 86 67 352 +1122 4 2 6 10 277 96 103 267 +1123 4 2 6 10 124 125 303 132 +1124 4 2 6 10 157 324 271 298 +1125 4 2 6 10 283 278 127 293 +1126 4 2 6 10 261 276 95 282 +1127 4 2 6 10 326 136 339 131 +1128 4 2 6 10 288 124 303 297 +1129 4 2 6 10 80 240 89 251 +1130 4 2 6 10 180 357 353 364 +1131 4 2 6 10 357 164 171 172 +1132 4 2 6 10 137 309 312 320 +1133 4 2 6 10 301 289 128 127 +1134 4 2 6 10 404 14 231 410 +1135 4 2 6 10 346 174 175 185 +1136 4 2 6 10 245 257 133 236 +1137 4 2 6 10 310 321 151 305 +1138 4 2 6 10 382 23 6 396 +1139 4 2 6 10 23 413 384 383 +1140 4 2 6 10 124 288 121 297 +1141 4 2 6 10 5 22 413 384 +1142 4 2 6 10 157 290 271 324 +1143 4 2 6 10 352 317 67 336 +1144 4 2 6 10 7 24 400 381 +1145 4 2 6 10 357 161 360 171 +1146 4 2 6 10 353 160 348 172 +1147 4 2 6 10 366 355 166 358 +1148 4 2 6 10 338 146 150 160 +1149 4 2 6 10 195 370 371 377 +1150 4 2 6 10 311 123 328 319 +1151 4 2 6 10 58 244 265 274 +1152 4 2 6 10 86 317 67 352 +1153 4 2 6 10 345 90 318 336 +1154 4 2 6 10 156 332 333 342 +1155 4 2 6 10 404 14 15 266 +1156 4 2 6 10 82 261 95 282 +1157 4 2 6 10 376 190 378 373 +1158 4 2 6 10 157 250 174 298 +1159 4 2 6 10 190 376 367 373 +1160 4 2 6 10 260 106 107 101 +1161 4 2 6 10 391 414 44 27 +1162 4 2 6 10 266 174 298 330 +1163 4 2 6 10 314 145 325 313 +1164 4 2 6 10 125 130 309 137 +1165 4 2 6 10 360 154 358 169 +1166 4 2 6 10 366 159 177 166 +1167 4 2 6 10 134 145 138 313 +1168 4 2 6 10 373 367 182 364 +1169 4 2 6 10 184 189 370 191 +1170 4 2 6 10 20 188 407 408 +1171 4 2 6 10 349 173 170 335 +1172 4 2 6 10 314 145 313 138 +1173 4 2 6 10 153 145 325 149 +1174 4 2 6 10 411 30 31 387 +1175 4 2 6 10 393 30 15 386 +1176 4 2 6 10 15 30 411 387 +1177 4 2 6 10 401 14 385 386 +1178 4 2 6 10 174 393 330 266 +1179 4 2 6 10 179 356 346 187 +1180 4 2 6 10 404 15 14 386 +1181 4 2 6 10 217 39 48 41 +1182 4 2 6 10 159 403 362 375 +1183 4 2 6 10 35 217 39 220 +1184 4 2 6 10 201 42 40 37 +1185 4 2 6 10 49 252 36 45 +1186 4 2 6 10 191 184 187 356 +1187 4 2 6 10 86 365 159 362 +1188 4 2 6 10 403 3 375 408 +1189 4 2 6 10 416 23 396 6 +1190 4 2 6 10 29 401 14 385 +1191 4 2 6 10 401 29 30 385 +1192 4 2 6 10 35 41 39 217 +1193 4 2 6 10 328 338 150 339 +1194 4 2 6 10 159 403 375 183 +1195 4 2 6 10 416 222 6 396 +1196 4 2 6 10 222 36 39 33 +1197 4 2 6 10 274 70 78 302 +1198 4 2 6 10 46 211 53 42 +1199 4 2 6 10 217 41 228 216 +1200 4 2 6 10 230 47 221 216 +1201 4 2 6 10 12 395 28 391 +1202 4 2 6 10 139 313 305 151 +1203 4 2 6 10 115 245 133 236 +1204 4 2 6 10 258 101 106 260 +1205 4 2 6 10 174 157 324 175 +1206 4 2 6 10 169 368 166 358 +1207 4 2 6 10 244 63 230 50 +1208 4 2 6 10 222 252 220 39 +1209 4 2 6 10 74 85 286 93 +1210 4 2 6 10 49 252 45 317 +1211 4 2 6 10 137 323 140 146 +1212 4 2 6 10 63 244 265 58 +1213 4 2 6 10 53 211 54 42 +1214 4 2 6 10 107 106 260 116 +1215 4 2 6 10 201 37 34 198 +1216 4 2 6 10 196 200 38 40 +1217 4 2 6 10 52 46 207 53 +1218 4 2 6 10 234 69 238 243 +1219 4 2 6 10 71 223 61 215 +1220 4 2 6 10 96 277 264 267 +1221 4 2 6 10 240 251 249 89 +1222 4 2 6 10 120 352 67 336 +1223 4 2 6 10 233 81 72 232 +1224 4 2 6 10 196 201 40 34 +1225 4 2 6 10 80 79 89 240 +1226 4 2 6 10 92 239 253 249 +1227 4 2 6 10 79 239 240 232 +1228 4 2 6 10 317 272 340 49 +1229 4 2 6 10 86 317 340 49 +1230 4 2 6 10 23 56 413 416 +1231 4 2 6 10 416 23 49 36 +1232 4 2 6 10 407 378 380 188 +1233 4 2 6 10 59 68 224 61 +1234 4 2 6 10 414 12 27 391 +1235 4 2 6 10 68 223 224 61 +1236 4 2 6 10 113 108 121 279 +1237 4 2 6 10 149 146 140 323 +1238 4 2 6 10 283 119 127 273 +1239 4 2 6 10 233 225 72 88 +1240 4 2 6 10 129 134 300 128 +1241 4 2 6 10 306 312 314 138 +1242 4 2 6 10 75 74 262 82 +1243 4 2 6 10 223 233 225 72 +1244 4 2 6 10 97 96 264 84 +1245 4 2 6 10 120 355 352 336 +1246 4 2 6 10 338 327 146 334 +1247 4 2 6 10 223 71 61 72 +1248 4 2 6 10 156 332 149 153 +1249 4 2 6 10 271 133 257 290 +1250 4 2 6 10 338 135 150 146 +1251 4 2 6 10 225 71 72 88 +1252 4 2 6 10 156 333 153 163 +1253 4 2 6 10 156 332 153 333 +1254 4 2 6 10 118 319 123 311 +1255 4 2 6 10 289 119 128 127 +1256 4 2 6 10 25 9 392 406 +1257 4 2 6 10 113 288 117 285 +1258 4 2 6 10 52 57 61 213 +1259 4 2 6 10 350 347 136 337 +1260 4 2 6 10 83 254 73 84 +1261 4 2 6 10 256 242 100 111 +1262 4 2 6 10 54 235 221 226 +1263 4 2 6 10 213 57 61 215 +1264 4 2 6 10 143 268 275 122 +1265 4 2 6 10 300 289 287 128 +1266 4 2 6 10 242 237 111 248 +1267 4 2 6 10 170 158 335 165 +1268 4 2 6 10 405 147 22 403 +1269 4 2 6 10 229 250 231 148 +1270 4 2 6 10 23 56 416 49 +1271 4 2 6 10 114 136 347 337 +1272 4 2 6 10 158 322 315 291 +1273 4 2 6 10 190 378 194 188 +1274 4 2 6 10 97 277 104 276 +1275 4 2 6 10 82 93 282 95 +1276 4 2 6 10 263 278 275 126 +1277 4 2 6 10 316 110 326 304 +1278 4 2 6 10 268 256 275 122 +1279 4 2 6 10 310 151 155 141 +1280 4 2 6 10 416 23 6 383 +1281 4 2 6 10 75 247 73 254 +1282 4 2 6 10 319 309 137 320 +1283 4 2 6 10 261 75 83 254 +1284 4 2 6 10 35 41 217 205 +1285 4 2 6 10 256 263 275 122 +1286 4 2 6 10 19 194 399 417 +1287 4 2 6 10 263 126 275 122 +1288 4 2 6 10 319 137 309 130 +1289 4 2 6 10 90 331 318 78 +1290 4 2 6 10 180 353 357 172 +1291 4 2 6 10 218 212 87 208 +1292 4 2 6 10 81 239 100 92 +1293 4 2 6 10 212 218 87 229 +1294 4 2 6 10 209 57 210 215 +1295 4 2 6 10 119 121 287 128 +1296 4 2 6 10 236 257 133 248 +1297 4 2 6 10 157 250 148 174 +1298 4 2 6 10 266 168 231 148 +1299 4 2 6 10 110 316 337 331 +1300 4 2 6 10 107 256 122 263 +1301 4 2 6 10 57 219 215 209 +1302 4 2 6 10 53 52 213 207 +1303 4 2 6 10 136 339 350 337 +1304 4 2 6 10 54 214 226 221 +1305 4 2 6 10 69 68 234 59 +1306 4 2 6 10 289 119 287 128 +1307 4 2 6 10 123 112 326 131 +1308 4 2 6 10 90 318 62 78 +1309 4 2 6 10 83 264 254 84 +1310 4 2 6 10 110 316 331 94 +1311 4 2 6 10 142 292 158 143 +1312 4 2 6 10 106 269 270 108 +1313 4 2 6 10 191 371 370 356 +1314 4 2 6 10 279 288 287 121 +1315 4 2 6 10 250 157 245 271 +1316 4 2 6 10 65 212 219 209 +1317 4 2 6 10 114 110 331 94 +1318 4 2 6 10 301 127 139 293 +1319 4 2 6 10 75 247 66 73 +1320 4 2 6 10 361 184 359 369 +1321 4 2 6 10 80 91 251 89 +1322 4 2 6 10 200 43 38 40 +1323 4 2 6 10 119 270 279 108 +1324 4 2 6 10 300 289 128 301 +1325 4 2 6 10 277 295 285 104 +1326 4 2 6 10 91 96 267 102 +1327 4 2 6 10 255 96 267 91 +1328 4 2 6 10 235 64 66 238 +1329 4 2 6 10 249 79 239 240 +1330 4 2 6 10 119 279 287 121 +1331 4 2 6 10 273 278 263 116 +1332 4 2 6 10 302 318 331 78 +1333 4 2 6 10 83 75 73 254 +1334 4 2 6 10 90 331 78 114 +1335 4 2 6 10 316 302 331 94 +1336 4 2 6 10 365 362 375 159 +1337 4 2 6 10 94 302 331 78 +1338 4 2 6 10 289 283 119 127 +1339 4 2 6 10 114 94 331 78 +1340 4 2 6 10 278 283 127 273 +1341 4 2 6 10 107 263 126 116 +1342 4 2 6 10 300 134 307 301 +1343 4 2 6 10 288 113 117 124 +1344 4 2 6 10 127 141 139 293 +1345 4 2 6 10 294 305 141 293 +1346 4 2 6 10 140 312 132 138 +1347 4 2 6 10 409 417 1 193 +1348 4 2 6 10 85 316 110 94 +1349 4 2 6 10 338 327 328 135 +1350 4 2 6 10 339 328 326 131 +1351 4 2 6 10 233 88 242 237 +1352 4 2 6 10 123 112 105 311 +1353 4 2 6 10 110 316 326 337 +1354 4 2 6 10 190 376 188 181 +1355 4 2 6 10 211 206 216 42 +1356 4 2 6 10 353 176 167 172 +1357 4 2 6 10 191 192 363 187 +1358 4 2 6 10 139 313 151 134 +1359 4 2 6 10 173 170 335 165 +1360 4 2 6 10 20 390 399 1 +1361 4 2 6 10 388 31 394 32 +1362 4 2 6 10 361 184 176 359 +1363 4 2 6 10 157 174 324 298 +1364 4 2 6 10 180 353 359 364 +1365 4 2 6 10 157 290 324 175 +1366 4 2 6 10 318 274 62 78 +1367 4 2 6 10 223 71 225 215 +1368 4 2 6 10 392 9 26 10 +1369 4 2 6 10 338 152 150 339 +1370 4 2 6 10 13 29 28 395 +1371 4 2 6 10 284 274 62 318 +1372 4 2 6 10 38 398 27 414 +1373 4 2 6 10 305 301 139 293 +1374 4 2 6 10 151 305 139 141 +1375 4 2 6 10 353 167 176 351 +1376 4 2 6 10 338 152 348 150 +1377 4 2 6 10 377 19 417 378 +1378 4 2 6 10 357 353 348 172 +1379 4 2 6 10 154 169 144 358 +1380 4 2 6 10 354 185 192 186 +1381 4 2 6 10 18 409 371 377 +1382 4 2 6 10 344 349 170 335 +1383 4 2 6 10 268 142 122 143 +1384 4 2 6 10 178 349 344 356 +1385 4 2 6 10 151 313 145 134 +1386 4 2 6 10 403 4 21 22 +1387 4 2 6 10 71 223 225 72 +1388 4 2 6 10 278 294 275 126 +1389 4 2 6 10 402 389 32 1 +1390 4 2 6 10 242 239 253 100 +1391 4 2 6 10 217 48 220 241 +1392 4 2 6 10 181 368 177 166 +1393 4 2 6 10 184 356 370 361 +1394 4 2 6 10 395 29 109 410 +1395 4 2 6 10 380 407 188 2 +1396 4 2 6 10 229 87 227 115 +1397 4 2 6 10 242 88 100 111 +1398 4 2 6 10 239 233 81 242 +1399 4 2 6 10 70 58 274 78 +1400 4 2 6 10 8 7 400 381 +1401 4 2 6 10 174 393 266 168 +1402 4 2 6 10 20 3 21 408 +1403 4 2 6 10 376 190 367 181 +1404 4 2 6 10 9 196 392 198 +1405 4 2 6 10 396 382 7 6 +1406 4 2 6 10 223 213 224 61 +1407 4 2 6 10 243 73 69 238 +1408 4 2 6 10 162 322 290 175 +1409 4 2 6 10 169 181 166 368 +1410 4 2 6 10 268 142 143 292 +1411 4 2 6 10 357 180 171 182 +1412 4 2 6 10 59 234 226 224 +1413 4 2 6 10 289 283 281 119 +1414 4 2 6 10 225 98 237 236 +1415 4 2 6 10 182 360 357 367 +1416 4 2 6 10 335 158 315 165 +1417 4 2 6 10 98 115 133 236 +1418 4 2 6 10 235 246 66 55 +1419 4 2 6 10 271 133 290 157 +1420 4 2 6 10 403 3 408 21 +1421 4 2 6 10 346 174 185 330 +1422 4 2 6 10 83 97 95 276 +1423 4 2 6 10 277 295 104 276 +1424 4 2 6 10 184 370 356 191 +1425 4 2 6 10 264 261 83 254 +1426 4 2 6 10 284 317 45 252 +1427 4 2 6 10 408 2 20 3 +1428 4 2 6 10 195 370 377 193 +1429 4 2 6 10 264 261 276 83 +1430 4 2 6 10 106 269 99 258 +1431 4 2 6 10 106 273 260 116 +1432 4 2 6 10 113 102 280 103 +1433 4 2 6 10 278 294 127 293 +1434 4 2 6 10 288 299 303 124 +1435 4 2 6 10 75 261 247 254 +1436 4 2 6 10 195 370 193 191 +1437 4 2 6 10 108 102 99 269 +1438 4 2 6 10 251 258 99 259 +1439 4 2 6 10 149 334 146 323 +1440 4 2 6 10 180 357 171 172 +1441 4 2 6 10 327 135 319 328 +1442 4 2 6 10 312 306 303 132 +1443 4 2 6 10 145 313 151 321 +1444 4 2 6 10 299 124 117 125 +1445 4 2 6 10 299 288 117 124 +1446 4 2 6 10 141 310 143 155 +1447 4 2 6 10 108 113 280 279 +1448 4 2 6 10 256 242 253 100 +1449 4 2 6 10 108 279 280 269 +1450 4 2 6 10 102 108 280 269 +1451 4 2 6 10 113 288 285 280 +1452 4 2 6 10 175 344 346 179 +1453 4 2 6 10 322 158 335 170 +1454 4 2 6 10 178 349 170 344 +1455 4 2 6 10 264 255 254 84 +1456 4 2 6 10 169 360 368 358 +1457 4 2 6 10 365 366 159 372 +1458 4 2 6 10 296 104 95 105 +1459 4 2 6 10 160 343 353 348 +1460 4 2 6 10 103 277 280 285 +1461 4 2 6 10 41 206 205 37 +1462 4 2 6 10 267 277 280 103 +1463 4 2 6 10 245 229 227 115 +1464 4 2 6 10 162 158 142 291 +1465 4 2 6 10 268 257 142 291 +1466 4 2 6 10 271 133 157 245 +1467 4 2 6 10 35 217 220 205 +1468 4 2 6 10 291 133 142 162 +1469 4 2 6 10 291 133 162 290 +1470 4 2 6 10 415 222 204 33 +1471 4 2 6 10 415 222 33 36 +1472 4 2 6 10 112 123 326 311 +1473 4 2 6 10 178 173 170 349 +1474 4 2 6 10 46 200 43 207 +1475 4 2 6 10 207 200 43 202 +1476 4 2 6 10 159 403 183 147 +1477 4 2 6 10 317 86 340 352 +1478 4 2 6 10 97 104 95 276 +1479 4 2 6 10 243 69 73 80 +1480 4 2 6 10 213 57 215 210 +1481 4 2 6 10 24 415 33 36 +1482 4 2 6 10 159 177 183 375 +1483 4 2 6 10 81 233 72 88 +1484 4 2 6 10 408 177 188 379 +1485 4 2 6 10 46 211 207 53 +1486 4 2 6 10 46 200 207 211 +1487 4 2 6 10 115 98 77 227 +1488 4 2 6 10 53 59 214 224 +1489 4 2 6 10 59 53 214 54 +1490 4 2 6 10 52 46 43 207 +1491 4 2 6 10 35 41 205 37 +1492 4 2 6 10 408 2 3 379 +1493 4 2 6 10 283 301 293 127 +1494 4 2 6 10 12 395 391 208 +1495 4 2 6 10 294 141 127 293 +1496 4 2 6 10 409 377 417 193 +1497 4 2 6 10 301 134 307 313 +1498 4 2 6 10 139 313 134 301 +1499 4 2 6 10 134 301 128 139 +1500 4 2 6 10 79 69 234 240 +1501 4 2 6 10 69 79 80 240 +1502 4 2 6 10 279 108 270 269 +1503 4 2 6 10 139 313 301 305 +1504 4 2 6 10 403 3 21 4 +1505 4 2 6 10 113 103 280 285 +1506 4 2 6 10 71 219 225 215 +1507 4 2 6 10 141 294 126 143 +1508 4 2 6 10 134 300 128 301 +1509 4 2 6 10 219 71 57 215 +1510 4 2 6 10 107 263 260 253 +1511 4 2 6 10 219 57 71 77 +1512 4 2 6 10 8 33 415 204 +1513 4 2 6 10 143 158 155 315 +1514 4 2 6 10 64 59 226 54 +1515 4 2 6 10 47 228 216 230 +1516 4 2 6 10 106 269 258 270 +1517 4 2 6 10 64 235 226 238 +1518 4 2 6 10 333 163 341 329 +1519 4 2 6 10 349 173 341 351 +1520 4 2 6 10 329 163 341 165 +1521 4 2 6 10 335 329 341 165 +1522 4 2 6 10 211 42 221 54 +1523 4 2 6 10 101 253 260 249 +1524 4 2 6 10 179 185 346 175 +1525 4 2 6 10 185 179 346 187 +1526 4 2 6 10 179 344 346 356 +1527 4 2 6 10 336 284 67 62 +1528 4 2 6 10 42 47 221 54 +1529 4 2 6 10 90 336 67 62 +1530 4 2 6 10 356 191 363 187 +1531 4 2 6 10 47 230 221 55 +1532 4 2 6 10 103 277 285 104 +1533 4 2 6 10 371 191 363 356 +1534 4 2 6 10 296 295 104 105 +1535 4 2 6 10 277 97 104 103 +1536 4 2 6 10 185 192 187 363 +1537 4 2 6 10 262 93 82 74 +1538 4 2 6 10 279 119 287 281 +1539 4 2 6 10 137 312 309 132 +1540 4 2 6 10 415 24 33 400 +1541 4 2 6 10 354 185 363 192 +1542 4 2 6 10 346 185 187 363 +1543 4 2 6 10 198 35 204 205 +1544 4 2 6 10 378 190 193 373 +1545 4 2 6 10 317 49 67 45 +1546 4 2 6 10 66 247 238 73 +1547 4 2 6 10 48 284 62 45 +1548 4 2 6 10 217 48 39 220 +1549 4 2 6 10 54 211 214 221 +1550 4 2 6 10 228 217 241 48 +1551 4 2 6 10 376 181 368 374 +1552 4 2 6 10 326 136 131 110 +1553 4 2 6 10 311 123 326 328 +1554 4 2 6 10 80 240 251 243 +1555 4 2 6 10 69 80 243 240 +1556 4 2 6 10 96 255 264 84 +1557 4 2 6 10 316 85 302 94 +1558 4 2 6 10 408 2 379 188 +1559 4 2 6 10 403 3 4 375 +1560 4 2 6 10 368 181 177 374 +1561 4 2 6 10 360 169 368 367 +1562 4 2 6 10 90 331 114 345 +1563 4 2 6 10 48 244 274 241 +1564 4 2 6 10 198 35 205 37 +1565 4 2 6 10 368 366 177 166 +1566 4 2 6 10 366 368 177 374 +1567 4 2 6 10 372 365 375 159 +1568 4 2 6 10 380 407 2 19 +1569 4 2 6 10 326 136 110 337 +1570 4 2 6 10 318 274 78 302 +1571 4 2 6 10 198 35 37 33 +1572 4 2 6 10 357 164 161 171 +1573 4 2 6 10 131 112 326 110 +1574 4 2 6 10 70 302 94 78 +1575 4 2 6 10 8 415 33 400 +1576 4 2 6 10 198 35 33 204 +1577 4 2 6 10 358 355 166 144 +1578 4 2 6 10 178 179 187 356 +1579 4 2 6 10 417 18 377 409 +1580 4 2 6 10 88 98 111 237 +1581 4 2 6 10 340 86 49 56 +1582 4 2 6 10 366 372 374 177 +1583 4 2 6 10 413 5 384 383 +1584 4 2 6 10 398 10 27 11 +1585 4 2 6 10 372 366 159 177 +1586 4 2 6 10 398 197 10 11 +1587 4 2 6 10 417 18 409 1 +1588 4 2 6 10 255 91 267 259 +1589 4 2 6 10 366 355 159 166 +1590 4 2 6 10 182 360 169 171 +1591 4 2 6 10 255 96 91 84 +1592 4 2 6 10 316 85 110 304 +1593 4 2 6 10 158 165 155 315 +1594 4 2 6 10 34 37 33 198 +1595 4 2 6 10 354 411 394 16 +1596 4 2 6 10 189 180 369 364 +1597 4 2 6 10 378 417 193 194 +1598 4 2 6 10 174 393 168 186 +1599 4 2 6 10 108 119 270 106 +1600 4 2 6 10 396 415 222 7 +1601 4 2 6 10 196 201 34 198 +1602 4 2 6 10 241 48 220 252 +1603 4 2 6 10 8 25 400 406 +1604 4 2 6 10 19 390 1 399 +1605 4 2 6 10 193 417 1 194 +1606 4 2 6 10 412 371 363 17 +1607 4 2 6 10 1 19 399 417 +1608 4 2 6 10 106 273 116 119 +1609 4 2 6 10 189 377 370 193 +1610 4 2 6 10 201 206 42 37 +1611 4 2 6 10 200 196 38 197 +1612 4 2 6 10 378 376 380 188 +1613 4 2 6 10 190 376 378 188 +1614 4 2 6 10 119 289 287 281 +1615 4 2 6 10 41 217 228 48 +1616 4 2 6 10 230 47 50 55 +1617 4 2 6 10 41 228 50 48 +1618 4 2 6 10 63 230 50 55 +1619 4 2 6 10 417 18 19 377 +1620 4 2 6 10 119 273 281 270 +1621 4 2 6 10 414 12 391 199 +1622 4 2 6 10 8 33 204 198 +1623 4 2 6 10 64 69 226 59 +1624 4 2 6 10 243 254 73 238 +1625 4 2 6 10 245 157 115 133 +1626 4 2 6 10 247 235 66 238 +1627 4 2 6 10 119 283 281 273 +1628 4 2 6 10 242 256 248 111 +1629 4 2 6 10 114 136 337 110 +1630 4 2 6 10 63 246 230 55 +1631 4 2 6 10 246 235 230 55 +1632 4 2 6 10 149 160 146 334 +1633 4 2 6 10 162 322 170 158 +1634 4 2 6 10 158 143 292 315 +1635 4 2 6 10 48 228 244 241 +1636 4 2 6 10 48 244 228 50 +1637 4 2 6 10 180 189 182 364 +1638 4 2 6 10 333 156 342 163 +1639 4 2 6 10 373 189 369 364 +1640 4 2 6 10 239 92 253 100 +1641 4 2 6 10 189 373 182 364 +1642 4 2 6 10 256 268 111 122 +1643 4 2 6 10 162 322 291 290 +1644 4 2 6 10 142 268 291 292 +1645 4 2 6 10 191 189 370 193 +1646 4 2 6 10 101 92 253 249 +1647 4 2 6 10 271 133 245 257 +1648 4 2 6 10 251 258 89 99 +1649 4 2 6 10 258 101 89 99 +1650 4 2 6 10 159 403 147 362 +1651 4 2 6 10 91 251 89 99 +1652 4 2 6 10 98 236 133 248 +1653 4 2 6 10 267 102 280 269 +1654 4 2 6 10 143 310 292 315 +1655 4 2 6 10 118 299 117 125 +1656 4 2 6 10 416 222 272 6 +1657 4 2 6 10 163 151 155 329 +1658 4 2 6 10 136 339 131 152 +1659 4 2 6 10 45 284 62 67 +1660 4 2 6 10 368 366 166 358 +1661 4 2 6 10 212 229 87 227 +1662 4 2 6 10 182 360 171 357 +1663 4 2 6 10 311 118 308 295 +1664 4 2 6 10 140 312 137 132 +1665 4 2 6 10 219 212 77 227 +1666 4 2 6 10 65 212 77 219 +1667 4 2 6 10 328 135 131 150 +1668 4 2 6 10 311 112 105 304 +1669 4 2 6 10 167 173 176 351 +1670 4 2 6 10 86 365 362 340 +1671 4 2 6 10 212 65 77 87 +1672 4 2 6 10 355 345 120 144 +1673 4 2 6 10 173 349 341 335 +1674 4 2 6 10 12 391 28 27 +1675 4 2 6 10 4 405 5 22 +1676 4 2 6 10 377 189 373 193 +1677 4 2 6 10 261 82 95 83 +1678 4 2 6 10 245 115 227 236 +1679 4 2 6 10 115 87 227 77 +1680 4 2 6 10 268 256 111 248 +1681 4 2 6 10 92 107 253 100 +1682 4 2 6 10 329 310 155 315 +1683 4 2 6 10 239 79 81 232 +1684 4 2 6 10 347 154 144 358 +1685 4 2 6 10 268 257 248 142 +1686 4 2 6 10 377 189 370 369 +1687 4 2 6 10 367 190 373 182 +1688 4 2 6 10 114 345 347 144 +1689 4 2 6 10 68 223 232 224 +1690 4 2 6 10 160 164 348 172 +1691 4 2 6 10 180 176 359 353 +1692 4 2 6 10 367 169 181 182 +1693 4 2 6 10 189 377 373 369 +1694 4 2 6 10 195 370 191 371 +1695 4 2 6 10 184 361 370 369 +1696 4 2 6 10 136 152 154 350 +1697 4 2 6 10 98 71 225 88 +1698 4 2 6 10 394 363 17 412 +1699 4 2 6 10 294 143 310 292 +1700 4 2 6 10 178 179 356 344 +1701 4 2 6 10 249 79 240 89 +1702 4 2 6 10 258 101 260 249 +1703 4 2 6 10 167 351 353 342 +1704 4 2 6 10 269 102 99 259 +1705 4 2 6 10 267 102 269 259 +1706 4 2 6 10 91 251 99 259 +1707 4 2 6 10 59 224 226 214 +1708 4 2 6 10 294 310 143 141 +1709 4 2 6 10 164 160 348 150 +1710 4 2 6 10 81 68 72 232 +1711 4 2 6 10 70 85 94 302 +1712 4 2 6 10 416 23 36 396 +1713 4 2 6 10 234 68 224 59 +1714 4 2 6 10 228 47 50 230 +1715 4 2 6 10 228 41 47 216 +1716 4 2 6 10 230 235 221 55 +1717 4 2 6 10 362 403 4 375 +1718 4 2 6 10 223 68 232 72 +1719 4 2 6 10 54 59 226 214 +1720 4 2 6 10 291 133 290 257 +1721 4 2 6 10 52 207 210 213 +1722 4 2 6 10 125 130 308 309 +1723 4 2 6 10 278 273 127 116 +1724 4 2 6 10 63 244 230 246 +1725 4 2 6 10 137 323 320 312 +1726 4 2 6 10 294 278 127 126 +1727 4 2 6 10 70 58 265 274 +1728 4 2 6 10 54 235 226 64 +1729 4 2 6 10 283 289 301 127 +1730 4 2 6 10 54 47 221 55 +1731 4 2 6 10 256 100 122 111 +1732 4 2 6 10 137 323 312 140 +1733 4 2 6 10 273 119 127 116 +1734 4 2 6 10 141 305 139 293 +1735 4 2 6 10 53 52 61 213 +1736 4 2 6 10 237 98 111 248 +1737 4 2 6 10 212 65 203 209 +1738 4 2 6 10 207 202 43 210 +1739 4 2 6 10 129 124 303 132 +1740 4 2 6 10 306 129 303 132 +1741 4 2 6 10 118 311 105 295 +1742 4 2 6 10 143 294 275 292 +1743 4 2 6 10 250 157 271 298 +1744 4 2 6 10 322 162 291 158 +1745 4 2 6 10 81 233 88 242 +1746 4 2 6 10 52 207 43 210 +1747 4 2 6 10 221 42 216 47 +1748 4 2 6 10 101 258 89 249 +1749 4 2 6 10 107 256 253 100 +1750 4 2 6 10 333 163 342 341 +1751 4 2 6 10 258 269 99 259 +1752 4 2 6 10 118 123 105 311 +1753 4 2 6 10 129 124 121 297 +1754 4 2 6 10 300 129 297 306 +1755 4 2 6 10 75 261 83 82 +1756 4 2 6 10 157 250 115 148 +1757 4 2 6 10 185 174 186 330 +1758 4 2 6 10 266 250 298 174 +1759 4 2 6 10 185 354 346 330 +1760 4 2 6 10 346 174 330 324 +1761 4 2 6 10 321 145 313 325 +1762 4 2 6 10 152 164 348 150 +1763 4 2 6 10 168 404 401 393 +1764 4 2 6 10 151 310 155 329 +1765 4 2 6 10 295 118 104 105 +1766 4 2 6 10 305 151 313 321 +1767 4 2 6 10 134 129 300 307 +1768 4 2 6 10 300 129 306 307 +1769 4 2 6 10 338 135 328 150 +1770 4 2 6 10 312 306 132 138 +1771 4 2 6 10 312 140 314 138 +1772 4 2 6 10 327 146 334 323 +1773 4 2 6 10 118 319 311 308 +1774 4 2 6 10 135 137 146 327 +1775 4 2 6 10 277 97 264 276 +1776 4 2 6 10 132 125 303 309 +1777 4 2 6 10 307 134 138 313 +1778 4 2 6 10 306 129 138 307 +1779 4 2 6 10 180 176 353 172 +1780 4 2 6 10 321 333 153 325 +1781 4 2 6 10 165 329 155 315 +1782 4 2 6 10 129 134 138 307 +1783 4 2 6 10 338 343 160 348 +1784 4 2 6 10 90 114 144 345 +1785 4 2 6 10 322 158 315 335 +1786 4 2 6 10 163 329 155 165 +1787 4 2 6 10 135 137 319 130 +1788 4 2 6 10 136 339 152 350 +1789 4 2 6 10 350 360 154 347 +1790 4 2 6 10 158 291 315 292 +1791 4 2 6 10 136 114 347 154 +1792 4 2 6 10 164 357 348 172 +1793 4 2 6 10 338 152 339 350 +1794 4 2 6 10 178 184 361 356 +1795 4 2 6 10 114 110 337 331 +1796 4 2 6 10 333 332 153 325 +1797 4 2 6 10 307 306 314 138 +1798 4 2 6 10 319 137 135 327 +1799 4 2 6 10 184 189 180 369 +1800 4 2 6 10 206 41 217 216 +1801 4 2 6 10 284 317 67 45 +1802 4 2 6 10 234 68 232 224 +1803 4 2 6 10 339 152 150 131 +1804 4 2 6 10 163 167 342 341 +1805 4 2 6 10 338 152 350 348 +1806 4 2 6 10 33 25 34 406 +1807 4 2 6 10 320 137 319 327 +1808 4 2 6 10 199 414 38 44 +1809 4 2 6 10 178 349 361 176 +1810 4 2 6 10 184 178 361 176 +1811 4 2 6 10 184 178 187 356 +1812 4 2 6 10 90 345 144 120 +1813 4 2 6 10 377 378 193 373 +1814 4 2 6 10 106 273 119 270 +1815 4 2 6 10 244 63 50 58 +1816 4 2 6 10 185 354 363 346 +1817 4 2 6 10 234 79 240 232 +1818 4 2 6 10 30 168 401 393 +1819 4 2 6 10 68 79 234 232 +1820 4 2 6 10 344 175 170 179 +1821 4 2 6 10 329 335 315 165 +1822 4 2 6 10 33 35 39 204 +1823 4 2 6 10 378 19 417 194 +1824 4 2 6 10 407 390 20 2 +1825 4 2 6 10 190 378 193 194 +1826 4 2 6 10 345 355 358 144 +1827 4 2 6 10 407 378 188 194 +1828 4 2 6 10 169 358 166 144 +1829 4 2 6 10 402 18 389 1 +1830 4 2 6 10 7 222 204 415 +1831 4 2 6 10 85 93 110 304 +1832 4 2 6 10 12 203 391 199 +1833 4 2 6 10 207 53 214 213 +1834 4 2 6 10 355 120 166 144 +1835 4 2 6 10 9 25 392 26 +1836 4 2 6 10 392 26 398 10 +1837 4 2 6 10 101 107 260 253 +1838 4 2 6 10 263 273 116 260 +1839 4 2 6 10 413 384 22 23 +1840 4 2 6 10 51 43 38 202 +1841 4 2 6 10 38 44 51 199 +1842 4 2 6 10 43 57 210 51 +1843 4 2 6 10 210 202 43 51 +1844 4 2 6 10 87 65 60 208 +1845 4 2 6 10 109 87 60 218 +1846 4 2 6 10 395 109 60 218 +1847 4 2 6 10 51 203 209 199 +1848 4 2 6 10 395 60 208 218 +1849 4 2 6 10 218 208 87 60 +1850 4 2 6 10 167 172 156 353 +1851 4 2 6 10 342 167 156 353 +1852 4 2 6 10 172 160 156 353 +1853 4 2 6 10 202 199 197 38 +1854 4 2 6 10 38 51 202 199 +1855 4 2 6 10 44 28 60 391 +1856 4 2 6 10 60 203 44 391 +1857 4 2 6 10 249 79 89 92 +1858 4 2 6 10 249 79 92 239 +1859 4 2 6 10 156 334 343 160 +1860 4 2 6 10 156 334 160 149 +1861 4 2 6 10 156 334 149 332 +1862 4 2 6 10 156 334 332 343 +1863 4 2 6 10 252 39 48 220 +1864 4 2 6 10 48 39 252 45 +1865 4 2 6 10 330 16 411 354 +1866 4 2 6 10 411 15 387 16 +1867 4 2 6 10 85 265 302 70 +1868 4 2 6 10 302 265 85 286 +1869 4 2 6 10 54 235 64 55 +1870 4 2 6 10 54 235 55 221 +1871 4 2 6 10 62 336 318 90 +1872 4 2 6 10 62 318 336 284 +1873 4 2 6 10 314 145 138 149 +1874 4 2 6 10 138 314 149 140 +1875 4 2 6 10 314 149 323 325 +1876 4 2 6 10 314 323 149 140 +1877 4 2 6 10 300 121 129 128 +1878 4 2 6 10 300 121 128 287 +1879 4 2 6 10 259 102 91 267 +1880 4 2 6 10 259 91 102 99 +1881 4 2 6 10 137 327 323 146 +1882 4 2 6 10 137 323 327 320 +1883 4 2 6 10 252 48 284 241 +1884 4 2 6 10 252 284 48 45 +1885 4 2 6 10 42 216 37 206 +1886 4 2 6 10 42 37 216 47 +1887 4 2 6 10 37 216 41 206 +1888 4 2 6 10 37 41 216 47 +1889 4 2 6 10 372 380 177 379 +1890 4 2 6 10 177 380 372 374 +1891 4 2 6 10 380 188 177 379 +1892 4 2 6 10 259 243 91 251 +1893 4 2 6 10 259 91 243 255 +1894 4 2 6 10 91 243 80 251 +1895 4 2 6 10 161 350 357 360 +1896 4 2 6 10 154 161 350 152 +1897 4 2 6 10 154 350 161 360 +1898 4 2 6 10 365 86 120 352 +1899 4 2 6 10 365 120 86 159 +1900 4 2 6 10 355 365 120 352 +1901 4 2 6 10 355 120 365 159 +1902 4 2 6 10 227 98 219 236 +1903 4 2 6 10 227 219 98 77 +1904 4 2 6 10 48 284 274 62 +1905 4 2 6 10 48 274 284 241 +1906 4 2 6 10 58 48 274 62 +1907 4 2 6 10 48 244 50 58 +1908 4 2 6 10 379 408 375 3 +1909 4 2 6 10 408 177 379 375 +1910 4 2 6 10 202 38 200 43 +1911 4 2 6 10 202 200 38 197 +1912 4 2 6 10 199 414 11 197 +1913 4 2 6 10 414 12 199 11 +1914 4 2 6 10 156 353 343 342 +1915 4 2 6 10 343 353 156 160 +1916 4 2 6 10 210 51 209 202 +1917 4 2 6 10 51 199 209 202 +1918 4 2 6 10 51 203 199 44 +1919 4 2 6 10 51 203 44 65 +1920 4 2 6 10 51 203 65 209 +1921 4 2 6 10 60 203 391 208 +1922 4 2 6 10 203 391 208 12 +1923 4 2 6 10 60 28 395 391 +1924 4 2 6 10 60 395 28 76 +1925 4 2 6 10 395 109 218 410 +1926 4 2 6 10 12 395 208 13 +1927 4 2 6 10 377 417 193 378 +1928 4 2 6 10 416 222 396 36 +1929 4 2 6 10 60 203 208 65 +1930 4 2 6 10 60 203 65 44 +1931 4 2 6 10 348 161 152 350 +1932 4 2 6 10 348 161 350 357 +1933 4 2 6 10 348 161 357 164 +1934 4 2 6 10 348 161 164 152 +1935 4 2 6 10 51 57 209 65 +1936 4 2 6 10 209 57 51 210 +1937 4 2 6 10 177 380 181 188 +1938 4 2 6 10 181 380 177 374 +1939 4 2 6 10 380 376 181 188 +1940 4 2 6 10 181 376 380 374 +1941 4 2 6 10 91 243 84 80 +1942 4 2 6 10 84 243 91 255 +1943 4 2 6 10 84 254 243 255 +1944 4 2 6 10 243 84 73 254 +1945 4 2 6 10 73 84 243 80 +1946 4 2 6 10 383 416 413 397 +1947 4 2 6 10 25 392 34 406 +1948 4 2 6 10 392 196 34 198 +1949 4 2 6 10 392 25 34 26 +1950 4 2 6 10 411 15 16 330 +1951 4 2 6 10 397 416 6 383 +1952 4 2 6 10 411 15 330 393 +1953 4 2 6 10 397 49 416 56 +1954 4 2 6 10 17 394 16 354 +1955 4 2 6 10 412 394 32 17 +1956 4 2 6 10 394 31 192 32 +1957 4 2 6 10 403 147 21 183 +1958 4 2 6 10 395 109 29 76 +1959 4 2 6 10 147 403 21 22 +1960 4 2 6 10 199 38 414 197 +1961 4 2 6 10 405 147 403 362 +1962 4 2 6 10 12 395 13 28 +1963 4 2 6 10 395 29 28 76 +1964 4 2 6 10 395 60 391 208 +1965 4 2 6 10 222 415 396 36 +1966 4 2 6 10 272 416 49 36 +1967 4 2 6 10 222 396 7 6 +1968 4 2 6 10 397 49 56 340 +1969 4 2 6 10 340 272 6 397 +1970 4 2 6 10 38 197 398 414 +1971 4 2 6 10 416 222 36 272 +1972 4 2 6 10 38 26 27 398 +1973 4 2 6 10 197 196 38 398 +1974 4 2 6 10 414 398 27 11 +1975 4 2 6 10 414 197 398 11 +1976 4 2 6 10 392 26 38 398 +1977 4 2 6 10 407 390 2 19 +1978 4 2 6 10 20 399 194 1 +1979 4 2 6 10 194 1 399 417 +1980 4 2 6 10 407 390 19 399 +1981 4 2 6 10 24 25 33 400 +1982 4 2 6 10 33 8 400 406 +1983 4 2 6 10 7 24 415 400 +1984 4 2 6 10 8 7 415 400 +1985 4 2 6 10 30 393 401 386 +1986 4 2 6 10 404 14 401 386 +1987 4 2 6 10 401 410 404 168 +1988 4 2 6 10 168 29 30 401 +1989 4 2 6 10 32 17 402 412 +1990 4 2 6 10 409 18 17 402 +1991 4 2 6 10 195 402 32 1 +1992 4 2 6 10 409 18 402 1 +1993 4 2 6 10 401 410 168 29 +1994 4 2 6 10 168 266 231 404 +1995 4 2 6 10 410 168 29 109 +1996 4 2 6 10 393 404 15 266 +1997 4 2 6 10 393 15 404 386 +1998 4 2 6 10 393 404 401 386 +1999 4 2 6 10 401 410 29 14 +2000 4 2 6 10 44 38 27 414 +2001 4 2 6 10 196 392 34 38 +2002 4 2 6 10 196 9 392 10 +2003 4 2 6 10 196 392 398 10 +2004 4 2 6 10 413 405 56 22 +2005 4 2 6 10 196 392 38 398 +2006 4 2 6 10 413 5 383 397 +2007 4 2 6 10 405 147 362 56 +2008 4 2 6 10 340 397 405 56 +2009 4 2 6 10 340 362 56 405 +2010 4 2 6 10 405 147 56 22 +2011 4 2 6 10 383 23 413 416 +2012 4 2 6 10 405 397 413 56 +2013 4 2 6 10 168 404 393 266 +2014 4 2 6 10 411 192 394 31 +2015 4 2 6 10 411 192 31 186 +2016 4 2 6 10 174 393 186 330 +2017 4 2 6 10 394 363 412 192 +2018 4 2 6 10 29 410 395 13 +2019 4 2 6 10 396 23 36 24 +2020 4 2 6 10 168 393 30 186 +2021 4 2 6 10 395 109 76 60 +2022 4 2 6 10 413 5 397 405 +2023 4 2 6 10 8 406 198 9 +2024 4 2 6 10 406 9 392 198 +2025 4 2 6 10 8 406 33 198 +2026 4 2 6 10 33 406 34 198 +2027 4 2 6 10 406 392 34 198 +2028 4 2 6 10 20 407 188 194 +2029 4 2 6 10 407 378 194 19 +2030 4 2 6 10 407 378 19 380 +2031 4 2 6 10 407 20 399 194 +2032 4 2 6 10 19 407 399 194 +2033 4 2 6 10 414 12 11 27 +2034 4 2 6 10 391 414 199 44 +2035 4 2 6 10 391 44 28 27 +2036 4 2 6 10 391 203 44 199 +2037 4 2 6 10 195 32 402 412 +2038 4 2 6 10 218 410 231 13 +2039 4 2 6 10 403 408 375 183 +2040 4 2 6 10 20 408 21 183 +2041 4 2 6 10 403 408 183 21 +2042 4 2 6 10 408 20 188 183 +2043 4 2 6 10 408 177 375 183 +2044 4 2 6 10 408 177 183 188 +2045 4 2 6 10 409 195 17 371 +2046 4 2 6 10 409 195 377 193 +2047 4 2 6 10 409 195 371 377 +2048 4 2 6 10 195 409 1 193 +2049 4 2 6 10 195 409 17 402 +2050 4 2 6 10 195 409 402 1 +2051 4 2 6 10 2 20 407 408 +2052 4 2 6 10 25 33 400 406 +2053 4 2 6 10 410 168 109 231 +2054 4 2 6 10 395 410 218 13 +2055 4 2 6 10 394 363 354 17 +2056 4 2 6 10 410 168 231 404 +2057 4 2 6 10 411 192 186 354 +2058 4 2 6 10 231 410 218 109 +2059 4 2 6 10 411 192 354 394 +2060 4 2 6 10 330 411 186 354 +2061 4 2 6 10 56 413 22 23 +2062 4 2 6 10 186 411 330 393 +2063 4 2 6 10 371 195 412 192 +2064 4 2 6 10 195 192 32 412 +2065 4 2 6 10 192 371 363 412 +2066 4 2 6 10 394 363 192 354 +2067 4 2 6 10 192 394 32 412 +2068 4 2 6 10 417 18 1 19 +$EndElements diff --git a/demos/patient_specific_lv.py b/demos/patient_specific_lv.py new file mode 100644 index 00000000..d4a4a5c7 --- /dev/null +++ b/demos/patient_specific_lv.py @@ -0,0 +1,118 @@ +from pathlib import Path + +import cardiac_geometries +import ldrb +import simcardems +import pulse + +msh_file = "geometries/patient.msh" +geo = cardiac_geometries.gmsh2dolfin(msh_file) + +ldrb_markers = { + "base": geo.markers["BASE"][0], + "lv": geo.markers["ENDO"][0], + "epi": geo.markers["EPI"][0], +} + +fiber_space = "DG_1" + +# Create a dictionary of fiber angles + +angles = dict( + alpha_endo_lv=60, # Fiber angle on the endocardium + alpha_epi_lv=-60, # Fiber angle on the epicardium + beta_endo_lv=0, # Sheet angle on the endocardium + beta_epi_lv=0, +) + + +f0, s0, n0 = ldrb.dolfin_ldrb( + mesh=geo.mesh, + fiber_space=fiber_space, + ffun=geo.marker_functions.ffun, + markers=ldrb_markers, + **angles +) +f0.set_allow_extrapolation(True) +s0.set_allow_extrapolation(True) +n0.set_allow_extrapolation(True) + +here = Path(__file__).absolute().parent +outdir = here / "results_patient_specific_lv" +outdir.mkdir(exist_ok=True) + +# # dolfin.File((outdir / "ffun.pvd").as_posix()) << geo.marker_functions.ffun +# # dolfin.File((outdir / "f0.pvd").as_posix()) << f0 +# print(geo.markers) +# exit() + + +geometry = simcardems.lvgeometry.LeftVentricularGeometry( + mechanics_mesh=geo.mesh, + microstructure=pulse.Microstructure(f0=f0, s0=s0, n0=n0), + ffun=geo.marker_functions.ffun, + markers=geo.markers, + parameters={"num_refinements": 1, "fiber_space": fiber_space}, +) + + +# Specify path to the initial conditions for the cell model +initial_conditions_path = ( + here / "initial_conditions/fully_coupled_Tor_Land/init_5000beats.json" +) + +config = simcardems.Config( + outdir=outdir, + coupling_type="fully_coupled_Tor_Land", + T=1000, + spring=0.01, # Sprint term on the epicardium to mimic pericardium + traction=0.0, # Pressure on the endocardium + cell_init_file=initial_conditions_path, +) + +# And create the coupling. Note that, here we are using a different method than usual for creating the coupling, since we need to also supply the geometry. + +coupling = simcardems.models.em_model.setup_EM_model_from_config( + config=config, + geometry=geometry, +) + +# Next we create the runner, and solve the problem + +runner = simcardems.Runner.from_models(config=config, coupling=coupling) + +# # First inflate ventricle +pulse.iterate.iterate( + problem=runner.coupling.mech_solver, + control=runner.coupling.mech_solver.bcs.neumann[0].traction, + target=1.0, # Set it to 1kPa +) + + +runner.solve(T=config.T, save_freq=config.save_freq, show_progress_bar=False) + +# Now let us only extract the results of the membrane potential, and compare the values in different points in the mesh. For the slab geometry we can for example evaluate the functions a the minimum and maximum $x$ values and at the center. To do this, we need to first load the results + +# loader = simcardems.DataLoader(outdir / "results.h5") + + +# simcardems.postprocess.plot_state_traces(outdir.joinpath("results.h5")) + +# +# Here the traces generated by averaging over this domain. + + +# This will create a figure in the output directory called `state_traces.png` which in this case is shown in {numref}`Figure {number} ` we see the resulting state traces, and can also see the instant drop in the active tension ($T_a$) at the time of the triggered release. +# +# ```{figure} figures/lv_demo_state_traces.png +# --- +# name: lv_demo_state_traces +# --- +# Traces of the stretch ($\lambda$), the active tension ($T_a$), the membrane potential ($V$) and the intercellular calcium concentration ($Ca$) at the center of the geometry. +# ``` + +# +# We can also save the output to xdmf-files that can be viewed in Paraview +# + +simcardems.postprocess.make_xdmffiles(outdir.joinpath("results.h5"), names=["u"]) From 2316f91513eb6cf71d485a3376b15912769a4ae0 Mon Sep 17 00:00:00 2001 From: Henrik Finsberg Date: Fri, 17 Mar 2023 14:34:26 +0100 Subject: [PATCH 2/5] Add documentation for the patient specific demo --- demos/patient_specific_lv.py | 68 +++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/demos/patient_specific_lv.py b/demos/patient_specific_lv.py index d4a4a5c7..dcf9dfb4 100644 --- a/demos/patient_specific_lv.py +++ b/demos/patient_specific_lv.py @@ -1,22 +1,35 @@ -from pathlib import Path +# # Patient specific geometry +# +# In this demo we show to use `simcardems` on a patient specific geometry coming from `gmsh`. We have uploaded a [gmsh file](https://github.com/ComputationalPhysiology/simcardems/blob/main/demos/geometries/patient.msh) of an LV geometry where the basal, endocardial and epicardial surfaces are marked. In order to run a simulation we need to first convert this geometry into FEniCS format and then generate some fiber orientations. To convert the mesh we will use a library called [`cardiac-geometries`](https://computationalphysiology.github.io/cardiac_geometries/) and we will generate rule-based fiber orientations using the [`ldrb algorithm`](https://finsberg.github.io/ldrb/README.html). +# +# First we make the necessary imports. +from pathlib import Path import cardiac_geometries import ldrb import simcardems import pulse +# Next we use `cardiac-geometries` to convert the gmsh file into FEniCS format. +# + msh_file = "geometries/patient.msh" geo = cardiac_geometries.gmsh2dolfin(msh_file) +# The `geo` object now contains the markers, but the `ldrb` algorithm expects the markers in a dictionary with keys `base`, `lv` and `epi` so we create a translation for this. +# + ldrb_markers = { "base": geo.markers["BASE"][0], "lv": geo.markers["ENDO"][0], "epi": geo.markers["EPI"][0], } +# We also need to specify a function space for the fibers. In this example we will will first order discontinuous lagrange elements. + fiber_space = "DG_1" -# Create a dictionary of fiber angles +# We also need so specify the fiber fiber orientations on the endo- and epicardium. angles = dict( alpha_endo_lv=60, # Fiber angle on the endocardium @@ -25,6 +38,7 @@ beta_epi_lv=0, ) +# Now we can run the ldrb algorithm in order to get the fibers (`f0`), sheets (`s0`) and sheet-normal (`n0`) directions. For some reason we also need to allow these functions to be extrapolated. f0, s0, n0 = ldrb.dolfin_ldrb( mesh=geo.mesh, @@ -37,15 +51,15 @@ s0.set_allow_extrapolation(True) n0.set_allow_extrapolation(True) + +# Next we define a directory where to store the output + here = Path(__file__).absolute().parent outdir = here / "results_patient_specific_lv" outdir.mkdir(exist_ok=True) -# # dolfin.File((outdir / "ffun.pvd").as_posix()) << geo.marker_functions.ffun -# # dolfin.File((outdir / "f0.pvd").as_posix()) << f0 -# print(geo.markers) -# exit() - +# and then we can load the geometry into simcardems. +# geometry = simcardems.lvgeometry.LeftVentricularGeometry( mechanics_mesh=geo.mesh, @@ -55,12 +69,16 @@ parameters={"num_refinements": 1, "fiber_space": fiber_space}, ) +# For this example we will use the Tor-Land model with some non-default initial conditions specified in the following file +# # Specify path to the initial conditions for the cell model initial_conditions_path = ( here / "initial_conditions/fully_coupled_Tor_Land/init_5000beats.json" ) +# We will run the simulation for 1000 milliseconds. We apply a spring on the epicardium to mimic the pericardium and we set the traction on the endocardium to zero. + config = simcardems.Config( outdir=outdir, coupling_type="fully_coupled_Tor_Land", @@ -70,49 +88,35 @@ cell_init_file=initial_conditions_path, ) -# And create the coupling. Note that, here we are using a different method than usual for creating the coupling, since we need to also supply the geometry. +# Now we can create the coupling. coupling = simcardems.models.em_model.setup_EM_model_from_config( config=config, geometry=geometry, ) -# Next we create the runner, and solve the problem +# And to make things move a little bit more we will set the reference active tension to 60 kPa. + +coupling.mech_solver.material.T_ref.assign(60) + +# Now we create the runner runner = simcardems.Runner.from_models(config=config, coupling=coupling) -# # First inflate ventricle +# but before we run the EM simulations, we will inflate the LV to a cavity pressure of 1 kPa. + pulse.iterate.iterate( problem=runner.coupling.mech_solver, control=runner.coupling.mech_solver.bcs.neumann[0].traction, target=1.0, # Set it to 1kPa ) +# Now we run the EM simulation. -runner.solve(T=config.T, save_freq=config.save_freq, show_progress_bar=False) - -# Now let us only extract the results of the membrane potential, and compare the values in different points in the mesh. For the slab geometry we can for example evaluate the functions a the minimum and maximum $x$ values and at the center. To do this, we need to first load the results - -# loader = simcardems.DataLoader(outdir / "results.h5") - +runner.solve(T=config.T, save_freq=config.save_freq, show_progress_bar=True) -# simcardems.postprocess.plot_state_traces(outdir.joinpath("results.h5")) -# -# Here the traces generated by averaging over this domain. - - -# This will create a figure in the output directory called `state_traces.png` which in this case is shown in {numref}`Figure {number} ` we see the resulting state traces, and can also see the instant drop in the active tension ($T_a$) at the time of the triggered release. -# -# ```{figure} figures/lv_demo_state_traces.png -# --- -# name: lv_demo_state_traces -# --- -# Traces of the stretch ($\lambda$), the active tension ($T_a$), the membrane potential ($V$) and the intercellular calcium concentration ($Ca$) at the center of the geometry. -# ``` - -# -# We can also save the output to xdmf-files that can be viewed in Paraview +# And save the output to xdmf-files that can be viewed in Paraview # simcardems.postprocess.make_xdmffiles(outdir.joinpath("results.h5"), names=["u"]) From 93c57b286e96f669b12d4ad58a892be4060571dd Mon Sep 17 00:00:00 2001 From: Henrik Finsberg Date: Fri, 17 Mar 2023 14:35:24 +0100 Subject: [PATCH 3/5] Add patient specific demo to docs --- Makefile | 1 + docs/_toc.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 14186465..f2624531 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,7 @@ docs: ## generate Sphinx HTML documentation, including API docs jupytext demos/extract_currents.py -o docs/extract_currents.md jupytext demos/tracking_values.py -o docs/tracking_values.md jupytext demos/custom_stimulus_domain.py -o docs/custom_stimulus_domain.md + jupytext demos/patient_specific_lv.py -o docs/patient_specific_lv.md mkdir -p docs/_build cp -r benchmarks docs/_build/ jupyter book build -W docs diff --git a/docs/_toc.yml b/docs/_toc.yml index 1b4160e2..b2ef3fad 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -24,6 +24,7 @@ parts: - file: "extract_currents" - file: "tracking_values" - file: "custom_stimulus_domain" + - file: "patient_specific_lv" - file: "cli" - file: "docker" - file: "gui" From 542476f3de41c40a9ce50b812afa866d3093a815 Mon Sep 17 00:00:00 2001 From: Henrik Finsberg Date: Mon, 27 Mar 2023 21:39:02 +0200 Subject: [PATCH 4/5] Some debugging --- demos/patient_specific_lv.py | 45 ++++++++++++++++--- .../fully_coupled_Tor_Land/active_model.py | 7 +-- src/simcardems/newton_solver.py | 11 ++++- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/demos/patient_specific_lv.py b/demos/patient_specific_lv.py index dcf9dfb4..1958d8fb 100644 --- a/demos/patient_specific_lv.py +++ b/demos/patient_specific_lv.py @@ -5,6 +5,7 @@ # First we make the necessary imports. from pathlib import Path +import math import cardiac_geometries import ldrb import simcardems @@ -16,6 +17,11 @@ msh_file = "geometries/patient.msh" geo = cardiac_geometries.gmsh2dolfin(msh_file) +# Mesh is currently in centimeters. Let us make sure it in a unit so that we can use kPa directly without scaling it. +# + +geo.mesh.scale(1 / math.sqrt(10)) + # The `geo` object now contains the markers, but the `ldrb` algorithm expects the markers in a dictionary with keys `base`, `lv` and `epi` so we create a translation for this. # @@ -58,6 +64,7 @@ outdir = here / "results_patient_specific_lv" outdir.mkdir(exist_ok=True) + # and then we can load the geometry into simcardems. # @@ -83,9 +90,9 @@ outdir=outdir, coupling_type="fully_coupled_Tor_Land", T=1000, - spring=0.01, # Sprint term on the epicardium to mimic pericardium traction=0.0, # Pressure on the endocardium cell_init_file=initial_conditions_path, + mechanics_use_continuation=True, ) # Now we can create the coupling. @@ -95,22 +102,50 @@ geometry=geometry, ) -# And to make things move a little bit more we will set the reference active tension to 60 kPa. +# And to make things move a little bit more we will scale the reference active tension to 60 kPa. -coupling.mech_solver.material.T_ref.assign(60) +coupling.mech_solver.material.active.T_ref.assign(10.0) # Now we create the runner runner = simcardems.Runner.from_models(config=config, coupling=coupling) -# but before we run the EM simulations, we will inflate the LV to a cavity pressure of 1 kPa. +# but before we run the EM simulations, we will inflate the LV to a cavity pressure of 3 kPa. +# +# xdmf = dolfin.XDMFFile(dolfin.MPI.comm_world, "u.xdmf") +# u = dolfin.Function(coupling.mech_solver.state_space.sub(0).collapse()) +# xdmf.write_checkpoint(u, "u", 0.0, dolfin.XDMFFile.Encoding.HDF5, True) pulse.iterate.iterate( problem=runner.coupling.mech_solver, control=runner.coupling.mech_solver.bcs.neumann[0].traction, - target=1.0, # Set it to 1kPa + target=3, # Set it to 3 kPa + initial_number_of_steps=50, ) +# u.assign(coupling.mech_solver.state.split(deepcopy=True)[0]) +# xdmf.write_checkpoint(u, "u", 1.0, dolfin.XDMFFile.Encoding.HDF5, True) + +# V = dolfin.FunctionSpace(coupling.geometry.mechanics_mesh, "CG", 1) +# Ta = dolfin.Function(V) + + +# class _Land(coupling.mech_solver.material.active.__class__): +# Ta = Ta + + +# coupling.mech_solver.material.active.__class__ = _Land +# coupling.mech_solver._init_forms() + +# pulse.iterate.iterate( +# problem=runner.coupling.mech_solver, +# control=Ta, +# target=60.0, +# initial_number_of_steps=100, +# ) + +# u.assign(coupling.mech_solver.state.split(deepcopy=True)[0]) +# xdmf.write_checkpoint(u, "u", 2.0, dolfin.XDMFFile.Encoding.HDF5, True) # Now we run the EM simulation. runner.solve(T=config.T, save_freq=config.save_freq, show_progress_bar=True) diff --git a/src/simcardems/models/fully_coupled_Tor_Land/active_model.py b/src/simcardems/models/fully_coupled_Tor_Land/active_model.py index 12eba155..bd3b2594 100644 --- a/src/simcardems/models/fully_coupled_Tor_Land/active_model.py +++ b/src/simcardems/models/fully_coupled_Tor_Land/active_model.py @@ -4,9 +4,9 @@ import dolfin import numpy as np -import pulse import ufl +import pulse from ... import utils from ...time_stepper import TimeStepper from .cell_model import TorLandFull @@ -45,6 +45,7 @@ def __init__( eta=0, scheme: Scheme = Scheme.analytic, dLambda_tol: float = 1e-12, + T_ref: float = 0.0, **kwargs, ): logger.debug("Initialize Land Model") @@ -56,7 +57,7 @@ def __init__( self._eta = eta self.function_space = dolfin.FunctionSpace(coupling.mech_mesh, "CG", 1) - + self.T_ref = dolfin.Constant(T_ref) self.XS = coupling.XS_mech self.XW = coupling.XW_mech if parameters is None: @@ -235,7 +236,7 @@ def Wactive(self, F, **kwargs): self.update_Zetas() self.update_Zetaw() return pulse.material.active_model.Wactive_transversally( - Ta=self.Ta, + Ta=self.Ta * self.T_ref, C=C, f0=self.f0, eta=self.eta, diff --git a/src/simcardems/newton_solver.py b/src/simcardems/newton_solver.py index 7a384f0f..08e3268c 100644 --- a/src/simcardems/newton_solver.py +++ b/src/simcardems/newton_solver.py @@ -1,6 +1,6 @@ import dolfin -import pulse +import pulse from . import utils @@ -95,8 +95,9 @@ def default_solver_parameters(): def converged(self, r, p, i): self._converged_called = True - + print("converged") res = r.norm("l2") + print(f"Mechanics solver residual: {res}") logger.debug(f"Mechanics solver residual: {res}") if self.debug: @@ -130,7 +131,9 @@ def solver_setup(self, A, J, p, i): def solve(self): logger.debug("Solving mechanics") self._solve_called = True + print("Solve before") ret = super().solve(self._problem, self._state.vector()) + print("Solve after") self._state.vector().apply("insert") logger.debug("Done solving mechanics") self.save_residuals() @@ -144,6 +147,10 @@ def check_overloads_called(self): assert getattr(self, "_update_solution_called", False) assert getattr(self, "_solve_called", False) + def update_solution(self, x, dx, rp, p, i): + print("Update solution") + return super().update_solution(x, dx, rp, p, i) + class MechanicsNewtonSolver_ODE(MechanicsNewtonSolver): def update_solution(self, x, dx, rp, p, i): From 57d2328abe25d43af2d0d9fa3b35bb5268e41d80 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 19:39:42 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/simcardems/models/fully_coupled_Tor_Land/active_model.py | 2 +- src/simcardems/newton_solver.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/simcardems/models/fully_coupled_Tor_Land/active_model.py b/src/simcardems/models/fully_coupled_Tor_Land/active_model.py index bd3b2594..7f3c3998 100644 --- a/src/simcardems/models/fully_coupled_Tor_Land/active_model.py +++ b/src/simcardems/models/fully_coupled_Tor_Land/active_model.py @@ -4,9 +4,9 @@ import dolfin import numpy as np +import pulse import ufl -import pulse from ... import utils from ...time_stepper import TimeStepper from .cell_model import TorLandFull diff --git a/src/simcardems/newton_solver.py b/src/simcardems/newton_solver.py index 08e3268c..30f3ab8a 100644 --- a/src/simcardems/newton_solver.py +++ b/src/simcardems/newton_solver.py @@ -1,6 +1,6 @@ import dolfin - import pulse + from . import utils