[0b00607] | 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 | |
---|
[6931f61] | 11 | <title>Templates — flex_extract 7.1.2 documentation</title> |
---|
[0b00607] | 12 | |
---|
| 13 | |
---|
| 14 | |
---|
| 15 | |
---|
| 16 | |
---|
| 17 | |
---|
| 18 | |
---|
| 19 | |
---|
| 20 | <script type="text/javascript" src="../../_static/js/modernizr.min.js"></script> |
---|
| 21 | |
---|
| 22 | |
---|
| 23 | <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script> |
---|
[b1674ed] | 24 | <script src="../../_static/jquery.js"></script> |
---|
| 25 | <script src="../../_static/underscore.js"></script> |
---|
| 26 | <script src="../../_static/doctools.js"></script> |
---|
| 27 | <script src="../../_static/language_data.js"></script> |
---|
| 28 | <script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script> |
---|
[0b00607] | 29 | |
---|
| 30 | <script type="text/javascript" src="../../_static/js/theme.js"></script> |
---|
| 31 | |
---|
| 32 | |
---|
| 33 | |
---|
| 34 | |
---|
| 35 | <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> |
---|
| 36 | <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> |
---|
| 37 | <link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" /> |
---|
| 38 | <link rel="stylesheet" href="../../_static/css/theme_overrides.css" type="text/css" /> |
---|
| 39 | <link rel="index" title="Index" href="../../genindex.html" /> |
---|
| 40 | <link rel="search" title="Search" href="../../search.html" /> |
---|
[5920b7f] | 41 | <link rel="next" title="Output data" href="../output.html" /> |
---|
| 42 | <link rel="prev" title="ECMWF user credential file ECMWF_ENV" href="ecmwf_env.html" /> |
---|
[0b00607] | 43 | </head> |
---|
| 44 | |
---|
| 45 | <body class="wy-body-for-nav"> |
---|
| 46 | |
---|
| 47 | |
---|
| 48 | <div class="wy-grid-for-nav"> |
---|
| 49 | |
---|
| 50 | <nav data-toggle="wy-nav-shift" class="wy-nav-side"> |
---|
| 51 | <div class="wy-side-scroll"> |
---|
| 52 | <div class="wy-side-nav-search" > |
---|
| 53 | |
---|
| 54 | |
---|
| 55 | |
---|
| 56 | <a href="../../index.html" class="icon icon-home"> flex_extract |
---|
| 57 | |
---|
| 58 | |
---|
| 59 | |
---|
| 60 | </a> |
---|
| 61 | |
---|
| 62 | |
---|
| 63 | |
---|
| 64 | |
---|
| 65 | <div class="version"> |
---|
[6931f61] | 66 | 7.1.2 |
---|
[0b00607] | 67 | </div> |
---|
| 68 | |
---|
| 69 | |
---|
| 70 | |
---|
| 71 | |
---|
| 72 | <div role="search"> |
---|
| 73 | <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> |
---|
| 74 | <input type="text" name="q" placeholder="Search docs" /> |
---|
| 75 | <input type="hidden" name="check_keywords" value="yes" /> |
---|
| 76 | <input type="hidden" name="area" value="default" /> |
---|
| 77 | </form> |
---|
| 78 | </div> |
---|
| 79 | |
---|
| 80 | |
---|
| 81 | </div> |
---|
| 82 | |
---|
| 83 | <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> |
---|
| 84 | |
---|
| 85 | |
---|
| 86 | |
---|
| 87 | |
---|
| 88 | |
---|
| 89 | |
---|
| 90 | <p class="caption"><span class="caption-text">Table of Contents:</span></p> |
---|
| 91 | <ul class="current"> |
---|
| 92 | <li class="toctree-l1"><a class="reference internal" href="../../ecmwf_data.html">ECMWF Data</a></li> |
---|
[5bee29a] | 93 | <li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li> |
---|
| 94 | <li class="toctree-l1"><a class="reference internal" href="../../quick_start.html">Usage</a></li> |
---|
| 95 | <li class="toctree-l1 current"><a class="reference internal" href="../../documentation.html">Code-Level Documentation</a><ul class="current"> |
---|
[0b00607] | 96 | <li class="toctree-l2"><a class="reference internal" href="../overview.html">Overview</a></li> |
---|
[5920b7f] | 97 | <li class="toctree-l2 current"><a class="reference internal" href="../input.html">Control & input data</a><ul class="current"> |
---|
| 98 | <li class="toctree-l3"><a class="reference internal" href="setup.html">The installation script - <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code></a></li> |
---|
| 99 | <li class="toctree-l3"><a class="reference internal" href="compilejob.html">The compilation job script <code class="docutils literal notranslate"><span class="pre">compilejob.ksh</span></code></a></li> |
---|
| 100 | <li class="toctree-l3"><a class="reference internal" href="fortran_makefile.html">The Fortran makefile for <code class="docutils literal notranslate"><span class="pre">calc_etadot</span></code></a></li> |
---|
| 101 | <li class="toctree-l3"><a class="reference internal" href="run.html">The executable script - <code class="docutils literal notranslate"><span class="pre">run.sh</span></code></a></li> |
---|
| 102 | <li class="toctree-l3"><a class="reference internal" href="jobscript.html">The job script <code class="docutils literal notranslate"><span class="pre">job.ksh</span></code></a></li> |
---|
[0b00607] | 103 | <li class="toctree-l3"><a class="reference internal" href="control.html">The CONTROL file</a></li> |
---|
| 104 | <li class="toctree-l3"><a class="reference internal" href="control_params.html">The CONTROL parameters</a></li> |
---|
| 105 | <li class="toctree-l3"><a class="reference internal" href="examples.html">CONTROL file examples</a></li> |
---|
| 106 | <li class="toctree-l3"><a class="reference internal" href="changes.html">CONTROL file changes</a></li> |
---|
[5920b7f] | 107 | <li class="toctree-l3"><a class="reference internal" href="ecmwf_env.html">ECMWF user credential file <code class="docutils literal notranslate"><span class="pre">ECMWF_ENV</span></code></a></li> |
---|
[0b00607] | 108 | <li class="toctree-l3 current"><a class="current reference internal" href="#">Templates</a><ul> |
---|
[6931f61] | 109 | <li class="toctree-l4"><a class="reference internal" href="#calc-etadot-nml-template">calc_etadot_nml.template</a></li> |
---|
| 110 | <li class="toctree-l4"><a class="reference internal" href="#ecmwf-env-template">ECMWF_ENV.template</a></li> |
---|
| 111 | <li class="toctree-l4"><a class="reference internal" href="#installscript-template">installscript.template</a></li> |
---|
| 112 | <li class="toctree-l4"><a class="reference internal" href="#submitscript-template">submitscript.template</a></li> |
---|
| 113 | <li class="toctree-l4"><a class="reference internal" href="#jobscript-template">jobscript.template</a></li> |
---|
[0b00607] | 114 | </ul> |
---|
| 115 | </li> |
---|
| 116 | </ul> |
---|
| 117 | </li> |
---|
[5920b7f] | 118 | <li class="toctree-l2"><a class="reference internal" href="../output.html">Output data</a></li> |
---|
| 119 | <li class="toctree-l2"><a class="reference internal" href="../disagg.html">Disaggregation of flux data</a></li> |
---|
| 120 | <li class="toctree-l2"><a class="reference internal" href="../vertco.html">Vertical wind</a></li> |
---|
| 121 | <li class="toctree-l2"><a class="reference internal" href="../api.html">Auto-generated documentation</a></li> |
---|
[0b00607] | 122 | </ul> |
---|
| 123 | </li> |
---|
| 124 | <li class="toctree-l1"><a class="reference internal" href="../../evaluation.html">Evaluation</a></li> |
---|
| 125 | <li class="toctree-l1"><a class="reference internal" href="../../dev_guide.html">Developer Guide</a></li> |
---|
| 126 | <li class="toctree-l1"><a class="reference internal" href="../../changelog.html">Changelog</a></li> |
---|
| 127 | <li class="toctree-l1"><a class="reference internal" href="../../support.html">Support</a></li> |
---|
| 128 | <li class="toctree-l1"><a class="reference internal" href="../../Support/faq.html">FAQ - Frequently asked questions</a></li> |
---|
| 129 | <li class="toctree-l1"><a class="reference internal" href="../../authors.html">Developer Team</a></li> |
---|
| 130 | </ul> |
---|
| 131 | |
---|
| 132 | |
---|
| 133 | |
---|
| 134 | </div> |
---|
| 135 | </div> |
---|
| 136 | </nav> |
---|
| 137 | |
---|
| 138 | <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> |
---|
| 139 | |
---|
| 140 | |
---|
| 141 | <nav class="wy-nav-top" aria-label="top navigation"> |
---|
| 142 | |
---|
| 143 | <i data-toggle="wy-nav-top" class="fa fa-bars"></i> |
---|
| 144 | <a href="../../index.html">flex_extract</a> |
---|
| 145 | |
---|
| 146 | </nav> |
---|
| 147 | |
---|
| 148 | |
---|
| 149 | <div class="wy-nav-content"> |
---|
| 150 | |
---|
| 151 | <div class="rst-content"> |
---|
| 152 | |
---|
| 153 | |
---|
| 154 | |
---|
| 155 | |
---|
| 156 | |
---|
| 157 | |
---|
| 158 | |
---|
| 159 | |
---|
| 160 | |
---|
| 161 | |
---|
| 162 | |
---|
| 163 | |
---|
| 164 | |
---|
| 165 | |
---|
| 166 | |
---|
| 167 | |
---|
| 168 | |
---|
| 169 | <div role="navigation" aria-label="breadcrumbs navigation"> |
---|
| 170 | |
---|
| 171 | <ul class="wy-breadcrumbs"> |
---|
| 172 | |
---|
| 173 | <li><a href="../../index.html">Docs</a> »</li> |
---|
| 174 | |
---|
[5bee29a] | 175 | <li><a href="../../documentation.html">Code-Level Documentation</a> »</li> |
---|
[0b00607] | 176 | |
---|
[5920b7f] | 177 | <li><a href="../input.html">Control & input data</a> »</li> |
---|
[0b00607] | 178 | |
---|
| 179 | <li>Templates</li> |
---|
| 180 | |
---|
| 181 | |
---|
| 182 | <li class="wy-breadcrumbs-aside"> |
---|
| 183 | |
---|
| 184 | |
---|
| 185 | <a href="../../_sources/Documentation/Input/templates.rst.txt" rel="nofollow"> View page source</a> |
---|
| 186 | |
---|
| 187 | |
---|
| 188 | </li> |
---|
| 189 | |
---|
| 190 | </ul> |
---|
| 191 | |
---|
| 192 | |
---|
| 193 | <hr/> |
---|
| 194 | </div> |
---|
| 195 | <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> |
---|
| 196 | <div itemprop="articleBody"> |
---|
| 197 | |
---|
| 198 | <div class="section" id="templates"> |
---|
| 199 | <h1>Templates<a class="headerlink" href="#templates" title="Permalink to this headline">¶</a></h1> |
---|
[5920b7f] | 200 | <p>In <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>, the Python package <a class="reference external" href="https://genshi.edgewall.org/">genshi</a> is used to create specific files from templates. It is the most efficient way to be able to quickly adapt, e. g., the job scripts sent to the ECMWF batch queue system, or the namelist file für the Fortran program, without the need to change the program code.</p> |
---|
[0b00607] | 201 | <div class="admonition note"> |
---|
[b1674ed] | 202 | <p class="admonition-title">Note</p> |
---|
[5920b7f] | 203 | <p>Do not change anything in these files unless you understand the effects!</p> |
---|
[0b00607] | 204 | </div> |
---|
[6931f61] | 205 | <p>Each template file has its content framework and keeps so-called placeholder variables in the positions where the values need to be substituted at run time. These placeholders are marked by a leading <code class="docutils literal notranslate"><span class="pre">$</span></code> sign. In case of the Korn shell job scripts, where (environment) variables are used, the <code class="docutils literal notranslate"><span class="pre">$</span></code> sign needs to be doubled for <cite>escaping</cite>.</p> |
---|
[5920b7f] | 206 | <p>The following templates are used; they can be found in the directory <code class="docutils literal notranslate"><span class="pre">flex_extract_vX.X/Templates</span></code>:</p> |
---|
[6931f61] | 207 | <div class="section" id="calc-etadot-nml-template"> |
---|
| 208 | <h2>calc_etadot_nml.template<a class="headerlink" href="#calc-etadot-nml-template" title="Permalink to this headline">¶</a></h2> |
---|
[0b00607] | 209 | <blockquote> |
---|
[5920b7f] | 210 | <div><p>This is the template for a Fortran namelist file called <code class="docutils literal notranslate"><span class="pre">fort.4</span></code> read by <code class="docutils literal notranslate"><span class="pre">calc_etadot</span></code>. |
---|
[b1674ed] | 211 | It contains all the parameters <code class="docutils literal notranslate"><span class="pre">calc_etadot</span></code> needs.</p> |
---|
[0b00607] | 212 | <div class="highlight-fortran notranslate"><div class="highlight"><pre><span></span>&NAMGEN |
---|
| 213 | maxl = $maxl, |
---|
| 214 | maxb = $maxb, |
---|
| 215 | mlevel = $mlevel, |
---|
| 216 | mlevelist = "$mlevelist", |
---|
| 217 | mnauf = $mnauf, |
---|
| 218 | metapar = $metapar, |
---|
| 219 | rlo0 = $rlo0, |
---|
| 220 | rlo1 = $rlo1, |
---|
| 221 | rla0 = $rla0, |
---|
| 222 | rla1 = $rla1, |
---|
| 223 | momega = $momega, |
---|
| 224 | momegadiff = $momegadiff, |
---|
| 225 | mgauss = $mgauss, |
---|
| 226 | msmooth = $msmooth, |
---|
| 227 | meta = $meta, |
---|
| 228 | metadiff = $metadiff, |
---|
| 229 | mdpdeta = $mdpdeta |
---|
| 230 | / |
---|
| 231 | </pre></div> |
---|
| 232 | </div> |
---|
| 233 | </div></blockquote> |
---|
| 234 | </div> |
---|
| 235 | <div class="section" id="ecmwf-env-template"> |
---|
[6931f61] | 236 | <h2>ECMWF_ENV.template<a class="headerlink" href="#ecmwf-env-template" title="Permalink to this headline">¶</a></h2> |
---|
[0b00607] | 237 | <blockquote> |
---|
| 238 | <div><p>This template is used to create the <code class="docutils literal notranslate"><span class="pre">ECMWF_ENV</span></code> file in the application modes <strong>gateway</strong> and <strong>remote</strong>. It contains the user credentials and gateway server settings for the file transfers.</p> |
---|
| 239 | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ECUID <span class="nv">$user_name</span> |
---|
| 240 | ECGID <span class="nv">$user_group</span> |
---|
| 241 | GATEWAY <span class="nv">$gateway_name</span> |
---|
| 242 | DESTINATION <span class="nv">$destination_name</span> |
---|
| 243 | </pre></div> |
---|
| 244 | </div> |
---|
| 245 | </div></blockquote> |
---|
| 246 | </div> |
---|
[6931f61] | 247 | <div class="section" id="installscript-template"> |
---|
| 248 | <h2>installscript.template<a class="headerlink" href="#installscript-template" title="Permalink to this headline">¶</a></h2> |
---|
[0b00607] | 249 | <blockquote> |
---|
| 250 | <div><p>This template is used to create the job script file called <code class="docutils literal notranslate"><span class="pre">compilejob.ksh</span></code> during the installation process for the application modes <strong>remote</strong> and <strong>gateway</strong>.</p> |
---|
[5920b7f] | 251 | <p>At the beginning, some directives for the batch system are set. |
---|
| 252 | On the <strong>ecgate</strong> server, the <code class="docutils literal notranslate"><span class="pre">SBATCH</span></code> comments are the directives for the SLURM workload manager. A description of the single lines can be found at <a class="reference external" href="https://confluence.ecmwf.int/display/UDOC/Writing+SLURM+jobs">SLURM directives</a>. |
---|
| 253 | For the high-performance computers <strong>cca</strong> and <strong>ccb</strong>, the <code class="docutils literal notranslate"><span class="pre">PBS</span></code> comments are necessary; for details see <a class="reference external" href="https://confluence.ecmwf.int/display/UDOC/Batch+environment%3A++PBS">PBS directives</a>.</p> |
---|
| 254 | <p>The software environment requirements mentioned in <a class="reference internal" href="../../installation.html#ref-requirements"><span class="std std-ref">Dependencies</span></a> are prepared by loading the corresponding modules depending on the <code class="docutils literal notranslate"><span class="pre">HOST</span></code>. It should not be changed without testing.</p> |
---|
| 255 | <p>Afterwards, the installation steps as such are done. They included the generation of the root directory, putting files in place, compiling the Fortran program, and sending a log file by email.</p> |
---|
[0b00607] | 256 | <div class="highlight-ksh notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/ksh</span> |
---|
| 257 | |
---|
| 258 | <span class="c1"># ON ECGB:</span> |
---|
| 259 | <span class="c1"># start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE on gateway server</span> |
---|
| 260 | <span class="c1"># start with sbatch NAME_OF_THIS_FILE directly on machine</span> |
---|
| 261 | |
---|
| 262 | <span class="c1">#SBATCH --workdir=/scratch/ms/$usergroup/$username</span> |
---|
| 263 | <span class="c1">#SBATCH --qos=normal</span> |
---|
| 264 | <span class="c1">#SBATCH --job-name=flex_ecmwf</span> |
---|
| 265 | <span class="c1">#SBATCH --output=flex_ecmwf.%j.out</span> |
---|
| 266 | <span class="c1">#SBATCH --error=flex_ecmwf.%j.out</span> |
---|
| 267 | <span class="c1">#SBATCH --mail-type=FAIL</span> |
---|
| 268 | <span class="c1">#SBATCH --time=12:00:00</span> |
---|
| 269 | |
---|
| 270 | <span class="c1">## CRAY specific batch requests</span> |
---|
| 271 | <span class="c1">##PBS -N flex_ecmwf</span> |
---|
| 272 | <span class="c1">##PBS -q ns</span> |
---|
| 273 | <span class="c1">##PBS -S /usr/bin/ksh</span> |
---|
| 274 | <span class="c1">##PBS -o /scratch/ms/$usergroup/$username/flex_ecmwf.$${Jobname}.$${Job_ID}.out</span> |
---|
| 275 | <span class="c1"># job output is in .ecaccess_DO_NOT_REMOVE</span> |
---|
| 276 | <span class="c1">##PBS -j oe</span> |
---|
| 277 | <span class="c1">##PBS -V</span> |
---|
| 278 | <span class="c1">##PBS -l EC_threads_per_task=1</span> |
---|
| 279 | <span class="c1">##PBS -l EC_memory_per_task=3200MB</span> |
---|
| 280 | |
---|
| 281 | <span class="nb">set</span> -x |
---|
| 282 | <span class="nb">export</span> <span class="nv">VERSION</span><span class="o">=</span><span class="nv">$version_number</span> |
---|
| 283 | <span class="k">case</span> <span class="nv">$$</span><span class="o">{</span>HOST<span class="o">}</span> in |
---|
| 284 | *ecg*<span class="o">)</span> |
---|
| 285 | module unload grib_api |
---|
| 286 | module unload emos |
---|
| 287 | module load python3 |
---|
[6931f61] | 288 | module load eccodes |
---|
[0b00607] | 289 | module load emos/455-r64 |
---|
| 290 | <span class="nb">export</span> <span class="nv">FLEXPART_ROOT_SCRIPTS</span><span class="o">=</span><span class="nv">$fp_root_scripts</span> |
---|
| 291 | <span class="nb">export</span> <span class="nv">MAKEFILE</span><span class="o">=</span><span class="nv">$makefile</span> |
---|
| 292 | <span class="p">;;</span> |
---|
| 293 | *cca*<span class="o">)</span> |
---|
| 294 | module switch PrgEnv-cray PrgEnv-intel |
---|
| 295 | module load python3 |
---|
[6931f61] | 296 | module load eccodes |
---|
| 297 | module load emos/455-r64 |
---|
[0b00607] | 298 | <span class="nb">echo</span> <span class="nv">$$</span><span class="o">{</span>GROUP<span class="o">}</span> |
---|
| 299 | <span class="nb">echo</span> <span class="nv">$$</span><span class="o">{</span>HOME<span class="o">}</span> |
---|
| 300 | <span class="nb">echo</span> <span class="nv">$$</span><span class="o">{</span>HOME<span class="o">}</span> <span class="p">|</span> awk -F / <span class="s1">'{print $1, $2, $3, $4}'</span> |
---|
| 301 | <span class="nb">export</span> <span class="nv">GROUP</span><span class="o">=</span><span class="sb">`</span><span class="nb">echo</span> <span class="nv">$$</span><span class="o">{</span>HOME<span class="o">}</span> <span class="p">|</span> awk -F / <span class="s1">'{print $4}'</span><span class="sb">`</span> |
---|
| 302 | <span class="nb">export</span> <span class="nv">SCRATCH</span><span class="o">=</span>/scratch/ms/<span class="nv">$$</span><span class="o">{</span>GROUP<span class="o">}</span>/<span class="nv">$$</span><span class="o">{</span>USER<span class="o">}</span> |
---|
| 303 | <span class="nb">export</span> <span class="nv">FLEXPART_ROOT_SCRIPTS</span><span class="o">=</span><span class="nv">$fp_root_scripts</span> |
---|
| 304 | <span class="nb">export</span> <span class="nv">MAKEFILE</span><span class="o">=</span><span class="nv">$makefile</span> |
---|
| 305 | <span class="p">;;</span> |
---|
| 306 | <span class="k">esac</span> |
---|
| 307 | |
---|
| 308 | mkdir -p <span class="nv">$$</span><span class="o">{</span>FLEXPART_ROOT_SCRIPTS<span class="o">}</span>/flex_extract_v<span class="nv">$$</span><span class="o">{</span>VERSION<span class="o">}</span> |
---|
| 309 | <span class="nb">cd</span> <span class="nv">$$</span><span class="o">{</span>FLEXPART_ROOT_SCRIPTS<span class="o">}</span>/flex_extract_v<span class="nv">$$</span><span class="o">{</span>VERSION<span class="o">}</span> <span class="c1"># if FLEXPART_ROOT is not set this means cd to the home directory</span> |
---|
| 310 | tar -xvf <span class="nv">$$</span><span class="o">{</span>HOME<span class="o">}</span>/flex_extract_v<span class="nv">$$</span><span class="o">{</span>VERSION<span class="o">}</span>.tar |
---|
[b1674ed] | 311 | <span class="nb">cd</span> Source/Fortran |
---|
[0b00607] | 312 | <span class="se">\r</span>m *.o *.mod <span class="nv">$fortran_program</span> |
---|
| 313 | make -f <span class="nv">$$</span><span class="o">{</span>MAKEFILE<span class="o">}</span> >flexcompile <span class="m">2</span>>flexcompile |
---|
| 314 | |
---|
| 315 | ls -l <span class="nv">$fortran_program</span> >>flexcompile |
---|
| 316 | <span class="k">if</span> <span class="o">[</span> <span class="nv">$$</span>? -eq <span class="m">0</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> |
---|
| 317 | <span class="nb">echo</span> <span class="s1">'SUCCESS!'</span> >>flexcompile |
---|
| 318 | mail -s flexcompile.<span class="nv">$$</span><span class="o">{</span>HOST<span class="o">}</span>.<span class="nv">$$$$</span> <span class="nv">$$</span><span class="o">{</span>USER<span class="o">}</span> <flexcompile |
---|
| 319 | <span class="k">else</span> |
---|
| 320 | <span class="nb">echo</span> Environment: >>flexcompile |
---|
| 321 | env >> flexcompile |
---|
| 322 | mail -s <span class="s2">"ERROR! flexcompile.</span><span class="nv">$$</span><span class="s2">{HOST}.</span><span class="nv">$$$$</span><span class="s2">"</span> <span class="nv">$$</span><span class="o">{</span>USER<span class="o">}</span> <flexcompile |
---|
| 323 | <span class="k">fi</span> |
---|
| 324 | </pre></div> |
---|
| 325 | </div> |
---|
| 326 | </div></blockquote> |
---|
| 327 | </div> |
---|
[6931f61] | 328 | <div class="section" id="submitscript-template"> |
---|
| 329 | <h2>submitscript.template<a class="headerlink" href="#submitscript-template" title="Permalink to this headline">¶</a></h2> |
---|
[0b00607] | 330 | <blockquote> |
---|
| 331 | <div><p>This template is used to create the actual job script file called <code class="docutils literal notranslate"><span class="pre">job.ksh</span></code> for the execution of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> in the application modes <strong>remote</strong> and <strong>gateway</strong>.</p> |
---|
[5920b7f] | 332 | <p>At the beginning, some directives for the batch system are set. |
---|
| 333 | On the <strong>ecgate</strong> server, the <code class="docutils literal notranslate"><span class="pre">SBATCH</span></code> comments are the directives for the SLURM workload manager. A description of the single lines can be found at <a class="reference external" href="https://confluence.ecmwf.int/display/UDOC/Writing+SLURM+jobs">SLURM directives</a>. |
---|
| 334 | For the high performance computers <strong>cca</strong> and <strong>ccb</strong>, the <code class="docutils literal notranslate"><span class="pre">PBS</span></code> comments are necessary; |
---|
| 335 | for details see <a class="reference external" href="https://confluence.ecmwf.int/display/UDOC/Batch+environment%3A++PBS">PBS directives</a>.</p> |
---|
| 336 | <p>The software environment requirements mentioned in <a class="reference internal" href="../../installation.html#ref-requirements"><span class="std std-ref">Dependencies</span></a> are prepared by loading the corresponding modules depending on the <code class="docutils literal notranslate"><span class="pre">HOST</span></code>. It should not be changed without testing.</p> |
---|
| 337 | <p>Afterwards, the run directory and the <code class="docutils literal notranslate"><span class="pre">CONTROL</span></code> file are created and <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> is executed. In the end, a log file is send by email.</p> |
---|
[0b00607] | 338 | <div class="highlight-ksh notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/ksh</span> |
---|
| 339 | |
---|
| 340 | <span class="c1"># ON ECGB:</span> |
---|
| 341 | <span class="c1"># start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE on gateway server</span> |
---|
| 342 | <span class="c1"># start with sbatch NAME_OF_THIS_FILE directly on machine</span> |
---|
| 343 | |
---|
| 344 | <span class="c1">#SBATCH --workdir=/scratch/ms/at/km4a</span> |
---|
| 345 | <span class="c1">#SBATCH --qos=normal</span> |
---|
| 346 | <span class="c1">#SBATCH --job-name=flex_ecmwf</span> |
---|
| 347 | <span class="c1">#SBATCH --output=flex_ecmwf.%j.out</span> |
---|
| 348 | <span class="c1">#SBATCH --error=flex_ecmwf.%j.out</span> |
---|
| 349 | <span class="c1">#SBATCH --mail-type=FAIL</span> |
---|
| 350 | <span class="c1">#SBATCH --time=12:00:00</span> |
---|
| 351 | |
---|
| 352 | <span class="c1">## CRAY specific batch requests</span> |
---|
| 353 | <span class="c1">##PBS -N flex_ecmwf</span> |
---|
| 354 | <span class="c1">##PBS -q np</span> |
---|
| 355 | <span class="c1">##PBS -S /usr/bin/ksh</span> |
---|
| 356 | <span class="c1">## -o /scratch/ms/at/km4a/flex_ecmwf.$${PBS_JOBID}.out</span> |
---|
| 357 | <span class="c1">## job output is in .ecaccess_DO_NOT_REMOVE</span> |
---|
| 358 | <span class="c1">##PBS -j oe</span> |
---|
| 359 | <span class="c1">##PBS -V</span> |
---|
| 360 | <span class="c1">##PBS -l EC_threads_per_task=24</span> |
---|
| 361 | <span class="c1">##PBS -l EC_memory_per_task=32000MB</span> |
---|
| 362 | |
---|
| 363 | <span class="nb">set</span> -x |
---|
| 364 | <span class="nb">export</span> <span class="nv">VERSION</span><span class="o">=</span><span class="m">7</span>.1 |
---|
| 365 | <span class="k">case</span> <span class="nv">$$</span><span class="o">{</span>HOST<span class="o">}</span> in |
---|
| 366 | *ecg*<span class="o">)</span> |
---|
[08c9091] | 367 | module unload grib_api |
---|
| 368 | module unload emos |
---|
| 369 | module load python3 |
---|
| 370 | module load eccodes |
---|
| 371 | module load emos/455-r64 |
---|
| 372 | <span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="si">${</span><span class="nv">PATH</span><span class="si">}</span>:<span class="si">${</span><span class="nv">HOME</span><span class="si">}</span>/flex_extract_v7.1/Source/Python |
---|
| 373 | <span class="p">;;</span> |
---|
| 374 | *cca*<span class="o">)</span> |
---|
| 375 | module switch PrgEnv-cray PrgEnv-intel |
---|
| 376 | module load python3 |
---|
| 377 | module load eccodes |
---|
| 378 | module load emos/455-r64 |
---|
| 379 | <span class="nb">export</span> <span class="nv">SCRATCH</span><span class="o">=</span><span class="si">${</span><span class="nv">TMPDIR</span><span class="si">}</span> |
---|
| 380 | <span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="si">${</span><span class="nv">PATH</span><span class="si">}</span>:<span class="si">${</span><span class="nv">HOME</span><span class="si">}</span>/flex_extract_v7.1/Source/Python |
---|
[0b00607] | 381 | <span class="p">;;</span> |
---|
| 382 | <span class="k">esac</span> |
---|
| 383 | |
---|
| 384 | <span class="nb">cd</span> <span class="nv">$$</span><span class="o">{</span>SCRATCH<span class="o">}</span> |
---|
| 385 | mkdir -p python<span class="nv">$$$$</span> |
---|
| 386 | <span class="nb">cd</span> python<span class="nv">$$$$</span> |
---|
| 387 | |
---|
| 388 | <span class="nb">export</span> <span class="nv">CONTROL</span><span class="o">=</span>CONTROL |
---|
| 389 | |
---|
| 390 | cat ><span class="nv">$$</span><span class="o">{</span>CONTROL<span class="o">}</span><span class="s"><<EOF</span> |
---|
| 391 | <span class="s">$control_content</span> |
---|
| 392 | <span class="s">EOF</span> |
---|
| 393 | |
---|
| 394 | |
---|
| 395 | submit.py --controlfile<span class="o">=</span><span class="nv">$$</span><span class="o">{</span>CONTROL<span class="o">}</span> --inputdir<span class="o">=</span>./work --outputdir<span class="o">=</span>./work <span class="m">1</span>> prot <span class="m">2</span>><span class="p">&</span><span class="m">1</span> |
---|
| 396 | |
---|
| 397 | <span class="k">if</span> <span class="o">[</span> <span class="nv">$?</span> -eq <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span> |
---|
| 398 | <span class="nv">l</span><span class="o">=</span><span class="m">0</span> |
---|
| 399 | <span class="k">for</span> muser in <span class="sb">`</span>grep -i MAILOPS <span class="nv">$$</span><span class="o">{</span>CONTROL<span class="o">}</span><span class="sb">`</span><span class="p">;</span> <span class="k">do</span> |
---|
| 400 | <span class="k">if</span> <span class="o">[</span> <span class="nv">$$</span><span class="o">{</span>l<span class="o">}</span> -gt <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span> |
---|
| 401 | mail -s flex.<span class="nv">$$</span><span class="o">{</span>HOST<span class="o">}</span>.<span class="nv">$$$$</span> <span class="nv">$$</span><span class="o">{</span>muser<span class="o">}</span> <prot |
---|
| 402 | <span class="k">fi</span> |
---|
| 403 | <span class="nv">l</span><span class="o">=</span><span class="k">$((</span><span class="nv">$$</span><span class="o">{</span>l<span class="o">}+</span><span class="m">1</span><span class="k">))</span> |
---|
| 404 | <span class="k">done</span> |
---|
| 405 | <span class="k">else</span> |
---|
| 406 | <span class="nv">l</span><span class="o">=</span><span class="m">0</span> |
---|
| 407 | <span class="k">for</span> muser in <span class="sb">`</span>grep -i MAILFAIL <span class="nv">$$</span><span class="o">{</span>CONTROL<span class="o">}</span><span class="sb">`</span><span class="p">;</span> <span class="k">do</span> |
---|
| 408 | <span class="k">if</span> <span class="o">[</span> <span class="nv">$$</span><span class="o">{</span>l<span class="o">}</span> -gt <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span> |
---|
| 409 | mail -s <span class="s2">"ERROR! flex.</span><span class="nv">$$</span><span class="s2">{HOST}.</span><span class="nv">$$$$</span><span class="s2">"</span> <span class="nv">$$</span><span class="o">{</span>muser<span class="o">}</span> <prot |
---|
| 410 | <span class="k">fi</span> |
---|
| 411 | <span class="nv">l</span><span class="o">=</span><span class="k">$((</span><span class="nv">$$</span><span class="o">{</span>l<span class="o">}+</span><span class="m">1</span><span class="k">))</span> |
---|
| 412 | <span class="k">done</span> |
---|
| 413 | <span class="k">fi</span> |
---|
| 414 | </pre></div> |
---|
| 415 | </div> |
---|
| 416 | </div></blockquote> |
---|
| 417 | </div> |
---|
[6931f61] | 418 | <div class="section" id="jobscript-template"> |
---|
| 419 | <h2>jobscript.template<a class="headerlink" href="#jobscript-template" title="Permalink to this headline">¶</a></h2> |
---|
[0b00607] | 420 | <blockquote> |
---|
[6931f61] | 421 | <div><p>This template is used to create the template for the execution job script <code class="docutils literal notranslate"><span class="pre">submitscript.template</span></code> for <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> in the installation process. A description of the file can be found under <code class="docutils literal notranslate"><span class="pre">submitscript.template</span></code>. Several parameters are set in this process, such as the user credentials and the <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> version number.</p> |
---|
[0b00607] | 422 | <div class="highlight-ksh notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/ksh</span> |
---|
| 423 | |
---|
| 424 | <span class="c1"># ON ECGB:</span> |
---|
| 425 | <span class="c1"># start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE on gateway server</span> |
---|
| 426 | <span class="c1"># start with sbatch NAME_OF_THIS_FILE directly on machine</span> |
---|
| 427 | |
---|
| 428 | <span class="c1">#SBATCH --workdir=/scratch/ms/$usergroup/$username</span> |
---|
| 429 | <span class="c1">#SBATCH --qos=normal</span> |
---|
| 430 | <span class="c1">#SBATCH --job-name=flex_ecmwf</span> |
---|
| 431 | <span class="c1">#SBATCH --output=flex_ecmwf.%j.out</span> |
---|
| 432 | <span class="c1">#SBATCH --error=flex_ecmwf.%j.out</span> |
---|
| 433 | <span class="c1">#SBATCH --mail-type=FAIL</span> |
---|
| 434 | <span class="c1">#SBATCH --time=12:00:00</span> |
---|
| 435 | |
---|
| 436 | <span class="c1">## CRAY specific batch requests</span> |
---|
| 437 | <span class="c1">##PBS -N flex_ecmwf</span> |
---|
| 438 | <span class="c1">##PBS -q np</span> |
---|
| 439 | <span class="c1">##PBS -S /usr/bin/ksh</span> |
---|
| 440 | <span class="c1">## -o /scratch/ms/$usergroup/$username/flex_ecmwf.$$$${PBS_JOBID}.out</span> |
---|
| 441 | <span class="c1">## job output is in .ecaccess_DO_NOT_REMOVE</span> |
---|
| 442 | <span class="c1">##PBS -j oe</span> |
---|
| 443 | <span class="c1">##PBS -V</span> |
---|
| 444 | <span class="c1">##PBS -l EC_threads_per_task=24</span> |
---|
| 445 | <span class="c1">##PBS -l EC_memory_per_task=32000MB</span> |
---|
| 446 | |
---|
| 447 | <span class="nb">set</span> -x |
---|
| 448 | <span class="nb">export</span> <span class="nv">VERSION</span><span class="o">=</span><span class="nv">$version_number</span> |
---|
| 449 | <span class="k">case</span> <span class="nv">$$$$</span><span class="o">{</span>HOST<span class="o">}</span> in |
---|
| 450 | *ecg*<span class="o">)</span> |
---|
[08c9091] | 451 | module unload grib_api |
---|
| 452 | module unload emos |
---|
| 453 | module load python3 |
---|
| 454 | module load eccodes |
---|
| 455 | module load emos/455-r64 |
---|
[0b00607] | 456 | <span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="nv">$$$$</span><span class="o">{</span>PATH<span class="o">}</span>:<span class="nv">$fp_root_path</span> |
---|
| 457 | <span class="p">;;</span> |
---|
| 458 | *cca*<span class="o">)</span> |
---|
[08c9091] | 459 | module switch PrgEnv-cray PrgEnv-intel |
---|
| 460 | module load python3 |
---|
| 461 | module load eccodes |
---|
| 462 | module load emos/455-r64 |
---|
[0b00607] | 463 | <span class="nb">export</span> <span class="nv">SCRATCH</span><span class="o">=</span><span class="nv">$$$$</span><span class="o">{</span>TMPDIR<span class="o">}</span> |
---|
| 464 | <span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="nv">$$$$</span><span class="o">{</span>PATH<span class="o">}</span>:<span class="nv">$fp_root_path</span> |
---|
| 465 | <span class="p">;;</span> |
---|
| 466 | <span class="k">esac</span> |
---|
| 467 | |
---|
| 468 | <span class="nb">cd</span> <span class="nv">$$$$</span><span class="o">{</span>SCRATCH<span class="o">}</span> |
---|
| 469 | mkdir -p python<span class="nv">$$$$$$$$</span> |
---|
| 470 | <span class="nb">cd</span> python<span class="nv">$$$$$$$$</span> |
---|
| 471 | |
---|
| 472 | <span class="nb">export</span> <span class="nv">CONTROL</span><span class="o">=</span>CONTROL |
---|
| 473 | |
---|
| 474 | cat ><span class="nv">$$$$</span><span class="o">{</span>CONTROL<span class="o">}</span><span class="s"><<EOF</span> |
---|
| 475 | <span class="s">$$control_content</span> |
---|
| 476 | <span class="s">EOF</span> |
---|
| 477 | |
---|
| 478 | |
---|
| 479 | submit.py --controlfile<span class="o">=</span><span class="nv">$$$$</span><span class="o">{</span>CONTROL<span class="o">}</span> --inputdir<span class="o">=</span>./work --outputdir<span class="o">=</span>./work <span class="m">1</span>> prot <span class="m">2</span>><span class="p">&</span><span class="m">1</span> |
---|
| 480 | |
---|
| 481 | <span class="k">if</span> <span class="o">[</span> <span class="nv">$?</span> -eq <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span> |
---|
| 482 | <span class="nv">l</span><span class="o">=</span><span class="m">0</span> |
---|
| 483 | <span class="k">for</span> muser in <span class="sb">`</span>grep -i MAILOPS <span class="nv">$$$$</span><span class="o">{</span>CONTROL<span class="o">}</span><span class="sb">`</span><span class="p">;</span> <span class="k">do</span> |
---|
| 484 | <span class="k">if</span> <span class="o">[</span> <span class="nv">$$$$</span><span class="o">{</span>l<span class="o">}</span> -gt <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span> |
---|
| 485 | mail -s flex.<span class="nv">$$$$</span><span class="o">{</span>HOST<span class="o">}</span>.<span class="nv">$$$$$$$$</span> <span class="nv">$$$$</span><span class="o">{</span>muser<span class="o">}</span> <prot |
---|
| 486 | <span class="k">fi</span> |
---|
| 487 | <span class="nv">l</span><span class="o">=</span><span class="k">$((</span><span class="nv">$$$$</span><span class="o">{</span>l<span class="o">}+</span><span class="m">1</span><span class="k">))</span> |
---|
| 488 | <span class="k">done</span> |
---|
| 489 | <span class="k">else</span> |
---|
| 490 | <span class="nv">l</span><span class="o">=</span><span class="m">0</span> |
---|
| 491 | <span class="k">for</span> muser in <span class="sb">`</span>grep -i MAILFAIL <span class="nv">$$$$</span><span class="o">{</span>CONTROL<span class="o">}</span><span class="sb">`</span><span class="p">;</span> <span class="k">do</span> |
---|
| 492 | <span class="k">if</span> <span class="o">[</span> <span class="nv">$$$$</span><span class="o">{</span>l<span class="o">}</span> -gt <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span> |
---|
| 493 | mail -s <span class="s2">"ERROR! flex.</span><span class="nv">$$$$</span><span class="s2">{HOST}.</span><span class="nv">$$$$$$$$</span><span class="s2">"</span> <span class="nv">$$$$</span><span class="o">{</span>muser<span class="o">}</span> <prot |
---|
| 494 | <span class="k">fi</span> |
---|
| 495 | <span class="nv">l</span><span class="o">=</span><span class="k">$((</span><span class="nv">$$$$</span><span class="o">{</span>l<span class="o">}+</span><span class="m">1</span><span class="k">))</span> |
---|
| 496 | <span class="k">done</span> |
---|
| 497 | <span class="k">fi</span> |
---|
| 498 | </pre></div> |
---|
| 499 | </div> |
---|
| 500 | </div></blockquote> |
---|
| 501 | <div class="toctree-wrapper compound"> |
---|
| 502 | </div> |
---|
| 503 | </div> |
---|
| 504 | </div> |
---|
| 505 | |
---|
| 506 | |
---|
| 507 | </div> |
---|
| 508 | |
---|
| 509 | </div> |
---|
| 510 | <footer> |
---|
| 511 | |
---|
| 512 | <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> |
---|
| 513 | |
---|
[5920b7f] | 514 | <a href="../output.html" class="btn btn-neutral float-right" title="Output data" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> |
---|
[0b00607] | 515 | |
---|
| 516 | |
---|
[5920b7f] | 517 | <a href="ecmwf_env.html" class="btn btn-neutral float-left" title="ECMWF user credential file ECMWF_ENV" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> |
---|
[0b00607] | 518 | |
---|
| 519 | </div> |
---|
| 520 | |
---|
| 521 | |
---|
| 522 | <hr/> |
---|
| 523 | |
---|
| 524 | <div role="contentinfo"> |
---|
| 525 | <p> |
---|
[5bee29a] | 526 | © Copyright 2020, Anne Philipp, Leopold Haimberger and Petra Seibert |
---|
[0b00607] | 527 | |
---|
| 528 | </p> |
---|
| 529 | </div> |
---|
| 530 | 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>. |
---|
| 531 | |
---|
| 532 | </footer> |
---|
| 533 | |
---|
| 534 | </div> |
---|
| 535 | </div> |
---|
| 536 | |
---|
| 537 | </section> |
---|
| 538 | |
---|
| 539 | </div> |
---|
| 540 | |
---|
| 541 | |
---|
| 542 | |
---|
| 543 | <script type="text/javascript"> |
---|
| 544 | jQuery(function () { |
---|
| 545 | SphinxRtdTheme.Navigation.enable(true); |
---|
| 546 | }); |
---|
| 547 | </script> |
---|
| 548 | |
---|
| 549 | |
---|
| 550 | |
---|
| 551 | |
---|
| 552 | |
---|
| 553 | |
---|
| 554 | </body> |
---|
| 555 | </html> |
---|