[274f9ef] | 1 | |
---|
| 2 | |
---|
| 3 | <!DOCTYPE html> |
---|
| 4 | <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> |
---|
| 5 | <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> |
---|
| 6 | <head> |
---|
| 7 | <meta charset="utf-8"> |
---|
| 8 | |
---|
| 9 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
---|
| 10 | |
---|
| 11 | <title>ControlFile — flex_extract 7.1 alpha documentation</title> |
---|
| 12 | |
---|
| 13 | |
---|
| 14 | |
---|
| 15 | |
---|
| 16 | |
---|
| 17 | |
---|
| 18 | |
---|
| 19 | |
---|
| 20 | |
---|
| 21 | |
---|
| 22 | |
---|
| 23 | |
---|
| 24 | |
---|
| 25 | |
---|
| 26 | |
---|
| 27 | <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> |
---|
| 28 | <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> |
---|
| 29 | <link rel="index" title="Index" href="../genindex.html" /> |
---|
| 30 | <link rel="search" title="Search" href="../search.html" /> |
---|
| 31 | |
---|
| 32 | |
---|
| 33 | <script src="../_static/js/modernizr.min.js"></script> |
---|
| 34 | |
---|
| 35 | </head> |
---|
| 36 | |
---|
| 37 | <body class="wy-body-for-nav"> |
---|
| 38 | |
---|
| 39 | |
---|
| 40 | <div class="wy-grid-for-nav"> |
---|
| 41 | |
---|
| 42 | |
---|
| 43 | <nav data-toggle="wy-nav-shift" class="wy-nav-side"> |
---|
| 44 | <div class="wy-side-scroll"> |
---|
| 45 | <div class="wy-side-nav-search"> |
---|
| 46 | |
---|
| 47 | |
---|
| 48 | |
---|
| 49 | <a href="../index.html" class="icon icon-home"> flex_extract |
---|
| 50 | |
---|
| 51 | |
---|
| 52 | |
---|
| 53 | </a> |
---|
| 54 | |
---|
| 55 | |
---|
| 56 | |
---|
| 57 | |
---|
| 58 | <div class="version"> |
---|
| 59 | 7.1 |
---|
| 60 | </div> |
---|
| 61 | |
---|
| 62 | |
---|
| 63 | |
---|
| 64 | |
---|
| 65 | <div role="search"> |
---|
| 66 | <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> |
---|
| 67 | <input type="text" name="q" placeholder="Search docs" /> |
---|
| 68 | <input type="hidden" name="check_keywords" value="yes" /> |
---|
| 69 | <input type="hidden" name="area" value="default" /> |
---|
| 70 | </form> |
---|
| 71 | </div> |
---|
| 72 | |
---|
| 73 | |
---|
| 74 | </div> |
---|
| 75 | |
---|
| 76 | <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> |
---|
| 77 | |
---|
| 78 | |
---|
| 79 | |
---|
| 80 | |
---|
| 81 | |
---|
| 82 | |
---|
| 83 | <p class="caption"><span class="caption-text">Table of Contents:</span></p> |
---|
| 84 | <ul> |
---|
| 85 | <li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> |
---|
| 86 | <li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> |
---|
| 87 | <li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> |
---|
| 88 | <li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> |
---|
| 89 | <li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> |
---|
| 90 | <li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> |
---|
| 91 | </ul> |
---|
| 92 | |
---|
| 93 | |
---|
| 94 | |
---|
| 95 | </div> |
---|
| 96 | </div> |
---|
| 97 | </nav> |
---|
| 98 | |
---|
| 99 | <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> |
---|
| 100 | |
---|
| 101 | |
---|
| 102 | <nav class="wy-nav-top" aria-label="top navigation"> |
---|
| 103 | |
---|
| 104 | <i data-toggle="wy-nav-top" class="fa fa-bars"></i> |
---|
| 105 | <a href="../index.html">flex_extract</a> |
---|
| 106 | |
---|
| 107 | </nav> |
---|
| 108 | |
---|
| 109 | |
---|
| 110 | <div class="wy-nav-content"> |
---|
| 111 | |
---|
| 112 | <div class="rst-content"> |
---|
| 113 | |
---|
| 114 | |
---|
| 115 | |
---|
| 116 | |
---|
| 117 | |
---|
| 118 | |
---|
| 119 | |
---|
| 120 | |
---|
| 121 | |
---|
| 122 | |
---|
| 123 | |
---|
| 124 | |
---|
| 125 | |
---|
| 126 | |
---|
| 127 | |
---|
| 128 | |
---|
| 129 | |
---|
| 130 | <div role="navigation" aria-label="breadcrumbs navigation"> |
---|
| 131 | |
---|
| 132 | <ul class="wy-breadcrumbs"> |
---|
| 133 | |
---|
| 134 | <li><a href="../index.html">Docs</a> »</li> |
---|
| 135 | |
---|
| 136 | <li><a href="index.html">Module code</a> »</li> |
---|
| 137 | |
---|
| 138 | <li>ControlFile</li> |
---|
| 139 | |
---|
| 140 | |
---|
| 141 | <li class="wy-breadcrumbs-aside"> |
---|
| 142 | |
---|
| 143 | </li> |
---|
| 144 | |
---|
| 145 | </ul> |
---|
| 146 | |
---|
| 147 | |
---|
| 148 | <hr/> |
---|
| 149 | </div> |
---|
| 150 | <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> |
---|
| 151 | <div itemprop="articleBody"> |
---|
| 152 | |
---|
| 153 | <h1>Source code for ControlFile</h1><div class="highlight"><pre> |
---|
| 154 | <span></span><span class="ch">#!/usr/bin/env python</span> |
---|
| 155 | <span class="c1"># -*- coding: utf-8 -*-</span> |
---|
| 156 | <span class="c1">#*******************************************************************************</span> |
---|
| 157 | <span class="c1"># @Author: Leopold Haimberger (University of Vienna)</span> |
---|
| 158 | <span class="c1">#</span> |
---|
| 159 | <span class="c1"># @Date: November 2015</span> |
---|
| 160 | <span class="c1">#</span> |
---|
| 161 | <span class="c1"># @Change History:</span> |
---|
| 162 | <span class="c1">#</span> |
---|
| 163 | <span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> |
---|
| 164 | <span class="c1"># - applied PEP8 style guide</span> |
---|
| 165 | <span class="c1"># - added documentation</span> |
---|
| 166 | <span class="c1"># - applied some minor modifications in programming style/structure</span> |
---|
| 167 | <span class="c1"># - changed name of class Control to ControlFile for more</span> |
---|
| 168 | <span class="c1"># self-explanation naming</span> |
---|
| 169 | <span class="c1"># - outsource of class ControlFile</span> |
---|
| 170 | <span class="c1"># - initialisation of class attributes ( to avoid high number of</span> |
---|
| 171 | <span class="c1"># conditional statements and set default values )</span> |
---|
| 172 | <span class="c1"># - divided assignment of attributes and the check of conditions</span> |
---|
| 173 | <span class="c1"># - outsourced the commandline argument assignments to control attributes</span> |
---|
| 174 | <span class="c1">#</span> |
---|
| 175 | <span class="c1"># @License:</span> |
---|
| 176 | <span class="c1"># (C) Copyright 2015-2018.</span> |
---|
| 177 | <span class="c1">#</span> |
---|
| 178 | <span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> |
---|
| 179 | <span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> |
---|
| 180 | <span class="c1">#</span> |
---|
| 181 | <span class="c1"># @Class Description:</span> |
---|
| 182 | <span class="c1"># The CONTROL file is the steering part of the FLEXPART extraction</span> |
---|
| 183 | <span class="c1"># software. All necessary parameters needed to retrieve the data fields</span> |
---|
| 184 | <span class="c1"># from the MARS archive for driving FLEXPART are set in a CONTROL file.</span> |
---|
| 185 | <span class="c1"># Some specific parameters like the start and end dates can be overwritten</span> |
---|
| 186 | <span class="c1"># by the command line parameters, but in generel all parameters needed</span> |
---|
| 187 | <span class="c1"># for a complete set of fields for FLEXPART can be set in the CONTROL file.</span> |
---|
| 188 | <span class="c1">#</span> |
---|
| 189 | <span class="c1"># @Class Content:</span> |
---|
| 190 | <span class="c1"># - __init__</span> |
---|
| 191 | <span class="c1"># - __read_controlfile__</span> |
---|
| 192 | <span class="c1"># - __str__</span> |
---|
| 193 | <span class="c1"># - assign_args_to_control</span> |
---|
| 194 | <span class="c1"># - assign_envs_to_control</span> |
---|
| 195 | <span class="c1"># - check_conditions</span> |
---|
| 196 | <span class="c1"># - check_install_conditions</span> |
---|
| 197 | <span class="c1"># - to_list</span> |
---|
| 198 | <span class="c1">#</span> |
---|
| 199 | <span class="c1"># @Class Attributes:</span> |
---|
| 200 | <span class="c1">#</span> |
---|
| 201 | <span class="c1">#</span> |
---|
| 202 | <span class="c1">#*******************************************************************************</span> |
---|
| 203 | |
---|
| 204 | <span class="c1"># ------------------------------------------------------------------------------</span> |
---|
| 205 | <span class="c1"># MODULES</span> |
---|
| 206 | <span class="c1"># ------------------------------------------------------------------------------</span> |
---|
| 207 | <span class="kn">import</span> <span class="nn">os</span> |
---|
| 208 | <span class="kn">import</span> <span class="nn">re</span> |
---|
| 209 | <span class="kn">import</span> <span class="nn">sys</span> |
---|
| 210 | <span class="kn">import</span> <span class="nn">inspect</span> |
---|
| 211 | |
---|
| 212 | <span class="c1"># software specific classes and modules from flex_extract</span> |
---|
| 213 | <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> |
---|
| 214 | <span class="kn">import</span> <span class="nn">_config</span> |
---|
| 215 | <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> |
---|
| 216 | |
---|
| 217 | <span class="c1"># ------------------------------------------------------------------------------</span> |
---|
| 218 | <span class="c1"># CLASS</span> |
---|
| 219 | <span class="c1"># ------------------------------------------------------------------------------</span> |
---|
| 220 | <div class="viewcode-block" id="ControlFile"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile">[docs]</a><span class="k">class</span> <span class="nc">ControlFile</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> |
---|
| 221 | <span class="sd">'''</span> |
---|
| 222 | <span class="sd"> Contains the information which are stored in the CONTROL files.</span> |
---|
| 223 | <span class="sd"> '''</span> |
---|
| 224 | |
---|
| 225 | <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">filename</span><span class="p">):</span> |
---|
| 226 | <span class="sd">'''Initialises the instance of ControlFile class and defines</span> |
---|
| 227 | <span class="sd"> all class attributes with default values. Afterwards calls</span> |
---|
| 228 | <span class="sd"> function __read_controlfile__ to read parameter from Control file.</span> |
---|
| 229 | |
---|
| 230 | <span class="sd"> Parameters</span> |
---|
| 231 | <span class="sd"> ----------</span> |
---|
| 232 | <span class="sd"> filename : :obj:`string`</span> |
---|
| 233 | <span class="sd"> Name of CONTROL file.</span> |
---|
| 234 | |
---|
| 235 | <span class="sd"> Return</span> |
---|
| 236 | <span class="sd"> ------</span> |
---|
| 237 | |
---|
| 238 | <span class="sd"> '''</span> |
---|
| 239 | |
---|
| 240 | <span class="c1"># list of all possible class attributes and their default values</span> |
---|
| 241 | <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span> <span class="o">=</span> <span class="n">filename</span> |
---|
| 242 | <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 243 | <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 244 | <span class="bp">self</span><span class="o">.</span><span class="n">date_chunk</span> <span class="o">=</span> <span class="mi">3</span> |
---|
| 245 | <span class="bp">self</span><span class="o">.</span><span class="n">dtime</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 246 | <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 247 | <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 248 | <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 249 | <span class="bp">self</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 250 | <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 251 | <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 252 | <span class="bp">self</span><span class="o">.</span><span class="n">acctime</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 253 | <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 254 | <span class="bp">self</span><span class="o">.</span><span class="n">marsclass</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 255 | <span class="bp">self</span><span class="o">.</span><span class="n">dataset</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 256 | <span class="bp">self</span><span class="o">.</span><span class="n">stream</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 257 | <span class="bp">self</span><span class="o">.</span><span class="n">number</span> <span class="o">=</span> <span class="s1">'OFF'</span> |
---|
| 258 | <span class="bp">self</span><span class="o">.</span><span class="n">expver</span> <span class="o">=</span> <span class="s1">'1'</span> |
---|
| 259 | <span class="bp">self</span><span class="o">.</span><span class="n">gaussian</span> <span class="o">=</span> <span class="s1">''</span> |
---|
| 260 | <span class="bp">self</span><span class="o">.</span><span class="n">grid</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 261 | <span class="bp">self</span><span class="o">.</span><span class="n">area</span> <span class="o">=</span> <span class="s1">''</span> |
---|
| 262 | <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 263 | <span class="bp">self</span><span class="o">.</span><span class="n">lower</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 264 | <span class="bp">self</span><span class="o">.</span><span class="n">upper</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 265 | <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 266 | <span class="bp">self</span><span class="o">.</span><span class="n">level</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 267 | <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 268 | <span class="bp">self</span><span class="o">.</span><span class="n">resol</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 269 | <span class="bp">self</span><span class="o">.</span><span class="n">gauss</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 270 | <span class="bp">self</span><span class="o">.</span><span class="n">accuracy</span> <span class="o">=</span> <span class="mi">24</span> |
---|
| 271 | <span class="bp">self</span><span class="o">.</span><span class="n">omega</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 272 | <span class="bp">self</span><span class="o">.</span><span class="n">omegadiff</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 273 | <span class="bp">self</span><span class="o">.</span><span class="n">eta</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 274 | <span class="bp">self</span><span class="o">.</span><span class="n">etadiff</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 275 | <span class="bp">self</span><span class="o">.</span><span class="n">etapar</span> <span class="o">=</span> <span class="mi">77</span> |
---|
| 276 | <span class="bp">self</span><span class="o">.</span><span class="n">dpdeta</span> <span class="o">=</span> <span class="mi">1</span> |
---|
| 277 | <span class="bp">self</span><span class="o">.</span><span class="n">smooth</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 278 | <span class="bp">self</span><span class="o">.</span><span class="n">format</span> <span class="o">=</span> <span class="s1">'GRIB1'</span> |
---|
| 279 | <span class="bp">self</span><span class="o">.</span><span class="n">addpar</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 280 | <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="s1">'EN'</span> |
---|
| 281 | <span class="bp">self</span><span class="o">.</span><span class="n">cwc</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 282 | <span class="bp">self</span><span class="o">.</span><span class="n">wrf</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 283 | <span class="bp">self</span><span class="o">.</span><span class="n">ecfsdir</span> <span class="o">=</span> <span class="s1">'ectmp:/$</span><span class="si">{USER}</span><span class="s1">/econdemand/'</span> |
---|
| 284 | <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> |
---|
| 285 | <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> |
---|
| 286 | <span class="bp">self</span><span class="o">.</span><span class="n">grib2flexpart</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 287 | <span class="bp">self</span><span class="o">.</span><span class="n">ecstorage</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 288 | <span class="bp">self</span><span class="o">.</span><span class="n">ectrans</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 289 | <span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_INPUT_DIR</span> |
---|
| 290 | <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 291 | <span class="bp">self</span><span class="o">.</span><span class="n">ecmwfdatadir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> |
---|
| 292 | <span class="bp">self</span><span class="o">.</span><span class="n">exedir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span> |
---|
| 293 | <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 294 | <span class="bp">self</span><span class="o">.</span><span class="n">makefile</span> <span class="o">=</span> <span class="s1">'Makefile.gfortran'</span> |
---|
| 295 | <span class="bp">self</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 296 | <span class="bp">self</span><span class="o">.</span><span class="n">gateway</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 297 | <span class="bp">self</span><span class="o">.</span><span class="n">ecuid</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 298 | <span class="bp">self</span><span class="o">.</span><span class="n">ecgid</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 299 | <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="o">=</span> <span class="kc">None</span> |
---|
| 300 | <span class="bp">self</span><span class="o">.</span><span class="n">debug</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 301 | <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 302 | <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 303 | |
---|
| 304 | <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> |
---|
| 305 | <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> |
---|
| 306 | <span class="s1">'ectrans'</span><span class="p">,</span> <span class="s1">'debug'</span><span class="p">,</span> <span class="s1">'request'</span><span class="p">,</span> <span class="s1">'public'</span><span class="p">]</span> |
---|
| 307 | |
---|
| 308 | <span class="bp">self</span><span class="o">.</span><span class="n">__read_controlfile__</span><span class="p">()</span> |
---|
| 309 | |
---|
| 310 | <span class="k">return</span> |
---|
| 311 | |
---|
| 312 | <span class="k">def</span> <span class="nf">__read_controlfile__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
---|
| 313 | <span class="sd">'''Read CONTROL file and assign all CONTROL file variables.</span> |
---|
| 314 | |
---|
| 315 | <span class="sd"> Parameters</span> |
---|
| 316 | <span class="sd"> ----------</span> |
---|
| 317 | |
---|
| 318 | <span class="sd"> Return</span> |
---|
| 319 | <span class="sd"> ------</span> |
---|
| 320 | |
---|
| 321 | <span class="sd"> '''</span> |
---|
| 322 | |
---|
| 323 | <span class="k">try</span><span class="p">:</span> |
---|
| 324 | <span class="n">cfile</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_CONTROLFILES</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> |
---|
| 325 | <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">cfile</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> |
---|
| 326 | <span class="n">fdata</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> |
---|
| 327 | <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> |
---|
| 328 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Could not read CONTROL file "'</span> <span class="o">+</span> <span class="n">cfile</span> <span class="o">+</span> <span class="s1">'"'</span><span class="p">)</span> |
---|
| 329 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Either it does not exist or its syntax is wrong.'</span><span class="p">)</span> |
---|
| 330 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Try "'</span> <span class="o">+</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="o">+</span> \ |
---|
| 331 | <span class="s1">' -h" to print usage information'</span><span class="p">)</span> |
---|
| 332 | <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> |
---|
| 333 | |
---|
| 334 | <span class="c1"># go through every line and store parameter</span> |
---|
| 335 | <span class="k">for</span> <span class="n">ldata</span> <span class="ow">in</span> <span class="n">fdata</span><span class="p">:</span> |
---|
| 336 | <span class="n">data</span> <span class="o">=</span> <span class="n">ldata</span><span class="o">.</span><span class="n">split</span><span class="p">()</span> |
---|
| 337 | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> |
---|
| 338 | <span class="k">if</span> <span class="s1">'m_'</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> |
---|
| 339 | <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">:]</span> |
---|
| 340 | <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'class'</span><span class="p">:</span> |
---|
| 341 | <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'marsclass'</span> |
---|
| 342 | <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'day1'</span><span class="p">:</span> |
---|
| 343 | <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'start_date'</span> |
---|
| 344 | <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'day2'</span><span class="p">:</span> |
---|
| 345 | <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'end_date'</span> |
---|
| 346 | <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'addpar'</span><span class="p">:</span> |
---|
| 347 | <span class="k">if</span> <span class="s1">'/'</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> |
---|
| 348 | <span class="c1"># remove leading '/' sign from addpar content</span> |
---|
| 349 | <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'/'</span><span class="p">:</span> |
---|
| 350 | <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> |
---|
| 351 | <span class="n">dd</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> |
---|
| 352 | <span class="n">data</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> |
---|
| 353 | <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">dd</span><span class="p">:</span> |
---|
| 354 | <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> |
---|
| 355 | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> |
---|
| 356 | <span class="k">if</span> <span class="s1">'$'</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> |
---|
| 357 | <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> |
---|
| 358 | <span class="k">while</span> <span class="s1">'$'</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> |
---|
| 359 | <span class="n">i</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">'$'</span><span class="p">)</span> |
---|
| 360 | <span class="n">j</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'{'</span><span class="p">)</span> |
---|
| 361 | <span class="n">k</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'}'</span><span class="p">)</span> |
---|
| 362 | <span class="n">var</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">])</span> |
---|
| 363 | <span class="k">if</span> <span class="n">var</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> |
---|
| 364 | <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][:</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">var</span> <span class="o">+</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span> |
---|
| 365 | <span class="k">else</span><span class="p">:</span> |
---|
| 366 | <span class="n">my_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> |
---|
| 367 | <span class="s1">'Could not find variable '</span> |
---|
| 368 | <span class="o">+</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' while reading '</span> <span class="o">+</span> |
---|
| 369 | <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> |
---|
| 370 | <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">+</span> <span class="s1">'_expanded'</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> |
---|
| 371 | <span class="k">else</span><span class="p">:</span> |
---|
| 372 | <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">'none'</span><span class="p">:</span> |
---|
| 373 | <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> |
---|
| 374 | <span class="k">else</span><span class="p">:</span> |
---|
| 375 | <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="kc">None</span><span class="p">)</span> |
---|
| 376 | <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">></span> <span class="mi">2</span><span class="p">:</span> |
---|
| 377 | <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">:]))</span> |
---|
| 378 | <span class="k">else</span><span class="p">:</span> |
---|
| 379 | <span class="k">pass</span> |
---|
| 380 | |
---|
| 381 | <span class="k">return</span> |
---|
| 382 | |
---|
| 383 | <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
---|
| 384 | <span class="sd">'''Prepares a string which have all the ControlFile class attributes</span> |
---|
| 385 | <span class="sd"> with its associated values. Each attribute is printed in one line and</span> |
---|
| 386 | <span class="sd"> in alphabetical order.</span> |
---|
| 387 | |
---|
| 388 | <span class="sd"> Example</span> |
---|
| 389 | <span class="sd"> -------</span> |
---|
| 390 | <span class="sd"> 'age': 10</span> |
---|
| 391 | <span class="sd"> 'color': 'Spotted'</span> |
---|
| 392 | <span class="sd"> 'kids': 0</span> |
---|
| 393 | <span class="sd"> 'legs': 2</span> |
---|
| 394 | <span class="sd"> 'name': 'Dog'</span> |
---|
| 395 | <span class="sd"> 'smell': 'Alot'</span> |
---|
| 396 | |
---|
| 397 | <span class="sd"> Parameters</span> |
---|
| 398 | <span class="sd"> ----------</span> |
---|
| 399 | |
---|
| 400 | <span class="sd"> Return</span> |
---|
| 401 | <span class="sd"> ------</span> |
---|
| 402 | <span class="sd"> string</span> |
---|
| 403 | <span class="sd"> Single string of concatenated ControlFile class attributes</span> |
---|
| 404 | <span class="sd"> with their values</span> |
---|
| 405 | <span class="sd"> '''</span> |
---|
| 406 | <span class="kn">import</span> <span class="nn">collections</span> |
---|
| 407 | |
---|
| 408 | <span class="n">attrs</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> |
---|
| 409 | <span class="n">attrs</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span> |
---|
| 410 | |
---|
| 411 | <span class="k">return</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</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="n">item</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> |
---|
| 412 | |
---|
| 413 | <div class="viewcode-block" id="ControlFile.assign_args_to_control"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.assign_args_to_control">[docs]</a> <span class="k">def</span> <span class="nf">assign_args_to_control</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> |
---|
| 414 | <span class="sd">'''Overwrites the existing ControlFile instance attributes with</span> |
---|
| 415 | <span class="sd"> the command line arguments.</span> |
---|
| 416 | |
---|
| 417 | <span class="sd"> Parameters</span> |
---|
| 418 | <span class="sd"> ----------</span> |
---|
| 419 | <span class="sd"> args : :obj:`Namespace`</span> |
---|
| 420 | <span class="sd"> Contains the commandline arguments from script/program call.</span> |
---|
| 421 | |
---|
| 422 | <span class="sd"> Return</span> |
---|
| 423 | <span class="sd"> ------</span> |
---|
| 424 | |
---|
| 425 | <span class="sd"> '''</span> |
---|
| 426 | |
---|
| 427 | <span class="c1"># get dictionary of command line parameters and eliminate all</span> |
---|
| 428 | <span class="c1"># parameters which are None (were not specified)</span> |
---|
| 429 | <span class="n">args_dict</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> |
---|
| 430 | <span class="n">arguments</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span> <span class="p">:</span> <span class="n">args_dict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">args_dict</span> |
---|
| 431 | <span class="k">if</span> <span class="n">args_dict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">}</span> |
---|
| 432 | |
---|
| 433 | <span class="c1"># assign all passed command line arguments to ControlFile instance</span> |
---|
| 434 | <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">arguments</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> |
---|
| 435 | <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">v</span><span class="p">)</span> |
---|
| 436 | |
---|
| 437 | <span class="k">return</span></div> |
---|
| 438 | |
---|
| 439 | <div class="viewcode-block" id="ControlFile.assign_envs_to_control"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.assign_envs_to_control">[docs]</a> <span class="k">def</span> <span class="nf">assign_envs_to_control</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">envs</span><span class="p">):</span> |
---|
| 440 | <span class="sd">'''Assigns the ECMWF environment parameter.</span> |
---|
| 441 | |
---|
| 442 | <span class="sd"> Parameters</span> |
---|
| 443 | <span class="sd"> ----------</span> |
---|
| 444 | <span class="sd"> envs : :obj:`dictionary` of :obj:`strings`</span> |
---|
| 445 | <span class="sd"> Contains the ECMWF environment parameternames "ECUID", "ECGID",</span> |
---|
| 446 | <span class="sd"> "DESTINATION" and "GATEWAY" with its corresponding values.</span> |
---|
| 447 | <span class="sd"> They were read from the file "ECMWF_ENV".</span> |
---|
| 448 | |
---|
| 449 | <span class="sd"> Return</span> |
---|
| 450 | <span class="sd"> ------</span> |
---|
| 451 | |
---|
| 452 | <span class="sd"> '''</span> |
---|
| 453 | |
---|
| 454 | <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">envs</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> |
---|
| 455 | <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">k</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> |
---|
| 456 | |
---|
| 457 | <span class="k">return</span></div> |
---|
| 458 | |
---|
| 459 | <div class="viewcode-block" id="ControlFile.check_conditions"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.check_conditions">[docs]</a> <span class="k">def</span> <span class="nf">check_conditions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">queue</span><span class="p">):</span> |
---|
| 460 | <span class="sd">'''Checks a couple of necessary attributes and conditions,</span> |
---|
| 461 | <span class="sd"> such as if they exist and contain values.</span> |
---|
| 462 | <span class="sd"> Otherwise set default values.</span> |
---|
| 463 | |
---|
| 464 | <span class="sd"> Parameters</span> |
---|
| 465 | <span class="sd"> ----------</span> |
---|
| 466 | <span class="sd"> queue : :obj:`string`</span> |
---|
| 467 | <span class="sd"> Name of the queue if submitted to the ECMWF servers.</span> |
---|
| 468 | <span class="sd"> Used to check if ecuid, ecgid, gateway and destination</span> |
---|
| 469 | <span class="sd"> are set correctly and are not empty.</span> |
---|
| 470 | |
---|
| 471 | <span class="sd"> Return</span> |
---|
| 472 | <span class="sd"> ------</span> |
---|
| 473 | |
---|
| 474 | <span class="sd"> '''</span> |
---|
| 475 | <span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="n">my_error</span> |
---|
| 476 | <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> |
---|
| 477 | |
---|
| 478 | <span class="c1"># check for having at least a starting date</span> |
---|
| 479 | <span class="c1"># otherwise program is not allowed to run</span> |
---|
| 480 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="p">:</span> |
---|
| 481 | <span class="nb">print</span><span class="p">(</span><span class="s1">'start_date specified neither in command line nor </span><span class="se">\</span> |
---|
| 482 | <span class="s1"> in CONTROL file '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> |
---|
| 483 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Try "'</span> <span class="o">+</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="o">+</span> |
---|
| 484 | <span class="s1">' -h" to print usage information'</span><span class="p">)</span> |
---|
| 485 | <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> |
---|
| 486 | |
---|
| 487 | <span class="c1"># retrieve just one day if end_date isn't set</span> |
---|
| 488 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span><span class="p">:</span> |
---|
| 489 | <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span> |
---|
| 490 | |
---|
| 491 | <span class="c1"># basetime has only two possible values</span> |
---|
| 492 | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> |
---|
| 493 | <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">12</span><span class="p">:</span> |
---|
| 494 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Basetime has an invalid value!'</span><span class="p">)</span> |
---|
| 495 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Basetime = '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">))</span> |
---|
| 496 | <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> |
---|
| 497 | |
---|
| 498 | <span class="c1"># assure consistency of levelist and level</span> |
---|
| 499 | <span class="c1"># up-to-date available maximum level numbers at ECMWF, 05.10.2018</span> |
---|
| 500 | <span class="n">max_level_list</span> <span class="o">=</span> <span class="p">[</span><span class="mi">16</span><span class="p">,</span> <span class="mi">19</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">60</span><span class="p">,</span> <span class="mi">62</span><span class="p">,</span> <span class="mi">91</span><span class="p">,</span> <span class="mi">137</span><span class="p">]</span> |
---|
| 501 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">:</span> |
---|
| 502 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Warning: neither levelist nor level </span><span class="se">\</span> |
---|
| 503 | <span class="s1"> specified in CONTROL file'</span><span class="p">)</span> |
---|
| 504 | <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> |
---|
| 505 | <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">:</span> |
---|
| 506 | <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="o">=</span> <span class="s1">'1/to/'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span> |
---|
| 507 | <span class="k">elif</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">)</span> <span class="ow">or</span> \ |
---|
| 508 | <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]):</span> |
---|
| 509 | <span class="bp">self</span><span class="o">.</span><span class="n">level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</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> |
---|
| 510 | <span class="k">else</span><span class="p">:</span> |
---|
| 511 | <span class="k">pass</span> |
---|
| 512 | |
---|
| 513 | <span class="c1"># check if max level is a valid level</span> |
---|
| 514 | <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">max_level_list</span><span class="p">:</span> |
---|
| 515 | <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR: '</span><span class="p">)</span> |
---|
| 516 | <span class="nb">print</span><span class="p">(</span><span class="s1">'LEVEL must be the maximum level of a specified '</span> |
---|
| 517 | <span class="s1">'level list from ECMWF, e.g.'</span><span class="p">)</span> |
---|
| 518 | <span class="nb">print</span><span class="p">(</span><span class="s1">'[16, 19, 31, 40, 50, 60, 62, 91 or 137]'</span><span class="p">)</span> |
---|
| 519 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Check parameter "LEVEL" or the max level of "LEVELIST"!'</span><span class="p">)</span> |
---|
| 520 | <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> |
---|
| 521 | |
---|
| 522 | <span class="c1"># if area was provided (only from commandline)</span> |
---|
| 523 | <span class="c1"># decompose area into its 4 components</span> |
---|
| 524 | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">area</span><span class="p">:</span> |
---|
| 525 | <span class="n">components</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">area</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> |
---|
| 526 | <span class="c1"># convert float to integer coordinates</span> |
---|
| 527 | <span class="k">if</span> <span class="s1">'.'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">area</span><span class="p">:</span> |
---|
| 528 | <span class="n">components</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">))</span> |
---|
| 529 | <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">components</span><span class="p">)]</span> |
---|
| 530 | <span class="bp">self</span><span class="o">.</span><span class="n">upper</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lower</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="n">components</span> |
---|
| 531 | |
---|
| 532 | <span class="c1"># prepare step list if "/" signs are found</span> |
---|
| 533 | <span class="k">if</span> <span class="s1">'/'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">:</span> |
---|
| 534 | <span class="n">steps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> |
---|
| 535 | <span class="k">if</span> <span class="s1">'to'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">and</span> <span class="s1">'by'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> |
---|
| 536 | <span class="n">ilist</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> |
---|
| 537 | <span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> |
---|
| 538 | <span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">4</span><span class="p">]))</span> |
---|
| 539 | <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="p">[</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">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">ilist</span><span class="p">]</span> |
---|
| 540 | <span class="k">elif</span> <span class="s1">'to'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">and</span> <span class="s1">'by'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> |
---|
| 541 | <span class="n">my_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">+</span> <span class="s1">':</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span> |
---|
| 542 | <span class="s1">'if "to" is used in steps parameter, </span><span class="se">\</span> |
---|
| 543 | <span class="s1"> please use "by" as well'</span><span class="p">)</span> |
---|
| 544 | <span class="k">else</span><span class="p">:</span> |
---|
| 545 | <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="n">steps</span> |
---|
| 546 | |
---|
| 547 | <span class="c1"># if maxstep wasn't provided</span> |
---|
| 548 | <span class="c1"># search for it in the "step" parameter</span> |
---|
| 549 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">:</span> |
---|
| 550 | <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 551 | <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">:</span> |
---|
| 552 | <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">:</span> |
---|
| 553 | <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
---|
| 554 | <span class="k">else</span><span class="p">:</span> |
---|
| 555 | <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">)</span> |
---|
| 556 | |
---|
| 557 | <span class="c1"># set root scripts since it is needed later on</span> |
---|
| 558 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span><span class="p">:</span> |
---|
| 559 | <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecmwfdatadir</span> |
---|
| 560 | |
---|
| 561 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span><span class="p">:</span> |
---|
| 562 | <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span> |
---|
| 563 | |
---|
| 564 | <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> |
---|
| 565 | <span class="k">if</span> <span class="s1">','</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">:</span> |
---|
| 566 | <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">','</span><span class="p">)</span> |
---|
| 567 | <span class="k">elif</span> <span class="s1">' '</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">:</span> |
---|
| 568 | <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="o">.</span><span class="n">split</span><span class="p">()</span> |
---|
| 569 | <span class="k">else</span><span class="p">:</span> |
---|
| 570 | <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">]</span> |
---|
| 571 | |
---|
| 572 | <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> |
---|
| 573 | <span class="k">if</span> <span class="s1">','</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="p">:</span> |
---|
| 574 | <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">','</span><span class="p">)</span> |
---|
| 575 | <span class="k">elif</span> <span class="s1">' '</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="p">:</span> |
---|
| 576 | <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="o">.</span><span class="n">split</span><span class="p">()</span> |
---|
| 577 | <span class="k">else</span><span class="p">:</span> |
---|
| 578 | <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="p">]</span> |
---|
| 579 | |
---|
| 580 | <span class="k">if</span> <span class="n">queue</span> <span class="ow">in</span> <span class="n">_config</span><span class="o">.</span><span class="n">QUEUES_LIST</span> <span class="ow">and</span> \ |
---|
| 581 | <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">gateway</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">destination</span> <span class="ow">or</span> \ |
---|
| 582 | <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecuid</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecgid</span><span class="p">:</span> |
---|
| 583 | <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Environment variables GATEWAY, DESTINATION, ECUID and </span><span class="se">\</span> |
---|
| 584 | <span class="s1"> ECGID were not set properly!'</span><span class="p">)</span> |
---|
| 585 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Please check for existence of file "ECMWF_ENV" in the </span><span class="se">\</span> |
---|
| 586 | <span class="s1"> python directory!'</span><span class="p">)</span> |
---|
| 587 | <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> |
---|
| 588 | |
---|
| 589 | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> |
---|
| 590 | <span class="n">marsfile</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="bp">self</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> |
---|
| 591 | <span class="n">_config</span><span class="o">.</span><span class="n">FILE_MARS_REQUESTS</span><span class="p">)</span> |
---|
| 592 | <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">marsfile</span><span class="p">):</span> |
---|
| 593 | <span class="n">silent_remove</span><span class="p">(</span><span class="n">marsfile</span><span class="p">)</span> |
---|
| 594 | |
---|
| 595 | <span class="c1"># check all logical variables for data type</span> |
---|
| 596 | <span class="c1"># if its a string change to integer</span> |
---|
| 597 | <span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">logicals</span><span class="p">:</span> |
---|
| 598 | <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">var</span><span class="p">),</span> <span class="nb">int</span><span class="p">):</span> |
---|
| 599 | <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">var</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">var</span><span class="p">)))</span> |
---|
| 600 | |
---|
| 601 | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dataset</span><span class="p">:</span> |
---|
| 602 | <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR: '</span><span class="p">)</span> |
---|
| 603 | <span class="nb">print</span><span class="p">(</span><span class="s1">'If public mars data wants to be retrieved, '</span> |
---|
| 604 | <span class="s1">'the "dataset"-parameter has to be set in the control file!'</span><span class="p">)</span> |
---|
| 605 | <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> |
---|
| 606 | |
---|
| 607 | <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> |
---|
| 608 | <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">]</span> |
---|
| 609 | |
---|
| 610 | <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">):</span> |
---|
| 611 | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'AN'</span> <span class="ow">and</span> <span class="nb">int</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="n">i</span><span class="p">])</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> |
---|
| 612 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Analysis retrievals must have STEP = 0 (is set to 0)'</span><span class="p">)</span> |
---|
| 613 | <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> |
---|
| 614 | |
---|
| 615 | <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">time</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> |
---|
| 616 | <span class="bp">self</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">time</span><span class="p">]</span> |
---|
| 617 | |
---|
| 618 | <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</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="nb">list</span><span class="p">):</span> |
---|
| 619 | <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">]</span> |
---|
| 620 | |
---|
| 621 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span><span class="p">:</span> |
---|
| 622 | <span class="nb">print</span><span class="p">(</span><span class="s1">'... Control paramter ACCTYPE was not defined.'</span><span class="p">)</span> |
---|
| 623 | <span class="k">try</span><span class="p">:</span> |
---|
| 624 | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'AN'</span><span class="p">:</span> |
---|
| 625 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Use old setting by using TYPE[1] for flux forecast!'</span><span class="p">)</span> |
---|
| 626 | <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> |
---|
| 627 | <span class="k">except</span><span class="p">:</span> |
---|
| 628 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Use default value "FC" for flux forecast!'</span><span class="p">)</span> |
---|
| 629 | <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span><span class="o">=</span><span class="s1">'FC'</span> |
---|
| 630 | |
---|
| 631 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">acctime</span><span class="p">:</span> |
---|
| 632 | <span class="nb">print</span><span class="p">(</span><span class="s1">'... Control paramter ACCTIME was not defined.'</span><span class="p">)</span> |
---|
| 633 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Use default value "00/12" for flux forecast!'</span><span class="p">)</span> |
---|
| 634 | <span class="bp">self</span><span class="o">.</span><span class="n">acctime</span><span class="o">=</span><span class="s1">'00/12'</span> |
---|
| 635 | |
---|
| 636 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span><span class="p">:</span> |
---|
| 637 | <span class="nb">print</span><span class="p">(</span><span class="s1">'... Control paramter ACCMAXSTEP was not defined.'</span><span class="p">)</span> |
---|
| 638 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Use default value "12" for flux forecast!'</span><span class="p">)</span> |
---|
| 639 | <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span><span class="o">=</span><span class="s1">'12'</span> |
---|
| 640 | |
---|
| 641 | <span class="k">return</span></div> |
---|
| 642 | |
---|
| 643 | <div class="viewcode-block" id="ControlFile.check_install_conditions"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.check_install_conditions">[docs]</a> <span class="k">def</span> <span class="nf">check_install_conditions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
---|
| 644 | <span class="sd">'''Checks a couple of necessary attributes and conditions</span> |
---|
| 645 | <span class="sd"> for the installation such as if they exist and contain values.</span> |
---|
| 646 | <span class="sd"> Otherwise set default values.</span> |
---|
| 647 | |
---|
| 648 | <span class="sd"> Parameters</span> |
---|
| 649 | <span class="sd"> ----------</span> |
---|
| 650 | |
---|
| 651 | <span class="sd"> Return</span> |
---|
| 652 | <span class="sd"> ------</span> |
---|
| 653 | |
---|
| 654 | <span class="sd"> '''</span> |
---|
| 655 | |
---|
| 656 | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">and</span> \ |
---|
| 657 | <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'local'</span><span class="p">,</span> <span class="s1">'ecgate'</span><span class="p">,</span> <span class="s1">'cca'</span><span class="p">]:</span> |
---|
| 658 | <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR: unknown or missing installation target '</span><span class="p">)</span> |
---|
| 659 | <span class="nb">print</span><span class="p">(</span><span class="s1">'target: '</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span><span class="p">)</span> |
---|
| 660 | <span class="nb">print</span><span class="p">(</span><span class="s1">'please specify correct installation target '</span> <span class="o">+</span> |
---|
| 661 | <span class="s1">'(local | ecgate | cca)'</span><span class="p">)</span> |
---|
| 662 | <span class="nb">print</span><span class="p">(</span><span class="s1">'use -h or --help for help'</span><span class="p">)</span> |
---|
| 663 | <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> |
---|
| 664 | |
---|
| 665 | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="o">!=</span> <span class="s1">'local'</span><span class="p">:</span> |
---|
| 666 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecgid</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecuid</span> <span class="ow">or</span> \ |
---|
| 667 | <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">gateway</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span> |
---|
| 668 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Please enter your ECMWF user id and group id as well '</span> <span class="o">+</span> |
---|
| 669 | <span class="s1">'as the </span><span class="se">\n</span><span class="s1">name of the local gateway and the ectrans '</span> <span class="o">+</span> |
---|
| 670 | <span class="s1">'destination '</span><span class="p">)</span> |
---|
| 671 | <span class="nb">print</span><span class="p">(</span><span class="s1">'with command line options --ecuid --ecgid </span><span class="se">\</span> |
---|
| 672 | <span class="s1"> --gateway --destination'</span><span class="p">)</span> |
---|
| 673 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Try "'</span> <span class="o">+</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="o">+</span> \ |
---|
| 674 | <span class="s1">' -h" to print usage information'</span><span class="p">)</span> |
---|
| 675 | <span class="nb">print</span><span class="p">(</span><span class="s1">'Please consult ecaccess documentation or ECMWF user </span><span class="se">\</span> |
---|
| 676 | <span class="s1"> support for further details'</span><span class="p">)</span> |
---|
| 677 | <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> |
---|
| 678 | |
---|
| 679 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span><span class="p">:</span> |
---|
| 680 | <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{HOME}</span><span class="s1">'</span> |
---|
| 681 | <span class="k">else</span><span class="p">:</span> |
---|
| 682 | <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> |
---|
| 683 | <span class="k">else</span><span class="p">:</span> <span class="c1"># local</span> |
---|
| 684 | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span><span class="p">:</span> |
---|
| 685 | <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> |
---|
| 686 | |
---|
| 687 | <span class="k">return</span></div> |
---|
| 688 | |
---|
| 689 | <div class="viewcode-block" id="ControlFile.to_list"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.to_list">[docs]</a> <span class="k">def</span> <span class="nf">to_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
---|
| 690 | <span class="sd">'''Just generates a list of strings containing the attributes and</span> |
---|
| 691 | <span class="sd"> assigned values except the attributes "_expanded", "exedir",</span> |
---|
| 692 | <span class="sd"> "ecmwfdatadir" and "flexpart_root_scripts".</span> |
---|
| 693 | |
---|
| 694 | <span class="sd"> Parameters</span> |
---|
| 695 | <span class="sd"> ----------</span> |
---|
| 696 | |
---|
| 697 | <span class="sd"> Return</span> |
---|
| 698 | <span class="sd"> ------</span> |
---|
| 699 | <span class="sd"> l : :obj:`list`</span> |
---|
| 700 | <span class="sd"> A sorted list of the all ControlFile class attributes with</span> |
---|
| 701 | <span class="sd"> their values except the attributes "_expanded", "exedir",</span> |
---|
| 702 | <span class="sd"> "ecmwfdatadir" and "flexpart_root_scripts".</span> |
---|
| 703 | <span class="sd"> '''</span> |
---|
| 704 | |
---|
| 705 | <span class="kn">import</span> <span class="nn">collections</span> |
---|
| 706 | |
---|
| 707 | <span class="n">attrs</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span> |
---|
| 708 | |
---|
| 709 | <span class="n">l</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span> |
---|
| 710 | |
---|
| 711 | <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> |
---|
| 712 | <span class="k">if</span> <span class="s1">'_expanded'</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> |
---|
| 713 | <span class="k">pass</span> |
---|
| 714 | <span class="k">elif</span> <span class="s1">'exedir'</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> |
---|
| 715 | <span class="k">pass</span> |
---|
| 716 | <span class="k">elif</span> <span class="s1">'flexpart_root_scripts'</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> |
---|
| 717 | <span class="k">pass</span> |
---|
| 718 | <span class="k">elif</span> <span class="s1">'ecmwfdatadir'</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> |
---|
| 719 | <span class="k">pass</span> |
---|
| 720 | <span class="k">else</span><span class="p">:</span> |
---|
| 721 | <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="nb">list</span><span class="p">):</span> |
---|
| 722 | <span class="n">stot</span> <span class="o">=</span> <span class="s1">''</span> |
---|
| 723 | <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> |
---|
| 724 | <span class="n">stot</span> <span class="o">+=</span> <span class="n">s</span> <span class="o">+</span> <span class="s1">' '</span> |
---|
| 725 | |
---|
| 726 | <span class="n">l</span><span class="o">.</span><span class="n">append</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">item</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stot</span><span class="p">))</span> |
---|
| 727 | <span class="k">else</span><span class="p">:</span> |
---|
| 728 | <span class="n">l</span><span class="o">.</span><span class="n">append</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="n">item</span><span class="p">)</span> |
---|
| 729 | |
---|
| 730 | <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> |
---|
| 731 | |
---|
| 732 | </pre></div> |
---|
| 733 | |
---|
| 734 | </div> |
---|
| 735 | |
---|
| 736 | </div> |
---|
| 737 | <footer> |
---|
| 738 | |
---|
| 739 | |
---|
| 740 | <hr/> |
---|
| 741 | |
---|
| 742 | <div role="contentinfo"> |
---|
| 743 | <p> |
---|
| 744 | © Copyright 2018, Anne Philipp and Leopold Haimberger. |
---|
| 745 | |
---|
| 746 | </p> |
---|
| 747 | </div> |
---|
| 748 | Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. |
---|
| 749 | |
---|
| 750 | </footer> |
---|
| 751 | |
---|
| 752 | </div> |
---|
| 753 | </div> |
---|
| 754 | |
---|
| 755 | </section> |
---|
| 756 | |
---|
| 757 | </div> |
---|
| 758 | |
---|
| 759 | |
---|
| 760 | |
---|
| 761 | |
---|
| 762 | |
---|
| 763 | <script type="text/javascript"> |
---|
| 764 | var DOCUMENTATION_OPTIONS = { |
---|
| 765 | URL_ROOT:'../', |
---|
| 766 | VERSION:'7.1 alpha', |
---|
| 767 | LANGUAGE:'None', |
---|
| 768 | COLLAPSE_INDEX:false, |
---|
| 769 | FILE_SUFFIX:'.html', |
---|
| 770 | HAS_SOURCE: true, |
---|
| 771 | SOURCELINK_SUFFIX: '.txt' |
---|
| 772 | }; |
---|
| 773 | </script> |
---|
| 774 | <script type="text/javascript" src="../_static/jquery.js"></script> |
---|
| 775 | <script type="text/javascript" src="../_static/underscore.js"></script> |
---|
| 776 | <script type="text/javascript" src="../_static/doctools.js"></script> |
---|
| 777 | <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> |
---|
| 778 | |
---|
| 779 | |
---|
| 780 | |
---|
| 781 | <script type="text/javascript" src="../_static/js/theme.js"></script> |
---|
| 782 | |
---|
| 783 | <script type="text/javascript"> |
---|
| 784 | jQuery(function () { |
---|
| 785 | SphinxRtdTheme.Navigation.enable(true); |
---|
| 786 | }); |
---|
| 787 | </script> |
---|
| 788 | |
---|
| 789 | </body> |
---|
| 790 | </html> |
---|