From fe65df4faea0140732afef00a0219e7f0b8d2a9b Mon Sep 17 00:00:00 2001 From: Panos Mavrogiorgos Date: Tue, 9 Apr 2024 09:09:15 +0300 Subject: [PATCH 1/5] schism: Add `parse_staout()` --- pyposeidon/schism.py | 12 + tests/data/staout_1 | 1728 ++++++++++++++++++++++++++++++++++++++++++ tests/test_schism.py | 22 + 3 files changed, 1762 insertions(+) create mode 100644 tests/data/staout_1 diff --git a/pyposeidon/schism.py b/pyposeidon/schism.py index 07800453..9f871f94 100644 --- a/pyposeidon/schism.py +++ b/pyposeidon/schism.py @@ -1970,3 +1970,15 @@ def parse_mirror_out(path: os.PathLike[str] | str) -> pd.DataFrame: index = index[: len(etatot)] df = pd.DataFrame({"etatot": etatot, "etaavg": etaavg}, index=index).astype(float) return df + + +def parse_staout(path: os.PathLike[str] | str, start: pd.Timestamp = pd.NaT): + array = np.loadtxt(path) + df = pd.DataFrame(array) + zero_col = df.pop(0) + index = pd.to_timedelta(np.arange(zero_col[0], zero_col[0] * len(df) + 1, zero_col[0]), unit="s") + if start is not pd.NaT: + index = start + index + index = index.rename("time") + df = df.set_index(index) + return df diff --git a/tests/data/staout_1 b/tests/data/staout_1 new file mode 100644 index 00000000..5d3fd828 --- /dev/null +++ b/tests/data/staout_1 @@ -0,0 +1,1728 @@ + 0.150000E+03 0.542010E-04 + 0.300000E+03 0.130754E-03 + 0.450000E+03 0.221322E-03 + 0.600000E+03 0.319807E-03 + 0.750000E+03 0.422916E-03 + 0.900000E+03 0.529871E-03 + 0.105000E+04 0.641802E-03 + 0.120000E+04 0.761135E-03 + 0.135000E+04 0.891087E-03 + 0.150000E+04 0.103528E-02 + 0.165000E+04 0.119747E-02 + 0.180000E+04 0.138137E-02 + 0.195000E+04 0.159055E-02 + 0.210000E+04 0.182833E-02 + 0.225000E+04 0.209778E-02 + 0.240000E+04 0.240171E-02 + 0.255000E+04 0.274260E-02 + 0.270000E+04 0.312267E-02 + 0.285000E+04 0.356782E-02 + 0.300000E+04 0.401627E-02 + 0.315000E+04 0.455706E-02 + 0.330000E+04 0.511109E-02 + 0.345000E+04 0.568913E-02 + 0.360000E+04 0.628682E-02 + 0.375000E+04 0.699487E-02 + 0.390000E+04 0.771713E-02 + 0.405000E+04 0.846157E-02 + 0.420000E+04 0.922349E-02 + 0.435000E+04 0.100951E-01 + 0.450000E+04 0.109719E-01 + 0.465000E+04 0.118685E-01 + 0.480000E+04 0.127851E-01 + 0.495000E+04 0.137139E-01 + 0.510000E+04 0.147393E-01 + 0.525000E+04 0.157208E-01 + 0.540000E+04 0.167754E-01 + 0.555000E+04 0.178232E-01 + 0.570000E+04 0.188472E-01 + 0.585000E+04 0.199324E-01 + 0.600000E+04 0.210024E-01 + 0.615000E+04 0.220435E-01 + 0.630000E+04 0.231004E-01 + 0.645000E+04 0.241635E-01 + 0.660000E+04 0.252257E-01 + 0.675000E+04 0.262812E-01 + 0.690000E+04 0.273259E-01 + 0.705000E+04 0.283562E-01 + 0.720000E+04 0.293692E-01 + 0.735000E+04 0.303610E-01 + 0.750000E+04 0.313289E-01 + 0.765000E+04 0.322708E-01 + 0.780000E+04 0.331849E-01 + 0.795000E+04 0.340695E-01 + 0.810000E+04 0.349234E-01 + 0.825000E+04 0.357455E-01 + 0.840000E+04 0.365348E-01 + 0.855000E+04 0.372908E-01 + 0.870000E+04 0.380129E-01 + 0.885000E+04 0.387009E-01 + 0.900000E+04 0.393549E-01 + 0.915000E+04 0.399748E-01 + 0.930000E+04 0.405611E-01 + 0.945000E+04 0.411142E-01 + 0.960000E+04 0.416349E-01 + 0.975000E+04 0.421240E-01 + 0.990000E+04 0.425824E-01 + 0.100500E+05 0.430114E-01 + 0.102000E+05 0.434121E-01 + 0.103500E+05 0.437859E-01 + 0.105000E+05 0.441341E-01 + 0.106500E+05 0.444584E-01 + 0.108000E+05 0.447601E-01 + 0.109500E+05 0.450415E-01 + 0.111000E+05 0.453036E-01 + 0.112500E+05 0.455474E-01 + 0.114000E+05 0.457743E-01 + 0.115500E+05 0.459858E-01 + 0.117000E+05 0.461832E-01 + 0.118500E+05 0.463682E-01 + 0.120000E+05 0.465421E-01 + 0.121500E+05 0.467065E-01 + 0.123000E+05 0.468627E-01 + 0.124500E+05 0.470120E-01 + 0.126000E+05 0.471557E-01 + 0.127500E+05 0.472949E-01 + 0.129000E+05 0.474306E-01 + 0.130500E+05 0.475638E-01 + 0.132000E+05 0.476954E-01 + 0.133500E+05 0.478262E-01 + 0.135000E+05 0.479568E-01 + 0.136500E+05 0.480880E-01 + 0.138000E+05 0.482202E-01 + 0.139500E+05 0.483539E-01 + 0.141000E+05 0.484894E-01 + 0.142500E+05 0.486271E-01 + 0.144000E+05 0.487673E-01 + 0.145500E+05 0.489100E-01 + 0.147000E+05 0.490548E-01 + 0.148500E+05 0.492014E-01 + 0.150000E+05 0.493493E-01 + 0.151500E+05 0.494984E-01 + 0.153000E+05 0.496484E-01 + 0.154500E+05 0.497993E-01 + 0.156000E+05 0.499511E-01 + 0.157500E+05 0.501037E-01 + 0.159000E+05 0.502571E-01 + 0.160500E+05 0.504114E-01 + 0.162000E+05 0.505666E-01 + 0.163500E+05 0.507226E-01 + 0.165000E+05 0.508795E-01 + 0.166500E+05 0.510373E-01 + 0.168000E+05 0.511958E-01 + 0.169500E+05 0.513549E-01 + 0.171000E+05 0.515147E-01 + 0.172500E+05 0.516750E-01 + 0.174000E+05 0.518357E-01 + 0.175500E+05 0.519966E-01 + 0.177000E+05 0.521576E-01 + 0.178500E+05 0.523186E-01 + 0.180000E+05 0.524794E-01 + 0.181500E+05 0.526393E-01 + 0.183000E+05 0.527989E-01 + 0.184500E+05 0.529589E-01 + 0.186000E+05 0.531201E-01 + 0.187500E+05 0.532827E-01 + 0.189000E+05 0.534473E-01 + 0.190500E+05 0.536140E-01 + 0.192000E+05 0.537828E-01 + 0.193500E+05 0.539539E-01 + 0.195000E+05 0.541273E-01 + 0.196500E+05 0.543028E-01 + 0.198000E+05 0.544803E-01 + 0.199500E+05 0.546597E-01 + 0.201000E+05 0.548408E-01 + 0.202500E+05 0.550236E-01 + 0.204000E+05 0.552081E-01 + 0.205500E+05 0.553944E-01 + 0.207000E+05 0.555824E-01 + 0.208500E+05 0.557719E-01 + 0.210000E+05 0.559626E-01 + 0.211500E+05 0.561541E-01 + 0.213000E+05 0.563459E-01 + 0.214500E+05 0.565374E-01 + 0.216000E+05 0.567279E-01 + 0.217500E+05 0.569186E-01 + 0.219000E+05 0.571091E-01 + 0.220500E+05 0.572989E-01 + 0.222000E+05 0.574877E-01 + 0.223500E+05 0.576751E-01 + 0.225000E+05 0.578604E-01 + 0.226500E+05 0.580434E-01 + 0.228000E+05 0.582235E-01 + 0.229500E+05 0.584002E-01 + 0.231000E+05 0.585732E-01 + 0.232500E+05 0.587421E-01 + 0.234000E+05 0.589065E-01 + 0.235500E+05 0.590661E-01 + 0.237000E+05 0.592207E-01 + 0.238500E+05 0.593700E-01 + 0.240000E+05 0.595136E-01 + 0.241500E+05 0.596511E-01 + 0.243000E+05 0.597825E-01 + 0.244500E+05 0.599074E-01 + 0.246000E+05 0.600260E-01 + 0.247500E+05 0.601380E-01 + 0.249000E+05 0.602434E-01 + 0.250500E+05 0.603420E-01 + 0.252000E+05 0.604334E-01 + 0.253500E+05 0.605157E-01 + 0.255000E+05 0.605892E-01 + 0.256500E+05 0.606539E-01 + 0.258000E+05 0.607093E-01 + 0.259500E+05 0.607548E-01 + 0.261000E+05 0.607897E-01 + 0.262500E+05 0.608129E-01 + 0.264000E+05 0.608242E-01 + 0.265500E+05 0.608252E-01 + 0.267000E+05 0.608138E-01 + 0.268500E+05 0.607892E-01 + 0.270000E+05 0.607510E-01 + 0.271500E+05 0.606999E-01 + 0.273000E+05 0.606439E-01 + 0.274500E+05 0.605749E-01 + 0.276000E+05 0.604891E-01 + 0.277500E+05 0.603984E-01 + 0.279000E+05 0.602920E-01 + 0.280500E+05 0.601660E-01 + 0.282000E+05 0.600361E-01 + 0.283500E+05 0.598927E-01 + 0.285000E+05 0.597356E-01 + 0.286500E+05 0.595745E-01 + 0.288000E+05 0.593950E-01 + 0.289500E+05 0.592125E-01 + 0.291000E+05 0.590135E-01 + 0.292500E+05 0.588107E-01 + 0.294000E+05 0.585905E-01 + 0.295500E+05 0.583666E-01 + 0.297000E+05 0.581419E-01 + 0.298500E+05 0.578948E-01 + 0.300000E+05 0.576414E-01 + 0.301500E+05 0.573870E-01 + 0.303000E+05 0.571101E-01 + 0.304500E+05 0.568116E-01 + 0.306000E+05 0.564987E-01 + 0.307500E+05 0.561743E-01 + 0.309000E+05 0.558391E-01 + 0.310500E+05 0.554923E-01 + 0.312000E+05 0.551329E-01 + 0.313500E+05 0.547597E-01 + 0.315000E+05 0.543716E-01 + 0.316500E+05 0.539678E-01 + 0.318000E+05 0.535478E-01 + 0.319500E+05 0.531113E-01 + 0.321000E+05 0.526583E-01 + 0.322500E+05 0.521893E-01 + 0.324000E+05 0.517047E-01 + 0.325500E+05 0.512034E-01 + 0.327000E+05 0.506873E-01 + 0.328500E+05 0.501577E-01 + 0.330000E+05 0.496160E-01 + 0.331500E+05 0.490630E-01 + 0.333000E+05 0.485000E-01 + 0.334500E+05 0.479281E-01 + 0.336000E+05 0.473488E-01 + 0.337500E+05 0.467633E-01 + 0.339000E+05 0.461733E-01 + 0.340500E+05 0.455804E-01 + 0.342000E+05 0.449864E-01 + 0.343500E+05 0.443931E-01 + 0.345000E+05 0.438023E-01 + 0.346500E+05 0.432158E-01 + 0.348000E+05 0.426354E-01 + 0.349500E+05 0.420628E-01 + 0.351000E+05 0.414993E-01 + 0.352500E+05 0.409466E-01 + 0.354000E+05 0.404059E-01 + 0.355500E+05 0.398781E-01 + 0.357000E+05 0.393644E-01 + 0.358500E+05 0.388654E-01 + 0.360000E+05 0.383817E-01 + 0.361500E+05 0.379113E-01 + 0.363000E+05 0.374534E-01 + 0.364500E+05 0.370073E-01 + 0.366000E+05 0.365730E-01 + 0.367500E+05 0.361505E-01 + 0.369000E+05 0.357404E-01 + 0.370500E+05 0.353417E-01 + 0.372000E+05 0.349553E-01 + 0.373500E+05 0.345810E-01 + 0.375000E+05 0.342192E-01 + 0.376500E+05 0.338711E-01 + 0.378000E+05 0.335373E-01 + 0.379500E+05 0.332267E-01 + 0.381000E+05 0.329360E-01 + 0.382500E+05 0.326537E-01 + 0.384000E+05 0.323772E-01 + 0.385500E+05 0.321067E-01 + 0.387000E+05 0.318423E-01 + 0.388500E+05 0.315839E-01 + 0.390000E+05 0.313307E-01 + 0.391500E+05 0.310818E-01 + 0.393000E+05 0.308356E-01 + 0.394500E+05 0.305933E-01 + 0.396000E+05 0.303518E-01 + 0.397500E+05 0.301131E-01 + 0.399000E+05 0.298757E-01 + 0.400500E+05 0.296385E-01 + 0.402000E+05 0.294002E-01 + 0.403500E+05 0.291597E-01 + 0.405000E+05 0.289158E-01 + 0.406500E+05 0.286673E-01 + 0.408000E+05 0.284135E-01 + 0.409500E+05 0.281535E-01 + 0.411000E+05 0.278871E-01 + 0.412500E+05 0.276140E-01 + 0.414000E+05 0.273343E-01 + 0.415500E+05 0.270485E-01 + 0.417000E+05 0.267571E-01 + 0.418500E+05 0.264610E-01 + 0.420000E+05 0.261608E-01 + 0.421500E+05 0.258577E-01 + 0.423000E+05 0.255525E-01 + 0.424500E+05 0.252463E-01 + 0.426000E+05 0.249398E-01 + 0.427500E+05 0.246338E-01 + 0.429000E+05 0.243340E-01 + 0.430500E+05 0.240301E-01 + 0.432000E+05 0.237215E-01 + 0.433500E+05 0.234207E-01 + 0.435000E+05 0.231203E-01 + 0.436500E+05 0.228197E-01 + 0.438000E+05 0.225155E-01 + 0.439500E+05 0.222067E-01 + 0.441000E+05 0.218924E-01 + 0.442500E+05 0.215722E-01 + 0.444000E+05 0.212462E-01 + 0.445500E+05 0.209146E-01 + 0.447000E+05 0.205777E-01 + 0.448500E+05 0.202361E-01 + 0.450000E+05 0.198904E-01 + 0.451500E+05 0.195414E-01 + 0.453000E+05 0.191900E-01 + 0.454500E+05 0.188374E-01 + 0.456000E+05 0.184847E-01 + 0.457500E+05 0.181332E-01 + 0.459000E+05 0.177842E-01 + 0.460500E+05 0.174392E-01 + 0.462000E+05 0.170995E-01 + 0.463500E+05 0.167663E-01 + 0.465000E+05 0.164414E-01 + 0.466500E+05 0.161261E-01 + 0.468000E+05 0.158209E-01 + 0.469500E+05 0.155266E-01 + 0.471000E+05 0.152430E-01 + 0.472500E+05 0.149695E-01 + 0.474000E+05 0.147064E-01 + 0.475500E+05 0.144426E-01 + 0.477000E+05 0.142162E-01 + 0.478500E+05 0.140285E-01 + 0.480000E+05 0.138452E-01 + 0.481500E+05 0.136504E-01 + 0.483000E+05 0.134392E-01 + 0.484500E+05 0.132121E-01 + 0.486000E+05 0.129717E-01 + 0.487500E+05 0.127213E-01 + 0.489000E+05 0.124639E-01 + 0.490500E+05 0.122022E-01 + 0.492000E+05 0.119382E-01 + 0.493500E+05 0.116733E-01 + 0.495000E+05 0.114084E-01 + 0.496500E+05 0.111229E-01 + 0.498000E+05 0.108066E-01 + 0.499500E+05 0.105036E-01 + 0.501000E+05 0.102336E-01 + 0.502500E+05 0.999888E-02 + 0.504000E+05 0.979498E-02 + 0.505500E+05 0.961806E-02 + 0.507000E+05 0.946457E-02 + 0.508500E+05 0.933701E-02 + 0.510000E+05 0.917477E-02 + 0.511500E+05 0.900567E-02 + 0.513000E+05 0.881549E-02 + 0.514500E+05 0.862246E-02 + 0.516000E+05 0.843031E-02 + 0.517500E+05 0.824247E-02 + 0.519000E+05 0.806034E-02 + 0.520500E+05 0.788469E-02 + 0.522000E+05 0.771585E-02 + 0.523500E+05 0.755389E-02 + 0.525000E+05 0.739879E-02 + 0.526500E+05 0.725044E-02 + 0.528000E+05 0.710874E-02 + 0.529500E+05 0.697357E-02 + 0.531000E+05 0.684481E-02 + 0.532500E+05 0.672233E-02 + 0.534000E+05 0.660597E-02 + 0.535500E+05 0.649556E-02 + 0.537000E+05 0.639088E-02 + 0.538500E+05 0.629170E-02 + 0.540000E+05 0.619776E-02 + 0.541500E+05 0.610779E-02 + 0.543000E+05 0.601716E-02 + 0.544500E+05 0.592845E-02 + 0.546000E+05 0.584196E-02 + 0.547500E+05 0.576010E-02 + 0.549000E+05 0.568661E-02 + 0.550500E+05 0.562416E-02 + 0.552000E+05 0.557216E-02 + 0.553500E+05 0.552899E-02 + 0.555000E+05 0.549327E-02 + 0.556500E+05 0.546387E-02 + 0.558000E+05 0.544087E-02 + 0.559500E+05 0.542361E-02 + 0.561000E+05 0.541157E-02 + 0.562500E+05 0.540259E-02 + 0.564000E+05 0.539379E-02 + 0.565500E+05 0.538208E-02 + 0.567000E+05 0.536480E-02 + 0.568500E+05 0.534032E-02 + 0.570000E+05 0.530786E-02 + 0.571500E+05 0.526811E-02 + 0.573000E+05 0.522200E-02 + 0.574500E+05 0.516675E-02 + 0.576000E+05 0.510171E-02 + 0.577500E+05 0.502632E-02 + 0.579000E+05 0.494867E-02 + 0.580500E+05 0.486465E-02 + 0.582000E+05 0.477745E-02 + 0.583500E+05 0.468797E-02 + 0.585000E+05 0.459435E-02 + 0.586500E+05 0.448870E-02 + 0.588000E+05 0.436991E-02 + 0.589500E+05 0.423926E-02 + 0.591000E+05 0.409824E-02 + 0.592500E+05 0.394788E-02 + 0.594000E+05 0.378871E-02 + 0.595500E+05 0.363481E-02 + 0.597000E+05 0.346639E-02 + 0.598500E+05 0.329702E-02 + 0.600000E+05 0.310875E-02 + 0.601500E+05 0.291748E-02 + 0.603000E+05 0.272436E-02 + 0.604500E+05 0.250540E-02 + 0.606000E+05 0.226312E-02 + 0.607500E+05 0.200533E-02 + 0.609000E+05 0.173585E-02 + 0.610500E+05 0.980928E-03 + 0.612000E+05 0.682798E-03 + 0.613500E+05 0.382286E-03 + 0.615000E+05 0.591680E-04 + 0.616500E+05 -0.539897E-03 + 0.618000E+05 -0.893961E-03 + 0.619500E+05 -0.125483E-02 + 0.621000E+05 -0.175987E-02 + 0.622500E+05 -0.241165E-02 + 0.624000E+05 -0.304597E-02 + 0.625500E+05 -0.362338E-02 + 0.627000E+05 -0.410723E-02 + 0.628500E+05 -0.449390E-02 + 0.630000E+05 -0.478488E-02 + 0.631500E+05 -0.498876E-02 + 0.633000E+05 -0.511449E-02 + 0.634500E+05 -0.517145E-02 + 0.636000E+05 -0.516699E-02 + 0.637500E+05 -0.510848E-02 + 0.639000E+05 -0.500152E-02 + 0.640500E+05 -0.485021E-02 + 0.642000E+05 -0.465757E-02 + 0.643500E+05 -0.442577E-02 + 0.645000E+05 -0.415622E-02 + 0.646500E+05 -0.384980E-02 + 0.648000E+05 -0.350687E-02 + 0.649500E+05 -0.312977E-02 + 0.651000E+05 -0.275523E-02 + 0.652500E+05 -0.239251E-02 + 0.654000E+05 -0.203015E-02 + 0.655500E+05 -0.165230E-02 + 0.657000E+05 -0.124371E-02 + 0.658500E+05 -0.790867E-03 + 0.660000E+05 -0.283937E-03 + 0.661500E+05 0.283743E-03 + 0.663000E+05 0.915524E-03 + 0.664500E+05 0.161392E-02 + 0.666000E+05 0.238507E-02 + 0.667500E+05 0.324176E-02 + 0.669000E+05 0.419709E-02 + 0.670500E+05 0.525753E-02 + 0.672000E+05 0.642195E-02 + 0.673500E+05 0.768385E-02 + 0.675000E+05 0.903385E-02 + 0.676500E+05 0.104600E-01 + 0.678000E+05 0.191337E-01 + 0.679500E+05 0.284329E-01 + 0.681000E+05 0.362810E-01 + 0.682500E+05 0.437329E-01 + 0.684000E+05 0.506358E-01 + 0.685500E+05 0.571053E-01 + 0.687000E+05 0.630796E-01 + 0.688500E+05 0.686364E-01 + 0.690000E+05 0.738012E-01 + 0.691500E+05 0.786094E-01 + 0.693000E+05 0.830938E-01 + 0.694500E+05 0.872874E-01 + 0.696000E+05 0.912228E-01 + 0.697500E+05 0.949315E-01 + 0.699000E+05 0.984434E-01 + 0.700500E+05 0.101787E+00 + 0.702000E+05 0.104987E+00 + 0.703500E+05 0.108068E+00 + 0.705000E+05 0.111050E+00 + 0.706500E+05 0.113953E+00 + 0.708000E+05 0.116793E+00 + 0.709500E+05 0.119584E+00 + 0.711000E+05 0.122338E+00 + 0.712500E+05 0.125066E+00 + 0.714000E+05 0.127776E+00 + 0.715500E+05 0.130475E+00 + 0.717000E+05 0.133169E+00 + 0.718500E+05 0.135861E+00 + 0.720000E+05 0.138556E+00 + 0.721500E+05 0.141246E+00 + 0.723000E+05 0.143887E+00 + 0.724500E+05 0.146499E+00 + 0.726000E+05 0.149076E+00 + 0.727500E+05 0.151622E+00 + 0.729000E+05 0.154136E+00 + 0.730500E+05 0.156622E+00 + 0.732000E+05 0.159080E+00 + 0.733500E+05 0.161514E+00 + 0.735000E+05 0.163926E+00 + 0.736500E+05 0.166318E+00 + 0.738000E+05 0.168693E+00 + 0.739500E+05 0.171051E+00 + 0.741000E+05 0.173394E+00 + 0.742500E+05 0.175724E+00 + 0.744000E+05 0.178040E+00 + 0.745500E+05 0.180344E+00 + 0.747000E+05 0.182635E+00 + 0.748500E+05 0.184914E+00 + 0.750000E+05 0.187180E+00 + 0.751500E+05 0.189433E+00 + 0.753000E+05 0.191674E+00 + 0.754500E+05 0.193901E+00 + 0.756000E+05 0.196115E+00 + 0.757500E+05 0.198310E+00 + 0.759000E+05 0.200541E+00 + 0.760500E+05 0.202793E+00 + 0.762000E+05 0.205076E+00 + 0.763500E+05 0.207391E+00 + 0.765000E+05 0.209739E+00 + 0.766500E+05 0.212117E+00 + 0.768000E+05 0.214519E+00 + 0.769500E+05 0.216942E+00 + 0.771000E+05 0.219379E+00 + 0.772500E+05 0.221823E+00 + 0.774000E+05 0.224273E+00 + 0.775500E+05 0.224107E+00 + 0.777000E+05 0.226753E+00 + 0.778500E+05 0.229423E+00 + 0.780000E+05 0.232063E+00 + 0.781500E+05 0.234675E+00 + 0.783000E+05 0.237256E+00 + 0.784500E+05 0.239805E+00 + 0.786000E+05 0.242319E+00 + 0.787500E+05 0.244799E+00 + 0.789000E+05 0.247244E+00 + 0.790500E+05 0.249654E+00 + 0.792000E+05 0.252024E+00 + 0.793500E+05 0.254329E+00 + 0.795000E+05 0.256469E+00 + 0.796500E+05 0.258474E+00 + 0.798000E+05 0.260336E+00 + 0.799500E+05 0.262060E+00 + 0.801000E+05 0.263648E+00 + 0.802500E+05 0.265108E+00 + 0.804000E+05 0.266447E+00 + 0.805500E+05 0.267674E+00 + 0.807000E+05 0.268798E+00 + 0.808500E+05 0.269829E+00 + 0.810000E+05 0.270777E+00 + 0.811500E+05 0.271650E+00 + 0.813000E+05 0.272457E+00 + 0.814500E+05 0.273207E+00 + 0.816000E+05 0.273905E+00 + 0.817500E+05 0.274558E+00 + 0.819000E+05 0.275171E+00 + 0.820500E+05 0.275748E+00 + 0.822000E+05 0.276295E+00 + 0.823500E+05 0.276813E+00 + 0.825000E+05 0.277306E+00 + 0.826500E+05 0.277776E+00 + 0.828000E+05 0.278226E+00 + 0.829500E+05 0.278654E+00 + 0.831000E+05 0.279054E+00 + 0.832500E+05 0.279425E+00 + 0.834000E+05 0.279753E+00 + 0.835500E+05 0.280028E+00 + 0.837000E+05 0.280245E+00 + 0.838500E+05 0.280404E+00 + 0.840000E+05 0.280504E+00 + 0.841500E+05 0.280548E+00 + 0.843000E+05 0.280540E+00 + 0.844500E+05 0.280486E+00 + 0.846000E+05 0.280391E+00 + 0.847500E+05 0.280258E+00 + 0.849000E+05 0.280095E+00 + 0.850500E+05 0.279904E+00 + 0.852000E+05 0.279690E+00 + 0.853500E+05 0.279456E+00 + 0.855000E+05 0.279206E+00 + 0.856500E+05 0.278942E+00 + 0.858000E+05 0.278666E+00 + 0.859500E+05 0.278379E+00 + 0.861000E+05 0.278082E+00 + 0.862500E+05 0.277777E+00 + 0.864000E+05 0.277462E+00 + 0.865500E+05 0.277151E+00 + 0.867000E+05 0.276872E+00 + 0.868500E+05 0.276625E+00 + 0.870000E+05 0.276418E+00 + 0.871500E+05 0.276254E+00 + 0.873000E+05 0.276134E+00 + 0.874500E+05 0.276058E+00 + 0.876000E+05 0.276025E+00 + 0.877500E+05 0.276031E+00 + 0.879000E+05 0.276072E+00 + 0.880500E+05 0.276143E+00 + 0.882000E+05 0.276241E+00 + 0.883500E+05 0.276360E+00 + 0.885000E+05 0.276497E+00 + 0.886500E+05 0.276649E+00 + 0.888000E+05 0.276811E+00 + 0.889500E+05 0.276980E+00 + 0.891000E+05 0.277156E+00 + 0.892500E+05 0.277335E+00 + 0.894000E+05 0.277516E+00 + 0.895500E+05 0.277699E+00 + 0.897000E+05 0.277882E+00 + 0.898500E+05 0.278065E+00 + 0.900000E+05 0.278248E+00 + 0.901500E+05 0.278416E+00 + 0.903000E+05 0.278556E+00 + 0.904500E+05 0.278681E+00 + 0.906000E+05 0.278789E+00 + 0.907500E+05 0.278882E+00 + 0.909000E+05 0.278957E+00 + 0.910500E+05 0.279013E+00 + 0.912000E+05 0.279048E+00 + 0.913500E+05 0.279059E+00 + 0.915000E+05 0.279047E+00 + 0.916500E+05 0.279009E+00 + 0.918000E+05 0.278945E+00 + 0.919500E+05 0.278854E+00 + 0.921000E+05 0.278738E+00 + 0.922500E+05 0.278595E+00 + 0.924000E+05 0.278426E+00 + 0.925500E+05 0.278231E+00 + 0.927000E+05 0.278012E+00 + 0.928500E+05 0.277769E+00 + 0.930000E+05 0.277502E+00 + 0.931500E+05 0.277213E+00 + 0.933000E+05 0.276903E+00 + 0.934500E+05 0.276573E+00 + 0.936000E+05 0.276224E+00 + 0.937500E+05 0.275852E+00 + 0.939000E+05 0.275422E+00 + 0.940500E+05 0.274939E+00 + 0.942000E+05 0.274398E+00 + 0.943500E+05 0.273800E+00 + 0.945000E+05 0.273147E+00 + 0.946500E+05 0.272442E+00 + 0.948000E+05 0.271691E+00 + 0.949500E+05 0.270899E+00 + 0.951000E+05 0.270072E+00 + 0.952500E+05 0.269216E+00 + 0.954000E+05 0.268336E+00 + 0.955500E+05 0.267436E+00 + 0.957000E+05 0.266520E+00 + 0.958500E+05 0.265593E+00 + 0.960000E+05 0.264657E+00 + 0.961500E+05 0.263715E+00 + 0.963000E+05 0.262769E+00 + 0.964500E+05 0.261821E+00 + 0.966000E+05 0.260871E+00 + 0.967500E+05 0.259920E+00 + 0.969000E+05 0.258970E+00 + 0.970500E+05 0.258021E+00 + 0.972000E+05 0.257072E+00 + 0.973500E+05 0.256130E+00 + 0.975000E+05 0.255219E+00 + 0.976500E+05 0.254332E+00 + 0.978000E+05 0.253472E+00 + 0.979500E+05 0.252638E+00 + 0.981000E+05 0.251827E+00 + 0.982500E+05 0.251040E+00 + 0.984000E+05 0.250274E+00 + 0.985500E+05 0.249527E+00 + 0.987000E+05 0.248797E+00 + 0.988500E+05 0.248083E+00 + 0.990000E+05 0.247381E+00 + 0.991500E+05 0.246691E+00 + 0.993000E+05 0.246011E+00 + 0.994500E+05 0.245340E+00 + 0.996000E+05 0.244676E+00 + 0.997500E+05 0.244018E+00 + 0.999000E+05 0.243367E+00 + 0.100050E+06 0.242720E+00 + 0.100200E+06 0.242078E+00 + 0.100350E+06 0.241439E+00 + 0.100500E+06 0.240804E+00 + 0.100650E+06 0.240172E+00 + 0.100800E+06 0.239543E+00 + 0.100950E+06 0.238915E+00 + 0.101100E+06 0.238279E+00 + 0.101250E+06 0.237638E+00 + 0.101400E+06 0.236990E+00 + 0.101550E+06 0.236335E+00 + 0.101700E+06 0.235674E+00 + 0.101850E+06 0.235006E+00 + 0.102000E+06 0.234333E+00 + 0.102150E+06 0.233653E+00 + 0.102300E+06 0.232969E+00 + 0.102450E+06 0.232279E+00 + 0.102600E+06 0.231583E+00 + 0.102750E+06 0.230883E+00 + 0.102900E+06 0.230178E+00 + 0.103050E+06 0.229467E+00 + 0.103200E+06 0.228752E+00 + 0.103350E+06 0.228031E+00 + 0.103500E+06 0.227305E+00 + 0.103650E+06 0.226574E+00 + 0.103800E+06 0.225837E+00 + 0.103950E+06 0.225096E+00 + 0.104100E+06 0.224349E+00 + 0.104250E+06 0.223597E+00 + 0.104400E+06 0.222840E+00 + 0.104550E+06 0.222076E+00 + 0.104700E+06 0.221293E+00 + 0.104850E+06 0.220495E+00 + 0.105000E+06 0.219679E+00 + 0.105150E+06 0.218843E+00 + 0.105300E+06 0.217988E+00 + 0.105450E+06 0.217112E+00 + 0.105600E+06 0.216218E+00 + 0.105750E+06 0.215305E+00 + 0.105900E+06 0.214375E+00 + 0.106050E+06 0.213429E+00 + 0.106200E+06 0.212469E+00 + 0.106350E+06 0.211496E+00 + 0.106500E+06 0.210511E+00 + 0.106650E+06 0.209516E+00 + 0.106800E+06 0.208512E+00 + 0.106950E+06 0.207501E+00 + 0.107100E+06 0.206482E+00 + 0.107250E+06 0.205458E+00 + 0.107400E+06 0.204429E+00 + 0.107550E+06 0.203396E+00 + 0.107700E+06 0.202360E+00 + 0.107850E+06 0.201320E+00 + 0.108000E+06 0.200278E+00 + 0.108150E+06 0.199232E+00 + 0.108300E+06 0.198171E+00 + 0.108450E+06 0.197096E+00 + 0.108600E+06 0.196008E+00 + 0.108750E+06 0.194905E+00 + 0.108900E+06 0.193789E+00 + 0.109050E+06 0.192661E+00 + 0.109200E+06 0.191522E+00 + 0.109350E+06 0.190374E+00 + 0.109500E+06 0.189218E+00 + 0.109650E+06 0.188056E+00 + 0.109800E+06 0.186889E+00 + 0.109950E+06 0.185720E+00 + 0.110100E+06 0.184548E+00 + 0.110250E+06 0.183376E+00 + 0.110400E+06 0.182205E+00 + 0.110550E+06 0.181034E+00 + 0.110700E+06 0.179864E+00 + 0.110850E+06 0.178697E+00 + 0.111000E+06 0.177531E+00 + 0.111150E+06 0.176368E+00 + 0.111300E+06 0.175207E+00 + 0.111450E+06 0.174048E+00 + 0.111600E+06 0.172892E+00 + 0.111750E+06 0.171741E+00 + 0.111900E+06 0.170609E+00 + 0.112050E+06 0.169493E+00 + 0.112200E+06 0.168394E+00 + 0.112350E+06 0.167313E+00 + 0.112500E+06 0.166247E+00 + 0.112650E+06 0.165196E+00 + 0.112800E+06 0.164160E+00 + 0.112950E+06 0.163136E+00 + 0.113100E+06 0.162123E+00 + 0.113250E+06 0.161120E+00 + 0.113400E+06 0.160125E+00 + 0.113550E+06 0.159138E+00 + 0.113700E+06 0.158157E+00 + 0.113850E+06 0.157180E+00 + 0.114000E+06 0.156209E+00 + 0.114150E+06 0.155241E+00 + 0.114300E+06 0.154276E+00 + 0.114450E+06 0.153315E+00 + 0.114600E+06 0.152356E+00 + 0.114750E+06 0.151399E+00 + 0.114900E+06 0.150446E+00 + 0.115050E+06 0.149495E+00 + 0.115200E+06 0.148546E+00 + 0.115350E+06 0.147604E+00 + 0.115500E+06 0.146684E+00 + 0.115650E+06 0.145783E+00 + 0.115800E+06 0.144907E+00 + 0.115950E+06 0.144054E+00 + 0.116100E+06 0.143227E+00 + 0.116250E+06 0.142424E+00 + 0.116400E+06 0.141644E+00 + 0.116550E+06 0.140887E+00 + 0.116700E+06 0.140152E+00 + 0.116850E+06 0.139436E+00 + 0.117000E+06 0.138739E+00 + 0.117150E+06 0.138059E+00 + 0.117300E+06 0.137395E+00 + 0.117450E+06 0.136747E+00 + 0.117600E+06 0.136113E+00 + 0.117750E+06 0.135494E+00 + 0.117900E+06 0.134889E+00 + 0.118050E+06 0.134296E+00 + 0.118200E+06 0.133718E+00 + 0.118350E+06 0.133152E+00 + 0.118500E+06 0.132599E+00 + 0.118650E+06 0.132060E+00 + 0.118800E+06 0.131533E+00 + 0.118950E+06 0.131020E+00 + 0.119100E+06 0.130527E+00 + 0.119250E+06 0.130051E+00 + 0.119400E+06 0.129591E+00 + 0.119550E+06 0.129147E+00 + 0.119700E+06 0.128718E+00 + 0.119850E+06 0.128303E+00 + 0.120000E+06 0.127902E+00 + 0.120150E+06 0.127514E+00 + 0.120300E+06 0.127138E+00 + 0.120450E+06 0.126773E+00 + 0.120600E+06 0.126419E+00 + 0.120750E+06 0.126075E+00 + 0.120900E+06 0.125740E+00 + 0.121050E+06 0.125414E+00 + 0.121200E+06 0.125097E+00 + 0.121350E+06 0.124787E+00 + 0.121500E+06 0.124486E+00 + 0.121650E+06 0.124191E+00 + 0.121800E+06 0.123904E+00 + 0.121950E+06 0.123623E+00 + 0.122100E+06 0.123349E+00 + 0.122250E+06 0.123082E+00 + 0.122400E+06 0.122820E+00 + 0.122550E+06 0.122565E+00 + 0.122700E+06 0.122308E+00 + 0.122850E+06 0.122052E+00 + 0.123000E+06 0.121799E+00 + 0.123150E+06 0.121551E+00 + 0.123300E+06 0.121309E+00 + 0.123450E+06 0.121073E+00 + 0.123600E+06 0.120845E+00 + 0.123750E+06 0.120626E+00 + 0.123900E+06 0.120415E+00 + 0.124050E+06 0.120213E+00 + 0.124200E+06 0.120020E+00 + 0.124350E+06 0.119836E+00 + 0.124500E+06 0.119661E+00 + 0.124650E+06 0.119494E+00 + 0.124800E+06 0.119336E+00 + 0.124950E+06 0.119185E+00 + 0.125100E+06 0.119042E+00 + 0.125250E+06 0.118907E+00 + 0.125400E+06 0.118778E+00 + 0.125550E+06 0.118657E+00 + 0.125700E+06 0.118542E+00 + 0.125850E+06 0.118434E+00 + 0.126000E+06 0.118332E+00 + 0.126150E+06 0.118233E+00 + 0.126300E+06 0.118135E+00 + 0.126450E+06 0.118039E+00 + 0.126600E+06 0.117941E+00 + 0.126750E+06 0.117841E+00 + 0.126900E+06 0.117738E+00 + 0.127050E+06 0.117630E+00 + 0.127200E+06 0.117516E+00 + 0.127350E+06 0.117398E+00 + 0.127500E+06 0.117273E+00 + 0.127650E+06 0.117144E+00 + 0.127800E+06 0.117008E+00 + 0.127950E+06 0.116866E+00 + 0.128100E+06 0.116719E+00 + 0.128250E+06 0.116567E+00 + 0.128400E+06 0.116409E+00 + 0.128550E+06 0.116245E+00 + 0.128700E+06 0.116077E+00 + 0.128850E+06 0.115903E+00 + 0.129000E+06 0.115724E+00 + 0.129150E+06 0.115540E+00 + 0.129300E+06 0.115352E+00 + 0.129450E+06 0.115159E+00 + 0.129600E+06 0.114962E+00 + 0.129750E+06 0.114760E+00 + 0.129900E+06 0.114547E+00 + 0.130050E+06 0.114324E+00 + 0.130200E+06 0.114091E+00 + 0.130350E+06 0.113848E+00 + 0.130500E+06 0.113594E+00 + 0.130650E+06 0.113330E+00 + 0.130800E+06 0.113057E+00 + 0.130950E+06 0.112775E+00 + 0.131100E+06 0.112485E+00 + 0.131250E+06 0.112188E+00 + 0.131400E+06 0.111883E+00 + 0.131550E+06 0.111572E+00 + 0.131700E+06 0.111255E+00 + 0.131850E+06 0.110932E+00 + 0.132000E+06 0.110604E+00 + 0.132150E+06 0.110271E+00 + 0.132300E+06 0.109934E+00 + 0.132450E+06 0.109593E+00 + 0.132600E+06 0.109248E+00 + 0.132750E+06 0.108898E+00 + 0.132900E+06 0.108545E+00 + 0.133050E+06 0.108188E+00 + 0.133200E+06 0.107827E+00 + 0.133350E+06 0.107459E+00 + 0.133500E+06 0.107078E+00 + 0.133650E+06 0.106686E+00 + 0.133800E+06 0.106280E+00 + 0.133950E+06 0.105859E+00 + 0.134100E+06 0.105423E+00 + 0.134250E+06 0.104971E+00 + 0.134400E+06 0.104503E+00 + 0.134550E+06 0.104020E+00 + 0.134700E+06 0.103522E+00 + 0.134850E+06 0.103011E+00 + 0.135000E+06 0.102486E+00 + 0.135150E+06 0.101950E+00 + 0.135300E+06 0.101404E+00 + 0.135450E+06 0.100848E+00 + 0.135600E+06 0.100285E+00 + 0.135750E+06 0.997161E-01 + 0.135900E+06 0.991419E-01 + 0.136050E+06 0.985640E-01 + 0.136200E+06 0.979838E-01 + 0.136350E+06 0.974023E-01 + 0.136500E+06 0.968206E-01 + 0.136650E+06 0.962399E-01 + 0.136800E+06 0.956610E-01 + 0.136950E+06 0.950854E-01 + 0.137100E+06 0.945136E-01 + 0.137250E+06 0.939459E-01 + 0.137400E+06 0.933814E-01 + 0.137550E+06 0.928204E-01 + 0.137700E+06 0.922630E-01 + 0.137850E+06 0.917095E-01 + 0.138000E+06 0.911603E-01 + 0.138150E+06 0.906165E-01 + 0.138300E+06 0.900794E-01 + 0.138450E+06 0.895491E-01 + 0.138600E+06 0.890257E-01 + 0.138750E+06 0.885094E-01 + 0.138900E+06 0.880002E-01 + 0.139050E+06 0.874981E-01 + 0.139200E+06 0.871757E-01 + 0.139350E+06 0.870234E-01 + 0.139500E+06 0.867664E-01 + 0.139650E+06 0.866210E-01 + 0.139800E+06 0.864369E-01 + 0.139950E+06 0.862732E-01 + 0.140100E+06 0.860752E-01 + 0.140250E+06 0.858602E-01 + 0.140400E+06 0.856108E-01 + 0.140550E+06 0.853336E-01 + 0.140700E+06 0.850301E-01 + 0.140850E+06 0.847039E-01 + 0.141000E+06 0.843558E-01 + 0.141150E+06 0.839891E-01 + 0.141300E+06 0.836066E-01 + 0.141450E+06 0.832112E-01 + 0.141600E+06 0.828051E-01 + 0.141750E+06 0.823907E-01 + 0.141900E+06 0.819698E-01 + 0.142050E+06 0.815440E-01 + 0.142200E+06 0.811147E-01 + 0.142350E+06 0.806831E-01 + 0.142500E+06 0.802500E-01 + 0.142650E+06 0.798162E-01 + 0.142800E+06 0.793821E-01 + 0.142950E+06 0.789481E-01 + 0.143100E+06 0.785144E-01 + 0.143250E+06 0.780811E-01 + 0.143400E+06 0.776481E-01 + 0.143550E+06 0.772156E-01 + 0.143700E+06 0.767833E-01 + 0.143850E+06 0.763510E-01 + 0.144000E+06 0.759188E-01 + 0.144150E+06 0.754884E-01 + 0.144300E+06 0.750524E-01 + 0.144450E+06 0.746118E-01 + 0.144600E+06 0.741648E-01 + 0.144750E+06 0.737115E-01 + 0.144900E+06 0.732513E-01 + 0.145050E+06 0.727845E-01 + 0.145200E+06 0.723115E-01 + 0.145350E+06 0.718328E-01 + 0.145500E+06 0.713489E-01 + 0.145650E+06 0.708605E-01 + 0.145800E+06 0.703682E-01 + 0.145950E+06 0.698727E-01 + 0.146100E+06 0.693745E-01 + 0.146250E+06 0.688742E-01 + 0.146400E+06 0.683723E-01 + 0.146550E+06 0.678694E-01 + 0.146700E+06 0.673657E-01 + 0.146850E+06 0.668616E-01 + 0.147000E+06 0.663574E-01 + 0.147150E+06 0.658533E-01 + 0.147300E+06 0.653495E-01 + 0.147450E+06 0.648461E-01 + 0.147600E+06 0.643431E-01 + 0.147750E+06 0.636631E-01 + 0.147900E+06 0.636186E-01 + 0.148050E+06 0.630805E-01 + 0.148200E+06 0.624595E-01 + 0.148350E+06 0.623757E-01 + 0.148500E+06 0.618226E-01 + 0.148650E+06 0.611888E-01 + 0.148800E+06 0.610542E-01 + 0.148950E+06 0.604671E-01 + 0.149100E+06 0.598170E-01 + 0.149250E+06 0.596302E-01 + 0.149400E+06 0.588532E-01 + 0.149550E+06 0.587096E-01 + 0.149700E+06 0.579124E-01 + 0.149850E+06 0.577485E-01 + 0.150000E+06 0.569467E-01 + 0.150150E+06 0.567528E-01 + 0.150300E+06 0.559511E-01 + 0.150450E+06 0.557277E-01 + 0.150600E+06 0.549292E-01 + 0.150750E+06 0.551543E-01 + 0.150900E+06 0.547200E-01 + 0.151050E+06 0.541595E-01 + 0.151200E+06 0.534692E-01 + 0.151350E+06 0.530952E-01 + 0.151500E+06 0.523054E-01 + 0.151650E+06 0.523784E-01 + 0.151800E+06 0.514373E-01 + 0.151950E+06 0.508457E-01 + 0.152100E+06 0.505274E-01 + 0.152250E+06 0.498178E-01 + 0.152400E+06 0.498814E-01 + 0.152550E+06 0.493991E-01 + 0.152700E+06 0.488070E-01 + 0.152850E+06 0.481758E-01 + 0.153000E+06 0.481257E-01 + 0.153150E+06 0.476326E-01 + 0.153300E+06 0.470259E-01 + 0.153450E+06 0.469781E-01 + 0.153600E+06 0.464819E-01 + 0.153750E+06 0.458854E-01 + 0.153900E+06 0.458117E-01 + 0.154050E+06 0.453020E-01 + 0.154200E+06 0.447120E-01 + 0.154350E+06 0.446117E-01 + 0.154500E+06 0.440918E-01 + 0.154650E+06 0.435116E-01 + 0.154800E+06 0.433904E-01 + 0.154950E+06 0.428659E-01 + 0.155100E+06 0.422919E-01 + 0.155250E+06 0.421496E-01 + 0.155400E+06 0.416132E-01 + 0.155550E+06 0.410431E-01 + 0.155700E+06 0.408894E-01 + 0.155850E+06 0.406231E-01 + 0.156000E+06 0.397985E-01 + 0.156150E+06 0.396437E-01 + 0.156300E+06 0.392440E-01 + 0.156450E+06 0.387344E-01 + 0.156600E+06 0.386126E-01 + 0.156750E+06 0.383441E-01 + 0.156900E+06 0.382190E-01 + 0.157050E+06 0.377615E-01 + 0.157200E+06 0.372244E-01 + 0.157350E+06 0.370504E-01 + 0.157500E+06 0.367401E-01 + 0.157650E+06 0.365705E-01 + 0.157800E+06 0.363798E-01 + 0.157950E+06 0.362169E-01 + 0.158100E+06 0.357337E-01 + 0.158250E+06 0.351770E-01 + 0.158400E+06 0.349550E-01 + 0.158550E+06 0.346009E-01 + 0.158700E+06 0.343800E-01 + 0.158850E+06 0.336333E-01 + 0.159000E+06 0.333969E-01 + 0.159150E+06 0.332047E-01 + 0.159300E+06 0.325498E-01 + 0.159450E+06 0.323287E-01 + 0.159600E+06 0.321489E-01 + 0.159750E+06 0.315226E-01 + 0.159900E+06 0.313012E-01 + 0.160050E+06 0.311166E-01 + 0.160200E+06 0.305083E-01 + 0.160350E+06 0.302804E-01 + 0.160500E+06 0.300887E-01 + 0.160650E+06 0.298905E-01 + 0.160800E+06 0.293041E-01 + 0.160950E+06 0.290584E-01 + 0.161100E+06 0.288483E-01 + 0.161250E+06 0.286326E-01 + 0.161400E+06 0.284111E-01 + 0.161550E+06 0.281795E-01 + 0.161700E+06 0.276072E-01 + 0.161850E+06 0.273238E-01 + 0.162000E+06 0.270757E-01 + 0.162150E+06 0.268260E-01 + 0.162300E+06 0.265755E-01 + 0.162450E+06 0.263193E-01 + 0.162600E+06 0.260588E-01 + 0.162750E+06 0.257924E-01 + 0.162900E+06 0.255193E-01 + 0.163050E+06 0.252378E-01 + 0.163200E+06 0.249465E-01 + 0.163350E+06 0.246441E-01 + 0.163500E+06 0.243297E-01 + 0.163650E+06 0.240027E-01 + 0.163800E+06 0.236631E-01 + 0.163950E+06 0.233109E-01 + 0.164100E+06 0.229467E-01 + 0.164250E+06 0.225711E-01 + 0.164400E+06 0.221849E-01 + 0.164550E+06 0.217891E-01 + 0.164700E+06 0.213847E-01 + 0.164850E+06 0.209725E-01 + 0.165000E+06 0.205535E-01 + 0.165150E+06 0.201285E-01 + 0.165300E+06 0.196984E-01 + 0.165450E+06 0.192637E-01 + 0.165600E+06 0.188250E-01 + 0.165750E+06 0.183838E-01 + 0.165900E+06 0.179168E-01 + 0.166050E+06 0.174256E-01 + 0.166200E+06 0.169048E-01 + 0.166350E+06 0.163531E-01 + 0.166500E+06 0.157691E-01 + 0.166650E+06 0.151527E-01 + 0.166800E+06 0.145038E-01 + 0.166950E+06 0.138229E-01 + 0.167100E+06 0.131101E-01 + 0.167250E+06 0.123656E-01 + 0.167400E+06 0.115895E-01 + 0.167550E+06 0.107821E-01 + 0.167700E+06 0.994388E-02 + 0.167850E+06 0.102285E-01 + 0.168000E+06 0.914142E-02 + 0.168150E+06 0.937141E-02 + 0.168300E+06 0.946233E-02 + 0.168450E+06 0.952619E-02 + 0.168600E+06 0.959854E-02 + 0.168750E+06 0.968384E-02 + 0.168900E+06 0.978647E-02 + 0.169050E+06 0.971694E-02 + 0.169200E+06 0.981443E-02 + 0.169350E+06 0.992724E-02 + 0.169500E+06 0.100573E-01 + 0.169650E+06 0.102037E-01 + 0.169800E+06 0.104494E-01 + 0.169950E+06 0.107427E-01 + 0.170100E+06 0.110250E-01 + 0.170250E+06 0.113232E-01 + 0.170400E+06 0.115915E-01 + 0.170550E+06 0.119383E-01 + 0.170700E+06 0.122260E-01 + 0.170850E+06 0.125304E-01 + 0.171000E+06 0.129052E-01 + 0.171150E+06 0.132349E-01 + 0.171300E+06 0.135741E-01 + 0.171450E+06 0.139206E-01 + 0.171600E+06 0.142746E-01 + 0.171750E+06 0.146456E-01 + 0.171900E+06 0.150162E-01 + 0.172050E+06 0.153747E-01 + 0.172200E+06 0.157461E-01 + 0.172350E+06 0.161121E-01 + 0.172500E+06 0.164727E-01 + 0.172650E+06 0.168351E-01 + 0.172800E+06 0.171911E-01 + 0.172950E+06 0.175394E-01 + 0.173100E+06 0.178869E-01 + 0.173250E+06 0.182277E-01 + 0.173400E+06 0.185562E-01 + 0.173550E+06 0.188742E-01 + 0.173700E+06 0.191833E-01 + 0.173850E+06 0.194841E-01 + 0.174000E+06 0.197768E-01 + 0.174150E+06 0.200609E-01 + 0.174300E+06 0.203359E-01 + 0.174450E+06 0.206014E-01 + 0.174600E+06 0.208567E-01 + 0.174750E+06 0.211013E-01 + 0.174900E+06 0.213351E-01 + 0.175050E+06 0.215576E-01 + 0.175200E+06 0.217688E-01 + 0.175350E+06 0.219685E-01 + 0.175500E+06 0.221568E-01 + 0.175650E+06 0.223338E-01 + 0.175800E+06 0.224996E-01 + 0.175950E+06 0.226543E-01 + 0.176100E+06 0.227981E-01 + 0.176250E+06 0.229405E-01 + 0.176400E+06 0.230687E-01 + 0.176550E+06 0.231790E-01 + 0.176700E+06 0.232812E-01 + 0.176850E+06 0.233636E-01 + 0.177000E+06 0.234331E-01 + 0.177150E+06 0.234971E-01 + 0.177300E+06 0.235502E-01 + 0.177450E+06 0.235980E-01 + 0.177600E+06 0.236461E-01 + 0.177750E+06 0.236834E-01 + 0.177900E+06 0.236992E-01 + 0.178050E+06 0.237082E-01 + 0.178200E+06 0.237193E-01 + 0.178350E+06 0.237202E-01 + 0.178500E+06 0.237021E-01 + 0.178650E+06 0.236785E-01 + 0.178800E+06 0.236605E-01 + 0.178950E+06 0.236240E-01 + 0.179100E+06 0.235805E-01 + 0.179250E+06 0.235452E-01 + 0.179400E+06 0.235028E-01 + 0.179550E+06 0.234422E-01 + 0.179700E+06 0.233784E-01 + 0.179850E+06 0.233243E-01 + 0.180000E+06 0.232657E-01 + 0.180150E+06 0.231743E-01 + 0.180300E+06 0.230860E-01 + 0.180450E+06 0.230148E-01 + 0.180600E+06 0.229313E-01 + 0.180750E+06 0.228724E-01 + 0.180900E+06 0.227880E-01 + 0.181050E+06 0.227052E-01 + 0.181200E+06 0.226347E-01 + 0.181350E+06 0.225645E-01 + 0.181500E+06 0.224731E-01 + 0.181650E+06 0.223844E-01 + 0.181800E+06 0.223157E-01 + 0.181950E+06 0.222513E-01 + 0.182100E+06 0.221630E-01 + 0.182250E+06 0.220777E-01 + 0.182400E+06 0.220183E-01 + 0.182550E+06 0.219647E-01 + 0.182700E+06 0.218662E-01 + 0.182850E+06 0.218252E-01 + 0.183000E+06 0.217328E-01 + 0.183150E+06 0.216997E-01 + 0.183300E+06 0.216342E-01 + 0.183450E+06 0.216187E-01 + 0.183600E+06 0.215659E-01 + 0.183750E+06 0.215650E-01 + 0.183900E+06 0.215261E-01 + 0.184050E+06 0.215389E-01 + 0.184200E+06 0.215130E-01 + 0.184350E+06 0.215390E-01 + 0.184500E+06 0.215254E-01 + 0.184650E+06 0.215663E-01 + 0.184800E+06 0.215698E-01 + 0.184950E+06 0.216232E-01 + 0.185100E+06 0.216330E-01 + 0.185250E+06 0.216911E-01 + 0.185400E+06 0.217072E-01 + 0.185550E+06 0.217781E-01 + 0.185700E+06 0.218077E-01 + 0.185850E+06 0.218918E-01 + 0.186000E+06 0.219343E-01 + 0.186150E+06 0.220329E-01 + 0.186300E+06 0.220885E-01 + 0.186450E+06 0.221976E-01 + 0.186600E+06 0.222981E-01 + 0.186750E+06 0.223640E-01 + 0.186900E+06 0.224812E-01 + 0.187050E+06 0.225515E-01 + 0.187200E+06 0.226738E-01 + 0.187350E+06 0.227479E-01 + 0.187500E+06 0.228745E-01 + 0.187650E+06 0.229958E-01 + 0.187800E+06 0.230769E-01 + 0.187950E+06 0.232075E-01 + 0.188100E+06 0.232873E-01 + 0.188250E+06 0.234184E-01 + 0.188400E+06 0.235375E-01 + 0.188550E+06 0.236164E-01 + 0.188700E+06 0.237467E-01 + 0.188850E+06 0.238258E-01 + 0.189000E+06 0.239573E-01 + 0.189150E+06 0.240761E-01 + 0.189300E+06 0.241535E-01 + 0.189450E+06 0.242824E-01 + 0.189600E+06 0.243986E-01 + 0.189750E+06 0.244703E-01 + 0.189900E+06 0.245947E-01 + 0.190050E+06 0.247066E-01 + 0.190200E+06 0.247761E-01 + 0.190350E+06 0.248991E-01 + 0.190500E+06 0.250089E-01 + 0.190650E+06 0.250758E-01 + 0.190800E+06 0.251954E-01 + 0.190950E+06 0.253008E-01 + 0.191100E+06 0.253606E-01 + 0.191250E+06 0.254708E-01 + 0.191400E+06 0.255640E-01 + 0.191550E+06 0.256112E-01 + 0.191700E+06 0.257078E-01 + 0.191850E+06 0.257874E-01 + 0.192000E+06 0.258214E-01 + 0.192150E+06 0.259022E-01 + 0.192300E+06 0.259681E-01 + 0.192450E+06 0.259872E-01 + 0.192600E+06 0.260542E-01 + 0.192750E+06 0.261061E-01 + 0.192900E+06 0.261130E-01 + 0.193050E+06 0.261681E-01 + 0.193200E+06 0.262047E-01 + 0.193350E+06 0.261998E-01 + 0.193500E+06 0.262381E-01 + 0.193650E+06 0.262616E-01 + 0.193800E+06 0.262817E-01 + 0.193950E+06 0.262635E-01 + 0.194100E+06 0.262960E-01 + 0.194250E+06 0.263123E-01 + 0.194400E+06 0.262934E-01 + 0.194550E+06 0.263242E-01 + 0.194700E+06 0.263429E-01 + 0.194850E+06 0.263287E-01 + 0.195000E+06 0.263679E-01 + 0.195150E+06 0.263960E-01 + 0.195300E+06 0.263891E-01 + 0.195450E+06 0.264387E-01 + 0.195600E+06 0.264760E-01 + 0.195750E+06 0.265169E-01 + 0.195900E+06 0.265186E-01 + 0.196050E+06 0.265791E-01 + 0.196200E+06 0.266281E-01 + 0.196350E+06 0.266406E-01 + 0.196500E+06 0.267086E-01 + 0.196650E+06 0.267631E-01 + 0.196800E+06 0.267747E-01 + 0.196950E+06 0.268450E-01 + 0.197100E+06 0.269016E-01 + 0.197250E+06 0.269576E-01 + 0.197400E+06 0.269627E-01 + 0.197550E+06 0.270309E-01 + 0.197700E+06 0.270815E-01 + 0.197850E+06 0.270851E-01 + 0.198000E+06 0.271489E-01 + 0.198150E+06 0.271999E-01 + 0.198300E+06 0.272465E-01 + 0.198450E+06 0.272398E-01 + 0.198600E+06 0.272917E-01 + 0.198750E+06 0.273220E-01 + 0.198900E+06 0.273431E-01 + 0.199050E+06 0.273098E-01 + 0.199200E+06 0.273294E-01 + 0.199350E+06 0.273288E-01 + 0.199500E+06 0.273275E-01 + 0.199650E+06 0.272735E-01 + 0.199800E+06 0.272778E-01 + 0.199950E+06 0.272641E-01 + 0.200100E+06 0.272491E-01 + 0.200250E+06 0.272263E-01 + 0.200400E+06 0.271614E-01 + 0.200550E+06 0.271472E-01 + 0.200700E+06 0.271215E-01 + 0.200850E+06 0.270901E-01 + 0.201000E+06 0.270169E-01 + 0.201150E+06 0.269942E-01 + 0.201300E+06 0.269622E-01 + 0.201450E+06 0.269247E-01 + 0.201600E+06 0.268881E-01 + 0.201750E+06 0.268088E-01 + 0.201900E+06 0.267836E-01 + 0.202050E+06 0.267470E-01 + 0.202200E+06 0.267098E-01 + 0.202350E+06 0.266298E-01 + 0.202500E+06 0.266063E-01 + 0.202650E+06 0.265729E-01 + 0.202800E+06 0.265409E-01 + 0.202950E+06 0.264668E-01 + 0.203100E+06 0.264506E-01 + 0.203250E+06 0.264267E-01 + 0.203400E+06 0.264035E-01 + 0.203550E+06 0.263798E-01 + 0.203700E+06 0.263165E-01 + 0.203850E+06 0.263110E-01 + 0.204000E+06 0.262976E-01 + 0.204150E+06 0.262859E-01 + 0.204300E+06 0.262302E-01 + 0.204450E+06 0.262330E-01 + 0.204600E+06 0.262255E-01 + 0.204750E+06 0.262181E-01 + 0.204900E+06 0.261653E-01 + 0.205050E+06 0.261705E-01 + 0.205200E+06 0.261647E-01 + 0.205350E+06 0.261576E-01 + 0.205500E+06 0.261042E-01 + 0.205650E+06 0.261070E-01 + 0.205800E+06 0.260976E-01 + 0.205950E+06 0.260856E-01 + 0.206100E+06 0.260702E-01 + 0.206250E+06 0.260094E-01 + 0.206400E+06 0.260026E-01 + 0.206550E+06 0.259828E-01 + 0.206700E+06 0.259594E-01 + 0.206850E+06 0.259319E-01 + 0.207000E+06 0.258592E-01 + 0.207150E+06 0.258393E-01 + 0.207300E+06 0.258061E-01 + 0.207450E+06 0.257689E-01 + 0.207600E+06 0.257273E-01 + 0.207750E+06 0.256411E-01 + 0.207900E+06 0.256070E-01 + 0.208050E+06 0.255597E-01 + 0.208200E+06 0.255084E-01 + 0.208350E+06 0.254529E-01 + 0.208500E+06 0.253533E-01 + 0.208650E+06 0.253053E-01 + 0.208800E+06 0.252445E-01 + 0.208950E+06 0.251799E-01 + 0.209100E+06 0.251106E-01 + 0.209250E+06 0.249960E-01 + 0.209400E+06 0.249304E-01 + 0.209550E+06 0.248499E-01 + 0.209700E+06 0.247621E-01 + 0.209850E+06 0.246669E-01 + 0.210000E+06 0.245246E-01 + 0.210150E+06 0.244292E-01 + 0.210300E+06 0.243191E-01 + 0.210450E+06 0.242017E-01 + 0.210600E+06 0.240776E-01 + 0.210750E+06 0.239478E-01 + 0.210900E+06 0.237721E-01 + 0.211050E+06 0.236450E-01 + 0.211200E+06 0.235063E-01 + 0.211350E+06 0.233630E-01 + 0.211500E+06 0.232160E-01 + 0.211650E+06 0.230665E-01 + 0.211800E+06 0.228738E-01 + 0.211950E+06 0.227330E-01 + 0.212100E+06 0.225849E-01 + 0.212250E+06 0.224358E-01 + 0.212400E+06 0.222865E-01 + 0.212550E+06 0.220950E-01 + 0.212700E+06 0.219576E-01 + 0.212850E+06 0.218162E-01 + 0.213000E+06 0.216765E-01 + 0.213150E+06 0.215399E-01 + 0.213300E+06 0.213655E-01 + 0.213450E+06 0.212483E-01 + 0.213600E+06 0.211303E-01 + 0.213750E+06 0.210165E-01 + 0.213900E+06 0.209075E-01 + 0.214050E+06 0.207622E-01 + 0.214200E+06 0.206743E-01 + 0.214350E+06 0.205867E-01 + 0.214500E+06 0.205035E-01 + 0.214650E+06 0.204252E-01 + 0.214800E+06 0.203107E-01 + 0.214950E+06 0.202527E-01 + 0.215100E+06 0.201948E-01 + 0.215250E+06 0.201406E-01 + 0.215400E+06 0.200905E-01 + 0.215550E+06 0.200036E-01 + 0.215700E+06 0.199713E-01 + 0.215850E+06 0.199380E-01 + 0.216000E+06 0.199080E-01 + 0.216150E+06 0.198396E-01 + 0.216300E+06 0.198231E-01 + 0.216450E+06 0.198033E-01 + 0.216600E+06 0.197834E-01 + 0.216750E+06 0.197632E-01 + 0.216900E+06 0.197033E-01 + 0.217050E+06 0.196921E-01 + 0.217200E+06 0.196749E-01 + 0.217350E+06 0.196551E-01 + 0.217500E+06 0.196330E-01 + 0.217650E+06 0.195681E-01 + 0.217800E+06 0.195517E-01 + 0.217950E+06 0.195297E-01 + 0.218100E+06 0.195051E-01 + 0.218250E+06 0.194781E-01 + 0.218400E+06 0.194492E-01 + 0.218550E+06 0.193769E-01 + 0.218700E+06 0.193533E-01 + 0.218850E+06 0.193246E-01 + 0.219000E+06 0.192934E-01 + 0.219150E+06 0.192600E-01 + 0.219300E+06 0.192247E-01 + 0.219450E+06 0.191452E-01 + 0.219600E+06 0.191153E-01 + 0.219750E+06 0.190809E-01 + 0.219900E+06 0.190452E-01 + 0.220050E+06 0.190088E-01 + 0.220200E+06 0.189721E-01 + 0.220350E+06 0.188885E-01 + 0.220500E+06 0.188611E-01 + 0.220650E+06 0.188308E-01 + 0.220800E+06 0.188001E-01 + 0.220950E+06 0.187692E-01 + 0.221100E+06 0.187384E-01 + 0.221250E+06 0.186565E-01 + 0.221400E+06 0.186365E-01 + 0.221550E+06 0.186126E-01 + 0.221700E+06 0.185889E-01 + 0.221850E+06 0.185641E-01 + 0.222000E+06 0.185388E-01 + 0.222150E+06 0.184557E-01 + 0.222300E+06 0.184416E-01 + 0.222450E+06 0.184253E-01 + 0.222600E+06 0.184101E-01 + 0.222750E+06 0.183940E-01 + 0.222900E+06 0.183815E-01 + 0.223050E+06 0.183060E-01 + 0.223200E+06 0.183085E-01 + 0.223350E+06 0.183082E-01 + 0.223500E+06 0.183119E-01 + 0.223650E+06 0.183164E-01 + 0.223800E+06 0.183254E-01 + 0.223950E+06 0.183382E-01 + 0.224100E+06 0.182859E-01 + 0.224250E+06 0.183169E-01 + 0.224400E+06 0.183471E-01 + 0.224550E+06 0.183798E-01 + 0.224700E+06 0.184141E-01 + 0.224850E+06 0.184513E-01 + 0.225000E+06 0.184188E-01 + 0.225150E+06 0.184755E-01 + 0.225300E+06 0.185330E-01 + 0.225450E+06 0.185944E-01 + 0.225600E+06 0.186598E-01 + 0.225750E+06 0.187285E-01 + 0.225900E+06 0.188003E-01 + 0.226050E+06 0.187958E-01 + 0.226200E+06 0.188837E-01 + 0.226350E+06 0.189693E-01 + 0.226500E+06 0.190570E-01 + 0.226650E+06 0.191480E-01 + 0.226800E+06 0.192426E-01 + 0.226950E+06 0.193392E-01 + 0.227100E+06 0.193542E-01 + 0.227250E+06 0.194623E-01 + 0.227400E+06 0.195647E-01 + 0.227550E+06 0.196661E-01 + 0.227700E+06 0.197678E-01 + 0.227850E+06 0.198688E-01 + 0.228000E+06 0.199701E-01 + 0.228150E+06 0.200714E-01 + 0.228300E+06 0.200976E-01 + 0.228450E+06 0.202127E-01 + 0.228600E+06 0.203225E-01 + 0.228750E+06 0.204310E-01 + 0.228900E+06 0.203492E-01 + 0.229050E+06 0.202704E-01 + 0.229200E+06 0.201933E-01 + 0.229350E+06 0.201751E-01 + 0.229500E+06 0.201012E-01 + 0.229650E+06 0.200273E-01 + 0.229800E+06 0.199546E-01 + 0.229950E+06 0.198825E-01 + 0.230100E+06 0.198097E-01 + 0.230250E+06 0.197375E-01 + 0.230400E+06 0.196650E-01 + 0.230550E+06 0.195923E-01 + 0.230700E+06 0.195203E-01 + 0.230850E+06 0.195065E-01 + 0.231000E+06 0.194320E-01 + 0.231150E+06 0.193569E-01 + 0.231300E+06 0.192788E-01 + 0.231450E+06 0.191994E-01 + 0.231600E+06 0.191169E-01 + 0.231750E+06 0.190335E-01 + 0.231900E+06 0.189475E-01 + 0.232050E+06 0.188608E-01 + 0.232200E+06 0.187716E-01 + 0.232350E+06 0.186815E-01 + 0.232500E+06 0.185887E-01 + 0.232650E+06 0.184946E-01 + 0.232800E+06 0.183973E-01 + 0.232950E+06 0.182969E-01 + 0.233100E+06 0.181939E-01 + 0.233250E+06 0.181683E-01 + 0.233400E+06 0.180591E-01 + 0.233550E+06 0.179468E-01 + 0.233700E+06 0.178330E-01 + 0.233850E+06 0.177177E-01 + 0.234000E+06 0.176021E-01 + 0.234150E+06 0.174848E-01 + 0.234300E+06 0.173655E-01 + 0.234450E+06 0.172444E-01 + 0.234600E+06 0.171241E-01 + 0.234750E+06 0.170045E-01 + 0.234900E+06 0.168865E-01 + 0.235050E+06 0.167684E-01 + 0.235200E+06 0.166490E-01 + 0.235350E+06 0.199141E-01 + 0.235500E+06 0.194892E-01 + 0.235650E+06 0.200280E-01 + 0.235800E+06 0.204593E-01 + 0.235950E+06 0.206995E-01 + 0.236100E+06 0.208053E-01 + 0.236250E+06 0.208220E-01 + 0.236400E+06 0.207694E-01 + 0.236550E+06 0.206853E-01 + 0.236700E+06 0.204137E-01 + 0.236850E+06 0.201448E-01 + 0.237000E+06 0.198823E-01 + 0.237150E+06 0.196295E-01 + 0.237300E+06 0.193879E-01 + 0.237450E+06 0.191592E-01 + 0.237600E+06 0.189420E-01 + 0.237750E+06 0.187355E-01 + 0.237900E+06 0.185397E-01 + 0.238050E+06 0.183546E-01 + 0.238200E+06 0.181800E-01 + 0.238350E+06 0.180157E-01 + 0.238500E+06 0.178596E-01 + 0.238650E+06 0.177118E-01 + 0.238800E+06 0.175686E-01 + 0.238950E+06 0.174280E-01 + 0.239100E+06 0.172891E-01 + 0.239250E+06 0.171515E-01 + 0.239400E+06 0.170151E-01 + 0.239550E+06 0.168798E-01 + 0.239700E+06 0.167453E-01 + 0.239850E+06 0.166113E-01 + 0.240000E+06 0.203482E-01 + 0.240150E+06 0.202709E-01 + 0.240300E+06 0.207023E-01 + 0.240450E+06 0.210342E-01 + 0.240600E+06 0.211947E-01 + 0.240750E+06 0.210969E-01 + 0.240900E+06 0.209102E-01 + 0.241050E+06 0.206698E-01 + 0.241200E+06 0.203989E-01 + 0.241350E+06 0.201139E-01 + 0.241500E+06 0.198247E-01 + 0.241650E+06 0.195380E-01 + 0.241800E+06 0.192580E-01 + 0.241950E+06 0.189868E-01 + 0.242100E+06 0.187262E-01 + 0.242250E+06 0.184750E-01 + 0.242400E+06 0.182342E-01 + 0.242550E+06 0.180035E-01 + 0.242700E+06 0.177814E-01 + 0.242850E+06 0.175663E-01 + 0.243000E+06 0.173568E-01 + 0.243150E+06 0.212077E-01 + 0.243300E+06 0.232658E-01 + 0.243450E+06 0.235032E-01 + 0.243600E+06 0.236153E-01 + 0.243750E+06 0.235734E-01 + 0.243900E+06 0.234250E-01 + 0.244050E+06 0.232000E-01 + 0.244200E+06 0.229372E-01 + 0.244350E+06 0.226576E-01 + 0.244500E+06 0.223704E-01 + 0.244650E+06 0.220824E-01 + 0.244800E+06 0.217983E-01 + 0.244950E+06 0.250570E-01 + 0.245100E+06 0.276839E-01 + 0.245250E+06 0.277553E-01 + 0.245400E+06 0.277522E-01 + 0.245550E+06 0.276453E-01 + 0.245700E+06 0.274643E-01 + 0.245850E+06 0.272435E-01 + 0.246000E+06 0.269984E-01 + 0.246150E+06 0.295675E-01 + 0.246300E+06 0.319381E-01 + 0.246450E+06 0.319485E-01 + 0.246600E+06 0.319063E-01 + 0.246750E+06 0.317590E-01 + 0.246900E+06 0.315432E-01 + 0.247050E+06 0.335384E-01 + 0.247200E+06 0.356196E-01 + 0.247350E+06 0.355848E-01 + 0.247500E+06 0.354886E-01 + 0.247650E+06 0.353119E-01 + 0.247800E+06 0.369036E-01 + 0.247950E+06 0.387649E-01 + 0.248100E+06 0.386984E-01 + 0.248250E+06 0.385690E-01 + 0.248400E+06 0.398844E-01 + 0.248550E+06 0.415824E-01 + 0.248700E+06 0.415072E-01 + 0.248850E+06 0.426235E-01 + 0.249000E+06 0.441768E-01 + 0.249150E+06 0.430326E-01 + 0.249300E+06 0.429918E-01 + 0.249450E+06 0.435117E-01 + 0.249600E+06 0.442977E-01 + 0.249750E+06 0.452155E-01 + 0.249900E+06 0.461854E-01 + 0.250050E+06 0.471653E-01 + 0.250200E+06 0.481267E-01 + 0.250350E+06 0.490521E-01 + 0.250500E+06 0.499292E-01 + 0.250650E+06 0.507501E-01 + 0.250800E+06 0.515100E-01 + 0.250950E+06 0.522062E-01 + 0.251100E+06 0.528383E-01 + 0.251250E+06 0.534074E-01 + 0.251400E+06 0.539160E-01 + 0.251550E+06 0.543678E-01 + 0.251700E+06 0.547670E-01 + 0.251850E+06 0.551195E-01 + 0.252000E+06 0.554602E-01 + 0.252150E+06 0.557586E-01 + 0.252300E+06 0.560413E-01 + 0.252450E+06 0.562687E-01 + 0.252600E+06 0.564802E-01 + 0.252750E+06 0.566369E-01 + 0.252900E+06 0.567432E-01 + 0.253050E+06 0.568041E-01 + 0.253200E+06 0.568267E-01 + 0.253350E+06 0.568225E-01 + 0.253500E+06 0.568010E-01 + 0.253650E+06 0.567691E-01 + 0.253800E+06 0.567311E-01 + 0.253950E+06 0.566892E-01 + 0.254100E+06 0.566441E-01 + 0.254250E+06 0.565958E-01 + 0.254400E+06 0.565438E-01 + 0.254550E+06 0.564875E-01 + 0.254700E+06 0.564264E-01 + 0.254850E+06 0.563603E-01 + 0.255000E+06 0.562891E-01 + 0.255150E+06 0.562075E-01 + 0.255300E+06 0.561135E-01 + 0.255450E+06 0.560077E-01 + 0.255600E+06 0.558914E-01 + 0.255750E+06 0.557612E-01 + 0.255900E+06 0.556107E-01 + 0.256050E+06 0.554444E-01 + 0.256200E+06 0.552670E-01 + 0.256350E+06 0.550832E-01 + 0.256500E+06 0.548968E-01 + 0.256650E+06 0.547113E-01 + 0.256800E+06 0.545293E-01 + 0.256950E+06 0.543527E-01 + 0.257100E+06 0.541828E-01 + 0.257250E+06 0.540204E-01 + 0.257400E+06 0.538655E-01 + 0.257550E+06 0.537178E-01 + 0.257700E+06 0.535806E-01 + 0.257850E+06 0.534566E-01 + 0.258000E+06 0.533447E-01 + 0.258150E+06 0.532479E-01 + 0.258300E+06 0.531467E-01 + 0.258450E+06 0.530528E-01 + 0.258600E+06 0.529759E-01 + 0.258750E+06 0.529249E-01 + 0.258900E+06 0.528952E-01 + 0.259050E+06 0.527844E-01 + 0.259200E+06 0.514121E-01 diff --git a/tests/test_schism.py b/tests/test_schism.py index a7b33987..985ccc6c 100644 --- a/tests/test_schism.py +++ b/tests/test_schism.py @@ -164,3 +164,25 @@ def test_parse_mirror_out(): assert max(df.etaavg) == pytest.approx(0.0227, abs=1e-3) assert df.index[0] == pd.Timestamp(2017, 10, 1) assert df.index[-1] == pd.Timestamp(2017, 10, 1, 7, 6, 40) + + +def test_parse_staout(): + path = DATA_DIR / "staout_1" + df = pyposeidon.schism.parse_staout(path) + assert isinstance(df, pd.DataFrame) + assert len(df) == 1728 + assert len(df.columns) == 1 + assert isinstance(df.index, pd.TimedeltaIndex) + assert df.index.name == "time" + assert df.index[0] == pd.Timedelta(150, unit="s") + + +def test_parse_staout_with_start_date(): + path = DATA_DIR / "staout_1" + df = pyposeidon.schism.parse_staout(path, start=pd.Timestamp("2017-10-01")) + assert isinstance(df, pd.DataFrame) + assert len(df) == 1728 + assert len(df.columns) == 1 + assert isinstance(df.index, pd.DatetimeIndex) + assert df.index.name == "time" + assert df.index[0] == pd.Timestamp("2017-10-01T00:02:30") # that's 150 seconds after midnight From 9ca079ed3d095272d2f726905b55bf917b1cf706 Mon Sep 17 00:00:00 2001 From: Panos Mavrogiorgos Date: Tue, 9 Apr 2024 09:21:31 +0300 Subject: [PATCH 2/5] schism: Support hotstart in `parse_mirror_out()`. --- pyposeidon/schism.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyposeidon/schism.py b/pyposeidon/schism.py index 9f871f94..e5a469ce 100644 --- a/pyposeidon/schism.py +++ b/pyposeidon/schism.py @@ -1946,6 +1946,7 @@ def open_thalassa(self, **kwargs): def parse_mirror_out(path: os.PathLike[str] | str) -> pd.DataFrame: etatot = [] etaavg = [] + time_steps = [] for line in pathlib.Path(path).read_text().splitlines(): if "start_year" in line: start_year = int(line.strip().split(" ")[-1]) @@ -1957,14 +1958,15 @@ def parse_mirror_out(path: os.PathLike[str] | str) -> pd.DataFrame: start_hour = float(line.strip().split(" ")[-1]) elif "time stepping begins..." in line: periods = int(line.strip().split(" ")[-1]) - elif "TIME STEP= 1;" in line: - dt = int(float(line.strip().split(" ")[-1])) + elif "TIME STEP=" in line and len(time_steps) < 2: + time_steps.append(int(float(line.strip().split(" ")[-1]))) elif "etatot" in line: parts = line.strip().split(" ") etatot.append(parts[5]) etaavg.append(parts[-1]) else: continue + dt = time_steps[1] - time_steps[0] start_date = pd.Timestamp(year=start_year, month=start_month, day=start_day, hour=start_hour) index = pd.date_range(start_date, periods=periods, freq=f"{dt}s") index = index[: len(etatot)] From 7270aebd15cbeb89cc9faac7020b707d8b273154 Mon Sep 17 00:00:00 2001 From: Panos Mavrogiorgos Date: Tue, 9 Apr 2024 09:19:24 +0300 Subject: [PATCH 3/5] fix: Remove a bunch of pandas FutureWarnings --- Tutorial/FORECAST.ipynb | 4 ++-- Tutorial/GSS.ipynb | 2 +- Tutorial/HINDCAST.ipynb | 6 +++--- Tutorial/MODEL.ipynb | 2 +- Tutorial/VALIDATION.ipynb | 2 +- docs/model.md | 12 ++++++------ pyposeidon/schism.py | 22 +++++++++++----------- tests/data/models/d3d_model.json | 2 +- tests/data/models/schism_model.json | 2 +- tests/test_d3d.py | 2 +- tests/test_d3d_cast.py | 10 +++++----- tests/test_execution_control.py | 4 ++-- tests/test_meteo_slice.py | 2 +- tests/test_schism.py | 8 ++++---- tests/test_schism_cast.py | 10 +++++----- tests/test_schism_reforecast.py | 10 +++++----- tests/test_schism_total.py | 2 +- tests/test_update.py | 2 +- 18 files changed, 52 insertions(+), 52 deletions(-) diff --git a/Tutorial/FORECAST.ipynb b/Tutorial/FORECAST.ipynb index 041a0b4d..ff65d837 100644 --- a/Tutorial/FORECAST.ipynb +++ b/Tutorial/FORECAST.ipynb @@ -241,7 +241,7 @@ "source": [ "## Setup a (re)forecast\n", "\n", - "Let's assume we have a forecasting cycle where new meteo forcings become available every `12H`." + "Let's assume we have a forecasting cycle where new meteo forcings become available every `12h`." ] }, { @@ -264,7 +264,7 @@ "# creating a time sequence of the runs\n", "start_date = pd.to_datetime(\"2018-10-1 0:0:0\")\n", "end_date = pd.to_datetime(\"2018-10-2 12:0:0\")\n", - "date_list = pd.date_range(start_date, end_date, freq=\"12H\")\n", + "date_list = pd.date_range(start_date, end_date, freq=\"12h\")\n", "date_list" ] }, diff --git a/Tutorial/GSS.ipynb b/Tutorial/GSS.ipynb index 8e318e19..077bc36e 100644 --- a/Tutorial/GSS.ipynb +++ b/Tutorial/GSS.ipynb @@ -112,7 +112,7 @@ "model={'solver_name':'schism',\n", " 'mesh_file':'./test/global/hgrid.gr3',\n", " 'start_date':'2011-01-1 0:0:0',\n", - " 'time_frame':'12H',\n", + " 'time_frame':'12h',\n", " 'meteo_source' : ['./data/era5.grib'], #path to meteo files\n", " 'dem_source' : './data/dem.nc', #path to dem file\n", " 'rpath':'./test/global/schism/', #location of calc folder\n", diff --git a/Tutorial/HINDCAST.ipynb b/Tutorial/HINDCAST.ipynb index bad40cfb..a734c807 100644 --- a/Tutorial/HINDCAST.ipynb +++ b/Tutorial/HINDCAST.ipynb @@ -205,7 +205,7 @@ " 'coastlines':ne_i,\n", " 'mesh_generator' : 'jigsaw', # set grid generator \n", " 'start_date':'2011-01-1 0:0:0',\n", - " 'time_frame':'12H',\n", + " 'time_frame':'12h',\n", " 'meteo_source' : './data/era5.grib', #path to meteo files\n", " 'dem_source' : './data/dem.nc', #path to dem file\n", " 'rpath':'./test/hindcast/20110101.00/', #location of calc folder\n", @@ -258,7 +258,7 @@ "source": [ "## Setup a hindcast\n", "\n", - "Let's assume we want to split the hindcast on a `12H` splits. Doing a hindcast doesn't, in general, entail overlaping meteo forcing. However when more than one meteo file is needed one needs to be consistent into aligning the dates accordingly. There is an extra argument that provides that functionality (see documentation). \n", + "Let's assume we want to split the hindcast on a `12h` splits. Doing a hindcast doesn't, in general, entail overlaping meteo forcing. However when more than one meteo file is needed one needs to be consistent into aligning the dates accordingly. There is an extra argument that provides that functionality (see documentation). \n", "\n", "We setup the hindcast process as" ] @@ -285,7 +285,7 @@ "# creating a time sequence of the runs\n", "start_date = pd.to_datetime(\"2011-1-1 0:0:0\")\n", "end_date = pd.to_datetime(\"2011-1-2 0:0:0\")\n", - "date_list = pd.date_range(start_date, end_date, freq=\"12H\")\n", + "date_list = pd.date_range(start_date, end_date, freq=\"12h\")\n", "date_list" ] }, diff --git a/Tutorial/MODEL.ipynb b/Tutorial/MODEL.ipynb index 0cf58969..011ee88c 100644 --- a/Tutorial/MODEL.ipynb +++ b/Tutorial/MODEL.ipynb @@ -195,7 +195,7 @@ "# 'tag':'schism', # optional tag \n", " 'mesh_generator' : 'jigsaw', # set mesh generator \n", " 'start_date':'2017-10-1 0:0:0',\n", - " 'time_frame':'12H',\n", + " 'time_frame':'12h',\n", " 'meteo_source' : ['./data/erai.grib'], #path to meteo files\n", " 'dem_source' : './data/dem.nc', #path to dem file\n", "# 'ncores': 4 , # optional number of cores\n", diff --git a/Tutorial/VALIDATION.ipynb b/Tutorial/VALIDATION.ipynb index 97e32860..838e8048 100644 --- a/Tutorial/VALIDATION.ipynb +++ b/Tutorial/VALIDATION.ipynb @@ -300,7 +300,7 @@ " 'coastlines':ne_i, # coastlines\n", " 'mesh_generator' : 'jigsaw', # set grid generator \n", " 'start_date':'2017-10-1 0:0:0',\n", - " 'time_frame':'12H',\n", + " 'time_frame':'12h',\n", " 'meteo_source' : './data/erai.grib', #path to meteo files\n", " 'dem_source' : './data/dem.nc', #path to dem file\n", " 'rpath':'./test/validation/', #location of calc folder\n", diff --git a/docs/model.md b/docs/model.md index df6d3026..b7e38032 100644 --- a/docs/model.md +++ b/docs/model.md @@ -9,10 +9,10 @@ A number of parameters is provided by the user : - *solver_name*: Select the solver to be used e.g. *schism*. -- *geometry*: +- *geometry*: In the most simple case that is a lat/lon box that defines the area of interest. - *coastlines*: - A coastlines *GeoDataFrame* or *shapefile* providing boundaries to the mesh. + A coastlines *GeoDataFrame* or *shapefile* providing boundaries to the mesh. - *mesh_generator*: Set the backend for creating a mesh e.g. `jigsaw`. - *start_date*: @@ -33,7 +33,7 @@ dic = { "coastlines": "/path/to/coastal/shapefile.shp", "mesh_generator": "jigsaw", "start_date": "2017-10-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "meteo_source": ["/path/to/meteo/file.grib"], "dem_source": "./path/to/dem/file.nc", } @@ -80,7 +80,7 @@ b.get_output_data() # integrate output ``` and the data are available as - + ```py b.data.Dataset # output Dataset ``` @@ -94,7 +94,7 @@ If a model is created by `pyposeidon` there is a `json` file that describes the a = pyposeidon.model.read('./path/to/schism_model.json') a.execute() #execute it again ``` - + When a model is created by other means, it can still be incorporated into `pyposeidon` with ```py @@ -102,4 +102,4 @@ c = pm.set(solver_name='schism', rfolder = './path/to/folder/', load_mesh=True, load_meteo=True) c.mesh.Dataset c.meteo.Dataset -``` \ No newline at end of file +``` diff --git a/pyposeidon/schism.py b/pyposeidon/schism.py index e5a469ce..6ce34faa 100644 --- a/pyposeidon/schism.py +++ b/pyposeidon/schism.py @@ -266,7 +266,7 @@ def force(self, **kwargs): if hasattr(self, "meteo"): # add 1 hour for Schism issue with end time ap = self.meteo.Dataset.isel(time=-1) - ap["time"] = ap.time.values + pd.to_timedelta("1H") + ap["time"] = ap.time.values + pd.to_timedelta("1h") self.meteo.Dataset = xr.concat([self.meteo.Dataset, ap], dim="time") @@ -859,7 +859,7 @@ def global2local(self, **kwargs): f, header=None, nrows=1, - delim_whitespace=True, + sep="\s+", names=[ "ns_global", "ne_global", @@ -899,7 +899,7 @@ def global2local(self, **kwargs): header=None, nrows=nels[i], names=["local", "global_n"], - delim_whitespace=True, + sep="\s+", ) elems = pd.concat(frames, keys=keys) @@ -921,7 +921,7 @@ def global2local(self, **kwargs): header=None, nrows=nq[i], names=["local", "global_n"], - delim_whitespace=True, + sep="\s+", ) nodes = pd.concat(nframes, keys=keys) @@ -943,7 +943,7 @@ def global2local(self, **kwargs): header=None, nrows=nw[i], names=["local", "global_n"], - delim_whitespace=True, + sep="\s+", ) re = pd.concat(wframes, keys=keys) @@ -955,7 +955,7 @@ def global2local(self, **kwargs): skiprows=nels[0] + nq[0] + nw[0] + 6, header=None, nrows=1, - delim_whitespace=True, + sep="\s+", names=[ "start_year", "start_month", @@ -970,7 +970,7 @@ def global2local(self, **kwargs): skiprows=nels[0] + nq[0] + nw[0] + 7, header=None, nrows=1, - delim_whitespace=True, + sep="\s+", names=[ "nrec", "dtout", @@ -996,7 +996,7 @@ def global2local(self, **kwargs): skiprows=nels[0] + nq[0] + nw[0] + 8, header=None, nrows=2, - delim_whitespace=True, + sep="\s+", ) h2 = h2.T @@ -1014,7 +1014,7 @@ def global2local(self, **kwargs): skiprows=nels[i] + nq[i] + nw[i] + 11, header=None, nrows=nq[i], - delim_whitespace=True, + sep="\s+", names=["lon", "lat", "depth", "kbp00"], ) @@ -1042,7 +1042,7 @@ def global2local(self, **kwargs): skiprows=nels[i] + nq[i] + nw[i] + nq[i] + 11, header=None, nrows=nels[i], - delim_whitespace=True, + sep="\s+", names=["type", "a", "b", "c", "d"], ) @@ -1877,7 +1877,7 @@ def get_station_sim_data(self, **kwargs): try: # get the station flags - flags = pd.read_csv(os.path.join(path, "station.in"), header=None, nrows=1, delim_whitespace=True).T + flags = pd.read_csv(os.path.join(path, "station.in"), header=None, nrows=1, sep="\s+").T except FileNotFoundError: logger.error("no station.in file present") return diff --git a/tests/data/models/d3d_model.json b/tests/data/models/d3d_model.json index 8baeec6a..396774b9 100644 --- a/tests/data/models/d3d_model.json +++ b/tests/data/models/d3d_model.json @@ -11,7 +11,7 @@ "lat_max": 70, "start_date": "2018-10-01T00:00:00", "end_date": "2018-10-01T12:00:00", - "time_frame": "12H", + "time_frame": "12h", "rdate": "2018-10-01T00:00:00", "tag": "d3d", "resolution": 0.2, diff --git a/tests/data/models/schism_model.json b/tests/data/models/schism_model.json index 427d9a95..1d2eff47 100644 --- a/tests/data/models/schism_model.json +++ b/tests/data/models/schism_model.json @@ -12,7 +12,7 @@ "mesh_file": "/home/panos/Prog/poseidon/pyPoseidon/tests/data/hgrid.gr3", "manning": 0.12, "windrot": 1e-05, - "time_frame": "36H", + "time_frame": "36h", "dem_source": "/home/panos/Prog/poseidon/pyPoseidon/tests/data/dem.nc", "meteo_source": [ "/home/panos/Prog/poseidon/pyPoseidon/tests/data/uvp_2018100100.grib", diff --git a/tests/test_d3d.py b/tests/test_d3d.py index 6262d263..cecc54cf 100644 --- a/tests/test_d3d.py +++ b/tests/test_d3d.py @@ -10,7 +10,7 @@ case1 = { "geometry": {"lon_min": -30, "lon_max": -10.0, "lat_min": 60.0, "lat_max": 70.0}, "start_date": "2018-10-1", - "time_frame": "12H", + "time_frame": "12h", "solver_name": "d3d", "resolution": 0.2, # grid resoltuion "map_step": 20, # step for output of map field in d3d diff --git a/tests/test_d3d_cast.py b/tests/test_d3d_cast.py index eb271dca..66d7c940 100644 --- a/tests/test_d3d_cast.py +++ b/tests/test_d3d_cast.py @@ -26,7 +26,7 @@ case = { "geometry": {"lon_min": -30, "lon_max": -10.0, "lat_min": 60.0, "lat_max": 70.0}, "start_date": "2018-10-1", - "time_frame": "12H", + "time_frame": "12h", "solver_name": "d3d", "resolution": 0.1, # grid resoltuion "map_step": 60, # step for output of map field in d3d @@ -42,7 +42,7 @@ check = { "geometry": {"lon_min": -30, "lon_max": -10.0, "lat_min": 60.0, "lat_max": 70.0}, "start_date": "2018-10-1", - "time_frame": "36H", + "time_frame": "36h", "solver_name": "d3d", "resolution": 0.1, # grid resoltuion "map_step": 60, # step for output of map field in d3d @@ -67,7 +67,7 @@ def d3d(tmpdir): # creating a time sequence of the runs start_date = pd.to_datetime("2018-10-1 0:0:0") end_date = pd.to_datetime("2018-10-2 0:0:0") - date_list = pd.date_range(start_date, end_date, freq="12H") + date_list = pd.date_range(start_date, end_date, freq="12h") # creating a sequence of folder to store the runs. In this case we name them after the date attribute. # NOTE that the first folder is the fisrt run already perfomed!! @@ -76,9 +76,9 @@ def d3d(tmpdir): # set meteo files meteo = [] for date in date_list: - end_date = pd.to_datetime(date) + pd.to_timedelta("12H") + end_date = pd.to_datetime(date) + pd.to_timedelta("12h") end_date = end_date.strftime(format="%Y-%m-%d %H:%M:%S") - dr = pd.date_range(date, end_date, freq="12H") + dr = pd.date_range(date, end_date, freq="12h") names = ["uvp_" + datetime.datetime.strftime(x, "%Y%m%d%H") + ".grib" for x in dr] dur = [(DATA_DIR / name).as_posix() for name in names] meteo.append(dur) diff --git a/tests/test_execution_control.py b/tests/test_execution_control.py index 7891bba3..c1ac4ab9 100644 --- a/tests/test_execution_control.py +++ b/tests/test_execution_control.py @@ -16,7 +16,7 @@ "solver_name": "schism", "mesh_file": MESH_FILE, "start_date": "2017-10-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "meteo_source": [(DATA_DIR / "erai.grib").as_posix()], # meteo file "update": ["model"], # update only model } @@ -26,7 +26,7 @@ "mesh_file": MESH_FILE, "epath": "/wrong_path/", "start_date": "2017-10-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "meteo_source": [(DATA_DIR / "erai.grib").as_posix()], # meteo file "update": ["model"], # update only model } diff --git a/tests/test_meteo_slice.py b/tests/test_meteo_slice.py index be0ea83c..66c739fe 100644 --- a/tests/test_meteo_slice.py +++ b/tests/test_meteo_slice.py @@ -28,7 +28,7 @@ def test_meteo(tmpdir, name): g = xr.open_dataset(ifile) ts = "-".join(g.time.attrs["base_date"].astype(str)[:3]) time_r = pd.to_datetime(ts) - times = time_r + pd.to_timedelta(g.time.values, unit="D").round("H") + times = time_r + pd.to_timedelta(g.time.values, unit="D").round("h") g = g.assign_coords({"time": times}) ma.append(g) diff --git a/tests/test_schism.py b/tests/test_schism.py index 985ccc6c..d1449154 100644 --- a/tests/test_schism.py +++ b/tests/test_schism.py @@ -21,7 +21,7 @@ "windrot": 0.00001, "tag": "test", "start_date": "2017-10-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "meteo_source": [(DATA_DIR / "erai.grib").as_posix()], # meteo file "dem_source": DEM_FILE, "update": ["all"], # update only meteo, keep dem @@ -68,7 +68,7 @@ "windrot": 0.00001, "tag": "test", "start_date": "2011-1-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "meteo_source": [(DATA_DIR / "era5.grib").as_posix()], # meteo file "dem_source": DEM_FILE, "update": ["all"], # update only meteo, keep dem @@ -92,7 +92,7 @@ "windrot": 0.00001, "tag": "test", "start_date": "2011-1-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "meteo_source": [(DATA_DIR / "era5.grib").as_posix()], # meteo file "dem_source": DEM_FILE, "monitor": True, @@ -143,7 +143,7 @@ def test_schism_meteo_split_by(tmpdir): { "rpath": tmpdir, "meteo_split_by": "1D", - "time_frame": "144H", + "time_frame": "144h", "update": ["meteo"], } ) diff --git a/tests/test_schism_cast.py b/tests/test_schism_cast.py index 5cd4fcad..2d054cc9 100644 --- a/tests/test_schism_cast.py +++ b/tests/test_schism_cast.py @@ -33,7 +33,7 @@ "windrot": 0.00001, "tag": "schism", "start_date": "2018-10-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "dem_source": DEM_FILE, "meteo_source": METEO_FILES_1, "meteo_merge": "last", # combine meteo @@ -60,7 +60,7 @@ "windrot": 0.00001, "tag": "schism", "start_date": "2018-10-1 0:0:0", - "time_frame": "36H", + "time_frame": "36h", "dem_source": DEM_FILE, "meteo_source": METEO_FILES_2, "meteo_merge": "last", # combine meteo @@ -152,7 +152,7 @@ def test_schism_cast_workflow(tmpdir): # creating a time sequence of the runs start_date = pd.to_datetime("2018-10-1 0:0:0") end_date = pd.to_datetime("2018-10-2 0:0:0") - date_list = pd.date_range(start_date, end_date, freq="12H") + date_list = pd.date_range(start_date, end_date, freq="12h") # creating a sequence of folder to store the runs. In this case we name them after the date attribute. # NOTE that the first folder is the fisrt run already perfomed!! @@ -161,9 +161,9 @@ def test_schism_cast_workflow(tmpdir): # creating a sequence of folder from which we read the meteo. meteo = [] for date in date_list: - end_date = pd.to_datetime(date) + pd.to_timedelta("12H") + end_date = pd.to_datetime(date) + pd.to_timedelta("12h") end_date = end_date.strftime(format="%Y-%m-%d %H:%M:%S") - dr = pd.date_range(date, end_date, freq="12H") + dr = pd.date_range(date, end_date, freq="12h") names = ["uvp_" + datetime.datetime.strftime(x, "%Y%m%d%H") + ".grib" for x in dr] dur = [(DATA_DIR / name).as_posix() for name in names] meteo.append(dur) diff --git a/tests/test_schism_reforecast.py b/tests/test_schism_reforecast.py index 4b90ff42..28d96054 100644 --- a/tests/test_schism_reforecast.py +++ b/tests/test_schism_reforecast.py @@ -34,7 +34,7 @@ "windrot": 0.00001, "tag": "schism", "start_date": "2018-10-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "dem_source": DEM_FILE, "meteo_source": METEO_FILES_1, "meteo_merge": "first", # combine meteo @@ -62,7 +62,7 @@ "windrot": 0.00001, "tag": "schism", "start_date": "2018-10-1 0:0:0", - "time_frame": "36H", + "time_frame": "36h", "dem_source": DEM_FILE, "update": ["all"], # update only meteo, keep dem "parameters": { @@ -91,7 +91,7 @@ def test_schism_reforecast_workflow(tmpdir): # creating a time sequence of the runs start_date = pd.to_datetime("2018-10-1 0:0:0") end_date = pd.to_datetime("2018-10-2 0:0:0") - date_list = pd.date_range(start_date, end_date, freq="12H") + date_list = pd.date_range(start_date, end_date, freq="12h") # creating a sequence of folder to store the runs. In this case we name them after the date attribute. # NOTE that the first folder is the fisrt run already perfomed!! @@ -100,9 +100,9 @@ def test_schism_reforecast_workflow(tmpdir): # creating a sequence of folder from which we read the meteo. meteo = [] for date in date_list: - prev_date = pd.to_datetime(date) - pd.to_timedelta("12H") + prev_date = pd.to_datetime(date) - pd.to_timedelta("12h") prev_date = prev_date.strftime(format="%Y-%m-%d %H:%M:%S") - dr = pd.date_range(prev_date, date, freq="12H") + dr = pd.date_range(prev_date, date, freq="12h") names = ["uvp_" + datetime.datetime.strftime(x, "%Y%m%d%H") + ".grib" for x in dr] dur = [(DATA_DIR / name).as_posix() for name in names] meteo.append(dur) diff --git a/tests/test_schism_total.py b/tests/test_schism_total.py index 578aa41e..c1360ee5 100644 --- a/tests/test_schism_total.py +++ b/tests/test_schism_total.py @@ -33,7 +33,7 @@ def test_schism(tmpdir, window): "windrot": 0.00001, "tag": "test", "start_date": "2017-10-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "mesh_generator": "gmsh", "meteo_source": [DATA_DIR / "erai.grib"], # meteo file "dem_source": DEM_FILE, diff --git a/tests/test_update.py b/tests/test_update.py index 060af66b..790e9d0a 100644 --- a/tests/test_update.py +++ b/tests/test_update.py @@ -34,7 +34,7 @@ def test_update_selector(tmpdir, flag, dem, meteo, mesh): "windrot": 0.00001, "tag": "test", "start_date": "2017-10-1 0:0:0", - "time_frame": "12H", + "time_frame": "12h", "meteo_source": meteo, # meteo file "dem_source": dem, "parameters": { From 8002a13f1d17fa29fb2aafdc85f8cd3972976768 Mon Sep 17 00:00:00 2001 From: Panos Mavrogiorgos Date: Tue, 9 Apr 2024 13:51:16 +0300 Subject: [PATCH 4/5] deps: Add pyogrio as a primary dependency. --- locks/requirements-ci.txt | 3 +- locks/requirements-full.txt | 3 +- locks/requirements-viz.txt | 5 ++-- locks/requirements.txt | 5 ++-- poetry.lock | 55 +++++++++++++++++++++++++++++++++---- pyproject.toml | 3 +- 6 files changed, 60 insertions(+), 14 deletions(-) diff --git a/locks/requirements-ci.txt b/locks/requirements-ci.txt index 6c228e53..22cec9b1 100644 --- a/locks/requirements-ci.txt +++ b/locks/requirements-ci.txt @@ -49,7 +49,7 @@ importlib-metadata==7.1.0 ; python_version >= "3.9" and python_version < "3.12" importlib-resources==6.4.0 ; python_version >= "3.9" and python_version < "4.0" iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "4" jinja2==3.1.3 ; python_version >= "3.9" and python_version < "4" -joblib==1.3.2 ; python_version >= "3.9" and python_version < "4" +joblib==1.4.0 ; python_version >= "3.9" and python_version < "4" kiwisolver==1.4.5 ; python_version >= "3.9" and python_version < "4" limits==3.10.1 ; python_version >= "3.9" and python_version < "4.0" llvmlite==0.42.0 ; python_version >= "3.9" and python_version < "4" @@ -74,6 +74,7 @@ pydantic-core==2.16.3 ; python_version >= "3.9" and python_version < "4.0" pydantic==2.6.4 ; python_version >= "3.9" and python_version < "4.0" pydap==3.4.1 ; python_version >= "3.9" and python_version < "4" pykdtree==1.3.11 ; python_version >= "3.9" and python_version < "4" +pyogrio==0.7.2 ; python_version >= "3.9" and python_version < "4" pyparsing==3.1.2 ; python_version >= "3.9" and python_version < "4" pyproj==3.6.1 ; python_version >= "3.9" and python_version < "4" pyresample==1.28.2 ; python_version >= "3.9" and python_version < "4" diff --git a/locks/requirements-full.txt b/locks/requirements-full.txt index b0cce941..2bcb9285 100644 --- a/locks/requirements-full.txt +++ b/locks/requirements-full.txt @@ -82,7 +82,7 @@ itk-numerics==5.3.0 ; python_version >= "3.9" and python_version < "4" itkwidgets==0.32.6 ; python_version >= "3.9" and python_version < "4" jedi==0.19.1 ; python_version >= "3.9" and python_version < "4" jinja2==3.1.3 ; python_version >= "3.9" and python_version < "4" -joblib==1.3.2 ; python_version >= "3.9" and python_version < "4" +joblib==1.4.0 ; python_version >= "3.9" and python_version < "4" jsonschema-specifications==2023.12.1 ; python_version >= "3.9" and python_version < "4" jsonschema==4.21.1 ; python_version >= "3.9" and python_version < "4" jupyter-client==8.6.1 ; python_version >= "3.9" and python_version < "4" @@ -150,6 +150,7 @@ pyface==8.0.0 ; python_version >= "3.9" and python_version < "4" pygments==2.17.2 ; python_version >= "3.9" and python_version < "4" pykdtree==1.3.11 ; python_version >= "3.9" and python_version < "4" pymdown-extensions==10.7.1 ; python_version >= "3.9" and python_version < "4" +pyogrio==0.7.2 ; python_version >= "3.9" and python_version < "4" pyparsing==3.1.2 ; python_version >= "3.9" and python_version < "4" pyproj==3.6.1 ; python_version >= "3.9" and python_version < "4" pyresample==1.28.2 ; python_version >= "3.9" and python_version < "4" diff --git a/locks/requirements-viz.txt b/locks/requirements-viz.txt index 0132312d..1f3af139 100644 --- a/locks/requirements-viz.txt +++ b/locks/requirements-viz.txt @@ -12,7 +12,6 @@ beautifulsoup4==4.12.3 ; python_version >= "3.9" and python_version < "4" bleach==6.1.0 ; python_version >= "3.9" and python_version < "4" bokeh==3.4.0 ; python_version >= "3.9" and python_version < "4" cartopy==0.22.0 ; python_version >= "3.9" and python_version < "4" -catalogue==2.0.10 ; python_version >= "3.9" and python_version < "4" certifi==2024.2.2 ; python_version >= "3.9" and python_version < "4" cffi==1.16.0 ; python_version >= "3.9" and python_version < "4" cfgrib==0.9.11.0 ; python_version >= "3.9" and python_version < "4" @@ -75,7 +74,7 @@ itk-numerics==5.3.0 ; python_version >= "3.9" and python_version < "4" itkwidgets==0.32.6 ; python_version >= "3.9" and python_version < "4" jedi==0.19.1 ; python_version >= "3.9" and python_version < "4" jinja2==3.1.3 ; python_version >= "3.9" and python_version < "4" -joblib==1.3.2 ; python_version >= "3.9" and python_version < "4" +joblib==1.4.0 ; python_version >= "3.9" and python_version < "4" jsonschema-specifications==2023.12.1 ; python_version >= "3.9" and python_version < "4" jsonschema==4.21.1 ; python_version >= "3.9" and python_version < "4" jupyter-client==8.6.1 ; python_version >= "3.9" and python_version < "4" @@ -132,6 +131,7 @@ pydap==3.4.1 ; python_version >= "3.9" and python_version < "4" pyface==8.0.0 ; python_version >= "3.9" and python_version < "4" pygments==2.17.2 ; python_version >= "3.9" and python_version < "4" pykdtree==1.3.11 ; python_version >= "3.9" and python_version < "4" +pyogrio==0.7.2 ; python_version >= "3.9" and python_version < "4" pyparsing==3.1.2 ; python_version >= "3.9" and python_version < "4" pyproj==3.6.1 ; python_version >= "3.9" and python_version < "4" pyresample==1.28.2 ; python_version >= "3.9" and python_version < "4" @@ -159,7 +159,6 @@ sniffio==1.3.1 ; python_version >= "3.9" and python_version < "4.0" snuggs==1.4.7 ; python_version >= "3.9" and python_version < "4" soupsieve==2.5 ; python_version >= "3.9" and python_version < "4" spatialpandas==0.4.10 ; python_version >= "3.9" and python_version < "4" -srsly==2.4.8 ; python_version >= "3.9" and python_version < "4" stack-data==0.6.3 ; python_version >= "3.9" and python_version < "4" terminado==0.18.1 ; python_version >= "3.9" and python_version < "4" tinycss2==1.2.1 ; python_version >= "3.9" and python_version < "4" diff --git a/locks/requirements.txt b/locks/requirements.txt index 70764594..0640aaf6 100644 --- a/locks/requirements.txt +++ b/locks/requirements.txt @@ -5,7 +5,6 @@ asciitree==0.3.3 ; python_version >= "3.9" and python_version < "4" attrs==23.2.0 ; python_version >= "3.9" and python_version < "4" beautifulsoup4==4.12.3 ; python_version >= "3.9" and python_version < "4" cartopy==0.22.0 ; python_version >= "3.9" and python_version < "4" -catalogue==2.0.10 ; python_version >= "3.9" and python_version < "4" certifi==2024.2.2 ; python_version >= "3.9" and python_version < "4" cffi==1.16.0 ; python_version >= "3.9" and python_version < "4" cfgrib==0.9.11.0 ; python_version >= "3.9" and python_version < "4" @@ -44,7 +43,7 @@ idna==3.6 ; python_version >= "3.9" and python_version < "4" importlib-metadata==7.1.0 ; python_version >= "3.9" and python_version < "3.12" importlib-resources==6.4.0 ; python_version >= "3.9" and python_version < "4.0" jinja2==3.1.3 ; python_version >= "3.9" and python_version < "4" -joblib==1.3.2 ; python_version >= "3.9" and python_version < "4" +joblib==1.4.0 ; python_version >= "3.9" and python_version < "4" kiwisolver==1.4.5 ; python_version >= "3.9" and python_version < "4" limits==3.10.1 ; python_version >= "3.9" and python_version < "4.0" llvmlite==0.42.0 ; python_version >= "3.9" and python_version < "4" @@ -66,6 +65,7 @@ pydantic-core==2.16.3 ; python_version >= "3.9" and python_version < "4.0" pydantic==2.6.4 ; python_version >= "3.9" and python_version < "4.0" pydap==3.4.1 ; python_version >= "3.9" and python_version < "4" pykdtree==1.3.11 ; python_version >= "3.9" and python_version < "4" +pyogrio==0.7.2 ; python_version >= "3.9" and python_version < "4" pyparsing==3.1.2 ; python_version >= "3.9" and python_version < "4" pyproj==3.6.1 ; python_version >= "3.9" and python_version < "4" pyresample==1.28.2 ; python_version >= "3.9" and python_version < "4" @@ -84,7 +84,6 @@ six==1.16.0 ; python_version >= "3.9" and python_version < "4" sniffio==1.3.1 ; python_version >= "3.9" and python_version < "4.0" snuggs==1.4.7 ; python_version >= "3.9" and python_version < "4" soupsieve==2.5 ; python_version >= "3.9" and python_version < "4" -srsly==2.4.8 ; python_version >= "3.9" and python_version < "4" toolz==0.12.1 ; python_version >= "3.9" and python_version < "4" tqdm==4.66.2 ; python_version >= "3.9" and python_version < "4" typing-extensions==4.11.0 ; python_version >= "3.9" and python_version < "4.0" diff --git a/poetry.lock b/poetry.lock index 5a315067..0d50f936 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2013,13 +2013,13 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "joblib" -version = "1.3.2" +version = "1.4.0" description = "Lightweight pipelining with Python functions" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"}, - {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"}, + {file = "joblib-1.4.0-py3-none-any.whl", hash = "sha256:42942470d4062537be4d54c83511186da1fc14ba354961a2114da91efa9a4ed7"}, + {file = "joblib-1.4.0.tar.gz", hash = "sha256:1eb0dc091919cd384490de890cb5dfd538410a6d4b3b54eef09fb8c50b409b1c"}, ] [[package]] @@ -3931,6 +3931,51 @@ pyyaml = "*" [package.extras] extra = ["pygments (>=2.12)"] +[[package]] +name = "pyogrio" +version = "0.7.2" +description = "Vectorized spatial vector file format I/O using GDAL/OGR" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyogrio-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba386a02c9b5934c568b40acc95c9863f92075f6990167635e51368976569c66"}, + {file = "pyogrio-0.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:860b04ddf23b8c253ceb3621e4b0e0dc0f293eab66cb14f799a5c9f9fe0a882c"}, + {file = "pyogrio-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caaf61d473ac207f170082e602ea57c096e8dd4c4be51de58fba96f1a5944096"}, + {file = "pyogrio-0.7.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bee556ca305b7e8c68aada259d925c612131205074fb2373badafacbef610b77"}, + {file = "pyogrio-0.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:7e2c856961efdc6cb3809b97b49016cbbcee17c8a1e85fc4000b5fcb3cfcb9b1"}, + {file = "pyogrio-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5654e7c33442cbd98e7a56f705e160415d7503b2420d724d4f81b8cc88360b3e"}, + {file = "pyogrio-0.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9a8a4854c7af2c76683ce5666ee765b207901b362576465219d75deb6159821"}, + {file = "pyogrio-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a23136d1bffa9d811263807b850c6e9854201710276f09de650131e89f2486aa"}, + {file = "pyogrio-0.7.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:234b0d1d22e9680229b0618c25077a0cb2428cbbc2939b4bb9bdd8ee77e0f3e0"}, + {file = "pyogrio-0.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:33ae5aafcf3a557e107a33f5b3e878750d2e467b8cc911dc4bf261c1a602b534"}, + {file = "pyogrio-0.7.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:73577fecebeecf0d06e78c1a4bddd460a4d57c6d918affab7594c0bc72f5fa14"}, + {file = "pyogrio-0.7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f2ff58184020da39540a2f5d4a5412005a01b0c4cd03c7b8294bc670d1f3fe50"}, + {file = "pyogrio-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31112bb0b6a4a3f80ec3252d7eeb7be81045860d49fd76e297c073759450652b"}, + {file = "pyogrio-0.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:1b7197c72f034ac7187da2a8d50a063a5f1256aab732b154f11f887a7652dc3d"}, + {file = "pyogrio-0.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7e39bb6bfdd74e63ae96acced7297bbe8a157f85c0107f1cbb395d2a937f3a38"}, + {file = "pyogrio-0.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:436de39f57e8f8cc41682981518b9490d64d3a1c48bf78d415e5747c296790dc"}, + {file = "pyogrio-0.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5feeb7a0da7ee82580f6aa6508a80602413675b99c60c822929e0e8b925e0517"}, + {file = "pyogrio-0.7.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:429dcff4c36f0e0a15ba4a20f2d4478b9c6d095e70c4bcc007a536ea420a1a93"}, + {file = "pyogrio-0.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:f219c1edb010d0248891a3d27d15faf17c91cfe69daef84d7471e22e4ed4fcff"}, + {file = "pyogrio-0.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cc6db2e5dc50dfe23554d10502920eafa0648c365725e552aaa523432a9bf35"}, + {file = "pyogrio-0.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:be46be43c4148a3ad09da38670411485ec544a51cbd6b7d004a0eca5035023fc"}, + {file = "pyogrio-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3001efd5dfee36459d0cfdafbe91ed88fc5ae734353d771cdb75546ef1427735"}, + {file = "pyogrio-0.7.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:892fdab0e1c44c0125254d92928081c14f93ac553f371addc2c9a1d4bde41cad"}, + {file = "pyogrio-0.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:d5fc2304aeb927564f77caaa4da9a47e2d77a8ceb1c624ea84c505140886b221"}, + {file = "pyogrio-0.7.2.tar.gz", hash = "sha256:33afb7d211c6434613f24174722347a5cb11d22a212f28c817f67c89d30d0c0d"}, +] + +[package.dependencies] +certifi = "*" +numpy = "*" +packaging = "*" + +[package.extras] +benchmark = ["pytest-benchmark"] +dev = ["Cython"] +geopandas = ["geopandas"] +test = ["pytest", "pytest-cov"] + [[package]] name = "pyparsing" version = "3.1.2" @@ -5634,4 +5679,4 @@ viz = ["geoviews", "holoviews", "hvplot", "ipykernel", "itkwidgets", "matplotlib [metadata] lock-version = "2.0" python-versions = ">=3.9, <4" -content-hash = "f6734571de43e91e2c251ad643d9cce4f4fa71d9f38f042f4f1742e5506e0bc8" +content-hash = "3b82313d68e68c02a7b42b03ee5678adaec056d90fb8bfc773ecc1858c069f9e" diff --git a/pyproject.toml b/pyproject.toml index 5096fc99..adfd79ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,7 +72,7 @@ mayavi = { version = "*", optional = true } numba = { version = ">=0.51", optional = true } spatialpandas = { version = "*", optional = true } vtk = {version = "*", optional = true} -srsly = "*" +pyogrio = "*" [tool.poetry.extras] viz = [ @@ -91,6 +91,7 @@ viz = [ [tool.poetry.group.dev.dependencies] black = "<25.0" bump2version = "^1.0" +srsly = "*" [tool.poetry.group.test.dependencies] pytest-cov = "*" From ad6bf14648d1d9f8945e587e97e0bb9533ec0095 Mon Sep 17 00:00:00 2001 From: Panos Mavrogiorgos Date: Wed, 10 Apr 2024 00:30:54 +0300 Subject: [PATCH 5/5] gmsh: Inline gmsh import This will make it easier to import pyposeidon on EuroHPC --- pyposeidon/mgmsh.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pyposeidon/mgmsh.py b/pyposeidon/mgmsh.py index f44abeab..37cfe0fb 100644 --- a/pyposeidon/mgmsh.py +++ b/pyposeidon/mgmsh.py @@ -16,7 +16,6 @@ import os from tqdm.auto import tqdm import sys -import gmsh import subprocess import shapely import shlex @@ -67,6 +66,8 @@ def get_ibounds(df, mm): def read_msh(filename, **kwargs): + import gmsh + model = gmsh.model factory = model.geo @@ -800,6 +801,8 @@ def make_bgmesh(df, fpos, **kwargs): def make_gmsh(df, **kwargs): + import gmsh + logger.info("Creating mesh") model = gmsh.model @@ -1006,6 +1009,8 @@ def make_gmsh(df, **kwargs): def make_gmsh_3d(df, **kwargs): + import gmsh + logger.info("Creating global mesh") model = gmsh.model