Changeset eca358d in flex_extract.git for Documentation/html/_modules
- Timestamp:
- Feb 1, 2020, 9:32:17 PM (4 years ago)
- Branches:
- master, ctbto, dev
- Children:
- 072cbea
- Parents:
- 53d3b2a
- Location:
- Documentation/html/_modules
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
Documentation/html/_modules/ControlFile.html
r30f7911 reca358d 200 200 201 201 <span class="kn">import</span> <span class="nn">os</span> 202 <span class="kn">import</span> <span class="nn">re</span>203 202 <span class="kn">import</span> <span class="nn">sys</span> 204 <span class="kn">import</span> <span class="nn">inspect</span>205 203 206 204 <span class="c1"># software specific classes and modules from flex_extract</span> 205 <span class="c1">#pylint: disable=wrong-import-position</span> 207 206 <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> 208 207 <span class="kn">import</span> <span class="nn">_config</span> 209 <span class="kn">from</span> <span class="nn">Mods.tools</span> <span class="k">import</span> <span class="n">my_error</span> <span class="p">,</span> <span class="n">silent_remove</span>208 <span class="kn">from</span> <span class="nn">Mods.tools</span> <span class="k">import</span> <span class="n">my_error</span> 210 209 <span class="kn">from</span> <span class="nn">Mods.checks</span> <span class="k">import</span> <span class="p">(</span><span class="n">check_grid</span><span class="p">,</span> <span class="n">check_area</span><span class="p">,</span> <span class="n">check_levels</span><span class="p">,</span> <span class="n">check_purefc</span><span class="p">,</span> 211 210 <span class="n">check_step</span><span class="p">,</span> <span class="n">check_mail</span><span class="p">,</span> <span class="n">check_queue</span><span class="p">,</span> <span class="n">check_pathes</span><span class="p">,</span> … … 215 214 <span class="n">check_logicals_type</span><span class="p">,</span> <span class="n">check_len_type_time_step</span><span class="p">,</span> 216 215 <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> 216 <span class="c1">#pylint: enable=wrong-import-position</span> 217 217 218 218 <span class="c1"># ------------------------------------------------------------------------------</span> … … 227 227 <span class="sd"> from the MARS archive for driving FLEXPART are set in a CONTROL file.</span> 228 228 <span class="sd"> Some specific parameters like the start and end dates can be overwritten</span> 229 <span class="sd"> by the command line parameters, but in gener el all parameters needed</span>229 <span class="sd"> by the command line parameters, but in generall all parameters needed</span> 230 230 <span class="sd"> for a complete set of fields for FLEXPART can be set in the CONTROL file.</span> 231 231 … … 400 400 <span class="sd"> Default value is ['${USER}'].</span> 401 401 402 <span class="sd"> grib2flexpart : int 0</span>403 <span class="sd"> Switch to select generation of preprocessed FLEXPART files ".fp".</span>404 <span class="sd"> If it is selected, the program grib2flexpart will try</span>405 <span class="sd"> to convert the flex_extract output files into ".fp" format.</span>406 407 402 <span class="sd"> ecstorage : int</span> 408 403 <span class="sd"> Switch to select storage of FLEXPART ready output files</span> … … 496 491 <span class="sd"> List of the names of logical switches which controls the flow</span> 497 492 <span class="sd"> of the program. Default list is ['gauss', 'omega', 'omegadiff', 'eta',</span> 498 <span class="sd"> 'etadiff', 'dpdeta', 'cwc', 'wrf', ' grib2flexpart', 'ecstorage',</span>493 <span class="sd"> 'etadiff', 'dpdeta', 'cwc', 'wrf', 'ecstorage',</span> 499 494 <span class="sd"> 'ectrans', 'debug', 'request', 'public', 'purefc', 'rrint', 'doubleelda']</span> 500 495 <span class="sd"> '''</span> … … 562 557 <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'$</span><span class="si">{USER}</span><span class="s1">'</span><span class="p">]</span> 563 558 <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'$</span><span class="si">{USER}</span><span class="s1">'</span><span class="p">]</span> 564 <span class="bp">self</span><span class="o">.</span><span class="n">grib2flexpart</span> <span class="o">=</span> <span class="mi">0</span>565 559 <span class="bp">self</span><span class="o">.</span><span class="n">ecstorage</span> <span class="o">=</span> <span class="mi">0</span> 566 560 <span class="bp">self</span><span class="o">.</span><span class="n">ectrans</span> <span class="o">=</span> <span class="mi">0</span> … … 587 581 588 582 <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> 589 <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>583 <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">'ecstorage'</span><span class="p">,</span> 590 584 <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> 591 585 <span class="s1">'purefc'</span><span class="p">,</span> <span class="s1">'rrint'</span><span class="p">,</span> <span class="s1">'doubleelda'</span><span class="p">]</span> … … 764 758 765 759 <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="n">check_pathes</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> 766 <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexextractdir</span><span class="p">)</span> 760 <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span><span class="p">,</span> 761 <span class="bp">self</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span> 762 <span class="bp">self</span><span class="o">.</span><span class="n">flexextractdir</span><span class="p">)</span> 767 763 768 764 <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">check_dates</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="p">,</span> … … 773 769 <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> 774 770 775 <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="n">check_step</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p"> ,</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">)</span>771 <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="n">check_step</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">)</span> 776 772 777 773 <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="n">check_maxstep</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">)</span> … … 811 807 <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> 812 808 813 <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>809 <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> 814 810 815 811 <span class="k">return</span></div> … … 857 853 858 854 <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">l</span><span class="p">)</span></div></div> 859 860 855 </pre></div> 861 856 -
Documentation/html/_modules/EcFlexpart.html
r30f7911 reca358d 215 215 <span class="c1">#pylint: disable=consider-using-enumerate</span> 216 216 <span class="c1"># this is not useful in this case</span> 217 <span class="c1">#pylint: disable=unsubscriptable-object</span> 218 <span class="c1"># this error is a bug</span> 219 <span class="c1">#pylint: disable=ungrouped-imports</span> 220 <span class="c1"># not necessary that we group the imports</span> 217 221 <span class="c1"># ------------------------------------------------------------------------------</span> 218 222 <span class="c1"># MODULES</span> … … 224 228 <span class="kn">import</span> <span class="nn">glob</span> 225 229 <span class="kn">import</span> <span class="nn">shutil</span> 226 <span class="kn">import</span> <span class="nn">subprocess</span>227 230 <span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span> 228 231 229 232 <span class="c1"># software specific classes and modules from flex_extract</span> 233 <span class="c1">#pylint: disable=wrong-import-position</span> 230 234 <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> 231 235 <span class="kn">import</span> <span class="nn">_config</span> 232 236 <span class="kn">from</span> <span class="nn">Classes.GribUtil</span> <span class="k">import</span> <span class="n">GribUtil</span> 233 237 <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> 234 <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>238 <span class="n">my_error</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> 235 239 <span class="n">execute_subprocess</span><span class="p">,</span> <span class="n">to_param_id_with_tablenumber</span><span class="p">,</span> 236 240 <span class="n">generate_retrieval_period_boundary</span><span class="p">)</span> … … 238 242 <span class="kn">from</span> <span class="nn">Classes.UioFiles</span> <span class="k">import</span> <span class="n">UioFiles</span> 239 243 <span class="kn">import</span> <span class="nn">Mods.disaggregation</span> <span class="k">as</span> <span class="nn">disaggregation</span> 240 244 <span class="c1">#pylint: enable=wrong-import-position</span> 241 245 <span class="c1"># ------------------------------------------------------------------------------</span> 242 246 <span class="c1"># CLASS</span> … … 479 483 480 484 <span class="sd"> '''</span> 485 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> 486 <span class="c1"># need to retrieve forecasts for step 000 in case of pure forecast</span> 487 <span class="n">steps</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/to/</span><span class="si">{}</span><span class="s1">/by/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="mi">0</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">dtime</span><span class="p">)</span> 488 <span class="k">else</span><span class="p">:</span> 489 <span class="n">steps</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/to/</span><span class="si">{}</span><span class="s1">/by/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dtime</span><span class="p">,</span> 490 <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span><span class="p">,</span> 491 <span class="bp">self</span><span class="o">.</span><span class="n">dtime</span><span class="p">)</span> 492 481 493 <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="nb">str</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="o">=</span> <span class="p">{</span><span class="s1">'times'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">acctime</span><span class="p">),</span> 482 <span class="s1">'steps'</span><span class="p">:</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/to/</span><span class="si">{}</span><span class="s1">/by/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> 483 <span class="bp">self</span><span class="o">.</span><span class="n">dtime</span><span class="p">,</span> 484 <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span><span class="p">,</span> 485 <span class="bp">self</span><span class="o">.</span><span class="n">dtime</span><span class="p">)}</span> 494 <span class="s1">'steps'</span><span class="p">:</span> <span class="n">steps</span><span class="p">}</span> 486 495 <span class="k">return</span> 487 496 … … 563 572 <span class="k">else</span><span class="p">:</span> <span class="c1"># GAUSS and ETA</span> 564 573 <span class="nb">print</span><span class="p">(</span><span class="s1">'Warning: Collecting etadot and parameters for gaussian grid '</span> 565 566 574 <span class="s1">'is a very costly parameter combination, '</span> 575 <span class="s1">'use this combination only for debugging!'</span><span class="p">)</span> 567 576 <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> 568 577 <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> … … 577 586 578 587 <span class="c1"># ADDITIONAL FIELDS FOR FLEXPART-WRF MODEL (IF QUESTIONED)</span> 579 <span class="c1"># ---------------------------------------------------------------------- -</span>588 <span class="c1"># ----------------------------------------------------------------------</span> 580 589 <span class="k">if</span> <span class="n">wrf</span><span class="p">:</span> 581 590 <span class="c1"># @WRF</span> … … 872 881 <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="bp">self</span><span class="o">.</span><span class="n">dates</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> 873 882 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mk_targetname</span><span class="p">(</span><span class="s1">''</span><span class="p">,</span> 874 <span class="n">pk</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">])</span> 883 <span class="n">pk</span><span class="p">,</span> 884 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">])</span> 875 885 <span class="k">elif</span> <span class="n">pk</span> <span class="o">==</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span> <span class="n">oro</span><span class="p">:</span> 876 886 <span class="k">continue</span> … … 914 924 <span class="k">if</span> <span class="s1">'acc'</span> <span class="ow">in</span> <span class="n">pk</span><span class="p">:</span> 915 925 <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> 916 <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>926 <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> 917 927 <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><span class="n">startdate</span><span class="p">,</span> 918 928 <span class="s1">'to'</span><span class="p">,</span> … … 938 948 939 949 <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> 940 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> \ 941 <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>950 <span class="c1"># retr_param_dict['date'] = \</span> 951 <span class="c1"># datetime.strftime(elimit - t24h, '%Y%m%d')</span> 942 952 943 953 <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> 944 954 945 <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>946 <span class="n">pk</span> <span class="o">!=</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span>947 <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>955 <span class="k">if</span> <span class="nb">all</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> 956 <span class="n">pk</span> <span class="o">!=</span> <span class="s1">'OG_OROLSM__SL'</span><span class="p">,</span> 957 <span class="s1">'acc'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pk</span><span class="p">]):</span> 948 958 <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> 949 959 <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> … … 956 966 <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> 957 967 958 <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>959 <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="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> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span>960 <span class="nb">int</span><span class="p">(</span><span class="n">timesave</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> <span class="o">==</span> <span class="mi">0</span><span class="p">):</span>968 <span class="k">if</span> <span class="nb">all</span><span class="p">([</span><span class="n">pk</span> <span class="o">!=</span> <span class="s1">'OG_OROLSM__SL'</span><span class="p">,</span> 969 <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="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> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> 970 <span class="nb">int</span><span class="p">(</span><span class="n">timesave</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> <span class="o">==</span> <span class="mi">0</span><span class="p">]):</span> 961 971 962 972 <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> \ … … 972 982 <span class="k">else</span><span class="p">:</span> 973 983 <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'ERROR: Basetime has an invalid value '</span> 974 <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>984 <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="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">)))</span> 975 985 976 986 <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> … … 1022 1032 1023 1033 <span class="n">stream</span> <span class="o">=</span> <span class="n">namelist_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> 1024 <span class="n">maxl</span> <span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">maxl</span><span class="p">),</span>1025 <span class="n">maxb</span> <span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">maxb</span><span class="p">),</span>1026 <span class="n">mlevel</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">level</span><span class="p">),</span>1027 <span class="n">mlevelist</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">levelist</span><span class="p">),</span>1028 <span class="n">mnauf</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">resol</span><span class="p">),</span>1029 <span class="n">metapar</span> <span class="o">=</span><span class="s1">'77'</span><span class="p">,</span>1030 <span class="n">rlo0</span> <span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span>1031 <span class="n">rlo1</span> <span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">3</span><span class="p">]),</span>1032 <span class="n">rla0</span> <span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span>1033 <span class="n">rla1</span> <span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span>1034 <span class="n">momega</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">omega</span><span class="p">),</span>1035 <span class="n">momegadiff</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">omegadiff</span><span class="p">),</span>1036 <span class="n">mgauss</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">gauss</span><span class="p">),</span>1037 <span class="n">msmooth</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">smooth</span><span class="p">),</span>1038 <span class="n">meta</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">eta</span><span class="p">),</span>1039 <span class="n">metadiff</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">etadiff</span><span class="p">),</span>1040 <span class="n">mdpdeta</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">dpdeta</span><span class="p">)</span>1034 <span class="n">maxl</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">maxl</span><span class="p">),</span> 1035 <span class="n">maxb</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">maxb</span><span class="p">),</span> 1036 <span class="n">mlevel</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">level</span><span class="p">),</span> 1037 <span class="n">mlevelist</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">levelist</span><span class="p">),</span> 1038 <span class="n">mnauf</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">resol</span><span class="p">),</span> 1039 <span class="n">metapar</span><span class="o">=</span><span class="s1">'77'</span><span class="p">,</span> 1040 <span class="n">rlo0</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> 1041 <span class="n">rlo1</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">3</span><span class="p">]),</span> 1042 <span class="n">rla0</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> 1043 <span class="n">rla1</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> 1044 <span class="n">momega</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">omega</span><span class="p">),</span> 1045 <span class="n">momegadiff</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">omegadiff</span><span class="p">),</span> 1046 <span class="n">mgauss</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">gauss</span><span class="p">),</span> 1047 <span class="n">msmooth</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">smooth</span><span class="p">),</span> 1048 <span class="n">meta</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">eta</span><span class="p">),</span> 1049 <span class="n">metadiff</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">etadiff</span><span class="p">),</span> 1050 <span class="n">mdpdeta</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">dpdeta</span><span class="p">)</span> 1041 1051 <span class="p">)</span> 1042 1052 <span class="k">except</span> <span class="n">UndefinedError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> … … 1090 1100 <span class="sd"> '''</span> 1091 1101 <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> 1092 <span class="kn">from</span> <span class="nn">eccodes</span> <span class="k">import</span> <span class="p">(</span><span class="n">codes_index_select</span><span class="p">,</span> <span class="n">codes_ new_from_index</span><span class="p">,</span> <span class="n">codes_get</span><span class="p">,</span>1102 <span class="kn">from</span> <span class="nn">eccodes</span> <span class="k">import</span> <span class="p">(</span><span class="n">codes_index_select</span><span class="p">,</span> <span class="n">codes_get</span><span class="p">,</span> 1093 1103 <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> 1094 1104 <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> … … 1215 1225 <span class="n">step</span> <span class="o">=</span> <span class="n">codes_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'step'</span><span class="p">)</span> <span class="c1"># integer</span> 1216 1226 <span class="n">ctime</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{:0>2}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">time</span><span class="p">)</span> 1217 <span class="n">cstep</span> <span class="o">=</span> <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>1218 1227 1219 1228 <span class="n">t_date</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">cdate</span> <span class="o">+</span> <span class="n">ctime</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> … … 1294 1303 <span class="n">deac_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> 1295 1304 <span class="p">(</span><span class="n">orig_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">orig_vals</span><span class="p">[</span><span class="n">parId</span><span class="p">][</span><span class="o">-</span><span class="mi">2</span><span class="p">])</span> <span class="o">/</span> 1296 1305 <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> 1297 1306 1298 1307 <span class="c1"># store precipitation if new disaggregation method is selected</span> … … 1494 1503 <span class="k">for</span> <span class="n">inum</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">maxnum</span><span class="p">):</span> 1495 1504 <span class="k">for</span> <span class="n">ix</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">ni</span><span class="o">*</span><span class="n">nj</span><span class="p">):</span> 1496 <span class="n">lsp_new_np</span><span class="p">[</span><span class="n">inum</span><span class="p">,</span> <span class="n">ix</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">IA3</span><span class="p">(</span><span class="n">lsp_np</span><span class="p">[</span><span class="n">inum</span><span class="p">,</span><span class="n">ix</span><span class="p">,:])[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>1497 <span class="n">cp_new_np</span><span class="p">[</span><span class="n">inum</span><span class="p">,</span> <span class="n">ix</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">IA3</span><span class="p">(</span><span class="n">cp_np</span><span class="p">[</span><span class="n">inum</span><span class="p">,</span><span class="n">ix</span><span class="p">,:])[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>1505 <span class="n">lsp_new_np</span><span class="p">[</span><span class="n">inum</span><span class="p">,</span> <span class="n">ix</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">IA3</span><span class="p">(</span><span class="n">lsp_np</span><span class="p">[</span><span class="n">inum</span><span class="p">,</span> <span class="n">ix</span><span class="p">,</span> <span class="p">:])[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> 1506 <span class="n">cp_new_np</span><span class="p">[</span><span class="n">inum</span><span class="p">,</span> <span class="n">ix</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">IA3</span><span class="p">(</span><span class="n">cp_np</span><span class="p">[</span><span class="n">inum</span><span class="p">,</span> <span class="n">ix</span><span class="p">,</span> <span class="p">:])[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> 1498 1507 <span class="k">else</span><span class="p">:</span> 1499 1508 <span class="k">for</span> <span class="n">ix</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">ni</span><span class="o">*</span><span class="n">nj</span><span class="p">):</span> 1500 <span class="n">lsp_new_np</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">ix</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">IA3</span><span class="p">(</span><span class="n">lsp_np</span><span class="p">[</span><span class="n">ix</span><span class="p">,:])[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>1501 <span class="n">cp_new_np</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">ix</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">IA3</span><span class="p">(</span><span class="n">cp_np</span><span class="p">[</span><span class="n">ix</span><span class="p">,:])[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>1509 <span class="n">lsp_new_np</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">ix</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">IA3</span><span class="p">(</span><span class="n">lsp_np</span><span class="p">[</span><span class="n">ix</span><span class="p">,</span> <span class="p">:])[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> 1510 <span class="n">cp_new_np</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">ix</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">IA3</span><span class="p">(</span><span class="n">cp_np</span><span class="p">[</span><span class="n">ix</span><span class="p">,</span> <span class="p">:])[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> 1502 1511 1503 1512 <span class="c1"># write to grib files (full/orig times to flux file and inbetween</span> … … 1564 1573 <span class="c1"># write original time step to flux file as usual</span> 1565 1574 <span class="n">fluxfile</span> <span class="o">=</span> <span class="n">GribUtil</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="n">fluxfilename</span><span class="p">))</span> 1566 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>1575 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> 1567 1576 <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'paramId'</span><span class="p">],</span> <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">142</span><span class="p">],</span> 1568 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span><span class="s1">'date'</span><span class="p">,</span><span class="s1">'time'</span><span class="p">,</span><span class="s1">'stepRange'</span><span class="p">,</span><span class="s1">'values'</span><span class="p">],</span> 1577 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> 1578 <span class="s1">'stepRange'</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">],</span> 1569 1579 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1570 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">lsp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">, :,</span><span class="n">it</span><span class="p">]],</span>1580 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">lsp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="p">:,</span> <span class="n">it</span><span class="p">]],</span> 1571 1581 <span class="p">)</span> 1572 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>1582 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> 1573 1583 <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'paramId'</span><span class="p">],</span> <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">143</span><span class="p">],</span> 1574 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span><span class="s1">'date'</span><span class="p">,</span><span class="s1">'time'</span><span class="p">,</span><span class="s1">'stepRange'</span><span class="p">,</span><span class="s1">'values'</span><span class="p">],</span> 1575 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span><span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1576 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">cp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,:,</span><span class="n">it</span><span class="p">]]</span> 1584 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> 1585 <span class="s1">'stepRange'</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">],</span> 1586 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1587 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">cp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="p">:,</span> <span class="n">it</span><span class="p">]]</span> 1577 1588 <span class="p">)</span> 1578 1589 1579 1590 <span class="c1"># rr for first subgrid point is identified by step = 1</span> 1580 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>1591 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> 1581 1592 <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'paramId'</span><span class="p">],</span> <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">142</span><span class="p">],</span> 1582 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span><span class="s1">'date'</span><span class="p">,</span><span class="s1">'time'</span><span class="p">,</span><span class="s1">'stepRange'</span><span class="p">,</span><span class="s1">'values'</span><span class="p">],</span> 1583 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span><span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1584 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="n">lsp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,:,</span><span class="n">it</span><span class="o">+</span><span class="mi">1</span><span class="p">]]</span> 1585 <span class="p">)</span> 1586 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> 1593 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> 1594 <span class="s1">'stepRange'</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">],</span> 1595 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1596 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="n">lsp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="p">:,</span> <span class="n">it</span><span class="o">+</span><span class="mi">1</span><span class="p">]]</span> 1597 <span class="p">)</span> 1598 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> 1587 1599 <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'paramId'</span><span class="p">],</span> <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">143</span><span class="p">],</span> 1588 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span><span class="s1">'date'</span><span class="p">,</span><span class="s1">'time'</span><span class="p">,</span><span class="s1">'stepRange'</span><span class="p">,</span><span class="s1">'values'</span><span class="p">],</span> 1589 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span><span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1590 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="n">cp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,:,</span><span class="n">it</span><span class="o">+</span><span class="mi">1</span><span class="p">]]</span> 1591 <span class="p">)</span> 1600 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> 1601 <span class="s1">'stepRange'</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">],</span> 1602 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1603 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="n">cp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="p">:,</span> <span class="n">it</span><span class="o">+</span><span class="mi">1</span><span class="p">]]</span> 1604 <span class="p">)</span> 1592 1605 1593 1606 <span class="c1"># rr for second subgrid point is identified by step = 2</span> 1594 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>1607 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> 1595 1608 <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'paramId'</span><span class="p">],</span> <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">142</span><span class="p">],</span> 1596 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span><span class="s1">'date'</span><span class="p">,</span><span class="s1">'time'</span><span class="p">,</span><span class="s1">'stepRange'</span><span class="p">,</span><span class="s1">'values'</span><span class="p">],</span> 1597 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span><span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1598 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'2'</span><span class="p">,</span> <span class="n">lsp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,:,</span><span class="n">it</span><span class="o">+</span><span class="mi">2</span><span class="p">]]</span> 1599 <span class="p">)</span> 1600 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> 1609 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> 1610 <span class="s1">'stepRange'</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">],</span> 1611 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1612 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'2'</span><span class="p">,</span> <span class="n">lsp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="p">:,</span> <span class="n">it</span><span class="o">+</span><span class="mi">2</span><span class="p">]]</span> 1613 <span class="p">)</span> 1614 <span class="n">fluxfile</span><span class="o">.</span><span class="n">set_keys</span><span class="p">(</span><span class="n">tmpfile</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">,</span> 1601 1615 <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'paramId'</span><span class="p">],</span> <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">143</span><span class="p">],</span> 1602 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span><span class="s1">'date'</span><span class="p">,</span><span class="s1">'time'</span><span class="p">,</span><span class="s1">'stepRange'</span><span class="p">,</span><span class="s1">'values'</span><span class="p">],</span> 1603 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span><span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1604 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'2'</span><span class="p">,</span> <span class="n">cp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,:,</span><span class="n">it</span><span class="o">+</span><span class="mi">2</span><span class="p">]]</span> 1605 <span class="p">)</span> 1616 <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'perturbationNumber'</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> 1617 <span class="s1">'stepRange'</span><span class="p">,</span> <span class="s1">'values'</span><span class="p">],</span> 1618 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</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">'</span><span class="p">)),</span> 1619 <span class="n">date</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'2'</span><span class="p">,</span> <span class="n">cp_new_np</span><span class="p">[</span><span class="n">inumb</span><span class="p">,</span> <span class="p">:,</span> <span class="n">it</span><span class="o">+</span><span class="mi">2</span><span class="p">]]</span> 1620 <span class="p">)</span> 1606 1621 1607 1622 <span class="n">it</span> <span class="o">=</span> <span class="n">it</span> <span class="o">+</span> <span class="mi">3</span> <span class="c1"># jump to next original time step in rr fields</span> … … 1625 1640 <span class="sd"> '''</span> 1626 1641 1627 <span class="n">gribfile</span> <span class="o">=</span> <span class="n">GribUtil</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">inputdir</span><span class="p">,</span> <span class="s1">'rr_grib_dummy.grb'</span><span class="p">))</span>1642 <span class="n">gribfile</span> <span class="o">=</span> <span class="n">GribUtil</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">inputdir</span><span class="p">,</span> <span class="s1">'rr_grib_dummy.grb'</span><span class="p">))</span> 1628 1643 1629 1644 <span class="n">gribfile</span><span class="o">.</span><span class="n">copy_dummy_msg</span><span class="p">(</span><span class="n">ifile</span><span class="p">,</span> <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'paramId'</span><span class="p">],</span> 1630 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">142</span><span class="p">],</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'wb'</span><span class="p">)</span>1645 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">142</span><span class="p">],</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'wb'</span><span class="p">)</span> 1631 1646 1632 1647 <span class="n">gribfile</span><span class="o">.</span><span class="n">copy_dummy_msg</span><span class="p">(</span><span class="n">ifile</span><span class="p">,</span> <span class="n">keynames</span><span class="o">=</span><span class="p">[</span><span class="s1">'paramId'</span><span class="p">],</span> 1633 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">143</span><span class="p">],</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">)</span>1648 <span class="n">keyvalues</span><span class="o">=</span><span class="p">[</span><span class="mi">143</span><span class="p">],</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'ab'</span><span class="p">)</span> 1634 1649 1635 1650 <span class="k">return</span> … … 1663 1678 1664 1679 <span class="sd"> '''</span> 1665 <span class="kn">from</span> <span class="nn">eccodes</span> <span class="k">import</span> <span class="p">(</span><span class="n">codes_index_select</span><span class="p">,</span> <span class="n">codes_ new_from_index</span><span class="p">,</span> <span class="n">codes_get</span><span class="p">,</span>1680 <span class="kn">from</span> <span class="nn">eccodes</span> <span class="k">import</span> <span class="p">(</span><span class="n">codes_index_select</span><span class="p">,</span> <span class="n">codes_get</span><span class="p">,</span> 1666 1681 <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> 1667 1682 <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> … … 1745 1760 <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> 1746 1761 1762 <span class="c1"># if basetime is used, adapt start/end date period</span> 1763 <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> 1764 <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> 1765 <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">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> 1766 <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> 1767 <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="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> 1768 <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> 1769 1747 1770 <span class="c1"># skip all temporary times</span> 1748 1771 <span class="c1"># which are outside the retrieval period</span> … … 1751 1774 <span class="k">continue</span> 1752 1775 1753 <span class="c1"># if the timestamp is out of basetime start/end date period,</span>1754 <span class="c1"># skip this specific product</span>1755 <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>1756 <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>1757 <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>1758 <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>1759 <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>1760 <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span>1761 <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>1762 <span class="k">continue</span>1763 1776 1764 1777 <span class="c1"># @WRF</span> … … 1782 1795 <span class="n">paramId</span> <span class="o">=</span> <span class="n">codes_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'paramId'</span><span class="p">)</span> 1783 1796 <span class="n">gridtype</span> <span class="o">=</span> <span class="n">codes_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'gridType'</span><span class="p">)</span> 1784 <span class="n">levtype</span> <span class="o">=</span> <span class="n">codes_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'typeOfLevel'</span><span class="p">)</span>1785 1797 <span class="k">if</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">77</span><span class="p">:</span> <span class="c1"># ETADOT</span> 1786 1798 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'21'</span><span class="p">])</span> … … 1866 1878 <span class="c1"># Fortran program creates file fort.15 (with u,v,etadot,t,sp,q)</span> 1867 1879 <span class="n">execute_subprocess</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">exedir</span><span class="p">,</span> 1868 <span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span><span class="p">)],</span>1880 <span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span><span class="p">)],</span> 1869 1881 <span class="n">error_msg</span><span class="o">=</span><span class="s1">'FORTRAN PROGRAM FAILED!'</span><span class="p">)</span><span class="c1">#shell=True)</span> 1870 1882 … … 1895 1907 <span class="c1"># to the outputfile (final GRIB input files for FLEXPART)</span> 1896 1908 <span class="n">orolsm</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">basename</span><span class="p">(</span><span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">+</span> 1897 <span class="s1">'/OG_OROLSM__SL.*.'</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">ppid</span> <span class="o">+</span> <span class="s1">'*'</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> 1909 <span class="s1">'/OG_OROLSM__SL.*.'</span> <span class="o">+</span> 1910 <span class="n">c</span><span class="o">.</span><span class="n">ppid</span> <span class="o">+</span> 1911 <span class="s1">'*'</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> 1898 1912 <span class="n">fluxfile</span> <span class="o">=</span> <span class="s1">'flux'</span> <span class="o">+</span> <span class="n">cdate</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">suffix</span> 1899 1913 <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">cwc</span><span class="p">:</span> … … 1945 1959 <span class="sd"> '''</span> 1946 1960 <span class="kn">from</span> <span class="nn">eccodes</span> <span class="k">import</span> <span class="p">(</span><span class="n">codes_grib_new_from_file</span><span class="p">,</span> <span class="n">codes_get_array</span><span class="p">,</span> 1947 <span class="n">codes_set_array</span><span class="p">,</span> <span class="n">codes_release</span><span class="p">,</span> <span class="n">codes_set_values</span><span class="p">,</span>1948 <span class="n">codes_set</span><span class="p">,</span> <span class="n">codes_write</span><span class="p"> ,</span> <span class="n">codes_release</span><span class="p">)</span>1961 <span class="n">codes_set_array</span><span class="p">,</span> <span class="n">codes_release</span><span class="p">,</span> 1962 <span class="n">codes_set</span><span class="p">,</span> <span class="n">codes_write</span><span class="p">)</span> 1949 1963 1950 1964 <span class="c1"># max number</span> … … 1952 1966 1953 1967 <span class="c1"># get a list of all prepared output files with control forecast (CF)</span> 1954 <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>1955 <span class="n"> CF_filelist</span><span class="o">.</span><span class="n">files</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">CF_filelist</span><span class="o">.</span><span class="n">files</span><span class="p">)</span>1956 1957 <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>1968 <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> 1969 <span class="n">cf_filelist</span><span class="o">.</span><span class="n">files</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">cf_filelist</span><span class="o">.</span><span class="n">files</span><span class="p">)</span> 1970 1971 <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> 1958 1972 <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> 1959 <span class="n">cfvalues</span> <span class="o">=</span><span class="p">[]</span>1973 <span class="n">cfvalues</span> <span class="o">=</span> <span class="p">[]</span> 1960 1974 <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> 1961 1975 <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> … … 2062 2076 2063 2077 <span class="k">return</span></div></div> 2064 2065 2078 </pre></div> 2066 2079 -
Documentation/html/_modules/GribUtil.html
r30f7911 reca358d 230 230 231 231 232 <div class="viewcode-block" id="GribUtil.get_keys"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.get_keys">[docs]</a> <span class="k">def</span> <span class="nf">get_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keynames</span><span class="p">,</span> <span class="n">wherekeynames</span><span class=" o">=</span><span class="p">[],</span> <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[]):</span>232 <div class="viewcode-block" id="GribUtil.get_keys"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.get_keys">[docs]</a> <span class="k">def</span> <span class="nf">get_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keynames</span><span class="p">,</span> <span class="n">wherekeynames</span><span class="p">,</span> <span class="n">wherekeyvalues</span><span class="p">):</span> 233 233 <span class="sd">'''Get keyvalues for a given list of keynames a where statement</span> 234 234 <span class="sd"> can be given (list of key and list of values)</span> … … 239 239 <span class="sd"> List of keynames.</span> 240 240 241 <span class="sd"> wherekeynames : :obj:`list` of :obj:`string` , optional</span>242 <span class="sd"> Default value is an empty list.</span>243 244 <span class="sd"> wherekeyvalues : :obj:`list` of :obj:`string` , optional</span>245 <span class="sd"> Default value is an empty list.</span>241 <span class="sd"> wherekeynames : :obj:`list` of :obj:`string`</span> 242 <span class="sd"> List of key names for indexing grib message parameter.</span> 243 244 <span class="sd"> wherekeyvalues : :obj:`list` of :obj:`string`</span> 245 <span class="sd"> List of key values corresponding the key names.</span> 246 246 247 247 <span class="sd"> Return</span> … … 284 284 285 285 286 <div class="viewcode-block" id="GribUtil.set_keys"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.set_keys">[docs]</a> <span class="k">def</span> <span class="nf">set_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fromfile</span><span class="p">,</span> <span class="n">keynames</span><span class="p">,</span> <span class="n">keyvalues</span><span class="p">,</span> <span class="n">wherekeynames</span><span class=" o">=</span><span class="p">[],</span>287 <span class="n">wherekeyvalues</span><span class=" o">=</span><span class="p">[],</span> <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'wb'</span><span class="p">):</span>286 <div class="viewcode-block" id="GribUtil.set_keys"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.set_keys">[docs]</a> <span class="k">def</span> <span class="nf">set_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fromfile</span><span class="p">,</span> <span class="n">keynames</span><span class="p">,</span> <span class="n">keyvalues</span><span class="p">,</span> <span class="n">wherekeynames</span><span class="p">,</span> 287 <span class="n">wherekeyvalues</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'wb'</span><span class="p">):</span> 288 288 <span class="sd">'''Opens the file to read the grib messages and then write</span> 289 289 <span class="sd"> the selected messages (with wherekeys) to a new output file.</span> … … 303 303 <span class="sd"> Default is an empty list.</span> 304 304 305 <span class="sd"> wherekeynames : :obj:`list` of :obj:`string` , optional</span>305 <span class="sd"> wherekeynames : :obj:`list` of :obj:`string`</span> 306 306 <span class="sd"> List of keynames to select correct message.</span> 307 <span class="sd"> Default value is an empty list.</span> 308 309 <span class="sd"> wherekeyvalues : :obj:`list` of :obj:`string`, optional</span> 307 308 <span class="sd"> wherekeyvalues : :obj:`list` of :obj:`string`</span> 310 309 <span class="sd"> List of keyvalues for keynames to select correct message.</span> 311 <span class="sd"> Default value is an empty list.</span>312 313 <span class="sd"> strict : :obj:`boolean`, optional</span>314 <span class="sd"> Decides if everything from keynames and keyvalues</span>315 <span class="sd"> is written out the grib file (False) or only those</span>316 <span class="sd"> meeting the where statement (True). Default is False.</span>317 310 318 311 <span class="sd"> filemode : :obj:`string`, optional</span> … … 362 355 <span class="k">return</span></div> 363 356 364 <div class="viewcode-block" id="GribUtil.copy_dummy_msg"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.copy_dummy_msg">[docs]</a> <span class="k">def</span> <span class="nf">copy_dummy_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename_in</span><span class="p">,</span> <span class="n"> selectWhere</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>365 <span class="n">keynames</span><span class="o">=</span><span class="p">[],</span> <span class="n">keyvalues</span><span class="o">=</span><span class="p">[],</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'wb'</span><span class="p">):</span>357 <div class="viewcode-block" id="GribUtil.copy_dummy_msg"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.copy_dummy_msg">[docs]</a> <span class="k">def</span> <span class="nf">copy_dummy_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename_in</span><span class="p">,</span> <span class="n">keynames</span><span class="p">,</span> <span class="n">keyvalues</span><span class="p">,</span> 358 <span class="n">selectwhere</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'wb'</span><span class="p">):</span> 366 359 <span class="sd">'''Add the content of another input grib file to the objects file but</span> 367 360 <span class="sd"> only messages corresponding to keys/values passed to the function.</span> … … 374 367 <span class="sd"> Filename of the input file to read the grib messages from.</span> 375 368 376 <span class="sd"> select Where : :obj:`boolean`, optional</span>369 <span class="sd"> selectwhere : :obj:`boolean`, optional</span> 377 370 <span class="sd"> Decides if to copy the keynames and values equal to (True) or</span> 378 371 <span class="sd"> different to (False) the keynames/keyvalues list passed to the</span> 379 372 <span class="sd"> function. Default is True.</span> 380 373 381 <span class="sd"> keynames : :obj:`list` of :obj:`string` , optional</span>382 <span class="sd"> List of keynames. Default is an empty list.</span>383 384 <span class="sd"> keyvalues : :obj:`list` of :obj:`string` , optional</span>385 <span class="sd"> List of keyvalues. Default is an empty list.</span>374 <span class="sd"> keynames : :obj:`list` of :obj:`string`</span> 375 <span class="sd"> List of keynames.</span> 376 377 <span class="sd"> keyvalues : :obj:`list` of :obj:`string`</span> 378 <span class="sd"> List of keyvalues.</span> 386 379 387 380 <span class="sd"> filemode : :obj:`string`, optional</span> … … 416 409 <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Key was not defined"</span><span class="p">)</span> 417 410 418 <span class="k">if</span> <span class="n">select Where</span><span class="p">:</span>411 <span class="k">if</span> <span class="n">selectwhere</span><span class="p">:</span> 419 412 <span class="n">select</span> <span class="o">=</span> <span class="p">(</span><span class="n">select</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">keyvalues</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">==</span> 420 413 <span class="nb">str</span><span class="p">(</span><span class="n">codes_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">key</span><span class="p">))))</span> … … 434 427 <span class="k">return</span></div> 435 428 436 <div class="viewcode-block" id="GribUtil.index"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.index">[docs]</a> <span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_keys</span><span class=" o">=</span><span class="p">[</span><span class="s2">"mars"</span><span class="p">],</span> <span class="n">index_file</span><span class="o">=</span><span class="s2">"my.idx"</span><span class="p">):</span>429 <div class="viewcode-block" id="GribUtil.index"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.index">[docs]</a> <span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_keys</span><span class="p">,</span> <span class="n">index_file</span><span class="o">=</span><span class="s2">"my.idx"</span><span class="p">):</span> 437 430 <span class="sd">'''Create index file from a list of files if it does not exist or</span> 438 431 <span class="sd"> read an index file.</span> … … 440 433 <span class="sd"> Parameters</span> 441 434 <span class="sd"> ----------</span> 442 <span class="sd"> index_keys: :obj:`list` of :obj:`string` , optional</span>435 <span class="sd"> index_keys: :obj:`list` of :obj:`string`</span> 443 436 <span class="sd"> Contains the list of key parameter names from</span> 444 437 <span class="sd"> which the index is to be created.</span> 445 <span class="sd"> Default is a list with a single entry string "mars".</span>446 438 447 439 <span class="sd"> index_file: :obj:`string`, optional</span> -
Documentation/html/_modules/MarsRetrieval.html
r30f7911 reca358d 204 204 205 205 <span class="c1"># software specific classes and modules from flex_extract</span> 206 <span class="c1">#pylint: disable=wrong-import-position</span> 206 207 <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> 207 208 <span class="kn">import</span> <span class="nn">_config</span> 209 <span class="c1">#pylint: disable=invalid-name</span> 208 210 <span class="k">try</span><span class="p">:</span> 209 211 <span class="n">ec_api</span> <span class="o">=</span> <span class="kc">True</span> … … 217 219 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 218 220 <span class="n">cds_api</span> <span class="o">=</span> <span class="kc">False</span> 221 <span class="c1">#pylint: enable=invalid-name</span> 222 <span class="c1">#pylint: enable=wrong-import-position</span> 219 223 <span class="c1"># ------------------------------------------------------------------------------</span> 220 224 <span class="c1"># CLASS</span> … … 672 676 <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> 673 677 <span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> 674 <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>675 678 <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> 676 679 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span> -
Documentation/html/_modules/UioFiles.html
r30f7911 reca358d 204 204 205 205 <span class="c1"># software specific modules from flex_extract</span> 206 <span class="c1">#pylint: disable=wrong-import-position</span> 206 207 <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> 207 208 <span class="kn">from</span> <span class="nn">Mods.tools</span> <span class="k">import</span> <span class="n">silent_remove</span><span class="p">,</span> <span class="n">get_list_as_string</span> 209 <span class="c1">#pylint: enable=wrong-import-position</span> 208 210 209 211 <span class="c1"># ------------------------------------------------------------------------------</span> … … 212 214 213 215 <div class="viewcode-block" id="UioFiles"><a class="viewcode-back" href="../Documentation/Api/api_python.html#UioFiles.UioFiles">[docs]</a><span class="k">class</span> <span class="nc">UioFiles</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> 214 <span class="sd">& #39;''Collection of files matching a specific pattern.</span>216 <span class="sd">"""Collection of files matching a specific pattern.</span> 215 217 216 218 <span class="sd"> The pattern can contain regular expressions for the files.</span> … … 224 226 225 227 <span class="sd"> pattern : str</span> 226 <span class="sd"> Regular expression pattern. For example: ' \*.grb'</span>228 <span class="sd"> Regular expression pattern. For example: '*.grb'</span> 227 229 228 230 <span class="sd"> files : list of str</span> 229 231 <span class="sd"> List of files matching the pattern in the path.</span> 230 <span class="sd"> & #39;''</span>232 <span class="sd"> """</span> 231 233 <span class="c1"># --------------------------------------------------------------------------</span> 232 234 <span class="c1"># CLASS METHODS</span> 233 235 <span class="c1"># --------------------------------------------------------------------------</span> 234 236 <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">path</span><span class="p">,</span> <span class="n">pattern</span><span class="p">):</span> 235 <span class="sd">& #39;''Assignes a specific pattern for these files.</span>237 <span class="sd">"""Assignes a specific pattern for these files.</span> 236 238 237 239 <span class="sd"> Parameters</span> … … 241 243 242 244 <span class="sd"> pattern : str</span> 243 <span class="sd"> Regular expression pattern. For example: ' \*.grb'</span>245 <span class="sd"> Regular expression pattern. For example: '*.grb'</span> 244 246 245 247 <span class="sd"> Return</span> 246 248 <span class="sd"> ------</span> 247 249 248 <span class="sd"> & #39;''</span>250 <span class="sd"> """</span> 249 251 250 252 <span class="bp">self</span><span class="o">.</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span> … … 258 260 259 261 <span class="k">def</span> <span class="nf">_list_files</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span> 260 <span class="sd">& #39;''Lists all files in the directory with the matching</span>262 <span class="sd">"""Lists all files in the directory with the matching</span> 261 263 <span class="sd"> regular expression pattern.</span> 262 264 … … 269 271 <span class="sd"> ------</span> 270 272 271 <span class="sd"> & #39;''</span>273 <span class="sd"> """</span> 272 274 <span class="c1"># Get the absolute path</span> 273 275 <span class="n">path</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">abspath</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> 274 276 275 277 <span class="c1"># get all files in the dir and subdir as absolut path</span> 278 <span class="c1"># pylint: disable=W0612</span> 276 279 <span class="k">for</span> <span class="n">root</span><span class="p">,</span> <span class="n">dirnames</span><span class="p">,</span> <span class="n">filenames</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">):</span> 277 280 <span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> <span class="n">fnmatch</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">filenames</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pattern</span><span class="p">):</span> … … 282 285 283 286 <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 284 <span class="sd">& #39;''Converts the list of files into a single string.</span>287 <span class="sd">"""Converts the list of files into a single string.</span> 285 288 <span class="sd"> The entries are sepereated by "," sign.</span> 286 289 … … 292 295 <span class="sd"> files_string : str</span> 293 296 <span class="sd"> The content of the list as a single string.</span> 294 <span class="sd"> & #39;''</span>297 <span class="sd"> """</span> 295 298 296 299 <span class="n">filenames</span> <span class="o">=</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">f</span><span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> … … 301 304 302 305 <div class="viewcode-block" id="UioFiles.delete_files"><a class="viewcode-back" href="../Documentation/Api/api_python.html#UioFiles.UioFiles.delete_files">[docs]</a> <span class="k">def</span> <span class="nf">delete_files</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 303 <span class="sd">& #39;''Deletes the files.</span>306 <span class="sd">"""Deletes the files.</span> 304 307 305 308 <span class="sd"> Parameters</span> … … 309 312 <span class="sd"> ------</span> 310 313 311 <span class="sd"> & #39;''</span>314 <span class="sd"> """</span> 312 315 313 316 <span class="k">for</span> <span class="n">old_file</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">files</span><span class="p">:</span> -
Documentation/html/_modules/checks.html
r30f7911 reca358d 191 191 <span class="kn">import</span> <span class="nn">os</span> 192 192 <span class="kn">import</span> <span class="nn">sys</span> 193 194 <span class=" kn">import</span> <span class="nn">_config</span>193 <span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span> 194 <span class="c1"># pylint: disable=unused-import</span> 195 195 <span class="k">try</span><span class="p">:</span> 196 196 <span class="kn">import</span> <span class="nn">exceptions</span> 197 197 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 198 198 <span class="kn">import</span> <span class="nn">builtins</span> <span class="k">as</span> <span class="nn">exceptions</span> 199 <span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span> 199 <span class="c1"># pylint: enable=unused-import</span> 200 201 <span class="c1"># software specific classes and modules from flex_extract</span> 202 <span class="kn">import</span> <span class="nn">_config</span> 200 203 <span class="kn">from</span> <span class="nn">Mods.tools</span> <span class="k">import</span> <span class="n">my_error</span><span class="p">,</span> <span class="n">silent_remove</span> 201 204 <span class="c1"># ------------------------------------------------------------------------------</span> … … 275 278 <span class="k">return</span> <span class="n">grid</span></div> 276 279 277 <div class="viewcode-block" id="check_area"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_area">[docs]</a><span class="k">def</span> <span class="nf">check_area</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">area</span><span class="p">,</span> <span class="n">upper</span><span class="p">,</span> <span class="n">lower</span><span class="p">,</span> <span class="n">left</span> 280 <div class="viewcode-block" id="check_area"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_area">[docs]</a><span class="k">def</span> <span class="nf">check_area</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">area</span><span class="p">,</span> <span class="n">upper</span><span class="p">,</span> <span class="n">lower</span><span class="p">,</span> <span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">):</span> 278 281 <span class="sd">'''Defines the correct area string.</span> 279 282 … … 320 323 321 324 <span class="c1"># determine area format</span> 322 <span class="k">if</span> <span class=" p">((</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span> <span class="p">)</span> <span class="ow">and</span>323 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span> <span class="p">)</span> <span class="ow">and</span>324 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span> <span class="p">)</span> <span class="ow">and</span>325 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">)):</span>325 <span class="k">if</span> <span class="nb">all</span><span class="p">([(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">),</span> 326 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">),</span> 327 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">),</span> 328 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">)]):</span> 326 329 <span class="c1"># area is defined in 1/1000 degrees; old format</span> 327 330 <span class="n">area</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><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">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">,</span> … … 329 332 <span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">,</span> 330 333 <span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">)</span> 331 <span class="k">elif</span> <span class=" p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span> <span class="ow">and</span>332 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span> <span class="ow">and</span>333 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span> <span class="ow">and</span>334 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">):</span>334 <span class="k">elif</span> <span class="nb">all</span><span class="p">([</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">,</span> 335 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">,</span> 336 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">,</span> 337 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">]):</span> 335 338 <span class="c1"># area is already in new format</span> 336 339 <span class="n">area</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><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">float</span><span class="p">(</span><span class="n">upper</span><span class="p">),</span> … … 342 345 <span class="s1">'formats (upper, lower, left, right): '</span> 343 346 <span class="s1">'</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><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">upper</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">lower</span><span class="p">),</span> 344 <span class="nb">str</span><span class="p">(</span><span class="n">left</span><span class="p">) </span> <span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">right</span><span class="p">)))</span>347 <span class="nb">str</span><span class="p">(</span><span class="n">left</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">right</span><span class="p">)))</span> 345 348 346 349 <span class="k">return</span> <span class="n">area</span></div> … … 443 446 444 447 445 <div class="viewcode-block" id="check_step"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_step">[docs]</a><span class="k">def</span> <span class="nf">check_step</span><span class="p">(</span><span class="n">step</span><span class="p"> ,</span> <span class="n">mailfail</span><span class="p">):</span>448 <div class="viewcode-block" id="check_step"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_step">[docs]</a><span class="k">def</span> <span class="nf">check_step</span><span class="p">(</span><span class="n">step</span><span class="p">):</span> 446 449 <span class="sd">'''Checks on step format and convert into a list of steps.</span> 447 450 … … 455 458 <span class="sd"> Specifies the forecast time step from forecast base time.</span> 456 459 <span class="sd"> Valid values are hours (HH) from forecast base time.</span> 457 458 <span class="sd"> mailfail : list of str</span>459 <span class="sd"> Contains all email addresses which should be notified.</span>460 <span class="sd"> It might also contain just the ecmwf user name which will trigger</span>461 <span class="sd"> mailing to the associated email address for this user.</span>462 460 463 461 <span class="sd"> Return</span> … … 567 565 <span class="sd"> Valid values are hours (HH) from forecast base time.</span> 568 566 <span class="sd"> '''</span> 569 <span class="k">if</span> <span class="ow">not</span> <span class=" p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">ftype</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">ftime</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">steps</span><span class="p">)):</span>567 <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">ftype</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">ftime</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">steps</span><span class="p">):</span> 570 568 <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'ERROR: The number of field types, times and steps '</span> 571 569 <span class="s1">'are not the same! Please check the setting in the '</span> … … 715 713 <span class="s1">'in CONTROL file.</span><span class="se">\n</span><span class="s1">'</span> 716 714 <span class="s1">'Try "</span><span class="si">{}</span><span class="s1"> -h" to print usage information'</span> 717 <span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</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> <span class="p">)</span>715 <span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</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> 718 716 719 717 <span class="c1"># retrieve just one day if end_date isn't set</span> … … 952 950 <span class="n">accmaxstep</span> <span class="o">=</span> <span class="n">maxstep</span> 953 951 <span class="nb">print</span><span class="p">(</span><span class="s1">'... For pure forecast mode, the accumulated forecast must '</span> 954 955 952 <span class="s1">'have the same maxstep as the normal forecast fields!</span><span class="se">\n</span><span class="s1">'</span> 953 <span class="s1">'</span><span class="se">\t\t</span><span class="s1"> Accmaxstep was set to maxstep!'</span><span class="p">)</span> 956 954 <span class="k">return</span> <span class="n">accmaxstep</span></div> 957 955 … … 1013 1011 1014 1012 1015 <div class="viewcode-block" id="check_number"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_number">[docs]</a><span class="k">def</span> <span class="nf">check_number</span><span class="p">(</span><span class="n">number</span><span class="p"> ,</span> <span class="n">mailfail</span><span class="p">):</span>1013 <div class="viewcode-block" id="check_number"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_number">[docs]</a><span class="k">def</span> <span class="nf">check_number</span><span class="p">(</span><span class="n">number</span><span class="p">):</span> 1016 1014 <span class="sd">'''Check for correct string format of ensemble member numbers.</span> 1017 1015 … … 1020 1018 <span class="sd"> number : str</span> 1021 1019 <span class="sd"> List of ensemble member forecast runs.</span> 1022 1023 <span class="sd"> mailfail : list of str</span>1024 <span class="sd"> Contains all email addresses which should be notified.</span>1025 <span class="sd"> It might also contain just the ecmwf user name which will trigger</span>1026 <span class="sd"> mailing to the associated email address for this user.</span>1027 1020 1028 1021 <span class="sd"> Return</span> -
Documentation/html/_modules/disaggregation.html
r30f7911 reca358d 409 409 <span class="c1"># geometric mean, restricted such that non-negativity is guaranteed</span> 410 410 <span class="c1"># according to Eq. (25)</span> 411 <span class="n">fip1</span> <span class="o">=</span><span class="nb">min</span><span class="p">(</span> <span class="mf">3.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">,</span> <span class="mf">3.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="p">)</span>411 <span class="n">fip1</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span> 412 412 413 413 <span class="c1"># the function value at the first sub-grid point (fi1) is determined</span> … … 443 443 <span class="c1"># the monotonicity filter corrects the value at (fim1) by</span> 444 444 <span class="c1"># substituting (fim1) with (fmon), see Eq. (27), (28) and (29)</span> 445 <span class="n">fmon</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">2</span><span class="p">],</span> \446 <span class="mf">3.</span> <span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> \447 <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">, (</span><span class="mf">18.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">])</span> <span class="o">*</span>448 <span class="p">(</span><span class="mf">18.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))))</span>445 <span class="n">fmon</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">2</span><span class="p">],</span> 446 <span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span> 447 <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="mf">18.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">])</span> <span class="o">*</span> 448 <span class="p">(</span><span class="mf">18.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))))</span> 449 449 450 450 <span class="c1"># recomputation of the sub-grid interval values while the</span> … … 457 457 <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="p">(</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">fmon</span><span class="p">)</span><span class="o">/</span><span class="mf">3.</span> 458 458 459 <span class="n">f</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span><span class="mf">0.</span><span class="p">])</span>459 <span class="n">f</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">])</span> 460 460 461 461 <span class="c1"># otherwise the sub-grid values are calculated and added to the list</span> … … 468 468 <span class="c1"># geometric mean, restricted such that non-negativity is guaranteed</span> 469 469 <span class="c1"># according to Eq. (25)</span> 470 <span class="n">fip1</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span> <span class="mf">3.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">,</span> <span class="mf">3.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="p">)</span>470 <span class="n">fip1</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span> 471 471 472 472 <span class="c1"># the function value at the first sub-grid point (fi1) is determined</span> … … 486 486 <span class="c1"># the monotonicity filter corrects the value at (fim1) by</span> 487 487 <span class="c1"># substituting (fim1) with fmon, see Eq. (27), (28) and (29)</span> 488 <span class="n">fmon</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">2</span><span class="p">],</span> \489 <span class="mf">3.</span> <span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> \490 <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">, (</span><span class="mf">18.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">])</span> <span class="o">*</span>491 <span class="p">(</span><span class="mf">18.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))))</span>488 <span class="n">fmon</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">2</span><span class="p">],</span> 489 <span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span> 490 <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="mf">18.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">])</span> <span class="o">*</span> 491 <span class="p">(</span><span class="mf">18.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))))</span> 492 492 493 493 <span class="c1"># recomputation of the sub-grid interval values while the</span> … … 520 520 <span class="c1"># the monotonicity filter corrects the value at (fim1) by</span> 521 521 <span class="c1"># substituting (fim1) with (fmon), see Eq. (27), (28) and (29)</span> 522 <span class="n">fmon</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">],</span> \523 <span class="mf">3.</span> <span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">],</span> \524 <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">, (</span><span class="mf">18.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">])</span> <span class="o">*</span>525 <span class="p">(</span><span class="mf">18.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))))</span>522 <span class="n">fmon</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">],</span> 523 <span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">],</span> 524 <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="mf">18.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">])</span> <span class="o">*</span> 525 <span class="p">(</span><span class="mf">18.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))))</span> 526 526 527 527 <span class="c1"># recomputation of the sub-grid interval values while the</span> … … 534 534 <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="p">(</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">fmon</span><span class="p">)</span><span class="o">/</span><span class="mf">3.</span> 535 535 536 <span class="n">f</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span><span class="mf">0.</span><span class="p">])</span>536 <span class="n">f</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">])</span> 537 537 538 538 <span class="c1"># otherwise the sub-grid values are calculated and added to the list</span> … … 559 559 <span class="c1"># the monotonicity filter corrects the value at (fim1) by</span> 560 560 <span class="c1"># substituting (fim1) with (fmon), see Eq. (27), (28) and (29)</span> 561 <span class="n">fmon</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">],</span> \562 <span class="mf">3.</span> <span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">],</span> \563 <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">, (</span><span class="mf">18.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">])</span> <span class="o">*</span>564 <span class="p">(</span><span class="mf">18.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span><span class="o">/</span><span class="mf">13.</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))))</span>561 <span class="n">fmon</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">],</span> 562 <span class="mf">3.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">],</span> 563 <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="mf">18.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">])</span> <span class="o">*</span> 564 <span class="p">(</span><span class="mf">18.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">g</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="mf">5.</span> <span class="o">/</span> <span class="mf">13.</span> <span class="o">*</span> <span class="n">f</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))))</span> 565 565 566 566 <span class="c1"># recomputation of the sub-grid interval values while the</span> -
Documentation/html/_modules/get_mars_data.html
r30f7911 reca358d 232 232 <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="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</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">abspath</span><span class="p">(</span> 233 233 <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> 234 <span class="c1"># pylint: disable=wrong-import-position</span> 234 235 <span class="kn">import</span> <span class="nn">_config</span> 235 <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">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> 236 <span class="n">read_ecenv</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">)</span> 236 <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">my_error</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">)</span> 237 237 <span class="kn">from</span> <span class="nn">Classes.EcFlexpart</span> <span class="k">import</span> <span class="n">EcFlexpart</span> 238 238 <span class="kn">from</span> <span class="nn">Classes.UioFiles</span> <span class="k">import</span> <span class="n">UioFiles</span> 239 239 <span class="kn">from</span> <span class="nn">Classes.MarsRetrieval</span> <span class="k">import</span> <span class="n">MarsRetrieval</span> 240 240 <span class="c1"># pylint: enable=wrong-import-position</span> 241 <span class="c1"># pylint: disable=invalid-name</span> 241 242 <span class="k">try</span><span class="p">:</span> 242 243 <span class="n">ec_api</span> <span class="o">=</span> <span class="kc">True</span> … … 250 251 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 251 252 <span class="n">cds_api</span> <span class="o">=</span> <span class="kc">False</span> 253 <span class="c1"># pylint: enable=invalid-name</span> 252 254 <span class="c1"># ------------------------------------------------------------------------------</span> 253 255 <span class="c1"># FUNCTION</span> … … 385 387 386 388 <div class="viewcode-block" id="check_dates_for_nonflux_fc_times"><a class="viewcode-back" href="../Documentation/Api/api_python.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> 387 <span class="sd">'''</span> 388 <span class="sd"> '''</span> 389 <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> 389 <span class="sd">'''Checks if the time 18UTC corresponds to forecast field.</span> 390 391 <span class="sd"> Parameters</span> 392 <span class="sd"> ----------</span> 393 <span class="sd"> types : list of str</span> 394 <span class="sd"> List of field types.</span> 395 396 <span class="sd"> times : list of str or str</span> 397 <span class="sd"> The time in hours of the field.</span> 398 399 <span class="sd"> Return</span> 400 <span class="sd"> ------</span> 401 <span class="sd"> True or False</span> 402 403 <span class="sd"> '''</span> 404 <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> 390 405 <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> 391 406 <span class="k">return</span> <span class="kc">True</span> … … 407 422 408 423 <span class="sd"> Since for basetime the extraction contains the 12 hours upfront,</span> 409 <span class="sd"> if basetime is 0, the starting date has to be the day before and</span>424 <span class="sd"> if basetime is 0, the starting date has to be the day before</span> 410 425 411 426 <span class="sd"> Parameters</span> -
Documentation/html/_modules/install.html
rd720895 reca358d 230 230 <span class="kn">import</span> <span class="nn">os</span> 231 231 <span class="kn">import</span> <span class="nn">sys</span> 232 <span class="kn">import</span> <span class="nn">glob</span>233 232 <span class="kn">import</span> <span class="nn">subprocess</span> 234 <span class="kn">import</span> <span class="nn">inspect</span>235 233 <span class="kn">import</span> <span class="nn">tarfile</span> 236 234 <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> … … 341 339 342 340 <span class="sd"> '''</span> 343 <span class="kn">import</span> <span class="nn">tarfile</span>344 341 345 342 <span class="n">tarball_name</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">'.tar'</span> 346 343 <span class="n">tar_file</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">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">,</span> <span class="n">tarball_name</span><span class="p">)</span> 347 344 348 <span class="n">mk_compilejob</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">,</span> 349 <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span> 350 351 <span class="n">mk_job_template</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">gateway</span><span class="p">,</span> 352 <span class="n">c</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span> 345 <span class="n">mk_compilejob</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span> 346 347 <span class="n">mk_job_template</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span> 353 348 354 349 <span class="n">mk_env_vars</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">gateway</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">destination</span><span class="p">)</span> … … 367 362 <span class="nb">print</span><span class="p">(</span><span class="s1">'Job compilation script has been submitted to ecgate for '</span> <span class="o">+</span> 368 363 <span class="s1">'installation in '</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">+</span> 369 364 <span class="s1">'/'</span> <span class="o">+</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">)</span> 370 365 <span class="nb">print</span><span class="p">(</span><span class="s1">'You should get an email with subject "flexcompile" within '</span> <span class="o">+</span> 371 366 <span class="s1">'the next few minutes!'</span><span class="p">)</span> … … 386 381 387 382 <span class="sd"> '''</span> 388 <span class="kn">import</span> <span class="nn">tarfile</span>389 383 390 384 <span class="n">tar_file</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">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">,</span> 391 385 <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">'.tar'</span><span class="p">)</span> 392 386 393 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">==</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> 387 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">==</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">:</span> 394 388 <span class="nb">print</span><span class="p">(</span><span class="s1">'WARNING: installdir has not been specified'</span><span class="p">)</span> 395 389 <span class="nb">print</span><span class="p">(</span><span class="s1">'flex_extract will be installed in here by compiling the '</span> <span class="o">+</span> … … 403 397 <span class="n">mk_tarball</span><span class="p">(</span><span class="n">tar_file</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="p">)</span> 404 398 <span class="n">make_dir</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">installdir</span><span class="p">,</span> 405 399 <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">))</span> 406 400 <span class="n">os</span><span class="o">.</span><span class="n">chdir</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">installdir</span><span class="p">,</span> 407 401 <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">))</span> 408 402 <span class="n">un_tarball</span><span class="p">(</span><span class="n">tar_file</span><span class="p">)</span> 409 403 <span class="n">os</span><span class="o">.</span><span class="n">chdir</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">installdir</span><span class="p">,</span> 410 404 <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">,</span> 411 405 <span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_FORTRAN_SRC</span><span class="p">))</span> 412 406 … … 448 442 <span class="nb">print</span><span class="p">(</span><span class="s1">'target: '</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="p">)</span> 449 443 <span class="nb">print</span><span class="p">(</span><span class="s1">'please specify correct installation target '</span> <span class="o">+</span> 450 <span class="nb">str</span><span class="p">(</span><span class="n"> INSTALL_TARGETS</span><span class="p">))</span>444 <span class="nb">str</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">INSTALL_TARGETS</span><span class="p">))</span> 451 445 <span class="nb">print</span><span class="p">(</span><span class="s1">'use -h or --help for help'</span><span class="p">)</span> 452 446 <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> … … 496 490 497 491 <span class="sd"> '''</span> 498 <span class="kn">from</span> <span class="nn">glob</span> <span class="k">import</span> <span class="n">glob</span>499 492 500 493 <span class="nb">print</span><span class="p">(</span><span class="s1">'Create tarball ...'</span><span class="p">)</span> … … 507 500 <span class="c1"># get lists of the files to be added to the tar file</span> 508 501 <span class="k">if</span> <span class="n">target</span> <span class="o">==</span> <span class="s1">'local'</span><span class="p">:</span> 509 <span class="n"> ECMWF_ENV_FILE</span> <span class="o">=</span> <span class="p">[]</span>502 <span class="n">ecmwf_env_file</span> <span class="o">=</span> <span class="p">[]</span> 510 503 <span class="n">runfile</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 511 504 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_RUN_DIR</span><span class="p">,</span> 512 505 <span class="s1">'run_local.sh'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 513 506 <span class="k">else</span><span class="p">:</span> 514 <span class="n"> ECMWF_ENV_FILE</span> <span class="o">=</span> <span class="p">[</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_ECMWF_ENV</span><span class="p">]</span>507 <span class="n">ecmwf_env_file</span> <span class="o">=</span> <span class="p">[</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_ECMWF_ENV</span><span class="p">]</span> 515 508 <span class="n">runfile</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 516 517 509 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_RUN_DIR</span><span class="p">,</span> 510 <span class="s1">'run.sh'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 518 511 519 512 <span class="n">pyfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 520 513 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_PYTHON_SRC</span><span class="p">,</span> <span class="s1">'*py'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 521 514 <span class="n">pytestfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 522 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_PYTHONTEST_SRC</span><span class="p">,</span> <span class="s1">'*py'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span>515 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_PYTHONTEST_SRC</span><span class="p">,</span> <span class="s1">'*py'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 523 516 <span class="n">controlfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 524 517 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_CONTROLFILES</span><span class="p">,</span> 525 518 <span class="s1">'CONTROL*'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 526 519 <span class="n">testfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 527 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_TEST</span> 520 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_TEST</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 528 521 <span class="n">tempfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 529 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_TEMPLATES</span> 522 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_TEMPLATES</span><span class="p">,</span> <span class="s1">'*.temp'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 530 523 <span class="n">nlfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 531 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_TEMPLATES</span><span class="p">,</span> <span class="s1">'*.nl'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span>524 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_TEMPLATES</span><span class="p">,</span> <span class="s1">'*.nl'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 532 525 <span class="n">gribtable</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 533 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_TEMPLATES</span> 526 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_TEMPLATES</span><span class="p">,</span> <span class="s1">'*grib*'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 534 527 <span class="n">ffiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 535 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_FORTRAN_SRC</span><span class="p">,</span> <span class="s1">'*.f *'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span>528 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_FORTRAN_SRC</span><span class="p">,</span> <span class="s1">'*.f90'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> 536 529 <span class="n">hfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</span><span class="p">)</span> 537 530 <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_FORTRAN_SRC</span><span class="p">,</span> <span class="s1">'*.h'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> … … 542 535 <span class="c1"># concatenate single lists to one for a better looping</span> 543 536 <span class="n">filelist</span> <span class="o">=</span> <span class="n">pyfiles</span> <span class="o">+</span> <span class="n">pytestfiles</span> <span class="o">+</span> <span class="n">controlfiles</span> <span class="o">+</span> <span class="n">tempfiles</span> <span class="o">+</span> <span class="n">nlfiles</span> <span class="o">+</span> \ 544 <span class="n">ffiles</span> <span class="o">+</span> <span class="n">gribtable</span> <span class="o">+</span> <span class="n">hfiles</span> <span class="o">+</span> <span class="n">makefiles</span> <span class="o">+</span> <span class="n"> ECMWF_ENV_FILE</span> <span class="o">+</span> \537 <span class="n">ffiles</span> <span class="o">+</span> <span class="n">gribtable</span> <span class="o">+</span> <span class="n">hfiles</span> <span class="o">+</span> <span class="n">makefiles</span> <span class="o">+</span> <span class="n">ecmwf_env_file</span> <span class="o">+</span> \ 545 538 <span class="n">runfile</span> <span class="o">+</span> <span class="n">jobdir</span> <span class="o">+</span> <span class="n">testfiles</span> <span class="o">+</span>\ 546 539 <span class="p">[</span><span class="s1">'CODE_OF_CONDUCT.md'</span><span class="p">,</span> <span class="s1">'LICENSE.md'</span><span class="p">,</span> <span class="s1">'README.md'</span><span class="p">]</span> 547 540 548 541 <span class="c1"># create installation tar-file</span> 549 <span class="n">exclude_files</span> <span class="o">=</span> <span class="p">[</span><span class="s2">".ksh"</span><span class="p"> ]</span>542 <span class="n">exclude_files</span> <span class="o">=</span> <span class="p">[</span><span class="s2">".ksh"</span><span class="p">,</span> <span class="s2">".tar"</span><span class="p">]</span> 550 543 <span class="k">try</span><span class="p">:</span> 551 544 <span class="k">with</span> <span class="n">tarfile</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">tarball_path</span><span class="p">,</span> <span class="s2">"w:gz"</span><span class="p">)</span> <span class="k">as</span> <span class="n">tar_handle</span><span class="p">:</span> 552 <span class="k">for</span> <span class="n">file </span> <span class="ow">in</span> <span class="n">filelist</span><span class="p">:</span>553 <span class="n">tar_handle</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">file </span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>545 <span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> <span class="n">filelist</span><span class="p">:</span> 546 <span class="n">tar_handle</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> 554 547 <span class="nb">filter</span><span class="o">=</span><span class="k">lambda</span> <span class="n">tarinfo</span><span class="p">:</span> <span class="kc">None</span> 555 556 557 548 <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">splitext</span><span class="p">(</span><span class="n">tarinfo</span><span class="o">.</span><span class="n">name</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> 549 <span class="ow">in</span> <span class="n">exclude_files</span> 550 <span class="k">else</span> <span class="n">tarinfo</span><span class="p">)</span> 558 551 <span class="k">except</span> <span class="n">tarfile</span><span class="o">.</span><span class="n">TarError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 552 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> 553 559 554 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">... error occured while trying to create the tar-file '</span> <span class="o">+</span> 560 555 <span class="nb">str</span><span class="p">(</span><span class="n">tarball_path</span><span class="p">))</span> 561 556 562 557 <span class="k">return</span></div> … … 584 579 <span class="k">except</span> <span class="n">tarfile</span><span class="o">.</span><span class="n">TarError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 585 580 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">... error occured while trying to read tar-file '</span> <span class="o">+</span> 586 581 <span class="nb">str</span><span class="p">(</span><span class="n">tarball_path</span><span class="p">))</span> 587 582 <span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 588 583 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR CODE: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">errno</span><span class="p">))</span> … … 627 622 <span class="bp">cls</span><span class="o">=</span><span class="n">NewTextTemplate</span><span class="p">)</span> 628 623 629 <span class="n">stream</span> <span class="o">=</span> <span class="n">ecmwfvars_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">user_name</span> <span class="o">=</span><span class="n">ecuid</span><span class="p">,</span>630 <span class="n">user_group</span> <span class="o">=</span><span class="n">ecgid</span><span class="p">,</span>631 <span class="n">gateway_name</span> <span class="o">=</span><span class="n">gateway</span><span class="p">,</span>632 <span class="n">destination_name</span> <span class="o">=</span><span class="n">destination</span>633 624 <span class="n">stream</span> <span class="o">=</span> <span class="n">ecmwfvars_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">user_name</span><span class="o">=</span><span class="n">ecuid</span><span class="p">,</span> 625 <span class="n">user_group</span><span class="o">=</span><span class="n">ecgid</span><span class="p">,</span> 626 <span class="n">gateway_name</span><span class="o">=</span><span class="n">gateway</span><span class="p">,</span> 627 <span class="n">destination_name</span><span class="o">=</span><span class="n">destination</span> 628 <span class="p">)</span> 634 629 <span class="k">except</span> <span class="n">UndefinedError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 635 630 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> … … 656 651 <span class="k">return</span></div> 657 652 658 <div class="viewcode-block" id="mk_compilejob"><a class="viewcode-back" href="../Documentation/Api/api_python.html#install.mk_compilejob">[docs]</a><span class="k">def</span> <span class="nf">mk_compilejob</span><span class="p">(</span><span class="n">makefile</span><span class="p">,</span> <span class="n"> target</span><span class="p">,</span> <span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">,</span> <span class="n">fp_root</span><span class="p">):</span>653 <div class="viewcode-block" id="mk_compilejob"><a class="viewcode-back" href="../Documentation/Api/api_python.html#install.mk_compilejob">[docs]</a><span class="k">def</span> <span class="nf">mk_compilejob</span><span class="p">(</span><span class="n">makefile</span><span class="p">,</span> <span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">,</span> <span class="n">fp_root</span><span class="p">):</span> 659 654 <span class="sd">'''Modifies the original job template file so that it is specified</span> 660 655 <span class="sd"> for the user and the environment were it will be applied. Result</span> … … 666 661 <span class="sd"> Name of the makefile which should be used to compile FORTRAN</span> 667 662 <span class="sd"> CONVERT2 program.</span> 668 669 <span class="sd"> target : str</span>670 <span class="sd"> The target where the installation should be done, e.g. the queue.</span>671 663 672 664 <span class="sd"> ecuid : str</span> … … 697 689 698 690 <span class="n">stream</span> <span class="o">=</span> <span class="n">compile_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> 699 <span class="n">usergroup</span> <span class="o">=</span><span class="n">ecgid</span><span class="p">,</span>700 <span class="n">username</span> <span class="o">=</span><span class="n">ecuid</span><span class="p">,</span>701 <span class="n">version_number</span> <span class="o">=</span><span class="n">_config</span><span class="o">.</span><span class="n">_VERSION_STR</span><span class="p">,</span>702 <span class="n">fp_root_scripts</span> <span class="o">=</span><span class="n">fp_root</span><span class="p">,</span>703 <span class="n">makefile</span> <span class="o">=</span><span class="n">makefile</span><span class="p">,</span>704 <span class="n">fortran_program</span> <span class="o">=</span><span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span>691 <span class="n">usergroup</span><span class="o">=</span><span class="n">ecgid</span><span class="p">,</span> 692 <span class="n">username</span><span class="o">=</span><span class="n">ecuid</span><span class="p">,</span> 693 <span class="n">version_number</span><span class="o">=</span><span class="n">_config</span><span class="o">.</span><span class="n">_VERSION_STR</span><span class="p">,</span> 694 <span class="n">fp_root_scripts</span><span class="o">=</span><span class="n">fp_root</span><span class="p">,</span> 695 <span class="n">makefile</span><span class="o">=</span><span class="n">makefile</span><span class="p">,</span> 696 <span class="n">fortran_program</span><span class="o">=</span><span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span> 705 697 <span class="p">)</span> 706 698 <span class="k">except</span> <span class="n">UndefinedError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> … … 731 723 <span class="k">return</span></div> 732 724 733 <div class="viewcode-block" id="mk_job_template"><a class="viewcode-back" href="../Documentation/Api/api_python.html#install.mk_job_template">[docs]</a><span class="k">def</span> <span class="nf">mk_job_template</span><span class="p">(</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">,</span> <span class="n"> gateway</span><span class="p">,</span> <span class="n">destination</span><span class="p">,</span> <span class="n">fp_root</span><span class="p">):</span>725 <div class="viewcode-block" id="mk_job_template"><a class="viewcode-back" href="../Documentation/Api/api_python.html#install.mk_job_template">[docs]</a><span class="k">def</span> <span class="nf">mk_job_template</span><span class="p">(</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">,</span> <span class="n">fp_root</span><span class="p">):</span> 734 726 <span class="sd">'''Modifies the original job template file so that it is specified</span> 735 727 <span class="sd"> for the user and the environment were it will be applied. Result</span> … … 743 735 <span class="sd"> ecgid : str</span> 744 736 <span class="sd"> The group id on ECMWF server.</span> 745 746 <span class="sd"> gateway : str</span>747 <span class="sd"> The gateway server the user is using.</span>748 749 <span class="sd"> destination : str</span>750 <span class="sd"> The remote destination which is used to transfer files</span>751 <span class="sd"> from ECMWF server to local gateway server.</span>752 737 753 738 <span class="sd"> fp_root : str</span> … … 777 762 778 763 <span class="n">stream</span> <span class="o">=</span> <span class="n">compile_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> 779 <span class="n">usergroup</span> <span class="o">=</span><span class="n">ecgid</span><span class="p">,</span>780 <span class="n">username</span> <span class="o">=</span><span class="n">ecuid</span><span class="p">,</span>781 <span class="n">version_number</span> <span class="o">=</span><span class="n">_config</span><span class="o">.</span><span class="n">_VERSION_STR</span><span class="p">,</span>782 <span class="n">fp_root_path</span> <span class="o">=</span><span class="n">fp_root_path_to_python</span><span class="p">,</span>764 <span class="n">usergroup</span><span class="o">=</span><span class="n">ecgid</span><span class="p">,</span> 765 <span class="n">username</span><span class="o">=</span><span class="n">ecuid</span><span class="p">,</span> 766 <span class="n">version_number</span><span class="o">=</span><span class="n">_config</span><span class="o">.</span><span class="n">_VERSION_STR</span><span class="p">,</span> 767 <span class="n">fp_root_path</span><span class="o">=</span><span class="n">fp_root_path_to_python</span><span class="p">,</span> 783 768 <span class="p">)</span> 784 769 <span class="k">except</span> <span class="n">UndefinedError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> … … 873 858 <span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> 874 859 <span class="k">else</span><span class="p">:</span> 875 <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">'ls'</span><span class="p">,</span> <span class="s1">'-l'</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">src_path</span><span class="p">,</span>876 <span class="n"> _config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span><span class="p">)],</span> <span class="n">error_msg</span><span class="o">=</span>877 <span class=" s1">'FORTRAN EXECUTABLE COULD NOT BE FOUND!'</span><span class="p">)</span>860 <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">'ls'</span><span class="p">,</span> <span class="s1">'-l'</span><span class="p">,</span> 861 <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">src_path</span><span class="p">,</span> <span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span><span class="p">)],</span> 862 <span class="n">error_msg</span><span class="o">=</span><span class="s1">'FORTRAN EXECUTABLE COULD NOT BE FOUND!'</span><span class="p">)</span> 878 863 879 864 <span class="k">return</span></div> -
Documentation/html/_modules/prepare_flexpart.html
r30f7911 reca358d 200 200 <span class="c1"># http://creativecommons.org/licenses/by/4.0/ or send a letter to</span> 201 201 <span class="c1"># Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.</span> 202 <span class="c1">#*******************************************************************************</span> 202 <span class="c1"># *******************************************************************************</span> 203 <span class="c1"># pylint: disable=ungrouped-imports</span> 204 <span class="c1"># not necessary that we group the imports</span> 203 205 <span class="sd">'''This script prepares the final version of the grib files which are</span> 204 206 <span class="sd">then used by FLEXPART.</span> … … 230 232 <span class="kn">import</span> <span class="nn">inspect</span> 231 233 <span class="kn">import</span> <span class="nn">sys</span> 232 <span class="kn">import</span> <span class="nn">socket</span>233 234 234 235 <span class="c1"># software specific classes and modules from flex_extract</span> … … 236 237 <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="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</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">abspath</span><span class="p">(</span> 237 238 <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> 238 <span class="kn">import</span> <span class="nn">_config</span> 239 <span class="c1"># pylint: disable=wrong-import-position</span> 240 <span class="c1">#import _config</span> 239 241 <span class="kn">from</span> <span class="nn">Mods.checks</span> <span class="k">import</span> <span class="n">check_ppid</span> 240 242 <span class="kn">from</span> <span class="nn">Classes.UioFiles</span> <span class="k">import</span> <span class="n">UioFiles</span> 241 <span class="kn">from</span> <span class="nn">Classes.ControlFile</span> <span class="k">import</span> <span class="n">ControlFile</span> 242 <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">clean_up</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span> 243 <span class="n">read_ecenv</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">)</span> 243 <span class="c1">#from Classes.ControlFile import ControlFile</span> 244 <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">clean_up</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">)</span> 244 245 <span class="kn">from</span> <span class="nn">Classes.EcFlexpart</span> <span class="k">import</span> <span class="n">EcFlexpart</span> 246 <span class="c1"># pylint: enable=wrong-import-position</span> 245 247 246 248 <span class="c1"># ------------------------------------------------------------------------------</span> … … 308 310 309 311 <span class="nb">print</span><span class="p">(</span><span class="s1">'Prepare '</span> <span class="o">+</span> <span class="n">start</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> 310 <span class="s2">"/to/"</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>312 <span class="s1">'/to/'</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> 311 313 312 314 <span class="c1"># create output dir if necessary</span> … … 333 335 <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> 334 336 335 <span class="c1"># make use of a possible conversion to a</span>336 <span class="c1"># specific flexpart binary format</span>337 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">grib2flexpart</span><span class="p">:</span>338 <span class="n">flexpart</span><span class="o">.</span><span class="n">prepare_fp_files</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>339 340 337 <span class="c1"># check if in debugging mode, then store all files</span> 341 338 <span class="c1"># otherwise delete temporary files</span> -
Documentation/html/_modules/submit.html
r30f7911 reca358d 226 226 <span class="kn">import</span> <span class="nn">os</span> 227 227 <span class="kn">import</span> <span class="nn">sys</span> 228 <span class="kn">import</span> <span class="nn">subprocess</span>229 <span class="kn">import</span> <span class="nn">inspect</span>230 <span class="kn">import</span> <span class="nn">collections</span>231 228 <span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span> 232 229 233 230 <span class="c1"># software specific classes and modules from flex_extract</span> 234 231 <span class="kn">import</span> <span class="nn">_config</span> 235 <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>236 <span class="n">submit_job_to_ecserver</span><span class="p">,</span> <span class="n">read_ecenv</span><span class="p">)</span>232 <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> 233 <span class="n">submit_job_to_ecserver</span><span class="p">)</span> 237 234 <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> 238 235 <span class="kn">from</span> <span class="nn">Mods.prepare_flexpart</span> <span class="k">import</span> <span class="n">prepare_flexpart</span> 239 <span class=" kn">from</span> <span class="nn">Classes.ControlFile</span> <span class="k">import</span> <span class="n">ControlFile</span>236 <span class="c1">#from Classes.ControlFile import ControlFile</span> 240 237 241 238 -
Documentation/html/_modules/tools.html
r30f7911 reca358d 231 231 <span class="kn">import</span> <span class="nn">subprocess</span> 232 232 <span class="kn">import</span> <span class="nn">traceback</span> 233 <span class="c1"># pylint: disable=unused-import</span> 233 234 <span class="k">try</span><span class="p">:</span> 234 235 <span class="kn">import</span> <span class="nn">exceptions</span> 235 236 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 236 237 <span class="kn">import</span> <span class="nn">builtins</span> <span class="k">as</span> <span class="nn">exceptions</span> 238 <span class="c1"># pylint: enable=unused-import</span> 237 239 <span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span> 238 240 <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> … … 430 432 <span class="sd"> and destination for ECMWF server environments.</span> 431 433 <span class="sd"> '''</span> 432 <span class="n">envs</span> <span class="o">=</span> <span class="p">{}</span>434 <span class="n">envs</span> <span class="o">=</span> <span class="p">{}</span> 433 435 <span class="k">try</span><span class="p">:</span> 434 436 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> … … 441 443 442 444 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">... Error occured while trying to read ECMWF_ENV '</span> 443 445 <span class="s1">'file: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">filepath</span><span class="p">))</span> 444 446 445 447 <span class="k">return</span> <span class="n">envs</span></div> … … 464 466 <span class="nb">print</span><span class="p">(</span><span class="s2">"... clean inputdir!"</span><span class="p">)</span> 465 467 466 <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> 467 <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> 468 <span class="n">cleanlist</span> <span class="o">=</span> <span class="p">[</span><span class="n">filename</span> <span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> 469 <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> 470 <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">filename</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> 468 471 469 472 <span class="k">if</span> <span class="n">cleanlist</span><span class="p">:</span> … … 533 536 <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> 534 537 <span class="n">bufsize</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 535 <span class="n">pout</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">communicate</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">message</span> <span class="o">.</span><span class="n">encode</span><span class="p">()</span><span class="o">+</span> <span class="s1">'</span><span class="se">\n\n</span><span class="s1">'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>538 <span class="n">pout</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">communicate</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">message</span> <span class="o">+</span> <span class="s1">'</span><span class="se">\n\n</span><span class="s1">'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> 536 539 <span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 537 540 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> … … 693 696 <span class="k">return</span> <span class="p">[]</span> 694 697 <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> 695 <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>698 <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> 696 699 697 700 <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> … … 737 740 <span class="k">return</span> <span class="p">[]</span> 738 741 <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> 739 <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>742 <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> 740 743 741 744 <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> … … 930 933 931 934 <span class="c1"># information needed from grib message</span> 932 <span class="n">keys</span> <span class="o">=</span> <span class="p">[</span> 933 <span class="s1">'Ni'</span><span class="p">,</span> 935 <span class="n">keys</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Ni'</span><span class="p">,</span> 934 936 <span class="s1">'Nj'</span><span class="p">,</span> 935 937 <span class="s1">'latitudeOfFirstGridPointInDegrees'</span><span class="p">,</span> … … 945 947 <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">:</span> 946 948 <span class="c1"># Get the value of the key in a grib message.</span> 947 <span class="n">data</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">codes_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>948 <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> = </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span>949 <span class="n">data</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">codes_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> 950 <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> = </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> 949 951 950 952 <span class="c1"># Free the memory for the message referred as gribid.</span>
Note: See TracChangeset
for help on using the changeset viewer.