Changeset 30f7911 in flex_extract.git for Documentation/html/_modules/EcFlexpart.html
- Timestamp:
- Aug 20, 2019, 12:49:39 PM (5 years ago)
- Branches:
- master, ctbto, dev
- Children:
- 2255082
- Parents:
- 0690a6c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Documentation/html/_modules/EcFlexpart.html
rba99230 r30f7911 161 161 162 162 <h1>Source code for EcFlexpart</h1><div class="highlight"><pre> 163 <span></span><span class="ch">#!/usr/bin/env python </span>163 <span></span><span class="ch">#!/usr/bin/env python3</span> 164 164 <span class="c1"># -*- coding: utf-8 -*-</span> 165 165 <span class="c1">#*******************************************************************************</span> … … 204 204 <span class="c1"># Anne Philipp, Leopold Haimberger</span> 205 205 <span class="c1">#</span> 206 <span class="c1"># SPDX-License-Identifier: CC-BY-4.0</span> 207 <span class="c1">#</span> 206 208 <span class="c1"># This work is licensed under the Creative Commons Attribution 4.0</span> 207 209 <span class="c1"># International License. To view a copy of this license, visit</span> … … 577 579 <span class="c1"># -----------------------------------------------------------------------</span> 578 580 <span class="k">if</span> <span class="n">wrf</span><span class="p">:</span> 579 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/Z/VO'</span> 580 <span class="k">if</span> <span class="s1">'/D'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span> 581 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/D'</span> 582 583 <span class="n">wrf_sfc</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'SP'</span><span class="p">,</span><span class="s1">'SKT'</span><span class="p">,</span><span class="s1">'SST'</span><span class="p">,</span><span class="s1">'CI'</span><span class="p">,</span><span class="s1">'STL1'</span><span class="p">,</span><span class="s1">'STL2'</span><span class="p">,</span> <span class="s1">'STL3'</span><span class="p">,</span><span class="s1">'STL4'</span><span class="p">,</span> 584 <span class="s1">'SWVL1'</span><span class="p">,</span><span class="s1">'SWVL2'</span><span class="p">,</span><span class="s1">'SWVL3'</span><span class="p">,</span><span class="s1">'SWVL4'</span><span class="p">]</span> 585 <span class="k">for</span> <span class="n">par</span> <span class="ow">in</span> <span class="n">wrf_sfc</span><span class="p">:</span> 586 <span class="k">if</span> <span class="n">par</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__SL'</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span> 587 <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__SL'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/'</span> <span class="o">+</span> <span class="n">par</span> 581 <span class="c1"># @WRF</span> 582 <span class="c1"># THIS IS NOT YET CORRECTLY IMPLEMENTED !!!</span> 583 <span class="c1">#</span> 584 <span class="c1"># UNDER CONSTRUCTION !!!</span> 585 <span class="c1">#</span> 586 587 <span class="nb">print</span><span class="p">(</span><span class="s1">'WRF VERSION IS UNDER CONSTRUCTION!'</span><span class="p">)</span> <span class="c1"># dummy argument</span> 588 589 <span class="c1">#self.params['OG__ML'][0] += '/Z/VO'</span> 590 <span class="c1">#if '/D' not in self.params['OG__ML'][0]:</span> 591 <span class="c1"># self.params['OG__ML'][0] += '/D'</span> 592 593 <span class="c1">#wrf_sfc = ['SP','SKT','SST','CI','STL1','STL2', 'STL3','STL4',</span> 594 <span class="c1"># 'SWVL1','SWVL2','SWVL3','SWVL4']</span> 595 <span class="c1">#for par in wrf_sfc:</span> 596 <span class="c1"># if par not in self.params['OG__SL'][0]:</span> 597 <span class="c1"># self.params['OG__SL'][0] += '/' + par</span> 588 598 589 599 <span class="k">return</span> … … 1008 1018 <span class="k">if</span> <span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">></span> <span class="n">area</span><span class="p">[</span><span class="mi">3</span><span class="p">]:</span> 1009 1019 <span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-=</span> <span class="mi">360</span> 1010 <span class="n">maxl</span> <span class="o">=</span> <span class="nb"> round</span><span class="p">((</span><span class="n">area</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">/</span> <span class="n">grid</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span>1011 <span class="n">maxb</span> <span class="o">=</span> <span class="nb"> round</span><span class="p">((</span><span class="n">area</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">area</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="o">/</span> <span class="n">grid</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span>1020 <span class="n">maxl</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">round</span><span class="p">((</span><span class="n">area</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">/</span> <span class="n">grid</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> <span class="o">+</span> <span class="mi">1</span> 1021 <span class="n">maxb</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">round</span><span class="p">((</span><span class="n">area</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">area</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="o">/</span> <span class="n">grid</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> <span class="o">+</span> <span class="mi">1</span> 1012 1022 1013 1023 <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> … … 1246 1256 1247 1257 <span class="nb">print</span><span class="p">(</span><span class="s2">"outputfile = "</span> <span class="o">+</span> <span class="n">fnout</span><span class="p">)</span> 1248 <span class="n">f_handle</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fnout</span><span class="p">,</span> <span class="s1">'w '</span><span class="p">)</span>1249 <span class="n">h_handle</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">hnout</span><span class="p">,</span> <span class="s1">'w '</span><span class="p">)</span>1250 <span class="n">g_handle</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">gnout</span><span class="p">,</span> <span class="s1">'w '</span><span class="p">)</span>1258 <span class="n">f_handle</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fnout</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> 1259 <span class="n">h_handle</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">hnout</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> 1260 <span class="n">g_handle</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">gnout</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> 1251 1261 1252 1262 <span class="c1"># read message for message and store relevant data fields, where</span> … … 1554 1564 <span class="c1"># write original time step to flux file as usual</span> 1555 1565 <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> 1556 <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">'a '</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</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> 1557 1567 <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> 1558 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> … … 1560 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> 1561 1571 <span class="p">)</span> 1562 <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">'a '</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><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> 1563 1573 <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> 1564 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> … … 1568 1578 1569 1579 <span class="c1"># rr for first subgrid point is identified by step = 1</span> 1570 <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">'a '</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</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> 1571 1581 <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> 1572 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> … … 1574 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> 1575 1585 <span class="p">)</span> 1576 <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">'a '</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><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> 1577 1587 <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> 1578 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> … … 1582 1592 1583 1593 <span class="c1"># rr for second subgrid point is identified by step = 2</span> 1584 <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">'a '</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</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> 1585 1595 <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> 1586 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> … … 1588 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> 1589 1599 <span class="p">)</span> 1590 <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">'a '</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><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> 1591 1601 <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> 1592 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> … … 1618 1628 1619 1629 <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> 1620 <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">'w '</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> 1621 1631 1622 1632 <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> 1623 <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">'a '</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> 1624 1634 1625 1635 <span class="k">return</span> … … 1664 1674 <span class="n">end_period</span> <span class="o">=</span> <span class="n">end_period</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">step</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span> 1665 1675 1666 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> 1667 <span class="n">table128</span> <span class="o">=</span> <span class="n">init128</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_GRIBTABLE</span><span class="p">)</span> 1668 <span class="n">wrfpars</span> <span class="o">=</span> <span class="n">to_param_id</span><span class="p">(</span><span class="s1">'sp/mslp/skt/2t/10u/10v/2d/z/lsm/sst/ci/sd/</span><span class="se">\</span> 1669 <span class="s1"> stl1/stl2/stl3/stl4/swvl1/swvl2/swvl3/swvl4'</span><span class="p">,</span> 1670 <span class="n">table128</span><span class="p">)</span> 1676 <span class="c1"># @WRF</span> 1677 <span class="c1"># THIS IS NOT YET CORRECTLY IMPLEMENTED !!!</span> 1678 <span class="c1">#</span> 1679 <span class="c1"># UNDER CONSTRUCTION !!!</span> 1680 <span class="c1">#</span> 1681 <span class="c1">#if c.wrf:</span> 1682 <span class="c1"># table128 = init128(_config.PATH_GRIBTABLE)</span> 1683 <span class="c1"># wrfpars = to_param_id('sp/mslp/skt/2t/10u/10v/2d/z/lsm/sst/ci/sd/\</span> 1684 <span class="c1"># stl1/stl2/stl3/stl4/swvl1/swvl2/swvl3/swvl4',</span> 1685 <span class="c1"># table128)</span> 1671 1686 1672 1687 <span class="c1"># these numbers are indices for the temporary files "fort.xx"</span> … … 1720 1735 <span class="n">fortfile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'fort.'</span> <span class="o">+</span> <span class="n">k</span><span class="p">)</span> 1721 1736 <span class="n">silent_remove</span><span class="p">(</span><span class="n">fortfile</span><span class="p">)</span> 1722 <span class="n">fdict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fortfile</span><span class="p">,</span> <span class="s1">'w '</span><span class="p">)</span>1737 <span class="n">fdict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fortfile</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> 1723 1738 <span class="c1">#============================================================================================</span> 1724 1739 <span class="c1"># create correct timestamp from the three time informations</span> … … 1747 1762 <span class="k">continue</span> 1748 1763 1749 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> 1750 <span class="k">if</span> <span class="s1">'olddate'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">locals</span><span class="p">()</span> <span class="ow">or</span> <span class="n">cdate</span> <span class="o">!=</span> <span class="n">olddate</span><span class="p">:</span> 1751 <span class="n">fwrf</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">,</span> 1752 <span class="s1">'WRF'</span> <span class="o">+</span> <span class="n">cdate</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="n">ctime</span> <span class="o">+</span> <span class="s1">'.000.grb2'</span><span class="p">),</span> <span class="s1">'w'</span><span class="p">)</span> 1753 <span class="n">olddate</span> <span class="o">=</span> <span class="n">cdate</span><span class="p">[:]</span> 1764 <span class="c1"># @WRF</span> 1765 <span class="c1"># THIS IS NOT YET CORRECTLY IMPLEMENTED !!!</span> 1766 <span class="c1">#</span> 1767 <span class="c1"># UNDER CONSTRUCTION !!!</span> 1768 <span class="c1">#</span> 1769 <span class="c1">#if c.wrf:</span> 1770 <span class="c1"># if 'olddate' not in locals() or cdate != olddate:</span> 1771 <span class="c1"># fwrf = open(os.path.join(c.outputdir,</span> 1772 <span class="c1"># 'WRF' + cdate + '.' + ctime + '.000.grb2'), 'wb')</span> 1773 <span class="c1"># olddate = cdate[:]</span> 1754 1774 <span class="c1">#============================================================================================</span> 1755 1775 <span class="c1"># savedfields remembers which fields were already used.</span> … … 1789 1809 <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">'22'</span><span class="p">])</span> 1790 1810 <span class="n">scwc</span> <span class="o">=</span> <span class="kc">None</span> 1791 <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span> <span class="ow">and</span> <span class="n">paramId</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">129</span><span class="p">,</span> <span class="mi">138</span><span class="p">,</span> <span class="mi">155</span><span class="p">]</span> <span class="ow">and</span> \ 1792 <span class="n">levtype</span> <span class="o">==</span> <span class="s1">'hybrid'</span><span class="p">:</span> <span class="c1"># Z, VO, D</span> 1793 <span class="c1"># do not do anything right now</span> 1794 <span class="c1"># these are specific parameter for WRF</span> 1795 <span class="k">pass</span> 1811 <span class="c1"># @WRF</span> 1812 <span class="c1"># THIS IS NOT YET CORRECTLY IMPLEMENTED !!!</span> 1813 <span class="c1">#</span> 1814 <span class="c1"># UNDER CONSTRUCTION !!!</span> 1815 <span class="c1">#</span> 1816 <span class="c1">#elif c.wrf and paramId in [129, 138, 155] and \</span> 1817 <span class="c1"># levtype == 'hybrid': # Z, VO, D</span> 1818 <span class="c1"># # do not do anything right now</span> 1819 <span class="c1"># # these are specific parameter for WRF</span> 1820 <span class="c1"># pass</span> 1796 1821 <span class="k">else</span><span class="p">:</span> 1797 1822 <span class="k">if</span> <span class="n">paramId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">savedfields</span><span class="p">:</span> … … 1802 1827 <span class="k">else</span><span class="p">:</span> 1803 1828 <span class="nb">print</span><span class="p">(</span><span class="s1">'duplicate '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">paramId</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' not written'</span><span class="p">)</span> 1804 1805 <span class="k">try</span><span class="p">:</span> 1806 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> 1807 <span class="c1"># model layer</span> 1808 <span class="k">if</span> <span class="n">levtype</span> <span class="o">==</span> <span class="s1">'hybrid'</span> <span class="ow">and</span> \ 1809 <span class="n">paramId</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">129</span><span class="p">,</span> <span class="mi">130</span><span class="p">,</span> <span class="mi">131</span><span class="p">,</span> <span class="mi">132</span><span class="p">,</span> <span class="mi">133</span><span class="p">,</span> <span class="mi">138</span><span class="p">,</span> <span class="mi">155</span><span class="p">]:</span> 1810 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fwrf</span><span class="p">)</span> 1811 <span class="c1"># sfc layer</span> 1812 <span class="k">elif</span> <span class="n">paramId</span> <span class="ow">in</span> <span class="n">wrfpars</span><span class="p">:</span> 1813 <span class="n">codes_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fwrf</span><span class="p">)</span> 1814 <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span> 1815 <span class="k">pass</span> 1829 <span class="c1"># @WRF</span> 1830 <span class="c1"># THIS IS NOT YET CORRECTLY IMPLEMENTED !!!</span> 1831 <span class="c1">#</span> 1832 <span class="c1"># UNDER CONSTRUCTION !!!</span> 1833 <span class="c1">#</span> 1834 <span class="c1">#try:</span> 1835 <span class="c1"># if c.wrf:</span> 1836 <span class="c1"># # model layer</span> 1837 <span class="c1"># if levtype == 'hybrid' and \</span> 1838 <span class="c1"># paramId in [129, 130, 131, 132, 133, 138, 155]:</span> 1839 <span class="c1"># codes_write(gid, fwrf)</span> 1840 <span class="c1"># # sfc layer</span> 1841 <span class="c1"># elif paramId in wrfpars:</span> 1842 <span class="c1"># codes_write(gid, fwrf)</span> 1843 <span class="c1">#except AttributeError:</span> 1844 <span class="c1"># pass</span> 1816 1845 1817 1846 <span class="n">codes_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> … … 1883 1912 <span class="s1">'rb'</span><span class="p">),</span> <span class="n">fout</span><span class="p">)</span> 1884 1913 <span class="c1"># ============================================================================================</span> 1885 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> 1886 <span class="n">fwrf</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> 1914 1915 <span class="c1"># @WRF</span> 1916 <span class="c1"># THIS IS NOT YET CORRECTLY IMPLEMENTED !!!</span> 1917 <span class="c1">#</span> 1918 <span class="c1"># UNDER CONSTRUCTION !!!</span> 1919 <span class="c1">#</span> 1920 <span class="c1">#if c.wrf:</span> 1921 <span class="c1"># fwrf.close()</span> 1887 1922 1888 1923 <span class="n">codes_index_release</span><span class="p">(</span><span class="n">iid</span><span class="p">)</span> … … 1918 1953 <span class="c1"># get a list of all prepared output files with control forecast (CF)</span> 1919 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> 1920 1956 1921 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> … … 1931 1967 <span class="n">filename</span> <span class="o">=</span> <span class="n">cffile</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'N000'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> 1932 1968 <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">maxnum</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span> 1933 1934 1969 <span class="c1"># read an ensemble member</span> 1935 1970 <span class="n">g</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span> <span class="o">+</span> <span class="s1">'N</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="s1">'rb'</span><span class="p">)</span>
Note: See TracChangeset
for help on using the changeset viewer.