Changeset f66f990 in flex_extract.git for documentation/Sphinx/build/html/_modules
- Timestamp:
- Mar 8, 2019, 10:00:34 AM (5 years ago)
- Branches:
- master, ctbto, dev
- Children:
- b4a4777
- Parents:
- 8778c5a
- Location:
- documentation/Sphinx/build/html/_modules
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
documentation/Sphinx/build/html/_modules/ControlFile.html
r2625ca8 rf66f990 212 212 <span class="n">check_acctime</span><span class="p">,</span> <span class="n">check_accmaxstep</span><span class="p">,</span> <span class="n">check_time</span><span class="p">,</span> 213 213 <span class="n">check_logicals_type</span><span class="p">,</span> <span class="n">check_len_type_time_step</span><span class="p">,</span> 214 <span class="n">check_addpar</span><span class="p">,</span> <span class="n">check_job_chunk</span><span class="p"> )</span>214 <span class="n">check_addpar</span><span class="p">,</span> <span class="n">check_job_chunk</span><span class="p">,</span> <span class="n">check_number</span><span class="p">)</span> 215 215 216 216 <span class="c1"># ------------------------------------------------------------------------------</span> … … 246 246 <span class="sd"> The time step in hours. Default value is None.</span> 247 247 248 <span class="sd"> basetime : str</span>248 <span class="sd"> basetime : int</span> 249 249 <span class="sd"> The time for a half day retrieval. The 12 hours upfront are to be</span> 250 250 <span class="sd"> retrieved. Default value is None.</span> … … 456 456 <span class="sd"> Default value is 0.</span> 457 457 458 <span class="sd"> oper : int</span> 459 <span class="sd"> Switch to prepare the operational job script. Start date, end date and</span> 460 <span class="sd"> basetime will be prepared with environment variables.</span> 461 <span class="sd"> Default value is 0.</span> 462 458 463 <span class="sd"> request : int</span> 459 464 <span class="sd"> Switch to select between just retrieving the data (0), writing the mars</span> … … 466 471 <span class="sd"> Default value is 0.</span> 467 472 468 <span class="sd"> ecapi : boolean</span> 469 <span class="sd"> Tells wether the ECMWF Web APi was able to load or not.</span> 473 <span class="sd"> ec_api : boolean</span> 474 <span class="sd"> Tells wether the ECMWF Web API was able to load or not.</span> 475 <span class="sd"> Default value is None.</span> 476 477 <span class="sd"> cds_api : boolean</span> 478 <span class="sd"> Tells wether the CDS API was able to load or not.</span> 470 479 <span class="sd"> Default value is None.</span> 471 480 … … 562 571 <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="o">=</span> <span class="kc">None</span> 563 572 <span class="bp">self</span><span class="o">.</span><span class="n">debug</span> <span class="o">=</span> <span class="mi">0</span> 573 <span class="bp">self</span><span class="o">.</span><span class="n">oper</span> <span class="o">=</span> <span class="mi">0</span> 564 574 <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="mi">0</span> 565 575 <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="o">=</span> <span class="mi">0</span> 566 <span class="bp">self</span><span class="o">.</span><span class="n">ecapi</span> <span class="o">=</span> <span class="kc">None</span> 576 <span class="bp">self</span><span class="o">.</span><span class="n">ec_api</span> <span class="o">=</span> <span class="kc">None</span> 577 <span class="bp">self</span><span class="o">.</span><span class="n">cds_api</span> <span class="o">=</span> <span class="kc">None</span> 567 578 <span class="bp">self</span><span class="o">.</span><span class="n">purefc</span> <span class="o">=</span> <span class="mi">0</span> 568 579 <span class="bp">self</span><span class="o">.</span><span class="n">rrint</span> <span class="o">=</span> <span class="mi">0</span> … … 570 581 <span class="bp">self</span><span class="o">.</span><span class="n">logicals</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'gauss'</span><span class="p">,</span> <span class="s1">'omega'</span><span class="p">,</span> <span class="s1">'omegadiff'</span><span class="p">,</span> <span class="s1">'eta'</span><span class="p">,</span> <span class="s1">'etadiff'</span><span class="p">,</span> 571 582 <span class="s1">'dpdeta'</span><span class="p">,</span> <span class="s1">'cwc'</span><span class="p">,</span> <span class="s1">'wrf'</span><span class="p">,</span> <span class="s1">'grib2flexpart'</span><span class="p">,</span> <span class="s1">'ecstorage'</span><span class="p">,</span> 572 <span class="s1">'ectrans'</span><span class="p">,</span> <span class="s1">'debug'</span><span class="p">,</span> <span class="s1">' request'</span><span class="p">,</span> <span class="s1">'public'</span><span class="p">,</span> <span class="s1">'purefc'</span><span class="p">,</span>573 <span class="s1">' rrint'</span><span class="p">]</span>583 <span class="s1">'ectrans'</span><span class="p">,</span> <span class="s1">'debug'</span><span class="p">,</span> <span class="s1">'oper'</span><span class="p">,</span> <span class="s1">'request'</span><span class="p">,</span> <span class="s1">'public'</span><span class="p">,</span> 584 <span class="s1">'purefc'</span><span class="p">,</span> <span class="s1">'rrint'</span><span class="p">]</span> 574 585 575 586 <span class="bp">self</span><span class="o">.</span><span class="n">_read_controlfile</span><span class="p">()</span> … … 628 639 <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][:</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">var</span> <span class="o">+</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span> 629 640 <span class="k">else</span><span class="p">:</span> 630 <span class="n">my_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> 631 <span class="s1">'Could not find variable '</span> 641 <span class="n">my_error</span><span class="p">(</span><span class="s1">'Could not find variable '</span> 632 642 <span class="o">+</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' while reading '</span> <span class="o">+</span> 633 643 <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> … … 752 762 <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span><span class="p">)</span> 753 763 754 <span class=" n">check_basetime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">)</span>764 <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">=</span> <span class="n">check_basetime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">)</span> 755 765 756 766 <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span> <span class="o">=</span> <span class="n">check_levels</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">)</span> … … 777 787 <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span> <span class="o">=</span> <span class="n">check_acctype</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">acctype</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span> 778 788 779 <span class="bp">self</span><span class="o">.</span><span class="n">acctime</span> <span class="o">=</span> <span class="n">check_acctime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">acctime</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n"> acctype</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">purefc</span><span class="p">)</span>780 781 <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span> <span class="o">=</span> <span class="n">check_accmaxstep</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n"> acctype</span><span class="p">,</span>789 <span class="bp">self</span><span class="o">.</span><span class="n">acctime</span> <span class="o">=</span> <span class="n">check_acctime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">acctime</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">marsclass</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">purefc</span><span class="p">)</span> 790 791 <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span> <span class="o">=</span> <span class="n">check_accmaxstep</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">marsclass</span><span class="p">,</span> 782 792 <span class="bp">self</span><span class="o">.</span><span class="n">purefc</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">)</span> 783 793 … … 792 802 793 803 <span class="bp">self</span><span class="o">.</span><span class="n">job_chunk</span> <span class="o">=</span> <span class="n">check_job_chunk</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">job_chunk</span><span class="p">)</span> 804 805 <span class="bp">self</span><span class="o">.</span><span class="n">number</span> <span class="o">=</span> <span class="n">check_number</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">number</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">)</span> 794 806 795 807 <span class="k">return</span></div> … … 850 862 <div role="contentinfo"> 851 863 <p> 852 © Copyright 2018, Anne Philipp and Leopold Haimberger 864 © Copyright 2018, Anne Philipp and Leopold Haimberger. 853 865 854 866 </p> … … 869 881 870 882 871 872 873 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 874 <script type="text/javascript" src="../_static/jquery.js"></script> 875 <script type="text/javascript" src="../_static/underscore.js"></script> 876 <script type="text/javascript" src="../_static/doctools.js"></script> 877 883 <script type="text/javascript"> 884 var DOCUMENTATION_OPTIONS = { 885 URL_ROOT:'../', 886 VERSION:'7.1 alpha', 887 LANGUAGE:'None', 888 COLLAPSE_INDEX:false, 889 FILE_SUFFIX:'.html', 890 HAS_SOURCE: true, 891 SOURCELINK_SUFFIX: '.txt' 892 }; 893 </script> 894 <script type="text/javascript" src="../_static/jquery.js"></script> 895 <script type="text/javascript" src="../_static/underscore.js"></script> 896 <script type="text/javascript" src="../_static/doctools.js"></script> 897 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 878 898 879 899 -
documentation/Sphinx/build/html/_modules/EcFlexpart.html
r2625ca8 rf66f990 220 220 <span class="n">codes_get_values</span><span class="p">,</span> <span class="n">codes_set_values</span><span class="p">,</span> <span class="n">codes_set</span><span class="p">,</span> 221 221 <span class="n">codes_write</span><span class="p">,</span> <span class="n">codes_release</span><span class="p">,</span> <span class="n">codes_new_from_index</span><span class="p">,</span> 222 <span class="n">codes_index_release</span><span class="p">,</span> <span class="n">codes_index_get</span><span class="p">)</span> 222 <span class="n">codes_index_release</span><span class="p">,</span> <span class="n">codes_index_get</span><span class="p">,</span> <span class="n">codes_get_array</span><span class="p">,</span> 223 <span class="n">codes_set_array</span><span class="p">,</span> <span class="n">codes_grib_new_from_file</span><span class="p">)</span> 223 224 224 225 <span class="c1"># software specific classes and modules from flex_extract</span> … … 228 229 <span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">init128</span><span class="p">,</span> <span class="n">to_param_id</span><span class="p">,</span> <span class="n">silent_remove</span><span class="p">,</span> <span class="n">product</span><span class="p">,</span> 229 230 <span class="n">my_error</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">,</span> <span class="n">get_informations</span><span class="p">,</span> <span class="n">get_dimensions</span><span class="p">,</span> 230 <span class="n">execute_subprocess</span><span class="p"> )</span>231 <span class="n">execute_subprocess</span><span class="p">,</span> <span class="n">to_param_id_with_tablenumber</span><span class="p">)</span> 231 232 <span class="kn">from</span> <span class="nn">MarsRetrieval</span> <span class="k">import</span> <span class="n">MarsRetrieval</span> 233 <span class="kn">from</span> <span class="nn">UioFiles</span> <span class="k">import</span> <span class="n">UioFiles</span> 232 234 <span class="kn">import</span> <span class="nn">mods.disaggregation</span> <span class="k">as</span> <span class="nn">disaggregation</span> 233 235 … … 259 261 <span class="sd"> data.</span> 260 262 261 <span class="sd"> basetime : str</span>263 <span class="sd"> basetime : int</span> 262 264 <span class="sd"> The time for a half day retrieval. The 12 hours upfront are to be</span> 263 265 <span class="sd"> retrieved.</span> … … 429 431 <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> 430 432 <span class="k">for</span> <span class="n">ty</span><span class="p">,</span> <span class="n">st</span><span class="p">,</span> <span class="n">ti</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">ftype</span><span class="p">,</span> <span class="n">fstep</span><span class="p">,</span> <span class="n">ftime</span><span class="p">):</span> 431 <span class="n">btlist</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class=" mi">24</span><span class="p">)</span>432 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class=" s1">'12'</span><span class="p">:</span>433 <span class="n">btlist</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">ftime</span><span class="p">))</span> 434 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">12</span><span class="p">:</span> 433 435 <span class="n">btlist</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">12</span><span class="p">]</span> 434 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class=" s1">'00'</span><span class="p">:</span>436 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 435 437 <span class="n">btlist</span> <span class="o">=</span> <span class="p">[</span><span class="mi">13</span><span class="p">,</span> <span class="mi">14</span><span class="p">,</span> <span class="mi">15</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">18</span><span class="p">,</span> <span class="mi">19</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">21</span><span class="p">,</span> <span class="mi">22</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span> 436 438 … … 440 442 <span class="c1"># (int(c.time[i]) in btlist or c.purefc):</span> 441 443 442 <span class="k">if</span> <span class="p">(</span><span class="n b">int</span><span class="p">(</span><span class="n">ti</span><span class="p">)</span> <span class="ow">in</span> <span class="n">btlist</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span>444 <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="ow">in</span> <span class="n">btlist</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> 443 445 444 446 <span class="k">if</span> <span class="p">((</span><span class="n">ty</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'AN'</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">ti</span><span class="p">)</span> <span class="o">%</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> … … 458 460 <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'steps'</span><span class="p">]</span> <span class="o">+=</span> <span class="n">st</span> 459 461 <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> 462 460 463 <span class="k">return</span> 461 464 … … 553 556 <span class="k">elif</span> <span class="ow">not</span> <span class="n">gauss</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">eta</span><span class="p">:</span> 554 557 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/U/V'</span> 555 <span class="k">else</span><span class="p">:</span> 556 <span class="nb">print</span><span class="p">(</span><span class="s1">'Warning: Collecting etadot and parameters for gaussian grid </span><span class="se">\</span>557 <span class="s1"> is a very costly parameter combination, </span><span class="se">\</span>558 <span class="s1">use this combination only for debugging!'</span><span class="p">)</span>559 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'GG__SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Q'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> \558 <span class="k">else</span><span class="p">:</span> <span class="c1"># GAUSS and ETA</span> 559 <span class="nb">print</span><span class="p">(</span><span class="s1">'Warning: Collecting etadot and parameters for gaussian grid '</span> 560 <span class="s1">'is a very costly parameter combination, '</span> 561 <span class="s1">'use this combination only for debugging!'</span><span class="p">)</span> 562 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'GG__SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Q'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> 560 563 <span class="s1">'</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">((</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resol</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)]</span> 561 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'GG__ML'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'U/V/D/ 77'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">glevelist</span><span class="p">,</span> \564 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'GG__ML'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'U/V/D/ETADOT'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">glevelist</span><span class="p">,</span> 562 565 <span class="s1">'</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">((</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resol</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)]</span> 563 566 … … 569 572 570 573 <span class="c1"># ADDITIONAL FIELDS FOR FLEXPART-WRF MODEL (IF QUESTIONED)</span> 571 <span class="c1"># -----------------------------------------------------------------------</span>574 <span class="c1"># -----------------------------------------------------------------------</span> 572 575 <span class="k">if</span> <span class="n">wrf</span><span class="p">:</span> 573 576 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/Z/VO'</span> 574 577 <span class="k">if</span> <span class="s1">'/D'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span> 575 578 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/D'</span> 579 576 580 <span class="n">wrf_sfc</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'SP'</span><span class="p">,</span><span class="s1">'SKT'</span><span class="p">,</span><span class="s1">'SST'</span><span class="p">,</span><span class="s1">'CI'</span><span class="p">,</span><span class="s1">'STL1'</span><span class="p">,</span><span class="s1">'STL2'</span><span class="p">,</span> <span class="s1">'STL3'</span><span class="p">,</span><span class="s1">'STL4'</span><span class="p">,</span> 577 581 <span class="s1">'SWVL1'</span><span class="p">,</span><span class="s1">'SWVL2'</span><span class="p">,</span><span class="s1">'SWVL3'</span><span class="p">,</span><span class="s1">'SWVL4'</span><span class="p">]</span> … … 602 606 603 607 <span class="sd"> '''</span> 604 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG_acc_SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LSP/CP/SSHF/EWSS/NSSS/SSR"</span><span class="p">,</span> \608 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG_acc_SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LSP/CP/SSHF/EWSS/NSSS/SSR"</span><span class="p">,</span> 605 609 <span class="s1">'SFC'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">]</span> 606 610 <span class="k">return</span> … … 815 819 816 820 <span class="k">for</span> <span class="n">ftype</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">:</span> 817 <span class="c1"># f kcontains field types such as</span>821 <span class="c1"># ftype contains field types such as</span> 818 822 <span class="c1"># [AN, FC, PF, CV]</span> 819 <span class="c1"># fv contains all of the items of the belonging key</span>820 <span class="c1"># [times, steps]</span>821 823 <span class="k">for</span> <span class="n">pk</span><span class="p">,</span> <span class="n">pv</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> 822 824 <span class="c1"># pk contains one of these keys of params</span> … … 836 838 <span class="n">pk</span><span class="p">,</span> 837 839 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> 838 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'param'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> 840 <span class="n">table128</span> <span class="o">=</span> <span class="n">init128</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_GRIBTABLE</span><span class="p">)</span> 841 <span class="n">ids</span> <span class="o">=</span> <span class="n">to_param_id_with_tablenumber</span><span class="p">(</span><span class="n">pv</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">table128</span><span class="p">)</span> 842 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'param'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ids</span> 839 843 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'levtype'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> 840 844 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'levelist'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pv</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> … … 859 863 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'area'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span> 860 864 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'gaussian'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'reduced'</span> 865 <span class="k">if</span> <span class="n">ftype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'FC'</span> <span class="ow">and</span> \ 866 <span class="s1">'acc'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]:</span> 867 <span class="k">if</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> 868 <span class="nb">int</span><span class="p">(</span><span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'step'</span><span class="p">][</span><span class="mi">0</span><span class="p">]))</span> <span class="o">></span> <span class="mi">23</span><span class="p">:</span> 869 <span class="n">dates</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> 870 <span class="n">sdate</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">dates</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 871 <span class="n">sdate</span> <span class="o">=</span> <span class="n">sdate</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 872 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'/'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> 873 <span class="p">[</span><span class="n">sdate</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)]</span> <span class="o">+</span> 874 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">][</span><span class="mi">1</span><span class="p">:])</span> 875 876 <span class="nb">print</span><span class="p">(</span><span class="s1">'CHANGED FC start date to '</span> <span class="o">+</span> 877 <span class="n">sdate</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> <span class="o">+</span> 878 <span class="s1">' to accomodate TIME='</span> <span class="o">+</span> 879 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> 880 <span class="s1">', STEP='</span> <span class="o">+</span> 881 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> 861 882 862 883 <span class="c1"># ------ on demand path --------------------------------------------------</span> 863 <span class="k">if</span> <span class=" ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span>884 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> 864 885 <span class="c1"># ******* start retrievement</span> 865 886 <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> … … 871 892 872 893 <span class="n">enddate</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> 873 <span class="n">elimit</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">enddate</span> <span class="o">+</span> <span class=" bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">,</span>894 <span class="n">elimit</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">enddate</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">),</span> 874 895 <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 875 896 876 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class=" s1">'12'</span><span class="p">:</span>897 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">12</span><span class="p">:</span> 877 898 <span class="c1"># -------------- flux data ----------------------------</span> 878 899 <span class="k">if</span> <span class="s1">'acc'</span> <span class="ow">in</span> <span class="n">pk</span><span class="p">:</span> 879 880 <span class="c1"># Strategy:</span>881 <span class="c1"># if maxtime-elimit >= 24h reduce date by 1,</span>882 <span class="c1"># if 12h <= maxtime-elimit<12h reduce time for last date</span>883 <span class="c1"># if maxtime-elimit<12h reduce step for last time</span>884 <span class="c1"># A split of the MARS job into 2 is likely necessary.</span>885 886 887 900 <span class="n">startdate</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> 888 901 <span class="n">enddate</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">elimit</span> <span class="o">-</span> <span class="n">t24h</span><span class="p">,</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> … … 909 922 <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> 910 923 911 <span class="k">el se</span><span class="p">:</span> <span class="c1"># basetime = 0</span>924 <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 912 925 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> \ 913 926 <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">elimit</span> <span class="o">-</span> <span class="n">t24h</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> … … 915 928 <span class="n">timesave</span> <span class="o">=</span> <span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">])</span> 916 929 917 <span class="k">if</span> <span class="s1">'/'</span> <span class="ow">in</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]:</span> 930 <span class="k">if</span> <span class="p">(</span><span class="s1">'/'</span> <span class="ow">in</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="ow">and</span> 931 <span class="n">pk</span> <span class="o">!=</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span> 932 <span class="s1">'acc'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pk</span> <span class="p">)</span> <span class="p">:</span> 918 933 <span class="n">times</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> 919 934 <span class="n">steps</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'step'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> 920 <span class="k">while</span> <span class="p">(</span><span class="n">pk</span> <span class="o">!=</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span> 921 <span class="s1">'acc'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pk</span> <span class="ow">and</span> 922 <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">times</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> <span class="o"><=</span> <span class="mi">12</span><span class="p">):</span> 935 936 <span class="k">while</span> <span class="nb">int</span><span class="p">(</span><span class="n">times</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o"><=</span> <span class="mi">12</span><span class="p">:</span> 923 937 <span class="n">times</span> <span class="o">=</span> <span class="n">times</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> 924 925 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">times</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> 926 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'/'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">times</span><span class="p">)</span> 927 <span class="k">else</span><span class="p">:</span> 928 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="n">times</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> 929 930 <span class="c1"># ******* start retrievement</span> 931 <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> 938 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">times</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> 939 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'/'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">times</span><span class="p">)</span> 940 <span class="k">else</span><span class="p">:</span> 941 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="n">times</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> 932 942 933 943 <span class="k">if</span> <span class="p">(</span><span class="n">pk</span> <span class="o">!=</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span> … … 943 953 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">])</span> 944 954 945 <span class="c1"># ******* start retrievement</span> 946 <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> 955 <span class="c1"># ******* start retrievement</span> 956 <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> 957 <span class="k">else</span><span class="p">:</span> 958 <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'ERROR: Basetime has an invalid value '</span> 959 <span class="s1">'-> </span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">basetime</span><span class="p">)))</span> 947 960 948 961 <span class="k">if</span> <span class="n">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> … … 1069 1082 <span class="c1"># get the values of the keys which are used for distinct access</span> 1070 1083 <span class="c1"># of grib messages via product</span> 1071 <span class="n">index_keys</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"date"</span><span class="p">,</span> <span class="s2">"time"</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">]</span> 1084 <span class="k">if</span> <span class="s1">'/'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">number</span><span class="p">:</span> 1085 <span class="c1"># more than one ensemble member is selected</span> 1086 <span class="n">index_keys</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"number"</span><span class="p">,</span> <span class="s2">"date"</span><span class="p">,</span> <span class="s2">"time"</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">]</span> 1087 <span class="k">else</span><span class="p">:</span> 1088 <span class="n">index_keys</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"date"</span><span class="p">,</span> <span class="s2">"time"</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">]</span> 1072 1089 <span class="n">iid</span><span class="p">,</span> <span class="n">index_vals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mk_index_values</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> 1073 1090 <span class="n">inputfiles</span><span class="p">,</span> … … 1138 1155 <span class="n">t_m1dt</span> <span class="o">=</span> <span class="n">t_date</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="n">step</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1139 1156 <span class="n">t_m2dt</span> <span class="o">=</span> <span class="n">t_date</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="n">step</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1140 <span class="n">t_enddate</span> <span class="o">=</span> <span class="kc">None</span> 1157 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> 1158 <span class="n">t_enddate</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">),</span> 1159 <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 1160 <span class="k">else</span><span class="p">:</span> 1161 <span class="n">t_enddate</span> <span class="o">=</span> <span class="n">t_date</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1162 1163 <span class="c1"># if necessary, add ensemble member number to filename suffix</span> 1164 <span class="c1"># otherwise, add empty string</span> 1165 <span class="k">if</span> <span class="s1">'number'</span> <span class="ow">in</span> <span class="n">index_keys</span><span class="p">:</span> 1166 <span class="n">index_number</span> <span class="o">=</span> <span class="n">index_keys</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">'number'</span><span class="p">)</span> 1167 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">index_vals</span><span class="p">[</span><span class="n">index_number</span><span class="p">])</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> 1168 <span class="n">numbersuffix</span> <span class="o">=</span> <span class="s1">'.N</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">prod</span><span class="p">[</span><span class="n">index_number</span><span class="p">]))</span> 1169 <span class="k">else</span><span class="p">:</span> 1170 <span class="n">numbersuffix</span> <span class="o">=</span> <span class="s1">''</span> 1141 1171 1142 1172 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> 1143 1173 <span class="n">fnout</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> 1144 1174 <span class="n">t_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">.%H'</span><span class="p">)</span> <span class="o">+</span> 1145 <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">)))</span> 1175 <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> <span class="o">+</span> 1176 <span class="n">numbersuffix</span><span class="p">)</span> 1146 1177 <span class="n">gnout</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> 1147 1178 <span class="n">t_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">.%H'</span><span class="p">)</span> <span class="o">+</span> 1148 <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">)))</span> 1179 <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> <span class="o">+</span> 1180 <span class="n">numbersuffix</span><span class="p">)</span> 1149 1181 <span class="n">hnout</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> 1150 1182 <span class="n">t_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">.%H'</span><span class="p">)</span> <span class="o">+</span> 1151 <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="p">))</span> 1183 <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="p">)</span> <span class="o">+</span> 1184 <span class="n">numbersuffix</span><span class="p">)</span> 1152 1185 <span class="k">else</span><span class="p">:</span> 1153 1186 <span class="n">fnout</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> 1154 <span class="n">t_m2dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">) )</span>1187 <span class="n">t_m2dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> <span class="o">+</span> <span class="n">numbersuffix</span><span class="p">)</span> 1155 1188 <span class="n">gnout</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> 1156 <span class="n">t_m1dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">) )</span>1189 <span class="n">t_m1dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> <span class="o">+</span> <span class="n">numbersuffix</span><span class="p">)</span> 1157 1190 <span class="n">hnout</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> 1158 <span class="n">t_dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">) )</span>1191 <span class="n">t_dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> <span class="o">+</span> <span class="n">numbersuffix</span><span class="p">)</span> 1159 1192 1160 1193 <span class="nb">print</span><span class="p">(</span><span class="s2">"outputfile = "</span> <span class="o">+</span> <span class="n">fnout</span><span class="p">)</span> … … 1260 1293 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">f_handle</span><span class="p">)</span> 1261 1294 1262 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> 1263 <span class="n">t_enddate</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">,</span> 1264 <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 1265 <span class="k">else</span><span class="p">:</span> 1266 <span class="n">t_enddate</span> <span class="o">=</span> <span class="n">t_date</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1267 1268 <span class="c1"># squeeze out information of last two steps</span> 1269 <span class="c1"># contained in deac_vals[parId]</span> 1270 <span class="c1"># Note that deac_vals[parId][0] has not been popped</span> 1271 <span class="c1"># in this case</span> 1272 1273 <span class="k">if</span> <span class="n">step</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span> <span class="ow">or</span> \ 1274 <span class="n">t_dt</span> <span class="o">==</span> <span class="n">t_enddate</span><span class="p">:</span> 1275 <span class="c1"># last step</span> 1276 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> 1277 <span class="n">values</span> <span class="o">=</span> <span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span> 1278 <span class="n">codes_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> 1279 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'stepRange'</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span> 1280 <span class="c1">#truedatetime = t_m2dt + timedelta(hours=2*int(c.dtime))</span> 1281 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">h_handle</span><span class="p">)</span> 1282 <span class="k">else</span><span class="p">:</span> 1283 <span class="n">values</span> <span class="o">=</span> <span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span> 1284 <span class="n">codes_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> 1285 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'stepRange'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> 1286 <span class="n">truedatetime</span> <span class="o">=</span> <span class="n">t_m2dt</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1287 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> <span class="n">truedatetime</span><span class="o">.</span><span class="n">hour</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> 1288 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">truedatetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)))</span> 1289 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">h_handle</span><span class="p">)</span> 1290 1291 <span class="k">if</span> <span class="n">parId</span> <span class="o">==</span> <span class="mi">142</span> <span class="ow">or</span> <span class="n">parId</span> <span class="o">==</span> <span class="mi">143</span><span class="p">:</span> 1292 <span class="n">values</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">darain</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">])))</span> 1293 <span class="k">else</span><span class="p">:</span> 1294 <span class="n">values</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">dapoly</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">])))</span> 1295 1296 <span class="c1"># step before last step</span> 1297 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> 1298 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'stepRange'</span><span class="p">,</span> <span class="n">step</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1299 <span class="c1">#truedatetime = t_m2dt + timedelta(hours=int(c.dtime))</span> 1300 <span class="n">codes_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> 1301 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">g_handle</span><span class="p">)</span> 1302 <span class="k">else</span><span class="p">:</span> 1303 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'stepRange'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> 1304 <span class="n">truedatetime</span> <span class="o">=</span> <span class="n">t_m2dt</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1305 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> <span class="n">truedatetime</span><span class="o">.</span><span class="n">hour</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> 1306 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">truedatetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)))</span> 1307 <span class="n">codes_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> 1308 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">g_handle</span><span class="p">)</span> 1295 <span class="c1"># squeeze out information of last two steps</span> 1296 <span class="c1"># contained in deac_vals[parId]</span> 1297 <span class="c1"># Note that deac_vals[parId][0] has not been popped</span> 1298 <span class="c1"># in this case</span> 1299 1300 <span class="k">if</span> <span class="n">step</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span> <span class="ow">or</span> \ 1301 <span class="n">t_dt</span> <span class="o">==</span> <span class="n">t_enddate</span><span class="p">:</span> 1302 <span class="c1"># last step</span> 1303 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> 1304 <span class="n">values</span> <span class="o">=</span> <span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span> 1305 <span class="n">codes_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> 1306 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'stepRange'</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span> 1307 <span class="c1">#truedatetime = t_m2dt + timedelta(hours=2*int(c.dtime))</span> 1308 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">h_handle</span><span class="p">)</span> 1309 <span class="k">else</span><span class="p">:</span> 1310 <span class="n">values</span> <span class="o">=</span> <span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span> 1311 <span class="n">codes_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> 1312 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'stepRange'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> 1313 <span class="n">truedatetime</span> <span class="o">=</span> <span class="n">t_m2dt</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1314 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> <span class="n">truedatetime</span><span class="o">.</span><span class="n">hour</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> 1315 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">truedatetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)))</span> 1316 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">h_handle</span><span class="p">)</span> 1317 1318 <span class="k">if</span> <span class="n">parId</span> <span class="o">==</span> <span class="mi">142</span> <span class="ow">or</span> <span class="n">parId</span> <span class="o">==</span> <span class="mi">143</span><span class="p">:</span> 1319 <span class="n">values</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">darain</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">])))</span> 1320 <span class="k">else</span><span class="p">:</span> 1321 <span class="n">values</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">dapoly</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">])))</span> 1322 1323 <span class="c1"># step before last step</span> 1324 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> 1325 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'stepRange'</span><span class="p">,</span> <span class="n">step</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1326 <span class="c1">#truedatetime = t_m2dt + timedelta(hours=int(c.dtime))</span> 1327 <span class="n">codes_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> 1328 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">g_handle</span><span class="p">)</span> 1329 <span class="k">else</span><span class="p">:</span> 1330 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'stepRange'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> 1331 <span class="n">truedatetime</span> <span class="o">=</span> <span class="n">t_m2dt</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1332 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> <span class="n">truedatetime</span><span class="o">.</span><span class="n">hour</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> 1333 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">truedatetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)))</span> 1334 <span class="n">codes_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> 1335 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">g_handle</span><span class="p">)</span> 1309 1336 1310 1337 <span class="n">codes_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> … … 1367 1394 1368 1395 <span class="sd"> '''</span> 1369 <span class="nb">print</span><span class="p">(</span><span class="s1">'... disaggregation o rprecipitation with new method.'</span><span class="p">)</span>1396 <span class="nb">print</span><span class="p">(</span><span class="s1">'... disaggregation of precipitation with new method.'</span><span class="p">)</span> 1370 1397 <span class="n">lsp_new_np</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ni</span> <span class="o">*</span> <span class="n">nj</span><span class="p">,</span> <span class="n">nt</span> <span class="o">*</span> <span class="mi">3</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span> 1371 1398 <span class="n">cp_new_np</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ni</span> <span class="o">*</span> <span class="n">nj</span><span class="p">,</span> <span class="n">nt</span> <span class="o">*</span> <span class="mi">3</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span> … … 1397 1424 <span class="n">filename1</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'_1'</span> 1398 1425 <span class="n">filename2</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'_2'</span> 1399 1400 <span class="c1"># collect for final processing</span>1401 <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">fluxfilename</span><span class="p">))</span>1402 <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">filename1</span><span class="p">))</span>1403 <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">filename2</span><span class="p">))</span>1404 1426 1405 1427 <span class="c1"># write original time step to flux file as usual</span> … … 1506 1528 <span class="sd"> '''</span> 1507 1529 1530 <span class="c1"># generate start and end timestamp of the retrieval period</span> 1531 <span class="n">start_period</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 1532 <span class="n">start_period</span> <span class="o">=</span> <span class="n">start_period</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">step</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> 1533 <span class="n">end_period</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 1534 <span class="n">end_period</span> <span class="o">=</span> <span class="n">end_period</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">step</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span> 1535 1508 1536 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> 1509 1537 <span class="n">table128</span> <span class="o">=</span> <span class="n">init128</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_GRIBTABLE</span><span class="p">)</span> … … 1525 1553 <span class="c1"># get the values of the keys which are used for distinct access</span> 1526 1554 <span class="c1"># of grib messages via product</span> 1527 <span class="n">index_keys</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"date"</span><span class="p">,</span> <span class="s2">"time"</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">]</span> 1555 <span class="k">if</span> <span class="s1">'/'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">number</span><span class="p">:</span> 1556 <span class="c1"># more than one ensemble member is selected</span> 1557 <span class="n">index_keys</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"number"</span><span class="p">,</span> <span class="s2">"date"</span><span class="p">,</span> <span class="s2">"time"</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">]</span> 1558 <span class="k">else</span><span class="p">:</span> 1559 <span class="n">index_keys</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"date"</span><span class="p">,</span> <span class="s2">"time"</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">]</span> 1528 1560 <span class="n">iid</span><span class="p">,</span> <span class="n">index_vals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mk_index_values</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> 1529 1561 <span class="n">inputfiles</span><span class="p">,</span> … … 1568 1600 <span class="n">cdate_hour</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 1569 1601 1602 <span class="c1"># skip all temporary times</span> 1603 <span class="c1"># which are outside the retrieval period</span> 1604 <span class="k">if</span> <span class="n">timestamp</span> <span class="o"><</span> <span class="n">start_period</span> <span class="ow">or</span> \ 1605 <span class="n">timestamp</span> <span class="o">></span> <span class="n">end_period</span><span class="p">:</span> 1606 <span class="k">continue</span> 1607 1570 1608 <span class="c1"># if the timestamp is out of basetime start/end date period,</span> 1571 1609 <span class="c1"># skip this specific product</span> 1572 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> 1573 <span class="n">start_time</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">,</span> 1610 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> 1611 <span class="n">time_delta</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="mi">12</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> 1612 <span class="n">start_time</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">),</span> 1574 1613 <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> <span class="o">-</span> <span class="n">time_delta</span> 1575 <span class="n">end_time</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="n ">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">,</span>1614 <span class="n">end_time</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">),</span> 1576 1615 <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 1577 1616 <span class="k">if</span> <span class="n">timestamp</span> <span class="o"><</span> <span class="n">start_time</span> <span class="ow">or</span> <span class="n">timestamp</span> <span class="o">></span> <span class="n">end_time</span><span class="p">:</span> … … 1657 1696 <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> 1658 1697 <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="s1">'fort.21'</span><span class="p">)</span><span class="o">.</span><span class="n">st_size</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">eta</span><span class="p">:</span> 1659 <span class="nb">print</span><span class="p">(</span><span class="s1">'Parameter 77 (etadot) is missing, most likely it is </span><span class="se">\</span>1660 <span class="s1"> not available for this type or date/time</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>1698 <span class="nb">print</span><span class="p">(</span><span class="s1">'Parameter 77 (etadot) is missing, most likely it is '</span> 1699 <span class="s1">'not available for this type or date / time</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> 1661 1700 <span class="nb">print</span><span class="p">(</span><span class="s1">'Check parameters CLASS, TYPE, STREAM, START_DATE</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> 1662 <span class="n">my_error</span><span class="p">(</span><span class=" n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'fort.21 is empty while parameter eta </span><span class="se">\</span>1663 <span class="s1">is set to 1 in CONTROL file'</span><span class="p">)</span>1664 <span class="c1"># ============================================================================================</span>1701 <span class="n">my_error</span><span class="p">(</span><span class="s1">'fort.21 is empty while parameter eta '</span> 1702 <span class="s1">'is set to 1 in CONTROL file'</span><span class="p">)</span> 1703 <span class="c1"># ============================================================================================</span> 1665 1704 <span class="c1"># write out all output to log file before starting fortran programm</span> 1666 1705 <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span> … … 1672 1711 1673 1712 <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">pwd</span><span class="p">)</span> 1674 <span class="c1"># ============================================================================================</span>1713 <span class="c1"># ============================================================================================</span> 1675 1714 <span class="c1"># create name of final output file, e.g. EN13040500 (ENYYMMDDHH)</span> 1676 1715 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> … … 1678 1717 <span class="k">else</span><span class="p">:</span> 1679 1718 <span class="n">suffix</span> <span class="o">=</span> <span class="n">cdate_hour</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">10</span><span class="p">]</span> 1719 1720 <span class="c1"># if necessary, add ensemble member number to filename suffix</span> 1721 <span class="k">if</span> <span class="s1">'number'</span> <span class="ow">in</span> <span class="n">index_keys</span><span class="p">:</span> 1722 <span class="n">index_number</span> <span class="o">=</span> <span class="n">index_keys</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">'number'</span><span class="p">)</span> 1723 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">index_vals</span><span class="p">[</span><span class="n">index_number</span><span class="p">])</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> 1724 <span class="n">suffix</span> <span class="o">=</span> <span class="n">suffix</span> <span class="o">+</span> <span class="s1">'.N</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">prod</span><span class="p">[</span><span class="n">index_number</span><span class="p">]))</span> 1725 1680 1726 <span class="n">fnout</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">suffix</span><span class="p">)</span> 1681 1727 <span class="nb">print</span><span class="p">(</span><span class="s2">"outputfile = "</span> <span class="o">+</span> <span class="n">fnout</span><span class="p">)</span> 1682 1728 <span class="c1"># collect for final processing</span> 1683 1729 <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">fnout</span><span class="p">))</span> 1684 <span class="c1">#============================================================================================</span> 1730 <span class="c1"># get additional precipitation subgrid data if available</span> 1731 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">rrint</span><span class="p">:</span> 1732 <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">fnout</span> <span class="o">+</span> <span class="s1">'_1'</span><span class="p">))</span> 1733 <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">fnout</span> <span class="o">+</span> <span class="s1">'_2'</span><span class="p">))</span> 1734 <span class="c1"># ============================================================================================</span> 1685 1735 <span class="c1"># create outputfile and copy all data from intermediate files</span> 1686 1736 <span class="c1"># to the outputfile (final GRIB input files for FLEXPART)</span> … … 1702 1752 <span class="n">shutil</span><span class="o">.</span><span class="n">copyfileobj</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'fort.25'</span><span class="p">),</span> 1703 1753 <span class="s1">'rb'</span><span class="p">),</span> <span class="n">fout</span><span class="p">)</span> 1704 <span class="c1"># ============================================================================================</span>1754 <span class="c1"># ============================================================================================</span> 1705 1755 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> 1706 1756 <span class="n">fwrf</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> 1707 1757 1708 1758 <span class="n">codes_index_release</span><span class="p">(</span><span class="n">iid</span><span class="p">)</span> 1759 1760 <span class="k">return</span></div> 1761 1762 1763 <div class="viewcode-block" id="EcFlexpart.calc_extra_elda"><a class="viewcode-back" href="../api.html#EcFlexpart.EcFlexpart.calc_extra_elda">[docs]</a> <span class="k">def</span> <span class="nf">calc_extra_elda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">prefix</span><span class="p">):</span> 1764 <span class="sd">''' Calculates extra ensemble members for ELDA - Stream.</span> 1765 1766 <span class="sd"> Parameters</span> 1767 <span class="sd"> ----------</span> 1768 <span class="sd"> path : str</span> 1769 <span class="sd"> Path to the output files.</span> 1770 1771 <span class="sd"> prefix : str</span> 1772 <span class="sd"> The prefix of the output filenames as defined in Control file.</span> 1773 1774 <span class="sd"> Return</span> 1775 <span class="sd"> ------</span> 1776 1777 <span class="sd"> '''</span> 1778 <span class="c1"># max number</span> 1779 <span class="n">maxnum</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">number</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> 1780 1781 <span class="c1"># get a list of all prepared output files with control forecast (CF)</span> 1782 <span class="n">CF_filelist</span> <span class="o">=</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s1">'*.N000'</span><span class="p">)</span> 1783 1784 <span class="k">for</span> <span class="n">cffile</span> <span class="ow">in</span> <span class="n">CF_filelist</span><span class="o">.</span><span class="n">files</span><span class="p">:</span> 1785 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">cffile</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> 1786 <span class="n">cfvalues</span><span class="o">=</span><span class="p">[]</span> 1787 <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> 1788 <span class="n">fid</span> <span class="o">=</span> <span class="n">codes_grib_new_from_file</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> 1789 <span class="k">if</span> <span class="n">fid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> 1790 <span class="k">break</span> 1791 <span class="n">cfvalues</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">codes_get_array</span><span class="p">(</span><span class="n">fid</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">))</span> 1792 <span class="n">codes_release</span><span class="p">(</span><span class="n">fid</span><span class="p">)</span> 1793 1794 <span class="n">filename</span> <span class="o">=</span> <span class="n">cffile</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'N000'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> 1795 <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">maxnum</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span> <span class="c1"># max number nehmen</span> 1796 1797 <span class="c1"># read an ensemble member</span> 1798 <span class="n">g</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span> <span class="o">+</span> <span class="s1">'N</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="s1">'rb'</span><span class="p">)</span> 1799 <span class="c1"># create file for newly calculated ensemble member</span> 1800 <span class="n">h</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span> <span class="o">+</span> <span class="s1">'N</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="n">maxnum</span><span class="p">),</span> <span class="s1">'wb'</span><span class="p">)</span> 1801 <span class="c1"># number of message in grib file</span> 1802 <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> 1803 <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> 1804 <span class="n">gid</span> <span class="o">=</span> <span class="n">codes_grib_new_from_file</span><span class="p">(</span><span class="n">g</span><span class="p">)</span> 1805 <span class="k">if</span> <span class="n">gid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> 1806 <span class="k">break</span> 1807 <span class="n">values</span> <span class="o">=</span> <span class="n">codes_get_array</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">)</span> 1808 <span class="n">codes_set_array</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">,</span> 1809 <span class="n">values</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="p">(</span><span class="n">values</span><span class="o">-</span><span class="n">cfvalues</span><span class="p">[</span><span class="n">j</span><span class="p">]))</span> 1810 <span class="n">codes_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'number'</span><span class="p">,</span> <span class="n">i</span><span class="o">+</span><span class="n">maxnum</span><span class="p">)</span> 1811 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">h</span><span class="p">)</span> 1812 <span class="n">codes_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> 1813 <span class="n">j</span> <span class="o">+=</span> <span class="mi">1</span> 1814 1815 <span class="n">g</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> 1816 <span class="n">h</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> 1817 <span class="nb">print</span><span class="p">(</span><span class="s1">'wrote '</span> <span class="o">+</span> <span class="n">filename</span> <span class="o">+</span> <span class="s1">'N</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="n">maxnum</span><span class="p">))</span> 1818 <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> 1819 <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">filename</span> <span class="o">+</span> <span class="s1">'N</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="n">maxnum</span><span class="p">)))</span> 1709 1820 1710 1821 <span class="k">return</span></div> … … 1736 1847 <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n\n</span><span class="s1">Postprocessing:</span><span class="se">\n</span><span class="s1"> Format: </span><span class="si">{}</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">format</span><span class="p">))</span> 1737 1848 1738 <span class="k">if</span> <span class=" ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">:</span>1849 <span class="k">if</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLAG_ON_ECMWFSERVER</span><span class="p">:</span> 1739 1850 <span class="nb">print</span><span class="p">(</span><span class="s1">'ecstorage: </span><span class="si">{}</span><span class="se">\n</span><span class="s1"> ecfsdir: </span><span class="si">{}</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span> 1740 1851 <span class="nb">format</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecstorage</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecfsdir</span><span class="p">))</span> … … 1758 1869 <span class="s1">'FILES FAILED!'</span><span class="p">)</span> 1759 1870 1760 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ectrans</span> <span class="ow">and</span> <span class=" ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">:</span>1871 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ectrans</span> <span class="ow">and</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLAG_ON_ECMWFSERVER</span><span class="p">:</span> 1761 1872 <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">'ectrans'</span><span class="p">,</span> <span class="s1">'-overwrite'</span><span class="p">,</span> <span class="s1">'-gateway'</span><span class="p">,</span> 1762 1873 <span class="n">c</span><span class="o">.</span><span class="n">gateway</span><span class="p">,</span> <span class="s1">'-remote'</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> … … 1764 1875 <span class="n">error_msg</span><span class="o">=</span><span class="s1">'TRANSFER TO LOCAL SERVER FAILED!'</span><span class="p">)</span> 1765 1876 1766 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ecstorage</span> <span class="ow">and</span> <span class=" ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">:</span>1877 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ecstorage</span> <span class="ow">and</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLAG_ON_ECMWFSERVER</span><span class="p">:</span> 1767 1878 <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">'ecp'</span><span class="p">,</span> <span class="s1">'-o'</span><span class="p">,</span> <span class="n">ofile</span><span class="p">,</span> 1768 1879 <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expandvars</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecfsdir</span><span class="p">)],</span> … … 1872 1983 <div role="contentinfo"> 1873 1984 <p> 1874 © Copyright 2018, Anne Philipp and Leopold Haimberger 1985 © Copyright 2018, Anne Philipp and Leopold Haimberger. 1875 1986 1876 1987 </p> … … 1891 2002 1892 2003 1893 1894 1895 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 1896 <script type="text/javascript" src="../_static/jquery.js"></script> 1897 <script type="text/javascript" src="../_static/underscore.js"></script> 1898 <script type="text/javascript" src="../_static/doctools.js"></script> 1899 2004 <script type="text/javascript"> 2005 var DOCUMENTATION_OPTIONS = { 2006 URL_ROOT:'../', 2007 VERSION:'7.1 alpha', 2008 LANGUAGE:'None', 2009 COLLAPSE_INDEX:false, 2010 FILE_SUFFIX:'.html', 2011 HAS_SOURCE: true, 2012 SOURCELINK_SUFFIX: '.txt' 2013 }; 2014 </script> 2015 <script type="text/javascript" src="../_static/jquery.js"></script> 2016 <script type="text/javascript" src="../_static/underscore.js"></script> 2017 <script type="text/javascript" src="../_static/doctools.js"></script> 2018 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 1900 2019 1901 2020 -
documentation/Sphinx/build/html/_modules/GribUtil.html
r2625ca8 rf66f990 489 489 <div role="contentinfo"> 490 490 <p> 491 © Copyright 2018, Anne Philipp and Leopold Haimberger 491 © Copyright 2018, Anne Philipp and Leopold Haimberger. 492 492 493 493 </p> … … 508 508 509 509 510 511 512 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 513 <script type="text/javascript" src="../_static/jquery.js"></script> 514 <script type="text/javascript" src="../_static/underscore.js"></script> 515 <script type="text/javascript" src="../_static/doctools.js"></script> 516 510 <script type="text/javascript"> 511 var DOCUMENTATION_OPTIONS = { 512 URL_ROOT:'../', 513 VERSION:'7.1 alpha', 514 LANGUAGE:'None', 515 COLLAPSE_INDEX:false, 516 FILE_SUFFIX:'.html', 517 HAS_SOURCE: true, 518 SOURCELINK_SUFFIX: '.txt' 519 }; 520 </script> 521 <script type="text/javascript" src="../_static/jquery.js"></script> 522 <script type="text/javascript" src="../_static/underscore.js"></script> 523 <script type="text/javascript" src="../_static/doctools.js"></script> 524 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 517 525 518 526 -
documentation/Sphinx/build/html/_modules/MarsRetrieval.html
r2625ca8 rf66f990 188 188 <span class="kn">import</span> <span class="nn">sys</span> 189 189 <span class="kn">import</span> <span class="nn">subprocess</span> 190 <span class="kn">import</span> <span class="nn">traceback</span> 190 191 191 192 <span class="c1"># software specific classes and modules from flex_extract</span> 192 193 <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../'</span><span class="p">)</span> 193 194 <span class="kn">import</span> <span class="nn">_config</span> 195 <span class="k">try</span><span class="p">:</span> 196 <span class="n">ec_api</span> <span class="o">=</span> <span class="kc">True</span> 197 <span class="kn">import</span> <span class="nn">ecmwfapi</span> 198 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 199 <span class="n">ec_api</span> <span class="o">=</span> <span class="kc">False</span> 200 201 <span class="k">try</span><span class="p">:</span> 202 <span class="n">cds_api</span> <span class="o">=</span> <span class="kc">True</span> 203 <span class="kn">import</span> <span class="nn">cdsapi</span> 204 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 205 <span class="n">cds_api</span> <span class="o">=</span> <span class="kc">False</span> 194 206 <span class="c1"># ------------------------------------------------------------------------------</span> 195 207 <span class="c1"># CLASS</span> … … 283 295 <span class="sd"> '''</span> 284 296 285 <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span> <span class="n">marsclass</span><span class="o">=</span><span class="s2">" ei"</span><span class="p">,</span> <span class="n">dataset</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span>297 <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span> <span class="n">marsclass</span><span class="o">=</span><span class="s2">"EA"</span><span class="p">,</span> <span class="n">dataset</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> 286 298 <span class="n">levtype</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">levelist</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">repres</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">date</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">resol</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> 287 299 <span class="n">stream</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">area</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">time</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">expver</span><span class="o">=</span><span class="s2">"1"</span><span class="p">,</span> … … 311 323 <span class="sd"> marsclass : str, optional</span> 312 324 <span class="sd"> Characterisation of dataset. E.g. EI (ERA-Interim),</span> 313 <span class="sd"> E4 (ERA40), OD (Operational archive), ea(ERA5).</span>314 <span class="sd"> Default is the ERA -Interim dataset "ei".</span>325 <span class="sd"> E4 (ERA40), OD (Operational archive), EA (ERA5).</span> 326 <span class="sd"> Default is the ERA5 dataset "EA".</span> 315 327 316 328 <span class="sd"> dataset : str, optional</span> … … 582 594 <div class="viewcode-block" id="MarsRetrieval.data_retrieve"><a class="viewcode-back" href="../api.html#MarsRetrieval.MarsRetrieval.data_retrieve">[docs]</a> <span class="k">def</span> <span class="nf">data_retrieve</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 583 595 <span class="sd">'''Submits a MARS retrieval. Depending on the existence of</span> 584 <span class="sd"> ECMWF Web-API it is submitted via Python or a</span>596 <span class="sd"> ECMWF Web-API or CDS API it is submitted via Python or a</span> 585 597 <span class="sd"> subprocess in the Shell. The parameter for the mars retrieval</span> 586 598 <span class="sd"> are taken from the defined class attributes.</span> … … 605 617 <span class="n">attrs</span><span class="p">[</span><span class="s1">'class'</span><span class="p">]</span> <span class="o">=</span> <span class="n">mclass</span> 606 618 607 <span class="c1"># prepare target variable as needed for the Web API mode</span>619 <span class="c1"># prepare target variable as needed for the Web API or CDS API mode</span> 608 620 <span class="c1"># within the dictionary for full access</span> 609 621 <span class="c1"># as a single variable for public access</span> … … 628 640 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">:</span> 629 641 <span class="k">try</span><span class="p">:</span> 630 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">public</span><span class="p">:</span> 631 <span class="nb">print</span><span class="p">(</span><span class="s1">'RETRIEVE PUBLIC DATA!'</span><span class="p">)</span> 642 <span class="k">if</span> <span class="n">cds_api</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">,</span> <span class="n">cdsapi</span><span class="o">.</span><span class="n">Client</span><span class="p">):</span> 643 <span class="nb">print</span><span class="p">(</span><span class="s1">'RETRIEVE ERA5 WITH CDS API!'</span><span class="p">)</span> 644 <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">retrieve</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">CDS_DATASET</span><span class="p">,</span> 645 <span class="n">attrs</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span> 646 <span class="k">elif</span> <span class="n">ec_api</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">,</span> <span class="n">ecmwfapi</span><span class="o">.</span><span class="n">ECMWFDataServer</span><span class="p">):</span> 647 <span class="nb">print</span><span class="p">(</span><span class="s1">'RETRIEVE PUBLIC DATA (NOT ERA5)!'</span><span class="p">)</span> 632 648 <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">retrieve</span><span class="p">(</span><span class="n">attrs</span><span class="p">)</span> 649 <span class="k">elif</span> <span class="n">ec_api</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">,</span> <span class="n">ecmwfapi</span><span class="o">.</span><span class="n">ECMWFService</span><span class="p">):</span> 650 <span class="nb">print</span><span class="p">(</span><span class="s1">'EXECUTE NON-PUBLIC RETRIEVAL (NOT ERA5)!'</span><span class="p">)</span> 651 <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">attrs</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span> 633 652 <span class="k">else</span><span class="p">:</span> 634 <span class="nb">print</span><span class="p">(</span><span class="s1">'EXECUTE NON-PUBLIC RETRIEVAL!'</span><span class="p">)</span> 635 <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">attrs</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span> 636 <span class="k">except</span><span class="p">:</span> 637 <span class="n">e</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> 638 <span class="nb">print</span><span class="p">(</span><span class="s2">"ERROR: "</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> 639 <span class="nb">print</span><span class="p">(</span><span class="s1">'MARS Request failed!'</span><span class="p">)</span> 640 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="n">target</span><span class="p">)</span><span class="o">.</span><span class="n">st_size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 641 <span class="nb">print</span><span class="p">(</span><span class="s1">'MARS Request returned no data - '</span> 642 <span class="s1">'please check request'</span><span class="p">)</span> 653 <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR:'</span><span class="p">)</span> 654 <span class="nb">print</span><span class="p">(</span><span class="s1">'No match for Web API instance!'</span><span class="p">)</span> 643 655 <span class="k">raise</span> <span class="ne">IOError</span> 644 <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="n">target</span><span class="p">)</span><span class="o">.</span><span class="n">st_size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 645 <span class="nb">print</span><span class="p">(</span><span class="s1">'Public MARS Request returned no data - '</span> 646 <span class="s1">'please check request'</span><span class="p">)</span> 647 <span class="k">raise</span> <span class="ne">IOError</span> 648 <span class="k">else</span><span class="p">:</span> 649 <span class="k">raise</span> <span class="ne">IOError</span> 650 <span class="c1"># MARS request via extra process in shell</span> 656 <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 657 <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n\n</span><span class="s1">MARS Request failed!'</span><span class="p">)</span> 658 <span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> 659 <span class="n">tb</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">2</span><span class="p">]</span> 660 <span class="nb">print</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span> 661 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span> 662 663 <span class="c1"># MARS request via call in shell</span> 651 664 <span class="k">else</span><span class="p">:</span> 652 665 <span class="n">request_str</span> <span class="o">=</span> <span class="s1">'ret'</span> … … 654 667 <span class="n">request_str</span> <span class="o">=</span> <span class="n">request_str</span> <span class="o">+</span> <span class="s1">','</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s1">'='</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> 655 668 <span class="n">request_str</span> <span class="o">+=</span> <span class="s1">',target="'</span> <span class="o">+</span> <span class="n">target</span> <span class="o">+</span> <span class="s1">'"'</span> 656 <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">'mars'</span><span class="p"> ],</span>669 <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">'mars'</span><span class="p">,</span> <span class="s1">'-p'</span><span class="p">],</span> 657 670 <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> 658 671 <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> … … 682 695 <div role="contentinfo"> 683 696 <p> 684 © Copyright 2018, Anne Philipp and Leopold Haimberger 697 © Copyright 2018, Anne Philipp and Leopold Haimberger. 685 698 686 699 </p> … … 701 714 702 715 703 704 705 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 706 <script type="text/javascript" src="../_static/jquery.js"></script> 707 <script type="text/javascript" src="../_static/underscore.js"></script> 708 <script type="text/javascript" src="../_static/doctools.js"></script> 709 716 <script type="text/javascript"> 717 var DOCUMENTATION_OPTIONS = { 718 URL_ROOT:'../', 719 VERSION:'7.1 alpha', 720 LANGUAGE:'None', 721 COLLAPSE_INDEX:false, 722 FILE_SUFFIX:'.html', 723 HAS_SOURCE: true, 724 SOURCELINK_SUFFIX: '.txt' 725 }; 726 </script> 727 <script type="text/javascript" src="../_static/jquery.js"></script> 728 <script type="text/javascript" src="../_static/underscore.js"></script> 729 <script type="text/javascript" src="../_static/doctools.js"></script> 730 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 710 731 711 732 -
documentation/Sphinx/build/html/_modules/UioFiles.html
r2625ca8 rf66f990 316 316 <div role="contentinfo"> 317 317 <p> 318 © Copyright 2018, Anne Philipp and Leopold Haimberger 318 © Copyright 2018, Anne Philipp and Leopold Haimberger. 319 319 320 320 </p> … … 335 335 336 336 337 338 339 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 340 <script type="text/javascript" src="../_static/jquery.js"></script> 341 <script type="text/javascript" src="../_static/underscore.js"></script> 342 <script type="text/javascript" src="../_static/doctools.js"></script> 343 337 <script type="text/javascript"> 338 var DOCUMENTATION_OPTIONS = { 339 URL_ROOT:'../', 340 VERSION:'7.1 alpha', 341 LANGUAGE:'None', 342 COLLAPSE_INDEX:false, 343 FILE_SUFFIX:'.html', 344 HAS_SOURCE: true, 345 SOURCELINK_SUFFIX: '.txt' 346 }; 347 </script> 348 <script type="text/javascript" src="../_static/jquery.js"></script> 349 <script type="text/javascript" src="../_static/underscore.js"></script> 350 <script type="text/javascript" src="../_static/doctools.js"></script> 351 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 344 352 345 353 -
documentation/Sphinx/build/html/_modules/disaggregation.html
r2625ca8 rf66f990 580 580 <div role="contentinfo"> 581 581 <p> 582 © Copyright 2018, Anne Philipp and Leopold Haimberger 582 © Copyright 2018, Anne Philipp and Leopold Haimberger. 583 583 584 584 </p> … … 599 599 600 600 601 602 603 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 604 <script type="text/javascript" src="../_static/jquery.js"></script> 605 <script type="text/javascript" src="../_static/underscore.js"></script> 606 <script type="text/javascript" src="../_static/doctools.js"></script> 607 601 <script type="text/javascript"> 602 var DOCUMENTATION_OPTIONS = { 603 URL_ROOT:'../', 604 VERSION:'7.1 alpha', 605 LANGUAGE:'None', 606 COLLAPSE_INDEX:false, 607 FILE_SUFFIX:'.html', 608 HAS_SOURCE: true, 609 SOURCELINK_SUFFIX: '.txt' 610 }; 611 </script> 612 <script type="text/javascript" src="../_static/jquery.js"></script> 613 <script type="text/javascript" src="../_static/underscore.js"></script> 614 <script type="text/javascript" src="../_static/doctools.js"></script> 615 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 608 616 609 617 -
documentation/Sphinx/build/html/_modules/get_mars_data.html
r2625ca8 rf66f990 220 220 <span class="n">inspect</span><span class="o">.</span><span class="n">getfile</span><span class="p">(</span><span class="n">inspect</span><span class="o">.</span><span class="n">currentframe</span><span class="p">())))</span> <span class="o">+</span> <span class="s1">'/../'</span><span class="p">)</span> 221 221 <span class="kn">import</span> <span class="nn">_config</span> 222 <span class="kn">from</span> <span class="nn">tools</span> <span class="k">import</span> <span class="p">(</span><span class="n"> my_error</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span>222 <span class="kn">from</span> <span class="nn">tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">setup_controldata</span><span class="p">,</span> <span class="n">my_error</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span> 223 223 <span class="n">read_ecenv</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">)</span> 224 224 <span class="kn">from</span> <span class="nn">classes.EcFlexpart</span> <span class="k">import</span> <span class="n">EcFlexpart</span> … … 227 227 228 228 <span class="k">try</span><span class="p">:</span> 229 <span class="n">ec api</span> <span class="o">=</span> <span class="kc">True</span>229 <span class="n">ec_api</span> <span class="o">=</span> <span class="kc">True</span> 230 230 <span class="kn">import</span> <span class="nn">ecmwfapi</span> 231 231 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 232 <span class="n">ecapi</span> <span class="o">=</span> <span class="kc">False</span> 232 <span class="n">ec_api</span> <span class="o">=</span> <span class="kc">False</span> 233 234 <span class="k">try</span><span class="p">:</span> 235 <span class="n">cds_api</span> <span class="o">=</span> <span class="kc">True</span> 236 <span class="kn">import</span> <span class="nn">cdsapi</span> 237 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 238 <span class="n">cds_api</span> <span class="o">=</span> <span class="kc">False</span> 233 239 <span class="c1"># ------------------------------------------------------------------------------</span> 234 240 <span class="c1"># FUNCTION</span> … … 248 254 <span class="sd"> '''</span> 249 255 250 <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_args</span><span class="p">()</span> 251 <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> 252 253 <span class="n">env_parameter</span> <span class="o">=</span> <span class="n">read_ecenv</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">)</span> 254 <span class="n">c</span><span class="o">.</span><span class="n">assign_args_to_control</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> 255 <span class="n">c</span><span class="o">.</span><span class="n">assign_envs_to_control</span><span class="p">(</span><span class="n">env_parameter</span><span class="p">)</span> 256 <span class="n">c</span><span class="o">.</span><span class="n">check_conditions</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> 257 256 <span class="n">c</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">setup_controldata</span><span class="p">()</span> 258 257 <span class="n">get_mars_data</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> 259 <span class="n">normal_exit</span><span class="p">(</span><span class=" n">c</span><span class="o">.</span><span class="n">mailops</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">queue</span><span class="p">,</span> <span class="s1">'Done!'</span><span class="p">)</span>258 <span class="n">normal_exit</span><span class="p">(</span><span class="s1">'Retrieving MARS data: Done!'</span><span class="p">)</span> 260 259 261 260 <span class="k">return</span></div> … … 278 277 279 278 <span class="sd"> '''</span> 280 <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span> <span class="o">=</span> <span class="n">ecapi</span> 279 <span class="n">c</span><span class="o">.</span><span class="n">ec_api</span> <span class="o">=</span> <span class="n">ec_api</span> 280 <span class="n">c</span><span class="o">.</span><span class="n">cds_api</span> <span class="o">=</span> <span class="n">cds_api</span> 281 281 282 282 <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">):</span> … … 335 335 336 336 <div class="viewcode-block" id="mk_server"><a class="viewcode-back" href="../api.html#get_mars_data.mk_server">[docs]</a><span class="k">def</span> <span class="nf">mk_server</span><span class="p">(</span><span class="n">c</span><span class="p">):</span> 337 <span class="sd">'''Creates server connection if ECMWF WebAPI is available.</span> 337 <span class="sd">'''Creates a server connection with available python API.</span> 338 339 <span class="sd"> Which API is used depends on availability and the dataset to be retrieved.</span> 340 <span class="sd"> The CDS API is used for ERA5 dataset no matter if the user is a member or</span> 341 <span class="sd"> a public user. ECMWF WebAPI is used for all other available datasets.</span> 338 342 339 343 <span class="sd"> Parameters</span> … … 345 349 <span class="sd"> Return</span> 346 350 <span class="sd"> ------</span> 347 <span class="sd"> server : ECMWFDataServer or ECMWFService</span> 348 <span class="sd"> Connection to ECMWF server via python interface ECMWF WebAPI.</span> 349 350 <span class="sd"> '''</span> 351 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">:</span> 351 <span class="sd"> server : ECMWFDataServer, ECMWFService or Client</span> 352 <span class="sd"> Connection to ECMWF server via python interface ECMWF WebAPI or CDS API.</span> 353 354 <span class="sd"> '''</span> 355 <span class="k">if</span> <span class="n">cds_api</span> <span class="ow">and</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">marsclass</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'EA'</span><span class="p">):</span> 356 <span class="n">server</span> <span class="o">=</span> <span class="n">cdsapi</span><span class="o">.</span><span class="n">Client</span><span class="p">()</span> 357 <span class="n">c</span><span class="o">.</span><span class="n">ec_api</span> <span class="o">=</span> <span class="kc">False</span> 358 <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">ec_api</span><span class="p">:</span> 352 359 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">public</span><span class="p">:</span> 353 360 <span class="n">server</span> <span class="o">=</span> <span class="n">ecmwfapi</span><span class="o">.</span><span class="n">ECMWFDataServer</span><span class="p">()</span> 354 361 <span class="k">else</span><span class="p">:</span> 355 362 <span class="n">server</span> <span class="o">=</span> <span class="n">ecmwfapi</span><span class="o">.</span><span class="n">ECMWFService</span><span class="p">(</span><span class="s2">"mars"</span><span class="p">)</span> 363 <span class="n">c</span><span class="o">.</span><span class="n">cds_api</span> <span class="o">=</span> <span class="kc">False</span> 356 364 <span class="k">else</span><span class="p">:</span> 357 365 <span class="n">server</span> <span class="o">=</span> <span class="kc">False</span> 358 366 359 <span class="nb">print</span><span class="p">(</span><span class="s1">'Using ECMWF WebAPI: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">))</span> 367 <span class="nb">print</span><span class="p">(</span><span class="s1">'Using ECMWF WebAPI: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ec_api</span><span class="p">))</span> 368 <span class="nb">print</span><span class="p">(</span><span class="s1">'Using CDS API: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">cds_api</span><span class="p">))</span> 360 369 361 370 <span class="k">return</span> <span class="n">server</span></div> 371 372 373 <div class="viewcode-block" id="check_dates_for_nonflux_fc_times"><a class="viewcode-back" href="../api.html#get_mars_data.check_dates_for_nonflux_fc_times">[docs]</a><span class="k">def</span> <span class="nf">check_dates_for_nonflux_fc_times</span><span class="p">(</span><span class="n">types</span><span class="p">,</span> <span class="n">times</span><span class="p">):</span> 374 <span class="sd">'''</span> 375 <span class="sd"> '''</span> 376 <span class="k">for</span> <span class="n">ty</span><span class="p">,</span> <span class="n">ti</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">types</span><span class="p">,</span><span class="n">times</span><span class="p">):</span> 377 <span class="k">if</span> <span class="n">ty</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'FC'</span> <span class="ow">and</span> <span class="nb">int</span><span class="p">(</span><span class="n">ti</span><span class="p">)</span> <span class="o">==</span> <span class="mi">18</span><span class="p">:</span> 378 <span class="k">return</span> <span class="kc">True</span> 379 <span class="k">return</span> <span class="kc">False</span></div> 362 380 363 381 … … 405 423 <span class="n">chunk</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">date_chunk</span><span class="p">))</span> 406 424 407 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> 408 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="s1">'00'</span><span class="p">:</span> 409 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 410 411 <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span> <span class="ow">and</span> <span class="n">fluxes</span><span class="p">:</span> 425 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 426 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 427 428 <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span> <span class="ow">and</span> <span class="n">fluxes</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 412 429 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 413 430 <span class="n">end</span> <span class="o">=</span> <span class="n">end</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 431 432 <span class="c1"># if we have non-flux forecast data starting at 18 UTC</span> 433 <span class="c1"># we need to start retrieving data one day in advance</span> 434 <span class="k">if</span> <span class="ow">not</span> <span class="n">fluxes</span> <span class="ow">and</span> <span class="n">check_dates_for_nonflux_fc_times</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">):</span> 435 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 414 436 415 437 <span class="k">return</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">chunk</span></div> … … 493 515 <span class="n">flexpart</span><span class="o">.</span><span class="n">retrieve</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">dates</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">public</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> 494 516 <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> 495 <span class="n">my_error</span><span class="p">(</span><span class=" n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'MARS request failed'</span><span class="p">)</span>517 <span class="n">my_error</span><span class="p">(</span><span class="s1">'MARS request failed'</span><span class="p">)</span> 496 518 497 519 <span class="n">day</span> <span class="o">+=</span> <span class="n">delta_t</span> … … 513 535 <div role="contentinfo"> 514 536 <p> 515 © Copyright 2018, Anne Philipp and Leopold Haimberger 537 © Copyright 2018, Anne Philipp and Leopold Haimberger. 516 538 517 539 </p> … … 532 554 533 555 534 535 536 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 537 <script type="text/javascript" src="../_static/jquery.js"></script> 538 <script type="text/javascript" src="../_static/underscore.js"></script> 539 <script type="text/javascript" src="../_static/doctools.js"></script> 540 556 <script type="text/javascript"> 557 var DOCUMENTATION_OPTIONS = { 558 URL_ROOT:'../', 559 VERSION:'7.1 alpha', 560 LANGUAGE:'None', 561 COLLAPSE_INDEX:false, 562 FILE_SUFFIX:'.html', 563 HAS_SOURCE: true, 564 SOURCELINK_SUFFIX: '.txt' 565 }; 566 </script> 567 <script type="text/javascript" src="../_static/jquery.js"></script> 568 <script type="text/javascript" src="../_static/underscore.js"></script> 569 <script type="text/javascript" src="../_static/doctools.js"></script> 570 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 541 571 542 572 -
documentation/Sphinx/build/html/_modules/index.html
r2625ca8 rf66f990 173 173 <div role="contentinfo"> 174 174 <p> 175 © Copyright 2018, Anne Philipp and Leopold Haimberger 175 © Copyright 2018, Anne Philipp and Leopold Haimberger. 176 176 177 177 </p> … … 192 192 193 193 194 195 196 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 197 <script type="text/javascript" src="../_static/jquery.js"></script> 198 <script type="text/javascript" src="../_static/underscore.js"></script> 199 <script type="text/javascript" src="../_static/doctools.js"></script> 200 194 <script type="text/javascript"> 195 var DOCUMENTATION_OPTIONS = { 196 URL_ROOT:'../', 197 VERSION:'7.1 alpha', 198 LANGUAGE:'None', 199 COLLAPSE_INDEX:false, 200 FILE_SUFFIX:'.html', 201 HAS_SOURCE: true, 202 SOURCELINK_SUFFIX: '.txt' 203 }; 204 </script> 205 <script type="text/javascript" src="../_static/jquery.js"></script> 206 <script type="text/javascript" src="../_static/underscore.js"></script> 207 <script type="text/javascript" src="../_static/doctools.js"></script> 208 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 201 209 202 210 -
documentation/Sphinx/build/html/_modules/install.html
r2625ca8 rf66f990 866 866 <div role="contentinfo"> 867 867 <p> 868 © Copyright 2018, Anne Philipp and Leopold Haimberger 868 © Copyright 2018, Anne Philipp and Leopold Haimberger. 869 869 870 870 </p> … … 885 885 886 886 887 888 889 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 890 <script type="text/javascript" src="../_static/jquery.js"></script> 891 <script type="text/javascript" src="../_static/underscore.js"></script> 892 <script type="text/javascript" src="../_static/doctools.js"></script> 893 887 <script type="text/javascript"> 888 var DOCUMENTATION_OPTIONS = { 889 URL_ROOT:'../', 890 VERSION:'7.1 alpha', 891 LANGUAGE:'None', 892 COLLAPSE_INDEX:false, 893 FILE_SUFFIX:'.html', 894 HAS_SOURCE: true, 895 SOURCELINK_SUFFIX: '.txt' 896 }; 897 </script> 898 <script type="text/javascript" src="../_static/jquery.js"></script> 899 <script type="text/javascript" src="../_static/underscore.js"></script> 900 <script type="text/javascript" src="../_static/doctools.js"></script> 901 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 894 902 895 903 -
documentation/Sphinx/build/html/_modules/prepare_flexpart.html
r2625ca8 rf66f990 227 227 <span class="kn">from</span> <span class="nn">classes.UioFiles</span> <span class="k">import</span> <span class="n">UioFiles</span> 228 228 <span class="kn">from</span> <span class="nn">classes.ControlFile</span> <span class="k">import</span> <span class="n">ControlFile</span> 229 <span class="kn">from</span> <span class="nn">tools</span> <span class="k">import</span> <span class="n">clean_up</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span> <span class="n">read_ecenv</span><span class="p">,</span> <span class="n">make_dir</span> 229 <span class="kn">from</span> <span class="nn">tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">setup_controldata</span><span class="p">,</span> <span class="n">clean_up</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span> 230 <span class="n">read_ecenv</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">)</span> 230 231 <span class="kn">from</span> <span class="nn">classes.EcFlexpart</span> <span class="k">import</span> <span class="n">EcFlexpart</span> 231 232 <span class="n">ecapi</span> <span class="o">=</span> <span class="s1">'ecmwf'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">socket</span><span class="o">.</span><span class="n">gethostname</span><span class="p">()</span>233 <span class="k">try</span><span class="p">:</span>234 <span class="k">if</span> <span class="n">ecapi</span><span class="p">:</span>235 <span class="kn">import</span> <span class="nn">ecmwfapi</span>236 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>237 <span class="n">ecapi</span> <span class="o">=</span> <span class="kc">False</span>238 232 239 233 <span class="c1"># ------------------------------------------------------------------------------</span> … … 254 248 <span class="sd"> '''</span> 255 249 256 <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_args</span><span class="p">()</span> 257 <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> 258 259 <span class="n">env_parameter</span> <span class="o">=</span> <span class="n">read_ecenv</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">)</span> 260 <span class="n">c</span><span class="o">.</span><span class="n">assign_args_to_control</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> 261 <span class="n">c</span><span class="o">.</span><span class="n">assign_envs_to_control</span><span class="p">(</span><span class="n">env_parameter</span><span class="p">)</span> 262 <span class="n">c</span><span class="o">.</span><span class="n">check_conditions</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> 263 264 <span class="n">prepare_flexpart</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> 250 <span class="n">c</span><span class="p">,</span> <span class="n">ppid</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">setup_controldata</span><span class="p">()</span> 251 <span class="n">prepare_flexpart</span><span class="p">(</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> 252 <span class="n">normal_exit</span><span class="p">(</span><span class="s1">'Preparing FLEXPART output files: Done!'</span><span class="p">)</span> 265 253 266 254 <span class="k">return</span></div> … … 290 278 <span class="n">check_ppid</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">ppid</span><span class="p">)</span> 291 279 292 <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span> <span class="o">=</span> <span class="n">ecapi</span>293 294 280 <span class="c1"># create the start and end date</span> 295 281 <span class="n">start</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="n">year</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span><span class="p">[:</span><span class="mi">4</span><span class="p">]),</span> … … 305 291 <span class="c1"># since we need the 12 hours upfront</span> 306 292 <span class="c1"># (the day before from 12 UTC to current day 00 UTC)</span> 307 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class=" s1">'00'</span><span class="p">:</span>293 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 308 294 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 309 295 … … 330 316 <span class="n">flexpart</span> <span class="o">=</span> <span class="n">EcFlexpart</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">fluxes</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> 331 317 <span class="n">flexpart</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">inputfiles</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> 318 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'elda'</span><span class="p">:</span> 319 <span class="n">flexpart</span><span class="o">.</span><span class="n">calc_extra_elda</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">prefix</span><span class="p">)</span> 332 320 <span class="n">flexpart</span><span class="o">.</span><span class="n">process_output</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> 333 321 … … 360 348 <div role="contentinfo"> 361 349 <p> 362 © Copyright 2018, Anne Philipp and Leopold Haimberger 350 © Copyright 2018, Anne Philipp and Leopold Haimberger. 363 351 364 352 </p> … … 379 367 380 368 381 382 383 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 384 <script type="text/javascript" src="../_static/jquery.js"></script> 385 <script type="text/javascript" src="../_static/underscore.js"></script> 386 <script type="text/javascript" src="../_static/doctools.js"></script> 387 369 <script type="text/javascript"> 370 var DOCUMENTATION_OPTIONS = { 371 URL_ROOT:'../', 372 VERSION:'7.1 alpha', 373 LANGUAGE:'None', 374 COLLAPSE_INDEX:false, 375 FILE_SUFFIX:'.html', 376 HAS_SOURCE: true, 377 SOURCELINK_SUFFIX: '.txt' 378 }; 379 </script> 380 <script type="text/javascript" src="../_static/jquery.js"></script> 381 <script type="text/javascript" src="../_static/underscore.js"></script> 382 <script type="text/javascript" src="../_static/doctools.js"></script> 383 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 388 384 389 385 -
documentation/Sphinx/build/html/_modules/submit.html
r2625ca8 rf66f990 220 220 <span class="c1"># software specific classes and modules from flex_extract</span> 221 221 <span class="kn">import</span> <span class="nn">_config</span> 222 <span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n"> normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span>222 <span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">setup_controldata</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span> 223 223 <span class="n">submit_job_to_ecserver</span><span class="p">,</span> <span class="n">read_ecenv</span><span class="p">)</span> 224 224 <span class="kn">from</span> <span class="nn">mods.get_mars_data</span> <span class="k">import</span> <span class="n">get_mars_data</span> … … 244 244 <span class="sd"> '''</span> 245 245 246 <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_args</span><span class="p">()</span> 247 <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> 248 249 <span class="n">env_parameter</span> <span class="o">=</span> <span class="n">read_ecenv</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">)</span> 250 <span class="n">c</span><span class="o">.</span><span class="n">assign_args_to_control</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> 251 <span class="n">c</span><span class="o">.</span><span class="n">assign_envs_to_control</span><span class="p">(</span><span class="n">env_parameter</span><span class="p">)</span> 252 <span class="n">c</span><span class="o">.</span><span class="n">check_conditions</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> 246 <span class="n">c</span><span class="p">,</span> <span class="n">ppid</span><span class="p">,</span> <span class="n">queue</span><span class="p">,</span> <span class="n">job_template</span> <span class="o">=</span> <span class="n">setup_controldata</span><span class="p">()</span> 253 247 254 248 <span class="c1"># on local side</span> 255 <span class="c1"># on ECMWF server this would also be the local side</span>249 <span class="c1"># starting from an ECMWF server this would also be the local side</span> 256 250 <span class="n">called_from_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">()</span> 257 <span class="k">if</span> <span class="n"> args</span><span class="o">.</span><span class="n">queue</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>251 <span class="k">if</span> <span class="n">queue</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> 258 252 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'/'</span><span class="p">:</span> 259 253 <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">called_from_dir</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> … … 262 256 <span class="n">get_mars_data</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> 263 257 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> 264 <span class="n">prepare_flexpart</span><span class="p">(</span><span class="n"> args</span><span class="o">.</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span>258 <span class="n">prepare_flexpart</span><span class="p">(</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> 265 259 <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">'FLEX_EXTRACT IS DONE!'</span> 266 260 <span class="k">else</span><span class="p">:</span> … … 268 262 <span class="c1"># send files to ECMWF server</span> 269 263 <span class="k">else</span><span class="p">:</span> 270 <span class="n">submit</span><span class="p">(</span><span class="n"> args</span><span class="o">.</span><span class="n">job_template</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span>264 <span class="n">submit</span><span class="p">(</span><span class="n">job_template</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">queue</span><span class="p">)</span> 271 265 <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">'FLEX_EXTRACT JOB SCRIPT IS SUBMITED!'</span> 272 266 … … 299 293 <span class="sd"> '''</span> 300 294 301 <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n"> basetime</span><span class="p">:</span>295 <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">oper</span><span class="p">:</span> 302 296 <span class="c1"># --------- create on demand job script ------------------------------------</span> 303 297 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> … … 315 309 <span class="n">end</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> 316 310 <span class="n">chunk</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">job_chunk</span><span class="p">)</span> 311 <span class="n">oneday</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 317 312 318 313 <span class="k">while</span> <span class="n">start</span> <span class="o"><=</span> <span class="n">end</span><span class="p">:</span> 319 314 <span class="k">if</span> <span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span><span class="p">)</span> <span class="o"><=</span> <span class="n">end</span><span class="p">:</span> 320 <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span> <span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span>315 <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span> <span class="o">-</span> <span class="n">oneday</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> 321 316 <span class="k">else</span><span class="p">:</span> 322 317 <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">end</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> 323 318 324 319 <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> 325 326 320 <span class="n">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">)</span> 327 321 … … 349 343 <span class="n">c</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_YEAR}</span><span class="s1">$</span><span class="si">{MSJ_MONTH}</span><span class="s1">$</span><span class="si">{MSJ_DAY}</span><span class="s1">'</span> 350 344 <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_YEAR}</span><span class="s1">$</span><span class="si">{MSJ_MONTH}</span><span class="s1">$</span><span class="si">{MSJ_DAY}</span><span class="s1">'</span> 351 <span class="n">c</span><span class="o">.</span><span class="n">base _time</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_BASETIME}</span><span class="s1">'</span>345 <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_BASETIME}</span><span class="s1">'</span> 352 346 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">24</span><span class="p">:</span> 353 347 <span class="n">c</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_BASETIME}</span><span class="s1"> </span><span class="si">{MSJ_BASETIME}</span><span class="s1">'</span> … … 434 428 <div role="contentinfo"> 435 429 <p> 436 © Copyright 2018, Anne Philipp and Leopold Haimberger 430 © Copyright 2018, Anne Philipp and Leopold Haimberger. 437 431 438 432 </p> … … 453 447 454 448 455 456 457 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 458 <script type="text/javascript" src="../_static/jquery.js"></script> 459 <script type="text/javascript" src="../_static/underscore.js"></script> 460 <script type="text/javascript" src="../_static/doctools.js"></script> 461 449 <script type="text/javascript"> 450 var DOCUMENTATION_OPTIONS = { 451 URL_ROOT:'../', 452 VERSION:'7.1 alpha', 453 LANGUAGE:'None', 454 COLLAPSE_INDEX:false, 455 FILE_SUFFIX:'.html', 456 HAS_SOURCE: true, 457 SOURCELINK_SUFFIX: '.txt' 458 }; 459 </script> 460 <script type="text/javascript" src="../_static/jquery.js"></script> 461 <script type="text/javascript" src="../_static/underscore.js"></script> 462 <script type="text/javascript" src="../_static/doctools.js"></script> 463 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 462 464 463 465 -
documentation/Sphinx/build/html/_modules/tools.html
r2625ca8 rf66f990 222 222 <span class="kn">from</span> <span class="nn">argparse</span> <span class="k">import</span> <span class="n">ArgumentParser</span><span class="p">,</span> <span class="n">ArgumentDefaultsHelpFormatter</span> 223 223 224 225 224 226 <span class="c1"># ------------------------------------------------------------------------------</span> 225 227 <span class="c1"># METHODS</span> 226 228 <span class="c1"># ------------------------------------------------------------------------------</span> 229 230 <div class="viewcode-block" id="setup_controldata"><a class="viewcode-back" href="../api.html#tools.setup_controldata">[docs]</a><span class="k">def</span> <span class="nf">setup_controldata</span><span class="p">():</span> 231 <span class="sd">'''Collects, stores and checks controlling arguments from command line,</span> 232 <span class="sd"> CONTROL file and ECMWF_ENV file.</span> 233 234 <span class="sd"> Parameters</span> 235 <span class="sd"> ----------</span> 236 237 <span class="sd"> Return</span> 238 <span class="sd"> ------</span> 239 <span class="sd"> c : ControlFile</span> 240 <span class="sd"> Contains all the parameters of CONTROL file and</span> 241 <span class="sd"> command line.</span> 242 243 <span class="sd"> ppid : str</span> 244 <span class="sd"> Parent process id.</span> 245 246 <span class="sd"> queue : str</span> 247 <span class="sd"> Name of queue for submission to ECMWF (e.g. ecgate or cca )</span> 248 249 <span class="sd"> job_template : str</span> 250 <span class="sd"> Name of the job template file for submission to ECMWF server.</span> 251 <span class="sd"> '''</span> 252 <span class="kn">import</span> <span class="nn">_config</span> 253 <span class="kn">from</span> <span class="nn">classes.ControlFile</span> <span class="k">import</span> <span class="n">ControlFile</span> 254 255 <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_args</span><span class="p">()</span> 256 <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> 257 <span class="n">c</span><span class="o">.</span><span class="n">assign_args_to_control</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> 258 <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">):</span> 259 <span class="n">env_parameter</span> <span class="o">=</span> <span class="n">read_ecenv</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">)</span> 260 <span class="n">c</span><span class="o">.</span><span class="n">assign_envs_to_control</span><span class="p">(</span><span class="n">env_parameter</span><span class="p">)</span> 261 <span class="n">c</span><span class="o">.</span><span class="n">check_conditions</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> 262 263 <span class="k">return</span> <span class="n">c</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">ppid</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">job_template</span></div> 227 264 228 265 <div class="viewcode-block" id="none_or_str"><a class="viewcode-back" href="../api.html#tools.none_or_str">[docs]</a><span class="k">def</span> <span class="nf">none_or_str</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> … … 300 337 <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--basetime"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"basetime"</span><span class="p">,</span> 301 338 <span class="nb">type</span><span class="o">=</span><span class="n">none_or_int</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> 302 <span class="n">help</span><span class="o">=</span><span class="s2">"base such as 0 0or 12 (for half day retrievals)"</span><span class="p">)</span>339 <span class="n">help</span><span class="o">=</span><span class="s2">"base such as 0 or 12 (for half day retrievals)"</span><span class="p">)</span> 303 340 <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--step"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"step"</span><span class="p">,</span> 304 341 <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> … … 315 352 <span class="nb">type</span><span class="o">=</span><span class="n">none_or_int</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> 316 353 <span class="n">help</span><span class="o">=</span><span class="s2">"debug mode - leave temporary files intact"</span><span class="p">)</span> 354 <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--oper"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"oper"</span><span class="p">,</span> 355 <span class="nb">type</span><span class="o">=</span><span class="n">none_or_int</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> 356 <span class="n">help</span><span class="o">=</span><span class="s2">"operational mode - prepares dates with </span><span class="se">\</span> 357 <span class="s2"> environment variables"</span><span class="p">)</span> 317 358 <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--request"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"request"</span><span class="p">,</span> 318 359 <span class="nb">type</span><span class="o">=</span><span class="n">none_or_int</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> … … 408 449 <span class="nb">print</span><span class="p">(</span><span class="s2">"... clean inputdir!"</span><span class="p">)</span> 409 450 410 <span class="n">cleanlist</span> <span class="o">=</span> <span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">))</span> 451 <span class="n">cleanlist</span> <span class="o">=</span> <span class="p">[</span><span class="n">file</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">))</span> 452 <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">file</span><span class="p">)</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">prefix</span><span class="p">)]</span> 411 453 412 454 <span class="k">if</span> <span class="n">cleanlist</span><span class="p">:</span> 413 455 <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">cleanlist</span><span class="p">:</span> 414 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">prefix</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">element</span><span class="p">:</span> 415 <span class="n">silent_remove</span><span class="p">(</span><span class="n">element</span><span class="p">)</span> 416 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span> <span class="ow">is</span> <span class="kc">False</span> <span class="ow">and</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ectrans</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">ecstorage</span> <span class="o">==</span> <span class="mi">1</span><span class="p">):</span> 417 <span class="n">silent_remove</span><span class="p">(</span><span class="n">element</span><span class="p">)</span> 456 <span class="n">silent_remove</span><span class="p">(</span><span class="n">element</span><span class="p">)</span> 418 457 <span class="nb">print</span><span class="p">(</span><span class="s2">"... done!"</span><span class="p">)</span> 419 458 <span class="k">else</span><span class="p">:</span> … … 423 462 424 463 425 <div class="viewcode-block" id="my_error"><a class="viewcode-back" href="../api.html#tools.my_error">[docs]</a><span class="k">def</span> <span class="nf">my_error</span><span class="p">(</span><span class="n"> users</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s1">'ERROR'</span><span class="p">):</span>464 <div class="viewcode-block" id="my_error"><a class="viewcode-back" href="../api.html#tools.my_error">[docs]</a><span class="k">def</span> <span class="nf">my_error</span><span class="p">(</span><span class="n">message</span><span class="o">=</span><span class="s1">'ERROR'</span><span class="p">):</span> 426 465 <span class="sd">'''Prints a specified error message which can be passed to the function</span> 427 466 <span class="sd"> before exiting the program.</span> … … 429 468 <span class="sd"> Parameters</span> 430 469 <span class="sd"> ----------</span> 431 <span class="sd"> user : list of str</span>432 <span class="sd"> Contains all email addresses which should be notified.</span>433 <span class="sd"> It might also contain just the ecmwf user name which wil trigger</span>434 <span class="sd"> mailing to the associated email address for this user.</span>435 436 470 <span class="sd"> message : str, optional</span> 437 471 <span class="sd"> Error message. Default value is "ERROR".</span> … … 446 480 447 481 <span class="nb">print</span><span class="p">(</span><span class="n">full_message</span><span class="p">)</span> 448 449 <span class="n">send_mail</span><span class="p">(</span><span class="n">users</span><span class="p">,</span> <span class="s1">'ERROR'</span><span class="p">,</span> <span class="n">full_message</span><span class="p">)</span>450 482 451 483 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> … … 615 647 <span class="k">else</span><span class="p">:</span> 616 648 <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">fdata</span><span class="p">:</span> 617 <span class="k">if</span> <span class="n">data</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'!'</span><span class="p">:</span>618 <span class="n">table128</span><span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">3</span><span class="p">]]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">59</span><span class="p">:</span><span class="mi">6 4</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>649 <span class="k">if</span> <span class="n">data</span> <span class="o">!=</span> <span class="s1">''</span> <span class="ow">and</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'!'</span><span class="p">:</span> 650 <span class="n">table128</span><span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">3</span><span class="p">]]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">59</span><span class="p">:</span><span class="mi">65</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> 619 651 620 652 <span class="k">return</span> <span class="n">table128</span></div> … … 659 691 660 692 <span class="k">return</span> <span class="n">ipar</span></div> 693 694 <div class="viewcode-block" id="to_param_id_with_tablenumber"><a class="viewcode-back" href="../api.html#tools.to_param_id_with_tablenumber">[docs]</a><span class="k">def</span> <span class="nf">to_param_id_with_tablenumber</span><span class="p">(</span><span class="n">pars</span><span class="p">,</span> <span class="n">table</span><span class="p">):</span> 695 <span class="sd">'''Transform parameter names to parameter ids and add table id.</span> 696 697 <span class="sd"> Conversion with ECMWF grib table 128.</span> 698 699 <span class="sd"> Parameters</span> 700 <span class="sd"> ----------</span> 701 <span class="sd"> pars : str</span> 702 <span class="sd"> Addpar argument from CONTROL file in the format of</span> 703 <span class="sd"> parameter names instead of ids. The parameter short</span> 704 <span class="sd"> names are sepearted with "/" and they are passed as</span> 705 <span class="sd"> one single string.</span> 706 707 <span class="sd"> table : dict</span> 708 <span class="sd"> Contains the ECMWF grib table 128 information.</span> 709 <span class="sd"> The key is the parameter number and the value is the</span> 710 <span class="sd"> short name of the parameter.</span> 711 712 <span class="sd"> Return</span> 713 <span class="sd"> ------</span> 714 <span class="sd"> spar : str</span> 715 <span class="sd"> List of addpar parameters from CONTROL file transformed to</span> 716 <span class="sd"> parameter ids in the format of integer.</span> 717 <span class="sd"> '''</span> 718 <span class="k">if</span> <span class="ow">not</span> <span class="n">pars</span><span class="p">:</span> 719 <span class="k">return</span> <span class="p">[]</span> 720 <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pars</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> 721 <span class="n">pars</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">pars</span><span class="p">)</span> 722 723 <span class="n">cpar</span> <span class="o">=</span> <span class="n">pars</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> 724 <span class="n">spar</span> <span class="o">=</span> <span class="p">[]</span> 725 <span class="k">for</span> <span class="n">par</span> <span class="ow">in</span> <span class="n">cpar</span><span class="p">:</span> 726 <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">table</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> 727 <span class="k">if</span> <span class="n">par</span> <span class="o">==</span> <span class="n">k</span> <span class="ow">or</span> <span class="n">par</span> <span class="o">==</span> <span class="n">v</span><span class="p">:</span> 728 <span class="n">spar</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">k</span> <span class="o">+</span> <span class="s1">'.128'</span><span class="p">)</span> 729 <span class="k">break</span> 730 <span class="k">else</span><span class="p">:</span> 731 <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n\n\t\t</span><span class="s1">Warning: par '</span> <span class="o">+</span> <span class="n">par</span> <span class="o">+</span> <span class="s1">' not found in table 128</span><span class="se">\n\n</span><span class="s1">'</span><span class="p">)</span> 732 733 <span class="k">return</span> <span class="s1">'/'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">spar</span><span class="p">)</span></div> 661 734 662 735 <div class="viewcode-block" id="get_list_as_string"><a class="viewcode-back" href="../api.html#tools.get_list_as_string">[docs]</a><span class="k">def</span> <span class="nf">get_list_as_string</span><span class="p">(</span><span class="n">list_obj</span><span class="p">,</span> <span class="n">concatenate_sign</span><span class="o">=</span><span class="s1">', '</span><span class="p">):</span> … … 958 1031 <div role="contentinfo"> 959 1032 <p> 960 © Copyright 2018, Anne Philipp and Leopold Haimberger 1033 © Copyright 2018, Anne Philipp and Leopold Haimberger. 961 1034 962 1035 </p> … … 977 1050 978 1051 979 980 981 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 982 <script type="text/javascript" src="../_static/jquery.js"></script> 983 <script type="text/javascript" src="../_static/underscore.js"></script> 984 <script type="text/javascript" src="../_static/doctools.js"></script> 985 1052 <script type="text/javascript"> 1053 var DOCUMENTATION_OPTIONS = { 1054 URL_ROOT:'../', 1055 VERSION:'7.1 alpha', 1056 LANGUAGE:'None', 1057 COLLAPSE_INDEX:false, 1058 FILE_SUFFIX:'.html', 1059 HAS_SOURCE: true, 1060 SOURCELINK_SUFFIX: '.txt' 1061 }; 1062 </script> 1063 <script type="text/javascript" src="../_static/jquery.js"></script> 1064 <script type="text/javascript" src="../_static/underscore.js"></script> 1065 <script type="text/javascript" src="../_static/doctools.js"></script> 1066 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 986 1067 987 1068
Note: See TracChangeset
for help on using the changeset viewer.