source: flex_extract.git/Documentation/html/Documentation/Input/templates.html @ ba99230

ctbtodev
Last change on this file since ba99230 was ba99230, checked in by Anne Philipp <anne.philipp@…>, 5 years ago

capitalize all directory names and adapt pathes in files

  • Property mode set to 100644
File size: 33.7 KB
Line 
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>Templates &mdash; flex_extract 7.1 alpha documentation</title>
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>
24        <script type="text/javascript" src="../../_static/jquery.js"></script>
25        <script type="text/javascript" src="../../_static/underscore.js"></script>
26        <script type="text/javascript" src="../../_static/doctools.js"></script>
27        <script type="text/javascript" src="../../_static/language_data.js"></script>
28        <script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
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" />
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" /> 
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">
66                7.1
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="../../installation.html">Installation</a></li>
93<li class="toctree-l1"><a class="reference internal" href="../../quick_start.html">Quick Start</a></li>
94<li class="toctree-l1"><a class="reference internal" href="../../ecmwf_data.html">ECMWF Data</a></li>
95<li class="toctree-l1 current"><a class="reference internal" href="../../documentation.html">Documentation</a><ul class="current">
96<li class="toctree-l2"><a class="reference internal" href="../overview.html">Overview</a></li>
97<li class="toctree-l2 current"><a class="reference internal" href="../input.html">Control &amp; 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 Jobscript <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 - <code class="docutils literal notranslate"><span class="pre">CONVERT2</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 Jobscript <code class="docutils literal notranslate"><span class="pre">job.ksh</span></code></a></li>
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>
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>
108<li class="toctree-l3 current"><a class="current reference internal" href="#">Templates</a><ul>
109<li class="toctree-l4"><a class="reference internal" href="#convert-nl">convert.nl</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="#compilejob-template">compilejob.template</a></li>
112<li class="toctree-l4"><a class="reference internal" href="#job-temp">job.temp</a></li>
113<li class="toctree-l4"><a class="reference internal" href="#job-template">job.template</a></li>
114</ul>
115</li>
116</ul>
117</li>
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 Coordinate</a></li>
121<li class="toctree-l2"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li>
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> &raquo;</li>
174       
175          <li><a href="../../documentation.html">Documentation</a> &raquo;</li>
176       
177          <li><a href="../input.html">Control &amp; Input Data</a> &raquo;</li>
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>
200<p>In <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> we use the Python package <code class="docutils literal notranslate"><span class="pre">genshi</span></code> (<a class="reference external" href="https://genshi.edgewall.org/">ref</a>) to create specific files from templates. It is the most efficient way to be able to quickly adapt e.g. the job scripts send to the ECMWF batch queue system or the namelist file für the Fortran program without the need to change the program code.</p>
201<div class="admonition note">
202<p class="first admonition-title">Note</p>
203<p class="last">Usually it is not recommended to change anything in these files without being able to understand the effects.</p>
204</div>
205<p>Each template file has its content framework and keeps so-called placeholder variables in the positions where the values needs 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 Kornshell job scripts, where (environment) variables are used the <code class="docutils literal notranslate"><span class="pre">$</span></code> sign needs to be doubled to <cite>escape</cite> and keep a single <code class="docutils literal notranslate"><span class="pre">$</span></code> sign as it is.</p>
206<p>The following templates are used and can be found in directory <code class="docutils literal notranslate"><span class="pre">flex_extract_vX.X/Templates</span></code>:</p>
207<div class="section" id="convert-nl">
208<h2>convert.nl<a class="headerlink" href="#convert-nl" title="Permalink to this headline"></a></h2>
209<blockquote>
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> which will be read by <code class="docutils literal notranslate"><span class="pre">CONVERT2</span></code>.
211It contains all the parameters <code class="docutils literal notranslate"><span class="pre">CONVERT2</span></code> needs.</p>
212<div class="highlight-fortran notranslate"><div class="highlight"><pre><span></span>&amp;NAMGEN
213  maxl = $maxl,
214  maxb = $maxb,
215  mlevel = $mlevel,
216  mlevelist = &quot;$mlevelist&quot;,
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">
236<h2>ecmwf_env.template<a class="headerlink" href="#ecmwf-env-template" title="Permalink to this headline"></a></h2>
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>
240ECGID <span class="nv">$user_group</span>
241GATEWAY <span class="nv">$gateway_name</span>
242DESTINATION <span class="nv">$destination_name</span>
243</pre></div>
244</div>
245</div></blockquote>
246</div>
247<div class="section" id="compilejob-template">
248<h2>compilejob.template<a class="headerlink" href="#compilejob-template" title="Permalink to this headline"></a></h2>
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>
251<p>At the beginning some directives for the batch system are set.
252On 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>.
253For 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 and can be view at <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">Environment requirements</span></a> are prepared by loading the corresponding modules depending in 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. Including the generation of the root directory, putting files in place, compiling the Fortran program and sending a log file via email.</p>
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 eccodes
287  module unload python
288  module unload emos
289  module load python3
290  module load eccodes/2.12.0
291  module load emos/455-r64
292  <span class="nb">export</span> <span class="nv">FLEXPART_ROOT_SCRIPTS</span><span class="o">=</span><span class="nv">$fp_root_scripts</span>
293  <span class="nb">export</span> <span class="nv">MAKEFILE</span><span class="o">=</span><span class="nv">$makefile</span>
294  <span class="p">;;</span>
295  *cca*<span class="o">)</span>
296  module unload python
297  module switch PrgEnv-cray PrgEnv-intel
298  module load python3
299  module load eccodes/2.12.0
300  module load emos
301  <span class="nb">echo</span> <span class="nv">$$</span><span class="o">{</span>GROUP<span class="o">}</span>
302  <span class="nb">echo</span> <span class="nv">$$</span><span class="o">{</span>HOME<span class="o">}</span>
303  <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">&#39;{print $1, $2, $3, $4}&#39;</span>
304  <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">&#39;{print $4}&#39;</span><span class="sb">`</span>
305  <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>
306  <span class="nb">export</span> <span class="nv">FLEXPART_ROOT_SCRIPTS</span><span class="o">=</span><span class="nv">$fp_root_scripts</span>
307  <span class="nb">export</span> <span class="nv">MAKEFILE</span><span class="o">=</span><span class="nv">$makefile</span>
308  <span class="p">;;</span>
309<span class="k">esac</span>
310
311mkdir -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>
312<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>
313tar -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
314<span class="nb">cd</span> source/fortran
315<span class="se">\r</span>m *.o *.mod <span class="nv">$fortran_program</span>
316make -f <span class="nv">$$</span><span class="o">{</span>MAKEFILE<span class="o">}</span> &gt;flexcompile <span class="m">2</span>&gt;flexcompile
317
318ls -l <span class="nv">$fortran_program</span> &gt;&gt;flexcompile
319<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>
320  <span class="nb">echo</span> <span class="s1">&#39;SUCCESS!&#39;</span> &gt;&gt;flexcompile
321  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> &lt;flexcompile
322<span class="k">else</span>
323  <span class="nb">echo</span> Environment: &gt;&gt;flexcompile
324  env &gt;&gt; flexcompile
325  mail -s <span class="s2">&quot;ERROR! flexcompile.</span><span class="nv">$$</span><span class="s2">{HOST}.</span><span class="nv">$$$$</span><span class="s2">&quot;</span> <span class="nv">$$</span><span class="o">{</span>USER<span class="o">}</span> &lt;flexcompile
326<span class="k">fi</span>
327</pre></div>
328</div>
329</div></blockquote>
330</div>
331<div class="section" id="job-temp">
332<h2>job.temp<a class="headerlink" href="#job-temp" title="Permalink to this headline"></a></h2>
333<blockquote>
334<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>
335<p>At the beginning some directives for the batch system are set.
336On 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>.
337For 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 and can be view at <a class="reference external" href="https://confluence.ecmwf.int/display/UDOC/Batch+environment%3A++PBS">PBS directives</a>.</p>
338<p>The software environment requirements mentioned in <a class="reference internal" href="../../installation.html#ref-requirements"><span class="std std-ref">Environment requirements</span></a> are prepared by loading the corresponding modules depending in the <code class="docutils literal notranslate"><span class="pre">HOST</span></code>. It should not be changed without testing.</p>
339<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 via email.</p>
340<div class="highlight-ksh notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/ksh</span>
341
342<span class="c1"># ON ECGB:</span>
343<span class="c1"># start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE  on gateway server</span>
344<span class="c1"># start with sbatch NAME_OF_THIS_FILE directly on machine</span>
345
346<span class="c1">#SBATCH --workdir=/scratch/ms/at/km4a</span>
347<span class="c1">#SBATCH --qos=normal</span>
348<span class="c1">#SBATCH --job-name=flex_ecmwf</span>
349<span class="c1">#SBATCH --output=flex_ecmwf.%j.out</span>
350<span class="c1">#SBATCH --error=flex_ecmwf.%j.out</span>
351<span class="c1">#SBATCH --mail-type=FAIL</span>
352<span class="c1">#SBATCH --time=12:00:00</span>
353
354<span class="c1">## CRAY specific batch requests</span>
355<span class="c1">##PBS -N flex_ecmwf</span>
356<span class="c1">##PBS -q np</span>
357<span class="c1">##PBS -S /usr/bin/ksh</span>
358<span class="c1">## -o /scratch/ms/at/km4a/flex_ecmwf.$${PBS_JOBID}.out</span>
359<span class="c1">## job output is in .ecaccess_DO_NOT_REMOVE</span>
360<span class="c1">##PBS -j oe</span>
361<span class="c1">##PBS -V</span>
362<span class="c1">##PBS -l EC_threads_per_task=24</span>
363<span class="c1">##PBS -l EC_memory_per_task=32000MB</span>
364
365<span class="nb">set</span> -x
366<span class="nb">export</span> <span class="nv">VERSION</span><span class="o">=</span><span class="m">7</span>.1
367<span class="k">case</span> <span class="nv">$$</span><span class="o">{</span>HOST<span class="o">}</span> in
368  *ecg*<span class="o">)</span>
369  module unload grib_api
370  module unload eccodes
371  module unload python
372  module unload emos
373  module load python3
374  module load eccodes/2.12.0
375  module load emos/455-r64
376  <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">$$</span><span class="o">{</span>HOME<span class="o">}</span>/flex_extract_v7.1/source/python
377  <span class="p">;;</span>
378  *cca*<span class="o">)</span>
379  module unload python
380  module switch PrgEnv-cray PrgEnv-intel
381  module load python3
382  module load eccodes/2.12.0
383  module load emos
384  <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>
385  <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">$$</span><span class="o">{</span>HOME<span class="o">}</span>/flex_extract_v7.1/source/python
386  <span class="p">;;</span>
387<span class="k">esac</span>
388
389<span class="nb">cd</span> <span class="nv">$$</span><span class="o">{</span>SCRATCH<span class="o">}</span>
390mkdir -p python<span class="nv">$$$$</span>
391<span class="nb">cd</span> python<span class="nv">$$$$</span>
392
393<span class="nb">export</span> <span class="nv">CONTROL</span><span class="o">=</span>CONTROL
394
395cat &gt;<span class="nv">$$</span><span class="o">{</span>CONTROL<span class="o">}</span><span class="s">&lt;&lt;EOF</span>
396<span class="s">$control_content</span>
397<span class="s">EOF</span>
398
399
400submit.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>&gt; prot <span class="m">2</span>&gt;<span class="p">&amp;</span><span class="m">1</span>
401
402<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>
403  <span class="nv">l</span><span class="o">=</span><span class="m">0</span>
404  <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>
405      <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>
406         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> &lt;prot
407      <span class="k">fi</span>
408      <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>
409  <span class="k">done</span>
410<span class="k">else</span>
411  <span class="nv">l</span><span class="o">=</span><span class="m">0</span>
412  <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>
413      <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>
414         mail -s <span class="s2">&quot;ERROR! flex.</span><span class="nv">$$</span><span class="s2">{HOST}.</span><span class="nv">$$$$</span><span class="s2">&quot;</span> <span class="nv">$$</span><span class="o">{</span>muser<span class="o">}</span> &lt;prot
415      <span class="k">fi</span>
416      <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>
417  <span class="k">done</span>
418<span class="k">fi</span>
419</pre></div>
420</div>
421</div></blockquote>
422</div>
423<div class="section" id="job-template">
424<h2>job.template<a class="headerlink" href="#job-template" title="Permalink to this headline"></a></h2>
425<blockquote>
426<div><p>This template is used to create the template for the execution job script <code class="docutils literal notranslate"><span class="pre">job.temp</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">job.temp</span></code>. A couple of 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>
427<div class="highlight-ksh notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/ksh</span>
428
429<span class="c1"># ON ECGB:</span>
430<span class="c1"># start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE  on gateway server</span>
431<span class="c1"># start with sbatch NAME_OF_THIS_FILE directly on machine</span>
432
433<span class="c1">#SBATCH --workdir=/scratch/ms/$usergroup/$username</span>
434<span class="c1">#SBATCH --qos=normal</span>
435<span class="c1">#SBATCH --job-name=flex_ecmwf</span>
436<span class="c1">#SBATCH --output=flex_ecmwf.%j.out</span>
437<span class="c1">#SBATCH --error=flex_ecmwf.%j.out</span>
438<span class="c1">#SBATCH --mail-type=FAIL</span>
439<span class="c1">#SBATCH --time=12:00:00</span>
440
441<span class="c1">## CRAY specific batch requests</span>
442<span class="c1">##PBS -N flex_ecmwf</span>
443<span class="c1">##PBS -q np</span>
444<span class="c1">##PBS -S /usr/bin/ksh</span>
445<span class="c1">## -o /scratch/ms/$usergroup/$username/flex_ecmwf.$$$${PBS_JOBID}.out</span>
446<span class="c1">## job output is in .ecaccess_DO_NOT_REMOVE</span>
447<span class="c1">##PBS -j oe</span>
448<span class="c1">##PBS -V</span>
449<span class="c1">##PBS -l EC_threads_per_task=24</span>
450<span class="c1">##PBS -l EC_memory_per_task=32000MB</span>
451
452<span class="nb">set</span> -x
453<span class="nb">export</span> <span class="nv">VERSION</span><span class="o">=</span><span class="nv">$version_number</span>
454<span class="k">case</span> <span class="nv">$$$$</span><span class="o">{</span>HOST<span class="o">}</span> in
455  *ecg*<span class="o">)</span>
456  module unload grib_api
457  module unload eccodes
458  module unload python
459  module unload emos
460  module load python3
461  module load eccodes/2.12.0
462  module load emos/455-r64
463  <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>
464  <span class="p">;;</span>
465  *cca*<span class="o">)</span>
466  module unload python
467  module switch PrgEnv-cray PrgEnv-intel
468  module load python3
469  module load eccodes/2.12.0
470  module load emos
471  <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>
472  <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>
473  <span class="p">;;</span>
474<span class="k">esac</span>
475
476<span class="nb">cd</span> <span class="nv">$$$$</span><span class="o">{</span>SCRATCH<span class="o">}</span>
477mkdir -p python<span class="nv">$$$$$$$$</span>
478<span class="nb">cd</span> python<span class="nv">$$$$$$$$</span>
479
480<span class="nb">export</span> <span class="nv">CONTROL</span><span class="o">=</span>CONTROL
481
482cat &gt;<span class="nv">$$$$</span><span class="o">{</span>CONTROL<span class="o">}</span><span class="s">&lt;&lt;EOF</span>
483<span class="s">$$control_content</span>
484<span class="s">EOF</span>
485
486
487submit.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>&gt; prot <span class="m">2</span>&gt;<span class="p">&amp;</span><span class="m">1</span>
488
489<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>
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 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>
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 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> &lt;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">else</span>
498  <span class="nv">l</span><span class="o">=</span><span class="m">0</span>
499  <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>
500      <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>
501         mail -s <span class="s2">&quot;ERROR! flex.</span><span class="nv">$$$$</span><span class="s2">{HOST}.</span><span class="nv">$$$$$$$$</span><span class="s2">&quot;</span> <span class="nv">$$$$</span><span class="o">{</span>muser<span class="o">}</span> &lt;prot
502      <span class="k">fi</span>
503      <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>
504  <span class="k">done</span>
505<span class="k">fi</span>
506</pre></div>
507</div>
508</div></blockquote>
509<div class="toctree-wrapper compound">
510</div>
511</div>
512</div>
513
514
515           </div>
516           
517          </div>
518          <footer>
519 
520    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
521     
522        <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>
523     
524     
525        <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>
526     
527    </div>
528 
529
530  <hr/>
531
532  <div role="contentinfo">
533    <p>
534        &copy; Copyright 2019, Anne Philipp and Leopold Haimberger
535
536    </p>
537  </div>
538  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>.
539
540</footer>
541
542        </div>
543      </div>
544
545    </section>
546
547  </div>
548 
549
550
551  <script type="text/javascript">
552      jQuery(function () {
553          SphinxRtdTheme.Navigation.enable(true);
554      });
555  </script>
556
557 
558 
559   
560   
561
562</body>
563</html>
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG