From 47be2684fe371f11a0c120c7e0d78acf010722d3 Mon Sep 17 00:00:00 2001 From: Leopold Haimberger <leopold.haimberger@univie.ac.at> Date: Wed, 28 Oct 2020 11:28:24 +0100 Subject: [PATCH] Adaptations to allow for a system installation with separate user and system path. Updated documentation --- .../html/Documentation/Api/api_python.html | 37 +++++ .../html/Documentation/Input/setup.html | 20 ++- Documentation/html/Installation/local.html | 68 +++++++- Documentation/html/_modules/ControlFile.html | 1 + Documentation/html/_modules/install.html | 154 +++++++++++++++--- Documentation/html/_modules/submit.html | 2 +- Documentation/html/_modules/tools.html | 64 +++++++- .../Documentation/Input/setup.rst.txt | 7 +- .../html/_sources/Installation/local.rst.txt | 75 ++++++++- Documentation/html/genindex.html | 8 +- Documentation/html/objects.inv | Bin 7220 -> 7233 bytes Documentation/html/searchindex.js | 2 +- For_developers/InstallationParameter.xls | Bin 9216 -> 9728 bytes .../Source/Documentation/Input/setup.rst | 7 +- .../Sphinx/Source/Installation/local.rst | 75 ++++++++- Run/run_local.sh | 2 +- Source/Python/Classes/ControlFile.py | 1 + Source/Python/Mods/tools.py | 64 +++++++- Source/Python/_config.py | 29 +++- Source/Python/install.py | 154 +++++++++++++++--- Source/Python/submit.py | 2 +- setup_local.sh | 22 ++- 22 files changed, 692 insertions(+), 102 deletions(-) diff --git a/Documentation/html/Documentation/Api/api_python.html b/Documentation/html/Documentation/Api/api_python.html index ddf3bf6..311ac81 100644 --- a/Documentation/html/Documentation/Api/api_python.html +++ b/Documentation/html/Documentation/Api/api_python.html @@ -2492,6 +2492,28 @@ command line.</p></li> <div class="section" id="module-tools"> <span id="tools"></span><h3><a class="toc-backref" href="#id15">tools</a><a class="headerlink" href="#module-tools" title="Permalink to this headline">¶</a></h3> <p>This module contains a collection of diverse tasks within flex_extract.</p> +<dl class="function"> +<dt id="tools.check_for_string_in_file"> +<code class="sig-prename descclassname">tools.</code><code class="sig-name descname">check_for_string_in_file</code><span class="sig-paren">(</span><em class="sig-param">filepath</em>, <em class="sig-param">search_string</em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/tools.html#check_for_string_in_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.check_for_string_in_file" title="Permalink to this definition">¶</a></dt> +<dd><p>Search for a specific string in a file and return True if +the string was found.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters</dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>filepath</strong> (<em>str</em>) – The full file path which is to be examined.</p></li> +<li><p><strong>search_string</strong> (<em>str</em>) – The string which is looked up for in the file.</p></li> +</ul> +</dd> +<dt class="field-even">Returns</dt> +<dd class="field-even"><p>True : String was found +False : String was not found</p> +</dd> +<dt class="field-odd">Return type</dt> +<dd class="field-odd"><p>Boolean</p> +</dd> +</dl> +</dd></dl> + <dl class="function"> <dt id="tools.clean_up"> <code class="sig-prename descclassname">tools.</code><code class="sig-name descname">clean_up</code><span class="sig-paren">(</span><em class="sig-param">c</em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/tools.html#clean_up"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.clean_up" title="Permalink to this definition">¶</a></dt> @@ -2735,6 +2757,21 @@ then the Python type None is returned, otherwise the string itself.</p> </dl> </dd></dl> +<dl class="function"> +<dt id="tools.overwrite_lines_in_file"> +<code class="sig-prename descclassname">tools.</code><code class="sig-name descname">overwrite_lines_in_file</code><span class="sig-paren">(</span><em class="sig-param">filepath</em>, <em class="sig-param">search_string</em>, <em class="sig-param">sub_string</em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/tools.html#overwrite_lines_in_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.overwrite_lines_in_file" title="Permalink to this definition">¶</a></dt> +<dd><p>Overwrites lines which contain the given search string with the +substitution string.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters</dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>search_string</strong> (<em>str</em>) – The string which is looked up for in the file.</p></li> +<li><p><strong>sub_string</strong> (<em>str</em>) – The string which overwrites the search string.</p></li> +</ul> +</dd> +</dl> +</dd></dl> + <dl class="function"> <dt id="tools.product"> <code class="sig-prename descclassname">tools.</code><code class="sig-name descname">product</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwds</em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/tools.html#product"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.product" title="Permalink to this definition">¶</a></dt> diff --git a/Documentation/html/Documentation/Input/setup.html b/Documentation/html/Documentation/Input/setup.html index 044f102..0a3f215 100644 --- a/Documentation/html/Documentation/Input/setup.html +++ b/Documentation/html/Documentation/Input/setup.html @@ -234,9 +234,9 @@ It calls the top-level Python script <code class="docutils literal notranslate"> <tbody> <tr class="row-even"><td><p>TARGET</p></td> <td><p>String</p></td> -<td><p>local, ecgate, cca, ccb</p></td> +<td><p>local, syslocal, ecgate, cca, ccb</p></td> <td><p>None</p></td> -<td><p>Defines the flex_extract application mode to be used. Local = local mode; ecgate = Remote or Gateway mode, cca or ccb = Remote or Gateway mode (HPC). Whether the local mode is for public or member state users doesn’t matter here.</p></td> +<td><p>Defines the flex_extract application mode to be used. Local = local mode; ecgate = Remote or Gateway mode, cca or ccb = Remote or Gateway mode (HPC). Whether the local mode is for public or member state users doesn’t matter here. Syslocal = seperates the executables and user application files during installation. Paths are selectable through INSTALLDIR and SYSINSTALLDIR</p></td> </tr> <tr class="row-odd"><td><p>MAKEFILE</p></td> <td><p>String</p></td> @@ -274,13 +274,19 @@ It calls the top-level Python script <code class="docutils literal notranslate"> <td><p>$HOME on ECMWF server and current flex_extract root path on local machine</p></td> <td><p>Root path where flex_extract should be installed. It will always be $HOME on ECMWF servers and if not set for the local mode, it will be the current flex_extract root path on local servers. </p></td> </tr> -<tr class="row-odd"><td><p>JOB_TEMPLATE</p></td> +<tr class="row-odd"><td><p>SYSINSTALLDIR</p></td> +<td><p>String</p></td> +<td><p>a full path </p></td> +<td><p>None</p></td> +<td><p>This will be the same as INSTALLDIR if TARGET=local. Otherwise, the executable files are stored in this path. If it is choosen to be in a system path, don’t forget to start the script with admin rights. </p></td> +</tr> +<tr class="row-even"><td><p>JOB_TEMPLATE</p></td> <td><p>String</p></td> <td><p>installscript.template</p></td> <td><p>installscript.template</p></td> <td><p>The rudimentary template file to create a batch job template for submission to ECMWF servers. Should not be changed because it is already optimised for ECMWF servers. (Remote and Gateway mode)</p></td> </tr> -<tr class="row-even"><td><p>CONTROLFILE</p></td> +<tr class="row-odd"><td><p>CONTROLFILE</p></td> <td><p>String</p></td> <td><p>any CONTROL file</p></td> <td><p>CONTROL_EA5</p></td> @@ -401,6 +407,7 @@ we see again all possible command line parameters.</p> usage: install.py <span class="o">[</span>-h<span class="o">]</span> <span class="o">[</span>--target INSTALL_TARGET<span class="o">]</span> <span class="o">[</span>--makefile MAKEFILE<span class="o">]</span> <span class="o">[</span>--ecuid ECUID<span class="o">]</span> <span class="o">[</span>--ecgid ECGID<span class="o">]</span> <span class="o">[</span>--gateway GATEWAY<span class="o">]</span> <span class="o">[</span>--destination DESTINATION<span class="o">]</span> <span class="o">[</span>--installdir INSTALLDIR<span class="o">]</span> + <span class="o">[</span>--sysinstalldir SYSINSTALLDIR<span class="o">]</span> <span class="o">[</span>--job_template JOB_TEMPLATE<span class="o">]</span> <span class="o">[</span>--controlfile CONTROLFILE<span class="o">]</span> Install flex_extract software locally or on ECMWF machines @@ -408,7 +415,7 @@ Install flex_extract software locally or on ECMWF machines optional arguments: -h, --help show this <span class="nb">help</span> message and <span class="nb">exit</span> --target INSTALL_TARGET - Valid targets: <span class="nb">local</span> <span class="p">|</span> ecgate <span class="p">|</span> cca , the latter two + Valid targets: syslocal <span class="p">|</span> <span class="nb">local</span> <span class="p">|</span> ecgate <span class="p">|</span> cca , the latter two are at ECMWF <span class="o">(</span>default: None<span class="o">)</span> --makefile MAKEFILE Name of makefile to compile the Fortran code. <span class="o">(</span>default depends on <span class="sb">`</span>target<span class="sb">`</span>: <span class="nb">local</span> - makefile_local_gfortran, @@ -422,6 +429,9 @@ optional arguments: --installdir INSTALLDIR Root directory where flex_extract will be installed to. <span class="o">(</span>default: None<span class="o">)</span> + --sysinstalldir SYSINSTALLDIR + System installation path<span class="p">;</span> where executables are + stored. <span class="o">(</span>default: None<span class="o">)</span> --job_template JOB_TEMPLATE The rudimentary template file to create a batch job template <span class="k">for</span> submission to ECMWF servers. <span class="o">(</span>default: diff --git a/Documentation/html/Installation/local.html b/Documentation/html/Installation/local.html index e15f365..1e5a270 100644 --- a/Documentation/html/Installation/local.html +++ b/Documentation/html/Installation/local.html @@ -103,6 +103,7 @@ <li class="toctree-l4"><a class="reference internal" href="#preparing-the-local-environment">Preparing the local environment</a></li> <li class="toctree-l4"><a class="reference internal" href="#testing-the-local-environment">Testing the local environment</a></li> <li class="toctree-l4"><a class="reference internal" href="#local-installation">Local installation</a></li> +<li class="toctree-l4"><a class="reference internal" href="#local-system-installation">Local system installation</a></li> </ul> </li> </ul> @@ -394,14 +395,14 @@ and then install the <code class="docutils literal notranslate"><span class="pre <span id="ref-install-local"></span><h2>Local installation<a class="headerlink" href="#local-installation" title="Permalink to this headline">¶</a></h2> <p>The Fortran program called <code class="docutils literal notranslate"><span class="pre">calc_etadot</span></code> will be compiled during the installation process. A suitable makefile (<code class="docutils literal notranslate"><span class="pre">makefile_local_gfortran</span></code>) for the compilation is set by default. -This may be overwritten by the <code class="docutils literal notranslate"><span class="pre">MAKEFILE</span></code> parameter in <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code>.</p> -<p>However, you may have to adapt the makefile for your environment (the current default makefile works on Debian stretch and similar GNU/Linux distributions). If you use a new name for it, you will have to insert it into <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code> +This may be overwritten by the <code class="docutils literal notranslate"><span class="pre">MAKEFILE</span></code> parameter in <code class="docutils literal notranslate"><span class="pre">setup_local.sh</span></code>.</p> +<p>However, you may have to adapt the makefile for your environment (the current default makefile works on Debian stretch and similar GNU/Linux distributions). If you use a new name for it, you will have to insert it into <code class="docutils literal notranslate"><span class="pre">setup_local.sh</span></code> For details on the makefile and how to adapt them, see <a class="reference internal" href="../Documentation/Input/fortran_makefile.html#ref-convert"><span class="std std-ref">Fortran Makefile</span></a>.</p> -<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 +<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_local.sh</span></code> script with an editor and adapt the installation parameters in the section labelled with “AVAILABLE COMMANDLINE ARGUMENTS TO SET” as shown below:</p> -<div class="literal-block-wrapper docutils container" id="setup-sh"> -<div class="code-block-caption"><span class="caption-text">‘Example settings for a local installation.’</span><a class="headerlink" href="#setup-sh" title="Permalink to this code">¶</a></div> +<div class="literal-block-wrapper docutils container" id="setup-local-sh"> +<div class="code-block-caption"><span class="caption-text">‘Example settings for a local installation.’</span><a class="headerlink" href="#setup-local-sh" title="Permalink to this code">¶</a></div> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>... <span class="c1"># -----------------------------------------------------------------</span> <span class="c1"># AVAILABLE COMMANDLINE ARGUMENTS TO SET</span> @@ -415,6 +416,7 @@ with an editor and adapt the installation parameters in the section labelled wit <span class="nv">GATEWAY</span><span class="o">=</span>None <span class="nv">DESTINATION</span><span class="o">=</span>None <span class="nv">INSTALLDIR</span><span class="o">=</span>None +<span class="nv">SYSINSTALLDIR</span><span class="o">=</span>None <span class="nv">JOB_TEMPLATE</span><span class="o">=</span><span class="s1">''</span> <span class="nv">CONTROLFILE</span><span class="o">=</span><span class="s1">'CONTROL_EA5'</span> ... @@ -422,11 +424,11 @@ with an editor and adapt the installation parameters in the section labelled wit </div> </div> <p>Afterwards, type:</p> -<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ./setup.sh +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ./setup_local.sh </pre></div> </div> <p>to start the installation. You should see the following standard output.</p> -<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Output of setup.sh</span> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Output of setup_local.sh</span> WARNING: installdir has not been specified flex_extract will be installed in here by compiling the Fortran <span class="nb">source</span> in <path-to-flex_extract>/flex_extract_v7.1/Source/Fortran Install flex_extract_v7.1 software at <span class="nb">local</span> in directory <path-to-flex_extract>/flex_extract_v7.1 @@ -445,6 +447,58 @@ lrwxrwxrwx. <span class="m">1</span> <username> tmc <span class="m">20</sp </pre></div> </div> </div> +<div class="section" id="local-system-installation"> +<h2>Local system installation<a class="headerlink" href="#local-system-installation" title="Permalink to this headline">¶</a></h2> +<p>There is also the possibility to seperate the software executables from the user application files. For doing so, the <code class="docutils literal notranslate"><span class="pre">TARGET</span></code> parameter can be set to “syslocal” and the additional parameter <code class="docutils literal notranslate"><span class="pre">SYSINSTALLDIR</span></code> in the <code class="docutils literal notranslate"><span class="pre">setup_local.sh</span></code> has to be specified. This new path will contain the Fortran and Python executables of <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>. If you chose to set a system path for this, please start the script as root. +The user directory for <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code>, which basically consists of everything except the <code class="docutils literal notranslate"><span class="pre">Source</span></code> directory, will be installed into <code class="docutils literal notranslate"><span class="pre">INSTALLDIR</span></code>. +In this installation mode, an extra (hidden) <code class="docutils literal notranslate"><span class="pre">.setup.rc</span></code> file will be generated in the <code class="docutils literal notranslate"><span class="pre">Run</span></code> directory. It contains the necessary settings for running the local system mode.</p> +<p>Despite the change in the <code class="docutils literal notranslate"><span class="pre">TARGET</span></code> parameter, the meaning of <code class="docutils literal notranslate"><span class="pre">INSTALLDIR</span></code> and the additional <code class="docutils literal notranslate"><span class="pre">SYSINSTALLDIR</span></code>, the steps for installation are the same as in the local installation mentioned above. For example, modify the <code class="docutils literal notranslate"><span class="pre">setup_local.sh</span></code> file as follows:</p> +<div class="literal-block-wrapper docutils container" id="id1"> +<div class="code-block-caption"><span class="caption-text">‘Example settings for a local system installation.’</span><a class="headerlink" href="#id1" title="Permalink to this code">¶</a></div> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>... +<span class="c1"># -----------------------------------------------------------------</span> +<span class="c1"># AVAILABLE COMMANDLINE ARGUMENTS TO SET</span> +<span class="c1">#</span> +<span class="c1"># THE USER HAS TO SPECIFY THESE PARAMETER</span> +<span class="c1">#</span> +<span class="nv">TARGET</span><span class="o">=</span><span class="s1">'syslocal'</span> +<span class="nv">MAKEFILE</span><span class="o">=</span><name_of_your_makefile> +<span class="nv">ECUID</span><span class="o">=</span>None +<span class="nv">ECGID</span><span class="o">=</span>None +<span class="nv">GATEWAY</span><span class="o">=</span>None +<span class="nv">DESTINATION</span><span class="o">=</span>None +<span class="nv">INSTALLDIR</span><span class="o">=</span><span class="nv">$HOME</span> +<span class="nv">SYSINSTALLDIR</span><span class="o">=</span>/usr/bin/ +<span class="nv">JOB_TEMPLATE</span><span class="o">=</span><span class="s1">''</span> +<span class="nv">CONTROLFILE</span><span class="o">=</span><span class="s1">'CONTROL_EA5'</span> +... +</pre></div> +</div> +</div> +<p>Afterwards, type:</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ sudo ./setup_local.sh +</pre></div> +</div> +<p>to start the installation. You should see the following standard output.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>Flex_extract will be installed in <<span class="nv">$HOME</span>> +Install flex_extract_v7.1.2 software as syslocal in directory /usr/bin/flex_extract_v7.1.2 + +Using makefile: makefile_local_gfortran +/usr/local/bin/gfortran -O3 -march<span class="o">=</span>native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert<span class="o">=</span>big-endian -c ./rwgrib2.f90 +/usr/local/bin/gfortran -O3 -march<span class="o">=</span>native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert<span class="o">=</span>big-endian -c ./phgrreal.f90 +/usr/local/bin/gfortran -O3 -march<span class="o">=</span>native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert<span class="o">=</span>big-endian -c ./grphreal.f90 +/usr/local/bin/gfortran -O3 -march<span class="o">=</span>native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert<span class="o">=</span>big-endian -c ./ftrafo.f90 +/usr/local/bin/gfortran -O3 -march<span class="o">=</span>native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert<span class="o">=</span>big-endian -c ./calc_etadot.f90 +/usr/local/bin/gfortran -O3 -march<span class="o">=</span>native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert<span class="o">=</span>big-endian -c ./posnam.f90 +/usr/local/bin/gfortran rwgrib2.o calc_etadot.o ftrafo.o grphreal.o posnam.o phgrreal.o -o calc_etadot_fast.out -O3 -march<span class="o">=</span>native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -fopenmp +ln -sf calc_etadot_fast.out calc_etadot + +lrwxrwxrwx. <span class="m">1</span> <username> tmc <span class="m">20</span> <span class="m">27</span>. Okt <span class="m">23</span>:25 ./calc_etadot -> calc_etadot_fast.out +SUCCESS: INSTALLATION FINISHED! +</pre></div> +</div> +<p>You can now change into the user directory specified in <code class="docutils literal notranslate"><span class="pre">INSTALLDIR</span></code> and find a flex_extract_vX.X directory there.</p> +</div> </div> diff --git a/Documentation/html/_modules/ControlFile.html b/Documentation/html/_modules/ControlFile.html index cce975f..8f0cb69 100644 --- a/Documentation/html/_modules/ControlFile.html +++ b/Documentation/html/_modules/ControlFile.html @@ -565,6 +565,7 @@ <span class="bp">self</span><span class="o">.</span><span class="n">flexextractdir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> <span class="bp">self</span><span class="o">.</span><span class="n">exedir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span> <span class="bp">self</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">sysinstalldir</span> <span class="o">=</span> <span class="kc">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">makefile</span> <span class="o">=</span> <span class="kc">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="kc">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">gateway</span> <span class="o">=</span> <span class="kc">None</span> diff --git a/Documentation/html/_modules/install.html b/Documentation/html/_modules/install.html index 2c18a49..208a17a 100644 --- a/Documentation/html/_modules/install.html +++ b/Documentation/html/_modules/install.html @@ -180,7 +180,7 @@ <span class="c1"># - use of tarfile package in python</span> <span class="c1"># June 2020 - Anne Philipp</span> <span class="c1"># - renamed "convert" functions to "fortran" functions</span> -<span class="c1"># - reconfigured mk_tarball to select *.template files instead </span> +<span class="c1"># - reconfigured mk_tarball to select *.template files instead</span> <span class="c1"># of *.nl and *.temp</span> <span class="c1"># - added check for makefile settings</span> <span class="c1">#</span> @@ -236,6 +236,7 @@ <span class="kn">import</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="nn">subprocess</span> <span class="kn">import</span> <span class="nn">tarfile</span> +<span class="kn">import</span> <span class="nn">shutil</span> <span class="kn">from</span> <span class="nn">argparse</span> <span class="kn">import</span> <span class="n">ArgumentParser</span><span class="p">,</span> <span class="n">ArgumentDefaultsHelpFormatter</span> <span class="c1"># software specific classes and modules from flex_extract</span> @@ -243,7 +244,8 @@ <span class="kn">from</span> <span class="nn">Classes.ControlFile</span> <span class="kn">import</span> <span class="n">ControlFile</span> <span class="kn">from</span> <span class="nn">Classes.UioFiles</span> <span class="kn">import</span> <span class="n">UioFiles</span> <span class="kn">from</span> <span class="nn">Mods.tools</span> <span class="kn">import</span> <span class="p">(</span><span class="n">make_dir</span><span class="p">,</span> <span class="n">put_file_to_ecserver</span><span class="p">,</span> <span class="n">submit_job_to_ecserver</span><span class="p">,</span> - <span class="n">silent_remove</span><span class="p">,</span> <span class="n">execute_subprocess</span><span class="p">,</span> <span class="n">none_or_str</span><span class="p">)</span> + <span class="n">silent_remove</span><span class="p">,</span> <span class="n">execute_subprocess</span><span class="p">,</span> <span class="n">none_or_str</span><span class="p">,</span> + <span class="n">overwrite_lines_in_file</span><span class="p">,</span> <span class="n">check_for_string_in_file</span><span class="p">)</span> <span class="c1"># ------------------------------------------------------------------------------</span> <span class="c1"># FUNCTIONS</span> @@ -264,11 +266,13 @@ <span class="n">c</span><span class="o">.</span><span class="n">assign_args_to_control</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="n">check_install_conditions</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> - <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">'local'</span><span class="p">:</span> <span class="c1"># ecgate or cca</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'local'</span><span class="p">,</span> <span class="s1">'syslocal'</span><span class="p">]:</span> <span class="c1"># ecgate or cca</span> <span class="n">install_via_gateway</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># local</span> <span class="n">install_local</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"SUCCESS: INSTALLATION FINISHED!"</span><span class="p">)</span> + <span class="k">return</span></div> <div class="viewcode-block" id="get_install_cmdline_args"><a class="viewcode-back" href="../Documentation/Api/api_python.html#install.get_install_cmdline_args">[docs]</a><span class="k">def</span> <span class="nf">get_install_cmdline_args</span><span class="p">():</span> @@ -289,7 +293,7 @@ <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">'--target'</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s1">'install_target'</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> - <span class="n">help</span><span class="o">=</span><span class="s2">"Valid targets: local | ecgate | cca , </span><span class="se">\</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"Valid targets: syslocal | local | ecgate | cca , </span><span class="se">\</span> <span class="s2"> the latter two are at ECMWF"</span><span class="p">)</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--makefile"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"makefile"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> @@ -311,8 +315,12 @@ <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--installdir"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"installdir"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> - <span class="n">help</span><span class="o">=</span><span class="s1">'Root directory of the '</span> + <span class="n">help</span><span class="o">=</span><span class="s1">'Root (user) directory of the '</span> <span class="s1">'flex_extract installation'</span><span class="p">)</span> + <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--sysinstalldir"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"sysinstalldir"</span><span class="p">,</span> + <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s1">'System installation path; where '</span> + <span class="s1">'executables are stored.'</span><span class="p">)</span> <span class="c1"># arguments for job submission to ECMWF, only needed by submit.py</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--job_template"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s1">'job_template'</span><span class="p">,</span> @@ -389,16 +397,24 @@ <span class="n">tar_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">,</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">'.tar'</span><span class="p">)</span> - <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">==</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">:</span> - <span class="nb">print</span><span class="p">(</span><span class="s1">'WARNING: installdir has not been specified'</span><span class="p">)</span> - <span class="nb">print</span><span class="p">(</span><span class="s1">'flex_extract will be installed in here by compiling the '</span> <span class="o">+</span> - <span class="s1">'Fortran source in '</span> <span class="o">+</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">)</span> - <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> <span class="c1"># creates the target working directory for flex_extract</span> - <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expandvars</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span> - <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">))</span> - <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">!=</span> \ - <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">):</span> + <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expandvars</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span> + <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)))</span> + <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expandvars</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span> + <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)))</span> + + <span class="c1"># this is standard installation into a single directory</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">==</span> <span class="s1">'local'</span><span class="p">:</span> + + <span class="c1"># installation into the current directory</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'WARNING: installdir has not been specified'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'flex_extract will be installed in current dir by compiling the '</span> <span class="o">+</span> + <span class="s1">'Fortran source in '</span> <span class="o">+</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">)</span> + <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">)</span> + <span class="c1"># installation into a different path</span> + <span class="k">elif</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">!=</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="p">:</span> + + <span class="c1"># creates the target working directory for flex_extract</span> <span class="n">mk_tarball</span><span class="p">(</span><span class="n">tar_file</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="p">)</span> <span class="n">make_dir</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">))</span> @@ -409,13 +425,92 @@ <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">,</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_FORTRAN_SRC</span><span class="p">))</span> - <span class="c1"># Create Fortran executable</span> - <span class="nb">print</span><span class="p">(</span><span class="s1">'Install '</span> <span class="o">+</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">' software at '</span> <span class="o">+</span> - <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">+</span> <span class="s1">' in directory '</span> <span class="o">+</span> - <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> - - <span class="n">del_fortran_build</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)</span> - <span class="n">mk_fortran_build</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">)</span> + <span class="c1"># Create Fortran executable</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Install '</span> <span class="o">+</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">' software at '</span> <span class="o">+</span> + <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">+</span> <span class="s1">' in directory '</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">+</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="n">del_fortran_build</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)</span> + <span class="n">mk_fortran_build</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">)</span> + <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s1">'../../'</span><span class="p">)</span> + <span class="c1"># make sure that the correct calling of submit.py script is in run_local.sh</span> + <span class="n">overwrite_lines_in_file</span><span class="p">(</span><span class="s1">'Run/run_local.sh'</span><span class="p">,</span> + <span class="s1">'pyscript='</span><span class="p">,</span> <span class="s1">'pyscript=../Source/Python/submit.py</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="c1"># this is system installation were executables and user files are separated</span> + <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">==</span> <span class="s1">'syslocal'</span><span class="p">:</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span> <span class="p">:</span> + <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">'ERROR: System installation path is equal to user '</span> + <span class="s1">'installation path.</span><span class="se">\n</span><span class="s1"> Please change either the system '</span> + <span class="s1">'installation path or use installation target "local".'</span><span class="p">)</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Flex_extract will be installed in current directory!'</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> <span class="c1"># install user part in different dir</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Flex_extract will be installed in '</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="p">)</span> + + <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">)</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">):</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span> + + <span class="c1"># copy all files except Python and Fortranfiles to this dir</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">,</span> + <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span> <span class="n">symlinks</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">'Source'</span><span class="p">))</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">'.git'</span><span class="p">))</span> + <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span> <span class="s1">'*~'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">:</span> + <span class="n">silent_remove</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> + + <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">'setup.sh'</span><span class="p">))</span> + <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">'setup_local.sh'</span><span class="p">))</span> + + <span class="c1"># configure run_local script correctly</span> + <span class="c1"># check if source of system config file is already in run_local.sh,</span> + <span class="c1"># if not, add it</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">check_for_string_in_file</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">'Run/run_local.sh'</span><span class="p">),</span> + <span class="s1">'source .setup.rc'</span><span class="p">):</span> + <span class="n">overwrite_lines_in_file</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">'Run/run_local.sh'</span><span class="p">),</span> + <span class="s1">'# PATH TO SUBMISSION SCRIPT'</span><span class="p">,</span> + <span class="s1">'# PATH TO SUBMISSION SCRIPT</span><span class="se">\n</span><span class="s1">source '</span><span class="o">+</span><span class="n">_config</span><span class="o">.</span><span class="n">FILE_SYS_CONFIG</span><span class="o">+</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="c1"># make sure that the correct calling of submit.py script is in run_local.sh</span> + <span class="n">overwrite_lines_in_file</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">'Run/run_local.sh'</span><span class="p">),</span> + <span class="s1">'pyscript='</span><span class="p">,</span> <span class="s1">'pyscript=submit.py</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="c1"># change permission for file to executable</span> + <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">'chmod'</span><span class="p">,</span> <span class="s1">'0775'</span><span class="p">,</span> + <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">),</span><span class="s1">'Run/run_local.sh'</span><span class="p">)])</span> + + + <span class="c1"># create systemdir</span> + <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span><span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">)</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">):</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)</span> + + <span class="c1"># create setup file for running flex_extract with system installation</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">),</span><span class="s1">'Run/.setup.rc'</span><span class="p">),</span><span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fio</span><span class="p">:</span> + <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'#!/bin/bash </span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'export FLEXEXTRACT_USER_DIR='</span><span class="o">+</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span><span class="o">+</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'export PATH='</span><span class="o">+</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)</span><span class="o">+</span><span class="s1">'/Python:$</span><span class="si">{PATH}</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'export PATH='</span><span class="o">+</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)</span><span class="o">+</span><span class="s1">':$</span><span class="si">{PATH}</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="c1"># copy all Python and Fortranfiles to this dir</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_SOURCES</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span> <span class="n">symlinks</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span><span class="s1">'Fortran'</span><span class="p">))</span> + <span class="c1"># Create Fortran executable</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Install '</span> <span class="o">+</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">' software as '</span> <span class="o">+</span> + <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">+</span> <span class="s1">' in directory '</span> <span class="o">+</span> + <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="n">del_fortran_build</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)</span> + <span class="n">mk_fortran_build</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">)</span> + + <span class="n">outfile</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span><span class="s1">'*.out'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> + <span class="n">test</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span><span class="s1">'calc_etadot'</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">outfile</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'WARNING: Multiple executables for Fortran code are available!'</span><span class="p">)</span> + <span class="c1"># move executable one dir up and delete Fortran dir</span> + <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s1">'..'</span><span class="p">)</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">outfile</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span><span class="s1">'calc_etadot'</span><span class="p">))</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">),</span><span class="s1">'Fortran'</span><span class="p">))</span> <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">tar_file</span><span class="p">):</span> @@ -450,7 +545,7 @@ <span class="nb">print</span><span class="p">(</span><span class="s1">'use -h or --help for help'</span><span class="p">)</span> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> - <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">!=</span> <span class="s1">'local'</span><span class="p">:</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'local'</span><span class="p">,</span> <span class="s1">'syslocal'</span><span class="p">]:</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">:</span> <span class="nb">print</span><span class="p">(</span><span class="s1">'Please enter your ECMWF user id and group id '</span> <span class="s1">' with command line options --ecuid --ecgid'</span><span class="p">)</span> @@ -466,9 +561,16 @@ <span class="s1">'local gateway server possible!'</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">:</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{HOME}</span><span class="s1">'</span> - <span class="k">else</span><span class="p">:</span> <span class="c1"># local</span> + <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">==</span> <span class="s1">'local'</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">:</span> + <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> + <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">==</span> <span class="s1">'syslocal'</span><span class="p">:</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">:</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR: System installation was selected but '</span> + <span class="s1">'no system installation path was defined.'</span><span class="p">)</span> + <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">:</span> <span class="nb">print</span><span class="p">(</span><span class="s1">'WARNING: no makefile was specified.'</span><span class="p">)</span> @@ -484,7 +586,7 @@ <span class="nb">print</span><span class="p">(</span><span class="s1">'WARNING: default makefile selected: makefile_cray'</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="k">pass</span> - + <span class="k">return</span></div> @@ -876,7 +978,7 @@ <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR: makefile call failed:'</span><span class="p">)</span> <span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> - <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">'ls'</span><span class="p">,</span> <span class="s1">'-l'</span><span class="p">,</span> + <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">'ls'</span><span class="p">,</span> <span class="s1">'-l'</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">src_path</span><span class="p">,</span> <span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span><span class="p">)],</span> <span class="n">error_msg</span><span class="o">=</span><span class="s1">'FORTRAN EXECUTABLE COULD NOT BE FOUND!'</span><span class="p">)</span> diff --git a/Documentation/html/_modules/submit.html b/Documentation/html/_modules/submit.html index 324208d..fb19610 100644 --- a/Documentation/html/_modules/submit.html +++ b/Documentation/html/_modules/submit.html @@ -275,7 +275,7 @@ <span class="c1"># send files to ECMWF server</span> <span class="k">else</span><span class="p">:</span> <span class="n">submit</span><span class="p">(</span><span class="n">job_template</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">queue</span><span class="p">)</span> - <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">'FLEX_EXTRACT JOB SCRIPT IS SUBMITED!'</span> + <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">'FLEX_EXTRACT JOB SCRIPT IS SUBMITTED!'</span> <span class="n">normal_exit</span><span class="p">(</span><span class="n">exit_message</span><span class="p">)</span> diff --git a/Documentation/html/_modules/tools.html b/Documentation/html/_modules/tools.html index 2bdf28a..6754458 100644 --- a/Documentation/html/_modules/tools.html +++ b/Documentation/html/_modules/tools.html @@ -410,7 +410,7 @@ <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--queue"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"queue"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s1">'The name of the ECMWF server name where the'</span> - <span class="s1">'job script is to be submitted '</span> + <span class="s1">'job script is to be submitted '</span> <span class="s1">'(e.g. ecgate | cca | ccb)'</span><span class="p">)</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span> @@ -785,7 +785,7 @@ <div class="viewcode-block" id="make_dir"><a class="viewcode-back" href="../Documentation/Api/api_python.html#tools.make_dir">[docs]</a><span class="k">def</span> <span class="nf">make_dir</span><span class="p">(</span><span class="n">directory</span><span class="p">):</span> <span class="sd">'''Creates a directory.</span> -<span class="sd"> If the directory already exists, an information is printed and the creation </span> +<span class="sd"> If the directory already exists, an information is printed and the creation</span> <span class="sd"> skipped. The program stops only if there is another problem.</span> <span class="sd"> Parameters</span> @@ -1017,8 +1017,8 @@ <span class="sd"> Parameters</span> <span class="sd"> ----------</span> <span class="sd"> cmd_list : list of str</span> -<span class="sd"> A list of the components for the command line execution. </span> -<span class="sd"> They will be concatenated with blank space for the command </span> +<span class="sd"> A list of the components for the command line execution.</span> +<span class="sd"> They will be concatenated with blank space for the command</span> <span class="sd"> to be submitted, like ['mv', file1, file2] for mv file1 file2.</span> <span class="sd"> Return</span> @@ -1071,6 +1071,62 @@ <span class="k">return</span> <span class="n">start_period</span><span class="p">,</span> <span class="n">end_period</span></div> + + +<div class="viewcode-block" id="check_for_string_in_file"><a class="viewcode-back" href="../Documentation/Api/api_python.html#tools.check_for_string_in_file">[docs]</a><span class="k">def</span> <span class="nf">check_for_string_in_file</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="n">search_string</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Search for a specific string in a file and return True if</span> +<span class="sd"> the string was found.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> filepath : str</span> +<span class="sd"> The full file path which is to be examined.</span> + +<span class="sd"> search_string : str</span> +<span class="sd"> The string which is looked up for in the file.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> Boolean :</span> +<span class="sd"> True : String was found</span> +<span class="sd"> False : String was not found</span> +<span class="sd"> """</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fio</span><span class="p">:</span> + <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">fio</span><span class="p">:</span> + <span class="k">if</span> <span class="n">search_string</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">return</span> <span class="kc">False</span></div> + + +<div class="viewcode-block" id="overwrite_lines_in_file"><a class="viewcode-back" href="../Documentation/Api/api_python.html#tools.overwrite_lines_in_file">[docs]</a><span class="k">def</span> <span class="nf">overwrite_lines_in_file</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="n">search_string</span><span class="p">,</span> <span class="n">sub_string</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Overwrites lines which contain the given search string with the</span> +<span class="sd"> substitution string.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> search_string : str</span> +<span class="sd"> The string which is looked up for in the file.</span> + +<span class="sd"> sub_string : str</span> +<span class="sd"> The string which overwrites the search string.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> """</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fio</span><span class="p">:</span> + <span class="n">data</span> <span class="o">=</span> <span class="n">fio</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fio</span><span class="p">:</span> + <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span> + <span class="k">if</span> <span class="n">search_string</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span> + <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">sub_string</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> + + <span class="k">return</span></div> + </pre></div> </div> diff --git a/Documentation/html/_sources/Documentation/Input/setup.rst.txt b/Documentation/html/_sources/Documentation/Input/setup.rst.txt index ee4469d..3ef2879 100644 --- a/Documentation/html/_sources/Documentation/Input/setup.rst.txt +++ b/Documentation/html/_sources/Documentation/Input/setup.rst.txt @@ -164,6 +164,7 @@ we see again all possible command line parameters. usage: install.py [-h] [--target INSTALL_TARGET] [--makefile MAKEFILE] [--ecuid ECUID] [--ecgid ECGID] [--gateway GATEWAY] [--destination DESTINATION] [--installdir INSTALLDIR] + [--sysinstalldir SYSINSTALLDIR] [--job_template JOB_TEMPLATE] [--controlfile CONTROLFILE] Install flex_extract software locally or on ECMWF machines @@ -171,7 +172,7 @@ we see again all possible command line parameters. optional arguments: -h, --help show this help message and exit --target INSTALL_TARGET - Valid targets: local | ecgate | cca , the latter two + Valid targets: syslocal | local | ecgate | cca , the latter two are at ECMWF (default: None) --makefile MAKEFILE Name of makefile to compile the Fortran code. (default depends on `target`: local - makefile_local_gfortran, @@ -185,6 +186,9 @@ we see again all possible command line parameters. --installdir INSTALLDIR Root directory where flex_extract will be installed to. (default: None) + --sysinstalldir SYSINSTALLDIR + System installation path; where executables are + stored. (default: None) --job_template JOB_TEMPLATE The rudimentary template file to create a batch job template for submission to ECMWF servers. (default: @@ -197,6 +201,7 @@ we see again all possible command line parameters. + .. toctree:: :hidden: :maxdepth: 2 diff --git a/Documentation/html/_sources/Installation/local.rst.txt b/Documentation/html/_sources/Installation/local.rst.txt index 879a974..b89b534 100644 --- a/Documentation/html/_sources/Installation/local.rst.txt +++ b/Documentation/html/_sources/Installation/local.rst.txt @@ -265,20 +265,20 @@ Local installation The Fortran program called ``calc_etadot`` will be compiled during the installation process. A suitable makefile (``makefile_local_gfortran``) for the compilation is set by default. -This may be overwritten by the ``MAKEFILE`` parameter in ``setup.sh``. +This may be overwritten by the ``MAKEFILE`` parameter in ``setup_local.sh``. -However, you may have to adapt the makefile for your environment (the current default makefile works on Debian stretch and similar GNU/Linux distributions). If you use a new name for it, you will have to insert it into ``setup.sh`` +However, you may have to adapt the makefile for your environment (the current default makefile works on Debian stretch and similar GNU/Linux distributions). If you use a new name for it, you will have to insert it into ``setup_local.sh`` For details on the makefile and how to adapt them, see :ref:`Fortran Makefile <ref-convert>`. -In the root directory of ``flex_extract``, open the ``setup.sh`` script +In the root directory of ``flex_extract``, open the ``setup_local.sh`` script with an editor and adapt the installation parameters in the section labelled with "AVAILABLE COMMANDLINE ARGUMENTS TO SET" as shown below: .. code-block:: bash :caption: 'Example settings for a local installation.' - :name: setup.sh + :name: setup_local.sh ... # ----------------------------------------------------------------- @@ -293,6 +293,7 @@ with an editor and adapt the installation parameters in the section labelled wit GATEWAY=None DESTINATION=None INSTALLDIR=None + SYSINSTALLDIR=None JOB_TEMPLATE='' CONTROLFILE='CONTROL_EA5' ... @@ -302,14 +303,14 @@ Afterwards, type: .. code-block:: bash - $ ./setup.sh + $ ./setup_local.sh to start the installation. You should see the following standard output. .. code-block:: bash - # Output of setup.sh + # Output of setup_local.sh WARNING: installdir has not been specified flex_extract will be installed in here by compiling the Fortran source in <path-to-flex_extract>/flex_extract_v7.1/Source/Fortran Install flex_extract_v7.1 software at local in directory <path-to-flex_extract>/flex_extract_v7.1 @@ -326,3 +327,65 @@ to start the installation. You should see the following standard output. lrwxrwxrwx. 1 <username> tmc 20 Aug 12 10:59 ./calc_etadot -> calc_etadot_fast.out + +Local system installation +========================= + +There is also the possibility to seperate the software executables from the user application files. For doing so, the ``TARGET`` parameter can be set to "syslocal" and the additional parameter ``SYSINSTALLDIR`` in the ``setup_local.sh`` has to be specified. This new path will contain the Fortran and Python executables of ``flex_extract``. If you chose to set a system path for this, please start the script as root. +The user directory for ``flex_extract``, which basically consists of everything except the ``Source`` directory, will be installed into ``INSTALLDIR``. +In this installation mode, an extra (hidden) ``.setup.rc`` file will be generated in the ``Run`` directory. It contains the necessary settings for running the local system mode. + +Despite the change in the ``TARGET`` parameter, the meaning of ``INSTALLDIR`` and the additional ``SYSINSTALLDIR``, the steps for installation are the same as in the local installation mentioned above. For example, modify the ``setup_local.sh`` file as follows: + + +.. code-block:: bash + :caption: 'Example settings for a local system installation.' + :name: setup_local.sh + + ... + # ----------------------------------------------------------------- + # AVAILABLE COMMANDLINE ARGUMENTS TO SET + # + # THE USER HAS TO SPECIFY THESE PARAMETER + # + TARGET='syslocal' + MAKEFILE=<name_of_your_makefile> + ECUID=None + ECGID=None + GATEWAY=None + DESTINATION=None + INSTALLDIR=$HOME + SYSINSTALLDIR=/usr/bin/ + JOB_TEMPLATE='' + CONTROLFILE='CONTROL_EA5' + ... + + +Afterwards, type: + +.. code-block:: bash + + $ sudo ./setup_local.sh + +to start the installation. You should see the following standard output. + +.. code-block:: bash + + Flex_extract will be installed in <$HOME> + Install flex_extract_v7.1.2 software as syslocal in directory /usr/bin/flex_extract_v7.1.2 + + Using makefile: makefile_local_gfortran + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./rwgrib2.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./phgrreal.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./grphreal.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./ftrafo.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./calc_etadot.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./posnam.f90 + /usr/local/bin/gfortran rwgrib2.o calc_etadot.o ftrafo.o grphreal.o posnam.o phgrreal.o -o calc_etadot_fast.out -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -fopenmp + ln -sf calc_etadot_fast.out calc_etadot + + lrwxrwxrwx. 1 <username> tmc 20 27. Okt 23:25 ./calc_etadot -> calc_etadot_fast.out + SUCCESS: INSTALLATION FINISHED! + + +You can now change into the user directory specified in ``INSTALLDIR`` and find a flex_extract_vX.X directory there. diff --git a/Documentation/html/genindex.html b/Documentation/html/genindex.html index a6913b9..4f906be 100644 --- a/Documentation/html/genindex.html +++ b/Documentation/html/genindex.html @@ -272,6 +272,8 @@ <li><a href="Documentation/Api/api_python.html#checks.check_dates">check_dates() (in module checks)</a> </li> <li><a href="Documentation/Api/api_python.html#get_mars_data.check_dates_for_nonflux_fc_times">check_dates_for_nonflux_fc_times() (in module get_mars_data)</a> +</li> + <li><a href="Documentation/Api/api_python.html#tools.check_for_string_in_file">check_for_string_in_file() (in module tools)</a> </li> <li><a href="Documentation/Api/api_python.html#checks.check_grid">check_grid() (in module checks)</a> </li> @@ -649,13 +651,15 @@ </li> <li><a href="Documentation/Api/api_python.html#ControlFile.ControlFile.omegadiff">omegadiff (ControlFile.ControlFile attribute)</a> </li> - </ul></td> - <td style="width: 33%; vertical-align: top;"><ul> <li><a href="Documentation/Api/api_python.html#ControlFile.ControlFile.oper">oper (ControlFile.ControlFile attribute)</a> </li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> <li><a href="Documentation/Api/api_python.html#ControlFile.ControlFile.outputdir">outputdir (ControlFile.ControlFile attribute)</a> </li> <li><a href="Documentation/Api/api_python.html#EcFlexpart.EcFlexpart.outputfilelist">outputfilelist (EcFlexpart.EcFlexpart attribute)</a> +</li> + <li><a href="Documentation/Api/api_python.html#tools.overwrite_lines_in_file">overwrite_lines_in_file() (in module tools)</a> </li> </ul></td> </tr></table> diff --git a/Documentation/html/objects.inv b/Documentation/html/objects.inv index 80c1a3f56a4d658d479e7aa3791ed555561e97e3..5a8b1bf520c9ff04fab4160648fc99240df41c28 100644 GIT binary patch delta 7052 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 HV&4D&tD&~% delta 7012 zcmX?TvBhFSQ+?6h9TWeZU!LH#?(WQ6jX5`GTA0=cb>&oUk?fZ}E&M(#SJ!u<g?mrM z3FAE;*OmoMJ$|Ehug%Fab3K-d{RiydT(V@@m)FqicE6!`VtVMr<<mV+{eAqHzujit z!}aO^R@<!Nw^@Bi>*VI;&yPRJtng`ioLo9PefjpQinfBjH-+a{){FC=c-hJ;u{1IA zSGw^Bw+6q%8dfdwr@G_?jn}MF+PPBu9n*F%zB{%r9$&Q0h;6yJIQfc&U0ZANnWpwW z!P7=J(;Xw;oL+FM*~3Pu@M(j<Zlwd8f3J6Wpr*64+OhkQQNy=B$Nb8Y_Fw_^8~aNv zxQpV-gG?=+{8TLBmS`8<XITGyflWu=>o?~N_4cp)zE1J9*2xv?lOOEa=V|Gmd|XS( z?%1B9-j{VpKb`p7^z`Dop2>$yU)XiVI!_CYYpH%793{FiAXv{a`}yJXj~GlFl0&XL z@i!E1x^2l`nwR!L|IXek^_KUFkI&dGV)2*BNGkN)&$~~LDwgc=e(UHaf5`p%g8I_P zI@S{^C421Oa$kRKcd~EmZ}a&nsiMm=0~!P0-13`v<6NcR&viw;73VLnXP7x<o#ff? zo+8VZW?x~ye(RNh+DpEFJKfLrFU`JS{qEjWixyYSB(c84{Z3z$R`Z*$V^y&KQ2Rqv z;jXmk&x=2AyndDa;#D$Z(XXS1YC8fwpGXNy)R*=|eu&S07d2aK&l%b56-qbn?|Qb$ z!|3>gr;6uSM<1V&;1m*n(715@yHl$kJUpnotXh2kDdtpr3$EEa`PHtwKi~CvVZ_RN z@$S<fC^l9{tUYgUBC*`;&Zalc`e&ZqIjr!i>ZWvCjILJm1nEtD%rm5m_?SCZ8}t3G zxV`A>-x&#iRooemGBSz&jaebbR*?9{snojhw#W~;mM2St9r%(Y-(32|t$%m2G_zy< z!IyL7x@{h%N^;DbtGQG+?w-J-D*5&Dh0VrhEF2aaX3RO8bdvk{tcq^+OZ^>fvx7Tp zG$wViM^-%0-aFC!z%l))9W3iMpAtQ^l5^`BrS}eV+<tyE?09|np`pc;-@K2r6u$4_ zdiNvwC5z6<q<=>_gLckayM04`jlgM*J0F;IXI!r5d$B3pl4;w;vl6axZ>4$`E}ANn zb0IkR#%kRUoC*I#115i((bn%c>21+*<Bdm~<PP6WbMIGLZ&q_WV0+{=;S;Zw*^&=P z^IkW6q1*OMLQk?ao>6S^fh|@ZnJ!QFJ`UY<)J^8F?vITRo?br?o2%b<FwgLlTVeR| zzsCZvOHWAN5nX?Z(XB9?-Q6uP{Pn!}NivJiJ*~R!rZ{I-z-gUXd`B|R1oMS`_uITJ zXJ$F0>7`$qSqJ(a-ntX0A9l2RYP7~wiTsN4Mf=x;Y&-mUw^jFwtWrsR-f5G*ymbiL zVb1h2;isESCVRfKA@k$g6G{Rqq<f5ZY+LxpbbscnP1_xp+Hik3ThDIc+bF$K<@fo6 zDJzwh9O%uEOPP5gOvF8V`$q2V4;M@;QJi&rG55usHM`eZXuaFc`~3Q>>wGE4HMnoG zJ#j0$^J2@@(_A$#3ij*&h?CzDv0eX`#q#jy`Z61erP`0%)Rr`dw0Lgg;!G}i5%TDm z;JW#W+{f;8HO0oUM9xbLGrZwiuOj%g%+LRE%<;|*tC^3S^T|14ZBePZyj{1tihb3` zXJ$#Fe<s}jtl*!_o}jdhZ`bQ-?H|3qr4)Xx5}d{mR1qq>qc$#IH~htc2VMt+O%M9c zT{FkDwQciqNt+{?lM1bl?Bon#TvjQv%x}WG$p!{~wrh?>@111AFmJbw%)x_9-6i$f zLg(K#R}0)-Yw_;LLj|3;UGjY^dtCDmt~&I{ZQYWq2Bq6LpG6dWICtRT{g{K-+@kb- zWS7{fi7%e^^{nDe1G|g$e^-Rm3oSI#n)G;D;T*HWkv#!VD|acDIo|bOJmv7DRsF9m z4}8uK<h?D(;~FNP!*Kg^kGNuPo{@#POy$HUh4lrKuS?#@?Vo*M_1jnb8@mpgoIZ6m zI+nS`vC_u=IRn>aW5<Xl>mZezb<7cyRIlFrd_UjeK(b+@&a^1*j}jjio!IWspvfB+ zE~paul!0|wsW8``rzQ{Lx2>tr`Plh7L)a-cFhgSfj0YFlgu@SrCbTf|z4<Kd;AJyy zkJY5b2CIJ6uh2Ui@ph_*&W!nMxLR)RV{I4Nv%!4M8M6feZ3YpNS6?n*;rA@%zIL3K zr=s@7E74<YA5}trij-6cIIHhp^GN;y|9nP|?}lH$)>|Ixb_xx>TV!wMS^2kRsbofD zzo|&dxz}3hS;d{XPIg;VK1~;r3cDfq?Ad|68#nqFC!D!x!&ZOKJHbf%l-O5o9lKho zyKOh+_S|-S6lU!B`_bL=^7eavpIq+T^~uw|BKeE|!`IWAj<`RFt5J7z5jbRJH0$2f z?aU=dZOtdUtc-NND04%iK!IEL`NPxKVvWAou6O9D?)>=T!v^Q_^sc@<4UawhDt^Db zwBFJ9N8rKaj5!U?p8DN#^{ngb|9RUV)K{!9xO`~At*;)<Rad&#+vwFEC~flFU2EK& zm71wCrJ_)1A=l$QuT<|#+z>7)J>0fHu|Bye{K`!c3zN)**0tTMf)*OfOY<DK+-Bn1 zAZ4nu#9d?BL^UNT-U)$yZ<Z*$Xqz<W*A1sycIzv(hvXePWtj^kk2UPhU0T1-TJExn z(BcK_+cOqyVx4YKKf}>^yQs-MZrity&2=mG+({GQm-EwpDz>0Qfj_zHIn%ePvTo<g z?c9oMw|GRYC|QsoF-7ilsCMX+{XZ7@^UqlGQ_e;BJnJ3ni`)2J{l0PZ<tR>kvRsU( zCffC<K}Ut2!at_^WTy-D9-D4d_ul$gpD8g>J@bqC{^{%ew+KE`mHXV$SY3Yoa-gkX zY<-h`V!BtbUs~UrTJAU}&s#fh@2^x7s5^3g$?+4Hj(DA%bi1HE$R^9V^ZiqacL$%T zwk}FwdC|C7^O%Ep$eeF%riYSiFZXN7_Z&WDGLMDj`!2Edj~m{VrT9lbU)fNnZ8u}@ z#MAXET@P$|7)*Fsj+xeeTj@Td^=0zRh=v7|S83?{6mb5vGbly%hUAZ%yN#|q4;J+? zb@(-pdxH5U!>-9oTXTH`-^n^HSsrv`#X}aUU*e+jEyDe*_t-CP;jW04@87WB?r!V; zSq{gpGd=k9=lq7rF+rz{S6_0s*Lm;oI*>`knP2LKUj1o#gLAv|o0sTh|JLO(6LR_2 z692otW&OjW$Nq`hezL1Swjf?%z5K5~l57oS4|{jr;*AxEH#u}d!Nj3U;ed_ntY-zS zryF%=wj_HV<1uJU@L`wK=RLGHMZdo4ul)P-_BCI0emR})+N9n+-EnT!qAKH8r(NP( z^O&ku97%|7pL(L+I3V%asVSk?pI%|%;8><0;b6dc(B#NZ6G?rOk`=z27w7vQx$m=O z>y&(n?j`&jd#;!ts+O6#({b|eC5(#~8nBk#Q!3J(y4JB~`Uexeqt#~<_^riky!tvz zHb=dDJ9GWj1os2njLa2j2RDoT`DwN7%)==^*Hv+F-%BbzFx|}Zs%`!G-5GH=ww*n; zEa|`jYeR=AE+szuHn7!i+i<1*kC&8Jmdb*IhndafzfE+H2>EuWllMSQLtwK0oX7Lt z-}=~Sxa`*<fyF$RgxHLHz9sO^oO-c4ve_!iu-#JG$k~1~n~IfzYm%>q%A8!aubPI3 zA6Q-V@Y)&TR5{DTM?rVP*+Y`w>ciyImt8bFG3(0f$3BtM?(*JHEME}eG^wR%*}nyG zYhHeJmp*#<c5L~{>D%@R2re}dzjxkKX#at~@ms#|sN0|5d%4nYmtP+5w#`*d4n7Qq z3`tTQg1uH(&xv)N-&>?vup%(X_SbGD`wPke_9y=z*rxoKcZQ*8-I22zC$n;R%`Ppe zzhxLRL%5lB+Ix>zqTD_k4@_XKy0YQG1Xeel3zOSemqqUQQFS=lqI5&P;Z^3aca58V zX=yy$U-Ppx?ewx!6SOXeNCxb^Vbrnxx%|4dj$58D;cjhP>yh@_?b7#oTg2Vd7Fshq zv`dz3n7BYW_jGq}PnDpAs#ee<Nx2W{ehUl_9}}-%zwYnn@8P?Qg&0Hs?OlI2h}ZO; zwuXz8y3&MO!9QAl|2n+$z*nV=gy#QI>LKNwOIeM03mM<quI=;LeE3@6zt&$jvTT=J zo>x-k^YXy`lX6R~QZ^JMoBB&WNEFy7!B`<CYg@8;=8p8FBg;0)ofKbUy)9=Ycg+W3 z#i*VNi8uV+OX@`qZPTALd!MP{i<9$B{s!LKxPMY9_m8vftL?QUx5-WLn&i4yyK_?A zMFF$eAhB07+qp!uH6I>)e%@-u{j#{_#tiC094jviw|Ta7v+ea{j!<!ZQpsm4dc;ig zVELLorYBE$Y;$#Ho%cK-Q|YFf?5}OEp6#0#&)e`!VxgK+mC|mn`uyk>eftzvDlIgY zD3%GD%~HB`lCN0Cdbb&;PDMWOas0CEl}=LFrSzB+XSVeF`Za%1Z$5M1J!1LxGxG6< z|GvF2ooKyB*Uf>==;4bG2UfF1xw36LuC#{Xh_>-7fzQh4ljgZ{&gZ#i!#I0)CU5Nf z=GwV8E(ZNgy=_|89G@irbLY$Yn=A5GzwgXD?Q%PD4HtiXRKT+OJchu-({|h0&)M{1 zN5hA-H5{Hyr_7H!r5hBw9K6b5s4QHZq|BXus_Ul8f=_}oGoOTa&zyO5f6klzHnznl z_q3$y3ua16*XAs)opZRp^+d$U9apRBF4m~qv{e|@T|1tk|In;GO(|D3c!Rv4dOeHb zwB@g*yt3w&omrBYt#NMUxsuszN<D7uoE~di4{Y%JZ1Bxm@EhmUC00hpllWc;on!fI zk(%cff8|l&rDs3CpBJ0?OQ=bZMR~W7VqAR8p6ai^Zq@sq5Eqi<c=h40)!L+(eK-HS z>^u_}Ue#iH?MPw^uiIOfTsEz`o4dFBB+vdDp?*TqAiLqI-P*MWBVCo6j<VMo-(M{( zvVi+%S<@+X1_%E2GsTM;x1_B$b~V{>HBrv?k=lX9$Cn4%may%gU%<YQ_qUv_$N%aa z{#!zSem^mI>Egs+rh2O?X0jQ-BCChawVLyjWB8@&yZ!}yZQtjyvTMaEfsd9yId)69 zY)*Wpsv>!-%gHSzWX|*xd*aT`lIzQyGM)Qx*E3a9v&xk_4Rb$T3XY8JjpOoN{p7`` zKj*Ks{oH-<Oy2%gVVw_!e>9uUl`Kv3eSUJ!#*Lc!H(!1^w#Iz7H}9Hn)|s+8r%p|J z=(scD?#;>e5zNu`|E7J{2)M9f!~G{q-SYQ(&-m7Q$C;n=)Sj?^CyyH(OIdWsPtEXE z@lEC@Z(o_rW#{Bo?R)iTr5E?^s@wu*BW``aC+uloYcDgeSQ)^}^0_^BLuL}kL7fKk z!w<|J>L#mf+ROa*T4{$!<f{9V^d?2GkW}pxV?0!OnR%UNUevL!IZX9|Q?3ZLJ%5zv z#2s6!U3NwL&*su=ReS4qF3(P!RHE9l&ot=o!@GS~>b|D_jM|#4{$*yF>eLs>zW*;C z+SF#W$KuP8<b8)1TV1N}tO&e#(roT|gHy4mI4>`M=#{XUZFb0<17<<`V&D3sEk5Tt zswiLZ;9PNB=a^3G{{rb#6$;l3U)0}uA)n@3@b3UapDNEogX}{Bem>?0Hmb${Uc98n z)c0ogld!0!wi9)aG<!OJhw5dqp4p`AeWgx0aoM8mXJ!tzE)t)-%CEWaxW2xpPwVpI zEX`W)t(AwRHt2sdy)#wm%;`U2pQRt3m45d+l>5%7B;8ZKn*SGV*yeioz>ZhP^DgQX z)lXRDymHmuC-WGRkA+-+e*Reg+(YHgGJY1f%-Sa{S`iUcEwJo1Pt@VZ8-COl|NHoL z`RD&CaR*cXSA6~a^Z4p=`|~on{y%wkS^E|`{64#0KFyz#*SL%Q*s&YIZpm|lCWI{g zzWLVitqEtG*sOB%pJX5ZYHAge_PTz1b#?FjZL@-T>l2GS*B{v*s5;NBGh=_h(_6`H z>K7-!{ePwX(bBTmvia+_bM5s1;Gb5KAzsGKp115|+7Z{5%^6>RuVhxe$X{u#aKAGA z()S~6zOfr_)^0Ps{cvOU$$us+*+Mbas<GT<D=tX-7cWxx4L`=$-JWx7#m(r&{q864 zER^~5A<dIBM!B@!$MZJZG2`MR-DQc!#yV!n#_~GfQgRlbU$_3w%(vX@*80zjTycN; zEi>=0iSI*?{`yfC6v}*I<FehMMQ+uC9JRNZ9FE8t|MSr6OBCBHI$fBfIj$$)Rkhhc z(^hBR-H#hqb)RJFdH;9*!jDUH-W)V*eEu(*Rba{2)5<gY<I}F4@T{K`wp2OSM(Fun zgQeM74;Aw=rh50k;#<74Li~Ny-@SV*&l-nMOI4hBz?hFYvehT!?B_L4*iEJ+W_M0r zG0SWJR{=$XA{`M4<Ae9kD&9=hIqN#5&pk16?K6(R8E%#4UPm^cbK?y(_IGc5@#=Hn zr(eSHM};cN=8IIiZ7)3AqvXL+pL=qq!29-xrkRzuQshz}zv)!d+4p+s?W6DRd2PNI zC>XG6QeaN<=eES01gVxBmyL5v+l@Sq+?MLt$YgNsq3h3-*0d=GOU<k5mMjjw<?ecK zdta-Btk3=py^sF~wN<|pt!XbT-}cLZabFTkVB!^nzU5PH7BIXz`M^_f@)5B=;mP$2 zHtkAf-V}Qz>EY>?PhJJq<vC2rQ)*84lqi2y+tsJNjyd05z&B%;VX^8v_cyoMt)@0h zG5=-#{jG7;r<hfz;yCl>PI<f7>DcEzzbuo_DrR5S`6~DRy1_1?#9d;mwx3`yeD-A5 zir7u*o<EZEcsWXZzAgXPE&u2Bi)r#NUaY)#Dz*OL58sGG+avEyIn^@v)l9Bk7w()6 zaEw#=t+H5Q*G+-`tv{;&&#paK`E9LyQ}gS~UpM>;5-q9FwtCG!;dqS5qV7u;|7Tn1 zy!$hI%d;y}wXO-veQaOSV#~>Mdcy^W<t51tY0cM~&Z@~B>Zsi{*Xrp_xqUzNH#}|( zV3jkE*q0gfFtNUYW!Y*j&7JJZ>+>3mXZ)6K4Q&$V3}*H)@BbG%;m`N`=k`_qyW73L z{`wi$&TB=QRoj2Hg?-<>Y`6Z8_G3L3S3Wnt<B>{m{3QF&{q6t0`hU7Vw{PAb93u8- zjWuJ$gFC7Z70*Aq^#9rMC9C*s7?n4DO1%GlzP<JDzuT8bWu0j4PN-jYFnEQf_UV&F z3~66Y`<Ck8d$jBMV-cerrpNv=eOCSTlRsng7FT}`&b?mFdyZI6*f2Bq<14wM`xXTi zXACFQy^4R587Kbb)q`H4wVO}wJbSs~s>Zpx3oG*@dfu*birF|v;-DA@OY=)HmY`j7 zVwsxl+4`Ozo*mfdeRxvPZ_A4GZ}m|>m+fj5_g~$&?0vN2OofoG8WD04uO6;j<imbg zzRzmKW{C}(zHtV)yi~b6Y0-+iZH6COzu)IB2;#4sA|hxd{V3dTg7+>CP0htki=`G; zKYh7YBk9|p1zInwA6mGY@2PT-YN!xcZ{+q<`1G<%Iuo|93K6PJHU4dU>#OK9mnBxq z>SsSKn)`mEsia}6dszPDxhkd7%d98ZRG)IaXlpWoQ@HTr$HTe?DqM_)E9M-Yrl!{& zzO^IFEiFjp>DMmpoUg|UgRNa!R*HT6{`~x>U&oZ)-mhKUWiru~;~(QxZx@xz{FW<9 z?l5Io&b&P@A@pbQ0^vov&o<9Yo%cG}PSUqVdDWfz!;-T6M=m#X2dQ<Lw{CiT+Q@CL zO&@1k+=mSrYr+;>a>-d&KBGi^{ukF4U!BKA?U~}gJ9j-u6ganoC-dKv$<1xWEAnR9 z+Wor!#C_rW{a1e+V~za0v3*k<hgQ?S$vYd>nJXDuCVUt3={`NDnvY|G&A+wXXE>hf z3r$}5H1+8I<7tzt#TDzjW=6i?Ps_e>dc~@cM*#uZt7AN7a2|XS`^k9`<KyYK-_D4s zxv=&GL(^Af>;Jpr?D>knyp|HRWZUlN-KTKP)3NN)rDV$+d%5yM0(xBAAN#y-$ZJ_F z!S&DWQqAk@7Oxx(W`sxmIrZYx;)O?jCUnQ$aE}Xn?7ef5*p>QoX?}l7&FW1*9DKjw z%}c>Eiw>`-s9!Q|UxsJx`}*%WkG8yHpI21T{_pSR%f=HX{k}ifPS`fyuG((<>(iIh zm!A(^FYaBnH(+nw?j_grQ`c|)Irm)1bk*8fap$LhIka+vX-0A2trNe^tv7BEQkP<z zTKIfzZ;{6B&A-#%@U%49N>{vp#yyw)$E14O<ny~1CG30r(?NgNrNn*Temd-b%jNUA z>Di$<TUk#`>A9((JHzb4=bsMecPF`V$@MyJep99uq`W<Tje+6a1wpwIvNo<6X^Jg7 zxjm!8&ey%J%~&7hwj%nG;V$lP_l37NrQB!OT`K2#{GY_d=erEKmsVd$-#^7hXVGmj zo?7+y{PiN|?<ap+xpL0YaG7KEYfrygaDM&i9Tq!Y+M24!Dqf0Eapw)&e&l~u%c|Hf z>zNt7*FO%F?Uk-vXB{!m%F8~#{(Aez|3CZxhdP>9K3ck^Z%@RmKlA_puwQTUN#kat z_tp6Ni*vnh&U^XodM*op^0~r@Bb(Rz8wUSewYgUPRH^)u@cM6e%q=6FF7I0N$)!fD zU99x^J!u_Ht&nNn+&*95^7z(o*7&@O|LSbM+_S$_r>qriQtOIT(GcG|)5h#;!>adN zZt+Go_})$ucdH3woSdV5Y0q^x_w)O7D^EtumoQg*ym-%n`^u3jTXxMBx!!Nq6aI3x z&-1uAC$W7m5@VX9cr94#i|=w>7TuVo!nU_}RqiwY$TpWluP%HQS!I}>GVj=A0cKVC z$M^a?<L0f>ogO^3J=?o`hD|bee%6m?HR8`5k1kD;n&+2!>gp{kC9D5j^`$d!oQe*; zVw?UeZR)wue`<}YU0d`s^MZ^wu)X`bo=vYZzVs&Fq`U)Hww$gmS6esPoV)(n+UU>j ztDikz{`Ra^<<}OjM`wb5MuvY6Z=QZ_{XSccnVYr#JiU_nI`x?Aa48KV6xl&z2L zG8FeY|DGo#ZBJ54{AOi^vMJ6XTXQU1+c|!5%nN-H^mJpXzIENS>lx42f0{IJ`?Xnl zP0<T-TI}t%-TSd(a!t{FnZ^M7|L<1Y@2Ri)P@a+&b(^apWE-!+CuvjDrQypKwJh>l z7q)W7`T4U`csi0N_eE~;;NX)Lo+@u;XVhvk^_yXYq47*_i;GcypA{$kx_KcaM{mQK ztnMk7mr8OST(xJ{cCDpp_fD)>pRmO5+j*fa4BHEGCtiH>{d$@0jpJO_$DisH{_(y2 zEGYGddc9Cv=uQjy)VTS1+`pTOdrJI*=G<bLI;mm9!{zl?&E}kVeP8Xt;>4ft7tdES zPk5d5rz!98kwwadCevePzu;?G`seVGRMwKd;5l!5il;UFxU8P*b?FDsA|GK<^R8Jg zGnHP|2RZMY<h=8c|AX&&GCeaETRdNS-|WkiZGzA1Bl50xdLCZWaO&2#xpx*P2+U6l z$lI9yCT;VLthbZR!jJXce0WUlNn$O_w74mY7&5j$W|eyW`kiLJXi-K^NTAg0()IfP PO(t``|Ic_uS7svs<V2=O diff --git a/Documentation/html/searchindex.js b/Documentation/html/searchindex.js index 4313b2f..006706e 100644 --- a/Documentation/html/searchindex.js +++ b/Documentation/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["Developers/gen_docu","Documentation/Api/api_fortran","Documentation/Api/api_python","Documentation/Input/changes","Documentation/Input/compilejob","Documentation/Input/control","Documentation/Input/control_params","Documentation/Input/ecmwf_env","Documentation/Input/examples","Documentation/Input/fortran_makefile","Documentation/Input/jobscript","Documentation/Input/run","Documentation/Input/setup","Documentation/Input/templates","Documentation/Overview/app_modes","Documentation/Overview/prog_flow","Documentation/api","Documentation/disagg","Documentation/input","Documentation/output","Documentation/overview","Documentation/vertco","Ecmwf/access","Ecmwf/ec-links","Ecmwf/hintsecmwf","Ecmwf/msdata","Ecmwf/pubdata","Evaluation/metrics","Evaluation/staticcode","Evaluation/testcases","Installation/gateway","Installation/local","Installation/remote","Support/faq","Support/known_bugs_issues","authors","changelog","dev_guide","documentation","ecmwf_data","evaluation","index","installation","quick_start","support","todo"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.index":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["Developers/gen_docu.rst","Documentation/Api/api_fortran.rst","Documentation/Api/api_python.rst","Documentation/Input/changes.rst","Documentation/Input/compilejob.rst","Documentation/Input/control.rst","Documentation/Input/control_params.rst","Documentation/Input/ecmwf_env.rst","Documentation/Input/examples.rst","Documentation/Input/fortran_makefile.rst","Documentation/Input/jobscript.rst","Documentation/Input/run.rst","Documentation/Input/setup.rst","Documentation/Input/templates.rst","Documentation/Overview/app_modes.rst","Documentation/Overview/prog_flow.rst","Documentation/api.rst","Documentation/disagg.rst","Documentation/input.rst","Documentation/output.rst","Documentation/overview.rst","Documentation/vertco.rst","Ecmwf/access.rst","Ecmwf/ec-links.rst","Ecmwf/hintsecmwf.rst","Ecmwf/msdata.rst","Ecmwf/pubdata.rst","Evaluation/metrics.rst","Evaluation/staticcode.rst","Evaluation/testcases.rst","Installation/gateway.rst","Installation/local.rst","Installation/remote.rst","Support/faq.rst","Support/known_bugs_issues.rst","authors.rst","changelog.rst","dev_guide.rst","documentation.rst","ecmwf_data.rst","evaluation.rst","index.rst","installation.rst","quick_start.rst","support.rst","todo.rst"],objects:{"":{ControlFile:[2,0,0,"-"],EcFlexpart:[2,0,0,"-"],GribUtil:[2,0,0,"-"],MarsRetrieval:[2,0,0,"-"],UioFiles:[2,0,0,"-"],checks:[2,0,0,"-"],disaggregation:[2,0,0,"-"],get_mars_data:[2,0,0,"-"],install:[2,0,0,"-"],prepare_flexpart:[2,0,0,"-"],submit:[2,0,0,"-"],tools:[2,0,0,"-"]},"ControlFile.ControlFile":{"public":[2,2,1,""],accmaxstep:[2,2,1,""],acctime:[2,2,1,""],acctype:[2,2,1,""],accuracy:[2,2,1,""],addpar:[2,2,1,""],area:[2,2,1,""],assign_args_to_control:[2,3,1,""],assign_envs_to_control:[2,3,1,""],basetime:[2,2,1,""],cds_api:[2,2,1,""],check_conditions:[2,3,1,""],controlfile:[2,2,1,""],cwc:[2,2,1,""],dataset:[2,2,1,""],date_chunk:[2,2,1,""],debug:[2,2,1,""],destination:[2,2,1,""],doubleelda:[2,2,1,""],dpdeta:[2,2,1,""],dtime:[2,2,1,""],ec_api:[2,2,1,""],ecfsdir:[2,2,1,""],ecgid:[2,2,1,""],ecstorage:[2,2,1,""],ectrans:[2,2,1,""],ecuid:[2,2,1,""],end_date:[2,2,1,""],eta:[2,2,1,""],etadiff:[2,2,1,""],etapar:[2,2,1,""],exedir:[2,2,1,""],expver:[2,2,1,""],flexextractdir:[2,2,1,""],format:[2,2,1,""],gateway:[2,2,1,""],gauss:[2,2,1,""],gaussian:[2,2,1,""],grid:[2,2,1,""],inputdir:[2,2,1,""],install_target:[2,2,1,""],installdir:[2,2,1,""],left:[2,2,1,""],level:[2,2,1,""],levelist:[2,2,1,""],logicals:[2,2,1,""],lower:[2,2,1,""],mailfail:[2,2,1,""],mailops:[2,2,1,""],makefile:[2,2,1,""],marsclass:[2,2,1,""],maxstep:[2,2,1,""],number:[2,2,1,""],omega:[2,2,1,""],omegadiff:[2,2,1,""],oper:[2,2,1,""],outputdir:[2,2,1,""],prefix:[2,2,1,""],purefc:[2,2,1,""],request:[2,2,1,""],resol:[2,2,1,""],right:[2,2,1,""],rrint:[2,2,1,""],smooth:[2,2,1,""],start_date:[2,2,1,""],step:[2,2,1,""],stream:[2,2,1,""],time:[2,2,1,""],to_list:[2,3,1,""],type:[2,2,1,""],upper:[2,2,1,""],wrf:[2,2,1,""]},"EcFlexpart.EcFlexpart":{"public":[2,2,1,""],accmaxstep:[2,2,1,""],acctime:[2,2,1,""],acctype:[2,2,1,""],accuracy:[2,2,1,""],addpar:[2,2,1,""],area:[2,2,1,""],basetime:[2,2,1,""],calc_extra_elda:[2,3,1,""],create:[2,3,1,""],dataset:[2,2,1,""],dates:[2,2,1,""],deacc_fluxes:[2,3,1,""],dtime:[2,2,1,""],expver:[2,2,1,""],gaussian:[2,2,1,""],glevelist:[2,2,1,""],grid:[2,2,1,""],inputdir:[2,2,1,""],level:[2,2,1,""],levelist:[2,2,1,""],marsclass:[2,2,1,""],mreq_count:[2,2,1,""],number:[2,2,1,""],outputfilelist:[2,2,1,""],params:[2,2,1,""],process_output:[2,3,1,""],purefc:[2,2,1,""],resol:[2,2,1,""],retrieve:[2,3,1,""],server:[2,2,1,""],stream:[2,2,1,""],types:[2,2,1,""],write_namelist:[2,3,1,""]},"GribUtil.GribUtil":{copy_dummy_msg:[2,3,1,""],get_keys:[2,3,1,""],index:[2,3,1,""],set_keys:[2,3,1,""]},"MarsRetrieval.MarsRetrieval":{"public":[2,2,1,""],accuracy:[2,2,1,""],area:[2,2,1,""],data_retrieve:[2,3,1,""],dataset:[2,2,1,""],date:[2,2,1,""],display_info:[2,3,1,""],expver:[2,2,1,""],gaussian:[2,2,1,""],grid:[2,2,1,""],levelist:[2,2,1,""],levtype:[2,2,1,""],marsclass:[2,2,1,""],number:[2,2,1,""],param:[2,2,1,""],print_infodata_csv:[2,3,1,""],repres:[2,2,1,""],resol:[2,2,1,""],server:[2,2,1,""],step:[2,2,1,""],stream:[2,2,1,""],target:[2,2,1,""],time:[2,2,1,""],type:[2,2,1,""]},"UioFiles.UioFiles":{delete_files:[2,3,1,""],files:[2,2,1,""],path:[2,2,1,""],pattern:[2,2,1,""]},ControlFile:{ControlFile:[2,1,1,""]},EcFlexpart:{EcFlexpart:[2,1,1,""]},GribUtil:{GribUtil:[2,1,1,""]},MarsRetrieval:{MarsRetrieval:[2,1,1,""]},UioFiles:{UioFiles:[2,1,1,""]},checks:{check_accmaxstep:[2,4,1,""],check_acctime:[2,4,1,""],check_acctype:[2,4,1,""],check_addpar:[2,4,1,""],check_area:[2,4,1,""],check_basetime:[2,4,1,""],check_dates:[2,4,1,""],check_grid:[2,4,1,""],check_job_chunk:[2,4,1,""],check_len_type_time_step:[2,4,1,""],check_levels:[2,4,1,""],check_logicals_type:[2,4,1,""],check_mail:[2,4,1,""],check_maxstep:[2,4,1,""],check_number:[2,4,1,""],check_pathes:[2,4,1,""],check_ppid:[2,4,1,""],check_public:[2,4,1,""],check_purefc:[2,4,1,""],check_queue:[2,4,1,""],check_request:[2,4,1,""],check_step:[2,4,1,""],check_time:[2,4,1,""],check_type:[2,4,1,""]},disaggregation:{IA3:[2,4,1,""],dapoly:[2,4,1,""],darain:[2,4,1,""]},get_mars_data:{check_dates_for_nonflux_fc_times:[2,4,1,""],do_retrievement:[2,4,1,""],get_mars_data:[2,4,1,""],main:[2,4,1,""],mk_dates:[2,4,1,""],mk_server:[2,4,1,""],remove_old:[2,4,1,""],write_reqheader:[2,4,1,""]},install:{check_install_conditions:[2,4,1,""],del_fortran_build:[2,4,1,""],get_install_cmdline_args:[2,4,1,""],install_local:[2,4,1,""],install_via_gateway:[2,4,1,""],main:[2,4,1,""],mk_compilejob:[2,4,1,""],mk_env_vars:[2,4,1,""],mk_fortran_build:[2,4,1,""],mk_job_template:[2,4,1,""],mk_tarball:[2,4,1,""],un_tarball:[2,4,1,""]},prepare_flexpart:{main:[2,4,1,""],prepare_flexpart:[2,4,1,""]},submit:{main:[2,4,1,""],mk_jobscript:[2,4,1,""],submit:[2,4,1,""]},tools:{clean_up:[2,4,1,""],execute_subprocess:[2,4,1,""],generate_retrieval_period_boundary:[2,4,1,""],get_cmdline_args:[2,4,1,""],get_dimensions:[2,4,1,""],get_informations:[2,4,1,""],get_list_as_string:[2,4,1,""],init128:[2,4,1,""],make_dir:[2,4,1,""],my_error:[2,4,1,""],none_or_int:[2,4,1,""],none_or_str:[2,4,1,""],normal_exit:[2,4,1,""],product:[2,4,1,""],put_file_to_ecserver:[2,4,1,""],read_ecenv:[2,4,1,""],send_mail:[2,4,1,""],setup_controldata:[2,4,1,""],silent_remove:[2,4,1,""],submit_job_to_ecserver:[2,4,1,""],to_param_id:[2,4,1,""],to_param_id_with_tablenumber:[2,4,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"],"4":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method","4":"py:function"},terms:{"00h":[6,11],"10u":19,"10v":19,"12h":[6,11],"150px":[],"180w":6,"18utc":2,"1hourli":[8,43],"1st":[],"20c":[5,6,19,21,22,23,34,36,42,43],"20gb":43,"24h":6,"25th":[],"31st":[],"32000mb":[10,13],"3200mb":[4,13],"36hour":[8,43],"3hourli":[8,43],"4th":[],"60px":[],"6th":43,"althanstra\u00df":35,"boolean":2,"break":[],"case":[0,2,4,6,10,13,14,17,19,21,22,32,33,42,43,44],"class":[0,5,6,31],"default":[2,3,5,6,8,9,10,11,12,18,19,31,43],"export":[4,10,13],"f\u00fcr":13,"final":[0,2,11,15,17,19,21,43],"float":[2,11],"function":[2,17,41],"import":[2,6,11,30,31,33,34,36,39,43,44],"int":[2,6,30,32,43],"long":43,"m\u00e4r":[],"new":[2,6,10,11,17,31,41,43,44],"public":[2,5,6,8,10,11,12,14,22,23,24,31,36,39,41],"return":[2,4,10,34],"short":[2,5,6,17,30,43],"switch":[2,4,6,10,13,19],"true":[0,2],"try":[31,42,43],"while":[22,43],ARE:5,But:[],C3S:23,CDS:[2,22,23,33,36,42],Dps:[2,6],ENS:[23,43],FOR:[11,12],For:[0,2,5,6,9,11,13,14,18,19,21,22,24,30,31,32,34,39,42,43],HAS:[11,12,30,31,32,43],Has:[6,11],IDs:[2,6,15,43],Its:[2,43],NOT:[11,12,31],Not:12,One:[33,43],PBS:[4,10,13],THE:[11,12,30,31,32,43],THESE:[11,12,30,31,32,43],The:[0,2,13,14,15,17,18,19,20,21,22,30,31,32,34,39,42,43,44],Then:[2,11,14,42],There:[2,5,18,19,22,39,42,43],These:[4,10,13,17,42,43],Use:[0,6,30,32,43],Used:[2,12],Useful:[],Uses:2,Using:[31,43],WITH:[11,12],With:[6,11,12,18,43],_acc:19,_config:2,_expand:2,_file:0,_local:44,_orolsm:19,_static:[],_templat:2,a_0:17,a_1:17,a_2:17,a_3:17,abcd:2,abl:[2,13,18,19,22,30,43],about:[2,5,11,14,19,33,39,42,43],abov:[2,17,43],absolut:[],accept:[6,14,21,22,41,43],access:[2,5,6,12,14,23,24,30,31,32,33,39,41,42,43],accmaxstep:[2,5,6,10,43],accomplish:15,accord:[6,12,43],account:[30,32,39,42,43],acctim:[2,5,6,10,43],acctyp:[2,5,6,10,43],accumlu:2,accumul:[2,6,17,19,43],accur:43,accuraci:[2,5,6,10,19,21],achiev:21,action:[23,31,32],activ:42,activid:32,actual:[2,6,12,13,18,19,42,43],adapt:[0,2,5,6,9,11,12,13,18,30,31,32,33,36,43],add:[2,43],added:[17,19],adding:[2,43],addit:[2,5,11,15,17,20,30,39,43],addition:[2,6,14,30,43],addpar:[2,5,6,10,43],address:[2,6,12,19,30,32,43],adjac:17,adjust:41,admin:[30,31,33],adress:12,advanc:2,aerosol:35,affect:17,after:[2,5,6,11,12,15,17,18,43],afterward:[2,13,17,30,31,32],again:[11,12],against:[],aggreg:19,agre:22,agreement:14,algorithm:[2,17,36],align:[],alist:2,all:[2,5,6,8,11,12,13,15,17,19,30,31,32,33,42,43],alll:39,allow:[2,6,11,22,43],alpabet:2,alreadi:[2,11,12,22,30,31,32,42,43],also:[0,2,5,6,10,11,12,17,18,19,21,22,32,39,42,43,44],alter:19,altern:42,alwai:[6,11,12,43],amount:[2,6,11,17,39],anaconda:[31,42],analys:[21,39,43],analysi:[2,5,6,11,19,22,39,43],ani:[2,5,6,11,12,14,17,21,32,33,42,43,44],ann:[2,5,11,12,19,35],annep:[],annouc:44,announc:43,anog__ml:19,anog__sl:19,anoth:[2,6,9,33,43],ansh__sl:19,anymor:3,anyon:44,anyth:[6,11,12,13],api:[1,2,6,11,14,22,23,33,36,42,43],app:[30,32],appear:21,append:2,appli:[2,11,17,21,36,42,43],applic:[2,4,6,7,10,11,12,13,20,21,36,42,43,44],approach:17,appropri:[6,43,44],approri:6,april:43,apt:[30,31],arbitrari:2,archiv:[2,5,11,18,20,22,30,41,42],area:[2,5,6,10,11,12,17,19,31,43],arg:2,argument:[2,11,12,18,22,30,31,32,42,43,44],aris:14,around:[17,20],arrai:[2,34],arrang:2,array_t1:2,array_t2:2,array_t3:2,array_t4:2,articl:[2,6],ascrib:17,ask:[19,32,41,42,44],aspect:42,assign:[2,9],assign_args_to_control:2,assign_envs_to_control:2,assimil:43,assoc_nam:30,associ:[2,12,30,43],assum:[21,43],atm:[],atmospher:[17,20,23,34,41,43],attempt:2,attent:[6,43],attribut:[2,11,12,41],aug:31,august:43,austria:35,author:[2,5,11,12,32],auto:38,automat:[6,11,14,17,22,30,32,36,43,44],autoprogram:[],avail:[2,3,5,6,11,12,17,19,21,22,23,30,31,32,33,34,39,42,43,44],averag:17,avoid:[19,21,36,43],awar:[34,43],awk:[4,13],back:[6,11,42],bahaviour:[],ball:[2,42],base:[2,7,10,11,17,36,39,42],basetim:[2,5,6,10,11,17,36,43],bash:[11,12,43],basic:[2,17],batch:[4,10,11,12,13,18,20,30,43],bdynam:31,beaver:[30,31],becaus:[12,21,43],beck:2,been:[5,15,30,31,32,42,43],befor:[0,2,6,10,17,19,32,34,39,42,43],begin:[2,13,17],beginn:[18,43],behaviour:[5,18],being:[12,19],belong:[42,43],below:[7,9,17,19,21,31,34,43,44],best:[6,17,39,43],better:[6,43],between:[2,4,6,7,10,17,19,21,30,43],beyond:43,bicub:[],big:[30,31,32],bilinear:17,bin:[4,10,11,12,13],bionic:[30,31],bit:[2,6],blank:[2,11],block:[19,43],blockdiag:0,blockdiag_fontpath:0,blog:33,blue:[12,17],boku:35,border:17,both:[2,21,31,39,43],bottom:44,boundari:[2,11,17],box:[2,11,12,41],bracket:43,branch:42,broader:39,bstatic:31,bug:41,build:[2,23],built:32,bunch:2,buster:[9,30,31],button:42,bypass:[],calc_etadot:[4,12,13,15,18,21,30,31,32,36,38,42,43],calc_etadot_fast:[30,31,32],calc_extra_elda:2,calcul:[2,5,6,15,17,20,43],calendar:43,calibr:[6,43],call:[2,4,9,10,11,12,13,15,18,19,22,30,31,42,43],can:[2,3,5,6,9,11,12,13,14,15,18,19,21,22,30,31,32,34,39,40,41,42,43,44],cancel:22,cannot:[21,43],care:[6,11,43],carefulli:39,carri:[2,6],cat:[10,13],catalogu:[6,43],catego:[],categori:44,caution:43,cautiou:[],cautious:43,caveat:43,cca:[2,4,9,10,11,12,13,14,30,32,43],ccb:[4,9,10,11,12,13,14,30,32,43],cdot:17,cds_api:[2,10],cdsapi:31,cdsapirc:31,ce00010800:19,ce000908:43,cell:17,centr:[19,20,39,41],central:[2,17],cera20c:[6,31],cera:[5,6,19,21,22,23,34,36,41,42],cera_exampl:43,cera_testgrid_local_cd:19,cerapubl:43,certain:[2,18,41,42],certif:30,chang:[6,11,12,13,15,17,18,23,32,39,41,42,43],change_icon:[],changelog:41,charact:2,character:2,characteris:2,characterist:43,check:[4,6,9,10,11,12,15,18,30,31,33,36,42,43],check_accmaxstep:2,check_acctim:2,check_acctyp:2,check_addpar:2,check_area:2,check_basetim:2,check_condit:2,check_dat:2,check_dates_for_nonflux_fc_tim:2,check_grid:2,check_install_condit:2,check_job_chunk:2,check_len_type_time_step:2,check_level:2,check_logicals_typ:2,check_mail:2,check_maxstep:2,check_numb:2,check_path:2,check_ppid:2,check_publ:2,check_purefc:2,check_queu:2,check_request:2,check_step:2,check_tim:2,check_typ:2,checkerboard:17,choic:[9,21,43],choos:21,chosen:[2,21],chunk:[2,11],circl:17,classif:[2,6],clean:2,clean_up:2,clear:[39,43],click:[24,42],client:[2,31],climat:[22,23,42],clist:2,clone:42,close:43,closest:34,cloud:[2,6,19,43],cmd_list:2,cmp:[],coarser:[3,6],code:[0,2,6,12,13,19,31,32,36,41,42,43],collect:[2,39,41,43,44],collis:19,colour:17,column:2,combin:[2,11,41],come:8,comma:[2,6,43],command:[2,4,5,9,10,11,12,15,18,22,30,31,32,34,42,43,44],commandlin:[2,11,12,30,31,32,43],comment:[3,5,13],common:[2,11,12,41,43],commonli:2,commun:[39,42,43,44],compar:[17,43],compat:[3,6,18,21],compil:[2,9,12,13,18,30,31,32,33,42],compilejob:[13,18,43],complet:[2,14,17,23,31,36],complex:39,compon:[0,2,17,19,39,42],compos:19,composit:[5,19,43],comprehens:5,comput:[13,17,21,22,23,30,42,43],concaten:2,concatenate_sign:2,concern:2,conda:31,condit:[2,6,11,17],conduct:12,configur:[2,42],confluenc:2,confus:39,congratul:42,connect:[2,22,30,32,43],conrtol:[],conserv:[2,6,17],consider:17,consist:[2,3,11,17,18,19,20,21,43],consol:[30,31],constel:8,constitut:11,construct:[0,27,28,29,37,38,40],consult:43,consum:31,contact:23,contain:[0,2,5,7,8,11,12,13,15,17,19,21,33,34,42,43,44],content:[2,6,13,23,30,32,39,41,43],context:2,continu:[2,6,17,43],control:[2,10,11,12,13,15,19,21,22,34,38,39,41,42,44],control_:[5,43],control_cera:[8,10,43],control_cont:13,control_ea5:[8,11,12,30,31,32,43],control_ei:[8,43],control_od:[8,43],controlfil:[10,11,12,13,30,31,32,43],controlparamet:5,convect:[2,11,17,19],conveni:43,convent:[2,5,19],convers:2,convert2:36,convert:[2,15,17,20,36,43],coordin:[19,21,43],copernicu:42,copi:[2,11,12,41,43],copy_dummy_msg:2,copyright:[2,11,12],corner:6,correct:[2,6,36,43],correctli:[2,6],correspon:18,correspond:[2,6,9,11,13,17,19,34,39,43],correspondingli:43,cost:21,could:[17,43],count:[6,11,34],counter:2,coupl:2,cours:34,cover:43,crai:[4,10,13],creat:[0,2,4,6,7,10,11,12,13,15,18,19,20,21,30,32,43,44],creation:2,creativ:[2,11,12,41],creativecommon:[2,11,12,41],credenti:[12,13,15,18,31,42,43,44],cross:6,csv:[2,6,11,15,19,43],cubic:2,current:[0,2,6,9,12,14,17,21,31,40,42,43],cvh:19,cvl:19,cwc:[2,5,6,10,43],cycl:43,cyclic:[6,21],d64:[30,32],dai:[2,6,11,17,19,23,30,31,43],daili:[6,43],damp:17,dapoli:2,darain:2,dark:17,dat:11,data:[2,5,8,11,12,15,20,21,22,23,31,36,38,41,42],data_retriev:2,databas:23,dataset:[2,5,6,10,11,14,19,21,22,23,31,41],datatyp:19,date:[2,5,6,11,12,17,19,31,34,43],date_chunk:[2,5,6,10,11,43],date_time_steprang:19,datechunk:2,datelin:6,datetim:2,deacc_flux:2,deaccumul:[2,43],deactiv:36,debian:[9,30,31,42],debug:[2,5,6,9,10,11,19,21,36,43],decid:[2,5,18,43],decim:43,decis:2,declar:43,declin:[],decompos:2,dedic:22,defin:[2,5,6,10,11,12,19,21,24,34,39,42,43],definit:[2,5,18,41],degre:[6,21,43],degress:3,dejavu:0,dejavuserif:0,del_convert_build:[],del_fortran_build:2,delai:44,delet:[2,6,19,32,43],delete_fil:2,delta:17,delta_t:2,demand:[17,21,31,43],demonstr:19,denot:[2,17],depart:35,depend:[2,6,11,12,13,14,15,17,19,20,21,34,41,43],deposit:17,deprec:2,depthbelowlandlay:19,deriv:[2,30,31],describ:[12,14,18,20,22,32,42,43],descript:[2,5,6,11,12,13,19,21,34,39,43,44],design:[],desir:[2,6,17,21,43],destin:[2,5,6,7,10,12,13,15,30,31,32,36,43],destination_nam:[7,13],deta:21,detail:[2,5,13,19,20,21,31,42,43],detect:[6,44],determin:[2,11,12,17,43],dev:[9,17,31,42],develop:[0,2,6,9,17,40,41,44],deviat:5,diagnost:[2,6],diagram:[0,12,15],diamond:17,dict:2,dictionari:2,differ:[2,6,8,14,21,22,34,39,43],differenti:[4,10,43],difficulti:15,digit:19,dimens:[2,17],dimension:[2,17,43],direct:[2,13,14,21,22,43],directli:[2,4,10,11,12,13,14,21,22,42,43],directoi:42,directori:[0,2,4,5,6,7,8,9,10,11,12,13,14,18,31,32,33,36,42,43],dis:19,disabl:[6,21],disaggegr:2,disaggreg:[5,6,15,36,38,43],discard:6,discret:17,discretis:[],discuss:[40,43],disk:[31,43],dispers:[2,6,17],displai:[2,6,32],display_info:2,disregard:2,distinct:2,distinguish:[6,11],distribut:[30,31,41,42,43],disturb:43,div:[],diverg:[19,43],divers:2,divid:[2,11,17,19,22],do_retriev:2,document:[5,8,11,19,21,23,30,32,36,43],doe:[2,3,11,12,14,33],doesn:[6,11,12],doi:[6,17],doing:[2,43],domain:[5,43],don:[9,31,33,42],done:[2,4,6,10,11,12,13,14,17,22,31,42,43],dot:0,doubl:[2,4,6,8,11,13,43],doubleelda:[2,5,6,10,43],down:42,download:[23,32,36,41],download_cdsapi:31,download_cera20c_ecmwfapi:31,download_era5_cdsapi:31,download_erainterim_ecmwfapi:31,downward:[3,6,18,34],dpdeta:[2,5,6,10,43],dpkg:[9,42],drive:[2,20,43],dry:17,dtime:[2,3,5,6,10,43],due:[6,11,12,17,43],durat:43,dure:[2,4,9,12,13,15,18,31,42,43],each:[2,5,6,10,11,13,14,17,19,39,42,43],earlier:[11,43],easi:[17,18,20,43],easier:[18,22],easiest:[30,31],easili:[2,11],east:[2,11,19],eastern:2,easternmost:2,eastward:17,ec_api:[2,10],ec_memory_per_task:[4,10,13],ec_threads_per_task:[4,10,13],ecac:32,ecaccess:[2,4,10,12,13,14,15,22,23,30,32,43],ecaccess_do_not_remov:[4,10,13,43],ecc:2,eccod:[4,9,10,13,23,30,31,32,33,36],eccodes_include_dir:9,eccodes_lib:9,ecd:2,ecf:[2,6,32],ecfsdir:[2,5,6,10],ecg:[4,10,13],ecgat:[2,4,6,9,10,11,12,13,14,21,30,32,43],ecgb11:[32,43],ecgb:[4,10,11,12,13],ecgid:[2,5,6,7,10,12,13,30,31,32,43],echo:[4,12,13],echom:32,ecmf:19,ecmwf:[2,4,5,6,9,10,11,12,13,14,15,17,18,19,20,21,22,23,30,32,33,34,36,41,43],ecmwf_env:[2,11,12,18,43],ecmwfapi:[31,33],ecmwfapirc:31,ecmwfdataserv:[2,31],ecmwfservic:[2,31],ecnam:[],econdemand:[2,5,6,10],ecscratch:32,ecstorag:[2,5,6,10],ectmp:[2,5,6,10],ectran:[2,5,6,10,15,30,32,43],ecuid:[2,5,6,7,10,12,13,30,31,32,43],ecwmf:[22,42],edg:12,edit:19,editor:[9,30,31,32],effect:[13,21],effici:[13,17,19,43],egat:[],either:[2,6,11,14,15,43],elda:[2,6,8,36,43],element:[2,3],els:[4,10,12,13],email:[2,4,6,10,13,30,32,43,44],emo:[4,10,13],emoslib:[21,23,31,32,33],empti:[2,11,12],enabl:[22,30,43],encount:42,end:[2,4,6,10,11,13,17,19,43],end_dat:[2,5,6,10,11,17,43],end_period:2,enda:[10,19,31,43],endian:[30,31,32],endif:17,endo:6,enfo:[6,8,36,43],english:36,enough:[6,22,43],ens:[8,43],ensembl:[2,6,23,36,43],ensemble_memb:19,ensur:21,enter:30,entri:[11,43],env:[2,4,13],environ:[2,4,6,10,11,12,13,14,20,33,42,43,44],environment:[2,35],eof:[10,13],equal:[2,6,11,21,43],equat:[2,6,17,43],equidistantli:17,equival:[30,31],era5:[2,5,6,21,22,23,31,42,43],era:[5,6,11,19,21,22,23,34,36,41,42],eror:2,error:[2,4,10,12,13,21,30,31,43],error_msg:2,esac:[4,10,13],escap:13,especi:[21,42,43],establish:[14,30],eta:[2,5,6,8,10,19,21,38,43],etadiff:[2,5,6,10,21,43],etadot:[2,6,19,43],etapar:[2,5,6,10],etayymmddhh:[6,21],etc:[31,39,44],europ:43,european:[20,39,41],evalu:41,even:[17,21,31,32,43],event:[17,44],eventu:[],everi:[22,30,34,39,43],everyon:6,everyth:[0,2,9,14,31,43],everytim:[],ewss:[17,19],exact:[2,17,43],exampl:[2,3,6,7,11,17,18,19,22,23,31,34,39,42,43],exce:[],exceed:43,excelt:0,except:[2,6,21,31,43],execut:[2,9,10,12,13,14,15,18,19,32,33,36,42],execute_subprocess:2,exedir:2,exist:[2,6,11,43,44],exit:[2,11,12,34],expect:[2,43],expens:[6,21],experi:[6,43,44],experienc:43,explain:[19,43,44],explan:43,explanait:[],explic:[],explicit:42,explicitli:[6,20,22,43],express:2,expver:[2,5,6,10,19,31],extend:[39,43],extens:[0,2,6,17,43],extra:[2,5,6,14,36,42,43],extract:[2,5,6,11,19,21,22,31,34,43],extractxxxxx:43,f90:[30,31,32,36],f_0:17,f_1:17,f_2:17,f_3:17,f_i:17,facil:[22,30],fail:[2,4,6,10,13,34,43],failur:43,fals:2,familiar:43,faq:41,far:6,fast:20,faster:[18,22,44],fcog_acc_sl:19,fconvert:[30,31,32],fdefault:[30,31,32],feasibl:21,featur:[2,6,20,41,44],februari:5,fedir:2,feel:42,few:[6,30,32,43],fewer:43,fftw3:[31,32],fftw:[23,30,32,33],field:[2,5,11,15,20,21,23,36,41,43],field_typ:19,fig:17,figur:[14,17,43],file1:2,file2:2,file:[0,2,4,9,10,11,12,13,15,17,18,20,22,23,30,31,32,34,36,39,41,42,44],filemod:2,filenam:[2,17,19,43],filename_in:2,filepath:2,fill:[6,42,43],filter:[2,17],find:[5,9,39,42,43],finder:[],fine:[21,31],finer:[3,21],finish:[42,43],first:[2,5,6,11,17,32,36,39,42,43],fit:2,fix:[4,10,17,34,41],flex:[10,13,43],flex_ecmwf:[4,10,13],flex_extract:[0,2,4,5,6,8,9,10,11,12,13,14,15,17,18,19,20,21,22,30,31,32,33,34,39,40,43,44],flex_extract_repo:[],flex_extract_v7:[10,13,19,31,34],flex_extract_v:[4,13],flex_extract_vx:[5,7,8,9,11,12,13,18,30,32,42,43],flexcompil:[4,13,30,32],flexextract:19,flexextractdir:2,flexpart:[2,6,11,15,17,20,21,22,31,34,41,43,44],flexpart_root:[4,13],flexpart_root_script:[4,13],flexpartdir:12,flextra:[2,20,21,41],flow:[2,11,12,20],flux:[2,5,15,21,38,43],fluxyyyymmddhh:17,flxacc2:17,follow:[2,5,8,12,13,15,17,18,19,21,30,31,32,33,34,39,42,43],font:0,fontpath:0,fopenmp:[30,31,32],for_develop:0,forecast:[2,5,6,11,17,20,21,22,23,39,41,43],forecast_step:19,forescast:43,forg:31,forget:33,form:[6,42],format:[2,6,10,11,12,15,17,19,20,31,43],formul:17,fort:[2,13],fortran90:[],fortran:[2,4,12,13,15,16,17,18,20,21,30,31,32,36,38,41,43],fortran_program:13,found:[2,5,6,9,13,19,21,30,40,42,43,44],four:[2,14,17,42],fp_root:2,fp_root_path:13,fp_root_script:13,fpdir:2,frac32:17,frac:17,framework:[13,30],free:42,frequent:[41,43,44],from:[2,3,4,5,6,9,10,11,12,13,14,15,17,18,19,20,22,23,30,31,32,34,36,39,41,42,43],fromfil:2,fsr:19,ftime:2,ftp:32,ftrafo:[30,31,32],ftype:2,fulfil:17,full:[2,6,11,12,21,22,31,41,43],fulli:39,further:[2,5,8,31,32,43],furthermor:18,futur:[6,21,43],g_i:17,g_ig_:17,gain:[],gap:43,gate:[],gatewai:[2,4,5,6,7,9,10,12,13,14,15,18,20,22,31,32,36,41,42],gateway_nam:[7,13],gatewaynam:[12,30,32],gatewayserv:43,gauss:[2,5,6,8,10,21,38,43],gaussian:[2,6,10,19,21,23],gen_docu:0,gener:[0,4,5,10,13,17,19,21,23,30,38,42,43],general:2,generate_retrieval_period_boundari:2,genericsftp:[2,10,12,30,32],genshi:[4,10,13,30,31,32,36],geometr:2,geophys:35,geosci:17,geoscientif:[2,6,17,40],german:36,get:[2,6,30,31,32,34,36,42,43],get_cmdline_arg:2,get_dimens:2,get_inform:2,get_install_cmdline_arg:2,get_kei:2,get_list_as_str:2,gfortran:[9,23,30,31,32,33],gid:[12,32],git:42,gitmob:42,give:[6,21,34,42,43],given:[2,5,14,17,21,43],glevelist:2,global:[5,6,8,21,39,43],gmd:[6,17],gnu:[9,30,31,32,42],goe:2,going:[2,6,11],good:21,grant:42,graphviz:0,grb:[2,19],greater:[6,11],green:[12,17],gregor:35,grep:[9,10,13,42],grib1:[2,5,6,10,15],grib2:[2,6,15],grib2flexpart:10,grib:[2,6,11,15,23,31],grib_api:[4,10,13,33,36],grib_l:19,gribmessag:11,grid:[2,3,5,6,10,17,19,20,21,23,31,43],grid_simpl:19,grid_typ:19,gridtyp:19,ground:34,group:[2,4,5,12,13,14,22,31,42],groupid:[12,30,32],groupnam:[],grphreal:[30,31,32],guarante:[2,11,12,17,43],guid:[23,36,41,43],guidanc:21,haimberg:[2,35],half:[2,6,11,17,21,43],handl:[2,5,39,43],happen:0,hard:2,harmon:19,has:[0,2,4,6,10,11,12,13,14,17,21,22,30,31,32,39,42,43],hast:6,have:[2,3,5,6,11,12,14,15,22,30,31,32,33,34,39,42,43],hcc:19,header:2,heat:[2,17,19],heavili:21,height:17,help:[2,11,12,18,43,44],help_icon:[],hemispher:43,henc:17,her:12,here:[2,6,8,11,12,15,19,31,39,43,44],high:[6,11,13,21,31,43],higher:[2,21],highest:21,highli:21,highlight:43,highr:[8,43],hint:[5,39,41,44],his:12,histor:21,hittmeir:[2,6,17],home:[4,10,12,13,14,23,30,31,32,42,43],homogen:39,horizont:[2,5,6,17,43],hoskin:6,host:[4,10,11,12,13,43],hostnam:[32,43],hour:[2,6,11,17,19,22,43],hourli:[6,22,43],how:[2,5,6,15,18,22,23,31,39,42,43],howev:[6,15,17,21,22,31,39,43],hpc:[12,21,43],hre:[23,43],href:[],html:[],http:[2,6,11,12,17,30,32,41,42,44],humid:19,hybrid:19,i32:[30,32],i_i:17,ia3:2,ice:[2,6,43],idea:39,identif:2,identifi:[2,6,11,12,17,19],identificationkeyword:2,idir:2,idirectionincrementindegre:2,ids:2,idx:[2,19],ifort:[],iid:2,img:10,implement:[17,19,43],impli:17,importantli:39,improv:[2,17,36,43],inbetween:[6,43],includ:[6,9,11,12,13,30,31,32,34,42,43,44],incorpor:42,increas:43,incur:21,independ:39,index:2,index_fil:2,index_kei:2,index_v:2,indic:[2,5,17,19,43],individu:[2,4,6,10],ineffici:43,info:2,inform:[2,5,6,8,11,14,18,19,20,22,23,32,34,39,42,43,44],informt:2,init128:2,init:2,initi:[2,11,12,36],initialis:[2,18,36],input:[2,5,6,10,11,12,15,17,20,38,41,43],inputdir:[2,10,11,13,43],inputfil:[2,11],insert:31,instal:[0,4,5,6,7,9,10,13,14,15,18,20,22,36,41,43],install_loc:2,install_target:[2,10,12],install_via_gatewai:2,installdir:[2,12,30,31,32,42],installscript:[4,12,30,32],instanc:2,instantan:19,instead:[2,11,12,15,22],institut:[35,39],instruct:[2,6,14,30,31,33,42,43],intact:11,integ:[2,6,11,43],integr:[2,17],intel:[4,10,13],intend:[6,8,11,14,39],interact:30,interest:42,interfac:[2,5,23,24,36,43],intergovernment:39,interim:[5,6,11,19,21,22,23,31,34,41,42],intermedi:2,intern:[2,11,12,41],internet:43,interpol:[2,6,11,17,19,43],interpret:18,interv:[2,3,6,12,17,19],introduc:[17,19,34,36,43],introducst:[],introduct:[],introductari:23,introdut:[],investig:[],involv:12,ipar:2,ipnam:32,isol:17,issu:41,iter:2,its:[2,11,13,17,19,21,39,42],itself:[2,43],jame:[2,17],januari:43,jasper:[30,32,36],jdirectionincrementindegre:2,job:[2,6,11,12,13,14,15,18,19,20,30,32,41],job_chunk:[2,10,11,43],job_fil:2,job_id:[2,4,13],job_templ:[2,10,11,12,30,31,32,43],jobfil:2,jobnam:[2,4,13],jobop:43,jobscript:[10,11,43],journal:[17,40],jtemplat:2,june:[2,43],just:[2,3,6,8,12,31,43],k_i:17,keep:[2,13,17,42,43],kei:[2,31,42],kept:6,keynam:2,keyvalu:2,keyword:[2,6,11,19,22,23,43],kind:[2,6,19,43],km4a:[4,10,13],know:[31,43],known:[5,41],known_bugs_issu:[],korn:[2,4,10,12,13,18,20,36,43],kornshel:[],ksh:[13,18,43],kwd:2,label:[12,19,31],lagrangian:[2,6,17],larg:[2,6,11,17,19,36,43],larger:[6,11,21],last:[2,6,11,17,19,30,32,34,43],lat:[2,6,11,19,21,43],late:17,later:[2,31,34],latest:[22,42,43],latitu:2,latitud:[2,6,20,43],latitudeoffirstgridpointindegre:2,latitudeoflastgridpointindegre:2,latter:12,lcc:19,ld_library_path:33,lead:[6,11,13,17,19,32,43],learn:39,least:[2,12],leav:11,leccod:[9,30,31,32],leccodes_f90:[9,30,31,32],left:[2,5,6,10,17,21,42,43],lemo:[30,32],lemosr64:31,length:[2,17,43],leopold:[2,35],less:21,let:11,letter:[2,11,12,19,41],level:[2,5,6,10,11,12,15,18,19,21,22,31,34,41,43],level_typ:19,levelist:[2,5,6,10,11,19,31,43],levellist:34,levtyp:[2,19,31],lfftw3:[30,32],lib:[9,30,32,33,36],libeccod:[9,31,42],libemo:[30,31,32],librari:[4,9,10,14,20,23,31,32,41,42,44],licenc:[11,12,22,23,41],licens:[2,6,11,12,14,22,41],lies:2,life:35,light:12,like:[2,9,11,17,30,32,34,42,43],limit:[6,11,19,22,39,43],line:[2,5,11,12,13,15,17,18,19,22,30,32,42,43,44],linear:[2,6,17],linearli:17,link:[0,9,39,41,42,43],linux:[9,12,14,15,22,30,31,42,44],liquid:[2,6,43],list:[2,5,6,8,9,11,12,15,17,19,20,23,31,34,41,43],list_obj:2,littl:17,ljasper:[30,31,32],load:[2,4,10,11,12,13,30,32,36,43],local:[2,5,6,7,9,11,12,14,22,30,32,33,36,41,42],localmachin:32,localus:32,locat:[2,7,11,12,43],lock:[],log:[2,4,6,10,13,31,32,42,43,44],logarithm:19,logic:[2,10],login:[32,43],lon:[2,6,11,19,21,43],longer:[2,6,36],longitud:[2,6,20,43],longitudeoffirstgridpointindegre:2,longitudeoflastgridpointindegre:2,longiud:[],look:[2,30,32,34,43],lot:[21,43],lower:[2,5,6,10,21,43],lowest:[19,34],lp64:[30,32],lpthread:[30,32],lrwxrwxrwx:[30,31,32],lsm:19,lsp:[17,19],machin:[2,4,9,10,12,13,14,15,31,32,42,43],made:[2,22,39,43,44],magnitud:2,mai:[6,11,12,15,17,30,31,39,42,43,44],mail:[2,4,6,10,13,35,41,43],mailfail:[2,5,10,13,43],maill:44,mailop:[2,5,6,10,13],main:[2,5,18,20,22,43],mainli:43,maintain:17,make:[0,4,13,18,30,33],make_dir:2,makefil:[2,4,12,13,18,30,31,32,33,36],makefile_crai:[9,12,30,32],makefile_debug:9,makefile_ecg:[4,9,12,30,32],makefile_fast:9,makefile_local_gfortran:[9,12,31],manag:[13,30,31,42],mani:[17,43],manipul:2,mar:[2,6,11,15,18,20,22,23,30,31,32,33,36,41,42,43],march:[2,22,30,31,32],margin:[],mark:[4,5,10,13,17,19,43],mars_request:[2,6,11,15,19,43],marsclass:[2,10,19],marsfil:2,maschin:11,mask:43,mass:21,master:42,match:2,math:[],mathrm:17,matter:[2,12],max:[6,11],max_level_list:2,maxb:[2,13,19],maxim:[],maxima:17,maximum:[2,5,6,11,34,43],maxl:[2,13,19],maxstep:[2,5,6,10],mcc:19,mdpdeta:[2,13,19],mean:[2,4,12,13,17,19,43],measur:21,medium:[20,39,41],member:[2,6,12,14,19,22,23,24,30,31,39,42,43],memberst:[2,6],memori:[6,11],mendel:35,mention:[13,14,17,43],merg:15,mess:42,messag:[2,11,12,19,21,30,31,34],met:35,meta:[2,13,19],metadiff:[2,13,19],metapar:[2,13,19],meteorolog:[2,17,19,20,35,39,41],meter:[],method:[2,5,6,11,17,19,21,22,38,39,40,43],mgauss:[2,13,19],might:[0,2,6,11,15,18,22,31,39,42,43],migrat:[2,23],min:17,mind:[6,43],minim:42,minima:17,minimis:31,minimum:[20,43],minut:[2,30,32],mismatch:43,missingvalu:2,mix:43,mk_compilejob:2,mk_convert_build:[],mk_date:2,mk_env_var:2,mk_fortran_build:2,mk_job_templ:2,mk_jobscript:2,mk_server:2,mk_tarbal:2,mkdir:[4,10,13],mlevel:[2,13,19],mlevelist:[2,13,19],mnauf:[2,13,19],mnt:19,mock:0,mod:[2,4,9,13],mode:[2,4,6,7,9,10,11,12,13,18,19,20,36,39,41,42,44],model:[2,6,15,17,19,20,21,22,23,34,39,40,41,43],modif:2,modifi:[2,9,22,43],modul:[4,10,11,12,13,14,30,32,36,42,43],modular:36,momega:[2,13,19],momegadiff:[2,13,19],moment:6,mon:17,monitor:43,monoton:[2,17],month:[11,19,31,43],monthli:6,more:[2,5,6,11,12,14,17,19,42,43,44],most:[2,6,13,36,39,43,44],mostli:[2,6,19,43],motiv:17,mountain:[2,11,12,41],move:[0,2],mreq_count:2,msgatwai:30,msl:19,msmooth:[2,13,19],much:[39,44],multipl:[2,43],multipli:[6,21],muser:[10,13],must:[6,11,14,32,43],my_error:2,myecnam:12,mygroupnam:12,myuser:12,name:[2,4,5,6,10,11,12,13,17,19,30,31,32,36,42,43],name_of_this_fil:[4,10,13],name_of_your_makefil:31,namelist:[2,13,19],namespac:2,namgen:[13,19],nano:[30,32],nas:19,nation:[22,39],nativ:[30,31,32],natur:[17,35],necessari:[0,2,3,4,6,9,10,11,12,13,14,18,20,30,32,33,36,43,44],necessarili:5,nedit:9,need:[0,2,3,5,6,11,12,13,14,18,19,20,21,22,31,32,37,40,42,43],neg:[2,17],neglect:6,net:[17,19],nevertheless:2,newer:19,newest:43,newslett:[],next:[30,32,43,44],nfield:2,night:[],non:[2,6,17,34,43],noncycl:6,none:[2,5,6,10,11,12,17,19,30,31,32,43],none_or_int:2,none_or_str:2,nonzero:2,normal:[4,6,10,13,43],normal_exit:2,north:[2,11],northern:[2,43],northernmost:2,northward:[17,19],notabl:43,notat:17,note:[6,15,17,32,34,42,43],notif:[2,5],notifi:2,novemb:[2,21],now:[22,42],nowadai:[],nsss:[17,19],number:[2,3,4,5,6,8,9,10,11,13,17,18,19,20,21,34,36,43],numer:39,numpi:[2,30,31,32],object:2,observ:2,obtain:[2,17,42,43],obvious:17,occur:[2,17],octahedr:23,octob:11,odir:2,off:[2,5,6,19],often:21,og_orolsm__sl:19,old:[0,2,6,11,17,36,43],older:[6,15,43],omega:[2,5,6,10,19,21,38,43],omegadiff:[2,5,6,10,21,43],omegayymmddhh:[6,21],onc:[11,43,44],one:[2,5,6,11,12,17,18,19,32,34,42,43],ones:[17,32],onli:[2,3,5,6,11,12,17,19,21,22,32,34,42,43,44],onlin:[36,43],onward:6,open:[2,9,20,30,31,32,41,43],opend:12,oper:[2,5,6,8,10,11,12,17,21,23,31,34,39,41,42],operation:6,oportun:[],opportun:[],opt:[],optim:21,optimis:[9,12,15,43],option:[2,5,6,15,17,19,21,33,36,42,43],optionalind:5,orang:12,order:[2,5,19,43],org:[2,6,11,12,17,41],organis:39,origin:[2,6,11,17,19,43],orographi:19,other:[2,5,6,9,11,31,39,42,43,44],otherwis:[2,43],our:42,out:[2,4,6,9,10,13,30,31,32,42,43],output:[2,4,5,6,10,11,12,13,17,30,31,32,36,38,39,41,42,43,44],outputdir:[2,10,11,13,43],outputfilelist:2,outsid:31,over:[2,17,43],overal:[2,19],overhead:43,overlap:[6,17],overrid:[3,11],overrul:5,overview:[8,14,15,17,23,34,38,41,42],overwrit:[0,2,43],overwritten:[2,18,31],own:[19,32,42],p_a:[],p_b:[],p_c:[],p_d:[],packag:[0,4,10,13,20,30,31,41,42],package_nam:42,packingtyp:19,page:[30,42],panel:42,paper:[34,40],par:2,paragraph:44,parallel:[],param1:43,param2:43,param:[2,19,31],paramat:2,paramet:[2,3,4,5,8,9,10,13,15,17,18,19,20,23,30,31,32,36,39,41,42],parameteris:43,parameterlist:[11,12],parameternam:2,paramx:43,parent:[2,11,19],part:[2,17,20],parti:[14,20,23,41],particl:[2,6,17],pass:[2,10,22,34,42],passcod:30,password:[30,32],path:[0,2,4,6,8,9,10,11,12,13,14,31,32,33,34,42,43],path_flexextract_dir:2,path_fortran_src:2,path_input_dir:2,pattern:[2,43],paul:17,pbs_jobid:[10,13],pdf:21,pep8:36,per:[2,5,6,11,15,19,43],perform:[2,13,15,21],period:[2,5,6,11,17,30,43],person:12,perturb:[6,19],petra:[2,35],phgrreal:[30,31,32],philipp:[2,5,6,11,12,17,35],physic:[35,39],pid:[19,43],piec:[17,19],piecewis:17,pip:[0,31,42],place:[2,12,13,14,30,44],placehold:[13,32],plan:[6,21],platform:42,pleas:[5,14,15,21,30,31,32,43,44],plot:23,plu:17,png:0,point:[2,11,17,19,43],polynomi:[2,17],posit:[2,6,13,17],posnam:[30,31,32],possibl:[2,5,6,8,11,12,17,21,22,31,42,43,44],post:[2,6,15,31,44],postprocess:2,pp_id:[11,43],ppid:[2,11,19],pre:[9,17],precalcul:6,precip:19,precipit:[2,5,6,11,23,36,43],precis:33,preconvert:[],predict:[39,43],prefar:42,prefer:[6,30,31,32],prefix:[2,5,6,10,19,21],prepar:[0,2,4,6,10,11,12,13,14,15,20,26,41,42],prepare_flexpart:11,preprocessor:44,present:[2,7,12,23,30,32,42,43],preserv:[17,19,43],pressur:[2,19,21,22,31],pressure_level:31,previou:[18,21,43],prgenv:[4,10,13],primarili:9,principl:43,print:[2,4,13,43],print_infodata_csv:2,prior:[17,21],problem:[2,17,36,42,43,44],procedur:[5,17],process:[2,4,6,7,9,10,11,12,13,14,15,17,18,19,22,31,36,42,43,44],process_output:2,prod:2,produc:[9,17,19,21,39,43],product:[2,42,43],product_typ:31,progam:42,program:[0,4,9,11,12,13,17,18,20,21,30,31,36,41,43],programm:16,progress:[15,43],prompt:30,proper:[18,41],properli:[2,12,15,34,42,44],properti:[2,19,39],propos:[17,44],proposit:[],prot:[10,13,43],protocol:43,provid:[2,3,14,18,20,21,22,31,32,33,42,43,44],pseudo:43,publicli:43,publish:17,pull:31,pure:[2,6,11,19,43],purefc:[2,10],purpos:[2,6,19],put:[2,6,12,13],put_file_to_ecserv:2,pycallgraph:0,pylint:0,pyrevers:0,pyscript:11,pytest:0,python3:[4,10,11,12,13,18,30,31,32,36,42,43],python:[0,4,10,11,12,13,15,16,17,18,19,20,23,30,31,32,33,36,38,42,43],pythonxxxxx:[],qos:[4,10,13],quad:17,quantiti:[2,6,17],question:[41,44],queue:[2,4,10,11,12,13,15,30,43],queuenam:[4,10,13],queues_list:2,quick:[8,43],quick_start:[],quickli:[13,43],quota:43,r64:[4,10,13,30,32],radiat:[2,17,19],raid60:[],rainfal:2,rais:[2,17],rang:[2,6,20,31,39,41,43],rare:43,rate:17,rather:21,raw:[2,15],reach:18,read:[2,6,12,13,15,20,21,32,33,39,43],read_ecenv:2,readi:[2,6,11],real:[23,30,31,32,43],real_tim:23,realis:17,realiti:17,realli:[21,43],reanalysi:[6,11,21,23,31,42],reason:[2,6,11,17,43],receiv:[30,43,44],recent:[10,43],recod:17,recommend:[6,17,21,31,43],reconstruct:[2,17],record:42,rectangular:12,red:17,redhat:42,reduc:[19,21,23],ref:[],refactor:36,refer:[2,14,39,43],regard:[5,18,36,44],regardless:42,region:21,regist:[22,31,33,42],registeredus:44,registr:[6,14,22,23,31,33,41,44],regress:[36,41],regular:[2,20,43],regular_l:19,regularli:[],rel:[17,43],relat:43,releas:[2,41,42,43,44],relev:[2,5],reli:42,remain:[2,17],rememb:42,remot:[2,4,6,7,9,10,12,13,14,15,18,20,30,36,41,42],remota:12,remov:[2,3,17,36],remove_old:2,renam:0,renew:30,repeat:2,rephras:[],repo:42,report:[2,41],repositori:42,repr:[2,19],repres:[2,17,19,22,23,42,43],represent:[2,20],reqest:15,request:[2,4,5,6,10,11,13,15,17,22,36,43],request_numb:[2,19],requir:[2,13,14,17,20,21,30,31,32,39,42,43],rerun:11,research:39,resol:[2,5,6,10,19,21,43],resolut:[3,5,6,11,21,22,39,43],resolv:21,reson:[],resourc:35,respect:[2,5,15,17,18,19,31,39,42,43],respectivlei:[],respons:43,rest:[2,6],restrict:21,restructur:36,result:[2,15,19,21,43],retriev:[2,5,6,11,14,15,17,18,19,20,21,22,31,33,34,36,39,41,42,43],retrieve:5,return_list:2,review:6,revis:36,revtriev:2,right:[2,5,6,10,17,21,22,30,31,33,39,42,43,44],rla0:[2,13,19],rla1:[2,13,19],rlo0:[2,13,19],rlo1:[2,13,19],root:[2,4,12,13,18,31,32,42,43],round:12,rpath:[30,32],rpm:42,rrint:[2,5,6,10,11,43],rst:[],rthl:43,rudimentari:12,run:[2,5,6,7,8,10,13,15,18,19,22,30,31,42,43,44],run_loc:[15,43],runtim:10,rwgrib2:[30,31,32,36],sabin:2,sai:2,same:[2,6,11,22,30,31,33,43],sampl:[2,31,43],sardeshmukh:6,save:[9,11,19,21,31,43],sbatch:[4,10,13],scale:[2,11,17,19],scaveng:17,scenario:[14,17,43],schemat:17,scheme:[2,6,17,19,43],scienc:35,scientif:[23,34],scope:6,scp:32,scratch:[4,10,13,43],scriot:[],script:[0,5,6,13,14,15,16,17,18,19,20,21,23,30,31,32,36,38,41,42,43,44],scroll:42,sdor:19,second:[6,11],section:[5,12,18,22,31,36,37,39,40,42,43],see:[2,5,6,11,12,13,15,18,19,20,21,22,24,30,31,32,34,42,43,44],seem:43,seen:18,seibert:[2,6,17,35],select:[2,5,6,11,12,14,19,22,30,32,34,36,39,41,42],selectwher:2,send:[2,11,12,13,21,30,41,44],send_mail:2,sens:43,sensibl:[2,17,19],sent:[2,13,15,18,43],separ:[2,5,19,36,43],sepeart:[],seper:[2,6,11],septemb:[6,12,21],seqdiag:0,seqdiag_fontpath:0,sequenc:15,seri:[2,17],serv:[19,20,41,43],server:[2,4,5,6,7,9,10,11,12,13,14,15,18,20,22,23,30,31,32,36,42,43],servic:[30,39],session:[4,10],set:[0,2,4,5,6,8,9,10,11,12,13,17,18,19,20,21,22,23,30,31,32,33,34,36,39,42,43,44],set_kei:2,setup:[14,15,18,30,31,32,36,42,43],setup_controldata:2,sever:[9,12,13,19,42,43],sfc:[19,31],sgn:17,shade:17,share:[0,44],she:14,shell:[2,4,10,11,12,13,15,18,20,30,31,36,42,43],shift:17,shoot:23,shorten:43,shorter:2,shortli:43,shortnam:19,should:[0,2,6,9,12,13,17,21,30,31,32,36,39,42,43],shouldn:6,show:[11,12,15,17,43],shown:[7,9,17,31,43],side:42,sign:[4,5,13,42],signal:43,silent_remov:2,similar:[14,31],simpl:[6,17,31],simplest:17,simplifi:36,simul:2,sinc:[2,15,19,21,31,43,44],singl:[2,4,10,11,13,15,19,33,42,43],site:30,size:[34,43],sketch:[12,14],skip:[2,31],skt:19,slope:17,slurm:[13,23],small:[31,34,43],smaller:[2,6,11,19],smooth:[2,5,6,10,17,21,43],snippet:31,softwar:[2,6,12,13,14,20,21,23,30,31,32,41,42],solar:[2,17,19],sole:[6,19],solut:[2,44],solv:43,some:[0,2,4,5,6,10,11,12,13,14,15,18,19,20,22,31,32,39,42,43,44],someth:43,sometim:[6,43],soon:[6,43],sort:2,sourc:[0,2,4,9,10,11,12,13,18,20,31,33,34,36,41,42,43],south:[2,11],souther:[],southern:2,southernmost:2,space:[2,5,11,17,43],spar:2,spatial:[5,6,39],spdx:[11,12],speak:42,speci:17,special:[],specialis:43,specif:[2,4,5,6,9,10,11,13,14,17,19,20,21,36,39,41,42],specifc:[2,11],specifi:[2,6,11,12,17,30,31,32,43],specificnam:10,spectral:[2,6,20,21,43],speed:43,sphere:6,spheric:19,sphinx:36,sphinxcontrib:0,split:[15,17,19],sqrt:17,src:[],src_path:2,srvx8:10,ssh:[32,43],sshf:[17,19],ssr:[17,19],sss:6,stamp:19,standard:[2,9,17,21,30,31,32,42,43],start:[2,4,5,6,10,11,12,13,18,19,30,31,32,33,39,42,43],start_dat:[2,5,6,10,11,17,43],start_period:2,state:[2,12,14,22,23,24,30,31,39,42,43],statement:[2,30,32],statist:42,statu:[15,34,42],steer:2,step:[2,3,5,6,10,11,13,15,17,19,20,24,30,31,33,43],steprang:[2,11,19],still:[3,9,15,21,37,40,43],stl1:19,stop:[2,34,42,43],storag:[2,5],store:[2,6,10,11,12,15,19,21,22,23,31,42,43],str:[2,35],str_of_list:2,straightawai:43,straightforeward:43,stream:[2,5,6,10,19,31,36,43],stress:[2,17,19],stretch:31,string:[2,5,6,11,12],structur:[10,36,39,43],studi:[21,39],style:36,sub:[2,17,19],subdirectori:43,subgrid:[2,11],subinterv:17,subject:[2,30,32,43],submiss:[2,4,10,12,20,43],submit:[4,5,10,12,13,14,15,18,19,30,32,43,44],submit_job_to_ecserv:2,submitscript:[10,11],submitscriptop:[],subprocess:2,subscrib:44,subscript:44,subsect:21,subsequ:6,subset:[6,11,43],substanti:43,substitut:[2,4,9,10,13,32,36,43],substr:2,subtract:[6,43],succeed:[30,31],success:[4,13,19,30,32],success_mod:2,successful:[18,42],successfulli:42,suffici:43,suggest:9,suit:[6,43],suitabl:31,sum:[2,6,18,43],supplement:19,support:[2,17,23,39,41,42,43],suppos:2,sure:31,surfac:[2,6,15,17,19,21,22,34],swvl1:19,symmetri:17,syntax:[2,6],synthes:[6,36],sysadmin:33,system:[2,4,6,9,10,11,13,20,21,30,31,32,34,41,42,43],sytem:30,t1279:[21,43],t799:21,tab:42,tabl:[2,5,17,19,34,41,42,43],table128:2,take:[9,31,43],taken:[2,6,18,19,39,43],tar:[2,4,13,32,42],tarbal:[2,4,12,30,32],tarball_path:2,tarfil:32,target:[2,12,19,30,31,32],task:[2,18,20,43],tcc:19,team:41,technic:23,tell:[2,43],temp:[2,10,11],temperatur:[19,31],tempfile_job:2,templat:[2,4,5,7,10,11,12,18,30,32,36,43],tempor:[5,6,17,19,22,39,43],temporal_properti:19,temporari:[2,6,11,43],tendenc:21,tenth:6,term:[42,43],termin:[30,31],test:[0,2,5,6,12,13,19,22,33,36,41,43],textbf:17,textrm:17,than:[2,3,6,9,11,19,21,34,44],thei:[0,2,5,6,9,11,12,13,15,17,18,19,31,34,39,43],them:[0,2,6,11,12,15,17,18,19,20,31],therebi:[17,21],therefor:[0,2,6,17,18,19,31,34,39,42,43],thi:[0,2,4,5,6,7,8,9,10,11,12,13,14,17,18,19,21,22,30,31,32,33,34,37,39,40,41,42,43,44],thick:17,thing:[],think:[2,42],third:[14,20,23,41],those:[5,43],though:44,thousandth:6,three:[2,11,17],through:[2,5,22,24,30,42,43,44],throughout:17,thu:[9,17,43],ticket:[34,41],time:[2,3,4,5,10,11,13,15,17,19,21,23,31,33,34,39,43],timeseri:[2,17],timespan:[2,17],timestamp:2,tld:32,tmc:31,tmpdir:[10,13],to_list:2,to_param_id:2,to_param_id_with_tablenumb:2,todai:43,todo:[],togeth:[2,5,12,42,43],token:30,too:[6,11,17,31,34,43],tool:[4,10,14,15,43],toolkit:22,top:[11,12,18,34],topic:[],topmost:34,total:[2,19,43],touch:43,trace:17,train:23,transfer:[2,5,6,7,12,13,15,19,30,32,43],transferr:43,transform:2,transport:[20,41],trapezoid:12,treatment:39,tree:43,tri:[],triangular:[2,6],trigger:[2,21],troubl:23,troubleshoot:43,truetyp:0,truncat:[2,6],ttf:0,tupl:2,turbul:[17,19],twice:43,twiceadai:[],twicedaili:[8,43],two:[2,6,11,12,14,17,18,19,20,21,22,33,42,43],type:[0,2,3,4,5,6,10,11,13,18,19,30,31,32,42,43],typeoflevel:19,typic:[15,19,23,43],ubuntu:[30,31],udoc:2,uid:[12,32],un_tarbal:2,unavail:44,unchang:17,under:[0,2,11,12,13,14,17,19,26,27,28,29,30,31,37,38,40,41,43],undergo:[39,43],understand:[5,13,18],underw:[],undesir:17,unfortun:[17,22],uniqu:[2,19],unit:[0,17,21,36],univers:[2,35],univi:[10,35,44],unix:44,unless:[6,13],unload:[4,10,13],unrealist:17,unreason:36,untar:[2,4,12,32,42],until:[6,11,17,22,43],updat:[36,41],upfront:[2,6],upgrad:36,upon:22,upper:[2,5,6,10,21,43],upstream:[],upto:[],usa:[2,11,12,41],usag:[2,18,41,42],use:[0,2,6,9,17,18,20,21,22,30,31,32,33,34,36,42,43],used:[2,5,6,8,9,11,12,13,14,17,18,19,32,34,36,39,42,43,44],useful:[6,11,19,39,43],user:[2,4,5,10,11,12,13,14,18,20,22,23,24,30,31,32,33,36,39,42,43,44],user_group:[7,13],user_nam:[7,13],usergroup:13,usernam:[12,13,30,31,32],uses:[0,4,10,17,30,32,34,43],using:[2,4,6,11,12,17,18,19,30,31,32,42,43],usr:[0,4,9,10,13,30,31,32],usual:[5,6,11,15,19,31,43],utc:[6,11,19,43],util:[2,15],uza:35,v10:19,v20_update_protocol:21,v30_update_protocol:21,v40_update_protocol:21,v60_update_protocol:21,v703:[],v704:[],v711:[],v71:[],valid:[2,6,12,19,32,34,43],valu:[2,3,5,6,8,9,10,11,12,13,17,18,21,30,32,34,43],valuer:2,vanish:17,vari:[5,6,9,39,43],variabel:[],variabl:[2,4,6,10,11,13,17,20,31,33,36,39,43],varianc:[],variat:[6,19],variou:36,vast:39,veloc:[15,19,20,43],veri:[2,6,11,17,21,31,43],version:[2,3,4,6,9,10,13,15,18,21,33,36,42,43,44],version_numb:13,vertic:[5,11,15,19,20,36,38,39,43],via:[2,11,14,15,22,23,30,31,32,36,43],vienna:[2,35],view:[2,11,12,41,44],virtual:42,visit:[2,11,12,30,41],vol:6,wai:[2,5,13,15,17,22,30,31,39,42,43],wait:22,want:[6,9,17,20,33,43],warn:[12,31],water:[2,6,19,43],wave:21,weather:[6,20,39,41],web:[2,6,11,14,22,23,24,33,36,42,43],webapi:[2,6],webserv:[],websit:[2,30,31,42,43,44],wedg:17,well:[2,6,15,21,34,39,42,43],were:[2,6,11,12,19,34,43],west:[2,11],western:2,westernmost:2,wet:17,wether:2,what:[3,5,23,31,41,43],whatev:43,when:[2,4,6,10,17],whenev:21,where:[2,6,9,11,12,13,17,19,21,31,42,43],wherea:[6,15,43],wherebi:[],wherekei:2,wherekeynam:2,wherekeyvalu:2,whether:[2,4,10,12,33,42],which:[0,2,3,4,5,6,7,9,10,11,12,14,15,17,18,19,20,21,22,30,31,36,39,42,43,44],whith:10,who:20,whole:[2,17,43,44],whose:[19,42],why:17,width:[],wien:35,wiki:[2,6,32,44],wil:2,wildcard:43,wind:[5,19,38,39,43],window:[30,31,43],wish:42,within:[2,4,6,10,11,17,30,32,43],without:[2,13,22,33,42,43],word:2,work:[0,2,7,10,11,12,13,14,15,20,22,31,36,41,42,43],workaround:33,workdir:[4,10,13],workload:13,workspac:[10,19,43],workstep:[],would:[6,11,22,30,33,34,43],wrap:20,wrapper:[11,12,18],wrf:[2,5,10],write:[2,6,36,43,44],write_namelist:2,write_reqhead:2,written:[2,6,21,37,40],wrong:34,www:[42,44],x86_64:9,xvf:[4,13,32,42],xxx:19,xxxx:6,xxxxx:43,xxyymmddhh:2,year:[19,31],yet:43,yield:[2,21],you:[0,3,5,6,9,13,21,24,30,31,32,34,42,43,44],your:[9,24,30,31,32,42,43,44],yourself:24,yymmdd:[6,19],yymmddhh:[6,19,21],yyyymmdd:[2,6,11],yyyymmddhh:[17,19],zamg:[36,44],zero:[17,21,34],zonal:21},titles:["Updating the documentation","Auto-generated documentation for the Fortran programme","Auto-generated documentation for the Python scripts","CONTROL file changes","The compilation job script <code class=\"docutils literal notranslate\"><span class=\"pre\">compilejob.ksh</span></code>","The CONTROL file","The CONTROL parameters","ECMWF user credential file <code class=\"docutils literal notranslate\"><span class=\"pre\">ECMWF_ENV</span></code>","CONTROL file examples","The Fortran makefile for <code class=\"docutils literal notranslate\"><span class=\"pre\">calc_etadot</span></code>","The job script <code class=\"docutils literal notranslate\"><span class=\"pre\">job.ksh</span></code>","The executable script - <code class=\"docutils literal notranslate\"><span class=\"pre\">run.sh</span></code>","The installation script - <code class=\"docutils literal notranslate\"><span class=\"pre\">setup.sh</span></code>","Templates","Application modes","Program flow","Auto-generated documentation","Disaggregation of flux data","Control & input data","Output data","Overview","Vertical wind","Access modes","Link collection","Hints for data set selection","Available data sets for member-state users","Available data sets for public users","Metrics","Static code analysis","Test cases","Gateway mode installation","Local mode installation","Remote mode installation","FAQ - Frequently asked questions","Known Bugs and Issues","Developer Team","Changelog","Developer Guide","Code-Level Documentation","ECMWF Data","Evaluation","Welcome to the <code class=\"docutils literal notranslate\"><span class=\"pre\">flex_extract</span></code> Documentation!","Installation","Usage","Support","ToDos"],titleterms:{"case":29,"class":2,"long":19,"new":[19,36],"public":[26,42,43],"static":28,CDS:[31,34],The:[4,5,6,9,10,11,12],accept:42,access:22,addit:[0,6,19],adjust:43,agreement:[],analysi:28,api:[31,34],applic:[14,15],ask:33,auto:[1,2,16],avail:[24,25,26],block:0,bug:[34,36,44],calc_etadot:[9,19,34],calc_etadot_nml:13,calcul:21,can:[24,33],cera:43,certain:43,chang:[3,36],changelog:36,check:2,code:[28,34,38],collect:23,combin:[42,43],comparison:29,compil:4,compilejob:4,content:[7,11,12,19],continu:21,control:[3,5,6,8,18,43],controlfil:2,convert:[],coordin:[],credenti:7,data:[6,17,18,19,24,25,26,34,39,43],dataset:[42,43],definit:43,depend:[30,31,32,42],destin:34,develop:[35,37],diagramm:0,differ:15,disaggreg:[2,17,19],distribut:33,document:[0,1,2,16,38,41],doe:[4,10],domain:6,download:42,eccod:34,ecflexpart:2,ecmwf:[7,31,39,42],ecmwf_env:[7,13],ensembl:19,environ:[30,31,32],equat:21,era5:34,era:43,error:34,evalu:40,exampl:[4,5,8,10,15],execut:11,faq:[33,44],featur:[36,43],field:[6,17,19],file:[3,5,6,7,8,19,21,29,43],find:24,finder:[],fix:36,flex_extract:[41,42],flexpart:[19,42],flow:15,flux:[6,17,19],forecast:19,format:5,fort:19,fortran:[1,9,19,34,42],frequent:33,from:[21,33],full:42,gatewai:[30,34,43],gener:[1,2,6,15,16],get_mars_data:2,grib:[19,29],gributil:2,guid:37,hint:[24,43],horizont:21,how:24,index:19,input:[18,19],instal:[2,12,30,31,32,33,34,42],installscript:13,interim:43,issu:[34,44],job:[4,10,43],jobscript:13,known:[34,44],ksh:[4,10],level:[25,38],librari:33,licenc:42,line:0,link:23,list:44,local:[15,31,43],mail:44,makefil:9,mar:[19,21,29],marsretriev:2,member:[15,25],metric:27,mode:[14,15,22,30,31,32,43],model:25,modul:2,older:17,onlin:[],oper:43,option:[11,12],other:17,out:24,output:[19,21],overview:20,packag:33,paramet:[6,11,12,21,34,43],parti:33,pre:21,precipit:[17,19],predict:19,prepar:[21,30,31,32,43],prepare_flexpart:2,problem:34,program:[2,15,19,34,42],programm:1,proper:43,pure:[],python:2,question:33,quick:[],registr:42,releas:[34,36],remot:[32,43],report:44,request:[19,29],rest:[],retriev:[],run:11,script:[2,4,10,11,12],section:6,select:[24,43],sequenc:0,set:[15,24,25,26],setup:12,softwar:0,some:[],specif:43,specifi:[],sphinx:0,standard:19,start:[],state:25,submiss:11,submit:[2,11],submitscript:13,support:44,surfac:25,system:44,team:35,temp:[],templat:13,temporari:19,test:[29,30,31,42],testcas:[],third:33,ticket:44,time:6,todo:45,tool:2,uiofil:2,updat:0,usag:[11,12,43],user:[6,7,15,25,26],using:21,veloc:21,version:17,vertic:[6,21],web:31,welcom:41,what:[4,10,24,33],wind:[6,21],workflow:15}}) \ No newline at end of file +Search.setIndex({docnames:["Developers/gen_docu","Documentation/Api/api_fortran","Documentation/Api/api_python","Documentation/Input/changes","Documentation/Input/compilejob","Documentation/Input/control","Documentation/Input/control_params","Documentation/Input/ecmwf_env","Documentation/Input/examples","Documentation/Input/fortran_makefile","Documentation/Input/jobscript","Documentation/Input/run","Documentation/Input/setup","Documentation/Input/templates","Documentation/Overview/app_modes","Documentation/Overview/prog_flow","Documentation/api","Documentation/disagg","Documentation/input","Documentation/output","Documentation/overview","Documentation/vertco","Ecmwf/access","Ecmwf/ec-links","Ecmwf/hintsecmwf","Ecmwf/msdata","Ecmwf/pubdata","Evaluation/metrics","Evaluation/staticcode","Evaluation/testcases","Installation/gateway","Installation/local","Installation/remote","Support/faq","Support/known_bugs_issues","authors","changelog","dev_guide","documentation","ecmwf_data","evaluation","index","installation","quick_start","support","todo"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.index":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["Developers/gen_docu.rst","Documentation/Api/api_fortran.rst","Documentation/Api/api_python.rst","Documentation/Input/changes.rst","Documentation/Input/compilejob.rst","Documentation/Input/control.rst","Documentation/Input/control_params.rst","Documentation/Input/ecmwf_env.rst","Documentation/Input/examples.rst","Documentation/Input/fortran_makefile.rst","Documentation/Input/jobscript.rst","Documentation/Input/run.rst","Documentation/Input/setup.rst","Documentation/Input/templates.rst","Documentation/Overview/app_modes.rst","Documentation/Overview/prog_flow.rst","Documentation/api.rst","Documentation/disagg.rst","Documentation/input.rst","Documentation/output.rst","Documentation/overview.rst","Documentation/vertco.rst","Ecmwf/access.rst","Ecmwf/ec-links.rst","Ecmwf/hintsecmwf.rst","Ecmwf/msdata.rst","Ecmwf/pubdata.rst","Evaluation/metrics.rst","Evaluation/staticcode.rst","Evaluation/testcases.rst","Installation/gateway.rst","Installation/local.rst","Installation/remote.rst","Support/faq.rst","Support/known_bugs_issues.rst","authors.rst","changelog.rst","dev_guide.rst","documentation.rst","ecmwf_data.rst","evaluation.rst","index.rst","installation.rst","quick_start.rst","support.rst","todo.rst"],objects:{"":{ControlFile:[2,0,0,"-"],EcFlexpart:[2,0,0,"-"],GribUtil:[2,0,0,"-"],MarsRetrieval:[2,0,0,"-"],UioFiles:[2,0,0,"-"],checks:[2,0,0,"-"],disaggregation:[2,0,0,"-"],get_mars_data:[2,0,0,"-"],install:[2,0,0,"-"],prepare_flexpart:[2,0,0,"-"],submit:[2,0,0,"-"],tools:[2,0,0,"-"]},"ControlFile.ControlFile":{"public":[2,2,1,""],accmaxstep:[2,2,1,""],acctime:[2,2,1,""],acctype:[2,2,1,""],accuracy:[2,2,1,""],addpar:[2,2,1,""],area:[2,2,1,""],assign_args_to_control:[2,3,1,""],assign_envs_to_control:[2,3,1,""],basetime:[2,2,1,""],cds_api:[2,2,1,""],check_conditions:[2,3,1,""],controlfile:[2,2,1,""],cwc:[2,2,1,""],dataset:[2,2,1,""],date_chunk:[2,2,1,""],debug:[2,2,1,""],destination:[2,2,1,""],doubleelda:[2,2,1,""],dpdeta:[2,2,1,""],dtime:[2,2,1,""],ec_api:[2,2,1,""],ecfsdir:[2,2,1,""],ecgid:[2,2,1,""],ecstorage:[2,2,1,""],ectrans:[2,2,1,""],ecuid:[2,2,1,""],end_date:[2,2,1,""],eta:[2,2,1,""],etadiff:[2,2,1,""],etapar:[2,2,1,""],exedir:[2,2,1,""],expver:[2,2,1,""],flexextractdir:[2,2,1,""],format:[2,2,1,""],gateway:[2,2,1,""],gauss:[2,2,1,""],gaussian:[2,2,1,""],grid:[2,2,1,""],inputdir:[2,2,1,""],install_target:[2,2,1,""],installdir:[2,2,1,""],left:[2,2,1,""],level:[2,2,1,""],levelist:[2,2,1,""],logicals:[2,2,1,""],lower:[2,2,1,""],mailfail:[2,2,1,""],mailops:[2,2,1,""],makefile:[2,2,1,""],marsclass:[2,2,1,""],maxstep:[2,2,1,""],number:[2,2,1,""],omega:[2,2,1,""],omegadiff:[2,2,1,""],oper:[2,2,1,""],outputdir:[2,2,1,""],prefix:[2,2,1,""],purefc:[2,2,1,""],request:[2,2,1,""],resol:[2,2,1,""],right:[2,2,1,""],rrint:[2,2,1,""],smooth:[2,2,1,""],start_date:[2,2,1,""],step:[2,2,1,""],stream:[2,2,1,""],time:[2,2,1,""],to_list:[2,3,1,""],type:[2,2,1,""],upper:[2,2,1,""],wrf:[2,2,1,""]},"EcFlexpart.EcFlexpart":{"public":[2,2,1,""],accmaxstep:[2,2,1,""],acctime:[2,2,1,""],acctype:[2,2,1,""],accuracy:[2,2,1,""],addpar:[2,2,1,""],area:[2,2,1,""],basetime:[2,2,1,""],calc_extra_elda:[2,3,1,""],create:[2,3,1,""],dataset:[2,2,1,""],dates:[2,2,1,""],deacc_fluxes:[2,3,1,""],dtime:[2,2,1,""],expver:[2,2,1,""],gaussian:[2,2,1,""],glevelist:[2,2,1,""],grid:[2,2,1,""],inputdir:[2,2,1,""],level:[2,2,1,""],levelist:[2,2,1,""],marsclass:[2,2,1,""],mreq_count:[2,2,1,""],number:[2,2,1,""],outputfilelist:[2,2,1,""],params:[2,2,1,""],process_output:[2,3,1,""],purefc:[2,2,1,""],resol:[2,2,1,""],retrieve:[2,3,1,""],server:[2,2,1,""],stream:[2,2,1,""],types:[2,2,1,""],write_namelist:[2,3,1,""]},"GribUtil.GribUtil":{copy_dummy_msg:[2,3,1,""],get_keys:[2,3,1,""],index:[2,3,1,""],set_keys:[2,3,1,""]},"MarsRetrieval.MarsRetrieval":{"public":[2,2,1,""],accuracy:[2,2,1,""],area:[2,2,1,""],data_retrieve:[2,3,1,""],dataset:[2,2,1,""],date:[2,2,1,""],display_info:[2,3,1,""],expver:[2,2,1,""],gaussian:[2,2,1,""],grid:[2,2,1,""],levelist:[2,2,1,""],levtype:[2,2,1,""],marsclass:[2,2,1,""],number:[2,2,1,""],param:[2,2,1,""],print_infodata_csv:[2,3,1,""],repres:[2,2,1,""],resol:[2,2,1,""],server:[2,2,1,""],step:[2,2,1,""],stream:[2,2,1,""],target:[2,2,1,""],time:[2,2,1,""],type:[2,2,1,""]},"UioFiles.UioFiles":{delete_files:[2,3,1,""],files:[2,2,1,""],path:[2,2,1,""],pattern:[2,2,1,""]},ControlFile:{ControlFile:[2,1,1,""]},EcFlexpart:{EcFlexpart:[2,1,1,""]},GribUtil:{GribUtil:[2,1,1,""]},MarsRetrieval:{MarsRetrieval:[2,1,1,""]},UioFiles:{UioFiles:[2,1,1,""]},checks:{check_accmaxstep:[2,4,1,""],check_acctime:[2,4,1,""],check_acctype:[2,4,1,""],check_addpar:[2,4,1,""],check_area:[2,4,1,""],check_basetime:[2,4,1,""],check_dates:[2,4,1,""],check_grid:[2,4,1,""],check_job_chunk:[2,4,1,""],check_len_type_time_step:[2,4,1,""],check_levels:[2,4,1,""],check_logicals_type:[2,4,1,""],check_mail:[2,4,1,""],check_maxstep:[2,4,1,""],check_number:[2,4,1,""],check_pathes:[2,4,1,""],check_ppid:[2,4,1,""],check_public:[2,4,1,""],check_purefc:[2,4,1,""],check_queue:[2,4,1,""],check_request:[2,4,1,""],check_step:[2,4,1,""],check_time:[2,4,1,""],check_type:[2,4,1,""]},disaggregation:{IA3:[2,4,1,""],dapoly:[2,4,1,""],darain:[2,4,1,""]},get_mars_data:{check_dates_for_nonflux_fc_times:[2,4,1,""],do_retrievement:[2,4,1,""],get_mars_data:[2,4,1,""],main:[2,4,1,""],mk_dates:[2,4,1,""],mk_server:[2,4,1,""],remove_old:[2,4,1,""],write_reqheader:[2,4,1,""]},install:{check_install_conditions:[2,4,1,""],del_fortran_build:[2,4,1,""],get_install_cmdline_args:[2,4,1,""],install_local:[2,4,1,""],install_via_gateway:[2,4,1,""],main:[2,4,1,""],mk_compilejob:[2,4,1,""],mk_env_vars:[2,4,1,""],mk_fortran_build:[2,4,1,""],mk_job_template:[2,4,1,""],mk_tarball:[2,4,1,""],un_tarball:[2,4,1,""]},prepare_flexpart:{main:[2,4,1,""],prepare_flexpart:[2,4,1,""]},submit:{main:[2,4,1,""],mk_jobscript:[2,4,1,""],submit:[2,4,1,""]},tools:{check_for_string_in_file:[2,4,1,""],clean_up:[2,4,1,""],execute_subprocess:[2,4,1,""],generate_retrieval_period_boundary:[2,4,1,""],get_cmdline_args:[2,4,1,""],get_dimensions:[2,4,1,""],get_informations:[2,4,1,""],get_list_as_string:[2,4,1,""],init128:[2,4,1,""],make_dir:[2,4,1,""],my_error:[2,4,1,""],none_or_int:[2,4,1,""],none_or_str:[2,4,1,""],normal_exit:[2,4,1,""],overwrite_lines_in_file:[2,4,1,""],product:[2,4,1,""],put_file_to_ecserver:[2,4,1,""],read_ecenv:[2,4,1,""],send_mail:[2,4,1,""],setup_controldata:[2,4,1,""],silent_remove:[2,4,1,""],submit_job_to_ecserver:[2,4,1,""],to_param_id:[2,4,1,""],to_param_id_with_tablenumber:[2,4,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"],"4":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method","4":"py:function"},terms:{"00h":[6,11],"10u":19,"10v":19,"12h":[6,11],"150px":[],"180w":6,"18utc":2,"1hourli":[8,43],"1st":[],"20c":[5,6,19,21,22,23,34,36,42,43],"20gb":43,"24h":6,"25th":[],"31st":[],"32000mb":[10,13],"3200mb":[4,13],"36hour":[8,43],"3hourli":[8,43],"4th":[],"60px":[],"6th":43,"althanstra\u00df":35,"boolean":2,"break":[],"case":[0,2,4,6,10,13,14,17,19,21,22,32,33,42,43,44],"class":[0,5,6,31],"default":[2,3,5,6,8,9,10,11,12,18,19,31,43],"export":[4,10,13],"f\u00fcr":13,"final":[0,2,11,15,17,19,21,43],"float":[2,11],"function":[2,17,41],"import":[2,6,11,30,31,33,34,36,39,43,44],"int":[2,6,30,32,43],"long":43,"m\u00e4r":[],"new":[2,6,10,11,17,31,41,43,44],"public":[2,5,6,8,10,11,12,14,22,23,24,31,36,39,41],"return":[2,4,10,34],"short":[2,5,6,17,30,43],"switch":[2,4,6,10,13,19],"true":[0,2],"try":[31,42,43],"while":[22,43],ARE:5,But:[],C3S:23,CDS:[2,22,23,33,36,42],Dps:[2,6],ENS:[23,43],FOR:[11,12],For:[0,2,5,6,9,11,13,14,18,19,21,22,24,30,31,32,34,39,42,43],HAS:[11,12,30,31,32,43],Has:[6,11],IDs:[2,6,15,43],Its:[2,43],NOT:[11,12,31],Not:12,One:[33,43],PBS:[4,10,13],THE:[11,12,30,31,32,43],THESE:[11,12,30,31,32,43],The:[0,2,13,14,15,17,18,19,20,21,22,30,31,32,34,39,42,43,44],Then:[2,11,14,42],There:[2,5,18,19,22,31,39,42,43],These:[4,10,13,17,42,43],Use:[0,6,30,32,43],Used:[2,12],Useful:[],Uses:2,Using:[31,43],WITH:[11,12],With:[6,11,12,18,43],_acc:19,_config:2,_expand:2,_file:0,_local:44,_orolsm:19,_static:[],_templat:2,a_0:17,a_1:17,a_2:17,a_3:17,abcd:2,abl:[2,13,18,19,22,30,43],about:[2,5,11,14,19,33,39,42,43],abov:[2,17,31,43],absolut:[],accept:[6,14,21,22,41,43],access:[2,5,6,12,14,23,24,30,31,32,33,39,41,42,43],accmaxstep:[2,5,6,10,43],accomplish:15,accord:[6,12,43],account:[30,32,39,42,43],acctim:[2,5,6,10,43],acctyp:[2,5,6,10,43],accumlu:2,accumul:[2,6,17,19,43],accur:43,accuraci:[2,5,6,10,19,21],achiev:21,action:[23,31,32],activ:42,activid:32,actual:[2,6,12,13,18,19,42,43],adapt:[0,2,5,6,9,11,12,13,18,30,31,32,33,36,43],add:[2,43],added:[17,19],adding:[2,43],addit:[2,5,11,15,17,20,30,31,39,43],addition:[2,6,14,30,43],addpar:[2,5,6,10,43],address:[2,6,12,19,30,32,43],adjac:17,adjust:41,admin:[12,30,31,33],adress:12,advanc:2,aerosol:35,affect:17,after:[2,5,6,11,12,15,17,18,43],afterward:[2,13,17,30,31,32],again:[11,12],against:[],aggreg:19,agre:22,agreement:14,algorithm:[2,17,36],align:[],alist:2,all:[2,5,6,8,11,12,13,15,17,19,30,31,32,33,42,43],alll:39,allow:[2,6,11,22,43],alpabet:2,alreadi:[2,11,12,22,30,31,32,42,43],also:[0,2,5,6,10,11,12,17,18,19,21,22,31,32,39,42,43,44],alter:19,altern:42,alwai:[6,11,12,43],amount:[2,6,11,17,39],anaconda:[31,42],analys:[21,39,43],analysi:[2,5,6,11,19,22,39,43],ani:[2,5,6,11,12,14,17,21,32,33,42,43,44],ann:[2,5,11,12,19,35],annep:[],annouc:44,announc:43,anog__ml:19,anog__sl:19,anoth:[2,6,9,33,43],ansh__sl:19,anymor:3,anyon:44,anyth:[6,11,12,13],api:[1,2,6,11,14,22,23,33,36,42,43],app:[30,32],appear:21,append:2,appli:[2,11,17,21,36,42,43],applic:[2,4,6,7,10,11,12,13,20,21,31,36,42,43,44],approach:17,appropri:[6,43,44],approri:6,april:43,apt:[30,31],arbitrari:2,archiv:[2,5,11,18,20,22,30,41,42],area:[2,5,6,10,11,12,17,19,31,43],arg:2,argument:[2,11,12,18,22,30,31,32,42,43,44],aris:14,around:[17,20],arrai:[2,34],arrang:2,array_t1:2,array_t2:2,array_t3:2,array_t4:2,articl:[2,6],ascrib:17,ask:[19,32,41,42,44],aspect:42,assign:[2,9],assign_args_to_control:2,assign_envs_to_control:2,assimil:43,assoc_nam:30,associ:[2,12,30,43],assum:[21,43],atm:[],atmospher:[17,20,23,34,41,43],attempt:2,attent:[6,43],attribut:[2,11,12,41],aug:31,august:43,austria:35,author:[2,5,11,12,32],auto:38,automat:[6,11,14,17,22,30,32,36,43,44],autoprogram:[],avail:[2,3,5,6,11,12,17,19,21,22,23,30,31,32,33,34,39,42,43,44],averag:17,avoid:[19,21,36,43],awar:[34,43],awk:[4,13],back:[6,11,42],bahaviour:[],ball:[2,42],base:[2,7,10,11,17,36,39,42],basetim:[2,5,6,10,11,17,36,43],bash:[11,12,43],basic:[2,17,31],batch:[4,10,11,12,13,18,20,30,43],bdynam:31,beaver:[30,31],becaus:[12,21,43],beck:2,been:[5,15,30,31,32,42,43],befor:[0,2,6,10,17,19,32,34,39,42,43],begin:[2,13,17],beginn:[18,43],behaviour:[5,18],being:[12,19],belong:[42,43],below:[7,9,17,19,21,31,34,43,44],best:[6,17,39,43],better:[6,43],between:[2,4,6,7,10,17,19,21,30,43],beyond:43,bicub:[],big:[30,31,32],bilinear:17,bin:[4,10,11,12,13,31],bionic:[30,31],bit:[2,6],blank:[2,11],block:[19,43],blockdiag:0,blockdiag_fontpath:0,blog:33,blue:[12,17],boku:35,border:17,both:[2,21,31,39,43],bottom:44,boundari:[2,11,17],box:[2,11,12,41],bracket:43,branch:42,broader:39,bstatic:31,bug:41,build:[2,23],built:32,bunch:2,buster:[9,30,31],button:42,bypass:[],calc_etadot:[4,12,13,15,18,21,30,31,32,36,38,42,43],calc_etadot_fast:[30,31,32],calc_extra_elda:2,calcul:[2,5,6,15,17,20,43],calendar:43,calibr:[6,43],call:[2,4,9,10,11,12,13,15,18,19,22,30,31,42,43],can:[2,3,5,6,9,11,12,13,14,15,18,19,21,22,30,31,32,34,39,40,41,42,43,44],cancel:22,cannot:[21,43],care:[6,11,43],carefulli:39,carri:[2,6],cat:[10,13],catalogu:[6,43],catego:[],categori:44,caution:43,cautiou:[],cautious:43,caveat:43,cca:[2,4,9,10,11,12,13,14,30,32,43],ccb:[4,9,10,11,12,13,14,30,32,43],cdot:17,cds_api:[2,10],cdsapi:31,cdsapirc:31,ce00010800:19,ce000908:43,cell:17,centr:[19,20,39,41],central:[2,17],cera20c:[6,31],cera:[5,6,19,21,22,23,34,36,41,42],cera_exampl:43,cera_testgrid_local_cd:19,cerapubl:43,certain:[2,18,41,42],certif:30,chang:[6,11,12,13,15,17,18,23,31,32,39,41,42,43],change_icon:[],changelog:41,charact:2,character:2,characteris:2,characterist:43,check:[4,6,9,10,11,12,15,18,30,31,33,36,42,43],check_accmaxstep:2,check_acctim:2,check_acctyp:2,check_addpar:2,check_area:2,check_basetim:2,check_condit:2,check_dat:2,check_dates_for_nonflux_fc_tim:2,check_for_string_in_fil:2,check_grid:2,check_install_condit:2,check_job_chunk:2,check_len_type_time_step:2,check_level:2,check_logicals_typ:2,check_mail:2,check_maxstep:2,check_numb:2,check_path:2,check_ppid:2,check_publ:2,check_purefc:2,check_queu:2,check_request:2,check_step:2,check_tim:2,check_typ:2,checkerboard:17,choic:[9,21,43],choos:21,choosen:12,chose:31,chosen:[2,21],chunk:[2,11],circl:17,classif:[2,6],clean:2,clean_up:2,clear:[39,43],click:[24,42],client:[2,31],climat:[22,23,42],clist:2,clone:42,close:43,closest:34,cloud:[2,6,19,43],cmd_list:2,cmp:[],coarser:[3,6],code:[0,2,6,12,13,19,31,32,36,41,42,43],collect:[2,39,41,43,44],collis:19,colour:17,column:2,combin:[2,11,41],come:8,comma:[2,6,43],command:[2,4,5,9,10,11,12,15,18,22,30,31,32,34,42,43,44],commandlin:[2,11,12,30,31,32,43],comment:[3,5,13],common:[2,11,12,41,43],commonli:2,commun:[39,42,43,44],compar:[17,43],compat:[3,6,18,21],compil:[2,9,12,13,18,30,31,32,33,42],compilejob:[13,18,43],complet:[2,14,17,23,31,36],complex:39,compon:[0,2,17,19,39,42],compos:19,composit:[5,19,43],comprehens:5,comput:[13,17,21,22,23,30,42,43],concaten:2,concatenate_sign:2,concern:2,conda:31,condit:[2,6,11,17],conduct:12,configur:[2,42],confluenc:2,confus:39,congratul:42,connect:[2,22,30,32,43],conrtol:[],conserv:[2,6,17],consider:17,consist:[2,3,11,17,18,19,20,21,31,43],consol:[30,31],constel:8,constitut:11,construct:[0,27,28,29,37,38,40],consult:43,consum:31,contact:23,contain:[0,2,5,7,8,11,12,13,15,17,19,21,31,33,34,42,43,44],content:[2,6,13,23,30,32,39,41,43],context:2,continu:[2,6,17,43],control:[2,10,11,12,13,15,19,21,22,34,38,39,41,42,44],control_:[5,43],control_cera:[8,10,43],control_cont:13,control_ea5:[8,11,12,30,31,32,43],control_ei:[8,43],control_od:[8,43],controlfil:[10,11,12,13,30,31,32,43],controlparamet:5,convect:[2,11,17,19],conveni:43,convent:[2,5,19],convers:2,convert2:36,convert:[2,15,17,20,36,43],coordin:[19,21,43],copernicu:42,copi:[2,11,12,41,43],copy_dummy_msg:2,copyright:[2,11,12],corner:6,correct:[2,6,36,43],correctli:[2,6],correspon:18,correspond:[2,6,9,11,13,17,19,34,39,43],correspondingli:43,cost:21,could:[17,43],count:[6,11,34],counter:2,coupl:2,cours:34,cover:43,crai:[4,10,13],creat:[0,2,4,6,7,10,11,12,13,15,18,19,20,21,30,32,43,44],creation:2,creativ:[2,11,12,41],creativecommon:[2,11,12,41],credenti:[12,13,15,18,31,42,43,44],cross:6,csv:[2,6,11,15,19,43],cubic:2,current:[0,2,6,9,12,14,17,21,31,40,42,43],cvh:19,cvl:19,cwc:[2,5,6,10,43],cycl:43,cyclic:[6,21],d64:[30,32],dai:[2,6,11,17,19,23,30,31,43],daili:[6,43],damp:17,dapoli:2,darain:2,dark:17,dat:11,data:[2,5,8,11,12,15,20,21,22,23,31,36,38,41,42],data_retriev:2,databas:23,dataset:[2,5,6,10,11,14,19,21,22,23,31,41],datatyp:19,date:[2,5,6,11,12,17,19,31,34,43],date_chunk:[2,5,6,10,11,43],date_time_steprang:19,datechunk:2,datelin:6,datetim:2,deacc_flux:2,deaccumul:[2,43],deactiv:36,debian:[9,30,31,42],debug:[2,5,6,9,10,11,19,21,36,43],decid:[2,5,18,43],decim:43,decis:2,declar:43,declin:[],decompos:2,dedic:22,defin:[2,5,6,10,11,12,19,21,24,34,39,42,43],definit:[2,5,18,41],degre:[6,21,43],degress:3,dejavu:0,dejavuserif:0,del_convert_build:[],del_fortran_build:2,delai:44,delet:[2,6,19,32,43],delete_fil:2,delta:17,delta_t:2,demand:[17,21,31,43],demonstr:19,denot:[2,17],depart:35,depend:[2,6,11,12,13,14,15,17,19,20,21,34,41,43],deposit:17,deprec:2,depthbelowlandlay:19,deriv:[2,30,31],describ:[12,14,18,20,22,32,42,43],descript:[2,5,6,11,12,13,19,21,34,39,43,44],design:[],desir:[2,6,17,21,43],despit:31,destin:[2,5,6,7,10,12,13,15,30,31,32,36,43],destination_nam:[7,13],deta:21,detail:[2,5,13,19,20,21,31,42,43],detect:[6,44],determin:[2,11,12,17,43],dev:[9,17,31,42],develop:[0,2,6,9,17,40,41,44],deviat:5,diagnost:[2,6],diagram:[0,12,15],diamond:17,dict:2,dictionari:2,differ:[2,6,8,14,21,22,34,39,43],differenti:[4,10,43],difficulti:15,digit:19,dimens:[2,17],dimension:[2,17,43],direct:[2,13,14,21,22,43],directli:[2,4,10,11,12,13,14,21,22,42,43],directoi:42,directori:[0,2,4,5,6,7,8,9,10,11,12,13,14,18,31,32,33,36,42,43],dis:19,disabl:[6,21],disaggegr:2,disaggreg:[5,6,15,36,38,43],discard:6,discret:17,discretis:[],discuss:[40,43],disk:[31,43],dispers:[2,6,17],displai:[2,6,32],display_info:2,disregard:2,distinct:2,distinguish:[6,11],distribut:[30,31,41,42,43],disturb:43,div:[],diverg:[19,43],divers:2,divid:[2,11,17,19,22],do_retriev:2,document:[5,8,11,19,21,23,30,32,36,43],doe:[2,3,11,12,14,33],doesn:[6,11,12],doi:[6,17],doing:[2,31,43],domain:[5,43],don:[9,12,31,33,42],done:[2,4,6,10,11,12,13,14,17,22,31,42,43],dot:0,doubl:[2,4,6,8,11,13,43],doubleelda:[2,5,6,10,43],down:42,download:[23,32,36,41],download_cdsapi:31,download_cera20c_ecmwfapi:31,download_era5_cdsapi:31,download_erainterim_ecmwfapi:31,downward:[3,6,18,34],dpdeta:[2,5,6,10,43],dpkg:[9,42],drive:[2,20,43],dry:17,dtime:[2,3,5,6,10,43],due:[6,11,12,17,43],durat:43,dure:[2,4,9,12,13,15,18,31,42,43],each:[2,5,6,10,11,13,14,17,19,39,42,43],earlier:[11,43],easi:[17,18,20,43],easier:[18,22],easiest:[30,31],easili:[2,11],east:[2,11,19],eastern:2,easternmost:2,eastward:17,ec_api:[2,10],ec_memory_per_task:[4,10,13],ec_threads_per_task:[4,10,13],ecac:32,ecaccess:[2,4,10,12,13,14,15,22,23,30,32,43],ecaccess_do_not_remov:[4,10,13,43],ecc:2,eccod:[4,9,10,13,23,30,31,32,33,36],eccodes_include_dir:9,eccodes_lib:9,ecd:2,ecf:[2,6,32],ecfsdir:[2,5,6,10],ecg:[4,10,13],ecgat:[2,4,6,9,10,11,12,13,14,21,30,32,43],ecgb11:[32,43],ecgb:[4,10,11,12,13],ecgid:[2,5,6,7,10,12,13,30,31,32,43],echo:[4,12,13],echom:32,ecmf:19,ecmwf:[2,4,5,6,9,10,11,12,13,14,15,17,18,19,20,21,22,23,30,32,33,34,36,41,43],ecmwf_env:[2,11,12,18,43],ecmwfapi:[31,33],ecmwfapirc:31,ecmwfdataserv:[2,31],ecmwfservic:[2,31],ecnam:[],econdemand:[2,5,6,10],ecscratch:32,ecstorag:[2,5,6,10],ectmp:[2,5,6,10],ectran:[2,5,6,10,15,30,32,43],ecuid:[2,5,6,7,10,12,13,30,31,32,43],ecwmf:[22,42],edg:12,edit:19,editor:[9,30,31,32],effect:[13,21],effici:[13,17,19,43],egat:[],either:[2,6,11,14,15,43],elda:[2,6,8,36,43],element:[2,3],els:[4,10,12,13],email:[2,4,6,10,13,30,32,43,44],emo:[4,10,13],emoslib:[21,23,31,32,33],empti:[2,11,12],enabl:[22,30,43],encount:42,end:[2,4,6,10,11,13,17,19,43],end_dat:[2,5,6,10,11,17,43],end_period:2,enda:[10,19,31,43],endian:[30,31,32],endif:17,endo:6,enfo:[6,8,36,43],english:36,enough:[6,22,43],ens:[8,43],ensembl:[2,6,23,36,43],ensemble_memb:19,ensur:21,enter:30,entri:[11,43],env:[2,4,13],environ:[2,4,6,10,11,12,13,14,20,33,42,43,44],environment:[2,35],eof:[10,13],equal:[2,6,11,21,43],equat:[2,6,17,43],equidistantli:17,equival:[30,31],era5:[2,5,6,21,22,23,31,42,43],era:[5,6,11,19,21,22,23,34,36,41,42],eror:2,error:[2,4,10,12,13,21,30,31,43],error_msg:2,esac:[4,10,13],escap:13,especi:[21,42,43],establish:[14,30],eta:[2,5,6,8,10,19,21,38,43],etadiff:[2,5,6,10,21,43],etadot:[2,6,19,43],etapar:[2,5,6,10],etayymmddhh:[6,21],etc:[31,39,44],europ:43,european:[20,39,41],evalu:41,even:[17,21,31,32,43],event:[17,44],eventu:[],everi:[22,30,34,39,43],everyon:6,everyth:[0,2,9,14,31,43],everytim:[],ewss:[17,19],exact:[2,17,43],examin:2,exampl:[2,3,6,7,11,17,18,19,22,23,31,34,39,42,43],exce:[],exceed:43,excelt:0,except:[2,6,21,31,43],execut:[2,9,10,12,13,14,15,18,19,31,32,33,36,42],execute_subprocess:2,exedir:2,exist:[2,6,11,43,44],exit:[2,11,12,34],expect:[2,43],expens:[6,21],experi:[6,43,44],experienc:43,explain:[19,43,44],explan:43,explanait:[],explic:[],explicit:42,explicitli:[6,20,22,43],express:2,expver:[2,5,6,10,19,31],extend:[39,43],extens:[0,2,6,17,43],extra:[2,5,6,14,31,36,42,43],extract:[2,5,6,11,19,21,22,31,34,43],extractxxxxx:43,f90:[30,31,32,36],f_0:17,f_1:17,f_2:17,f_3:17,f_i:17,facil:[22,30],fail:[2,4,6,10,13,34,43],failur:43,fals:2,familiar:43,faq:41,far:6,fast:20,faster:[18,22,44],fcog_acc_sl:19,fconvert:[30,31,32],fdefault:[30,31,32],feasibl:21,featur:[2,6,20,41,44],februari:5,fedir:2,feel:42,few:[6,30,32,43],fewer:43,fftw3:[31,32],fftw:[23,30,32,33],field:[2,5,11,15,20,21,23,36,41,43],field_typ:19,fig:17,figur:[14,17,43],file1:2,file2:2,file:[0,2,4,9,10,11,12,13,15,17,18,20,22,23,30,31,32,34,36,39,41,42,44],filemod:2,filenam:[2,17,19,43],filename_in:2,filepath:2,fill:[6,42,43],filter:[2,17],find:[5,9,31,39,42,43],finder:[],fine:[21,31],finer:[3,21],finish:[31,42,43],first:[2,5,6,11,17,32,36,39,42,43],fit:2,fix:[4,10,17,34,41],flex:[10,13,43],flex_ecmwf:[4,10,13],flex_extract:[0,2,4,5,6,8,9,10,11,12,13,14,15,17,18,19,20,21,22,30,31,32,33,34,39,40,43,44],flex_extract_repo:[],flex_extract_v7:[10,13,19,31,34],flex_extract_v:[4,13],flex_extract_vx:[5,7,8,9,11,12,13,18,30,31,32,42,43],flexcompil:[4,13,30,32],flexextract:19,flexextractdir:2,flexpart:[2,6,11,15,17,20,21,22,31,34,41,43,44],flexpart_root:[4,13],flexpart_root_script:[4,13],flexpartdir:12,flextra:[2,20,21,41],flow:[2,11,12,20],flux:[2,5,15,21,38,43],fluxyyyymmddhh:17,flxacc2:17,follow:[2,5,8,12,13,15,17,18,19,21,30,31,32,33,34,39,42,43],font:0,fontpath:0,fopenmp:[30,31,32],for_develop:0,forecast:[2,5,6,11,17,20,21,22,23,39,41,43],forecast_step:19,forescast:43,forg:31,forget:[12,33],form:[6,42],format:[2,6,10,11,12,15,17,19,20,31,43],formul:17,fort:[2,13],fortran90:[],fortran:[2,4,12,13,15,16,17,18,20,21,30,31,32,36,38,41,43],fortran_program:13,found:[2,5,6,9,13,19,21,30,40,42,43,44],four:[2,14,17,42],fp_root:2,fp_root_path:13,fp_root_script:13,fpdir:2,frac32:17,frac:17,framework:[13,30],free:42,frequent:[41,43,44],from:[2,3,4,5,6,9,10,11,12,13,14,15,17,18,19,20,22,23,30,31,32,34,36,39,41,42,43],fromfil:2,fsr:19,ftime:2,ftp:32,ftrafo:[30,31,32],ftype:2,fulfil:17,full:[2,6,11,12,21,22,31,41,43],fulli:39,further:[2,5,8,31,32,43],furthermor:18,futur:[6,21,43],g_i:17,g_ig_:17,gain:[],gap:43,gate:[],gatewai:[2,4,5,6,7,9,10,12,13,14,15,18,20,22,31,32,36,41,42],gateway_nam:[7,13],gatewaynam:[12,30,32],gatewayserv:43,gauss:[2,5,6,8,10,21,38,43],gaussian:[2,6,10,19,21,23],gen_docu:0,gener:[0,4,5,10,13,17,19,21,23,30,31,38,42,43],general:2,generate_retrieval_period_boundari:2,genericsftp:[2,10,12,30,32],genshi:[4,10,13,30,31,32,36],geometr:2,geophys:35,geosci:17,geoscientif:[2,6,17,40],german:36,get:[2,6,30,31,32,34,36,42,43],get_cmdline_arg:2,get_dimens:2,get_inform:2,get_install_cmdline_arg:2,get_kei:2,get_list_as_str:2,gfortran:[9,23,30,31,32,33],gid:[12,32],git:42,gitmob:42,give:[6,21,34,42,43],given:[2,5,14,17,21,43],glevelist:2,global:[5,6,8,21,39,43],gmd:[6,17],gnu:[9,30,31,32,42],goe:2,going:[2,6,11],good:21,grant:42,graphviz:0,grb:[2,19],greater:[6,11],green:[12,17],gregor:35,grep:[9,10,13,42],grib1:[2,5,6,10,15],grib2:[2,6,15],grib2flexpart:10,grib:[2,6,11,15,23,31],grib_api:[4,10,13,33,36],grib_l:19,gribmessag:11,grid:[2,3,5,6,10,17,19,20,21,23,31,43],grid_simpl:19,grid_typ:19,gridtyp:19,ground:34,group:[2,4,5,12,13,14,22,31,42],groupid:[12,30,32],groupnam:[],grphreal:[30,31,32],guarante:[2,11,12,17,43],guid:[23,36,41,43],guidanc:21,haimberg:[2,35],half:[2,6,11,17,21,43],handl:[2,5,39,43],happen:0,hard:2,harmon:19,has:[0,2,4,6,10,11,12,13,14,17,21,22,30,31,32,39,42,43],hast:6,have:[2,3,5,6,11,12,14,15,22,30,31,32,33,34,39,42,43],hcc:19,header:2,heat:[2,17,19],heavili:21,height:17,help:[2,11,12,18,43,44],help_icon:[],hemispher:43,henc:17,her:12,here:[2,6,8,11,12,15,19,31,39,43,44],hidden:31,high:[6,11,13,21,31,43],higher:[2,21],highest:21,highli:21,highlight:43,highr:[8,43],hint:[5,39,41,44],his:12,histor:21,hittmeir:[2,6,17],home:[4,10,12,13,14,23,30,31,32,42,43],homogen:39,horizont:[2,5,6,17,43],hoskin:6,host:[4,10,11,12,13,43],hostnam:[32,43],hour:[2,6,11,17,19,22,43],hourli:[6,22,43],how:[2,5,6,15,18,22,23,31,39,42,43],howev:[6,15,17,21,22,31,39,43],hpc:[12,21,43],hre:[23,43],href:[],html:[],http:[2,6,11,12,17,30,32,41,42,44],humid:19,hybrid:19,i32:[30,32],i_i:17,ia3:2,ice:[2,6,43],idea:39,identif:2,identifi:[2,6,11,12,17,19],identificationkeyword:2,idir:2,idirectionincrementindegre:2,ids:2,idx:[2,19],ifort:[],iid:2,img:10,implement:[17,19,43],impli:17,importantli:39,improv:[2,17,36,43],inbetween:[6,43],includ:[6,9,11,12,13,30,31,32,34,42,43,44],incorpor:42,increas:43,incur:21,independ:39,index:2,index_fil:2,index_kei:2,index_v:2,indic:[2,5,17,19,43],individu:[2,4,6,10],ineffici:43,info:2,inform:[2,5,6,8,11,14,18,19,20,22,23,32,34,39,42,43,44],informt:2,init128:2,init:2,initi:[2,11,12,36],initialis:[2,18,36],input:[2,5,6,10,11,12,15,17,20,38,41,43],inputdir:[2,10,11,13,43],inputfil:[2,11],insert:31,instal:[0,4,5,6,7,9,10,13,14,15,18,20,22,36,41,43],install_loc:2,install_target:[2,10,12],install_via_gatewai:2,installdir:[2,12,30,31,32,42],installscript:[4,12,30,32],instanc:2,instantan:19,instead:[2,11,12,15,22],institut:[35,39],instruct:[2,6,14,30,31,33,42,43],intact:11,integ:[2,6,11,43],integr:[2,17],intel:[4,10,13],intend:[6,8,11,14,39],interact:30,interest:42,interfac:[2,5,23,24,36,43],intergovernment:39,interim:[5,6,11,19,21,22,23,31,34,41,42],intermedi:2,intern:[2,11,12,41],internet:43,interpol:[2,6,11,17,19,43],interpret:18,interv:[2,3,6,12,17,19],introduc:[17,19,34,36,43],introducst:[],introduct:[],introductari:23,introdut:[],investig:[],involv:12,ipar:2,ipnam:32,isol:17,issu:41,iter:2,its:[2,11,13,17,19,21,39,42],itself:[2,43],jame:[2,17],januari:43,jasper:[30,32,36],jdirectionincrementindegre:2,job:[2,6,11,12,13,14,15,18,19,20,30,32,41],job_chunk:[2,10,11,43],job_fil:2,job_id:[2,4,13],job_templ:[2,10,11,12,30,31,32,43],jobfil:2,jobnam:[2,4,13],jobop:43,jobscript:[10,11,43],journal:[17,40],jtemplat:2,june:[2,43],just:[2,3,6,8,12,31,43],k_i:17,keep:[2,13,17,42,43],kei:[2,31,42],kept:6,keynam:2,keyvalu:2,keyword:[2,6,11,19,22,23,43],kind:[2,6,19,43],km4a:[4,10,13],know:[31,43],known:[5,41],known_bugs_issu:[],korn:[2,4,10,12,13,18,20,36,43],kornshel:[],ksh:[13,18,43],kwd:2,label:[12,19,31],lagrangian:[2,6,17],larg:[2,6,11,17,19,36,43],larger:[6,11,21],last:[2,6,11,17,19,30,32,34,43],lat:[2,6,11,19,21,43],late:17,later:[2,31,34],latest:[22,42,43],latitu:2,latitud:[2,6,20,43],latitudeoffirstgridpointindegre:2,latitudeoflastgridpointindegre:2,latter:12,lcc:19,ld_library_path:33,lead:[6,11,13,17,19,32,43],learn:39,least:[2,12],leav:11,leccod:[9,30,31,32],leccodes_f90:[9,30,31,32],left:[2,5,6,10,17,21,42,43],lemo:[30,32],lemosr64:31,length:[2,17,43],leopold:[2,35],less:21,let:11,letter:[2,11,12,19,41],level:[2,5,6,10,11,12,15,18,19,21,22,31,34,41,43],level_typ:19,levelist:[2,5,6,10,11,19,31,43],levellist:34,levtyp:[2,19,31],lfftw3:[30,32],lib64:31,lib:[9,30,32,33,36],libeccod:[9,31,42],libemo:[30,31,32],librari:[4,9,10,14,20,23,31,32,41,42,44],licenc:[11,12,22,23,41],licens:[2,6,11,12,14,22,41],lies:2,life:35,light:12,like:[2,9,11,17,30,32,34,42,43],limit:[6,11,19,22,39,43],line:[2,5,11,12,13,15,17,18,19,22,30,32,42,43,44],linear:[2,6,17],linearli:17,link:[0,9,39,41,42,43],linux:[9,12,14,15,22,30,31,42,44],liquid:[2,6,43],list:[2,5,6,8,9,11,12,15,17,19,20,23,31,34,41,43],list_obj:2,littl:17,ljasper:[30,31,32],load:[2,4,10,11,12,13,30,32,36,43],local:[2,5,6,7,9,11,12,14,22,30,32,33,36,41,42],localmachin:32,localus:32,locat:[2,7,11,12,43],lock:[],log:[2,4,6,10,13,31,32,42,43,44],logarithm:19,logic:[2,10],login:[32,43],lon:[2,6,11,19,21,43],longer:[2,6,36],longitud:[2,6,20,43],longitudeoffirstgridpointindegre:2,longitudeoflastgridpointindegre:2,longiud:[],look:[2,30,32,34,43],lot:[21,43],lower:[2,5,6,10,21,43],lowest:[19,34],lp64:[30,32],lpthread:[30,32],lrwxrwxrwx:[30,31,32],lsm:19,lsp:[17,19],machin:[2,4,9,10,12,13,14,15,31,32,42,43],made:[2,22,39,43,44],magnitud:2,mai:[6,11,12,15,17,30,31,39,42,43,44],mail:[2,4,6,10,13,35,41,43],mailfail:[2,5,10,13,43],maill:44,mailop:[2,5,6,10,13],main:[2,5,18,20,22,43],mainli:43,maintain:17,make:[0,4,13,18,30,33],make_dir:2,makefil:[2,4,12,13,18,30,31,32,33,36],makefile_crai:[9,12,30,32],makefile_debug:9,makefile_ecg:[4,9,12,30,32],makefile_fast:9,makefile_local_gfortran:[9,12,31],manag:[13,30,31,42],mani:[17,43],manipul:2,mar:[2,6,11,15,18,20,22,23,30,31,32,33,36,41,42,43],march:[2,22,30,31,32],margin:[],mark:[4,5,10,13,17,19,43],mars_request:[2,6,11,15,19,43],marsclass:[2,10,19],marsfil:2,maschin:11,mask:43,mass:21,master:42,match:2,math:[],mathrm:17,matter:[2,12],max:[6,11],max_level_list:2,maxb:[2,13,19],maxim:[],maxima:17,maximum:[2,5,6,11,34,43],maxl:[2,13,19],maxstep:[2,5,6,10],mcc:19,mdpdeta:[2,13,19],mean:[2,4,12,13,17,19,31,43],measur:21,medium:[20,39,41],member:[2,6,12,14,19,22,23,24,30,31,39,42,43],memberst:[2,6],memori:[6,11],mendel:35,mention:[13,14,17,31,43],merg:15,mess:42,messag:[2,11,12,19,21,30,31,34],met:35,meta:[2,13,19],metadiff:[2,13,19],metapar:[2,13,19],meteorolog:[2,17,19,20,35,39,41],meter:[],method:[2,5,6,11,17,19,21,22,38,39,40,43],mgauss:[2,13,19],might:[0,2,6,11,15,18,22,31,39,42,43],migrat:[2,23],min:17,mind:[6,43],minim:42,minima:17,minimis:31,minimum:[20,43],minut:[2,30,32],mismatch:43,missingvalu:2,mix:43,mk_compilejob:2,mk_convert_build:[],mk_date:2,mk_env_var:2,mk_fortran_build:2,mk_job_templ:2,mk_jobscript:2,mk_server:2,mk_tarbal:2,mkdir:[4,10,13],mlevel:[2,13,19],mlevelist:[2,13,19],mnauf:[2,13,19],mnt:19,mock:0,mod:[2,4,9,13],mode:[2,4,6,7,9,10,11,12,13,18,19,20,36,39,41,42,44],model:[2,6,15,17,19,20,21,22,23,34,39,40,41,43],modif:2,modifi:[2,9,22,31,43],modul:[4,10,11,12,13,14,30,32,36,42,43],modular:36,momega:[2,13,19],momegadiff:[2,13,19],moment:6,mon:17,monitor:43,monoton:[2,17],month:[11,19,31,43],monthli:6,more:[2,5,6,11,12,14,17,19,42,43,44],most:[2,6,13,36,39,43,44],mostli:[2,6,19,43],motiv:17,mountain:[2,11,12,41],move:[0,2],mreq_count:2,msgatwai:30,msl:19,msmooth:[2,13,19],much:[39,44],multipl:[2,43],multipli:[6,21],muser:[10,13],must:[6,11,14,32,43],my_error:2,myecnam:12,mygroupnam:12,myuser:12,name:[2,4,5,6,10,11,12,13,17,19,30,31,32,36,42,43],name_of_this_fil:[4,10,13],name_of_your_makefil:31,namelist:[2,13,19],namespac:2,namgen:[13,19],nano:[30,32],nas:19,nation:[22,39],nativ:[30,31,32],natur:[17,35],necessari:[0,2,3,4,6,9,10,11,12,13,14,18,20,30,31,32,33,36,43,44],necessarili:5,nedit:9,need:[0,2,3,5,6,11,12,13,14,18,19,20,21,22,31,32,37,40,42,43],neg:[2,17],neglect:6,net:[17,19],nevertheless:2,newer:19,newest:43,newslett:[],next:[30,32,43,44],nfield:2,night:[],non:[2,6,17,34,43],noncycl:6,none:[2,5,6,10,11,12,17,19,30,31,32,43],none_or_int:2,none_or_str:2,nonzero:2,normal:[4,6,10,13,43],normal_exit:2,north:[2,11],northern:[2,43],northernmost:2,northward:[17,19],notabl:43,notat:17,note:[6,15,17,32,34,42,43],notif:[2,5],notifi:2,novemb:[2,21],now:[22,31,42],nowadai:[],nsss:[17,19],number:[2,3,4,5,6,8,9,10,11,13,17,18,19,20,21,34,36,43],numer:39,numpi:[2,30,31,32],object:2,observ:2,obtain:[2,17,42,43],obvious:17,occur:[2,17],octahedr:23,octob:11,odir:2,off:[2,5,6,19],often:21,og_orolsm__sl:19,okt:31,old:[0,2,6,11,17,36,43],older:[6,15,43],omega:[2,5,6,10,19,21,38,43],omegadiff:[2,5,6,10,21,43],omegayymmddhh:[6,21],onc:[11,43,44],one:[2,5,6,11,12,17,18,19,32,34,42,43],ones:[17,32],onli:[2,3,5,6,11,12,17,19,21,22,32,34,42,43,44],onlin:[36,43],onward:6,open:[2,9,20,30,31,32,41,43],opend:12,oper:[2,5,6,8,10,11,12,17,21,23,31,34,39,41,42],operation:6,oportun:[],opportun:[],opt:[],optim:21,optimis:[9,12,15,43],option:[2,5,6,15,17,19,21,33,36,42,43],optionalind:5,orang:12,order:[2,5,19,43],org:[2,6,11,12,17,41],organis:39,origin:[2,6,11,17,19,43],orographi:19,other:[2,5,6,9,11,31,39,42,43,44],otherwis:[2,12,43],our:42,out:[2,4,6,9,10,13,30,31,32,42,43],output:[2,4,5,6,10,11,12,13,17,30,31,32,36,38,39,41,42,43,44],outputdir:[2,10,11,13,43],outputfilelist:2,outsid:31,over:[2,17,43],overal:[2,19],overhead:43,overlap:[6,17],overrid:[3,11],overrul:5,overview:[8,14,15,17,23,34,38,41,42],overwrit:[0,2,43],overwrite_lines_in_fil:2,overwritten:[2,18,31],own:[19,32,42],p_a:[],p_b:[],p_c:[],p_d:[],packag:[0,4,10,13,20,30,31,41,42],package_nam:42,packingtyp:19,page:[30,42],panel:42,paper:[34,40],par:2,paragraph:44,parallel:[],param1:43,param2:43,param:[2,19,31],paramat:2,paramet:[2,3,4,5,8,9,10,13,15,17,18,19,20,23,30,31,32,36,39,41,42],parameteris:43,parameterlist:[11,12],parameternam:2,paramx:43,parent:[2,11,19],part:[2,17,20],parti:[14,20,23,41],particl:[2,6,17],pass:[2,10,22,34,42],passcod:30,password:[30,32],path:[0,2,4,6,8,9,10,11,12,13,14,31,32,33,34,42,43],path_flexextract_dir:2,path_fortran_src:2,path_input_dir:2,pattern:[2,43],paul:17,pbs_jobid:[10,13],pdf:21,pep8:36,per:[2,5,6,11,15,19,43],perform:[2,13,15,21],period:[2,5,6,11,17,30,43],person:12,perturb:[6,19],petra:[2,35],phgrreal:[30,31,32],philipp:[2,5,6,11,12,17,35],physic:[35,39],pid:[19,43],piec:[17,19],piecewis:17,pip:[0,31,42],place:[2,12,13,14,30,44],placehold:[13,32],plan:[6,21],platform:42,pleas:[5,14,15,21,30,31,32,43,44],plot:23,plu:17,png:0,point:[2,11,17,19,43],polynomi:[2,17],posit:[2,6,13,17],posnam:[30,31,32],possibl:[2,5,6,8,11,12,17,21,22,31,42,43,44],post:[2,6,15,31,44],postprocess:2,pp_id:[11,43],ppid:[2,11,19],pre:[9,17],precalcul:6,precip:19,precipit:[2,5,6,11,23,36,43],precis:33,preconvert:[],predict:[39,43],prefar:42,prefer:[6,30,31,32],prefix:[2,5,6,10,19,21],prepar:[0,2,4,6,10,11,12,13,14,15,20,26,41,42],prepare_flexpart:11,preprocessor:44,present:[2,7,12,23,30,32,42,43],preserv:[17,19,43],pressur:[2,19,21,22,31],pressure_level:31,previou:[18,21,43],prgenv:[4,10,13],primarili:9,principl:43,print:[2,4,13,43],print_infodata_csv:2,prior:[17,21],problem:[2,17,36,42,43,44],procedur:[5,17],process:[2,4,6,7,9,10,11,12,13,14,15,17,18,19,22,31,36,42,43,44],process_output:2,prod:2,produc:[9,17,19,21,39,43],product:[2,42,43],product_typ:31,progam:42,program:[0,4,9,11,12,13,17,18,20,21,30,31,36,41,43],programm:16,progress:[15,43],prompt:30,proper:[18,41],properli:[2,12,15,34,42,44],properti:[2,19,39],propos:[17,44],proposit:[],prot:[10,13,43],protocol:43,provid:[2,3,14,18,20,21,22,31,32,33,42,43,44],pseudo:43,publicli:43,publish:17,pull:31,pure:[2,6,11,19,43],purefc:[2,10],purpos:[2,6,19],put:[2,6,12,13],put_file_to_ecserv:2,pycallgraph:0,pylint:0,pyrevers:0,pyscript:11,pytest:0,python3:[4,10,11,12,13,18,30,31,32,36,42,43],python:[0,4,10,11,12,13,15,16,17,18,19,20,23,30,31,32,33,36,38,42,43],pythonxxxxx:[],qos:[4,10,13],quad:17,quantiti:[2,6,17],question:[41,44],queue:[2,4,10,11,12,13,15,30,43],queuenam:[4,10,13],queues_list:2,quick:[8,43],quick_start:[],quickli:[13,43],quota:43,r64:[4,10,13,30,32],radiat:[2,17,19],raid60:[],rainfal:2,rais:[2,17],rang:[2,6,20,31,39,41,43],rare:43,rate:17,rather:21,raw:[2,15],reach:18,read:[2,6,12,13,15,20,21,32,33,39,43],read_ecenv:2,readi:[2,6,11],real:[23,30,31,32,43],real_tim:23,realis:17,realiti:17,realli:[21,43],reanalysi:[6,11,21,23,31,42],reason:[2,6,11,17,43],receiv:[30,43,44],recent:[10,43],recod:17,recommend:[6,17,21,31,43],reconstruct:[2,17],record:42,rectangular:12,red:17,redhat:42,reduc:[19,21,23],ref:[],refactor:36,refer:[2,14,39,43],regard:[5,18,36,44],regardless:42,region:21,regist:[22,31,33,42],registeredus:44,registr:[6,14,22,23,31,33,41,44],regress:[36,41],regular:[2,20,43],regular_l:19,regularli:[],rel:[17,43],relat:43,releas:[2,41,42,43,44],relev:[2,5],reli:42,remain:[2,17],rememb:42,remot:[2,4,6,7,9,10,12,13,14,15,18,20,30,36,41,42],remota:12,remov:[2,3,17,36],remove_old:2,renam:0,renew:30,repeat:2,rephras:[],repo:42,report:[2,41],repositori:42,repr:[2,19],repres:[2,17,19,22,23,42,43],represent:[2,20],reqest:15,request:[2,4,5,6,10,11,13,15,17,22,36,43],request_numb:[2,19],requir:[2,13,14,17,20,21,30,31,32,39,42,43],rerun:11,research:39,resol:[2,5,6,10,19,21,43],resolut:[3,5,6,11,21,22,39,43],resolv:21,reson:[],resourc:35,respect:[2,5,15,17,18,19,31,39,42,43],respectivlei:[],respons:43,rest:[2,6],restrict:21,restructur:36,result:[2,15,19,21,43],retriev:[2,5,6,11,14,15,17,18,19,20,21,22,31,33,34,36,39,41,42,43],retrieve:5,return_list:2,review:6,revis:36,revtriev:2,right:[2,5,6,10,12,17,21,22,30,31,33,39,42,43,44],rla0:[2,13,19],rla1:[2,13,19],rlo0:[2,13,19],rlo1:[2,13,19],root:[2,4,12,13,18,31,32,42,43],round:12,rpath:[30,32],rpm:42,rrint:[2,5,6,10,11,43],rst:[],rthl:43,rudimentari:12,run:[2,5,6,7,8,10,13,15,18,19,22,30,31,42,43,44],run_loc:[15,43],runtim:10,rwgrib2:[30,31,32,36],sabin:2,sai:2,same:[2,6,11,12,22,30,31,33,43],sampl:[2,31,43],sardeshmukh:6,save:[9,11,19,21,31,43],sbatch:[4,10,13],scale:[2,11,17,19],scaveng:17,scenario:[14,17,43],schemat:17,scheme:[2,6,17,19,43],scienc:35,scientif:[23,34],scope:6,scp:32,scratch:[4,10,13,43],scriot:[],script:[0,5,6,13,14,15,16,17,18,19,20,21,23,30,31,32,36,38,41,42,43,44],scroll:42,sdor:19,search:2,search_str:2,second:[6,11],section:[5,12,18,22,31,36,37,39,40,42,43],see:[2,5,6,11,12,13,15,18,19,20,21,22,24,30,31,32,34,42,43,44],seem:43,seen:18,seibert:[2,6,17,35],select:[2,5,6,11,12,14,19,22,30,32,34,36,39,41,42],selectwher:2,send:[2,11,12,13,21,30,41,44],send_mail:2,sens:43,sensibl:[2,17,19],sent:[2,13,15,18,43],separ:[2,5,19,36,43],sepeart:[],seper:[2,6,11,12,31],septemb:[6,12,21],seqdiag:0,seqdiag_fontpath:0,sequenc:15,seri:[2,17],serv:[19,20,41,43],server:[2,4,5,6,7,9,10,11,12,13,14,15,18,20,22,23,30,31,32,36,42,43],servic:[30,39],session:[4,10],set:[0,2,4,5,6,8,9,10,11,12,13,17,18,19,20,21,22,23,30,31,32,33,34,36,39,42,43,44],set_kei:2,setup:[14,15,18,30,31,32,36,42,43],setup_controldata:2,setup_loc:31,sever:[9,12,13,19,42,43],sfc:[19,31],sgn:17,shade:17,share:[0,44],she:14,shell:[2,4,10,11,12,13,15,18,20,30,31,36,42,43],shift:17,shoot:23,shorten:43,shorter:2,shortli:43,shortnam:19,should:[0,2,6,9,12,13,17,21,30,31,32,36,39,42,43],shouldn:6,show:[11,12,15,17,43],shown:[7,9,17,31,43],side:42,sign:[4,5,13,42],signal:43,silent_remov:2,similar:[14,31],simpl:[6,17,31],simplest:17,simplifi:36,simul:2,sinc:[2,15,19,21,31,43,44],singl:[2,4,10,11,13,15,19,33,42,43],site:30,size:[34,43],sketch:[12,14],skip:[2,31],skt:19,slope:17,slurm:[13,23],small:[31,34,43],smaller:[2,6,11,19],smooth:[2,5,6,10,17,21,43],snippet:31,softwar:[2,6,12,13,14,20,21,23,30,31,32,41,42],solar:[2,17,19],sole:[6,19],solut:[2,44],solv:43,some:[0,2,4,5,6,10,11,12,13,14,15,18,19,20,22,31,32,39,42,43,44],someth:43,sometim:[6,43],soon:[6,43],sort:2,sourc:[0,2,4,9,10,11,12,13,18,20,31,33,34,36,41,42,43],south:[2,11],souther:[],southern:2,southernmost:2,space:[2,5,11,17,43],spar:2,spatial:[5,6,39],spdx:[11,12],speak:42,speci:17,special:[],specialis:43,specif:[2,4,5,6,9,10,11,13,14,17,19,20,21,36,39,41,42],specifc:[2,11],specifi:[2,6,11,12,17,30,31,32,43],specificnam:10,spectral:[2,6,20,21,43],speed:43,sphere:6,spheric:19,sphinx:36,sphinxcontrib:0,split:[15,17,19],sqrt:17,src:[],src_path:2,srvx8:10,ssh:[32,43],sshf:[17,19],ssr:[17,19],sss:6,stamp:19,standard:[2,9,17,21,30,31,32,42,43],start:[2,4,5,6,10,11,12,13,18,19,30,31,32,33,39,42,43],start_dat:[2,5,6,10,11,17,43],start_period:2,state:[2,12,14,22,23,24,30,31,39,42,43],statement:[2,30,32],statist:42,statu:[15,34,42],steer:2,step:[2,3,5,6,10,11,13,15,17,19,20,24,30,31,33,43],steprang:[2,11,19],still:[3,9,15,21,37,40,43],stl1:19,stop:[2,34,42,43],storag:[2,5],store:[2,6,10,11,12,15,19,21,22,23,31,42,43],str:[2,35],str_of_list:2,straightawai:43,straightforeward:43,stream:[2,5,6,10,19,31,36,43],stress:[2,17,19],stretch:31,string:[2,5,6,11,12],structur:[10,36,39,43],studi:[21,39],style:36,sub:[2,17,19],sub_str:2,subdirectori:43,subgrid:[2,11],subinterv:17,subject:[2,30,32,43],submiss:[2,4,10,12,20,43],submit:[4,5,10,12,13,14,15,18,19,30,32,43,44],submit_job_to_ecserv:2,submitscript:[10,11],submitscriptop:[],subprocess:2,subscrib:44,subscript:44,subsect:21,subsequ:6,subset:[6,11,43],substanti:43,substitut:[2,4,9,10,13,32,36,43],substr:2,subtract:[6,43],succeed:[30,31],success:[4,13,19,30,31,32],success_mod:2,successful:[18,42],successfulli:42,sudo:31,suffici:43,suggest:9,suit:[6,43],suitabl:31,sum:[2,6,18,43],supplement:19,support:[2,17,23,39,41,42,43],suppos:2,sure:31,surfac:[2,6,15,17,19,21,22,34],swvl1:19,symmetri:17,syntax:[2,6],synthes:[6,36],sysadmin:33,sysinstalldir:[12,31],sysloc:[12,31],system:[2,4,6,9,10,11,12,13,20,21,30,32,34,41,42,43],sytem:30,t1279:[21,43],t799:21,tab:42,tabl:[2,5,17,19,34,41,42,43],table128:2,take:[9,31,43],taken:[2,6,18,19,39,43],tar:[2,4,13,32,42],tarbal:[2,4,12,30,32],tarball_path:2,tarfil:32,target:[2,12,19,30,31,32],task:[2,18,20,43],tcc:19,team:41,technic:23,tell:[2,43],temp:[2,10,11],temperatur:[19,31],tempfile_job:2,templat:[2,4,5,7,10,11,12,18,30,32,36,43],tempor:[5,6,17,19,22,39,43],temporal_properti:19,temporari:[2,6,11,43],tendenc:21,tenth:6,term:[42,43],termin:[30,31],test:[0,2,5,6,12,13,19,22,33,36,41,43],textbf:17,textrm:17,than:[2,3,6,9,11,19,21,34,44],thei:[0,2,5,6,9,11,12,13,15,17,18,19,31,34,39,43],them:[0,2,6,11,12,15,17,18,19,20,31],therebi:[17,21],therefor:[0,2,6,17,18,19,31,34,39,42,43],thi:[0,2,4,5,6,7,8,9,10,11,12,13,14,17,18,19,21,22,30,31,32,33,34,37,39,40,41,42,43,44],thick:17,thing:[],think:[2,42],third:[14,20,23,41],those:[5,43],though:44,thousandth:6,three:[2,11,17],through:[2,5,12,22,24,30,42,43,44],throughout:17,thu:[9,17,43],ticket:[34,41],time:[2,3,4,5,10,11,13,15,17,19,21,23,31,33,34,39,43],timeseri:[2,17],timespan:[2,17],timestamp:2,tld:32,tmc:31,tmpdir:[10,13],to_list:2,to_param_id:2,to_param_id_with_tablenumb:2,todai:43,todo:[],togeth:[2,5,12,42,43],token:30,too:[6,11,17,31,34,43],tool:[4,10,14,15,43],toolkit:22,top:[11,12,18,34],topic:[],topmost:34,total:[2,19,43],touch:43,trace:17,train:23,transfer:[2,5,6,7,12,13,15,19,30,32,43],transferr:43,transform:2,transport:[20,41],trapezoid:12,treatment:39,tree:43,tri:[],triangular:[2,6],trigger:[2,21],troubl:23,troubleshoot:43,truetyp:0,truncat:[2,6],ttf:0,tupl:2,turbul:[17,19],twice:43,twiceadai:[],twicedaili:[8,43],two:[2,6,11,12,14,17,18,19,20,21,22,33,42,43],type:[0,2,3,4,5,6,10,11,13,18,19,30,31,32,42,43],typeoflevel:19,typic:[15,19,23,43],ubuntu:[30,31],udoc:2,uid:[12,32],un_tarbal:2,unavail:44,unchang:17,under:[0,2,11,12,13,14,17,19,26,27,28,29,30,31,37,38,40,41,43],undergo:[39,43],understand:[5,13,18],underw:[],undesir:17,unfortun:[17,22],uniqu:[2,19],unit:[0,17,21,36],univers:[2,35],univi:[10,35,44],unix:44,unless:[6,13],unload:[4,10,13],unrealist:17,unreason:36,untar:[2,4,12,32,42],until:[6,11,17,22,43],updat:[36,41],upfront:[2,6],upgrad:36,upon:22,upper:[2,5,6,10,21,43],upstream:[],upto:[],usa:[2,11,12,41],usag:[2,18,41,42],use:[0,2,6,9,17,18,20,21,22,30,31,32,33,34,36,42,43],used:[2,5,6,8,9,11,12,13,14,17,18,19,32,34,36,39,42,43,44],useful:[6,11,19,39,43],user:[2,4,5,10,11,12,13,14,18,20,22,23,24,30,31,32,33,36,39,42,43,44],user_group:[7,13],user_nam:[7,13],usergroup:13,usernam:[12,13,30,31,32],uses:[0,4,10,17,30,32,34,43],using:[2,4,6,11,12,17,18,19,30,31,32,42,43],usr:[0,4,9,10,13,30,31,32],usual:[5,6,11,15,19,31,43],utc:[6,11,19,43],util:[2,15],uza:35,v10:19,v20_update_protocol:21,v30_update_protocol:21,v40_update_protocol:21,v60_update_protocol:21,v703:[],v704:[],v711:[],v71:[],valid:[2,6,12,19,32,34,43],valu:[2,3,5,6,8,9,10,11,12,13,17,18,21,30,32,34,43],valuer:2,vanish:17,vari:[5,6,9,39,43],variabel:[],variabl:[2,4,6,10,11,13,17,20,31,33,36,39,43],varianc:[],variat:[6,19],variou:36,vast:39,veloc:[15,19,20,43],veri:[2,6,11,17,21,31,43],version:[2,3,4,6,9,10,13,15,18,21,33,36,42,43,44],version_numb:13,vertic:[5,11,15,19,20,36,38,39,43],via:[2,11,14,15,22,23,30,31,32,36,43],vienna:[2,35],view:[2,11,12,41,44],virtual:42,visit:[2,11,12,30,41],vol:6,wai:[2,5,13,15,17,22,30,31,39,42,43],wait:22,want:[6,9,17,20,33,43],warn:[12,31],water:[2,6,19,43],wave:21,weather:[6,20,39,41],web:[2,6,11,14,22,23,24,33,36,42,43],webapi:[2,6],webserv:[],websit:[2,30,31,42,43,44],wedg:17,well:[2,6,15,21,34,39,42,43],were:[2,6,11,12,19,34,43],west:[2,11],western:2,westernmost:2,wet:17,wether:2,what:[3,5,23,31,41,43],whatev:43,when:[2,4,6,10,17],whenev:21,where:[2,6,9,11,12,13,17,19,21,31,42,43],wherea:[6,15,43],wherebi:[],wherekei:2,wherekeynam:2,wherekeyvalu:2,whether:[2,4,10,12,33,42],which:[0,2,3,4,5,6,7,9,10,11,12,14,15,17,18,19,20,21,22,30,31,36,39,42,43,44],whith:10,who:20,whole:[2,17,43,44],whose:[19,42],why:17,width:[],wien:35,wiki:[2,6,32,44],wil:2,wildcard:43,wind:[5,19,38,39,43],window:[30,31,43],wish:42,within:[2,4,6,10,11,17,30,32,43],without:[2,13,22,33,42,43],word:2,work:[0,2,7,10,11,12,13,14,15,20,22,31,36,41,42,43],workaround:33,workdir:[4,10,13],workload:13,workspac:[10,19,43],workstep:[],would:[6,11,22,30,33,34,43],wrap:20,wrapper:[11,12,18],wrf:[2,5,10],write:[2,6,36,43,44],write_namelist:2,write_reqhead:2,written:[2,6,21,37,40],wrong:34,www:[42,44],x86_64:9,xvf:[4,13,32,42],xxx:19,xxxx:6,xxxxx:43,xxyymmddhh:2,year:[19,31],yet:43,yield:[2,21],you:[0,3,5,6,9,13,21,24,30,31,32,34,42,43,44],your:[9,24,30,31,32,42,43,44],yourself:24,yymmdd:[6,19],yymmddhh:[6,19,21],yyyymmdd:[2,6,11],yyyymmddhh:[17,19],zamg:[36,44],zero:[17,21,34],zonal:21},titles:["Updating the documentation","Auto-generated documentation for the Fortran programme","Auto-generated documentation for the Python scripts","CONTROL file changes","The compilation job script <code class=\"docutils literal notranslate\"><span class=\"pre\">compilejob.ksh</span></code>","The CONTROL file","The CONTROL parameters","ECMWF user credential file <code class=\"docutils literal notranslate\"><span class=\"pre\">ECMWF_ENV</span></code>","CONTROL file examples","The Fortran makefile for <code class=\"docutils literal notranslate\"><span class=\"pre\">calc_etadot</span></code>","The job script <code class=\"docutils literal notranslate\"><span class=\"pre\">job.ksh</span></code>","The executable script - <code class=\"docutils literal notranslate\"><span class=\"pre\">run.sh</span></code>","The installation script - <code class=\"docutils literal notranslate\"><span class=\"pre\">setup.sh</span></code>","Templates","Application modes","Program flow","Auto-generated documentation","Disaggregation of flux data","Control & input data","Output data","Overview","Vertical wind","Access modes","Link collection","Hints for data set selection","Available data sets for member-state users","Available data sets for public users","Metrics","Static code analysis","Test cases","Gateway mode installation","Local mode installation","Remote mode installation","FAQ - Frequently asked questions","Known Bugs and Issues","Developer Team","Changelog","Developer Guide","Code-Level Documentation","ECMWF Data","Evaluation","Welcome to the <code class=\"docutils literal notranslate\"><span class=\"pre\">flex_extract</span></code> Documentation!","Installation","Usage","Support","ToDos"],titleterms:{"case":29,"class":2,"long":19,"new":[19,36],"public":[26,42,43],"static":28,CDS:[31,34],The:[4,5,6,9,10,11,12],accept:42,access:22,addit:[0,6,19],adjust:43,agreement:[],analysi:28,api:[31,34],applic:[14,15],ask:33,auto:[1,2,16],avail:[24,25,26],block:0,bug:[34,36,44],calc_etadot:[9,19,34],calc_etadot_nml:13,calcul:21,can:[24,33],cera:43,certain:43,chang:[3,36],changelog:36,check:2,code:[28,34,38],collect:23,combin:[42,43],comparison:29,compil:4,compilejob:4,content:[7,11,12,19],continu:21,control:[3,5,6,8,18,43],controlfil:2,convert:[],coordin:[],credenti:7,data:[6,17,18,19,24,25,26,34,39,43],dataset:[42,43],definit:43,depend:[30,31,32,42],destin:34,develop:[35,37],diagramm:0,differ:15,disaggreg:[2,17,19],distribut:33,document:[0,1,2,16,38,41],doe:[4,10],domain:6,download:42,eccod:34,ecflexpart:2,ecmwf:[7,31,39,42],ecmwf_env:[7,13],ensembl:19,environ:[30,31,32],equat:21,era5:34,era:43,error:34,evalu:40,exampl:[4,5,8,10,15],execut:11,faq:[33,44],featur:[36,43],field:[6,17,19],file:[3,5,6,7,8,19,21,29,43],find:24,finder:[],fix:36,flex_extract:[41,42],flexpart:[19,42],flow:15,flux:[6,17,19],forecast:19,format:5,fort:19,fortran:[1,9,19,34,42],frequent:33,from:[21,33],full:42,gatewai:[30,34,43],gener:[1,2,6,15,16],get_mars_data:2,grib:[19,29],gributil:2,guid:37,hint:[24,43],horizont:21,how:24,index:19,input:[18,19],instal:[2,12,30,31,32,33,34,42],installscript:13,interim:43,issu:[34,44],job:[4,10,43],jobscript:13,known:[34,44],ksh:[4,10],level:[25,38],librari:33,licenc:42,line:0,link:23,list:44,local:[15,31,43],mail:44,makefil:9,mar:[19,21,29],marsretriev:2,member:[15,25],metric:27,mode:[14,15,22,30,31,32,43],model:25,modul:2,older:17,onlin:[],oper:43,option:[11,12],other:17,out:24,output:[19,21],overview:20,packag:33,paramet:[6,11,12,21,34,43],parti:33,pre:21,precipit:[17,19],predict:19,prepar:[21,30,31,32,43],prepare_flexpart:2,problem:34,program:[2,15,19,34,42],programm:1,proper:43,pure:[],python:2,question:33,quick:[],registr:42,releas:[34,36],remot:[32,43],report:44,request:[19,29],rest:[],retriev:[],run:11,script:[2,4,10,11,12],section:6,select:[24,43],sequenc:0,set:[15,24,25,26],setup:12,softwar:0,some:[],specif:43,specifi:[],sphinx:0,standard:19,start:[],state:25,submiss:11,submit:[2,11],submitscript:13,support:44,surfac:25,system:[31,44],team:35,temp:[],templat:13,temporari:19,test:[29,30,31,42],testcas:[],third:33,ticket:44,time:6,todo:45,tool:2,uiofil:2,updat:0,usag:[11,12,43],user:[6,7,15,25,26],using:21,veloc:21,version:17,vertic:[6,21],web:31,welcom:41,what:[4,10,24,33],wind:[6,21],workflow:15}}) \ No newline at end of file diff --git a/For_developers/InstallationParameter.xls b/For_developers/InstallationParameter.xls index 5a7ab0dd2d436c1fe93ee25269ed51865f8e6f8a..d60c2aa0647c33f84231d42b64c3e0bd90b336ab 100644 GIT binary patch delta 1060 zcmZqhXz-a}z$?H21p*8Vyc=!bGfvi#;^6)F|Nnn}1_lNYEx6g1X+Ps8mJe)9SNSJ@ z;tFTvn(W10$o`hooPmKsZSo=R5MD(FhMfH5#2g)k;>zO5l00%urHqp;d7jrR1XmV= zWfW``ic<?xixNvxixo;TQWa7wQj<$d5|eULixm>{QWQ#yQ;QT53kq^FlM_oa^Yawa zGC@))rA3)}=?a;7#U+V3Ibaz*g@DA8jADhvqEv<A)ST30uqg^98AbV}=@|;1e!(G* zK0Yp<K?;cic_|9Pk--R|%?iA=EcLt$3@D<f85lztG8i%$iWw9b${8{lau{+L6c~~i zQW+E&N*FT0bTLCBLoS$=2v+CG;KvZm5W?Wd;KSg<;KJa^5X7Lskjaq7pa2#PVsK}0 zWe8!gWyoR3XGms9WXNIAV^Co5XQ+o5Sp>GKm?4!x2g#aLh6;vMhGd3Ph7yKEh9rg@ zu$5_GN2P)-PGl$oixo4JFyw>TDPW89pr$~)QNWN0b~?yPPq3ph8A`zFit8B^7?K$> z81fnN89>%UH0Hy7oXG$ZNn}u9C}yZ+09ljDkjtRJ05cNg+!Tg<hCBvI1(1<xU}vN= zq=GE~ISQl`<oqJ22rLAX8HyM(8FUK3!k~Z#g@gh_B0~y8E(63`kb-oE42BYhVsLP6 zo-25skx^}Pt}qj0q8pzmIJwp`@GvkkFfxd8Blt`VOboeV2tG3dGs9K^1fPY0g<(-3 zg3rppz_^?Xl*$<x7?}9L=5kNIAfnE+n|bn2krk{QOacsCn<t5;GSy2lFfjaO;9}rl zU}g|y;DGa37(^N5pgc|n1_n_Ec{q=eL6m_F&SPQ_Wl(_gK&BvgAX5~fa$I0jl;AwD zDOzwY$QWff4`hrAoCh*Sb#jzM5g!Kw3j+fKBLfEm2LlVs<XaM5o1_Amc}*A?7#tWF w7#f1orZY{Bm6hkvOFdGve9bk+$&D;Fn-9otVPfQ)T&mE_G*xu-F9kMc03hMkd;kCd delta 461 zcmZqhY4Dg}z{}471p*8VJR5D_GYbCu|NlP-^D!_mfM|iuj!gR*Cnm6LV)?+vG?{nu zC$4Zt&dFZfh3u=@jTjghR3;zd4pA0oV93c&PR!9!NKH;pEJ@W-NKQ@!5lJiz41W1} zsm~ZDJM%o>ypy+<W%GUE^Nfrto7amnG1hzViGrO_%fQ3H$iT=T!HwWEF)%UYiy`>T z49pDM1rU4|1{Q`Tfe1b;0|VnqE~uZFKt5n#-~yY@%D}+D!6X1>H#346jQk87lMTc< znQk*pwiaKp`MY=+Q?eWb1H)eiE(Q(;W(H9P1doM5ltCUU$H~CJAj+Ts=P@#fGO)pU zObnt7if|st6eTzhWQy|SZ&F2koD9qi3=E76oD7@{%*>O^q`M{?D9+g=6Tr-C%)r3l x0CM4O=}U~0W98*JYEzhH8$GWvPHtqe*?d5L3lk&n<Wi+(rk_Hae<`ss0|4D0SziDE diff --git a/For_developers/Sphinx/Source/Documentation/Input/setup.rst b/For_developers/Sphinx/Source/Documentation/Input/setup.rst index ee4469d..3ef2879 100644 --- a/For_developers/Sphinx/Source/Documentation/Input/setup.rst +++ b/For_developers/Sphinx/Source/Documentation/Input/setup.rst @@ -164,6 +164,7 @@ we see again all possible command line parameters. usage: install.py [-h] [--target INSTALL_TARGET] [--makefile MAKEFILE] [--ecuid ECUID] [--ecgid ECGID] [--gateway GATEWAY] [--destination DESTINATION] [--installdir INSTALLDIR] + [--sysinstalldir SYSINSTALLDIR] [--job_template JOB_TEMPLATE] [--controlfile CONTROLFILE] Install flex_extract software locally or on ECMWF machines @@ -171,7 +172,7 @@ we see again all possible command line parameters. optional arguments: -h, --help show this help message and exit --target INSTALL_TARGET - Valid targets: local | ecgate | cca , the latter two + Valid targets: syslocal | local | ecgate | cca , the latter two are at ECMWF (default: None) --makefile MAKEFILE Name of makefile to compile the Fortran code. (default depends on `target`: local - makefile_local_gfortran, @@ -185,6 +186,9 @@ we see again all possible command line parameters. --installdir INSTALLDIR Root directory where flex_extract will be installed to. (default: None) + --sysinstalldir SYSINSTALLDIR + System installation path; where executables are + stored. (default: None) --job_template JOB_TEMPLATE The rudimentary template file to create a batch job template for submission to ECMWF servers. (default: @@ -197,6 +201,7 @@ we see again all possible command line parameters. + .. toctree:: :hidden: :maxdepth: 2 diff --git a/For_developers/Sphinx/Source/Installation/local.rst b/For_developers/Sphinx/Source/Installation/local.rst index 879a974..b4bef53 100644 --- a/For_developers/Sphinx/Source/Installation/local.rst +++ b/For_developers/Sphinx/Source/Installation/local.rst @@ -265,20 +265,20 @@ Local installation The Fortran program called ``calc_etadot`` will be compiled during the installation process. A suitable makefile (``makefile_local_gfortran``) for the compilation is set by default. -This may be overwritten by the ``MAKEFILE`` parameter in ``setup.sh``. +This may be overwritten by the ``MAKEFILE`` parameter in ``setup_local.sh``. -However, you may have to adapt the makefile for your environment (the current default makefile works on Debian stretch and similar GNU/Linux distributions). If you use a new name for it, you will have to insert it into ``setup.sh`` +However, you may have to adapt the makefile for your environment (the current default makefile works on Debian stretch and similar GNU/Linux distributions). If you use a new name for it, you will have to insert it into ``setup_local.sh`` For details on the makefile and how to adapt them, see :ref:`Fortran Makefile <ref-convert>`. -In the root directory of ``flex_extract``, open the ``setup.sh`` script +In the root directory of ``flex_extract``, open the ``setup_local.sh`` script with an editor and adapt the installation parameters in the section labelled with "AVAILABLE COMMANDLINE ARGUMENTS TO SET" as shown below: .. code-block:: bash :caption: 'Example settings for a local installation.' - :name: setup.sh + :name: setup_local.sh ... # ----------------------------------------------------------------- @@ -293,6 +293,7 @@ with an editor and adapt the installation parameters in the section labelled wit GATEWAY=None DESTINATION=None INSTALLDIR=None + SYSINSTALLDIR=None JOB_TEMPLATE='' CONTROLFILE='CONTROL_EA5' ... @@ -302,14 +303,14 @@ Afterwards, type: .. code-block:: bash - $ ./setup.sh + $ ./setup_local.sh to start the installation. You should see the following standard output. .. code-block:: bash - # Output of setup.sh + # Output of setup_local.sh WARNING: installdir has not been specified flex_extract will be installed in here by compiling the Fortran source in <path-to-flex_extract>/flex_extract_v7.1/Source/Fortran Install flex_extract_v7.1 software at local in directory <path-to-flex_extract>/flex_extract_v7.1 @@ -326,3 +327,65 @@ to start the installation. You should see the following standard output. lrwxrwxrwx. 1 <username> tmc 20 Aug 12 10:59 ./calc_etadot -> calc_etadot_fast.out + +Local system installation +========================= + +There is also the possibility to seperate the software executables from the user application files. For doing so, the ``TARGET`` parameter can be set to "syslocal" and the additional parameter ``SYSINSTALLDIR`` in the ``setup_local.sh`` has to be specified. This new path will contain the Fortran and Python executables of ``flex_extract``. If you chose to set a system path for this, please start the script as root. +The user directory for ``flex_extract``, which basically consists of everything except the ``Source`` directory, will be installed into ``INSTALLDIR``. +In this installation mode, an extra (hidden) ``.setup.rc`` file will be generated in the ``Run`` directory. It contains the necessary settings for running the local system mode. + +Despite the change in the ``TARGET`` parameter, the meaning of ``INSTALLDIR`` and the additional ``SYSINSTALLDIR``, the steps for installation are the same as in the local installation mentioned above. For example, modify the ``setup_local.sh`` file as follows: + + +.. code-block:: bash + :caption: 'Example settings for a local system installation.' + :name: setup_local.sh + + ... + # ----------------------------------------------------------------- + # AVAILABLE COMMANDLINE ARGUMENTS TO SET + # + # THE USER HAS TO SPECIFY THESE PARAMETER + # + TARGET='syslocal' + MAKEFILE=<name_of_your_makefile> + ECUID=None + ECGID=None + GATEWAY=None + DESTINATION=None + INSTALLDIR=$HOME + SYSINSTALLDIR=/usr/bin/ + JOB_TEMPLATE='' + CONTROLFILE='CONTROL_EA5' + ... + + +Afterwards, type: + +.. code-block:: bash + + $ sudo ./setup_local.sh + +to start the installation. You should see the following standard output. + +.. code-block:: bash + + Flex_extract will be installed in <$HOME> + Install flex_extract_v7.1.2 software as syslocal in directory /usr/bin/flex_extract_v7.1.2 + + Using makefile: makefile_local_gfortran + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./rwgrib2.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./phgrreal.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./grphreal.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./ftrafo.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./calc_etadot.f90 + /usr/local/bin/gfortran -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -I. -I/usr/local/include/ -fdefault-real-8 -fopenmp -fconvert=big-endian -c ./posnam.f90 + /usr/local/bin/gfortran rwgrib2.o calc_etadot.o ftrafo.o grphreal.o posnam.o phgrreal.o -o calc_etadot_fast.out -O3 -march=native -L/usr/local/lib64/ -leccodes_f90 -leccodes -lm -lemosR64 -fopenmp + ln -sf calc_etadot_fast.out calc_etadot + + lrwxrwxrwx. 1 <username> tmc 20 27. Okt 23:25 ./calc_etadot -> calc_etadot_fast.out + SUCCESS: INSTALLATION FINISHED! + + +You can now change into the user directory specified in ``INSTALLDIR`` and find a ``flex_extract_vX.X`` directory there. diff --git a/Run/run_local.sh b/Run/run_local.sh index 1c8243a..b1d4260 100755 --- a/Run/run_local.sh +++ b/Run/run_local.sh @@ -11,7 +11,7 @@ # guarantee necessary parameters were set and consistent. # # @Licence: -# (C) Copyright 2014-2019. +# (C) Copyright 2014-2020. # # SPDX-License-Identifier: CC-BY-4.0 # diff --git a/Source/Python/Classes/ControlFile.py b/Source/Python/Classes/ControlFile.py index 8ffff5a..fba0721 100644 --- a/Source/Python/Classes/ControlFile.py +++ b/Source/Python/Classes/ControlFile.py @@ -403,6 +403,7 @@ class ControlFile(object): self.flexextractdir = _config.PATH_FLEXEXTRACT_DIR self.exedir = _config.PATH_FORTRAN_SRC self.installdir = None + self.sysinstalldir = None self.makefile = None self.destination = None self.gateway = None diff --git a/Source/Python/Mods/tools.py b/Source/Python/Mods/tools.py index 0286555..b810aa2 100644 --- a/Source/Python/Mods/tools.py +++ b/Source/Python/Mods/tools.py @@ -248,7 +248,7 @@ def get_cmdline_args(): parser.add_argument("--queue", dest="queue", type=none_or_str, default=None, help='The name of the ECMWF server name where the' - 'job script is to be submitted ' + 'job script is to be submitted ' '(e.g. ecgate | cca | ccb)') args = parser.parse_args() @@ -623,7 +623,7 @@ def get_list_as_string(list_obj, concatenate_sign=', '): def make_dir(directory): '''Creates a directory. - If the directory already exists, an information is printed and the creation + If the directory already exists, an information is printed and the creation skipped. The program stops only if there is another problem. Parameters @@ -855,8 +855,8 @@ def execute_subprocess(cmd_list, error_msg='SUBPROCESS FAILED!'): Parameters ---------- cmd_list : list of str - A list of the components for the command line execution. - They will be concatenated with blank space for the command + A list of the components for the command line execution. + They will be concatenated with blank space for the command to be submitted, like ['mv', file1, file2] for mv file1 file2. Return @@ -909,3 +909,59 @@ def generate_retrieval_period_boundary(c): return start_period, end_period + + +def check_for_string_in_file(filepath, search_string): + """ + Search for a specific string in a file and return True if + the string was found. + + Parameters + ---------- + filepath : str + The full file path which is to be examined. + + search_string : str + The string which is looked up for in the file. + + Return + ------ + Boolean : + True : String was found + False : String was not found + """ + with open(filepath, 'r') as fio: + for line in fio: + if search_string in line: + return True + return False + + +def overwrite_lines_in_file(filepath, search_string, sub_string): + """ + Overwrites lines which contain the given search string with the + substitution string. + + Parameters + ---------- + search_string : str + The string which is looked up for in the file. + + sub_string : str + The string which overwrites the search string. + + Return + ------ + """ + with open(filepath, 'r') as fio: + data = fio.readlines() + + with open(filepath, 'w') as fio: + for line in data: + if search_string in line: + fio.write(sub_string) + else: + fio.write(line) + + return + diff --git a/Source/Python/_config.py b/Source/Python/_config.py index dae1de9..50686e8 100644 --- a/Source/Python/_config.py +++ b/Source/Python/_config.py @@ -37,13 +37,13 @@ import platform # PARAMETERS # ------------------------------------------------------------------------------ -_VERSION_STR = '7.1.2' +_VERSION_STR = '7.1.2_ctbto' FLAG_ON_ECMWFSERVER = 'ecgb' in platform.node() QUEUES_LIST = ['ecgate', 'cca', 'ccb'] -INSTALL_TARGETS = ['local', 'ecgate', 'cca', 'ccb'] +INSTALL_TARGETS = ['local', 'syslocal', 'ecgate', 'cca', 'ccb'] CDS_DATASET_ML = 'reanalysis-era5-complete' CDS_DATASET_SFC = 'reanalysis-era5-single-levels' @@ -69,6 +69,7 @@ TEMPFILE_NAMELIST = 'calc_etadot_nml.template' FILE_NAMELIST = 'fort.4' FILE_GRIB_INDEX = 'date_time_stepRange.idx' FILE_GRIBTABLE = 'ecmwf_grib1_table_128' +FILE_SYS_CONFIG = '.setup.rc' # ------------------------------------------------------------------------------ # DIRECTORY NAMES @@ -78,7 +79,7 @@ FLEXEXTRACT_DIRNAME = 'flex_extract_v' + _VERSION_STR INPUT_DIRNAME_DEFAULT = 'Workspace' # ------------------------------------------------------------------------------ -# PATHES +# LOAD ENVIRONMENT VARIABLES FOR SYS VERSION; IF NECESSARRY # ------------------------------------------------------------------------------ # path to the local python source files @@ -88,15 +89,33 @@ PATH_LOCAL_PYTHON = os.path.dirname(os.path.abspath( # add path to pythonpath if PATH_LOCAL_PYTHON not in sys.path: sys.path.append(PATH_LOCAL_PYTHON) + +# ------------------------------------------------------------------------------ +# PATHES +# ------------------------------------------------------------------------------ + PATH_FLEXEXTRACT_DIR = os.path.normpath(os.path.dirname(os.path.abspath( inspect.getfile(inspect.currentframe()))) + '/../../') +if not os.path.isdir(os.path.join(PATH_FLEXEXTRACT_DIR,'Run')): + # if it does not exist, we have a system installation in place + # we need to have a sys and user path + # configure correct system path + PATH_SYSTEM_DIR = os.path.join(PATH_FLEXEXTRACT_DIR, FLEXEXTRACT_DIRNAME) + # configure correct user path + PATH_FLEXEXTRACT_DIR = os.environ.get('FLEXEXTRACT_USER_DIR') +else: + PATH_SYSTEM_DIR = PATH_FLEXEXTRACT_DIR + PATH_RUN_DIR = os.path.join(PATH_FLEXEXTRACT_DIR, 'Run') -PATH_SOURCES = os.path.join(PATH_FLEXEXTRACT_DIR, 'Source') +PATH_SOURCES = os.path.join(PATH_SYSTEM_DIR, 'Source') PATH_TEMPLATES = os.path.join(PATH_FLEXEXTRACT_DIR, 'Templates') PATH_ECMWF_ENV = os.path.join(PATH_RUN_DIR, FILE_USER_ENVVARS) PATH_GRIBTABLE = os.path.join(PATH_TEMPLATES, FILE_GRIBTABLE) PATH_JOBSCRIPTS = os.path.join(PATH_RUN_DIR, 'Jobscripts') -PATH_FORTRAN_SRC = os.path.join(PATH_SOURCES, 'Fortran') +if os.path.isdir(os.path.join(PATH_SYSTEM_DIR,'Fortran')): + PATH_FORTRAN_SRC = PATH_SYSTEM_DIR +else: + PATH_FORTRAN_SRC = os.path.join(PATH_SOURCES, 'Fortran') PATH_PYTHONTEST_SRC = os.path.join(PATH_SOURCES, 'Pythontest') PATH_INPUT_DIR = os.path.join(PATH_RUN_DIR, INPUT_DIRNAME_DEFAULT) PATH_TEST = os.path.join(PATH_FLEXEXTRACT_DIR, 'Testing') diff --git a/Source/Python/install.py b/Source/Python/install.py index 1817069..83a0d81 100755 --- a/Source/Python/install.py +++ b/Source/Python/install.py @@ -18,7 +18,7 @@ # - use of tarfile package in python # June 2020 - Anne Philipp # - renamed "convert" functions to "fortran" functions -# - reconfigured mk_tarball to select *.template files instead +# - reconfigured mk_tarball to select *.template files instead # of *.nl and *.temp # - added check for makefile settings # @@ -74,6 +74,7 @@ import os import sys import subprocess import tarfile +import shutil from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter # software specific classes and modules from flex_extract @@ -81,7 +82,8 @@ import _config from Classes.ControlFile import ControlFile from Classes.UioFiles import UioFiles from Mods.tools import (make_dir, put_file_to_ecserver, submit_job_to_ecserver, - silent_remove, execute_subprocess, none_or_str) + silent_remove, execute_subprocess, none_or_str, + overwrite_lines_in_file, check_for_string_in_file) # ------------------------------------------------------------------------------ # FUNCTIONS @@ -102,11 +104,13 @@ def main(): c.assign_args_to_control(args) check_install_conditions(c) - if c.install_target.lower() != 'local': # ecgate or cca + if c.install_target.lower() not in ['local', 'syslocal']: # ecgate or cca install_via_gateway(c) else: # local install_local(c) + print("SUCCESS: INSTALLATION FINISHED!") + return def get_install_cmdline_args(): @@ -127,7 +131,7 @@ def get_install_cmdline_args(): parser.add_argument('--target', dest='install_target', type=none_or_str, default=None, - help="Valid targets: local | ecgate | cca , \ + help="Valid targets: syslocal | local | ecgate | cca , \ the latter two are at ECMWF") parser.add_argument("--makefile", dest="makefile", type=none_or_str, default=None, @@ -149,8 +153,12 @@ def get_install_cmdline_args(): parser.add_argument("--installdir", dest="installdir", type=none_or_str, default=None, - help='Root directory of the ' + help='Root (user) directory of the ' 'flex_extract installation') + parser.add_argument("--sysinstalldir", dest="sysinstalldir", + type=none_or_str, default=None, + help='System installation path; where ' + 'executables are stored.') # arguments for job submission to ECMWF, only needed by submit.py parser.add_argument("--job_template", dest='job_template', @@ -227,16 +235,24 @@ def install_local(c): tar_file = os.path.join(_config.PATH_FLEXEXTRACT_DIR, _config.FLEXEXTRACT_DIRNAME + '.tar') - if c.installdir == _config.PATH_FLEXEXTRACT_DIR: - print('WARNING: installdir has not been specified') - print('flex_extract will be installed in here by compiling the ' + - 'Fortran source in ' + _config.PATH_FORTRAN_SRC) - os.chdir(_config.PATH_FORTRAN_SRC) - else: # creates the target working directory for flex_extract - c.installdir = os.path.expandvars(os.path.expanduser( - c.installdir)) - if os.path.abspath(_config.PATH_FLEXEXTRACT_DIR) != \ - os.path.abspath(c.installdir): + c.installdir = os.path.abspath(os.path.expandvars(os.path.expanduser( + c.installdir))) + c.sysinstalldir = os.path.abspath(os.path.expandvars(os.path.expanduser( + c.sysinstalldir))) + + # this is standard installation into a single directory + if c.install_target == 'local': + + # installation into the current directory + if os.path.abspath(_config.PATH_FLEXEXTRACT_DIR) == c.installdir: + print('WARNING: installdir has not been specified') + print('flex_extract will be installed in current dir by compiling the ' + + 'Fortran source in ' + _config.PATH_FORTRAN_SRC) + os.chdir(_config.PATH_FORTRAN_SRC) + # installation into a different path + elif os.path.abspath(_config.PATH_FLEXEXTRACT_DIR) != c.installdir : + + # creates the target working directory for flex_extract mk_tarball(tar_file, c.install_target) make_dir(os.path.join(c.installdir, _config.FLEXEXTRACT_DIRNAME)) @@ -247,13 +263,92 @@ def install_local(c): _config.FLEXEXTRACT_DIRNAME, _config.PATH_REL_FORTRAN_SRC)) - # Create Fortran executable - print('Install ' + _config.FLEXEXTRACT_DIRNAME + ' software at ' + - c.install_target + ' in directory ' + - os.path.abspath(c.installdir) + '\n') - - del_fortran_build('.') - mk_fortran_build('.', c.makefile) + # Create Fortran executable + print('Install ' + _config.FLEXEXTRACT_DIRNAME + ' software at ' + + c.install_target + ' in directory ' + c.installdir + '\n') + + del_fortran_build('.') + mk_fortran_build('.', c.makefile) + os.chdir('../../') + # make sure that the correct calling of submit.py script is in run_local.sh + overwrite_lines_in_file('Run/run_local.sh', + 'pyscript=', 'pyscript=../Source/Python/submit.py\n') + + # this is system installation were executables and user files are separated + elif c.install_target == 'syslocal': + if os.path.abspath(_config.PATH_FLEXEXTRACT_DIR) == c.sysinstalldir : + sys.exit('ERROR: System installation path is equal to user ' + 'installation path.\n Please change either the system ' + 'installation path or use installation target "local".') + if os.path.abspath(_config.PATH_FLEXEXTRACT_DIR) == c.installdir : + print('Flex_extract will be installed in current directory!') + else: # install user part in different dir + print('Flex_extract will be installed in ' + c.installdir ) + + c.installdir = os.path.join(c.installdir,_config.FLEXEXTRACT_DIRNAME) + if os.path.isdir(c.installdir): + shutil.rmtree(c.installdir) + + # copy all files except Python and Fortranfiles to this dir + shutil.copytree(_config.PATH_FLEXEXTRACT_DIR, + c.installdir, symlinks=True) + shutil.rmtree(os.path.join(c.installdir,'Source')) + shutil.rmtree(os.path.join(c.installdir,'.git')) + for x in UioFiles(c.installdir, '*~').files: + silent_remove(x) + + os.remove(os.path.join(c.installdir,'setup.sh')) + os.remove(os.path.join(c.installdir,'setup_local.sh')) + + # configure run_local script correctly + # check if source of system config file is already in run_local.sh, + # if not, add it + if not check_for_string_in_file(os.path.join(c.installdir,'Run/run_local.sh'), + 'source .setup.rc'): + overwrite_lines_in_file(os.path.join(c.installdir,'Run/run_local.sh'), + '# PATH TO SUBMISSION SCRIPT', + '# PATH TO SUBMISSION SCRIPT\nsource '+_config.FILE_SYS_CONFIG+'\n') + # make sure that the correct calling of submit.py script is in run_local.sh + overwrite_lines_in_file(os.path.join(c.installdir,'Run/run_local.sh'), + 'pyscript=', 'pyscript=submit.py\n') + + # change permission for file to executable + execute_subprocess(['chmod', '0775', + os.path.join(os.path.abspath(c.installdir),'Run/run_local.sh')]) + + + # create systemdir + c.sysinstalldir = os.path.join(c.sysinstalldir,_config.FLEXEXTRACT_DIRNAME) + if os.path.isdir(c.sysinstalldir): + shutil.rmtree(c.sysinstalldir) + + # create setup file for running flex_extract with system installation + with open(os.path.join(os.path.abspath(c.installdir),'Run/.setup.rc'),'w') as fio: + fio.write('#!/bin/bash \n') + fio.write('export FLEXEXTRACT_USER_DIR='+os.path.abspath(c.installdir)+'\n') + fio.write('export PATH='+os.path.abspath(c.sysinstalldir)+'/Python:${PATH}\n') + fio.write('export PATH='+os.path.abspath(c.sysinstalldir)+':${PATH}\n') + + # copy all Python and Fortranfiles to this dir + shutil.copytree(_config.PATH_SOURCES, c.sysinstalldir, symlinks=True) + + os.chdir(os.path.join(c.sysinstalldir,'Fortran')) + # Create Fortran executable + print('Install ' + _config.FLEXEXTRACT_DIRNAME + ' software as ' + + c.install_target + ' in directory ' + + os.path.abspath(c.sysinstalldir) + '\n') + + del_fortran_build('.') + mk_fortran_build('.', c.makefile) + + outfile = [x for x in UioFiles('.','*.out').files] + test=os.path.join(c.sysinstalldir,'calc_etadot') + if len(outfile) != 1: + print('WARNING: Multiple executables for Fortran code are available!') + # move executable one dir up and delete Fortran dir + os.chdir('..') + shutil.move(outfile[0], os.path.join(c.sysinstalldir,'calc_etadot')) + shutil.rmtree(os.path.join(os.path.abspath(c.sysinstalldir),'Fortran')) os.chdir(_config.PATH_FLEXEXTRACT_DIR) if os.path.isfile(tar_file): @@ -288,7 +383,7 @@ def check_install_conditions(c): print('use -h or --help for help') sys.exit(1) - if c.install_target and c.install_target != 'local': + if c.install_target and c.install_target not in ['local', 'syslocal']: if not c.ecgid or not c.ecuid: print('Please enter your ECMWF user id and group id ' ' with command line options --ecuid --ecgid') @@ -304,9 +399,16 @@ def check_install_conditions(c): 'local gateway server possible!') if not c.installdir: c.installdir = '${HOME}' - else: # local + elif c.install_target == 'local': if not c.installdir: c.installdir = _config.PATH_FLEXEXTRACT_DIR + elif c.install_target == 'syslocal': + if not c.installdir: + c.installdir = _config.PATH_FLEXEXTRACT_DIR + if not c.sysinstalldir: + print('ERROR: System installation was selected but ' + 'no system installation path was defined.') + sys.exit() if not c.makefile: print('WARNING: no makefile was specified.') @@ -322,7 +424,7 @@ def check_install_conditions(c): print('WARNING: default makefile selected: makefile_cray') else: pass - + return @@ -714,7 +816,7 @@ def mk_fortran_build(src_path, makefile): print('ERROR: makefile call failed:') print(e) else: - execute_subprocess(['ls', '-l', + execute_subprocess(['ls', '-l', os.path.join(src_path, _config.FORTRAN_EXECUTABLE)], error_msg='FORTRAN EXECUTABLE COULD NOT BE FOUND!') diff --git a/Source/Python/submit.py b/Source/Python/submit.py index 5265a43..6d5eb8b 100755 --- a/Source/Python/submit.py +++ b/Source/Python/submit.py @@ -113,7 +113,7 @@ def main(): # send files to ECMWF server else: submit(job_template, c, queue) - exit_message = 'FLEX_EXTRACT JOB SCRIPT IS SUBMITED!' + exit_message = 'FLEX_EXTRACT JOB SCRIPT IS SUBMITTED!' normal_exit(exit_message) diff --git a/setup_local.sh b/setup_local.sh index 8f9d0a2..51d7aa5 100755 --- a/setup_local.sh +++ b/setup_local.sh @@ -10,6 +10,11 @@ # python installation script. It also does some checks to # guarantee necessary parameters were set. # +# @History: +# Leopold Haimberger; Aug 2020 +# added new parameter for a system installation +# (seperate executable and user directories) +# # @Licence: # (C) Copyright 2014-2020. # @@ -25,13 +30,14 @@ # # THE USER HAS TO SPECIFY THESE PARAMETERS # -TARGET='local' -MAKEFILE='makefile_local_gfortran' +TARGET='syslocal' +MAKEFILE='makefile_fast_anne' ECUID='<username>' ECGID='<groupID>' GATEWAY='<gatewayname>' DESTINATION='<name>@genericSftp' -INSTALLDIR=None +INSTALLDIR=$HOME +SYSINSTALLDIR=../sys JOB_TEMPLATE='' CONTROLFILE='CONTROL_CERA' # ----------------------------------------------------------------- @@ -75,8 +81,11 @@ fi if [ -n "$MAKEFILE" ]; then parameterlist+=" --makefile=$MAKEFILE" fi -if [ -n "$FLEXPARTDIR" ]; then # not empty - parameterlist+=" --flexpartdir=$FLEXPARTDIR" +if [ -n "$INSTALLDIR" ]; then + parameterlist+=" --installdir=$INSTALLDIR" +fi +if [ -n "$SYSINSTALLDIR" ]; then + parameterlist+=" --sysinstalldir=$SYSINSTALLDIR" fi if [ -n "$JOB_TEMPLATE" ]; then parameterlist+=" --job_template=$JOB_TEMPLATE" @@ -89,4 +98,7 @@ fi # CALL INSTALLATION SCRIPT WITH DETERMINED COMMANDLINE ARGUMENTS $script $parameterlist +source ~/.bashrc + + -- GitLab