Skip to content

Instantly share code, notes, and snippets.

@wd15
Last active November 22, 2023 02:24
Show Gist options
  • Save wd15/7e06a3141a6fbf317b1daf39ef1b0fbb to your computer and use it in GitHub Desktop.
Save wd15/7e06a3141a6fbf317b1daf39ef1b0fbb to your computer and use it in GitHub Desktop.
Implementation of benchmark 3

Implementation of Benchmark 3

Linting and testing

$ pylint *.py
$ flake8 *.py

TODO

  • generate upload files from view.py
    • time.csv time data
    • contour plot data
  • generate test and lint suite
  • Dockerfile
  • Fix README
  • make main.py a command line tool
    • write to new directory
  • expand out for other benchmarks
x y
368.353616407 0.5
367.9843082 1.5
367.5 2.41363716763
367.443471568 2.5
366.743115861 3.5
366.5 3.80263900224
365.895984475 4.5
365.5 4.92298413267
364.923211256 5.5
364.5 5.89854068524
363.823745761 6.5
363.5 6.7754519866
362.590901436 7.5
362.5 7.57155701691
361.5 8.28929157602
361.210465798 8.5
360.5 8.98259715565
359.71089152 9.5
359.5 9.63878769158
358.5 10.2263485477
358.05384895 10.5
357.5 10.8256550247
356.5 11.3599490689
356.257007233 11.5
355.5 11.904490653
354.5 12.3999994412
354.315108203 12.5
353.5 12.90436356
352.5 13.3603512883
352.223327932 13.5
351.5 13.8412293462
350.5 14.259493227
349.98419173 14.5
349.5 14.7225096156
348.5 15.1160101699
347.594265377 15.5
347.5 15.5430714731
346.5 15.9401087763
345.5 16.3086755331
345.045622222 16.5
344.5 16.724388044
343.5 17.0717655249
342.5 17.4373971594
342.3483523 17.5
341.5 17.8194045641
340.5 18.1407561225
339.503542434 18.5
339.5 18.5014201075
338.5 18.8536884476
337.5 19.1564213133
336.503839684 19.5
336.5 19.5014757599
335.5 19.8394060781
334.5 20.1262641994
333.5 20.445378068
333.34983782 20.5
332.5 20.7824992294
331.5 21.0583694706
330.5 21.3465761865
330.048416871 21.5
329.5 21.6830876551
328.5 21.9590594164
327.5 22.2198846491
326.597077409 22.5
326.5 22.5329577693
325.5 22.8281723405
324.5 23.0758200211
323.5 23.3394274122
322.989559901 23.5
322.5 23.6537368361
321.5 23.9138011128
320.5 24.1480741223
319.5 24.4155827684
319.229960839 24.5
318.5 24.7153837814
317.5 24.9555638056
316.5 25.1804719322
315.5 25.4449692178
315.320047594 25.5
314.5 25.7320507441
313.5 25.9610160388
312.5 26.17601404
311.5 26.4283825186
311.257284426 26.5
310.5 26.7100159077
309.5 26.9346790337
308.5 27.1392551285
307.5 27.3718751285
307.042576842 27.5
306.5 27.6502081409
305.5 27.878890377
304.5 28.075908722
303.5 28.2853667971
302.673262214 28.5
302.5 28.5483338528
301.5 28.7921897279
300.5 28.9900459594
299.5 29.179706296
298.5 29.4041129655
298.142777124 29.5
297.5 29.6669092764
296.5 29.8797881155
295.5 30.0618351346
294.5 30.2513853496
293.5 30.4882423079
293.456464119 30.5
292.5 30.7334479057
291.5 30.9282167994
290.5 31.1011251621
289.5 31.2895416764
288.613433009 31.5
288.5 31.52924082
287.5 31.760123936
286.5 31.9448987436
285.5 32.1107341084
284.5 32.293171225
283.604453508 32.5
283.5 32.5262174739
282.5 32.7525852571
281.5 32.9335795848
280.5 33.0932827401
279.5 33.264611691
278.5 33.4815210062
278.426188904 33.5
277.5 33.7118849385
276.5 33.8956544701
275.5 34.0519141888
274.5 34.2096542846
273.5 34.402063641
273.083393139 34.5
272.5 34.6348077191
271.5 34.8293939752
270.5 34.9884986574
269.5 35.1354134147
268.5 35.3006643356
267.560005701 35.5
267.5 35.5138973196
266.5 35.7282263435
265.5 35.9002863862
264.5 36.0458281821
263.5 36.1895142874
262.5 36.3612025439
261.858800577 36.5
261.5 36.5799308166
260.5 36.7768242912
259.5 36.9359167687
258.5 37.0734627773
257.5 37.2136380888
256.5 37.3848408269
255.961952971 37.5
255.5 37.5996818518
254.5 37.7884469976
253.5 37.9415069761
252.5 38.0737760171
251.5 38.2075138522
250.5 38.3694403183
249.863253972 38.5
249.5 38.5765172541
248.5 38.7652843707
247.5 38.9185860122
246.5 39.0484046145
245.5 39.1738237735
244.5 39.3191305672
243.540975321 39.5
243.5 39.50840908
242.5 39.7044032053
241.5 39.8650598832
240.5 39.9976788121
239.5 40.117063344
238.5 40.2434837976
237.5 40.4005564398
236.994671625 40.5
236.5 40.5975306924
235.5 40.7733500002
234.5 40.9173514325
233.5 41.0386917619
232.5 41.1523944312
231.5 41.2779711075
230.5 41.4374030064
230.179653391 41.5
229.5 41.6286981358
228.5 41.7942730044
227.5 41.9304737944
226.5 42.0459150244
225.5 42.1541765911
224.5 42.2725989698
223.5 42.4213515749
223.074727302 42.5
222.5 42.6050177347
221.5 42.7692588811
220.5 42.9054237952
219.5 43.0196457647
218.5 43.1229973959
217.5 43.2295523484
216.5 43.3565249561
215.622957454 43.5
215.5 43.521386448
214.5 43.6912758825
213.5 43.8357083053
212.5 43.9558291134
211.5 44.0590680358
210.5 44.1559920889
209.5 44.2592204954
208.5 44.3841193339
207.769754443 44.5
207.5 44.5443918668
206.5 44.7033820997
205.5 44.8396512683
204.5 44.9537515808
203.5 45.0518919914
202.5 45.1428876653
201.5 45.2367108249
200.5 45.3452910481
199.5 45.4825927407
199.393507037 45.5
198.5 45.6376431103
197.5 45.7758012018
196.5 45.8934430919
195.5 45.9931298277
194.5 46.0811365137
193.5 46.1649350945
192.5 46.2523980335
191.5 46.3527446769
190.5 46.4770812847
190.34488457 46.5
189.5 46.6190047893
188.5 46.7488189368
187.5 46.8617242781
186.5 46.9580650923
185.5 47.041941607
184.5 47.1189786512
183.5 47.1948573332
182.5 47.2752459606
181.5 47.3666203481
180.5 47.4767969505
180.32005652 47.5
179.5 47.6016381531
178.5 47.7186456354
177.5 47.823334798
176.5 47.9143127525
175.5 47.9933113042
174.5 48.063918342
173.5 48.130136501
172.5 48.195674138
171.5 48.2639614131
170.5 48.3385100454
169.5 48.4232749264
168.718914193 48.5
168.5 48.5220963864
167.5 48.6227466282
166.5 48.717160205
165.5 48.8032454756
164.5 48.8798396776
163.5 48.9473229752
162.5 49.0072953537
161.5 49.0618657342
160.5 49.1130888427
159.5 49.1627218181
158.5 49.2122045718
157.5 49.2627243616
156.5 49.315281997
155.5 49.3707262777
154.5 49.4297455027
153.5 49.4928146847
153.38986016 49.5
152.5 49.5565403005
151.5 49.6156632467
150.5 49.670025933
149.5 49.7195271852
148.5 49.7641586821
147.5 49.8040455069
146.5 49.8394426885
145.5 49.8706997913
144.5 49.8982130764
143.5 49.9223820094
142.5 49.9435788114
141.5 49.9621321691
140.5 49.9783219962
139.5 49.9923810688
138.5 50.004500035
137.5 50.0148335148
136.5 50.0235061119
135.5 50.0306179598
134.5 50.0362499176
133.5 50.0404687735
132.5 50.0433328694
131.5 50.0448984597
130.5 50.0452268941
129.5 50.0443923664
128.5 50.0424895253
127.5 50.0396396689
126.5 50.0359935585
125.5 50.0317280917
124.5 50.0270332727
123.5 50.022085374
122.5 50.0170022925
121.5 50.0117782299
120.5 50.0061967108
119.5 49.9997221957
118.5 49.9913686887
117.5 49.9795366886
116.5 49.9617989451
115.5 49.9346144113
114.5 49.8930203706
113.5 49.8306497481
112.5 49.7407775326
111.5 49.6184287742
110.726143611 49.5
110.5 49.4638802026
109.5 49.3177289334
108.5 49.1950048241
107.5 49.0830297247
106.5 48.9618205754
105.5 48.8082079484
104.5 48.5997130884
104.111945425 48.5
103.5 48.3464753216
102.5 48.143458123
101.5 47.9721372301
100.5 47.7911313229
99.5 47.5635916267
99.2582773567 47.5
98.5 47.3122492837
97.5 47.1228546886
96.5 46.9691543843
95.5 46.8146374679
94.5 46.6311237803
93.8785892593 46.5
93.5 46.418441963
92.5 46.2559662525
91.5 46.1536403722
90.5 46.0933156439
89.5 46.0524214491
88.5 46.0129314438
87.5 45.9608706421
86.5 45.881688567
85.5 45.7594656357
84.5 45.5785130049
84.1643952456 45.5
83.5 45.3489242695
82.5 45.1457669558
81.5 44.9464034426
80.5 44.697838292
79.9191634184 44.5
79.5 44.35014695
78.5 44.0221429359
77.5 43.6702561022
77.1149198232 43.5
76.5 43.2272533153
75.5 42.8191699152
74.8404107566 42.5
74.5 42.324315901
73.5 41.8537790941
72.8357389687 41.5
72.5 41.3104868848
71.5 40.7926347982
70.9982098945 40.5
70.5 40.2036638015
69.5 39.6434337319
69.2727609572 39.5
68.5 39.0282976895
67.6401823211 38.5
67.5 38.4074577551
66.5 37.797732024
66.0465696967 37.5
65.5 37.1413129769
64.5 36.5067166757
64.4902433731 36.5
63.5 35.8660643999
62.9487710421 35.5
62.5 35.1999099843
61.5 34.5714137728
61.3950803956 34.5
60.5 33.931185491
59.8285056727 33.5
59.5 33.2852056256
58.5 32.693262801
58.1971858804 32.5
57.5 32.0773543263
56.5 31.5009886627
56.4983982723 31.5
55.5 30.951599821
54.6652364387 30.5
54.5 30.4069735855
53.5 29.9279866761
52.6032596266 29.5
52.5 29.4480446938
51.5 29.0330038572
50.5 28.6725539347
50.0460719978 28.5
49.5 28.3040713928
48.5 28.0608573895
47.5 27.9134425337
46.5 27.8804248556
45.5 27.9957343857
44.5 28.2122577052
43.6690753988 28.5
43.5 28.5677697767
42.5 28.9684844266
41.5 29.4153567026
41.3467625879 29.5
40.5 29.963102109
39.5799134335 30.5
39.5 30.5530940287
38.5 31.2005219006
38.0847357028 31.5
37.5 31.9395305152
36.7850039 32.5
36.5 32.7391988909
35.6161667258 33.5
35.5 33.6068434626
34.5605277785 34.5
34.5 34.5605277785
33.6068434626 35.5
33.5 35.6161667258
32.7391988909 36.5
32.5 36.7850039
31.9395305152 37.5
31.5 38.0847357028
31.2005219006 38.5
30.5530940287 39.5
30.5 39.5799134335
29.963102109 40.5
29.5 41.3467625879
29.4153567026 41.5
28.9684844266 42.5
28.5677697767 43.5
28.5 43.6690753988
28.2122577052 44.5
27.9957343857 45.5
27.8804248556 46.5
27.9134425337 47.5
28.0608573895 48.5
28.3040713928 49.5
28.5 50.0460719978
28.6725539347 50.5
29.0330038572 51.5
29.4480446938 52.5
29.5 52.6032596266
29.9279866761 53.5
30.4069735855 54.5
30.5 54.6652364387
30.951599821 55.5
31.5 56.4983982723
31.5009886627 56.5
32.0773543263 57.5
32.5 58.1971858804
32.693262801 58.5
33.2852056256 59.5
33.5 59.8285056727
33.931185491 60.5
34.5 61.3950803956
34.5714137728 61.5
35.1999099843 62.5
35.5 62.9487710421
35.8660643999 63.5
36.5 64.4902433731
36.5067166757 64.5
37.1413129769 65.5
37.5 66.0465696967
37.797732024 66.5
38.4074577551 67.5
38.5 67.6401823211
39.0282976895 68.5
39.5 69.2727609572
39.6434337319 69.5
40.2036638015 70.5
40.5 70.9982098945
40.7926347982 71.5
41.3104868848 72.5
41.5 72.8357389687
41.8537790941 73.5
42.324315901 74.5
42.5 74.8404107566
42.8191699152 75.5
43.2272533153 76.5
43.5 77.1149198232
43.6702561022 77.5
44.0221429359 78.5
44.35014695 79.5
44.5 79.9191634184
44.697838292 80.5
44.9464034426 81.5
45.1457669558 82.5
45.3489242695 83.5
45.5 84.1643952456
45.5785130049 84.5
45.7594656357 85.5
45.881688567 86.5
45.9608706421 87.5
46.0129314438 88.5
46.0524214491 89.5
46.0933156439 90.5
46.1536403722 91.5
46.2559662525 92.5
46.418441963 93.5
46.5 93.8785892593
46.6311237803 94.5
46.8146374679 95.5
46.9691543843 96.5
47.1228546886 97.5
47.3122492837 98.5
47.5 99.2582773567
47.5635916267 99.5
47.7911313229 100.5
47.9721372301 101.5
48.143458123 102.5
48.3464753216 103.5
48.5 104.111945425
48.5997130884 104.5
48.8082079484 105.5
48.9618205754 106.5
49.0830297247 107.5
49.1950048241 108.5
49.3177289334 109.5
49.4638802026 110.5
49.5 110.726143611
49.6184287742 111.5
49.7407775326 112.5
49.8306497481 113.5
49.8930203706 114.5
49.9346144113 115.5
49.9617989451 116.5
49.9795366886 117.5
49.9913686887 118.5
49.9997221957 119.5
50.0061967108 120.5
50.0117782299 121.5
50.0170022925 122.5
50.022085374 123.5
50.0270332727 124.5
50.0317280917 125.5
50.0359935585 126.5
50.0396396689 127.5
50.0424895253 128.5
50.0443923664 129.5
50.0452268941 130.5
50.0448984597 131.5
50.0433328694 132.5
50.0404687735 133.5
50.0362499176 134.5
50.0306179598 135.5
50.0235061119 136.5
50.0148335148 137.5
50.004500035 138.5
49.9923810688 139.5
49.9783219962 140.5
49.9621321691 141.5
49.9435788114 142.5
49.9223820094 143.5
49.8982130764 144.5
49.8706997913 145.5
49.8394426885 146.5
49.8040455069 147.5
49.7641586821 148.5
49.7195271852 149.5
49.670025933 150.5
49.6156632467 151.5
49.5565403005 152.5
49.5 153.38986016
49.4928146847 153.5
49.4297455027 154.5
49.3707262777 155.5
49.315281997 156.5
49.2627243616 157.5
49.2122045718 158.5
49.1627218181 159.5
49.1130888427 160.5
49.0618657342 161.5
49.0072953537 162.5
48.9473229752 163.5
48.8798396776 164.5
48.8032454756 165.5
48.717160205 166.5
48.6227466282 167.5
48.5220963864 168.5
48.5 168.718914193
48.4232749264 169.5
48.3385100454 170.5
48.2639614131 171.5
48.195674138 172.5
48.130136501 173.5
48.063918342 174.5
47.9933113042 175.5
47.9143127525 176.5
47.823334798 177.5
47.7186456354 178.5
47.6016381531 179.5
47.5 180.32005652
47.4767969505 180.5
47.3666203481 181.5
47.2752459606 182.5
47.1948573332 183.5
47.1189786512 184.5
47.041941607 185.5
46.9580650923 186.5
46.8617242781 187.5
46.7488189368 188.5
46.6190047893 189.5
46.5 190.34488457
46.4770812847 190.5
46.3527446769 191.5
46.2523980335 192.5
46.1649350945 193.5
46.0811365137 194.5
45.9931298277 195.5
45.8934430919 196.5
45.7758012018 197.5
45.6376431103 198.5
45.5 199.393507037
45.4825927407 199.5
45.3452910481 200.5
45.2367108249 201.5
45.1428876653 202.5
45.0518919914 203.5
44.9537515808 204.5
44.8396512683 205.5
44.7033820997 206.5
44.5443918668 207.5
44.5 207.769754443
44.3841193339 208.5
44.2592204954 209.5
44.1559920889 210.5
44.0590680358 211.5
43.9558291134 212.5
43.8357083053 213.5
43.6912758825 214.5
43.521386448 215.5
43.5 215.622957454
43.3565249561 216.5
43.2295523484 217.5
43.1229973959 218.5
43.0196457647 219.5
42.9054237952 220.5
42.7692588811 221.5
42.6050177347 222.5
42.5 223.074727302
42.4213515749 223.5
42.2725989698 224.5
42.1541765911 225.5
42.0459150244 226.5
41.9304737944 227.5
41.7942730044 228.5
41.6286981358 229.5
41.5 230.179653391
41.4374030064 230.5
41.2779711075 231.5
41.1523944312 232.5
41.0386917619 233.5
40.9173514325 234.5
40.7733500002 235.5
40.5975306924 236.5
40.5 236.994671625
40.4005564398 237.5
40.2434837976 238.5
40.117063344 239.5
39.9976788121 240.5
39.8650598832 241.5
39.7044032053 242.5
39.50840908 243.5
39.5 243.540975321
39.3191305672 244.5
39.1738237735 245.5
39.0484046145 246.5
38.9185860122 247.5
38.7652843707 248.5
38.5765172541 249.5
38.5 249.863253972
38.3694403183 250.5
38.2075138522 251.5
38.0737760171 252.5
37.9415069761 253.5
37.7884469976 254.5
37.5996818518 255.5
37.5 255.961952971
37.3848408269 256.5
37.2136380888 257.5
37.0734627773 258.5
36.9359167687 259.5
36.7768242912 260.5
36.5799308166 261.5
36.5 261.858800577
36.3612025439 262.5
36.1895142874 263.5
36.0458281821 264.5
35.9002863862 265.5
35.7282263435 266.5
35.5138973196 267.5
35.5 267.560005701
35.3006643356 268.5
35.1354134147 269.5
34.9884986574 270.5
34.8293939752 271.5
34.6348077191 272.5
34.5 273.083393139
34.402063641 273.5
34.2096542846 274.5
34.0519141888 275.5
33.8956544701 276.5
33.7118849385 277.5
33.5 278.426188904
33.4815210062 278.5
33.264611691 279.5
33.0932827401 280.5
32.9335795848 281.5
32.7525852571 282.5
32.5262174739 283.5
32.5 283.604453508
32.293171225 284.5
32.1107341084 285.5
31.9448987436 286.5
31.760123936 287.5
31.52924082 288.5
31.5 288.613433009
31.2895416764 289.5
31.1011251621 290.5
30.9282167994 291.5
30.7334479057 292.5
30.5 293.456464119
30.4882423079 293.5
30.2513853496 294.5
30.0618351346 295.5
29.8797881155 296.5
29.6669092764 297.5
29.5 298.142777124
29.4041129655 298.5
29.179706296 299.5
28.9900459594 300.5
28.7921897279 301.5
28.5483338528 302.5
28.5 302.673262214
28.2853667971 303.5
28.075908722 304.5
27.878890377 305.5
27.6502081409 306.5
27.5 307.042576842
27.3718751285 307.5
27.1392551285 308.5
26.9346790337 309.5
26.7100159077 310.5
26.5 311.257284426
26.4283825186 311.5
26.17601404 312.5
25.9610160388 313.5
25.7320507441 314.5
25.5 315.320047594
25.4449692178 315.5
25.1804719322 316.5
24.9555638056 317.5
24.7153837814 318.5
24.5 319.229960839
24.4155827684 319.5
24.1480741223 320.5
23.9138011128 321.5
23.6537368361 322.5
23.5 322.989559901
23.3394274122 323.5
23.0758200211 324.5
22.8281723405 325.5
22.5329577693 326.5
22.5 326.597077409
22.2198846491 327.5
21.9590594164 328.5
21.6830876551 329.5
21.5 330.048416871
21.3465761865 330.5
21.0583694706 331.5
20.7824992294 332.5
20.5 333.34983782
20.445378068 333.5
20.1262641994 334.5
19.8394060781 335.5
19.5014757599 336.5
19.5 336.503839684
19.1564213133 337.5
18.8536884476 338.5
18.5014201075 339.5
18.5 339.503542434
18.1407561225 340.5
17.8194045641 341.5
17.5 342.3483523
17.4373971594 342.5
17.0717655249 343.5
16.724388044 344.5
16.5 345.045622222
16.3086755331 345.5
15.9401087763 346.5
15.5430714731 347.5
15.5 347.594265377
15.1160101699 348.5
14.7225096156 349.5
14.5 349.98419173
14.259493227 350.5
13.8412293462 351.5
13.5 352.223327932
13.3603512883 352.5
12.90436356 353.5
12.5 354.315108203
12.3999994412 354.5
11.904490653 355.5
11.5 356.257007233
11.3599490689 356.5
10.8256550247 357.5
10.5 358.05384895
10.2263485477 358.5
9.63878769158 359.5
9.5 359.71089152
8.98259715565 360.5
8.5 361.210465798
8.28929157602 361.5
7.57155701691 362.5
7.5 362.590901436
6.7754519866 363.5
6.5 363.823745761
5.89854068524 364.5
5.5 364.923211256
4.92298413267 365.5
4.5 365.895984475
3.80263900224 366.5
3.5 366.743115861
2.5 367.443471568
2.41363716763 367.5
1.5 367.9843082
0.5 368.353616407
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
"""Run Benchmark Problem 3 using FiPy
$ python main.py --folder=my_folder
All the data files will be written to my_folder/
"""
# pylint: disable=no-value-for-parameter
import os
import time
import numpy as np
# pylint: disable=redefined-builtin
from toolz.curried import pipe, do, iterate, curry, map, compose
# pylint: disable=import-error
from fipy import CellVariable, DiffusionTerm, Grid2D, TransientTerm, Variable
# pylint: disable=import-error
from fipy import numerix
from fipy.solvers.pysparse import LinearGMRESSolver as Solver
# from fipy.solvers.trilinos import LinearGMRESSolver as Solver
import click
def get_params():
"""Get the parameters for the simulation
"""
return dict(
mm=4.0,
epsilon_m=0.05,
theta_0=np.pi / 4.,
tau_0=1.0,
diff=10.0,
w_0=1.,
delta=-0.3,
dx=1.0,
nx=960,
radius=8.0,
dt0=0.1,
center=(0.0, 0.0),
steps=15001,
output_frequency=10
)
def get_mesh(params):
"""Build the mesh
"""
return Grid2D(nx=params['nx'],
ny=params['nx'],
dx=params['dx'],
dy=params['dx'])
def mask(x_cell, y_cell, params):
"""Mask for the initial solid portion
"""
return (((x_cell - params['center'][0])**2 +
(y_cell - params['center'][1])**2) <
params['radius']**2).value
def get_phase(mesh, params, value=1.):
"""Generate the phase cell variable
"""
return pipe(
mesh,
lambda x: CellVariable(mesh=x, hasOld=True, value=-1.0),
do(
lambda x:
x.setValue(
value,
where=mask(mesh.cellCenters[0], mesh.cellCenters[1], params)
)
)
)
def get_tau(phase, params):
"""Tau function for phase transient term
"""
return pipe(
phase,
lambda x: numerix.arctan2(x.grad[1], x.grad[0]),
lambda x: w_func(x, params) / params['w_0'],
lambda x: params['tau_0'] * x**2
)
def get_coupling(params):
"""Calculate the coupling constant, "lambda"
"""
return params['diff'] * params['tau_0'] / 0.6267 / params['w_0']**2
def get_source(phase, heat, params):
"""Phase field source term
"""
return (phase - get_coupling(params) * heat * (1 - phase**2)) * \
(1 - phase**2)
def w_func(theta, params):
"""W function dependent on the orientation
"""
return params['w_0'] * \
(1 +
params['epsilon_m'] *
numerix.cos(params['mm'] * (theta - params['theta_0'])))
def w_theta(theta, params):
"""Derivative w.r.t theta of the W function
"""
return -params['w_0'] * params['mm'] * params['epsilon_m'] * \
numerix.sin(params['mm'] * (theta - params['theta_0']))
def get_phase_diff(phase, params):
"""Diffusion coefficient for the phase equation
"""
return pipe(
phase,
lambda x: numerix.arctan2(x.faceGrad[1], x.faceGrad[0]),
lambda x: (w_func(x, params), w_theta(x, params)),
lambda x: x[0]**2 * Variable(value=((1, 0), (0, 1))) -
x[0] * x[1] * Variable(value=((0, -1), (1, 0)))
)
def get_heat_eqn(phase, delta_t, params):
"""Make the heat equation
"""
return TransientTerm() == DiffusionTerm(params['diff']) + \
(phase - phase.old) / delta_t / 2.
def get_phase_eqn(phase, heat, params):
"""make the phase equation
"""
return TransientTerm(get_tau(phase, params)) == \
DiffusionTerm(get_phase_diff(phase, params)) + \
get_source(phase, heat, params)
def get_equations(mesh, delta_t, params):
"""Make the heat and phase equation systems
"""
return pipe(
dict(phase=get_phase(mesh, params),
heat=CellVariable(mesh=mesh,
hasOld=True,
value=params['delta'])),
lambda x: (
dict(name='heat',
eqn=get_heat_eqn(x['phase'], delta_t, params),
var=x['heat'],
solver=Solver(precon=None)),
dict(name='phase',
eqn=get_phase_eqn(x['phase'], x['heat'], params),
var=x['phase'],
solver=Solver(precon=None))
)
)
@curry
def iterate_(func, times, value):
"""Use toolz iterate function to actually iterate
rather than return an iterator object
"""
iter_ = iterate(func, value)
for _ in range(times):
next(iter_)
return next(iter_)
@curry
def map_(func, value):
"""Force evaluation of toolz map
"""
return list(map(func, value))
@curry
def sweep_output(data, residuals):
"""Output from a sweep
"""
print('sweep: {4}, {0} res: {1}, {2} res: {3}'.format(
data['equations'][0]['name'],
residuals[0],
data['equations'][1]['name'],
residuals[1],
data['sweep_counter']
))
data['sweep_counter'] += 1
return data
@curry
def one_sweep(delta_t, equation):
"""Do one sweep
"""
return equation['eqn'].sweep(equation['var'],
dt=float(delta_t.value),
solver=equation['solver'])
def sweep(data):
"""Do one sweep and output results
"""
return pipe(
data,
lambda x: map_(one_sweep(data['dt']), x['equations']),
sweep_output(data),
)
@curry
def step_output(folder, data):
"""Output before time step
"""
print ""
print "write data to: {0}".format(folder)
print "timestep: {0}, elapsed time: {1}".format(
data['step_counter'],
data['elapsed']
)
return data
def update(data):
"""Update after time step
"""
data['step_counter'] += 1
data['elapsed'] += float(data['dt'].value)
data['dt'].setValue(float(data['dt'].value) * 1.0)
return data
@curry
def timestep(folder, data):
"""Do a time step
"""
return pipe(
data,
step_output(folder),
dump_data(folder),
do(lambda x: map_(lambda x: x['var'].updateOld(), x['equations'])),
iterate_(sweep, 3),
update
)
def get_data(params, delta_t):
"""Generate the initial data structure
"""
return dict(
dt=delta_t,
equations=get_equations(mesh=get_mesh(params),
delta_t=delta_t,
params=params),
step_counter=0,
sweep_counter=0,
elapsed=0.0,
params=params
)
@curry
def dump_data(folder, data):
"""Dump data to a file
"""
if data['step_counter'] % data['params']['output_frequency'] == 0:
np.savez_compressed(
os.path.join(
folder,
'data{0}.npz'.format(
str(data['step_counter']).zfill(7)
)
),
heat=np.array(data['equations'][0]['var']),
phase=np.array(data['equations'][1]['var']),
elapsed_time=float(data['elapsed']),
step_counter=int(data['step_counter']),
params=data['params'],
wall_time=time.time()
)
return data
def sequence(*args):
"""Reverse compose
"""
return compose(*args[::-1])
add_options = sequence(
lambda x: x.items(),
map_(lambda x: click.option('--' + x[0], default=x[1])),
lambda x: compose(*x)
)
@click.command()
@click.option('--folder', default='data', help="name for data directory")
@add_options(get_params())
def run(folder, **params):
if os.path.exists(folder):
click.echo(
"{0} directory already exists, remove to continue".format(folder)
)
else:
os.makedirs(folder)
iterate_(timestep(folder),
params['steps'],
get_data(params, Variable(params['dt0'])))
if __name__ == '__main__':
run()
free_energy solid_fraction time tip_position
2122246.70476 5.64236111111e-05 0.0 8.0
2122171.62245 7.83235951164e-05 1.0 9.6034630733
2122082.73268 0.000100064625322 2.0 10.9197017965
2121991.35346 0.000118738246056 3.0 11.9474325123
2121900.75888 0.000135440118671 4.0 12.8236336332
2121811.90292 0.000150772415209 5.0 13.5830696929
2121725.09107 0.000165104376947 6.0 14.2225648761
2121640.35007 0.000178675374746 7.0 14.868578396
2121557.4733 0.000191648483667 8.0 15.4442514667
2121476.31211 0.000204151891388 9.0 15.9840014174
2121396.66401 0.000216268362651 10.0 16.522070035
2121318.34532 0.000228073299611 11.0 17.0002518625
2121241.20178 0.000239614065136 12.0 17.4944590948
2121165.08777 0.00025093848296 13.0 17.9461084604
2121089.87744 0.00026207447655 14.0 18.3890269587
2121015.47652 0.000273054519977 15.0 18.8396253329
2120941.77348 0.000283895818034 16.0 19.2390301968
2120868.71555 0.000294620047795 17.0 19.6875891605
2120796.20782 0.000305240551246 18.0 20.0644290654
2120724.21192 0.000315769166376 19.0 20.4804834847
2120652.66726 0.000326219323278 20.0 20.8706097428
2120581.52336 0.000336596006442 21.0 21.2327456821
2120510.75661 0.000346910392865 22.0 21.6455975683
2120440.31304 0.00035716774451 23.0 21.9944188698
2120370.17286 0.000367372410713 24.0 22.3594379677
2120300.30974 0.000377532795392 25.0 22.7472060933
2120230.686 0.000387650100556 26.0 23.0782527973
2120161.29372 0.000397729264582 27.0 23.4484417131
2120092.10614 0.000407775665769 28.0 23.8086630352
2120023.09896 0.000417789106517 29.0 24.1302929646
2119954.26796 0.000427774620395 30.0 24.5022155414
2119885.58887 0.000437735435361 31.0 24.8407496792
2119817.04562 0.000447670939817 32.0 25.1555515668
2119748.63543 0.000457585877043 33.0 25.5222790914
2119680.33745 0.000467482242303 34.0 25.8498211545
2119612.13997 0.00047735920666 35.0 26.1582313104
2119544.04136 0.000487221096731 36.0 26.5184066305
2119476.02407 0.000497069359586 37.0 26.8402738026
2119408.07833 0.000506902898893 38.0 27.1422762361
2119340.20365 0.000516725588159 39.0 27.4943366802
2119272.38557 0.000526538813975 40.0 27.8154248549
2119204.61476 0.000536341151202 41.0 28.111357542
2119136.89172 0.00054613594751 42.0 28.4508334271
2119069.20498 0.000555924876801 43.0 28.7778031439
2119001.54485 0.000565706216976 44.0 29.0687285713
2118933.91231 0.000575482641766 45.0 29.3946192154
2118866.29897 0.000585256323376 46.0 29.7292359132
2118798.69458 0.000595025408113 47.0 30.017092661
2118731.09977 0.000604791707996 48.0 30.329529688
2118663.50926 0.000614557944118 49.0 30.6708826756
2118595.91259 0.000624322414175 50.0 30.9585224405
2118528.30914 0.000634085906041 51.0 31.2586904905
2118460.69651 0.000643851570138 52.0 31.6032726118
2118393.0647 0.000653618217109 53.0 31.8944335741
2118325.41124 0.000663385536194 54.0 32.1844870094
2118257.73589 0.000673156801366 55.0 32.526362183
2118190.03005 0.000682931718545 56.0 32.8256054092
2118122.28906 0.000692708997424 57.0 33.1085804331
2118054.51384 0.000702491554563 58.0 33.434667817
2117986.69807 0.000712280232835 59.0 33.7522382512
2117918.83518 0.000722073152636 60.0 34.0319567135
2117850.92589 0.000731872389959 61.0 34.3407946227
2117782.96651 0.000741679881189 62.0 34.6740360137
2117714.94964 0.000751493689795 63.0 34.9550000391
2117646.87465 0.000761314725466 64.0 35.2498591428
2117578.74016 0.000771145753788 65.0 35.5903022627
2117510.53886 0.000780985360948 66.0 35.8775832964
2117442.26839 0.000790833127179 67.0 36.1623245961
2117373.92911 0.00080069212068 68.0 36.5000370618
2117305.51476 0.000810562029387 69.0 36.7991672661
2117237.0208 0.000820441325266 70.0 37.0781556858
2117168.4483 0.000830332640345 71.0 37.3960529887
2117099.79328 0.000840236975698 72.0 37.7188993091
2117031.04963 0.00085015227733 73.0 37.9969080312
2116962.2175 0.00086008019548 74.0 38.2986125691
2116893.29515 0.000870022894681 75.0 38.6357022369
2116824.27621 0.000879978435361 76.0 38.9178182858
2116755.15945 0.000889947123973 77.0 39.207327596
2116685.94491 0.000899931856257 78.0 39.5483457386
2116616.62656 0.000909931527419 79.0 39.839887265
2116547.20126 0.000919945123112 80.0 40.1215069061
2116477.67024 0.000929975527906 81.0 40.4506062673
2116408.02927 0.000940022864051 82.0 40.7619495694
2116338.27347 0.000950085216119 83.0 41.0402258731
2116268.40369 0.000960164829732 84.0 41.351502445
2116198.41768 0.000970263146313 85.0 41.6827244753
2116128.30979 0.000980377935723 86.0 41.9623860855
2116058.0801 0.000990510244294 87.0 42.25952328
2115987.72833 0.00100066254537 88.0 42.6008458761
2115917.24873 0.00101083304891 89.0 42.8867634928
2115846.63955 0.00102102144934 90.0 43.1736720519
2115775.90197 0.00103123066917 91.0 43.5148700994
2115705.03145 0.00104145988614 92.0 43.812040897
2115634.02477 0.00105170757499 93.0 44.0928312623
2115562.88356 0.00106197643806 94.0 44.4168208456
2115491.60478 0.00107226697444 95.0 44.7368230651
2115420.1838 0.00108257693786 96.0 45.0157883745
2115348.62195 0.00109290815737 97.0 45.323320748
2115276.91832 0.00110326236791 98.0 45.6596350728
2115205.0679 0.00111363724078 99.0 45.9412519834
2115133.07083 0.00112403333517 100.0 46.2357774256
2115060.92777 0.00113445328513 101.0 46.5789046679
2114988.63393 0.00114489537648 102.0 46.8678551309
2114916.18796 0.00115535878502 103.0 47.1530867076
2114843.59187 0.00116584639602 104.0 47.4919160835
2114770.84213 0.00117635761315 105.0 47.7941453919
2114697.93594 0.00118689049269 106.0 48.0740781629
2114624.87548 0.00119744750209 107.0 48.3935735227
2114551.65878 0.00120802941412 108.0 48.7185621387
2114478.28194 0.00121863370621 109.0 48.9975040456
2114404.74679 0.00122926178732 110.0 49.3007776532
2114331.05334 0.00123991564433 111.0 49.6394020454
2114257.19743 0.00125059289484 112.0 49.9220190836
2114183.17967 0.00126129355035 113.0 50.2125808297
2114109.00154 0.00127202035984 114.0 50.5547729161
2114034.6592 0.00128277179212 115.0 50.8461498257
2113960.15181 0.00129354644273 116.0 51.1279551769
2113885.48196 0.00130434707664 117.0 51.4583203827
2113810.64718 0.00131517349394 118.0 51.7682537228
2113735.64528 0.0013260232817 119.0 52.0457538622
2113660.47896 0.00133689847485 120.0 52.3564336896
2113585.14728 0.0013478003519 121.0 52.6864682113
2113509.64701 0.00135872621378 122.0 52.9646667111
2113433.98016 0.00136967673391 123.0 53.259272359
2113358.14769 0.00138065430997 124.0 53.5986496576
2113282.14632 0.00139165679394 125.0 53.8831687163
2113205.97689 0.00140268326726 126.0 54.1659622834
2113129.64174 0.0014137365526 127.0 54.5023003647
2113053.13816 0.00142481581803 128.0 54.7994606991
2112976.46529 0.00143591883248 129.0 55.0754157521
2112899.62607 0.00144704790615 130.0 55.3891227357
2112822.61924 0.00145820382669 131.0 55.7114020335
2112745.44276 0.00146938376191 132.0 55.9862619316
2112668.09947 0.00148058866978 133.0 56.2811143508
2112590.58993 0.00149182073771 134.0 56.616434767
2112512.91144 0.0015030775899 135.0 56.8967757897
2112435.06556 0.00151435846446 136.0 57.1777653941
2112357.05432 0.00152566616957 137.0 57.5114959031
2112278.87518 0.00153699970594 138.0 57.8048035266
2112200.52818 0.00154835679452 139.0 58.0778653119
2112122.01639 0.00155973970539 140.0 58.3879536771
2112043.3387 0.00157114922385 141.0 58.7076830027
2111964.49385 0.00158258243634 142.0 58.9797449405
2111885.48488 0.00159404010002 143.0 59.2695437144
2111806.31242 0.00160552450458 144.0 59.6021565933
2111726.97426 0.0016170333755 145.0 59.8811925654
2111647.47223 0.00162856556587 146.0 60.1569016713
2111567.80846 0.00164012384151 147.0 60.4823524148
2111487.98086 0.00165170761447 148.0 60.7793720227
2111407.98954 0.00166331429546 149.0 61.0483624708
2111327.83738 0.00167494579793 150.0 61.3478064917
2111247.52336 0.00168660354974 151.0 61.6707381643
2111167.04588 0.0016982847692 152.0 61.9415832261
2111086.4074 0.00170998949924 153.0 62.2215726152
2111005.60873 0.00172172042129 154.0 62.5509421363
2110924.6478 0.00173347590056 155.0 62.833459557
2110843.52641 0.00174525387033 156.0 63.1019036765
2110762.24778 0.0017570566497 157.0 63.4096433561
2110680.81142 0.00176888451509 158.0 63.7200459026
2110599.21829 0.00178073429592 159.0 63.9862243865
2110517.47264 0.00179260661353 160.0 64.2700602783
2110435.57531 0.00180450363884 161.0 64.5964696801
2110353.52488 0.00181642315615 162.0 64.8710443386
2110271.32287 0.00182836394635 163.0 65.1395309067
2110188.96944 0.00184032905144 164.0 65.452785963
2110106.46025 0.00185231879214 165.0 65.7518892025
2110023.79282 0.00186433088064 166.0 66.0151250123
2109940.96701 0.00187636717419 167.0 66.3010446322
2109857.9798 0.00188843002895 168.0 66.6232280314
2109774.82888 0.00190051705244 169.0 66.8928347598
2109691.51756 0.00191262700408 170.0 67.1607426906
2109608.0499 0.0019247620086 171.0 67.4759691643
2109524.42898 0.00193692057224 172.0 67.7675143171
2109440.66238 0.00194909872009 173.0 68.0284451961
2109356.75987 0.00196129673797 174.0 68.3140062685
2109272.72679 0.00197351541536 175.0 68.6328208208
2109188.56639 0.00198575159508 176.0 68.8994677318
2109104.28205 0.00199800449278 177.0 69.1655930016
2109019.87125 0.00201027769645 178.0 69.4790054438
2108935.32486 0.00202257215004 179.0 69.7678388241
2108850.63383 0.00203488707376 180.0 70.0266314404
2108765.78882 0.00204722614096 181.0 70.3092346284
2108680.77703 0.00205959325572 182.0 70.6262634648
2108595.58813 0.00207198742112 183.0 70.8916125831
2108510.21909 0.0020844083358 184.0 71.1547048072
2108424.67025 0.0020968584184 185.0 71.4627101268
2108338.94556 0.00210933587077 186.0 71.7535914399
2108253.05847 0.00212183528207 187.0 72.0104807655
2108167.02891 0.00213435453881 188.0 72.2878207385
2108080.87613 0.00214689215234 189.0 72.6041601981
2107994.61903 0.00215944261158 190.0 72.8700407213
2107908.27549 0.00217200233678 191.0 73.1292371264
2107821.85369 0.00218457333616 192.0 73.4287655229
2107735.34925 0.00219715687237 193.0 73.7252889582
2107648.75126 0.00220975262125 194.0 73.9809891924
2107562.04305 0.00222236500867 195.0 74.2513796269
2107475.20033 0.00223500071574 196.0 74.5665532022
2107388.19825 0.00224766199934 197.0 74.8353831175
2107301.0187 0.0022603502246 198.0 75.0905599572
2107213.64826 0.00227306984553 199.0 75.3793366972
2107126.07835 0.0022858223259 200.0 75.6830383187
2107038.31201 0.00229860361791 201.0 75.93912977
2106950.36344 0.00231141093926 202.0 76.2018314911
2106862.25083 0.00232424324425 203.0 76.5128730315
2106773.99577 0.00233709527714 204.0 76.7880479263
2106685.62404 0.00234996053999 205.0 77.0401519398
2106597.15758 0.00236283771958 206.0 77.3169796057
2106508.60827 0.00237572687864 207.0 77.6264723208
2106419.98151 0.00238862524239 208.0 77.8856966308
2106331.27754 0.00240153280374 209.0 78.1411716413
2106242.48678 0.00241445448799 210.0 78.4374141143
2106153.59247 0.00242739330592 211.0 78.7279076569
2106064.57866 0.00244034954465 212.0 78.9791982348
2105975.43026 0.00245332683848 213.0 79.2441664816
2105886.13115 0.00246632991056 214.0 79.5543406803
2105796.67082 0.00247935820355 215.0 79.8208751874
2105707.04928 0.0024924093449 216.0 80.0710325903
2105617.27215 0.00250548406781 217.0 80.3505009129
2105527.34774 0.0025185814779 218.0 80.6539889565
2105437.29021 0.0025316963474 219.0 80.9083073949
2105347.11573 0.0025448258339 220.0 81.1630581034
2105256.83356 0.00255797137576 221.0 81.4610234039
2105166.44597 0.00257113245575 222.0 81.7440539527
2105075.95285 0.00258430706926 223.0 81.9924920591
2104985.34874 0.00259749785306 224.0 82.2565992727
2104894.62076 0.00261070941009 225.0 82.5642431699
2104803.75579 0.00262394220827 226.0 82.8272305279
2104712.74551 0.00263719605985 227.0 83.0751768506
2104621.58286 0.00265047429307 228.0 83.3525346138
2104530.26285 0.00266377833293 229.0 83.6534456372
2104438.78959 0.00267710443592 230.0 83.9056575678
2104347.17542 0.00269044980413 231.0 84.1576610421
2104255.43392 0.00270381440856 232.0 84.4513802981
2104163.5801 0.00271719510498 233.0 84.7344652871
2104071.63252 0.00273058633759 234.0 84.9810105421
2103979.60632 0.00274398696087 235.0 85.2408649818
2103887.50683 0.00275739875173 236.0 85.5457425881
2103795.33341 0.00277082065149 237.0 85.8093343944
2103703.08251 0.00278425192656 238.0 86.0545704441
2103610.74314 0.0027976969038 239.0 86.3253869315
2103518.29756 0.00281116010259 240.0 86.6269295156
2103425.72976 0.00282464191575 241.0 86.8796695854
2103333.02738 0.00283814367603 242.0 87.1272860969
2103240.17763 0.00285166987519 243.0 87.4115607071
2103147.1707 0.00286522187827 244.0 87.7006539167
2103054.00653 0.00287879663625 245.0 87.9467429594
2102960.69158 0.0028923930609 246.0 88.1998304621
2102867.23321 0.00290601195306 247.0 88.4995110128
2102773.64228 0.00291965017554 248.0 88.7685039086
2102679.93474 0.00293330279225 249.0 89.0115366511
2102586.12373 0.00294696929696 250.0 89.2726449389
2102492.21494 0.00296065090774 251.0 89.5747063987
2102398.21158 0.00297434550716 252.0 89.8317532687
2102304.11564 0.00298805168634 253.0 90.0747846745
2102209.92225 0.00300177283119 254.0 90.3459752975
2102115.62113 0.00301551190321 255.0 90.6427306865
2102021.20449 0.00302926791875 256.0 90.891409518
2101926.6671 0.00304304132584 257.0 91.1370108253
2101832.00165 0.00305683580143 258.0 91.4199072267
2101737.20264 0.0030706520327 259.0 91.7049204769
2101642.27282 0.00308448674585 260.0 91.9482572022
2101547.21923 0.00309833894048 261.0 92.1985646295
2101452.0481 0.00311220967922 262.0 92.4944014684
2101356.76843 0.00312609626147 263.0 92.7623165447
2101261.39412 0.00313999408662 264.0 93.002894003
2101165.93618 0.00315390281128 265.0 93.259651788
2101070.39833 0.00316782400338 266.0 93.5588874405
2100974.78222 0.00318175594257 267.0 93.8157550087
2100879.0887 0.00319569718147 268.0 94.0557593277
2100783.31153 0.00320965108832 269.0 94.3203589076
2100687.43822 0.00322362127839 270.0 94.6168829793
2100591.45795 0.00323760747072 271.0 94.8658981068
2100495.36206 0.00325161030311 272.0 95.1071591305
2100399.13882 0.0032656340938 273.0 95.3806761109
2100302.77686 0.00327968109231 274.0 95.6698614849
2100206.27244 0.00329374919952 275.0 95.9132617198
2100109.62692 0.00330783777061 276.0 96.1572891037
2100012.84135 0.00332194873849 277.0 96.4405187119
2099915.92023 0.00333608070778 278.0 96.7185478381
2099818.8756 0.00335022899973 279.0 96.9582393178
2099721.72045 0.00336439202126 280.0 97.2062550009
2099624.46284 0.00337857078601 281.0 97.4997457588
2099527.11002 0.00339276322324 282.0 97.7635293621
2099429.6708 0.00340696595891 283.0 98.0011214832
2099332.14869 0.00342118002898 284.0 98.254089208
2099234.53969 0.00343540834622 285.0 98.5498467814
2099136.83946 0.00344965026693 286.0 98.8052764196
2099039.04569 0.00346390465707 287.0 99.0421123964
2098941.15203 0.00347817455653 288.0 99.3007650338
2098843.14874 0.00349246312701 289.0 99.5953386916
2098745.03063 0.00350676916204 290.0 99.8441606256
2098646.79737 0.00352109140819 291.0 100.081345001
2098548.44709 0.0035354321685 292.0 100.346210169
2098449.97828 0.00354979236498 293.0 100.636789737
2098351.39654 0.00356416849768 294.0 100.880471313
2098252.71161 0.00357855810399 295.0 101.11889488
2098153.92985 0.00359296236269 296.0 101.390318886
2098055.05627 0.00360738076041 297.0 101.674645558
2097956.09947 0.00362180954213 298.0 101.914429578
2097857.06643 0.00363624765467 299.0 102.154792013
2097757.95633 0.00365069786434 300.0 102.432961987
2097658.76505 0.0036651608759 301.0 102.709271256
2097559.4907 0.0036796348392 302.0 102.946199926
2097460.12873 0.00369412116534 303.0 103.189030518
2097360.66824 0.00370862412871 304.0 103.473994777
2097261.0987 0.00372314484171 305.0 103.740963912
2097161.41487 0.00373768194286 306.0 103.975900379
2097061.61113 0.0037522372389 307.0 104.221577198
2096961.67913 0.00376681413021 308.0 104.511746824
2096861.61507 0.00378141189367 309.0 104.769963713
2096761.42271 0.00379602761762 310.0 105.003611633
2096661.10631 0.00381066165935 311.0 105.252379273
2096560.66846 0.00382531526028 312.0 105.543657637
2096460.11654 0.00383998552008 313.0 105.796463744
2096359.46292 0.00385466854439 314.0 106.029385088
2096258.71638 0.00386936455276 315.0 106.281370999
2096157.88063 0.0038840746767 316.0 106.572332358
2096056.96096 0.00389879642614 317.0 106.820618214
2095955.96377 0.00391352747442 318.0 107.053249512
2095854.88901 0.00392826993753 319.0 107.30847895
2095753.73127 0.00394302625153 320.0 107.598026939
2095652.4876 0.00395779507715 321.0 107.842549345
2095551.15683 0.00397257557295 322.0 108.075216614
2095449.73278 0.00398737092654 323.0 108.333626332
2095348.20685 0.00400218363512 324.0 108.620955384
2095246.57586 0.00401701205587 325.0 108.8623534
2095144.84017 0.00403185516929 326.0 109.095285938
2095042.99696 0.00404671548958 327.0 109.356736757
2094941.04356 0.00406159402746 328.0 109.641296526
2094838.98433 0.0040764876183 329.0 109.880106071
2094736.82703 0.00409139419566 330.0 110.113449201
2094634.57549 0.0041063152533 331.0 110.377737507
2094532.23274 0.00412125070747 332.0 110.659199928
2094429.80667 0.00413619697225 333.0 110.895867117
2094327.30494 0.00415115251001 334.0 111.12969392
2094224.72814 0.00416611965401 335.0 111.396562107
2094122.07408 0.00418109917034 336.0 111.674790776
2094019.34382 0.00419608873714 337.0 111.909684159
2093916.53689 0.00421108846229 338.0 112.144006285
2093813.64587 0.00422610201869 339.0 112.413152204
2093710.66205 0.00424113098185 340.0 112.688173908
2093607.58171 0.00425617373147 341.0 112.921595788
2093504.401 0.00427123099544 342.0 113.156373427
2093401.11121 0.00428630649586 343.0 113.427458946
2093297.70497 0.00430140123683 344.0 113.69943723
2093194.18201 0.00431651285879 345.0 113.931634159
2093090.54337 0.00433164125194 346.0 114.166785286
2092986.7868 0.00434678888328 347.0 114.439444094
2092882.91279 0.00436195518524 348.0 114.708654633
2092778.92925 0.00437713641255 349.0 114.939827186
2092674.84454 0.00439233140846 350.0 115.175236128
2092570.6623 0.00440754175962 351.0 115.449080841
2092466.3871 0.00442276630591 352.0 115.715888415
2092362.02831 0.00443800132601 353.0 115.946200276
2092257.59279 0.0044532462511 354.0 116.181725641
2092153.08034 0.00446850348207 355.0 116.456354277
2092048.49028 0.00448377279794 356.0 116.721191165
2091943.82576 0.00449905161945 357.0 116.950777595
2091839.08702 0.00451434056701 358.0 117.186259627
2091734.26777 0.0045296430064 359.0 117.461261523
2091629.36237 0.00454495941946 360.0 117.724607182
2091524.37032 0.00456028776445 361.0 117.953582951
2091419.28954 0.00457562898252 362.0 118.188850389
2091314.11291 0.00459098642973 363.0 118.463811654
2091208.83565 0.00460636027928 364.0 118.726173547
2091103.45957 0.00462174797067 365.0 118.95464039
2090997.98614 0.00463714972496 366.0 119.189516902
2090892.4128 0.0046525679971 367.0 119.464025505
2090786.74009 0.00466800198341 368.0 119.725920915
2090680.9753 0.00468344817937 369.0 119.953974562
2090575.12487 0.00469890599102 370.0 120.188284801
2090469.19011 0.00471437732339 371.0 120.461935355
2090363.17374 0.00472986118249 372.0 120.723874014
2090257.08329 0.00474535420194 373.0 120.951610822
2090150.92349 0.00476085621874 374.0 121.185186158
2090044.69208 0.00477636988613 375.0 121.457584441
2089938.38685 0.00479189519033 376.0 121.720051848
2089832.00982 0.00480742974406 377.0 121.947575075
2089725.56016 0.00482297425639 378.0 122.180259026
2089619.03042 0.0048385322253 379.0 122.451026298
2089512.41389 0.00485410440966 380.0 122.714467613
2089405.70918 0.00486968889951 381.0 122.941893374
2089298.91354 0.00488528655331 382.0 123.173546798
2089192.0188 0.0049009008987 383.0 123.442323956
2089085.0186 0.0049165326222 384.0 123.707128378
2088977.91337 0.00493217939561 385.0 123.934591334
2088870.70356 0.0049478413107 386.0 124.165097417
2088763.38523 0.00496352109015 387.0 124.431549059
2088655.95684 0.00497921865795 388.0 124.698034587
2088548.42416 0.00499493072458 389.0 124.925693381
2088440.79345 0.00501065626794 390.0 125.154962462
2088333.06607 0.00502639717221 391.0 125.418780891
2088225.24443 0.00504215293757 392.0 125.687179375
2088117.33699 0.0050579199645 393.0 125.915221855
2088009.35139 0.00507369699884 394.0 126.143196101
2087901.28854 0.00508948615072 395.0 126.404105301
2087793.1484 0.0051052876441 396.0 126.674547706
2087684.93576 0.00512109861039 397.0 126.903195947
2087576.65429 0.00513691834348 398.0 127.129853901
2087468.30056 0.00515274967888 399.0 127.387613503
2087359.86985 0.00516859381116 400.0 127.660115333
2087251.36269 0.00518444857717 401.0 127.889630479
2087142.77976 0.00520031352199 402.0 128.114991499
2087034.11545 0.00521619173969 403.0 128.369400771
2086925.36317 0.0052320848727 404.0 128.643847599
2086816.52252 0.00524799089531 405.0 128.874534559
2086707.59476 0.00526390895186 406.0 129.098663154
2086598.57584 0.00527984171646 407.0 129.34956502
2086489.46098 0.00529579066869 408.0 129.625698098
2086380.25221 0.00531175337907 409.0 129.85791012
2086270.95443 0.00532772807557 410.0 130.080920204
2086161.56781 0.00534371658048 411.0 130.328205316
2086052.09116 0.00535971999104 412.0 130.605607223
2085942.52958 0.00537573550195 413.0 130.83975036
2085832.89115 0.00539176063607 414.0 131.061809425
2085723.17846 0.00540779676139 415.0 131.305420267
2085613.39082 0.0054238452415 416.0 131.583500583
2085503.53218 0.00543990374513 417.0 131.820038086
2085393.60893 0.00545596995173 418.0 132.041371282
2085283.62129 0.00547204552832 419.0 132.28130631
2085173.5648 0.00548813276077 420.0 132.559287289
2085063.43877 0.0055042303214 421.0 132.798743942
2084953.24571 0.00552033631359 422.0 133.019638086
2084842.98277 0.00553645266797 423.0 133.255955872
2084732.64221 0.00555258239132 424.0 133.532858097
2084622.22012 0.00556872489951 425.0 133.775824554
2084511.71717 0.00558487833879 426.0 133.996632043
2084401.13018 0.0056010443656 427.0 134.229455406
2084290.45117 0.00561722614437 428.0 134.504083412
2084179.67603 0.00563342335439 429.0 134.751220573
2084068.80665 0.00564963370384 430.0 134.972363229
2083957.84261 0.00566585799903 431.0 135.201883333
2083846.77879 0.00568209900235 432.0 135.470436046
2083735.61361 0.00569835626126 433.0 135.724854638
2083624.35233 0.00571462675746 434.0 135.946827489
2083512.99908 0.00573091016328 435.0 136.173307865
2083401.55275 0.00574720866987 436.0 136.435341836
2083290.01434 0.00576352181216 437.0 136.696629261
2083178.39142 0.00577984620142 438.0 136.920004261
2083066.69059 0.00579618079142 439.0 137.143784754
2082954.91197 0.0058125276948 440.0 137.399401834
2082843.05551 0.00582888712773 441.0 137.66642462
2082731.12684 0.0058452561286 442.0 137.891854347
2082619.13105 0.00586163356902 443.0 138.113354939
2082507.06607 0.00587802191079 444.0 138.36273349
2082394.92817 0.00589442242477 445.0 138.634096241
2082282.71914 0.00591083289047 446.0 138.862317612
2082170.44172 0.00592725214599 447.0 139.082042124
2082058.09204 0.00594368277985 448.0 139.325441816
2081945.66374 0.00596012686824 449.0 139.599472579
2081833.15615 0.00597658275279 450.0 139.831310628
2081720.57138 0.00599304893928 451.0 140.049850289
2081607.90598 0.00600952766115 452.0 140.287616758
2081495.15337 0.0060260213592 453.0 140.562352438
2081382.31252 0.00604252866613 454.0 140.798724266
2081269.38694 0.00605904744948 455.0 141.016761153
2081156.37589 0.00607557911228 456.0 141.249330445
2081043.27482 0.0060921260283 457.0 141.522502229
2080930.08409 0.00610868692769 458.0 141.764421223
2080816.80991 0.00612525891676 459.0 141.982731608
2080703.45538 0.00614184233985 460.0 142.210634353
2080590.01869 0.00615843935715 461.0 142.477773489
2080476.50141 0.00617504897984 462.0 142.728233494
2080362.91122 0.0061916679269 463.0 142.947691116
2080249.25339 0.00620829577704 464.0 143.171556402
2080135.52677 0.00622493478401 465.0 143.430042138
2080021.73133 0.0062415848059 466.0 143.689959755
2079907.87284 0.0062582428708 467.0 143.911539093
2079793.95558 0.00627490826323 468.0 144.132098026
2079679.97657 0.0062915835844 469.0 144.382384557
2079565.93208 0.00630826985862 470.0 144.649362634
2079451.8242 0.00632496478762 471.0 144.87414227
2079337.6553 0.00634166743407 472.0 145.092231229
2079223.42085 0.00635838050839 473.0 145.33487816
2079109.11422 0.00637510600616 474.0 145.606165824
2078994.73464 0.00639184226647 475.0 145.83533203
2078880.28382 0.00640858793432 476.0 146.051895664
2078765.75749 0.00642534536523 477.0 146.287573081
2078651.14815 0.00644211712808 478.0 146.560050961
2078536.45385 0.00645890206217 479.0 146.794901713
2078421.67708 0.00647569820572 480.0 147.01099574
2078306.81587 0.00649250709403 481.0 147.24048857
2078191.86399 0.00650933141569 482.0 147.510654204
2078076.81992 0.00652617036027 483.0 147.752603867
2077961.68822 0.00654302126918 484.0 147.969397769
2077846.47066 0.00655988451807 485.0 148.193609421
2077731.16382 0.0065767625614 486.0 148.454511652
2077615.76732 0.0065936549527 487.0 148.708147411
2077500.28763 0.0066105585637 488.0 148.926927148
2077384.7299 0.00662747266008 489.0 149.146882501
2077269.09297 0.0066443994457 490.0 149.397948477
2077153.37633 0.00666133916725 491.0 149.661194659
2077037.586 0.00667828883846 492.0 149.883365573
2076921.72803 0.00669524702705 493.0 150.100213412
2076805.8015 0.00671221585552 494.0 150.3422784
2076689.8036 0.00672919660415 495.0 150.611358099
2076573.73736 0.00674618700736 496.0 150.838448261
2076457.60767 0.00676318527033 497.0 151.053463318
2076341.41285 0.00678019335971 498.0 151.287495958
2076225.14744 0.00679721353267 499.0 151.558196815
2076108.81105 0.00681424445599 500.0 151.791861146
2075992.40723 0.00683128405038 501.0 152.006445913
2075875.93438 0.00684833378718 502.0 152.233552024
2075759.38578 0.00686539652455 503.0 152.501212384
2075642.7586 0.00688247184179 504.0 152.743238012
2075526.05574 0.00689955740166 505.0 152.958924531
2075409.27699 0.00691665382545 506.0 153.180349621
2075292.41616 0.00693376409055 507.0 153.43648204
2075175.46936 0.00695088856631 508.0 153.692157462
2075058.4396 0.00696802472308 509.0 153.910609349
2074941.32926 0.00698517205709 510.0 154.127740118
2074824.13447 0.00700233315118 511.0 154.373241058
2074706.85172 0.00701950896733 512.0 154.638139623
2074589.48472 0.00703669692472 513.0 154.861154652
2074472.03901 0.0070538953146 514.0 155.075519807
2074354.51408 0.00707110594839 515.0 155.311573839
2074236.90747 0.0070883302664 516.0 155.580642382
2074119.22304 0.00710556600304 517.0 155.810156088
2074001.46841 0.00712281054758 518.0 156.023426839
2073883.64577 0.00714006488281 519.0 156.251376281
2073765.75281 0.00715733098543 520.0 156.519056925
2073647.79166 0.00717460745817 521.0 156.757147855
2073529.76951 0.00719189137657 522.0 156.971138419
2073411.68938 0.00720918302199 523.0 157.19248492
2073293.54791 0.00722648490214 524.0 157.449560991
2073175.34381 0.00724379688341 525.0 157.701599679
2073057.08183 0.00726111625169 526.0 157.9182682
2072938.76477 0.00727844261952 527.0 158.134672708
2072820.38825 0.00729577872458 528.0 158.379990465
2072701.94767 0.00731312570987 529.0 158.642913409
2072583.44489 0.00733048138221 530.0 158.864363755
2072464.8826 0.00734784462805 531.0 159.077645541
2072346.25663 0.00736521792256 532.0 159.312645391
2072227.56037 0.00738260341876 533.0 159.580418958
2072108.79322 0.00739999964073 534.0 159.808904039
2071989.95814 0.00741740476885 535.0 160.021039399
2071871.05257 0.00743482053041 536.0 160.247341149
2071752.06952 0.00745224966637 537.0 160.513369209
2071633.00672 0.00746969152757 538.0 160.751296701
2071513.86769 0.00748714372465 539.0 160.96441791
2071394.65265 0.00750460684136 540.0 161.183820447
2071275.35601 0.0075220836762 541.0 161.437639744
2071155.97486 0.00753957439903 542.0 161.69087506
2071036.51342 0.00755707630275 543.0 161.907270158
2070916.97531 0.0075745886266 544.0 162.121749056
2070797.3577 0.00759211372533 545.0 162.36328654
2070677.65778 0.00760965254247 546.0 162.626894458
2070557.87984 0.00762720249749 547.0 162.849008549
2070438.03021 0.00764476164337 548.0 163.060712711
2070318.10889 0.00766233160718 549.0 163.291712918
2070198.1129 0.00767991410261 550.0 163.558527563
2070078.04502 0.00769750727618 551.0 163.788966569
2069957.91224 0.00771510848751 552.0 164.000214868
2069837.71632 0.00773271854569 553.0 164.222622792
2069717.45347 0.00775033983639 554.0 164.483433285
2069597.12342 0.00776797172266 555.0 164.726396216
2069476.7317 0.00778561144627 556.0 164.939674968
2069356.2809 0.00780325894031 557.0 165.155632475
2069235.76657 0.00782091691094 558.0 165.402471432
2069115.18513 0.00783858608313 559.0 165.660464794
2068994.53963 0.00785626405547 560.0 165.878426871
2068873.83317 0.00787394984079 561.0 166.090267123
2068753.06179 0.00789164592389 562.0 166.325015436
2068632.21953 0.00790935420309 563.0 166.590250591
2068511.30683 0.00792707300383 564.0 166.815717214
2068390.32724 0.00794480050844 565.0 167.02595867
2068269.27843 0.00796253844375 566.0 167.250719831
2068148.15363 0.00798028946824 567.0 167.514736783
2068026.95093 0.00799805289348 568.0 167.750703398
2067905.67407 0.00801582633877 569.0 167.962044667
2067784.32327 0.00803361036727 570.0 168.179140194
2067662.89261 0.00805140782654 571.0 168.429577251
2067541.3786 0.00806921908791 572.0 168.682450872
2067419.78486 0.0080870415922 573.0 168.897767479
2067298.11463 0.00810487453452 574.0 169.109728948
2067176.36448 0.00812272031552 575.0 169.346830801
2067054.53044 0.00814058023137 576.0 169.609929156
2066932.61567 0.00815845200038 577.0 169.832273401
2066810.62614 0.00817633355065 578.0 170.041833519
2066688.56182 0.00819422632493 579.0 170.267879479
2066566.41911 0.00821213229411 580.0 170.532005823
2066444.19996 0.00823004996738 581.0 170.764611325
2066321.91156 0.00824797648619 582.0 170.974695924
2066199.55695 0.00826591211355 583.0 171.192204612
2066077.13307 0.00828385919568 584.0 171.444276117
2065954.63954 0.00830181747869 585.0 171.693730547
2065832.08256 0.00831978404014 586.0 171.907452913
2065709.46694 0.00833775800695 587.0 172.119171596
2065586.79017 0.00835574170005 588.0 172.356993439
2065464.04902 0.0083737362486 589.0 172.618477064
2065341.24692 0.00839173936652 590.0 172.839136018
2065218.38912 0.00840974925203 591.0 173.048028466
2065095.47409 0.00842776769408 592.0 173.27407794
2064972.49649 0.0084457969473 593.0 173.537587421
2064849.45625 0.00846383585019 594.0 173.768670993
2064726.35816 0.00848188201863 595.0 173.977906473
2064603.20238 0.00849993624139 596.0 174.194920803
2064479.98295 0.00851800133259 597.0 174.446571892
2064356.69667 0.00853607747523 598.0 174.694876129
2064233.34708 0.0085541621943 599.0 174.907821389
2064109.93636 0.00857225503183 600.0 175.118783815
2063986.4596 0.00859035866439 601.0 175.355624257
2063862.91145 0.00860847454753 602.0 175.616458675
2063739.29356 0.00862660067052 603.0 175.836674618
2063615.60986 0.00864473538927 604.0 176.044798765
2063491.85789 0.00866288057025 605.0 176.269530307
2063368.03159 0.00868103856649 606.0 176.532008189
2063244.13052 0.00869920829384 607.0 176.763253439
2063120.1596 0.00871738727355 608.0 176.971969348
2062996.11972 0.00873557605843 609.0 177.187572693
2062872.00581 0.00875377728568 610.0 177.436799524
2062747.81562 0.00877199103896 611.0 177.68622973
2062623.55409 0.00879021458563 612.0 177.899173837
2062499.22543 0.00880844698716 613.0 178.10889075
2062374.82695 0.00882669049112 614.0 178.343127341
2062250.35522 0.00884494633807 615.0 178.604156198
2062125.81381 0.00886321226148 616.0 178.825167326
2062001.20912 0.00888148609143 617.0 179.032481351
2061876.54131 0.00889976915775 618.0 179.254683773
2061751.80626 0.00891806360765 619.0 179.515458646
2061627.00487 0.00893636831479 620.0 179.748582689
2061502.14359 0.00895468051323 621.0 179.957202538
2061377.22499 0.00897300033116 622.0 180.170622043
2061252.24494 0.00899133032745 623.0 180.415596822
2061127.201 0.00900967088219 624.0 180.66792944
2061002.09761 0.00902801941396 625.0 180.881777696
2060876.93892 0.00904637482641 626.0 181.089938165
2060751.72175 0.00906473941048 627.0 181.320158322
2060626.44094 0.00908311494869 628.0 181.581589238
2060501.09779 0.00910149973409 629.0 181.80479886
2060375.69705 0.00911989169796 630.0 182.011474042
2060250.23764 0.00913829218645 631.0 182.23018186
2060124.71333 0.00915670384859 632.0 182.486650206
2059999.12217 0.00917512628997 633.0 182.72472813
2059873.46846 0.00919355699521 634.0 182.933923125
2059747.75384 0.00921199593529 635.0 183.144668018
2059621.97299 0.00923044584624 636.0 183.383854687
2059496.12143 0.00924890774007 637.0 183.639896153
2059370.20189 0.00926737935754 638.0 183.855836085
2059244.21841 0.00928585927791 639.0 184.062447169
2059118.16817 0.00930434953457 640.0 184.287570011
2058992.0454 0.00932285226306 641.0 184.548495966
2058865.85044 0.00934136613849 642.0 184.775624894
2058739.58846 0.00935988876641 643.0 184.982185466
2058613.25992 0.00937842089183 644.0 185.196804905
2058486.85937 0.00939696516495 645.0 185.445503188
2058360.38448 0.00941552161537 646.0 185.69156419
2058233.83996 0.00943408760032 647.0 185.902392644
2058107.22936 0.00945266235183 648.0 186.110382445
2057980.54912 0.00947124824778 649.0 186.34264892
2057853.7949 0.00948984667406 650.0 186.601788458
2057726.96944 0.00950845555093 651.0 186.821428873
2057600.07836 0.00952707281842 652.0 187.026944471
2057473.12106 0.00954569985422 653.0 187.246338224
2057346.09252 0.00956433898218 654.0 187.504282735
2057218.9926 0.00958298934861 655.0 187.73750907
2057091.82717 0.00960164824612 656.0 187.944960784
2056964.59881 0.00962031563269 657.0 188.155389842
2056837.30319 0.00963899406678 658.0 188.395187362
2056709.93723 0.00965768422196 659.0 188.648703282
2056582.50504 0.00967638362701 660.0 188.86273875
2056455.01146 0.009695090839 661.0 189.068424009
2056327.45416 0.00971380785144 662.0 189.29315467
2056199.828 0.00973253666055 663.0 189.552931079
2056072.13395 0.00975127583358 664.0 189.778430701
2055944.3776 0.00977002296752 665.0 189.983871774
2055816.55955 0.0097887788133 666.0 190.197469081
2055688.67441 0.00980754600396 667.0 190.444896512
2055560.71993 0.00982632457662 668.0 190.690037502
2055432.70091 0.00984511190025 669.0 190.899987044
2055304.62106 0.00986390716206 670.0 191.106731059
2055176.4769 0.00988271269826 671.0 191.337073102
2055048.26407 0.00990152994777 672.0 191.595406437
2054919.98529 0.00992035688451 673.0 191.814857184
2054791.64648 0.00993919134581 674.0 192.019333829
2054663.24754 0.00995803455027 675.0 192.236543333
2054534.78359 0.00997688883767 676.0 192.491458946
2054406.25439 0.00999575348839 677.0 192.726409868
2054277.66602 0.0100146257413 678.0 192.933477212
2054149.02164 0.0100335053079 679.0 193.141888366
2054020.31728 0.0100523946782 680.0 193.377873062
2053891.54948 0.0100712947582 681.0 193.632414347
2053762.72191 0.0100902032216 682.0 193.847181419
2053633.83955 0.010109118432 683.0 194.051463871
2053504.90029 0.010128042228 684.0 194.272487028
2053375.89826 0.0101469768859 685.0 194.530474331
2053246.83306 0.0101659213926 686.0 194.758297323
2053117.70952 0.0101848733643 687.0 194.963414673
2052988.52802 0.0102038333452 688.0 195.173861523
2052859.28229 0.0102228041708 689.0 195.415317624
2052729.96808 0.0102417864984 690.0 195.664511085
2052600.58837 0.0102607780295 691.0 195.875691579
2052471.14618 0.0102797777733 692.0 196.080313924
2052341.63728 0.0102987880648 693.0 196.305148436
2052212.05529 0.0103178109623 694.0 196.563340557
2052082.40045 0.0103368450728 695.0 196.786065182
2051952.67747 0.010355888197 696.0 196.989932595
2051822.88591 0.0103749412927 697.0 197.202581122
2051693.01967 0.0103940070501 698.0 197.449171291
2051563.07618 0.0104130855027 699.0 197.692133899
2051433.06011 0.0104321740557 700.0 197.900596393
2051302.97506 0.0104512719157 701.0 198.105892811
2051172.81749 0.0104703813897 702.0 198.334367655
2051042.5831 0.0104895039109 703.0 198.591323737
2050912.27483 0.0105086374474 704.0 198.809992071
2050781.89919 0.0105277797002 705.0 199.013113133
2050651.45688 0.0105469316593 706.0 199.2279606
2050520.94383 0.010566095542 707.0 199.479213656
2050390.36057 0.0105852705882 708.0 199.715625811
2050259.71452 0.0106044537837 709.0 199.92204596
2050129.01093 0.0106236443227 710.0 200.128183725
2049998.24806 0.0106428442663 711.0 200.359990611
2049867.42431 0.0106620543548 712.0 200.614826235
2049736.54548 0.0106812719878 713.0 200.830290401
2049605.61968 0.0107004948365 714.0 201.03300469
2049474.64827 0.0107197239978 715.0 201.249910308
2049343.6281 0.0107389614495 716.0 201.504734876
2049212.5608 0.0107582061001 717.0 201.735255889
2049081.45367 0.0107774550909 718.0 201.940148698
2048950.31023 0.0107967082024 719.0 202.147158217
2048819.12637 0.0108159679569 720.0 202.381879657
2048687.89834 0.0108352353051 721.0 202.634168377
2048556.62913 0.0108545080896 722.0 202.847123024
2048425.32262 0.0108737849074 723.0 203.049635727
2048293.97514 0.0108930678423 724.0 203.26834834
2048162.57887 0.0109123595176 725.0 203.524063678
2048031.13125 0.0109316593675 726.0 203.751235699
2047899.63496 0.0109509653598 727.0 203.954984928
2047768.08842 0.0109702782674 728.0 204.162787068
2047636.48303 0.0109896012982 729.0 204.399921338
2047504.81175 0.0110089357194 730.0 204.649604809
2047373.0749 0.0110282797281 731.0 204.86061659
2047241.27359 0.0110476324806 732.0 205.063025559
2047109.40181 0.0110669964751 733.0 205.283208601
2046977.4507 0.0110863743345 734.0 205.539154444
2046845.41771 0.0111057653127 735.0 205.763732453
2046713.30579 0.0111251673553 736.0 205.966617522
2046581.11374 0.0111445812506 737.0 206.17504848
2046448.83424 0.0111640099149 738.0 206.41403178
2046316.46268 0.01118345402 739.0 206.661337529
2046184.00237 0.011202911197 740.0 206.870872017
2046051.45739 0.0112223801727 741.0 207.073192535
2045918.82515 0.0112418628815 742.0 207.294446521
2045786.10114 0.0112613610736 743.0 207.550238374
2045653.28795 0.0112808730244 744.0 207.77287931
2045520.39368 0.0113003958425 745.0 207.975099996
2045387.42228 0.011319929523 746.0 208.183933947
2045254.37201 0.0113394760043 747.0 208.424160123
2045121.2444 0.0113590348381 748.0 208.669526058
2044988.04882 0.0113786026563 749.0 208.877972449
2044854.79488 0.0113981773924 750.0 209.080159951
2044721.48504 0.0114177602292 751.0 209.302042792
2044588.11964 0.0114373521322 752.0 209.55749556
2044454.70544 0.0114569507362 753.0 209.778783196
2044321.25355 0.0114765528303 754.0 209.980482369
2044187.76944 0.0114961583542 755.0 210.189452161
2044054.25171 0.0115157693202 756.0 210.430290346
2043920.701 0.0115353855177 757.0 210.674295135
2043787.12434 0.0115550041184 758.0 210.881989019
2043653.52726 0.0115746239018 759.0 211.083959999
2043519.90686 0.0115942470587 760.0 211.306005444
2043386.25716 0.0116138756365 761.0 211.561062613
2043252.57789 0.011633508462 762.0 211.78153045
2043118.87241 0.0116531436422 763.0 211.982815088
2042985.13815 0.0116727824607 764.0 212.191631227
2042851.36575 0.011692428192 765.0 212.432441777
2042717.54838 0.0117120817858 766.0 212.67574027
2042583.68612 0.0117317414905 767.0 212.882984701
2042449.77831 0.0117514070482 768.0 213.084636025
2042315.81667 0.0117710814507 769.0 213.306370532
2042181.79083 0.011790767382 770.0 213.561038134
2042047.69709 0.0118104641575 771.0 213.781190585
2041913.53637 0.0118301702192 772.0 213.982151255
2041779.30451 0.0118498870297 773.0 214.19051944
2041644.99143 0.0118696179198 774.0 214.43066849
2041510.59026 0.0118893637939 775.0 214.673931405
2041376.10188 0.0119091227199 776.0 214.881016474
2041241.52715 0.0119288941013 777.0 215.082243314
2041106.86003 0.0119486804842 778.0 215.303201632
2040972.09289 0.0119684840549 779.0 215.557486302
2040837.22537 0.0119883035355 780.0 215.777818377
2040702.2625 0.0120081365958 781.0 215.978547379
2040567.20497 0.0120279837783 782.0 216.186184801
2040432.04806 0.0120478474582 783.0 216.425057771
2040296.79065 0.0120677275666 784.0 216.668914924
2040161.43995 0.0120876210644 785.0 216.876136014
2040026.00389 0.0121075260789 786.0 217.07684859
2039890.4838 0.0121274438613 787.0 217.296588309
2039754.8794 0.012147375419 788.0 217.550438803
2039619.19758 0.0121673183443 789.0 217.771454483
2039483.45063 0.0121872691076 790.0 217.972062816
2039347.64634 0.0122072270831 791.0 218.178713452
2039211.78616 0.0122271937441 792.0 218.415727764
2039075.87391 0.0122471684344 793.0 218.660714206
2038939.92057 0.0122671476679 794.0 218.868389073
2038803.93683 0.0122871292075 795.0 219.06852837
2038667.92528 0.0123071142385 796.0 219.286643693
2038531.88478 0.0123271041704 797.0 219.539895288
2038395.81944 0.0123470973124 798.0 219.762124766
2038259.73748 0.0123670909124 799.0 219.962758067
2038123.64142 0.0123870852327 800.0 220.168207141
2037987.5259 0.0124070829815 801.0 220.402824403
2037851.3864 0.0124270850603 802.0 220.64932888
2037715.22489 0.0124470895228 803.0 220.857813716
2037579.04318 0.0124670954712 804.0 221.057366337
2037442.83501 0.0124871054372 805.0 221.273501243
2037306.59016 0.0125071223669 806.0 221.525822551
2037170.30386 0.012527146072 807.0 221.74983848
2037033.97664 0.012547174918 808.0 221.950692055
2036897.60479 0.0125672099591 809.0 222.154779822
2036761.17752 0.0125872547126 810.0 222.386517684
2036624.68539 0.0126073109517 811.0 222.634732955
2036488.12663 0.0126273773041 812.0 222.844437541
2036351.50111 0.0126474529643 813.0 223.0434498
2036214.80193 0.0126675403916 814.0 223.257310784
2036078.01861 0.0126876426106 815.0 223.508152538
2035941.14659 0.0127077594734 816.0 223.734585442
2035804.18796 0.0127278889517 817.0 223.935918497
2035667.1421 0.0127480313467 818.0 224.138553471
2035530.00179 0.012768189507 819.0 224.366997326
2035392.76109 0.0127883647306 820.0 224.61687192
2035255.42239 0.0128085549519 821.0 224.828273994
2035117.99117 0.0128287581974 822.0 225.026865353
2034980.46706 0.0128489756352 823.0 225.23823385
2034842.84592 0.0128692092848 824.0 225.485586104
2034705.12934 0.0128894581058 825.0 225.716332298
2034567.3264 0.0129097188215 826.0 225.91848147
2034429.44444 0.0129299901804 827.0 226.119653173
2034291.48401 0.0129502737184 828.0 226.344467811
2034153.44585 0.0129705698697 829.0 226.595658938
2034015.33839 0.0129908757302 830.0 226.809317876
2033877.1735 0.0130111881903 831.0 227.007693796
2033738.95683 0.0130315073641 832.0 227.216438353
2033600.68847 0.0130518348172 833.0 227.458961303
2033462.37227 0.0130721695163 834.0 227.695017988
2033324.0187 0.0130925080835 835.0 227.898410238
2033185.63619 0.0131128490114 836.0 228.098201529
2033047.22492 0.0131331939862 837.0 228.319142832
2032908.78294 0.0131535442498 838.0 228.570970196
2032770.31449 0.0131738978609 839.0 228.787540133
2032631.82721 0.0131942523314 840.0 228.986004382
2032493.32237 0.0132146083527 841.0 229.192092631
2032354.79429 0.0132349685862 842.0 229.429437701
2032216.23948 0.013255333494 843.0 229.670548481
2032077.66112 0.0132757009154 844.0 229.875713435
2031939.06132 0.0132960701099 845.0 230.074312434
2031800.43393 0.0133164436706 846.0 230.291239116
2031661.76956 0.0133368242526 847.0 230.542639484
2031523.06468 0.0133572113485 848.0 230.762882002
2031384.32045 0.0133776033163 849.0 230.961848475
2031245.53304 0.0133980013523 850.0 231.165358865
2031106.6916 0.0134184089487 851.0 231.397281728
2030967.78702 0.0134388277156 852.0 231.642790849
2030828.81779 0.0134592562269 853.0 231.850372668
2030689.78366 0.0134796937667 854.0 232.048084275
2030550.67745 0.0135001428489 855.0 232.26096965
2030411.48854 0.0135206064579 856.0 232.510452046
2030272.21252 0.0135410844064 857.0 232.735248586
2030132.85163 0.0135615746533 858.0 232.935252649
2029993.40544 0.0135820774472 859.0 233.136385934
2029853.86695 0.0136025955665 860.0 233.3627584
2029714.23042 0.0136231303001 861.0 233.611566732
2029574.49852 0.0136436795736 862.0 233.822335601
2029434.67734 0.0136642412728 863.0 234.019592605
2029294.76723 0.0136848163728 864.0 234.228536283
2029154.76443 0.0137054068676 865.0 234.472115359
2029014.67059 0.013726011839 866.0 234.704501901
2028874.49502 0.013746627984 867.0 234.906211313
2028734.24576 0.0137672538112 868.0 235.105301703
2028593.92382 0.0137878907473 869.0 235.326123849
2028453.52948 0.0138085394719 870.0 235.576645196
2028313.07042 0.0138291973593 871.0 235.791508574
2028172.55833 0.0138498612174 872.0 235.988882333
2028031.99906 0.0138705309458 873.0 236.194121736
2027891.3921 0.0138912082889 874.0 236.43053138
2027750.73966 0.0139118927408 875.0 236.670453434
2027610.05088 0.0139325811668 876.0 236.874678911
2027469.33402 0.0139532718138 877.0 237.072204828
2027328.58912 0.0139739662454 878.0 237.287617174
2027187.81286 0.0139946661583 879.0 237.537734977
2027047.00763 0.0140153701483 880.0 237.757748811
2026906.18052 0.0140360756212 881.0 237.955959504
2026765.33361 0.0140567827774 882.0 238.157881055
2026624.46143 0.0140774942607 883.0 238.387164121
2026483.55951 0.0140982110612 884.0 238.63285621
2026342.63056 0.0141189311677 885.0 238.840561741
2026201.6784 0.0141396531616 886.0 239.037156122
2026060.69944 0.0141603789444 887.0 239.247451649
2025919.68544 0.014181111264 888.0 239.493943481
2025778.6331 0.0142018499728 889.0 239.720856237
2025637.54531 0.0142225929872 890.0 239.920782726
2025496.42197 0.0142433404338 891.0 240.11993258
2025355.25513 0.0142640953145 892.0 240.342285717
2025214.03622 0.0142848596791 893.0 240.591396368
2025072.76379 0.0143056323618 894.0 240.803709464
2024931.43953 0.0143264119284 895.0 241.00016956
2024790.05883 0.0143472000871 896.0 241.20580532
2024648.61123 0.014368000116 897.0 241.443572497
2024507.08994 0.0143888128039 898.0 241.680564922
2024365.49562 0.0144096363208 899.0 241.883254305
2024223.82841 0.0144304702312 900.0 242.080348504
2024082.08125 0.0144513171665 901.0 242.296135144
2023940.24529 0.0144721795074 902.0 242.545684134
2023798.31896 0.0144930562894 903.0 242.763906306
2023656.3066 0.0145139452527 904.0 242.961203011
2023514.20876 0.0145348467422 905.0 243.162811109
2023372.01997 0.0145557632175 906.0 243.392118644
2023229.73748 0.0145766951838 907.0 243.636534104
2023087.36708 0.0145976399766 908.0 243.843211148
2022944.91676 0.0146185953955 909.0 244.039145129
2022802.38812 0.014639562382 910.0 244.248907895
2022659.77911 0.0146605425518 911.0 244.494783615
2022517.09346 0.0146815345264 912.0 244.720861991
2022374.34166 0.0147025349313 913.0 244.920148747
2022231.53162 0.0147235425379 914.0 245.118546523
2022088.6636 0.0147445589716 915.0 245.339840523
2021945.73723 0.0147655849521 916.0 245.588338715
2021802.75921 0.0147866180204 917.0 245.800415455
2021659.73934 0.0148076554301 918.0 245.996272911
2021516.68088 0.0148286976042 919.0 246.200745109
2021373.58062 0.0148497466989 920.0 246.43665541
2021230.43826 0.014870802575 921.0 246.674202328
2021087.26037 0.0148918625386 922.0 246.876823809
2020944.05249 0.0149129253025 923.0 247.073023129
2020800.81201 0.0149339928333 924.0 247.286944417
2020657.53313 0.0149550671981 925.0 247.535459218
2020514.21602 0.0149761473649 926.0 247.754545217
2020370.86587 0.0149972310318 927.0 247.951606394
2020227.48321 0.0150183185758 928.0 248.151722351
2020084.06111 0.0150394128362 929.0 248.378206864
2019940.59358 0.0150605151054 930.0 248.623459384
2019797.08205 0.0150816236104 931.0 248.830960268
2019653.52979 0.0151027369239 932.0 249.026175917
2019509.933 0.0151238568499 933.0 249.233572293
2019366.28302 0.015144986237 934.0 249.475449918
2019222.57597 0.0151661251554 935.0 249.705184476
2019078.81491 0.0151872714521 936.0 249.904934104
2018935.00101 0.0152084248217 937.0 250.101838235
2018791.12792 0.0152295878972 938.0 250.319647417
2018647.18826 0.0152507626787 939.0 250.568060995
2018503.182 0.0152719478776 940.0 250.782195388
2018359.11378 0.0152931413928 941.0 250.977852688
2018214.98316 0.0153143439778 942.0 251.179789514
2018070.78356 0.0153355583014 943.0 251.410889668
2017926.51136 0.0153567849041 944.0 251.651813216
2017782.17093 0.0153780213863 945.0 251.855948454
2017637.76769 0.0153992661555 946.0 252.051003096
2017493.30001 0.0154205207743 947.0 252.26111155
2017348.76288 0.0154417872561 948.0 252.507319309
2017204.15737 0.0154630645542 949.0 252.73006162
2017059.49105 0.0154843497878 950.0 252.927803541
2016914.76862 0.0155056423002 951.0 253.125572524
2016769.98744 0.0155269441314 952.0 253.346766494
2016625.14498 0.015548256229 953.0 253.593796646
2016480.2463 0.015569576325 954.0 253.804235644
2016335.29983 0.0155909018846 955.0 253.999027861
2016190.30775 0.0156122334698 956.0 254.202645228
2016045.26632 0.0156335732589 957.0 254.437593108
2015900.17516 0.0156549210818 958.0 254.673976316
2015755.04109 0.0156762741916 959.0 254.875670496
2015609.87017 0.0156976311894 960.0 255.070796801
2015464.66046 0.0157189938908 961.0 255.283198157
2015319.40685 0.0157403642609 962.0 255.53037345
2015174.11017 0.0157617412017 963.0 255.749265502
2015028.77649 0.015783122257 964.0 255.945613196
2014883.40741 0.0158045075568 965.0 256.144192548
2014737.99691 0.0158258997782 966.0 256.368096549
2014592.53947 0.0158473002234 967.0 256.613230825
2014447.03694 0.0158687071118 968.0 256.820977247
2014301.49337 0.0158901188064 969.0 257.015225249
2014155.90585 0.015911536862 970.0 257.220201086
2014010.26608 0.0159329641295 971.0 257.458091535
2013864.56985 0.0159544008814 972.0 257.690381078
2013718.82002 0.0159758450022 973.0 257.890338966
2013573.01814 0.0159972959729 974.0 258.085582943
2013427.15793 0.0160187563467 975.0 258.299708287
2013281.23105 0.0160402284476 976.0 258.546978496
2013135.23589 0.0160617114137 977.0 258.763118933
2012989.17602 0.0160832032308 978.0 258.958497117
2012843.05042 0.0161047045548 979.0 259.157675855
2012696.85118 0.0161262183136 980.0 259.383496367
2012550.57206 0.0161477457381 981.0 259.626787619
2012404.21476 0.0161692849746 982.0 259.832653948
2012257.7831 0.0161908344855 983.0 260.026519174
2012111.27422 0.0162123958609 984.0 260.232404068
2011964.6808 0.0162339716626 985.0 260.472242553
2011818.00069 0.0162555616516 986.0 260.701351703
2011671.23922 0.0162771632674 987.0 260.900117416
2011524.4004 0.0162987756301 988.0 261.095393662
2011377.48107 0.0163204007528 989.0 261.310574789
2011230.47703 0.0163420401164 990.0 261.55754034
2011083.3917 0.0163636919051 991.0 261.77186565
2010936.23385 0.0163853532471 992.0 261.966566145
2010789.00781 0.0164070239523 993.0 262.16602872
2010641.71164 0.0164287059101 994.0 262.392899538
2010494.34583 0.0164503991356 995.0 262.63478162
2010346.91902 0.016472100605 996.0 262.839446744
2010199.44166 0.0164938077716 997.0 263.032984018
2010051.91722 0.0165155212599 998.0 263.239249633
2009904.34473 0.0165372426052 999.0 263.479993547
2009756.72811 0.0165589705871 1000.0 263.70712993
2009609.07791 0.0165807018943 1001.0 263.905140457
2009461.40225 0.0166024351492 1002.0 264.100281949
2009313.70097 0.016624172006 1003.0 264.315795958
2009165.97197 0.0166459136945 1004.0 264.562352165
2009018.21957 0.0166676583644 1005.0 264.775691272
2008870.45193 0.016689403413 1006.0 264.969923647
2008722.67129 0.0167111491643 1007.0 265.169296612
2008574.87237 0.0167328981673 1008.0 265.396319294
2008427.05127 0.0167546512335 1009.0 265.637439869
2008279.21117 0.0167764063224 1010.0 265.841500498
2008131.35602 0.0167981620443 1011.0 266.034705909
2007983.48205 0.0168199202691 1012.0 266.240788325
2007835.58055 0.0168416838031 1013.0 266.481383115
2007687.64753 0.0168634527154 1014.0 266.707892512
2007539.68556 0.0168852249945 1015.0 266.905526372
2007391.69482 0.0169070005265 1016.0 267.10032957
2007243.66758 0.0169287821541 1017.0 267.315438642
2007095.5946 0.0169505722115 1018.0 267.561612931
2006947.47369 0.0169723698567 1019.0 267.774736738
2006799.30721 0.0169941733629 1020.0 267.968674417
2006651.09239 0.0170159837868 1021.0 268.167568646
2006502.81966 0.0170378043024 1022.0 268.39384855
2006354.48154 0.0170596362575 1023.0 268.634916139
2006206.07843 0.0170814780145 1024.0 268.838933655
2006057.61233 0.0171033284137 1025.0 269.031788188
2005909.07831 0.0171251894301 1026.0 269.237127087
2005760.46702 0.01714706393 1027.0 269.476538478
2005611.77437 0.0171689519835 1028.0 269.703761701
2005463.00351 0.017190851423 1029.0 269.901383401
2005314.15602 0.017212761803 1030.0 270.095649379
2005165.22612 0.0172346855665 1031.0 270.309636778
2005016.20688 0.0172566246571 1032.0 270.555438697
2004867.09881 0.0172785777655 1033.0 270.769105329
2004717.90783 0.0173005424945 1034.0 270.962927797
2004568.63543 0.0173225190725 1035.0 271.160977043
2004419.2767 0.0173445098517 1036.0 271.385656042
2004269.82897 0.0173665154027 1037.0 271.627298707
2004120.29791 0.0173885332005 1038.0 271.831842086
2003970.69151 0.0174105609909 1039.0 272.024351629
2003821.01128 0.0174325995955 1040.0 272.228426188
2003671.2542 0.0174546508642 1041.0 272.465669639
2003521.42224 0.0174767139533 1042.0 272.694809803
2003371.52475 0.0174987856845 1043.0 272.892810655
2003221.56977 0.0175208644883 1044.0 273.086382913
2003071.55761 0.0175429518147 1045.0 273.298586139
2002921.48648 0.0175650489108 1046.0 273.543867869
2002771.36124 0.0175871539214 1047.0 273.758864251
2002621.19178 0.0176092638335 1048.0 273.9527959
2002470.98321 0.017631378276 1049.0 274.149692391
2002320.73311 0.0176534993027 1050.0 274.371979258
2002170.43986 0.0176756275461 1051.0 274.614612596
2002020.1092 0.0176977606292 1052.0 274.820297935
2001869.74892 0.0177198963359 1053.0 275.012530215
2001719.35977 0.0177420356082 1054.0 275.214892464
2001568.93671 0.0177641807689 1055.0 275.449060831
2001418.47852 0.0177863317083 1056.0 275.681058653
2001267.99106 0.0178084858815 1057.0 275.879894446
2001117.47912 0.0178306421556 1058.0 276.07269398
2000966.93947 0.0178528025236 1059.0 276.282535875
2000816.3659 0.0178749690931 1060.0 276.52686125
2000665.75836 0.0178971409497 1061.0 276.744041575
2000515.12231 0.0179193157389 1062.0 276.938387642
2000364.45911 0.0179414935374 1063.0 277.133915319
2000213.76238 0.0179636770271 1064.0 277.353114602
2000063.02584 0.0179858677533 1065.0 277.596817084
1999912.25052 0.0180080641741 1066.0 277.804344204
1999761.44044 0.0180302645459 1067.0 277.996463105
1999610.59308 0.0180524701722 1068.0 278.196769364
1999459.6997 0.0180746840277 1069.0 278.427059598
1999308.7547 0.0180969068819 1070.0 278.662474768
1999157.75993 0.0181191368356 1071.0 278.862700711
1999006.71726 0.0181413730183 1072.0 279.054758788
1998855.62096 0.0181636176967 1073.0 279.261777231
1998704.46169 0.0181858735867 1074.0 279.504297616
1998553.23601 0.0182081404532 1075.0 279.72461919
1998401.94707 0.0182304162047 1076.0 279.919799203
1998250.59529 0.0182527008012 1077.0 280.113865037
1998099.17371 0.0182749969198 1078.0 280.329405074
1997947.67505 0.018297306392 1079.0 280.573799131
1997796.09981 0.0183196278149 1080.0 280.783985688
1997644.45316 0.0183419590264 1081.0 280.976283319
1997492.73523 0.0183643006151 1082.0 281.174324163
1997340.94005 0.0183866550711 1083.0 281.400063697
1997189.06455 0.0184090229064 1084.0 281.638960776
1997037.11397 0.0184314016453 1085.0 281.841264084
1996885.09538 0.0184537892888 1086.0 282.032753068
1996733.00913 0.0184761868994 1087.0 282.236629697
1996580.85143 0.0184985963949 1088.0 282.47410932
1996428.62381 0.0185210169344 1089.0 282.700522368
1996276.33516 0.0185434454377 1090.0 282.897101393
1996123.99282 0.0185658804963 1091.0 283.089765114
1995971.59643 0.01858832366 1092.0 283.301225617
1995819.14378 0.0186107762081 1093.0 283.545363261
1995666.63944 0.018633236325 1094.0 283.75917679
1995514.09306 0.0186557010502 1095.0 283.95210357
1995361.50955 0.0186781700315 1096.0 284.147832615
1995208.88628 0.0187006453378 1097.0 284.368505883
1995056.22133 0.0187231276716 1098.0 284.610343619
1994903.52016 0.0187456147334 1099.0 284.815574097
1994750.79049 0.0187681042932 1100.0 285.006836551
1994598.03303 0.0187905972376 1101.0 285.207424765
1994445.24247 0.0188130959566 1102.0 285.438814755
1994292.41689 0.0188356005411 1103.0 285.671606384
1994139.56154 0.0188581085693 1104.0 285.870324371
1993986.681 0.0188806188466 1105.0 286.061826764
1993833.77182 0.0189031333304 1106.0 286.268966207
1993680.82698 0.0189256543431 1107.0 286.511218294
1993527.84518 0.0189481812921 1108.0 286.729806653
1993374.83114 0.018970711905 1109.0 286.92399964
1993221.78613 0.0189932461026 1110.0 287.117561237
1993068.70355 0.0190157865552 1111.0 287.332836566
1992915.57611 0.0190383351202 1112.0 287.576359934
1992762.40383 0.0190608905356 1113.0 287.785558916
1992609.19068 0.0190834509206 1114.0 287.977135115
1992455.93494 0.0191060172392 1115.0 288.174487402
1992302.62822 0.0191285924366 1116.0 288.399370458
1992149.26445 0.0191511775851 1117.0 288.637640592
1991995.84535 0.0191737708605 1118.0 288.839440085
1991842.37409 0.0191963709502 1119.0 289.030229919
1991688.84672 0.0192189796418 1120.0 289.233012717
1991535.25468 0.0192415996759 1121.0 289.468858341
1991381.59444 0.0192642311127 1122.0 289.695681989
1991227.86978 0.0192868717228 1123.0 289.89199161
1991074.0832 0.0193095208307 1124.0 290.083747442
1990920.22965 0.0193321807026 1125.0 290.29350427
1990766.30215 0.0193548534133 1126.0 290.536638861
1990612.30074 0.0193775379103 1127.0 290.751066972
1990458.23131 0.0194002317596 1128.0 290.943720918
1990304.09591 0.0194229349124 1129.0 291.138115387
1990149.88953 0.0194456497378 1130.0 291.356288625
1989995.60805 0.0194683773165 1131.0 291.598290218
1989841.25538 0.0194911155809 1132.0 291.804342761
1989686.83894 0.0195138621788 1133.0 291.995102353
1989532.36017 0.0195366176788 1134.0 292.193725609
1989377.81472 0.0195593842659 1135.0 292.421652173
1989223.20169 0.019582161934 1136.0 292.656507862
1989068.5281 0.0196049479316 1137.0 292.856023279
1988913.80155 0.0196277403627 1138.0 293.046577744
1988759.02225 0.0196505404329 1139.0 293.250933861
1988604.18648 0.0196733499878 1140.0 293.489842326
1988449.29599 0.0196961680706 1141.0 293.711846765
1988294.35927 0.0197189917345 1142.0 293.906590806
1988139.3824 0.0197418199119 1143.0 294.098556683
1987984.36348 0.0197646544388 1144.0 294.310059594
1987829.299 0.0197874967421 1145.0 294.553096015
1987674.1923 0.0198103451787 1146.0 294.764827748
1987519.05145 0.0198331970966 1147.0 294.956497123
1987363.87948 0.0198560524904 1148.0 295.151416582
1987208.67199 0.0198789136951 1149.0 295.371386026
1987053.4255 0.019901781626 1150.0 295.611866629
1986898.14407 0.0199246542119 1151.0 295.815940066
1986742.83404 0.0199475294448 1152.0 296.006164283
1986587.49489 0.0199704083835 1153.0 296.205502587
1986432.12015 0.0199932935784 1154.0 296.435160718
1986276.70684 0.0200161853095 1155.0 296.667525046
1986121.25935 0.0200390812979 1156.0 296.865643284
1985965.78179 0.020061980371 1157.0 297.055985098
1985810.27038 0.0200848844753 1158.0 297.261127443
1985654.71763 0.020107796035 1159.0 297.501451733
1985499.12166 0.0201307146224 1160.0 297.720568926
1985343.48699 0.0201536379772 1161.0 297.914368637
1985187.81525 0.0201765658483 1162.0 298.106323399
1985032.10016 0.0201995008032 1163.0 298.318571454
1984876.33425 0.0202224448305 1164.0 298.561195027
1984720.51721 0.02024539682 1165.0 298.771465625
1984564.65334 0.0202683547591 1166.0 298.962519997
1984408.74182 0.0202913193081 1167.0 299.157514135
1984252.77477 0.0203142933335 1168.0 299.378082691
1984096.7458 0.0203372781377 1169.0 299.617583459
1983940.65635 0.0203602720253 1170.0 299.820654331
1983784.51026 0.020383273416 1171.0 300.010474547
1983628.30464 0.0204062837537 1172.0 300.209863367
1983472.03114 0.0204293058348 1173.0 300.43987766
1983315.68549 0.0204523400779 1174.0 300.671094821
1983159.2711 0.0204753843284 1175.0 300.868547644
1983002.7913 0.0204984375292 1176.0 301.058583233
1982846.24195 0.020521501657 1177.0 301.26364824
1982689.61568 0.0205445790424 1178.0 301.503759184
1982532.91134 0.0205676690795 1179.0 301.722177375
1982376.13453 0.0205907692849 1180.0 301.915532753
1982219.28838 0.0206138791193 1181.0 302.107171041
1982062.36862 0.0206370007636 1182.0 302.319117043
1981905.3703 0.0206601357276 1183.0 302.561333485
1981748.29614 0.020683282351 1184.0 302.771252276
1981591.15395 0.0207064379955 1185.0 302.961972287
1981433.94687 0.0207296026128 1186.0 303.156537145
1981276.67139 0.0207527783028 1187.0 303.3764895
1981119.3258 0.0207759655725 1188.0 303.615763362
1980961.91656 0.0207991618882 1189.0 303.818715405
1980804.45283 0.0208223647618 1190.0 304.008204942
1980646.93726 0.0208455746958 1191.0 304.206954976
1980489.36704 0.0208687935885 1192.0 304.435957416
1980331.74327 0.020892021023 1193.0 304.66748095
1980174.07469 0.0209152540085 1194.0 304.864938758
1980016.36992 0.0209384906256 1195.0 305.054545927
1979858.62982 0.0209617320519 1196.0 305.258672278
1979700.85144 0.0209849799831 1197.0 305.497685852
1979543.03738 0.0210082333134 1198.0 305.716891848
1979385.19663 0.0210314890809 1199.0 305.910271494
1979227.33529 0.0210547462863 1200.0 306.101287266
1979069.45134 0.0210780068099 1201.0 306.311911231
1978911.54106 0.0211012721102 1202.0 306.553734956
1978753.60748 0.0211245406207 1203.0 306.764377234
1978595.65823 0.021147809794 1204.0 306.955040726
1978437.69578 0.0211710797136 1205.0 307.148697995
1978279.71494 0.021194352834 1206.0 307.366868758
1978121.71124 0.0212176302815 1207.0 307.606583388
1977963.68756 0.0212409102188 1208.0 307.810295499
1977805.64925 0.021264190777 1209.0 307.999552124
1977647.5948 0.0212874731122 1210.0 308.197024302
1977489.51639 0.0213107600125 1211.0 308.423717109
1977331.40923 0.0213340521525 1212.0 308.656827301
1977173.27593 0.0213573475755 1213.0 308.854983507
1977015.11928 0.0213806452204 1214.0 309.044090359
1976856.93429 0.0214039471427 1215.0 309.246489635
1976698.71163 0.021427256134 1216.0 309.48260484
1976540.44714 0.02145057228 1217.0 309.704835419
1976382.14344 0.0214738936041 1218.0 309.898757559
1976223.80111 0.0214972198496 1219.0 310.088919445
1976065.41278 0.0215205536765 1220.0 310.297294875
1975906.9691 0.0215438975239 1221.0 310.538464388
1975748.46753 0.0215672507875 1222.0 310.750954318
1975589.9111 0.0215906115562 1223.0 310.941914152
1975431.29871 0.0216139802967 1224.0 311.134282978
1975272.6219 0.0216373599349 1225.0 311.349618615
1975113.87268 0.0216607522498 1226.0 311.590084151
1974955.05092 0.0216841559189 1227.0 311.795509923
1974796.16026 0.0217075691793 1228.0 311.984730567
1974637.1986 0.021730993081 1229.0 312.180404328
1974478.15765 0.021754430463 1230.0 312.403617661
1974319.03204 0.0217778821977 1231.0 312.639161216
1974159.82459 0.0218013462734 1232.0 312.83880868
1974000.53978 0.0218248211306 1233.0 313.02746533
1973841.17528 0.0218483082055 1234.0 313.227486802
1973681.72428 0.0218718099065 1235.0 313.459427806
1973522.18504 0.0218953260369 1236.0 313.686032459
1973362.5636 0.0219188539911 1237.0 313.881138479
1973202.86542 0.0219423924679 1238.0 314.070358572
1973043.08858 0.0219659431 1239.0 314.275713827
1972883.22867 0.0219895076208 1240.0 314.515428462
1972723.28793 0.0220130847701 1241.0 314.731014526
1972563.27521 0.0220366715827 1242.0 314.922769382
1972403.19639 0.0220602671564 1243.0 315.113632323
1972243.04987 0.0220838732472 1244.0 315.325249219
1972082.83357 0.0221074908701 1245.0 315.566165068
1971922.55292 0.0221311179426 1246.0 315.774405236
1971762.21795 0.0221547515436 1247.0 315.963954216
1971601.83354 0.0221783914129 1248.0 316.157490737
1971441.39747 0.0222020394751 1249.0 316.376237575
1971280.90895 0.0222256961486 1250.0 316.614383963
1971120.37485 0.0222493589105 1251.0 316.816484702
1970959.80435 0.0222730253193 1252.0 317.00492904
1970799.19972 0.0222966959566 1253.0 317.202120296
1970638.55717 0.0223203729278 1254.0 317.428804877
1970477.87622 0.0223440561733 1255.0 317.660394594
1970317.16375 0.0223677430607 1256.0 317.857516221
1970156.42662 0.0223914319152 1257.0 318.045913538
1969995.66378 0.0224151241755 1258.0 318.247690016
1969834.86977 0.0224388220049 1259.0 318.48305934
1969674.04423 0.0224625248961 1260.0 318.704487777
1969513.1934 0.0224862303189 1261.0 318.897747
1969352.32133 0.0225099374726 1262.0 319.087111341
1969191.42387 0.0225336485018 1263.0 319.294351685
1969030.49456 0.0225573654173 1264.0 319.534567975
1968869.53345 0.0225810872574 1265.0 319.74693704
1968708.54601 0.0226048117343 1266.0 319.93740874
1968547.53353 0.0226285389117 1267.0 320.128710287
1968386.48951 0.0226522714074 1268.0 320.342240188
1968225.40739 0.0226760108624 1269.0 320.582250439
1968064.28805 0.0226997558732 1270.0 320.787999715
1967903.13617 0.0227235045016 1271.0 320.976718131
1967741.95064 0.0227472575965 1272.0 321.170882666
1967580.72354 0.0227710179844 1273.0 321.391473959
1967419.44907 0.0227947867534 1274.0 321.627696714
1967258.1293 0.0228185621066 1275.0 321.827917818
1967096.76816 0.0228423425342 1276.0 322.015877252
1966935.3626 0.0228661295395 1277.0 322.213785433
1966773.90427 0.0228899258889 1278.0 322.44215559
1966612.38892 0.0229137319845 1279.0 322.67117543
1966450.81997 0.0229375457158 1280.0 322.866918768
1966289.20067 0.0229613660513 1281.0 323.055073926
1966127.52662 0.0229851949777 1282.0 323.257560443
1965965.7899 0.0230090349497 1283.0 323.494372661
1965803.98846 0.023032885607 1284.0 323.712939205
1965642.1271 0.0230567446288 1285.0 323.905215986
1965480.20841 0.0230806114768 1286.0 324.094482012
1965318.2273 0.023104488422 1287.0 324.302334721
1965156.17713 0.0231283773816 1288.0 324.5423398
1964994.05846 0.0231522772094 1289.0 324.753225717
1964831.87744 0.0231761854825 1290.0 324.943009398
1964669.6362 0.0232001021269 1291.0 325.134261668
1964507.32962 0.0232240294768 1292.0 325.348220805
1964344.95322 0.0232479687228 1293.0 325.587544631
1964182.51045 0.0232719179619 1294.0 325.792258595
1964020.00876 0.0232958747848 1295.0 325.980485854
1963857.45 0.0233198395363 1296.0 326.174559594
1963694.8297 0.0233438144224 1297.0 326.395317191
1963532.14598 0.0233677998164 1298.0 326.630715118
1963369.40509 0.0233917931998 1299.0 326.830248141
1963206.61521 0.0234157923652 1300.0 327.017819498
1963043.77766 0.0234397980989 1301.0 327.21550926
1962880.88857 0.0234638124091 1302.0 327.443708905
1962717.9483 0.0234878349346 1303.0 327.672086012
1962554.96481 0.0235118628382 1304.0 327.867391944
1962391.9457 0.0235358943987 1305.0 328.055172094
1962228.89076 0.0235599309416 1306.0 328.257231153
1962065.796 0.0235839743103 1307.0 328.493468234
1961902.66298 0.023608023603 1308.0 328.711878145
1961739.49978 0.0236320760134 1309.0 328.903875388
1961576.31194 0.0236561305623 1310.0 329.092693301
1961413.09683 0.0236801891603 1311.0 329.299833053
1961249.84977 0.0237042534878 1312.0 329.53933552
1961086.57265 0.0237283222642 1313.0 329.750299335
1960923.2726 0.0237523929715 1314.0 329.9398721
1960759.95229 0.0237764654827 1315.0 330.130520939
1960596.60653 0.0238005422034 1316.0 330.343410359
1960433.23004 0.0238246245641 1317.0 330.582539002
1960269.82487 0.0238487109912 1318.0 330.787545126
1960106.39674 0.0238727993981 1319.0 330.97554433
1959942.94542 0.0238968904843 1320.0 331.168781228
1959779.46368 0.0239209869656 1321.0 331.388046496
1959615.94617 0.023945089898 1322.0 331.623848306
1959452.39522 0.0239691974739 1323.0 331.823799419
1959288.81509 0.0239933081171 1324.0 332.011043287
1959125.20295 0.0240174232571 1325.0 332.207589022
1958961.55029 0.0240415457078 1326.0 332.433813418
1958797.85231 0.0240656760456 1327.0 332.663469996
1958634.11175 0.0240898122986 1328.0 332.859235
1958470.33142 0.0241139534479 1329.0 333.046509448
1958306.50639 0.0241381015188 1330.0 333.247048053
1958142.62763 0.0241622592148 1331.0 333.48077221
1957978.69141 0.0241864265623 1332.0 333.701598431
1957814.70102 0.0242106015022 1333.0 333.894014001
1957650.65791 0.0242347835833 1334.0 334.082072823
1957486.55563 0.024258975256 1335.0 334.287251191
1957322.38545 0.0242831789081 1336.0 334.525826055
1957158.14527 0.0243073939657 1337.0 334.738416539
1956993.83902 0.0243316183456 1338.0 334.928288295
1956829.46711 0.0243558521185 1339.0 335.117853217
1956665.02237 0.0243800979454 1340.0 335.328280751
1956500.49728 0.0244043576876 1341.0 335.567444307
1956335.89196 0.0244286301262 1342.0 335.774096467
1956171.21124 0.0244529131822 1343.0 335.962199851
1956006.45504 0.0244772073415 1344.0 336.153960461
1955841.61645 0.0245015152229 1345.0 336.370208837
1955676.6902 0.024525837956 1346.0 336.607261178
1955511.67922 0.0245501736438 1347.0 336.808800137
1955346.58963 0.0245745202184 1348.0 336.995881049
1955181.42153 0.0245988784417 1349.0 337.190494648
1955016.16926 0.0246232506457 1350.0 337.413097758
1954850.83067 0.0246476370793 1351.0 337.645459791
1954685.41188 0.0246720351962 1352.0 337.842679725
1954519.92047 0.0246964429836 1353.0 338.029454966
1954354.35707 0.0247208613855 1354.0 338.227546364
1954188.71788 0.0247452922972 1355.0 338.45700052
1954023.00412 0.0247697350778 1356.0 338.682212466
1953857.22476 0.0247941866986 1357.0 338.875878072
1953691.38822 0.0248186453581 1358.0 339.063035639
1953525.49534 0.0248431122091 1359.0 339.265196929
1953359.54384 0.0248675887211 1360.0 339.501785001
1953193.53756 0.0248920735381 1361.0 339.717681406
1953027.48697 0.0249165634682 1362.0 339.908529056
1952861.39992 0.0249410571856 1363.0 340.096728313
1952695.27631 0.0249655561783 1364.0 340.30351867
1952529.11433 0.0249900616157 1365.0 340.542203144
1952362.91895 0.0250145717045 1366.0 340.752019279
1952196.70034 0.0250390834542 1367.0 340.940757916
1952030.46415 0.0250635962681 1368.0 341.130629667
1951864.20818 0.025088112071 1369.0 341.342575209
1951697.93002 0.0251126318403 1370.0 341.580876659
1951531.63451 0.0251371535868 1371.0 341.785369729
1951365.33013 0.025161674796 1372.0 341.97268155
1951199.01929 0.0251861957262 1373.0 342.164828044
1951032.69718 0.0252107187225 1374.0 342.3824218
1950866.36042 0.0252352445857 1375.0 342.617969222
1950700.01316 0.0252597712738 1376.0 342.817867806
1950533.6615 0.0252842968907 1377.0 343.004408785
1950367.30444 0.0253088225337 1378.0 343.199403664
1950200.93478 0.0253333508422 1379.0 343.423105715
1950034.54847 0.0253578823806 1380.0 343.653634852
1949868.14889 0.0253824151203 1381.0 343.849640358
1949701.73978 0.0254069478236 1382.0 344.036040633
1949535.31708 0.0254314823123 1383.0 344.234428855
1949368.87196 0.0254560213314 1384.0 344.464666676
1949202.40026 0.0254805651179 1385.0 344.688018539
1949035.90492 0.0255051116827 1386.0 344.880806364
1948869.38759 0.0255296604228 1387.0 345.06767052
1948702.84189 0.0255542137146 1388.0 345.269968278
1948536.25825 0.0255787742014 1389.0 345.506470588
1948369.63314 0.0256033417055 1390.0 345.721256775
1948202.96939 0.0256279142898 1391.0 345.911477248
1948036.26705 0.0256524919254 1392.0 346.099384513
1947869.51821 0.0256770773485 1393.0 346.306079183
1947702.71355 0.0257016728997 1394.0 346.544348236
1947535.85078 0.0257262779171 1395.0 346.753478028
1947368.93305 0.0257508905203 1396.0 346.941757158
1947201.95929 0.0257755111637 1397.0 347.13126153
1947034.92099 0.0258001427295 1398.0 347.342811674
1946867.81 0.0258247870636 1399.0 347.580658418
1946700.62593 0.025849442961 1400.0 347.784803146
1946533.37266 0.0258741085834 1401.0 347.971743216
1946366.04867 0.0258987847408 1402.0 348.163373551
1946198.64583 0.0259234742286 1403.0 348.380209006
1946031.15811 0.0259481782132 1404.0 348.615540047
1945863.58772 0.0259728948939 1405.0 348.815345719
1945695.93971 0.0259976224408 1406.0 349.001525767
1945528.21287 0.0260223618671 1407.0 349.19578582
1945360.40046 0.0260471156519 1408.0 349.418307918
1945192.49948 0.0260718841323 1409.0 349.649123889
1945024.51524 0.0260966648961 1410.0 349.845212401
1944856.45433 0.0261214561094 1411.0 350.031188595
1944688.31644 0.0261462588667 1412.0 350.228557051
1944520.09692 0.0261710751704 1413.0 350.457138991
1944351.79628 0.026195904483 1414.0 350.681533067
1944183.42287 0.0262207438719 1415.0 350.874503201
1944014.98467 0.0262455915833 1416.0 351.060809138
1943846.48216 0.0262704487839 1417.0 351.261739645
1943677.91275 0.0262953169894 1418.0 351.496727048
1943509.27995 0.0263201949151 1419.0 351.712883504
1943340.59421 0.0263450793609 1420.0 351.903311746
1943171.8637 0.0263699688775 1421.0 352.090458692
1943003.08875 0.0263948648367 1422.0 352.295379903
1942834.26774 0.0264197684143 1423.0 352.532876175
1942665.40576 0.0264446778579 1424.0 352.743284309
1942496.5135 0.0264695900625 1425.0 352.931725524
1942327.59759 0.0264945041741 1426.0 353.120202601
1942158.65667 0.0265194219498 1427.0 353.329518271
1941989.68866 0.0265443444124 1428.0 353.567299064
1941820.69861 0.0265692696323 1429.0 353.772838119
1941651.69566 0.0265941949184 1430.0 353.959826113
1941482.68345 0.0266191202128 1431.0 354.150100452
1941313.65792 0.0266440477363 1432.0 354.364189583
1941144.61574 0.0266689784413 1433.0 354.600396071
1940975.56096 0.0266939103894 1434.0 354.801641409
1940806.50036 0.0267188414642 1435.0 354.98768939
1940637.43408 0.0267437724319 1436.0 355.180206254
1940468.3554 0.0267687058972 1437.0 355.399423332
1940299.25986 0.0267936426927 1438.0 355.63227937
1940130.15049 0.0268185809102 1439.0 355.829784768
1939961.03173 0.0268435190297 1440.0 356.015385732
1939791.90062 0.0268684585388 1441.0 356.210568634
1939622.74849 0.0268934022512 1442.0 356.435243963
1939453.57039 0.0269183507681 1443.0 356.663054604
1939284.36882 0.0269433021947 1444.0 356.857353149
1939115.14625 0.0269682555658 1445.0 357.04298021
1938945.89738 0.0269932129371 1446.0 357.241231014
1938776.61246 0.0270181771374 1447.0 357.471671179
1938607.28685 0.0270431484269 1448.0 357.69282125
1938437.92298 0.0270681249046 1449.0 357.884426103
1938268.52186 0.0270931061013 1450.0 358.070532765
1938099.07657 0.0271180944767 1451.0 358.272231813
1937929.57723 0.0271430926909 1452.0 358.507898629
1937760.02014 0.027168100575 1453.0 358.721672961
1937590.4081 0.0271931162064 1454.0 358.911077992
1937420.74118 0.0272181395384 1455.0 359.098098391
1937251.01162 0.0272431732606 1456.0 359.303604636
1937081.21022 0.0272682196879 1457.0 359.54085151
1936911.33493 0.0272932781434 1458.0 359.749697854
1936741.38935 0.0273183466571 1459.0 359.93737819
1936571.37317 0.027343425504 1460.0 360.1257273
1936401.27863 0.02736851741 1461.0 360.335378487
1936231.09815 0.0273936241656 1462.0 360.572545313
1936060.832 0.0274187445057 1463.0 360.776978784
1935890.48509 0.0274438763668 1464.0 360.963391271
1935720.0574 0.0274690202174 1465.0 361.153465094
1935549.54215 0.0274941786116 1466.0 361.36757798
1935378.93429 0.0275193526444 1467.0 361.603077385
1935208.23705 0.0275445403951 1468.0 361.803593582
1935037.45719 0.0275697396628 1469.0 361.989177193
1934866.59564 0.0275949509842 1470.0 362.181352926
1934695.64742 0.0276201765645 1471.0 362.400223571
1934524.61073 0.0276454166901 1472.0 362.632539425
1934353.49214 0.0276706687848 1473.0 362.829615281
1934182.30042 0.0276959305308 1474.0 363.014791461
1934011.03773 0.027721202487 1475.0 363.209427666
1933839.7012 0.0277464864415 1476.0 363.43333179
1933668.29229 0.0277717818976 1477.0 363.661017812
1933496.82054 0.0277970857686 1478.0 363.855112318
1933325.29606 0.0278223957821 1479.0 364.040285297
1933153.72161 0.0278477126221 1480.0 364.237722062
1932982.09574 0.0278730377631 1481.0 364.466915491
1932810.42215 0.0278983701339 1482.0 364.688593893
1932638.71184 0.027923706451 1483.0 364.880148729
1932466.97463 0.027949044792 1484.0 365.065705794
1932295.21229 0.0279743862002 1485.0 365.266264912
1932123.42322 0.0279997320651 1486.0 365.500896889
1931951.6115 0.0280250810559 1487.0 365.715344248
1931779.78754 0.0280504300691 1488.0 365.904784321
1931607.95882 0.0280757778529 1489.0 366.091096069
1931436.12441 0.0281011260288 1490.0 366.295081227
1931264.28099 0.0281264760944 1491.0 366.531551048
1931092.43151 0.0281518267071 1492.0 366.741340925
1930920.58418 0.028177175208 1493.0 366.92907485
1930748.74289 0.0282025211848 1494.0 367.116495416
1930576.90324 0.028227866889 1495.0 367.324192404
1930405.0597 0.0282532139503 1496.0 367.561072963
1930233.21363 0.028278561087 1497.0 367.766651658
1930061.37066 0.0283039061554 1498.0 367.953072171
1929889.53111 0.028329249554 1499.0 368.141939443
1929717.68751 0.0283545940371 1500.0 368.353616407
"""View results for benchmark problem 3
To plot the solid fraction from directory "data_xxx"
$ python view.py --folder data_xxx solid_fraction
To plot the free energy
$ python view.py --folder data_xxx free_energy
To plot the tip position
$ python view.py --folder data_xxx tip_position
To view the latest time step
$ python view.py --folder data_xxx view_step --latest
To view a particular time step
$ python view.py --folder data_xxx view_step --step 500
To save the data to CSV files for upload to the website
$ python view.py --folder data_xxx save_data
"""
# pylint: disable=no-value-for-parameter
import glob
import os
from scipy.interpolate import interp1d
from scipy.optimize import brentq
import numpy as np
import click
from fipy import Viewer, CellVariable, numerix
from toolz.curried import curry, pipe, do, assoc, juxt, get
import matplotlib.pyplot as plt
import progressbar
import pandas
from main import get_mesh, map_, sequence, get_phase, w_func, get_coupling
@click.group()
@click.option('--folder',
default='data',
help="the name of the data directory to parse")
@click.pass_context
def cli(ctx, folder):
"""Use a group function to allow subcommands.
"""
ctx.params['folder'] = folder
def get_filename(step, latest, folder):
"""Get the filename given the step
"""
if latest:
return sorted(glob.glob(os.path.join(folder, 'data*.npz')))[-1]
return os.path.join(folder, 'data{0}.npz'.format(str(step).zfill(7)))
@curry
def get_var(data, name):
"""Make a variale
"""
return CellVariable(
get_mesh(data['params'].item()),
value=data[name],
name=name
)
def get_vars(ctx, step, latest):
return pipe(
get_filename(step, latest, ctx.parent.params['folder']),
np.load,
lambda x: map_(get_var(x), ['heat', 'phase'])
)
@curry
def save_vars(save, vars):
if save:
pipe(
vars,
get(1),
lambda x: dict(phase=np.array(x),
x=np.array(x.mesh.cellCenters[0]),
y=np.array(x.mesh.cellCenters[1])),
pandas.DataFrame,
lambda x: x.to_csv('space.csv', index=False)
)
# def debug(x):
# import ipdb; ipdb.set_trace()
# return x
@curry
def save_contour(save, vars):
def reshape(arr, nx):
return np.array(arr).reshape((nx, nx))
if save:
pipe(
vars,
get(1),
lambda x: dict(phase=reshape(x, x.mesh.nx),
x=reshape(x.mesh.cellCenters[0], x.mesh.nx),
y=reshape(x.mesh.cellCenters[1], x.mesh.nx)),
lambda x: plt.contour(x['x'], x['y'], x['phase'], (0.0,)),
lambda x: x.collections[0].get_paths()[0].vertices,
lambda x: dict(x=x[:, 0], y=x[:, 1]),
pandas.DataFrame,
lambda x: x.to_csv('contour.csv', index=False)
)
@cli.command()
@click.option('--step', default=0, help='step to view')
@click.option('--latest/--no-latest',
default=False,
help='view the latest result available')
@click.option('--save/--no-save',
default=False,
help='save the spatial data to a CSV')
@click.pass_context
def view_step(ctx, step, latest, save):
"""Use Matplotlib to view the phase and heat variables
"""
return pipe(
get_vars(ctx, step, latest),
do(save_vars(save)),
do(save_contour(save)),
map_(lambda x: Viewer(x, title=x.name).plot()),
do(lambda _: click.pause())
)
def plot2d(arr):
"""Plot a 2D graph
"""
plt.plot(arr[:, 0], arr[:, 1])
plt.show()
@curry
def save2d(filename, column_names, data):
pandas.DataFrame(
dict(zip(column_names, data.transpose()))
).to_csv(filename, index=False)
click.echo('CSV file written to {0}'.format(filename))
def pbar(items):
pbar_ = progressbar.ProgressBar(
widgets=[progressbar.Percentage(),
' ',
progressbar.Bar(marker=progressbar.RotatingMarker()),
' ',
progressbar.ETA()],
maxval=len(items)).start()
for counter, item in enumerate(items):
yield item
pbar_.update(counter + 1)
pbar_.finish()
def read_and_calc(f_calc):
"""Read in the data and return a result
"""
return sequence(
lambda x: x.parent.params['folder'],
lambda x: os.path.join(x, 'data*.npz'),
glob.glob,
sorted,
pbar,
map_(
sequence(
np.load,
f_calc
)
),
np.array
)
def read_and_plot(f_calc):
"""Read in a file and plot using f_calc
"""
return sequence(
read_and_calc(juxt(get('elapsed_time'), f_calc)),
plot2d
)
def read_and_save(filename, column_names, f_calc):
"""Read in a file and save data to CSV
"""
return sequence(
read_and_calc(f_calc),
save2d(filename, column_names)
)
def calc_solid_fraction(ctx):
return np.sum((1 + ctx['phase']) / 2) / ctx['params'].item()['nx']**2
@cli.command()
@click.pass_context
def solid_fraction(ctx):
"""Command to plot the solid fraction
"""
read_and_plot(calc_solid_fraction)(ctx)
calc_tip_position = sequence(
lambda x: dict(dx=x['params'].item()['dx'],
phase=x['phase'],
nx=x['params'].item()['nx']),
lambda x: dict(xx=x['dx'] * (0.5 + np.arange(x['nx'])),
yy=x['phase'][:x['nx']]),
lambda x: brentq(interp1d(x['xx'], x['yy']), x['xx'][0], x['xx'][-1])
)
def f_chem(phase, heat, params):
return -phase**2 / 2 \
+ phase**4 / 4 \
+ get_coupling(params) * heat * phase * \
(1 - 2 * phase**2 / 3 + phase**4 / 5)
def w_func_(phase, params):
return w_func(
numerix.arctan2(phase.grad[1], phase.grad[0]),
params
)
def grad_mag(phase):
return phase.grad[1]**2 + phase.grad[0]**2
def free_energy_func(phase, heat, params):
return np.array(
(
0.5 * w_func_(phase, params) * grad_mag(phase)
+ f_chem(phase, heat, params)
) * params['dx']**2
).sum()
calc_free_energy = sequence(
lambda x: assoc(x, 'params', x['params'].item()),
lambda x: assoc(x, 'mesh', get_mesh(x['params'])),
lambda x: assoc(x,
'phase',
get_phase(x['mesh'], x['params'], value=x['phase'])),
lambda x: assoc(x,
'heat',
CellVariable(mesh=x['mesh'], value=x['heat'])),
lambda x: free_energy_func(x['phase'], x['heat'], x['params'])
)
@cli.command()
@click.pass_context
def tip_position(ctx):
"""Command to plot the tip position versus time
"""
read_and_plot(calc_tip_position)(ctx)
@cli.command()
@click.pass_context
def free_energy(ctx):
"""Command to calculate the free energy
"""
read_and_plot(calc_free_energy)(ctx)
@cli.command()
@click.pass_context
def save_time_data(ctx):
read_and_save(
'time.csv',
['time', 'solid_fraction', 'tip_position', 'free_energy'],
juxt(get('elapsed_time'),
calc_solid_fraction,
calc_tip_position,
calc_free_energy)
)(ctx)
if __name__ == '__main__':
cli()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment