diff --git a/documentation/Sphinx/build/doctrees/api.doctree b/documentation/Sphinx/build/doctrees/api.doctree index dc7c3e7f30bb669af1e0261723b92a4d88ab6bd3..a6ab819e8a5c26d631bec3d23eefc1fdeaa46291 100644 Binary files a/documentation/Sphinx/build/doctrees/api.doctree and b/documentation/Sphinx/build/doctrees/api.doctree differ diff --git a/documentation/Sphinx/build/doctrees/downloads.doctree b/documentation/Sphinx/build/doctrees/downloads.doctree index bfa2114a0d76a0e76d2c56a0699ea49823a53ca3..c2534819559b924ae3ec4efcaf885e5a4e219c3f 100644 Binary files a/documentation/Sphinx/build/doctrees/downloads.doctree and b/documentation/Sphinx/build/doctrees/downloads.doctree differ diff --git a/documentation/Sphinx/build/doctrees/downloads/git_repo.doctree b/documentation/Sphinx/build/doctrees/downloads/git_repo.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8e00af1dd48b3b23f56750f121c979834be3e3ad Binary files /dev/null and b/documentation/Sphinx/build/doctrees/downloads/git_repo.doctree differ diff --git a/documentation/Sphinx/build/doctrees/downloads/history_changes.doctree b/documentation/Sphinx/build/doctrees/downloads/history_changes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..77728270b650974255ba2fab15d7cf018a20c703 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/downloads/history_changes.doctree differ diff --git a/documentation/Sphinx/build/doctrees/downloads/tar_balls.doctree b/documentation/Sphinx/build/doctrees/downloads/tar_balls.doctree new file mode 100644 index 0000000000000000000000000000000000000000..75305e3b557580e9b68f29d63fcab7dce0c3758a Binary files /dev/null and b/documentation/Sphinx/build/doctrees/downloads/tar_balls.doctree differ diff --git a/documentation/Sphinx/build/doctrees/environment.pickle b/documentation/Sphinx/build/doctrees/environment.pickle index 6f806214e8beeb0312bb43c9cf28e9321c973870..f456d33c4d67382e3942142c60e15c9e1b82e56c 100644 Binary files a/documentation/Sphinx/build/doctrees/environment.pickle and b/documentation/Sphinx/build/doctrees/environment.pickle differ diff --git a/documentation/Sphinx/build/doctrees/index.doctree b/documentation/Sphinx/build/doctrees/index.doctree index 18ce44089df298e870f5ecac34e29da21a542746..faccda361bf97b7aea3b5a409fa6963d97d87212 100644 Binary files a/documentation/Sphinx/build/doctrees/index.doctree and b/documentation/Sphinx/build/doctrees/index.doctree differ diff --git a/documentation/Sphinx/build/doctrees/installation.doctree b/documentation/Sphinx/build/doctrees/installation.doctree index e8ba3f0e7cb621b83ade536750c8557804149ee9..d9af92cca10d1efd2ddf5237c26877518f9699a4 100644 Binary files a/documentation/Sphinx/build/doctrees/installation.doctree and b/documentation/Sphinx/build/doctrees/installation.doctree differ diff --git a/documentation/Sphinx/build/doctrees/installation/oper_modes.doctree b/documentation/Sphinx/build/doctrees/installation/oper_modes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1b60bb5105375b4fd4f14858370319dac8b82b8c Binary files /dev/null and b/documentation/Sphinx/build/doctrees/installation/oper_modes.doctree differ diff --git a/documentation/Sphinx/build/doctrees/installation/requirements.doctree b/documentation/Sphinx/build/doctrees/installation/requirements.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ea7c8222f7136d787cb06d37a52e9072a40cb346 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/installation/requirements.doctree differ diff --git a/documentation/Sphinx/build/doctrees/installation/test_install.doctree b/documentation/Sphinx/build/doctrees/installation/test_install.doctree new file mode 100644 index 0000000000000000000000000000000000000000..658f4ccf63cdb189e6f48494f7770880b70451ac Binary files /dev/null and b/documentation/Sphinx/build/doctrees/installation/test_install.doctree differ diff --git a/documentation/Sphinx/build/doctrees/oper_modes.doctree b/documentation/Sphinx/build/doctrees/oper_modes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1f2c6d8345d631b9a6e05cce2a2bda700b6475a9 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/oper_modes.doctree differ diff --git a/documentation/Sphinx/build/doctrees/program_structure.doctree b/documentation/Sphinx/build/doctrees/program_structure.doctree index c6018d583075bef2701a0d001185209e6fde9c4f..9206c2d1b97a05cb7d134f5f2c1242cbe8867eee 100644 Binary files a/documentation/Sphinx/build/doctrees/program_structure.doctree and b/documentation/Sphinx/build/doctrees/program_structure.doctree differ diff --git a/documentation/Sphinx/build/doctrees/program_structure/prog_components.doctree b/documentation/Sphinx/build/doctrees/program_structure/prog_components.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d28766d2a5877e43018c0a079526bf81ea2ccc8d Binary files /dev/null and b/documentation/Sphinx/build/doctrees/program_structure/prog_components.doctree differ diff --git a/documentation/Sphinx/build/doctrees/program_structure/prog_flow.doctree b/documentation/Sphinx/build/doctrees/program_structure/prog_flow.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3b2f49c3efa2ccb34e50fcc51d5a41b250e1ea02 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/program_structure/prog_flow.doctree differ diff --git a/documentation/Sphinx/build/doctrees/program_structure/prog_overview.doctree b/documentation/Sphinx/build/doctrees/program_structure/prog_overview.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dd8eba5101bd28bac02e23431d101ba955f890ac Binary files /dev/null and b/documentation/Sphinx/build/doctrees/program_structure/prog_overview.doctree differ diff --git a/documentation/Sphinx/build/doctrees/requirements.doctree b/documentation/Sphinx/build/doctrees/requirements.doctree index 59873b35a583985ab7b5b58c9e51482f608103ab..437a3955fd4309ad22ec2721d29b924604ab5918 100644 Binary files a/documentation/Sphinx/build/doctrees/requirements.doctree and b/documentation/Sphinx/build/doctrees/requirements.doctree differ diff --git a/documentation/Sphinx/build/doctrees/support.doctree b/documentation/Sphinx/build/doctrees/support.doctree index 900f38b72936b51047cc68a75f79ab28e62fb7a0..ac592db9a73ffca813ae6fb12a9c8b28e493111a 100644 Binary files a/documentation/Sphinx/build/doctrees/support.doctree and b/documentation/Sphinx/build/doctrees/support.doctree differ diff --git a/documentation/Sphinx/build/doctrees/support/faq.doctree b/documentation/Sphinx/build/doctrees/support/faq.doctree new file mode 100644 index 0000000000000000000000000000000000000000..20aab8e428ec2eba9759338d7fbfeaee359ca462 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/support/faq.doctree differ diff --git a/documentation/Sphinx/build/doctrees/support/known_bugs_issues.doctree b/documentation/Sphinx/build/doctrees/support/known_bugs_issues.doctree new file mode 100644 index 0000000000000000000000000000000000000000..aa1c40730eb0ec829ebe48c7aedd0c866f18bde4 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/support/known_bugs_issues.doctree differ diff --git a/documentation/Sphinx/build/doctrees/support/mailing_list.doctree b/documentation/Sphinx/build/doctrees/support/mailing_list.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8ebbb3dc87f42a0131c0fc401a07ca2f5f2a1501 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/support/mailing_list.doctree differ diff --git a/documentation/Sphinx/build/doctrees/support/ticket_system.doctree b/documentation/Sphinx/build/doctrees/support/ticket_system.doctree new file mode 100644 index 0000000000000000000000000000000000000000..01cb562d058181904b0511115955ce85481d89e3 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/support/ticket_system.doctree differ diff --git a/documentation/Sphinx/build/doctrees/test_install.doctree b/documentation/Sphinx/build/doctrees/test_install.doctree new file mode 100644 index 0000000000000000000000000000000000000000..53cfc2f1d0c9eb7c0ec3bd7654d7fbeb94422486 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/test_install.doctree differ diff --git a/documentation/Sphinx/build/doctrees/user_guide.doctree b/documentation/Sphinx/build/doctrees/user_guide.doctree index c54f5fbe4a7508429aa13ab327024d415e858863..a065e8ff0ef271aece7527c3edb6aed35e745547 100644 Binary files a/documentation/Sphinx/build/doctrees/user_guide.doctree and b/documentation/Sphinx/build/doctrees/user_guide.doctree differ diff --git a/documentation/Sphinx/build/doctrees/user_guide/control_templates.doctree b/documentation/Sphinx/build/doctrees/user_guide/control_templates.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6ea301c6c9ce484f5f85f2d08f5ec83e2b0fcf6c Binary files /dev/null and b/documentation/Sphinx/build/doctrees/user_guide/control_templates.doctree differ diff --git a/documentation/Sphinx/build/doctrees/user_guide/how_to.doctree b/documentation/Sphinx/build/doctrees/user_guide/how_to.doctree new file mode 100644 index 0000000000000000000000000000000000000000..259f520d0734b31e191834616b02e461e0c044d1 Binary files /dev/null and b/documentation/Sphinx/build/doctrees/user_guide/how_to.doctree differ diff --git a/documentation/Sphinx/build/html/_modules/ControlFile.html b/documentation/Sphinx/build/html/_modules/ControlFile.html new file mode 100644 index 0000000000000000000000000000000000000000..e5d5029974246d2364805a1598135ecfadc18464 --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/ControlFile.html @@ -0,0 +1,790 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>ControlFile — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>ControlFile</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for ControlFile</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Leopold Haimberger (University of Vienna)</span> +<span class="c1">#</span> +<span class="c1"># @Date: November 2015</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1">#</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added documentation</span> +<span class="c1"># - applied some minor modifications in programming style/structure</span> +<span class="c1"># - changed name of class Control to ControlFile for more</span> +<span class="c1"># self-explanation naming</span> +<span class="c1"># - outsource of class ControlFile</span> +<span class="c1"># - initialisation of class attributes ( to avoid high number of</span> +<span class="c1"># conditional statements and set default values )</span> +<span class="c1"># - divided assignment of attributes and the check of conditions</span> +<span class="c1"># - outsourced the commandline argument assignments to control attributes</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2015-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Class Description:</span> +<span class="c1"># The CONTROL file is the steering part of the FLEXPART extraction</span> +<span class="c1"># software. All necessary parameters needed to retrieve the data fields</span> +<span class="c1"># from the MARS archive for driving FLEXPART are set in a CONTROL file.</span> +<span class="c1"># Some specific parameters like the start and end dates can be overwritten</span> +<span class="c1"># by the command line parameters, but in generel all parameters needed</span> +<span class="c1"># for a complete set of fields for FLEXPART can be set in the CONTROL file.</span> +<span class="c1">#</span> +<span class="c1"># @Class Content:</span> +<span class="c1"># - __init__</span> +<span class="c1"># - __read_controlfile__</span> +<span class="c1"># - __str__</span> +<span class="c1"># - assign_args_to_control</span> +<span class="c1"># - assign_envs_to_control</span> +<span class="c1"># - check_conditions</span> +<span class="c1"># - check_install_conditions</span> +<span class="c1"># - to_list</span> +<span class="c1">#</span> +<span class="c1"># @Class Attributes:</span> +<span class="c1">#</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">re</span> +<span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">inspect</span> + +<span class="c1"># software specific classes and modules from flex_extract</span> +<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../'</span><span class="p">)</span> +<span class="kn">import</span> <span class="nn">_config</span> +<span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="n">my_error</span><span class="p">,</span> <span class="n">silent_remove</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># CLASS</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<div class="viewcode-block" id="ControlFile"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile">[docs]</a><span class="k">class</span> <span class="nc">ControlFile</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + <span class="sd">'''</span> +<span class="sd"> Contains the information which are stored in the CONTROL files.</span> +<span class="sd"> '''</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span> + <span class="sd">'''Initialises the instance of ControlFile class and defines</span> +<span class="sd"> all class attributes with default values. Afterwards calls</span> +<span class="sd"> function __read_controlfile__ to read parameter from Control file.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> filename : :obj:`string`</span> +<span class="sd"> Name of CONTROL file.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="c1"># list of all possible class attributes and their default values</span> + <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span> <span class="o">=</span> <span class="n">filename</span> + <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">date_chunk</span> <span class="o">=</span> <span class="mi">3</span> + <span class="bp">self</span><span class="o">.</span><span class="n">dtime</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">acctime</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">marsclass</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">dataset</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">stream</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">number</span> <span class="o">=</span> <span class="s1">'OFF'</span> + <span class="bp">self</span><span class="o">.</span><span class="n">expver</span> <span class="o">=</span> <span class="s1">'1'</span> + <span class="bp">self</span><span class="o">.</span><span class="n">gaussian</span> <span class="o">=</span> <span class="s1">''</span> + <span class="bp">self</span><span class="o">.</span><span class="n">grid</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">area</span> <span class="o">=</span> <span class="s1">''</span> + <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">lower</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">upper</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">level</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">resol</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">gauss</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accuracy</span> <span class="o">=</span> <span class="mi">24</span> + <span class="bp">self</span><span class="o">.</span><span class="n">omega</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">omegadiff</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">eta</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">etadiff</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">etapar</span> <span class="o">=</span> <span class="mi">77</span> + <span class="bp">self</span><span class="o">.</span><span class="n">dpdeta</span> <span class="o">=</span> <span class="mi">1</span> + <span class="bp">self</span><span class="o">.</span><span class="n">smooth</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">format</span> <span class="o">=</span> <span class="s1">'GRIB1'</span> + <span class="bp">self</span><span class="o">.</span><span class="n">addpar</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="s1">'EN'</span> + <span class="bp">self</span><span class="o">.</span><span class="n">cwc</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">wrf</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ecfsdir</span> <span class="o">=</span> <span class="s1">'ectmp:/$</span><span class="si">{USER}</span><span class="s1">/econdemand/'</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'$</span><span class="si">{USER}</span><span class="s1">'</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'$</span><span class="si">{USER}</span><span class="s1">'</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">grib2flexpart</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ecstorage</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ectrans</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_INPUT_DIR</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ecmwfdatadir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> + <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">flexpart_root_scripts</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="s1">'Makefile.gfortran'</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> + <span class="bp">self</span><span class="o">.</span><span class="n">ecuid</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ecgid</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">debug</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">logicals</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'gauss'</span><span class="p">,</span> <span class="s1">'omega'</span><span class="p">,</span> <span class="s1">'omegadiff'</span><span class="p">,</span> <span class="s1">'eta'</span><span class="p">,</span> <span class="s1">'etadiff'</span><span class="p">,</span> + <span class="s1">'dpdeta'</span><span class="p">,</span> <span class="s1">'cwc'</span><span class="p">,</span> <span class="s1">'wrf'</span><span class="p">,</span> <span class="s1">'grib2flexpart'</span><span class="p">,</span> <span class="s1">'ecstorage'</span><span class="p">,</span> + <span class="s1">'ectrans'</span><span class="p">,</span> <span class="s1">'debug'</span><span class="p">,</span> <span class="s1">'request'</span><span class="p">,</span> <span class="s1">'public'</span><span class="p">]</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">__read_controlfile__</span><span class="p">()</span> + + <span class="k">return</span> + + <span class="k">def</span> <span class="nf">__read_controlfile__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">'''Read CONTROL file and assign all CONTROL file variables.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="k">try</span><span class="p">:</span> + <span class="n">cfile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_CONTROLFILES</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">cfile</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">fdata</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Could not read CONTROL file "'</span> <span class="o">+</span> <span class="n">cfile</span> <span class="o">+</span> <span class="s1">'"'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Either it does not exist or its syntax is wrong.'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Try "'</span> <span class="o">+</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> \ + <span class="s1">' -h" to print usage information'</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="c1"># go through every line and store parameter</span> + <span class="k">for</span> <span class="n">ldata</span> <span class="ow">in</span> <span class="n">fdata</span><span class="p">:</span> + <span class="n">data</span> <span class="o">=</span> <span class="n">ldata</span><span class="o">.</span><span class="n">split</span><span class="p">()</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">'m_'</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> + <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">:]</span> + <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'class'</span><span class="p">:</span> + <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'marsclass'</span> + <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'day1'</span><span class="p">:</span> + <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'start_date'</span> + <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'day2'</span><span class="p">:</span> + <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'end_date'</span> + <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'addpar'</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">'/'</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> + <span class="c1"># remove leading '/' sign from addpar content</span> + <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'/'</span><span class="p">:</span> + <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> + <span class="n">dd</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> + <span class="n">data</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> + <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">dd</span><span class="p">:</span> + <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">'$'</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="k">while</span> <span class="s1">'$'</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> + <span class="n">i</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">'$'</span><span class="p">)</span> + <span class="n">j</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'{'</span><span class="p">)</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'}'</span><span class="p">)</span> + <span class="n">var</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">])</span> + <span class="k">if</span> <span class="n">var</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][:</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">var</span> <span class="o">+</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">my_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> + <span class="s1">'Could not find variable '</span> + <span class="o">+</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' while reading '</span> <span class="o">+</span> + <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">+</span> <span class="s1">'_expanded'</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">'none'</span><span class="p">:</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="kc">None</span><span class="p">)</span> + <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">></span> <span class="mi">2</span><span class="p">:</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">:]))</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">pass</span> + + <span class="k">return</span> + + <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">'''Prepares a string which have all the ControlFile class attributes</span> +<span class="sd"> with its associated values. Each attribute is printed in one line and</span> +<span class="sd"> in alphabetical order.</span> + +<span class="sd"> Example</span> +<span class="sd"> -------</span> +<span class="sd"> 'age': 10</span> +<span class="sd"> 'color': 'Spotted'</span> +<span class="sd"> 'kids': 0</span> +<span class="sd"> 'legs': 2</span> +<span class="sd"> 'name': 'Dog'</span> +<span class="sd"> 'smell': 'Alot'</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> string</span> +<span class="sd"> Single string of concatenated ControlFile class attributes</span> +<span class="sd"> with their values</span> +<span class="sd"> '''</span> + <span class="kn">import</span> <span class="nn">collections</span> + + <span class="n">attrs</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="n">attrs</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span> + + <span class="k">return</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">item</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> + +<div class="viewcode-block" id="ControlFile.assign_args_to_control"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.assign_args_to_control">[docs]</a> <span class="k">def</span> <span class="nf">assign_args_to_control</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> + <span class="sd">'''Overwrites the existing ControlFile instance attributes with</span> +<span class="sd"> the command line arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> args : :obj:`Namespace`</span> +<span class="sd"> Contains the commandline arguments from script/program call.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="c1"># get dictionary of command line parameters and eliminate all</span> + <span class="c1"># parameters which are None (were not specified)</span> + <span class="n">args_dict</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> + <span class="n">arguments</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span> <span class="p">:</span> <span class="n">args_dict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">args_dict</span> + <span class="k">if</span> <span class="n">args_dict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">}</span> + + <span class="c1"># assign all passed command line arguments to ControlFile instance</span> + <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">arguments</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">v</span><span class="p">)</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="ControlFile.assign_envs_to_control"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.assign_envs_to_control">[docs]</a> <span class="k">def</span> <span class="nf">assign_envs_to_control</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">envs</span><span class="p">):</span> + <span class="sd">'''Assigns the ECMWF environment parameter.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> envs : :obj:`dictionary` of :obj:`strings`</span> +<span class="sd"> Contains the ECMWF environment parameternames "ECUID", "ECGID",</span> +<span class="sd"> "DESTINATION" and "GATEWAY" with its corresponding values.</span> +<span class="sd"> They were read from the file "ECMWF_ENV".</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">envs</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">k</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="ControlFile.check_conditions"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.check_conditions">[docs]</a> <span class="k">def</span> <span class="nf">check_conditions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">queue</span><span class="p">):</span> + <span class="sd">'''Checks a couple of necessary attributes and conditions,</span> +<span class="sd"> such as if they exist and contain values.</span> +<span class="sd"> Otherwise set default values.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> queue : :obj:`string`</span> +<span class="sd"> Name of the queue if submitted to the ECMWF servers.</span> +<span class="sd"> Used to check if ecuid, ecgid, gateway and destination</span> +<span class="sd"> are set correctly and are not empty.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="n">my_error</span> + <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> + + <span class="c1"># check for having at least a starting date</span> + <span class="c1"># otherwise program is not allowed to run</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'start_date specified neither in command line nor </span><span class="se">\</span> +<span class="s1"> in CONTROL file '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Try "'</span> <span class="o">+</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> + <span class="s1">' -h" to print usage information'</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="c1"># retrieve just one day if end_date isn't set</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span> + + <span class="c1"># basetime has only two possible values</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">12</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Basetime has an invalid value!'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Basetime = '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">))</span> + <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="c1"># assure consistency of levelist and level</span> + <span class="c1"># up-to-date available maximum level numbers at ECMWF, 05.10.2018</span> + <span class="n">max_level_list</span> <span class="o">=</span> <span class="p">[</span><span class="mi">16</span><span class="p">,</span> <span class="mi">19</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">60</span><span class="p">,</span> <span class="mi">62</span><span class="p">,</span> <span class="mi">91</span><span class="p">,</span> <span class="mi">137</span><span class="p">]</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Warning: neither levelist nor level </span><span class="se">\</span> +<span class="s1"> specified in CONTROL file'</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">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="o">=</span> <span class="s1">'1/to/'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span> + <span class="k">elif</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">)</span> <span class="ow">or</span> \ + <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">pass</span> + + <span class="c1"># check if max level is a valid level</span> + <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">max_level_list</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR: '</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'LEVEL must be the maximum level of a specified '</span> + <span class="s1">'level list from ECMWF, e.g.'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'[16, 19, 31, 40, 50, 60, 62, 91 or 137]'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Check parameter "LEVEL" or the max level of "LEVELIST"!'</span><span class="p">)</span> + <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="c1"># if area was provided (only from commandline)</span> + <span class="c1"># decompose area into its 4 components</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">area</span><span class="p">:</span> + <span class="n">components</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">area</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> + <span class="c1"># convert float to integer coordinates</span> + <span class="k">if</span> <span class="s1">'.'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">area</span><span class="p">:</span> + <span class="n">components</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">))</span> + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">components</span><span class="p">)]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">upper</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lower</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="n">components</span> + + <span class="c1"># prepare step list if "/" signs are found</span> + <span class="k">if</span> <span class="s1">'/'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">:</span> + <span class="n">steps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> + <span class="k">if</span> <span class="s1">'to'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">and</span> <span class="s1">'by'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> + <span class="n">ilist</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> + <span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> + <span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">4</span><span class="p">]))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">ilist</span><span class="p">]</span> + <span class="k">elif</span> <span class="s1">'to'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">and</span> <span class="s1">'by'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> + <span class="n">my_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">+</span> <span class="s1">':</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span> + <span class="s1">'if "to" is used in steps parameter, </span><span class="se">\</span> +<span class="s1"> please use "by" as well'</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="n">steps</span> + + <span class="c1"># if maxstep wasn't provided</span> + <span class="c1"># search for it in the "step" parameter</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">)</span> + + <span class="c1"># set root scripts since it is needed later on</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecmwfdatadir</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outputdir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="k">if</span> <span class="s1">','</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">','</span><span class="p">)</span> + <span class="k">elif</span> <span class="s1">' '</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="o">.</span><span class="n">split</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">mailfail</span><span class="p">]</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="k">if</span> <span class="s1">','</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">','</span><span class="p">)</span> + <span class="k">elif</span> <span class="s1">' '</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="o">.</span><span class="n">split</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mailops</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">mailops</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">queue</span> <span class="ow">in</span> <span class="n">_config</span><span class="o">.</span><span class="n">QUEUES_LIST</span> <span class="ow">and</span> \ + <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">gateway</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">destination</span> <span class="ow">or</span> \ + <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecuid</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecgid</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Environment variables GATEWAY, DESTINATION, ECUID and </span><span class="se">\</span> +<span class="s1"> ECGID were not set properly!'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Please check for existence of file "ECMWF_ENV" in the </span><span class="se">\</span> +<span class="s1"> python directory!'</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="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">marsfile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> + <span class="n">_config</span><span class="o">.</span><span class="n">FILE_MARS_REQUESTS</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">marsfile</span><span class="p">):</span> + <span class="n">silent_remove</span><span class="p">(</span><span class="n">marsfile</span><span class="p">)</span> + + <span class="c1"># check all logical variables for data type</span> + <span class="c1"># if its a string change to integer</span> + <span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">logicals</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">var</span><span class="p">),</span> <span class="nb">int</span><span class="p">):</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">var</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">var</span><span class="p">)))</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">dataset</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR: '</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'If public mars data wants to be retrieved, '</span> + <span class="s1">'the "dataset"-parameter has to be set in the control file!'</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="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'AN'</span> <span class="ow">and</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Analysis retrievals must have STEP = 0 (is set to 0)'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">time</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">time</span><span class="p">]</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">]</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'... Control paramter ACCTYPE was not defined.'</span><span class="p">)</span> + <span class="k">try</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'AN'</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Use old setting by using TYPE[1] for flux forecast!'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="k">except</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Use default value "FC" for flux forecast!'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">acctype</span><span class="o">=</span><span class="s1">'FC'</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">acctime</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'... Control paramter ACCTIME was not defined.'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Use default value "00/12" for flux forecast!'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">acctime</span><span class="o">=</span><span class="s1">'00/12'</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'... Control paramter ACCMAXSTEP was not defined.'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Use default value "12" for flux forecast!'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accmaxstep</span><span class="o">=</span><span class="s1">'12'</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="ControlFile.check_install_conditions"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.check_install_conditions">[docs]</a> <span class="k">def</span> <span class="nf">check_install_conditions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">'''Checks a couple of necessary attributes and conditions</span> +<span class="sd"> for the installation such as if they exist and contain values.</span> +<span class="sd"> Otherwise set default values.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">and</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'local'</span><span class="p">,</span> <span class="s1">'ecgate'</span><span class="p">,</span> <span class="s1">'cca'</span><span class="p">]:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'ERROR: unknown or missing installation target '</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'target: '</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'please specify correct installation target '</span> <span class="o">+</span> + <span class="s1">'(local | ecgate | cca)'</span><span class="p">)</span> + <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="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_target</span> <span class="o">!=</span> <span class="s1">'local'</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecgid</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecuid</span> <span class="ow">or</span> \ + <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">gateway</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Please enter your ECMWF user id and group id as well '</span> <span class="o">+</span> + <span class="s1">'as the </span><span class="se">\n</span><span class="s1">name of the local gateway and the ectrans '</span> <span class="o">+</span> + <span class="s1">'destination '</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'with command line options --ecuid --ecgid </span><span class="se">\</span> +<span class="s1"> --gateway --destination'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Try "'</span> <span class="o">+</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> \ + <span class="s1">' -h" to print usage information'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Please consult ecaccess documentation or ECMWF user </span><span class="se">\</span> +<span class="s1"> support for further details'</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="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{HOME}</span><span class="s1">'</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> + <span class="k">else</span><span class="p">:</span> <span class="c1"># local</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="ControlFile.to_list"><a class="viewcode-back" href="../api.html#ControlFile.ControlFile.to_list">[docs]</a> <span class="k">def</span> <span class="nf">to_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">'''Just generates a list of strings containing the attributes and</span> +<span class="sd"> assigned values except the attributes "_expanded", "exedir",</span> +<span class="sd"> "ecmwfdatadir" and "flexpart_root_scripts".</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> l : :obj:`list`</span> +<span class="sd"> A sorted list of the all ControlFile class attributes with</span> +<span class="sd"> their values except the attributes "_expanded", "exedir",</span> +<span class="sd"> "ecmwfdatadir" and "flexpart_root_scripts".</span> +<span class="sd"> '''</span> + + <span class="kn">import</span> <span class="nn">collections</span> + + <span class="n">attrs</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span> + + <span class="n">l</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="k">if</span> <span class="s1">'_expanded'</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="k">pass</span> + <span class="k">elif</span> <span class="s1">'exedir'</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="k">pass</span> + <span class="k">elif</span> <span class="s1">'flexpart_root_scripts'</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="k">pass</span> + <span class="k">elif</span> <span class="s1">'ecmwfdatadir'</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="k">pass</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="nb">list</span><span class="p">):</span> + <span class="n">stot</span> <span class="o">=</span> <span class="s1">''</span> + <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> + <span class="n">stot</span> <span class="o">+=</span> <span class="n">s</span> <span class="o">+</span> <span class="s1">' '</span> + + <span class="n">l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stot</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">item</span><span class="p">)</span> + + <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">l</span><span class="p">)</span></div></div> + +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/EcFlexpart.html b/documentation/Sphinx/build/html/_modules/EcFlexpart.html new file mode 100644 index 0000000000000000000000000000000000000000..346888684e60766903fd370a3ea422f7c583e9d3 --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/EcFlexpart.html @@ -0,0 +1,1510 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>EcFlexpart — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>EcFlexpart</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for EcFlexpart</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Anne Fouilloux (University of Oslo)</span> +<span class="c1">#</span> +<span class="c1"># @Date: October 2014</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1">#</span> +<span class="c1"># November 2015 - Leopold Haimberger (University of Vienna):</span> +<span class="c1"># - extended with class Control</span> +<span class="c1"># - removed functions mkdir_p, daterange, years_between, months_between</span> +<span class="c1"># - added functions darain, dapoly, to_param_id, init128, normal_exit,</span> +<span class="c1"># my_error, clean_up, install_args_and_control,</span> +<span class="c1"># interpret_args_and_control,</span> +<span class="c1"># - removed function __del__ in class EIFLexpart</span> +<span class="c1"># - added the following functions in EIFlexpart:</span> +<span class="c1"># - create_namelist</span> +<span class="c1"># - process_output</span> +<span class="c1"># - deacc_fluxes</span> +<span class="c1"># - modified existing EIFlexpart - functions for the use in</span> +<span class="c1"># flex_extract</span> +<span class="c1"># - retrieve also longer term forecasts, not only analyses and</span> +<span class="c1"># short term forecast data</span> +<span class="c1"># - added conversion into GRIB2</span> +<span class="c1"># - added conversion into .fp format for faster execution of FLEXPART</span> +<span class="c1"># (see https://www.flexpart.eu/wiki/FpCtbtoWo4FpFormat)</span> +<span class="c1">#</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added documentation</span> +<span class="c1"># - removed function getFlexpartTime in class EcFlexpart</span> +<span class="c1"># - outsourced class ControlFile</span> +<span class="c1"># - outsourced class MarsRetrieval</span> +<span class="c1"># - changed class name from EIFlexpart to EcFlexpart</span> +<span class="c1"># - applied minor code changes (style)</span> +<span class="c1"># - removed "dead code" , e.g. retrieval of Q since it is not needed</span> +<span class="c1"># - removed "times" parameter from retrieve-method since it is not used</span> +<span class="c1"># - seperated function "retrieve" into smaller functions (less code</span> +<span class="c1"># duplication, easier testing)</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2014-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Class Description:</span> +<span class="c1"># FLEXPART needs grib files in a specifc format. All necessary data fields</span> +<span class="c1"># for one time step are stored in a single file. The class represents an</span> +<span class="c1"># instance with all the parameter and settings necessary for retrieving</span> +<span class="c1"># MARS data and modifing them so they are fitting FLEXPART need. The class</span> +<span class="c1"># is able to disaggregate the fluxes and convert grid types to the one needed</span> +<span class="c1"># by FLEXPART, therefore using the FORTRAN program.</span> +<span class="c1">#</span> +<span class="c1"># @Class Content:</span> +<span class="c1"># - __init__</span> +<span class="c1"># - write_namelist</span> +<span class="c1"># - retrieve</span> +<span class="c1"># - process_output</span> +<span class="c1"># - create</span> +<span class="c1"># - deacc_fluxes</span> +<span class="c1">#</span> +<span class="c1"># @Class Attributes:</span> +<span class="c1">#</span> +<span class="c1"># TODO</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1">#pylint: disable=unsupported-assignment-operation</span> +<span class="c1"># this is disabled because for this specific case its an error in pylint</span> +<span class="c1">#pylint: disable=consider-using-enumerate</span> +<span class="c1"># this is not useful in this case</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">glob</span> +<span class="kn">import</span> <span class="nn">shutil</span> +<span class="kn">import</span> <span class="nn">subprocess</span> +<span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span> +<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> + +<span class="kn">from</span> <span class="nn">gribapi</span> <span class="k">import</span> <span class="p">(</span><span class="n">grib_set</span><span class="p">,</span> <span class="n">grib_index_select</span><span class="p">,</span> <span class="n">grib_new_from_index</span><span class="p">,</span> <span class="n">grib_get</span><span class="p">,</span> + <span class="n">grib_write</span><span class="p">,</span> <span class="n">grib_get_values</span><span class="p">,</span> <span class="n">grib_set_values</span><span class="p">,</span> <span class="n">grib_release</span><span class="p">,</span> + <span class="n">grib_index_release</span><span class="p">,</span> <span class="n">grib_index_get</span><span class="p">)</span> + +<span class="c1"># from eccodes import (codes_index_select, codes_new_from_index, codes_get,</span> + <span class="c1"># codes_get_values, codes_set_values, codes_set,</span> + <span class="c1"># codes_write, codes_release, codes_new_from_index,</span> + <span class="c1"># codes_index_release, codes_index_get)</span> + +<span class="c1"># software specific classes and modules from flex_extract</span> +<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../'</span><span class="p">)</span> +<span class="kn">import</span> <span class="nn">_config</span> +<span class="kn">from</span> <span class="nn">GribTools</span> <span class="k">import</span> <span class="n">GribTools</span> +<span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">init128</span><span class="p">,</span> <span class="n">to_param_id</span><span class="p">,</span> <span class="n">silent_remove</span><span class="p">,</span> <span class="n">product</span><span class="p">,</span> + <span class="n">my_error</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">)</span> +<span class="kn">from</span> <span class="nn">MarsRetrieval</span> <span class="k">import</span> <span class="n">MarsRetrieval</span> +<span class="kn">import</span> <span class="nn">mods.disaggregation</span> <span class="k">as</span> <span class="nn">disaggregation</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># CLASS</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<div class="viewcode-block" id="EcFlexpart"><a class="viewcode-back" href="../api.html#EcFlexpart.EcFlexpart">[docs]</a><span class="k">class</span> <span class="nc">EcFlexpart</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + <span class="sd">'''</span> +<span class="sd"> Class to retrieve FLEXPART specific ECMWF data.</span> +<span class="sd"> '''</span> + <span class="c1"># --------------------------------------------------------------------------</span> + <span class="c1"># CLASS FUNCTIONS</span> + <span class="c1"># --------------------------------------------------------------------------</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">fluxes</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="sd">'''Creates an object/instance of EcFlexpart with the associated</span> +<span class="sd"> settings of its attributes for the retrieval.</span> + +<span class="sd"> Parameters:</span> +<span class="sd"> -----------</span> +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> fluxes : :obj:`boolean`, optional</span> +<span class="sd"> Decides if the flux parameter settings are stored or</span> +<span class="sd"> the rest of the parameter list.</span> +<span class="sd"> Default value is False.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="c1"># set a counter for the number of mars requests generated</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mreq_count</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="c1"># different mars types for retrieving data for flexpart</span> + <span class="bp">self</span><span class="o">.</span><span class="n">types</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span> + + <span class="c1"># Pure forecast mode</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">type</span><span class="p">)</span> <span class="ow">and</span> <span class="s1">'AN'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">type</span><span class="p">:</span> + <span class="n">c</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> + <span class="n">c</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">step</span><span class="p">[</span><span class="mi">0</span><span class="p">]))]</span> + <span class="n">c</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span> + <span class="n">c</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">type</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="n">c</span><span class="o">.</span><span class="n">step</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="p">))</span> + <span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span> + <span class="bp">self</span><span class="o">.</span><span class="n">dataset</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">dataset</span> + <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> + <span class="bp">self</span><span class="o">.</span><span class="n">dtime</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">dtime</span> + <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">if</span> <span class="n">fluxes</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o"><=</span> <span class="mi">24</span><span class="p">:</span> + <span class="c1"># no forecast beyond one day is needed!</span> + <span class="c1"># Thus, prepare flux data manually as usual</span> + <span class="c1"># with only forecast fields with start times at 00/12</span> + <span class="c1"># (but without 00/12 fields since these are</span> + <span class="c1"># the initialisation times of the flux fields</span> + <span class="c1"># and therefore are zero all the time)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">acctype</span><span class="p">)]</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'times'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">acctime</span><span class="p">),</span> + <span class="s1">'steps'</span><span class="p">:</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/to/</span><span class="si">{}</span><span class="s1">/by/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">accmaxstep</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">)}</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">for</span> <span class="n">ty</span><span class="p">,</span> <span class="n">st</span><span class="p">,</span> <span class="n">ti</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">step</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">):</span> + <span class="n">btlist</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">24</span><span class="p">)</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="s1">'12'</span><span class="p">:</span> + <span class="n">btlist</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">12</span><span class="p">]</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="s1">'00'</span><span class="p">:</span> + <span class="n">btlist</span> <span class="o">=</span> <span class="p">[</span><span class="mi">13</span><span class="p">,</span> <span class="mi">14</span><span class="p">,</span> <span class="mi">15</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">18</span><span class="p">,</span> <span class="mi">19</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">21</span><span class="p">,</span> <span class="mi">22</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span> + + <span class="k">if</span> <span class="p">((</span><span class="n">ty</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'AN'</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">%</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> + <span class="p">(</span><span class="n">ty</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">'AN'</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">step</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">%</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> + <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">step</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">%</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">))</span> <span class="p">)</span> <span class="ow">and</span> \ + <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="ow">in</span> <span class="n">btlist</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">24</span><span class="p">):</span> + + <span class="k">if</span> <span class="n">ty</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'times'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'steps'</span><span class="p">:</span> <span class="s1">''</span><span class="p">}</span> + + <span class="k">if</span> <span class="n">ti</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'times'</span><span class="p">]:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'times'</span><span class="p">]:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'times'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/'</span> + <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'times'</span><span class="p">]</span> <span class="o">+=</span> <span class="n">ti</span> + + <span class="k">if</span> <span class="n">st</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'steps'</span><span class="p">]:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'steps'</span><span class="p">]:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'steps'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/'</span> + <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ty</span><span class="p">][</span><span class="s1">'steps'</span><span class="p">]</span> <span class="o">+=</span> <span class="n">st</span> + <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">marsclass</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">marsclass</span> + <span class="bp">self</span><span class="o">.</span><span class="n">stream</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">stream</span> + <span class="bp">self</span><span class="o">.</span><span class="n">number</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">number</span> + <span class="bp">self</span><span class="o">.</span><span class="n">resol</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">resol</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accuracy</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">accuracy</span> + <span class="bp">self</span><span class="o">.</span><span class="n">level</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">level</span> + <span class="bp">self</span><span class="o">.</span><span class="n">expver</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">expver</span> + <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">levelist</span> + <span class="c1"># for gaussian grid retrieval</span> + <span class="bp">self</span><span class="o">.</span><span class="n">glevelist</span> <span class="o">=</span> <span class="s1">'1/to/'</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">level</span> + <span class="bp">self</span><span class="o">.</span><span class="n">gaussian</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">gaussian</span> + + <span class="k">if</span> <span class="s1">'N'</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">grid</span><span class="p">:</span> <span class="c1"># Gaussian output grid</span> + <span class="bp">self</span><span class="o">.</span><span class="n">grid</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">grid</span> + <span class="bp">self</span><span class="o">.</span><span class="n">area</span> <span class="o">=</span> <span class="s1">'G'</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">grid</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">grid</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">grid</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">area</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">,</span> + <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">,</span> + <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">,</span> + <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span> <span class="o">=</span> <span class="p">[]</span> + + + <span class="c1"># Now comes the nasty part that deals with the different</span> + <span class="c1"># scenarios we have:</span> + <span class="c1"># 1) Calculation of etadot on</span> + <span class="c1"># a) Gaussian grid</span> + <span class="c1"># b) Output grid</span> + <span class="c1"># c) Output grid using parameter 77 retrieved from MARS</span> + <span class="c1"># 3) Calculation/Retrieval of omega</span> + <span class="c1"># 4) Download also data for WRF</span> + + <span class="c1"># Different grids need different retrievals</span> + <span class="c1"># SH = Spherical Harmonics, GG = Gaussian Grid,</span> + <span class="c1"># OG = Output Grid, ML = MultiLevel, SL = SingleLevel</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'SH__ML'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'SH__SL'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span> + <span class="s1">'GG__ML'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'GG__SL'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span> + <span class="s1">'OG__ML'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'OG__SL'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span> + <span class="s1">'OG_OROLSM_SL'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'OG_acc_SL'</span><span class="p">:</span> <span class="s1">''</span><span class="p">}</span> + <span class="c1"># the self.params dictionary stores a list of</span> + <span class="c1"># [param, levtype, levelist, grid] per key</span> + + <span class="k">if</span> <span class="n">fluxes</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'SH__SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'LNSP'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="s1">'OFF'</span><span class="p">]</span> + <span class="c1"># "SD/MSL/TCC/10U/10V/2T/2D/129/172"</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"141/151/164/165/166/167/168/129/172"</span><span class="p">,</span> \ + <span class="s1">'SFC'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">]</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">addpar</span><span class="p">:</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">addpar</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'/'</span><span class="p">:</span> + <span class="n">c</span><span class="o">.</span><span class="n">addpar</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">addpar</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__SL'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/'</span> <span class="o">+</span> <span class="s1">'/'</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">addpar</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">marsclass</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'EA'</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">marsclass</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'EP'</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG_OROLSM__SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"160/27/28/244"</span><span class="p">,</span> + <span class="s1">'SFC'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG_OROLSM__SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"160/27/28/173"</span><span class="p">,</span> \ + <span class="s1">'SFC'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">]</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'T/Q'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">]</span> + + <span class="c1">#if c.gauss == '0' and c.eta == '1':</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">gauss</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">eta</span><span class="p">:</span> + <span class="c1"># the simplest case</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/U/V/77'</span> + <span class="c1">#elif c.gauss == '0' and c.eta == '0':</span> + <span class="k">elif</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">gauss</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">eta</span><span class="p">:</span> + <span class="c1"># this is not recommended (inaccurate)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/U/V'</span> + <span class="c1">#elif c.gauss == '1' and c.eta == '0':</span> + <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">gauss</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">eta</span><span class="p">:</span> + <span class="c1"># this is needed for data before 2008, or for reanalysis data</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'GG__SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Q'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> \ + <span class="s1">'</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">((</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resol</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'SH__ML'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'U/V/D'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">glevelist</span><span class="p">,</span> <span class="s1">'OFF'</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Warning: This is a very costly parameter combination, </span><span class="se">\</span> +<span class="s1"> use only for debugging!'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'GG__SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Q'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> \ + <span class="s1">'</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">((</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resol</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'GG__ML'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'U/V/D/77'</span><span class="p">,</span> <span class="s1">'ML'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">glevelist</span><span class="p">,</span> \ + <span class="s1">'</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">((</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resol</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)]</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">omega</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/W'</span> + + <span class="c1"># add cloud water content if necessary</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">cwc</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/CLWC/CIWC'</span> + + <span class="c1"># add vorticity and geopotential height for WRF if necessary</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/Z/VO'</span> + <span class="k">if</span> <span class="s1">'/D'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__ML'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/D'</span> + <span class="c1">#wrf_sfc = 'sp/msl/skt/2t/10u/10v/2d/z/lsm/sst/ci/sd/stl1/ /</span> + <span class="c1"># stl2/stl3/stl4/swvl1/swvl2/swvl3/swvl4'.upper()</span> + <span class="n">wrf_sfc</span> <span class="o">=</span> <span class="s1">'134/235/167/165/166/168/129/172/34/31/141/ </span><span class="se">\</span> +<span class="s1"> 139/170/183/236/39/40/41/42'</span> + <span class="n">lwrt_sfc</span> <span class="o">=</span> <span class="n">wrf_sfc</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> + <span class="k">for</span> <span class="n">par</span> <span class="ow">in</span> <span class="n">lwrt_sfc</span><span class="p">:</span> + <span class="k">if</span> <span class="n">par</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__SL'</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG__SL'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'/'</span> <span class="o">+</span> <span class="n">par</span> + + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG_acc_SL'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LSP/CP/SSHF/EWSS/NSSS/SSR"</span><span class="p">,</span> \ + <span class="s1">'SFC'</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">]</span> + + <span class="k">return</span> + + + <span class="k">def</span> <span class="nf">_mk_targetname</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ftype</span><span class="p">,</span> <span class="n">param</span><span class="p">,</span> <span class="n">date</span><span class="p">):</span> + <span class="sd">'''Creates the filename for the requested grib data to be stored in.</span> +<span class="sd"> This name is passed as the "target" parameter in the request.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> ftype : :obj:`string`</span> +<span class="sd"> Shortcut name of the type of the field. E.g. AN, FC, PF, ...</span> + +<span class="sd"> param : :obj:`string`</span> +<span class="sd"> Shortcut of the grid type. E.g. SH__ML, SH__SL, GG__ML,</span> +<span class="sd"> GG__SL, OG__ML, OG__SL, OG_OROLSM_SL, OG_acc_SL</span> + +<span class="sd"> date : :obj:`string`</span> +<span class="sd"> The date period of the grib data to be stored in this file.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> targetname : :obj:`string`</span> +<span class="sd"> The target filename for the grib data.</span> +<span class="sd"> '''</span> + <span class="n">targetname</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">+</span> <span class="s1">'/'</span> <span class="o">+</span> <span class="n">ftype</span> <span class="o">+</span> <span class="n">param</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="n">date</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> + <span class="nb">str</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getppid</span><span class="p">())</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">())</span> <span class="o">+</span> <span class="s1">'.grb'</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">targetname</span> + + + <span class="k">def</span> <span class="nf">_start_retrievement</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">par_dict</span><span class="p">):</span> + <span class="sd">'''Creates the Mars Retrieval and prints or submits the request</span> +<span class="sd"> depending on the status of the request variable.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> request : :obj:`integer`</span> +<span class="sd"> Selects the mode of retrieval.</span> +<span class="sd"> 0: Retrieves the data from ECMWF.</span> +<span class="sd"> 1: Prints the mars requests to an output file.</span> +<span class="sd"> 2: Retrieves the data and prints the mars request.</span> + +<span class="sd"> par_dict : :obj:`dictionary`</span> +<span class="sd"> Contains all parameter which have to be set for creating the</span> +<span class="sd"> Mars Retrievals. The parameter are:</span> +<span class="sd"> marsclass, dataset, stream, type, levtype, levelist, resol,</span> +<span class="sd"> gaussian, accuracy, grid, target, area, date, time, number,</span> +<span class="sd"> step, expver, param</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="c1"># increase number of mars requests</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mreq_count</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="n">MR</span> <span class="o">=</span> <span class="n">MarsRetrieval</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">public</span><span class="p">,</span> + <span class="n">marsclass</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'marsclass'</span><span class="p">],</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'dataset'</span><span class="p">],</span> + <span class="n">stream</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'stream'</span><span class="p">],</span> + <span class="nb">type</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'type'</span><span class="p">],</span> + <span class="n">levtype</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'levtype'</span><span class="p">],</span> + <span class="n">levelist</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'levelist'</span><span class="p">],</span> + <span class="n">resol</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'resol'</span><span class="p">],</span> + <span class="n">gaussian</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'gaussian'</span><span class="p">],</span> + <span class="n">accuracy</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'accuracy'</span><span class="p">],</span> + <span class="n">grid</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'grid'</span><span class="p">],</span> + <span class="n">target</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'target'</span><span class="p">],</span> + <span class="n">area</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'area'</span><span class="p">],</span> + <span class="n">date</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">],</span> + <span class="n">time</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">],</span> + <span class="n">number</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'number'</span><span class="p">],</span> + <span class="n">step</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'step'</span><span class="p">],</span> + <span class="n">expver</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'expver'</span><span class="p">],</span> + <span class="n">param</span><span class="o">=</span><span class="n">par_dict</span><span class="p">[</span><span class="s1">'param'</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">request</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">MR</span><span class="o">.</span><span class="n">display_info</span><span class="p">()</span> + <span class="n">MR</span><span class="o">.</span><span class="n">data_retrieve</span><span class="p">()</span> + <span class="k">elif</span> <span class="n">request</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">MR</span><span class="o">.</span><span class="n">print_infodata_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">mreq_count</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="n">MR</span><span class="o">.</span><span class="n">print_infodata_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">mreq_count</span><span class="p">)</span> + <span class="n">MR</span><span class="o">.</span><span class="n">display_info</span><span class="p">()</span> + <span class="n">MR</span><span class="o">.</span><span class="n">data_retrieve</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Failure'</span><span class="p">)</span> + + <span class="k">return</span> + + + <span class="k">def</span> <span class="nf">_mk_index_values</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputdir</span><span class="p">,</span> <span class="n">inputfiles</span><span class="p">,</span> <span class="n">keys</span><span class="p">):</span> + <span class="sd">'''Creates an index file for a set of grib parameter keys.</span> +<span class="sd"> The values from the index keys are returned in a list.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> keys : :obj:`dictionary`</span> +<span class="sd"> List of parameter names which serves as index.</span> + +<span class="sd"> inputfiles : :obj:`UioFiles`</span> +<span class="sd"> Contains a list of files.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> iid : :obj:`grib_index`</span> +<span class="sd"> This is a grib specific index structure to access</span> +<span class="sd"> messages in a file.</span> + +<span class="sd"> index_vals : :obj:`list`</span> +<span class="sd"> Contains the values from the keys used for a distinct selection</span> +<span class="sd"> of grib messages in processing the grib files.</span> +<span class="sd"> Content looks like e.g.:</span> +<span class="sd"> index_vals[0]: ('20171106', '20171107', '20171108') ; date</span> +<span class="sd"> index_vals[1]: ('0', '1200', '1800', '600') ; time</span> +<span class="sd"> index_vals[2]: ('0', '12', '3', '6', '9') ; stepRange</span> +<span class="sd"> '''</span> + <span class="n">iid</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">index_keys</span> <span class="o">=</span> <span class="n">keys</span> + + <span class="n">indexfile</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">inputdir</span><span class="p">,</span> <span class="n">_config</span><span class="o">.</span><span class="n">FILE_GRIB_INDEX</span><span class="p">)</span> + <span class="n">silent_remove</span><span class="p">(</span><span class="n">indexfile</span><span class="p">)</span> + <span class="n">grib</span> <span class="o">=</span> <span class="n">GribTools</span><span class="p">(</span><span class="n">inputfiles</span><span class="o">.</span><span class="n">files</span><span class="p">)</span> + <span class="c1"># creates new index file</span> + <span class="n">iid</span> <span class="o">=</span> <span class="n">grib</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">index_keys</span><span class="o">=</span><span class="n">index_keys</span><span class="p">,</span> <span class="n">index_file</span><span class="o">=</span><span class="n">indexfile</span><span class="p">)</span> + + <span class="c1"># read the values of index keys</span> + <span class="n">index_vals</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">index_keys</span><span class="p">:</span> + <span class="c1">#index_vals.append(grib_index_get(iid, key))</span> + <span class="c1">#print(index_vals[-1])</span> + <span class="n">key_vals</span> <span class="o">=</span> <span class="n">grib_index_get</span><span class="p">(</span><span class="n">iid</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="n">key_vals</span><span class="p">)</span> + <span class="c1"># have to sort the steps for disaggregation,</span> + <span class="c1"># therefore convert to int first</span> + <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s1">'step'</span><span class="p">:</span> + <span class="n">key_vals</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">key_vals</span><span class="p">]</span> + <span class="n">key_vals</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span> + <span class="n">key_vals</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">key_vals</span><span class="p">]</span> + <span class="n">index_vals</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key_vals</span><span class="p">)</span> + <span class="c1"># index_vals looks for example like:</span> + <span class="c1"># index_vals[0]: ('20171106', '20171107', '20171108') ; date</span> + <span class="c1"># index_vals[1]: ('0', '1200') ; time</span> + <span class="c1"># index_vals[2]: (3', '6', '9', '12') ; stepRange</span> + + <span class="k">return</span> <span class="n">iid</span><span class="p">,</span> <span class="n">index_vals</span> + + +<div class="viewcode-block" id="EcFlexpart.retrieve"><a class="viewcode-back" href="../api.html#EcFlexpart.EcFlexpart.retrieve">[docs]</a> <span class="k">def</span> <span class="nf">retrieve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">dates</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">inputdir</span><span class="o">=</span><span class="s1">'.'</span><span class="p">):</span> + <span class="sd">'''Finalizing the retrieval information by setting final details</span> +<span class="sd"> depending on grid type.</span> +<span class="sd"> Prepares MARS retrievals per grid type and submits them.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> server : :obj:`ECMWFService` or :obj:`ECMWFDataServer`</span> +<span class="sd"> The connection to the ECMWF server. This is different</span> +<span class="sd"> for member state users which have full access and non</span> +<span class="sd"> member state users which have only access to the public</span> +<span class="sd"> data sets. The decision is made from command line argument</span> +<span class="sd"> "public"; for public access its True (ECMWFDataServer)</span> +<span class="sd"> for member state users its False (ECMWFService)</span> + +<span class="sd"> dates : :obj:`string`</span> +<span class="sd"> Contains start and end date of the retrieval in the format</span> +<span class="sd"> "YYYYMMDD/to/YYYYMMDD"</span> + +<span class="sd"> request : :obj:`integer`</span> +<span class="sd"> Selects the mode of retrieval.</span> +<span class="sd"> 0: Retrieves the data from ECMWF.</span> +<span class="sd"> 1: Prints the mars requests to an output file.</span> +<span class="sd"> 2: Retrieves the data and prints the mars request.</span> + +<span class="sd"> inputdir : :obj:`string`, optional</span> +<span class="sd"> Path to the directory where the retrieved data is about</span> +<span class="sd"> to be stored. The default is the current directory ('.').</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="bp">self</span><span class="o">.</span><span class="n">dates</span> <span class="o">=</span> <span class="n">dates</span> + <span class="bp">self</span><span class="o">.</span><span class="n">server</span> <span class="o">=</span> <span class="n">server</span> + <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="o">=</span> <span class="n">public</span> + <span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">=</span> <span class="n">inputdir</span> + <span class="n">oro</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="c1"># define times with datetime module</span> + <span class="n">t12h</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="mi">12</span><span class="p">)</span> + <span class="n">t24h</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="mi">24</span><span class="p">)</span> + + <span class="c1"># dictionary which contains all parameter for the mars request,</span> + <span class="c1"># entries with a "None" will change in different requests and will</span> + <span class="c1"># therefore be set in each request seperately</span> + <span class="n">retr_param_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'marsclass'</span><span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">marsclass</span><span class="p">,</span> + <span class="s1">'dataset'</span><span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">dataset</span><span class="p">,</span> + <span class="s1">'stream'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'type'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'levtype'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'levelist'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'resol'</span><span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">resol</span><span class="p">,</span> + <span class="s1">'gaussian'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'accuracy'</span><span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">accuracy</span><span class="p">,</span> + <span class="s1">'grid'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'target'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'area'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'date'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'time'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'number'</span><span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">number</span><span class="p">,</span> + <span class="s1">'step'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'expver'</span><span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">expver</span><span class="p">,</span> + <span class="s1">'param'</span><span class="p">:</span><span class="kc">None</span><span class="p">}</span> + + <span class="k">for</span> <span class="n">ftype</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">:</span> + <span class="c1"># fk contains field types such as</span> + <span class="c1"># [AN, FC, PF, CV]</span> + <span class="c1"># fv contains all of the items of the belonging key</span> + <span class="c1"># [times, steps]</span> + <span class="k">for</span> <span class="n">pk</span><span class="p">,</span> <span class="n">pv</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> + <span class="c1"># pk contains one of these keys of params</span> + <span class="c1"># [SH__ML, SH__SL, GG__ML, GG__SL, OG__ML, OG__SL,</span> + <span class="c1"># OG_OROLSM_SL, OG_acc_SL]</span> + <span class="c1"># pv contains all of the items of the belonging key</span> + <span class="c1"># [param, levtype, levelist, grid]</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pv</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> + <span class="k">continue</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ftype</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ftype</span><span class="p">][</span><span class="s1">'times'</span><span class="p">]</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'step'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">ftype</span><span class="p">][</span><span class="s1">'steps'</span><span class="p">]</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dates</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'stream'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stream</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> <span class="o">=</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">_mk_targetname</span><span class="p">(</span><span class="n">ftype</span><span class="p">,</span> + <span class="n">pk</span><span class="p">,</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'param'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'levtype'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'levelist'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pv</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'grid'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pv</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'area'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">area</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'gaussian'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">gaussian</span> + + <span class="k">if</span> <span class="n">pk</span> <span class="o">==</span> <span class="s1">'OG__SL'</span><span class="p">:</span> + <span class="k">pass</span> + <span class="k">if</span> <span class="n">pk</span> <span class="o">==</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">oro</span><span class="p">:</span> + <span class="n">oro</span> <span class="o">=</span> <span class="kc">True</span> + <span class="c1"># in CERA20C (class EP) there is no stream "OPER"!</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">marsclass</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">'EP'</span><span class="p">:</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'stream'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'OPER'</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'AN'</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'00'</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'step'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'000'</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dates</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mk_targetname</span><span class="p">(</span><span class="s1">''</span><span class="p">,</span> + <span class="n">pk</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">pk</span> <span class="o">==</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span> <span class="n">oro</span><span class="p">:</span> + <span class="k">continue</span> + <span class="k">if</span> <span class="n">pk</span> <span class="o">==</span> <span class="s1">'GG__SL'</span> <span class="ow">and</span> <span class="n">pv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'Q'</span><span class="p">:</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'area'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'gaussian'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'reduced'</span> + + <span class="c1"># ------ on demand path --------------------------------------------------</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> + <span class="c1"># ******* start retrievement</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> + <span class="c1"># ------ operational path ------------------------------------------------</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># check if mars job requests fields beyond basetime.</span> + <span class="c1"># if yes eliminate those fields since they may not</span> + <span class="c1"># be accessible with user's credentials</span> + + <span class="n">enddate</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="n">elimit</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">enddate</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span><span class="p">,</span> + <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="s1">'12'</span><span class="p">:</span> + <span class="c1"># -------------- flux data ----------------------------</span> + <span class="k">if</span> <span class="s1">'acc'</span> <span class="ow">in</span> <span class="n">pk</span><span class="p">:</span> + + <span class="c1"># Strategy:</span> + <span class="c1"># if maxtime-elimit >= 24h reduce date by 1,</span> + <span class="c1"># if 12h <= maxtime-elimit<12h reduce time for last date</span> + <span class="c1"># if maxtime-elimit<12h reduce step for last time</span> + <span class="c1"># A split of the MARS job into 2 is likely necessary.</span> + + + <span class="n">startdate</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">enddate</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">elimit</span> <span class="o">-</span> <span class="n">t24h</span><span class="p">,</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'/'</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">startdate</span><span class="p">,</span> + <span class="s1">'to'</span><span class="p">,</span> + <span class="n">enddate</span><span class="p">])</span> + + <span class="c1"># ******* start retrievement</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> + + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> \ + <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">elimit</span> <span class="o">-</span> <span class="n">t12h</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'00'</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> <span class="o">=</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">_mk_targetname</span><span class="p">(</span><span class="n">ftype</span><span class="p">,</span> <span class="n">pk</span><span class="p">,</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">])</span> + + <span class="c1"># ******* start retrievement</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> + + <span class="c1"># -------------- non flux data ------------------------</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># ******* start retrievement</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> <span class="c1"># basetime = 0</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> \ + <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">elimit</span> <span class="o">-</span> <span class="n">t24h</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> + + <span class="n">timesave</span> <span class="o">=</span> <span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">])</span> + + <span class="k">if</span> <span class="s1">'/'</span> <span class="ow">in</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]:</span> + <span class="n">times</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> + <span class="n">steps</span> <span class="o">=</span> <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'step'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> + <span class="k">while</span> <span class="p">(</span><span class="n">pk</span> <span class="o">!=</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span> + <span class="s1">'acc'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pk</span> <span class="ow">and</span> + <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">times</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="n">steps</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> <span class="o"><=</span> <span class="mi">12</span><span class="p">):</span> + <span class="n">times</span> <span class="o">=</span> <span class="n">times</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">times</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'/'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">times</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="n">times</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + + <span class="c1"># ******* start retrievement</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">pk</span> <span class="o">!=</span> <span class="s1">'OG_OROLSM__SL'</span> <span class="ow">and</span> + <span class="nb">int</span><span class="p">(</span><span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'step'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> + <span class="nb">int</span><span class="p">(</span><span class="n">timesave</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">):</span> + + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">]</span> <span class="o">=</span> \ + <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">elimit</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'time'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'00'</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'step'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'000'</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> <span class="o">=</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">_mk_targetname</span><span class="p">(</span><span class="n">ftype</span><span class="p">,</span> <span class="n">pk</span><span class="p">,</span> + <span class="n">retr_param_dict</span><span class="p">[</span><span class="s1">'date'</span><span class="p">])</span> + + <span class="c1"># ******* start retrievement</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_start_retrievement</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">retr_param_dict</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'MARS retrieve done ... '</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">request</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">'MARS request printed ...'</span><span class="p">)</span> + + <span class="k">return</span></div> + + +<div class="viewcode-block" id="EcFlexpart.write_namelist"><a class="viewcode-back" href="../api.html#EcFlexpart.EcFlexpart.write_namelist">[docs]</a> <span class="k">def</span> <span class="nf">write_namelist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span> + <span class="sd">'''Creates a namelist file in the temporary directory and writes</span> +<span class="sd"> the following values to it: maxl, maxb, mlevel,</span> +<span class="sd"> mlevelist, mnauf, metapar, rlo0, rlo1, rla0, rla1,</span> +<span class="sd"> momega, momegadiff, mgauss, msmooth, meta, metadiff, mdpdeta</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> filename : :obj:`string`</span> +<span class="sd"> Name of the namelist file.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="kn">from</span> <span class="nn">genshi.template.text</span> <span class="k">import</span> <span class="n">NewTextTemplate</span> + <span class="kn">from</span> <span class="nn">genshi.template</span> <span class="k">import</span> <span class="n">TemplateLoader</span> + + <span class="n">loader</span> <span class="o">=</span> <span class="n">TemplateLoader</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">namelist_template</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">TEMPFILE_NAMELIST</span><span class="p">,</span> + <span class="bp">cls</span><span class="o">=</span><span class="n">NewTextTemplate</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span> + <span class="n">area</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">area</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">))</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span> + <span class="n">grid</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">))</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">></span> <span class="n">area</span><span class="p">[</span><span class="mi">3</span><span class="p">]:</span> + <span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-=</span> <span class="mi">360</span> + <span class="n">maxl</span> <span class="o">=</span> <span class="nb">int</span><span class="p">((</span><span class="n">area</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">/</span> <span class="n">grid</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span> + <span class="n">maxb</span> <span class="o">=</span> <span class="nb">int</span><span class="p">((</span><span class="n">area</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">area</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="o">/</span> <span class="n">grid</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span> + + <span class="n">stream</span> <span class="o">=</span> <span class="n">namelist_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">maxl</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">maxl</span><span class="p">),</span> + <span class="n">maxb</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">maxb</span><span class="p">),</span> + <span class="n">mlevel</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">level</span><span class="p">),</span> + <span class="n">mlevelist</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="p">),</span> + <span class="n">mnauf</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resol</span><span class="p">),</span> + <span class="n">metapar</span> <span class="o">=</span> <span class="s1">'77'</span><span class="p">,</span> + <span class="n">rlo0</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> + <span class="n">rlo1</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">3</span><span class="p">]),</span> + <span class="n">rla0</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> + <span class="n">rla1</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">area</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> + <span class="n">momega</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">omega</span><span class="p">),</span> + <span class="n">momegadiff</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">omegadiff</span><span class="p">),</span> + <span class="n">mgauss</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">gauss</span><span class="p">),</span> + <span class="n">msmooth</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">smooth</span><span class="p">),</span> + <span class="n">meta</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">eta</span><span class="p">),</span> + <span class="n">metadiff</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">etadiff</span><span class="p">),</span> + <span class="n">mdpdeta</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dpdeta</span><span class="p">)</span> + <span class="p">)</span> + + <span class="n">namelistfile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="n">_config</span><span class="o">.</span><span class="n">FILE_NAMELIST</span><span class="p">)</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">namelistfile</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">stream</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s1">'text'</span><span class="p">))</span> + + <span class="k">return</span></div> + + +<div class="viewcode-block" id="EcFlexpart.deacc_fluxes"><a class="viewcode-back" href="../api.html#EcFlexpart.EcFlexpart.deacc_fluxes">[docs]</a> <span class="k">def</span> <span class="nf">deacc_fluxes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputfiles</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span> + <span class="sd">'''Goes through all flux fields in ordered time and de-accumulate</span> +<span class="sd"> the fields. Afterwards the fields are disaggregated in time.</span> +<span class="sd"> Different versions of disaggregation is provided for rainfall</span> +<span class="sd"> data (darain, modified linear) and the surface fluxes and</span> +<span class="sd"> stress data (dapoly, cubic polynomial).</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> inputfiles : :obj:`UioFiles`</span> +<span class="sd"> Contains a list of files.</span> + +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="n">table128</span> <span class="o">=</span> <span class="n">init128</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_GRIBTABLE</span><span class="p">)</span> + <span class="n">pars</span> <span class="o">=</span> <span class="n">to_param_id</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s1">'OG_acc_SL'</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">table128</span><span class="p">)</span> + + <span class="n">iid</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">index_vals</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="c1"># get the values of the keys which are used for distinct access</span> + <span class="c1"># of grib messages via product</span> + <span class="n">index_keys</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"date"</span><span class="p">,</span> <span class="s2">"time"</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">]</span> + <span class="n">iid</span><span class="p">,</span> <span class="n">index_vals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mk_index_values</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> + <span class="n">inputfiles</span><span class="p">,</span> + <span class="n">index_keys</span><span class="p">)</span> + <span class="c1"># index_vals looks like e.g.:</span> + <span class="c1"># index_vals[0]: ('20171106', '20171107', '20171108') ; date</span> + <span class="c1"># index_vals[1]: ('0', '1200', '1800', '600') ; time</span> + <span class="c1"># index_vals[2]: ('0', '12', '3', '6', '9') ; stepRange</span> + + <span class="n">valsdict</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">svalsdict</span> <span class="o">=</span> <span class="p">{}</span> +<span class="c1"># stepsdict = {}</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">pars</span><span class="p">:</span> + <span class="n">valsdict</span><span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">p</span><span class="p">)]</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">svalsdict</span><span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">p</span><span class="p">)]</span> <span class="o">=</span> <span class="p">[]</span> +<span class="c1"># stepsdict[str(p)] = []</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'maxstep: '</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span><span class="p">)</span> + + <span class="c1"># "product" genereates each possible combination between the</span> + <span class="c1"># values of the index keys</span> + <span class="k">for</span> <span class="n">prod</span> <span class="ow">in</span> <span class="n">product</span><span class="p">(</span><span class="o">*</span><span class="n">index_vals</span><span class="p">):</span> + <span class="c1"># e.g. prod = ('20170505', '0', '12')</span> + <span class="c1"># ( date ,time, step)</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'current product: '</span><span class="p">,</span> <span class="n">prod</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">index_keys</span><span class="p">)):</span> + <span class="n">grib_index_select</span><span class="p">(</span><span class="n">iid</span><span class="p">,</span> <span class="n">index_keys</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">prod</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + + <span class="c1"># get first id from current product</span> + <span class="n">gid</span> <span class="o">=</span> <span class="n">grib_new_from_index</span><span class="p">(</span><span class="n">iid</span><span class="p">)</span> + + <span class="c1"># if there is no data for this specific time combination / product</span> + <span class="c1"># skip the rest of the for loop and start with next timestep/product</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">gid</span><span class="p">:</span> + <span class="k">continue</span> + + <span class="c1"># create correct timestamp from the three time informations</span> + <span class="n">cdate</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">))</span> + <span class="n">ctime</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{:0>2}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">)</span><span class="o">/</span><span class="mi">100</span><span class="p">)</span> + <span class="n">cstep</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'step'</span><span class="p">))</span> + <span class="n">t_date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">cdate</span> <span class="o">+</span> <span class="n">ctime</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> + <span class="n">t_dt</span> <span class="o">=</span> <span class="n">t_date</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">cstep</span><span class="p">))</span> + <span class="n">t_m1dt</span> <span class="o">=</span> <span class="n">t_date</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">cstep</span><span class="p">)</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> + <span class="n">t_m2dt</span> <span class="o">=</span> <span class="n">t_date</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">cstep</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> + <span class="n">t_enddate</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">12</span><span class="p">:</span> + <span class="n">fnout</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">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> + <span class="n">t_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">.%H'</span><span class="p">)</span> <span class="o">+</span> + <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">)))</span> + <span class="n">gnout</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">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> + <span class="n">t_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">.%H'</span><span class="p">)</span> <span class="o">+</span> + <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">)))</span> + <span class="n">hnout</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">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> + <span class="n">t_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">.%H'</span><span class="p">)</span> <span class="o">+</span> + <span class="s1">'.</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">step</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">fnout</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">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> + <span class="n">t_m2dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">))</span> + <span class="n">gnout</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">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> + <span class="n">t_m1dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">))</span> + <span class="n">hnout</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">inputdir</span><span class="p">,</span> <span class="s1">'flux'</span> <span class="o">+</span> + <span class="n">t_dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">))</span> + + <span class="nb">print</span><span class="p">(</span><span class="s2">"outputfile = "</span> <span class="o">+</span> <span class="n">fnout</span><span class="p">)</span> + + <span class="c1"># read message for message and store relevant data fields</span> + <span class="c1"># data keywords are stored in pars</span> + <span class="k">while</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">gid</span><span class="p">:</span> + <span class="k">break</span> + <span class="n">cparamId</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'paramId'</span><span class="p">))</span> + <span class="n">step</span> <span class="o">=</span> <span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'step'</span><span class="p">)</span> + <span class="n">time</span> <span class="o">=</span> <span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">)</span> + <span class="n">ni</span> <span class="o">=</span> <span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'Ni'</span><span class="p">)</span> + <span class="n">nj</span> <span class="o">=</span> <span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'Nj'</span><span class="p">)</span> + <span class="k">if</span> <span class="n">cparamId</span> <span class="ow">in</span> <span class="n">valsdict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="n">values</span> <span class="o">=</span> <span class="n">grib_get_values</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> + <span class="n">vdp</span> <span class="o">=</span> <span class="n">valsdict</span><span class="p">[</span><span class="n">cparamId</span><span class="p">]</span> + <span class="n">svdp</span> <span class="o">=</span> <span class="n">svalsdict</span><span class="p">[</span><span class="n">cparamId</span><span class="p">]</span> + <span class="c1"># sd = stepsdict[cparamId]</span> + + <span class="k">if</span> <span class="n">cparamId</span> <span class="o">==</span> <span class="s1">'142'</span> <span class="ow">or</span> <span class="n">cparamId</span> <span class="o">==</span> <span class="s1">'143'</span><span class="p">:</span> + <span class="n">fak</span> <span class="o">=</span> <span class="mf">1.</span> <span class="o">/</span> <span class="mf">1000.</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">fak</span> <span class="o">=</span> <span class="mf">3600.</span> + + <span class="n">values</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="p">(</span><span class="n">nj</span><span class="p">,</span> <span class="n">ni</span><span class="p">)))</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span> <span class="o">/</span> <span class="n">fak</span> + <span class="n">vdp</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">values</span><span class="p">[:])</span> <span class="c1"># save the accumulated values</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">marsclass</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'EA'</span> <span class="ow">or</span> \ + <span class="n">step</span> <span class="o"><=</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">):</span> + <span class="n">svdp</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">values</span><span class="p">[:]</span> <span class="o">/</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> <span class="c1"># deaccumulate values</span> + <span class="n">svdp</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">vdp</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">vdp</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">])</span> <span class="o">/</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> + + <span class="nb">print</span><span class="p">(</span><span class="n">cparamId</span><span class="p">,</span> <span class="n">time</span><span class="p">,</span> <span class="n">step</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">values</span><span class="p">),</span> + <span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">values</span><span class="p">))</span> + + <span class="c1"># len(svdp) correspond to the time</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">svdp</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">3</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">svdp</span><span class="p">)</span> <span class="o">></span> <span class="mi">3</span><span class="p">:</span> + <span class="k">if</span> <span class="n">cparamId</span> <span class="o">==</span> <span class="s1">'142'</span> <span class="ow">or</span> <span class="n">cparamId</span> <span class="o">==</span> <span class="s1">'143'</span><span class="p">:</span> + <span class="n">values</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">darain</span><span class="p">(</span><span class="n">svdp</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">values</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">dapoly</span><span class="p">(</span><span class="n">svdp</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">step</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">12</span> \ + <span class="ow">or</span> <span class="n">t_dt</span> <span class="o">==</span> <span class="n">t_enddate</span><span class="p">):</span> + <span class="n">vdp</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">svdp</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">12</span><span class="p">:</span> + <span class="n">values</span> <span class="o">=</span> <span class="n">svdp</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">values</span> <span class="o">=</span> <span class="n">svdp</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + + <span class="n">grib_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">12</span><span class="p">:</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'step'</span><span class="p">,</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">step</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">)))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'step'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> <span class="n">t_m2dt</span><span class="o">.</span><span class="n">hour</span><span class="o">*</span><span class="mi">100</span><span class="p">)</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">t_m2dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)))</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">fnout</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f_handle</span><span class="p">:</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">f_handle</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> + <span class="n">t_enddate</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> + <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">,</span> + <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">t_enddate</span> <span class="o">=</span> <span class="n">t_date</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> + + <span class="c1"># squeeze out information of last two steps contained</span> + <span class="c1"># in svdp</span> + <span class="c1"># if step+int(c.dtime) == c.maxstep and c.maxstep>12</span> + <span class="c1"># or t_dt+timedelta(hours = int(c.dtime))</span> + <span class="c1"># >= t_enddate:</span> + <span class="c1"># Note that svdp[0] has not been popped in this case</span> + + <span class="k">if</span> <span class="n">step</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">12</span> <span class="ow">or</span> \ + <span class="n">t_dt</span> <span class="o">==</span> <span class="n">t_enddate</span><span class="p">:</span> + + <span class="n">values</span> <span class="o">=</span> <span class="n">svdp</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> + <span class="n">grib_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'step'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">truedatetime</span> <span class="o">=</span> <span class="n">t_m2dt</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span> + <span class="mi">2</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> <span class="n">truedatetime</span><span class="o">.</span><span class="n">hour</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="n">truedatetime</span><span class="o">.</span><span class="n">year</span> <span class="o">*</span> <span class="mi">10000</span> <span class="o">+</span> + <span class="n">truedatetime</span><span class="o">.</span><span class="n">month</span> <span class="o">*</span> <span class="mi">100</span> <span class="o">+</span> + <span class="n">truedatetime</span><span class="o">.</span><span class="n">day</span><span class="p">)</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">hnout</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">h_handle</span><span class="p">:</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">h_handle</span><span class="p">)</span> + + <span class="c1">#values = (svdp[1]+svdp[2])/2.</span> + <span class="k">if</span> <span class="n">cparamId</span> <span class="o">==</span> <span class="s1">'142'</span> <span class="ow">or</span> <span class="n">cparamId</span> <span class="o">==</span> <span class="s1">'143'</span><span class="p">:</span> + <span class="n">values</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">darain</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">svdp</span><span class="p">)))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">values</span> <span class="o">=</span> <span class="n">disaggregation</span><span class="o">.</span><span class="n">dapoly</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">svdp</span><span class="p">)))</span> + + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'step'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">truedatetime</span> <span class="o">=</span> <span class="n">t_m2dt</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">dtime</span><span class="p">))</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">,</span> <span class="n">truedatetime</span><span class="o">.</span><span class="n">hour</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">,</span> <span class="n">truedatetime</span><span class="o">.</span><span class="n">year</span> <span class="o">*</span> <span class="mi">10000</span> <span class="o">+</span> + <span class="n">truedatetime</span><span class="o">.</span><span class="n">month</span> <span class="o">*</span> <span class="mi">100</span> <span class="o">+</span> + <span class="n">truedatetime</span><span class="o">.</span><span class="n">day</span><span class="p">)</span> + <span class="n">grib_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">values</span><span class="p">)</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">gnout</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">g_handle</span><span class="p">:</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">g_handle</span><span class="p">)</span> + + <span class="n">grib_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> + + <span class="n">gid</span> <span class="o">=</span> <span class="n">grib_new_from_index</span><span class="p">(</span><span class="n">iid</span><span class="p">)</span> + + <span class="n">grib_index_release</span><span class="p">(</span><span class="n">iid</span><span class="p">)</span> + + <span class="k">return</span></div> + + +<div class="viewcode-block" id="EcFlexpart.create"><a class="viewcode-back" href="../api.html#EcFlexpart.EcFlexpart.create">[docs]</a> <span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputfiles</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span> + <span class="sd">'''An index file will be created which depends on the combination</span> +<span class="sd"> of "date", "time" and "stepRange" values. This is used to iterate</span> +<span class="sd"> over all messages in each grib file which were passed through the</span> +<span class="sd"> parameter "inputfiles" to seperate specific parameters into fort.*</span> +<span class="sd"> files. Afterwards the FORTRAN program is called to convert</span> +<span class="sd"> the data fields all to the same grid and put them in one file</span> +<span class="sd"> per unique time step (combination of "date", "time" and</span> +<span class="sd"> "stepRange").</span> + +<span class="sd"> Note</span> +<span class="sd"> ----</span> +<span class="sd"> This method is based on the ECMWF example index.py</span> +<span class="sd"> https://software.ecmwf.int/wiki/display/GRIB/index.py</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> inputfiles : :obj:`UioFiles`</span> +<span class="sd"> Contains a list of files.</span> + +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> + <span class="n">table128</span> <span class="o">=</span> <span class="n">init128</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_GRIBTABLE</span><span class="p">)</span> + <span class="n">wrfpars</span> <span class="o">=</span> <span class="n">to_param_id</span><span class="p">(</span><span class="s1">'sp/mslp/skt/2t/10u/10v/2d/z/lsm/sst/ci/sd/</span><span class="se">\</span> +<span class="s1"> stl1/stl2/stl3/stl4/swvl1/swvl2/swvl3/swvl4'</span><span class="p">,</span> + <span class="n">table128</span><span class="p">)</span> + + <span class="c1"># these numbers are indices for the temporary files "fort.xx"</span> + <span class="c1"># which are used to seperate the grib fields to,</span> + <span class="c1"># for the Fortran program input</span> + <span class="c1"># 10: U,V | 11: T | 12: lnsp | 13: D | 16: sfc fields</span> + <span class="c1"># 17: Q | 18: Q , gaussian| 19: w | 21: etadot | 22: clwc+ciwc</span> + <span class="n">fdict</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'10'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'11'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'12'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'13'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'16'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> + <span class="s1">'17'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'18'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'19'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'21'</span><span class="p">:</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'22'</span><span class="p">:</span><span class="kc">None</span><span class="p">}</span> + + <span class="n">iid</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">index_vals</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="c1"># get the values of the keys which are used for distinct access</span> + <span class="c1"># of grib messages via product</span> + <span class="n">index_keys</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"date"</span><span class="p">,</span> <span class="s2">"time"</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">]</span> + <span class="n">iid</span><span class="p">,</span> <span class="n">index_vals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mk_index_values</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> + <span class="n">inputfiles</span><span class="p">,</span> + <span class="n">index_keys</span><span class="p">)</span> + <span class="c1"># index_vals looks like e.g.:</span> + <span class="c1"># index_vals[0]: ('20171106', '20171107', '20171108') ; date</span> + <span class="c1"># index_vals[1]: ('0', '1200', '1800', '600') ; time</span> + <span class="c1"># index_vals[2]: ('0', '12', '3', '6', '9') ; stepRange</span> + + <span class="c1"># "product" genereates each possible combination between the</span> + <span class="c1"># values of the index keys</span> + <span class="k">for</span> <span class="n">prod</span> <span class="ow">in</span> <span class="n">product</span><span class="p">(</span><span class="o">*</span><span class="n">index_vals</span><span class="p">):</span> + <span class="c1"># e.g. prod = ('20170505', '0', '12')</span> + <span class="c1"># ( date ,time, step)</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'current product: '</span><span class="p">,</span> <span class="n">prod</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">index_keys</span><span class="p">)):</span> + <span class="n">grib_index_select</span><span class="p">(</span><span class="n">iid</span><span class="p">,</span> <span class="n">index_keys</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">prod</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + + <span class="c1"># get first id from current product</span> + <span class="n">gid</span> <span class="o">=</span> <span class="n">grib_new_from_index</span><span class="p">(</span><span class="n">iid</span><span class="p">)</span> + + <span class="c1"># if there is no data for this specific time combination / product</span> + <span class="c1"># skip the rest of the for loop and start with next timestep/product</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">gid</span><span class="p">:</span> + <span class="k">continue</span> + + <span class="c1"># remove old fort.* files and open new ones</span> + <span class="c1"># they are just valid for a single product</span> + <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">fdict</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> + <span class="n">fortfile</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">inputdir</span><span class="p">,</span> <span class="s1">'fort.'</span> <span class="o">+</span> <span class="n">k</span><span class="p">)</span> + <span class="n">silent_remove</span><span class="p">(</span><span class="n">fortfile</span><span class="p">)</span> + <span class="n">fdict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fortfile</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> + + <span class="c1"># create correct timestamp from the three time informations</span> + <span class="n">cdate</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">))</span> + <span class="n">ctime</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{:0>2}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'time'</span><span class="p">)</span><span class="o">/</span><span class="mi">100</span><span class="p">)</span> + <span class="n">cstep</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{:0>3}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'step'</span><span class="p">))</span> + <span class="n">timestamp</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">cdate</span> <span class="o">+</span> <span class="n">ctime</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> + <span class="n">timestamp</span> <span class="o">+=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">cstep</span><span class="p">))</span> + <span class="n">cdate_hour</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> + + <span class="c1"># if the timestamp is out of basetime start/end date period,</span> + <span class="c1"># skip this specific product</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> + <span class="n">start_time</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">,</span> + <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> <span class="o">-</span> <span class="n">time_delta</span> + <span class="n">end_time</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">,</span> + <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> + <span class="k">if</span> <span class="n">timestamp</span> <span class="o"><</span> <span class="n">start_time</span> <span class="ow">or</span> <span class="n">timestamp</span> <span class="o">></span> <span class="n">end_time</span><span class="p">:</span> + <span class="k">continue</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">'olddate'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">locals</span><span class="p">()</span> <span class="ow">or</span> <span class="n">cdate</span> <span class="o">!=</span> <span class="n">olddate</span><span class="p">:</span> + <span class="n">fwrf</span> <span class="o">=</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">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">,</span> + <span class="s1">'WRF'</span> <span class="o">+</span> <span class="n">cdate</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="n">ctime</span> <span class="o">+</span> <span class="s1">'.000.grb2'</span><span class="p">),</span> <span class="s1">'w'</span><span class="p">)</span> + <span class="n">olddate</span> <span class="o">=</span> <span class="n">cdate</span><span class="p">[:]</span> + + <span class="c1"># savedfields remembers which fields were already used.</span> + <span class="n">savedfields</span> <span class="o">=</span> <span class="p">[]</span> + <span class="c1"># sum of cloud liquid and ice water content</span> + <span class="n">scwc</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">while</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">gid</span><span class="p">:</span> + <span class="k">break</span> + <span class="n">paramId</span> <span class="o">=</span> <span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'paramId'</span><span class="p">)</span> + <span class="n">gridtype</span> <span class="o">=</span> <span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'gridType'</span><span class="p">)</span> + <span class="n">levtype</span> <span class="o">=</span> <span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'typeOfLevel'</span><span class="p">)</span> + <span class="k">if</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">77</span><span class="p">:</span> <span class="c1"># ETADOT</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'21'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">130</span><span class="p">:</span> <span class="c1"># T</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'11'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">131</span> <span class="ow">or</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">132</span><span class="p">:</span> <span class="c1"># U, V wind component</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'10'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">133</span> <span class="ow">and</span> <span class="n">gridtype</span> <span class="o">!=</span> <span class="s1">'reduced_gg'</span><span class="p">:</span> <span class="c1"># Q</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'17'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">133</span> <span class="ow">and</span> <span class="n">gridtype</span> <span class="o">==</span> <span class="s1">'reduced_gg'</span><span class="p">:</span> <span class="c1"># Q, gaussian</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'18'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">135</span><span class="p">:</span> <span class="c1"># W</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'19'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">152</span><span class="p">:</span> <span class="c1"># LNSP</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'12'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">155</span> <span class="ow">and</span> <span class="n">gridtype</span> <span class="o">==</span> <span class="s1">'sh'</span><span class="p">:</span> <span class="c1"># D</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'13'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">246</span> <span class="ow">or</span> <span class="n">paramId</span> <span class="o">==</span> <span class="mi">247</span><span class="p">:</span> <span class="c1"># CLWC, CIWC</span> + <span class="c1"># sum cloud liquid water and ice</span> + <span class="k">if</span> <span class="n">scwc</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">scwc</span> <span class="o">=</span> <span class="n">grib_get_values</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">scwc</span> <span class="o">+=</span> <span class="n">grib_get_values</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> + <span class="n">grib_set_values</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">scwc</span><span class="p">)</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="s1">'paramId'</span><span class="p">,</span> <span class="mi">201031</span><span class="p">)</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'22'</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span> <span class="ow">and</span> <span class="n">paramId</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">129</span><span class="p">,</span> <span class="mi">138</span><span class="p">,</span> <span class="mi">155</span><span class="p">]</span> <span class="ow">and</span> \ + <span class="n">levtype</span> <span class="o">==</span> <span class="s1">'hybrid'</span><span class="p">:</span> <span class="c1"># Z, VO, D</span> + <span class="c1"># do not do anything right now</span> + <span class="c1"># these are specific parameter for WRF</span> + <span class="k">pass</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">paramId</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">savedfields</span><span class="p">:</span> + <span class="c1"># SD/MSL/TCC/10U/10V/2T/2D/Z/LSM/SDOR/CVL/CVH/SR</span> + <span class="c1"># and all ADDPAR parameter</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fdict</span><span class="p">[</span><span class="s1">'16'</span><span class="p">])</span> + <span class="n">savedfields</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">paramId</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'duplicate '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">paramId</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' not written'</span><span class="p">)</span> + + <span class="k">try</span><span class="p">:</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> + <span class="c1"># model layer</span> + <span class="k">if</span> <span class="n">levtype</span> <span class="o">==</span> <span class="s1">'hybrid'</span> <span class="ow">and</span> \ + <span class="n">paramId</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">129</span><span class="p">,</span> <span class="mi">130</span><span class="p">,</span> <span class="mi">131</span><span class="p">,</span> <span class="mi">132</span><span class="p">,</span> <span class="mi">133</span><span class="p">,</span> <span class="mi">138</span><span class="p">,</span> <span class="mi">155</span><span class="p">]:</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fwrf</span><span class="p">)</span> + <span class="c1"># sfc layer</span> + <span class="k">elif</span> <span class="n">paramId</span> <span class="ow">in</span> <span class="n">wrfpars</span><span class="p">:</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fwrf</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span> + <span class="k">pass</span> + + <span class="n">grib_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> + <span class="n">gid</span> <span class="o">=</span> <span class="n">grib_new_from_index</span><span class="p">(</span><span class="n">iid</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">fdict</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> + <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + <span class="c1"># call for Fortran program to convert e.g. reduced_gg grids to</span> + <span class="c1"># regular_ll and calculate detadot/dp</span> + <span class="n">pwd</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</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">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="s1">'fort.21'</span><span class="p">)</span><span class="o">.</span><span class="n">st_size</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">eta</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Parameter 77 (etadot) is missing, most likely it is </span><span class="se">\</span> +<span class="s1"> not available for this type or date/time</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Check parameters CLASS, TYPE, STREAM, START_DATE</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="n">my_error</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'fort.21 is empty while parameter eta </span><span class="se">\</span> +<span class="s1"> is set to 1 in CONTROL file'</span><span class="p">)</span> + + <span class="c1"># Fortran program creates file fort.15 (with u,v,etadot,t,sp,q)</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</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">exedir</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">shell</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">pwd</span><span class="p">)</span> + + <span class="c1"># create name of final output file, e.g. EN13040500 (ENYYMMDDHH)</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">12</span><span class="p">:</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="n">cdate</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">8</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="n">ctime</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="n">cstep</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="n">cdate_hour</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">10</span><span class="p">]</span> + <span class="n">fnout</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">inputdir</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">suffix</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"outputfile = "</span> <span class="o">+</span> <span class="n">fnout</span><span class="p">)</span> + <span class="c1"># collect for final processing</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="o">.</span><span class="n">append</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">basename</span><span class="p">(</span><span class="n">fnout</span><span class="p">))</span> + + <span class="c1"># create outputfile and copy all data from intermediate files</span> + <span class="c1"># to the outputfile (final GRIB input files for FLEXPART)</span> + <span class="n">orolsm</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">basename</span><span class="p">(</span><span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span> <span class="o">+</span> + <span class="s1">'/OG_OROLSM__SL.*.'</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">ppid</span> <span class="o">+</span> <span class="s1">'*'</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> + <span class="n">fluxfile</span> <span class="o">=</span> <span class="s1">'flux'</span> <span class="o">+</span> <span class="n">cdate</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">suffix</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">cwc</span><span class="p">:</span> + <span class="n">flist</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'fort.15'</span><span class="p">,</span> <span class="n">fluxfile</span><span class="p">,</span> <span class="s1">'fort.16'</span><span class="p">,</span> <span class="n">orolsm</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">flist</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'fort.15'</span><span class="p">,</span> <span class="s1">'fort.22'</span><span class="p">,</span> <span class="n">fluxfile</span><span class="p">,</span> <span class="s1">'fort.16'</span><span class="p">,</span> <span class="n">orolsm</span><span class="p">]</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">fnout</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fout</span><span class="p">:</span> + <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">flist</span><span class="p">:</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">copyfileobj</span><span class="p">(</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">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="n">f</span><span class="p">),</span> <span class="s1">'rb'</span><span class="p">),</span> + <span class="n">fout</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">omega</span><span class="p">:</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">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">,</span> <span class="s1">'OMEGA'</span><span class="p">),</span> <span class="s1">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fout</span><span class="p">:</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">copyfileobj</span><span class="p">(</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">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'fort.25'</span><span class="p">),</span> + <span class="s1">'rb'</span><span class="p">),</span> <span class="n">fout</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">wrf</span><span class="p">:</span> + <span class="n">fwrf</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + <span class="n">grib_index_release</span><span class="p">(</span><span class="n">iid</span><span class="p">)</span> + + <span class="k">return</span></div> + + +<div class="viewcode-block" id="EcFlexpart.process_output"><a class="viewcode-back" href="../api.html#EcFlexpart.EcFlexpart.process_output">[docs]</a> <span class="k">def</span> <span class="nf">process_output</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span> + <span class="sd">'''The grib files are postprocessed depending on the selection in</span> +<span class="sd"> CONTROL file. The resulting files are moved to the output</span> +<span class="sd"> directory if its not equal to the input directory.</span> +<span class="sd"> The following modifications might be done if</span> +<span class="sd"> properly switched in CONTROL file:</span> +<span class="sd"> GRIB2 - Conversion to GRIB2</span> +<span class="sd"> ECTRANS - Transfer of files to gateway server</span> +<span class="sd"> ECSTORAGE - Storage at ECMWF server</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n\n</span><span class="s1">Postprocessing:</span><span class="se">\n</span><span class="s1"> Format: </span><span class="si">{}</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">format</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">ecapi</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'ecstorage: </span><span class="si">{}</span><span class="se">\n</span><span class="s1"> ecfsdir: </span><span class="si">{}</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span> + <span class="nb">format</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecstorage</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecfsdir</span><span class="p">))</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'ectrans: </span><span class="si">{}</span><span class="se">\n</span><span class="s1"> gateway: </span><span class="si">{}</span><span class="se">\n</span><span class="s1"> destination: </span><span class="si">{}</span><span class="se">\n</span><span class="s1"> '</span> + <span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ectrans</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">gateway</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">destination</span><span class="p">))</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'Output filelist: '</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">ofile</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="p">:</span> + <span class="n">ofile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="n">ofile</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">format</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'grib2'</span><span class="p">:</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">'grib_set'</span><span class="p">,</span> <span class="s1">'-s'</span><span class="p">,</span> <span class="s1">'edition=2, </span><span class="se">\</span> +<span class="s1"> productDefinitionTemplateNumber=8'</span><span class="p">,</span> + <span class="n">ofile</span><span class="p">,</span> <span class="n">ofile</span> <span class="o">+</span> <span class="s1">'_2'</span><span class="p">])</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">'mv'</span><span class="p">,</span> <span class="n">ofile</span> <span class="o">+</span> <span class="s1">'_2'</span><span class="p">,</span> <span class="n">ofile</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ectrans</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">:</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">'ectrans'</span><span class="p">,</span> <span class="s1">'-overwrite'</span><span class="p">,</span> <span class="s1">'-gateway'</span><span class="p">,</span> + <span class="n">c</span><span class="o">.</span><span class="n">gateway</span><span class="p">,</span> <span class="s1">'-remote'</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> + <span class="s1">'-source'</span><span class="p">,</span> <span class="n">ofile</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ecstorage</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">:</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">'ecp'</span><span class="p">,</span> <span class="s1">'-o'</span><span class="p">,</span> <span class="n">ofile</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">c</span><span class="o">.</span><span class="n">ecfsdir</span><span class="p">)])</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">outputdir</span> <span class="o">!=</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">:</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">'mv'</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">inputdir</span><span class="p">,</span> <span class="n">ofile</span><span class="p">),</span> + <span class="n">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">])</span> + + <span class="k">return</span></div> + + +<div class="viewcode-block" id="EcFlexpart.prepare_fp_files"><a class="viewcode-back" href="../api.html#EcFlexpart.EcFlexpart.prepare_fp_files">[docs]</a> <span class="k">def</span> <span class="nf">prepare_fp_files</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span> + <span class="sd">'''Conversion of GRIB files to FLEXPART binary format.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="c1"># generate AVAILABLE file</span> + <span class="c1"># Example of AVAILABLE file data:</span> + <span class="c1"># 20131107 000000 EN13110700 ON DISC</span> + <span class="n">clist</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">ofile</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">outputfilelist</span><span class="p">:</span> + <span class="n">fname</span> <span class="o">=</span> <span class="n">ofile</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> + <span class="k">if</span> <span class="s1">'.'</span> <span class="ow">in</span> <span class="n">fname</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span> + <span class="n">l</span> <span class="o">=</span> <span class="n">fname</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)</span> + <span class="n">timestamp</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="o">-</span><span class="mi">6</span><span class="p">:]</span> <span class="o">+</span> <span class="n">l</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> + <span class="s1">'%y%m</span><span class="si">%d</span><span class="s1">%H'</span><span class="p">)</span> + <span class="n">timestamp</span> <span class="o">+=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span> + <span class="n">cdate</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> + <span class="n">chms</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="s1">'%H%M%S'</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">cdate</span> <span class="o">=</span> <span class="s1">'20'</span> <span class="o">+</span> <span class="n">fname</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">8</span><span class="p">:</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> + <span class="n">chms</span> <span class="o">=</span> <span class="n">fname</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">2</span><span class="p">:]</span> <span class="o">+</span> <span class="s1">'0000'</span> + <span class="n">clist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cdate</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">chms</span> <span class="o">+</span> <span class="s1">' '</span><span class="o">*</span><span class="mi">6</span> <span class="o">+</span> + <span class="n">fname</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span><span class="o">*</span><span class="mi">14</span> <span class="o">+</span> <span class="s1">'ON DISC'</span><span class="p">)</span> + <span class="n">clist</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">outputdir</span> <span class="o">+</span> <span class="s1">'/'</span> <span class="o">+</span> <span class="s1">'AVAILABLE'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">clist</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="c1"># generate pathnames file</span> + <span class="n">pwd</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">outputdir</span><span class="p">)</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">pwd</span> <span class="o">+</span> <span class="s1">'/pathnames'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">pwd</span> <span class="o">+</span> <span class="s1">'/Options/</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">pwd</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">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">pwd</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">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">pwd</span> <span class="o">+</span> <span class="s1">'/AVAILABLE</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">' = == = == = == = == = == == = </span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="c1"># create Options dir if necessary</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">pwd</span> <span class="o">+</span> <span class="s1">'/Options'</span><span class="p">):</span> + <span class="n">make_dir</span><span class="p">(</span><span class="n">pwd</span><span class="o">+</span><span class="s1">'/Options'</span><span class="p">)</span> + + <span class="c1"># read template COMMAND file</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">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">flexpart_root_scripts</span><span class="p">))</span> <span class="o">+</span> <span class="s1">'/../Options/COMMAND'</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">lflist</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="c1"># find index of list where to put in the</span> + <span class="c1"># date and time information</span> + <span class="c1"># usually after the LDIRECT parameter</span> + <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">lflist</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">'LDIRECT'</span> <span class="ow">in</span> <span class="n">l</span><span class="o">.</span><span class="n">upper</span><span class="p">():</span> + <span class="k">break</span> + <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="c1"># insert the date and time information of run start and end</span> + <span class="c1"># into the list of lines of COMMAND file</span> + <span class="n">lflist</span> <span class="o">=</span> <span class="n">lflist</span><span class="p">[:</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> \ + <span class="p">[</span><span class="n">clist</span><span class="p">[</span><span class="mi">0</span><span class="p">][:</span><span class="mi">16</span><span class="p">],</span> <span class="n">clist</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][:</span><span class="mi">16</span><span class="p">]]</span> <span class="o">+</span> \ + <span class="n">lflist</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">3</span><span class="p">:]</span> + + <span class="c1"># write the new COMMAND file</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">pwd</span> <span class="o">+</span> <span class="s1">'/Options/COMMAND'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">g</span><span class="p">:</span> + <span class="n">g</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lflist</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="c1"># change to outputdir and start the grib2flexpart run</span> + <span class="c1"># afterwards switch back to the working dir</span> + <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">)</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</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">flexpart_root_scripts</span><span class="p">))</span> + <span class="o">+</span> <span class="s1">'/../FLEXPART_PROGRAM/grib2flexpart'</span><span class="p">,</span> <span class="s1">'useAvailable'</span><span class="p">,</span> <span class="s1">'.'</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">pwd</span><span class="p">)</span> + + <span class="k">return</span></div></div> +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/GribTools.html b/documentation/Sphinx/build/html/_modules/GribTools.html new file mode 100644 index 0000000000000000000000000000000000000000..bd21ed579cd171907858bc4ac8169481e273a40a --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/GribTools.html @@ -0,0 +1,535 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>GribTools — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>GribTools</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for GribTools</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Anne Fouilloux (University of Oslo)</span> +<span class="c1">#</span> +<span class="c1"># @Date: July 2014</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added documentation</span> +<span class="c1"># - changed some naming</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2014-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Class Description:</span> +<span class="c1"># The GRIB API provides all necessary tools to work directly with the</span> +<span class="c1"># grib files. Nevertheless, the GRIB API tools are very basic and are in</span> +<span class="c1"># direct connection with the grib files. This class provides some higher</span> +<span class="c1"># functions which apply a set of GRIB API tools together in the respective</span> +<span class="c1"># context. So, the class initially contains a list of grib files (their</span> +<span class="c1"># names) and the using program then applies the methods directly on the</span> +<span class="c1"># class objects without having to think about how the actual GRIB API</span> +<span class="c1"># tools have to be arranged.</span> +<span class="c1">#</span> +<span class="c1"># @Class Content:</span> +<span class="c1"># - __init__</span> +<span class="c1"># - get_keys</span> +<span class="c1"># - set_keys</span> +<span class="c1"># - copy</span> +<span class="c1"># - index</span> +<span class="c1">#</span> +<span class="c1"># @Class Attributes:</span> +<span class="c1"># - filenames</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">from</span> <span class="nn">gribapi</span> <span class="k">import</span> <span class="n">grib_new_from_file</span><span class="p">,</span> <span class="n">grib_is_defined</span><span class="p">,</span> <span class="n">grib_get</span><span class="p">,</span> \ + <span class="n">grib_release</span><span class="p">,</span> <span class="n">grib_set</span><span class="p">,</span> <span class="n">grib_write</span><span class="p">,</span> <span class="n">grib_index_read</span><span class="p">,</span> \ + <span class="n">grib_index_new_from_file</span><span class="p">,</span> <span class="n">grib_index_add_file</span><span class="p">,</span> \ + <span class="n">grib_index_write</span> + + +<span class="c1"># from eccodes import (codes_grib_new_from_file, codes_is_defined, codes_get,</span> + <span class="c1"># codes_release, codes_set, codes_write, codes_index_read,</span> + <span class="c1"># codes_index_new_from_file, codes_index_add_file,</span> + <span class="c1"># codes_index_write)</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># CLASS</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<div class="viewcode-block" id="GribTools"><a class="viewcode-back" href="../api.html#GribTools.GribTools">[docs]</a><span class="k">class</span> <span class="nc">GribTools</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + <span class="sd">'''</span> +<span class="sd"> Class for GRIB utilities (new methods) based on GRIB API</span> +<span class="sd"> '''</span> + <span class="c1"># --------------------------------------------------------------------------</span> + <span class="c1"># CLASS FUNCTIONS</span> + <span class="c1"># --------------------------------------------------------------------------</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filenames</span><span class="p">):</span> + <span class="sd">'''Initialise an object of GribTools and assign a list of filenames.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> filenames : :obj:`list` of :obj:`strings`</span> +<span class="sd"> A list of filenames.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">filenames</span> <span class="o">=</span> <span class="n">filenames</span> + + <span class="k">return</span> + + +<div class="viewcode-block" id="GribTools.get_keys"><a class="viewcode-back" href="../api.html#GribTools.GribTools.get_keys">[docs]</a> <span class="k">def</span> <span class="nf">get_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keynames</span><span class="p">,</span> <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[],</span> <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[]):</span> + <span class="sd">'''Get keyvalues for a given list of keynames a where statement</span> +<span class="sd"> can be given (list of key and list of values)</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> keynames : :obj:`list` of :obj:`string`</span> +<span class="sd"> List of keynames.</span> + +<span class="sd"> wherekeynames : :obj:`list` of :obj:`string`, optional</span> +<span class="sd"> Default value is an empty list.</span> + +<span class="sd"> wherekeyvalues : :obj:`list` of :obj:`string`, optional</span> +<span class="sd"> Default value is an empty list.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> return_list : :obj:`list` of :obj:`string`</span> +<span class="sd"> List of keyvalues for given keynames.</span> +<span class="sd"> '''</span> + + <span class="n">fileid</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filenames</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> + + <span class="n">return_list</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">while</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">gid</span> <span class="o">=</span> <span class="n">grib_new_from_file</span><span class="p">(</span><span class="n">fileid</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">gid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">break</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">wherekeynames</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">wherekeyvalues</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Number of key values and key names must be </span><span class="se">\</span> +<span class="s2"> the same. Give a value for each keyname!"</span><span class="p">)</span> + + <span class="n">select</span> <span class="o">=</span> <span class="kc">True</span> + <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">wherekey</span> <span class="ow">in</span> <span class="n">wherekeynames</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">grib_is_defined</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">wherekey</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"where key was not defined"</span><span class="p">)</span> + + <span class="n">select</span> <span class="o">=</span> <span class="p">(</span><span class="n">select</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">wherekeyvalues</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">==</span> + <span class="nb">str</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">wherekey</span><span class="p">))))</span> + <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="k">if</span> <span class="n">select</span><span class="p">:</span> + <span class="n">llist</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keynames</span><span class="p">:</span> + <span class="n">llist</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">key</span><span class="p">))])</span> + <span class="n">return_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">llist</span><span class="p">)</span> + + <span class="n">grib_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> + + <span class="n">fileid</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">return_list</span></div> + + +<div class="viewcode-block" id="GribTools.set_keys"><a class="viewcode-back" href="../api.html#GribTools.GribTools.set_keys">[docs]</a> <span class="k">def</span> <span class="nf">set_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fromfile</span><span class="p">,</span> <span class="n">keynames</span><span class="p">,</span> <span class="n">keyvalues</span><span class="p">,</span> <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[],</span> + <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[],</span> <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'w'</span><span class="p">):</span> + <span class="sd">'''Opens the file to read the grib messages and then write</span> +<span class="sd"> them to a new output file. By default all messages are</span> +<span class="sd"> written out. Also, the keyvalues of the passed list of</span> +<span class="sd"> keynames are set or only those meeting the where statement.</span> +<span class="sd"> (list of key and list of values).</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> fromfile : :obj:`string`</span> +<span class="sd"> Filename of the input file to read the grib messages from.</span> + +<span class="sd"> keynames : :obj:`list` of :obj:`string`</span> +<span class="sd"> List of keynames. Default is an empty list.</span> + +<span class="sd"> keyvalues : :obj:`list` of :obj:`string`</span> +<span class="sd"> List of keynames. Default is an empty list.</span> + +<span class="sd"> wherekeynames : :obj:`list` of :obj:`string`, optional</span> +<span class="sd"> Default value is an empty list.</span> + +<span class="sd"> wherekeyvalues : :obj:`list` of :obj:`string`, optional</span> +<span class="sd"> Default value is an empty list.</span> + +<span class="sd"> strict : :obj:`boolean`, optional</span> +<span class="sd"> Decides if everything from keynames and keyvalues</span> +<span class="sd"> is written out the grib file (False) or only those</span> +<span class="sd"> meeting the where statement (True). Default is False.</span> + +<span class="sd"> filemode : :obj:`string`, optional</span> +<span class="sd"> Sets the mode for the output file. Default is "w".</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="n">fout</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filenames</span><span class="p">,</span> <span class="n">filemode</span><span class="p">)</span> + <span class="n">fin</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fromfile</span><span class="p">)</span> + + <span class="k">while</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">gid</span> <span class="o">=</span> <span class="n">grib_new_from_file</span><span class="p">(</span><span class="n">fin</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">gid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">break</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">wherekeynames</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">wherekeyvalues</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Give a value for each keyname!"</span><span class="p">)</span> + + <span class="n">select</span> <span class="o">=</span> <span class="kc">True</span> + <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">wherekey</span> <span class="ow">in</span> <span class="n">wherekeynames</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">grib_is_defined</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">wherekey</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"where Key was not defined"</span><span class="p">)</span> + + <span class="n">select</span> <span class="o">=</span> <span class="p">(</span><span class="n">select</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">wherekeyvalues</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">==</span> + <span class="nb">str</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">wherekey</span><span class="p">))))</span> + <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="k">if</span> <span class="n">select</span><span class="p">:</span> + <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keynames</span><span class="p">:</span> + <span class="n">grib_set</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">keyvalues</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fout</span><span class="p">)</span> + + <span class="n">grib_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> + + <span class="n">fin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + <span class="n">fout</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="GribTools.copy"><a class="viewcode-back" href="../api.html#GribTools.GribTools.copy">[docs]</a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename_in</span><span class="p">,</span> <span class="n">selectWhere</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">keynames</span><span class="o">=</span><span class="p">[],</span> <span class="n">keyvalues</span><span class="o">=</span><span class="p">[],</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'w'</span><span class="p">):</span> + <span class="sd">'''Add the content of another input grib file to the objects file but</span> +<span class="sd"> only messages corresponding to keys/values passed to the function.</span> +<span class="sd"> The selectWhere switch decides if to copy the keys equal to (True) or</span> +<span class="sd"> different to (False) the keynames/keyvalues list passed to the function.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> filename_in : :obj:`string`</span> +<span class="sd"> Filename of the input file to read the grib messages from.</span> + +<span class="sd"> selectWhere : :obj:`boolean`, optional</span> +<span class="sd"> Decides if to copy the keynames and values equal to (True) or</span> +<span class="sd"> different to (False) the keynames/keyvalues list passed to the</span> +<span class="sd"> function. Default is True.</span> + +<span class="sd"> keynames : :obj:`list` of :obj:`string`, optional</span> +<span class="sd"> List of keynames. Default is an empty list.</span> + +<span class="sd"> keyvalues : :obj:`list` of :obj:`string`, optional</span> +<span class="sd"> List of keynames. Default is an empty list.</span> + +<span class="sd"> filemode : :obj:`string`, optional</span> +<span class="sd"> Sets the mode for the output file. Default is "w".</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="n">fin</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename_in</span><span class="p">)</span> + <span class="n">fout</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filenames</span><span class="p">,</span> <span class="n">filemode</span><span class="p">)</span> + + <span class="k">while</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">gid</span> <span class="o">=</span> <span class="n">grib_new_from_file</span><span class="p">(</span><span class="n">fin</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">gid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">break</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keynames</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">keyvalues</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Give a value for each keyname!"</span><span class="p">)</span> + + <span class="n">select</span> <span class="o">=</span> <span class="kc">True</span> + <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keynames</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">grib_is_defined</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Key was not defined"</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">selectWhere</span><span class="p">:</span> + <span class="n">select</span> <span class="o">=</span> <span class="p">(</span><span class="n">select</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">keyvalues</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">==</span> + <span class="nb">str</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">key</span><span class="p">))))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">select</span> <span class="o">=</span> <span class="p">(</span><span class="n">select</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">keyvalues</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">!=</span> + <span class="nb">str</span><span class="p">(</span><span class="n">grib_get</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">key</span><span class="p">))))</span> + <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="k">if</span> <span class="n">select</span><span class="p">:</span> + <span class="n">grib_write</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">fout</span><span class="p">)</span> + + <span class="n">grib_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> + + <span class="n">fin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + <span class="n">fout</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="GribTools.index"><a class="viewcode-back" href="../api.html#GribTools.GribTools.index">[docs]</a> <span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"mars"</span><span class="p">],</span> <span class="n">index_file</span><span class="o">=</span><span class="s2">"my.idx"</span><span class="p">):</span> + <span class="sd">'''Create index file from a list of files if it does not exist or</span> +<span class="sd"> read an index file.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> index_keys: :obj:`list` of :obj:`string`, optional</span> +<span class="sd"> Contains the list of key parameter names from</span> +<span class="sd"> which the index is to be created.</span> +<span class="sd"> Default is a list with a single entry string "mars".</span> + +<span class="sd"> index_file: :obj:`string`, optional</span> +<span class="sd"> Filename where the indices are stored.</span> +<span class="sd"> Default is "my.idx".</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> iid: :obj:`integer`</span> +<span class="sd"> Grib index id.</span> +<span class="sd"> '''</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"... index will be done"</span><span class="p">)</span> + <span class="n">iid</span> <span class="o">=</span> <span class="kc">None</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">exists</span><span class="p">(</span><span class="n">index_file</span><span class="p">):</span> + <span class="n">iid</span> <span class="o">=</span> <span class="n">grib_index_read</span><span class="p">(</span><span class="n">index_file</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"Use existing index file: </span><span class="si">%s</span><span class="s2"> "</span> <span class="o">%</span> <span class="p">(</span><span class="n">index_file</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">filenames</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"Inputfile: </span><span class="si">%s</span><span class="s2"> "</span> <span class="o">%</span> <span class="p">(</span><span class="n">filename</span><span class="p">))</span> + <span class="k">if</span> <span class="n">iid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">iid</span> <span class="o">=</span> <span class="n">grib_index_new_from_file</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">index_keys</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">grib_index_add_file</span><span class="p">(</span><span class="n">iid</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">iid</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">grib_index_write</span><span class="p">(</span><span class="n">iid</span><span class="p">,</span> <span class="n">index_file</span><span class="p">)</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'... index done'</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">iid</span></div></div> +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/MarsRetrieval.html b/documentation/Sphinx/build/html/_modules/MarsRetrieval.html new file mode 100644 index 0000000000000000000000000000000000000000..028e1635ac4fddab8e69aa54d3c5963b134c86c9 --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/MarsRetrieval.html @@ -0,0 +1,716 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>MarsRetrieval — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>MarsRetrieval</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for MarsRetrieval</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Anne Fouilloux (University of Oslo)</span> +<span class="c1">#</span> +<span class="c1"># @Date: October 2014</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1">#</span> +<span class="c1"># November 2015 - Leopold Haimberger (University of Vienna):</span> +<span class="c1"># - optimized display_info</span> +<span class="c1"># - optimized data_retrieve and seperate between python and shell</span> +<span class="c1"># script call</span> +<span class="c1">#</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added documentation</span> +<span class="c1"># - applied some minor modifications in programming style/structure</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2015-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Class Description:</span> +<span class="c1"># A MARS revtrieval has a specific syntax with a selection of keywords and</span> +<span class="c1"># their corresponding values. This class provides the necessary functions</span> +<span class="c1"># by displaying the selected parameters and their values and the actual</span> +<span class="c1"># retrievement of the data through a mars request or a Python web api</span> +<span class="c1"># interface. The initialization already expects all the keyword values.</span> +<span class="c1">#</span> +<span class="c1"># @Class Content:</span> +<span class="c1"># - __init__</span> +<span class="c1"># - display_info</span> +<span class="c1"># - data_retrieve</span> +<span class="c1">#</span> +<span class="c1"># @Class Attributes:</span> +<span class="c1"># - server</span> +<span class="c1"># - marsclass</span> +<span class="c1"># - dtype</span> +<span class="c1"># - levtype</span> +<span class="c1"># - levelist</span> +<span class="c1"># - repres</span> +<span class="c1"># - date</span> +<span class="c1"># - resol</span> +<span class="c1"># - stream</span> +<span class="c1"># - area</span> +<span class="c1"># - time</span> +<span class="c1"># - step</span> +<span class="c1"># - expver</span> +<span class="c1"># - number</span> +<span class="c1"># - accuracy</span> +<span class="c1"># - grid</span> +<span class="c1"># - gaussian</span> +<span class="c1"># - target</span> +<span class="c1"># - param</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">subprocess</span> + +<span class="c1"># software specific classes and modules from flex_extract</span> +<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../'</span><span class="p">)</span> +<span class="kn">import</span> <span class="nn">_config</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># CLASS</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<div class="viewcode-block" id="MarsRetrieval"><a class="viewcode-back" href="../api.html#MarsRetrieval.MarsRetrieval">[docs]</a><span class="k">class</span> <span class="nc">MarsRetrieval</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + <span class="sd">'''Class for submitting MARS retrievals.</span> + +<span class="sd"> A description of MARS keywords/arguments and examples of their</span> +<span class="sd"> values can be found here:</span> +<span class="sd"> https://software.ecmwf.int/wiki/display/UDOC/\</span> +<span class="sd"> Identification+keywords#Identificationkeywords-class</span> +<span class="sd"> '''</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">public</span><span class="p">,</span> <span class="n">marsclass</span><span class="o">=</span><span class="s2">"ei"</span><span class="p">,</span> <span class="n">dataset</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> + <span class="n">levtype</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">levelist</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">repres</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">date</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">resol</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> + <span class="n">stream</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">area</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">time</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">expver</span><span class="o">=</span><span class="s2">"1"</span><span class="p">,</span> + <span class="n">number</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">accuracy</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">grid</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">gaussian</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> + <span class="n">param</span><span class="o">=</span><span class="s2">""</span><span class="p">):</span> + <span class="sd">'''Initialises the instance of the MarsRetrieval class and</span> +<span class="sd"> defines and assigns a set of the necessary retrieval parameters</span> +<span class="sd"> for the FLEXPART input data.</span> +<span class="sd"> A description of MARS keywords/arguments, their dependencies</span> +<span class="sd"> on each other and examples of their values can be found here:</span> + +<span class="sd"> https://software.ecmwf.int/wiki/display/UDOC/MARS+keywords</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> server : :obj:`ECMWFService`</span> +<span class="sd"> This is the connection to the ECMWF data servers.</span> +<span class="sd"> It is needed for the pythonic access of ECMWF data.</span> + +<span class="sd"> public : :obj:`integer`</span> +<span class="sd"> Decides which Web API version is used:</span> +<span class="sd"> 0: member-state users and full archive access</span> +<span class="sd"> 1: public access and limited access to the public server and</span> +<span class="sd"> datasets. Needs the parameter dataset.</span> +<span class="sd"> Default is "0" and for member-state users.</span> + +<span class="sd"> marsclass : :obj:`string`, optional</span> +<span class="sd"> Characterisation of dataset. E.g. EI (ERA-Interim),</span> +<span class="sd"> E4 (ERA40), OD (Operational archive), ea (ERA5).</span> +<span class="sd"> Default is the ERA-Interim dataset "ei".</span> + +<span class="sd"> dataset : :obj:`string`, optional</span> +<span class="sd"> For public datasets there is the specific naming and parameter</span> +<span class="sd"> dataset which has to be used to characterize the type of</span> +<span class="sd"> data. Usually there is less data available, either in times,</span> +<span class="sd"> domain or parameter.</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> type : :obj:`string`, optional</span> +<span class="sd"> Determines the type of fields to be retrieved.</span> +<span class="sd"> Selects between observations, images or fields.</span> +<span class="sd"> Examples for fields: Analysis (an), Forecast (fc),</span> +<span class="sd"> Perturbed Forecast (pf), Control Forecast (cf) and so on.</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> levtype : :obj:`string`, optional</span> +<span class="sd"> Denotes type of level. Has a direct implication on valid</span> +<span class="sd"> levelist values!</span> +<span class="sd"> E.g. model level (ml), pressure level (pl), surface (sfc),</span> +<span class="sd"> potential vorticity (pv), potential temperature (pt)</span> +<span class="sd"> and depth (dp).</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> levelist : :obj:`string`, optional</span> +<span class="sd"> Specifies the required levels. It has to have a valid</span> +<span class="sd"> correspondence to the selected levtype.</span> +<span class="sd"> Examples: model level: 1/to/137, pressure levels: 500/to/1000</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> repres : :obj:`string`, optional</span> +<span class="sd"> Selects the representation of the archived data.</span> +<span class="sd"> E.g. sh - spherical harmonics, gg - Gaussian grid,</span> +<span class="sd"> ll - latitude/longitude, ...</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> date : :obj:`string`, optional</span> +<span class="sd"> Specifies the Analysis date, the Forecast base date or</span> +<span class="sd"> Observations date. Valid formats are:</span> +<span class="sd"> Absolute as YYYY-MM-DD or YYYYMMDD.</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> resol : :obj:`string`, optional</span> +<span class="sd"> Specifies the desired triangular truncation of retrieved data,</span> +<span class="sd"> before carrying out any other selected post-processing.</span> +<span class="sd"> The default is automatic truncation (auto), by which the lowest</span> +<span class="sd"> resolution compatible with the value specified in grid is</span> +<span class="sd"> automatically selected for the retrieval.</span> +<span class="sd"> Users wanting to perform post-processing from full spectral</span> +<span class="sd"> resolution should specify Archived Value (av).</span> +<span class="sd"> The following are examples of existing resolutions found in</span> +<span class="sd"> the archive: 63, 106, 159, 213, 255, 319, 399, 511, 799 or 1279.</span> +<span class="sd"> This keyword has no meaning/effect if the archived data is</span> +<span class="sd"> not in spherical harmonics representation.</span> +<span class="sd"> The best selection can be found here:</span> +<span class="sd"> https://software.ecmwf.int/wiki/display/UDOC/\</span> +<span class="sd"> Retrieve#Retrieve-Truncationbeforeinterpolation</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> stream : :obj:`string`, optional</span> +<span class="sd"> Identifies the forecasting system used to generate the data.</span> +<span class="sd"> E.g. oper (Atmospheric model), enfo (Ensemble forecats), ...</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> area : :obj:`string`, optional</span> +<span class="sd"> Specifies the desired sub-area of data to be extracted.</span> +<span class="sd"> Areas can be defined to wrap around the globe.</span> + +<span class="sd"> Latitude values must be given as signed numbers, with:</span> +<span class="sd"> north latitudes (i.e. north of the equator)</span> +<span class="sd"> being positive (e.g: 40.5)</span> +<span class="sd"> south latitutes (i.e. south of the equator)</span> +<span class="sd"> being negative (e.g: -50.5)</span> +<span class="sd"> Longtitude values must be given as signed numbers, with:</span> +<span class="sd"> east longitudes (i.e. east of the 0 degree meridian)</span> +<span class="sd"> being positive (e.g: 35.0)</span> +<span class="sd"> west longitudes (i.e. west of the 0 degree meridian)</span> +<span class="sd"> being negative (e.g: -20.5)</span> + +<span class="sd"> E.g.: North/West/South/East</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> time : :obj:`string`, optional</span> +<span class="sd"> Specifies the time of the data in hours and minutes.</span> +<span class="sd"> Valid values depend on the type of data: Analysis time,</span> +<span class="sd"> Forecast base time or First guess verification time</span> +<span class="sd"> (all usually at synoptic hours: 00, 06, 12 and 18 ).</span> +<span class="sd"> Observation time (any combination in hours and minutes is valid,</span> +<span class="sd"> subject to data availability in the archive).</span> +<span class="sd"> The syntax is HHMM or HH:MM. If MM is omitted it defaults to 00.</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> step : :obj:`string`, optional</span> +<span class="sd"> Specifies the forecast time step from forecast base time.</span> +<span class="sd"> Valid values are hours (HH) from forecast base time. It also</span> +<span class="sd"> specifies the length of the forecast which verifies at</span> +<span class="sd"> First Guess time.</span> +<span class="sd"> E.g. 1/3/6-hourly</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> expver : :obj:`string`, optional</span> +<span class="sd"> The version of the dataset. Each experiment is assigned a</span> +<span class="sd"> unique code (version). Production data is assigned 1 or 2,</span> +<span class="sd"> and experimental data in Operations 11, 12 ,...</span> +<span class="sd"> Research or Member State's experiments have a four letter</span> +<span class="sd"> experiment identifier.</span> +<span class="sd"> Default is "1".</span> + +<span class="sd"> number : :obj:`string`, optional</span> +<span class="sd"> Selects the member in ensemble forecast run. (Only then it</span> +<span class="sd"> is necessary.) It has a different meaning depending on</span> +<span class="sd"> the type of data.</span> +<span class="sd"> E.g. Perturbed Forecasts: specifies the Ensemble forecast member</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> accuracy : :obj:`string`, optional</span> +<span class="sd"> Specifies the number of bits per value to be used in the</span> +<span class="sd"> generated GRIB coded fields.</span> +<span class="sd"> A positive integer may be given to specify the preferred number</span> +<span class="sd"> of bits per packed value. This must not be greater than the</span> +<span class="sd"> number of bits normally used for a Fortran integer on the</span> +<span class="sd"> processor handling the request (typically 32 or 64 bit).</span> +<span class="sd"> Within a compute request the accuracy of the original fields</span> +<span class="sd"> can be passed to the result field by specifying accuracy=av.</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> grid : :obj:`string`, optional</span> +<span class="sd"> Specifies the output grid which can be either a Gaussian grid</span> +<span class="sd"> or a Latitude/Longitude grid. MARS requests specifying</span> +<span class="sd"> grid=av will return the archived model grid.</span> + +<span class="sd"> Lat/Lon grid: The grid spacing needs to be an integer</span> +<span class="sd"> fraction of 90 degrees e.g. grid = 0.5/0.5</span> + +<span class="sd"> Gaussian grid: specified by a letter denoting the type of</span> +<span class="sd"> Gaussian grid followed by an integer (the grid number)</span> +<span class="sd"> representing the number of lines between the Pole and Equator,</span> +<span class="sd"> e.g.</span> +<span class="sd"> grid = F160 - full (or regular) Gaussian grid with</span> +<span class="sd"> 160 latitude lines between the pole and equator</span> +<span class="sd"> grid = N320 - ECMWF original reduced Gaussian grid with</span> +<span class="sd"> 320 latitude lines between the pole and equator,</span> +<span class="sd"> see Reduced Gaussian Grids for grid numbers used at ECMWF</span> +<span class="sd"> grid = O640 - ECMWF octahedral (reduced) Gaussian grid with</span> +<span class="sd"> 640 latitude lines between the pole and equator</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> gaussian : :obj:`string`, optional</span> +<span class="sd"> This parameter is deprecated and should no longer be used.</span> +<span class="sd"> Specifies the desired type of Gaussian grid for the output.</span> +<span class="sd"> Valid Gaussian grids are quasi-regular (reduced) or regular.</span> +<span class="sd"> Keyword gaussian can only be specified together with</span> +<span class="sd"> keyword grid. Gaussian without grid has no effect.</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> target : :obj:`string`, optional</span> +<span class="sd"> Specifies a file into which data is to be written after</span> +<span class="sd"> retrieval or manipulation. Path names should always be</span> +<span class="sd"> enclosed in double quotes. The MARS client supports automatic</span> +<span class="sd"> generation of multiple target files using MARS keywords</span> +<span class="sd"> enclosed in square brackets [ ]. If the environment variable</span> +<span class="sd"> MARS_MULTITARGET_STRICT_FORMAT is set to 1 before calling mars,</span> +<span class="sd"> the keyword values will be used in the filename as shown by</span> +<span class="sd"> the ecCodes GRIB tool grib_ls -m, e.g. with</span> +<span class="sd"> MARS_MULTITARGET_STRICT_FORMAT set to 1 the keywords time,</span> +<span class="sd"> expver and param will be formatted as 0600, 0001 and 129.128</span> +<span class="sd"> rather than 600, 1 and 129.</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> param : :obj:`string`, optional</span> +<span class="sd"> Specifies the meteorological parameter.</span> +<span class="sd"> The list of meteorological parameters in MARS is extensive.</span> +<span class="sd"> Their availability is directly related to their meteorological</span> +<span class="sd"> meaning and, therefore, the rest of directives specified</span> +<span class="sd"> in the MARS request.</span> +<span class="sd"> Meteorological parameters can be specified by their</span> +<span class="sd"> GRIB code (param=130), their mnemonic (param=t) or</span> +<span class="sd"> full name (param=temperature).</span> +<span class="sd"> The list of parameter should be seperated by a "/"-sign.</span> +<span class="sd"> E.g. 130/131/133</span> +<span class="sd"> Default is an empty string.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">server</span> <span class="o">=</span> <span class="n">server</span> + <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="o">=</span> <span class="n">public</span> + <span class="bp">self</span><span class="o">.</span><span class="n">marsclass</span> <span class="o">=</span> <span class="n">marsclass</span> + <span class="bp">self</span><span class="o">.</span><span class="n">dataset</span> <span class="o">=</span> <span class="n">dataset</span> + <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">type</span> + <span class="bp">self</span><span class="o">.</span><span class="n">levtype</span> <span class="o">=</span> <span class="n">levtype</span> + <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="o">=</span> <span class="n">levelist</span> + <span class="bp">self</span><span class="o">.</span><span class="n">repres</span> <span class="o">=</span> <span class="n">repres</span> + <span class="bp">self</span><span class="o">.</span><span class="n">date</span> <span class="o">=</span> <span class="n">date</span> + <span class="bp">self</span><span class="o">.</span><span class="n">resol</span> <span class="o">=</span> <span class="n">resol</span> + <span class="bp">self</span><span class="o">.</span><span class="n">stream</span> <span class="o">=</span> <span class="n">stream</span> + <span class="bp">self</span><span class="o">.</span><span class="n">area</span> <span class="o">=</span> <span class="n">area</span> + <span class="bp">self</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="n">time</span> + <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="n">step</span> + <span class="bp">self</span><span class="o">.</span><span class="n">expver</span> <span class="o">=</span> <span class="n">expver</span> + <span class="bp">self</span><span class="o">.</span><span class="n">number</span> <span class="o">=</span> <span class="n">number</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accuracy</span> <span class="o">=</span> <span class="n">accuracy</span> + <span class="bp">self</span><span class="o">.</span><span class="n">grid</span> <span class="o">=</span> <span class="n">grid</span> + <span class="bp">self</span><span class="o">.</span><span class="n">gaussian</span> <span class="o">=</span> <span class="n">gaussian</span> + <span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span> + <span class="bp">self</span><span class="o">.</span><span class="n">param</span> <span class="o">=</span> <span class="n">param</span> + + <span class="k">return</span> + + +<div class="viewcode-block" id="MarsRetrieval.display_info"><a class="viewcode-back" href="../api.html#MarsRetrieval.MarsRetrieval.display_info">[docs]</a> <span class="k">def</span> <span class="nf">display_info</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">'''Prints all class attributes and their values to the</span> +<span class="sd"> standard output.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="c1"># Get all class attributes and their values as a dictionary</span> + <span class="n">attrs</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + + <span class="c1"># iterate through all attributes and print them</span> + <span class="c1"># with their corresponding values</span> + <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="k">if</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'server'</span><span class="p">,</span> <span class="s1">'public'</span><span class="p">]:</span> + <span class="k">pass</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s1">': '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + + <span class="k">return</span></div> + + +<div class="viewcode-block" id="MarsRetrieval.print_info"><a class="viewcode-back" href="../api.html#MarsRetrieval.MarsRetrieval.print_info">[docs]</a> <span class="k">def</span> <span class="nf">print_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputdir</span><span class="p">,</span> <span class="n">request_number</span><span class="p">):</span> + <span class="sd">'''Prints all mars requests to an extra file for debugging and</span> +<span class="sd"> information.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> inputdir : :obj:`string`</span> +<span class="sd"> The path where all data from the retrievals are stored.</span> + +<span class="sd"> request_number : :obj:`integer`</span> +<span class="sd"> Number of mars requests for flux and non-flux data.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="c1"># Get all class attributes and their values as a dictionary</span> + <span class="n">attrs</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + + <span class="c1"># open a file to store all requests to</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">inputdir</span><span class="p">,</span> + <span class="n">_config</span><span class="o">.</span><span class="n">FILE_MARS_REQUESTS</span><span class="p">),</span> <span class="s1">'a'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'mars_request #'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">request_number</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="c1"># iterate through all attributes and print them</span> + <span class="c1"># with their corresponding values</span> + <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="k">if</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'server'</span><span class="p">,</span> <span class="s1">'public'</span><span class="p">]:</span> + <span class="k">pass</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s1">': '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">+</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'</span><span class="se">\n\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="k">return</span></div> + + +<div class="viewcode-block" id="MarsRetrieval.print_infodata_csv"><a class="viewcode-back" href="../api.html#MarsRetrieval.MarsRetrieval.print_infodata_csv">[docs]</a> <span class="k">def</span> <span class="nf">print_infodata_csv</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputdir</span><span class="p">,</span> <span class="n">request_number</span><span class="p">):</span> + <span class="sd">'''Write all request parameter in alpabetical order into a "csv" file.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> inputdir : :obj:`string`</span> +<span class="sd"> The path where all data from the retrievals are stored.</span> + +<span class="sd"> request_number : :obj:`integer`</span> +<span class="sd"> Number of mars requests for flux and non-flux data.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="c1"># Get all class attributes and their values as a dictionary</span> + <span class="n">attrs</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="k">del</span> <span class="n">attrs</span><span class="p">[</span><span class="s1">'server'</span><span class="p">]</span> + <span class="k">del</span> <span class="n">attrs</span><span class="p">[</span><span class="s1">'public'</span><span class="p">]</span> + + <span class="c1"># open a file to store all requests to</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">inputdir</span><span class="p">,</span> + <span class="n">_config</span><span class="o">.</span><span class="n">FILE_MARS_REQUESTS</span><span class="p">),</span> <span class="s1">'a'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">request_number</span><span class="p">)</span> <span class="o">+</span> <span class="s1">', '</span><span class="p">)</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">attrs</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">attrs</span><span class="o">.</span><span class="n">iterkeys</span><span class="p">())))</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="MarsRetrieval.data_retrieve"><a class="viewcode-back" href="../api.html#MarsRetrieval.MarsRetrieval.data_retrieve">[docs]</a> <span class="k">def</span> <span class="nf">data_retrieve</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">'''Submits a MARS retrieval. Depending on the existence of</span> +<span class="sd"> ECMWF Web-API it is submitted via Python or a</span> +<span class="sd"> subprocess in the Shell. The parameter for the mars retrieval</span> +<span class="sd"> are taken from the defined class attributes.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="c1"># Get all class attributes and their values as a dictionary</span> + <span class="n">attrs</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + + <span class="c1"># eliminate unnecessary attributes from the dictionary attrs</span> + <span class="k">del</span> <span class="n">attrs</span><span class="p">[</span><span class="s1">'server'</span><span class="p">]</span> + <span class="k">del</span> <span class="n">attrs</span><span class="p">[</span><span class="s1">'public'</span><span class="p">]</span> + + <span class="c1"># exchange parameter name for marsclass</span> + <span class="n">mclass</span> <span class="o">=</span> <span class="n">attrs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'marsclass'</span><span class="p">)</span> + <span class="k">del</span> <span class="n">attrs</span><span class="p">[</span><span class="s1">'marsclass'</span><span class="p">]</span> + <span class="n">attrs</span><span class="p">[</span><span class="s1">'class'</span><span class="p">]</span> <span class="o">=</span> <span class="n">mclass</span> + + <span class="c1"># prepare target variable as needed for the Web API mode</span> + <span class="c1"># within the dictionary for full access</span> + <span class="c1"># as a single variable for public access</span> + <span class="n">target</span> <span class="o">=</span> <span class="n">attrs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'target'</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">public</span><span class="p">):</span> + <span class="k">del</span> <span class="n">attrs</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'target: '</span> <span class="o">+</span> <span class="n">target</span><span class="p">)</span> + + <span class="c1"># find all keys without a value and convert all other values to strings</span> + <span class="n">empty_keys</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> + <span class="k">if</span> <span class="n">value</span> <span class="o">==</span> <span class="s1">''</span><span class="p">:</span> + <span class="n">empty_keys</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">attrs</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> + + <span class="c1"># delete all empty parameter from the dictionary</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">empty_keys</span><span class="p">:</span> + <span class="k">del</span> <span class="n">attrs</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> + + <span class="c1"># MARS request via Python script</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">public</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'RETRIEVE PUBLIC DATA!'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">retrieve</span><span class="p">(</span><span class="n">attrs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'EXECUTE NON-PUBLIC RETRIEVAL!'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">attrs</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span> + <span class="k">except</span><span class="p">:</span> + <span class="n">e</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"ERROR: "</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'MARS Request failed!'</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="n">target</span><span class="p">)</span><span class="o">.</span><span class="n">st_size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'MARS Request returned no data - '</span> + <span class="s1">'please check request'</span><span class="p">)</span> + <span class="k">raise</span> <span class="ne">IOError</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">public</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="n">target</span><span class="p">)</span><span class="o">.</span><span class="n">st_size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Public MARS Request returned no data - '</span> + <span class="s1">'please check request'</span><span class="p">)</span> + <span class="k">raise</span> <span class="ne">IOError</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">IOError</span> + <span class="c1"># MARS request via extra process in shell</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">request_str</span> <span class="o">=</span> <span class="s1">'ret'</span> + <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> + <span class="n">request_str</span> <span class="o">=</span> <span class="n">request_str</span> <span class="o">+</span> <span class="s1">','</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s1">'='</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> + <span class="n">request_str</span> <span class="o">+=</span> <span class="s1">',target="'</span> <span class="o">+</span> <span class="n">target</span> <span class="o">+</span> <span class="s1">'"'</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">'mars'</span><span class="p">],</span> + <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">bufsize</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="n">pout</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">communicate</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">request_str</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="nb">print</span><span class="p">(</span><span class="n">pout</span><span class="o">.</span><span class="n">decode</span><span class="p">())</span> + + <span class="k">if</span> <span class="s1">'Some errors reported'</span> <span class="ow">in</span> <span class="n">pout</span><span class="o">.</span><span class="n">decode</span><span class="p">():</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'MARS Request failed - please check request'</span><span class="p">)</span> + <span class="k">raise</span> <span class="ne">IOError</span> + <span class="k">elif</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="n">target</span><span class="p">)</span><span class="o">.</span><span class="n">st_size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'MARS Request returned no data - please check request'</span><span class="p">)</span> + <span class="k">raise</span> <span class="ne">IOError</span> + + <span class="k">return</span></div></div> +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/UioFiles.html b/documentation/Sphinx/build/html/_modules/UioFiles.html new file mode 100644 index 0000000000000000000000000000000000000000..7ec93665c1de0a5bf453e4854bd803158f433938 --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/UioFiles.html @@ -0,0 +1,362 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>UioFiles — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>UioFiles</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for UioFiles</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Anne Fouilloux (University of Oslo)</span> +<span class="c1">#</span> +<span class="c1"># @Date: October 2014</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1">#</span> +<span class="c1"># November 2015 - Leopold Haimberger (University of Vienna):</span> +<span class="c1"># - modified method list_files to work with glob instead of listdir</span> +<span class="c1"># - added pattern search in method list_files</span> +<span class="c1">#</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added documentation</span> +<span class="c1"># - optimisation of method list_files since it didn't work correctly</span> +<span class="c1"># for sub directories</span> +<span class="c1"># - additional speed up of method list_files</span> +<span class="c1"># - modified the class so that it is initiated with a pattern instead</span> +<span class="c1"># of suffixes. Gives more precision in selection of files.</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2014-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Class Decription:</span> +<span class="c1"># The class is for file manipulation. It is initiated with a regular</span> +<span class="c1"># expression pattern for this instance and can produce a list of Files</span> +<span class="c1"># from the given file pattern. These files can be deleted.</span> +<span class="c1">#</span> +<span class="c1"># @Class Content:</span> +<span class="c1"># - __init__</span> +<span class="c1"># - __str__</span> +<span class="c1"># - __list_files__</span> +<span class="c1"># - delete_files</span> +<span class="c1">#</span> +<span class="c1"># @Class Attributes:</span> +<span class="c1"># - pattern</span> +<span class="c1"># - files</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">fnmatch</span> + +<span class="c1"># software specific module from flex_extract</span> +<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../'</span><span class="p">)</span> +<span class="c1">#import profiling</span> +<span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="n">silent_remove</span><span class="p">,</span> <span class="n">get_list_as_string</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># CLASS</span> +<span class="c1"># ------------------------------------------------------------------------------</span> + +<div class="viewcode-block" id="UioFiles"><a class="viewcode-back" href="../api.html#UioFiles.UioFiles">[docs]</a><span class="k">class</span> <span class="nc">UioFiles</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + <span class="sd">'''Class to manipulate files. At initialisation it has the pattern</span> +<span class="sd"> which stores a regular expression pattern for the files, the path</span> +<span class="sd"> to the files and the files already.</span> +<span class="sd"> '''</span> + <span class="c1"># --------------------------------------------------------------------------</span> + <span class="c1"># CLASS FUNCTIONS</span> + <span class="c1"># --------------------------------------------------------------------------</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">pattern</span><span class="p">):</span> + <span class="sd">'''Assignes a specific pattern for these files.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> path : :obj:`string`</span> +<span class="sd"> Directory where to list the files.</span> + +<span class="sd"> pattern : :obj:`string`</span> +<span class="sd"> Regular expression pattern. For example: '\*.grb'</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span> + <span class="bp">self</span><span class="o">.</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">pattern</span> + <span class="bp">self</span><span class="o">.</span><span class="n">files</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">__list_files__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span> + + <span class="k">return</span> + + <span class="c1">#@profiling.timefn</span> + <span class="k">def</span> <span class="nf">__list_files__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span> + <span class="sd">'''Lists all files in the directory with the matching</span> +<span class="sd"> regular expression pattern.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> path : :obj:`string`</span> +<span class="sd"> Path to the files.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="c1"># Get the absolute path</span> + <span class="n">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">path</span><span class="p">)</span> + + <span class="c1"># get all files in the dir and subdir as absolut path</span> + <span class="k">for</span> <span class="n">root</span><span class="p">,</span> <span class="n">dirnames</span><span class="p">,</span> <span class="n">filenames</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">):</span> + <span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> <span class="n">fnmatch</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">filenames</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pattern</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">files</span><span class="o">.</span><span class="n">append</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">root</span><span class="p">,</span> <span class="n">filename</span><span class="p">))</span> + + <span class="k">return</span> + + <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">'''Converts the list of files into a single string.</span> +<span class="sd"> The entries are sepereated by "," sign.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> files_string : :obj:`string`</span> +<span class="sd"> The content of the list as a single string.</span> +<span class="sd"> '''</span> + + <span class="n">filenames</span> <span class="o">=</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">basename</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> + <span class="n">files_string</span> <span class="o">=</span> <span class="n">get_list_as_string</span><span class="p">(</span><span class="n">filenames</span><span class="p">,</span> <span class="n">concatenate_sign</span><span class="o">=</span><span class="s1">', '</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">files_string</span> + +<div class="viewcode-block" id="UioFiles.delete_files"><a class="viewcode-back" href="../api.html#UioFiles.UioFiles.delete_files">[docs]</a> <span class="k">def</span> <span class="nf">delete_files</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">'''Deletes the files.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="k">for</span> <span class="n">old_file</span> <span class="ow">in</span> <span class="bp">self</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">old_file</span><span class="p">)</span> + + <span class="k">return</span></div></div> +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/get_mars_data.html b/documentation/Sphinx/build/html/_modules/get_mars_data.html new file mode 100644 index 0000000000000000000000000000000000000000..1256f0b0ae370f87fac59202c37532a4e0624ed4 --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/get_mars_data.html @@ -0,0 +1,478 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>get_mars_data — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>get_mars_data</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for get_mars_data</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Anne Fouilloux (University of Oslo)</span> +<span class="c1">#</span> +<span class="c1"># @Date: October 2014</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1">#</span> +<span class="c1"># November 2015 - Leopold Haimberger (University of Vienna):</span> +<span class="c1"># - moved the getEIdata program into a function "get_mars_data"</span> +<span class="c1"># - moved the AgurmentParser into a seperate function</span> +<span class="c1"># - adatpted the function for the use in flex_extract</span> +<span class="c1"># - renamed file to get_mars_data</span> +<span class="c1">#</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added structured documentation</span> +<span class="c1"># - minor changes in programming style for consistence</span> +<span class="c1"># - added function main and moved function calls vom __main__ there</span> +<span class="c1"># (necessary for better documentation with docstrings for later</span> +<span class="c1"># online documentation)</span> +<span class="c1"># - use of UIFiles class for file selection and deletion</span> +<span class="c1">#</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2014-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Program Functionality:</span> +<span class="c1"># This program can be used as a module in the whole flex_extract process</span> +<span class="c1"># or can be run by itself to just extract MARS data from ECMWF. To do so,</span> +<span class="c1"># a couple of necessary parameters has to be passed with the program call.</span> +<span class="c1"># See documentation for more details.</span> +<span class="c1">#</span> +<span class="c1"># @Program Content:</span> +<span class="c1"># - main</span> +<span class="c1"># - get_mars_data</span> +<span class="c1"># - do_retrievement</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">inspect</span> +<span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span> + +<span class="c1"># software specific classes and modules from flex_extract</span> +<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</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">inspect</span><span class="o">.</span><span class="n">getfile</span><span class="p">(</span><span class="n">inspect</span><span class="o">.</span><span class="n">currentframe</span><span class="p">())))</span> <span class="o">+</span> <span class="s1">'/../'</span><span class="p">)</span> +<span class="kn">import</span> <span class="nn">_config</span> +<span class="kn">from</span> <span class="nn">tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">my_error</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_arguments</span><span class="p">,</span> + <span class="n">read_ecenv</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">)</span> +<span class="kn">from</span> <span class="nn">classes.EcFlexpart</span> <span class="k">import</span> <span class="n">EcFlexpart</span> +<span class="kn">from</span> <span class="nn">classes.UioFiles</span> <span class="k">import</span> <span class="n">UioFiles</span> + +<span class="k">try</span><span class="p">:</span> + <span class="n">ecapi</span> <span class="o">=</span> <span class="kc">True</span> + <span class="kn">import</span> <span class="nn">ecmwfapi</span> +<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="n">ecapi</span> <span class="o">=</span> <span class="kc">False</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># FUNCTION</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<div class="viewcode-block" id="main"><a class="viewcode-back" href="../api.html#get_mars_data.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">():</span> + <span class="sd">'''Controls the program to get data out of mars.</span> + +<span class="sd"> This is done if it is called directly from command line.</span> +<span class="sd"> Then it also takes program call arguments and control file input.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_arguments</span><span class="p">()</span> + <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> + + <span class="n">env_parameter</span> <span class="o">=</span> <span class="n">read_ecenv</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">)</span> + <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">c</span><span class="o">.</span><span class="n">assign_envs_to_control</span><span class="p">(</span><span class="n">env_parameter</span><span class="p">)</span> + <span class="n">c</span><span class="o">.</span><span class="n">check_conditions</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> + + <span class="n">get_mars_data</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> + <span class="n">normal_exit</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'Done!'</span><span class="p">)</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="get_mars_data"><a class="viewcode-back" href="../api.html#get_mars_data.get_mars_data">[docs]</a><span class="k">def</span> <span class="nf">get_mars_data</span><span class="p">(</span><span class="n">c</span><span class="p">):</span> + <span class="sd">'''Retrieves the EC data needed for a FLEXPART simulation.</span> + +<span class="sd"> Start and end dates for retrieval period is set. Retrievals</span> +<span class="sd"> are divided into smaller periods if necessary and datechunk parameter</span> +<span class="sd"> is set.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">):</span> + <span class="n">make_dir</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"Retrieving EC data!"</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">request</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="s2">"Printing mars requests!"</span><span class="p">)</span> + + <span class="nb">print</span><span class="p">(</span><span class="s2">"start date </span><span class="si">%s</span><span class="s2"> "</span> <span class="o">%</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span><span class="p">))</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"end date </span><span class="si">%s</span><span class="s2"> "</span> <span class="o">%</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span><span class="p">))</span> + + <span class="k">if</span> <span class="n">ecapi</span><span class="p">:</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">public</span><span class="p">:</span> + <span class="n">server</span> <span class="o">=</span> <span class="n">ecmwfapi</span><span class="o">.</span><span class="n">ECMWFDataServer</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">server</span> <span class="o">=</span> <span class="n">ecmwfapi</span><span class="o">.</span><span class="n">ECMWFService</span><span class="p">(</span><span class="s2">"mars"</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">server</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span> <span class="o">=</span> <span class="n">ecapi</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Using ECMWF WebAPI: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">))</span> + + <span class="c1"># basetime geht rückwärts</span> + + <span class="c1"># if basetime 00</span> + <span class="c1"># dann wird von 12 am vortag bis 00 am start tag geholt</span> + <span class="c1"># aber ohne 12 selbst sondern 12 + step</span> + + <span class="c1"># if basetime 12</span> + <span class="c1"># dann wird von 00 + step bis 12 am start tag geholt</span> + + <span class="c1"># purer forecast wird vorwärts bestimmt.</span> + <span class="c1"># purer forecast mode ist dann wenn größer 24 stunden</span> + <span class="c1"># wie kann das noch festgestellt werden ????</span> + <span class="c1"># nur FC und steps mehr als 24 ?</span> + <span class="c1"># die einzige problematik beim reinen forecast ist die benennung der files!</span> + <span class="c1"># also sobald es Tagesüberschneidungen gibt</span> + <span class="c1"># allerdings ist das relevant und ersichtlich an den NICHT FLUSS DATEN</span> + + <span class="n">start</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> + <span class="n">end</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> + <span class="c1"># time period for one single retrieval</span> + <span class="n">datechunk</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">date_chunk</span><span class="p">))</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="s1">'00'</span><span class="p">:</span> + <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</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">maxstep</span> <span class="o"><=</span> <span class="mi">24</span><span class="p">:</span> + <span class="n">startm1</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</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">basetime</span> <span class="o">==</span> <span class="s1">'00'</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="s1">'12'</span><span class="p">:</span> + <span class="c1"># endp1 = end + timedelta(days=1)</span> + <span class="n">endp1</span> <span class="o">=</span> <span class="n">end</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># endp1 = end + timedelta(days=2)</span> + <span class="n">endp1</span> <span class="o">=</span> <span class="n">end</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="c1"># -------------- flux data ------------------------------------------------</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'... removing old flux content of '</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> + <span class="n">tobecleaned</span> <span class="o">=</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> + <span class="s1">'*_acc_*.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getppid</span><span class="p">())</span> <span class="o">+</span> <span class="s1">'.*.grb'</span><span class="p">)</span> + <span class="n">tobecleaned</span><span class="o">.</span><span class="n">delete_files</span><span class="p">()</span> + + <span class="c1"># if forecast for maximum one day (upto 24h) are to be retrieved,</span> + <span class="c1"># collect accumulation data (flux data)</span> + <span class="c1"># with additional days in the beginning and at the end</span> + <span class="c1"># (used for complete disaggregation of original period)</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o"><=</span> <span class="mi">24</span><span class="p">:</span> + <span class="n">do_retrievement</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">startm1</span><span class="p">,</span> <span class="n">endp1</span><span class="p">,</span> <span class="n">datechunk</span><span class="p">,</span> <span class="n">fluxes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># if forecast data longer than 24h are to be retrieved,</span> + <span class="c1"># collect accumulation data (flux data)</span> + <span class="c1"># with the exact start and end date</span> + <span class="c1"># (disaggregation will be done for the</span> + <span class="c1"># exact time period with boundary conditions)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">do_retrievement</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">datechunk</span><span class="p">,</span> <span class="n">fluxes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># -------------- non flux data --------------------------------------------</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'... removing old non flux content of '</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> + <span class="n">tobecleaned</span> <span class="o">=</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> + <span class="s1">'*__*.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getppid</span><span class="p">())</span> <span class="o">+</span> <span class="s1">'.*.grb'</span><span class="p">)</span> + <span class="n">tobecleaned</span><span class="o">.</span><span class="n">delete_files</span><span class="p">()</span> + + <span class="n">do_retrievement</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">datechunk</span><span class="p">,</span> <span class="n">fluxes</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="do_retrievement"><a class="viewcode-back" href="../api.html#get_mars_data.do_retrievement">[docs]</a><span class="k">def</span> <span class="nf">do_retrievement</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">delta_t</span><span class="p">,</span> <span class="n">fluxes</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="sd">'''Divides the complete retrieval period in smaller chunks and</span> +<span class="sd"> retrieves the data from MARS.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> server : :obj:`ECMWFService`</span> +<span class="sd"> The server connection to ECMWF.</span> + +<span class="sd"> start : :obj:`datetime`</span> +<span class="sd"> The start date of the retrieval.</span> + +<span class="sd"> end : :obj:`datetime`</span> +<span class="sd"> The end date of the retrieval.</span> + +<span class="sd"> delta_t : :obj:`datetime`</span> +<span class="sd"> Delta_t + 1 is the maximal time period of a single</span> +<span class="sd"> retrieval.</span> + +<span class="sd"> fluxes : :obj:`boolean`, optional</span> +<span class="sd"> Decides if the flux parameters are to be retrieved or</span> +<span class="sd"> the rest of the parameter list.</span> +<span class="sd"> Default value is False.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="c1"># since actual day also counts as one day,</span> + <span class="c1"># we only need to add datechunk - 1 days to retrieval</span> + <span class="c1"># for a period</span> + <span class="n">delta_t_m1</span> <span class="o">=</span> <span class="n">delta_t</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="n">day</span> <span class="o">=</span> <span class="n">start</span> + <span class="k">while</span> <span class="n">day</span> <span class="o"><=</span> <span class="n">end</span><span class="p">:</span> + <span class="n">flexpart</span> <span class="o">=</span> <span class="n">EcFlexpart</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">fluxes</span><span class="p">)</span> + <span class="n">tmpday</span> <span class="o">=</span> <span class="n">day</span> <span class="o">+</span> <span class="n">delta_t_m1</span> + <span class="k">if</span> <span class="n">tmpday</span> <span class="o"><</span> <span class="n">end</span><span class="p">:</span> + <span class="n">dates</span> <span class="o">=</span> <span class="n">day</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"/to/"</span> <span class="o">+</span> \ + <span class="n">tmpday</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">dates</span> <span class="o">=</span> <span class="n">day</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"/to/"</span> <span class="o">+</span> \ + <span class="n">end</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> + + <span class="nb">print</span><span class="p">(</span><span class="s2">"... retrieve "</span> <span class="o">+</span> <span class="n">dates</span> <span class="o">+</span> <span class="s2">" in dir "</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> + + <span class="k">try</span><span class="p">:</span> + <span class="n">flexpart</span><span class="o">.</span><span class="n">retrieve</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">dates</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">public</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> + <span class="n">my_error</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'MARS request failed'</span><span class="p">)</span> + + <span class="n">day</span> <span class="o">+=</span> <span class="n">delta_t</span> + + <span class="k">return</span></div> + +<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span> + <span class="n">main</span><span class="p">()</span> +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/index.html b/documentation/Sphinx/build/html/_modules/index.html index 48292b259d14d5e2e592f213f8862e3e3fff37f4..5dc4643c6d04bd8c835ffe556c715f9ec95bc777 100644 --- a/documentation/Sphinx/build/html/_modules/index.html +++ b/documentation/Sphinx/build/html/_modules/index.html @@ -149,7 +149,16 @@ <div itemprop="articleBody"> <h1>All modules for which code is available</h1> -<ul><li><a href="disaggregation.html">disaggregation</a></li> +<ul><li><a href="ControlFile.html">ControlFile</a></li> +<li><a href="EcFlexpart.html">EcFlexpart</a></li> +<li><a href="GribTools.html">GribTools</a></li> +<li><a href="MarsRetrieval.html">MarsRetrieval</a></li> +<li><a href="UioFiles.html">UioFiles</a></li> +<li><a href="disaggregation.html">disaggregation</a></li> +<li><a href="get_mars_data.html">get_mars_data</a></li> +<li><a href="install.html">install</a></li> +<li><a href="prepare_flexpart.html">prepare_flexpart</a></li> +<li><a href="submit.html">submit</a></li> <li><a href="tools.html">tools</a></li> </ul> diff --git a/documentation/Sphinx/build/html/_modules/install.html b/documentation/Sphinx/build/html/_modules/install.html new file mode 100644 index 0000000000000000000000000000000000000000..bbb3df09a11f662a07c74e869f86791f2d654032 --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/install.html @@ -0,0 +1,746 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>install — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>install</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for install</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Leopold Haimberger (University of Vienna)</span> +<span class="c1">#</span> +<span class="c1"># @Date: November 2015</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1">#</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added documentation</span> +<span class="c1"># - moved install_args_and_control in here</span> +<span class="c1"># - splitted code in smaller functions</span> +<span class="c1"># - delete convert build files in here instead of compile job script</span> +<span class="c1"># - changed static path names to Variables from config file</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2015-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Program Functionality:</span> +<span class="c1"># Depending on the selected installation environment (locally or on the</span> +<span class="c1"># ECMWF server ecgate or cca) the program extracts the commandline</span> +<span class="c1"># arguments and the CONTROL file parameter and prepares the corresponding</span> +<span class="c1"># environment. The necessary files are collected in a tar-ball and placed</span> +<span class="c1"># at the target location. There its untared, the environment variables will</span> +<span class="c1"># be set and the Fortran code will be compiled. If the ECMWF environment is</span> +<span class="c1"># selected a job script is prepared and submitted for the remaining</span> +<span class="c1"># configurations after putting the tar-ball to the target ECMWF server.</span> +<span class="c1">#</span> +<span class="c1"># @Program Content:</span> +<span class="c1"># - main</span> +<span class="c1"># - get_install_cmdline_arguments</span> +<span class="c1"># - install_via_gateway</span> +<span class="c1"># - mk_tarball</span> +<span class="c1"># - un_tarball</span> +<span class="c1"># - mk_env_vars</span> +<span class="c1"># - mk_compilejob</span> +<span class="c1"># - mk_job_template</span> +<span class="c1"># - delete_convert_build</span> +<span class="c1"># - make_convert_build</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">glob</span> +<span class="kn">import</span> <span class="nn">subprocess</span> +<span class="kn">import</span> <span class="nn">inspect</span> +<span class="kn">from</span> <span class="nn">argparse</span> <span class="k">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> +<span class="kn">import</span> <span class="nn">_config</span> +<span class="kn">from</span> <span class="nn">classes.ControlFile</span> <span class="k">import</span> <span class="n">ControlFile</span> +<span class="kn">from</span> <span class="nn">classes.UioFiles</span> <span class="k">import</span> <span class="n">UioFiles</span> +<span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</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="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># FUNCTIONS</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<div class="viewcode-block" id="main"><a class="viewcode-back" href="../api.html#install.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">():</span> + <span class="sd">'''Controls the installation process. Calls the installation function</span> +<span class="sd"> if target is specified.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> '''</span> + + <span class="n">args</span> <span class="o">=</span> <span class="n">get_install_cmdline_arguments</span><span class="p">()</span> + <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> + <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">c</span><span class="o">.</span><span class="n">check_install_conditions</span><span class="p">()</span> + + <span class="n">install_via_gateway</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="get_install_cmdline_arguments"><a class="viewcode-back" href="../api.html#install.get_install_cmdline_arguments">[docs]</a><span class="k">def</span> <span class="nf">get_install_cmdline_arguments</span><span class="p">():</span> + <span class="sd">'''Decomposes the command line arguments and assigns them to variables.</span> +<span class="sd"> Apply default values for non mentioned arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> args : :obj:`Namespace`</span> +<span class="sd"> Contains the commandline arguments from script/program call.</span> +<span class="sd"> '''</span> + <span class="n">parser</span> <span class="o">=</span> <span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s1">'Install flex_extract software locally or </span><span class="se">\</span> +<span class="s1"> on ECMWF machines'</span><span class="p">,</span> + <span class="n">formatter_class</span><span class="o">=</span><span class="n">ArgumentDefaultsHelpFormatter</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="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="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="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="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">'Name of Makefile to use for compiling CONVERT2'</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">"--ecuid"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"ecuid"</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">'user id 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">"--ecgid"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"ecgid"</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">'group id 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">"--gateway"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"gateway"</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">'name of local gateway server'</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">"--destination"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"destination"</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">'ecaccess destination, e.g. leo@genericSftp'</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">"--flexpart_root_scripts"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"flexpart_root_scripts"</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">"FLEXPART root directory on ECMWF </span><span class="se">\</span> +<span class="s2"> servers (to find grib2flexpart and COMMAND file)</span><span class="se">\n\</span> +<span class="s2"> Normally flex_extract resides in the scripts directory </span><span class="se">\</span> +<span class="s2"> of the FLEXPART distribution."</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> + <span class="n">default</span><span class="o">=</span><span class="s2">"job.temp.o"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"job template file for submission to 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">"--controlfile"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"controlfile"</span><span class="p">,</span> + <span class="n">default</span><span class="o">=</span><span class="s1">'CONTROL.temp'</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"file with CONTROL parameters"</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> + + <span class="k">return</span> <span class="n">args</span></div> + + +<div class="viewcode-block" id="install_via_gateway"><a class="viewcode-back" href="../api.html#install.install_via_gateway">[docs]</a><span class="k">def</span> <span class="nf">install_via_gateway</span><span class="p">(</span><span class="n">c</span><span class="p">):</span> + <span class="sd">'''Perform the actual installation on local machine or prepare data</span> +<span class="sd"> transfer to remote gate and submit a job script which will</span> +<span class="sd"> install everything on the remote gate.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="kn">import</span> <span class="nn">tarfile</span> + + <span class="n">ecd</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> + <span class="n">tarball_name</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">'.tar'</span> + <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">ecd</span><span class="p">,</span> <span class="n">tarball_name</span><span class="p">)</span> + + <span class="n">target_dirname</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> + <span class="n">fortran_executable</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</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="n">mk_compilejob</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">c</span><span class="o">.</span><span class="n">install_target</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">,</span> + <span class="n">c</span><span class="o">.</span><span class="n">flexpart_root_scripts</span><span class="p">)</span> + + <span class="n">mk_job_template</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">gateway</span><span class="p">,</span> + <span class="n">c</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">flexpart_root_scripts</span><span class="p">)</span> + + <span class="n">mk_env_vars</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">gateway</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">destination</span><span class="p">)</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">put_file_to_ecserver</span><span class="p">(</span><span class="n">ecd</span><span class="p">,</span> <span class="n">tarball_name</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">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span><span class="p">)</span> + + <span class="n">submit_job_to_ecserver</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">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_REL_JOBSCRIPTS</span><span class="p">,</span> + <span class="n">_config</span><span class="o">.</span><span class="n">FILE_INSTALL_COMPILEJOB</span><span class="p">))</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'job compilation script has been submitted to ecgate for '</span> <span class="o">+</span> + <span class="s1">'installation in '</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">+</span> + <span class="s1">'/'</span> <span class="o">+</span> <span class="n">target_dirname</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'You should get an email with subject "flexcompile" within '</span> <span class="o">+</span> + <span class="s1">'the next few minutes!'</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> <span class="c1">#local</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">==</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> <span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'WARNING: FLEXPART_ROOT_SCRIPTS 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">flexpart_root_scripts</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">flexpart_root_scripts</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">ecd</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">flexpart_root_scripts</span><span class="p">):</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">flexpart_root_scripts</span><span class="p">,</span> + <span class="n">target_dirname</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">flexpart_root_scripts</span><span class="p">,</span> + <span class="n">target_dirname</span><span class="p">))</span> + <span class="n">un_tarball</span><span class="p">(</span><span class="n">tar_file</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">flexpart_root_scripts</span><span class="p">,</span> + <span class="n">target_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 - CONVERT2</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Install '</span> <span class="o">+</span> <span class="n">target_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">flexpart_root_scripts</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">delete_convert_build</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)</span> + <span class="n">make_convert_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="n">ecd</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> + <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">tar_file</span><span class="p">)</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="mk_tarball"><a class="viewcode-back" href="../api.html#install.mk_tarball">[docs]</a><span class="k">def</span> <span class="nf">mk_tarball</span><span class="p">(</span><span class="n">tarball_path</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span> + <span class="sd">'''Creates a tarball with all necessary files which need to be sent to the</span> +<span class="sd"> installation directory.</span> +<span class="sd"> It does not matter if this is local or remote.</span> +<span class="sd"> Collects all python files, the Fortran source and makefiles,</span> +<span class="sd"> the ECMWF_ENV file, the CONTROL files as well as the</span> +<span class="sd"> template files.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> tarball_path : :obj:`string`</span> +<span class="sd"> The complete path to the tar file which will contain all</span> +<span class="sd"> relevant data for flex_extract.</span> + +<span class="sd"> target : :obj:`string`</span> +<span class="sd"> The queue where the job is submitted to.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="kn">import</span> <span class="nn">tarfile</span> + <span class="kn">from</span> <span class="nn">glob</span> <span class="k">import</span> <span class="n">glob</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'Create tarball ...'</span><span class="p">)</span> + + <span class="c1"># change to FLEXEXTRACT directory so that the tar can contain</span> + <span class="c1"># relative pathes to the files and directories</span> + <span class="n">ecd</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span> <span class="o">+</span> <span class="s1">'/'</span> + <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">ecd</span><span class="p">)</span> + + <span class="c1"># get lists of the files to be added to the tar file</span> + <span class="k">if</span> <span class="n">target</span> <span class="o">==</span> <span class="s1">'local'</span><span class="p">:</span> + <span class="n">ECMWF_ENV_FILE</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ECMWF_ENV_FILE</span> <span class="o">=</span> <span class="p">[</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_ECMWF_ENV</span><span class="p">]</span> + + <span class="n">pyfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</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">_config</span><span class="o">.</span><span class="n">PATH_LOCAL_PYTHON</span><span class="p">,</span> <span class="s1">'*py'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> + <span class="n">controlfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</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">_config</span><span class="o">.</span><span class="n">PATH_CONTROLFILES</span><span class="p">,</span> + <span class="s1">'CONTROL*'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> + <span class="n">tempfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</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">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</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">ffiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</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">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">,</span> <span class="s1">'*.f*'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> + <span class="n">hfiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</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">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">,</span> <span class="s1">'*.h'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> + <span class="n">makefiles</span> <span class="o">=</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">relpath</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ecd</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">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">,</span> <span class="s1">'Makefile*'</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span> + + <span class="c1"># concatenate single lists to one for a better looping</span> + <span class="n">filelist</span> <span class="o">=</span> <span class="n">pyfiles</span> <span class="o">+</span> <span class="n">controlfiles</span> <span class="o">+</span> <span class="n">tempfiles</span> <span class="o">+</span> <span class="n">ffiles</span> <span class="o">+</span> <span class="n">hfiles</span> <span class="o">+</span> \ + <span class="n">makefiles</span> <span class="o">+</span> <span class="n">ECMWF_ENV_FILE</span> + + <span class="c1"># create installation tar-file</span> + <span class="k">try</span><span class="p">:</span> + <span class="k">with</span> <span class="n">tarfile</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">tarball_path</span><span class="p">,</span> <span class="s2">"w:gz"</span><span class="p">)</span> <span class="k">as</span> <span class="n">tar_handle</span><span class="p">:</span> + <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">filelist</span><span class="p">:</span> + <span class="n">tar_handle</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> + + <span class="k">except</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">CalledProcessError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR CODE:</span><span class="se">\n</span><span class="s1"> ... '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">returncode</span><span class="p">))</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR MESSAGE:</span><span class="se">\n</span><span class="s1"> ... '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</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">'... could not make installation tar ball!'</span><span class="p">)</span> + + <span class="k">return</span></div> + + +<div class="viewcode-block" id="un_tarball"><a class="viewcode-back" href="../api.html#install.un_tarball">[docs]</a><span class="k">def</span> <span class="nf">un_tarball</span><span class="p">(</span><span class="n">tarball_path</span><span class="p">):</span> + <span class="sd">'''Extracts the given tarball into current directory.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> tarball_path : :obj:`string`</span> +<span class="sd"> The complete path to the tar file which will contain all</span> +<span class="sd"> relevant data for flex_extract.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="kn">import</span> <span class="nn">tarfile</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'Untar ...'</span><span class="p">)</span> + + <span class="k">with</span> <span class="n">tarfile</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">tarball_path</span><span class="p">)</span> <span class="k">as</span> <span class="n">tar_handle</span><span class="p">:</span> + <span class="n">tar_handle</span><span class="o">.</span><span class="n">extractall</span><span class="p">()</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="mk_env_vars"><a class="viewcode-back" href="../api.html#install.mk_env_vars">[docs]</a><span class="k">def</span> <span class="nf">mk_env_vars</span><span class="p">(</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">,</span> <span class="n">gateway</span><span class="p">,</span> <span class="n">destination</span><span class="p">):</span> + <span class="sd">'''Creates a file named ECMWF_ENV which contains the</span> +<span class="sd"> necessary environmental variables at ECMWF servers.</span> +<span class="sd"> It is based on the template ECMWF_ENV.template.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> ecuid : :obj:`string`</span> +<span class="sd"> The user id on ECMWF server.</span> + +<span class="sd"> ecgid : :obj:`string`</span> +<span class="sd"> The group id on ECMWF server.</span> + +<span class="sd"> gateway : :obj:`string`</span> +<span class="sd"> The gateway server the user is using.</span> + +<span class="sd"> destination : :obj:`string`</span> +<span class="sd"> The remote destination which is used to transfer files</span> +<span class="sd"> from ECMWF server to local gateway server.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="kn">from</span> <span class="nn">genshi.template.text</span> <span class="k">import</span> <span class="n">NewTextTemplate</span> + <span class="kn">from</span> <span class="nn">genshi.template</span> <span class="k">import</span> <span class="n">TemplateLoader</span> + + <span class="n">loader</span> <span class="o">=</span> <span class="n">TemplateLoader</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">ecmwfvars_template</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">TEMPFILE_USER_ENVVARS</span><span class="p">,</span> + <span class="bp">cls</span><span class="o">=</span><span class="n">NewTextTemplate</span><span class="p">)</span> + + <span class="n">stream</span> <span class="o">=</span> <span class="n">ecmwfvars_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">user_name</span> <span class="o">=</span> <span class="n">ecuid</span><span class="p">,</span> + <span class="n">user_group</span> <span class="o">=</span> <span class="n">ecgid</span><span class="p">,</span> + <span class="n">gateway_name</span> <span class="o">=</span> <span class="n">gateway</span><span class="p">,</span> + <span class="n">destination_name</span> <span class="o">=</span> <span class="n">destination</span> + <span class="p">)</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">stream</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s1">'text'</span><span class="p">))</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="mk_compilejob"><a class="viewcode-back" href="../api.html#install.mk_compilejob">[docs]</a><span class="k">def</span> <span class="nf">mk_compilejob</span><span class="p">(</span><span class="n">makefile</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">,</span> <span class="n">fp_root</span><span class="p">):</span> + <span class="sd">'''Modifies the original job template file so that it is specified</span> +<span class="sd"> for the user and the environment were it will be applied. Result</span> +<span class="sd"> is stored in a new file "job.temp" in the python directory.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> makefile : :obj:`string`</span> +<span class="sd"> Name of the makefile which should be used to compile FORTRAN</span> +<span class="sd"> CONVERT2 program.</span> + +<span class="sd"> target : :obj:`string`</span> +<span class="sd"> The target where the installation should be done, e.g. the queue.</span> + +<span class="sd"> ecuid : :obj:`string`</span> +<span class="sd"> The user id on ECMWF server.</span> + +<span class="sd"> ecgid : :obj:`string`</span> +<span class="sd"> The group id on ECMWF server.</span> + +<span class="sd"> fp_root : :obj:`string`</span> +<span class="sd"> Path to the root directory of FLEXPART environment or flex_extract</span> +<span class="sd"> environment.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="kn">from</span> <span class="nn">genshi.template.text</span> <span class="k">import</span> <span class="n">NewTextTemplate</span> + <span class="kn">from</span> <span class="nn">genshi.template</span> <span class="k">import</span> <span class="n">TemplateLoader</span> + + <span class="n">loader</span> <span class="o">=</span> <span class="n">TemplateLoader</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">compile_template</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">TEMPFILE_INSTALL_COMPILEJOB</span><span class="p">,</span> + <span class="bp">cls</span><span class="o">=</span><span class="n">NewTextTemplate</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">fp_root</span> <span class="o">==</span> <span class="s1">'../'</span><span class="p">:</span> + <span class="n">fp_root</span> <span class="o">=</span> <span class="s1">'$HOME'</span> + + <span class="n">stream</span> <span class="o">=</span> <span class="n">compile_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">usergroup</span> <span class="o">=</span> <span class="n">ecgid</span><span class="p">,</span> + <span class="n">username</span> <span class="o">=</span> <span class="n">ecuid</span><span class="p">,</span> + <span class="n">version_number</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">_VERSION_STR</span><span class="p">,</span> + <span class="n">fp_root_scripts</span> <span class="o">=</span> <span class="n">fp_root</span><span class="p">,</span> + <span class="n">makefile</span> <span class="o">=</span> <span class="n">makefile</span><span class="p">,</span> + <span class="n">fortran_program</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span> + <span class="p">)</span> + + <span class="n">compilejob</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_JOBSCRIPTS</span><span class="p">,</span> + <span class="n">_config</span><span class="o">.</span><span class="n">FILE_INSTALL_COMPILEJOB</span><span class="p">)</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">compilejob</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">stream</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s1">'text'</span><span class="p">))</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="mk_job_template"><a class="viewcode-back" href="../api.html#install.mk_job_template">[docs]</a><span class="k">def</span> <span class="nf">mk_job_template</span><span class="p">(</span><span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">,</span> <span class="n">gateway</span><span class="p">,</span> <span class="n">destination</span><span class="p">,</span> <span class="n">fp_root</span><span class="p">):</span> + <span class="sd">'''Modifies the original job template file so that it is specified</span> +<span class="sd"> for the user and the environment were it will be applied. Result</span> +<span class="sd"> is stored in a new file.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> ecuid : :obj:`string`</span> +<span class="sd"> The user id on ECMWF server.</span> + +<span class="sd"> ecgid : :obj:`string`</span> +<span class="sd"> The group id on ECMWF server.</span> + +<span class="sd"> gateway : :obj:`string`</span> +<span class="sd"> The gateway server the user is using.</span> + +<span class="sd"> destination : :obj:`string`</span> +<span class="sd"> The remote destination which is used to transfer files</span> +<span class="sd"> from ECMWF server to local gateway server.</span> + +<span class="sd"> fp_root : :obj:`string`</span> +<span class="sd"> Path to the root directory of FLEXPART environment or flex_extract</span> +<span class="sd"> environment.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + <span class="kn">from</span> <span class="nn">genshi.template.text</span> <span class="k">import</span> <span class="n">NewTextTemplate</span> + <span class="kn">from</span> <span class="nn">genshi.template</span> <span class="k">import</span> <span class="n">TemplateLoader</span> + + <span class="n">loader</span> <span class="o">=</span> <span class="n">TemplateLoader</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">compile_template</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">TEMPFILE_INSTALL_JOB</span><span class="p">,</span> + <span class="bp">cls</span><span class="o">=</span><span class="n">NewTextTemplate</span><span class="p">)</span> + + <span class="n">fp_root_path_to_python</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">fp_root</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="n">_config</span><span class="o">.</span><span class="n">PATH_REL_PYTHON</span><span class="p">)</span> + + <span class="n">stream</span> <span class="o">=</span> <span class="n">compile_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">usergroup</span> <span class="o">=</span> <span class="n">ecgid</span><span class="p">,</span> + <span class="n">username</span> <span class="o">=</span> <span class="n">ecuid</span><span class="p">,</span> + <span class="n">version_number</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">_VERSION_STR</span><span class="p">,</span> + <span class="n">fp_root_path</span> <span class="o">=</span> <span class="n">fp_root_path_to_python</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">tempjobfile</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_TEMPLATES</span><span class="p">,</span> + <span class="n">_config</span><span class="o">.</span><span class="n">TEMPFILE_JOB</span><span class="p">)</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">tempjobfile</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">stream</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s1">'text'</span><span class="p">))</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="delete_convert_build"><a class="viewcode-back" href="../api.html#install.delete_convert_build">[docs]</a><span class="k">def</span> <span class="nf">delete_convert_build</span><span class="p">(</span><span class="n">src_path</span><span class="p">):</span> + <span class="sd">'''Clean up the Fortran source directory and remove all</span> +<span class="sd"> build files (e.g. \*.o, \*.mod and CONVERT2)</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> src_path : :obj:`string`</span> +<span class="sd"> Path to the fortran source directory.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="n">modfiles</span> <span class="o">=</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">src_path</span><span class="p">,</span> <span class="s1">'*.mod'</span><span class="p">)</span> + <span class="n">objfiles</span> <span class="o">=</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">src_path</span><span class="p">,</span> <span class="s1">'*.o'</span><span class="p">)</span> + <span class="n">exefile</span> <span class="o">=</span> <span class="n">UioFiles</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">modfiles</span><span class="o">.</span><span class="n">delete_files</span><span class="p">()</span> + <span class="n">objfiles</span><span class="o">.</span><span class="n">delete_files</span><span class="p">()</span> + <span class="n">exefile</span><span class="o">.</span><span class="n">delete_files</span><span class="p">()</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="make_convert_build"><a class="viewcode-back" href="../api.html#install.make_convert_build">[docs]</a><span class="k">def</span> <span class="nf">make_convert_build</span><span class="p">(</span><span class="n">src_path</span><span class="p">,</span> <span class="n">makefile</span><span class="p">):</span> + <span class="sd">'''Compiles the Fortran code and generates the executable.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> src_path : :obj:`string`</span> +<span class="sd"> Path to the fortran source directory.</span> + +<span class="sd"> makefile : :obj:`string`</span> +<span class="sd"> The name of the makefile which should be used.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="k">try</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Using makefile: '</span> <span class="o">+</span> <span class="n">makefile</span><span class="p">)</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">'make'</span><span class="p">,</span> <span class="s1">'-f'</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">makefile</span><span class="p">)],</span> + <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">bufsize</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="n">pout</span><span class="p">,</span> <span class="n">perr</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span> + <span class="nb">print</span><span class="p">(</span><span class="n">pout</span><span class="p">)</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">returncode</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="n">perr</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Please edit '</span> <span class="o">+</span> <span class="n">makefile</span> <span class="o">+</span> + <span class="s1">' or try another Makefile in the src directory.'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Most likely GRIB_API_INCLUDE_DIR, GRIB_API_LIB '</span> + <span class="s1">'and EMOSLIB must be adapted.'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Available Makefiles:'</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="n">UioFiles</span><span class="p">(</span><span class="n">src_path</span><span class="p">,</span> <span class="s1">'Makefile*'</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">'Compilation failed!'</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> + <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">subprocess</span><span class="o">.</span><span class="n">check_call</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="k">return</span></div> + + +<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span> + <span class="n">main</span><span class="p">()</span> +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/prepare_flexpart.html b/documentation/Sphinx/build/html/_modules/prepare_flexpart.html new file mode 100644 index 0000000000000000000000000000000000000000..8367caf56607e6b3d87151ef959a224315aef66c --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/prepare_flexpart.html @@ -0,0 +1,401 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>prepare_flexpart — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>prepare_flexpart</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for prepare_flexpart</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Anne Fouilloux (University of Oslo)</span> +<span class="c1">#</span> +<span class="c1"># @Date: October 2014</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1">#</span> +<span class="c1"># November 2015 - Leopold Haimberger (University of Vienna):</span> +<span class="c1"># - using the WebAPI also for general MARS retrievals</span> +<span class="c1"># - job submission on ecgate and cca</span> +<span class="c1"># - job templates suitable for twice daily operational dissemination</span> +<span class="c1"># - dividing retrievals of longer periods into digestable chunks</span> +<span class="c1"># - retrieve also longer term forecasts, not only analyses and</span> +<span class="c1"># short term forecast data</span> +<span class="c1"># - conversion into GRIB2</span> +<span class="c1"># - conversion into .fp format for faster execution of FLEXPART</span> +<span class="c1">#</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added documentation</span> +<span class="c1"># - minor changes in programming style for consistence</span> +<span class="c1"># - BUG: removed call of clean_up-Function after call of</span> +<span class="c1"># prepareFlexpart in main since it is already called in</span> +<span class="c1"># prepareFlexpart at the end!</span> +<span class="c1"># - created function main and moved the two function calls for</span> +<span class="c1"># arguments and prepare_flexpart into it</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2014-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Program Functionality:</span> +<span class="c1"># This program prepares the final version of the grib files which are</span> +<span class="c1"># then used by FLEXPART. It converts the bunch of grib files extracted</span> +<span class="c1"># via get_mars_data by doing for example the necessary conversion to get</span> +<span class="c1"># consistent grids or the disaggregation of flux data. Finally, the</span> +<span class="c1"># program combines the data fields in files per available hour with the</span> +<span class="c1"># naming convention xxYYMMDDHH, where xx should be 2 arbitrary letters</span> +<span class="c1"># (mostly xx is chosen to be "EN").</span> +<span class="c1">#</span> +<span class="c1"># @Program Content:</span> +<span class="c1"># - main</span> +<span class="c1"># - prepare_flexpart</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">datetime</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">inspect</span> +<span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">socket</span> + +<span class="c1"># software specific classes and modules from flex_extract</span> + +<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</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">inspect</span><span class="o">.</span><span class="n">getfile</span><span class="p">(</span><span class="n">inspect</span><span class="o">.</span><span class="n">currentframe</span><span class="p">())))</span> <span class="o">+</span> <span class="s1">'/../'</span><span class="p">)</span> +<span class="kn">import</span> <span class="nn">_config</span> +<span class="kn">from</span> <span class="nn">classes.UioFiles</span> <span class="k">import</span> <span class="n">UioFiles</span> +<span class="kn">from</span> <span class="nn">classes.ControlFile</span> <span class="k">import</span> <span class="n">ControlFile</span> +<span class="kn">from</span> <span class="nn">tools</span> <span class="k">import</span> <span class="n">clean_up</span><span class="p">,</span> <span class="n">get_cmdline_arguments</span><span class="p">,</span> <span class="n">read_ecenv</span><span class="p">,</span> <span class="n">make_dir</span> +<span class="kn">from</span> <span class="nn">classes.EcFlexpart</span> <span class="k">import</span> <span class="n">EcFlexpart</span> + +<span class="n">ecapi</span> <span class="o">=</span> <span class="s1">'ecmwf'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">socket</span><span class="o">.</span><span class="n">gethostname</span><span class="p">()</span> +<span class="k">try</span><span class="p">:</span> + <span class="k">if</span> <span class="n">ecapi</span><span class="p">:</span> + <span class="kn">import</span> <span class="nn">ecmwfapi</span> +<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="n">ecapi</span> <span class="o">=</span> <span class="kc">False</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># FUNCTION</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<div class="viewcode-block" id="main"><a class="viewcode-back" href="../api.html#prepare_flexpart.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">():</span> + <span class="sd">'''Controls the program to prepare flexpart input files from mars data.</span> + +<span class="sd"> This is done if it is called directly from command line.</span> +<span class="sd"> Then it also takes program call arguments and control file input.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_arguments</span><span class="p">()</span> + <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> + + <span class="n">env_parameter</span> <span class="o">=</span> <span class="n">read_ecenv</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">)</span> + <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">c</span><span class="o">.</span><span class="n">assign_envs_to_control</span><span class="p">(</span><span class="n">env_parameter</span><span class="p">)</span> + <span class="n">c</span><span class="o">.</span><span class="n">check_conditions</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> + + <span class="n">prepare_flexpart</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="prepare_flexpart"><a class="viewcode-back" href="../api.html#prepare_flexpart.prepare_flexpart">[docs]</a><span class="k">def</span> <span class="nf">prepare_flexpart</span><span class="p">(</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span> + <span class="sd">'''Converts the mars data into flexpart ready input files.</span> + +<span class="sd"> Specific data fields are converted to a different grid and the flux</span> +<span class="sd"> data are going to be disaggregated. The data fields are collected by</span> +<span class="sd"> hour and stored in a file with a specific FLEXPART relevant naming</span> +<span class="sd"> convention.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> ppid : :obj:`int`</span> +<span class="sd"> Contains the ppid number of the current ECMWF job. It will be None if</span> +<span class="sd"> the method was called within this module.</span> + +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">ppid</span><span class="p">:</span> + <span class="n">c</span><span class="o">.</span><span class="n">ppid</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getppid</span><span class="p">())</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">c</span><span class="o">.</span><span class="n">ppid</span> <span class="o">=</span> <span class="n">ppid</span> + + <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span> <span class="o">=</span> <span class="n">ecapi</span> + + <span class="c1"># create the start and end date</span> + <span class="n">start</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="n">year</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span><span class="p">[:</span><span class="mi">4</span><span class="p">]),</span> + <span class="n">month</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">6</span><span class="p">]),</span> + <span class="n">day</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span><span class="p">[</span><span class="mi">6</span><span class="p">:]))</span> + + <span class="n">end</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="n">year</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span><span class="p">[:</span><span class="mi">4</span><span class="p">]),</span> + <span class="n">month</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">6</span><span class="p">]),</span> + <span class="n">day</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span><span class="p">[</span><span class="mi">6</span><span class="p">:]))</span> + + <span class="c1"># assign starting date minus 1 day</span> + <span class="c1"># since for basetime 00 we need the 12 hours upfront</span> + <span class="c1"># (the day before from 12 UTC to current day 00 UTC)</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="s1">'00'</span><span class="p">:</span> + <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</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">'Prepare '</span> <span class="o">+</span> <span class="n">start</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> <span class="o">+</span> + <span class="s2">"/to/"</span> <span class="o">+</span> <span class="n">end</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> + + <span class="c1"># create output dir if necessary</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">):</span> + <span class="n">make_dir</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">)</span> + + <span class="c1"># get all files with flux data to be deaccumulated</span> + <span class="n">inputfiles</span> <span class="o">=</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'*OG_acc_SL*.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ppid</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'.*'</span><span class="p">)</span> + + <span class="c1"># deaccumulate the flux data</span> + <span class="n">flexpart</span> <span class="o">=</span> <span class="n">EcFlexpart</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">fluxes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">flexpart</span><span class="o">.</span><span class="n">write_namelist</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> + <span class="n">flexpart</span><span class="o">.</span><span class="n">deacc_fluxes</span><span class="p">(</span><span class="n">inputfiles</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> + + <span class="c1"># get a list of all files from the root inputdir</span> + <span class="n">inputfiles</span> <span class="o">=</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">,</span> <span class="s1">'????__??.*'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ppid</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'.*'</span><span class="p">)</span> + + <span class="c1"># produce FLEXPART-ready GRIB files and process them -</span> + <span class="c1"># copy/transfer/interpolate them or make them GRIB2</span> + <span class="n">flexpart</span> <span class="o">=</span> <span class="n">EcFlexpart</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">fluxes</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">flexpart</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">inputfiles</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> + <span class="n">flexpart</span><span class="o">.</span><span class="n">process_output</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">grib2flexpart</span><span class="p">:</span> + <span class="c1"># prepare environment for a FLEXPART run</span> + <span class="c1"># to convert grib to flexpart binary format</span> + <span class="n">flexpart</span><span class="o">.</span><span class="n">prepare_fp_files</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> + + <span class="c1"># check if in debugging mode, then store all files</span> + <span class="c1"># otherwise delete temporary files</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Temporary files left intact'</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">clean_up</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> + + <span class="k">return</span></div> + +<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span> + <span class="n">main</span><span class="p">()</span> +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/submit.html b/documentation/Sphinx/build/html/_modules/submit.html new file mode 100644 index 0000000000000000000000000000000000000000..1c09c650d2958c413ecf4883923d972c1652aa29 --- /dev/null +++ b/documentation/Sphinx/build/html/_modules/submit.html @@ -0,0 +1,395 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>submit — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="index.html">Module code</a> »</li> + + <li>submit</li> + + + <li class="wy-breadcrumbs-aside"> + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for submit</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1">#*******************************************************************************</span> +<span class="c1"># @Author: Anne Fouilloux (University of Oslo)</span> +<span class="c1">#</span> +<span class="c1"># @Date: October 2014</span> +<span class="c1">#</span> +<span class="c1"># @Change History:</span> +<span class="c1">#</span> +<span class="c1"># November 2015 - Leopold Haimberger (University of Vienna):</span> +<span class="c1"># - job submission on ecgate and cca</span> +<span class="c1"># - job templates suitable for twice daily operational dissemination</span> +<span class="c1">#</span> +<span class="c1"># February 2018 - Anne Philipp (University of Vienna):</span> +<span class="c1"># - applied PEP8 style guide</span> +<span class="c1"># - added documentation</span> +<span class="c1"># - minor changes in programming style (for consistence)</span> +<span class="c1"># - changed path names to variables from config file</span> +<span class="c1"># - added option for writing mars requests to extra file</span> +<span class="c1"># additionally,as option without submitting the mars jobs</span> +<span class="c1">#</span> +<span class="c1"># @License:</span> +<span class="c1"># (C) Copyright 2014-2018.</span> +<span class="c1">#</span> +<span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> +<span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> +<span class="c1">#</span> +<span class="c1"># @Program Functionality:</span> +<span class="c1"># This program is the main program of flex_extract and controls the</span> +<span class="c1"># program flow.</span> +<span class="c1"># If it is supposed to work locally then it works through the necessary</span> +<span class="c1"># functions get_mars_data and prepareFlexpart. Otherwise it prepares</span> +<span class="c1"># a shell job script which will do the necessary work on the</span> +<span class="c1"># ECMWF server and is submitted via ecaccess-job-submit.</span> +<span class="c1">#</span> +<span class="c1"># @Program Content:</span> +<span class="c1"># - main</span> +<span class="c1"># - submit</span> +<span class="c1">#</span> +<span class="c1">#*******************************************************************************</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># MODULES</span> +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="kn">import</span> <span class="nn">os</span> +<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">inspect</span> +<span class="kn">import</span> <span class="nn">collections</span> + +<span class="c1"># software specific classes and modules from flex_extract</span> +<span class="kn">import</span> <span class="nn">_config</span> +<span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_arguments</span><span class="p">,</span> + <span class="n">submit_job_to_ecserver</span><span class="p">,</span> <span class="n">read_ecenv</span><span class="p">)</span> +<span class="kn">from</span> <span class="nn">mods.get_mars_data</span> <span class="k">import</span> <span class="n">get_mars_data</span> +<span class="kn">from</span> <span class="nn">mods.prepare_flexpart</span> <span class="k">import</span> <span class="n">prepare_flexpart</span> +<span class="kn">from</span> <span class="nn">classes.ControlFile</span> <span class="k">import</span> <span class="n">ControlFile</span> + +<span class="c1"># ------------------------------------------------------------------------------</span> +<span class="c1"># FUNCTIONS</span> +<span class="c1"># ------------------------------------------------------------------------------</span> + +<div class="viewcode-block" id="main"><a class="viewcode-back" href="../api.html#submit.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">():</span> + <span class="sd">'''Get the arguments from script call and from CONTROL file.</span> +<span class="sd"> Decides from the argument "queue" if the local version</span> +<span class="sd"> is done "queue=None" or the gateway version with "queue=ecgate"</span> +<span class="sd"> or "queue=cca".</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_arguments</span><span class="p">()</span> + <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> + + <span class="n">env_parameter</span> <span class="o">=</span> <span class="n">read_ecenv</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">)</span> + <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">c</span><span class="o">.</span><span class="n">assign_envs_to_control</span><span class="p">(</span><span class="n">env_parameter</span><span class="p">)</span> + <span class="n">c</span><span class="o">.</span><span class="n">check_conditions</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> + + <span class="c1"># on local side</span> + <span class="c1"># on ECMWF server this would also be the local side</span> + <span class="n">called_from_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">()</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">queue</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'/'</span><span class="p">:</span> + <span class="n">c</span><span class="o">.</span><span class="n">inputdir</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">called_from_dir</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'/'</span><span class="p">:</span> + <span class="n">c</span><span class="o">.</span><span class="n">outputdir</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">called_from_dir</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">outputdir</span><span class="p">)</span> + <span class="n">get_mars_data</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">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="n">prepare_flexpart</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> + <span class="n">normal_exit</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'FLEX_EXTRACT IS DONE!'</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">normal_exit</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'PRINTING MARS_REQUESTS DONE!'</span><span class="p">)</span> + <span class="c1"># send files to ECMWF server and install there</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">submit</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">job_template</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> + + <span class="k">return</span></div> + +<div class="viewcode-block" id="submit"><a class="viewcode-back" href="../api.html#submit.submit">[docs]</a><span class="k">def</span> <span class="nf">submit</span><span class="p">(</span><span class="n">jtemplate</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="sd">'''Prepares the job script and submit it to the specified queue.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> jtemplate : :obj:`string`</span> +<span class="sd"> Job template file from sub-directory "_templates" for</span> +<span class="sd"> submission to ECMWF. It contains all necessary</span> +<span class="sd"> module and variable settings for the ECMWF environment as well as</span> +<span class="sd"> the job call and mail report instructions.</span> +<span class="sd"> Default is "job.temp".</span> + +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> queue : :obj:`string`</span> +<span class="sd"> Name of queue for submission to ECMWF (e.g. ecgate or cca )</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + +<span class="sd"> '''</span> + + <span class="c1"># read template file and get index for CONTROL input</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">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">jtemplate</span><span class="p">))</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">lftext</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> + <span class="n">insert_point</span> <span class="o">=</span> <span class="n">lftext</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">'EOF'</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">basetime</span><span class="p">:</span> + <span class="c1"># --------- create on demand job script ------------------------------------</span> + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">24</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'---- Pure forecast mode! ----'</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'---- On-demand mode! ----'</span><span class="p">)</span> + <span class="n">job_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_JOBSCRIPTS</span><span class="p">,</span> + <span class="n">jtemplate</span><span class="p">[:</span><span class="o">-</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'ksh'</span><span class="p">)</span> + <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> + + <span class="n">lftextondemand</span> <span class="o">=</span> <span class="n">lftext</span><span class="p">[:</span><span class="n">insert_point</span><span class="p">]</span> <span class="o">+</span> <span class="n">clist</span> <span class="o">+</span> <span class="n">lftext</span><span class="p">[</span><span class="n">insert_point</span><span class="p">:]</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">job_file</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lftextondemand</span><span class="p">))</span> + + <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> + <span class="c1"># --------- create operational job script ----------------------------------</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'---- Operational mode! ----'</span><span class="p">)</span> + <span class="n">job_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_JOBSCRIPTS</span><span class="p">,</span> + <span class="n">jtemplate</span><span class="p">[:</span><span class="o">-</span><span class="mi">5</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'oper.ksh'</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span><span class="p">:</span> + <span class="n">mt</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">maxstep</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">mt</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="n">c</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_YEAR}</span><span class="s1">$</span><span class="si">{MSJ_MONTH}</span><span class="s1">$</span><span class="si">{MSJ_DAY}</span><span class="s1">'</span> + <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_YEAR}</span><span class="s1">$</span><span class="si">{MSJ_MONTH}</span><span class="s1">$</span><span class="si">{MSJ_DAY}</span><span class="s1">'</span> + <span class="n">c</span><span class="o">.</span><span class="n">base_time</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_BASETIME}</span><span class="s1">'</span> + <span class="k">if</span> <span class="n">mt</span> <span class="o">></span> <span class="mi">24</span><span class="p">:</span> + <span class="n">c</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_BASETIME}</span><span class="s1"> </span><span class="si">{MSJ_BASETIME}</span><span class="s1">'</span> + + <span class="n">colist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> + + <span class="n">lftextoper</span> <span class="o">=</span> <span class="n">lftext</span><span class="p">[:</span><span class="n">insert_point</span><span class="p">]</span> <span class="o">+</span> <span class="n">colist</span> <span class="o">+</span> <span class="n">lftext</span><span class="p">[</span><span class="n">insert_point</span> <span class="o">+</span> <span class="mi">2</span><span class="p">:]</span> + + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">job_file</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lftextoper</span><span class="p">))</span> + + <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span> + + <span class="c1"># --------------------------------------------------------------------------</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'You should get an email with subject flex.hostname.pid'</span><span class="p">)</span> + + <span class="k">return</span></div> + +<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span> + <span class="n">main</span><span class="p">()</span> +</pre></div> + + </div> + + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_modules/tools.html b/documentation/Sphinx/build/html/_modules/tools.html index aab9945234bd0da7c257bdf81047a1f49e319b54..cc69bc196f7f798232b1f63512d37948849ffe3b 100644 --- a/documentation/Sphinx/build/html/_modules/tools.html +++ b/documentation/Sphinx/build/html/_modules/tools.html @@ -212,57 +212,56 @@ <span class="c1"># FUNCTIONS</span> <span class="c1"># ------------------------------------------------------------------------------</span> -<div class="viewcode-block" id="none_or_str"><a class="viewcode-back" href="../code.html#tools.none_or_str">[docs]</a><span class="k">def</span> <span class="nf">none_or_str</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Converts the input string into pythons None-type if the string</span> -<span class="sd"> contains "None".</span> - -<span class="sd"> @Input:</span> -<span class="sd"> value: string</span> -<span class="sd"> String to be checked for the "None" word.</span> - -<span class="sd"> @Return:</span> -<span class="sd"> None or value:</span> -<span class="sd"> Return depends on the content of the input value. If it was "None",</span> -<span class="sd"> then the python type None is returned. Otherwise the string itself.</span> +<div class="viewcode-block" id="none_or_str"><a class="viewcode-back" href="../api.html#tools.none_or_str">[docs]</a><span class="k">def</span> <span class="nf">none_or_str</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> + <span class="sd">'''Converts the input string into pythons None-type if the string</span> +<span class="sd"> contains string "None".</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> value : :obj:`string`</span> +<span class="sd"> String to be checked for the "None" word.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> None or value:</span> +<span class="sd"> Return depends on the content of the input value. If it was "None",</span> +<span class="sd"> then the python type None is returned. Otherwise the string itself.</span> <span class="sd"> '''</span> <span class="k">if</span> <span class="n">value</span> <span class="o">==</span> <span class="s1">'None'</span><span class="p">:</span> <span class="k">return</span> <span class="kc">None</span> <span class="k">return</span> <span class="n">value</span></div> -<div class="viewcode-block" id="none_or_int"><a class="viewcode-back" href="../code.html#tools.none_or_int">[docs]</a><span class="k">def</span> <span class="nf">none_or_int</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Converts the input string into pythons None-type if the string</span> -<span class="sd"> contains "None". Otherwise it is converted to an integer value.</span> - -<span class="sd"> @Input:</span> -<span class="sd"> value: string</span> -<span class="sd"> String to be checked for the "None" word.</span> - -<span class="sd"> @Return:</span> -<span class="sd"> None or int(value):</span> -<span class="sd"> Return depends on the content of the input value. If it was "None",</span> -<span class="sd"> then the python type None is returned. Otherwise the string is</span> -<span class="sd"> converted into an integer value.</span> +<div class="viewcode-block" id="none_or_int"><a class="viewcode-back" href="../api.html#tools.none_or_int">[docs]</a><span class="k">def</span> <span class="nf">none_or_int</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> + <span class="sd">'''Converts the input string into pythons None-type if the string</span> +<span class="sd"> contains string "None". Otherwise it is converted to an integer value.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> value : :obj:`string`</span> +<span class="sd"> String to be checked for the "None" word.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> None or int(value):</span> +<span class="sd"> Return depends on the content of the input value. If it was "None",</span> +<span class="sd"> then the python type None is returned. Otherwise the string is</span> +<span class="sd"> converted into an integer value.</span> <span class="sd"> '''</span> <span class="k">if</span> <span class="n">value</span> <span class="o">==</span> <span class="s1">'None'</span><span class="p">:</span> <span class="k">return</span> <span class="kc">None</span> <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></div> -<div class="viewcode-block" id="get_cmdline_arguments"><a class="viewcode-back" href="../code.html#tools.get_cmdline_arguments">[docs]</a><span class="k">def</span> <span class="nf">get_cmdline_arguments</span><span class="p">():</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Decomposes the command line arguments and assigns them to variables.</span> -<span class="sd"> Apply default values for non mentioned arguments.</span> +<div class="viewcode-block" id="get_cmdline_arguments"><a class="viewcode-back" href="../api.html#tools.get_cmdline_arguments">[docs]</a><span class="k">def</span> <span class="nf">get_cmdline_arguments</span><span class="p">():</span> + <span class="sd">'''Decomposes the command line arguments and assigns them to variables.</span> +<span class="sd"> Apply default values for non mentioned arguments.</span> -<span class="sd"> @Input:</span> -<span class="sd"> <nothing></span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> -<span class="sd"> @Return:</span> -<span class="sd"> args: instance of ArgumentParser</span> -<span class="sd"> Contains the commandline arguments from script/program call.</span> +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> args : :obj:`Namespace`</span> +<span class="sd"> Contains the commandline arguments from script/program call.</span> <span class="sd"> '''</span> <span class="n">parser</span> <span class="o">=</span> <span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s1">'Retrieve FLEXPART input from </span><span class="se">\</span> @@ -341,20 +340,20 @@ <span class="k">return</span> <span class="n">args</span></div> -<div class="viewcode-block" id="read_ecenv"><a class="viewcode-back" href="../code.html#tools.read_ecenv">[docs]</a><span class="k">def</span> <span class="nf">read_ecenv</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Reads the file into a dictionary where the key values are the parameter</span> -<span class="sd"> names.</span> +<div class="viewcode-block" id="read_ecenv"><a class="viewcode-back" href="../api.html#tools.read_ecenv">[docs]</a><span class="k">def</span> <span class="nf">read_ecenv</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span> + <span class="sd">'''Reads the file into a dictionary where the key values are the parameter</span> +<span class="sd"> names.</span> -<span class="sd"> @Input:</span> -<span class="sd"> filename: string</span> -<span class="sd"> Path to file where the ECMWV environment parameters are stored.</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> filename : :obj:`string`</span> +<span class="sd"> Path to file where the ECMWF environment parameters are stored.</span> -<span class="sd"> @Return:</span> -<span class="sd"> envs: dict</span> -<span class="sd"> Contains the environment parameter ecuid, ecgid, gateway</span> -<span class="sd"> and destination for ECMWF server environments.</span> +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> envs : :obj:`dictionary`</span> +<span class="sd"> Contains the environment parameter ecuid, ecgid, gateway</span> +<span class="sd"> and destination for ECMWF server environments.</span> <span class="sd"> '''</span> <span class="n">envs</span><span class="o">=</span> <span class="p">{}</span> @@ -365,21 +364,18 @@ <span class="k">return</span> <span class="n">envs</span></div> -<div class="viewcode-block" id="clean_up"><a class="viewcode-back" href="../code.html#tools.clean_up">[docs]</a><span class="k">def</span> <span class="nf">clean_up</span><span class="p">(</span><span class="n">c</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Remove all files from intermediate directory</span> -<span class="sd"> (inputdir from CONTROL file).</span> - -<span class="sd"> @Input:</span> -<span class="sd"> c: instance of class ControlFile</span> -<span class="sd"> Contains all the parameters of CONTROL file and</span> -<span class="sd"> command line.</span> -<span class="sd"> For more information about format and content of the parameter</span> -<span class="sd"> see documentation.</span> - -<span class="sd"> @Return:</span> -<span class="sd"> <nothing></span> +<div class="viewcode-block" id="clean_up"><a class="viewcode-back" href="../api.html#tools.clean_up">[docs]</a><span class="k">def</span> <span class="nf">clean_up</span><span class="p">(</span><span class="n">c</span><span class="p">):</span> + <span class="sd">'''Remove all files from intermediate directory (inputdir).</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> c : :obj:`ControlFile`</span> +<span class="sd"> Contains all the parameters of CONTROL file and</span> +<span class="sd"> command line.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> + <span class="sd"> '''</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"clean_up"</span><span class="p">)</span> @@ -396,23 +392,23 @@ <span class="k">return</span></div> -<div class="viewcode-block" id="my_error"><a class="viewcode-back" href="../code.html#tools.my_error">[docs]</a><span class="k">def</span> <span class="nf">my_error</span><span class="p">(</span><span class="n">users</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s1">'ERROR'</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Prints a specified error message which can be passed to the function</span> -<span class="sd"> before exiting the program.</span> +<div class="viewcode-block" id="my_error"><a class="viewcode-back" href="../api.html#tools.my_error">[docs]</a><span class="k">def</span> <span class="nf">my_error</span><span class="p">(</span><span class="n">users</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s1">'ERROR'</span><span class="p">):</span> + <span class="sd">'''Prints a specified error message which can be passed to the function</span> +<span class="sd"> before exiting the program.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> user : :obj:`list` of :obj:`string`</span> +<span class="sd"> Contains all email addresses which should be notified.</span> +<span class="sd"> It might also contain just the ecmwf user name which wil trigger</span> +<span class="sd"> mailing to the associated email address for this user.</span> -<span class="sd"> @Input:</span> -<span class="sd"> user: list of strings</span> -<span class="sd"> Contains all email addresses which should be notified.</span> -<span class="sd"> It might also contain just the ecmwf user name which wil trigger</span> -<span class="sd"> mailing to the associated email address for this user.</span> +<span class="sd"> message : :obj:`string`, optional</span> +<span class="sd"> Error message. Default value is "ERROR".</span> -<span class="sd"> message: string, optional</span> -<span class="sd"> Error message. Default value is "ERROR".</span> +<span class="sd"> Return</span> +<span class="sd"> ------</span> -<span class="sd"> @Return:</span> -<span class="sd"> <nothing></span> <span class="sd"> '''</span> <span class="nb">print</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> @@ -442,22 +438,21 @@ <span class="k">return</span></div> -<div class="viewcode-block" id="normal_exit"><a class="viewcode-back" href="../code.html#tools.normal_exit">[docs]</a><span class="k">def</span> <span class="nf">normal_exit</span><span class="p">(</span><span class="n">users</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s1">'Done!'</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Prints a specific exit message which can be passed to the function.</span> +<div class="viewcode-block" id="normal_exit"><a class="viewcode-back" href="../api.html#tools.normal_exit">[docs]</a><span class="k">def</span> <span class="nf">normal_exit</span><span class="p">(</span><span class="n">users</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s1">'Done!'</span><span class="p">):</span> + <span class="sd">'''Prints a specific exit message which can be passed to the function.</span> -<span class="sd"> @Input:</span> -<span class="sd"> user: list of strings</span> -<span class="sd"> Contains all email addresses which should be notified.</span> -<span class="sd"> It might also contain just the ecmwf user name which wil trigger</span> -<span class="sd"> mailing to the associated email address for this user.</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> user : :obj:`list` of :obj:`string`</span> +<span class="sd"> Contains all email addresses which should be notified.</span> +<span class="sd"> It might also contain just the ecmwf user name which wil trigger</span> +<span class="sd"> mailing to the associated email address for this user.</span> -<span class="sd"> message: string, optional</span> -<span class="sd"> Message for exiting program. Default value is "Done!".</span> +<span class="sd"> message : :obj:`string`, optional</span> +<span class="sd"> Message for exiting program. Default value is "Done!".</span> -<span class="sd"> @Return:</span> -<span class="sd"> <nothing></span> +<span class="sd"> Return</span> +<span class="sd"> ------</span> <span class="sd"> '''</span> <span class="nb">print</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> @@ -484,31 +479,35 @@ <span class="k">return</span></div> -<div class="viewcode-block" id="product"><a class="viewcode-back" href="../code.html#tools.product">[docs]</a><span class="k">def</span> <span class="nf">product</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwds</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> This method is taken from an example at the ECMWF wiki website.</span> -<span class="sd"> https://software.ecmwf.int/wiki/display/GRIB/index.py; 2018-03-16</span> +<div class="viewcode-block" id="product"><a class="viewcode-back" href="../api.html#tools.product">[docs]</a><span class="k">def</span> <span class="nf">product</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwds</span><span class="p">):</span> + <span class="sd">'''This method combines the single characters of the passed arguments</span> +<span class="sd"> with each other. So that each character of each argument value</span> +<span class="sd"> will be combined with each character of the other arguments as a tuple.</span> -<span class="sd"> This method combines the single characters of the passed arguments</span> -<span class="sd"> with each other. So that each character of each argument value</span> -<span class="sd"> will be combined with each character of the other arguments as a tuple.</span> +<span class="sd"> Note</span> +<span class="sd"> ----</span> +<span class="sd"> This method is taken from an example at the ECMWF wiki website.</span> +<span class="sd"> https://software.ecmwf.int/wiki/display/GRIB/index.py; 2018-03-16</span> -<span class="sd"> Example:</span> -<span class="sd"> product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy</span> -<span class="sd"> product(range(2), repeat = 3) --> 000 001 010 011 100 101 110 111</span> +<span class="sd"> Example</span> +<span class="sd"> -------</span> +<span class="sd"> product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy</span> -<span class="sd"> @Input:</span> -<span class="sd"> *args: tuple</span> -<span class="sd"> Positional arguments (arbitrary number).</span> +<span class="sd"> product(range(2), repeat = 3) --> 000 001 010 011 100 101 110 111</span> -<span class="sd"> **kwds: dictionary</span> -<span class="sd"> Contains all the keyword arguments from *args.</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> \*args : :obj:`tuple`</span> +<span class="sd"> Positional arguments (arbitrary number).</span> -<span class="sd"> @Return:</span> -<span class="sd"> prod: tuple</span> -<span class="sd"> Return will be done with "yield". A tuple of combined arguments.</span> -<span class="sd"> See example in description above.</span> +<span class="sd"> \*\*kwds : :obj:`dictionary`</span> +<span class="sd"> Contains all the keyword arguments from \*args.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> prod : :obj:`tuple`</span> +<span class="sd"> Return will be done with "yield". A tuple of combined arguments.</span> +<span class="sd"> See example in description above.</span> <span class="sd"> '''</span> <span class="n">pools</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="nb">tuple</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> <span class="o">*</span> <span class="n">kwds</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'repeat'</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="n">result</span> <span class="o">=</span> <span class="p">[[]]</span> @@ -520,18 +519,18 @@ <span class="k">return</span></div> -<div class="viewcode-block" id="silent_remove"><a class="viewcode-back" href="../code.html#tools.silent_remove">[docs]</a><span class="k">def</span> <span class="nf">silent_remove</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Remove file if it exists.</span> -<span class="sd"> The function does not fail if the file does not exist.</span> +<div class="viewcode-block" id="silent_remove"><a class="viewcode-back" href="../api.html#tools.silent_remove">[docs]</a><span class="k">def</span> <span class="nf">silent_remove</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span> + <span class="sd">'''Remove file if it exists.</span> +<span class="sd"> The function does not fail if the file does not exist.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> filename : :obj:`string`</span> +<span class="sd"> The name of the file to be removed without notification.</span> -<span class="sd"> @Input:</span> -<span class="sd"> filename: string</span> -<span class="sd"> The name of the file to be removed without notification.</span> +<span class="sd"> Return</span> +<span class="sd"> ------</span> -<span class="sd"> @Return:</span> -<span class="sd"> <nothing></span> <span class="sd"> '''</span> <span class="k">try</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">filename</span><span class="p">)</span> @@ -543,20 +542,20 @@ <span class="k">return</span></div> -<div class="viewcode-block" id="init128"><a class="viewcode-back" href="../code.html#tools.init128">[docs]</a><span class="k">def</span> <span class="nf">init128</span><span class="p">(</span><span class="n">filepath</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Opens and reads the grib file with table 128 information.</span> +<div class="viewcode-block" id="init128"><a class="viewcode-back" href="../api.html#tools.init128">[docs]</a><span class="k">def</span> <span class="nf">init128</span><span class="p">(</span><span class="n">filepath</span><span class="p">):</span> + <span class="sd">'''Opens and reads the grib file with table 128 information.</span> -<span class="sd"> @Input:</span> -<span class="sd"> filepath: string</span> -<span class="sd"> Path to file of ECMWF grib table number 128.</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> filepath : :obj:`string`</span> +<span class="sd"> Path to file of ECMWF grib table number 128.</span> -<span class="sd"> @Return:</span> -<span class="sd"> table128: dictionary</span> -<span class="sd"> Contains the ECMWF grib table 128 information.</span> -<span class="sd"> The key is the parameter number and the value is the</span> -<span class="sd"> short name of the parameter.</span> +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> table128 : :obj:`dictionary`</span> +<span class="sd"> Contains the ECMWF grib table 128 information.</span> +<span class="sd"> The key is the parameter number and the value is the</span> +<span class="sd"> short name of the parameter.</span> <span class="sd"> '''</span> <span class="n">table128</span> <span class="o">=</span> <span class="nb">dict</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="k">as</span> <span class="n">f</span><span class="p">:</span> @@ -568,28 +567,27 @@ <span class="k">return</span> <span class="n">table128</span></div> -<div class="viewcode-block" id="to_param_id"><a class="viewcode-back" href="../code.html#tools.to_param_id">[docs]</a><span class="k">def</span> <span class="nf">to_param_id</span><span class="p">(</span><span class="n">pars</span><span class="p">,</span> <span class="n">table</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Transform parameter names to parameter ids</span> -<span class="sd"> with ECMWF grib table 128.</span> - -<span class="sd"> @Input:</span> -<span class="sd"> pars: string</span> -<span class="sd"> Addpar argument from CONTROL file in the format of</span> -<span class="sd"> parameter names instead of ids. The parameter short</span> -<span class="sd"> names are sepearted with "/" and they are passed as</span> -<span class="sd"> one single string.</span> - -<span class="sd"> table: dictionary</span> -<span class="sd"> Contains the ECMWF grib table 128 information.</span> -<span class="sd"> The key is the parameter number and the value is the</span> -<span class="sd"> short name of the parameter.</span> - -<span class="sd"> @Return:</span> -<span class="sd"> ipar: list of integer</span> -<span class="sd"> List of addpar parameters from CONTROL file transformed to</span> -<span class="sd"> parameter ids in the format of integer.</span> +<div class="viewcode-block" id="to_param_id"><a class="viewcode-back" href="../api.html#tools.to_param_id">[docs]</a><span class="k">def</span> <span class="nf">to_param_id</span><span class="p">(</span><span class="n">pars</span><span class="p">,</span> <span class="n">table</span><span class="p">):</span> + <span class="sd">'''Transform parameter names to parameter ids with ECMWF grib table 128.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> pars : :obj:`string`</span> +<span class="sd"> Addpar argument from CONTROL file in the format of</span> +<span class="sd"> parameter names instead of ids. The parameter short</span> +<span class="sd"> names are sepearted with "/" and they are passed as</span> +<span class="sd"> one single string.</span> + +<span class="sd"> table : :obj:`dictionary`</span> +<span class="sd"> Contains the ECMWF grib table 128 information.</span> +<span class="sd"> The key is the parameter number and the value is the</span> +<span class="sd"> short name of the parameter.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> ipar : :obj:`list` of :obj:`integer`</span> +<span class="sd"> List of addpar parameters from CONTROL file transformed to</span> +<span class="sd"> parameter ids in the format of integer.</span> <span class="sd"> '''</span> <span class="n">cpar</span> <span class="o">=</span> <span class="n">pars</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span> <span class="n">ipar</span> <span class="o">=</span> <span class="p">[]</span> @@ -603,40 +601,40 @@ <span class="k">return</span> <span class="n">ipar</span></div> -<div class="viewcode-block" id="get_list_as_string"><a class="viewcode-back" href="../code.html#tools.get_list_as_string">[docs]</a><span class="k">def</span> <span class="nf">get_list_as_string</span><span class="p">(</span><span class="n">list_obj</span><span class="p">,</span> <span class="n">concatenate_sign</span><span class="o">=</span><span class="s1">', '</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Converts a list of arbitrary content into a single string.</span> +<div class="viewcode-block" id="get_list_as_string"><a class="viewcode-back" href="../api.html#tools.get_list_as_string">[docs]</a><span class="k">def</span> <span class="nf">get_list_as_string</span><span class="p">(</span><span class="n">list_obj</span><span class="p">,</span> <span class="n">concatenate_sign</span><span class="o">=</span><span class="s1">', '</span><span class="p">):</span> + <span class="sd">'''Converts a list of arbitrary content into a single string.</span> -<span class="sd"> @Input:</span> -<span class="sd"> list_obj: list</span> -<span class="sd"> A list with arbitrary content.</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> list_obj : :obj:`list`</span> +<span class="sd"> A list with arbitrary content.</span> -<span class="sd"> concatenate_sign: string, optional</span> -<span class="sd"> A string which is used to concatenate the single</span> -<span class="sd"> list elements. Default value is ", ".</span> +<span class="sd"> concatenate_sign : :obj:`string`, optional</span> +<span class="sd"> A string which is used to concatenate the single</span> +<span class="sd"> list elements. Default value is ", ".</span> -<span class="sd"> @Return:</span> -<span class="sd"> str_of_list: string</span> -<span class="sd"> The content of the list as a single string.</span> +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> str_of_list : :obj:`string`</span> +<span class="sd"> The content of the list as a single string.</span> <span class="sd"> '''</span> <span class="n">str_of_list</span> <span class="o">=</span> <span class="n">concatenate_sign</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">list_obj</span><span class="p">)</span> <span class="k">return</span> <span class="n">str_of_list</span></div> -<div class="viewcode-block" id="make_dir"><a class="viewcode-back" href="../code.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">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Creates a directory and gives a warning if the directory</span> -<span class="sd"> already exists. The program stops only if there is another problem.</span> +<div class="viewcode-block" id="make_dir"><a class="viewcode-back" href="../api.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 and gives a warning if the directory</span> +<span class="sd"> already exists. The program stops only if there is another problem.</span> -<span class="sd"> @Input:</span> -<span class="sd"> directory: string</span> -<span class="sd"> The directory name including the path which should be created.</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> directory : :obj:`string`</span> +<span class="sd"> The directory name including the path which should be created.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> -<span class="sd"> @Return:</span> -<span class="sd"> <nothing></span> <span class="sd"> '''</span> <span class="k">try</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span> @@ -649,36 +647,37 @@ <span class="k">return</span></div> -<div class="viewcode-block" id="put_file_to_ecserver"><a class="viewcode-back" href="../code.html#tools.put_file_to_ecserver">[docs]</a><span class="k">def</span> <span class="nf">put_file_to_ecserver</span><span class="p">(</span><span class="n">ecd</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Uses the ecaccess-file-put command to send a file to the ECMWF servers.</span> +<div class="viewcode-block" id="put_file_to_ecserver"><a class="viewcode-back" href="../api.html#tools.put_file_to_ecserver">[docs]</a><span class="k">def</span> <span class="nf">put_file_to_ecserver</span><span class="p">(</span><span class="n">ecd</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">ecuid</span><span class="p">,</span> <span class="n">ecgid</span><span class="p">):</span> + <span class="sd">'''Uses the ecaccess-file-put command to send a file to the ECMWF servers.</span> -<span class="sd"> NOTE:</span> -<span class="sd"> The return value is just for testing reasons. It does not have</span> -<span class="sd"> to be used from the calling function since the whole error handling</span> -<span class="sd"> is done in here.</span> +<span class="sd"> Note</span> +<span class="sd"> ----</span> +<span class="sd"> The return value is just for testing reasons. It does not have</span> +<span class="sd"> to be used from the calling function since the whole error handling</span> +<span class="sd"> is done in here.</span> -<span class="sd"> @Input:</span> -<span class="sd"> ecd: string</span> -<span class="sd"> The path were the file is stored.</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> ecd : :obj:`string`</span> +<span class="sd"> The path were the file is stored.</span> -<span class="sd"> filename: string</span> -<span class="sd"> The name of the file to send to the ECMWF server.</span> +<span class="sd"> filename : :obj:`string`</span> +<span class="sd"> The name of the file to send to the ECMWF server.</span> -<span class="sd"> target: string</span> -<span class="sd"> The target queue where the file should be sent to.</span> +<span class="sd"> target : :obj:`string`</span> +<span class="sd"> The target queue where the file should be sent to.</span> -<span class="sd"> ecuid: string</span> -<span class="sd"> The user id on ECMWF server.</span> +<span class="sd"> ecuid : :obj:`string`</span> +<span class="sd"> The user id on ECMWF server.</span> -<span class="sd"> ecgid: string</span> -<span class="sd"> The group id on ECMWF server.</span> +<span class="sd"> ecgid : :obj:`string`</span> +<span class="sd"> The group id on ECMWF server.</span> -<span class="sd"> @Return:</span> -<span class="sd"> rcode: string</span> -<span class="sd"> Resulting code of command execution. If successful the string</span> -<span class="sd"> will be empty.</span> +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> rcode : :obj:`string`</span> +<span class="sd"> Resulting code of command execution. If successful the string</span> +<span class="sd"> will be empty.</span> <span class="sd"> '''</span> <span class="k">try</span><span class="p">:</span> @@ -697,28 +696,29 @@ <span class="k">return</span> <span class="n">rcode</span></div> -<div class="viewcode-block" id="submit_job_to_ecserver"><a class="viewcode-back" href="../code.html#tools.submit_job_to_ecserver">[docs]</a><span class="k">def</span> <span class="nf">submit_job_to_ecserver</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">jobname</span><span class="p">):</span> - <span class="sd">'''</span> -<span class="sd"> @Description:</span> -<span class="sd"> Uses ecaccess-job-submit command to submit a job to the ECMWF server.</span> - -<span class="sd"> NOTE:</span> -<span class="sd"> The return value is just for testing reasons. It does not have</span> -<span class="sd"> to be used from the calling function since the whole error handling</span> -<span class="sd"> is done in here.</span> - -<span class="sd"> @Input:</span> -<span class="sd"> target: string</span> -<span class="sd"> The target where the file should be sent to, e.g. the queue.</span> - -<span class="sd"> jobname: string</span> -<span class="sd"> The name of the jobfile to be submitted to the ECMWF server.</span> - -<span class="sd"> @Return:</span> -<span class="sd"> rcode: string</span> -<span class="sd"> Resulting code of command execution. If successful the string</span> -<span class="sd"> will contain an integer number, representing the id of the job</span> -<span class="sd"> at the ecmwf server.</span> +<div class="viewcode-block" id="submit_job_to_ecserver"><a class="viewcode-back" href="../api.html#tools.submit_job_to_ecserver">[docs]</a><span class="k">def</span> <span class="nf">submit_job_to_ecserver</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">jobname</span><span class="p">):</span> + <span class="sd">'''Uses ecaccess-job-submit command to submit a job to the ECMWF server.</span> + +<span class="sd"> Note</span> +<span class="sd"> ----</span> +<span class="sd"> The return value is just for testing reasons. It does not have</span> +<span class="sd"> to be used from the calling function since the whole error handling</span> +<span class="sd"> is done in here.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> target : :obj:`string`</span> +<span class="sd"> The target where the file should be sent to, e.g. the queue.</span> + +<span class="sd"> jobname : :obj:`string`</span> +<span class="sd"> The name of the jobfile to be submitted to the ECMWF server.</span> + +<span class="sd"> Return</span> +<span class="sd"> ------</span> +<span class="sd"> rcode : :obj:`string`</span> +<span class="sd"> Resulting code of command execution. If successful the string</span> +<span class="sd"> will contain an integer number, representing the id of the job</span> +<span class="sd"> at the ecmwf server.</span> <span class="sd"> '''</span> <span class="k">try</span><span class="p">:</span> diff --git a/documentation/Sphinx/build/html/_sources/api.rst.txt b/documentation/Sphinx/build/html/_sources/api.rst.txt index 6c03ff4f8d0ec6edf7d928bcc5edf3592d348482..5b4acb2e3b2d06d609aac8ae20ae7e986c89bf45 100644 --- a/documentation/Sphinx/build/html/_sources/api.rst.txt +++ b/documentation/Sphinx/build/html/_sources/api.rst.txt @@ -1,5 +1,82 @@ Auto Generated Documentation ============================ +.. contents:: + :local: + +Porgrams +-------- + +install +******* + +.. automodule:: install + :members: + +submit +****** + +.. automodule:: submit + :members: + +Classes +------- + +ControlFile +*********** + +.. automodule:: ControlFile + :members: + +EcFlexpart +********** + +.. automodule:: EcFlexpart + :members: + +GribTools +********* + +.. automodule:: GribTools + :members: + +MarsRetrieval +************* + +.. automodule:: MarsRetrieval + :members: + +UioFiles +******** + +.. automodule:: UioFiles + :members: + + + +Modules +------- + +get_mars_data +************* + +.. automodule:: get_mars_data + :members: + +prepare_flexpart +**************** + +.. automodule:: prepare_flexpart + :members: + +tools +***** + +.. automodule:: tools + :members: + +disaggregation +************** + .. automodule:: disaggregation :members: diff --git a/documentation/Sphinx/build/html/_sources/downloads.rst.txt b/documentation/Sphinx/build/html/_sources/downloads.rst.txt index 42e62df785c0597039cd86c5eec63a353b5998a7..676a1fe6eef2890f713c09cf94b9d7c241f9575c 100644 --- a/documentation/Sphinx/build/html/_sources/downloads.rst.txt +++ b/documentation/Sphinx/build/html/_sources/downloads.rst.txt @@ -3,4 +3,13 @@ Downloads Describe download options of flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + +.. toctree:: + :hidden: + :maxdepth: 2 + + downloads/tar_balls + downloads/git_repo + downloads/history_changes + \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/downloads/git_repo.rst.txt b/documentation/Sphinx/build/html/_sources/downloads/git_repo.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..a1f7acf4ba0f9d63f9a1114880d78065931a7287 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/downloads/git_repo.rst.txt @@ -0,0 +1,4 @@ +Git Repository +============== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/downloads/history_changes.rst.txt b/documentation/Sphinx/build/html/_sources/downloads/history_changes.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..763420b97d8a6b8ec283e59b3533f423dada8332 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/downloads/history_changes.rst.txt @@ -0,0 +1,4 @@ +History of Changes +================== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/downloads/tar_balls.rst.txt b/documentation/Sphinx/build/html/_sources/downloads/tar_balls.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..a06dc1121abd5e07d23e78e0baf39fc69e76d8f7 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/downloads/tar_balls.rst.txt @@ -0,0 +1,4 @@ +Download tar-balls +================== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/index.rst.txt b/documentation/Sphinx/build/html/_sources/index.rst.txt index 3ca3be980b300913e6ae2359ef71429ef857705e..1f8cded2931b4e01948e5f1d75c99ac7603de5ac 100644 --- a/documentation/Sphinx/build/html/_sources/index.rst.txt +++ b/documentation/Sphinx/build/html/_sources/index.rst.txt @@ -3,8 +3,19 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Welcome to flex_extract's documentation! -======================================== +Welcome to flex_extract's user documentation! +============================================= + +flex_extract is a software to retrieve meteorological fields from the European Centre for Medium-Range Weather Forecasts (ECMWF) Mars archive to server as input files for the FLEXTRA/FLEXPART Atmospheric Transport Modelling system. + + +.. The scripts can be 1) executed locally using the ECMWF WebMARS interface, or 2) on the ECMWF member +.. state gateway server or HPC facility using the ecaccess software package. As another option the scripts can 3) +.. also be triggered using ecflow scheduling software used by ECMWF for data dissemination. + +All required second party software and libraries used within flex_extract is open source and free of charge. + + .. raw:: html <table style="width:100%;"> @@ -86,7 +97,7 @@ Welcome to flex_extract's documentation! License text put in here! Which one? .. toctree:: - :maxdepth: 2 + :maxdepth: 3 :caption: Table of Contents: downloads diff --git a/documentation/Sphinx/build/html/_sources/installation.rst.txt b/documentation/Sphinx/build/html/_sources/installation.rst.txt index 7e3757232bb167a27daadf75c283f2156008c433..f759bc9c75a0c7ec6bde0b9a54a444b9a745c157 100644 --- a/documentation/Sphinx/build/html/_sources/installation.rst.txt +++ b/documentation/Sphinx/build/html/_sources/installation.rst.txt @@ -1,6 +1,15 @@ Installation ============ - -Describe installation process flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + +.. toctree:: + :hidden: + :maxdepth: 2 + + installation/requirements + installation/oper_modes + installation/test_install + + + \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/installation/oper_modes.rst.txt b/documentation/Sphinx/build/html/_sources/installation/oper_modes.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..72e86f5a665570cf8300925f9dcffce8d1aaff96 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/installation/oper_modes.rst.txt @@ -0,0 +1,6 @@ +Operating modes +=============== + + + UNDER CONSTRUCTION + \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/installation/requirements.rst.txt b/documentation/Sphinx/build/html/_sources/installation/requirements.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..c1bae21176f9c5855a165a08b99cfe1f1cb01fe2 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/installation/requirements.rst.txt @@ -0,0 +1,6 @@ +Requirements +============ + + + UNDER CONSTRUCTION + diff --git a/documentation/Sphinx/build/html/_sources/installation/test_install.rst.txt b/documentation/Sphinx/build/html/_sources/installation/test_install.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..25430881a2b41b06f46aad93f1fa4d2157f7315d --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/installation/test_install.rst.txt @@ -0,0 +1,5 @@ +Installation test +================= + + UNDER CONSTRUCTION + \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/oper_modes.rst.txt b/documentation/Sphinx/build/html/_sources/oper_modes.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..72e86f5a665570cf8300925f9dcffce8d1aaff96 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/oper_modes.rst.txt @@ -0,0 +1,6 @@ +Operating modes +=============== + + + UNDER CONSTRUCTION + \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/program_structure.rst.txt b/documentation/Sphinx/build/html/_sources/program_structure.rst.txt index 3bfab6cca1e72c3798dfb70ce7e5ee55862f04fe..991b373c30c6cb629680d3eb2337566a68d92746 100644 --- a/documentation/Sphinx/build/html/_sources/program_structure.rst.txt +++ b/documentation/Sphinx/build/html/_sources/program_structure.rst.txt @@ -3,4 +3,12 @@ Program Structure Describe structure of flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + +.. toctree:: + :hidden: + :maxdepth: 2 + + program_structure/prog_overview + program_structure/prog_components + program_structure/prog_flow diff --git a/documentation/Sphinx/build/html/_sources/program_structure/prog_components.rst.txt b/documentation/Sphinx/build/html/_sources/program_structure/prog_components.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..0c7d560623a755cc2f92eaba094ae5a1d1094f77 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/program_structure/prog_components.rst.txt @@ -0,0 +1,5 @@ +Program Components +================== + + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/program_structure/prog_flow.rst.txt b/documentation/Sphinx/build/html/_sources/program_structure/prog_flow.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..07c4d84fc68ac29fc1da73bbc41f582eb386e726 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/program_structure/prog_flow.rst.txt @@ -0,0 +1,5 @@ +Program Flow +================ + + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/program_structure/prog_overview.rst.txt b/documentation/Sphinx/build/html/_sources/program_structure/prog_overview.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..15cb629d2847122e0021ca03767d8940f52a07ca --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/program_structure/prog_overview.rst.txt @@ -0,0 +1,5 @@ +Program Overview +================ + + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/requirements.rst.txt b/documentation/Sphinx/build/html/_sources/requirements.rst.txt index b1f562dd99c1a0c98f1706092eae602fedcb6179..c1bae21176f9c5855a165a08b99cfe1f1cb01fe2 100644 --- a/documentation/Sphinx/build/html/_sources/requirements.rst.txt +++ b/documentation/Sphinx/build/html/_sources/requirements.rst.txt @@ -1,6 +1,6 @@ Requirements ============ -Describe the requirements to use flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + diff --git a/documentation/Sphinx/build/html/_sources/support.rst.txt b/documentation/Sphinx/build/html/_sources/support.rst.txt index cd5fe0ed356ffff558d6cdbf3a4d49efc0706660..bccf1bf4a00443f53bbeb9067a04d656a6498bde 100644 --- a/documentation/Sphinx/build/html/_sources/support.rst.txt +++ b/documentation/Sphinx/build/html/_sources/support.rst.txt @@ -1,6 +1,16 @@ Support ======= -Describe support options .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + + +.. toctree:: + :hidden: + :maxdepth: 2 + + support/ticket_system + support/mailing_list + support/known_bugs_issues + support/faq + \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/support/faq.rst.txt b/documentation/Sphinx/build/html/_sources/support/faq.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..ccfe36a63439c496b8e05036df36d02d6e2588b7 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/support/faq.rst.txt @@ -0,0 +1,4 @@ +FAQ - Frequently asked questions +================================ + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/support/known_bugs_issues.rst.txt b/documentation/Sphinx/build/html/_sources/support/known_bugs_issues.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..8748ad8172249cba3055858194d6aea4497237e2 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/support/known_bugs_issues.rst.txt @@ -0,0 +1,4 @@ +Known Bugs and Issues +===================== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/support/mailing_list.rst.txt b/documentation/Sphinx/build/html/_sources/support/mailing_list.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..e0f50126f9bc64b38a174a1adc31200faee7d1e8 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/support/mailing_list.rst.txt @@ -0,0 +1,4 @@ +Mailing Lists +============= + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/support/ticket_system.rst.txt b/documentation/Sphinx/build/html/_sources/support/ticket_system.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..58b73a6ced4ae84106553d0a72e15dc9749e4ea7 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/support/ticket_system.rst.txt @@ -0,0 +1,4 @@ +Ticket System +============= + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/test_install.rst.txt b/documentation/Sphinx/build/html/_sources/test_install.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..25430881a2b41b06f46aad93f1fa4d2157f7315d --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/test_install.rst.txt @@ -0,0 +1,5 @@ +Installation test +================= + + UNDER CONSTRUCTION + \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/user_guide.rst.txt b/documentation/Sphinx/build/html/_sources/user_guide.rst.txt index 030a019875c2fdfb8d42f93b6c8eaae8da7c83c9..4fe6dc0befd49df56a1969e7cc713ebcce95cdf2 100644 --- a/documentation/Sphinx/build/html/_sources/user_guide.rst.txt +++ b/documentation/Sphinx/build/html/_sources/user_guide.rst.txt @@ -1,6 +1,12 @@ User Guide ========== - -Describe using flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + +.. toctree:: + :hidden: + :maxdepth: 2 + + user_guide/how_to + user_guide/control_templates + \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/user_guide/control_templates.rst.txt b/documentation/Sphinx/build/html/_sources/user_guide/control_templates.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..ccd58c5244ef8d41ffca4b974fcd9657f0d4ecfc --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/user_guide/control_templates.rst.txt @@ -0,0 +1,4 @@ +CONTROL-file templates +====================== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/_sources/user_guide/how_to.rst.txt b/documentation/Sphinx/build/html/_sources/user_guide/how_to.rst.txt new file mode 100644 index 0000000000000000000000000000000000000000..7e041b4e1071ef3d540c222051a773069a02af94 --- /dev/null +++ b/documentation/Sphinx/build/html/_sources/user_guide/how_to.rst.txt @@ -0,0 +1,4 @@ +How to use flex_extract +======================= + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/build/html/api.html b/documentation/Sphinx/build/html/api.html index d9cfd4f269593870bb1ee8f6ee7a31a51d39c2dc..e52216bb65922b871a122adee5ab5f555321dd6c 100644 --- a/documentation/Sphinx/build/html/api.html +++ b/documentation/Sphinx/build/html/api.html @@ -29,7 +29,7 @@ <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> <link rel="next" title="Support" href="support.html" /> - <link rel="prev" title="User Guide" href="user_guide.html" /> + <link rel="prev" title="CONTROL-file templates" href="user_guide/control_templates.html" /> <script src="_static/js/modernizr.min.js"></script> @@ -88,74 +88,1229 @@ <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li> <li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> -<li class="toctree-l1 current"><a class="current reference internal" href="#">Auto Generated Documentation</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Auto Generated Documentation</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#porgrams">Porgrams</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#module-install">install</a></li> +<li class="toctree-l3"><a class="reference internal" href="#module-submit">submit</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#classes">Classes</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#module-ControlFile">ControlFile</a></li> +<li class="toctree-l3"><a class="reference internal" href="#module-EcFlexpart">EcFlexpart</a></li> +<li class="toctree-l3"><a class="reference internal" href="#module-GribTools">GribTools</a></li> +<li class="toctree-l3"><a class="reference internal" href="#module-MarsRetrieval">MarsRetrieval</a></li> +<li class="toctree-l3"><a class="reference internal" href="#module-UioFiles">UioFiles</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#modules">Modules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#module-get_mars_data">get_mars_data</a></li> +<li class="toctree-l3"><a class="reference internal" href="#module-prepare_flexpart">prepare_flexpart</a></li> +<li class="toctree-l3"><a class="reference internal" href="#module-tools">tools</a></li> +<li class="toctree-l3"><a class="reference internal" href="#module-disaggregation">disaggregation</a></li> +</ul> +</li> +</ul> +</li> <li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li> </ul> - - - </div> - </div> - </nav> + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="index.html">Docs</a> »</li> + + <li>Auto Generated Documentation</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="_sources/api.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="auto-generated-documentation"> +<h1>Auto Generated Documentation<a class="headerlink" href="#auto-generated-documentation" title="Permalink to this headline">¶</a></h1> +<div class="contents local topic" id="contents"> +<ul class="simple"> +<li><a class="reference internal" href="#porgrams" id="id1">Porgrams</a><ul> +<li><a class="reference internal" href="#module-install" id="id2">install</a></li> +<li><a class="reference internal" href="#module-submit" id="id3">submit</a></li> +</ul> +</li> +<li><a class="reference internal" href="#classes" id="id4">Classes</a><ul> +<li><a class="reference internal" href="#module-ControlFile" id="id5">ControlFile</a></li> +<li><a class="reference internal" href="#module-EcFlexpart" id="id6">EcFlexpart</a></li> +<li><a class="reference internal" href="#module-GribTools" id="id7">GribTools</a></li> +<li><a class="reference internal" href="#module-MarsRetrieval" id="id8">MarsRetrieval</a></li> +<li><a class="reference internal" href="#module-UioFiles" id="id9">UioFiles</a></li> +</ul> +</li> +<li><a class="reference internal" href="#modules" id="id10">Modules</a><ul> +<li><a class="reference internal" href="#module-get_mars_data" id="id11">get_mars_data</a></li> +<li><a class="reference internal" href="#module-prepare_flexpart" id="id12">prepare_flexpart</a></li> +<li><a class="reference internal" href="#module-tools" id="id13">tools</a></li> +<li><a class="reference internal" href="#module-disaggregation" id="id14">disaggregation</a></li> +</ul> +</li> +</ul> +</div> +<div class="section" id="porgrams"> +<h2><a class="toc-backref" href="#id1">Porgrams</a><a class="headerlink" href="#porgrams" title="Permalink to this headline">¶</a></h2> +<div class="section" id="module-install"> +<span id="install"></span><h3><a class="toc-backref" href="#id2">install</a><a class="headerlink" href="#module-install" title="Permalink to this headline">¶</a></h3> +<dl class="function"> +<dt id="install.delete_convert_build"> +<code class="descclassname">install.</code><code class="descname">delete_convert_build</code><span class="sig-paren">(</span><em>src_path</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#delete_convert_build"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.delete_convert_build" title="Permalink to this definition">¶</a></dt> +<dd><p>Clean up the Fortran source directory and remove all +build files (e.g. *.o, *.mod and CONVERT2)</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>src_path</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Path to the fortran source directory.</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="install.get_install_cmdline_arguments"> +<code class="descclassname">install.</code><code class="descname">get_install_cmdline_arguments</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#get_install_cmdline_arguments"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.get_install_cmdline_arguments" title="Permalink to this definition">¶</a></dt> +<dd><p>Decomposes the command line arguments and assigns them to variables. +Apply default values for non mentioned arguments.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><strong>args</strong> – Contains the commandline arguments from script/program call.</td> +</tr> +<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Namespace</span></code></td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="install.install_via_gateway"> +<code class="descclassname">install.</code><code class="descname">install_via_gateway</code><span class="sig-paren">(</span><em>c</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#install_via_gateway"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.install_via_gateway" title="Permalink to this definition">¶</a></dt> +<dd><p>Perform the actual installation on local machine or prepare data +transfer to remote gate and submit a job script which will +install everything on the remote gate.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="install.main"> +<code class="descclassname">install.</code><code class="descname">main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.main" title="Permalink to this definition">¶</a></dt> +<dd><p>Controls the installation process. Calls the installation function +if target is specified.</p> +</dd></dl> + +<dl class="function"> +<dt id="install.make_convert_build"> +<code class="descclassname">install.</code><code class="descname">make_convert_build</code><span class="sig-paren">(</span><em>src_path</em>, <em>makefile</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#make_convert_build"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.make_convert_build" title="Permalink to this definition">¶</a></dt> +<dd><p>Compiles the Fortran code and generates the executable.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>src_path</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Path to the fortran source directory.</li> +<li><strong>makefile</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The name of the makefile which should be used.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="install.mk_compilejob"> +<code class="descclassname">install.</code><code class="descname">mk_compilejob</code><span class="sig-paren">(</span><em>makefile</em>, <em>target</em>, <em>ecuid</em>, <em>ecgid</em>, <em>fp_root</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#mk_compilejob"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.mk_compilejob" title="Permalink to this definition">¶</a></dt> +<dd><p>Modifies the original job template file so that it is specified +for the user and the environment were it will be applied. Result +is stored in a new file “job.temp” in the python directory.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>makefile</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Name of the makefile which should be used to compile FORTRAN +CONVERT2 program.</li> +<li><strong>target</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The target where the installation should be done, e.g. the queue.</li> +<li><strong>ecuid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The user id on ECMWF server.</li> +<li><strong>ecgid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The group id on ECMWF server.</li> +<li><strong>fp_root</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Path to the root directory of FLEXPART environment or flex_extract +environment.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="install.mk_env_vars"> +<code class="descclassname">install.</code><code class="descname">mk_env_vars</code><span class="sig-paren">(</span><em>ecuid</em>, <em>ecgid</em>, <em>gateway</em>, <em>destination</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#mk_env_vars"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.mk_env_vars" title="Permalink to this definition">¶</a></dt> +<dd><p>Creates a file named ECMWF_ENV which contains the +necessary environmental variables at ECMWF servers. +It is based on the template ECMWF_ENV.template.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>ecuid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The user id on ECMWF server.</li> +<li><strong>ecgid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The group id on ECMWF server.</li> +<li><strong>gateway</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The gateway server the user is using.</li> +<li><strong>destination</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The remote destination which is used to transfer files +from ECMWF server to local gateway server.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="install.mk_job_template"> +<code class="descclassname">install.</code><code class="descname">mk_job_template</code><span class="sig-paren">(</span><em>ecuid</em>, <em>ecgid</em>, <em>gateway</em>, <em>destination</em>, <em>fp_root</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#mk_job_template"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.mk_job_template" title="Permalink to this definition">¶</a></dt> +<dd><p>Modifies the original job template file so that it is specified +for the user and the environment were it will be applied. Result +is stored in a new file.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>ecuid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The user id on ECMWF server.</li> +<li><strong>ecgid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The group id on ECMWF server.</li> +<li><strong>gateway</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The gateway server the user is using.</li> +<li><strong>destination</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The remote destination which is used to transfer files +from ECMWF server to local gateway server.</li> +<li><strong>fp_root</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Path to the root directory of FLEXPART environment or flex_extract +environment.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="install.mk_tarball"> +<code class="descclassname">install.</code><code class="descname">mk_tarball</code><span class="sig-paren">(</span><em>tarball_path</em>, <em>target</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#mk_tarball"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.mk_tarball" title="Permalink to this definition">¶</a></dt> +<dd><p>Creates a tarball with all necessary files which need to be sent to the +installation directory. +It does not matter if this is local or remote. +Collects all python files, the Fortran source and makefiles, +the ECMWF_ENV file, the CONTROL files as well as the +template files.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>tarball_path</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The complete path to the tar file which will contain all +relevant data for flex_extract.</li> +<li><strong>target</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The queue where the job is submitted to.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="install.un_tarball"> +<code class="descclassname">install.</code><code class="descname">un_tarball</code><span class="sig-paren">(</span><em>tarball_path</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/install.html#un_tarball"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#install.un_tarball" title="Permalink to this definition">¶</a></dt> +<dd><p>Extracts the given tarball into current directory.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>tarball_path</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The complete path to the tar file which will contain all +relevant data for flex_extract.</td> +</tr> +</tbody> +</table> +</dd></dl> + +</div> +<div class="section" id="module-submit"> +<span id="submit"></span><h3><a class="toc-backref" href="#id3">submit</a><a class="headerlink" href="#module-submit" title="Permalink to this headline">¶</a></h3> +<dl class="function"> +<dt id="submit.main"> +<code class="descclassname">submit.</code><code class="descname">main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/submit.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submit.main" title="Permalink to this definition">¶</a></dt> +<dd><p>Get the arguments from script call and from CONTROL file. +Decides from the argument “queue” if the local version +is done “queue=None” or the gateway version with “queue=ecgate” +or “queue=cca”.</p> +</dd></dl> + +<dl class="function"> +<dt id="submit.submit"> +<code class="descclassname">submit.</code><code class="descname">submit</code><span class="sig-paren">(</span><em>jtemplate</em>, <em>c</em>, <em>queue</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/submit.html#submit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submit.submit" title="Permalink to this definition">¶</a></dt> +<dd><p>Prepares the job script and submit it to the specified queue.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>jtemplate</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Job template file from sub-directory “_templates” for +submission to ECMWF. It contains all necessary +module and variable settings for the ECMWF environment as well as +the job call and mail report instructions. +Default is “job.temp”.</li> +<li><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</li> +<li><strong>queue</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Name of queue for submission to ECMWF (e.g. ecgate or cca )</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +</div> +</div> +<div class="section" id="classes"> +<h2><a class="toc-backref" href="#id4">Classes</a><a class="headerlink" href="#classes" title="Permalink to this headline">¶</a></h2> +<div class="section" id="module-ControlFile"> +<span id="controlfile"></span><h3><a class="toc-backref" href="#id5">ControlFile</a><a class="headerlink" href="#module-ControlFile" title="Permalink to this headline">¶</a></h3> +<dl class="class"> +<dt id="ControlFile.ControlFile"> +<em class="property">class </em><code class="descclassname">ControlFile.</code><code class="descname">ControlFile</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ControlFile.html#ControlFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ControlFile.ControlFile" title="Permalink to this definition">¶</a></dt> +<dd><p>Contains the information which are stored in the CONTROL files.</p> +<dl class="method"> +<dt id="ControlFile.ControlFile.assign_args_to_control"> +<code class="descname">assign_args_to_control</code><span class="sig-paren">(</span><em>args</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ControlFile.html#ControlFile.assign_args_to_control"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ControlFile.ControlFile.assign_args_to_control" title="Permalink to this definition">¶</a></dt> +<dd><p>Overwrites the existing ControlFile instance attributes with +the command line arguments.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>args</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">Namespace</span></code>) – Contains the commandline arguments from script/program call.</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="ControlFile.ControlFile.assign_envs_to_control"> +<code class="descname">assign_envs_to_control</code><span class="sig-paren">(</span><em>envs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ControlFile.html#ControlFile.assign_envs_to_control"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ControlFile.ControlFile.assign_envs_to_control" title="Permalink to this definition">¶</a></dt> +<dd><p>Assigns the ECMWF environment parameter.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>envs</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">dictionary</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">strings</span></code>) – Contains the ECMWF environment parameternames “ECUID”, “ECGID”, +“DESTINATION” and “GATEWAY” with its corresponding values. +They were read from the file “ECMWF_ENV”.</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="ControlFile.ControlFile.check_conditions"> +<code class="descname">check_conditions</code><span class="sig-paren">(</span><em>queue</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ControlFile.html#ControlFile.check_conditions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ControlFile.ControlFile.check_conditions" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks a couple of necessary attributes and conditions, +such as if they exist and contain values. +Otherwise set default values.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>queue</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Name of the queue if submitted to the ECMWF servers. +Used to check if ecuid, ecgid, gateway and destination +are set correctly and are not empty.</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="ControlFile.ControlFile.check_install_conditions"> +<code class="descname">check_install_conditions</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ControlFile.html#ControlFile.check_install_conditions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ControlFile.ControlFile.check_install_conditions" title="Permalink to this definition">¶</a></dt> +<dd><p>Checks a couple of necessary attributes and conditions +for the installation such as if they exist and contain values. +Otherwise set default values.</p> +</dd></dl> + +<dl class="method"> +<dt id="ControlFile.ControlFile.to_list"> +<code class="descname">to_list</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ControlFile.html#ControlFile.to_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ControlFile.ControlFile.to_list" title="Permalink to this definition">¶</a></dt> +<dd><p>Just generates a list of strings containing the attributes and +assigned values except the attributes “_expanded”, “exedir”, +“ecmwfdatadir” and “flexpart_root_scripts”.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><strong>l</strong> – A sorted list of the all ControlFile class attributes with +their values except the attributes “_expanded”, “exedir”, +“ecmwfdatadir” and “flexpart_root_scripts”.</td> +</tr> +<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code></td> +</tr> +</tbody> +</table> +</dd></dl> + +</dd></dl> + +</div> +<div class="section" id="module-EcFlexpart"> +<span id="ecflexpart"></span><h3><a class="toc-backref" href="#id6">EcFlexpart</a><a class="headerlink" href="#module-EcFlexpart" title="Permalink to this headline">¶</a></h3> +<dl class="class"> +<dt id="EcFlexpart.EcFlexpart"> +<em class="property">class </em><code class="descclassname">EcFlexpart.</code><code class="descname">EcFlexpart</code><span class="sig-paren">(</span><em>c</em>, <em>fluxes=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/EcFlexpart.html#EcFlexpart"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#EcFlexpart.EcFlexpart" title="Permalink to this definition">¶</a></dt> +<dd><p>Class to retrieve FLEXPART specific ECMWF data.</p> +<dl class="method"> +<dt id="EcFlexpart.EcFlexpart.create"> +<code class="descname">create</code><span class="sig-paren">(</span><em>inputfiles</em>, <em>c</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/EcFlexpart.html#EcFlexpart.create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#EcFlexpart.EcFlexpart.create" title="Permalink to this definition">¶</a></dt> +<dd><p>An index file will be created which depends on the combination +of “date”, “time” and “stepRange” values. This is used to iterate +over all messages in each grib file which were passed through the +parameter “inputfiles” to seperate specific parameters into fort.* +files. Afterwards the FORTRAN program is called to convert +the data fields all to the same grid and put them in one file +per unique time step (combination of “date”, “time” and +“stepRange”).</p> +<div class="admonition note"> +<p class="first admonition-title">Note</p> +<p class="last">This method is based on the ECMWF example index.py +<a class="reference external" href="https://software.ecmwf.int/wiki/display/GRIB/index.py">https://software.ecmwf.int/wiki/display/GRIB/index.py</a></p> +</div> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>inputfiles</strong> (<a class="reference internal" href="#module-UioFiles" title="UioFiles"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UioFiles</span></code></a>) – Contains a list of files.</li> +<li><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="EcFlexpart.EcFlexpart.deacc_fluxes"> +<code class="descname">deacc_fluxes</code><span class="sig-paren">(</span><em>inputfiles</em>, <em>c</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/EcFlexpart.html#EcFlexpart.deacc_fluxes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#EcFlexpart.EcFlexpart.deacc_fluxes" title="Permalink to this definition">¶</a></dt> +<dd><p>Goes through all flux fields in ordered time and de-accumulate +the fields. Afterwards the fields are disaggregated in time. +Different versions of disaggregation is provided for rainfall +data (darain, modified linear) and the surface fluxes and +stress data (dapoly, cubic polynomial).</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>inputfiles</strong> (<a class="reference internal" href="#module-UioFiles" title="UioFiles"><code class="xref py py-obj docutils literal notranslate"><span class="pre">UioFiles</span></code></a>) – Contains a list of files.</li> +<li><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="EcFlexpart.EcFlexpart.prepare_fp_files"> +<code class="descname">prepare_fp_files</code><span class="sig-paren">(</span><em>c</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/EcFlexpart.html#EcFlexpart.prepare_fp_files"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#EcFlexpart.EcFlexpart.prepare_fp_files" title="Permalink to this definition">¶</a></dt> +<dd><p>Conversion of GRIB files to FLEXPART binary format.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="EcFlexpart.EcFlexpart.process_output"> +<code class="descname">process_output</code><span class="sig-paren">(</span><em>c</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/EcFlexpart.html#EcFlexpart.process_output"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#EcFlexpart.EcFlexpart.process_output" title="Permalink to this definition">¶</a></dt> +<dd><p>The grib files are postprocessed depending on the selection in +CONTROL file. The resulting files are moved to the output +directory if its not equal to the input directory. +The following modifications might be done if +properly switched in CONTROL file: +GRIB2 - Conversion to GRIB2 +ECTRANS - Transfer of files to gateway server +ECSTORAGE - Storage at ECMWF server</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="EcFlexpart.EcFlexpart.retrieve"> +<code class="descname">retrieve</code><span class="sig-paren">(</span><em>server</em>, <em>dates</em>, <em>public</em>, <em>request</em>, <em>inputdir='.'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/EcFlexpart.html#EcFlexpart.retrieve"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#EcFlexpart.EcFlexpart.retrieve" title="Permalink to this definition">¶</a></dt> +<dd><p>Finalizing the retrieval information by setting final details +depending on grid type. +Prepares MARS retrievals per grid type and submits them.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>server</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">ECMWFService</span></code> or <code class="xref py py-obj docutils literal notranslate"><span class="pre">ECMWFDataServer</span></code>) – The connection to the ECMWF server. This is different +for member state users which have full access and non +member state users which have only access to the public +data sets. The decision is made from command line argument +“public”; for public access its True (ECMWFDataServer) +for member state users its False (ECMWFService)</li> +<li><strong>dates</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Contains start and end date of the retrieval in the format +“YYYYMMDD/to/YYYYMMDD”</li> +<li><strong>request</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">integer</span></code>) – Selects the mode of retrieval. +0: Retrieves the data from ECMWF. +1: Prints the mars requests to an output file. +2: Retrieves the data and prints the mars request.</li> +<li><strong>inputdir</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Path to the directory where the retrieved data is about +to be stored. The default is the current directory (‘.’).</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="EcFlexpart.EcFlexpart.write_namelist"> +<code class="descname">write_namelist</code><span class="sig-paren">(</span><em>c</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/EcFlexpart.html#EcFlexpart.write_namelist"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#EcFlexpart.EcFlexpart.write_namelist" title="Permalink to this definition">¶</a></dt> +<dd><p>Creates a namelist file in the temporary directory and writes +the following values to it: maxl, maxb, mlevel, +mlevelist, mnauf, metapar, rlo0, rlo1, rla0, rla1, +momega, momegadiff, mgauss, msmooth, meta, metadiff, mdpdeta</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</li> +<li><strong>filename</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Name of the namelist file.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +</dd></dl> + +</div> +<div class="section" id="module-GribTools"> +<span id="gribtools"></span><h3><a class="toc-backref" href="#id7">GribTools</a><a class="headerlink" href="#module-GribTools" title="Permalink to this headline">¶</a></h3> +<dl class="class"> +<dt id="GribTools.GribTools"> +<em class="property">class </em><code class="descclassname">GribTools.</code><code class="descname">GribTools</code><span class="sig-paren">(</span><em>filenames</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/GribTools.html#GribTools"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#GribTools.GribTools" title="Permalink to this definition">¶</a></dt> +<dd><p>Class for GRIB utilities (new methods) based on GRIB API</p> +<dl class="method"> +<dt id="GribTools.GribTools.copy"> +<code class="descname">copy</code><span class="sig-paren">(</span><em>filename_in</em>, <em>selectWhere=True</em>, <em>keynames=[]</em>, <em>keyvalues=[]</em>, <em>filemode='w'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/GribTools.html#GribTools.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#GribTools.GribTools.copy" title="Permalink to this definition">¶</a></dt> +<dd><p>Add the content of another input grib file to the objects file but +only messages corresponding to keys/values passed to the function. +The selectWhere switch decides if to copy the keys equal to (True) or +different to (False) the keynames/keyvalues list passed to the function.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>filename_in</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Filename of the input file to read the grib messages from.</li> +<li><strong>selectWhere</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">boolean</span></code>, optional) – Decides if to copy the keynames and values equal to (True) or +different to (False) the keynames/keyvalues list passed to the +function. Default is True.</li> +<li><strong>keynames</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – List of keynames. Default is an empty list.</li> +<li><strong>keyvalues</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – List of keynames. Default is an empty list.</li> +<li><strong>filemode</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Sets the mode for the output file. Default is “w”.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="GribTools.GribTools.get_keys"> +<code class="descname">get_keys</code><span class="sig-paren">(</span><em>keynames</em>, <em>wherekeynames=[]</em>, <em>wherekeyvalues=[]</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/GribTools.html#GribTools.get_keys"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#GribTools.GribTools.get_keys" title="Permalink to this definition">¶</a></dt> +<dd><p>Get keyvalues for a given list of keynames a where statement +can be given (list of key and list of values)</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>keynames</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – List of keynames.</li> +<li><strong>wherekeynames</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Default value is an empty list.</li> +<li><strong>wherekeyvalues</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Default value is an empty list.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>return_list</strong> – List of keyvalues for given keynames.</p> +</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code></p> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="GribTools.GribTools.index"> +<code class="descname">index</code><span class="sig-paren">(</span><em>index_keys=['mars'], index_file='my.idx'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/GribTools.html#GribTools.index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#GribTools.GribTools.index" title="Permalink to this definition">¶</a></dt> +<dd><p>Create index file from a list of files if it does not exist or +read an index file.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>index_keys</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Contains the list of key parameter names from +which the index is to be created. +Default is a list with a single entry string “mars”.</li> +<li><strong>index_file</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Filename where the indices are stored. +Default is “my.idx”.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>iid</strong> – Grib index id.</p> +</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-obj docutils literal notranslate"><span class="pre">integer</span></code></p> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="GribTools.GribTools.set_keys"> +<code class="descname">set_keys</code><span class="sig-paren">(</span><em>fromfile</em>, <em>keynames</em>, <em>keyvalues</em>, <em>wherekeynames=[]</em>, <em>wherekeyvalues=[]</em>, <em>strict=False</em>, <em>filemode='w'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/GribTools.html#GribTools.set_keys"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#GribTools.GribTools.set_keys" title="Permalink to this definition">¶</a></dt> +<dd><p>Opens the file to read the grib messages and then write +them to a new output file. By default all messages are +written out. Also, the keyvalues of the passed list of +keynames are set or only those meeting the where statement. +(list of key and list of values).</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>fromfile</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Filename of the input file to read the grib messages from.</li> +<li><strong>keynames</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – List of keynames. Default is an empty list.</li> +<li><strong>keyvalues</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – List of keynames. Default is an empty list.</li> +<li><strong>wherekeynames</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Default value is an empty list.</li> +<li><strong>wherekeyvalues</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Default value is an empty list.</li> +<li><strong>strict</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">boolean</span></code>, optional) – Decides if everything from keynames and keyvalues +is written out the grib file (False) or only those +meeting the where statement (True). Default is False.</li> +<li><strong>filemode</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Sets the mode for the output file. Default is “w”.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +</dd></dl> + +</div> +<div class="section" id="module-MarsRetrieval"> +<span id="marsretrieval"></span><h3><a class="toc-backref" href="#id8">MarsRetrieval</a><a class="headerlink" href="#module-MarsRetrieval" title="Permalink to this headline">¶</a></h3> +<dl class="class"> +<dt id="MarsRetrieval.MarsRetrieval"> +<em class="property">class </em><code class="descclassname">MarsRetrieval.</code><code class="descname">MarsRetrieval</code><span class="sig-paren">(</span><em>server</em>, <em>public</em>, <em>marsclass='ei'</em>, <em>dataset=''</em>, <em>type=''</em>, <em>levtype=''</em>, <em>levelist=''</em>, <em>repres=''</em>, <em>date=''</em>, <em>resol=''</em>, <em>stream=''</em>, <em>area=''</em>, <em>time=''</em>, <em>step=''</em>, <em>expver='1'</em>, <em>number=''</em>, <em>accuracy=''</em>, <em>grid=''</em>, <em>gaussian=''</em>, <em>target=''</em>, <em>param=''</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/MarsRetrieval.html#MarsRetrieval"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#MarsRetrieval.MarsRetrieval" title="Permalink to this definition">¶</a></dt> +<dd><p>Class for submitting MARS retrievals.</p> +<p>A description of MARS keywords/arguments and examples of their +values can be found here: +<a class="reference external" href="https://software.ecmwf.int/wiki/display/UDOC/">https://software.ecmwf.int/wiki/display/UDOC/</a> Identification+keywords#Identificationkeywords-class</p> +<dl class="method"> +<dt id="MarsRetrieval.MarsRetrieval.data_retrieve"> +<code class="descname">data_retrieve</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/MarsRetrieval.html#MarsRetrieval.data_retrieve"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#MarsRetrieval.MarsRetrieval.data_retrieve" title="Permalink to this definition">¶</a></dt> +<dd><p>Submits a MARS retrieval. Depending on the existence of +ECMWF Web-API it is submitted via Python or a +subprocess in the Shell. The parameter for the mars retrieval +are taken from the defined class attributes.</p> +</dd></dl> + +<dl class="method"> +<dt id="MarsRetrieval.MarsRetrieval.display_info"> +<code class="descname">display_info</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/MarsRetrieval.html#MarsRetrieval.display_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#MarsRetrieval.MarsRetrieval.display_info" title="Permalink to this definition">¶</a></dt> +<dd><p>Prints all class attributes and their values to the +standard output.</p> +</dd></dl> + +<dl class="method"> +<dt id="MarsRetrieval.MarsRetrieval.print_info"> +<code class="descname">print_info</code><span class="sig-paren">(</span><em>inputdir</em>, <em>request_number</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/MarsRetrieval.html#MarsRetrieval.print_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#MarsRetrieval.MarsRetrieval.print_info" title="Permalink to this definition">¶</a></dt> +<dd><p>Prints all mars requests to an extra file for debugging and +information.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>inputdir</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The path where all data from the retrievals are stored.</li> +<li><strong>request_number</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">integer</span></code>) – Number of mars requests for flux and non-flux data.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="method"> +<dt id="MarsRetrieval.MarsRetrieval.print_infodata_csv"> +<code class="descname">print_infodata_csv</code><span class="sig-paren">(</span><em>inputdir</em>, <em>request_number</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/MarsRetrieval.html#MarsRetrieval.print_infodata_csv"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#MarsRetrieval.MarsRetrieval.print_infodata_csv" title="Permalink to this definition">¶</a></dt> +<dd><p>Write all request parameter in alpabetical order into a “csv” file.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>inputdir</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The path where all data from the retrievals are stored.</li> +<li><strong>request_number</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">integer</span></code>) – Number of mars requests for flux and non-flux data.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> + +</dd></dl> - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> +</div> +<div class="section" id="module-UioFiles"> +<span id="uiofiles"></span><h3><a class="toc-backref" href="#id9">UioFiles</a><a class="headerlink" href="#module-UioFiles" title="Permalink to this headline">¶</a></h3> +<dl class="class"> +<dt id="UioFiles.UioFiles"> +<em class="property">class </em><code class="descclassname">UioFiles.</code><code class="descname">UioFiles</code><span class="sig-paren">(</span><em>path</em>, <em>pattern</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/UioFiles.html#UioFiles"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#UioFiles.UioFiles" title="Permalink to this definition">¶</a></dt> +<dd><p>Class to manipulate files. At initialisation it has the pattern +which stores a regular expression pattern for the files, the path +to the files and the files already.</p> +<dl class="method"> +<dt id="UioFiles.UioFiles.delete_files"> +<code class="descname">delete_files</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/UioFiles.html#UioFiles.delete_files"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#UioFiles.UioFiles.delete_files" title="Permalink to this definition">¶</a></dt> +<dd><p>Deletes the files.</p> +</dd></dl> - - <nav class="wy-nav-top" aria-label="top navigation"> - - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">flex_extract</a> - - </nav> +</dd></dl> +</div> +</div> +<div class="section" id="modules"> +<h2><a class="toc-backref" href="#id10">Modules</a><a class="headerlink" href="#modules" title="Permalink to this headline">¶</a></h2> +<div class="section" id="module-get_mars_data"> +<span id="get-mars-data"></span><h3><a class="toc-backref" href="#id11">get_mars_data</a><a class="headerlink" href="#module-get_mars_data" title="Permalink to this headline">¶</a></h3> +<dl class="function"> +<dt id="get_mars_data.do_retrievement"> +<code class="descclassname">get_mars_data.</code><code class="descname">do_retrievement</code><span class="sig-paren">(</span><em>c</em>, <em>server</em>, <em>start</em>, <em>end</em>, <em>delta_t</em>, <em>fluxes=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/get_mars_data.html#do_retrievement"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#get_mars_data.do_retrievement" title="Permalink to this definition">¶</a></dt> +<dd><p>Divides the complete retrieval period in smaller chunks and +retrieves the data from MARS.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</li> +<li><strong>server</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">ECMWFService</span></code>) – The server connection to ECMWF.</li> +<li><strong>start</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">datetime</span></code>) – The start date of the retrieval.</li> +<li><strong>end</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">datetime</span></code>) – The end date of the retrieval.</li> +<li><strong>delta_t</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">datetime</span></code>) – Delta_t + 1 is the maximal time period of a single +retrieval.</li> +<li><strong>fluxes</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">boolean</span></code>, optional) – Decides if the flux parameters are to be retrieved or +the rest of the parameter list. +Default value is False.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> - <div class="wy-nav-content"> - - <div class="rst-content"> - - +<dl class="function"> +<dt id="get_mars_data.get_mars_data"> +<code class="descclassname">get_mars_data.</code><code class="descname">get_mars_data</code><span class="sig-paren">(</span><em>c</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/get_mars_data.html#get_mars_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#get_mars_data.get_mars_data" title="Permalink to this definition">¶</a></dt> +<dd><p>Retrieves the EC data needed for a FLEXPART simulation.</p> +<p>Start and end dates for retrieval period is set. Retrievals +are divided into smaller periods if necessary and datechunk parameter +is set.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</td> +</tr> +</tbody> +</table> +</dd></dl> + +<dl class="function"> +<dt id="get_mars_data.main"> +<code class="descclassname">get_mars_data.</code><code class="descname">main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/get_mars_data.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#get_mars_data.main" title="Permalink to this definition">¶</a></dt> +<dd><p>Controls the program to get data out of mars.</p> +<p>This is done if it is called directly from command line. +Then it also takes program call arguments and control file input.</p> +</dd></dl> + +</div> +<div class="section" id="module-prepare_flexpart"> +<span id="prepare-flexpart"></span><h3><a class="toc-backref" href="#id12">prepare_flexpart</a><a class="headerlink" href="#module-prepare_flexpart" title="Permalink to this headline">¶</a></h3> +<dl class="function"> +<dt id="prepare_flexpart.main"> +<code class="descclassname">prepare_flexpart.</code><code class="descname">main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/prepare_flexpart.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#prepare_flexpart.main" title="Permalink to this definition">¶</a></dt> +<dd><p>Controls the program to prepare flexpart input files from mars data.</p> +<p>This is done if it is called directly from command line. +Then it also takes program call arguments and control file input.</p> +</dd></dl> +<dl class="function"> +<dt id="prepare_flexpart.prepare_flexpart"> +<code class="descclassname">prepare_flexpart.</code><code class="descname">prepare_flexpart</code><span class="sig-paren">(</span><em>ppid</em>, <em>c</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/prepare_flexpart.html#prepare_flexpart"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#prepare_flexpart.prepare_flexpart" title="Permalink to this definition">¶</a></dt> +<dd><p>Converts the mars data into flexpart ready input files.</p> +<p>Specific data fields are converted to a different grid and the flux +data are going to be disaggregated. The data fields are collected by +hour and stored in a file with a specific FLEXPART relevant naming +convention.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>ppid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">int</span></code>) – Contains the ppid number of the current ECMWF job. It will be None if +the method was called within this module.</li> +<li><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> +</div> +<div class="section" id="module-tools"> +<span id="tools"></span><h3><a class="toc-backref" href="#id13">tools</a><a class="headerlink" href="#module-tools" title="Permalink to this headline">¶</a></h3> +<dl class="function"> +<dt id="tools.clean_up"> +<code class="descclassname">tools.</code><code class="descname">clean_up</code><span class="sig-paren">(</span><em>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> +<dd><p>Remove all files from intermediate directory (inputdir).</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>c</strong> (<a class="reference internal" href="#module-ControlFile" title="ControlFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ControlFile</span></code></a>) – Contains all the parameters of CONTROL file and +command line.</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.get_cmdline_arguments"> +<code class="descclassname">tools.</code><code class="descname">get_cmdline_arguments</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#get_cmdline_arguments"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.get_cmdline_arguments" title="Permalink to this definition">¶</a></dt> +<dd><p>Decomposes the command line arguments and assigns them to variables. +Apply default values for non mentioned arguments.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><strong>args</strong> – Contains the commandline arguments from script/program call.</td> +</tr> +<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Namespace</span></code></td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.get_list_as_string"> +<code class="descclassname">tools.</code><code class="descname">get_list_as_string</code><span class="sig-paren">(</span><em>list_obj</em>, <em>concatenate_sign='</em>, <em>'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#get_list_as_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.get_list_as_string" title="Permalink to this definition">¶</a></dt> +<dd><p>Converts a list of arbitrary content into a single string.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>list_obj</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code>) – A list with arbitrary content.</li> +<li><strong>concatenate_sign</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – A string which is used to concatenate the single +list elements. Default value is “, “.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>str_of_list</strong> – The content of the list as a single string.</p> +</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code></p> +</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.init128"> +<code class="descclassname">tools.</code><code class="descname">init128</code><span class="sig-paren">(</span><em>filepath</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#init128"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.init128" title="Permalink to this definition">¶</a></dt> +<dd><p>Opens and reads the grib file with table 128 information.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filepath</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Path to file of ECMWF grib table number 128.</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><strong>table128</strong> – Contains the ECMWF grib table 128 information. +The key is the parameter number and the value is the +short name of the parameter.</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><code class="xref py py-obj docutils literal notranslate"><span class="pre">dictionary</span></code></td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.make_dir"> +<code class="descclassname">tools.</code><code class="descname">make_dir</code><span class="sig-paren">(</span><em>directory</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#make_dir"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.make_dir" title="Permalink to this definition">¶</a></dt> +<dd><p>Creates a directory and gives a warning if the directory +already exists. The program stops only if there is another problem.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>directory</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The directory name including the path which should be created.</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.my_error"> +<code class="descclassname">tools.</code><code class="descname">my_error</code><span class="sig-paren">(</span><em>users</em>, <em>message='ERROR'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#my_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.my_error" title="Permalink to this definition">¶</a></dt> +<dd><p>Prints a specified error message which can be passed to the function +before exiting the program.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>user</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Contains all email addresses which should be notified. +It might also contain just the ecmwf user name which wil trigger +mailing to the associated email address for this user.</li> +<li><strong>message</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Error message. Default value is “ERROR”.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.none_or_int"> +<code class="descclassname">tools.</code><code class="descname">none_or_int</code><span class="sig-paren">(</span><em>value</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#none_or_int"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.none_or_int" title="Permalink to this definition">¶</a></dt> +<dd><p>Converts the input string into pythons None-type if the string +contains string “None”. Otherwise it is converted to an integer value.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>value</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – String to be checked for the “None” word.</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Return depends on the content of the input value. If it was “None”, +then the python type None is returned. Otherwise the string is +converted into an integer value.</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">None or int(value)</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.none_or_str"> +<code class="descclassname">tools.</code><code class="descname">none_or_str</code><span class="sig-paren">(</span><em>value</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#none_or_str"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.none_or_str" title="Permalink to this definition">¶</a></dt> +<dd><p>Converts the input string into pythons None-type if the string +contains string “None”.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>value</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – String to be checked for the “None” word.</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Return depends on the content of the input value. If it was “None”, +then the python type None is returned. Otherwise the string itself.</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">None or value</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.normal_exit"> +<code class="descclassname">tools.</code><code class="descname">normal_exit</code><span class="sig-paren">(</span><em>users</em>, <em>message='Done!'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#normal_exit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.normal_exit" title="Permalink to this definition">¶</a></dt> +<dd><p>Prints a specific exit message which can be passed to the function.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> +<li><strong>user</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Contains all email addresses which should be notified. +It might also contain just the ecmwf user name which wil trigger +mailing to the associated email address for this user.</li> +<li><strong>message</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>, optional) – Message for exiting program. Default value is “Done!”.</li> +</ul> +</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.product"> +<code class="descclassname">tools.</code><code class="descname">product</code><span class="sig-paren">(</span><em>*args</em>, <em>**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> +<dd><p>This method combines the single characters of the passed arguments +with each other. So that each character of each argument value +will be combined with each character of the other arguments as a tuple.</p> +<div class="admonition note"> +<p class="first admonition-title">Note</p> +<p class="last">This method is taken from an example at the ECMWF wiki website. +<a class="reference external" href="https://software.ecmwf.int/wiki/display/GRIB/index.py">https://software.ecmwf.int/wiki/display/GRIB/index.py</a>; 2018-03-16</p> +</div> +<p class="rubric">Example</p> +<p>product(‘ABCD’, ‘xy’) –> Ax Ay Bx By Cx Cy Dx Dy</p> +<p>product(range(2), repeat = 3) –> 000 001 010 011 100 101 110 111</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>*args</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">tuple</span></code>) – Positional arguments (arbitrary number).</li> +<li><strong>**kwds</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">dictionary</span></code>) – Contains all the keyword arguments from *args.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>prod</strong> – Return will be done with “yield”. A tuple of combined arguments. +See example in description above.</p> +</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tuple</span></code></p> +</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.put_file_to_ecserver"> +<code class="descclassname">tools.</code><code class="descname">put_file_to_ecserver</code><span class="sig-paren">(</span><em>ecd</em>, <em>filename</em>, <em>target</em>, <em>ecuid</em>, <em>ecgid</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#put_file_to_ecserver"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.put_file_to_ecserver" title="Permalink to this definition">¶</a></dt> +<dd><p>Uses the ecaccess-file-put command to send a file to the ECMWF servers.</p> +<div class="admonition note"> +<p class="first admonition-title">Note</p> +<p class="last">The return value is just for testing reasons. It does not have +to be used from the calling function since the whole error handling +is done in here.</p> +</div> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>ecd</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The path were the file is stored.</li> +<li><strong>filename</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The name of the file to send to the ECMWF server.</li> +<li><strong>target</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The target queue where the file should be sent to.</li> +<li><strong>ecuid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The user id on ECMWF server.</li> +<li><strong>ecgid</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The group id on ECMWF server.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>rcode</strong> – Resulting code of command execution. If successful the string +will be empty.</p> +</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code></p> +</td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.read_ecenv"> +<code class="descclassname">tools.</code><code class="descname">read_ecenv</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#read_ecenv"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.read_ecenv" title="Permalink to this definition">¶</a></dt> +<dd><p>Reads the file into a dictionary where the key values are the parameter +names.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Path to file where the ECMWF environment parameters are stored.</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><strong>envs</strong> – Contains the environment parameter ecuid, ecgid, gateway +and destination for ECMWF server environments.</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><code class="xref py py-obj docutils literal notranslate"><span class="pre">dictionary</span></code></td> +</tr> +</tbody> +</table> +</dd></dl> +<dl class="function"> +<dt id="tools.silent_remove"> +<code class="descclassname">tools.</code><code class="descname">silent_remove</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#silent_remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.silent_remove" title="Permalink to this definition">¶</a></dt> +<dd><p>Remove file if it exists. +The function does not fail if the file does not exist.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The name of the file to be removed without notification.</td> +</tr> +</tbody> +</table> +</dd></dl> -<div role="navigation" aria-label="breadcrumbs navigation"> +<dl class="function"> +<dt id="tools.submit_job_to_ecserver"> +<code class="descclassname">tools.</code><code class="descname">submit_job_to_ecserver</code><span class="sig-paren">(</span><em>target</em>, <em>jobname</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#submit_job_to_ecserver"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.submit_job_to_ecserver" title="Permalink to this definition">¶</a></dt> +<dd><p>Uses ecaccess-job-submit command to submit a job to the ECMWF server.</p> +<div class="admonition note"> +<p class="first admonition-title">Note</p> +<p class="last">The return value is just for testing reasons. It does not have +to be used from the calling function since the whole error handling +is done in here.</p> +</div> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>target</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The target where the file should be sent to, e.g. the queue.</li> +<li><strong>jobname</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – The name of the jobfile to be submitted to the ECMWF server.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>rcode</strong> – Resulting code of command execution. If successful the string +will contain an integer number, representing the id of the job +at the ecmwf server.</p> +</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code></p> +</td> +</tr> +</tbody> +</table> +</dd></dl> - <ul class="wy-breadcrumbs"> - - <li><a href="index.html">Docs</a> »</li> - - <li>Auto Generated Documentation</li> - - - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/api.rst.txt" rel="nofollow"> View page source</a> - - - </li> - - </ul> +<dl class="function"> +<dt id="tools.to_param_id"> +<code class="descclassname">tools.</code><code class="descname">to_param_id</code><span class="sig-paren">(</span><em>pars</em>, <em>table</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/tools.html#to_param_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#tools.to_param_id" title="Permalink to this definition">¶</a></dt> +<dd><p>Transform parameter names to parameter ids with ECMWF grib table 128.</p> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> +<li><strong>pars</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">string</span></code>) – Addpar argument from CONTROL file in the format of +parameter names instead of ids. The parameter short +names are sepearted with “/” and they are passed as +one single string.</li> +<li><strong>table</strong> (<code class="xref py py-obj docutils literal notranslate"><span class="pre">dictionary</span></code>) – Contains the ECMWF grib table 128 information. +The key is the parameter number and the value is the +short name of the parameter.</li> +</ul> +</td> +</tr> +<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>ipar</strong> – List of addpar parameters from CONTROL file transformed to +parameter ids in the format of integer.</p> +</td> +</tr> +<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><code class="xref py py-obj docutils literal notranslate"><span class="pre">list</span></code> of <code class="xref py py-obj docutils literal notranslate"><span class="pre">integer</span></code></p> +</td> +</tr> +</tbody> +</table> +</dd></dl> - - <hr/> </div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="module-disaggregation"> -<span id="auto-generated-documentation"></span><h1>Auto Generated Documentation<a class="headerlink" href="#module-disaggregation" title="Permalink to this headline">¶</a></h1> +<div class="section" id="module-disaggregation"> +<span id="disaggregation"></span><h3><a class="toc-backref" href="#id14">disaggregation</a><a class="headerlink" href="#module-disaggregation" title="Permalink to this headline">¶</a></h3> <dl class="function"> <dt id="disaggregation.IA3"> <code class="descclassname">disaggregation.</code><code class="descname">IA3</code><span class="sig-paren">(</span><em>g</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/disaggregation.html#IA3"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#disaggregation.IA3" title="Permalink to this definition">¶</a></dt> @@ -272,6 +1427,8 @@ E.g. [[array_t1], [array_t2], [array_t3], [array_t4]]</td> </div> </dd></dl> +</div> +</div> </div> @@ -285,7 +1442,7 @@ E.g. [[array_t1], [array_t2], [array_t3], [array_t4]]</td> <a href="support.html" class="btn btn-neutral float-right" title="Support" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="user_guide.html" class="btn btn-neutral" title="User Guide" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="user_guide/control_templates.html" class="btn btn-neutral" title="CONTROL-file templates" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/documentation/Sphinx/build/html/downloads.html b/documentation/Sphinx/build/html/downloads.html index 6fac4831d6cc685311e538becb6473ac7b1cd691..2cbcfda7fa3a6a22d968d9548ca3188dda65375e 100644 --- a/documentation/Sphinx/build/html/downloads.html +++ b/documentation/Sphinx/build/html/downloads.html @@ -28,8 +28,8 @@ <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> - <link rel="next" title="Installation" href="installation.html" /> - <link rel="prev" title="Welcome to flex_extract’s documentation!" href="index.html" /> + <link rel="next" title="Download tar-balls" href="downloads/tar_balls.html" /> + <link rel="prev" title="Welcome to flex_extract’s user documentation!" href="index.html" /> <script src="_static/js/modernizr.min.js"></script> @@ -84,7 +84,12 @@ <p class="caption"><span class="caption-text">Table of Contents:</span></p> <ul class="current"> -<li class="toctree-l1 current"><a class="current reference internal" href="#">Downloads</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Downloads</a><ul> +<li class="toctree-l2"><a class="reference internal" href="downloads/tar_balls.html">Download tar-balls</a></li> +<li class="toctree-l2"><a class="reference internal" href="downloads/git_repo.html">Git Repository</a></li> +<li class="toctree-l2"><a class="reference internal" href="downloads/history_changes.html">History of Changes</a></li> +</ul> +</li> <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li> <li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> @@ -159,6 +164,8 @@ <p>Describe download options of flex_extract ….</p> <blockquote> <div>UNDER CONSTRUCTION</div></blockquote> +<div class="toctree-wrapper compound"> +</div> </div> @@ -169,10 +176,10 @@ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="installation.html" class="btn btn-neutral float-right" title="Installation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="downloads/tar_balls.html" class="btn btn-neutral float-right" title="Download tar-balls" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="index.html" class="btn btn-neutral" title="Welcome to flex_extract’s documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="index.html" class="btn btn-neutral" title="Welcome to flex_extract’s user documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/documentation/Sphinx/build/html/downloads/git_repo.html b/documentation/Sphinx/build/html/downloads/git_repo.html new file mode 100644 index 0000000000000000000000000000000000000000..c46a986c4c0c5cb240f07869557f93db77880e7d --- /dev/null +++ b/documentation/Sphinx/build/html/downloads/git_repo.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Git Repository — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="History of Changes" href="history_changes.html" /> + <link rel="prev" title="Download tar-balls" href="tar_balls.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1 current"><a class="reference internal" href="../downloads.html">Downloads</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="tar_balls.html">Download tar-balls</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Git Repository</a></li> +<li class="toctree-l2"><a class="reference internal" href="history_changes.html">History of Changes</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../downloads.html">Downloads</a> »</li> + + <li>Git Repository</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/downloads/git_repo.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="git-repository"> +<h1>Git Repository<a class="headerlink" href="#git-repository" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="history_changes.html" class="btn btn-neutral float-right" title="History of Changes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="tar_balls.html" class="btn btn-neutral" title="Download tar-balls" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/downloads/history_changes.html b/documentation/Sphinx/build/html/downloads/history_changes.html new file mode 100644 index 0000000000000000000000000000000000000000..d63eb3bc2e219b6c5d9de4b81e1ea8a3e10494c6 --- /dev/null +++ b/documentation/Sphinx/build/html/downloads/history_changes.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>History of Changes — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Installation" href="../installation.html" /> + <link rel="prev" title="Git Repository" href="git_repo.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1 current"><a class="reference internal" href="../downloads.html">Downloads</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="tar_balls.html">Download tar-balls</a></li> +<li class="toctree-l2"><a class="reference internal" href="git_repo.html">Git Repository</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">History of Changes</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../downloads.html">Downloads</a> »</li> + + <li>History of Changes</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/downloads/history_changes.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="history-of-changes"> +<h1>History of Changes<a class="headerlink" href="#history-of-changes" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="../installation.html" class="btn btn-neutral float-right" title="Installation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="git_repo.html" class="btn btn-neutral" title="Git Repository" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/downloads/tar_balls.html b/documentation/Sphinx/build/html/downloads/tar_balls.html new file mode 100644 index 0000000000000000000000000000000000000000..fb3cb3664af5d95b9fa854167693d158c1c8531a --- /dev/null +++ b/documentation/Sphinx/build/html/downloads/tar_balls.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Download tar-balls — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Git Repository" href="git_repo.html" /> + <link rel="prev" title="Downloads" href="../downloads.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1 current"><a class="reference internal" href="../downloads.html">Downloads</a><ul class="current"> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Download tar-balls</a></li> +<li class="toctree-l2"><a class="reference internal" href="git_repo.html">Git Repository</a></li> +<li class="toctree-l2"><a class="reference internal" href="history_changes.html">History of Changes</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../downloads.html">Downloads</a> »</li> + + <li>Download tar-balls</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/downloads/tar_balls.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="download-tar-balls"> +<h1>Download tar-balls<a class="headerlink" href="#download-tar-balls" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="git_repo.html" class="btn btn-neutral float-right" title="Git Repository" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="../downloads.html" class="btn btn-neutral" title="Downloads" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/genindex.html b/documentation/Sphinx/build/html/genindex.html index 08462f113cd2f83be8f70252b7a6339ec62f929b..562e1d4025bdd185ee749c9884a8f159a33775d7 100644 --- a/documentation/Sphinx/build/html/genindex.html +++ b/documentation/Sphinx/build/html/genindex.html @@ -155,21 +155,119 @@ <h1 id="index">Index</h1> <div class="genindex-jumpbox"> - <a href="#D"><strong>D</strong></a> + <a href="#A"><strong>A</strong></a> + | <a href="#C"><strong>C</strong></a> + | <a href="#D"><strong>D</strong></a> + | <a href="#E"><strong>E</strong></a> + | <a href="#G"><strong>G</strong></a> | <a href="#I"><strong>I</strong></a> + | <a href="#M"><strong>M</strong></a> + | <a href="#N"><strong>N</strong></a> + | <a href="#P"><strong>P</strong></a> + | <a href="#R"><strong>R</strong></a> + | <a href="#S"><strong>S</strong></a> + | <a href="#T"><strong>T</strong></a> + | <a href="#U"><strong>U</strong></a> + | <a href="#W"><strong>W</strong></a> </div> +<h2 id="A">A</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#ControlFile.ControlFile.assign_args_to_control">assign_args_to_control() (ControlFile.ControlFile method)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#ControlFile.ControlFile.assign_envs_to_control">assign_envs_to_control() (ControlFile.ControlFile method)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="C">C</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#ControlFile.ControlFile.check_conditions">check_conditions() (ControlFile.ControlFile method)</a> +</li> + <li><a href="api.html#ControlFile.ControlFile.check_install_conditions">check_install_conditions() (ControlFile.ControlFile method)</a> +</li> + <li><a href="api.html#tools.clean_up">clean_up() (in module tools)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#ControlFile.ControlFile">ControlFile (class in ControlFile)</a> + + <ul> + <li><a href="api.html#module-ControlFile">(module)</a> +</li> + </ul></li> + <li><a href="api.html#GribTools.GribTools.copy">copy() (GribTools.GribTools method)</a> +</li> + <li><a href="api.html#EcFlexpart.EcFlexpart.create">create() (EcFlexpart.EcFlexpart method)</a> +</li> + </ul></td> +</tr></table> + <h2 id="D">D</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> <li><a href="api.html#disaggregation.dapoly">dapoly() (in module disaggregation)</a> +</li> + <li><a href="api.html#disaggregation.darain">darain() (in module disaggregation)</a> +</li> + <li><a href="api.html#MarsRetrieval.MarsRetrieval.data_retrieve">data_retrieve() (MarsRetrieval.MarsRetrieval method)</a> +</li> + <li><a href="api.html#EcFlexpart.EcFlexpart.deacc_fluxes">deacc_fluxes() (EcFlexpart.EcFlexpart method)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="api.html#disaggregation.darain">darain() (in module disaggregation)</a> + <li><a href="api.html#install.delete_convert_build">delete_convert_build() (in module install)</a> +</li> + <li><a href="api.html#UioFiles.UioFiles.delete_files">delete_files() (UioFiles.UioFiles method)</a> </li> <li><a href="api.html#module-disaggregation">disaggregation (module)</a> </li> + <li><a href="api.html#MarsRetrieval.MarsRetrieval.display_info">display_info() (MarsRetrieval.MarsRetrieval method)</a> +</li> + <li><a href="api.html#get_mars_data.do_retrievement">do_retrievement() (in module get_mars_data)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="E">E</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#EcFlexpart.EcFlexpart">EcFlexpart (class in EcFlexpart)</a> + + <ul> + <li><a href="api.html#module-EcFlexpart">(module)</a> +</li> + </ul></li> + </ul></td> +</tr></table> + +<h2 id="G">G</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#tools.get_cmdline_arguments">get_cmdline_arguments() (in module tools)</a> +</li> + <li><a href="api.html#install.get_install_cmdline_arguments">get_install_cmdline_arguments() (in module install)</a> +</li> + <li><a href="api.html#GribTools.GribTools.get_keys">get_keys() (GribTools.GribTools method)</a> +</li> + <li><a href="api.html#tools.get_list_as_string">get_list_as_string() (in module tools)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#module-get_mars_data">get_mars_data (module)</a> +</li> + <li><a href="api.html#get_mars_data.get_mars_data">get_mars_data() (in module get_mars_data)</a> +</li> + <li><a href="api.html#GribTools.GribTools">GribTools (class in GribTools)</a> + + <ul> + <li><a href="api.html#module-GribTools">(module)</a> +</li> + </ul></li> </ul></td> </tr></table> @@ -177,6 +275,160 @@ <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> <li><a href="api.html#disaggregation.IA3">IA3() (in module disaggregation)</a> +</li> + <li><a href="api.html#GribTools.GribTools.index">index() (GribTools.GribTools method)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#tools.init128">init128() (in module tools)</a> +</li> + <li><a href="api.html#module-install">install (module)</a> +</li> + <li><a href="api.html#install.install_via_gateway">install_via_gateway() (in module install)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="M">M</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#get_mars_data.main">main() (in module get_mars_data)</a> + + <ul> + <li><a href="api.html#install.main">(in module install)</a> +</li> + <li><a href="api.html#prepare_flexpart.main">(in module prepare_flexpart)</a> +</li> + <li><a href="api.html#submit.main">(in module submit)</a> +</li> + </ul></li> + <li><a href="api.html#install.make_convert_build">make_convert_build() (in module install)</a> +</li> + <li><a href="api.html#tools.make_dir">make_dir() (in module tools)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#MarsRetrieval.MarsRetrieval">MarsRetrieval (class in MarsRetrieval)</a> + + <ul> + <li><a href="api.html#module-MarsRetrieval">(module)</a> +</li> + </ul></li> + <li><a href="api.html#install.mk_compilejob">mk_compilejob() (in module install)</a> +</li> + <li><a href="api.html#install.mk_env_vars">mk_env_vars() (in module install)</a> +</li> + <li><a href="api.html#install.mk_job_template">mk_job_template() (in module install)</a> +</li> + <li><a href="api.html#install.mk_tarball">mk_tarball() (in module install)</a> +</li> + <li><a href="api.html#tools.my_error">my_error() (in module tools)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="N">N</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#tools.none_or_int">none_or_int() (in module tools)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#tools.none_or_str">none_or_str() (in module tools)</a> +</li> + <li><a href="api.html#tools.normal_exit">normal_exit() (in module tools)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="P">P</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#module-prepare_flexpart">prepare_flexpart (module)</a> +</li> + <li><a href="api.html#prepare_flexpart.prepare_flexpart">prepare_flexpart() (in module prepare_flexpart)</a> +</li> + <li><a href="api.html#EcFlexpart.EcFlexpart.prepare_fp_files">prepare_fp_files() (EcFlexpart.EcFlexpart method)</a> +</li> + <li><a href="api.html#MarsRetrieval.MarsRetrieval.print_info">print_info() (MarsRetrieval.MarsRetrieval method)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#MarsRetrieval.MarsRetrieval.print_infodata_csv">print_infodata_csv() (MarsRetrieval.MarsRetrieval method)</a> +</li> + <li><a href="api.html#EcFlexpart.EcFlexpart.process_output">process_output() (EcFlexpart.EcFlexpart method)</a> +</li> + <li><a href="api.html#tools.product">product() (in module tools)</a> +</li> + <li><a href="api.html#tools.put_file_to_ecserver">put_file_to_ecserver() (in module tools)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="R">R</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#tools.read_ecenv">read_ecenv() (in module tools)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#EcFlexpart.EcFlexpart.retrieve">retrieve() (EcFlexpart.EcFlexpart method)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="S">S</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#GribTools.GribTools.set_keys">set_keys() (GribTools.GribTools method)</a> +</li> + <li><a href="api.html#tools.silent_remove">silent_remove() (in module tools)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#module-submit">submit (module)</a> +</li> + <li><a href="api.html#submit.submit">submit() (in module submit)</a> +</li> + <li><a href="api.html#tools.submit_job_to_ecserver">submit_job_to_ecserver() (in module tools)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="T">T</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#ControlFile.ControlFile.to_list">to_list() (ControlFile.ControlFile method)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#tools.to_param_id">to_param_id() (in module tools)</a> +</li> + <li><a href="api.html#module-tools">tools (module)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="U">U</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#UioFiles.UioFiles">UioFiles (class in UioFiles)</a> + + <ul> + <li><a href="api.html#module-UioFiles">(module)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#install.un_tarball">un_tarball() (in module install)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="W">W</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="api.html#EcFlexpart.EcFlexpart.write_namelist">write_namelist() (EcFlexpart.EcFlexpart method)</a> </li> </ul></td> </tr></table> diff --git a/documentation/Sphinx/build/html/index.html b/documentation/Sphinx/build/html/index.html index dcef9032a1802e79effa41ce737a2a6d0950330c..16bd8666a038b32b596b521000f943086439c57f 100644 --- a/documentation/Sphinx/build/html/index.html +++ b/documentation/Sphinx/build/html/index.html @@ -8,7 +8,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Welcome to flex_extract’s documentation! — flex_extract 7.1 alpha documentation</title> + <title>Welcome to flex_extract’s user documentation! — flex_extract 7.1 alpha documentation</title> @@ -134,7 +134,7 @@ <li><a href="#">Docs</a> »</li> - <li>Welcome to flex_extract’s documentation!</li> + <li>Welcome to flex_extract’s user documentation!</li> <li class="wy-breadcrumbs-aside"> @@ -153,8 +153,10 @@ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> - <div class="section" id="welcome-to-flex-extract-s-documentation"> -<h1>Welcome to flex_extract’s documentation!<a class="headerlink" href="#welcome-to-flex-extract-s-documentation" title="Permalink to this headline">¶</a></h1> + <div class="section" id="welcome-to-flex-extract-s-user-documentation"> +<h1>Welcome to flex_extract’s user documentation!<a class="headerlink" href="#welcome-to-flex-extract-s-user-documentation" title="Permalink to this headline">¶</a></h1> +<p>flex_extract is a software to retrieve meteorological fields from the European Centre for Medium-Range Weather Forecasts (ECMWF) Mars archive to server as input files for the FLEXTRA/FLEXPART Atmospheric Transport Modelling system.</p> +<p>All required second party software and libraries used within flex_extract is open source and free of charge.</p> <table style="width:100%;"> <tr> <td style="width:200px;height:150px;"> @@ -238,7 +240,29 @@ <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li> <li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> -<li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a><ul> +<li class="toctree-l2"><a class="reference internal" href="api.html#porgrams">Porgrams</a><ul> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-install">install</a></li> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-submit">submit</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="api.html#classes">Classes</a><ul> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-ControlFile">ControlFile</a></li> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-EcFlexpart">EcFlexpart</a></li> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-GribTools">GribTools</a></li> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-MarsRetrieval">MarsRetrieval</a></li> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-UioFiles">UioFiles</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="api.html#modules">Modules</a><ul> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-get_mars_data">get_mars_data</a></li> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-prepare_flexpart">prepare_flexpart</a></li> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-tools">tools</a></li> +<li class="toctree-l3"><a class="reference internal" href="api.html#module-disaggregation">disaggregation</a></li> +</ul> +</li> +</ul> +</li> <li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li> </ul> </div> diff --git a/documentation/Sphinx/build/html/installation.html b/documentation/Sphinx/build/html/installation.html index f8878fd569e33d5d19862f2787729a8ec006f82a..f2c7f32c6eff48a94332399a72f5186787e2d7c9 100644 --- a/documentation/Sphinx/build/html/installation.html +++ b/documentation/Sphinx/build/html/installation.html @@ -28,8 +28,8 @@ <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> - <link rel="next" title="Usage" href="usage.html" /> - <link rel="prev" title="Requirements" href="requirements.html" /> + <link rel="next" title="Requirements" href="installation/requirements.html" /> + <link rel="prev" title="Downloads" href="downloads.html" /> <script src="_static/js/modernizr.min.js"></script> @@ -82,12 +82,19 @@ - <p class="caption"><span class="caption-text">Contents:</span></p> + <p class="caption"><span class="caption-text">Table of Contents:</span></p> <ul class="current"> -<li class="toctree-l1"><a class="reference internal" href="requirements.html">Requirements</a></li> -<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a></li> -<li class="toctree-l1"><a class="reference internal" href="usage.html">Usage</a></li> -<li class="toctree-l1"><a class="reference internal" href="API.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="downloads.html">Downloads</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a><ul> +<li class="toctree-l2"><a class="reference internal" href="installation/requirements.html">Requirements</a></li> +<li class="toctree-l2"><a class="reference internal" href="installation/oper_modes.html">Operating modes</a></li> +<li class="toctree-l2"><a class="reference internal" href="installation/test_install.html">Installation test</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li> </ul> @@ -154,9 +161,10 @@ <div class="section" id="installation"> <h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h1> -<p>Describe installation process flex_extract ….</p> <blockquote> <div>UNDER CONSTRUCTION</div></blockquote> +<div class="toctree-wrapper compound"> +</div> </div> @@ -167,10 +175,10 @@ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="usage.html" class="btn btn-neutral float-right" title="Usage" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="installation/requirements.html" class="btn btn-neutral float-right" title="Requirements" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="requirements.html" class="btn btn-neutral" title="Requirements" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="downloads.html" class="btn btn-neutral" title="Downloads" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/documentation/Sphinx/build/html/installation/oper_modes.html b/documentation/Sphinx/build/html/installation/oper_modes.html new file mode 100644 index 0000000000000000000000000000000000000000..b111f0dc14aa8df7d4d05827cdc45b91b47a5d26 --- /dev/null +++ b/documentation/Sphinx/build/html/installation/oper_modes.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Operating modes — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Installation test" href="test_install.html" /> + <link rel="prev" title="Requirements" href="requirements.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../installation.html">Installation</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="requirements.html">Requirements</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Operating modes</a></li> +<li class="toctree-l2"><a class="reference internal" href="test_install.html">Installation test</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../installation.html">Installation</a> »</li> + + <li>Operating modes</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/installation/oper_modes.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="operating-modes"> +<h1>Operating modes<a class="headerlink" href="#operating-modes" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="test_install.html" class="btn btn-neutral float-right" title="Installation test" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="requirements.html" class="btn btn-neutral" title="Requirements" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/installation/requirements.html b/documentation/Sphinx/build/html/installation/requirements.html new file mode 100644 index 0000000000000000000000000000000000000000..7bb2491ff98bc59be5870426c8018bd5402af2a1 --- /dev/null +++ b/documentation/Sphinx/build/html/installation/requirements.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Requirements — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Operating modes" href="oper_modes.html" /> + <link rel="prev" title="Installation" href="../installation.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../installation.html">Installation</a><ul class="current"> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Requirements</a></li> +<li class="toctree-l2"><a class="reference internal" href="oper_modes.html">Operating modes</a></li> +<li class="toctree-l2"><a class="reference internal" href="test_install.html">Installation test</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../installation.html">Installation</a> »</li> + + <li>Requirements</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/installation/requirements.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="requirements"> +<h1>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="oper_modes.html" class="btn btn-neutral float-right" title="Operating modes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="../installation.html" class="btn btn-neutral" title="Installation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/installation/test_install.html b/documentation/Sphinx/build/html/installation/test_install.html new file mode 100644 index 0000000000000000000000000000000000000000..c399553f6015fa4297c5c459b9e75f00bfa56d26 --- /dev/null +++ b/documentation/Sphinx/build/html/installation/test_install.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Installation test — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Program Structure" href="../program_structure.html" /> + <link rel="prev" title="Operating modes" href="oper_modes.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../installation.html">Installation</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="requirements.html">Requirements</a></li> +<li class="toctree-l2"><a class="reference internal" href="oper_modes.html">Operating modes</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Installation test</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../installation.html">Installation</a> »</li> + + <li>Installation test</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/installation/test_install.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="installation-test"> +<h1>Installation test<a class="headerlink" href="#installation-test" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="../program_structure.html" class="btn btn-neutral float-right" title="Program Structure" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="oper_modes.html" class="btn btn-neutral" title="Operating modes" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/objects.inv b/documentation/Sphinx/build/html/objects.inv index 2c7d0b71a717a8402c7048c9f20ab47308600d29..7f7fb49daf2cebaeb599ad3e7ed2ad1bee74e74a 100644 Binary files a/documentation/Sphinx/build/html/objects.inv and b/documentation/Sphinx/build/html/objects.inv differ diff --git a/documentation/Sphinx/build/html/oper_modes.html b/documentation/Sphinx/build/html/oper_modes.html new file mode 100644 index 0000000000000000000000000000000000000000..92359359362a4d345b6b6f6ad9394a430656fc57 --- /dev/null +++ b/documentation/Sphinx/build/html/oper_modes.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Operating modes — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="search.html" /> + <link rel="next" title="Installation test" href="test_install.html" /> + <link rel="prev" title="Requirements" href="requirements.html" /> + + + <script src="_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="downloads.html">Downloads</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="installation.html">Installation</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="requirements.html">Requirements</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Operating modes</a></li> +<li class="toctree-l2"><a class="reference internal" href="test_install.html">Installation test</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="index.html">Docs</a> »</li> + + <li><a href="installation.html">Installation</a> »</li> + + <li>Operating modes</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="_sources/oper_modes.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="operating-modes"> +<h1>Operating modes<a class="headerlink" href="#operating-modes" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="test_install.html" class="btn btn-neutral float-right" title="Installation test" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="requirements.html" class="btn btn-neutral" title="Requirements" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'./', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/program_structure.html b/documentation/Sphinx/build/html/program_structure.html index a0c7014fd57e598c5b24ddcfa9bd1275a97aaba2..dc400435d76e8de37cb7cbe6d087ba55141715c7 100644 --- a/documentation/Sphinx/build/html/program_structure.html +++ b/documentation/Sphinx/build/html/program_structure.html @@ -28,8 +28,8 @@ <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> - <link rel="next" title="User Guide" href="user_guide.html" /> - <link rel="prev" title="Installation" href="installation.html" /> + <link rel="next" title="Program Overview" href="program_structure/prog_overview.html" /> + <link rel="prev" title="Installation test" href="installation/test_install.html" /> <script src="_static/js/modernizr.min.js"></script> @@ -86,7 +86,12 @@ <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="downloads.html">Downloads</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li> -<li class="toctree-l1 current"><a class="current reference internal" href="#">Program Structure</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Program Structure</a><ul> +<li class="toctree-l2"><a class="reference internal" href="program_structure/prog_overview.html">Program Overview</a></li> +<li class="toctree-l2"><a class="reference internal" href="program_structure/prog_components.html">Program Components</a></li> +<li class="toctree-l2"><a class="reference internal" href="program_structure/prog_flow.html">Program Flow</a></li> +</ul> +</li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> <li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a></li> <li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li> @@ -159,6 +164,8 @@ <p>Describe structure of flex_extract ….</p> <blockquote> <div>UNDER CONSTRUCTION</div></blockquote> +<div class="toctree-wrapper compound"> +</div> </div> @@ -169,10 +176,10 @@ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="user_guide.html" class="btn btn-neutral float-right" title="User Guide" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="program_structure/prog_overview.html" class="btn btn-neutral float-right" title="Program Overview" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="installation.html" class="btn btn-neutral" title="Installation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="installation/test_install.html" class="btn btn-neutral" title="Installation test" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/documentation/Sphinx/build/html/program_structure/prog_components.html b/documentation/Sphinx/build/html/program_structure/prog_components.html new file mode 100644 index 0000000000000000000000000000000000000000..52ecea22b66ae4b4d00ae87f1df70e4e09da92e8 --- /dev/null +++ b/documentation/Sphinx/build/html/program_structure/prog_components.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Program Components — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Program Flow" href="prog_flow.html" /> + <link rel="prev" title="Program Overview" href="prog_overview.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../program_structure.html">Program Structure</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="prog_overview.html">Program Overview</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Program Components</a></li> +<li class="toctree-l2"><a class="reference internal" href="prog_flow.html">Program Flow</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../program_structure.html">Program Structure</a> »</li> + + <li>Program Components</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/program_structure/prog_components.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="program-components"> +<h1>Program Components<a class="headerlink" href="#program-components" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="prog_flow.html" class="btn btn-neutral float-right" title="Program Flow" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="prog_overview.html" class="btn btn-neutral" title="Program Overview" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/program_structure/prog_flow.html b/documentation/Sphinx/build/html/program_structure/prog_flow.html new file mode 100644 index 0000000000000000000000000000000000000000..04ccdef5dbce5259c85a6b8cfec367031557da4f --- /dev/null +++ b/documentation/Sphinx/build/html/program_structure/prog_flow.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Program Flow — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="User Guide" href="../user_guide.html" /> + <link rel="prev" title="Program Components" href="prog_components.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../program_structure.html">Program Structure</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="prog_overview.html">Program Overview</a></li> +<li class="toctree-l2"><a class="reference internal" href="prog_components.html">Program Components</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Program Flow</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../program_structure.html">Program Structure</a> »</li> + + <li>Program Flow</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/program_structure/prog_flow.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="program-flow"> +<h1>Program Flow<a class="headerlink" href="#program-flow" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="../user_guide.html" class="btn btn-neutral float-right" title="User Guide" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="prog_components.html" class="btn btn-neutral" title="Program Components" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/program_structure/prog_overview.html b/documentation/Sphinx/build/html/program_structure/prog_overview.html new file mode 100644 index 0000000000000000000000000000000000000000..8631b1c481bec58665e872f14ce0e51a45c79dd2 --- /dev/null +++ b/documentation/Sphinx/build/html/program_structure/prog_overview.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Program Overview — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Program Components" href="prog_components.html" /> + <link rel="prev" title="Program Structure" href="../program_structure.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../program_structure.html">Program Structure</a><ul class="current"> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Program Overview</a></li> +<li class="toctree-l2"><a class="reference internal" href="prog_components.html">Program Components</a></li> +<li class="toctree-l2"><a class="reference internal" href="prog_flow.html">Program Flow</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../program_structure.html">Program Structure</a> »</li> + + <li>Program Overview</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/program_structure/prog_overview.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="program-overview"> +<h1>Program Overview<a class="headerlink" href="#program-overview" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="prog_components.html" class="btn btn-neutral float-right" title="Program Components" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="../program_structure.html" class="btn btn-neutral" title="Program Structure" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/py-modindex.html b/documentation/Sphinx/build/html/py-modindex.html index 33eec2dce739da382608508548a9277a47bb2ddc..cad8060721eddd9025715d21cd181f5c1da24c07 100644 --- a/documentation/Sphinx/build/html/py-modindex.html +++ b/documentation/Sphinx/build/html/py-modindex.html @@ -159,11 +159,28 @@ <h1>Python Module Index</h1> <div class="modindex-jumpbox"> - <a href="#cap-d"><strong>d</strong></a> + <a href="#cap-c"><strong>c</strong></a> | + <a href="#cap-d"><strong>d</strong></a> | + <a href="#cap-e"><strong>e</strong></a> | + <a href="#cap-g"><strong>g</strong></a> | + <a href="#cap-i"><strong>i</strong></a> | + <a href="#cap-m"><strong>m</strong></a> | + <a href="#cap-p"><strong>p</strong></a> | + <a href="#cap-s"><strong>s</strong></a> | + <a href="#cap-t"><strong>t</strong></a> | + <a href="#cap-u"><strong>u</strong></a> </div> <table class="indextable modindextable"> <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-c"><td></td><td> + <strong>c</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-ControlFile"><code class="xref">ControlFile</code></a></td><td> + <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> <tr class="cap" id="cap-d"><td></td><td> <strong>d</strong></td><td></td></tr> <tr> @@ -171,6 +188,75 @@ <td> <a href="api.html#module-disaggregation"><code class="xref">disaggregation</code></a></td><td> <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-e"><td></td><td> + <strong>e</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-EcFlexpart"><code class="xref">EcFlexpart</code></a></td><td> + <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-g"><td></td><td> + <strong>g</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-get_mars_data"><code class="xref">get_mars_data</code></a></td><td> + <em></em></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-GribTools"><code class="xref">GribTools</code></a></td><td> + <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-i"><td></td><td> + <strong>i</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-install"><code class="xref">install</code></a></td><td> + <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-m"><td></td><td> + <strong>m</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-MarsRetrieval"><code class="xref">MarsRetrieval</code></a></td><td> + <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-p"><td></td><td> + <strong>p</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-prepare_flexpart"><code class="xref">prepare_flexpart</code></a></td><td> + <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-s"><td></td><td> + <strong>s</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-submit"><code class="xref">submit</code></a></td><td> + <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-t"><td></td><td> + <strong>t</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-tools"><code class="xref">tools</code></a></td><td> + <em></em></td></tr> + <tr class="pcap"><td></td><td> </td><td></td></tr> + <tr class="cap" id="cap-u"><td></td><td> + <strong>u</strong></td><td></td></tr> + <tr> + <td></td> + <td> + <a href="api.html#module-UioFiles"><code class="xref">UioFiles</code></a></td><td> + <em></em></td></tr> </table> diff --git a/documentation/Sphinx/build/html/requirements.html b/documentation/Sphinx/build/html/requirements.html index e4d7dc8e6b978c9724ba39cf998ef0b2d73e7db0..ad34a4669542f6d2dcf4deb49045d5740adaf237 100644 --- a/documentation/Sphinx/build/html/requirements.html +++ b/documentation/Sphinx/build/html/requirements.html @@ -28,8 +28,8 @@ <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> - <link rel="next" title="Installation" href="installation.html" /> - <link rel="prev" title="Welcome to flex_extract’s documentation!" href="index.html" /> + <link rel="next" title="Operating modes" href="oper_modes.html" /> + <link rel="prev" title="Installation" href="installation.html" /> <script src="_static/js/modernizr.min.js"></script> @@ -82,12 +82,19 @@ - <p class="caption"><span class="caption-text">Contents:</span></p> + <p class="caption"><span class="caption-text">Table of Contents:</span></p> <ul class="current"> -<li class="toctree-l1 current"><a class="current reference internal" href="#">Requirements</a></li> -<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li> -<li class="toctree-l1"><a class="reference internal" href="usage.html">Usage</a></li> -<li class="toctree-l1"><a class="reference internal" href="API.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="downloads.html">Downloads</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="installation.html">Installation</a><ul class="current"> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Requirements</a></li> +<li class="toctree-l2"><a class="reference internal" href="oper_modes.html">Operating modes</a></li> +<li class="toctree-l2"><a class="reference internal" href="test_install.html">Installation test</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li> </ul> @@ -133,6 +140,8 @@ <li><a href="index.html">Docs</a> »</li> + <li><a href="installation.html">Installation</a> »</li> + <li>Requirements</li> @@ -154,7 +163,6 @@ <div class="section" id="requirements"> <h1>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h1> -<p>Describe the requirements to use flex_extract ….</p> <blockquote> <div>UNDER CONSTRUCTION</div></blockquote> </div> @@ -167,10 +175,10 @@ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="installation.html" class="btn btn-neutral float-right" title="Installation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="oper_modes.html" class="btn btn-neutral float-right" title="Operating modes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="index.html" class="btn btn-neutral" title="Welcome to flex_extract’s documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="installation.html" class="btn btn-neutral" title="Installation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/documentation/Sphinx/build/html/searchindex.js b/documentation/Sphinx/build/html/searchindex.js index 058d757b07191fcc7aa8130b902a1802dfd4f080..20080a1ad1b23db178708ab16dbdc8d268cc91ae 100644 --- a/documentation/Sphinx/build/html/searchindex.js +++ b/documentation/Sphinx/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["api","downloads","index","installation","program_structure","requirements","support","user_guide"],envversion:54,filenames:["api.rst","downloads.rst","index.rst","installation.rst","program_structure.rst","requirements.rst","support.rst","user_guide.rst"],objects:{"":{disaggregation:[0,0,0,"-"]},disaggregation:{IA3:[0,1,1,""],dapoly:[0,1,1,""],darain:[0,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:function"},terms:{"class":[],"default":[],"float":0,"function":[],"int":[],"new":0,"return":0,"short":[],For:0,Its:0,The:0,Uses:[],abcd:[],about:[],abov:[],accumlu:0,accumul:0,adapt:0,adaptaion:[],adding:0,addit:0,addition:0,addpar:[],address:[],advanc:0,afterward:0,algorithm:0,alist:0,all:0,alreadi:[],also:[],ann:0,anoth:[],api:2,appli:0,applic:0,arbitrari:[],arcad:[],arg:[],argument:[],argumentpars:[],arrai:0,array_t1:0,array_t2:0,array_t3:0,array_t4:0,articl:0,assign:[],associ:0,asteroid:[],attribut:0,author:0,auto:2,ball:2,base:0,beck:0,befor:[],book:[],box:0,bug:2,call:[],can:[],central:0,chang:2,changehistori:[],charact:[],check:[],clean_up:[],code:[],coin:[],collect:[],combin:[],command:[],commandlin:[],common:0,complet:0,compon:2,concaten:[],concatenate_sign:[],conserv:0,construct:[1,2,3,4,5,6,7],contain:[],content:2,control:2,controlfil:[],convert:[],copi:0,copyright:0,creat:[],creativ:0,creativecommon:0,cubic:0,dapoli:0,darain:0,data:0,date:[],deaccumul:0,decompos:[],depend:[],describ:[1,3,4,5,6,7],descript:[],destin:[],develop:0,dict:[],dictionari:[],differ:2,dimens:0,dimension:0,directori:[],disaggreg:0,disaggregationreg:[],dispers:0,displai:[],doc:[],doe:[],done:0,download:2,draw:[],dure:0,each:0,ecaccess:[],ecd:[],ecflexpart:[],ecgid:[],ecmwf:0,ecmwv:[],ecuid:[],element:[],email:[],empti:[],env:[],environ:[],equal:0,error:[],exampl:[],execut:[],exist:[],exit:[],extens:0,fail:[],faq:2,field:0,file:[],filenam:[],filepath:[],filter:0,flex_extract:[1,3,4,5,7],flexpart:0,flow:2,flux:0,format:[],fortran:0,from:0,full:[],gatewai:[],gener:2,geometr:0,geoscientif:0,get:[],get_cmdline_argu:[],get_list_as_str:[],git:2,github:[],give:[],given:[],grib:[],grid:0,group:[],guid:2,haimberg:0,handl:[],have:0,help:[],here:2,histori:2,hittmeir:0,horizont:0,how:2,http:0,ia3:0,ids:[],improv:0,includ:[],index:2,inform:0,init128:[],input:0,inputdir:[],instal:2,instanc:[],instead:[],integ:[],integr:0,intermedi:[],intern:0,interpol:0,interv:0,ipar:[],issu:2,itself:[],jame:0,job:[],jobfil:[],jobnam:[],june:0,just:[],keep:0,kei:[],keyword:[],known:2,kwd:[],lagrangian:0,learn:[],length:0,leopold:0,letter:0,licens:[0,2],line:[],linear:0,linux:[],list:[0,2],list_obj:[],mac:[],mail:2,make_dir:[],march:0,mean:0,mention:[],messag:[],method:[],might:[],migrat:0,mode:2,model:0,modifi:0,modul:2,monoton:0,more:0,mountain:0,my_error:[],name:[],neg:0,nfield:0,non:0,none:[],none_or_int:[],none_or_str:[],normal_exit:[],note:[],noth:[],notif:[],notifi:[],novemb:0,number:[],obj:[],one:2,onli:[],open:[],oper:2,option:[1,6],org:0,origin:0,originla:[],other:[],otherwis:[],output:0,overview:2,page:2,par:[],paramet:0,particl:0,pass:[],path:[],petra:0,philipp:0,point:0,polynomi:0,posit:[],primit:[],print:[],problem:[],process:3,prod:[],product:[],program:2,properti:0,pure:[],put:2,put_file_to_ecserv:[],python:0,quantiti:0,queue:[],quick:[],rainfal:0,rang:[],raw:0,rcode:[],read:[],read_ecenv:[],reason:[],reconstruct:0,refer:0,releas:[],remov:[],repeat:[],replac:[],repositori:2,repres:[],requir:2,rest:[],result:[],sabin:0,sampl:0,scheme:0,script:[],search:2,second:[],see:0,seibert:0,send:0,sent:[],sepeart:[],seri:0,server:[],should:[],silent_remov:[],sinc:[],singl:[],size:[],smasher:[],softwar:[],solut:0,sourc:0,specif:[],specifi:[],sprite:[],stop:[],store:[],str_of_list:[],string:[],structur:2,subgrid:0,submit:[],submit_job_to_ecserv:[],success:[],support:2,system:2,tabl:[],table128:[],taken:[],tar:2,target:[],templat:2,test:2,text:2,thei:[],them:[],thi:0,three:0,ticket:2,time:0,timeseri:0,timespan:0,to_param_id:[],tool:[],transform:[],trigger:[],tupl:[],two:0,type:0,under:[0,1,3,4,5,6,7],univers:0,usa:0,usag:[],use:[2,5],used:0,user:2,using:[0,7],valu:0,variabl:[],vienna:0,view:0,visit:0,warn:[],websit:[],were:[],where:[],which:[0,2],whole:[],wiki:[],wil:[],window:[],within:0,without:[],word:[],work:0,yield:[]},titles:["Auto Generated Documentation","Downloads","Welcome to flex_extract\u2019s documentation!","Installation","Program Structure","Requirements","Support","User Guide"],titleterms:{auto:0,document:[0,2],download:1,flex_extract:2,gener:0,guid:7,indic:2,instal:3,program:4,pure:[],requir:5,rest:[],structur:4,support:6,tabl:2,usag:[],user:7,welcom:2}}) \ No newline at end of file +Search.setIndex({docnames:["api","downloads","downloads/git_repo","downloads/history_changes","downloads/tar_balls","index","installation","installation/oper_modes","installation/requirements","installation/test_install","program_structure","program_structure/prog_components","program_structure/prog_flow","program_structure/prog_overview","support","support/faq","support/known_bugs_issues","support/mailing_list","support/ticket_system","user_guide","user_guide/control_templates","user_guide/how_to"],envversion:54,filenames:["api.rst","downloads.rst","downloads/git_repo.rst","downloads/history_changes.rst","downloads/tar_balls.rst","index.rst","installation.rst","installation/oper_modes.rst","installation/requirements.rst","installation/test_install.rst","program_structure.rst","program_structure/prog_components.rst","program_structure/prog_flow.rst","program_structure/prog_overview.rst","support.rst","support/faq.rst","support/known_bugs_issues.rst","support/mailing_list.rst","support/ticket_system.rst","user_guide.rst","user_guide/control_templates.rst","user_guide/how_to.rst"],objects:{"":{ControlFile:[0,0,0,"-"],EcFlexpart:[0,0,0,"-"],GribTools:[0,0,0,"-"],MarsRetrieval:[0,0,0,"-"],UioFiles:[0,0,0,"-"],disaggregation:[0,0,0,"-"],get_mars_data:[0,0,0,"-"],install:[0,0,0,"-"],prepare_flexpart:[0,0,0,"-"],submit:[0,0,0,"-"],tools:[0,0,0,"-"]},"ControlFile.ControlFile":{assign_args_to_control:[0,2,1,""],assign_envs_to_control:[0,2,1,""],check_conditions:[0,2,1,""],check_install_conditions:[0,2,1,""],to_list:[0,2,1,""]},"EcFlexpart.EcFlexpart":{create:[0,2,1,""],deacc_fluxes:[0,2,1,""],prepare_fp_files:[0,2,1,""],process_output:[0,2,1,""],retrieve:[0,2,1,""],write_namelist:[0,2,1,""]},"GribTools.GribTools":{copy:[0,2,1,""],get_keys:[0,2,1,""],index:[0,2,1,""],set_keys:[0,2,1,""]},"MarsRetrieval.MarsRetrieval":{data_retrieve:[0,2,1,""],display_info:[0,2,1,""],print_info:[0,2,1,""],print_infodata_csv:[0,2,1,""]},"UioFiles.UioFiles":{delete_files:[0,2,1,""]},ControlFile:{ControlFile:[0,1,1,""]},EcFlexpart:{EcFlexpart:[0,1,1,""]},GribTools:{GribTools:[0,1,1,""]},MarsRetrieval:{MarsRetrieval:[0,1,1,""]},UioFiles:{UioFiles:[0,1,1,""]},disaggregation:{IA3:[0,3,1,""],dapoly:[0,3,1,""],darain:[0,3,1,""]},get_mars_data:{do_retrievement:[0,3,1,""],get_mars_data:[0,3,1,""],main:[0,3,1,""]},install:{delete_convert_build:[0,3,1,""],get_install_cmdline_arguments:[0,3,1,""],install_via_gateway:[0,3,1,""],main:[0,3,1,""],make_convert_build:[0,3,1,""],mk_compilejob:[0,3,1,""],mk_env_vars:[0,3,1,""],mk_job_template:[0,3,1,""],mk_tarball:[0,3,1,""],un_tarball:[0,3,1,""]},prepare_flexpart:{main:[0,3,1,""],prepare_flexpart:[0,3,1,""]},submit:{main:[0,3,1,""],submit:[0,3,1,""]},tools:{clean_up:[0,3,1,""],get_cmdline_arguments:[0,3,1,""],get_list_as_string:[0,3,1,""],init128:[0,3,1,""],make_dir:[0,3,1,""],my_error:[0,3,1,""],none_or_int:[0,3,1,""],none_or_str:[0,3,1,""],normal_exit:[0,3,1,""],product:[0,3,1,""],put_file_to_ecserver:[0,3,1,""],read_ecenv:[0,3,1,""],silent_remove:[0,3,1,""],submit_job_to_ecserver:[0,3,1,""],to_param_id:[0,3,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function"},terms:{"boolean":0,"class":5,"default":0,"final":0,"float":0,"function":0,"int":0,"new":0,"public":0,"return":0,"short":0,"switch":0,"true":0,For:0,Its:0,The:0,Then:0,Used:0,Uses:0,_expand:0,_templat:0,abcd:0,about:0,abov:0,access:0,accumlu:0,accumul:0,accuraci:0,actual:0,adapt:0,adaptaion:[],add:0,adding:0,addit:0,addition:0,addpar:0,address:0,advanc:0,afterward:0,algorithm:0,alist:0,all:[0,5],alpabet:0,alreadi:0,also:0,ann:0,anoth:0,api:[0,5],appli:0,applic:0,arbitrari:0,arcad:[],archiv:5,area:0,arg:0,argument:0,argumentpars:[],arrai:0,array_t1:0,array_t2:0,array_t3:0,array_t4:0,articl:0,assign:0,assign_args_to_control:0,assign_envs_to_control:0,associ:0,asteroid:[],atmospher:5,attribut:0,author:0,auto:5,ball:5,base:0,beck:0,befor:0,binari:0,book:[],box:0,bug:5,build:0,call:0,can:0,cca:0,centr:5,central:0,chang:5,changehistori:[],charact:0,charg:5,check:0,check_condit:0,check_install_condit:0,chunk:0,clean:0,clean_up:0,code:0,coin:[],collect:0,combin:0,command:0,commandlin:0,common:0,compil:0,complet:0,compon:5,concaten:0,concatenate_sign:0,condit:0,connect:0,conserv:0,construct:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],contain:0,content:[0,5],control:[0,5],controlfil:5,convent:0,convers:0,convert2:0,convert:0,copi:0,copyright:0,correctli:0,correspond:0,coupl:0,creat:0,creativ:0,creativecommon:0,csv:0,cubic:0,current:0,dapoli:0,darain:0,data:0,data_retriev:0,dataset:0,date:0,datechunk:0,datetim:0,deacc_flux:0,deaccumul:0,debug:0,decid:0,decis:0,decompos:0,defin:0,delet:0,delete_convert_build:0,delete_fil:0,delta_t:0,depend:0,describ:[1,10],descript:0,destin:0,detail:0,develop:0,dict:[],dictionari:0,differ:[0,5],dimens:0,dimension:0,directli:0,directori:0,disaggreg:5,disaggregationreg:[],dispers:0,displai:0,display_info:0,divid:0,do_retriev:0,doc:[],doe:0,done:0,download:5,draw:[],dure:0,each:0,ecaccess:0,ecd:0,ecflexpart:5,ecgat:0,ecgid:0,ecmwf:[0,5],ecmwf_env:0,ecmwfdatadir:0,ecmwfdataserv:0,ecmwfservic:0,ecmwv:[],ecstorag:0,ectran:0,ecuid:0,element:0,email:0,empti:0,end:0,entri:0,env:0,environ:0,environment:0,equal:0,error:0,european:5,everyth:0,exampl:0,except:0,execut:0,exedir:0,exist:0,exit:0,express:0,expver:0,extens:0,extra:0,extract:0,fail:0,fals:0,faq:5,field:[0,5],file:[0,5],filemod:0,filenam:0,filename_in:0,filepath:0,filter:0,flex_extract:[0,1,10],flexpart:[0,5],flexpart_root_script:0,flextra:5,flow:5,flux:0,follow:0,forecast:5,format:0,fort:0,fortran:0,found:0,fp_root:0,free:5,from:[0,5],fromfil:0,full:0,gate:0,gatewai:0,gaussian:0,gener:5,geometr:0,geoscientif:0,get:0,get_cmdline_argu:0,get_install_cmdline_argu:0,get_kei:0,get_list_as_str:0,get_mars_data:5,git:5,github:[],give:0,given:0,goe:0,going:0,grib2:0,grib:0,gribtool:5,grid:0,group:0,guid:5,haimberg:0,handl:0,has:0,have:0,help:[],here:[0,5],histori:5,hittmeir:0,horizont:0,hour:0,how:5,http:0,ia3:0,identif:0,identificationkeyword:0,ids:0,idx:0,iid:0,improv:0,includ:0,index:[0,5],index_fil:0,index_kei:0,indic:0,inform:0,init128:0,initialis:0,input:[0,5],inputdir:0,inputfil:0,instal:5,install_via_gatewai:0,instanc:0,instead:0,instruct:0,integ:0,integr:0,intermedi:0,intern:0,interpol:0,interv:0,ipar:0,issu:5,iter:0,its:0,itself:0,jame:0,job:0,jobfil:0,jobnam:0,jtemplat:0,june:0,just:0,keep:0,kei:0,keynam:0,keyvalu:0,keyword:0,known:5,kwd:0,lagrangian:0,learn:[],length:0,leopold:0,letter:0,levelist:0,levtyp:0,librari:5,licens:[0,5],line:0,linear:0,linux:[],list:[0,5],list_obj:0,local:0,mac:[],machin:0,made:0,mail:[0,5],main:0,make_convert_build:0,make_dir:0,makefil:0,manipul:0,mar:[0,5],march:0,marsclass:0,marsretriev:5,matter:0,maxb:0,maxim:0,maxl:0,mdpdeta:0,mean:0,medium:5,meet:0,member:0,mention:0,messag:0,meta:0,metadiff:0,metapar:0,meteorolog:5,method:0,mgauss:0,might:0,migrat:0,mk_compilejob:0,mk_env_var:0,mk_job_templ:0,mk_tarbal:0,mlevel:0,mlevelist:0,mnauf:0,mod:0,mode:[0,5],model:[0,5],modif:0,modifi:0,modul:5,momega:0,momegadiff:0,monoton:0,more:0,mountain:0,move:0,msmooth:0,my_error:0,name:0,namelist:0,namespac:0,necessari:0,need:0,neg:0,nfield:0,non:0,none:0,none_or_int:0,none_or_str:0,normal_exit:0,note:[],noth:[],notif:0,notifi:0,novemb:0,number:0,obj:[],object:0,one:[0,5],onli:0,open:[0,5],oper:5,option:[0,1],order:0,org:0,origin:0,originla:[],other:0,otherwis:0,out:0,output:0,over:0,overview:5,overwrit:0,page:5,par:0,param:0,paramet:0,parameternam:0,parti:5,particl:0,pass:0,path:0,pattern:0,per:0,perform:0,period:0,petra:0,philipp:0,point:0,polynomi:0,porgram:5,posit:0,postprocess:0,ppid:0,prepar:0,prepare_flexpart:5,prepare_fp_fil:0,primit:[],print:0,print_info:0,print_infodata_csv:0,problem:0,process:0,process_output:0,prod:0,product:0,program:[0,5],properli:0,properti:0,provid:0,pure:[],put:[0,5],put_file_to_ecserv:0,python:0,quantiti:0,queue:0,quick:[],rainfal:0,rang:[0,5],raw:0,rcode:0,read:0,read_ecenv:0,readi:0,reason:0,reconstruct:0,refer:0,regular:0,releas:[],relev:0,remot:0,remov:0,repeat:0,replac:[],report:0,repositori:5,repr:0,repres:0,request:0,request_numb:0,requir:5,resol:0,rest:0,result:0,retriev:[0,5],return_list:0,rla0:0,rla1:0,rlo0:0,rlo1:0,root:0,sabin:0,same:0,sampl:0,scheme:0,script:0,search:5,second:5,see:0,seibert:0,select:0,selectwher:0,send:0,sent:0,sepeart:0,seper:0,seri:0,server:[0,5],set:0,set_kei:0,shell:0,should:0,silent_remov:0,simul:0,sinc:0,singl:0,size:[],smaller:0,smasher:[],softwar:[0,5],solut:0,some:[],sort:0,sourc:[0,5],specif:0,specifi:0,sprite:[],src_path:0,standard:0,start:0,state:0,statement:0,step:0,steprang:0,stop:0,storag:0,store:0,str_of_list:0,stream:0,stress:0,strict:0,string:0,structur:5,sub:0,subgrid:0,submiss:0,submit:5,submit_job_to_ecserv:0,subprocess:0,success:0,support:5,surfac:0,system:5,tabl:0,table128:0,take:0,taken:0,tar:[0,5],tarbal:0,tarball_path:0,target:0,temp:0,templat:[0,5],temporari:0,test:[0,5],text:5,thei:0,them:0,thi:0,those:0,three:0,through:0,ticket:5,time:0,timeseri:0,timespan:0,to_list:0,to_param_id:0,tool:5,transfer:0,transform:0,transport:5,trigger:0,tupl:0,two:0,type:0,udoc:0,uiofil:5,un_tarbal:0,under:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],uniqu:0,univers:0,usa:0,usag:[],use:5,used:[0,5],user:0,using:0,util:0,valu:0,variabl:0,version:0,via:0,vienna:0,view:0,visit:0,warn:0,weather:5,web:0,websit:0,well:0,were:0,what:[],where:0,wherekeynam:0,wherekeyvalu:0,which:[0,5],whole:0,wiki:0,wil:0,window:[],within:[0,5],without:0,word:0,work:0,write:0,write_namelist:0,written:0,yield:0,yyyymmdd:0},titles:["Auto Generated Documentation","Downloads","Git Repository","History of Changes","Download tar-balls","Welcome to flex_extract\u2019s user documentation!","Installation","Operating modes","Requirements","Installation test","Program Structure","Program Components","Program Flow","Program Overview","Support","FAQ - Frequently asked questions","Known Bugs and Issues","Mailing Lists","Ticket System","User Guide","CONTROL-file templates","How to use flex_extract"],titleterms:{"class":0,ask:15,auto:0,ball:4,bug:16,chang:3,compon:11,content:[],control:20,controlfil:0,disaggreg:0,document:[0,5],download:[1,4],ecflexpart:0,faq:15,file:20,flex_extract:[5,21],flow:12,frequent:15,gener:0,get_mars_data:0,git:2,gribtool:0,guid:19,histori:3,how:21,indic:5,instal:[0,6,9],issu:16,known:16,list:17,mail:17,marsretriev:0,mode:7,modul:0,oper:7,overview:13,porgram:0,prepare_flexpart:0,program:[10,11,12,13],pure:[],question:15,repositori:2,requir:8,rest:[],structur:10,submit:0,support:14,system:18,tabl:5,tar:4,templat:20,test:9,ticket:18,tool:0,uiofil:0,usag:[],use:21,user:[5,19],welcom:5}}) \ No newline at end of file diff --git a/documentation/Sphinx/build/html/support.html b/documentation/Sphinx/build/html/support.html index ef8c635a0e2ce96b8ef9dc86b1f090c4986e6004..b08af70ebf6814032c0ce2dbbb404f01f22424af 100644 --- a/documentation/Sphinx/build/html/support.html +++ b/documentation/Sphinx/build/html/support.html @@ -28,6 +28,7 @@ <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> + <link rel="next" title="Ticket System" href="support/ticket_system.html" /> <link rel="prev" title="Auto Generated Documentation" href="api.html" /> @@ -88,7 +89,13 @@ <li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> <li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a></li> -<li class="toctree-l1 current"><a class="current reference internal" href="#">Support</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Support</a><ul> +<li class="toctree-l2"><a class="reference internal" href="support/ticket_system.html">Ticket System</a></li> +<li class="toctree-l2"><a class="reference internal" href="support/mailing_list.html">Mailing Lists</a></li> +<li class="toctree-l2"><a class="reference internal" href="support/known_bugs_issues.html">Known Bugs and Issues</a></li> +<li class="toctree-l2"><a class="reference internal" href="support/faq.html">FAQ - Frequently asked questions</a></li> +</ul> +</li> </ul> @@ -155,9 +162,10 @@ <div class="section" id="support"> <h1>Support<a class="headerlink" href="#support" title="Permalink to this headline">¶</a></h1> -<p>Describe support options ….</p> <blockquote> <div>UNDER CONSTRUCTION</div></blockquote> +<div class="toctree-wrapper compound"> +</div> </div> @@ -168,6 +176,8 @@ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + <a href="support/ticket_system.html" class="btn btn-neutral float-right" title="Ticket System" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="api.html" class="btn btn-neutral" title="Auto Generated Documentation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> diff --git a/documentation/Sphinx/build/html/support/faq.html b/documentation/Sphinx/build/html/support/faq.html new file mode 100644 index 0000000000000000000000000000000000000000..a6b7efba8ef52b81be5a865c8c2439229b6feb14 --- /dev/null +++ b/documentation/Sphinx/build/html/support/faq.html @@ -0,0 +1,234 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>FAQ - Frequently asked questions — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="prev" title="Known Bugs and Issues" href="known_bugs_issues.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../support.html">Support</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="ticket_system.html">Ticket System</a></li> +<li class="toctree-l2"><a class="reference internal" href="mailing_list.html">Mailing Lists</a></li> +<li class="toctree-l2"><a class="reference internal" href="known_bugs_issues.html">Known Bugs and Issues</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">FAQ - Frequently asked questions</a></li> +</ul> +</li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../support.html">Support</a> »</li> + + <li>FAQ - Frequently asked questions</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/support/faq.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="faq-frequently-asked-questions"> +<h1>FAQ - Frequently asked questions<a class="headerlink" href="#faq-frequently-asked-questions" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + + <a href="known_bugs_issues.html" class="btn btn-neutral" title="Known Bugs and Issues" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/support/known_bugs_issues.html b/documentation/Sphinx/build/html/support/known_bugs_issues.html new file mode 100644 index 0000000000000000000000000000000000000000..204adccc012a5756e490f65939ebf858c331694c --- /dev/null +++ b/documentation/Sphinx/build/html/support/known_bugs_issues.html @@ -0,0 +1,237 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Known Bugs and Issues — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="FAQ - Frequently asked questions" href="faq.html" /> + <link rel="prev" title="Mailing Lists" href="mailing_list.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../support.html">Support</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="ticket_system.html">Ticket System</a></li> +<li class="toctree-l2"><a class="reference internal" href="mailing_list.html">Mailing Lists</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Known Bugs and Issues</a></li> +<li class="toctree-l2"><a class="reference internal" href="faq.html">FAQ - Frequently asked questions</a></li> +</ul> +</li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../support.html">Support</a> »</li> + + <li>Known Bugs and Issues</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/support/known_bugs_issues.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="known-bugs-and-issues"> +<h1>Known Bugs and Issues<a class="headerlink" href="#known-bugs-and-issues" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="faq.html" class="btn btn-neutral float-right" title="FAQ - Frequently asked questions" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="mailing_list.html" class="btn btn-neutral" title="Mailing Lists" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/support/mailing_list.html b/documentation/Sphinx/build/html/support/mailing_list.html new file mode 100644 index 0000000000000000000000000000000000000000..b3b27909ef4c6006ceea6a95e59dd48976e25ff5 --- /dev/null +++ b/documentation/Sphinx/build/html/support/mailing_list.html @@ -0,0 +1,237 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Mailing Lists — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Known Bugs and Issues" href="known_bugs_issues.html" /> + <link rel="prev" title="Ticket System" href="ticket_system.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../support.html">Support</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="ticket_system.html">Ticket System</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Mailing Lists</a></li> +<li class="toctree-l2"><a class="reference internal" href="known_bugs_issues.html">Known Bugs and Issues</a></li> +<li class="toctree-l2"><a class="reference internal" href="faq.html">FAQ - Frequently asked questions</a></li> +</ul> +</li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../support.html">Support</a> »</li> + + <li>Mailing Lists</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/support/mailing_list.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="mailing-lists"> +<h1>Mailing Lists<a class="headerlink" href="#mailing-lists" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="known_bugs_issues.html" class="btn btn-neutral float-right" title="Known Bugs and Issues" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="ticket_system.html" class="btn btn-neutral" title="Ticket System" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/support/ticket_system.html b/documentation/Sphinx/build/html/support/ticket_system.html new file mode 100644 index 0000000000000000000000000000000000000000..e0cdb95ceb17fbd9aaa0ef1c2ea928977b5a63f3 --- /dev/null +++ b/documentation/Sphinx/build/html/support/ticket_system.html @@ -0,0 +1,237 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Ticket System — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Mailing Lists" href="mailing_list.html" /> + <link rel="prev" title="Support" href="../support.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="../user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../support.html">Support</a><ul class="current"> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Ticket System</a></li> +<li class="toctree-l2"><a class="reference internal" href="mailing_list.html">Mailing Lists</a></li> +<li class="toctree-l2"><a class="reference internal" href="known_bugs_issues.html">Known Bugs and Issues</a></li> +<li class="toctree-l2"><a class="reference internal" href="faq.html">FAQ - Frequently asked questions</a></li> +</ul> +</li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../support.html">Support</a> »</li> + + <li>Ticket System</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/support/ticket_system.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="ticket-system"> +<h1>Ticket System<a class="headerlink" href="#ticket-system" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="mailing_list.html" class="btn btn-neutral float-right" title="Mailing Lists" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="../support.html" class="btn btn-neutral" title="Support" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/test_install.html b/documentation/Sphinx/build/html/test_install.html new file mode 100644 index 0000000000000000000000000000000000000000..a5f872f1ce22ac97e81454d6e70707b48b5e9e4a --- /dev/null +++ b/documentation/Sphinx/build/html/test_install.html @@ -0,0 +1,236 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Installation test — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="search.html" /> + <link rel="next" title="Program Structure" href="program_structure.html" /> + <link rel="prev" title="Operating modes" href="oper_modes.html" /> + + + <script src="_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="downloads.html">Downloads</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="installation.html">Installation</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="requirements.html">Requirements</a></li> +<li class="toctree-l2"><a class="reference internal" href="oper_modes.html">Operating modes</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">Installation test</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> +<li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="index.html">Docs</a> »</li> + + <li><a href="installation.html">Installation</a> »</li> + + <li>Installation test</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="_sources/test_install.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="installation-test"> +<h1>Installation test<a class="headerlink" href="#installation-test" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="program_structure.html" class="btn btn-neutral float-right" title="Program Structure" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="oper_modes.html" class="btn btn-neutral" title="Operating modes" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'./', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/user_guide.html b/documentation/Sphinx/build/html/user_guide.html index d09ea886ce88696035646ee7db9ba9575fda4480..36e084e8a2821b5ba013fa460467cb01145d6efc 100644 --- a/documentation/Sphinx/build/html/user_guide.html +++ b/documentation/Sphinx/build/html/user_guide.html @@ -28,8 +28,8 @@ <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> - <link rel="next" title="Auto Generated Documentation" href="api.html" /> - <link rel="prev" title="Program Structure" href="program_structure.html" /> + <link rel="next" title="How to use flex_extract" href="user_guide/how_to.html" /> + <link rel="prev" title="Program Flow" href="program_structure/prog_flow.html" /> <script src="_static/js/modernizr.min.js"></script> @@ -87,7 +87,11 @@ <li class="toctree-l1"><a class="reference internal" href="downloads.html">Downloads</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li> <li class="toctree-l1"><a class="reference internal" href="program_structure.html">Program Structure</a></li> -<li class="toctree-l1 current"><a class="current reference internal" href="#">User Guide</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">User Guide</a><ul> +<li class="toctree-l2"><a class="reference internal" href="user_guide/how_to.html">How to use flex_extract</a></li> +<li class="toctree-l2"><a class="reference internal" href="user_guide/control_templates.html">CONTROL-file templates</a></li> +</ul> +</li> <li class="toctree-l1"><a class="reference internal" href="api.html">Auto Generated Documentation</a></li> <li class="toctree-l1"><a class="reference internal" href="support.html">Support</a></li> </ul> @@ -156,9 +160,10 @@ <div class="section" id="user-guide"> <h1>User Guide<a class="headerlink" href="#user-guide" title="Permalink to this headline">¶</a></h1> -<p>Describe using flex_extract ….</p> <blockquote> <div>UNDER CONSTRUCTION</div></blockquote> +<div class="toctree-wrapper compound"> +</div> </div> @@ -169,10 +174,10 @@ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - <a href="api.html" class="btn btn-neutral float-right" title="Auto Generated Documentation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + <a href="user_guide/how_to.html" class="btn btn-neutral float-right" title="How to use flex_extract" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> - <a href="program_structure.html" class="btn btn-neutral" title="Program Structure" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + <a href="program_structure/prog_flow.html" class="btn btn-neutral" title="Program Flow" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> diff --git a/documentation/Sphinx/build/html/user_guide/control_templates.html b/documentation/Sphinx/build/html/user_guide/control_templates.html new file mode 100644 index 0000000000000000000000000000000000000000..59849f6cd594178d8b769f716810b3cbaa74b353 --- /dev/null +++ b/documentation/Sphinx/build/html/user_guide/control_templates.html @@ -0,0 +1,235 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>CONTROL-file templates — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Auto Generated Documentation" href="../api.html" /> + <link rel="prev" title="How to use flex_extract" href="how_to.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../user_guide.html">User Guide</a><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="how_to.html">How to use flex_extract</a></li> +<li class="toctree-l2 current"><a class="current reference internal" href="#">CONTROL-file templates</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../user_guide.html">User Guide</a> »</li> + + <li>CONTROL-file templates</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/user_guide/control_templates.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="control-file-templates"> +<h1>CONTROL-file templates<a class="headerlink" href="#control-file-templates" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="../api.html" class="btn btn-neutral float-right" title="Auto Generated Documentation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="how_to.html" class="btn btn-neutral" title="How to use flex_extract" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/build/html/user_guide/how_to.html b/documentation/Sphinx/build/html/user_guide/how_to.html new file mode 100644 index 0000000000000000000000000000000000000000..fa977d4ba8e2851ec9287c8955e31f556ddf95ab --- /dev/null +++ b/documentation/Sphinx/build/html/user_guide/how_to.html @@ -0,0 +1,235 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>How to use flex_extract — flex_extract 7.1 alpha documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="CONTROL-file templates" href="control_templates.html" /> + <link rel="prev" title="User Guide" href="../user_guide.html" /> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> flex_extract + + + + </a> + + + + + <div class="version"> + 7.1 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <p class="caption"><span class="caption-text">Table of Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../program_structure.html">Program Structure</a></li> +<li class="toctree-l1 current"><a class="reference internal" href="../user_guide.html">User Guide</a><ul class="current"> +<li class="toctree-l2 current"><a class="current reference internal" href="#">How to use flex_extract</a></li> +<li class="toctree-l2"><a class="reference internal" href="control_templates.html">CONTROL-file templates</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li> +<li class="toctree-l1"><a class="reference internal" href="../support.html">Support</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">flex_extract</a> + + </nav> + + + <div class="wy-nav-content"> + + <div class="rst-content"> + + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li><a href="../user_guide.html">User Guide</a> »</li> + + <li>How to use flex_extract</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/user_guide/how_to.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="how-to-use-flex-extract"> +<h1>How to use flex_extract<a class="headerlink" href="#how-to-use-flex-extract" title="Permalink to this headline">¶</a></h1> +<blockquote> +<div>UNDER CONSTRUCTION</div></blockquote> +</div> + + + </div> + + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="control_templates.html" class="btn btn-neutral float-right" title="CONTROL-file templates" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="../user_guide.html" class="btn btn-neutral" title="User Guide" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2018, Anne Philipp and Leopold Haimberger. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'7.1 alpha', + LANGUAGE:'None', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/documentation/Sphinx/source/api.rst b/documentation/Sphinx/source/api.rst index 6c03ff4f8d0ec6edf7d928bcc5edf3592d348482..5b4acb2e3b2d06d609aac8ae20ae7e986c89bf45 100644 --- a/documentation/Sphinx/source/api.rst +++ b/documentation/Sphinx/source/api.rst @@ -1,5 +1,82 @@ Auto Generated Documentation ============================ +.. contents:: + :local: + +Porgrams +-------- + +install +******* + +.. automodule:: install + :members: + +submit +****** + +.. automodule:: submit + :members: + +Classes +------- + +ControlFile +*********** + +.. automodule:: ControlFile + :members: + +EcFlexpart +********** + +.. automodule:: EcFlexpart + :members: + +GribTools +********* + +.. automodule:: GribTools + :members: + +MarsRetrieval +************* + +.. automodule:: MarsRetrieval + :members: + +UioFiles +******** + +.. automodule:: UioFiles + :members: + + + +Modules +------- + +get_mars_data +************* + +.. automodule:: get_mars_data + :members: + +prepare_flexpart +**************** + +.. automodule:: prepare_flexpart + :members: + +tools +***** + +.. automodule:: tools + :members: + +disaggregation +************** + .. automodule:: disaggregation :members: diff --git a/documentation/Sphinx/source/downloads.rst b/documentation/Sphinx/source/downloads.rst index 42e62df785c0597039cd86c5eec63a353b5998a7..676a1fe6eef2890f713c09cf94b9d7c241f9575c 100644 --- a/documentation/Sphinx/source/downloads.rst +++ b/documentation/Sphinx/source/downloads.rst @@ -3,4 +3,13 @@ Downloads Describe download options of flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + +.. toctree:: + :hidden: + :maxdepth: 2 + + downloads/tar_balls + downloads/git_repo + downloads/history_changes + \ No newline at end of file diff --git a/documentation/Sphinx/source/downloads/git_repo.rst b/documentation/Sphinx/source/downloads/git_repo.rst new file mode 100644 index 0000000000000000000000000000000000000000..a1f7acf4ba0f9d63f9a1114880d78065931a7287 --- /dev/null +++ b/documentation/Sphinx/source/downloads/git_repo.rst @@ -0,0 +1,4 @@ +Git Repository +============== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/downloads/history_changes.rst b/documentation/Sphinx/source/downloads/history_changes.rst new file mode 100644 index 0000000000000000000000000000000000000000..763420b97d8a6b8ec283e59b3533f423dada8332 --- /dev/null +++ b/documentation/Sphinx/source/downloads/history_changes.rst @@ -0,0 +1,4 @@ +History of Changes +================== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/downloads/tar_balls.rst b/documentation/Sphinx/source/downloads/tar_balls.rst new file mode 100644 index 0000000000000000000000000000000000000000..a06dc1121abd5e07d23e78e0baf39fc69e76d8f7 --- /dev/null +++ b/documentation/Sphinx/source/downloads/tar_balls.rst @@ -0,0 +1,4 @@ +Download tar-balls +================== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/index.rst b/documentation/Sphinx/source/index.rst index 3ca3be980b300913e6ae2359ef71429ef857705e..2ca1ab110f234b6de6d0093c3c9d03caeff55fbe 100644 --- a/documentation/Sphinx/source/index.rst +++ b/documentation/Sphinx/source/index.rst @@ -3,8 +3,18 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Welcome to flex_extract's documentation! -======================================== +Welcome to flex_extract's user documentation! +============================================= + +flex_extract is a software to retrieve meteorological fields from the European Centre for Medium-Range Weather Forecasts (ECMWF) Mars archive to server as input files for the FLEXTRA/FLEXPART Atmospheric Transport Modelling system. + + +.. The scripts can be 1) executed locally using the ECMWF WebMARS interface, or 2) on the ECMWF member +.. state gateway server or HPC facility using the ecaccess software package. As another option the scripts can 3) +.. also be triggered using ecflow scheduling software used by ECMWF for data dissemination. + +All required second party software and libraries used within flex_extract is open source and free of charge. + .. raw:: html <table style="width:100%;"> @@ -86,7 +96,7 @@ Welcome to flex_extract's documentation! License text put in here! Which one? .. toctree:: - :maxdepth: 2 + :maxdepth: 3 :caption: Table of Contents: downloads diff --git a/documentation/Sphinx/source/installation.rst b/documentation/Sphinx/source/installation.rst index 7e3757232bb167a27daadf75c283f2156008c433..f759bc9c75a0c7ec6bde0b9a54a444b9a745c157 100644 --- a/documentation/Sphinx/source/installation.rst +++ b/documentation/Sphinx/source/installation.rst @@ -1,6 +1,15 @@ Installation ============ - -Describe installation process flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + +.. toctree:: + :hidden: + :maxdepth: 2 + + installation/requirements + installation/oper_modes + installation/test_install + + + \ No newline at end of file diff --git a/documentation/Sphinx/source/installation/oper_modes.rst b/documentation/Sphinx/source/installation/oper_modes.rst new file mode 100644 index 0000000000000000000000000000000000000000..72e86f5a665570cf8300925f9dcffce8d1aaff96 --- /dev/null +++ b/documentation/Sphinx/source/installation/oper_modes.rst @@ -0,0 +1,6 @@ +Operating modes +=============== + + + UNDER CONSTRUCTION + \ No newline at end of file diff --git a/documentation/Sphinx/source/installation/requirements.rst b/documentation/Sphinx/source/installation/requirements.rst new file mode 100644 index 0000000000000000000000000000000000000000..c1bae21176f9c5855a165a08b99cfe1f1cb01fe2 --- /dev/null +++ b/documentation/Sphinx/source/installation/requirements.rst @@ -0,0 +1,6 @@ +Requirements +============ + + + UNDER CONSTRUCTION + diff --git a/documentation/Sphinx/source/installation/test_install.rst b/documentation/Sphinx/source/installation/test_install.rst new file mode 100644 index 0000000000000000000000000000000000000000..25430881a2b41b06f46aad93f1fa4d2157f7315d --- /dev/null +++ b/documentation/Sphinx/source/installation/test_install.rst @@ -0,0 +1,5 @@ +Installation test +================= + + UNDER CONSTRUCTION + \ No newline at end of file diff --git a/documentation/Sphinx/source/program_structure.rst b/documentation/Sphinx/source/program_structure.rst index 3bfab6cca1e72c3798dfb70ce7e5ee55862f04fe..991b373c30c6cb629680d3eb2337566a68d92746 100644 --- a/documentation/Sphinx/source/program_structure.rst +++ b/documentation/Sphinx/source/program_structure.rst @@ -3,4 +3,12 @@ Program Structure Describe structure of flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + +.. toctree:: + :hidden: + :maxdepth: 2 + + program_structure/prog_overview + program_structure/prog_components + program_structure/prog_flow diff --git a/documentation/Sphinx/source/program_structure/prog_components.rst b/documentation/Sphinx/source/program_structure/prog_components.rst new file mode 100644 index 0000000000000000000000000000000000000000..0c7d560623a755cc2f92eaba094ae5a1d1094f77 --- /dev/null +++ b/documentation/Sphinx/source/program_structure/prog_components.rst @@ -0,0 +1,5 @@ +Program Components +================== + + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/program_structure/prog_flow.rst b/documentation/Sphinx/source/program_structure/prog_flow.rst new file mode 100644 index 0000000000000000000000000000000000000000..07c4d84fc68ac29fc1da73bbc41f582eb386e726 --- /dev/null +++ b/documentation/Sphinx/source/program_structure/prog_flow.rst @@ -0,0 +1,5 @@ +Program Flow +================ + + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/program_structure/prog_overview.rst b/documentation/Sphinx/source/program_structure/prog_overview.rst new file mode 100644 index 0000000000000000000000000000000000000000..15cb629d2847122e0021ca03767d8940f52a07ca --- /dev/null +++ b/documentation/Sphinx/source/program_structure/prog_overview.rst @@ -0,0 +1,5 @@ +Program Overview +================ + + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/requirements.rst b/documentation/Sphinx/source/requirements.rst deleted file mode 100644 index b1f562dd99c1a0c98f1706092eae602fedcb6179..0000000000000000000000000000000000000000 --- a/documentation/Sphinx/source/requirements.rst +++ /dev/null @@ -1,6 +0,0 @@ -Requirements -============ - -Describe the requirements to use flex_extract .... - - UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/support.rst b/documentation/Sphinx/source/support.rst index cd5fe0ed356ffff558d6cdbf3a4d49efc0706660..bccf1bf4a00443f53bbeb9067a04d656a6498bde 100644 --- a/documentation/Sphinx/source/support.rst +++ b/documentation/Sphinx/source/support.rst @@ -1,6 +1,16 @@ Support ======= -Describe support options .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + + +.. toctree:: + :hidden: + :maxdepth: 2 + + support/ticket_system + support/mailing_list + support/known_bugs_issues + support/faq + \ No newline at end of file diff --git a/documentation/Sphinx/source/support/faq.rst b/documentation/Sphinx/source/support/faq.rst new file mode 100644 index 0000000000000000000000000000000000000000..ccfe36a63439c496b8e05036df36d02d6e2588b7 --- /dev/null +++ b/documentation/Sphinx/source/support/faq.rst @@ -0,0 +1,4 @@ +FAQ - Frequently asked questions +================================ + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/support/known_bugs_issues.rst b/documentation/Sphinx/source/support/known_bugs_issues.rst new file mode 100644 index 0000000000000000000000000000000000000000..8748ad8172249cba3055858194d6aea4497237e2 --- /dev/null +++ b/documentation/Sphinx/source/support/known_bugs_issues.rst @@ -0,0 +1,4 @@ +Known Bugs and Issues +===================== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/support/mailing_list.rst b/documentation/Sphinx/source/support/mailing_list.rst new file mode 100644 index 0000000000000000000000000000000000000000..e0f50126f9bc64b38a174a1adc31200faee7d1e8 --- /dev/null +++ b/documentation/Sphinx/source/support/mailing_list.rst @@ -0,0 +1,4 @@ +Mailing Lists +============= + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/support/ticket_system.rst b/documentation/Sphinx/source/support/ticket_system.rst new file mode 100644 index 0000000000000000000000000000000000000000..58b73a6ced4ae84106553d0a72e15dc9749e4ea7 --- /dev/null +++ b/documentation/Sphinx/source/support/ticket_system.rst @@ -0,0 +1,4 @@ +Ticket System +============= + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/user_guide.rst b/documentation/Sphinx/source/user_guide.rst index 030a019875c2fdfb8d42f93b6c8eaae8da7c83c9..4fe6dc0befd49df56a1969e7cc713ebcce95cdf2 100644 --- a/documentation/Sphinx/source/user_guide.rst +++ b/documentation/Sphinx/source/user_guide.rst @@ -1,6 +1,12 @@ User Guide ========== - -Describe using flex_extract .... - UNDER CONSTRUCTION \ No newline at end of file + UNDER CONSTRUCTION + +.. toctree:: + :hidden: + :maxdepth: 2 + + user_guide/how_to + user_guide/control_templates + \ No newline at end of file diff --git a/documentation/Sphinx/source/user_guide/control_templates.rst b/documentation/Sphinx/source/user_guide/control_templates.rst new file mode 100644 index 0000000000000000000000000000000000000000..ccd58c5244ef8d41ffca4b974fcd9657f0d4ecfc --- /dev/null +++ b/documentation/Sphinx/source/user_guide/control_templates.rst @@ -0,0 +1,4 @@ +CONTROL-file templates +====================== + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/documentation/Sphinx/source/user_guide/how_to.rst b/documentation/Sphinx/source/user_guide/how_to.rst new file mode 100644 index 0000000000000000000000000000000000000000..7e041b4e1071ef3d540c222051a773069a02af94 --- /dev/null +++ b/documentation/Sphinx/source/user_guide/how_to.rst @@ -0,0 +1,4 @@ +How to use flex_extract +======================= + + UNDER CONSTRUCTION \ No newline at end of file diff --git a/source/python/classes/ControlFile.py b/source/python/classes/ControlFile.py index 06416229e999f7b753e992691847d0df8cb344d1..a0f95918b702781fc7366e4e65ae175a95d59a91 100644 --- a/source/python/classes/ControlFile.py +++ b/source/python/classes/ControlFile.py @@ -70,22 +70,18 @@ class ControlFile(object): ''' def __init__(self, filename): - ''' - @Description: - Initialises the instance of ControlFile class and defines - all class attributes with default values. Afterwards calls - function __read_controlfile__ to read parameter from - Control file. + '''Initialises the instance of ControlFile class and defines + all class attributes with default values. Afterwards calls + function __read_controlfile__ to read parameter from Control file. - @Input: - self: instance of ControlFile class - Description see class documentation. + Parameters + ---------- + filename : :obj:`string` + Name of CONTROL file. - filename: string - Name of CONTROL file. + Return + ------ - @Return: - <nothing> ''' # list of all possible class attributes and their default values @@ -161,16 +157,14 @@ class ControlFile(object): return def __read_controlfile__(self): - ''' - @Description: - Read CONTROL file and assign all CONTROL file variables. + '''Read CONTROL file and assign all CONTROL file variables. - @Input: - self: instance of ControlFile class - Description see class documentation. + Parameters + ---------- + + Return + ------ - @Return: - <nothing> ''' try: @@ -234,27 +228,27 @@ class ControlFile(object): return def __str__(self): - ''' - @Description: - Prepares a string which have all the ControlFile - class attributes with its associated values. - Each attribute is printed in one line and in - alphabetical order. - - Example: - 'age': 10 - 'color': 'Spotted' - 'kids': 0 - 'legs': 2 - 'name': 'Dog' - 'smell': 'Alot' - - @Input: - self: instance of ControlFile class - Description see class documentation. - - @Return: - string of ControlFile class attributes with their values + '''Prepares a string which have all the ControlFile class attributes + with its associated values. Each attribute is printed in one line and + in alphabetical order. + + Example + ------- + 'age': 10 + 'color': 'Spotted' + 'kids': 0 + 'legs': 2 + 'name': 'Dog' + 'smell': 'Alot' + + Parameters + ---------- + + Return + ------ + string + Single string of concatenated ControlFile class attributes + with their values ''' import collections @@ -264,20 +258,17 @@ class ControlFile(object): return '\n'.join("%s: %s" % item for item in attrs.items()) def assign_args_to_control(self, args): - ''' - @Description: - Overwrites the existing ControlFile instance attributes with - the command line arguments. + '''Overwrites the existing ControlFile instance attributes with + the command line arguments. - @Input: - self: instance of ControlFile class - Description see class documentation. + Parameters + ---------- + args : :obj:`Namespace` + Contains the commandline arguments from script/program call. - args: instance of ArgumentParser - Contains the commandline arguments from script/program call. + Return + ------ - @Return: - <nothing> ''' # get dictionary of command line parameters and eliminate all @@ -293,18 +284,18 @@ class ControlFile(object): return def assign_envs_to_control(self, envs): - ''' - @Description: - Assigns the ECMWF environment parameter. + '''Assigns the ECMWF environment parameter. - @Input: - envs: dict of strings - Contains the ECMWF environment parameternames "ECUID", "ECGID", - "DESTINATION" and "GATEWAY" with its corresponding values. - They were read from the file "ECMWF_ENV". + Parameters + ---------- + envs : :obj:`dictionary` of :obj:`strings` + Contains the ECMWF environment parameternames "ECUID", "ECGID", + "DESTINATION" and "GATEWAY" with its corresponding values. + They were read from the file "ECMWF_ENV". + + Return + ------ - @Return: - <nothing> ''' for k, v in envs.iteritems(): @@ -313,23 +304,20 @@ class ControlFile(object): return def check_conditions(self, queue): - ''' - @Description: - Checks a couple of necessary attributes and conditions, - such as if they exist and contain values. - Otherwise set default values. - - @Input: - self: instance of ControlFile class - Description see class documentation. - - queue: string - Name of the queue if submitted to the ECMWF servers. - Used to check if ecuid, ecgid, gateway and destination - are set correctly and are not empty. - - @Return: - <nothing> + '''Checks a couple of necessary attributes and conditions, + such as if they exist and contain values. + Otherwise set default values. + + Parameters + ---------- + queue : :obj:`string` + Name of the queue if submitted to the ECMWF servers. + Used to check if ecuid, ecgid, gateway and destination + are set correctly and are not empty. + + Return + ------ + ''' from mods.tools import my_error import numpy as np @@ -500,18 +488,16 @@ class ControlFile(object): return def check_install_conditions(self): - ''' - @Description: - Checks a couple of necessary attributes and conditions - for the installation such as if they exist and contain values. - Otherwise set default values. + '''Checks a couple of necessary attributes and conditions + for the installation such as if they exist and contain values. + Otherwise set default values. - @Input: - self: instance of ControlFile class - Description see class documentation. + Parameters + ---------- + + Return + ------ - @Return: - <nothing> ''' if self.install_target and \ @@ -548,21 +534,19 @@ class ControlFile(object): return def to_list(self): - ''' - @Description: - Just generates a list of strings containing the attributes and - assigned values except the attributes "_expanded", "exedir", + '''Just generates a list of strings containing the attributes and + assigned values except the attributes "_expanded", "exedir", + "ecmwfdatadir" and "flexpart_root_scripts". + + Parameters + ---------- + + Return + ------ + l : :obj:`list` + A sorted list of the all ControlFile class attributes with + their values except the attributes "_expanded", "exedir", "ecmwfdatadir" and "flexpart_root_scripts". - - @Input: - self: instance of ControlFile class - Description see class documentation. - - @Return: - l: list - A sorted list of the all ControlFile class attributes with - their values except the attributes "_expanded", "exedir", - "ecmwfdatadir" and "flexpart_root_scripts". ''' import collections diff --git a/source/python/classes/EcFlexpart.py b/source/python/classes/EcFlexpart.py index 85d4bcee618b7071d1f1a68f1fd8ffdffdc02669..cb9a74b66c54a576dee7f80f076d4f960352af99 100644 --- a/source/python/classes/EcFlexpart.py +++ b/source/python/classes/EcFlexpart.py @@ -110,28 +110,23 @@ class EcFlexpart(object): # CLASS FUNCTIONS # -------------------------------------------------------------------------- def __init__(self, c, fluxes=False): - ''' - @Description: - Creates an object/instance of EcFlexpart with the - associated settings of its attributes for the retrieval. - - @Input: - self: instance of EcFlexpart - The current object of the class. - - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - fluxes: boolean, optional - Decides if the flux parameter settings are stored or - the rest of the parameter list. - Default value is False. - - @Return: - <nothing> + '''Creates an object/instance of EcFlexpart with the associated + settings of its attributes for the retrieval. + + Parameters: + ----------- + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + fluxes : :obj:`boolean`, optional + Decides if the flux parameter settings are stored or + the rest of the parameter list. + Default value is False. + + Return + ------ + ''' # set a counter for the number of mars requests generated self.mreq_count = 0 @@ -305,25 +300,25 @@ class EcFlexpart(object): def _mk_targetname(self, ftype, param, date): - ''' - @Description: - Creates the filename for the requested grib data to be stored in. - This name is passed as the "target" parameter in the request. + '''Creates the filename for the requested grib data to be stored in. + This name is passed as the "target" parameter in the request. - @Input: - ftype: string - Shortcut name of the type of the field. E.g. AN, FC, PF, ... + Parameters + ---------- + ftype : :obj:`string` + Shortcut name of the type of the field. E.g. AN, FC, PF, ... - param: string - Shortcut of the grid type. E.g. SH__ML, SH__SL, GG__ML, - GG__SL, OG__ML, OG__SL, OG_OROLSM_SL, OG_acc_SL + param : :obj:`string` + Shortcut of the grid type. E.g. SH__ML, SH__SL, GG__ML, + GG__SL, OG__ML, OG__SL, OG_OROLSM_SL, OG_acc_SL - date: string - The date period of the grib data to be stored in this file. + date : :obj:`string` + The date period of the grib data to be stored in this file. - @Return: - targetname: string - The target filename for the grib data. + Return + ------ + targetname : :obj:`string` + The target filename for the grib data. ''' targetname = (self.inputdir + '/' + ftype + param + '.' + date + '.' + str(os.getppid()) + '.' + str(os.getpid()) + '.grb') @@ -332,30 +327,27 @@ class EcFlexpart(object): def _start_retrievement(self, request, par_dict): - ''' - @Description: - Creates the Mars Retrieval and prints or submits the request - depending on the status of the request variable. - - @Input: - self: instance of EcFlexpart - The current object of the class. - - request: integer - Selects the mode of retrieval. - 0: Retrieves the data from ECMWF. - 1: Prints the mars requests to an output file. - 2: Retrieves the data and prints the mars request. - - par_dict: dictionary - Contains all parameter which have to be set for creating the - Mars Retrievals. The parameter are: - marsclass, dataset, stream, type, levtype, levelist, resol, - gaussian, accuracy, grid, target, area, date, time, number, - step, expver, param - - @Return: - <nothing> + '''Creates the Mars Retrieval and prints or submits the request + depending on the status of the request variable. + + Parameters + ---------- + request : :obj:`integer` + Selects the mode of retrieval. + 0: Retrieves the data from ECMWF. + 1: Prints the mars requests to an output file. + 2: Retrieves the data and prints the mars request. + + par_dict : :obj:`dictionary` + Contains all parameter which have to be set for creating the + Mars Retrievals. The parameter are: + marsclass, dataset, stream, type, levtype, levelist, resol, + gaussian, accuracy, grid, target, area, date, time, number, + step, expver, param + + Return + ------ + ''' # increase number of mars requests self.mreq_count += 1 @@ -397,30 +389,30 @@ class EcFlexpart(object): def _mk_index_values(self, inputdir, inputfiles, keys): - ''' - @Description: - Creates an index file for a set of grib parameter keys. - The values from the index keys are returned in a list. - - @Input: - keys: dictionary - List of parameter names which serves as index. - - inputfiles: instance of UioFiles - Contains a list of files. - - @Return: - iid: grib_index - This is a grib specific index structure to access - messages in a file. - - index_vals: list - Contains the values from the keys used for a distinct selection - of grib messages in processing the grib files. - Content looks like e.g.: - index_vals[0]: ('20171106', '20171107', '20171108') ; date - index_vals[1]: ('0', '1200', '1800', '600') ; time - index_vals[2]: ('0', '12', '3', '6', '9') ; stepRange + '''Creates an index file for a set of grib parameter keys. + The values from the index keys are returned in a list. + + Parameters + ---------- + keys : :obj:`dictionary` + List of parameter names which serves as index. + + inputfiles : :obj:`UioFiles` + Contains a list of files. + + Return + ------ + iid : :obj:`grib_index` + This is a grib specific index structure to access + messages in a file. + + index_vals : :obj:`list` + Contains the values from the keys used for a distinct selection + of grib messages in processing the grib files. + Content looks like e.g.: + index_vals[0]: ('20171106', '20171107', '20171108') ; date + index_vals[1]: ('0', '1200', '1800', '600') ; time + index_vals[2]: ('0', '12', '3', '6', '9') ; stepRange ''' iid = None index_keys = keys @@ -454,40 +446,37 @@ class EcFlexpart(object): def retrieve(self, server, dates, public, request, inputdir='.'): - ''' - @Description: - Finalizing the retrieval information by setting final details - depending on grid type. - Prepares MARS retrievals per grid type and submits them. - - @Input: - self: instance of EcFlexpart - The current object of the class. - - server: instance of ECMWFService or ECMWFDataServer - The connection to the ECMWF server. This is different - for member state users which have full access and non - member state users which have only access to the public - data sets. The decision is made from command line argument - "public"; for public access its True (ECMWFDataServer) - for member state users its False (ECMWFService) - - dates: string - Contains start and end date of the retrieval in the format - "YYYYMMDD/to/YYYYMMDD" - - request: integer - Selects the mode of retrieval. - 0: Retrieves the data from ECMWF. - 1: Prints the mars requests to an output file. - 2: Retrieves the data and prints the mars request. - - inputdir: string, optional - Path to the directory where the retrieved data is about - to be stored. The default is the current directory ('.'). - - @Return: - <nothing> + '''Finalizing the retrieval information by setting final details + depending on grid type. + Prepares MARS retrievals per grid type and submits them. + + Parameters + ---------- + server : :obj:`ECMWFService` or :obj:`ECMWFDataServer` + The connection to the ECMWF server. This is different + for member state users which have full access and non + member state users which have only access to the public + data sets. The decision is made from command line argument + "public"; for public access its True (ECMWFDataServer) + for member state users its False (ECMWFService) + + dates : :obj:`string` + Contains start and end date of the retrieval in the format + "YYYYMMDD/to/YYYYMMDD" + + request : :obj:`integer` + Selects the mode of retrieval. + 0: Retrieves the data from ECMWF. + 1: Prints the mars requests to an output file. + 2: Retrieves the data and prints the mars request. + + inputdir : :obj:`string`, optional + Path to the directory where the retrieved data is about + to be stored. The default is the current directory ('.'). + + Return + ------ + ''' self.dates = dates self.server = server @@ -664,28 +653,23 @@ class EcFlexpart(object): def write_namelist(self, c): - ''' - @Description: - Creates a namelist file in the temporary directory and writes - the following values to it: maxl, maxb, mlevel, - mlevelist, mnauf, metapar, rlo0, rlo1, rla0, rla1, - momega, momegadiff, mgauss, msmooth, meta, metadiff, mdpdeta - - @Input: - self: instance of EcFlexpart - The current object of the class. - - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - filename: string + '''Creates a namelist file in the temporary directory and writes + the following values to it: maxl, maxb, mlevel, + mlevelist, mnauf, metapar, rlo0, rlo1, rla0, rla1, + momega, momegadiff, mgauss, msmooth, meta, metadiff, mdpdeta + + Parameters + ---------- + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + filename : :obj:`string` Name of the namelist file. - @Return: - <nothing> + Return + ------ + ''' from genshi.template.text import NewTextTemplate @@ -733,29 +717,24 @@ class EcFlexpart(object): def deacc_fluxes(self, inputfiles, c): - ''' - @Description: - Goes through all flux fields in ordered time and de-accumulate - the fields. Afterwards the fields are disaggregated in time. - Different versions of disaggregation is provided for rainfall - data (darain, modified linear) and the surface fluxes and - stress data (dapoly, cubic polynomial). - - @Input: - self: instance of EcFlexpart - The current object of the class. - - inputfiles: instance of UioFiles - Contains a list of files. - - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - @Return: - <nothing> + '''Goes through all flux fields in ordered time and de-accumulate + the fields. Afterwards the fields are disaggregated in time. + Different versions of disaggregation is provided for rainfall + data (darain, modified linear) and the surface fluxes and + stress data (dapoly, cubic polynomial). + + Parameters + ---------- + inputfiles : :obj:`UioFiles` + Contains a list of files. + + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + Return + ------ + ''' table128 = init128(_config.PATH_GRIBTABLE) @@ -951,35 +930,32 @@ class EcFlexpart(object): def create(self, inputfiles, c): - ''' - @Description: - This method is based on the ECMWF example index.py - https://software.ecmwf.int/wiki/display/GRIB/index.py - - An index file will be created which depends on the combination - of "date", "time" and "stepRange" values. This is used to iterate - over all messages in each grib file which were passed through the - parameter "inputfiles" to seperate specific parameters into fort.* - files. Afterwards the FORTRAN program is called to convert - the data fields all to the same grid and put them in one file - per unique time step (combination of "date", "time" and - "stepRange"). - - @Input: - self: instance of EcFlexpart - The current object of the class. - - inputfiles: instance of UioFiles - Contains a list of files. - - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - @Return: - <nothing> + '''An index file will be created which depends on the combination + of "date", "time" and "stepRange" values. This is used to iterate + over all messages in each grib file which were passed through the + parameter "inputfiles" to seperate specific parameters into fort.* + files. Afterwards the FORTRAN program is called to convert + the data fields all to the same grid and put them in one file + per unique time step (combination of "date", "time" and + "stepRange"). + + Note + ---- + This method is based on the ECMWF example index.py + https://software.ecmwf.int/wiki/display/GRIB/index.py + + Parameters + ---------- + inputfiles : :obj:`UioFiles` + Contains a list of files. + + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + Return + ------ + ''' if c.wrf: @@ -1182,29 +1158,23 @@ class EcFlexpart(object): def process_output(self, c): - ''' - @Description: - The grib files are postprocessed depending on the selection in - CONTROL file. The resulting files are moved to the output - directory if its not equal to the input directory. - The following modifications might be done if - properly switched in CONTROL file: - GRIB2 - Conversion to GRIB2 - ECTRANS - Transfer of files to gateway server - ECSTORAGE - Storage at ECMWF server - - @Input: - self: instance of EcFlexpart - The current object of the class. - - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - @Return: - <nothing> + '''The grib files are postprocessed depending on the selection in + CONTROL file. The resulting files are moved to the output + directory if its not equal to the input directory. + The following modifications might be done if + properly switched in CONTROL file: + GRIB2 - Conversion to GRIB2 + ECTRANS - Transfer of files to gateway server + ECSTORAGE - Storage at ECMWF server + + Parameters + ---------- + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + Return + ------ ''' @@ -1246,20 +1216,17 @@ class EcFlexpart(object): def prepare_fp_files(self, c): - ''' - @Description: - Conversion of GRIB files to FLEXPART binary format. + '''Conversion of GRIB files to FLEXPART binary format. - @Input: - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. + Parameters + ---------- + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + Return + ------ - @Return: - <nothing> ''' # generate AVAILABLE file # Example of AVAILABLE file data: diff --git a/source/python/classes/GribTools.py b/source/python/classes/GribTools.py index 247d1785dbf6bff7e20789637dd1a59a8c653232..b2157032e2cf91fa73cf80c232b7a57bdc33edef 100644 --- a/source/python/classes/GribTools.py +++ b/source/python/classes/GribTools.py @@ -65,17 +65,16 @@ class GribTools(object): # CLASS FUNCTIONS # -------------------------------------------------------------------------- def __init__(self, filenames): - ''' - @Description: - Initialise an object of GribTools and assign a list - of filenames. + '''Initialise an object of GribTools and assign a list of filenames. + + Parameters + ---------- + filenames : :obj:`list` of :obj:`strings` + A list of filenames. - @Input: - filenames: list of strings - A list of filenames. + Return + ------ - @Return: - <nothing> ''' self.filenames = filenames @@ -84,24 +83,24 @@ class GribTools(object): def get_keys(self, keynames, wherekeynames=[], wherekeyvalues=[]): - ''' - @Description: - get keyvalues for a given list of keynames - a where statement can be given (list of key and list of values) + '''Get keyvalues for a given list of keynames a where statement + can be given (list of key and list of values) - @Input: - keynames: list of strings - List of keynames. + Parameters + ---------- + keynames : :obj:`list` of :obj:`string` + List of keynames. - wherekeynames: list of strings, optional - Default value is an empty list. + wherekeynames : :obj:`list` of :obj:`string`, optional + Default value is an empty list. - wherekeyvalues: list of strings, optional - Default value is an empty list. + wherekeyvalues : :obj:`list` of :obj:`string`, optional + Default value is an empty list. - @Return: - return_list: list of strings - List of keyvalues for given keynames. + Return + ------ + return_list : :obj:`list` of :obj:`string` + List of keyvalues for given keynames. ''' fileid = open(self.filenames, 'r') @@ -143,40 +142,39 @@ class GribTools(object): def set_keys(self, fromfile, keynames, keyvalues, wherekeynames=[], wherekeyvalues=[], strict=False, filemode='w'): - ''' - @Description: - Opens the file to read the grib messages and then write - them to a new output file. By default all messages are - written out. Also, the keyvalues of the passed list of - keynames are set or only those meeting the where statement. - (list of key and list of values). + '''Opens the file to read the grib messages and then write + them to a new output file. By default all messages are + written out. Also, the keyvalues of the passed list of + keynames are set or only those meeting the where statement. + (list of key and list of values). - @Input: - fromfile: string - Filename of the input file to read the grib messages from. + Parameters + ---------- + fromfile : :obj:`string` + Filename of the input file to read the grib messages from. - keynames: list of strings - List of keynames. Default is an empty list. + keynames : :obj:`list` of :obj:`string` + List of keynames. Default is an empty list. - keyvalues: list of strings - List of keynames. Default is an empty list. + keyvalues : :obj:`list` of :obj:`string` + List of keynames. Default is an empty list. - wherekeynames: list of strings, optional - Default value is an empty list. + wherekeynames : :obj:`list` of :obj:`string`, optional + Default value is an empty list. - wherekeyvalues: list of strings, optional - Default value is an empty list. + wherekeyvalues : :obj:`list` of :obj:`string`, optional + Default value is an empty list. - strict: boolean, optional - Decides if everything from keynames and keyvalues - is written out the grib file (False) or only those - meeting the where statement (True). Default is False. + strict : :obj:`boolean`, optional + Decides if everything from keynames and keyvalues + is written out the grib file (False) or only those + meeting the where statement (True). Default is False. - filemode: string, optional - Sets the mode for the output file. Default is "w". + filemode : :obj:`string`, optional + Sets the mode for the output file. Default is "w". - @Return: - <nothing> + Return + ------ ''' fout = open(self.filenames, filemode) @@ -218,32 +216,33 @@ class GribTools(object): def copy(self, filename_in, selectWhere=True, keynames=[], keyvalues=[], filemode='w'): - ''' - Add the content of another input grib file to the objects file but + '''Add the content of another input grib file to the objects file but only messages corresponding to keys/values passed to the function. The selectWhere switch decides if to copy the keys equal to (True) or different to (False) the keynames/keyvalues list passed to the function. - @Input: - filename_in: string - Filename of the input file to read the grib messages from. + Parameters + ---------- + filename_in : :obj:`string` + Filename of the input file to read the grib messages from. + + selectWhere : :obj:`boolean`, optional + Decides if to copy the keynames and values equal to (True) or + different to (False) the keynames/keyvalues list passed to the + function. Default is True. - selectWhere: boolean, optional - Decides if to copy the keynames and values equal to (True) or - different to (False) the keynames/keyvalues list passed to the - function. Default is True. + keynames : :obj:`list` of :obj:`string`, optional + List of keynames. Default is an empty list. - keynames: list of strings, optional - List of keynames. Default is an empty list. + keyvalues : :obj:`list` of :obj:`string`, optional + List of keynames. Default is an empty list. - keyvalues: list of strings, optional - List of keynames. Default is an empty list. + filemode : :obj:`string`, optional + Sets the mode for the output file. Default is "w". - filemode: string, optional - Sets the mode for the output file. Default is "w". + Return + ------ - @Return: - <nothing> ''' fin = open(filename_in) @@ -283,24 +282,24 @@ class GribTools(object): return def index(self, index_keys=["mars"], index_file="my.idx"): - ''' - @Description: - Create index file from a list of files if it does not exist or - read an index file. - - @Input: - index_keys: list of strings, optional - Contains the list of key parameter names from - which the index is to be created. - Default is a list with a single entry string "mars". - - index_file: string, optional - Filename where the indices are stored. - Default is "my.idx". - - @Return: - iid: integer - Grib index id. + '''Create index file from a list of files if it does not exist or + read an index file. + + Parameters + ---------- + index_keys: :obj:`list` of :obj:`string`, optional + Contains the list of key parameter names from + which the index is to be created. + Default is a list with a single entry string "mars". + + index_file: :obj:`string`, optional + Filename where the indices are stored. + Default is "my.idx". + + Return + ------ + iid: :obj:`integer` + Grib index id. ''' print("... index will be done") iid = None diff --git a/source/python/classes/MarsRetrieval.py b/source/python/classes/MarsRetrieval.py index daf826077812d4fc809bf46a8ae98a8560c0c7df..29b82abc8588546e3d1aa02c857788a81fb5c5b1 100644 --- a/source/python/classes/MarsRetrieval.py +++ b/source/python/classes/MarsRetrieval.py @@ -72,14 +72,12 @@ import _config # CLASS # ------------------------------------------------------------------------------ class MarsRetrieval(object): - ''' - Class for submitting MARS retrievals. + '''Class for submitting MARS retrievals. A description of MARS keywords/arguments and examples of their values can be found here: https://software.ecmwf.int/wiki/display/UDOC/\ Identification+keywords#Identificationkeywords-class - ''' def __init__(self, server, public, marsclass="ei", dataset="", type="", @@ -87,218 +85,215 @@ class MarsRetrieval(object): stream="", area="", time="", step="", expver="1", number="", accuracy="", grid="", gaussian="", target="", param=""): - ''' - @Description: - Initialises the instance of the MarsRetrieval class and - defines and assigns a set of the necessary retrieval parameters - for the FLEXPART input data. - A description of MARS keywords/arguments, their dependencies - on each other and examples of their values can be found here: - - https://software.ecmwf.int/wiki/display/UDOC/MARS+keywords - - @Input: - self: instance of MarsRetrieval - For description see class documentation. - - server: instance of ECMWFService (from ECMWF Web-API) - This is the connection to the ECMWF data servers. - It is needed for the pythonic access of ECMWF data. - - public: integer - Decides which Web API version is used: - 0: member-state users and full archive access - 1: public access and limited access to the public server and - datasets. Needs the parameter dataset. - Default is "0" and for member-state users. - - marsclass: string, optional - Characterisation of dataset. E.g. EI (ERA-Interim), - E4 (ERA40), OD (Operational archive), ea (ERA5). - Default is the ERA-Interim dataset "ei". - - dataset: string, optional - For public datasets there is the specific naming and parameter - dataset which has to be used to characterize the type of - data. Usually there is less data available, either in times, - domain or parameter. - Default is an empty string. - - type: string, optional - Determines the type of fields to be retrieved. - Selects between observations, images or fields. - Examples for fields: Analysis (an), Forecast (fc), - Perturbed Forecast (pf), Control Forecast (cf) and so on. - Default is an empty string. - - levtype: string, optional - Denotes type of level. Has a direct implication on valid - levelist values! - E.g. model level (ml), pressure level (pl), surface (sfc), - potential vorticity (pv), potential temperature (pt) - and depth (dp). - Default is an empty string. - - levelist: string, optional - Specifies the required levels. It has to have a valid - correspondence to the selected levtype. - Examples: model level: 1/to/137, pressure levels: 500/to/1000 - Default is an empty string. - - repres: string, optional - Selects the representation of the archived data. - E.g. sh - spherical harmonics, gg - Gaussian grid, - ll - latitude/longitude, ... - Default is an empty string. - - date: string, optional - Specifies the Analysis date, the Forecast base date or - Observations date. Valid formats are: - Absolute as YYYY-MM-DD or YYYYMMDD. - Default is an empty string. - - resol: string, optional - Specifies the desired triangular truncation of retrieved data, - before carrying out any other selected post-processing. - The default is automatic truncation (auto), by which the lowest - resolution compatible with the value specified in grid is - automatically selected for the retrieval. - Users wanting to perform post-processing from full spectral - resolution should specify Archived Value (av). - The following are examples of existing resolutions found in - the archive: 63, 106, 159, 213, 255, 319, 399, 511, 799 or 1279. - This keyword has no meaning/effect if the archived data is - not in spherical harmonics representation. - The best selection can be found here: - https://software.ecmwf.int/wiki/display/UDOC/\ - Retrieve#Retrieve-Truncationbeforeinterpolation - Default is an empty string. - - stream: string, optional - Identifies the forecasting system used to generate the data. - E.g. oper (Atmospheric model), enfo (Ensemble forecats), ... - Default is an empty string. - - area: string, optional - Specifies the desired sub-area of data to be extracted. - Areas can be defined to wrap around the globe. - - Latitude values must be given as signed numbers, with: - north latitudes (i.e. north of the equator) - being positive (e.g: 40.5) - south latitutes (i.e. south of the equator) - being negative (e.g: -50.5) - Longtitude values must be given as signed numbers, with: - east longitudes (i.e. east of the 0 degree meridian) - being positive (e.g: 35.0) - west longitudes (i.e. west of the 0 degree meridian) - being negative (e.g: -20.5) - - E.g.: North/West/South/East - Default is an empty string. - - time: string, optional - Specifies the time of the data in hours and minutes. - Valid values depend on the type of data: Analysis time, - Forecast base time or First guess verification time - (all usually at synoptic hours: 00, 06, 12 and 18 ). - Observation time (any combination in hours and minutes is valid, - subject to data availability in the archive). - The syntax is HHMM or HH:MM. If MM is omitted it defaults to 00. - Default is an empty string. - - step: string, optional - Specifies the forecast time step from forecast base time. - Valid values are hours (HH) from forecast base time. It also - specifies the length of the forecast which verifies at - First Guess time. - E.g. 1/3/6-hourly - Default is an empty string. - - expver: string, optional - The version of the dataset. Each experiment is assigned a - unique code (version). Production data is assigned 1 or 2, - and experimental data in Operations 11, 12 ,... - Research or Member State's experiments have a four letter - experiment identifier. - Default is "1". - - number: string, optional - Selects the member in ensemble forecast run. (Only then it - is necessary.) It has a different meaning depending on - the type of data. - E.g. Perturbed Forecasts: specifies the Ensemble forecast member - Default is an empty string. - - accuracy: string, optional - Specifies the number of bits per value to be used in the - generated GRIB coded fields. - A positive integer may be given to specify the preferred number - of bits per packed value. This must not be greater than the - number of bits normally used for a Fortran integer on the - processor handling the request (typically 32 or 64 bit). - Within a compute request the accuracy of the original fields - can be passed to the result field by specifying accuracy=av. - Default is an empty string. - - grid: string, optional - Specifies the output grid which can be either a Gaussian grid - or a Latitude/Longitude grid. MARS requests specifying - grid=av will return the archived model grid. - - Lat/Lon grid: The grid spacing needs to be an integer - fraction of 90 degrees e.g. grid = 0.5/0.5 - - Gaussian grid: specified by a letter denoting the type of - Gaussian grid followed by an integer (the grid number) - representing the number of lines between the Pole and Equator, - e.g. - grid = F160 - full (or regular) Gaussian grid with - 160 latitude lines between the pole and equator - grid = N320 - ECMWF original reduced Gaussian grid with - 320 latitude lines between the pole and equator, - see Reduced Gaussian Grids for grid numbers used at ECMWF - grid = O640 - ECMWF octahedral (reduced) Gaussian grid with - 640 latitude lines between the pole and equator - Default is an empty string. - - gaussian: string, optional - This parameter is deprecated and should no longer be used. - Specifies the desired type of Gaussian grid for the output. - Valid Gaussian grids are quasi-regular (reduced) or regular. - Keyword gaussian can only be specified together with - keyword grid. Gaussian without grid has no effect. - Default is an empty string. - - target: string, optional - Specifies a file into which data is to be written after - retrieval or manipulation. Path names should always be - enclosed in double quotes. The MARS client supports automatic - generation of multiple target files using MARS keywords - enclosed in square brackets [ ]. If the environment variable - MARS_MULTITARGET_STRICT_FORMAT is set to 1 before calling mars, - the keyword values will be used in the filename as shown by - the ecCodes GRIB tool grib_ls -m, e.g. with - MARS_MULTITARGET_STRICT_FORMAT set to 1 the keywords time, - expver and param will be formatted as 0600, 0001 and 129.128 - rather than 600, 1 and 129. - Default is an empty string. - - param: string, optional - Specifies the meteorological parameter. - The list of meteorological parameters in MARS is extensive. - Their availability is directly related to their meteorological - meaning and, therefore, the rest of directives specified - in the MARS request. - Meteorological parameters can be specified by their - GRIB code (param=130), their mnemonic (param=t) or - full name (param=temperature). - The list of parameter should be seperated by a "/"-sign. - E.g. 130/131/133 - Default is an empty string. - - @Return: - <nothing> + '''Initialises the instance of the MarsRetrieval class and + defines and assigns a set of the necessary retrieval parameters + for the FLEXPART input data. + A description of MARS keywords/arguments, their dependencies + on each other and examples of their values can be found here: + + https://software.ecmwf.int/wiki/display/UDOC/MARS+keywords + + Parameters + ---------- + server : :obj:`ECMWFService` + This is the connection to the ECMWF data servers. + It is needed for the pythonic access of ECMWF data. + + public : :obj:`integer` + Decides which Web API version is used: + 0: member-state users and full archive access + 1: public access and limited access to the public server and + datasets. Needs the parameter dataset. + Default is "0" and for member-state users. + + marsclass : :obj:`string`, optional + Characterisation of dataset. E.g. EI (ERA-Interim), + E4 (ERA40), OD (Operational archive), ea (ERA5). + Default is the ERA-Interim dataset "ei". + + dataset : :obj:`string`, optional + For public datasets there is the specific naming and parameter + dataset which has to be used to characterize the type of + data. Usually there is less data available, either in times, + domain or parameter. + Default is an empty string. + + type : :obj:`string`, optional + Determines the type of fields to be retrieved. + Selects between observations, images or fields. + Examples for fields: Analysis (an), Forecast (fc), + Perturbed Forecast (pf), Control Forecast (cf) and so on. + Default is an empty string. + + levtype : :obj:`string`, optional + Denotes type of level. Has a direct implication on valid + levelist values! + E.g. model level (ml), pressure level (pl), surface (sfc), + potential vorticity (pv), potential temperature (pt) + and depth (dp). + Default is an empty string. + + levelist : :obj:`string`, optional + Specifies the required levels. It has to have a valid + correspondence to the selected levtype. + Examples: model level: 1/to/137, pressure levels: 500/to/1000 + Default is an empty string. + + repres : :obj:`string`, optional + Selects the representation of the archived data. + E.g. sh - spherical harmonics, gg - Gaussian grid, + ll - latitude/longitude, ... + Default is an empty string. + + date : :obj:`string`, optional + Specifies the Analysis date, the Forecast base date or + Observations date. Valid formats are: + Absolute as YYYY-MM-DD or YYYYMMDD. + Default is an empty string. + + resol : :obj:`string`, optional + Specifies the desired triangular truncation of retrieved data, + before carrying out any other selected post-processing. + The default is automatic truncation (auto), by which the lowest + resolution compatible with the value specified in grid is + automatically selected for the retrieval. + Users wanting to perform post-processing from full spectral + resolution should specify Archived Value (av). + The following are examples of existing resolutions found in + the archive: 63, 106, 159, 213, 255, 319, 399, 511, 799 or 1279. + This keyword has no meaning/effect if the archived data is + not in spherical harmonics representation. + The best selection can be found here: + https://software.ecmwf.int/wiki/display/UDOC/\ + Retrieve#Retrieve-Truncationbeforeinterpolation + Default is an empty string. + + stream : :obj:`string`, optional + Identifies the forecasting system used to generate the data. + E.g. oper (Atmospheric model), enfo (Ensemble forecats), ... + Default is an empty string. + + area : :obj:`string`, optional + Specifies the desired sub-area of data to be extracted. + Areas can be defined to wrap around the globe. + + Latitude values must be given as signed numbers, with: + north latitudes (i.e. north of the equator) + being positive (e.g: 40.5) + south latitutes (i.e. south of the equator) + being negative (e.g: -50.5) + Longtitude values must be given as signed numbers, with: + east longitudes (i.e. east of the 0 degree meridian) + being positive (e.g: 35.0) + west longitudes (i.e. west of the 0 degree meridian) + being negative (e.g: -20.5) + + E.g.: North/West/South/East + Default is an empty string. + + time : :obj:`string`, optional + Specifies the time of the data in hours and minutes. + Valid values depend on the type of data: Analysis time, + Forecast base time or First guess verification time + (all usually at synoptic hours: 00, 06, 12 and 18 ). + Observation time (any combination in hours and minutes is valid, + subject to data availability in the archive). + The syntax is HHMM or HH:MM. If MM is omitted it defaults to 00. + Default is an empty string. + + step : :obj:`string`, optional + Specifies the forecast time step from forecast base time. + Valid values are hours (HH) from forecast base time. It also + specifies the length of the forecast which verifies at + First Guess time. + E.g. 1/3/6-hourly + Default is an empty string. + + expver : :obj:`string`, optional + The version of the dataset. Each experiment is assigned a + unique code (version). Production data is assigned 1 or 2, + and experimental data in Operations 11, 12 ,... + Research or Member State's experiments have a four letter + experiment identifier. + Default is "1". + + number : :obj:`string`, optional + Selects the member in ensemble forecast run. (Only then it + is necessary.) It has a different meaning depending on + the type of data. + E.g. Perturbed Forecasts: specifies the Ensemble forecast member + Default is an empty string. + + accuracy : :obj:`string`, optional + Specifies the number of bits per value to be used in the + generated GRIB coded fields. + A positive integer may be given to specify the preferred number + of bits per packed value. This must not be greater than the + number of bits normally used for a Fortran integer on the + processor handling the request (typically 32 or 64 bit). + Within a compute request the accuracy of the original fields + can be passed to the result field by specifying accuracy=av. + Default is an empty string. + + grid : :obj:`string`, optional + Specifies the output grid which can be either a Gaussian grid + or a Latitude/Longitude grid. MARS requests specifying + grid=av will return the archived model grid. + + Lat/Lon grid: The grid spacing needs to be an integer + fraction of 90 degrees e.g. grid = 0.5/0.5 + + Gaussian grid: specified by a letter denoting the type of + Gaussian grid followed by an integer (the grid number) + representing the number of lines between the Pole and Equator, + e.g. + grid = F160 - full (or regular) Gaussian grid with + 160 latitude lines between the pole and equator + grid = N320 - ECMWF original reduced Gaussian grid with + 320 latitude lines between the pole and equator, + see Reduced Gaussian Grids for grid numbers used at ECMWF + grid = O640 - ECMWF octahedral (reduced) Gaussian grid with + 640 latitude lines between the pole and equator + Default is an empty string. + + gaussian : :obj:`string`, optional + This parameter is deprecated and should no longer be used. + Specifies the desired type of Gaussian grid for the output. + Valid Gaussian grids are quasi-regular (reduced) or regular. + Keyword gaussian can only be specified together with + keyword grid. Gaussian without grid has no effect. + Default is an empty string. + + target : :obj:`string`, optional + Specifies a file into which data is to be written after + retrieval or manipulation. Path names should always be + enclosed in double quotes. The MARS client supports automatic + generation of multiple target files using MARS keywords + enclosed in square brackets [ ]. If the environment variable + MARS_MULTITARGET_STRICT_FORMAT is set to 1 before calling mars, + the keyword values will be used in the filename as shown by + the ecCodes GRIB tool grib_ls -m, e.g. with + MARS_MULTITARGET_STRICT_FORMAT set to 1 the keywords time, + expver and param will be formatted as 0600, 0001 and 129.128 + rather than 600, 1 and 129. + Default is an empty string. + + param : :obj:`string`, optional + Specifies the meteorological parameter. + The list of meteorological parameters in MARS is extensive. + Their availability is directly related to their meteorological + meaning and, therefore, the rest of directives specified + in the MARS request. + Meteorological parameters can be specified by their + GRIB code (param=130), their mnemonic (param=t) or + full name (param=temperature). + The list of parameter should be seperated by a "/"-sign. + E.g. 130/131/133 + Default is an empty string. + + Return + ------ + ''' self.server = server @@ -327,17 +322,15 @@ class MarsRetrieval(object): def display_info(self): - ''' - @Description: - Prints all class attributes and their values to the - standard output. + '''Prints all class attributes and their values to the + standard output. + + Parameters + ---------- - @Input: - self: instance of MarsRetrieval - For description see class documentation. + Return + ------ - @Return: - <nothing> ''' # Get all class attributes and their values as a dictionary attrs = vars(self).copy() @@ -354,23 +347,20 @@ class MarsRetrieval(object): def print_info(self, inputdir, request_number): - ''' - @Description: - Prints all mars requests to an extra file for debugging and - information. + '''Prints all mars requests to an extra file for debugging and + information. - @Input: - self: instance of MarsRetrieval - For description see class documentation. + Parameters + ---------- + inputdir : :obj:`string` + The path where all data from the retrievals are stored. - inputdir: string - The path where all data from the retrievals are stored. + request_number : :obj:`integer` + Number of mars requests for flux and non-flux data. - request_number: integer - Number of mars requests for flux and non-flux data. + Return + ------ - @Return: - <nothing> ''' # Get all class attributes and their values as a dictionary attrs = vars(self).copy() @@ -392,22 +382,19 @@ class MarsRetrieval(object): def print_infodata_csv(self, inputdir, request_number): - ''' - @Description: - Write all request parameter in alpabetical order into a "csv" file. + '''Write all request parameter in alpabetical order into a "csv" file. - @Input: - self: instance of MarsRetrieval - For description see class documentation. + Parameters + ---------- + inputdir : :obj:`string` + The path where all data from the retrievals are stored. - inputdir: string - The path where all data from the retrievals are stored. + request_number : :obj:`integer` + Number of mars requests for flux and non-flux data. - request_number: integer - Number of mars requests for flux and non-flux data. + Return + ------ - @Return: - <nothing> ''' # Get all class attributes and their values as a dictionary @@ -426,19 +413,17 @@ class MarsRetrieval(object): return def data_retrieve(self): - ''' - @Description: - Submits a MARS retrieval. Depending on the existence of - ECMWF Web-API it is submitted via Python or a - subprocess in the Shell. The parameter for the mars retrieval - are taken from the defined class attributes. - - @Input: - self: instance of MarsRetrieval - For description see class documentation. - - @Return: - <nothing> + '''Submits a MARS retrieval. Depending on the existence of + ECMWF Web-API it is submitted via Python or a + subprocess in the Shell. The parameter for the mars retrieval + are taken from the defined class attributes. + + Parameters + ---------- + + Return + ------ + ''' # Get all class attributes and their values as a dictionary attrs = vars(self).copy() diff --git a/source/python/classes/UioFiles.py b/source/python/classes/UioFiles.py index e891608baf2ea8a12cb578cf53fa2f6dd6291c92..28d3986ee3cb7dc7a3e47a296fbc9dbd45af45f5 100644 --- a/source/python/classes/UioFiles.py +++ b/source/python/classes/UioFiles.py @@ -60,8 +60,7 @@ from mods.tools import silent_remove, get_list_as_string # ------------------------------------------------------------------------------ class UioFiles(object): - ''' - Class to manipulate files. At initialisation it has the pattern + '''Class to manipulate files. At initialisation it has the pattern which stores a regular expression pattern for the files, the path to the files and the files already. ''' @@ -69,22 +68,19 @@ class UioFiles(object): # CLASS FUNCTIONS # -------------------------------------------------------------------------- def __init__(self, path, pattern): - ''' - @Description: - Assignes a specific pattern for these files. + '''Assignes a specific pattern for these files. - @Input: - self: instance of UioFiles - Description see class documentation. + Parameters + ---------- + path : :obj:`string` + Directory where to list the files. - path: string - Directory where to list the files. + pattern : :obj:`string` + Regular expression pattern. For example: '\*.grb' - pattern: string - Regular expression pattern. For example: '*.grb' + Return + ------ - @Return: - <nothing> ''' self.path = path @@ -97,20 +93,17 @@ class UioFiles(object): #@profiling.timefn def __list_files__(self, path): - ''' - @Description: - Lists all files in the directory with the matching - regular expression pattern. + '''Lists all files in the directory with the matching + regular expression pattern. - @Input: - self: instance of UioFiles - Description see class documentation. + Parameters + ---------- + path : :obj:`string` + Path to the files. - path: string - Path to the files. + Return + ------ - @Return: - <nothing> ''' # Get the absolute path path = os.path.abspath(path) @@ -123,18 +116,16 @@ class UioFiles(object): return def __str__(self): - ''' - @Description: - Converts the list of files into a single string. - The entries are sepereated by "," sign. + '''Converts the list of files into a single string. + The entries are sepereated by "," sign. - @Input: - self: instance of UioFiles - Description see class documentation. + Parameters + ---------- - @Return: - files_string: string - The content of the list as a single string. + Return + ------ + files_string : :obj:`string` + The content of the list as a single string. ''' filenames = [os.path.basename(f) for f in self.files] @@ -143,16 +134,14 @@ class UioFiles(object): return files_string def delete_files(self): - ''' - @Description: - Deletes the files. + '''Deletes the files. + + Parameters + ---------- - @Input: - self: instance of UioFiles - Description see class documentation. + Return + ------ - @Return: - <nothing> ''' for old_file in self.files: diff --git a/source/python/install.py b/source/python/install.py index cbef5713bf303f85dd937957ed906c4b30400651..3ab8218303e73a9dac59d8da30c0191264ba7421 100755 --- a/source/python/install.py +++ b/source/python/install.py @@ -65,16 +65,14 @@ from mods.tools import make_dir, put_file_to_ecserver, submit_job_to_ecserver # FUNCTIONS # ------------------------------------------------------------------------------ def main(): - ''' - @Description: - Controls the installation process. Calls the installation function - if target is specified. + '''Controls the installation process. Calls the installation function + if target is specified. - @Intput: - <nothing> + Parameters + ---------- - @Return: - <nothing> + Return + ------ ''' args = get_install_cmdline_arguments() @@ -87,17 +85,16 @@ def main(): return def get_install_cmdline_arguments(): - ''' - @Description: - Decomposes the command line arguments and assigns them to variables. - Apply default values for non mentioned arguments. + '''Decomposes the command line arguments and assigns them to variables. + Apply default values for non mentioned arguments. - @Input: - <nothing> + Parameters + ---------- - @Return: - args: instance of ArgumentParser - Contains the commandline arguments from script/program call. + Return + ------ + args : :obj:`Namespace` + Contains the commandline arguments from script/program call. ''' parser = ArgumentParser(description='Install flex_extract software locally or \ on ECMWF machines', @@ -138,21 +135,19 @@ def get_install_cmdline_arguments(): def install_via_gateway(c): - ''' - @Description: - Perform the actual installation on local machine or prepare data - transfer to remote gate and submit a job script which will - install everything on the remote gate. - - @Input: - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - @Return: - <nothing> + '''Perform the actual installation on local machine or prepare data + transfer to remote gate and submit a job script which will + install everything on the remote gate. + + Parameters + ---------- + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + Return + ------ + ''' import tarfile @@ -223,25 +218,25 @@ def install_via_gateway(c): return def mk_tarball(tarball_path, target): - ''' - @Description: - Creates a tarball with all necessary files which need to be sent to the - installation directory. - It does not matter if this is local or remote. - Collects all python files, the Fortran source and makefiles, - the ECMWF_ENV file, the CONTROL files as well as the - template files. - - @Input: - tarball_path: string - The complete path to the tar file which will contain all - relevant data for flex_extract. - - target: string - The queue where the job is submitted to. - - @Return: - <nothing> + '''Creates a tarball with all necessary files which need to be sent to the + installation directory. + It does not matter if this is local or remote. + Collects all python files, the Fortran source and makefiles, + the ECMWF_ENV file, the CONTROL files as well as the + template files. + + Parameters + ---------- + tarball_path : :obj:`string` + The complete path to the tar file which will contain all + relevant data for flex_extract. + + target : :obj:`string` + The queue where the job is submitted to. + + Return + ------ + ''' import tarfile from glob import glob @@ -293,17 +288,17 @@ def mk_tarball(tarball_path, target): def un_tarball(tarball_path): - ''' - @Description: - Extracts the given tarball into current directory. + '''Extracts the given tarball into current directory. - @Input: - tarball_path: string - The complete path to the tar file which will contain all - relevant data for flex_extract. + Parameters + ---------- + tarball_path : :obj:`string` + The complete path to the tar file which will contain all + relevant data for flex_extract. + + Return + ------ - @Return: - <nothing> ''' import tarfile @@ -315,28 +310,28 @@ def un_tarball(tarball_path): return def mk_env_vars(ecuid, ecgid, gateway, destination): - ''' - @Description: - Creates a file named ECMWF_ENV which contains the - necessary environmental variables at ECMWF servers. - It is based on the template ECMWF_ENV.template. + '''Creates a file named ECMWF_ENV which contains the + necessary environmental variables at ECMWF servers. + It is based on the template ECMWF_ENV.template. + + Parameters + ---------- + ecuid : :obj:`string` + The user id on ECMWF server. - @Input: - ecuid: string - The user id on ECMWF server. + ecgid : :obj:`string` + The group id on ECMWF server. - ecgid: string - The group id on ECMWF server. + gateway : :obj:`string` + The gateway server the user is using. - gateway: string - The gateway server the user is using. + destination : :obj:`string` + The remote destination which is used to transfer files + from ECMWF server to local gateway server. - destination: string - The remote destination which is used to transfer files - from ECMWF server to local gateway server. + Return + ------ - @Return: - <nothing> ''' from genshi.template.text import NewTextTemplate from genshi.template import TemplateLoader @@ -357,32 +352,32 @@ def mk_env_vars(ecuid, ecgid, gateway, destination): return def mk_compilejob(makefile, target, ecuid, ecgid, fp_root): - ''' - @Description: - Modifies the original job template file so that it is specified - for the user and the environment were it will be applied. Result - is stored in a new file "job.temp" in the python directory. + '''Modifies the original job template file so that it is specified + for the user and the environment were it will be applied. Result + is stored in a new file "job.temp" in the python directory. + + Parameters + ---------- + makefile : :obj:`string` + Name of the makefile which should be used to compile FORTRAN + CONVERT2 program. - @Input: - makefile: string - Name of the makefile which should be used to compile FORTRAN - CONVERT2 program. + target : :obj:`string` + The target where the installation should be done, e.g. the queue. - target: string - The target where the installation should be done, e.g. the queue. + ecuid : :obj:`string` + The user id on ECMWF server. - ecuid: string - The user id on ECMWF server. + ecgid : :obj:`string` + The group id on ECMWF server. - ecgid: string - The group id on ECMWF server. + fp_root : :obj:`string` + Path to the root directory of FLEXPART environment or flex_extract + environment. - fp_root: string - Path to the root directory of FLEXPART environment or flex_extract - environment. + Return + ------ - @Return: - <nothing> ''' from genshi.template.text import NewTextTemplate from genshi.template import TemplateLoader @@ -412,32 +407,32 @@ def mk_compilejob(makefile, target, ecuid, ecgid, fp_root): return def mk_job_template(ecuid, ecgid, gateway, destination, fp_root): - ''' - @Description: - Modifies the original job template file so that it is specified - for the user and the environment were it will be applied. Result - is stored in a new file. + '''Modifies the original job template file so that it is specified + for the user and the environment were it will be applied. Result + is stored in a new file. - @Input: - ecuid: string - The user id on ECMWF server. + Parameters + ---------- + ecuid : :obj:`string` + The user id on ECMWF server. - ecgid: string - The group id on ECMWF server. + ecgid : :obj:`string` + The group id on ECMWF server. - gateway: string - The gateway server the user is using. + gateway : :obj:`string` + The gateway server the user is using. - destination: string - The remote destination which is used to transfer files - from ECMWF server to local gateway server. + destination : :obj:`string` + The remote destination which is used to transfer files + from ECMWF server to local gateway server. - fp_root: string - Path to the root directory of FLEXPART environment or flex_extract - environment. + fp_root : :obj:`string` + Path to the root directory of FLEXPART environment or flex_extract + environment. + + Return + ------ - @Return: - <nothing> ''' from genshi.template.text import NewTextTemplate from genshi.template import TemplateLoader @@ -466,17 +461,17 @@ def mk_job_template(ecuid, ecgid, gateway, destination, fp_root): return def delete_convert_build(src_path): - ''' - @Description: - Clean up the Fortran source directory and remove all - build files (e.g. *.o, *.mod and CONVERT2) + '''Clean up the Fortran source directory and remove all + build files (e.g. \*.o, \*.mod and CONVERT2) + + Parameters + ---------- + src_path : :obj:`string` + Path to the fortran source directory. - @Input: - src_path: string - Path to the fortran source directory. + Return + ------ - @Return: - <nothing> ''' modfiles = UioFiles(src_path, '*.mod') @@ -490,19 +485,19 @@ def delete_convert_build(src_path): return def make_convert_build(src_path, makefile): - ''' - @Description: - Compiles the Fortran code and generates the executable. + '''Compiles the Fortran code and generates the executable. + + Parameters + ---------- + src_path : :obj:`string` + Path to the fortran source directory. - @Input: - src_path: string - Path to the fortran source directory. + makefile : :obj:`string` + The name of the makefile which should be used. - makefile: string - The name of the makefile which should be used. + Return + ------ - @Return: - <nothing> ''' try: diff --git a/source/python/mods/get_mars_data.py b/source/python/mods/get_mars_data.py index cf13d65b3718cc616df7ab0f813c4912c19c6524..197c1c53157c7cae6a2ba290d2691dcded46baa0 100755 --- a/source/python/mods/get_mars_data.py +++ b/source/python/mods/get_mars_data.py @@ -68,18 +68,17 @@ except ImportError: # FUNCTION # ------------------------------------------------------------------------------ def main(): - ''' - @Description: - If get_mars_data is called directly from command line, + '''Controls the program to get data out of mars. + + This is done if it is called directly from command line. + Then it also takes program call arguments and control file input. - the program flow and calls the argumentparser function and - the get_mars_data function for retrieving EC data. + Parameters + ---------- - @Input: - <nothing> + Return + ------ - @Return: - <nothing> ''' args = get_cmdline_arguments() @@ -96,22 +95,21 @@ def main(): return def get_mars_data(c): - ''' - @Description: - Retrieves the EC data needed for a FLEXPART simulation. - Start and end dates for retrieval period is set. Retrievals - are divided into smaller periods if necessary and datechunk parameter - is set. - - @Input: - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - @Return: - <nothing> + '''Retrieves the EC data needed for a FLEXPART simulation. + + Start and end dates for retrieval period is set. Retrievals + are divided into smaller periods if necessary and datechunk parameter + is set. + + Parameters + ---------- + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + Return + ------ + ''' if not os.path.exists(c.inputdir): @@ -205,38 +203,36 @@ def get_mars_data(c): return def do_retrievement(c, server, start, end, delta_t, fluxes=False): - ''' - @Description: - Divides the complete retrieval period in smaller chunks and - retrieves the data from MARS. + '''Divides the complete retrieval period in smaller chunks and + retrieves the data from MARS. + + Parameters + ---------- + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. - @Input: - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. + server : :obj:`ECMWFService` + The server connection to ECMWF. - server: instance of ECMWFService - The server connection to ECMWF + start : :obj:`datetime` + The start date of the retrieval. - start: instance of datetime - The start date of the retrieval. + end : :obj:`datetime` + The end date of the retrieval. - end: instance of datetime - The end date of the retrieval. + delta_t : :obj:`datetime` + Delta_t + 1 is the maximal time period of a single + retrieval. - delta_t: instance of datetime - Delta_t +1 is the maximal time period of a single - retrieval. + fluxes : :obj:`boolean`, optional + Decides if the flux parameters are to be retrieved or + the rest of the parameter list. + Default value is False. - fluxes: boolean, optional - Decides if the flux parameters are to be retrieved or - the rest of the parameter list. - Default value is False. + Return + ------ - @Return: - <nothing> ''' # since actual day also counts as one day, diff --git a/source/python/mods/prepare_flexpart.py b/source/python/mods/prepare_flexpart.py index 2e2d84e857832d47b9c3865bf30dda5ffbc71495..f60f05ee9a0d00a28d4f2eac8a20195232fb5913 100755 --- a/source/python/mods/prepare_flexpart.py +++ b/source/python/mods/prepare_flexpart.py @@ -78,17 +78,17 @@ except ImportError: # FUNCTION # ------------------------------------------------------------------------------ def main(): - ''' - @Description: - If prepare_flexpart is called from command line, this function controls - the program flow and calls the argumentparser function and - the prepare_flexpart function for preparation of GRIB data for FLEXPART. + '''Controls the program to prepare flexpart input files from mars data. + + This is done if it is called directly from command line. + Then it also takes program call arguments and control file input. + + Parameters + ---------- - @Input: - <nothing> + Return + ------ - @Return: - <nothing> ''' args = get_cmdline_arguments() @@ -104,27 +104,26 @@ def main(): return def prepare_flexpart(ppid, c): - ''' - @Description: - Lists all grib files retrieved from MARS with get_mars_data and - uses prepares data for the use in FLEXPART. Specific data fields - are converted to a different grid and the flux data are going to be - disaggregated. The data fields are collected by hour and stored in - a file with a specific FLEXPART relevant naming convention. - - @Input: - ppid: int - Contains the ppid number of the current ECMWF job. If it is called - from this script, it is "None". - - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - @Return: - <nothing> + '''Converts the mars data into flexpart ready input files. + + Specific data fields are converted to a different grid and the flux + data are going to be disaggregated. The data fields are collected by + hour and stored in a file with a specific FLEXPART relevant naming + convention. + + Parameters + ---------- + ppid : :obj:`int` + Contains the ppid number of the current ECMWF job. It will be None if + the method was called within this module. + + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + Return + ------ + ''' if not ppid: diff --git a/source/python/mods/tools.py b/source/python/mods/tools.py index d8b6c0251d199b4fa10edf2fcc8b647d4902997a..2ab2ad4c2ec71d1a90f9f44dfad5d0418eddd1e0 100644 --- a/source/python/mods/tools.py +++ b/source/python/mods/tools.py @@ -60,56 +60,55 @@ from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter # ------------------------------------------------------------------------------ def none_or_str(value): - ''' - @Description: - Converts the input string into pythons None-type if the string - contains "None". - - @Input: - value: string - String to be checked for the "None" word. - - @Return: - None or value: - Return depends on the content of the input value. If it was "None", - then the python type None is returned. Otherwise the string itself. + '''Converts the input string into pythons None-type if the string + contains string "None". + + Parameters + ---------- + value : :obj:`string` + String to be checked for the "None" word. + + Return + ------ + None or value: + Return depends on the content of the input value. If it was "None", + then the python type None is returned. Otherwise the string itself. ''' if value == 'None': return None return value def none_or_int(value): - ''' - @Description: - Converts the input string into pythons None-type if the string - contains "None". Otherwise it is converted to an integer value. - - @Input: - value: string - String to be checked for the "None" word. - - @Return: - None or int(value): - Return depends on the content of the input value. If it was "None", - then the python type None is returned. Otherwise the string is - converted into an integer value. + '''Converts the input string into pythons None-type if the string + contains string "None". Otherwise it is converted to an integer value. + + Parameters + ---------- + value : :obj:`string` + String to be checked for the "None" word. + + Return + ------ + None or int(value): + Return depends on the content of the input value. If it was "None", + then the python type None is returned. Otherwise the string is + converted into an integer value. ''' if value == 'None': return None return int(value) def get_cmdline_arguments(): - ''' - @Description: - Decomposes the command line arguments and assigns them to variables. - Apply default values for non mentioned arguments. + '''Decomposes the command line arguments and assigns them to variables. + Apply default values for non mentioned arguments. - @Input: - <nothing> + Parameters + ---------- - @Return: - args: instance of ArgumentParser - Contains the commandline arguments from script/program call. + Return + ------ + args : :obj:`Namespace` + Contains the commandline arguments from script/program call. ''' parser = ArgumentParser(description='Retrieve FLEXPART input from \ @@ -189,19 +188,19 @@ def get_cmdline_arguments(): return args def read_ecenv(filename): - ''' - @Description: - Reads the file into a dictionary where the key values are the parameter - names. - - @Input: - filename: string - Path to file where the ECMWV environment parameters are stored. - - @Return: - envs: dict - Contains the environment parameter ecuid, ecgid, gateway - and destination for ECMWF server environments. + '''Reads the file into a dictionary where the key values are the parameter + names. + + Parameters + ---------- + filename : :obj:`string` + Path to file where the ECMWF environment parameters are stored. + + Return + ------ + envs : :obj:`dictionary` + Contains the environment parameter ecuid, ecgid, gateway + and destination for ECMWF server environments. ''' envs= {} @@ -213,20 +212,17 @@ def read_ecenv(filename): return envs def clean_up(c): - ''' - @Description: - Remove all files from intermediate directory - (inputdir from CONTROL file). - - @Input: - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - @Return: - <nothing> + '''Remove all files from intermediate directory (inputdir). + + Parameters + ---------- + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + Return + ------ + ''' print("clean_up") @@ -244,22 +240,22 @@ def clean_up(c): def my_error(users, message='ERROR'): - ''' - @Description: - Prints a specified error message which can be passed to the function - before exiting the program. + '''Prints a specified error message which can be passed to the function + before exiting the program. + + Parameters + ---------- + user : :obj:`list` of :obj:`string` + Contains all email addresses which should be notified. + It might also contain just the ecmwf user name which wil trigger + mailing to the associated email address for this user. - @Input: - user: list of strings - Contains all email addresses which should be notified. - It might also contain just the ecmwf user name which wil trigger - mailing to the associated email address for this user. + message : :obj:`string`, optional + Error message. Default value is "ERROR". - message: string, optional - Error message. Default value is "ERROR". + Return + ------ - @Return: - <nothing> ''' print(message) @@ -290,21 +286,20 @@ def my_error(users, message='ERROR'): def normal_exit(users, message='Done!'): - ''' - @Description: - Prints a specific exit message which can be passed to the function. + '''Prints a specific exit message which can be passed to the function. - @Input: - user: list of strings - Contains all email addresses which should be notified. - It might also contain just the ecmwf user name which wil trigger - mailing to the associated email address for this user. + Parameters + ---------- + user : :obj:`list` of :obj:`string` + Contains all email addresses which should be notified. + It might also contain just the ecmwf user name which wil trigger + mailing to the associated email address for this user. - message: string, optional - Message for exiting program. Default value is "Done!". + message : :obj:`string`, optional + Message for exiting program. Default value is "Done!". - @Return: - <nothing> + Return + ------ ''' print(message) @@ -332,30 +327,34 @@ def normal_exit(users, message='Done!'): def product(*args, **kwds): - ''' - @Description: - This method is taken from an example at the ECMWF wiki website. - https://software.ecmwf.int/wiki/display/GRIB/index.py; 2018-03-16 - - This method combines the single characters of the passed arguments - with each other. So that each character of each argument value - will be combined with each character of the other arguments as a tuple. - - Example: - product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy - product(range(2), repeat = 3) --> 000 001 010 011 100 101 110 111 - - @Input: - *args: tuple - Positional arguments (arbitrary number). - - **kwds: dictionary - Contains all the keyword arguments from *args. - - @Return: - prod: tuple - Return will be done with "yield". A tuple of combined arguments. - See example in description above. + '''This method combines the single characters of the passed arguments + with each other. So that each character of each argument value + will be combined with each character of the other arguments as a tuple. + + Note + ---- + This method is taken from an example at the ECMWF wiki website. + https://software.ecmwf.int/wiki/display/GRIB/index.py; 2018-03-16 + + Example + ------- + product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy + + product(range(2), repeat = 3) --> 000 001 010 011 100 101 110 111 + + Parameters + ---------- + \*args : :obj:`tuple` + Positional arguments (arbitrary number). + + \*\*kwds : :obj:`dictionary` + Contains all the keyword arguments from \*args. + + Return + ------ + prod : :obj:`tuple` + Return will be done with "yield". A tuple of combined arguments. + See example in description above. ''' pools = map(tuple, args) * kwds.get('repeat', 1) result = [[]] @@ -368,17 +367,17 @@ def product(*args, **kwds): def silent_remove(filename): - ''' - @Description: - Remove file if it exists. - The function does not fail if the file does not exist. + '''Remove file if it exists. + The function does not fail if the file does not exist. + + Parameters + ---------- + filename : :obj:`string` + The name of the file to be removed without notification. - @Input: - filename: string - The name of the file to be removed without notification. + Return + ------ - @Return: - <nothing> ''' try: os.remove(filename) @@ -391,19 +390,19 @@ def silent_remove(filename): def init128(filepath): - ''' - @Description: - Opens and reads the grib file with table 128 information. - - @Input: - filepath: string - Path to file of ECMWF grib table number 128. - - @Return: - table128: dictionary - Contains the ECMWF grib table 128 information. - The key is the parameter number and the value is the - short name of the parameter. + '''Opens and reads the grib file with table 128 information. + + Parameters + ---------- + filepath : :obj:`string` + Path to file of ECMWF grib table number 128. + + Return + ------ + table128 : :obj:`dictionary` + Contains the ECMWF grib table 128 information. + The key is the parameter number and the value is the + short name of the parameter. ''' table128 = dict() with open(filepath) as f: @@ -416,27 +415,26 @@ def init128(filepath): def to_param_id(pars, table): - ''' - @Description: - Transform parameter names to parameter ids - with ECMWF grib table 128. - - @Input: - pars: string - Addpar argument from CONTROL file in the format of - parameter names instead of ids. The parameter short - names are sepearted with "/" and they are passed as - one single string. - - table: dictionary - Contains the ECMWF grib table 128 information. - The key is the parameter number and the value is the - short name of the parameter. - - @Return: - ipar: list of integer - List of addpar parameters from CONTROL file transformed to - parameter ids in the format of integer. + '''Transform parameter names to parameter ids with ECMWF grib table 128. + + Parameters + ---------- + pars : :obj:`string` + Addpar argument from CONTROL file in the format of + parameter names instead of ids. The parameter short + names are sepearted with "/" and they are passed as + one single string. + + table : :obj:`dictionary` + Contains the ECMWF grib table 128 information. + The key is the parameter number and the value is the + short name of the parameter. + + Return + ------ + ipar : :obj:`list` of :obj:`integer` + List of addpar parameters from CONTROL file transformed to + parameter ids in the format of integer. ''' cpar = pars.upper().split('/') ipar = [] @@ -451,21 +449,21 @@ def to_param_id(pars, table): return ipar def get_list_as_string(list_obj, concatenate_sign=', '): - ''' - @Description: - Converts a list of arbitrary content into a single string. + '''Converts a list of arbitrary content into a single string. - @Input: - list_obj: list - A list with arbitrary content. + Parameters + ---------- + list_obj : :obj:`list` + A list with arbitrary content. - concatenate_sign: string, optional - A string which is used to concatenate the single - list elements. Default value is ", ". + concatenate_sign : :obj:`string`, optional + A string which is used to concatenate the single + list elements. Default value is ", ". - @Return: - str_of_list: string - The content of the list as a single string. + Return + ------ + str_of_list : :obj:`string` + The content of the list as a single string. ''' str_of_list = concatenate_sign.join(str(l) for l in list_obj) @@ -473,17 +471,17 @@ def get_list_as_string(list_obj, concatenate_sign=', '): return str_of_list def make_dir(directory): - ''' - @Description: - Creates a directory and gives a warning if the directory - already exists. The program stops only if there is another problem. + '''Creates a directory and gives a warning if the directory + already exists. The program stops only if there is another problem. - @Input: - directory: string - The directory name including the path which should be created. + Parameters + ---------- + directory : :obj:`string` + The directory name including the path which should be created. + + Return + ------ - @Return: - <nothing> ''' try: os.makedirs(directory) @@ -497,35 +495,36 @@ def make_dir(directory): return def put_file_to_ecserver(ecd, filename, target, ecuid, ecgid): - ''' - @Description: - Uses the ecaccess-file-put command to send a file to the ECMWF servers. + '''Uses the ecaccess-file-put command to send a file to the ECMWF servers. - NOTE: - The return value is just for testing reasons. It does not have - to be used from the calling function since the whole error handling - is done in here. + Note + ---- + The return value is just for testing reasons. It does not have + to be used from the calling function since the whole error handling + is done in here. - @Input: - ecd: string - The path were the file is stored. + Parameters + ---------- + ecd : :obj:`string` + The path were the file is stored. - filename: string - The name of the file to send to the ECMWF server. + filename : :obj:`string` + The name of the file to send to the ECMWF server. - target: string - The target queue where the file should be sent to. + target : :obj:`string` + The target queue where the file should be sent to. - ecuid: string - The user id on ECMWF server. + ecuid : :obj:`string` + The user id on ECMWF server. - ecgid: string - The group id on ECMWF server. + ecgid : :obj:`string` + The group id on ECMWF server. - @Return: - rcode: string - Resulting code of command execution. If successful the string - will be empty. + Return + ------ + rcode : :obj:`string` + Resulting code of command execution. If successful the string + will be empty. ''' try: @@ -545,27 +544,28 @@ def put_file_to_ecserver(ecd, filename, target, ecuid, ecgid): return rcode def submit_job_to_ecserver(target, jobname): - ''' - @Description: - Uses ecaccess-job-submit command to submit a job to the ECMWF server. - - NOTE: - The return value is just for testing reasons. It does not have - to be used from the calling function since the whole error handling - is done in here. - - @Input: - target: string - The target where the file should be sent to, e.g. the queue. - - jobname: string - The name of the jobfile to be submitted to the ECMWF server. - - @Return: - rcode: string - Resulting code of command execution. If successful the string - will contain an integer number, representing the id of the job - at the ecmwf server. + '''Uses ecaccess-job-submit command to submit a job to the ECMWF server. + + Note + ---- + The return value is just for testing reasons. It does not have + to be used from the calling function since the whole error handling + is done in here. + + Parameters + ---------- + target : :obj:`string` + The target where the file should be sent to, e.g. the queue. + + jobname : :obj:`string` + The name of the jobfile to be submitted to the ECMWF server. + + Return + ------ + rcode : :obj:`string` + Resulting code of command execution. If successful the string + will contain an integer number, representing the id of the job + at the ecmwf server. ''' try: diff --git a/source/python/submit.py b/source/python/submit.py index 37342d341a9bb2ecbe5cc7fc742c2f9f6f7b4f23..1e13a9cf12e58ca98bac59a4093bd449a71c9015 100755 --- a/source/python/submit.py +++ b/source/python/submit.py @@ -61,18 +61,17 @@ from classes.ControlFile import ControlFile # ------------------------------------------------------------------------------ def main(): - ''' - @Description: - Get the arguments from script call and from CONTROL file. - Decides from the argument "queue" if the local version - is done "queue=None" or the gateway version with "queue=ecgate" - or "queue=cca". + '''Get the arguments from script call and from CONTROL file. + Decides from the argument "queue" if the local version + is done "queue=None" or the gateway version with "queue=ecgate" + or "queue=cca". + + Parameters + ---------- - @Input: - <nothing> + Return + ------ - @Return: - <nothing> ''' args = get_cmdline_arguments() @@ -104,29 +103,27 @@ def main(): return def submit(jtemplate, c, queue): - ''' - @Description: - Prepares the job script and submit it to the specified queue. - - @Input: - jtemplate: string - Job template file from sub-directory "_templates" for - submission to ECMWF. It contains all necessary - module and variable settings for the ECMWF environment as well as - the job call and mail report instructions. - Default is "job.temp". - - c: instance of class ControlFile - Contains all the parameters of CONTROL file and - command line. - For more information about format and content of the parameter - see documentation. - - queue: string - Name of queue for submission to ECMWF (e.g. ecgate or cca ) - - @Return: - <nothing> + '''Prepares the job script and submit it to the specified queue. + + Parameters + ---------- + jtemplate : :obj:`string` + Job template file from sub-directory "_templates" for + submission to ECMWF. It contains all necessary + module and variable settings for the ECMWF environment as well as + the job call and mail report instructions. + Default is "job.temp". + + c : :obj:`ControlFile` + Contains all the parameters of CONTROL file and + command line. + + queue : :obj:`string` + Name of queue for submission to ECMWF (e.g. ecgate or cca ) + + Return + ------ + ''' # read template file and get index for CONTROL input