source: flex_extract.git/Documentation/html/installation.html @ 6bc4b42

ctbtodev
Last change on this file since 6bc4b42 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: 70.6 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>Installation &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="Quick Start" href="quick_start.html" />
42    <link rel="prev" title="&lt;no title&gt;" href="index.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 current"><a class="current reference internal" href="#">Installation</a><ul>
93<li class="toctree-l2"><a class="reference internal" href="#registration-at-ecmwf">Registration at ECMWF</a></li>
94<li class="toctree-l2"><a class="reference internal" href="#agree-on-licences-for-public-datasets">Agree on licences for public datasets</a></li>
95<li class="toctree-l2"><a class="reference internal" href="#download-flex-extract">Download <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code></a></li>
96<li class="toctree-l2"><a class="reference internal" href="#environment-requirements">Environment requirements</a></li>
97<li class="toctree-l2"><a class="reference internal" href="#installation-of-flex-extract">Installation of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code></a><ul>
98<li class="toctree-l3"><a class="reference internal" href="#remote-mode">Remote mode</a><ul>
99<li class="toctree-l4"><a class="reference internal" href="#remote-environment-requirements">Remote environment requirements</a></li>
100<li class="toctree-l4"><a class="reference internal" href="#prepare-remote-environment">Prepare remote environment</a></li>
101<li class="toctree-l4"><a class="reference internal" href="#remote-installation">Remote installation</a></li>
102</ul>
103</li>
104<li class="toctree-l3"><a class="reference internal" href="#gateway-mode">Gateway mode</a><ul>
105<li class="toctree-l4"><a class="reference internal" href="#gateway-environment-requirements">Gateway environment requirements</a></li>
106<li class="toctree-l4"><a class="reference internal" href="#prepare-gateway-environment">Prepare gateway environment</a></li>
107<li class="toctree-l4"><a class="reference internal" href="#test-gateway-environment">Test gateway environment</a></li>
108<li class="toctree-l4"><a class="reference internal" href="#gateway-installation">Gateway installation</a></li>
109</ul>
110</li>
111<li class="toctree-l3"><a class="reference internal" href="#local-mode">Local mode</a><ul>
112<li class="toctree-l4"><a class="reference internal" href="#local-environment-requirements">Local environment requirements</a></li>
113<li class="toctree-l4"><a class="reference internal" href="#prepare-local-environment">Prepare local environment</a></li>
114<li class="toctree-l4"><a class="reference internal" href="#test-local-environment">Test local environment</a></li>
115<li class="toctree-l4"><a class="reference internal" href="#local-installation">Local installation</a></li>
116</ul>
117</li>
118</ul>
119</li>
120<li class="toctree-l2"><a class="reference internal" href="#flex-extract-in-combination-with-flexpart"><code class="docutils literal notranslate"><span class="pre">Flex_extract</span></code> in combination with <code class="docutils literal notranslate"><span class="pre">FLEXPART</span></code></a></li>
121<li class="toctree-l2"><a class="reference internal" href="#test-installation">Test installation</a><ul>
122<li class="toctree-l3"><a class="reference internal" href="#fortran-program-test">Fortran program test</a></li>
123<li class="toctree-l3"><a class="reference internal" href="#full-test">Full test</a></li>
124</ul>
125</li>
126</ul>
127</li>
128<li class="toctree-l1"><a class="reference internal" href="quick_start.html">Quick Start</a></li>
129<li class="toctree-l1"><a class="reference internal" href="ecmwf_data.html">ECMWF Data</a></li>
130<li class="toctree-l1"><a class="reference internal" href="documentation.html">Documentation</a></li>
131<li class="toctree-l1"><a class="reference internal" href="evaluation.html">Evaluation</a></li>
132<li class="toctree-l1"><a class="reference internal" href="dev_guide.html">Developer Guide</a></li>
133<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a></li>
134<li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li>
135<li class="toctree-l1"><a class="reference internal" href="Support/faq.html">FAQ - Frequently asked questions</a></li>
136<li class="toctree-l1"><a class="reference internal" href="authors.html">Developer Team</a></li>
137</ul>
138
139           
140         
141        </div>
142      </div>
143    </nav>
144
145    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
146
147     
148      <nav class="wy-nav-top" aria-label="top navigation">
149       
150          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
151          <a href="index.html">flex_extract</a>
152       
153      </nav>
154
155
156      <div class="wy-nav-content">
157       
158        <div class="rst-content">
159       
160         
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176<div role="navigation" aria-label="breadcrumbs navigation">
177
178  <ul class="wy-breadcrumbs">
179   
180      <li><a href="index.html">Docs</a> &raquo;</li>
181       
182      <li>Installation</li>
183   
184   
185      <li class="wy-breadcrumbs-aside">
186       
187           
188            <a href="_sources/installation.rst.txt" rel="nofollow"> View page source</a>
189         
190       
191      </li>
192   
193  </ul>
194
195 
196  <hr/>
197</div>
198          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
199           <div itemprop="articleBody">
200           
201  <div class="section" id="installation">
202<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
203<div class="toctree-wrapper compound">
204</div>
205<p><code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> is a software package which contains a mix of Python and Shell scripts as well as a Fortran program. These components rely on a couple of third party libraries which need to be prepared first before starting the installation process. For now, the software is only tested for a Linux/Unix environment. Feel free to try it out on other platforms.</p>
206<p>Start with the decision of which <a class="reference external" href="Ecmwf/access">user group</a> you belong to and follow the instructions at <a class="reference internal" href="#ref-registration"><span class="std std-ref">Registration at ECMWF</span></a> to get an account at ECMWF. Considering your user group and the method of applying <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> there appear to be 4 application modes:</p>
207<ul class="simple">
208<li>Remote (for member state users only) <a class="reference internal" href="#ref-remote-mode"><span class="std std-ref">[installation]</span></a></li>
209<li>Gateway (for member state users only) <a class="reference internal" href="#ref-gateway-mode"><span class="std std-ref">[installation]</span></a></li>
210<li>Local member <a class="reference internal" href="#ref-local-mode"><span class="std std-ref">[installation]</span></a></li>
211<li>Local public <a class="reference internal" href="#ref-local-mode"><span class="std std-ref">[installation]</span></a></li>
212</ul>
213<p>More information can be found in <a class="reference internal" href="Documentation/Overview/app_modes.html"><span class="doc">Application Modes</span></a>.</p>
214<div class="admonition note">
215<p class="first admonition-title">Note</p>
216<p class="last">If you encounter any problems in the installation process, you can ask for <a class="reference internal" href="support.html"><span class="doc">Support</span></a>.</p>
217</div>
218<div class="section" id="registration-at-ecmwf">
219<span id="ref-registration"></span><h2>Registration at ECMWF<a class="headerlink" href="#registration-at-ecmwf" title="Permalink to this headline"></a></h2>
220<p>Decide which user group you belong to and follow the instructions for registration:</p>
221<dl class="docutils">
222<dt><strong>Member state user</strong>:</dt>
223<dd>To get a member-state user account, users have to be a resident of a <a class="reference external" href="https://www.ecmwf.int/en/about/who-we-are/member-states">member state</a>. In that case, you can contact your <a class="reference external" href="https://www.ecmwf.int/en/about/contact-us/computing-representatives">Computing Representative</a> for granting access. If you would like to use the local application mode to retrieve <strong>ERA5</strong> data you’d have to register at the <a class="reference external" href="https://cds.climate.copernicus.eu/user/register">Copernicus Climate Data Store</a> also.</dd>
224<dt><strong>Public user</strong>:</dt>
225<dd><p class="first">To be able to download public datasets with <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> such as <strong>ERA-Interim</strong> and <strong>CERA-20C</strong> (<strong>ERA5</strong> is not supported via ECMWF Web API anymore), the public user has to create an account at ECMWF.
226Use the registration at the ECMWF website by filling out this <cite>registration form</cite>.</p>
227<div class="last admonition note">
228<p class="first admonition-title">Note</p>
229<p class="last">In the future retrievement of <em>ERA5</em> will be possible via the CDS API for public users also. Then a registration at the <a class="reference external" href="https://cds.climate.copernicus.eu/user/register">Copernicus Climate Data Store</a> is needed in addition.</p>
230</div>
231</dd>
232</dl>
233</div>
234<div class="section" id="agree-on-licences-for-public-datasets">
235<span id="ref-licence"></span><h2>Agree on licences for public datasets<a class="headerlink" href="#agree-on-licences-for-public-datasets" title="Permalink to this headline"></a></h2>
236<p>Each public dataset which is intended to be downloaded by <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> has its own licence which has to be accepted, regardless of the user group.</p>
237<p>For the <em>ERA-Interim</em> and <em>CERA-20C</em> datasets this can be done at the ECMWF website <a class="reference external" href="https://confluence.ecmwf.int/display/WEBAPI/Available+ECMWF+Public+Datasets">Available ECMWF Public Datasets</a>. Log in and follow the licence links on the right side for each dataset and accept it.</p>
238<p>For the <em>ERA5</em> dataset this has to be done at the <a class="reference external" href="https://cds.climate.copernicus.eu/cdsapp#!/search?type=dataset">Climate Data Store (CDS) website</a>. Log in with your credentials and then select on the left panel the product type “Reanalysis” for finding <em>ERA5</em> datasets. Then follow the link of a title with <em>ERA5</em> (anyone) to the full dataset record, click on tab “Download data” and scroll down. There is a section “Terms of use” where you have to click the <span class="underline">Accept terms</span> button.</p>
239</div>
240<div class="section" id="download-flex-extract">
241<span id="ref-download"></span><h2>Download <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code><a class="headerlink" href="#download-flex-extract" title="Permalink to this headline"></a></h2>
242<p>There are 2 options to download <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>:</p>
243<dl class="docutils">
244<dt>tar ball</dt>
245<dd><p class="first">You can download the latest prepared release tar ball from the <a class="reference external" href="https://www.flexpart.eu/downloads">download section</a>
246of our <code class="docutils literal notranslate"><span class="pre">FLEXPART</span></code> community website and then untar the file. Substitute
247the <strong>&lt;ID&gt;</strong> in the <code class="docutils literal notranslate"><span class="pre">wget</span></code> command with the ID-number of the <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>
248release tar ball in the list of downloads at the community website.</p>
249<div class="last highlight-bash notranslate"><div class="highlight"><pre><span></span>wget https://www.flexpart.eu/downloads/&lt;ID&gt;
250tar -xvf &lt;flex_extract_vX.X.tar&gt;
251</pre></div>
252</div>
253</dd>
254<dt>git repo</dt>
255<dd><p class="first">Or you can clone the current release version from our git repository master branch.</p>
256<div class="last highlight-bash notranslate"><div class="highlight"><pre><span></span>$ git clone https://www.flexpart.eu/gitmob/flexpart
257</pre></div>
258</div>
259</dd>
260</dl>
261</div>
262<div class="section" id="environment-requirements">
263<span id="ref-requirements"></span><h2>Environment requirements<a class="headerlink" href="#environment-requirements" title="Permalink to this headline"></a></h2>
264<p>This is a list of the general environment requirements for <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>.
265What is required exactly for each application mode will be described in the specifc installation section.</p>
266<p>To run the python part of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> a <a class="reference external" href="https://docs.python.org/3/">Python 3</a> environment is needed.
267We tested <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> with a normal Linux Python package distribution and Anaconda Python.
268Except for <a class="reference external" href="https://www.python.org/downloads/">Python3</a> all are python packages which can be installed via <code class="docutils literal notranslate"><span class="pre">pip</span></code>.</p>
269<ul class="simple">
270<li><a class="reference external" href="https://www.python.org/downloads/">Python3</a> or <a class="reference external" href="https://www.anaconda.com/distribution/#download-section">Anaconda Python3</a></li>
271<li><a class="reference external" href="http://www.numpy.org/">numpy</a></li>
272<li><a class="reference external" href="https://confluence.ecmwf.int/display/WEBAPI/ECMWF+Web+API+Home">ecmwf-api-client</a> (Web Interface to ECMWF servers for datasets except ERA5)</li>
273<li><a class="reference external" href="https://cds.climate.copernicus.eu/api-how-to">cdsapi</a> (Web Interface to <a class="reference external" href="https://climate.copernicus.eu/">C3S</a> servers for ERA5)</li>
274<li><a class="reference external" href="https://genshi.edgewall.org/">genshi</a></li>
275<li><a class="reference external" href="https://packages.debian.org/sid/python3-eccodes">eccodes for python</a></li>
276</ul>
277<p>For the Fortran part of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> we need the following distribution packages:</p>
278<ul class="simple">
279<li><a class="reference external" href="https://gcc.gnu.org/wiki/GFortran">gfortran</a></li>
280<li><a class="reference external" href="http://www.fftw.org">fftw3</a></li>
281<li><a class="reference external" href="https://software.ecmwf.int/wiki/display/ECC">eccodes</a></li>
282<li><a class="reference external" href="https://software.ecmwf.int/wiki/display/EMOS/Emoslib">emoslib</a></li>
283</ul>
284</div>
285<div class="section" id="installation-of-flex-extract">
286<span id="ref-install-fe"></span><h2>Installation of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code><a class="headerlink" href="#installation-of-flex-extract" title="Permalink to this headline"></a></h2>
287<p>The actual installation of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> will be done by executing a <cite>Shell</cite> script called <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code>.
288It defines some parameters and calls a Python script by giving the parameters as command line arguments.
289More information on the script and its parameters can be found at <a class="reference internal" href="Documentation/Input/setup.html"><span class="doc">The Installation Script - setup.sh</span></a>.</p>
290<p>For each application mode installation section we describe the requirements for the explicit
291environment and how it is installed, test if it works and how the actual <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>
292installation has to be done. At the users local side not all software has to be present for <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>.</p>
293<div class="section" id="remote-mode">
294<span id="ref-remote-mode"></span><h3>Remote mode<a class="headerlink" href="#remote-mode" title="Permalink to this headline"></a></h3>
295<div class="section" id="remote-environment-requirements">
296<span id="ref-req-remote"></span><h4>Remote environment requirements<a class="headerlink" href="#remote-environment-requirements" title="Permalink to this headline"></a></h4>
297<p>The environment for <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> on ECMWF servers has to provide these
298software packages and libraries:</p>
299<table border="1" class="docutils">
300<colgroup>
301<col width="61%" />
302<col width="39%" />
303</colgroup>
304<tbody valign="top">
305<tr class="row-odd"><td>Python part</td>
306<td>Fortran part</td>
307</tr>
308<tr class="row-even"><td><ul class="first last simple">
309<li><a class="reference external" href="https://www.python.org/downloads/">Python3</a></li>
310<li><a class="reference external" href="http://www.numpy.org/">numpy</a></li>
311<li><a class="reference external" href="https://genshi.edgewall.org/">genshi</a></li>
312<li><a class="reference external" href="https://packages.debian.org/sid/python3-eccodes">eccodes for python</a></li>
313</ul>
314</td>
315<td><ul class="first last simple">
316<li><a class="reference external" href="https://gcc.gnu.org/wiki/GFortran">gfortran</a></li>
317<li><a class="reference external" href="http://www.fftw.org">fftw3</a></li>
318<li><a class="reference external" href="https://software.ecmwf.int/wiki/display/ECC">eccodes</a></li>
319<li><a class="reference external" href="https://software.ecmwf.int/wiki/display/EMOS/Emoslib">emoslib</a></li>
320</ul>
321</td>
322</tr>
323</tbody>
324</table>
325</div>
326<div class="section" id="prepare-remote-environment">
327<span id="ref-prep-remote"></span><h4>Prepare remote environment<a class="headerlink" href="#prepare-remote-environment" title="Permalink to this headline"></a></h4>
328<p>The environment on the ECMWF server (such as <em>ecgate</em> or <em>cca</em>) is already
329prepared. ECMWF server provide all libraries via a module system which is
330going to be selected by <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> automatically.</p>
331</div>
332<div class="section" id="remote-installation">
333<span id="ref-install-remote"></span><h4>Remote installation<a class="headerlink" href="#remote-installation" title="Permalink to this headline"></a></h4>
334<p>First, log in on one of the ECMWF Linux server, such as <em>ecgate</em> or <em>cca/ccb</em>.
335Substitute <em>&lt;ecuid&gt;</em> with your ECMWF user name:</p>
336<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ssh -X &lt;ecuid&gt;@ecaccess.ecmwf.int
337</pre></div>
338</div>
339<p>This will lead to the following output on the command line, asking for your
340password:</p>
341<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>Authorized access only.
342
343***************************************************************
344   For further information, read the ECaccess documentation at:
345
346   https://software.ecmwf.int/wiki/display/ECAC/ECaccess+Home
347
348   You can also use ECaccess to load &amp; download files from your
349   EChome, ECscratch or ECfs directories using the ECaccess FTP
350   server:
351
352   ftp://uid@ecaccess.ecmwf.int/
353
354   Please note you must use your UID and ActivID code to login!
355***************************************************************
356
357&lt;ecuid&gt;@131.130.157.5&#39;s password: ***
358Select hostname (ecgate, cca, ccb) [ecgate]: ecgate
359
360[&lt;ecuid&gt;@ecgb11 ~]$
361</pre></div>
362</div>
363<p>Then, copy the <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> tar ball (from section <a class="reference internal" href="#ref-download"><span class="std std-ref">Download flex_extract</span></a>)
364to the <code class="docutils literal notranslate"><span class="pre">$HOME</span></code> directory of the ECMWF Linux server via <code class="docutils literal notranslate"><span class="pre">scp</span></code>.
365Substitute the <em>&lt;localuser&gt;</em> and <em>&lt;server.edu&gt;</em> placeholders with your credentials.
366Untar the file and change into the <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> root directory.</p>
367<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>scp &lt;localuser&gt;@&lt;server.edu&gt;:/path/to/tarfile/flex_extract_vX.X.tar.gz  <span class="nv">$HOME</span>/
368<span class="nb">cd</span> <span class="nv">$HOME</span>
369tar xvf flex_extract_vX.X.tar.gz
370<span class="nb">cd</span> flex_extract_vX.X
371</pre></div>
372</div>
373<p>On these ECMWF servers, it is not necessary to prepare the environment or the
374<code class="docutils literal notranslate"><span class="pre">Makefile</span></code> for the Fortran program (<code class="docutils literal notranslate"><span class="pre">CONVERT2</span></code>) as described above.
375All third party libraries are available from a module system. The <code class="docutils literal notranslate"><span class="pre">Makefile</span></code>
376is optimized for ECMWF servers and the compilation
377script <code class="docutils literal notranslate"><span class="pre">compilejob.ksh</span></code>, which will be submitted by <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> to the
378batch job queue at ECMWF, does load all relevant modules from the ECMWF’s module system.</p>
379<p>So there is just the need to execute the <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> script from the
380<code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> root directory for installation.
381Before executing it, it is necessary to adapt some parameters from <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code>
382described in <a class="reference internal" href="Documentation/Input/setup.html"><span class="doc">The Installation Script - setup.sh</span></a>.</p>
383<p>Open <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> with your editor and adapt the values:</p>
384<table border="1" class="docutils">
385<colgroup>
386<col width="50%" />
387<col width="50%" />
388</colgroup>
389<tbody valign="top">
390<tr class="row-odd"><td>Take this for target = <strong>ectrans</strong></td>
391<td>Take this for target = <strong>cca</strong></td>
392</tr>
393<tr class="row-even"><td><div class="first last highlight-bash notranslate"><div class="highlight"><pre><span></span>...
394<span class="c1"># -----------------------------------------</span>
395<span class="c1"># AVAILABLE COMMANDLINE ARGUMENTS TO SET</span>
396<span class="c1">#</span>
397<span class="c1"># THE USER HAS TO SPECIFY THESE PARAMETER</span>
398<span class="c1">#</span>
399<span class="nv">TARGET</span><span class="o">=</span><span class="s1">&#39;ecgate&#39;</span>
400<span class="nv">MAKEFILE</span><span class="o">=</span><span class="s1">&#39;Makefile.gfortran&#39;</span>
401<span class="nv">ECUID</span><span class="o">=</span><span class="s1">&#39;uid&#39;</span>
402<span class="nv">ECGID</span><span class="o">=</span><span class="s1">&#39;gid&#39;</span>
403<span class="nv">GATEWAY</span><span class="o">=</span>None
404<span class="nv">DESTINATION</span><span class="o">=</span>None
405<span class="nv">INSTALLDIR</span><span class="o">=</span>None
406<span class="nv">JOB_TEMPLATE</span><span class="o">=</span><span class="s1">&#39;job.template&#39;</span>
407<span class="nv">CONTROLFILE</span><span class="o">=</span><span class="s1">&#39;CONTROL_EA5&#39;</span>
408...
409</pre></div>
410</div>
411</td>
412<td><div class="first last highlight-bash notranslate"><div class="highlight"><pre><span></span>...
413<span class="c1"># -----------------------------------------</span>
414<span class="c1"># AVAILABLE COMMANDLINE ARGUMENTS TO SET</span>
415<span class="c1">#</span>
416<span class="c1"># THE USER HAS TO SPECIFY THESE PARAMETER</span>
417<span class="c1">#</span>
418<span class="nv">TARGET</span><span class="o">=</span><span class="s1">&#39;cca&#39;</span>
419<span class="nv">MAKEFILE</span><span class="o">=</span><span class="s1">&#39;Makefile.CRAY&#39;</span>
420<span class="nv">ECUID</span><span class="o">=</span><span class="s1">&#39;uid&#39;</span>
421<span class="nv">ECGID</span><span class="o">=</span><span class="s1">&#39;gid&#39;</span>
422<span class="nv">GATEWAY</span><span class="o">=</span>None
423<span class="nv">DESTINATION</span><span class="o">=</span>None
424<span class="nv">INSTALLDIR</span><span class="o">=</span><span class="s1">&#39;&#39;</span>
425<span class="nv">JOB_TEMPLATE</span><span class="o">=</span><span class="s1">&#39;job.template&#39;</span>
426<span class="nv">CONTROLFILE</span><span class="o">=</span><span class="s1">&#39;CONTROL_EA5&#39;</span>
427...
428</pre></div>
429</div>
430</td>
431</tr>
432</tbody>
433</table>
434<p><span class="underline">Please substitute the values of ECUID and ECGID
435with your own credentials and settings.</span></p>
436<div class="admonition note">
437<p class="first admonition-title">Note</p>
438<p class="last">If a local gateway server is available the transfer of files could be done
439via the <code class="docutils literal notranslate"><span class="pre">ECaccess</span></code> commands. Therefore a valid <em>GATEWAY</em> and <em>DESTINATION</em>
440have to be present and should be set in the <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> file.</p>
441</div>
442<p>Afterwards, type:</p>
443<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>module load python3
444./setup.sh
445</pre></div>
446</div>
447<p>to start the installation. You should see the following output at the command line.</p>
448<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Output of setup.sh</span>
449Create tarball ...
450Job compilation script has been submitted to ecgate <span class="k">for</span> installation in <span class="si">${</span><span class="nv">HOME</span><span class="si">}</span>/flex_extract_vX.X
451You should get an email with subject <span class="s2">&quot;flexcompile&quot;</span> within the next few minutes!
452</pre></div>
453</div>
454<p>The email content should look like this with a “SUCCESS” statement in the last line:</p>
455<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp phgrreal.f
456gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp grphreal.f
457gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp ftrafo.f
458gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -I. -I/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/include -g rwGRIB2.f90
459gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -I. -I/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/include -g posnam.f
460gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -I. -I/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/include -g preconvert.f90
461gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -g -O3 -o ./CONVERT2 ftrafo.o phgrreal.o grphreal.o rwGRIB2.o posnam.o preconvert.o -L/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/lib -Wl,-rpath,/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/lib -leccodes_f90 -leccodes -ljasper -lpthread -L/usr/local/apps/jasper/1.900.1/LP64/lib -ljasper -lm -L/usr/local/apps/libemos/000455/GNU/6.3.0/lib  -Wl,-rpath,/usr/local/apps/libemos/000455/GNU/6.3.0/lib  -lemos.R64.D64.I32 -L/usr/local/apps/fftw/3.3.4/GNU/6.3.0/lib -Wl,-rpath,/usr/local/apps/fftw/3.3.4/GNU/6.3.0/lib -lfftw3
462-rwxr-x---. <span class="m">1</span> USER at <span class="m">353134</span> May <span class="m">23</span> <span class="m">12</span>:27 CONVERT2
463SUCCESS!
464</pre></div>
465</div>
466</div>
467</div>
468<div class="section" id="gateway-mode">
469<span id="ref-gateway-mode"></span><h3>Gateway mode<a class="headerlink" href="#gateway-mode" title="Permalink to this headline"></a></h3>
470<div class="section" id="gateway-environment-requirements">
471<span id="ref-req-gateway"></span><h4>Gateway environment requirements<a class="headerlink" href="#gateway-environment-requirements" title="Permalink to this headline"></a></h4>
472<p>The environment on your local system has to provide these software packages
473and libraries, since <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> does only prepare the job script and send
474it to the ECMWF servers:</p>
475<ul class="simple">
476<li><a class="reference external" href="https://www.python.org/downloads/">Python3</a> or <a class="reference external" href="https://www.anaconda.com/distribution/#download-section">Anaconda Python3</a></li>
477<li><a class="reference external" href="http://www.numpy.org/">numpy</a></li>
478<li><a class="reference external" href="https://genshi.edgewall.org/">genshi</a></li>
479</ul>
480</div>
481<div class="section" id="prepare-gateway-environment">
482<span id="ref-prep-gateway"></span><h4>Prepare gateway environment<a class="headerlink" href="#prepare-gateway-environment" title="Permalink to this headline"></a></h4>
483<p>The easiest way to install all required packages is to use the package management system of your Linux distribution. To do so, it is necessary to use a user with admin rights.
484The installation was tested on a <em>GNU/Linux Debian buster</em> and an <em>Ubuntu 18.04 Bionic Beaver</em> system.</p>
485<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># On a Linux Debian or Ubuntu system do</span>
486<span class="c1"># (if not already available):</span>
487apt-get install python3
488apt-get install pip
489apt-get install genshi
490apt-get install numpy
491</pre></div>
492</div>
493</div>
494<div class="section" id="test-gateway-environment">
495<span id="ref-test-gateway"></span><h4>Test gateway environment<a class="headerlink" href="#test-gateway-environment" title="Permalink to this headline"></a></h4>
496<p>Check the availability of the python packages by typing <code class="docutils literal notranslate"><span class="pre">python3</span></code> in
497a terminal window and run the <code class="docutils literal notranslate"><span class="pre">import</span></code> commands in the python shell.
498If there are no error messages, you succeeded in setting up the environment.</p>
499<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># check in python3 console</span>
500<span class="kn">import</span> <span class="nn">genshi</span>
501<span class="kn">import</span> <span class="nn">numpy</span>
502</pre></div>
503</div>
504</div>
505<div class="section" id="gateway-installation">
506<span id="ref-install-gateway"></span><h4>Gateway installation<a class="headerlink" href="#gateway-installation" title="Permalink to this headline"></a></h4>
507<p>In this mode, access to the ECMWF computing and archiving facilities is enabled through an ECaccess gateway server on a local member state server. The ECaccess framework is necessary to interactively submit jobs to the ECMWF batch system and to transfer files between ECMWF and local gateway server.</p>
508<p>Please see <a class="reference external" href="https://confluence.ecmwf.int/display/ECAC/ECaccess+Home">ECMWF’s instructions on gateway server</a> to establish the gateway server if not already in place.
509Additionally, to be able to use the Ecaccess file transfer service <strong>ectrans</strong> please also create an association.
510The easiest way is to visit the ECaccess Member State Gateway website (e.g. msgatway.ecmwf.int) and follow the instructions in the short <a class="reference external" href="https://confluence.ecmwf.int/download/attachments/45759146/ECaccess.pdf">ECaccess Presentation</a> (page 17 ff.). Additional documentation can be found on the <a class="reference external" href="https://confluence.ecmwf.int/display/ECAC/Unattended+file+transfer+-+ectrans">ECMWF ectrans site</a>.</p>
511<p>After everything is set up you have to create an <em>ecaccess certificate</em> to be able to send and receive files from and to the ECMWF server. You can do this by using the <code class="docutils literal notranslate"><span class="pre">ecaccess-certificate-create</span></code> command on the gateway server. You will be prompted for your ECMWF member state user name and a password (which will be usually generated by a Token). This certificate has to be re-newed periodically (every 7 days).</p>
512<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ecaccess-certificate-create
513Please enter your user-id: example_username
514Your passcode: ***
515</pre></div>
516</div>
517<p><code class="docutils literal notranslate"><span class="pre">Flex_extract</span></code> will be run on an ECMWF server which makes the setup the same as for the <strong>remote mode</strong>. In the <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> script <a class="reference external" href="Documentation/Input/setup.html">[ref]</a>, select the <code class="docutils literal notranslate"><span class="pre">Makefile.gfortran</span></code> for the <code class="docutils literal notranslate"><span class="pre">CONVERT2</span></code> Fortran program and the ECMWF server (<em>target</em>) you would like to use.
518The job script, send to the job queue via the ECaccess software, selects again automatically the correct libraries from the module system. For enableing the file transfer you have to set the <em>ECUID</em>, <em>ECGID</em>, <em>GATEWAY</em> and <em>DESTINATION</em> parameter values.</p>
519<div class="literal-block-wrapper docutils container" id="setup-sh">
520<div class="code-block-caption"><span class="caption-text">‘Example settings for a gateway installation.’</span><a class="headerlink" href="#setup-sh" title="Permalink to this code"></a></div>
521<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># -----------------------------------------------------------------</span>
522<span class="c1"># AVAILABLE COMMANDLINE ARGUMENTS TO SET</span>
523<span class="c1">#</span>
524<span class="c1"># THE USER HAS TO SPECIFY THESE PARAMETER</span>
525<span class="c1">#</span>
526<span class="nv">TARGET</span><span class="o">=</span><span class="s1">&#39;ecgate&#39;</span>
527<span class="nv">MAKEFILE</span><span class="o">=</span><span class="s1">&#39;Makefile.gfortran&#39;</span>
528<span class="nv">ECUID</span><span class="o">=</span><span class="s1">&#39;uid&#39;</span>
529<span class="nv">ECGID</span><span class="o">=</span><span class="s1">&#39;gid&#39;</span>
530<span class="nv">GATEWAY</span><span class="o">=</span><span class="s1">&#39;server.example.edu&#39;</span>
531<span class="nv">DESTINATION</span><span class="o">=</span><span class="s1">&#39;example@genericSftp&#39;</span>
532<span class="nv">INSTALLDIR</span><span class="o">=</span>None
533<span class="nv">JOB_TEMPLATE</span><span class="o">=</span><span class="s1">&#39;job.template&#39;</span>
534<span class="nv">CONTROLFILE</span><span class="o">=</span><span class="s1">&#39;CONTROL_EA5&#39;</span>
535</pre></div>
536</div>
537</div>
538<p>Afterwards, type:</p>
539<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ./setup.sh
540</pre></div>
541</div>
542<p>to start the installation. You should see the following output at the command line.</p>
543<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Output of setup.sh</span>
544Create tarball ...
545Job compilation script has been submitted to ecgate <span class="k">for</span> installation in <span class="si">${</span><span class="nv">HOME</span><span class="si">}</span>/flex_extract_vX.X
546You should get an email with subject <span class="s2">&quot;flexcompile&quot;</span> within the next few minutes!
547</pre></div>
548</div>
549<p>The email content should look like this with a “SUCCESS” statement in the last line:</p>
550<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp phgrreal.f
551gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp grphreal.f
552gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp ftrafo.f
553gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -I. -I/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/include -g rwGRIB2.f90
554gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -I. -I/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/include -g posnam.f
555gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -I. -I/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/include -g preconvert.f90
556gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -g -O3 -o ./CONVERT2 ftrafo.o phgrreal.o grphreal.o rwGRIB2.o posnam.o preconvert.o -L/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/lib -Wl,-rpath,/usr/local/apps/eccodes/2.12.0/GNU/6.3.0/lib -leccodes_f90 -leccodes -ljasper -lpthread -L/usr/local/apps/jasper/1.900.1/LP64/lib -ljasper -lm -L/usr/local/apps/libemos/000455/GNU/6.3.0/lib  -Wl,-rpath,/usr/local/apps/libemos/000455/GNU/6.3.0/lib  -lemos.R64.D64.I32 -L/usr/local/apps/fftw/3.3.4/GNU/6.3.0/lib -Wl,-rpath,/usr/local/apps/fftw/3.3.4/GNU/6.3.0/lib -lfftw3
557-rwxr-x---. <span class="m">1</span> USER at <span class="m">353134</span> May <span class="m">23</span> <span class="m">12</span>:27 CONVERT2
558SUCCESS!
559</pre></div>
560</div>
561</div>
562</div>
563<div class="section" id="local-mode">
564<span id="ref-local-mode"></span><h3>Local mode<a class="headerlink" href="#local-mode" title="Permalink to this headline"></a></h3>
565<div class="section" id="local-environment-requirements">
566<span id="ref-req-local"></span><h4>Local environment requirements<a class="headerlink" href="#local-environment-requirements" title="Permalink to this headline"></a></h4>
567<p>For the local access modes <strong>member</strong> and <strong>public</strong> there is no difference in
568the installation process.</p>
569<p>The environment on your local system has to provide these software packages
570and libraries, since all extraction and preparation is done at the local system:</p>
571<table border="1" class="docutils">
572<colgroup>
573<col width="74%" />
574<col width="26%" />
575</colgroup>
576<tbody valign="top">
577<tr class="row-odd"><td>Python part</td>
578<td>Fortran part</td>
579</tr>
580<tr class="row-even"><td><ul class="first last simple">
581<li><a class="reference external" href="https://www.python.org/downloads/">Python3</a></li>
582<li><a class="reference external" href="http://www.numpy.org/">numpy</a></li>
583<li><a class="reference external" href="https://genshi.edgewall.org/">genshi</a></li>
584<li><a class="reference external" href="https://packages.debian.org/sid/python3-eccodes">eccodes for python</a></li>
585<li><a class="reference external" href="https://confluence.ecmwf.int/display/WEBAPI/ECMWF+Web+API+Home">ecmwf-api-client</a> (everything except ERA5)</li>
586<li><a class="reference external" href="https://cds.climate.copernicus.eu/api-how-to">cdsapi</a> (just for ERA5)</li>
587</ul>
588</td>
589<td><ul class="first last simple">
590<li><a class="reference external" href="https://gcc.gnu.org/wiki/GFortran">gfortran</a></li>
591<li><a class="reference external" href="http://www.fftw.org">fftw3</a></li>
592<li><a class="reference external" href="https://software.ecmwf.int/wiki/display/ECC">eccodes</a></li>
593<li><a class="reference external" href="https://software.ecmwf.int/wiki/display/EMOS/Emoslib">emoslib</a></li>
594</ul>
595</td>
596</tr>
597</tbody>
598</table>
599</div>
600<div class="section" id="prepare-local-environment">
601<span id="ref-prep-local"></span><h4>Prepare local environment<a class="headerlink" href="#prepare-local-environment" title="Permalink to this headline"></a></h4>
602<p>The easiest way to install all required packages is to use the package management system of your Linux distribution. To do so, it is necessary to use a user with admin rights.
603The installation was tested on a <em>Debian GNU/Linux buster/sid</em> and an <em>Ubuntu 18.04 Bionic Beaver</em> system.</p>
604<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># On a Linux Debian or Ubuntu system do</span>
605<span class="c1"># (if not already available):</span>
606apt-get install python3 <span class="o">(</span>usually available on normal Linux systems<span class="o">)</span>
607apt-get install pip
608apt-get install gfortran
609apt-get install fftw3-dev
610apt-get install libeccodes-dev
611apt-get install libemos-dev
612apt-get install python3-eccodes
613apt-get install genshi
614apt-get install numpy
615pip install cdsapi
616pip install ecmwf-api-client
617</pre></div>
618</div>
619<div class="admonition note">
620<p class="first admonition-title">Note</p>
621<p>In case you would like to use Anaconda Python we recommend you follow the installation instructions of
622<a class="reference external" href="https://docs.anaconda.com/anaconda/install/linux/">Anaconda Python Installation for Linux</a> and then install the
623<code class="docutils literal notranslate"><span class="pre">eccodes</span></code> package from <code class="docutils literal notranslate"><span class="pre">conda</span></code> with:</p>
624<div class="last highlight-bash notranslate"><div class="highlight"><pre><span></span>conda install conda-forge::python-eccodes
625</pre></div>
626</div>
627</div>
628<p>The CDS API (cdsapi) and the ECMWF Web API (ecmwf-api-client) have both to be installed since ERA5 can only be retrieved with the <code class="docutils literal notranslate"><span class="pre">CDS</span> <span class="pre">API</span></code> and all other datasets with the <code class="docutils literal notranslate"><span class="pre">ECMWF</span> <span class="pre">Web</span> <span class="pre">API</span></code>.</p>
629<div class="admonition note">
630<p class="first admonition-title">Note</p>
631<p class="last">Since <strong>public users</strong> currently don’t have access to the full <em>ERA5</em> dataset they can skip the installation of the <code class="docutils literal notranslate"><span class="pre">CDS</span> <span class="pre">API</span></code>.</p>
632</div>
633<p>Both user groups have to provide key’s with their credentials for the Web API’s in their home directory. Therefore, follow these instructions:</p>
634<dl class="docutils">
635<dt>ECMWF Web API:</dt>
636<dd>Go to <a class="reference external" href="https://confluence.ecmwf.int//display/WEBAPI/Access+MARS">MARS access</a> website and log in with your credentials. Afterwards, on this site in section “Install ECMWF KEY” the key for the ECMWF Web API should be listed. Please follow the instructions in this section under point 1 (save the key in a file <cite>.ecmwfapirc</cite> in your home directory).</dd>
637<dt>CDS API:</dt>
638<dd>Go to ‘CDS API registration’_ and register there too. Log in at the <a class="reference external" href="https://cds.climate.copernicus.eu/api-how-to">cdsapi</a> website and follow the instructions at section “Install the CDS API key” to save your credentials in a <cite>.cdsapirc</cite> file.</dd>
639</dl>
640</div>
641<div class="section" id="test-local-environment">
642<span id="ref-test-local"></span><h4>Test local environment<a class="headerlink" href="#test-local-environment" title="Permalink to this headline"></a></h4>
643<p>Check the availability of the system packages with <code class="docutils literal notranslate"><span class="pre">dpkg</span> <span class="pre">-s</span> <span class="pre">&lt;package-name&gt;</span> <span class="pre">|</span>&#160; <span class="pre">grep</span> <span class="pre">Status</span></code> or <code class="docutils literal notranslate"><span class="pre">rpm</span> <span class="pre">-q</span> <span class="pre">&lt;package_name&gt;</span></code>, depending on your system. For example:</p>
644<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ dpkg -s libeccodes-dev <span class="p">|</span>  grep Status
645<span class="c1"># or</span>
646$ rpm -q libeccodes-dev
647</pre></div>
648</div>
649<p>Afterwards, check the availability of the python packages by typing <code class="docutils literal notranslate"><span class="pre">python3</span></code> in
650a terminal window and run the <code class="docutils literal notranslate"><span class="pre">import</span></code> commands in the python shell. If there are no error messages, you succeeded in setting up the environment.</p>
651<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># check in python3 console</span>
652<span class="kn">import</span> <span class="nn">eccodes</span>
653<span class="kn">import</span> <span class="nn">genshi</span>
654<span class="kn">import</span> <span class="nn">numpy</span>
655<span class="kn">import</span> <span class="nn">cdsapi</span>
656<span class="kn">import</span> <span class="nn">ecmwfapi</span>
657</pre></div>
658</div>
659<div class="section" id="test-the-web-api-s">
660<h5>Test the Web API’s<a class="headerlink" href="#test-the-web-api-s" title="Permalink to this headline"></a></h5>
661<p>You can start very simple test retrievals for both Web API’s to be sure that everything works. This is recommended to minimize the range of possible errors using <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> later on.</p>
662</div>
663<div class="section" id="ecmwf-web-api">
664<h5>ECMWF Web API<a class="headerlink" href="#ecmwf-web-api" title="Permalink to this headline"></a></h5>
665<table border="1" class="docutils">
666<colgroup>
667<col width="50%" />
668<col width="50%" />
669</colgroup>
670<tbody valign="top">
671<tr class="row-odd"><td>Please use this piece of python code for <strong>Member user</strong>:</td>
672<td>Please use this piece of python code for <strong>Public user</strong>:</td>
673</tr>
674<tr class="row-even"><td><div class="first last highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">ecmwfapi</span> <span class="kn">import</span> <span class="n">ECMWFService</span>
675
676<span class="n">server</span> <span class="o">=</span> <span class="n">ECMWFService</span><span class="p">(</span><span class="s1">&#39;mars&#39;</span><span class="p">)</span>
677
678<span class="n">server</span><span class="o">.</span><span class="n">retrieve</span><span class="p">({</span>
679    <span class="s1">&#39;stream&#39;</span>    <span class="p">:</span> <span class="s2">&quot;oper&quot;</span><span class="p">,</span>
680    <span class="s1">&#39;levtype&#39;</span>   <span class="p">:</span> <span class="s2">&quot;sfc&quot;</span><span class="p">,</span>
681    <span class="s1">&#39;param&#39;</span>     <span class="p">:</span> <span class="s2">&quot;165.128/166.128/167.128&quot;</span><span class="p">,</span>
682    <span class="s1">&#39;dataset&#39;</span>   <span class="p">:</span> <span class="s2">&quot;interim&quot;</span><span class="p">,</span>
683    <span class="s1">&#39;step&#39;</span>      <span class="p">:</span> <span class="s2">&quot;0&quot;</span><span class="p">,</span>
684    <span class="s1">&#39;grid&#39;</span>      <span class="p">:</span> <span class="s2">&quot;0.75/0.75&quot;</span><span class="p">,</span>
685    <span class="s1">&#39;time&#39;</span>      <span class="p">:</span> <span class="s2">&quot;00/06/12/18&quot;</span><span class="p">,</span>
686    <span class="s1">&#39;date&#39;</span>      <span class="p">:</span> <span class="s2">&quot;2014-07-01/to/2014-07-31&quot;</span><span class="p">,</span>
687    <span class="s1">&#39;type&#39;</span>      <span class="p">:</span> <span class="s2">&quot;an&quot;</span><span class="p">,</span>
688    <span class="s1">&#39;class&#39;</span>     <span class="p">:</span> <span class="s2">&quot;ei&quot;</span><span class="p">,</span>
689    <span class="s1">&#39;target&#39;</span>    <span class="p">:</span> <span class="s2">&quot;download_erainterim_ecmwfapi.grib&quot;</span>
690<span class="p">})</span>
691</pre></div>
692</div>
693</td>
694<td><div class="first last highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">ecmwfapi</span> <span class="kn">import</span> <span class="n">ECMWFDataServer</span>
695
696<span class="n">server</span> <span class="o">=</span> <span class="n">ECMWFDataServer</span><span class="p">()</span>
697
698<span class="n">server</span><span class="o">.</span><span class="n">retrieve</span><span class="p">({</span>
699    <span class="s1">&#39;stream&#39;</span>    <span class="p">:</span> <span class="s2">&quot;enda&quot;</span><span class="p">,</span>
700    <span class="s1">&#39;levtype&#39;</span>   <span class="p">:</span> <span class="s2">&quot;sfc&quot;</span><span class="p">,</span>
701    <span class="s1">&#39;param&#39;</span>     <span class="p">:</span> <span class="s2">&quot;165.128/166.128/167.128&quot;</span><span class="p">,</span>
702    <span class="s1">&#39;dataset&#39;</span>   <span class="p">:</span> <span class="s2">&quot;cera20c&quot;</span><span class="p">,</span>
703    <span class="s1">&#39;step&#39;</span>      <span class="p">:</span> <span class="s2">&quot;0&quot;</span><span class="p">,</span>
704    <span class="s1">&#39;grid&#39;</span>      <span class="p">:</span> <span class="s2">&quot;1./1.&quot;</span><span class="p">,</span>
705    <span class="s1">&#39;time&#39;</span>      <span class="p">:</span> <span class="s2">&quot;00/06/12/18&quot;</span><span class="p">,</span>
706    <span class="s1">&#39;date&#39;</span>      <span class="p">:</span> <span class="s2">&quot;2000-07-01/to/2000-07-31&quot;</span><span class="p">,</span>
707    <span class="s1">&#39;type&#39;</span>      <span class="p">:</span> <span class="s2">&quot;an&quot;</span><span class="p">,</span>
708    <span class="s1">&#39;class&#39;</span>     <span class="p">:</span> <span class="s2">&quot;ep&quot;</span><span class="p">,</span>
709    <span class="s1">&#39;target&#39;</span>    <span class="p">:</span> <span class="s2">&quot;download_cera20c_ecmwfapi.grib&quot;</span>
710<span class="p">})</span>
711</pre></div>
712</div>
713</td>
714</tr>
715</tbody>
716</table>
717</div>
718<div class="section" id="cds-api">
719<h5>CDS API<a class="headerlink" href="#cds-api" title="Permalink to this headline"></a></h5>
720<p>Since ERA5 extraction with CDS API might take some time due to the very high number of requests, you can start by retrieving some online stored pressure levels (not from MARS). This is usually much faster and gives a quick result to find out if the web API works:</p>
721<p>Please use this piece of python code to retrieve a small sample of <em>ERA5</em> pressure levels:</p>
722<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">cdsapi</span>
723
724<span class="n">c</span> <span class="o">=</span> <span class="n">cdsapi</span><span class="o">.</span><span class="n">Client</span><span class="p">()</span>
725
726<span class="n">c</span><span class="o">.</span><span class="n">retrieve</span><span class="p">(</span><span class="s2">&quot;reanalysis-era5-pressure-levels&quot;</span><span class="p">,</span>
727<span class="p">{</span>
728<span class="s2">&quot;variable&quot;</span><span class="p">:</span> <span class="s2">&quot;temperature&quot;</span><span class="p">,</span>
729<span class="s2">&quot;pressure_level&quot;</span><span class="p">:</span> <span class="s2">&quot;1000&quot;</span><span class="p">,</span>
730<span class="s2">&quot;product_type&quot;</span><span class="p">:</span> <span class="s2">&quot;reanalysis&quot;</span><span class="p">,</span>
731<span class="s2">&quot;year&quot;</span><span class="p">:</span> <span class="s2">&quot;2008&quot;</span><span class="p">,</span>
732<span class="s2">&quot;month&quot;</span><span class="p">:</span> <span class="s2">&quot;01&quot;</span><span class="p">,</span>
733<span class="s2">&quot;day&quot;</span><span class="p">:</span> <span class="s2">&quot;01&quot;</span><span class="p">,</span>
734<span class="s2">&quot;time&quot;</span><span class="p">:</span> <span class="s2">&quot;12:00&quot;</span><span class="p">,</span>
735<span class="s2">&quot;format&quot;</span><span class="p">:</span> <span class="s2">&quot;grib&quot;</span>
736<span class="p">},</span>
737<span class="s2">&quot;download_cdsapi.grib&quot;</span><span class="p">)</span>
738</pre></div>
739</div>
740<p>Afterwards, when you know that the CDS API generally works, you can try to extract some
741data from the MARS archive. From the latest experience we know that this can take a while.</p>
742<p>Please use this piece of python code to retrieve a small <em>ERA5</em> data sample as a <strong>member user</strong>! The <strong>public user</strong> doesn’t have access to the full <em>ERA5</em> dataset!</p>
743<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">cdsapi</span>
744
745<span class="n">c</span> <span class="o">=</span> <span class="n">cdsapi</span><span class="o">.</span><span class="n">Client</span><span class="p">()</span>
746
747<span class="n">c</span><span class="o">.</span><span class="n">retrieve</span><span class="p">(</span><span class="s1">&#39;reanalysis-era5-complete&#39;</span><span class="p">,</span>
748<span class="p">{</span>
749    <span class="s1">&#39;class&#39;</span>   <span class="p">:</span> <span class="s1">&#39;ea&#39;</span><span class="p">,</span>
750    <span class="s1">&#39;expver&#39;</span>  <span class="p">:</span> <span class="s1">&#39;1&#39;</span><span class="p">,</span>
751    <span class="s1">&#39;stream&#39;</span>  <span class="p">:</span> <span class="s1">&#39;oper&#39;</span><span class="p">,</span>
752    <span class="s1">&#39;type&#39;</span>    <span class="p">:</span> <span class="s1">&#39;fc&#39;</span><span class="p">,</span>
753    <span class="s1">&#39;step&#39;</span>    <span class="p">:</span> <span class="s1">&#39;3/to/12/by/3&#39;</span><span class="p">,</span>
754    <span class="s1">&#39;param&#39;</span>   <span class="p">:</span> <span class="s1">&#39;130.128&#39;</span><span class="p">,</span>
755    <span class="s1">&#39;levtype&#39;</span> <span class="p">:</span> <span class="s1">&#39;ml&#39;</span><span class="p">,</span>
756    <span class="s1">&#39;levelist&#39;</span><span class="p">:</span> <span class="s1">&#39;135/to/137&#39;</span><span class="p">,</span>
757    <span class="s1">&#39;date&#39;</span>    <span class="p">:</span> <span class="s1">&#39;2013-01-01&#39;</span><span class="p">,</span>
758    <span class="s1">&#39;time&#39;</span>    <span class="p">:</span> <span class="s1">&#39;06/18&#39;</span><span class="p">,</span>
759    <span class="s1">&#39;area&#39;</span>    <span class="p">:</span> <span class="s1">&#39;50/-5/40/5&#39;</span><span class="p">,</span>
760    <span class="s1">&#39;grid&#39;</span>    <span class="p">:</span> <span class="s1">&#39;1.0/1.0&#39;</span><span class="p">,</span>
761    <span class="s1">&#39;format&#39;</span>  <span class="p">:</span> <span class="s1">&#39;grib&#39;</span><span class="p">,</span>
762<span class="p">},</span> <span class="s1">&#39;download_era5_cdsapi.grib&#39;</span><span class="p">)</span>
763</pre></div>
764</div>
765</div>
766</div>
767<div class="section" id="local-installation">
768<span id="ref-install-local"></span><h4>Local installation<a class="headerlink" href="#local-installation" title="Permalink to this headline"></a></h4>
769<p>First prepare the Fortran <code class="docutils literal notranslate"><span class="pre">Makefile</span></code> for your environment and set it
770in the <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> script. (See section <span class="xref std std-ref">ref-convert</span> for information on
771the Fortran program.)
772<code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> has already two <code class="docutils literal notranslate"><span class="pre">Makefiles</span></code> prepared for te <code class="docutils literal notranslate"><span class="pre">gfortran</span></code> and
773the <code class="docutils literal notranslate"><span class="pre">ifort</span></code> compiler:</p>
774<blockquote>
775<div><ul class="simple">
776<li>Makefile.local.gfortran</li>
777<li>Makefile.local.ifort</li>
778</ul>
779</div></blockquote>
780<p>They can be found in the path <code class="docutils literal notranslate"><span class="pre">flex_extract_vX.X/source/fortran</span></code>, where
781<code class="docutils literal notranslate"><span class="pre">vX.X</span></code> should be substituted with the current version number.</p>
782<div class="admonition caution">
783<p class="first admonition-title">Caution</p>
784<p class="last">It is necessary to adapt <strong>ECCODES_INCLUDE_DIR</strong> and <strong>ECCODES_LIB</strong> in these
785<code class="docutils literal notranslate"><span class="pre">Makefiles</span></code>.</p>
786</div>
787<p>So starting from the root directory of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>,
788go to the <code class="docutils literal notranslate"><span class="pre">Fortran</span></code> source directory and open the <code class="docutils literal notranslate"><span class="pre">Makefile</span></code> of your
789choice to modify with an editor of your choice. We use the <code class="docutils literal notranslate"><span class="pre">nedit</span></code> in this case.</p>
790<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> flex_extract_vX.X/source/fortran
791nedit Makefile.local.gfortran
792</pre></div>
793</div>
794<p>Edit the pathes to the <code class="docutils literal notranslate"><span class="pre">eccodes</span></code> library on your local machine.</p>
795<div class="admonition caution">
796<p class="first admonition-title">Caution</p>
797<p>This can vary from system to system.
798It is suggested to use a command like</p>
799<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># for the ECCODES_INCLUDE_DIR path do:</span>
800$ dpkg -L libeccodes-dev <span class="p">|</span> grep eccodes.mod
801<span class="c1"># for the ECCODES_LIB path do:</span>
802$ dpkg -L libeccodes-dev <span class="p">|</span> grep libeccodes.so
803</pre></div>
804</div>
805<p class="last">to find out the path to the <code class="docutils literal notranslate"><span class="pre">eccodes</span></code> library.</p>
806</div>
807<p>Substitute these paths in the <code class="docutils literal notranslate"><span class="pre">Makefile</span></code> for parameters <strong>ECCODES_INCLUDE_DIR</strong>
808and <strong>ECCODES_LIB</strong> and save it.</p>
809<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># these are the paths on a current Debian 10 Testing system (May 2019)</span>
810<span class="nv">ECCODES_INCLUDE_DIR</span><span class="o">=</span>/usr/lib/x86_64-linux-gnu/fortran/gfortran-mod-15/
811<span class="nv">ECCODES_LIB</span><span class="o">=</span> -L/usr/lib -leccodes_f90 -leccodes -lm
812</pre></div>
813</div>
814<p>The Fortran program called <code class="docutils literal notranslate"><span class="pre">CONVERT2</span></code> will be compiled during the
815installation process to get an executable. Therefore the <code class="docutils literal notranslate"><span class="pre">Makefile</span></code>
816has to be set in the <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> script.</p>
817<p>In the root directory of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>, open the <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> script
818and adapt the installation parameters in the section labelled with
819“AVAILABLE COMMANDLINE ARGUMENTS TO SET” like shown below.</p>
820<div class="literal-block-wrapper docutils container" id="id2">
821<div class="code-block-caption"><span class="caption-text">‘Example settings for a local installation.’</span><a class="headerlink" href="#id2" title="Permalink to this code"></a></div>
822<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>...
823<span class="c1"># -----------------------------------------------------------------</span>
824<span class="c1"># AVAILABLE COMMANDLINE ARGUMENTS TO SET</span>
825<span class="c1">#</span>
826<span class="c1"># THE USER HAS TO SPECIFY THESE PARAMETER</span>
827<span class="c1">#</span>
828<span class="nv">TARGET</span><span class="o">=</span><span class="s1">&#39;local&#39;</span>
829<span class="nv">MAKEFILE</span><span class="o">=</span><span class="s1">&#39;Makefile.local.gfortran&#39;</span>
830<span class="nv">ECUID</span><span class="o">=</span>None
831<span class="nv">ECGID</span><span class="o">=</span>None
832<span class="nv">GATEWAY</span><span class="o">=</span>None
833<span class="nv">DESTINATION</span><span class="o">=</span>None
834<span class="nv">INSTALLDIR</span><span class="o">=</span>None
835<span class="nv">JOB_TEMPLATE</span><span class="o">=</span><span class="s1">&#39;job.template&#39;</span>
836<span class="nv">CONTROLFILE</span><span class="o">=</span><span class="s1">&#39;CONTROL_EA5&#39;</span>
837...
838</pre></div>
839</div>
840</div>
841<p>Afterwards, type:</p>
842<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ./setup.sh
843</pre></div>
844</div>
845<p>to start the installation. You should see the following output at the command line.</p>
846<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Output of setup.sh</span>
847WARNING: installdir has not been specified
848flex_extract will be installed in here by compiling the Fortran <span class="nb">source</span> in /raid60/nas/tmc/Anne/Interpolation/flexextract/flex_extract_v7.1/source/fortran
849Install flex_extract_v7.1 software at <span class="nb">local</span> in directory /raid60/nas/tmc/Anne/Interpolation/flexextract/flex_extract_v7.1
850
851Using makefile: Makefile.local.gfortran
852gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp phgrreal.f
853gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp grphreal.f
854gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -g -O3 -fopenmp ftrafo.f
855gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -fopenmp -I. -I/usr/local/gcc-4.9.3/grib_api-1.14.3/include -O3 rwGRIB2.f90
856gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -fopenmp -I. -I/usr/local/gcc-4.9.3/grib_api-1.14.3/include -O3 posnam.f
857gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -c -O3 -fopenmp -I. -I/usr/local/gcc-4.9.3/grib_api-1.14.3/include -O3 preconvert.f90
858gfortran   -m64 -fdefault-real-8 -fcray-pointer -fno-second-underscore  -ffixed-line-length-132 -fopenmp  -fconvert<span class="o">=</span>big-endian  -O3 -O3 -fopenmp -o ./CONVERT2 ftrafo.o phgrreal.o grphreal.o rwGRIB2.o posnam.o preconvert.o -L/usr/local/gcc-4.9.3/grib_api-1.14.3/lib -Bstatic  -lgrib_api_f77 -lgrib_api_f90 -lgrib_api -Bdynamic  -lm  -ljasper -lemosR64
859
860-rwxrwxr-x. <span class="m">1</span> philipa8 tmc <span class="m">282992</span> May <span class="m">23</span> <span class="m">22</span>:27 ./CONVERT2
861</pre></div>
862</div>
863</div>
864</div>
865</div>
866<div class="section" id="flex-extract-in-combination-with-flexpart">
867<h2><code class="docutils literal notranslate"><span class="pre">Flex_extract</span></code> in combination with <code class="docutils literal notranslate"><span class="pre">FLEXPART</span></code><a class="headerlink" href="#flex-extract-in-combination-with-flexpart" title="Permalink to this headline"></a></h2>
868<p>Some users might like to incorporate <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> directly into the <code class="docutils literal notranslate"><span class="pre">FLEXPART</span></code>
869distribution. Then the installation path has to be changed by setting the parameter
870<cite>installdir</cite> in the <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> file to the <code class="docutils literal notranslate"><span class="pre">script</span></code> directory in the <code class="docutils literal notranslate"><span class="pre">FLEXPART</span></code> root directoy.</p>
871</div>
872<div class="section" id="test-installation">
873<span id="ref-testinstallfe"></span><h2>Test installation<a class="headerlink" href="#test-installation" title="Permalink to this headline"></a></h2>
874<div class="section" id="fortran-program-test">
875<h3>Fortran program test<a class="headerlink" href="#fortran-program-test" title="Permalink to this headline"></a></h3>
876<p>To check if the compilation of the Fortran program <code class="docutils literal notranslate"><span class="pre">CONVERT2</span></code> was successful
877a quick program call on a minimal prepared dataset can be done.</p>
878<p>For this, go from the <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> root directory to the test
879directory and call the executable of the Fortran program.</p>
880<div class="admonition note">
881<p class="first admonition-title">Note</p>
882<p class="last">Remember that you might have to log in at the ECMWF server if you used the installation for the <strong>remote</strong> or <strong>gateway</strong> mode. There you find the <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> root directory in your <code class="docutils literal notranslate"><span class="pre">$HOME</span></code> directory.</p>
883</div>
884<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> test/Installation/Convert
885<span class="c1"># call the Fortran progam without arguments</span>
886../../../source/fortran/CONVERT2
887</pre></div>
888</div>
889<p>The installation was successfull if it showed the following output:</p>
890<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> readspectral:            <span class="m">1</span>  records <span class="nb">read</span>
891 readlatlon:            <span class="m">8</span>  records <span class="nb">read</span>
892STATISTICS:  <span class="m">98842</span>.4598 <span class="m">98709</span>.7359  <span class="m">5120</span>.5385
893 readlatlon:            <span class="m">4</span>  records <span class="nb">read</span>
894 readlatlon:            <span class="m">4</span>  records <span class="nb">read</span>
895 readlatlon:            <span class="m">4</span>  records <span class="nb">read</span>
896SUCCESSFULLY FINISHED CONVERT_PRE: CONGRATULATIONS
897</pre></div>
898</div>
899<p>Now go back to the root directoy:</p>
900<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="nb">cd</span> ../../../
901</pre></div>
902</div>
903</div>
904<div class="section" id="full-test">
905<h3>Full test<a class="headerlink" href="#full-test" title="Permalink to this headline"></a></h3>
906<blockquote>
907<div>see <a class="reference internal" href="quick_start.html"><span class="doc">Quick Start</span></a></div></blockquote>
908</div>
909</div>
910</div>
911
912
913           </div>
914           
915          </div>
916          <footer>
917 
918    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
919     
920        <a href="quick_start.html" class="btn btn-neutral float-right" title="Quick Start" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
921     
922     
923        <a href="index.html" class="btn btn-neutral float-left" title="&lt;no title&gt;" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
924     
925    </div>
926 
927
928  <hr/>
929
930  <div role="contentinfo">
931    <p>
932        &copy; Copyright 2019, Anne Philipp and Leopold Haimberger
933
934    </p>
935  </div>
936  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>.
937
938</footer>
939
940        </div>
941      </div>
942
943    </section>
944
945  </div>
946 
947
948
949  <script type="text/javascript">
950      jQuery(function () {
951          SphinxRtdTheme.Navigation.enable(true);
952      });
953  </script>
954
955 
956 
957   
958   
959
960</body>
961</html>
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG