From 05cf3646cde46355b063d12a15b90a4a2284363c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20J=C3=A4hn?= Date: Wed, 29 Nov 2023 09:08:05 +0100 Subject: [PATCH 1/7] Revise Documentation (#49) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove `variants` key and use `features` instead (#30) * Remove variants from models.yaml * Remove spinup variant and use the spinup variable instead * GitHub Action: Apply Pep8-formatting * Remove variant check * Install specific icontools version --------- Co-authored-by: github-actions * Convert config files to yaml format (#36) * Remove variants from models.yaml * Remove spinup variant and use the spinup variable instead * GitHub Action: Apply Pep8-formatting * Remove variant check * Install specific icontools version * Starting to work on cosmo case * GitHub Action: Apply Pep8-formatting * GitHub Action: Apply Pep8-formatting * Add cases and paths * Create cfg object from Config class * GitHub Action: Apply Pep8-formatting * Format output of configuration * Add email and simplify print function * GitHub Action: Apply Pep8-formatting * Improve output * GitHub Action: Apply Pep8-formatting * Make cams a dict and adapt prepare_data * GitHub Action: Apply Pep8-formatting * Adapt emissions * GitHub Action: Apply Pep8-formatting * Adapt biofluxes * Change user variable naming * GitHub Action: Apply Pep8-formatting * Fix path * Adapt oem * GitHub Action: Apply Pep8-formatting * Modify whole config.yaml * Adapt online_vprm * Work on int2lm, some restructuring * GitHub Action: Apply Pep8-formatting * Move times to config file * GitHub Action: Apply Pep8-formatting * Further work on int2lm * GitHub Action: Apply Pep8-formatting * Finish int2lm * GitHub Action: Apply Pep8-formatting * Fix post_int2lm * GitHub Action: Apply Pep8-formatting * Use correct config variable in post_int2lm * Work on cosmo job/config * GitHub Action: Apply Pep8-formatting * Make cosmo job run * GitHub Action: Apply Pep8-formatting * Fix hstart and hstop for spinup * GitHub Action: Apply Pep8-formatting * Fix post_cosmo and add functions to set config variables * GitHub Action: Apply Pep8-formatting * Rename cosmo-ghg test case and reduce simulation time * Minor fixes for other jobs * Fix cosmo job * Remove config.py * Change time interval * Remove cosmo_spec * Fix inidates for spinup runs * GitHub Action: Apply Pep8-formatting * Set correct inidate for int2lm job * Fix and unify post_int2lm * GitHub Action: Apply Pep8-formatting * Fix hstart and hstop for spinup runs * Remove unnecessary inidate variables * GitHub Action: Apply Pep8-formatting * Add cosmo-ghg restart test case * Create separate inidate variable for int2lm * GitHub Action: Apply Pep8-formatting * Work on icon case * Further work on ICON and make job_id and chain_root config variables * GitHub Action: Apply Pep8-formatting * Input files for ICON * GitHub Action: Apply Pep8-formatting * Add class function for easy-access variables * Further work on ICON * GitHub Action: Apply Pep8-formatting * Print config variables before duplicating dict variables * ICON: prepare_data * Remove icon_spec * Add class function to convert relative to absolute paths * Further work on prepare_data * GitHub Action: Apply Pep8-formatting * Add prefix to meteo nameformat * GitHub Action: Apply Pep8-formatting * Fix time variable for xarray * GitHub Action: Apply Pep8-formatting * Remove print * Further work on icon job * GitHub Action: Apply Pep8-formatting * Better naming for variables and restart setting * GitHub Action: Apply Pep8-formatting * Add GEOSP file for restart simulations * GitHub Action: Apply Pep8-formatting * Set procs for restart etc. in config * Set correct endtime in prepare_data * Set correct nodes for icon (cpu + gpu) * Fix error * Further work on icon restart * GitHub Action: Apply Pep8-formatting * Fix restart and finish icon-test case * Remove print * Update jenkins tests * Fix cosmo-ghg test * fix int2lm job script * Fix for GEOSP data copy * Fix jobid date * GitHub Action: Apply Pep8-formatting * Add ISO 8601 duration converter * Fix icon test jenkins files * GitHub Action: Apply Pep8-formatting * Modify comment in config file to match case --------- Co-authored-by: github-actions * Use `cfg.enddate` instead of `hstart` and `hstop` (#39) * Remove variants from models.yaml * Remove spinup variant and use the spinup variable instead * GitHub Action: Apply Pep8-formatting * Remove variant check * Install specific icontools version * Starting to work on cosmo case * GitHub Action: Apply Pep8-formatting * GitHub Action: Apply Pep8-formatting * Add cases and paths * Create cfg object from Config class * GitHub Action: Apply Pep8-formatting * Format output of configuration * Add email and simplify print function * GitHub Action: Apply Pep8-formatting * Improve output * GitHub Action: Apply Pep8-formatting * Make cams a dict and adapt prepare_data * GitHub Action: Apply Pep8-formatting * Adapt emissions * GitHub Action: Apply Pep8-formatting * Adapt biofluxes * Change user variable naming * GitHub Action: Apply Pep8-formatting * Fix path * Adapt oem * GitHub Action: Apply Pep8-formatting * Modify whole config.yaml * Adapt online_vprm * Work on int2lm, some restructuring * GitHub Action: Apply Pep8-formatting * Move times to config file * GitHub Action: Apply Pep8-formatting * Further work on int2lm * GitHub Action: Apply Pep8-formatting * Finish int2lm * GitHub Action: Apply Pep8-formatting * Fix post_int2lm * GitHub Action: Apply Pep8-formatting * Use correct config variable in post_int2lm * Work on cosmo job/config * GitHub Action: Apply Pep8-formatting * Make cosmo job run * GitHub Action: Apply Pep8-formatting * Fix hstart and hstop for spinup * GitHub Action: Apply Pep8-formatting * Fix post_cosmo and add functions to set config variables * GitHub Action: Apply Pep8-formatting * Rename cosmo-ghg test case and reduce simulation time * Minor fixes for other jobs * Fix cosmo job * Remove config.py * Change time interval * Remove cosmo_spec * Fix inidates for spinup runs * GitHub Action: Apply Pep8-formatting * Set correct inidate for int2lm job * Fix and unify post_int2lm * GitHub Action: Apply Pep8-formatting * Fix hstart and hstop for spinup runs * Remove unnecessary inidate variables * GitHub Action: Apply Pep8-formatting * Add cosmo-ghg restart test case * Create separate inidate variable for int2lm * GitHub Action: Apply Pep8-formatting * Work on icon case * Further work on ICON and make job_id and chain_root config variables * GitHub Action: Apply Pep8-formatting * Input files for ICON * GitHub Action: Apply Pep8-formatting * Add class function for easy-access variables * Further work on ICON * GitHub Action: Apply Pep8-formatting * Print config variables before duplicating dict variables * ICON: prepare_data * Remove icon_spec * Add class function to convert relative to absolute paths * Further work on prepare_data * GitHub Action: Apply Pep8-formatting * Add prefix to meteo nameformat * GitHub Action: Apply Pep8-formatting * Fix time variable for xarray * GitHub Action: Apply Pep8-formatting * Remove print * Further work on icon job * GitHub Action: Apply Pep8-formatting * Better naming for variables and restart setting * GitHub Action: Apply Pep8-formatting * Add GEOSP file for restart simulations * GitHub Action: Apply Pep8-formatting * Set procs for restart etc. in config * Set correct endtime in prepare_data * Set correct nodes for icon (cpu + gpu) * Fix error * Further work on icon restart * GitHub Action: Apply Pep8-formatting * Fix restart and finish icon-test case * Remove print * Update jenkins tests * Fix cosmo-ghg test * fix int2lm job script * Fix for GEOSP data copy * Fix jobid date * GitHub Action: Apply Pep8-formatting * Add ISO 8601 duration converter * Fix icon test jenkins files * GitHub Action: Apply Pep8-formatting * Use startdate and enddate in iter_hours * Merge init * Work on startdate, enddate, etc. * GitHub Action: Apply Pep8-formatting * Some cleanup for startdates * GitHub Action: Apply Pep8-formatting * Set jobid based on enddate * Provide restart step in iso format (icon-test) * GitHub Action: Apply Pep8-formatting * Adapt run_chain for enddate * GitHub Action: Apply Pep8-formatting * Remove obsolete time occurences * GitHub Action: Apply Pep8-formatting * Fix last commit * GitHub Action: Apply Pep8-formatting * Set missing variables * Remove hstop in prepare_data * GitHub Action: Apply Pep8-formatting * Adapt namelist templates * fix for namelist templates * Remove config.py * Further fixes * Adapt main function parameters for all jobs * Adapt function parameters for other jobs and cfg_variables * Correct function arguments when called * Fix icon job * GitHub Action: Apply Pep8-formatting * Don't pass startdate and enddate anymore * GitHub Action: Apply Pep8-formatting * Further removal of startdate and enddate * GitHub Action: Apply Pep8-formatting * Remove check at the end of int2lm runscript * Sync int2lm scripts * Remove unused imports * Fix cosmo-ghg jobs * GitHub Action: Apply Pep8-formatting * Modify docstring for iter_hours function * Fix chain for spinup * Remove print from post_int2lm * Fix spinup * Fix for second simulation in spinup * GitHub Action: Apply Pep8-formatting * Some docstring cleanup --------- Co-authored-by: github-actions * Add icon-art-oem-test (#40) * Add config.yaml * Replace inidate with startdate_sim * Fix icontools scripts * Fix chem file names * Set correct input file names * Small fix for latbc grid file name * Add prefix to chem file * GitHub Action: Apply Pep8-formatting * Fix for chem file * GitHub Action: Apply Pep8-formatting * More corrections for chem file * GitHub Action: Apply Pep8-formatting * Fix art namelist * Fix art input folder * Update on how to build icon(-art) * Update .gitignore * Correcting case name in comment * Use config variables for num_procs in namelist * Fix ICON namelists * Remove config.py * Only process initial file if present * GitHub Action: Apply Pep8-formatting * Add start of icontools runscript to logger --------- Co-authored-by: github-actions * Add icon-art-global-test (#41) * Add config.yaml and modify icon_runjob * Change variables to scratch input files * Further modify variable names * GitHub Action: Apply Pep8-formatting * Fix restart file and disable create_oh_for_restart() * GitHub Action: Apply Pep8-formatting * Full log from runscript --------- Co-authored-by: github-actions * GitHub Pages (#44) * Initial setup * Deploy only rc branch * Modify docs.yml * New preview action * Cleanup * GitHub Action: Apply Pep8-formatting * Remove PSphinxTheme * Deploy preview for PR 43 🛫 * Fix docs.yml * Remove pr-preview * Remove autodoc * GitHub Action: Apply Pep8-formatting * Select correct branch * Remvoe autofunctions * Formatting --------- Co-authored-by: github-actions Co-authored-by: mjaehn * Update docs.yml * Add resume option and update docstrings in run_chain.py (#42) * Add resume option * GitHub Action: Apply Pep8-formatting * Add and modify docstrings in run_chain.py * Change some wording --------- Co-authored-by: github-actions * Update README (#45) * Remove readthedocs yaml file * Update README * Fix link * Deploy docs to latest and tags (#47) * Deploy docs to latest and tags * Fix syntax error * Edit intro text * Reduce toc depth * Edit file structure * Futher modify file structure * Add environment section and move file structure * Add environment info * Format note * Add features * Add logo to README * Shorten title * Add logo to docs * Fix logo * Add favicon * Use small logo for docs * Add features * Update README.md * Update README * Add 'v' to version * Update README * Work on how-to-run * Add autodoc * Add syspath * GitHub Action: Apply Pep8-formatting * Add more paths * Test * Small fixes * Enable local html build * Add html baseurl * Remove baseurl * Install conda env before building docs * Fix for pr-preview * Update docs-pr-preview.yml * Update docs-pr-preview.yml * Update docs-pr-preview.yml * Update docs-pr-preview.yml * Adapt requirements files * Fix requirement file * Update gitignore * Remove python version * Remove shell env * Unify docs actions * Fix listing and remove autofunction * Add autofunctinos * Show command-line arguments * Add autofunctions * Update file structure * Fix indentation * Another small fix * Add lines * Rename src to externals * Add test cases section * Fix tree formatting * Remove obsolte file * Revise code structure * Update index for code structure * Add general table * Add more examples * Correct heading size * Fix typo * Add info for variables in namelist templates * List dict variables and job occurences * GitHub Action: Apply Pep8-formatting * Fix table * Edit namelist section * Fix colons * Fix autofunctions * Fix table * Settings for autofunctions * GitHub Action: Apply Pep8-formatting * Settings for autofunctions * Settings for toctree * Revert last commit * Add variable information * Fix table * Fix typo * Minor corrections * Minor corrections * Update jobs * Sort imports alphabetically * Update docstring for biofluxes * Rename externals -> ext * Update docstring for biofluxes * Update docstring for check_output * Update docstring for cosmo * Update docstring for emissions * Remove headers * Update docstring for icon * Update docstring for int2lm * Update docstring for obs_nudging and octe * Remove headers * Update docstring for oem * Update docstring for online_vprm * Update docstring for photo_rate * Update docstring for post_cosmo * Update docstring for post_int2lm * Update docstring for prepare_date * Update docstring for reduce_output * Update docstring for verify_chain * Change src to ext directory in scripts and config files * Add tools * Add autofunctions * Fix formatting * Fix formatting * Remove non-existing tool functions * Fix tool function * Change structure * Fix functions * restructuring * Unify docstrings * Fix directory structure formatting * Update README.md * Remove variant from config file and docs --------- Co-authored-by: github-actions Co-authored-by: mjaehn --- .github/workflows/docs-latest.yml | 8 +- .github/workflows/docs-pr-preview.yml | 6 +- .github/workflows/docs-tag.yml | 9 +- .gitignore | 2 + README.md | 75 +-- cases/cosmo-ghg-spinup-test/config.yaml | 5 +- cases/cosmo-ghg-test/config.yaml | 4 +- cases/icon-art-global-test/config.py | 108 ---- cases/icon-art-global-test/config.yaml | 2 +- cases/icon-art-oem-test/config.yaml | 2 +- .../icontools_remap_00_lbc_runjob.cfg | 2 +- .../icontools_remap_ic_chem_runjob.cfg | 2 +- .../icontools_remap_ic_runjob.cfg | 2 +- .../icontools_remap_lbc_chem_runjob.cfg | 2 +- .../icontools_remap_lbc_rest_runjob.cfg | 2 +- cases/icon-test/config.yaml | 2 +- .../icontools_remap_00_lbc_runjob.cfg | 2 +- cases/icon-test/icontools_remap_ic_runjob.cfg | 2 +- .../icontools_remap_lbc_rest_runjob.cfg | 2 +- docs/Makefile | 21 + docs/_static/processing-chain-favicon.ico | Bin 0 -> 4286 bytes docs/_static/processing-chain-logo-notext.png | Bin 0 -> 309323 bytes docs/_static/processing-chain-logo-small.png | Bin 0 -> 104518 bytes docs/_static/processing-chain-logo.png | Bin 0 -> 355929 bytes docs/code-structure.rst | 53 ++ docs/conf.py | 22 +- docs/config.rst | 508 +++++++----------- docs/environment.rst | 62 +++ docs/features.rst | 14 + docs/file-structure.rst | 32 -- docs/functions.rst | 145 +++++ docs/howtorun.rst | 299 +++++++---- docs/index.rst | 26 +- docs/jobs.rst | 76 +-- docs/namelists.rst | 35 +- docs/requirements.txt | 17 +- docs/tools.rst | 14 - env/environment.yml | 5 +- {src => ext}/.gitkeep | 0 jenkins/Jenkinsfile | 10 +- jenkins/scripts/build_cosmo-ghg.sh | 2 +- jenkins/scripts/build_icon-art.sh | 2 +- jenkins/scripts/build_icon.sh | 2 +- jenkins/scripts/build_int2lm.sh | 2 +- jenkins/scripts/jenkins.sh | 12 +- jenkins/scripts/setup-spack.sh | 4 +- jobs/__init__.py | 23 +- jobs/biofluxes.py | 29 +- jobs/check_output.py | 32 +- jobs/cosmo.py | 38 +- jobs/emissions.py | 35 +- jobs/icon.py | 40 +- jobs/int2lm.py | 38 +- jobs/obs_nudging.py | 8 +- jobs/octe.py | 16 +- jobs/oem.py | 18 +- jobs/online_vprm.py | 16 +- jobs/photo_rate.py | 18 +- jobs/post_cosmo.py | 12 +- jobs/post_int2lm.py | 6 +- jobs/prepare_data.py | 78 +-- jobs/reduce_output.py | 19 +- jobs/tools/__init__.py | 4 +- jobs/tools/check_model.py | 3 +- jobs/tools/write_cosmo_input_ghg.py | 2 + jobs/verify_chain.py | 40 +- 66 files changed, 1044 insertions(+), 1033 deletions(-) delete mode 100644 cases/icon-art-global-test/config.py create mode 100644 docs/Makefile create mode 100644 docs/_static/processing-chain-favicon.ico create mode 100644 docs/_static/processing-chain-logo-notext.png create mode 100644 docs/_static/processing-chain-logo-small.png create mode 100644 docs/_static/processing-chain-logo.png create mode 100644 docs/code-structure.rst create mode 100644 docs/environment.rst create mode 100644 docs/features.rst delete mode 100644 docs/file-structure.rst create mode 100644 docs/functions.rst delete mode 100644 docs/tools.rst rename {src => ext}/.gitkeep (100%) diff --git a/.github/workflows/docs-latest.yml b/.github/workflows/docs-latest.yml index 969a3f7e..0f48bfca 100644 --- a/.github/workflows/docs-latest.yml +++ b/.github/workflows/docs-latest.yml @@ -8,18 +8,20 @@ on: - main jobs: - deploy-docs: + deploy-docs-latest: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 + - name: Build docs uses: C2SM/sphinx-action@sphinx-latest with: - pre-build-command: "pip install sphinx_rtd_theme && pip install sphinx-copybutton" build-command: "sphinx-build -b html . _build" docs-folder: "docs/" - - uses: peaceiris/actions-gh-pages@v3 + + - name: Deploy on GitHub Pages + uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./docs/_build diff --git a/.github/workflows/docs-pr-preview.yml b/.github/workflows/docs-pr-preview.yml index 9d1ee4c1..d578a6d7 100644 --- a/.github/workflows/docs-pr-preview.yml +++ b/.github/workflows/docs-pr-preview.yml @@ -1,7 +1,9 @@ -name: Deploy PR previews +name: Build and Deploy Documentation to PR Previews on: pull_request: + paths: + - 'docs/**' types: - opened - reopened @@ -16,10 +18,10 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 + - name: Build docs uses: C2SM/sphinx-action@sphinx-latest with: - pre-build-command: "pip install sphinx_rtd_theme && pip install sphinx-copybutton" build-command: "sphinx-build -b html . _build" docs-folder: "docs/" diff --git a/.github/workflows/docs-tag.yml b/.github/workflows/docs-tag.yml index e3a4c433..90772a63 100644 --- a/.github/workflows/docs-tag.yml +++ b/.github/workflows/docs-tag.yml @@ -6,23 +6,26 @@ on: - '*' jobs: - deploy-docs: + deploy-docs-tag: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 + - name: Get release id: get_release uses: bruceadams/get-release@v1.3.2 env: GITHUB_TOKEN: ${{ github.token }} + - name: Build docs uses: C2SM/sphinx-action@sphinx-latest with: - pre-build-command: "pip install sphinx_rtd_theme && pip install sphinx-copybutton" build-command: "sphinx-build -b html . _build" docs-folder: "docs/" - - uses: peaceiris/actions-gh-pages@v3 + + - name: Deploy on GitHub Pages + uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./docs/_build diff --git a/.gitignore b/.gitignore index 2838e4a4..efb2d3f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ docs/build/ +docs/_build/ *__pycache__/ *.pyc fieldextra.diagnostic @@ -8,3 +9,4 @@ output/ work/ src/*/ *.code-workspace +.vscode/ \ No newline at end of file diff --git a/README.md b/README.md index d8f8099e..09ff995b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Processing Chain for COSMO and ICON Simulations +# Processing Chain Processing Chain The Processing Chain is a python script that prepares necessary input data, submits compute-jobs to the queue on Piz Daint and does @@ -9,71 +9,19 @@ e.g., by creating your own case or adding new jobs. ## Environment Setup -The following steps allow you to create and use your own virtual -environment to run the Processing Chain. We recommend to use a conda -environment for the usage of the provided scripts. Please follow the -instruction for the installation. The following steps only need to be -performed once. - -### 1\. Install Miniconda - -Install as user specific Miniconda, e.g. on your `$HOME` directory, -which is the default location. - -> **Note**: Only conda itself should be installed in your `$HOME`. -> All environments should be stored in your `$PROJECT` directory, -> otherwise you risk filling up your `$HOME` directory. See below for instructions. - -To install the latest Miniconda, type: - - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh - bash Miniconda3-latest-Linux-x86_64.sh - -Further deails on Miniconda can be found on the [Miniconda documentation page](https://docs.conda.io/en/latest/miniconda.html). - -### 2\. Create the Conda Environment - -Create a conda environment `proc-chain` with and install requirements: - - conda env create --prefix $PROJECT/envs/proc-chain -f env/environment.yml - -To be able to activate your conda environment by simply using `conda activate proc-chain` instead of the full path, add the following to your `.bashrc`: - - export CONDA_ENVS_PATH=$PROJECT/envs - -Activate the environment (use "source activate" in case "conda activate" -does not work): - - conda activate proc-chain - -If you already have the environment but want to update it: - - conda env update --file env/environment.yml --prune - -### 3\. Store user-specific data - -To register your email address and standard project account, store them into -these files within your home directory: - - echo > ~/.acct - echo > ~/.forward - -These settings are optional. The Processing Chain will first check the content -of those files. If desired, the corresponding variables can be overridden by setting -the `compute_account` and `user_mail` variables in the `config.yaml` file. +To setup your conda environment for the Processing Chain, please refer +to the part in the [official documentation](https://c2sm.github.io/processing-chain/latest/environment.html). ## Run the Chain -Once everything has been set up correctly according to the above steps, -you just need to execute the following command to activate your -environment (if not done already): +To activate your conda environment, type: conda activate proc-chain To test if your environment has been successfully set, use the command line help to display the available arguments for the main script: - python run_chain.py -h + ./run_chain.py -h To run the test cases with their standard jobs, please ensure that you clone the Processing Chain to `$SCRATCH`, as input and @@ -89,9 +37,8 @@ For these pre-defined test cases, you can use the Jenkins script ./jenkins/scripts/jenkins.sh -This script calls other scripts that are located in `jenkins/scripts/`. -They will -- activate the conda environment (if not done already) +This script calls other scripts that are located in `jenkins/scripts/` and will: +- activate the conda environment - setup spack-c2sm - download input data to `input/` - build `int2lm`, `cosmo-ghg`, `icon` and `icon-art` @@ -104,16 +51,14 @@ They will To run the test cases manually, type: -```bash # replace with one of the above tests - python run_chain.py -``` + ./run_chain.py ## Documentation For more information about the file structure, configuration options, -namelist templates etc., please read the official -[documentation](https://c2sm.github.io/processing-chain/). +namelist templates etc., please read the [official +documentation](https://c2sm.github.io/processing-chain/latest/). ## Contributing diff --git a/cases/cosmo-ghg-spinup-test/config.yaml b/cases/cosmo-ghg-spinup-test/config.yaml index 2351b766..6bd84d1a 100644 --- a/cases/cosmo-ghg-spinup-test/config.yaml +++ b/cases/cosmo-ghg-spinup-test/config.yaml @@ -4,7 +4,6 @@ model: cosmo-ghg constraint: gpu ntasks_per_node: 12 restart_step: PT6H -variant: spinup spinup: 3 startdate: 2015-01-01T00:00:00Z enddate: 2015-01-01T18:00:00Z @@ -47,7 +46,7 @@ online_vprm: int2lm: extpar_dir: ./input/cosmo-ghg/extpar extpar_filename: test_domain.nc - binary_file: ./src/int2lm/test/testsuite/int2lm + binary_file: ./ext/int2lm/test/testsuite/int2lm namelist_filename: int2lm_INPUT.cfg runjob_filename: int2lm_runjob.cfg compute_queue: normal @@ -69,7 +68,7 @@ post_int2lm: - CO2_A2 cosmo: - binary_file: ./src/cosmo-ghg/cosmo/ACC/cosmo_gpu + binary_file: ./ext/cosmo-ghg/cosmo/ACC/cosmo_gpu namelist_prefix: cosmo_INPUT_ runjob_filename: cosmo_runjob.cfg compute_queue: normal diff --git a/cases/cosmo-ghg-test/config.yaml b/cases/cosmo-ghg-test/config.yaml index dc1134e9..15d03ed5 100644 --- a/cases/cosmo-ghg-test/config.yaml +++ b/cases/cosmo-ghg-test/config.yaml @@ -45,7 +45,7 @@ online_vprm: int2lm: extpar_dir: ./input/cosmo-ghg/extpar extpar_filename: test_domain.nc - binary_file: ./src/int2lm/test/testsuite/int2lm + binary_file: ./ext/int2lm/test/testsuite/int2lm namelist_filename: int2lm_INPUT.cfg runjob_filename: int2lm_runjob.cfg compute_queue: normal @@ -67,7 +67,7 @@ post_int2lm: - CO2_A2 cosmo: - binary_file: ./src/cosmo-ghg/cosmo/ACC/cosmo_gpu + binary_file: ./ext/cosmo-ghg/cosmo/ACC/cosmo_gpu namelist_prefix: cosmo_INPUT_ runjob_filename: cosmo_runjob.cfg compute_queue: normal diff --git a/cases/icon-art-global-test/config.py b/cases/icon-art-global-test/config.py deleted file mode 100644 index 5c7e98e7..00000000 --- a/cases/icon-art-global-test/config.py +++ /dev/null @@ -1,108 +0,0 @@ -import os -""" -Configuration file for the 'icon-art-global' case with ICON-ART -""" - -# GENERAL SETTINGS =========================================================== -user = os.environ['USER'] -if user == 'jenkins': - compute_account = 'g110' -elif os.path.exists(os.environ['HOME'] + '/.acct'): - with open(os.environ['HOME'] + '/.acct', 'r') as file: - compute_account = file.read().rstrip() -else: - compute_account = os.popen("id -gn").read().splitlines()[0] -compute_host = 'daint' -compute_queue = 'normal' -constraint = 'gpu' # 'mc' - -model = 'icon-art-global' -restart_step = 24 # hours - -# Number of tasks per node -ntasks_per_node = 36 if constraint == 'mc' else 12 - -# Case name = pathname in cases/ -casename = os.path.basename(os.path.dirname(os.path.realpath(__file__))) - -# Root directory of the sourcecode of the chain (where run_chain.py is) -chain_src_dir = os.getcwd() - -# Root directory of the working space of the chain -work_root = os.path.join(chain_src_dir, 'work') - -# Case directory -case_dir = os.path.join(chain_src_dir, 'cases', casename) - -# ----------------------------------------------------------- -# SIMULATION -# ----------------------------------------------------------- - -# Executable -icon_bin = os.path.join(chain_src_dir, 'src', 'icon-art', 'bin', 'icon') - -# eccodes -eccodes_dir = os.path.join(chain_src_dir, 'input', 'eccodes_definitions') - -# Paths for namelists and slurm runscript templates -# icon_runjob = os.path.join(case_dir, 'icon_runjob_withoutart.cfg') -icon_runjob = os.path.join(case_dir, 'icon_runjob.cfg') -icon_era5_inijob = os.path.join(case_dir, 'icon_era5_inicond.sh') -icon_era5_nudgingjob = os.path.join(case_dir, 'icon_era5_nudging.sh') -icon_species_inijob = os.path.join(case_dir, 'icon_species_inicond.sh') -icon_species_nudgingjob = os.path.join(case_dir, 'icon_species_nudging.sh') - -# Number of hours between two output data -output_writing_step = 12 # TO MODIFY - -# Initial conditios -era5_inicond = False # TO MODIFY -species_inicond = True -species2restart = ['TROH'] - -# Nudging (meteorological and tracers) -era5_global_nudging = False -species_global_nudging = False -species2nudge = [] -nudging_step = 12 - -# Walltimes and domain decomposition -if compute_queue == "normal": - icon_walltime = "00:30:00" - icon_np_tot = 2 -elif compute_queue == "debug": - icon_walltime = "00:30:00" - icon_np_tot = 2 - -# ----------------------------------------------------------- -# INPUT DATA -# ----------------------------------------------------------- -# ART settings----------------------------------------------- -input_root = os.path.join(chain_src_dir, 'input', model) -art_input_folder = os.path.join(input_root, 'art') - -input_files = { - 'inicond_filename': ['era2icon_R2B03_2022060200.nc', 'icbc'], - 'map_file_nudging': ['map_file.nudging', 'icbc'], - 'dynamics_grid_filename': ["iconR2B03-DOM01.nc", 'grid'], - 'radiation_grid_filename': ["iconR2B03-DOM01.nc", 'grid'], - 'extpar_filename': ["extpar_iconR2B03-DOM01.nc", 'grid'], - 'cldopt_filename': ['ECHAM6_CldOptProps.nc', 'rad'], - 'lrtm_filename': ['rrtmg_lw.nc', 'rad'], - 'oh_molec_filename': ['oh_gcp2022_icongrid.nc', 'chemistry'], - 'pntSrc_xml_filename': ['point-sources.xml', 'config'], - 'chemtracer_xml_filename': ['tracers.xml', 'config'], -} - -# ----------------------------------------------------------- -# Additional settings derived from constants -# ----------------------------------------------------------- - -# Nudge type (global or nothing) -nudge_type = 2 if era5_global_nudging else 0 - -# Time step for global nudging in seconds -nudging_step_seconds = nudging_step * 3600 - -# Prescribed initial conditions for CH4, CO and/or OH -iart_init_gas = 4 if species_inicond else 0 diff --git a/cases/icon-art-global-test/config.yaml b/cases/icon-art-global-test/config.yaml index 2344a8df..384c51f9 100644 --- a/cases/icon-art-global-test/config.yaml +++ b/cases/icon-art-global-test/config.yaml @@ -59,7 +59,7 @@ input_files: pntSrc_xml_filename: ./input/icon-art-global/config/point-sources.xml icon: - binary_file: ./src/icon-art/bin/icon + binary_file: ./ext/icon-art/bin/icon runjob_filename: icon_runjob.cfg era5_inijob: icon_era5_inicond.sh era5_nudgingjob: icon_era5_nudging.sh diff --git a/cases/icon-art-oem-test/config.yaml b/cases/icon-art-oem-test/config.yaml index 5a3d8511..cbc950ac 100644 --- a/cases/icon-art-oem-test/config.yaml +++ b/cases/icon-art-oem-test/config.yaml @@ -60,7 +60,7 @@ input_files: oem_monthofyear_nc: ./input/icon-art-oem/OEM/monthofyear.nc icon: - binary_file: ./src/icon-art/bin/icon + binary_file: ./ext/icon-art/bin/icon runjob_filename: icon_runjob.cfg compute_queue: normal walltime: '00:10:00' diff --git a/cases/icon-art-oem-test/icontools_remap_00_lbc_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_00_lbc_runjob.cfg index f81d9bdd..a93ac550 100644 --- a/cases/icon-art-oem-test/icontools_remap_00_lbc_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_00_lbc_runjob.cfg @@ -17,7 +17,7 @@ set -x export ECCODES_DEFINITION_PATH={cfg.eccodes_dir}/definitions.edzw-2.12.5-2:{cfg.eccodes_dir}/definitions -. {cfg.chain_src_dir}/src/spack-c2sm/setup-env.sh +. {cfg.chain_src_dir}/ext/spack-c2sm/setup-env.sh spack load icontools #----------------------------------------------------------------------------- diff --git a/cases/icon-art-oem-test/icontools_remap_ic_chem_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_ic_chem_runjob.cfg index 4d80d10c..46ed8187 100644 --- a/cases/icon-art-oem-test/icontools_remap_ic_chem_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_ic_chem_runjob.cfg @@ -17,7 +17,7 @@ set -e -x export ECCODES_DEFINITION_PATH={cfg.eccodes_dir}/definitions.edzw-2.12.5-2:{cfg.eccodes_dir}/definitions -. {cfg.chain_src_dir}/src/spack-c2sm/setup-env.sh +. {cfg.chain_src_dir}/ext/spack-c2sm/setup-env.sh spack load icontools #----------------------------------------------------------------------------- diff --git a/cases/icon-art-oem-test/icontools_remap_ic_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_ic_runjob.cfg index 7cfdb530..e31b9eb5 100644 --- a/cases/icon-art-oem-test/icontools_remap_ic_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_ic_runjob.cfg @@ -17,7 +17,7 @@ set -x export ECCODES_DEFINITION_PATH={cfg.eccodes_dir}/definitions.edzw-2.12.5-2:{cfg.eccodes_dir}/definitions -. {cfg.chain_src_dir}/src/spack-c2sm/setup-env.sh +. {cfg.chain_src_dir}/ext/spack-c2sm/setup-env.sh spack load icontools #----------------------------------------------------------------------------- diff --git a/cases/icon-art-oem-test/icontools_remap_lbc_chem_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_lbc_chem_runjob.cfg index be948240..2d21fe35 100644 --- a/cases/icon-art-oem-test/icontools_remap_lbc_chem_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_lbc_chem_runjob.cfg @@ -17,7 +17,7 @@ set -e -x export ECCODES_DEFINITION_PATH={cfg.eccodes_dir}/definitions.edzw-2.12.5-2:{cfg.eccodes_dir}/definitions -. {cfg.chain_src_dir}/src/spack-c2sm/setup-env.sh +. {cfg.chain_src_dir}/ext/spack-c2sm/setup-env.sh spack load icontools #----------------------------------------------------------------------------- diff --git a/cases/icon-art-oem-test/icontools_remap_lbc_rest_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_lbc_rest_runjob.cfg index 3bc183c3..b0950efa 100644 --- a/cases/icon-art-oem-test/icontools_remap_lbc_rest_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_lbc_rest_runjob.cfg @@ -17,7 +17,7 @@ set -x export ECCODES_DEFINITION_PATH={cfg.eccodes_dir}/definitions.edzw-2.12.5-2:{cfg.eccodes_dir}/definitions -. {cfg.chain_src_dir}/src/spack-c2sm/setup-env.sh +. {cfg.chain_src_dir}/ext/spack-c2sm/setup-env.sh spack load icontools #----------------------------------------------------------------------------- diff --git a/cases/icon-test/config.yaml b/cases/icon-test/config.yaml index e1d58782..722a2844 100644 --- a/cases/icon-test/config.yaml +++ b/cases/icon-test/config.yaml @@ -41,7 +41,7 @@ input_files: map_file_ana: ./input/icon/mapping/map_file.ana icon: - binary_file: ./src/icon/bin/icon + binary_file: ./ext/icon/bin/icon runjob_filename: icon_runjob.cfg compute_queue: normal walltime: '00:10:00' diff --git a/cases/icon-test/icontools_remap_00_lbc_runjob.cfg b/cases/icon-test/icontools_remap_00_lbc_runjob.cfg index f81d9bdd..a93ac550 100755 --- a/cases/icon-test/icontools_remap_00_lbc_runjob.cfg +++ b/cases/icon-test/icontools_remap_00_lbc_runjob.cfg @@ -17,7 +17,7 @@ set -x export ECCODES_DEFINITION_PATH={cfg.eccodes_dir}/definitions.edzw-2.12.5-2:{cfg.eccodes_dir}/definitions -. {cfg.chain_src_dir}/src/spack-c2sm/setup-env.sh +. {cfg.chain_src_dir}/ext/spack-c2sm/setup-env.sh spack load icontools #----------------------------------------------------------------------------- diff --git a/cases/icon-test/icontools_remap_ic_runjob.cfg b/cases/icon-test/icontools_remap_ic_runjob.cfg index 7cfdb530..e31b9eb5 100755 --- a/cases/icon-test/icontools_remap_ic_runjob.cfg +++ b/cases/icon-test/icontools_remap_ic_runjob.cfg @@ -17,7 +17,7 @@ set -x export ECCODES_DEFINITION_PATH={cfg.eccodes_dir}/definitions.edzw-2.12.5-2:{cfg.eccodes_dir}/definitions -. {cfg.chain_src_dir}/src/spack-c2sm/setup-env.sh +. {cfg.chain_src_dir}/ext/spack-c2sm/setup-env.sh spack load icontools #----------------------------------------------------------------------------- diff --git a/cases/icon-test/icontools_remap_lbc_rest_runjob.cfg b/cases/icon-test/icontools_remap_lbc_rest_runjob.cfg index 3bc183c3..b0950efa 100755 --- a/cases/icon-test/icontools_remap_lbc_rest_runjob.cfg +++ b/cases/icon-test/icontools_remap_lbc_rest_runjob.cfg @@ -17,7 +17,7 @@ set -x export ECCODES_DEFINITION_PATH={cfg.eccodes_dir}/definitions.edzw-2.12.5-2:{cfg.eccodes_dir}/definitions -. {cfg.chain_src_dir}/src/spack-c2sm/setup-env.sh +. {cfg.chain_src_dir}/ext/spack-c2sm/setup-env.sh spack load icontools #----------------------------------------------------------------------------- diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 00000000..8ec08ace --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,21 @@ +# Makefile for Sphinx documentation + +SPHINXOPTS = -c ./ +SPHINXBUILD = sphinx-build +SOURCEDIR = . +BUILDDIR = build + +.PHONY: help clean html + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(SPHINXOPTS) $(SOURCEDIR) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + diff --git a/docs/_static/processing-chain-favicon.ico b/docs/_static/processing-chain-favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..95d31d5d0d868fae943bbc54c31474337afeba33 GIT binary patch literal 4286 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 a6YKI>M1qBU0yX7^MtcfvxfIa$EB*&H1V9@A literal 0 HcmV?d00001 diff --git a/docs/_static/processing-chain-logo-notext.png b/docs/_static/processing-chain-logo-notext.png new file mode 100644 index 0000000000000000000000000000000000000000..9f870bf7c1ff55a95b811fdb853f8f870decf2e5 GIT binary patch literal 309323 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%0AN9ab#=C*Z@IkXBoV-)K$IT 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/_static/processing-chain-logo-small.png b/docs/_static/processing-chain-logo-small.png new file mode 100644 index 0000000000000000000000000000000000000000..dc81a8588675f6047d79840ba56ea984620f7bf3 GIT binary patch literal 104518 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 vS;d| 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 z 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뼓)sg@HfBt>wfp#xBP{t&s8}1STK{{ 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

_QSW{ievYjz=?bAfviWK?TGQyVU8r8bDS#h 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 S7#b>Zoa^>C>=>APiT?p!0vyu- literal 0 HcmV?d00001 diff --git a/docs/code-structure.rst b/docs/code-structure.rst new file mode 100644 index 00000000..5c17f167 --- /dev/null +++ b/docs/code-structure.rst @@ -0,0 +1,53 @@ +.. _code-structure-section: + +Code Structure +-------------- + +The Processing Chain code is structured as follows:: + + $ tree -L 3 -F --dirsfirst + . + ├── cases/ # folder where all cases are stored + │ ├── cosmo-ghg-spinup-test/ # COSMO-GHG test case with spinup restart + │ │ ├── config.yaml # case configuration file + │ │ ├── *.cfg # templates for namelists & batch jobs + │ │ └── *.csv # CSV files with tracer information + │ ├── cosmo-ghg-test/ # COSMO-GHG testcase with standard restart + │ │ ├── config.yaml + │ │ ├── *.cfg + │ │ └── *.csv + │ ├── icon-art-global-test/ # ICON-ART test case (global domain) + │ │ ├── config.yaml + │ │ ├── icon_runjob.cfg # template for ICON-ART runjob + │ │ ├── *.sh # pre-processing scripts + │ │ └── mypartab + │ ├── icon-art-oem-test/ # ICON-ART test case with online emissions + │ │ ├── config.yaml + │ │ └── *.cfg + │ └── icon-test/ # ICON test case + │ ├── config.yaml + │ └── *.cfg + ├── config/ + │ └── models.yaml # file to store model features and default jobs + ├── docs/ # folder for Sphinx documentation + │ ├── _static/ # folder for static assets + │ │ ├── custom.css # custom CSS styles + │ │ └── *.png|ico # additional image assets + │ ├── tables/ # folder for tables used in documentation + │ │ └── *.csv # CSV files containing table data + │ ├── conf.py # configuration file for the Sphinx builder + │ └── *.rst # documentation files (reStructuredText) + ├── env/ + │ └── environment.yml # conda environment file + ├── externals/ # folder for other code (spack, models, etc.) + ├── jenkins/ # automated Jenkins testing + │ ├── scripts/ + │ │ └── *.sh # individual Shell scripts for testing + │ └── Jenkinsfile # text file containing the Jenkins pipeline + ├── jobs/ + │ ├── tools/ + │ │ └── *.py # tool scripts + │ └── *.py # job scripts + ├── LICENSE # license file + ├── README.md # README file + └── run_chain.py # main script diff --git a/docs/conf.py b/docs/conf.py index 98475ac5..3fbf359c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,11 +12,17 @@ import os import sys +sys.path.insert(0, os.path.abspath('..')) # Root directory +sys.path.insert(0, os.path.abspath('../jobs')) # Jobs subfolder +sys.path.insert(0, os.path.abspath('../jobs/tools')) # Tools subfolder + # -- Project information ------------------------------------------------ project = 'Processing Chain' copyright = '2018-2023, C2SM' author = 'Processing Chain Administrators' +version = 'v3.1' +release = 'v3.1' # -- General configuration ------------------------------------------------ @@ -24,11 +30,15 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autosectionlabel', 'sphinx.ext.todo', 'sphinx_rtd_theme', - 'sphinx_copybutton', 'sphinx.ext.mathjax', 'sphinx.ext.ifconfig', - 'sphinx.ext.viewcode', 'sphinx.ext.napoleon' + 'sphinx.ext.autodoc', 'sphinx.ext.autosectionlabel', 'sphinx.ext.todo', + 'sphinx_rtd_theme', 'sphinx_copybutton', 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode', 'sphinx.ext.napoleon' ] +# autodoc options +autodoc_member_order = 'bysource' +toc_object_entries_show_parents = 'all' + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -55,8 +65,10 @@ # further. For a list of options available for each theme, see the # documentation. # +html_logo = '_static/processing-chain-logo-small.png' +html_favicon = '_static/processing-chain-favicon.ico' html_theme_options = { - 'logo_only': False, + 'logo_only': True, 'display_version': True, 'prev_next_buttons_location': 'bottom', 'style_external_links': False, @@ -65,7 +77,7 @@ # Toc options 'collapse_navigation': False, 'sticky_navigation': True, - 'navigation_depth': 4, + 'navigation_depth': 2, 'includehidden': True, 'titles_only': False } diff --git a/docs/config.rst b/docs/config.rst index ecfdb124..55180d58 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -1,333 +1,203 @@ .. _config-section: -The processing chain uses cases to describe a simulation. A case is a -subdirectory in ``cases/``, containing a :ref:`config.py` and several -:ref:`namelists` (for example ``int2lm_INPUT.cfg``) which define the -simulation. +The Processing Chain uses cases to describe a simulation. A case is a +subdirectory in ``cases/``, containing a ``config.yaml`` and several +`namelists` (e.g., ``int2lm_INPUT.cfg``) and `runscripts` (e.g., +``icon_runjob.cfg``) which define the simulation. -.. _config.py: +.. _config.yaml: Configuration File ------------------ -The configuration file contains most of the information that the :ref:`jobs-section` need to prepare and run the simulation, for example the location of the input data. +The configuration file contains most of the information that the :ref:`jobs` need to prepare and run the simulation, for example the location of the input data. This configuration-file is imported as a module in ``run_chain.py``, and therefore it can contain python expression which are evaluated at runtime. -.. - Creating these tables by hand is a pain. Use the script/csv in the tables/ director - -| - -General Variables in ``config.py`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| **Name** | **Description** | **Used in** | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``target`` | **COSMO** or **COSMOART**, defaults to **COSMO** if omitted | all | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``subtarget`` | **NONE** or **SPINUP**, defaults to **NONE** if omitted | all | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``constraint`` | Either 'gpu' or 'mc'. Controls on which nodes int2lm and cosmo run. Make sure your executables are compiled for the chosen architecure. | :func:`jobs.cosmo.main`, :func:`jobs.icon.main`, :func:`jobs.int2lm.main` | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``mail_address`` | The processing-chain sends encountered errors to this address | :func:`jobs.tools.__init__.send_mail` | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``compute_host`` | On which infrastructure the processing chain is run. Usually 'daint' | :func:`jobs.post_cosmo.main`, :func:`jobs.icon.main`, :func:`jobs.reduce_output.main` | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``compute_queue`` | Either 'debug' or 'normal' | :func:`jobs.int2lm.main`, :func:`jobs.cosmo.main`, :func:`jobs.icon.main` | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``compute_account`` | Which project the simulation belongs to | :func:`jobs.int2lm.main`, :func:`jobs.cosmo.main`, :func:`jobs.icon.main` | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``chain_src_dir`` | Path to the root of the chain | all | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``casename`` | Name of the simulation, the same as the directory-name the ``config.py``-file is in | all | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``input_root`` | Path to zhe root of the input-direcetory tree | all | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``output_root`` | Path to where the results, logs and nameslists are copied to after the simulation is done | :func:`jobs.post_cosmo.main`, :func:`jobs.icon.main` | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ -| ``work_root`` | Path to where the processing chain copies the input files to and starts the simulation from | all | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ - -| - -Variables for :func:`jobs.biofluxes.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ -| **Name** | **Description** | **Target** | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ -| ``vprm_dir`` | Path to the directory containing bioflux-files | COSMO | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ -| ``vprm_prefix`` | Prefix of the the bioflux-files. Filenames are assumed to be ``{vprm_prefix}YYYYMMDDHH.nc``. If multiple bioflux-datasets exists, this is a list of prefixes. All files are assumed to be in ``vprm_dir`` | COSMO | -+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ - -| - -Variables for :func:`jobs.cosmo.main` +General Variables in ``run_chain.py`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| **Name** | **Description** | **Target** | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_bin`` | Path to the cosmo(art) executable | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_namelist`` | Path to the cosmo namelist-templates, ending in ``cosmo_INPUT_``. The ending, for example ``IO`` or ``ORG``, is added by the cosmo-job | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_runjob`` | Path to the cosmo runjob-template | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_walltime`` | Requested time for the cosmo slurm-batchjob | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_nodes`` | Number of nodes for the cosmo slurm-batchjob | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``ntasks_per_node`` | Number of tasks per node | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_np_x`` | Number of processes in the x direction | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_np_y`` | Number of processes in the y direction | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_np_io`` | Number of processes for IO | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``cosmo_np_tot`` | Total number of processes | COSMO, COSMO-ART | -+------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ - - -Variables for :func:`jobs.emissions.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| **Name** | **Description** | **Target** | -+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``emissions_dir`` | Path to the input directory where the emissions-files are found. If there are multiple emissions-datasets, this is a list of paths to the directories of the datasets. | COSMO, COSMO-ART | -+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``emis_gridname`` | Prefix of the emissions-files. List for multiple datasets. Emission-filenames are assumed to be ``{emis_gridname}YYYYMMDD.nc`` | COSMO, COSMO-ART | -+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ - -| - -Variables for :func:`jobs.icon.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| **Name** | **Description** | **Target** | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``icon_bin`` | Path to the ICON executable | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``icon_runjob`` | Path to the ICON runjob template | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``icon_namelist_master`` | Path to the ICON master namelist template | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``icon_namelist_nwp`` | Path to the ICON NWP namelist template | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``icon_walltime`` | Requested time for the ICON slurm-batchjob | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``icon_np_tot`` | Total number of processes | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``input_root_mapping`` | Path to the ICON dictionairy files | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``map_file_ana`` | Name of the ICON dictionary file for analysis data | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``latbc_filename`` | Name of the lateral boundary files (including key-words) for LAM-simulations | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ -| ``inidata_filename`` | Name of the intial condition file | ICON | -+------------------------------+--------------------------------------------------------------------------------------+--------------------+ - -| - -Variables for :func:`jobs.int2lm.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| **Name** | **Description** | **Target** | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``meteo_prefix`` | Prefix of the meteo-files. Meteo-filenames are assumed to be ``{meteo_prefix}YYMMDD`` | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_extpar_dir`` | Path to the directory containing the extpar-file for int2lm | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_extpar_file`` | The name of the int2lm extpar-file | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_bin`` | Path to the int2lm executable | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_namelist`` | Path to the int2lm namelist-template | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_runjob`` | Path to the int2lm runjob-template | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_walltime`` | Requested time for the int2lm slurm-batchjob | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_nodes`` | Number of nodes for the int2lm slurm-batchjob | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_ntasks_per_node`` | Number of tasks per node | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_np_x`` | Number of processes in the x direction | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_np_y`` | Number of processes in the y direction | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_np_tot`` | Total number of processes | COSMO, COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_libgrib_dir`` | Path to the libgrib-directory used by the int2lm-executable | COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_lu_dir`` | Path to the directory containing the landuse file | COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_lu_file`` | Filename (inlcuding ending) of the landuse file | COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_pft_dir`` | Path to the directory containing the plant functional type file | COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``int2lm_pft_dir`` | Filename (including ending) of the plant functional type file | COSMO-ART | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ -| ``post_int2lm_species`` | List of variables for the post_int2lm-job | COMSO | -+--------------------------------+-----------------------------------------------------------------------------------------------+--------------------------+ - -| - -Variables for :func:`jobs.prepare_data.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| **Name** | **Description** | **Target** | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``meteo_dir`` | Path to the directory where the meteo-files are found. For a nested run, this is the casename of the mother-run. In that case, ``meteo_prefix`` and ```meteo_inc`` can be omitted | COSMO, COSMO-ART, ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``meteo_prefix`` | Prefix of the meteo-files. Meteo-filenames are assumed to be ``{meteo_prefix}YYMMDD`` | COSMO, COSMO-ART, ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``meteo_nameformat`` | Format for meteo files | COSMO, COSMO-ART, ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``meteo_inc`` | Increment in hours between meteo-files | COSMO, COSMO-ART, ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``icontools_dir`` | Path to the icontools executables | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``iconremap_bin`` | Name of the iconremap executable | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``iconsub_bin`` | Name of the iconsub executable | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``icontools_parameter`` | Dictionary containing names of the icontools runscript and namelist templates | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``mozart_file_orig`` | Path to input-file for mozart-files | COSMO-ART | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``mozart_dir_proc`` | Path to the processed mozart-files. Processed mozart-files are stored here, if there are files found here then ``file_dir_orig`` is not used | COSMO-ART | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``mozart_inc`` | Increment in hours between mozart-files | COSMO-ART | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``mozart_prefix`` | Prefix of the mozart-files | COSMO-ART | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``cams_dir_orig`` | Path to input-directory for CAMS-files | COSMO | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``cams_dir_proc`` | Path to the processed CAMS-files. Processed CAMS-files are stored here, if there are files found here then ``cams_dir_orig`` is not used | COSMO | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``cams_parameters`` | Parameters for the processing of CAMS-data, more information in ``config.py`` of example case | COSMO | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``icontools_dir`` | Path to the icontools executables | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``iconremap_bin`` | Name of the iconremap executable | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``iconsub_bin`` | Name of the iconsub executable | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``icontools_parameter`` | Dictionary containing names of the icontools runscript and namelist templates | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``input_root_chem`` | Path to the chemical input files | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``chem_prefix`` | Prefix of the chemical input files | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``chem_nameformat`` | Name format of the chemical input files | ICON | -+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| - -Variables for :func:`jobs.oae.main` +This is a list of configuration variables used in the main script of the Processing Chain: + ++------------------------+------------------------------------------------------------------------+ +| Variable | Description | ++========================+========================================================================+ +| ``case_path`` | The path to the case directory under 'cases/' for the specified | +| | casename. | ++------------------------+------------------------------------------------------------------------+ +| ``casename`` | The name of the case. | ++------------------------+------------------------------------------------------------------------+ +| ``chain_src_dir`` | The source directory for the processing chain, typically the current | +| | working directory. | ++------------------------+------------------------------------------------------------------------+ +| ``compute_account`` | The compute account to be used based on user information. | ++------------------------+------------------------------------------------------------------------+ +| ``constraint`` | The computational constraint ('gpu' or 'mc'). | ++------------------------+------------------------------------------------------------------------+ +| ``convert_gas`` | Switch for unit conversion for 'reduce_output' job. | ++------------------------+------------------------------------------------------------------------+ +| ``cosmo_restart_in`` | The path to the COSMO model restart input directory. | ++------------------------+------------------------------------------------------------------------+ +| ``cosmo_restart_out`` | The path to the COSMO model restart output directory. | ++------------------------+------------------------------------------------------------------------+ +| ``email`` | The user's email address, initially set to None and updated using the | +| | set_email method. | ++------------------------+------------------------------------------------------------------------+ +| ``enddate`` | The end date of the simulation in ISO 8601 format | +| | (``YYYY-MM-DDTHH:mm:ssZ``). | ++------------------------+------------------------------------------------------------------------+ +| ``force`` | Boolean indicating whether to force the processing chain to redo all | +| | specified jobs. | ++------------------------+------------------------------------------------------------------------+ +| ``job_list`` | List of job-names to be executed. | ++------------------------+------------------------------------------------------------------------+ +| ``last_cosmo_output`` | The path to the last COSMO model output in spin-up simulations. | ++------------------------+------------------------------------------------------------------------+ +| ``log_finished_dir`` | The directory for finished log files. | ++------------------------+------------------------------------------------------------------------+ +| ``log_working_dir`` | The directory for working log files. | ++------------------------+------------------------------------------------------------------------+ +| ``model`` | The model used in the simulation. | ++------------------------+------------------------------------------------------------------------+ +| ``mpich_cuda`` | CUDA-related environment variables, set based on the configuration | +| | settings. | ++------------------------+------------------------------------------------------------------------+ +| ``ntry`` | Amount of time the COSMO job is re-tried before crashing. | ++------------------------+------------------------------------------------------------------------+ +| ``ntasks_per_node`` | The number of tasks per node, based on the node type. | ++------------------------+------------------------------------------------------------------------+ +| ``output_levels`` | Number of levels for output. | ++------------------------+------------------------------------------------------------------------+ +| ``restart_step`` | The restart step in ISO 8601 format. | ++------------------------+------------------------------------------------------------------------+ +| ``restart_step_hours`` | The restart step in hours, derived from the 'restart_step' attribute. | ++------------------------+------------------------------------------------------------------------+ +| ``resume`` | Boolean indicating whether to resume the processing chain by | +| | restarting the last unfinished job. | ++------------------------+------------------------------------------------------------------------+ +| ``run_on`` | The architecture the model runs on ('cpu' or 'gpu'). | ++------------------------+------------------------------------------------------------------------+ +| ``spinup`` | Spin-up duration in hours. | ++------------------------+------------------------------------------------------------------------+ +| ``startdate`` | The start date of the simulation in ISO 8601 format | +| | (``YYYY-MM-DDTHH:mm:ssZ``). | ++------------------------+------------------------------------------------------------------------+ +| ``user_mail`` | The user's email address, determined based on system configuration. | ++------------------------+------------------------------------------------------------------------+ +| ``user_name`` | The username of the current user, obtained from the 'USER' environment | +| | variable. | ++------------------------+------------------------------------------------------------------------+ +| ``work_root`` | The root directory for processing chain execution, typically located | +| | under the source directory. | ++------------------------+------------------------------------------------------------------------+ + + +Variables to Set in ``config.yaml`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ -| **Name** | **Description** | **Target** | -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ -| ``oae_dir`` | Path to where the online emission datasets are found | COMSO, ICON | -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ -| ``oae_gridded_emissions_nc`` | Name of the main emission netCDF file (online emissions) | COSMO, ICON | -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ -| ``oae_vertical_profiles_nc`` | Name of the netCDF file for vertical profile scaling (online emissions) | COMSO, ICON | -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ -| ``oae_hourofday_nc`` | Name of the netCDF file for 'hour of day' scaling (online emissions) | COSMO, ICON | -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ -| ``oae_hourofyear_nc`` | Name of the netCDF file for 'hour of year' scaling (online emissions) | COSMO, ICON | -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ -| ``oae_dayofweek_nc`` | Name of the netCDF file for 'day of week' scaling (online emissions) | COSMO, ICON | -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ -| ``oae_monthofyear_nc`` | Name of the netCDF file for 'month of year' scaling (online emissions) | COSMO, ICON | -+----------------------------------+---------------------------------------------------------------------------------+--------------------+ - -| - -Variables for :func:`jobs.obs_nudging.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| **Name** | **Description** | **Target** | -+------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``bs_nudging_dir`` | Path to where the nudging-datasets are found | COSMO, COSMO-ART | -+------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``obs_nudging_prefixes`` | List of prefixes of nuding-files to copy | COMSO, COSMO-ART | -+------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``obs_nudging_date_format`` | Date format of the nudging-files. If the obs-nudging-file is called ``cdfin_temp-20150204000000-20150205000000``, the dateformat is ``-%Y%m%d%H%M%S`` | COSMO, COSMO-ART | -+------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ - -| - -Variables for :func:`jobs.octe.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+------------------+-------------------------------------------------------------------------------------------------------------------------+--------------------+ -| **Name** | **Description** | **Target** | -+------------------+-------------------------------------------------------------------------------------------------------------------------+--------------------+ -| ``octe_lambdas`` | Path to the netCDF file containing the lambda values used for generating online carbontracker ensembles | COSMO | -+------------------+-------------------------------------------------------------------------------------------------------------------------+--------------------+ -| ``octe_maps`` | Path to the netCDF file containing the regional and pft-type maps for generating online carbontracker ensembles | COSMO | -+------------------+-------------------------------------------------------------------------------------------------------------------------+--------------------+ - -| - -Variables for :func:`jobs.online_vprm.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ -| **Name** | **Description** | **Target** | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ -| ``online_vprm_dir`` | Path to the directory containing netCDF files with pre-processed MODIS reflectance (``modis_filename``) and vegetation class fraction (``vegetation_filename``) data | COSMO | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ -| ``modis_filename`` | Name of the pre-processed MODIS netCDF file | COSMO | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ -| ``vegetation_filename`` | Name of the pre-processed vegetation class fraction netCDF file | COSMO | -+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+ - -| - -Variables for :func:`jobs.photo_rate.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-------------------------+------------------------------------------+--------------------+ -| **Name** | **Description** | **Target** | -+-------------------------+------------------------------------------+--------------------+ -| ``photo_rate_file`` | Path to the photolysis-rate file | COSMO-ART | -+-------------------------+------------------------------------------+--------------------+ - -| - -Variables for :func:`jobs.post_int2lm.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------+---------------------------------------------------+--------------------+ -| **Name** | **Description** | **Target** | -+-----------------------------+---------------------------------------------------+--------------------+ -| ``post_int2lm_species`` | List of variables for the post_int2lm-job | COSMO | -+-----------------------------+---------------------------------------------------+--------------------+ - -| - -Variables for :func:`jobs.reduce_output.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| **Name** | **Description** | **Target** | -+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``output_levels`` | Number of output levels (starting from ground level) for the ``reduce_output`` job, defaults to ``-1`` if omitted, which means that all levels are kept | COSMO, COSMO-ART | -+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ -| ``convert_gas`` | Switch to convert the unit of trace gases to ppm or ppb. This leads to a better compression rate. Defaults to ``True`` of omitted. | COSMO, COSMO-ART | -+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ - -| -Variables for :func:`jobs.verify_chain.main` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| **Name** | **Description** | **Target** | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``reference_dir`` | Path to the reference output | COSMO, COSMO-ART, ICON | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``output_dir`` | Path to the output of cosmo. If the :func:`jobs.post_cosmo.main` job is executed, this can be set to ``None`` and the path of the post_cosmo-job will be used | COSMO, COSMO-ART, ICON | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ -| ``values_to_check`` | Which files and variables are compared. This is a dict with a tuple of filenames as key. The first key element is the filename of the reference file, the second key element is the filename of the output-file of cosmo (usually ``lffdYYYYMMDDHH.nc`` and the value is a list of variables to compare between these two files) | COSMO, COSMO-ART, ICON | -+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+ +Here are two examples of which general variables should be set by the user in the +case configuration file. + +Header of ``config.yaml`` for the ``cosmo-ghg-spinup-test`` case +================================================================ + +:: + + model: cosmo-ghg + constraint: gpu + ntasks_per_node: 12 + restart_step: PT6H + spinup: 3 + startdate: 2015-01-01T00:00:00Z + enddate: 2015-01-01T18:00:00Z + +Header of ``config.yaml`` for the ``icon-art-oem-test`` case +============================================================ + +:: + + model: icon-art-oem + constraint: gpu + run_on: cpu + compute_queue: normal + ntasks_per_node: 12 + restart_step: PT6H + startdate: 2018-01-01T00:00:00Z + enddate: 2018-01-01T12:00:00Z + + eccodes_dir: ./input/eccodes_definitions + iconremap_bin: iconremap + iconsub_bin: iconsub + latbc_filename: ifs__lbc.nc + inidata_prefix: ifs_init_ + inidata_nameformat: '%Y%m%d%H' + inidata_filename_suffix: .nc + output_filename: icon-art-oem-test + filename_format: _DOM_ + lateral_boundary_grid_order: lateral_boundary + art_input_folder: ./input/icon-art-oem/ART + +Further variables +================= + +Furthermore, there are additional variables to set that are tied to the individual jobs. +These config variables themselves are dictionaries. Let's have a look at and example +for the the ``cfg.meteo`` variable:: + + meteo: + dir: ./input/cosmo-ghg/meteo + prefix: laf + nameformat: laf%Y%m%d%H + inc: 1 + +These config variables can be accessed via ``cfg.meteo['dir']``, ``cfg.meteo['prefix']``, etc. +as they are Python dictionaries. However, in :ref:`namelist and runscript template` files +(see next section), this accessing does not work because of how the ``.format()`` method is implemented +in Python. For that reason, the Processing Chain automatically creates new variables in the form of +``cfg.meteo_dir``, ``cfg.meteo_prefix``, etc. at the start to make them available for namelist +and runjob templates. + +List of dictionary variables +**************************** + +The following is a list of dictionary variables that exist for the Processing Chain. +For the individual elements of those variables, please refer to the ``config.yaml`` +files within the test cases. + ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| Dictionary variable | Used in job | ++========================+======================================================================================================================================+ +| ``meteo`` | ``prepare_data``, ``int2lm``, ``icon`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``icontools_runjobs`` | ``prepare_data`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``input_files`` | ``prepare_data`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``chem`` | ``prepare_data`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``era5`` | ``prepare_data`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``cams`` | ``prepare_data`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``emissions`` | ``emissions`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``vprm`` | ``biofluxes`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``oem`` | ``oem``, ``cosmo`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``online_vprm`` | ``online_vprm`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``int2lm`` | ``prepare_data``, ``emissions``, ``biofluxes``, ``octe``, ``int2lm``, ``post_int2lm``, ``cosmo``, ``post_cosmo`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``post_int2lm`` | ``post_int2lm`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``cosmo`` | ``reduce_output``, ``oem``, ``photo_rate``, ``octe``, ``check_output``, ``post_cosmo``, ``cosmo``, ``obs_nudging``, ``online_vprm`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``reduce_output`` | ``reduce_output`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``post_cosmo`` | ``post_cosmo`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``verify_chain`` | ``verify_chain`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ +| ``icon`` | ``oem``, ``prepare_data``, ``icon`` | ++------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/environment.rst b/docs/environment.rst new file mode 100644 index 00000000..58707f7a --- /dev/null +++ b/docs/environment.rst @@ -0,0 +1,62 @@ +.. _environment-section: + +Conda Environment +================= + +The following steps allow you to create and use your own virtual environment to run the Processing Chain. We recommend using a conda environment for the usage of the provided scripts. Please follow the instructions for the installation. The following steps only need to be performed once. + +1. Install Miniconda +~~~~~~~~~~~~~~~~~~~~ + +Install Miniconda as user-specific Miniconda, e.g., in your ``$HOME`` directory, which is the default location. + +.. note:: + Only conda itself should be installed in your ``$HOME``. All environments should be stored in your ``$PROJECT`` directory; otherwise, you risk filling up your ``$HOME`` directory. See below for instructions. + +To install the latest Miniconda, type: + +.. code-block:: bash + + wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh + bash Miniconda3-latest-Linux-x86_64.sh + +Further details on Miniconda can be found on the `Miniconda documentation page `_. + +2. Create the Conda Environment +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Create a conda environment ``proc-chain`` and install the requirements: + +.. code-block:: bash + + conda env create --prefix $PROJECT/envs/proc-chain -f env/environment.yml + +To be able to activate your conda environment by simply using ``conda activate proc-chain`` instead of the full path, add the following to your ``.bashrc``: + +.. code-block:: bash + + export CONDA_ENVS_PATH=$PROJECT/envs + +Activate the environment (use "source activate" in case "conda activate" does not work): + +.. code-block:: bash + + conda activate proc-chain + +If you already have the environment but want to update it: + +.. code-block:: bash + + conda env update --file env/environment.yml --prune + +3. Store user-specific data +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To register your email address and standard project account, store them in these files within your home directory: + +.. code-block:: bash + + echo > ~/.acct + echo > ~/.forward + +These settings are optional. The Processing Chain will first check the content of those files. If desired, the corresponding variables can be overridden by setting the ``compute_account`` and ``user_mail`` variables in the ``config.yaml`` file. diff --git a/docs/features.rst b/docs/features.rst new file mode 100644 index 00000000..2573f785 --- /dev/null +++ b/docs/features.rst @@ -0,0 +1,14 @@ +.. _features-section: + +Feature Overview +================ + +- Preparing input data +- Submiting compute jobs to the HPC queue +- Applying post-processing steps +- Cycling over time periods +- Using model built-in restarts or custom spinup +- Nested runs possible +- Automatic folder structure creation +- Easy creation of own cases and setups +- Various examples for COSMO and ICON available \ No newline at end of file diff --git a/docs/file-structure.rst b/docs/file-structure.rst deleted file mode 100644 index 770b7e54..00000000 --- a/docs/file-structure.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _file-structure-section: - -File Structure --------------- - -:: - - + README.rst - + run_script.py # main script - + jobs/ - | + *.py # jobs-files - | \ tools/ # tools-files - + cases/ # example test cases - | + cosmo-ghg-11km-test/ # COSMO-GHG example - | | + config.py # user-configuration - | | \ *.cfg # templates for namelists & batch-jobs - | + cosmo-art-mother-test/ # COSMO-ART example (mother domain) - | | + config.py - | | \ *.cfg - | + cosmo-art-nested-test/ # COSMO-ART example (nested domain) - | | + config.py - | | \ *.cfg - | \ icon-test # ICON example - | | + config.py - | | \ *.cfg - | \ icon-oem-test # ICON-OEM example - | | + config.py - | | \ *.cfg - + docs/ - + source/ # *.rst documentation files - \ Makefile # Makefile for generating docs - diff --git a/docs/functions.rst b/docs/functions.rst new file mode 100644 index 00000000..d33f11a6 --- /dev/null +++ b/docs/functions.rst @@ -0,0 +1,145 @@ +.. _functions-section: + +Jobs +---- + +* :func:`jobs.biofluxes.main` +* :func:`jobs.check_output.main` +* :func:`jobs.cosmo.main` +* :func:`jobs.emissions.main` +* :func:`jobs.icon.main` +* :func:`jobs.int2lm.main` +* :func:`jobs.obs_nudging.main` +* :func:`jobs.octe.main` +* :func:`jobs.oem.main` +* :func:`jobs.online_vprm.main` +* :func:`jobs.photo_rate.main` +* :func:`jobs.post_cosmo.main` +* :func:`jobs.post_int2lm.main` +* :func:`jobs.prepare_data.main` +* :func:`jobs.reduce_output.main` +* :func:`jobs.verify_chain.main` + +------------------------------------------- + +.. autofunction:: jobs.biofluxes.main + +------------------------------------------- + +.. autofunction:: jobs.check_output.main + +------------------------------------------- + +.. autofunction:: jobs.cosmo.main + +------------------------------------------- + +.. autofunction:: jobs.emissions.main + +------------------------------------------- + +.. autofunction:: jobs.icon.main + +------------------------------------------- + +.. autofunction:: jobs.int2lm.main + +------------------------------------------- + +.. autofunction:: jobs.obs_nudging.main + +------------------------------------------- + +.. autofunction:: jobs.octe.main + +------------------------------------------- + +.. autofunction:: jobs.oem.main + +------------------------------------------- + +.. autofunction:: jobs.online_vprm.main + +------------------------------------------- + +.. autofunction:: jobs.photo_rate.main + +------------------------------------------- + +.. autofunction:: jobs.post_cosmo.main + +------------------------------------------- + +.. autofunction:: jobs.post_int2lm.main + +------------------------------------------- + +.. autofunction:: jobs.prepare_data.main + +------------------------------------------- + +.. autofunction:: jobs.reduce_output.main + +------------------------------------------- + +.. autofunction:: jobs.verify_chain.main + + +Tools +----- + +The tools are a collection of functions used by the jobs. Most of those +functions are well documented and listed here. For others, one may take +a look into ``jobs/tools`` directly. + +* :func:`jobs.tools.cams4int2cosmo.main` +* :func:`jobs.tools.check_model.check_model` +* :func:`jobs.tools.comp_nc.datasets_equal` +* :func:`jobs.tools.ctnoaa4int2cosmo.main` +* :func:`jobs.tools.mozart2int2lm.main` +* :func:`jobs.tools.reduce_output_start_end.main` +* :func:`jobs.tools.string2char.main` +* :func:`jobs.tools.vprmsplit.main` +* :func:`jobs.tools.write_cosmo_input_ghg.main` +* :func:`jobs.tools.write_int2lm_input_art.main` + + +------------------------------------------- + +.. autofunction:: jobs.tools.cams4int2cosmo.main + +------------------------------------------- + +.. autofunction:: jobs.tools.check_model.check_model + +------------------------------------------- + +.. autofunction:: jobs.tools.comp_nc.datasets_equal + +------------------------------------------- + +.. autofunction:: jobs.tools.ctnoaa4int2cosmo.main + +------------------------------------------- + +.. autofunction:: jobs.tools.mozart2int2lm.main + +------------------------------------------- + +.. autofunction:: jobs.tools.reduce_output_start_end.main + +------------------------------------------- + +.. autofunction:: jobs.tools.string2char.main + +------------------------------------------- + +.. autofunction:: jobs.tools.vprmsplit.main + +------------------------------------------- + +.. autofunction:: jobs.tools.write_cosmo_input_ghg.main + +------------------------------------------- + +.. autofunction:: jobs.tools.write_int2lm_input_art.main diff --git a/docs/howtorun.rst b/docs/howtorun.rst index 65004786..ba269ae4 100644 --- a/docs/howtorun.rst +++ b/docs/howtorun.rst @@ -1,118 +1,223 @@ -.. _script-section: +.. _howtorun-section: How to Run ========== The Python file ``run_chain.py`` in the root directory is the main script of the Processing Chain. -It reads the user's input from the command line and from the ``config.py`` file of the +It reads the user's input from the command line and from the ``config.yaml`` file of the respective case. Then it will start the Processing Chain. Starting the Chain ------------------ -The chain has to be run with the following command: :: +The chain has to be run with the following command:: + + $ ./run_chain.py + +Here, ```` is the name of a directory in the ``cases/``-directory where +there is a ``config.yaml``-file specifying the configuration, as well as templates +for the necessary namelist files for **int2lm**, **COSMO** or **ICON**. It may also +contain additional runscripts to be submitted via ``sbatch``. + +Without specifiying a job list, the default joblist defined in +``config/models.yaml`` will be executed. + +There are several optional arguments available to change the behavior of the chain: + +* ``-h``, ``--help`` + Show a help message and exit. +* ``-j [JOB_LIST ...]``, ``--jobs [JOB_LIST ...]`` + List of job names to be executed. + A job is a .py-file in jobs/ with a ``main()`` function, which + handles one aspect of the Processing Chain, for + example copying ``meteo`` input data or launching a + job for ``int2lm``. Jobs are executed in the order + in which they are given here. If no jobs are + given, default jobs will be executedas defined + in config/models.yaml. +* ``-f``, ``--force`` + Force the processing chain to redo all specified + jobs, even if they have been started already or + were finished previously. WARNING: Only logfiles + get deleted, other effects of a given job + (copied files etc.) are simply overwritten. This + may cause errors. +* ``-t NTRY``, ``--try NTRY`` + Amount of time the cosmo job is re-tried before crashing. Default is 1. +* ``-r``, ``--resume`` + Resume the processing chain by restarting the + last unfinished job. WARNING: Only the logfile + gets deleted, other effects of a given job + (copied files etc.) are simply overwritten. This + may cause errors. - $ python run_chain.py -j [jobs] - -```` is the name of a directory in the ``cases/``-directory where -there is a ``config.py``-file specifying the configurations, as well as templates -for the necessary namelist files for **int2lm**, **COSMO** or **ICON**. - -If you don't supply a joblist, the default joblist will be executed. - -For **COSMO**, that is ``prepare_data`` ``emissions`` ``biofluxes`` ``int2lm`` -``post_int2lm`` ``cosmo`` ``post_cosmo``, - -For **COSMOART** it is ``prepare_data`` ``emissions`` ``obs_nudging`` -``photo_rate`` ``int2lm`` ``cosmo`` ``post_cosmo``. - -For **ICON** it is ``prepare_data`` ``icon``. - -For **ICONART** it is ``prepare_data`` ``icon``. - -For **ICONARTOEM** it is ``prepare_data`` ``oae`` ``icon``. - -The model type can be chosen by setting the variable ``target`` in the ``config.py``-file. - -To run the **COSMO-GHG** example test case, run:: - - $ python run_chain.py cosmo-ghg-11km-test 2015-01-01 0 24 -j prepare_data emissions biofluxes int2lm post_int2lm cosmo post_cosmo - -To run the **COSMO-ART** example case, run:: - - $ python run_chain.py cosmo-art-mother-test cosmo-art-nested-test 2015-06-26 0 24 -j prepare_data emissions obs_nudging photo_rate int2lm cosmo post_cosmo - -To run the **ICON** or **ICON-ART** example cases, run:: - - $ python run_chain.py icon-test 2018-01-01 0 24 -j prepare_data icon - -or:: - - $ python run_chain.py icon-art-test 2018-01-01 0 24 -j prepare_data icon - -To run the **ICON-OEM** example cases, run:: - - $ python run_chain.py icon-oem-test 2018-01-01 0 24 -j prepare_data oae icon - -or:: - - $ python run_chain.py icon-oem-ensembles-test 2018-01-01 0 24 -j prepare_data oae icon - What it Does ------------ -The script ``run_chain.py`` reads the command-line arguments and the config-file. -It then calls the function :func:`run_chain.restart_runs` which divides the -simuation time according to the specified restart steps. Then it calls +The script ``run_chain.py`` reads the command line arguments and the config file. +It then calls the function :func:`run_chain.restart_runs`, which divides the +simulation time according to the specified restart steps. Then it calls :func:`run_chain.run_chain` for each sub-run. This function sets up the directory structure of the chain and then starts the specified :ref:`jobs` sequentially. -The directory structure generated by the Processing Chain for a **COSMO** run -looks like this::: - - cfg.work_root/ - + output/cfg.output_root/ - \ /cfg.chain_root/ - + cfg.int2lm_base/ - | + cfg.int2lm_input/ - | + cfg.int2lm_work/ - | \ cfg.int2lm_output/ - + cfg.cosmo_base/ - | + cfg.cosmo_work/ - | + cfg.cosmo_output/ - | \ cfg.cosmo_restart_out/ - \ checkpoints/ - + cfg.log_working_dir/ - \ cfg.log_finished_dir/ +Test Cases +---------- + +The following test cases are available: + +* ``cosmo-ghg-spinup-test`` +* ``cosmo-ghg-test`` +* ``icon-test`` +* ``icon-art-oem-test`` +* ``icon-art-global-test`` + +To be able to run these test cases, it is necessary to provide the input data, +to setup spack and to compile the models and tools. All this is automized via +the script:: + + $ ./jenkins/scripts/jenkins.sh + +This will run all the individual scripts in ``jenkins/scripts/``, which +can also be launched separately if desired. + +Directory Structure +------------------- + +The directory structure generated by the Processing Chain for a ``cosmo-ghg`` +run looks like this:: + + cfg.work_root/cfg.casename/ + └── cfg.chain_root/ + ├── checkpoints/ + │ ├── cfg.log_working_dir/ + │ ├── cfg.log_finished_dir/ + ├── cfg.cosmo_base/ + │ ├── cfg.cosmo_work/ + │ ├── cfg.cosmo_output/ + │ ├── cfg.cosmo_restart_out/ + └── cfg.int2lm_base/ + ├── cfg.int2lm_input/ + ├── cfg.int2lm_work/ + └── cfg.int2lm_output/ -Running the ``cosmo-ghg-11km-test``-case therefore produces the following directories::: - - $SCRATCH/processing_chain/ - + output/cosmo-ghg-11km-test - \ cosmo-ghg-11km-test/2015010100_0_24/ - + int2lm/ - | + input/ - | | + emissions/ - | | + extpart/ - | | + prepare_data/ - | | \ vprm/ - | + run/ - | | + int2lm # executable - | | + INPUT - | | \ run.job - | \ output/ - + cosmo/ - | + run/ - | | + cosmo # executable - | | + INPUT_* - | | \ run.job - | + output/ - | \ restart/ - \ checkpoints - + working/ # 1 logfile per started job - \ finished # 1 logfile per finished job - - +Running the ``cosmo-ghg-test`` case therefore produces the following +directories and files (showing four levels of directories deep):: + + work/cosmo-ghg-test + ├── 2015010100_2015010106/ + │ ├── checkpoints/ + │ │ ├── finished/ + │ │ │ ├── biofluxes + │ │ │ ├── cosmo + │ │ │ ├── emissions + │ │ │ ├── int2lm + │ │ │ ├── oem + │ │ │ ├── online_vprm + │ │ │ ├── post_cosmo + │ │ │ ├── post_int2lm + │ │ │ └── prepare_data + │ │ └── working/ + │ │ ├── biofluxes + │ │ ├── cosmo + │ │ ├── emissions + │ │ ├── int2lm + │ │ ├── oem + │ │ ├── online_vprm + │ │ ├── post_cosmo + │ │ ├── post_int2lm + │ │ └── prepare_data + │ ├── cosmo/ + │ │ ├── input/ + │ │ │ ├── oem/ + │ │ │ └── vprm/ + │ │ ├── output/ + │ │ │ └── lffd*.nc + │ │ ├── restart/ + │ │ │ └── lrff00060000o.nc + │ │ └── run/ + │ │ ├── cosmo-ghg + │ │ ├── INPUT_* + │ │ ├── post_cosmo.job + │ │ ├── run.job + │ │ └── YU* + │ └── int2lm/ + │ ├── input/ + │ │ ├── emissions + │ │ ├── extpar + │ │ ├── icbc + │ │ ├── meteo + │ │ └── vprm + │ ├── output/ + │ │ ├── laf*.nc + │ │ └── lbfd*.nc + │ └── run/ + │ ├── INPUT + │ ├── INPUT_ART + │ ├── int2lm + │ ├── OUTPUT + │ ├── run.job + │ └── YU* + └── 2015010106_2015010112/ + ├── checkpoints/ + │ ├── finished/ + │ │ ├── biofluxes + │ │ ├── cosmo + │ │ ├── emissions + │ │ ├── int2lm + │ │ ├── oem + │ │ ├── online_vprm + │ │ ├── post_cosmo + │ │ ├── post_int2lm + │ │ └── prepare_data + │ └── working/ + │ ├── biofluxes + │ ├── cosmo + │ ├── emissions + │ ├── int2lm + │ ├── oem + │ ├── online_vprm + │ ├── post_cosmo + │ ├── post_int2lm + │ └── prepare_data + ├── cosmo/ + │ ├── input/ + │ │ ├── oem + │ │ └── vprm + │ ├── output/ + │ │ └── lffd*.nc + │ ├── restart/ + │ │ └── lrff00060000o.nc + │ └── run/ + │ ├── cosmo-ghg + │ ├── INPUT_* + │ ├── post_cosmo.job + │ ├── run.job + │ └── YU* + └── int2lm/ + ├── input/ + │ ├── emissions + │ ├── extpar + │ ├── icbc + │ ├── meteo + │ └── vprm + ├── output/ + │ ├── laf*.nc + │ └── lbfd*.nc + └── run/ + ├── INPUT + ├── INPUT_ART + ├── int2lm + ├── OUTPUT + ├── run.job + └── YU* + +------------------------------------------- + +.. autofunction:: run_chain.run_chain + +------------------------------------------- + +.. autofunction:: run_chain.restart_runs diff --git a/docs/index.rst b/docs/index.rst index 8e691530..25a8fe4d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -3,25 +3,43 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. +Processing Chain +================ + +The Processing Chain is a collection of Python scripts to prepare the +necessary input data, submit the compute jobs to the queue on Piz Daint +and to apply post-processing steps. In addition to the standard versions +of the COSMO and ICON models, it can als handle several variants of these +models, namely COSMO-GHG, COSMO-ART and ICON-ART. The chain can be flexibly +adapted according to your needs, e.g., by creating your own case, +adding new jobs or custom scripts. + .. toctree:: :maxdepth: 2 :caption: Getting Started - file-structure + features + environment howtorun .. toctree:: - :maxdepth: 3 + :maxdepth: 2 :caption: Configuration + code-structure config namelists .. toctree:: - :maxdepth: 3 + :maxdepth: 2 :caption: Jobs jobs - tools + +.. toctree:: + :maxdepth: 2 + :caption: Function Reference + + functions diff --git a/docs/jobs.rst b/docs/jobs.rst index 90358b7c..c0909180 100644 --- a/docs/jobs.rst +++ b/docs/jobs.rst @@ -4,53 +4,75 @@ Overview -------- The jobs described here are available for use in the processing chain. -For every target, you can choose from a list of available jobs. +For every model, you can choose from a list of available jobs. As some jobs depend on the result of others, the order indicated here has to be respected. -**COSMO**: +``cosmo``: -1. :func:`jobs.biofluxes.main` | :func:`jobs.prepare_data.main` | - :func:`jobs.emissions.main` | :func:`jobs.online_vprm.main` | - :func:`jobs.oae.main` | :func:`jobs.obs_nudging.main` +1. :func:`jobs.prepare_data.main` +2. :func:`jobs.int2lm.main` +3. :func:`jobs.cosmo.main` +4. :func:`jobs.check_output.main` +5. :func:`jobs.reduce_output.main` +6. :func:`jobs.post_cosmo.main` | + :func:`jobs.verify_chain.main` + +``cosmo-ghg``: + +1. :func:`jobs.biofluxes.main` | + :func:`jobs.emissions.main` | + :func:`jobs.online_vprm.main` | + :func:`jobs.oem.main` | + :func:`jobs.obs_nudging.main` | + :func:`jobs.prepare_data.main` 2. :func:`jobs.int2lm.main` 3. :func:`jobs.post_int2lm.main` 4. :func:`jobs.octe.main` 5. :func:`jobs.cosmo.main` 6. :func:`jobs.check_output.main` 7. :func:`jobs.reduce_output.main` -8. :func:`jobs.post_cosmo.main` | :func:`jobs.verify_chain.main` +8. :func:`jobs.post_cosmo.main` | + :func:`jobs.verify_chain.main` -**COSMOART**: +``cosmo-art``: -1. :func:`jobs.emissions.main` | :func:`jobs.prepare_data.main` | - :func:`jobs.photo_rate.main` | :func:`jobs.obs_nudging.main` | - :func:`jobs.online_vprm.main` | :func:`jobs.oae.main` +1. :func:`jobs.emissions.main` | + :func:`jobs.photo_rate.main` | + :func:`jobs.obs_nudging.main` | + :func:`jobs.online_vprm.main` | + :func:`jobs.oem.main` | + :func:`jobs.prepare_data.main` 2. :func:`jobs.int2lm.main` 3. :func:`jobs.cosmo.main` 4. :func:`jobs.check_output.main` 5. :func:`jobs.reduce_output.main` -6. :func:`jobs.post_cosmo.main` | :func:`jobs.verify_chain.main` +6. :func:`jobs.post_cosmo.main` | + :func:`jobs.verify_chain.main` -**ICON**: +``icon``: 1. :func:`jobs.prepare_data.main` 2. :func:`jobs.icon.main` -**ICONART**: +``icon-art``: 1. :func:`jobs.prepare_data.main` 2. :func:`jobs.icon.main` +``icon-art-global``: + +1. :func:`jobs.prepare_data.main` +2. :func:`jobs.icon.main` -**ICONARTOEM**: +``icon-art-oem``: 1. :func:`jobs.prepare_data.main` -2. :func:`jobs.oae.main` +2. :func:`jobs.oem.main` 3. :func:`jobs.icon.main` -Adding new jobs +Adding New Jobs --------------- Adding a new job to the chain is simple: @@ -60,25 +82,5 @@ Adding a new job to the chain is simple: Make sure the function is documented with a docstring. 2. Import it in ``jobs/__init__.py`` to make it accessible to ``run_chain.py``. 3. Add the function to the documentation. You find the file describing this page - at ``doc/source/jobs.rst``. - -List of available jobs ----------------------- - -* :func:`jobs.biofluxes.main` -* :func:`jobs.check_output.main` -* :func:`jobs.cosmo.main` -* :func:`jobs.emissions.main` -* :func:`jobs.icon.main` -* :func:`jobs.int2lm.main` -* :func:`jobs.prepare_data.main` -* :func:`jobs.oae.main` -* :func:`jobs.obs_nudging.main` -* :func:`jobs.octe.main` -* :func:`jobs.online_vprm.main` -* :func:`jobs.photo_rate.main` -* :func:`jobs.post_cosmo.main` -* :func:`jobs.post_int2lm.main` -* :func:`jobs.reduce_output.main` -* :func:`jobs.verify_chain.main` + at ``docs/jobs.rst``. diff --git a/docs/namelists.rst b/docs/namelists.rst index d76cfa40..1d1d3417 100644 --- a/docs/namelists.rst +++ b/docs/namelists.rst @@ -1,25 +1,32 @@ -.. _namelists: +.. _namelists-section: -Namelist Templates ------------------- +Namelist and Runscript Templates +-------------------------------- -Namelists for **int2lm** and **COSMO** are generated using templates which are also located in -the cases-directory. These templates are essentially textfiles containing "normal" namelist -parameters and python-variables in curly braces. +The namelists and run jobs for **int2lm** and **COSMO**, as well as for **icontools** and **ICON** are dynamically generated +using templates located in the ``cases/`` directory. These templates are essentially +text files containing "normal" namelist parameters alongside Python variables enclosed in curly braces. -These files get read by their respective job. -The resulting string is formatted using python's ``.format()``-function which replaces the -python-variables with their value. The formatted strings are then saved as namelist-files in the -run-directory of their respective jobs and then read by the executable. :: +During runtime, these template files are read by their respective jobs. +The resulting strings are formatted through Python's ``.format()`` function, facilitating the +substitution of Python variables with their corresponding value. +Subsequently, the formatted strings are then saved as the actual namelist and run scripts in the +run directory of their respective jobs. :: cases/example/example_namelist.cfg -> [read file] -> - "exvar = '{cfg.prefix}{cfg.suffix}'" -> ["".format(cfg)] -> - "exvar = 'pref_suff.nc'" -> [write to disk] -> + "namelist_var = '{cfg.prefix}{cfg.suffix}'" -> ["".format(cfg)] -> + "namelist_var = 'pref_suff.nc'" -> [write to disk] -> int2lm/run/example_namelist -The same procedure is done for the slurm-runscripts for **int2lm** and **COSMO**. - A special case is ``INPUT_ART`` for **int2lm** and ``INPUT_GHG`` for **COSMO** . These namelists are generated by :func:`jobs.tools.write_int2lm_input_art.main` and :func:`jobs.tools.write_cosmo_input_ghg.main` from ``.csv``-files containing all necessary information. +---------------------------------------------------- + +.. autofunction:: jobs.tools.write_int2lm_input_art.main + +---------------------------------------------------- + +.. autofunction:: jobs.tools.write_cosmo_input_ghg.main + diff --git a/docs/requirements.txt b/docs/requirements.txt index 1d8a9189..9e9912a8 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,2 +1,15 @@ -psphinxTheme -karma-sphinx-theme \ No newline at end of file +cdo +nco +netcdf4 +numpy +f90nml +cartopy +matplotlib +scipy +pillow +xarray +dask +cdsapi +sphinx +sphinx_rtd_theme +sphinx-copybutton \ No newline at end of file diff --git a/docs/tools.rst b/docs/tools.rst deleted file mode 100644 index 9aebd600..00000000 --- a/docs/tools.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _tools-section: - -Tools -===== - -The tools are a collection of functions used by the jobs. Most of those -functions are well documented and listed here. For others, one may take -a look into ``jobs/tools`` directly. - -Conversion Functions --------------------- - -These functions are used by the job :func:`jobs.prepare_data.main`. They convert data into -a format usable by **int2lm** diff --git a/env/environment.yml b/env/environment.yml index 06795923..075c13be 100644 --- a/env/environment.yml +++ b/env/environment.yml @@ -4,7 +4,6 @@ channels: - defaults dependencies: - python=3.9 - - sphinx_rtd_theme - cdo - nco - netcdf4 @@ -13,8 +12,10 @@ dependencies: - cartopy - matplotlib - scipy - - sphinx - pillow - xarray - dask - cdsapi + - sphinx + - sphinx_rtd_theme + - sphinx-copybutton diff --git a/src/.gitkeep b/ext/.gitkeep similarity index 100% rename from src/.gitkeep rename to ext/.gitkeep diff --git a/jenkins/Jenkinsfile b/jenkins/Jenkinsfile index 21c95360..07a8219b 100644 --- a/jenkins/Jenkinsfile +++ b/jenkins/Jenkinsfile @@ -117,7 +117,7 @@ pipeline { steps { sh '''source ${WORKSPACE}/miniconda/etc/profile.d/conda.sh conda activate proc-chain - . ${WORKSPACE}/src/spack-c2sm/setup-env.sh + . ${WORKSPACE}/ext/spack-c2sm/setup-env.sh ./jenkins/scripts/test_cosmo-ghg.sh''' } post { @@ -134,7 +134,7 @@ pipeline { steps { sh '''source ${WORKSPACE}/miniconda/etc/profile.d/conda.sh conda activate proc-chain - . ${WORKSPACE}/src/spack-c2sm/setup-env.sh + . ${WORKSPACE}/ext/spack-c2sm/setup-env.sh ./jenkins/scripts/test_cosmo-ghg-spinup.sh''' } post { @@ -151,7 +151,7 @@ pipeline { steps { sh '''source ${WORKSPACE}/miniconda/etc/profile.d/conda.sh conda activate proc-chain - . ${WORKSPACE}/src/spack-c2sm/setup-env.sh + . ${WORKSPACE}/ext/spack-c2sm/setup-env.sh ./jenkins/scripts/test_icon.sh''' } post { @@ -168,7 +168,7 @@ pipeline { steps { sh '''source ${WORKSPACE}/miniconda/etc/profile.d/conda.sh conda activate proc-chain - . ${WORKSPACE}/src/spack-c2sm/setup-env.sh + . ${WORKSPACE}/ext/spack-c2sm/setup-env.sh ./jenkins/scripts/test_icon-art-oem.sh''' } post { @@ -185,7 +185,7 @@ pipeline { steps { sh '''source ${WORKSPACE}/miniconda/etc/profile.d/conda.sh conda activate proc-chain - . ${WORKSPACE}/src/spack-c2sm/setup-env.sh + . ${WORKSPACE}/ext/spack-c2sm/setup-env.sh ./jenkins/scripts/test_icon-art-global.sh''' } post { diff --git a/jenkins/scripts/build_cosmo-ghg.sh b/jenkins/scripts/build_cosmo-ghg.sh index 027acc5a..2167fec7 100755 --- a/jenkins/scripts/build_cosmo-ghg.sh +++ b/jenkins/scripts/build_cosmo-ghg.sh @@ -13,7 +13,7 @@ function error { BRANCH=c2sm GIT_REMOTE=git@github.com:C2SM-RCM/cosmo-ghg.git -pushd src +pushd ext # Activate spack . spack-c2sm/setup-env.sh diff --git a/jenkins/scripts/build_icon-art.sh b/jenkins/scripts/build_icon-art.sh index 36cf15cb..8ba5225e 100755 --- a/jenkins/scripts/build_icon-art.sh +++ b/jenkins/scripts/build_icon-art.sh @@ -13,7 +13,7 @@ function error { BRANCH=art GIT_REMOTE=git@github.com:C2SM/icon.git -pushd src +pushd ext # Activate spack . spack-c2sm/setup-env.sh diff --git a/jenkins/scripts/build_icon.sh b/jenkins/scripts/build_icon.sh index bff225c9..15e1d82a 100755 --- a/jenkins/scripts/build_icon.sh +++ b/jenkins/scripts/build_icon.sh @@ -13,7 +13,7 @@ function error { BRANCH=main GIT_REMOTE=git@github.com:C2SM/icon.git -pushd src +pushd ext # Activate spack . spack-c2sm/setup-env.sh diff --git a/jenkins/scripts/build_int2lm.sh b/jenkins/scripts/build_int2lm.sh index 2af403a3..1ecca336 100755 --- a/jenkins/scripts/build_int2lm.sh +++ b/jenkins/scripts/build_int2lm.sh @@ -13,7 +13,7 @@ function error { BRANCH=c2sm-features GIT_REMOTE=git@github.com:C2SM-RCM/int2lm.git -pushd src +pushd ext # Activate spack . spack-c2sm/setup-env.sh diff --git a/jenkins/scripts/jenkins.sh b/jenkins/scripts/jenkins.sh index d6298e19..a68ce0bb 100755 --- a/jenkins/scripts/jenkins.sh +++ b/jenkins/scripts/jenkins.sh @@ -23,9 +23,9 @@ eval "$(conda shell.bash hook)" conda activate proc-chain # Setup spack -if [[ -d src/spack-c2sm ]]; then +if [[ -d ext/spack-c2sm ]]; then echo spack folder already exists - activating spack... - . src/spack-c2sm/setup-env.sh + . ext/spack-c2sm/setup-env.sh else echo building spack... ./jenkins/scripts/setup-spack.sh @@ -41,7 +41,7 @@ else fi # Build int2lm -if [[ -f src/int2lm/test/testsuite/int2lm ]]; then +if [[ -f ext/int2lm/test/testsuite/int2lm ]]; then echo int2lm executable already exists - skipping build... else echo building int2lm... @@ -49,7 +49,7 @@ else fi # Build COSMO-GHG -if [[ -f src/cosmo-ghg/cosmo/ACC/cosmo_gpu ]]; then +if [[ -f ext/cosmo-ghg/cosmo/ACC/cosmo_gpu ]]; then echo cosmo executable already exists - skipping build. else echo building cosmo... @@ -57,7 +57,7 @@ else fi # Build ICON -if [[ -f src/icon/bin/icon ]]; then +if [[ -f ext/icon/bin/icon ]]; then echo icon executable already exists - skipping build. else echo building icon... @@ -65,7 +65,7 @@ else fi # Build ICON-ART -if [[ -f src/icon-art/bin/icon ]]; then +if [[ -f ext/icon-art/bin/icon ]]; then echo icon-art executable already exists - skipping build. else echo building icon-art... diff --git a/jenkins/scripts/setup-spack.sh b/jenkins/scripts/setup-spack.sh index 93945c0b..13988c5f 100755 --- a/jenkins/scripts/setup-spack.sh +++ b/jenkins/scripts/setup-spack.sh @@ -13,9 +13,9 @@ function error { TAG=v0.18.1.12 GIT_REMOTE=https://github.com/C2SM/spack-c2sm.git -rm -fr src/spack-c2sm +rm -fr ext/spack-c2sm -pushd src +pushd ext git clone --depth 1 --recurse-submodules --shallow-submodules -b ${TAG} ${GIT_REMOTE} . spack-c2sm/setup-env.sh popd diff --git a/jobs/__init__.py b/jobs/__init__.py index 08cc0cdb..a269fbf3 100644 --- a/jobs/__init__.py +++ b/jobs/__init__.py @@ -1,20 +1,19 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# -from . import prepare_data -from . import emissions -from . import oem from . import biofluxes -from . import int2lm -from . import post_int2lm +from . import check_output from . import cosmo +from . import emissions +from . import icon +from . import int2lm +from . import obs_nudging +from . import octe +from . import oem +from . import online_vprm +from . import photo_rate from . import post_cosmo +from . import post_int2lm +from . import prepare_data from . import reduce_output from . import verify_chain -from . import photo_rate -from . import obs_nudging -from . import online_vprm -from . import octe -from . import check_output -from . import icon diff --git a/jobs/biofluxes.py b/jobs/biofluxes.py index 78471f09..cd8bee49 100644 --- a/jobs/biofluxes.py +++ b/jobs/biofluxes.py @@ -1,18 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# -# Create VPRM biogenic fluxes from VPRM and put them into the input folder -# -# result in case of success: all VPRM input-files necessary are found in -# ${int2lm_input}/vprm/ -# -# Dominik Brunner, July 2013 -# -# 2013-07-18 Initial release, based on Christoph Knotes' emissions.bash -# In the current version, the program only checks for the presence -# of the constant-in-time emissions file and creates a soft link in the int2lm -# input directory (brd) -# 2018-06-25 Translated to Python (arp) import os import logging @@ -20,17 +7,17 @@ def main(cfg, model_cfg): - """Prepare the biofluxes-files for the simulation. + """Prepare biofluxes files for COSMO simulations. - Only necessary for **COSMO** simulations. - - Copy biofluxes files from project folder (``cfg.vprm['dir']``) to int2lm input - folder on scratch (``cfg.int2lm_input/vprm``). + Copies biofluxes files from the project folder (:attr:`cfg.vprm['dir']`) + to the int2lm input folder on scratch (:attr:`cfg.int2lm_input`/vprm). Parameters - ---------- - cfg : config-object - Object holding all user-configuration parameters as attributes + ---------- + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ tools.check_model(cfg, 'cosmo-ghg') cfg = prepare_data.set_cfg_variables(cfg, model_cfg) diff --git a/jobs/check_output.py b/jobs/check_output.py index 133e969c..add736c8 100644 --- a/jobs/check_output.py +++ b/jobs/check_output.py @@ -69,7 +69,7 @@ def timeseries_path(cfg): Parameters ---------- - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes Returns @@ -89,7 +89,7 @@ def maps_path(cfg): Parameters ---------- - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes Returns @@ -108,7 +108,7 @@ def animations_path(cfg): Parameters ---------- - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes Returns @@ -211,7 +211,7 @@ def plot_timeseries(cfg, units): Parameters ---------- - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes units : dict Dictionary containing units os variables @@ -385,7 +385,7 @@ def merge_data(cfg): Parameters ---------- - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes Returns @@ -647,7 +647,7 @@ def create_map_directories(cfg, data, units): Parameters ---------- - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes data: pandas.DataFrame Dataframe containing diagnostic values for each variable @@ -671,7 +671,7 @@ def create_animations(cfg): Parameters ---------- - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes """ data_path = pkl_path(cfg.output_root) @@ -700,18 +700,20 @@ def create_animations(cfg): def main(cfg, model_cfg): - """Checks output variables whether they are in a phyiscally reasonable - range. + """Check output variables for physical reasonability and create plots. - Stores the time series of the minimum, the maximum, the mean, and - the std of the variables as a pandas object into a pickle file. + This function checks the output variables to ensure they are in a physically + reasonable range. It stores the time series of the minimum, maximum, mean, and + standard deviation of the variables as a pandas object into a pickle file. - Creates per-variable plots from the stored time series data. + It also creates per-variable plots from the stored time series data. Parameters - ---------- - cfg : config-object - Object holding all user-configuration parameters as attributes + ---------- + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ date = dt.datetime.today() diff --git a/jobs/cosmo.py b/jobs/cosmo.py index 4c43e815..394b3eb3 100644 --- a/jobs/cosmo.py +++ b/jobs/cosmo.py @@ -1,15 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# -# Setup the namelist for a COSMO tracer run and submit the job to the queue -# -# result in case of success: forecast fields found in -# ${cosmo_output} -# -# Dominik Brunner, July 2013 -# -# 2013-07-21 Initial release, adopted from Christoph Knote's cosmo.bash (brd) -# 2018-07-10 Translated to Python (muq) import logging import os @@ -63,35 +53,35 @@ def set_cfg_variables(cfg, model_cfg): def main(cfg, model_cfg): - """Setup the namelists for a **COSMO** tracer run and submit the job to - the queue + """Setup the namelists for a COSMO tracer run and submit the job to the queue. - Necessary for both **COSMO** and **COSMOART** simulations. + Necessary for both COSMO and COSMOART simulations. Decide if the soil model should be TERRA or TERRA multi-layer depending on - ``startdate`` of the simulation. + the ``startdate`` of the simulation. - Create necessary directory structure to run **COSMO** (run, output and - restart directories, defined in ``cfg.cosmo_run``, ``cfg.cosmo_output`` + Create necessary directory structure to run COSMO (run, output, and + restart directories, defined in ``cfg.cosmo_run``, ``cfg.cosmo_output``, and ``cfg.cosmo_restart_out``). - Copy the **COSMO**-executable from + Copy the COSMO-executable from ``cfg.cosmo_bin`` to ``cfg.cosmo_run/cosmo``. - Convert the tracer-csv-file to a **COSMO**-namelist file. + Convert the tracer-csv-file to a COSMO-namelist file. - Format the **COSMO**-namelist-templates - (**COSMO**: ``AF,ORG,IO,DYN,PHY,DIA,ASS``, - **COSMOART**: ``ART,ASS,DIA,DYN,EPS,INI,IO,ORG,PHY``) + Format the COSMO-namelist-templates + (COSMO: ``AF,ORG,IO,DYN,PHY,DIA,ASS``, + COSMOART: ``ART,ASS,DIA,DYN,EPS,INI,IO,ORG,PHY``) using the information in ``cfg``. Format the runscript-template and submit the job. - Parameters ---------- - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ cfg = set_cfg_variables(cfg, model_cfg) logfile = os.path.join(cfg.log_working_dir, "cosmo") diff --git a/jobs/emissions.py b/jobs/emissions.py index cf98c92f..fcba2d70 100644 --- a/jobs/emissions.py +++ b/jobs/emissions.py @@ -1,18 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# -# Create anthropogenic emissions and put them into the input folder -# -# Result in case of success: all emission input-files necessary are found in -# ${int2lm_input}/emissions/ -# -# Dominik Brunner, July 2013 -# -# 2013-07-18 Initial release, based on Christoph Knotes' emissions.bash -# In the current version, the program only checks for the presence -# of the constant-in-time emissions file and creates a soft link in -# the int2lm input directory (brd) -# 2018-06-25 Translated to Python (arp) import os import logging @@ -21,15 +8,15 @@ def main(cfg, model_cfg): - """Copy emission files to the **int2lm** input directory. + """Copy emission files to the int2lm input directory. - Necessary for both **COSMO** and **COSMOART** simulations. + Necessary for both COSMO and COSMOART simulations. Copy emission files from project folder (``cfg.emissions['dir']``) to - **int2lm** input folder on scratch (``cfg.int2lm_input/emissions``). + int2lm input folder on scratch (``cfg.int2lm_input/emissions``). - For **COSMO** simulations, converts the the netCDF-variable-names - from ``string`` to ``char`` (necessary for **int2lm**). + For COSMO simulations, converts the netCDF-variable-names + from ``string`` to ``char`` (necessary for int2lm). If there are multiple emission-datasets (cfg.emissions['dir'] is a list of paths), they are copied as follows:: @@ -40,14 +27,10 @@ def main(cfg, model_cfg): Parameters ---------- - starttime : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the starttime - hstop : int - Length of simulation (in hours) - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ cfg = prepare_data.set_cfg_variables(cfg, model_cfg) dest_prefix = "emis_" diff --git a/jobs/icon.py b/jobs/icon.py index a63c835b..cbf1e345 100644 --- a/jobs/icon.py +++ b/jobs/icon.py @@ -1,15 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# -# Setup the namelist for an ICON run and submit the job to the queue -# -# result in case of success: forecast fields found in -# ${icon_output} -# -# Michael Jähn, February 2021 -# -# 2021-04-26 Initial release -# 2021-11-21 Updated for ICON-ART import logging import os @@ -18,36 +8,32 @@ def main(cfg, model_cfg): - """Setup the namelists for an **ICON** tracer run and submit the job to - the queue + """Setup the namelists for an ICON tracer run and submit the job to + the queue. - Necessary for both **ICON** and **ICONART** simulations. + Necessary for both ICON and ICONART simulations. - Create necessary directory structure to run **ICON** (run, output and - restart directories, defined in ``cfg.icon_work``, ``cfg.icon_output`` + Create necessary directory structure to run ICON (run, output, and + restart directories, defined in ``cfg.icon_work``, ``cfg.icon_output``, and ``cfg.icon_restart_out``). - Copy the **ICON**-executable from + Copy the ICON-executable from ``cfg.icon_binary_file`` to ``cfg.icon_work/icon.exe``. - Use the tracer-csv-file to append **ICON**-namelist file. + Use the tracer-csv-file to append ICON-namelist file. - Format the **ICON**-namelist-templates: + Format the ICON-namelist-templates: ``icon_master.namelist.cfg, icon_NAMELIST_NWP.cfg``, using the information in ``cfg``. Format the runscript-template and submit the job. Parameters - ---------- - starttime : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the starttime - hstop : int - Length of simulation (in hours) - cfg : config-object - Object holding all user-configuration parameters as attributes + ---------- + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ cfg = prepare_data.set_cfg_variables(cfg, model_cfg) diff --git a/jobs/int2lm.py b/jobs/int2lm.py index da94a56c..3311413e 100644 --- a/jobs/int2lm.py +++ b/jobs/int2lm.py @@ -1,13 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# -# Setup the namelist for int2lm and submit the job to the queue -# -# Dominik Brunner, July 2013 -# -# 2013-07-20 Initial release, based on Christoph Knote's int2lm.bash (brd) -# 2017-01-15 adapted for hypatia and project SmartCarb (brd) -# 2018-08-03 Translated to Python (jae) import os import logging @@ -28,41 +20,37 @@ def set_cfg_variables(cfg, model_cfg): def main(cfg, model_cfg): - """Setup the namelist for **int2lm** and submit the job to the queue. + """Setup the namelist for int2lm and submit the job to the queue. + + Necessary for both COSMO and COSMOART simulations. - Necessary for both **COSMO** and **COSMOART** simulations. - Decide if the soil model should be TERRA or TERRA multi-layer depending on - ``startdate`` of the simulation. + `startdate` of the simulation. - Create necessary directory structure to run **int2lm** (run and output + Create necessary directory structure to run int2lm (run and output directories, defined in ``cfg.int2lm`` and ``cfg.int2lm['output']``). - Copy the **int2lm**-executable from ``cfg.int2lm['binary_file']`` to + Copy the int2lm-executable from ``cfg.int2lm['binary_file']`` to ``cfg.int2lm['work']/int2lm``. Copy the extpar-file ``cfg.int2lm['extpar_file']`` to ``cfg.int2lm_run/work``. - **COSMOART**: Copy the ``libgrib_api`` files to + COSMOART: Copy the ``libgrib_api`` files to ``cfg.int2lm['work']/libgrib_api``. - **COSMO**: Convert the tracer-csv-files into a **int2lm**-namelist file. + COSMO: Convert the tracer-csv-files into an int2lm-namelist file. - Format the **int2lm**-namelist-template using the information in ``cfg``. + Format the int2lm-namelist-template using the information in ``cfg``. Format the runscript-template and submit the job. Parameters ---------- - starttime : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the starttime - hstop : int - Length of simulation (in hours) - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ cfg = prepare_data.set_cfg_variables(cfg, model_cfg) cfg = set_cfg_variables(cfg, model_cfg) diff --git a/jobs/obs_nudging.py b/jobs/obs_nudging.py index bf2557cb..70ba2e07 100644 --- a/jobs/obs_nudging.py +++ b/jobs/obs_nudging.py @@ -23,9 +23,11 @@ def main(cfg, model_cfg): Also copies the blacklist-file blklsttmp. Parameters - ---------- - cfg : config-object - Object holding all user-configuration parameters as attributes + ---------- + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ dest_dir = os.path.join(cfg.cosmo_input, "obs_nudging") tools.create_dir(dest_dir, "obs nudging input") diff --git a/jobs/octe.py b/jobs/octe.py index b52f2a03..06f46b39 100644 --- a/jobs/octe.py +++ b/jobs/octe.py @@ -164,24 +164,20 @@ def perturb_bgs_in_dir(lambdas_nc, directory): def main(cfg, model_cfg): """Copy necessary input files for **COSMO** and perturb BG. - Copies the NetCDF-files found at cfg.octe_maps and cfg.octe_lambdas to + Copies the NetCDF-files found at ``cfg.octe_maps`` and ``cfg.octe_lambdas`` to the **COSMO** input-directory. Perturbs the background tracer field. To do that, it reads the lambda-value - from the cfg.octe_lambdas (last value along the nparam-dimension) and + from the ``cfg.octe_lambdas`` (last value along the nparam-dimension) and scales the BG-field produced by int2lm, creating a new variable for each ensemble. Parameters ---------- - starttime : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the starttime - hstop : int - Length of simulation (in hours) - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ dest_dir = join(cfg.cosmo_input, 'octe') create_dir_and_copy_input(dest_dir=dest_dir, diff --git a/jobs/oem.py b/jobs/oem.py index 358af4e9..eee87852 100644 --- a/jobs/oem.py +++ b/jobs/oem.py @@ -1,6 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# import os import logging @@ -14,14 +13,15 @@ def main(cfg, model_cfg): Parameters ---------- - starttime : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the starttime - hstop : int - Length of simulation (in hours) - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. + + Raises + ------ + RuntimeError + If an error occurs during the process. """ cfg = cosmo.set_cfg_variables(cfg, model_cfg) diff --git a/jobs/online_vprm.py b/jobs/online_vprm.py index 106457cf..c87bac6b 100644 --- a/jobs/online_vprm.py +++ b/jobs/online_vprm.py @@ -1,6 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# import os import logging @@ -9,21 +8,16 @@ def main(cfg, model_cfg): - """Copy MODIS surface reflectance data and vegatation class fraction file + """Copy MODIS surface reflectance data and vegetation class fraction file to the **cosmo** input directory. Parameters ---------- - starttime : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the starttime - hstop : int - Length of simulation (in hours) - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ - dest_modis = 'modis.nc' dest_vegetation = 'vegetation.nc' diff --git a/jobs/photo_rate.py b/jobs/photo_rate.py index 7f8360b2..0bec6d6b 100644 --- a/jobs/photo_rate.py +++ b/jobs/photo_rate.py @@ -12,19 +12,15 @@ def main(cfg, model_cfg): Only necessary for **COSMOART** simulations. - Copy the photolysis-rate file from the project (``cfg.photo_rate_file``) to - the **COSMOART** input folder on scratch (``cfg.cosmo_input/art_photolysis``). + Copy the photolysis-rate file from the project (`cfg.photo_rate_file`) to + the **COSMOART** input folder on scratch (`cfg.cosmo_input/art_photolysis`). Parameters - ---------- - start_time : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the start_time - hstop : int - Length of simulation (in hours) - cfg : config-object - Object holding all user-configuration parameters as attributes + ---------- + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ tools.check_model(cfg, 'cosmo-art') diff --git a/jobs/post_cosmo.py b/jobs/post_cosmo.py index 56d4dc1d..a5335d6a 100644 --- a/jobs/post_cosmo.py +++ b/jobs/post_cosmo.py @@ -1,10 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copy cosmo output from scratch to store (or anywhere else) - -### DEVELOPMENT VERSION ### - import logging import os import datetime @@ -55,7 +51,7 @@ def main(cfg, model_cfg): Write a runscript to copy all files (**COSMO** settings & output, **int2lm** settings, logfiles) from ``cfg.cosmo_run``, ``cfg.cosmo_output``, ``cfg.int2lm_run``, ``cfg.log_finished_dir`` to - ``cfg.output_root/...`` . + ``cfg.output_root/...``. If the job ``reduce_output`` has been run before ``post_cosmo``, a directory ``cfg.cosmo_output_reduced`` is created. In this case, ``cfg.cosmo_output_reduced`` is copied instead of ``cfg.cosmo_output``. @@ -64,8 +60,10 @@ def main(cfg, model_cfg): Parameters ---------- - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ cfg = int2lm.set_cfg_variables(cfg, model_cfg) cfg = cosmo.set_cfg_variables(cfg, model_cfg) diff --git a/jobs/post_int2lm.py b/jobs/post_int2lm.py index 787f7907..423a1659 100644 --- a/jobs/post_int2lm.py +++ b/jobs/post_int2lm.py @@ -25,8 +25,10 @@ def main(cfg, model_cfg): Parameters ---------- - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config/models.yaml`` file. """ cfg = int2lm.set_cfg_variables(cfg, model_cfg) diff --git a/jobs/prepare_data.py b/jobs/prepare_data.py index 894d2563..d095ccc3 100644 --- a/jobs/prepare_data.py +++ b/jobs/prepare_data.py @@ -1,28 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# -# Prepare initial and boundary conditions -# -# In case of ICON: -# Prepare input for meteorological initial and boundary conditions -# by remapping the files onto the ICON grid (for IC) and the -# auxillary lateral-boundary grid (for BC) with the DWD ICON tools -# and saving them in the input folder. -# Currently, the input files are assumed to be ifs data. -# The files are read-in in grib2-format and the the remapped -# files are saved in netCDF-format (currently only netCDF works -# for ICON when then the simulation is driven by ifs-data). -# -# result in case of success: all meteo input-files necessary are found in -# ${int2lm_input}/meteo/ -# -# Dominik Brunner, July 2013 -# -# 2013-07-16 Initial release, based on Christoph Knote script -# 2017-01-15 Modified for hypatia and project SmartCarb -# 2018-06-21 Translated to Python (kug) -# 2021-02-28 Modified for ICON-simulations (stem) -# 2021-11-12 Modified for ICON-ART-simulations (mjaehn) import os import logging @@ -93,44 +70,41 @@ def set_cfg_variables(cfg, model_cfg): def main(cfg, model_cfg): """ - **ICON** + **ICON and COSMO Data Preparation** - Create necessary directories ``cfg.icon_input_icbc`` - and ''cfg.icon_work'' + This function prepares input data for ICON and COSMO simulations by creating necessary directories, + copying meteorological files, and handling specific data processing for each model. - Submitting the runscript for the DWD ICON tools to remap the meteo files. + **ICON:** - All runscripts specified in ``cfg.icontools_runjobs`` are submitted. + - Create directories ``cfg.icon_input_icbc`` and ``cfg.icon_work``. + - Submit the runscript for the DWD ICON tools to remap the meteorological files. + - All runscripts specified in ``cfg.icontools_runjobs`` are submitted. + - The meteorological files are read from the original input directory (``cfg.input_root_meteo``), + and the remapped meteorological files are saved in the input folder on scratch (``cfg.icon_input/icbc``). + - The constant variable 'GEOSP' is added to the files not containing it using python-cdo bindings. - The meteo files are read-in from the original input directory - (``cfg.input_root_meteo``) and the remapped meteo files are - saved in the input folder on scratch (``cfg.icon_input/icbc``). + **COSMO:** - The constant variable 'GEOSP' is added to the files not containing it - using python-cdo bindings. + - Copy meteorological files to **int2lm** input. + - Create the necessary directory ``cfg.int2lm_input/meteo``. + - Copy meteorological files from the project directory (``cfg.meteo['dir']/cfg.meteo['prefix']YYYYMMDDHH``) + to the int2lm input folder on scratch (``cfg.int2lm_input/meteo``). + - For nested runs (meteorological files are COSMO output: ``cfg.meteo['prefix'] == 'lffd'``), + also copy the ``*c.nc``-file with constant parameters. - **COSMO** - - Copy meteo files to **int2lm** input. - - Create necessary directory ``cfg.int2lm_input/meteo``. Copy meteo files - from project directory (``cfg.meteo['dir']/cfg.meteo['prefix']YYYYMMDDHH``) to - int2lm input folder on scratch (``cfg.int2lm_input/meteo``). - - For nested runs (meteo files are cosmo-output: ``cfg.meteo['prefix'] == - 'lffd'``), also the ``*c.nc``-file with constant parameters is copied. - - Parameters ---------- - startdate : datetime-object - The start date of the simulation - enddate : datetime-object - The end date of the simulation - cfg : config-object - Object holding all user-configuration parameters as attributes + cfg : Config + Object holding all user-configuration parameters as attributes. + model_cfg : dict + Model configuration settings loaded from the ``config\/models.yaml`` file. + + Raises + ------ + RuntimeError + If any subprocess returns a non-zero exit code during execution. """ - cfg = set_cfg_variables(cfg, model_cfg) if cfg.model.startswith('icon'): diff --git a/jobs/reduce_output.py b/jobs/reduce_output.py index c0ef560a..a1f8e57e 100644 --- a/jobs/reduce_output.py +++ b/jobs/reduce_output.py @@ -16,14 +16,14 @@ from . import tools -def main(startdate, enddate, cfg, model_cfg): +def main(cfg, model_cfg): """ Calculates 2D column data and writes them into a new netCDF file. Only a fixed number of levels from **COSMO** output are considered. Those files are written into a new directory ``cosmo_output_reduced``. The number of levels is set by the configuration variable - ``cfg.output_levels`` (default = all levels). + ``cfg.reduce_output['output_levels']`` (default = all levels). **Important**: If several ``GRIBOUT`` sections are used to split the output data, then this code only works in case of the following: @@ -39,16 +39,11 @@ def main(startdate, enddate, cfg, model_cfg): Parameters ---------- - starttime : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the starttime - hstop : int - Length of simulation (in hours) - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes + model_cfg : dict + Model configuration settings loaded from the ``config\/models.yaml`` file. """ - cosmo_output = cfg.cosmo_output output_path = cfg.cosmo_output_reduced @@ -125,9 +120,9 @@ def main(startdate, enddate, cfg, model_cfg): "sbatch", '--output=' + logfile, '--open-mode=append', '--wait', bash_file, py_file, cosmo_output, output_path, str_startdate, str_enddate, - str(cfg.output_levels), + str(cfg.reduce_output['output_levels']), str(output_step), alternate_csv_file, - str(cfg.convert_gas) + str(cfg.reduce_output['convert_gas']) ]) exitcode = result.returncode diff --git a/jobs/tools/__init__.py b/jobs/tools/__init__.py index 6df6546c..01b8f3e5 100644 --- a/jobs/tools/__init__.py +++ b/jobs/tools/__init__.py @@ -416,11 +416,11 @@ def check_job_completion(log_finished_dir, job, waittime=3000): Parameters ---------- - cfg : config-object + cfg : Config log_finished_dir : directory for logfiles of finished jobs - job: string of job name, e.g. "meteo" + job: string of job name, e.g. "prepare_data" waittime : time to wait (factor of .1 second) Defaults to 3000 (300 seconds) diff --git a/jobs/tools/check_model.py b/jobs/tools/check_model.py index 9a1b29c1..95b1cc94 100644 --- a/jobs/tools/check_model.py +++ b/jobs/tools/check_model.py @@ -10,7 +10,8 @@ def check_model(cfg, model='COSMO'): Parameters ---------- - cfg : config-object + cfg : Config + Object holding all user-configuration parameters as attributes. model : str Prescribed model diff --git a/jobs/tools/write_cosmo_input_ghg.py b/jobs/tools/write_cosmo_input_ghg.py index e0a11ef3..f17804e0 100644 --- a/jobs/tools/write_cosmo_input_ghg.py +++ b/jobs/tools/write_cosmo_input_ghg.py @@ -96,6 +96,8 @@ def main(csv_filename, namelist_filename, cfg=None): Path to the source csv-file namelist_filename : str Path to the namelist file that will be created + cfg : Config + Object holding all user-configuration parameters as attributes. """ with open(csv_filename, 'r') as csv_file: diff --git a/jobs/verify_chain.py b/jobs/verify_chain.py index 61e31365..3747ee98 100644 --- a/jobs/verify_chain.py +++ b/jobs/verify_chain.py @@ -1,11 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Job to verify the correctness of the chain. The output of the example-case is -# compared to a reference output. - -# Author: dao, david.ochsner@empa.ch - import os import logging import netCDF4 as nc @@ -22,49 +17,48 @@ def comp_data(dataset1, dataset2, variables): def main(cfg, model_cfg): """Compare outputs of the chain to a reference. - Looks for the reference-file in ``cfg.reference_dir``. + Looks for the reference-file in ``cfg.verify_chain['reference_dir']``. - Looks for the output file in ``cfg.output_dir`` (if not ``None``), else it + Looks for the output file in ``cfg.verify_chain['output_dir']`` (if not ``None``), else it goes to the output directory created by the **COSMO**-job. - In the dict ``cfg.values_to_check``, the user specifies the names of the + In the dict ``cfg.verify_chain['values_to_check']``, the user specifies the names of the files to be compared as keys, and the variables to compare as a list. To compare the temperatures of the last output of the example case, the - following variables should be added to the ``config.py`` file: :: + following variables should be added to the ``config.yaml`` file: :: - reference_dir = os.path.join(input_root, "reference_output") - output_dir = None - values_to_check = {("reference_lffd2015010200.nc","lffd2015010200.nc"): + verify_chain['reference_dir'] = os.path.join(input_root, "reference_output") + verify_chain['output_dir'] = None + verify_chain['values_to_check'] = {("reference_lffd2015010200.nc","lffd2015010200.nc"): ['T']} Parameters ---------- - start_time : datetime-object - The starting date of the simulation - hstart : int - Offset (in hours) of the actual start from the start_time - hstop : int - Length of simulation (in hours) - cfg : config-object + cfg : Config Object holding all user-configuration parameters as attributes + model_cfg : dict + Model configuration settings loaded from the ``config\/models.yaml`` file. """ logging.info("Started verification") - for (ref_file, run_file), variables in cfg.values_to_check.items(): + for (ref_file, + run_file), variables in cfg.verify_chain['values_to_check'].items(): logging.info("Comparing " + str(variables)) # reference file location - ref_file_path = os.path.join(cfg.reference_dir, ref_file) + ref_file_path = os.path.join(cfg.verify_chain['reference_dir'], + ref_file) # run data location - if cfg.output_dir is None: + if cfg.verify_chain['output_dir'] is None: # Standard output location run_file_path = os.path.join( cfg.output_root, cfg.startdate_sim_yyyymmddhh + "_" + cfg.enddate_sim_yyyymmddhh, "cosmo_output", run_file) else: # User-provided output location - run_file_path = os.path.join(cfg.output_dir, run_file) + run_file_path = os.path.join(cfg.verify_chain['output_dir'], + run_file) logging.info("Output file: " + str(run_file_path)) logging.info("Reference file: " + str(ref_file_path)) From 6ad9e70c5751c8a5aeb297fb61b52fdbcd399dbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20J=C3=A4hn?= Date: Fri, 26 Jan 2024 12:00:11 +0100 Subject: [PATCH 2/7] Remove dask (#55) --- docs/requirements.txt | 3 +-- env/environment.yml | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index 9e9912a8..d2894daf 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -8,8 +8,7 @@ matplotlib scipy pillow xarray -dask cdsapi sphinx sphinx_rtd_theme -sphinx-copybutton \ No newline at end of file +sphinx-copybutton diff --git a/env/environment.yml b/env/environment.yml index 075c13be..12f9efcf 100644 --- a/env/environment.yml +++ b/env/environment.yml @@ -14,7 +14,6 @@ dependencies: - scipy - pillow - xarray - - dask - cdsapi - sphinx - sphinx_rtd_theme From 45d6c010075a1756460e7c7c0f6780dbcf213abd Mon Sep 17 00:00:00 2001 From: efmkoene Date: Wed, 7 Feb 2024 09:23:57 +0100 Subject: [PATCH 3/7] Added ICON interpolator (to point locations) (#58) * Added ICON interpolator (to point locations) * GitHub Action: Apply Pep8-formatting * Changes after review * GitHub Action: Apply Pep8-formatting --------- Co-authored-by: github-actions --- env/environment.yml | 1 + jobs/tools/ICON_to_point.py | 355 ++++++++++++++++++++++++++++++++++++ 2 files changed, 356 insertions(+) create mode 100644 jobs/tools/ICON_to_point.py diff --git a/env/environment.yml b/env/environment.yml index 12f9efcf..09381fd4 100644 --- a/env/environment.yml +++ b/env/environment.yml @@ -15,6 +15,7 @@ dependencies: - pillow - xarray - cdsapi + - scikit-learn - sphinx - sphinx_rtd_theme - sphinx-copybutton diff --git a/jobs/tools/ICON_to_point.py b/jobs/tools/ICON_to_point.py new file mode 100644 index 00000000..65371be1 --- /dev/null +++ b/jobs/tools/ICON_to_point.py @@ -0,0 +1,355 @@ +import numpy as np +import xarray as xr +from sklearn.neighbors import BallTree +from scipy import argmin +import argparse + + +def get_horizontal_distances(longitude, latitude, icon_grid_path, k=5): + """ + Get horizontal distances between points and their k nearest + neighbours on the ICON grid using a quick BallTree algorithm + + Parameters + ---------- + longitude : list or 1D np.array + e.g., [12] or np.array([12,13,14]) + + latitude : list or 1D np.array + e.g., [52] or np.array([52,53,54]) + + icon_grid_path : str + Contains the path to the ICON grid + + k : int, default is 5 + Sets the number of nearest neighbours desired + + Returns + ------- + distances: 2D np.array + Contains the distance-on-a-sphere between the target point(s) + and its nearest neighbours + + indices: 2D np.array + Contains the indices to the ICON grid cells of the corresponding + nearest neighbours + """ + # Get ICON grid specifics + icon_grid = xr.open_dataset(icon_grid_path) + clon = icon_grid.clon.values + clat = icon_grid.clat.values + + # Generate BallTree + icon_lat_lon = np.column_stack([clat, clon]) + tree = BallTree(icon_lat_lon, metric='haversine') + + # Query BallTree + target_lat_lon = np.column_stack( + [np.deg2rad(latitude), np.deg2rad(longitude)]) + (distances, indices) = tree.query(target_lat_lon, + k=k, + return_distance=True) + + if np.any(distances == 0): + print( + 'The longitude/latitude coincides identically with an ICON cell, which is an issue for the inverse distance weighting.' + ) + print('I will slightly modify this value to avoid errors.') + distances[distances == 0] = 1e-12 + + if np.any(distances is np.nan): + raise ValueError( + 'The distance between ICON and your lat/lon point could not be established...' + ) + + # NB: the 'distances' are in units of radians; i.e., it assumes the Earth is a unit sphere! + # To get realistic distances, you need to multiply 'distances' with 6371e3 meters, i.e., the + # radius of the earth. However, such a constant factor cancels out when we compute the + # horizontal interpolation weights (which are normalized!), so there is no need to apply the + # multiplication with 6371e3. + + return distances, indices + + +def get_nearest_vertical_distances(model_topography, model_levels, + base_height_msl, inlet_height_agl, + interpolation_strategy): + """ + Get the 2 nearest distances between ICON grid points and specified + station altitudes + + Parameters + ---------- + model_topography : 1D np.array + This is the elevation over mean sea level of the ICON grid + + model_levels : 2D np.array + Dimensions [ICON_heights, number_of_samples] + + base_height_msl : list or 1D np.array + e.g., [20,] or np.array([72,180,40]) + + inlet_height_agl : list or 1D np.array + e.g., [15,] or np.array([15, 21, 42]) + + interpolation_strategy : list of strings + e.g., ['ground',] or ['ground','mountain','ground'] + Can be 'ground' or 'mountain', or 'middle' (the latter is between the ground and mountain approach) + 'ground' uses the model topography + station altitude over ground + 'mountain' uses the absolute altitude over mean sea level + + Returns + ------- + vertical_distances : 3D np.array + Contains the absolute (!) distance between the target point(s) + and its 2 nearest neighbour levels + + vertical_indices: 3D np.array + Contains the indices to the ICON height levels of the corresponding 2 + nearest neighbour levels + """ + # Get the target sampling altitude with a list comprehension + target_altitude = [ + model_topography.isel({ + "station": i + }).values + inlet_height_agl[i] if strategy == 'ground' else + np.repeat(base_height_msl[i], model_topography.shape[1]) + + inlet_height_agl[i] if strategy == 'mountain' else + np.repeat(base_height_msl[i], model_topography.shape[1]) / 2 + + model_topography.isel({ + "station": i + }).values / 2 + inlet_height_agl[i] + # if strategy=='middle' + for (i, strategy) in enumerate(interpolation_strategy) + ] + target_altitude = xr.DataArray(target_altitude, dims=['station', 'ncells']) + + # Select 2 closest neighbouring levels + first_negative = (model_levels <= target_altitude).argmax( + dim=model_levels.dims[0]) # First index where model lies below target + vertical_indices = np.stack( + [first_negative, first_negative - 1], + axis=0) # Second index thus lies /above/ the target + vertical_indices[:, first_negative == 0] = model_levels.values.shape[ + 0] - 1 # If no result found: sample lies below lowest model level. Set it to the lowest model level + + # Sample the corresponding vertical distances between the target and the model levels + vertical_distances = np.take_along_axis( + (model_levels - target_altitude).values, vertical_indices, axis=0) + + return np.abs(vertical_distances).T, vertical_indices.T + + +def icon_to_point(longitude, + latitude, + inlet_height_agl, + base_height_msl, + icon_field_path, + icon_grid_path, + interpolation_strategy, + k=5, + field_name=None): + """ + Function to interpolate ICON fields to point locations + + Parameters + ---------- + longitude : list or 1D np.array + e.g., [12,] or np.array([12,13,14]) + + latitude : list or 1D np.array + e.g., [52,] or np.array([52,53,54]) + + inlet_height_agl : list or 1D np.array + e.g., [20,] or np.array([72,180,40]) + This is the height of the *base station over mean sea level* + (e.g., for Cabau: base_height_msl=0, + inlet_height_agl=27) + + base_height_msl : list or 1D np.array + e.g., [15,] or np.array([15, 21, 42]) + This is the altitude of the *station above the ground* + (e.g., for Jungfraujoch: base_height_msl=3850, + inlet_height_agl=5) + + icon_field_path : str + Contains the path to the unstructured ICON output + + icon_grid_path : str + Contains the path to the ICON grid + + interpolation_strategy : list of strings + e.g., ['ground',] or ['ground','mountain','ground'] + Can be 'ground' or 'mountain', or 'middle' (the latter is between the ground and mountain approach) + 'ground' uses the model topography + station altitude over ground + 'mountain' uses the absolute altitude over mean sea level + + k : int, default is 5 + Sets the number of horizontal nearest neighbours desired + + field_name : str, or list of strings, optional + e.g. 'qv', or ['qv','temp'], or None + If no field_name is set, the whole dataset is interpolated + in the vertical and horizontal directions. + + Returns + ------- + xr.Dataset + An Xarray dataset organised by 'station', containing the original + input specifications, and the vertically and horizontally interpolated + values + """ + + # Load dataset + icon_field = xr.open_dataset(icon_field_path) + # Get dimension names + icon_heights = icon_field.z_mc.dims[ + 0] # Dimension name (something like "heights_5") + icon_cells = icon_field.z_mc.dims[ + 1] # Dimension name (something like "ncells") + icon_field[icon_cells] = icon_field[ + icon_cells] # Explicitly assign 'ncells' + + # --- Horizontal grid selection & interpolation weights + # Get k nearest horizontal distances (for use in inverse distance weighing) + horizontal_distances, icon_grid_indices = get_horizontal_distances( + longitude, latitude, icon_grid_path, k=k) + + horizontal_interp = 1 / horizontal_distances / ( + 1 / horizontal_distances).sum(axis=1, keepdims=True) + weights_horizontal = xr.DataArray(horizontal_interp, + dims=["station", icon_cells]) + ind_X = xr.DataArray(icon_grid_indices, dims=["station", icon_cells]) + icon_subset = icon_field.isel({icon_cells: ind_X}) + + # --- Vertical level selection & interpolation weights + # Get 2 nearest vertical distances (for use in linear interpolation) + model_topography = icon_subset.z_ifc[-1] + model_levels = icon_subset.z_mc + vertical_distances, icon_level_indices = get_nearest_vertical_distances( + model_topography, model_levels, inlet_height_agl, base_height_msl, + interpolation_strategy) + + vertical_interp = vertical_distances[:, :, ::-1] / (vertical_distances.sum( + axis=-1, keepdims=True)) + # Say, you have the point's vertical position, and the next two model layers are positioned at [-5, +15] meters offset. + # Then linear interpolation between those two points is simply [15/(15+5), 5/(15+5)]=[3/4 1/4]. That is what the code does (and why it reverses the order on the last axis; and why I only need the absolute vertical distances). + # (As a curiosity, linear interpolation is the same as inverse distance weighting with 2 points. But this formulation is more stable than the inverse distance weighting, as divisions with 0 may otherwise occur!) + + weights_vertical = xr.DataArray(vertical_interp, + dims=["ncells", "station", icon_heights]) + ind_Z = xr.DataArray(icon_level_indices, + dims=["ncells", "station", icon_heights]) + + # --- Generate output + # Subset the ICON field if we want only a few fields of output + if field_name is not None: + icon_subset = icon_subset[field_name] + # Include the input station parameters in the output + ds = xr.Dataset({ + 'longitude': (['station'], longitude), + 'latitude': (['station'], latitude), + 'inlet_height_agl': (['station'], inlet_height_agl), + 'base_height_msl': (['station'], base_height_msl), + 'interpolation_strategy': (['station'], interpolation_strategy) + }) + # Perform the interpolations + icon_subset = icon_subset.isel({icon_heights: ind_Z}) + icon_out = icon_subset.weighted(weights_vertical.fillna(0)).sum( + dim=icon_heights, + skipna=True).weighted(weights_horizontal).sum(dim=icon_cells) + icon_out = icon_out.where( + ~(weights_vertical.sum(dim=[icon_cells, icon_heights], + skipna=False)).isnull() + ) # Remove out of bounds values where weights_vertical has NaNs + return xr.merge([icon_out, ds]) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description='Interpolate ICON output to point locations.') + parser.add_argument('-lon', + dest='longitude', + default=None, + type=float, + help='Longitude of interpolation target') + parser.add_argument('-lat', + dest='latitude', + default=None, + type=float, + help='Latitude of interpolation target') + parser.add_argument( + '-asl', + dest='elevation', + default=None, + type=float, + help= + 'Station surface elevation above sea level [absolute height asl: elevation+altitude]' + ) + parser.add_argument( + '-alt', + dest='altitude', + default=None, + type=float, + help= + 'Station altitude over surface [absolute height asl: elevation+altitude]' + ) + parser.add_argument('-fields', + dest='icon_field', + default=None, + type=str, + help='The ICON output fields') + parser.add_argument('-grid', + dest='icon_grid', + default=None, + type=str, + help='The ICON grid dynamic grid file') + parser.add_argument( + '-strat', + dest='strategy', + default='ground', + type=str, + help= + 'The interpolation strategy (should be "mountain", "ground", or "middle")' + ) + parser.add_argument( + '-k', + dest='k', + default=4, + type=int, + help='Number of nearest neighbours to interpolate with (e.g., 4 or 5)') + parser.add_argument( + '-field_name', + dest='field_name', + default=None, + type=str, + help='Field name to extract (if left out, all variables are extracted)' + ) + parser.add_argument('-output', + dest='output_dest', + default=None, + type=str, + help='Output NetCDF destination') + args = parser.parse_args() + + # Example run (note: most inputs should be lists, and the performance is optimized for these lists!) + output = icon_to_point(longitude=[ + args.longitude, + ], + latitude=[ + args.latitude, + ], + inlet_height_agl=[ + args.elevation, + ], + base_height_msl=[ + args.altitude, + ], + icon_field_path=args.icon_field, + icon_grid_path=args.icon_grid, + interpolation_strategy=[ + args.strategy, + ], + k=args.k, + field_name=args.field_name) + output.to_netcdf(args.output_dest) From 008bf17c4e9968c1fdb7d559b7af56fd6db8f016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20J=C3=A4hn?= Date: Wed, 7 Feb 2024 09:54:35 +0100 Subject: [PATCH 4/7] Enable asynchronous jobs (#54) * GitHub Action: Apply Pep8-formatting * Small fix * GitHub Action: Apply Pep8-formatting * Format duration * Remove --wait from submit function * Let geosp be a separate job * GitHub Action: Apply Pep8-formatting * Add run_chain argument to process specified chunk * GitHub Action: Apply Pep8-formatting * Fix datetime comparison in int2lm * Submit all jobs as sbatch * GitHub Action: Apply Pep8-formatting * Use existing submit() function and only return job_id * GitHub Action: Apply Pep8-formatting * Fix prepare_data * Disable logging for individual jobs * GitHub Action: Apply Pep8-formatting * Write casename into logfile * Fix timers for jobs * GitHub Action: Apply Pep8-formatting * Use UTC times * GitHub Action: Apply Pep8-formatting * More async jobs and workflows * GitHub Action: Apply Pep8-formatting * Add logging to new jobs * GitHub Action: Apply Pep8-formatting * Remove unused imports * Remove global icon-art from prepare_data * GitHub Action: Apply Pep8-formatting * Replace os.path with Pathlib * GitHub Action: Apply Pep8-formatting * Fix for PosixPaths * ADD: convenience function for slurm job info * REF: move get_job_info method to the end of the class definition * GitHub Action: Apply Pep8-formatting * Add some docstrings * Fix quotes for f-strings * Add imports for art-global job * Add dependencies for all icon workflows * Fix pathname * GitHub Action: Apply Pep8-formatting * Fix chunk calculation * Add icontools job * GitHub Action: Apply Pep8-formatting * Add icontools to dependencies * Modify docstrings * Some code cleanup * fix(icontools): remove unsused packages + fix dependency logic - The `icontools` job already depends on `prepapre_data`, no need to add a `copy_id` in the dependencies (which was anyways undefinied in this scope). - The name of the first argument of `cfg.submit()` must be 'icontools' so that all the sub job ids are associated with the icontools job and are taken into account for other jobs depending on it (icon). Otherwise, icon will find no dependency in `cfg.job_ids['current']['icontools']`. - `cfg.get_job_info()` should be used later in `run_chain.py` to monitor time for all async jobs. Currently the reported time is only the submission time. * Make prepare_art_global dependent on previous icon * Fix import * Explicitly set async variable * Add logfile for icontools * Set variables for icontools * Revert "Explicitly set async variable" This reverts commit 99b96cf7beda6d143c9fa9198ee5be75a6366ee8. * Define sequential workflow in icon-seq-test * Make cosmo-ghg workflow async * Add info about (a)sync mode * fix: also launch waiting job when some workflow jobs failed * add: other keys to default job info dict * fix: empty current job ids before each chunk * GitHub Action: Apply Pep8-formatting * Split prepare_data into cosmo and icon * Remove unused imports * GitHub Action: Apply Pep8-formatting * Rename prepare_data job in workflows * Rename prepare_data in icon-seq case * Set additional cfg variables in prepare_icon * GitHub Action: Apply Pep8-formatting * Time logging for all jobs * Merge geosp into prepare_art * GitHub Action: Apply Pep8-formatting * Include oem in icon-art-oem workflow * Fix icon job * Move geosp to icontools job * GitHub Action: Apply Pep8-formatting * add: placeholder for monitoring async jobs * Run geosp after icontools * Remove oem job from icon-art-oem case * Change to current logfile within jobs * GitHub Action: Apply Pep8-formatting * Add missing log inits * Configure root logger * set logger * Fix logger * Format logging output * Introduce BASIC_PYTHON_JOB option to call jobs directly in async mode * GitHub Action: Apply Pep8-formatting * add: only submit basic python jobs through a nested run_chain * GitHub Action: Apply Pep8-formatting * fix: loop over jobs in run_chunk * ref: job_id becomes chunk_id reflects reality and avoids confusion with actual jobs id * GitHub Action: Apply Pep8-formatting * fix: leftover `job_id` -> `chunk_id` * GitHub Action: Apply Pep8-formatting * add(untested): Slurm monitoring * GitHub Action: Apply Pep8-formatting * Add BASIC_PYHTON_JOB to missing jobs * Fix function arguments * Small fix and hint to KeyError * GitHub Action: Apply Pep8-formatting * ref(slurm summary): streamline code a bit * GitHub Action: Apply Pep8-formatting * Some settings for cosmo-ghg case * afterany -> afterok for wait job * Comment some function calls * add:ref: remove unused `info_requests` + print failing jobs * fix: job summary for previous chunk, not current * fix: reactivate empty current job ids at beginning of chunk * fix: only wait and monitor if not very first chunk * GitHub Action: Apply Pep8-formatting * ref: move icon-art error handling in slurm job itself * fix: remove BASIC_PYTHON_JOB workaround for icon * fix(icon.py): escape curly brackets for string formatting * fix(icon): escape curly brackets in python way * Add walltime and remove conda activation * GitHub Action: Apply Pep8-formatting * Set walltime correctly * Fix call to handle_error function * Set walltimes for icon workflows * Debug * Remove job_ids override * ref(config): clean up * Add smaller walltime to wait job * Remove prints * Some fixes for cosmo case * Remove model check * Don't pass logfile anymore * GitHub Action: Apply Pep8-formatting * Submit int2lm and cosmo jobs correctly * GitHub Action: Apply Pep8-formatting * Small fixes for int2lm and cosmo * Store job scripts in separate directory * Add BASIC_PYTHON_JOB to int2lm * GitHub Action: Apply Pep8-formatting * Add post_cosmo dependency * Bugfixes for cosmo jobs * Further fixes * Make post_cosmo a submit job * Fix post_cosmo * Fix post_cosmo * ref: refactor cycling and monitoring - Regroup waiting, monitoring nd cycling in a single `Config.cycle()` method. - write chunk monitoring info into chain log file * GitHub Action: Apply Pep8-formatting * Fix config variables * Fix log file output * Formatting * Remove time logging from jobs * GitHub Action: Apply Pep8-formatting * Fix for icon job * GitHub Action: Apply Pep8-formatting * ref: exception handling in Config.submit() * Change table cell widths * Remove old way of logging * Cleanup * NNodes -> N * GitHub Action: Apply Pep8-formatting * Fix for N/NNodes * GitHub Action: Apply Pep8-formatting * Yet another fix for N/NNodes * Simplify job names * Change missing job names * Fix syntax error from commit 8810dcf * GitHub Action: Apply Pep8-formatting * Just jobname for jobs * Cleaner console output * GitHub Action: Apply Pep8-formatting * Unify restart and spinup runs * GitHub Action: Apply Pep8-formatting * Complete config file for spinup test * Fix for spinup * GitHub Action: Apply Pep8-formatting * Fix 2 for spinup * Fancy formatting * Define separate spinup workflow * Fix formatting (hopefully) * Aligning case + workflow * Custom workflow_name and improve check * Remove workflow_name check in jobs * GitHub Action: Apply Pep8-formatting * Bugfix in cosmo job * Remove restart info * Compute chunks separately * GitHub Action: Apply Pep8-formatting * Add function to get previous chunk ID * GitHub Action: Apply Pep8-formatting * Directly get previous chunk id * Further cleanup and refactoring * GitHub Action: Apply Pep8-formatting * Fix for chunk_id_prev * Fix * Save total chunk list * Fix restart variables * Don't print chunk list twice * Fix for cosmo_restart_out * Remove sequential part * GitHub Action: Apply Pep8-formatting * Remove sequential case * Add dependencies to all workflows * Remove is_async config variable * Incorporate review * GitHub Action: Apply Pep8-formatting * Fix for basename * Add --wait again for seq. jobs in nested run_chain * Fixes for spinup * GitHub Action: Apply Pep8-formatting * ref: remove unnecessary if levels * del: remove unused imports * ref(basic python jobs): merge generation of script and submission The create_sbatch_script method is used nowhere else => No need to seperate generation of job script from its submission --------- Co-authored-by: github-actions Co-authored-by: Matthieu --- .gitignore | 4 +- cases/cosmo-ghg-spinup-test/config.yaml | 4 +- cases/cosmo-ghg-spinup-test/cosmo_runjob.cfg | 4 +- cases/cosmo-ghg-spinup-test/int2lm_runjob.cfg | 2 +- cases/cosmo-ghg-test/config.yaml | 4 +- cases/cosmo-ghg-test/cosmo_runjob.cfg | 4 +- cases/cosmo-ghg-test/int2lm_runjob.cfg | 2 +- cases/icon-art-global-test/config.yaml | 8 +- cases/icon-art-global-test/icon_runjob.cfg | 34 +- cases/icon-art-oem-test/config.yaml | 9 +- cases/icon-art-oem-test/icon_runjob.cfg | 16 +- .../icontools_remap_00_lbc_runjob.cfg | 2 +- .../icontools_remap_ic_chem_runjob.cfg | 2 +- .../icontools_remap_ic_runjob.cfg | 2 +- .../icontools_remap_lbc_chem_runjob.cfg | 2 +- .../icontools_remap_lbc_rest_runjob.cfg | 2 +- cases/icon-test/config.yaml | 10 +- cases/icon-test/icon_runjob.cfg | 8 +- .../icontools_remap_00_lbc_runjob.cfg | 2 +- cases/icon-test/icontools_remap_ic_runjob.cfg | 2 +- .../icontools_remap_lbc_rest_runjob.cfg | 2 +- config.py | 609 +++++++++++++ config/models.yaml | 24 - jenkins/scripts/jenkins.sh | 10 +- jobs/__init__.py | 7 +- jobs/biofluxes.py | 13 +- jobs/check_output.py | 20 +- jobs/cosmo.py | 118 +-- jobs/emissions.py | 13 +- jobs/icon.py | 68 +- jobs/icontools.py | 110 +++ jobs/int2lm.py | 42 +- jobs/obs_nudging.py | 8 +- jobs/octe.py | 7 +- jobs/oem.py | 15 +- jobs/online_vprm.py | 10 +- jobs/photo_rate.py | 8 +- jobs/post_cosmo.py | 54 +- jobs/post_int2lm.py | 12 +- jobs/prepare_art.py | 55 ++ jobs/prepare_art_global.py | 180 ++++ jobs/prepare_art_oem.py | 86 ++ jobs/prepare_cosmo.py | 247 +++++ jobs/prepare_data.py | 678 -------------- jobs/prepare_icon.py | 98 ++ jobs/reduce_output.py | 16 +- jobs/tools/__init__.py | 15 +- jobs/tools/check_model.py | 6 +- jobs/verify_chain.py | 7 +- run_chain.py | 844 ++++-------------- workflows.yaml | 237 +++++ 51 files changed, 2062 insertions(+), 1680 deletions(-) create mode 100644 config.py delete mode 100644 config/models.yaml create mode 100644 jobs/icontools.py create mode 100644 jobs/prepare_art.py create mode 100644 jobs/prepare_art_global.py create mode 100644 jobs/prepare_art_oem.py create mode 100644 jobs/prepare_cosmo.py delete mode 100644 jobs/prepare_data.py create mode 100644 jobs/prepare_icon.py create mode 100644 workflows.yaml diff --git a/.gitignore b/.gitignore index efb2d3f0..b2df1de5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,6 @@ input_processing-chain.tgz input/ output/ work/ -src/*/ +ext/*/ *.code-workspace -.vscode/ \ No newline at end of file +.vscode/ diff --git a/cases/cosmo-ghg-spinup-test/config.yaml b/cases/cosmo-ghg-spinup-test/config.yaml index 6bd84d1a..b52048ba 100644 --- a/cases/cosmo-ghg-spinup-test/config.yaml +++ b/cases/cosmo-ghg-spinup-test/config.yaml @@ -1,7 +1,9 @@ # Configuration file for the 'cosmo-ghg-spinup-test' case with COSMO-GHG -model: cosmo-ghg +workflow: cosmo-ghg-spinup constraint: gpu +run_on: gpu +compute_queue: normal ntasks_per_node: 12 restart_step: PT6H spinup: 3 diff --git a/cases/cosmo-ghg-spinup-test/cosmo_runjob.cfg b/cases/cosmo-ghg-spinup-test/cosmo_runjob.cfg index ca14d636..608b8d15 100644 --- a/cases/cosmo-ghg-spinup-test/cosmo_runjob.cfg +++ b/cases/cosmo-ghg-spinup-test/cosmo_runjob.cfg @@ -1,5 +1,5 @@ #!/bin/bash -l -#SBATCH --job-name="cosmo_{cfg.startdate_sim_yyyymmddhh}_{cfg.forecasttime}" +#SBATCH --job-name=cosmo #SBATCH --account={cfg.compute_account} #SBATCH --time={walltime} #SBATCH --nodes={np_tot} @@ -34,7 +34,7 @@ echo "============== StartTime: `date +%s` s" echo "============== StartTime: `date`" echo "=====================================================" -srun -u ./{execname} >> {logfile} 2>&1 +srun -u ./{cfg.cosmo_execname} >> {logfile} 2>&1 pid=$? echo "=====================================================" diff --git a/cases/cosmo-ghg-spinup-test/int2lm_runjob.cfg b/cases/cosmo-ghg-spinup-test/int2lm_runjob.cfg index c3c80e53..9a3ae2e0 100644 --- a/cases/cosmo-ghg-spinup-test/int2lm_runjob.cfg +++ b/cases/cosmo-ghg-spinup-test/int2lm_runjob.cfg @@ -1,5 +1,5 @@ #!/bin/bash -l -#SBATCH --job-name=int2lm_{cfg.startdate_sim_yyyymmddhh}_{cfg.enddate_sim_yyyymmddhh} +#SBATCH --job-name=int2lm #SBATCH --account={cfg.compute_account} #SBATCH --time={walltime} #SBATCH --nodes={nodes} diff --git a/cases/cosmo-ghg-test/config.yaml b/cases/cosmo-ghg-test/config.yaml index 15d03ed5..b954e0f2 100644 --- a/cases/cosmo-ghg-test/config.yaml +++ b/cases/cosmo-ghg-test/config.yaml @@ -1,7 +1,9 @@ # Configuration file for the 'cosmo-ghg-test' case with COSMO-GHG -model: cosmo-ghg +workflow: cosmo-ghg constraint: gpu +run_on: gpu +compute_queue: normal ntasks_per_node: 12 restart_step: PT6H startdate: 2015-01-01T00:00:00Z diff --git a/cases/cosmo-ghg-test/cosmo_runjob.cfg b/cases/cosmo-ghg-test/cosmo_runjob.cfg index ca14d636..608b8d15 100644 --- a/cases/cosmo-ghg-test/cosmo_runjob.cfg +++ b/cases/cosmo-ghg-test/cosmo_runjob.cfg @@ -1,5 +1,5 @@ #!/bin/bash -l -#SBATCH --job-name="cosmo_{cfg.startdate_sim_yyyymmddhh}_{cfg.forecasttime}" +#SBATCH --job-name=cosmo #SBATCH --account={cfg.compute_account} #SBATCH --time={walltime} #SBATCH --nodes={np_tot} @@ -34,7 +34,7 @@ echo "============== StartTime: `date +%s` s" echo "============== StartTime: `date`" echo "=====================================================" -srun -u ./{execname} >> {logfile} 2>&1 +srun -u ./{cfg.cosmo_execname} >> {logfile} 2>&1 pid=$? echo "=====================================================" diff --git a/cases/cosmo-ghg-test/int2lm_runjob.cfg b/cases/cosmo-ghg-test/int2lm_runjob.cfg index c3c80e53..9a3ae2e0 100644 --- a/cases/cosmo-ghg-test/int2lm_runjob.cfg +++ b/cases/cosmo-ghg-test/int2lm_runjob.cfg @@ -1,5 +1,5 @@ #!/bin/bash -l -#SBATCH --job-name=int2lm_{cfg.startdate_sim_yyyymmddhh}_{cfg.enddate_sim_yyyymmddhh} +#SBATCH --job-name=int2lm #SBATCH --account={cfg.compute_account} #SBATCH --time={walltime} #SBATCH --nodes={nodes} diff --git a/cases/icon-art-global-test/config.yaml b/cases/icon-art-global-test/config.yaml index 384c51f9..2fe3f096 100644 --- a/cases/icon-art-global-test/config.yaml +++ b/cases/icon-art-global-test/config.yaml @@ -1,6 +1,6 @@ # Configuration file for the 'icon-art-global-test' case with ICON -model: icon-art-global +workflow: icon-art-global constraint: gpu run_on: cpu compute_queue: normal @@ -28,6 +28,11 @@ species_global_nudging: False species2nudge: [] nudging_step: 6 +walltime: + prepare_icon: '00:15:00' + prepare_art_global: '00:10:00' + icon: '00:05:00' + era5: inicond: False global_nudging: False @@ -67,7 +72,6 @@ icon: species_nudgingjob: icon_species_nudging.sh output_writing_step: 6 compute_queue: normal - walltime: '00:10:00' np_tot: 4 np_io: 1 np_restart: 1 diff --git a/cases/icon-art-global-test/icon_runjob.cfg b/cases/icon-art-global-test/icon_runjob.cfg index 1e324a59..d241a8cf 100644 --- a/cases/icon-art-global-test/icon_runjob.cfg +++ b/cases/icon-art-global-test/icon_runjob.cfg @@ -1,13 +1,13 @@ #!/usr/bin/env bash -#SBATCH --job-name="{cfg.casename}_{cfg.startdate_sim_yyyymmddhh}_{cfg.forecasttime}" +#SBATCH --job-name=icon #SBATCH --account={cfg.compute_account} -#SBATCH --time={cfg.icon_walltime} +#SBATCH --time={cfg.walltime_icon} #SBATCH --nodes={cfg.icon_np_tot} #SBATCH --ntasks-per-node={cfg.ntasks_per_node} #SBATCH --partition={cfg.compute_queue} #SBATCH --constraint={cfg.constraint} #SBATCH --hint=nomultithread -#SBATCH --output={logfile} +#SBATCH --output={cfg.logfile} #SBATCH --open-mode=append #SBATCH --chdir={cfg.icon_work} @@ -388,22 +388,12 @@ EOF # ---------------------------------------------------------------------- # run the model! # ---------------------------------------------------------------------- - srun ./icon.exe - - - -# ! output_nml: specifies an output stream -------------------------------------- -# &output_nml -# filetype = 4 ! output format: 2=GRIB2, 4=NETCDFv2 -# dom = -1 ! write all domains -# output_bounds = 0., 2678400., 3600. ! start, end, increment -# steps_per_file = 1 ! number of steps per file -# mode = 1 ! 1: forecast mode (relative t-axis), 2: climate mode (absolute t-axis) -# include_last = .TRUE. -# output_filename = 'ICON-ART' -# filename_format = '{cfg.icon_output}/_latlon_' ! file name base -# remap = 1 ! 1: remap to lat-lon grid -# reg_lon_def = -179.,2,179 -# reg_lat_def = 90.,-1,-90. -# ml_varlist = 'z_ifc','z_mc','pres','pres_sfc','qc','rh','rho','temp','u','v','w','group:ART_CHEMISTRY', -# / +handle_error(){{ + # Check for invalid pointer error at the end of icon-art + if grep -q "free(): invalid pointer" {cfg.logfile} && grep -q "clean-up finished" {cfg.logfile}; then + exit 0 + else + exit 1 + fi +}} +srun ./{cfg.icon_execname} || handle_error diff --git a/cases/icon-art-oem-test/config.yaml b/cases/icon-art-oem-test/config.yaml index cbc950ac..475d326a 100644 --- a/cases/icon-art-oem-test/config.yaml +++ b/cases/icon-art-oem-test/config.yaml @@ -1,6 +1,6 @@ # Configuration file for the 'icon-art-oem-test' case with ICON -model: icon-art-oem +workflow: icon-art-oem constraint: gpu run_on: cpu compute_queue: normal @@ -21,6 +21,13 @@ filename_format: _DOM_ lateral_boundary_grid_order: lateral_boundary art_input_folder: ./input/icon-art-oem/ART +walltime: + prepare_icon: '00:10:00' + icontools: '00:30:00' + prepare_art: '00:10:00' + prepare_art_oem: '00:10:00' + icon: '00:30:00' + meteo: dir: ./input/meteo prefix: ifs_ diff --git a/cases/icon-art-oem-test/icon_runjob.cfg b/cases/icon-art-oem-test/icon_runjob.cfg index 3e69720c..883c8d86 100644 --- a/cases/icon-art-oem-test/icon_runjob.cfg +++ b/cases/icon-art-oem-test/icon_runjob.cfg @@ -1,13 +1,13 @@ #!/usr/bin/env bash -#SBATCH --job-name="{cfg.casename}_{cfg.startdate_sim_yyyymmddhh}_{cfg.forecasttime}" +#SBATCH --job-name=icon #SBATCH --account={cfg.compute_account} -#SBATCH --time={cfg.icon_walltime} +#SBATCH --time={cfg.walltime_icon} #SBATCH --nodes={cfg.icon_np_tot} #SBATCH --ntasks-per-node={cfg.ntasks_per_node} #SBATCH --partition={cfg.compute_queue} #SBATCH --constraint={cfg.constraint} #SBATCH --hint=nomultithread -#SBATCH --output={logfile} +#SBATCH --output={cfg.logfile} #SBATCH --open-mode=append #SBATCH --chdir={cfg.icon_work} @@ -368,4 +368,12 @@ EOF # ---------------------------------------------------------------------- # run the model! # ---------------------------------------------------------------------- - srun ./icon.exe +handle_error(){{ + # Check for invalid pointer error at the end of icon-art + if grep -q "free(): invalid pointer" {cfg.logfile} && grep -q "clean-up finished" {cfg.logfile}; then + exit 0 + else + exit 1 + fi +}} +srun ./{cfg.icon_execname} || handle_error diff --git a/cases/icon-art-oem-test/icontools_remap_00_lbc_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_00_lbc_runjob.cfg index a93ac550..1f454071 100644 --- a/cases/icon-art-oem-test/icontools_remap_00_lbc_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_00_lbc_runjob.cfg @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#SBATCH --job-name="iconsub_{cfg.startdate_sim_yyyymmddhh}" +#SBATCH --job-name=iconsub #SBATCH --account={cfg.compute_account} #SBATCH --chdir={cfg.icon_work} #SBATCH --partition={cfg.compute_queue} diff --git a/cases/icon-art-oem-test/icontools_remap_ic_chem_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_ic_chem_runjob.cfg index 46ed8187..48fb9f3a 100644 --- a/cases/icon-art-oem-test/icontools_remap_ic_chem_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_ic_chem_runjob.cfg @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#SBATCH --job-name="{cfg.casename}_{cfg.startdate_sim_yyyymmddhh}_{cfg.forecasttime}" +#SBATCH --job-name=iconremap_ic_chem #SBATCH --account={cfg.compute_account} #SBATCH --chdir={cfg.icon_work} #SBATCH --partition={cfg.compute_queue} diff --git a/cases/icon-art-oem-test/icontools_remap_ic_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_ic_runjob.cfg index e31b9eb5..e704afb8 100644 --- a/cases/icon-art-oem-test/icontools_remap_ic_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_ic_runjob.cfg @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#SBATCH --job-name="iconremap_{cfg.startdate_sim_yyyymmddhh}" +#SBATCH --job-name=iconremap_ic #SBATCH --account={cfg.compute_account} #SBATCH --chdir={cfg.icon_work} #SBATCH --partition={cfg.compute_queue} diff --git a/cases/icon-art-oem-test/icontools_remap_lbc_chem_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_lbc_chem_runjob.cfg index 2d21fe35..e629494b 100644 --- a/cases/icon-art-oem-test/icontools_remap_lbc_chem_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_lbc_chem_runjob.cfg @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#SBATCH --job-name="{cfg.casename}_{cfg.startdate_sim_yyyymmddhh}_{cfg.forecasttime}" +#SBATCH --job-name=iconremap_lbc #SBATCH --account={cfg.compute_account} #SBATCH --chdir={cfg.icon_work} #SBATCH --partition={cfg.compute_queue} diff --git a/cases/icon-art-oem-test/icontools_remap_lbc_rest_runjob.cfg b/cases/icon-art-oem-test/icontools_remap_lbc_rest_runjob.cfg index b0950efa..38dc6b07 100644 --- a/cases/icon-art-oem-test/icontools_remap_lbc_rest_runjob.cfg +++ b/cases/icon-art-oem-test/icontools_remap_lbc_rest_runjob.cfg @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#SBATCH --job-name="iconremap_lbc_{cfg.startdate_sim_yyyymmddhh}" +#SBATCH --job-name=iconremap_lbc #SBATCH --account={cfg.compute_account} #SBATCH --chdir={cfg.icon_work} #SBATCH --partition={cfg.compute_queue} diff --git a/cases/icon-test/config.yaml b/cases/icon-test/config.yaml index 722a2844..06065e42 100644 --- a/cases/icon-test/config.yaml +++ b/cases/icon-test/config.yaml @@ -1,6 +1,6 @@ -# Configuration file for the 'icon-test' case with ICON +# Configuration file for the 'icon-async-test' case with ICON -model: icon +workflow: icon constraint: gpu run_on: cpu compute_queue: normal @@ -18,6 +18,11 @@ output_filename: NWP_LAM filename_format: _DOM_ lateral_boundary_grid_order: lateral_boundary +walltime: + prepare_icon: '00:10:00' + icontools: '00:30:00' + icon: '00:30:00' + meteo: dir: ./input/meteo prefix: ifs_ @@ -44,7 +49,6 @@ icon: binary_file: ./ext/icon/bin/icon runjob_filename: icon_runjob.cfg compute_queue: normal - walltime: '00:10:00' np_tot: 8 np_io: 1 np_restart: 1 diff --git a/cases/icon-test/icon_runjob.cfg b/cases/icon-test/icon_runjob.cfg index 09ff2c3a..88c8b735 100755 --- a/cases/icon-test/icon_runjob.cfg +++ b/cases/icon-test/icon_runjob.cfg @@ -1,13 +1,13 @@ #!/usr/bin/env bash -#SBATCH --job-name="{cfg.casename}_{cfg.startdate_sim_yyyymmddhh}_{cfg.enddate_sim_yyyymmddhh}" +#SBATCH --job-name=icon #SBATCH --account={cfg.compute_account} -#SBATCH --time={cfg.icon_walltime} +#SBATCH --time={cfg.walltime_icon} #SBATCH --nodes={cfg.icon_np_tot} #SBATCH --ntasks-per-node={cfg.ntasks_per_node} #SBATCH --partition={cfg.compute_queue} #SBATCH --constraint={cfg.constraint} #SBATCH --hint=nomultithread -#SBATCH --output={logfile} +#SBATCH --output={cfg.logfile} #SBATCH --open-mode=append #SBATCH --chdir={cfg.icon_work} @@ -342,4 +342,4 @@ EOF # ---------------------------------------------------------------------- # run the model! # ---------------------------------------------------------------------- - srun ./icon.exe +srun ./{cfg.icon_execname} || handle_error diff --git a/cases/icon-test/icontools_remap_00_lbc_runjob.cfg b/cases/icon-test/icontools_remap_00_lbc_runjob.cfg index a93ac550..1f454071 100755 --- a/cases/icon-test/icontools_remap_00_lbc_runjob.cfg +++ b/cases/icon-test/icontools_remap_00_lbc_runjob.cfg @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#SBATCH --job-name="iconsub_{cfg.startdate_sim_yyyymmddhh}" +#SBATCH --job-name=iconsub #SBATCH --account={cfg.compute_account} #SBATCH --chdir={cfg.icon_work} #SBATCH --partition={cfg.compute_queue} diff --git a/cases/icon-test/icontools_remap_ic_runjob.cfg b/cases/icon-test/icontools_remap_ic_runjob.cfg index e31b9eb5..e704afb8 100755 --- a/cases/icon-test/icontools_remap_ic_runjob.cfg +++ b/cases/icon-test/icontools_remap_ic_runjob.cfg @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#SBATCH --job-name="iconremap_{cfg.startdate_sim_yyyymmddhh}" +#SBATCH --job-name=iconremap_ic #SBATCH --account={cfg.compute_account} #SBATCH --chdir={cfg.icon_work} #SBATCH --partition={cfg.compute_queue} diff --git a/cases/icon-test/icontools_remap_lbc_rest_runjob.cfg b/cases/icon-test/icontools_remap_lbc_rest_runjob.cfg index b0950efa..38dc6b07 100755 --- a/cases/icon-test/icontools_remap_lbc_rest_runjob.cfg +++ b/cases/icon-test/icontools_remap_lbc_rest_runjob.cfg @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#SBATCH --job-name="iconremap_lbc_{cfg.startdate_sim_yyyymmddhh}" +#SBATCH --job-name=iconremap_lbc #SBATCH --account={cfg.compute_account} #SBATCH --chdir={cfg.icon_work} #SBATCH --partition={cfg.compute_queue} diff --git a/config.py b/config.py new file mode 100644 index 00000000..18293554 --- /dev/null +++ b/config.py @@ -0,0 +1,609 @@ +from subprocess import run, CalledProcessError +import os +import yaml +from datetime import timedelta + +from jobs import tools +from pathlib import Path + + +class Config(): + + def __init__(self, casename): + """Initialize an instance of the Config class. + + Initializes an instance of the Config class with user-specific + and default attributes. The class represents a processing chain for a + particular case, and its attributes are populated based on the provided + `casename`. + + Parameters + ---------- + casename : str + The identifier for the case, typically specifying the configuration + and settings to be used in the processing chain. + + Attributes + ---------- + user_name : str + The username of the current user, obtained from the 'USER' environment variable. + email : str + The user's email address, initially set to None and updated using the `set_email` method. + casename : str + The specified case name for the processing chain. + chain_src_dir : str + The source directory for the processing chain, typically the current working directory. + case_path : str + The path to the case directory under 'cases/' for the specified `casename`. + work_root : str + The root directory for processing chain execution, typically located under the source directory. + + Notes + ----- + The method also loads user-defined attributes from the configuration file, + sets specific settings based on the node type ('gpu' or 'mc'), and initializes + other instance-specific attributes. + """ + # Global attributes (initialized with default values) + self.user_name = os.environ['USER'] + self.set_email() + self.casename = casename + self.set_account() + + self.chain_src_dir = Path.cwd() + self.case_path = self.chain_src_dir / 'cases' / self.casename + self.work_root = self.chain_src_dir / 'work' + + # User-defined attributes from config file + self.load_config_file() + + # Set case root + self.case_root = self.work_root / self.casename + self.log_file = self.case_root / "chain_status.log" + + # Set workflow and async attributes and initiate job ids dict + self.set_workflow() + + # Specific settings based on the node type ('gpu' or 'mc') + self.set_node_info() + + def load_config_file(self): + """Load configuration settings from a YAML file and set them as attributes. + + This method reads the configuration settings from a YAML file located in + the 'cases/casename' directory and sets them as attributes of the instance. + + Returns + ------- + Config + The same `Config` instance with configuration settings as attributes. + + Raises + ------ + FileNotFoundError + If the specified configuration file or case directory is not found. + + Notes + ----- + If the configuration file does not exist, the method will attempt to suggest + a similar case directory based on a Levenshtein distance comparison with + existing case directories. The method directly assigns values from the + configuration file to instance attributes for easy access. + """ + cfg_file = Path('cases', self.casename, 'config.yaml').resolve() + + if not cfg_file.is_file(): + all_cases = [ + path.name for path in os.scandir('cases') if path.is_dir() + ] + closest_name = min([(tools.levenshtein(self.casename, name), name) + for name in all_cases], + key=lambda x: x[0])[1] + raise FileNotFoundError( + f"Case-directory '{self.casename}' not found, did you mean '{closest_name}'?" + ) + + try: + with cfg_file.open('r') as yaml_file: + cfg_data = yaml.load(yaml_file, Loader=yaml.FullLoader) + except FileNotFoundError: + raise FileNotFoundError( + f"No file 'config.yaml' in {cfg_file.parent}") + + # Directly assign values to instance attributes + for key, value in cfg_data.items(): + setattr(self, key, value) + + def set_account(self): + """Set the compute account based on user information. + + This method determines the compute account to be used based on the user's + name and system configuration. + + Notes + ----- + - If the user name is 'jenkins', the compute account is set to 'g110' for + Jenkins testing. + - If an account is specified in the user's '~/.acct' file, it will be used + as the compute account. + - If neither of the above conditions is met, the standard account is + determined using the 'id -gn' command. + """ + if self.user_name == 'jenkins': + # g110 account for Jenkins testing + self.compute_account = 'g110' + elif (p := Path.home() / '.acct').exists(): + # Use account specified in ~/.acct file + with p.open('r') as file: + self.compute_account = file.read().rstrip() + else: + # Use standard account + self.compute_account = os.popen("id -gn").read().splitlines()[0] + + def set_node_info(self): + """Set node-specific information based on configuration settings. + + This method configures node-specific settings, such as the number of tasks + per node and CUDA-related environment variables, based on the provided + configuration settings in the instance. + + Returns + ------- + Config + The same `Config` instance with updated node-specific attributes. + + Raises + ------ + ValueError + If the 'constraint' or 'run_on' configuration values are invalid. + """ + if self.constraint == 'gpu': + if hasattr(self, 'icon'): + if self.run_on == 'gpu': + self.ntasks_per_node = 1 + elif self.run_on == 'cpu': + self.ntasks_per_node = 12 + else: + raise ValueError( + "Invalid value for 'run_on' in the configuration." + "It should be either 'gpu' or 'cpu'.") + else: + self.ntasks_per_node = 12 + self.mpich_cuda = ('export MPICH_RDMA_ENABLED_CUDA=1\n' + 'export MPICH_G2G_PIPELINE=256\n' + 'export CRAY_CUDA_MPS=1\n') + elif self.constraint == 'mc': + self.ntasks_per_node = 36 + self.mpich_cuda = '' + else: + raise ValueError( + "Invalid value for 'constraint' in the configuration." + "It should be either 'gpu' or 'mc'.") + + def set_workflow(self): + """set workflow and async attr, initiate job ids dict""" + # If a workflow name is specified, load from workflows.yaml + if isinstance(self.workflow, str): + self.workflow_name = self.workflow + with open('workflows.yaml') as file: + workflows = yaml.safe_load(file) + self.workflow = workflows[self.workflow_name] + # Otherwise, use custom workflow from config.yaml directly + elif isinstance(self.workflow, dict): + self.workflow_name = 'custom' + else: + raise InvalidWorkflowType( + "Invalid workflow type. Must be either a string or a dictionary." + ) + + assert 'dependencies' in self.workflow, "Missing 'dependencies' in workflow. Exiting." + + # Initiate empty job ids dictionnary so that it can be filled in later + self.job_ids = {'current': {}, 'previous': {}} + + def set_restart_step_hours(self): + """Set the restart step in hours. + + Converts the 'restart_step' attribute, which is in ISO8601 duration format, + to hours and stores the result in the 'restart_step_hours' attribute. + + Returns + ------- + Config + The same `Config` instance with the 'restart_step_hours' attribute set. + """ + self.restart_step_hours = int( + tools.iso8601_duration_to_hours(self.restart_step)) + + def set_email(self): + """Set the user's email address based on system configuration. + + This method determines the user's email address based on the user's name + and system configuration. + + Returns + ------- + Config + The same `Config` instance with the `user_mail` attribute set. + + Notes + ----- + - If the user name is 'jenkins', the user's email address is set to None. + - If an email address is specified in the user's '~/.forward' file, it will + be used as the user's email address. + - If neither of the above conditions is met, the user's email address is set + to None. + """ + if self.user_name == 'jenkins': + self.user_mail = None + elif (p := Path.home() / '.forward').exists(): + with p.open('r') as file: + self.user_mail = file.read().rstrip() + else: + self.user_mail = None + + def print_config(self): + """Print the configuration attributes and their values. + + This method displays the configuration attributes and their corresponding + values in a formatted manner. Lists and dictionaries within the configuration + are also displayed with appropriate indentation. + + Notes + ----- + - The maximum column width for the attribute names is automatically determined. + - The method prints the attribute name, its type, and its value. + - If an attribute is a list, it is displayed with each item indented. + - If an attribute is a dictionary, it is also displayed with each key-value + pair indented. + """ + # max_col_width = max(len(key) for key in vars(self)) + 1 + max_col_width = 27 + + print("\nConfiguration:") + print(f"{'Attribute':<{max_col_width}} Type Value") + print("-" * 80) + for key, value in vars(self).items(): + if isinstance(value, list): + # If the value is a list, format it with indentation + print(f"{key:<{max_col_width}} list") + for item in value: + item_type = "Path" if type( + item).__name__ == "PosixPath" else type(item).__name__ + print(f" - {item:<{max_col_width-4}} {item_type}") + elif isinstance(value, dict): + # If the value is a dictionary, format it as before + print(f"{key:<{max_col_width}} dict") + for sub_key, sub_value in value.items(): + sub_value_type = "Path" if type( + sub_value).__name__ == "PosixPath" else type( + sub_value).__name__ + print( + f" - {sub_key:<{max_col_width-4}} {sub_value_type:<4} {sub_value}" + ) + else: + # Standard output + key_type = type(key).__name__ + print(f"{key:<{max_col_width}} {key_type:<4} {value}") + + def convert_paths_to_absolute(self, dct=None): + """Convert relative file paths to absolute paths in the configuration. + + Recursively convert all strings starting with './' in the instance + attributes to absolute paths. + """ + if dct is None: + self.convert_paths_to_absolute(dct=vars(self)) + else: + for k, v in dct.items(): + if isinstance(v, dict): + self.convert_paths_to_absolute(dct=v) + elif isinstance(v, str) and v.startswith('./'): + dct[k] = Path(v).absolute() + + def create_vars_from_dicts(self, dct=None, key=None): + """Create instance attributes from dictionary entries in the configuration. + + This method recursively iterates through the instance's attribute dictionary + and checks for dictionary values. For each dictionary encountered, it creates + new instance attributes by concatenating the original attribute name and the + dictionary key, and assigns the corresponding values. + """ + if dct is None: + self.create_vars_from_dicts(dct=vars(self).copy()) + else: + for k, v in dct.items(): + subkey = k if key is None else key + '_' + k + if isinstance(v, dict): + self.create_vars_from_dicts(dct=v, key=subkey) + else: + setattr(self, subkey, v) + + def get_chunk_list(self): + self.chunk_list = [] + for startdate_sim in tools.iter_hours(self.startdate, self.enddate, + self.restart_step_hours): + enddate_sim = startdate_sim + timedelta( + hours=self.restart_step_hours) + if 'spinup' in self.workflow['features'] and hasattr( + self, 'spinup'): + if startdate_sim > self.startdate: + startdate_sim = startdate_sim - timedelta( + hours=self.spinup) + + startdate_sim_yyyymmddhh = startdate_sim.strftime("%Y%m%d%H") + enddate_sim_yyyymmddhh = enddate_sim.strftime("%Y%m%d%H") + chunk_id = f"{startdate_sim_yyyymmddhh}_{enddate_sim_yyyymmddhh}" + + if enddate_sim > self.enddate: + continue + + self.chunk_list.append(chunk_id) + + def get_previous_chunk_id(self, current_chunk_id): + """Get the previous chunk ID based on the current `chunk_id`""" + index = self.chunk_list.index(current_chunk_id) + if index > 0: + self.chunk_id_prev = self.chunk_list[index - 1] + else: + self.chunk_id_prev = None + + def get_dep_ids(self, job_name, add_dep=None): + """Get dependency job ids for `job_name`""" + # Initial list of dependencies + if add_dep is not None: + if isinstance(add_dep, int): + dep_id_list = [add_dep] + else: + try: + dep_id_list = list(add_dep) + except TypeError: + print("add_dep must be an iterable") + else: + dep_id_list = [] + + # Add job dependencies + if deps := self.workflow['dependencies'].get(job_name): + for stage in 'previous', 'current': + if dep_stage := deps.get(stage): + for job in dep_stage: + # Could be that dep job id does not exist, e.g., + # if dep job is deactivated or it's the first chunk + if dep_id := self.job_ids[stage].get(job): + dep_id_list.extend(dep_id) + return dep_id_list + + def get_dep_cmd(self, job_name, add_dep=None): + """Generate the part of the sbatch command that sepcifies dependencies for `job_name`""" + # Needed for nested run_chain.py + if self.force_sync: + return '--wait' + + if dep_ids := self.get_dep_ids(job_name, add_dep=add_dep): + dep_str = ':'.join(map(str, dep_ids)) + return f'--dependency=afterok:{dep_str}' + + # job_name has no dependencies but still belongs to an async workflow + # so don't use --wait + return None + + def submit(self, job_name, script, add_dep=None): + """Submit job with dependencies""" + script_path = Path(script) + sbatch_cmd = ['sbatch', '--parsable'] + if dep_cmd := self.get_dep_cmd(job_name, add_dep=add_dep): + sbatch_cmd.append(dep_cmd) + sbatch_cmd.append(script_path.name) + + try: + result = run(sbatch_cmd, + cwd=script_path.parent, + capture_output=True, + check=True) + except CalledProcessError as e: + with open(self.logfile('a')) as f: + f.write(e) + raise (e) + + job_id = int(result.stdout) + print(f' └── Submitted batch job {job_id}') + + if job_name not in self.job_ids['current']: + self.job_ids['current'][job_name] = [job_id] + else: + self.job_ids['current'][job_name].append(job_id) + + return job_id + + def submit_basic_python(self, job_name): + """Create an sbatch script to launch basic python jobs individually. + Use run_chain.py arguments to submit those jobs. + """ + # Build job script + walltime = getattr(self, 'walltime', {}).get(job_name, "00:30:00") + script_lines = [ + '#!/usr/bin/env bash', + f'#SBATCH --job-name={job_name}', + '#SBATCH --nodes=1', + f'#SBATCH --time={walltime}', + f'#SBATCH --output={self.logfile}', + '#SBATCH --open-mode=append', + f'#SBATCH --account={self.compute_account}', + f'#SBATCH --partition={self.compute_queue}', + f'#SBATCH --constraint={self.constraint}', + '', + f'cd {self.chain_src_dir}', + f'./run_chain.py {self.casename} -j {job_name} -c {self.chunk_id} -f -s --no-logging', + '', + ] + + job_path = self.chain_root / 'job_scripts' + job_path.mkdir(parents=True, exist_ok=True) + job_file = job_path / f'{job_name}.sh' + with open(job_file, mode='w') as job_script: + job_script.write('\n'.join(script_lines)) + + # Submit job + self.submit(job_name, job_file) + + def wait_for_previous(self): + """Wait for all jobs of the previous stage to be finished. + + Do this by submitting a fake job depending on all jobs from the + 'previous' stage. + """ + dep_ids = [] + for ids in self.job_ids['previous'].values(): + dep_ids.extend(ids) + if dep_ids: + job_file = self.case_root / 'submit.wait.slurm' + log_file = self.case_root / 'wait.log' + dep_str = ':'.join(map(str, dep_ids)) + script_lines = [ + '#!/usr/bin/env bash', '#SBATCH --job-name="wait"', + '#SBATCH --nodes=1', '#SBATCH --time=00:01:00', + f'#SBATCH --output={log_file}', + f'#SBATCH --account={self.compute_account}', + f'#SBATCH --partition={self.compute_queue}', + f'#SBATCH --constraint={self.constraint}', + f'#SBATCH --dependency=afterany:{dep_str}', '', '# Do nothing', + 'exit 0' + ] + with open(job_file, mode='w') as wait_job: + wait_job.write('\n'.join(script_lines)) + + run(['sbatch', '--wait', job_file], check=True) + + def cycle(self): + """Cycle to next chunk + + - Wait for previous chunk to finish + - print summary of previous chunk jobs + - Check for success of all previous jobs + - cycle job ids and chunk id""" + + # - ML - + # - This method could do more of the cycling, like dates + # - The config object could host more info and cycle it instead + # of recomputing stuff like previous chunk dates + + # Skip if very first chunk + if self.job_ids['previous']: + # Wait for previous chunk to be done + self.wait_for_previous() + + # Get and print previous chunk Slurm summary + self.get_previous_slurm_summary() + self.print_previous_slurm_summary() + + # Check for success of all previous jobs + self.check_previous_chunk_success() + + # Cycle info + self.job_ids['previous'] = self.job_ids['current'] + self.previous_chunk_id = self.chunk_id + + # Monitor last chunk + if self.enddate_sim >= self.enddate: + self.wait_for_previous() + self.get_previous_slurm_summary() + self.print_previous_slurm_summary() + self.check_previous_chunk_success() + + @staticmethod + def get_job_info(job_id, + slurm_keys=['JobName', 'Elapsed', 'ExitCode'], + parse=True): + """Retrieve slurm job info as given by sacct + + if parse is True, return the raw string from sacct else parse info into a dict. + All possible keys are given by `sacct --helpformat`""" + + # Get info from sacct + cmd = ["sacct", f"--format={', '.join(slurm_keys)}", "-j", str(job_id)] + + if parse: + cmd.append("--parsable") + + info_str = run(cmd, capture_output=True, check=True).stdout + + if parse: + # Parse in a dictionnary before returning + # The inner most process should be the relevant one, hence the 1 index + slurm_info = info_str.split(b'\n')[1].split(b'|') + return {k: v.decode() for k, v in zip(slurm_keys, slurm_info)} + else: + return info_str.decode() + + def get_previous_slurm_summary(self, + info_keys=[ + 'JobName', 'JobID', 'Partition', + 'NNodes', 'State', 'Start', 'End', + 'Elapsed' + ]): + """get slurm info summary or all jobs of previous chunk""" + + # Store requested keys in object + self.info_keys = info_keys + + # Get job info for all jobs + self.slurm_info = {} + for job_name in self.jobs: + for job_id in self.job_ids['previous'][job_name]: + self.slurm_info[job_name] = [] + self.slurm_info[job_name].append( + self.get_job_info(job_id, slurm_keys=info_keys, + parse=True)) + + def print_previous_slurm_summary(self): + # Width of printed slurm piece of information + info_width = { + 'JobName': 13, + 'JobID': 8, + 'Partition': 9, + 'NNodes': 3, + 'State': 14, + 'Start': 13, + 'End': 13, + 'Elapsed': 9 + } + + # Build table header and line format + headers = [] + hlines = [] + formats = [] + for k in self.info_keys: + j = info_width[k] + kh = '#N' if k == 'NNodes' else k + formats.append(f"{{{k}:>{j}.{j}}}") + headers.append(f"{kh:>{j}.{j}}") + hlines.append("-" * j) + + table_header = '\n'.join((' '.join(headers), ' '.join(hlines))) + line_format = " ".join(formats) + + with self.log_file.open('a') as f: + f.write(f"Job summary for chunk {self.previous_chunk_id}\n") + f.write(table_header) + f.write('\n') + for job_name in self.jobs: + for info in self.slurm_info[job_name]: + f.write(line_format.format(**info)) + f.write('\n') + f.write('\n') + + def check_previous_chunk_success(self): + status = 0 + failed_jobs = [] + for job_name, info_list in self.slurm_info.items(): + for info in info_list: + if info['State'] != 'COMPLETED': + failed_jobs.append(job_name) + status += 1 + + if status > 0: + raise RuntimeError(f"The following job(s) failed: {failed_jobs}") + + +class InvalidWorkflowType(Exception): + pass diff --git a/config/models.yaml b/config/models.yaml deleted file mode 100644 index a19f188c..00000000 --- a/config/models.yaml +++ /dev/null @@ -1,24 +0,0 @@ -models: - cosmo: - jobs: ['prepare_data', 'int2lm', 'cosmo', 'post_cosmo'] - features: ['restart', 'spinup'] - cosmo-ghg: - jobs: ['prepare_data', 'emissions', 'biofluxes', 'oem', 'online_vprm', - 'int2lm', 'post_int2lm', 'cosmo', 'post_cosmo'] - features: ['restart', 'tracers', 'spinup'] - cosmo-art: - jobs: ['prepare_data', 'emissions', 'obs_nudging', 'photo_rate', - 'int2lm', 'cosmo', 'post_cosmo'] - features: ['nesting', 'spinup'] - icon: - jobs: ['prepare_data', 'icon'] - features: ['restart'] - icon-art: - jobs: ['prepare_data', 'icon'] - features: ['restart'] - icon-art-global: - jobs: ['prepare_data', 'icon'] - features: ['restart'] - icon-art-oem: - jobs: ['prepare_data', 'icon'] - features: ['restart'] diff --git a/jenkins/scripts/jenkins.sh b/jenkins/scripts/jenkins.sh index a68ce0bb..8eb4d26e 100755 --- a/jenkins/scripts/jenkins.sh +++ b/jenkins/scripts/jenkins.sh @@ -73,7 +73,7 @@ else fi # Test COSMO-GHG -if [[ -f work/cosmo-ghg-test/2015010100_6_12/checkpoints/finished/post_cosmo && "$force_execution" == false ]]; then +if [[ -f work/cosmo-ghg-test/2015010106_2015010112/checkpoints/finished/post_cosmo && "$force_execution" == false ]]; then echo cosmo-ghg test case already finished - skipping test. else echo running cosmo-ghg test case... @@ -81,7 +81,7 @@ else fi # Test COSMO-GHG (spinup) -if [[ -f work/cosmo-ghg-spinup-test/2015010106_-3_6/checkpoints/finished/post_cosmo && "$force_execution" == false ]]; then +if [[ -f work/cosmo-ghg-spinup-test/2015010109_2015010118/checkpoints/finished/post_cosmo && "$force_execution" == false ]]; then echo cosmo-ghg test case already finished - skipping test. else echo running cosmo-ghg-spinup test case... @@ -89,7 +89,7 @@ else fi # Test ICON -if [[ -f work/icon-test/2018010100_6_12/checkpoints/finished/icon && "$force_execution" == false ]]; then +if [[ -f work/icon-test/2018010106_2018010112/checkpoints/finished/icon && "$force_execution" == false ]]; then echo icon test case already finished - skipping test. else echo running icon test case... @@ -97,7 +97,7 @@ else fi # Test ICON-ART -if [[ -f work/icon-art-oem-test/2018010100_0_24/checkpoints/finished/icon && "$force_execution" == false ]]; then +if [[ -f work/icon-art-oem-test/2018010106_2018010112/checkpoints/finished/icon && "$force_execution" == false ]]; then echo icon-art test case already finished - skipping test. else echo running icon-art-oem test case... @@ -105,7 +105,7 @@ else fi # Test ICON-ART-GLOBAL -if [[ -f work/icon-art-global-test/2018010100_0_24/checkpoints/finished/icon && "$force_execution" == false ]]; then +if [[ -f work/icon-art-global-test/2018010106_2018010112/checkpoints/finished/icon && "$force_execution" == false ]]; then echo icon-art-global test case already finished - skipping test. else echo running icon-art-global test case... diff --git a/jobs/__init__.py b/jobs/__init__.py index a269fbf3..332f34a8 100644 --- a/jobs/__init__.py +++ b/jobs/__init__.py @@ -6,6 +6,7 @@ from . import cosmo from . import emissions from . import icon +from . import icontools from . import int2lm from . import obs_nudging from . import octe @@ -14,6 +15,10 @@ from . import photo_rate from . import post_cosmo from . import post_int2lm -from . import prepare_data +from . import prepare_art +from . import prepare_art_oem +from . import prepare_art_global +from . import prepare_cosmo +from . import prepare_icon from . import reduce_output from . import verify_chain diff --git a/jobs/biofluxes.py b/jobs/biofluxes.py index cd8bee49..cc9a738e 100644 --- a/jobs/biofluxes.py +++ b/jobs/biofluxes.py @@ -3,10 +3,13 @@ import os import logging -from . import tools, prepare_data +from . import tools, prepare_cosmo -def main(cfg, model_cfg): +BASIC_PYTHON_JOB = True + + +def main(cfg): """Prepare biofluxes files for COSMO simulations. Copies biofluxes files from the project folder (:attr:`cfg.vprm['dir']`) @@ -16,11 +19,9 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ - tools.check_model(cfg, 'cosmo-ghg') - cfg = prepare_data.set_cfg_variables(cfg, model_cfg) + tools.change_logfile(cfg.logfile) + prepare_cosmo.set_cfg_variables(cfg) scratch_path = os.path.join(cfg.int2lm_input, 'vprm') diff --git a/jobs/check_output.py b/jobs/check_output.py index add736c8..5ab99614 100644 --- a/jobs/check_output.py +++ b/jobs/check_output.py @@ -28,6 +28,8 @@ except ImportError: import tools +BASIC_PYTHON_JOB = True + def pkl_path(folder, pid=None): """ Returns the path (and creates it, if necessary) to the stored @@ -699,7 +701,7 @@ def create_animations(cfg): duration=300) -def main(cfg, model_cfg): +def main(cfg): """Check output variables for physical reasonability and create plots. This function checks the output variables to ensure they are in a physically @@ -712,9 +714,8 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ + tools.change_logfile(cfg.logfile) date = dt.datetime.today() to_print = """check_output @@ -724,8 +725,6 @@ def main(cfg, model_cfg): ============== StartTime: %s =====================================================""" % date.strftime("%s") - logfile = os.path.join(cfg.log_working_dir, "check_output") - logging.basicConfig(filename=logfile, level=logging.INFO) logging.info(to_print) # if cfg.compute_host!="daint": @@ -750,7 +749,7 @@ def main(cfg, model_cfg): #SBATCH --time=00:30:00 #SBATCH --constraint=mc #SBATCH --ntasks=1 -#SBATCH --output={logfile} +#SBATCH --output={cfg.logfile} export EASYBUILD_PREFIX=/store/empa/em05/easybuild @@ -780,7 +779,7 @@ def main(cfg, model_cfg): cosmo_output=cfg.cosmo_output, output_root=cfg.output_root, work_log=cfg.log_working_dir, - logfile=logfile, + logfile=cfg.logfile, chain=cfg.chain_src_dir, chain_root=cfg.chain_root, action='get_data') @@ -821,7 +820,7 @@ def main(cfg, model_cfg): casename=cfg.casename, cosmo_output=cfg.cosmo_output, output_root=cfg.output_root, - logfile=logfile, + logfile=cfg.logfile, chain=cfg.chain_src_dir, chain_root=cfg.chain_root, action='plot_maps') @@ -861,9 +860,10 @@ def main(cfg, model_cfg): logging.info(to_print) # Check for errors - with open(logfile) as f: + with open(cfg.logfile) as f: if 'ERROR' in f.read(): - raise RuntimeError('Logfile containing errors! See %s' % logfile) + raise RuntimeError('Logfile containing errors! See %s' % + cfg.logfile) if __name__ == '__main__': diff --git a/jobs/cosmo.py b/jobs/cosmo.py index 394b3eb3..a110661e 100644 --- a/jobs/cosmo.py +++ b/jobs/cosmo.py @@ -4,88 +4,38 @@ import logging import os import subprocess -import csv -from .tools import write_cosmo_input_ghg -from . import tools -from datetime import datetime, timedelta - - -def set_cfg_variables(cfg, model_cfg): - setattr(cfg, 'cosmo_base', os.path.join(cfg.chain_root, 'cosmo')) - setattr(cfg, 'cosmo_input', os.path.join(cfg.chain_root, 'cosmo', 'input')) - setattr(cfg, 'cosmo_run', os.path.join(cfg.chain_root, 'cosmo', 'run')) - setattr(cfg, 'cosmo_output', os.path.join(cfg.chain_root, 'cosmo', - 'output')) - setattr(cfg, 'cosmo_output_reduced', - os.path.join(cfg.chain_root, 'cosmo', 'output_reduced')) - - # Number of tracers - if 'tracers' in model_cfg['models'][cfg.model]['features']: - tracer_csvfile = os.path.join(cfg.chain_src_dir, 'cases', cfg.casename, - 'cosmo_tracers.csv') - if os.path.isfile(tracer_csvfile): - with open(tracer_csvfile, 'r') as csv_file: - reader = csv.DictReader(csv_file, delimiter=',') - reader = [r for r in reader if r[''] != '#'] - setattr(cfg, 'in_tracers', len(reader)) - else: - raise FileNotFoundError(f"File not found: {tracer_csvfile}") - - # tracer_start namelist paramter for spinup simulation - if hasattr(cfg, 'spinup'): - if cfg.first_one: - setattr(cfg, 'tracer_start', 0) - else: - setattr(cfg, 'tracer_start', cfg.spinup) - else: - setattr(cfg, 'tracer_start', 0) - - # asynchronous I/O - if hasattr(cfg, 'cfg.cosmo_np_io'): - if cfg.cosmo_np_io == 0: - setattr(cfg, 'lasync_io', '.FALSE.') - setattr(cfg, 'num_iope_percomm', 0) - else: - setattr(cfg, 'lasync_io', '.TRUE.') - setattr(cfg, 'num_iope_percomm', 1) - - return cfg +from pathlib import Path +from datetime import datetime +from .tools import write_cosmo_input_ghg +from . import tools, prepare_cosmo -def main(cfg, model_cfg): - """Setup the namelists for a COSMO tracer run and submit the job to the queue. +BASIC_PYTHON_JOB = True - Necessary for both COSMO and COSMOART simulations. - Decide if the soil model should be TERRA or TERRA multi-layer depending on - the ``startdate`` of the simulation. +def main(cfg): + """Setup the namelists for a COSMO run and submit the job to the queue. Create necessary directory structure to run COSMO (run, output, and restart directories, defined in ``cfg.cosmo_run``, ``cfg.cosmo_output``, and ``cfg.cosmo_restart_out``). Copy the COSMO-executable from - ``cfg.cosmo_bin`` to ``cfg.cosmo_run/cosmo``. + ``cfg.cosmo['binary_file']`` to ``cfg.cosmo_run/cfg.cosmo['execname']``. - Convert the tracer-csv-file to a COSMO-namelist file. + Convert the tracer csv file to a COSMO namelist file. - Format the COSMO-namelist-templates - (COSMO: ``AF,ORG,IO,DYN,PHY,DIA,ASS``, - COSMOART: ``ART,ASS,DIA,DYN,EPS,INI,IO,ORG,PHY``) - using the information in ``cfg``. + Format the COSMO namelist templates using the information in ``cfg``. - Format the runscript-template and submit the job. + Format the runscript template and submit the job. Parameters ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ - cfg = set_cfg_variables(cfg, model_cfg) - logfile = os.path.join(cfg.log_working_dir, "cosmo") - logfile_finish = os.path.join(cfg.log_finished_dir, "cosmo") + tools.change_logfile(cfg.logfile) + prepare_cosmo.set_cfg_variables(cfg) logging.info("Setup the namelist for a COSMO tracer run and " "submit the job to the queue") @@ -106,11 +56,10 @@ def main(cfg, model_cfg): tools.create_dir(ini_dir, "cosmo_input_initial") startfiletime = datetime.strptime(cfg.laf_startfile[-10:], "%Y%m%d%H") if cfg.startdate_sim >= startfiletime: - starttime_last = cfg.startdate_sim - timedelta( - hours=cfg.restart_step) work_root = os.path.dirname(os.path.dirname(cfg.chain_root)) last_output_path = os.path.join(work_root, cfg.casename, - cfg.job_id_prev, 'cosmo', 'output') + cfg.chunk_id_prev, 'cosmo', + 'output') laf_output_refdate = cfg.startdate_sim.strftime("%Y%m%d%H") last_laf_filename = "laf" + laf_output_refdate # At the beginning, use original laf_startfile @@ -148,7 +97,7 @@ def main(cfg, model_cfg): laf_output_refdate=laf_output_refdate, )) # Execute fieldextra - with open(logfile, "a+") as log: + with open(cfg.logfile, "a+") as log: result = subprocess.run( [cfg.fieldextra_bin, output_file_merge], stdout=log) @@ -166,23 +115,21 @@ def main(cfg, model_cfg): # Create restart directory if feature is present and # if there is no spinup - if 'restart' in model_cfg['models'][cfg.model]['features'] and not \ + if 'restart' in cfg.workflow['features'] and not \ hasattr(cfg, 'spinup'): tools.create_dir(cfg.cosmo_restart_out, "cosmo_restart_out") # Copy cosmo executable - cfg.cosmo['execname'] = cfg.model.lower() + cfg.cosmo_execname = Path(cfg.cosmo['binary_file']).name tools.copy_file(cfg.cosmo['binary_file'], - os.path.join(cfg.cosmo_run, cfg.cosmo['execname'])) + cfg.cosmo_run / cfg.cosmo_execname) # Prepare namelist and submit job tracer_csvfile = os.path.join(cfg.chain_src_dir, 'cases', cfg.casename, 'cosmo_tracers.csv') - if cfg.model == 'cosmo': - namelist_names = ['ORG', 'IO', 'DYN', 'PHY', 'DIA', 'ASS', 'SAT'] - elif cfg.model == 'cosmo-ghg': + if hasattr(cfg, 'cams') or hasattr(cfg, 'mozart'): namelist_names = ['AF', 'ORG', 'IO', 'DYN', 'GHG', 'PHY', 'DIA', 'ASS'] - elif cfg.model == 'cosmo-art': + elif hasattr(cfg, 'photo_rate'): namelist_names = [ 'ART', 'ASS', 'DIA', 'DYN', 'EPS', 'INI', 'IO', 'ORG', 'PHY' ] @@ -190,6 +137,8 @@ def main(cfg, model_cfg): # When doing online emissions in COSMO-ART, an additional # namelist is required namelist_names += ['OAE'] + elif hasattr(cfg, 'cosmo'): + namelist_names = ['ORG', 'IO', 'DYN', 'PHY', 'DIA', 'ASS', 'SAT'] for section in namelist_names: namelist_file = os.path.join( @@ -221,7 +170,7 @@ def main(cfg, model_cfg): # Append INPUT_GHG namelist with tracer definitions from csv file if os.path.isfile(tracer_csvfile): - if cfg.model == 'cosmo-ghg': + if hasattr(cfg, 'cams') or hasattr(cfg, 'mozart'): input_ghg_filename = os.path.join(cfg.cosmo_run, 'INPUT_GHG') write_cosmo_input_ghg.main(tracer_csvfile, input_ghg_filename, cfg) @@ -232,18 +181,15 @@ def main(cfg, model_cfg): with open(runscript_file) as input_file: cosmo_runscript = input_file.read() - output_file = os.path.join(cfg.cosmo_run, "run.job") - with open(output_file, "w") as outf: + Path(cfg.cosmo_run).mkdir(parents=True, exist_ok=True) + script = (cfg.cosmo_run / 'run_cosmo.job') + with open(script, "w") as outf: outf.write( cosmo_runscript.format(cfg=cfg, **cfg.cosmo, np_tot=np_tot, - logfile=logfile, - logfile_finish=logfile_finish)) - - result = subprocess.run( - ["sbatch", "--wait", - os.path.join(cfg.cosmo_run, 'run.job')]) - exitcode = result.returncode - if exitcode != 0: - raise RuntimeError("sbatch returned exitcode {}".format(exitcode)) + logfile=cfg.logfile, + logfile_finish=cfg.logfile_finish)) + + # Submit job + cfg.submit('cosmo', script) diff --git a/jobs/emissions.py b/jobs/emissions.py index fcba2d70..27516da3 100644 --- a/jobs/emissions.py +++ b/jobs/emissions.py @@ -4,10 +4,12 @@ import os import logging -from . import tools, prepare_data +from . import tools, prepare_cosmo +BASIC_PYTHON_JOB = True -def main(cfg, model_cfg): + +def main(cfg): """Copy emission files to the int2lm input directory. Necessary for both COSMO and COSMOART simulations. @@ -29,10 +31,9 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ - cfg = prepare_data.set_cfg_variables(cfg, model_cfg) + tools.change_logfile(cfg.logfile) + prepare_cosmo.set_cfg_variables(cfg) dest_prefix = "emis_" if not isinstance(cfg.emissions['dir'], list): @@ -67,5 +68,5 @@ def main(cfg, model_cfg): # convert grid_mapping_name from string (NF90_STRING) to char # (NF90_CHAR) (needed for int2lm to work) - if cfg.model.startswith('cosmo'): + if hasattr(cfg, 'cosmo'): tools.string2char.main(dest_path) diff --git a/jobs/icon.py b/jobs/icon.py index cbf1e345..250df513 100644 --- a/jobs/icon.py +++ b/jobs/icon.py @@ -2,26 +2,19 @@ # -*- coding: utf-8 -*- import logging -import os -import subprocess -from . import tools, prepare_data +from pathlib import Path +from . import tools, prepare_icon +BASIC_PYTHON_JOB = False -def main(cfg, model_cfg): - """Setup the namelists for an ICON tracer run and submit the job to - the queue. - - Necessary for both ICON and ICONART simulations. - Create necessary directory structure to run ICON (run, output, and - restart directories, defined in ``cfg.icon_work``, ``cfg.icon_output``, - and ``cfg.icon_restart_out``). +def main(cfg): + """Setup the namelists for an ICON run and submit the job to + the queue. Copy the ICON-executable from ``cfg.icon_binary_file`` to ``cfg.icon_work/icon.exe``. - Use the tracer-csv-file to append ICON-namelist file. - Format the ICON-namelist-templates: ``icon_master.namelist.cfg, icon_NAMELIST_NWP.cfg``, using the information in ``cfg``. @@ -32,21 +25,17 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ - cfg = prepare_data.set_cfg_variables(cfg, model_cfg) - - logfile = os.path.join(cfg.log_working_dir, "icon") - logfile_finish = os.path.join(cfg.log_finished_dir, "icon") + prepare_icon.set_cfg_variables(cfg) + tools.change_logfile(cfg.logfile) logging.info("Setup the namelist for an ICON run and " "submit the job to the queue") # Copy icon executable - execname = 'icon.exe' - tools.copy_file(cfg.icon_binary_file, os.path.join(cfg.icon_work, - execname)) + cfg.icon_execname = Path(cfg.icon['binary_file']).name + tools.create_dir(cfg.icon_work, "icon_work") + tools.copy_file(cfg.icon_binary_file, cfg.icon_work / cfg.icon_execname) # Symlink the restart file to the last run into the icon/run folder if cfg.lrestart == '.TRUE.': @@ -54,36 +43,17 @@ def main(cfg, model_cfg): # Get name of initial file if hasattr(cfg, 'inicond_filename'): - inidata_filename = os.path.join(cfg.icon_input_icbc, - cfg.inicond_filename) + inidata_filename = cfg.icon_input_icbc / cfg.inicond_filename else: - inidata_filename = os.path.join( - cfg.icon_input_icbc, + inidata_filename = cfg.icon_input_icbc / str( cfg.startdate_sim.strftime(cfg.meteo['prefix'] + cfg.meteo['nameformat']) + '.nc') # Write run script (run_icon.job) - icon_runjob = os.path.join(cfg.case_path, cfg.icon_runjob_filename) - with open(icon_runjob) as input_file: - to_write = input_file.read() - output_file = os.path.join(cfg.icon_work, "run_icon.job") - with open(output_file, "w") as outf: - outf.write( - to_write.format(cfg=cfg, - inidata_filename=inidata_filename, - logfile=logfile, - logfile_finish=logfile_finish)) - - result = subprocess.run( - ["sbatch", "--wait", - os.path.join(cfg.icon_work, 'run_icon.job')]) - exitcode = result.returncode - - # In case of ICON-ART, ignore the "invalid pointer" error on successful run - if cfg.model.startswith('icon-art'): - if tools.grep("free(): invalid pointer", logfile)['success'] and \ - tools.grep("clean-up finished", logfile)['success']: - exitcode = 0 + template = (cfg.case_path / cfg.icon_runjob_filename).read_text() + script_str = template.format(cfg=cfg, inidata_filename=inidata_filename) + script = (cfg.icon_work / 'run_icon.job') + script.write_text(script_str) - if exitcode != 0: - raise RuntimeError("sbatch returned exitcode {}".format(exitcode)) + # Submit run script + cfg.submit('icon', script) diff --git a/jobs/icontools.py b/jobs/icontools.py new file mode 100644 index 00000000..a0f367b8 --- /dev/null +++ b/jobs/icontools.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import logging +import os +import xarray as xr +import numpy as np +from . import tools, prepare_icon + +BASIC_PYTHON_JOB = True + + +def main(cfg): + """ + - Add GEOSP to all meteo files + - Submit the runscript for the DWD ICON tools to remap the meteorological files. + - All runscripts specified in ``cfg.icontools_runjobs`` are submitted. + - The meteorological files are read from the original input directory + (``cfg.input_root_meteo``), and the remapped meteorological files are saved + in the input folder on scratch (``cfg.icon_input/icbc``). + """ + prepare_icon.set_cfg_variables(cfg) + tools.change_logfile(cfg.logfile) + + #----------------------------------------------------- + # Create LBC datafile lists (each at 00 UTC and others) + #----------------------------------------------------- + datafile_list = [] + datafile_list_rest = [] + datafile_list_chem = [] + for time in tools.iter_hours(cfg.startdate_sim, cfg.enddate_sim, + cfg.meteo['inc']): + meteo_file = cfg.icon_input_icbc / ( + cfg.meteo['prefix'] + time.strftime(cfg.meteo['nameformat'])) + if hasattr(cfg, 'art_input_folder'): + chem_file = cfg.icon_input_icbc / ( + cfg.chem['prefix'] + time.strftime(cfg.chem_nameformat)) + datafile_list_chem.append(str(chem_file) + cfg.chem['suffix']) + if str(meteo_file).endswith('00'): + datafile_list.append(str(meteo_file) + cfg.meteo['suffix']) + else: + datafile_list_rest.append(str(meteo_file) + cfg.meteo['suffix']) + datafile_list = ' '.join([str(v) for v in datafile_list]) + datafile_list_rest = ' '.join([str(v) for v in datafile_list_rest]) + datafile_list_chem = ' '.join([str(v) for v in datafile_list_chem]) + + #----------------------------------------------------- + # Write and submit ICONTOOLS runscripts + #----------------------------------------------------- + dep_id = None + for runscript in cfg.icontools_runjobs: + with (cfg.case_path / runscript).open() as input_file: + to_write = input_file.read() + runscript_path = cfg.icon_work / f"{runscript}.job" + with runscript_path.open("w") as outf: + outf.write( + to_write.format(cfg=cfg, + meteo=cfg.meteo, + logfile=cfg.logfile, + logfile_finish=cfg.logfile_finish, + datafile_list=datafile_list, + datafile_list_rest=datafile_list_rest, + datafile_list_chem=datafile_list_chem)) + + # Submitting icontools runscripts sequentially + logging.info(f" Starting icontools runscript {runscript}.") + dep_id = cfg.submit('icontools', runscript_path, add_dep=dep_id) + + logging.info("Add GEOSP to all meteo files") + for time in tools.iter_hours(cfg.startdate_sim, cfg.enddate_sim, + cfg.meteo['inc']): + # Specify file names + geosp_filename = time.replace( + hour=0).strftime(cfg.meteo['prefix'] + + cfg.meteo['nameformat']) + '_lbc.nc' + geosp_file = os.path.join(cfg.icon_input_icbc, geosp_filename) + src_filename = time.strftime(cfg.meteo['prefix'] + + cfg.meteo['nameformat']) + '_lbc.nc' + src_file = os.path.join(cfg.icon_input_icbc, src_filename) + merged_filename = time.strftime(cfg.meteo['prefix'] + + cfg.meteo['nameformat']) + '_merged.nc' + merged_file = os.path.join(cfg.icon_input_icbc, merged_filename) + + # Copy GEOSP file from last run if not present + if hasattr(cfg, + 'icon_input_icbc_prev') and not os.path.exists(geosp_file): + geosp_src_file = os.path.join(cfg.icon_input_icbc_prev, + geosp_filename) + tools.copy_file(geosp_src_file, + cfg.icon_input_icbc, + output_log=True) + + # Load GEOSP data array as da_geosp at time 00: + ds = xr.open_dataset(src_file) + ds_geosp = xr.open_dataset(geosp_file) + da_geosp = ds_geosp['GEOSP'] + + # Merge GEOSP-dataset with other timesteps + if (time.hour != 0): + # Change values of time dimension to current time + da_geosp = da_geosp.assign_coords(time=[np.datetime64(time)]) + # Merge GEOSP into temporary file + ds_merged = xr.merge([ds, da_geosp]) + ds_merged.attrs = ds.attrs + ds_merged.to_netcdf(merged_file) + # Logging info for merging GEOSP + logging.info("Added GEOSP to file {}".format(merged_file)) + # Rename file to get original file name + tools.rename_file(merged_file, src_file) + logging.info('OK') diff --git a/jobs/int2lm.py b/jobs/int2lm.py index 3311413e..83249fa3 100644 --- a/jobs/int2lm.py +++ b/jobs/int2lm.py @@ -4,22 +4,15 @@ import os import logging import shutil -import subprocess import pytz -from datetime import datetime, timedelta -from . import tools, prepare_data +from datetime import datetime +from . import tools, prepare_cosmo -def set_cfg_variables(cfg, model_cfg): +BASIC_PYTHON_JOB = True - setattr(cfg, 'int2lm_run', os.path.join(cfg.chain_root, 'int2lm', 'run')) - setattr(cfg, 'int2lm_output', - os.path.join(cfg.chain_root, 'int2lm', 'output')) - return cfg - - -def main(cfg, model_cfg): +def main(cfg): """Setup the namelist for int2lm and submit the job to the queue. Necessary for both COSMO and COSMOART simulations. @@ -49,11 +42,9 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ - cfg = prepare_data.set_cfg_variables(cfg, model_cfg) - cfg = set_cfg_variables(cfg, model_cfg) + tools.change_logfile(cfg.logfile) + prepare_cosmo.set_cfg_variables(cfg) # Total number of processes np_tot = cfg.int2lm['np_x'] * cfg.int2lm['np_y'] @@ -77,7 +68,7 @@ def main(cfg, model_cfg): extpar_dir) # Copy landuse and plant-functional-type files - if cfg.model == 'cosmo-art': + if hasattr(cfg, 'photo_rate'): lu_file_src = cfg.int2lm['lu_file'] lu_file_dst = os.path.join(extpar_dir, 'landuse.nc') tools.copy_file(lu_file_src, lu_file_dst) @@ -147,12 +138,8 @@ def main(cfg, model_cfg): cfg.int2lm['runjob_filename'])) as input_file: int2lm_runscript = input_file.read() - # Logfile variables - logfile = os.path.join(cfg.log_working_dir, "int2lm") - logfile_finish = os.path.join(cfg.log_finished_dir, "int2lm") - - output_file = os.path.join(int2lm_run, "run.job") - with open(output_file, "w") as outf: + script = (cfg.int2lm_run / 'run_int2lm.job') + with open(script, "w") as outf: outf.write( int2lm_runscript.format(cfg=cfg, **cfg.int2lm, @@ -161,13 +148,8 @@ def main(cfg, model_cfg): ini_hour=cfg.startdate_sim_yyyymmddhh[8:], np_tot=np_tot, hstop_int2lm=hstop_int2lm, - logfile=logfile, - logfile_finish=logfile_finish)) + logfile=cfg.logfile, + logfile_finish=cfg.logfile_finish)) # Submit job - result = subprocess.run( - ["sbatch", "--wait", - os.path.join(int2lm_run, "run.job")]) - exitcode = result.returncode - if exitcode != 0: - raise RuntimeError("sbatch returned exitcode {}".format(exitcode)) + cfg.submit('int2lm', script) diff --git a/jobs/obs_nudging.py b/jobs/obs_nudging.py index 70ba2e07..57119af1 100644 --- a/jobs/obs_nudging.py +++ b/jobs/obs_nudging.py @@ -3,13 +3,14 @@ import os import logging -import shutil from datetime import timedelta from . import tools +BASIC_PYTHON_JOB = True -def main(cfg, model_cfg): + +def main(cfg): """Copy and rename the obs_nudging files to the **COSMO** input directory. In the folder ``cfg.obs_nudging_dir``, the files are saved in the format @@ -26,9 +27,8 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ + tools.change_logfile(cfg.logfile) dest_dir = os.path.join(cfg.cosmo_input, "obs_nudging") tools.create_dir(dest_dir, "obs nudging input") diff --git a/jobs/octe.py b/jobs/octe.py index 06f46b39..1efbe486 100644 --- a/jobs/octe.py +++ b/jobs/octe.py @@ -11,6 +11,8 @@ from . import tools +BASIC_PYTHON_JOB = True + def create_dir_and_copy_input(dest_dir, lambdas_src, maps_src): """Create a directory at dest_dir (**COSMO** input) and copy src there. @@ -161,7 +163,7 @@ def perturb_bgs_in_dir(lambdas_nc, directory): entry.name)) -def main(cfg, model_cfg): +def main(cfg): """Copy necessary input files for **COSMO** and perturb BG. Copies the NetCDF-files found at ``cfg.octe_maps`` and ``cfg.octe_lambdas`` to @@ -176,9 +178,8 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ + tools.change_logfile(cfg.logfile) dest_dir = join(cfg.cosmo_input, 'octe') create_dir_and_copy_input(dest_dir=dest_dir, lambdas_src=cfg.octe_lambdas, diff --git a/jobs/oem.py b/jobs/oem.py index eee87852..e9cf42d7 100644 --- a/jobs/oem.py +++ b/jobs/oem.py @@ -4,10 +4,12 @@ import os import logging -from . import tools, cosmo +from . import tools, prepare_cosmo +BASIC_PYTHON_JOB = True -def main(cfg, model_cfg): + +def main(cfg): """Copy emission and profile files to the **cosmo** or **icon** input directory. @@ -15,15 +17,14 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. Raises ------ RuntimeError If an error occurs during the process. """ - cfg = cosmo.set_cfg_variables(cfg, model_cfg) + tools.change_logfile(cfg.logfile) + prepare_cosmo.set_cfg_variables(cfg) oem_dir = cfg.oem['dir'] oem_gridded_emissions_nc = os.path.join(oem_dir, @@ -51,9 +52,9 @@ def main(cfg, model_cfg): raise RuntimeError("At least one of (hod/dow/moy) or (hoy) netcdfs " " have to be given for online emissions") - if cfg.model.startswith('icon'): + if hasattr(cfg, 'icon'): input_dir = cfg.icon_input - else: + elif hasattr(cfg, 'cosmo'): input_dir = cfg.cosmo_input dest_dir = os.path.join(input_dir, "oem") tools.create_dir(dest_dir, "online emissions input") diff --git a/jobs/online_vprm.py b/jobs/online_vprm.py index c87bac6b..a1e2312e 100644 --- a/jobs/online_vprm.py +++ b/jobs/online_vprm.py @@ -4,10 +4,12 @@ import os import logging -from . import tools +from . import tools, prepare_cosmo +BASIC_PYTHON_JOB = True -def main(cfg, model_cfg): + +def main(cfg): """Copy MODIS surface reflectance data and vegetation class fraction file to the **cosmo** input directory. @@ -15,9 +17,9 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ + tools.change_logfile(cfg.logfile) + prepare_cosmo.set_cfg_variables(cfg) dest_modis = 'modis.nc' dest_vegetation = 'vegetation.nc' diff --git a/jobs/photo_rate.py b/jobs/photo_rate.py index 0bec6d6b..afdb4716 100644 --- a/jobs/photo_rate.py +++ b/jobs/photo_rate.py @@ -6,8 +6,10 @@ from . import tools +BASIC_PYTHON_JOB = True -def main(cfg, model_cfg): + +def main(cfg): """Copy photolysis-rate file to the **COSMOART** input directory. Only necessary for **COSMOART** simulations. @@ -19,10 +21,8 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ - tools.check_model(cfg, 'cosmo-art') + tools.change_logfile(cfg.logfile) logging.info("Copying photolysis-rate file from {} to {}".format( cfg.photo_rate_file, diff --git a/jobs/post_cosmo.py b/jobs/post_cosmo.py index a5335d6a..0442915a 100644 --- a/jobs/post_cosmo.py +++ b/jobs/post_cosmo.py @@ -4,9 +4,10 @@ import logging import os import datetime -from subprocess import call -from . import tools, int2lm, cosmo +from . import tools, prepare_cosmo + +BASIC_PYTHON_JOB = False def logfile_header_template(): @@ -45,7 +46,7 @@ def runscript_commands_template(): ]) -def main(cfg, model_cfg): +def main(cfg): """Copy the output of a **COSMO**-run to a user-defined position. Write a runscript to copy all files (**COSMO** settings & output, @@ -62,15 +63,10 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ - cfg = int2lm.set_cfg_variables(cfg, model_cfg) - cfg = cosmo.set_cfg_variables(cfg, model_cfg) + tools.change_logfile(cfg.logfile) + prepare_cosmo.set_cfg_variables(cfg) - logfile = os.path.join(cfg.log_working_dir, "post_cosmo") - cosmo_run_dir = cfg.cosmo_run - runscript_path = os.path.join(cfg.cosmo_run, "post_cosmo.job") copy_path = os.path.join( cfg.post_cosmo['output_root'], cfg.startdate_sim_yyyymmddhh + "_" + cfg.enddate_sim_yyyymmddhh) @@ -82,16 +78,16 @@ def main(cfg, model_cfg): runscript_content = "#!/bin/bash\n" runscript_content += runscript_header_template().format( compute_account=cfg.compute_account, - logfile=logfile, + logfile=cfg.logfile, constraint=cfg.constraint, cosmo_run=cfg.cosmo_run) if os.path.isdir(cfg.cosmo_output_reduced): - cosmo_output_src = cfg.cosmo_output_reduced.rstrip('/') + cosmo_output_src = str(cfg.cosmo_output_reduced).rstrip('/') cosmo_output_dest = os.path.join(copy_path, "cosmo_output_reduced").rstrip('/') else: - cosmo_output_src = cfg.cosmo_output.rstrip('/') + cosmo_output_src = str(cfg.cosmo_output).rstrip('/') cosmo_output_dest = os.path.join(copy_path, "cosmo_output").rstrip('/') # Create new directories @@ -108,36 +104,22 @@ def main(cfg, model_cfg): # Format the runscript runscript_content += runscript_commands_template().format( target_dir=copy_path.rstrip('/'), - int2lm_run_src=cfg.int2lm_run.rstrip('/'), + int2lm_run_src=str(cfg.int2lm_run).rstrip('/'), int2lm_run_dest=int2lm_run_path.rstrip('/'), - cosmo_run_src=cfg.cosmo_run.rstrip('/'), + cosmo_run_src=str(cfg.cosmo_run).rstrip('/'), cosmo_run_dest=cosmo_run_path.rstrip('/'), cosmo_output_src=cosmo_output_src, cosmo_output_dest=cosmo_output_dest_path, - logs_src=cfg.log_finished_dir.rstrip('/'), + logs_src=str(cfg.log_finished_dir).rstrip('/'), logs_dest=logs_path.rstrip('/')) - # Wait for Cosmo to finish first - tools.check_job_completion(cfg.log_finished_dir, "cosmo") - - with open(runscript_path, "w") as script: - script.write(runscript_content) + os.makedirs(cfg.cosmo_run, exist_ok=True) + script = (cfg.cosmo_run / 'run_post_cosmo.job') + with open(script, "w") as outf: + outf.write(runscript_content) logging.info("Submitting the copy job to the xfer queue") logging.info("Make sure you have the module 'xalt' unloaded!") - sbatch_wait = getattr(cfg, "wait", "True") - - if sbatch_wait: - exitcode = call(["sbatch", "--wait", runscript_path]) - logging.info(logfile_header_template().format( - "ENDS", str(datetime.datetime.today()))) - - # copy own logfile aswell - tools.copy_file(logfile, os.path.join(copy_path, "logs/")) - - else: - exitcode = call(["sbatch", runscript_path]) - - if exitcode != 0: - raise RuntimeError("sbatch returned exitcode {}".format(exitcode)) + # Submit job + cfg.submit('post_cosmo', script) diff --git a/jobs/post_int2lm.py b/jobs/post_int2lm.py index 423a1659..b0e78c0c 100644 --- a/jobs/post_int2lm.py +++ b/jobs/post_int2lm.py @@ -5,11 +5,14 @@ import os import glob import netCDF4 as nc + from datetime import datetime, timedelta -from . import tools, int2lm +from . import tools, prepare_cosmo + +BASIC_PYTHON_JOB = True -def main(cfg, model_cfg): +def main(cfg): """Combine multiple **int2lm** tracer-output files into a single one for **COSMO**. @@ -27,10 +30,9 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config/models.yaml`` file. """ - cfg = int2lm.set_cfg_variables(cfg, model_cfg) + prepare_cosmo.set_cfg_variables(cfg) + tools.change_logfile(cfg.logfile) # Int2lm processing always starts at hstart=0, thus modifying inidate inidate_int2lm_yyyymmddhh = cfg.startdate_sim_yyyymmddhh diff --git a/jobs/prepare_art.py b/jobs/prepare_art.py new file mode 100644 index 00000000..749fd7ce --- /dev/null +++ b/jobs/prepare_art.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os +import logging +import xarray as xr +import numpy as np +from . import tools, prepare_icon + +BASIC_PYTHON_JOB = True + + +def main(cfg): + """ + Prepare ICON-ART simulations. + + - Add GEOSP to all meteo files that don't contain it + - Add Q (copy of QV) and/or PS to initial file + """ + prepare_icon.set_cfg_variables(cfg) + tools.change_logfile(cfg.logfile) + + logging.info('Add Q (copy of QV) and/or PS to initial file') + meteo_file = os.path.join( + cfg.icon_input_icbc, + cfg.startdate_sim.strftime(cfg.meteo['prefix'] + + cfg.meteo['nameformat']) + '.nc') + if os.path.isfile(meteo_file): + merged_file = os.path.join( + cfg.icon_input_icbc, + cfg.startdate_sim.strftime(cfg.meteo['prefix'] + + cfg.meteo['nameformat']) + '_merged.nc') + ds = xr.open_dataset(meteo_file) + merging = False + if 'PS' not in ds: + if 'LNPS' not in ds: + raise KeyError( + f"'LNPS' must be found in the initial conditions file {meteo_file}" + ) + merging = True + ds['PS'] = ds['LNPS'] + ds['PS'].attrs = ds['LNPS'].attrs + ds['PS'] = np.exp(ds['PS']) + ds['PS'] = ds['PS'].squeeze(dim='lev_2') + ds['PS'].attrs["long_name"] = 'surface pressure' + ds['PS'].attrs['units'] = 'Pa' + logging.info(f"Added PS to file {meteo_file}") + if 'Q' not in ds: + merging = True + ds['Q'] = ds['QV'] + logging.info(f"Added Q to file {meteo_file}") + if merging: + ds.to_netcdf(merged_file) + tools.rename_file(merged_file, meteo_file) + logging.info('OK') diff --git a/jobs/prepare_art_global.py b/jobs/prepare_art_global.py new file mode 100644 index 00000000..a425d6b9 --- /dev/null +++ b/jobs/prepare_art_global.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os +import logging +import xarray as xr +import shutil +import subprocess +from . import tools, prepare_icon +from pathlib import Path # noqa: F401 +from .tools.interpolate_data import create_oh_for_restart, create_oh_for_inicond # noqa: F401 +from .tools.fetch_external_data import fetch_era5, fetch_era5_nudging + +BASIC_PYTHON_JOB = True + + +def main(cfg): + """ + Prepare global ICON-ART simulations. + + Parameters + ---------- + cfg : Config + Object holding all user-configuration parameters as attributes. + """ + prepare_icon.set_cfg_variables(cfg) + tools.change_logfile(cfg.logfile) + logging.info("Prepare ICON-ART for global simulations") + + # -- Download ERA5 data and create the inicond file + if cfg.era5_inicond and cfg.lrestart == '.FALSE.': + # -- Fetch ERA5 data + fetch_era5(cfg.startdate_sim, cfg.icon_input_icbc) + + # -- Copy ERA5 processing script (icon_era5_inicond.job) in workdir + with open(cfg.icon_era5_inijob) as input_file: + to_write = input_file.read() + output_file = os.path.join(cfg.icon_input_icbc, 'icon_era5_inicond.sh') + with open(output_file, "w") as outf: + outf.write(to_write.format(cfg=cfg)) + + # -- Copy mypartab in workdir + shutil.copy( + os.path.join(os.path.dirname(cfg.icon_era5_inijob), 'mypartab'), + os.path.join(cfg.icon_input_icbc, 'mypartab')) + + # -- Run ERA5 processing script + process = subprocess.Popen([ + "bash", + os.path.join(cfg.icon_input_icbc, 'icon_era5_inicond.sh') + ], + stdout=subprocess.PIPE) + process.communicate() + + # ----------------------------------------------------- + # Create tracer initial conditions + # ----------------------------------------------------- + + # -- Download and add CAMS data to the inicond file if needed + if cfg.species_inicond: + + if cfg.lrestart == '.FALSE.': + + ext_restart = '' + filename = cfg.input_files_scratch_inicond_filename + + # -- Copy the script for processing external tracer data in workdir + with open(os.path.join(cfg.case_path, + cfg.icon_species_inijob)) as input_file: + to_write = input_file.read() + output_file = os.path.join(cfg.icon_input_icbc, + cfg.icon_species_inijob) + with open(output_file, "w") as outf: + outf.write( + to_write.format(cfg=cfg, + filename=filename, + ext_restart=ext_restart, + year=cfg.startdate_sim.year, + month=cfg.startdate_sim.month, + day=cfg.startdate_sim.day)) + + # -- Run ERA5 processing script + process = subprocess.Popen(["bash", output_file], + stdout=subprocess.PIPE) + process.communicate() + + # -- Create initial conditions for OH concentrations + if 'TROH' in cfg.species2restart: + create_oh_for_inicond(cfg, cfg.startdate_sim.month) + + else: + + # -- Check the extension of tracer variables in the restart file + ds_restart = xr.open_dataset(cfg.restart_file) # noqa: F841 + tracer_name = cfg.species2restart[0] # noqa: F841 + # FIXME: + # var_restart = [ + # IndexError: list index out of range + # var_restart = [ + # var for var in ds_restart.data_vars.keys() + # if var.startswith(tracer_name) + # ][0] + # ext_restart = var_restart.replace(tracer_name, '') + + # -- Change OH concentrations in the restart file + # if 'TROH' in cfg.species2restart: + # create_oh_for_restart(cfg, cfg.startdate_sim.month, + # ext_restart) + + # ----------------------------------------------------- + # Create meteorological and tracer nudging conditions + # ----------------------------------------------------- + + # -- If global nudging, download and process ERA5 and CAMS data + if cfg.era5_global_nudging: + + for time in tools.iter_hours(cfg.startdate_sim, + cfg.enddate_sim, + step=cfg.nudging_step): + + # -- Give a name to the nudging file + timestr = time.strftime('%Y%m%d%H') + filename = 'era2icon_R2B03_{timestr}_nudging.nc'.format( + timestr=timestr) + + # -- If initial time, copy the initial conditions to be used as boundary conditions + if time == cfg.startdate_sim and cfg.era5_inicond: + shutil.copy(cfg.input_files_scratch_inicond_filename, + os.path.join(cfg.icon_input_icbc, filename)) + continue + + # -- Fetch ERA5 data + fetch_era5_nudging(time, cfg.icon_input_icbc) + + # -- Copy ERA5 processing script (icon_era5_nudging.job) in workdir + with open(cfg.icon_era5_nudgingjob) as input_file: + to_write = input_file.read() + output_file = os.path.join( + cfg.icon_input_icbc, 'icon_era5_nudging_{}.sh'.format(timestr)) + with open(output_file, "w") as outf: + outf.write(to_write.format(cfg=cfg, filename=filename)) + + # -- Copy mypartab in workdir + if not os.path.exists(os.path.join(cfg.icon_input_icbc, + 'mypartab')): + shutil.copy( + os.path.join(os.path.dirname(cfg.icon_era5_nudgingjob), + 'mypartab'), + os.path.join(cfg.icon_input_icbc, 'mypartab')) + + # -- Run ERA5 processing script + process = subprocess.Popen([ + "bash", + os.path.join(cfg.icon_input_icbc, + 'icon_era5_nudging_{}.sh'.format(timestr)) + ], + stdout=subprocess.PIPE) + process.communicate() + + if cfg.species_global_nudging: + + # -- Copy CAMS processing script (icon_cams_nudging.job) in workdir + with open(cfg.icon_species_nudgingjob) as input_file: + to_write = input_file.read() + output_file = os.path.join( + cfg.icon_input_icbc, + 'icon_cams_nudging_{}.sh'.format(timestr)) + with open(output_file, "w") as outf: + outf.write(to_write.format(cfg=cfg, filename=filename)) + + # -- Run ERA5 processing script + process = subprocess.Popen([ + "bash", + os.path.join(cfg.icon_input_icbc, + 'icon_cams_nudging_{}.sh'.format(timestr)) + ], + stdout=subprocess.PIPE) + process.communicate() + + logging.info("OK") diff --git a/jobs/prepare_art_oem.py b/jobs/prepare_art_oem.py new file mode 100644 index 00000000..8e4abe17 --- /dev/null +++ b/jobs/prepare_art_oem.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os +import logging +import xarray as xr +from . import tools, prepare_icon + +BASIC_PYTHON_JOB = True + + +def main(cfg): + """ + ICON-ART-OEM preparations + """ + prepare_icon.set_cfg_variables(cfg) + tools.change_logfile(cfg.logfile) + logging.info('Merging IC and LBC') + + if cfg.input_files['oem_gridded_emissions_nc']: + for time in tools.iter_hours(cfg.startdate_sim, cfg.enddate_sim, + cfg.meteo['inc']): + if time == cfg.startdate_sim: + #------------ + # Merge IC: + #------------ + meteo_file = os.path.join( + cfg.icon_input_icbc, + time.strftime(cfg.meteo['prefix'] + + cfg.meteo['nameformat']) + '.nc') + if os.path.isfile(meteo_file): + chem_file = os.path.join( + cfg.icon_input_icbc, cfg.chem['prefix'] + + time.strftime(cfg.chem['nameformat']) + '.nc') + merged_file = os.path.join( + cfg.icon_input_icbc, + time.strftime(cfg.meteo['prefix'] + + cfg.meteo['nameformat']) + '_merged.nc') + ds_meteo = xr.open_dataset(meteo_file) + ds_chem = xr.open_dataset(chem_file) + # LNPS --> PS + ds_chem['PS'] = ds_chem['LNPS'] + ds_chem['PS'].attrs = ds_chem['LNPS'].attrs + ds_chem['PS'] = ds_chem['PS'].squeeze(dim='lev_2') + ds_chem['PS'].attrs["long_name"] = 'surface pressure' + # merge: + ds_merged = xr.merge([ds_meteo, ds_chem], + compat="override") + #ds_merged.attrs = ds.attrs + ds_merged.to_netcdf(merged_file) + # Rename file to get original file name + tools.rename_file(merged_file, meteo_file) + tools.remove_file(chem_file) + logging.info( + "Added chemical tracer to file {}".format(merged_file)) + + #------------ + # Merge LBC: + #------------ + meteo_file = os.path.join( + cfg.icon_input_icbc, + time.strftime(cfg.meteo['prefix'] + cfg.meteo['nameformat']) + + '_lbc.nc') + chem_file = os.path.join( + cfg.icon_input_icbc, cfg.chem['prefix'] + + time.strftime(cfg.chem_nameformat) + '_lbc.nc') + merged_file = os.path.join( + cfg.icon_input_icbc, + time.strftime(cfg.meteo['prefix'] + cfg.meteo['nameformat']) + + '_merged.nc') + ds_meteo = xr.open_dataset(meteo_file) + ds_chem = xr.open_dataset(chem_file) + # LNPS --> PS + ds_chem['PS'] = ds_chem['LNPS'] + ds_chem['PS'].attrs = ds_chem['LNPS'].attrs + ds_chem['PS'].attrs["long_name"] = 'surface pressure' + ds_chem['TRCH4_chemtr'] = ds_chem['CH4_BG'] + # merge: + ds_merged = xr.merge([ds_meteo, ds_chem], compat="override") + #ds_merged.attrs = ds.attrs + ds_merged.to_netcdf(merged_file) + # Rename file to get original file name + tools.rename_file(merged_file, meteo_file) + tools.remove_file(chem_file) + logging.info( + "Added chemical tracer to file {}".format(merged_file)) diff --git a/jobs/prepare_cosmo.py b/jobs/prepare_cosmo.py new file mode 100644 index 00000000..8cea9005 --- /dev/null +++ b/jobs/prepare_cosmo.py @@ -0,0 +1,247 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pathlib import Path +import logging +import csv +import os +from datetime import timedelta +from . import tools + +BASIC_PYTHON_JOB = True + + +def set_cfg_variables(cfg): + cfg.int2lm_root = cfg.chain_root / 'int2lm' + cfg.int2lm_input = cfg.int2lm_root / 'input' + cfg.int2lm_run = cfg.chain_root / 'int2lm' / 'run' + cfg.int2lm_output = cfg.chain_root / 'int2lm' / 'output' + + cfg.cosmo_base = cfg.chain_root / 'cosmo' + cfg.cosmo_input = cfg.chain_root / 'cosmo' / 'input' + cfg.cosmo_run = cfg.chain_root / 'cosmo' / 'run' + cfg.cosmo_output = cfg.chain_root / 'cosmo' / 'output' + cfg.cosmo_output_reduced = cfg.chain_root / 'cosmo' / 'output_reduced' + + # Number of tracers + if 'tracers' in cfg.workflow['features']: + tracer_csvfile = cfg.chain_src_dir / 'cases' / cfg.casename / 'cosmo_tracers.csv' + if tracer_csvfile.is_file(): + with open(tracer_csvfile, 'r') as csv_file: + reader = csv.DictReader(csv_file, delimiter=',') + reader = [r for r in reader if r[''] != '#'] + cfg.in_tracers = len(reader) + else: + raise FileNotFoundError(f"File not found: {tracer_csvfile}") + + # tracer_start namelist parameter for spinup simulation + if hasattr(cfg, 'spinup'): + if cfg.first_one: + cfg.tracer_start = 0 + else: + cfg.tracer_start = cfg.spinup + else: + cfg.tracer_start = 0 + + # asynchronous I/O + if hasattr(cfg, 'cfg.cosmo_np_io'): + if cfg.cosmo_np_io == 0: + cfg.lasync_io = '.FALSE.' + cfg.num_iope_percomm = 0 + else: + cfg.lasync_io = '.TRUE.' + cfg.num_iope_percomm = 1 + + # If nested run: use output of mother-simulation + if 'nesting' in cfg.workflow['features'] and not os.path.isdir( + cfg.meteo.dir): + # if ifs_hres_dir doesn't point to a directory, + # it is the name of the mother run + mother_name = cfg.meteo.dir + cfg.meteo.dir = cfg.work_root / mother_name / cfg.chunk_id / 'cosmo' / 'output' + cfg.meteo.inc = 1 + cfg.meteo.prefix = 'lffd' + + +def main(cfg): + """ + **COSMO Data Preparation** + + This function prepares input data for COSMO simulations by creating necessary directories, + copying meteorological files, and handling specific data processing. + + - Copy meteorological files to **int2lm** input. + - Create the necessary directory ``cfg.int2lm_input/meteo``. + - Copy meteorological files from the project directory (``cfg.meteo['dir']/cfg.meteo['prefix']YYYYMMDDHH``) + to the int2lm input folder on scratch (``cfg.int2lm_input/meteo``). + - For nested runs (meteorological files are COSMO output: ``cfg.meteo['prefix'] == 'lffd'``), + also copy the ``*c.nc``-file with constant parameters. + + Parameters + ---------- + cfg : Config + Object holding all user-configuration parameters as attributes. + + Raises + ------ + RuntimeError + If any subprocess returns a non-zero exit code during execution. + """ + set_cfg_variables(cfg) + tools.change_logfile(cfg.logfile) + + logging.info('COSMO analysis data for IC/BC') + + dest_path = cfg.int2lm_input / 'meteo' + tools.create_dir(dest_path, "meteo input") + + source_nameformat = cfg.meteo['nameformat'] + if cfg.meteo['prefix'] == 'lffd': + # nested runs use cosmoart-output as meteo data + # have to copy the *c.nc-file + src_file = (cfg.meteo['dir'] / + cfg.startdate_sim.strftime(source_nameformat + 'c.nc')) + + tools.copy_file(src_file, dest_path, output_log=True) + + logging.info("Copied constant-param file from {} to {}".format( + src_file, dest_path)) + + # extend nameformat with ending to match cosmo-output + source_nameformat += '.nc' + + if cfg.meteo['prefix'] == 'efsf': + source_nameformat = cfg.meteo['prefix'] + '%y%m%d%H' + + num_steps = 0 + meteo_dir = cfg.meteo['dir'] + subdir = meteo_dir / cfg.startdate_sim.strftime('%y%m%d%H') + for time in tools.iter_hours(cfg.startdate_sim, cfg.enddate_sim, + cfg.meteo['inc']): + dest_path = cfg.int2lm_input / 'meteo' + src_file = meteo_dir / time.strftime(source_nameformat) + + if cfg.meteo['prefix'] == 'efsf': + if time == cfg.startdate_sim: + src_file = subdir / ('eas' + time.strftime('%Y%m%d%H')) + if not src_file.exists() and cfg.meteo.get('dir_alt') \ + is not None: + meteo_dir = cfg.meteo['dir_alt'] + subdir = meteo_dir / cfg.startdate_sim.strftime('%y%m%d%H') + src_file = subdir / ('eas' + time.strftime('%Y%m%d%H')) + dest_path = cfg.int2lm_input / 'meteo' / (cfg.meteo['prefix'] + + '00000000') + else: + td = time - cfg.startdate_sim - timedelta(hours=6 * num_steps) + days = str(td.days).zfill(2) + hours = str(td.seconds // 3600).zfill(2) + td_total = time - cfg.startdate_sim + days_total = str(td_total.days).zfill(2) + hours_total = str(td_total.seconds // 3600).zfill(2) + + src_file = subdir / (cfg.meteo['prefix'] + days + hours + + '0000') + dest_path = cfg.int2lm_input / 'meteo' / ( + cfg.meteo['prefix'] + days_total + hours_total + '0000') + + # Next time, change directory + checkdir = meteo_dir / time.strftime('%y%m%d%H') + if checkdir.is_dir(): + num_steps += 1 + subdir = checkdir + elif cfg.meteo.get('dir_alt') is not None: + checkdir = cfg.meteo['dir_alt'] / time.strftime('%y%m%d%H') + if checkdir.is_dir(): + num_steps += 1 + subdir = checkdir + meteo_dir = cfg.meteo['dir_alt'] + logging.info( + "Switching to other input directory from {} to {}". + format(cfg.meteo['dir'], cfg.meteo['dir_alt'])) + elif not src_file.exists(): + # special case for MeteoSwiss COSMO-7 data + archive = Path('/store/mch/msopr/owm/COSMO-7') + yy = time.strftime("%y") + path = archive / 'ANA' + yy + src_file = path / time.strftime(source_nameformat) + + # copy meteo file from project folder to + tools.copy_file(src_file, dest_path, output_log=True) + + logging.info("Copied file from {} to {}".format(src_file, dest_path)) + + # Other IC/BC data + inv_to_process = [] + if hasattr(cfg, 'cams'): + try: + CAMS = dict(fullname="CAMS", + nickname="cams", + executable="cams4int2cosmo", + indir=cfg.cams['dir_orig'], + outdir=cfg.cams['dir_proc'], + param=[{ + 'inc': cfg.cams['inc'], + 'suffix': cfg.cams['suffix'] + }]) + inv_to_process.append(CAMS) + except AttributeError: + pass + try: + CT = dict(fullname="CarbonTracker", + nickname="ct", + executable="ctnoaa4int2cosmo", + indir=cfg.ct_dir_orig, + outdir=cfg.ct_dir_proc, + param=cfg.ct_parameters) + inv_to_process.append(CT) + except AttributeError: + pass + elif hasattr(cfg, 'mozart'): + try: + MOZART = dict(fullname='MOZART', + nickname='mozart', + executable='mozart2int2lm', + indir=cfg.mozart_file_orig, + outdir=cfg.mozart_dir_proc, + param=[{ + 'inc': cfg.mozart_inc, + 'suffix': cfg.mozart_prefix + }]) + inv_to_process.append(MOZART) + except AttributeError: + pass + + if inv_to_process: + logging.info("Processing " + + ", ".join([i["fullname"] + for i in inv_to_process]) + " data") + + scratch_path = cfg.int2lm_input / 'icbc' + tools.create_dir(scratch_path, "icbc input") + + for inv in inv_to_process: + logging.info(inv["fullname"] + " files") + tools.create_dir(inv["outdir"], "processed " + inv["fullname"]) + + for p in inv["param"]: + inc = p["inc"] + for time in tools.iter_hours(cfg.startdate_sim, + cfg.enddate_sim, inc): + logging.info(time) + + filename = inv["outdir"] / ( + p["suffix"] + "_" + time.strftime("%Y%m%d%H") + ".nc") + if not filename.exists(): + logging.info(filename) + try: + to_call = getattr(tools, inv["executable"]) + to_call.main(time, inv["indir"], inv["outdir"], p) + except: + logging.error("Preprocessing " + inv["fullname"] + + " data failed") + raise + + # copy to (temporary) run input directory + tools.copy_file(filename, scratch_path, output_log=True) + + logging.info("OK") diff --git a/jobs/prepare_data.py b/jobs/prepare_data.py deleted file mode 100644 index d095ccc3..00000000 --- a/jobs/prepare_data.py +++ /dev/null @@ -1,678 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os -import logging -import shutil -import subprocess -from datetime import timedelta -import xarray as xr -import numpy as np -from . import tools -from .tools.interpolate_data import create_oh_for_restart, create_oh_for_inicond -from .tools.fetch_external_data import fetch_era5, fetch_era5_nudging -from calendar import monthrange - - -def set_cfg_variables(cfg, model_cfg): - # TODO: Change setattr() to direct assignment - if cfg.model.startswith('cosmo'): - setattr(cfg, 'int2lm_root', os.path.join(cfg.chain_root, 'int2lm')) - setattr(cfg, 'int2lm_input', os.path.join(cfg.int2lm_root, 'input')) - elif cfg.model.startswith('icon'): - setattr(cfg, 'icon_base', os.path.join(cfg.chain_root, 'icon')) - setattr(cfg, 'icon_input', os.path.join(cfg.chain_root, 'icon', - 'input')) - setattr(cfg, 'icon_input_icbc', - os.path.join(cfg.chain_root, 'icon', 'input', 'icbc')) - setattr(cfg, 'icon_work', os.path.join(cfg.chain_root, 'icon', 'run')) - setattr(cfg, 'icon_output', - os.path.join(cfg.chain_root, 'icon', 'output')) - setattr(cfg, 'icon_output_reduced', - os.path.join(cfg.chain_root, 'icon', 'output_reduced')) - setattr(cfg, 'icon_restart_out', - os.path.join(cfg.chain_root, 'icon', 'restart')) - setattr(cfg, 'icon_restart_in', - os.path.join(cfg.chain_root_prev, 'icon', 'run')) - setattr(cfg, 'icon_input_icbc_prev', - os.path.join(cfg.chain_root_prev, 'icon', 'input', 'icbc')) - - cfg.input_files_scratch = {} - for varname in cfg.input_files: - cfg.input_files_scratch[varname] = os.path.join( - cfg.icon_input, os.path.basename(cfg.input_files[varname])) - cfg.create_vars_from_dicts() - - cfg.ini_datetime_string = cfg.startdate.strftime('%Y-%m-%dT%H:00:00Z') - cfg.end_datetime_string = cfg.enddate.strftime('%Y-%m-%dT%H:00:00Z') - - if cfg.model == 'icon-art-oem': - cfg.startdate_sim_yyyymmdd_hh = cfg.startdate_sim.strftime( - '%Y%m%d_%H') - - if cfg.model == 'icon-art-global': - # Nudge type (global or nothing) - cfg.nudge_type = 2 if cfg.era5_global_nudging else 0 - # Time step for global nudging in seconds - cfg.nudging_step_seconds = cfg.nudging_step * 3600 - # Prescribed initial conditions for CH4, CO and/or OH - cfg.iart_init_gas = 4 if cfg.species_inicond else 0 - - if cfg.lrestart == '.TRUE.': - cfg.restart_filename = 'restart_atm_DOM01.nc' - cfg.restart_file = os.path.join(cfg.icon_restart_in, - cfg.restart_filename) - cfg.restart_file_scratch = os.path.join(cfg.icon_work, - cfg.restart_filename) - - return cfg - - -def main(cfg, model_cfg): - """ - **ICON and COSMO Data Preparation** - - This function prepares input data for ICON and COSMO simulations by creating necessary directories, - copying meteorological files, and handling specific data processing for each model. - - **ICON:** - - - Create directories ``cfg.icon_input_icbc`` and ``cfg.icon_work``. - - Submit the runscript for the DWD ICON tools to remap the meteorological files. - - All runscripts specified in ``cfg.icontools_runjobs`` are submitted. - - The meteorological files are read from the original input directory (``cfg.input_root_meteo``), - and the remapped meteorological files are saved in the input folder on scratch (``cfg.icon_input/icbc``). - - The constant variable 'GEOSP' is added to the files not containing it using python-cdo bindings. - - **COSMO:** - - - Copy meteorological files to **int2lm** input. - - Create the necessary directory ``cfg.int2lm_input/meteo``. - - Copy meteorological files from the project directory (``cfg.meteo['dir']/cfg.meteo['prefix']YYYYMMDDHH``) - to the int2lm input folder on scratch (``cfg.int2lm_input/meteo``). - - For nested runs (meteorological files are COSMO output: ``cfg.meteo['prefix'] == 'lffd'``), - also copy the ``*c.nc``-file with constant parameters. - - Parameters - ---------- - cfg : Config - Object holding all user-configuration parameters as attributes. - model_cfg : dict - Model configuration settings loaded from the ``config\/models.yaml`` file. - - Raises - ------ - RuntimeError - If any subprocess returns a non-zero exit code during execution. - """ - cfg = set_cfg_variables(cfg, model_cfg) - - if cfg.model.startswith('icon'): - logging.info('ICON input data (IC/BC)') - - #----------------------------------------------------- - # Create directories - #----------------------------------------------------- - tools.create_dir(cfg.icon_work, "icon_work") - tools.create_dir(cfg.icon_input_icbc, "icon_input_icbc") - tools.create_dir(cfg.icon_output, "icon_output") - tools.create_dir(cfg.icon_restart_out, "icon_restart_out") - - #----------------------------------------------------- - # Copy input files - #----------------------------------------------------- - for varname in cfg.input_files: - varname_scratch = f'{varname}_scratch' - tools.copy_file(cfg.input_files[varname], - cfg.input_files_scratch[varname], - output_log=True) - - if cfg.model == 'icon-art-global': - # -- Download ERA5 data and create the inicond file - if cfg.era5_inicond and cfg.lrestart == '.FALSE.': - # -- Fetch ERA5 data - fetch_era5(cfg.startdate_sim, cfg.icon_input_icbc) - - # -- Copy ERA5 processing script (icon_era5_inicond.job) in workdir - with open(cfg.icon_era5_inijob) as input_file: - to_write = input_file.read() - output_file = os.path.join(cfg.icon_input_icbc, - 'icon_era5_inicond.sh') - with open(output_file, "w") as outf: - outf.write(to_write.format(cfg=cfg)) - - # -- Copy mypartab in workdir - shutil.copy( - os.path.join(os.path.dirname(cfg.icon_era5_inijob), - 'mypartab'), - os.path.join(cfg.icon_input_icbc, 'mypartab')) - - # -- Run ERA5 processing script - process = subprocess.Popen([ - "bash", - os.path.join(cfg.icon_input_icbc, 'icon_era5_inicond.sh') - ], - stdout=subprocess.PIPE) - process.communicate() - - # ----------------------------------------------------- - # Create tracer initial conditions - # ----------------------------------------------------- - - # -- Download and add CAMS data to the inicond file if needed - if cfg.species_inicond: - - if cfg.lrestart == '.FALSE.': - - ext_restart = '' - filename = cfg.input_files_scratch_inicond_filename - - # -- Copy the script for processing external tracer data in workdir - with open( - os.path.join( - cfg.case_path, - cfg.icon_species_inijob)) as input_file: - to_write = input_file.read() - output_file = os.path.join(cfg.icon_input_icbc, - cfg.icon_species_inijob) - with open(output_file, "w") as outf: - outf.write( - to_write.format(cfg=cfg, - filename=filename, - ext_restart=ext_restart, - year=cfg.startdate_sim.year, - month=cfg.startdate_sim.month, - day=cfg.startdate_sim.day)) - - # -- Run ERA5 processing script - process = subprocess.Popen(["bash", output_file], - stdout=subprocess.PIPE) - process.communicate() - - # -- Create initial conditions for OH concentrations - if 'TROH' in cfg.species2restart: - create_oh_for_inicond(cfg, cfg.startdate_sim.month) - - else: - - # -- Check the extension of tracer variables in the restart file - ds_restart = xr.open_dataset(cfg.restart_file) - tracer_name = cfg.species2restart[0] - # FIXME: - # var_restart = [ - # IndexError: list index out of range - # var_restart = [ - # var for var in ds_restart.data_vars.keys() - # if var.startswith(tracer_name) - # ][0] - # ext_restart = var_restart.replace(tracer_name, '') - - # -- Change OH concentrations in the restart file - # if 'TROH' in cfg.species2restart: - # create_oh_for_restart(cfg, cfg.startdate_sim.month, - # ext_restart) - - # ----------------------------------------------------- - # Create meteorological and tracer nudging conditions - # ----------------------------------------------------- - - # -- If global nudging, download and process ERA5 and CAMS data - if cfg.era5_global_nudging: - - for time in tools.iter_hours(cfg.startdate_sim, - cfg.enddate_sim, - step=cfg.nudging_step): - - # -- Give a name to the nudging file - timestr = time.strftime('%Y%m%d%H') - filename = 'era2icon_R2B03_{timestr}_nudging.nc'.format( - timestr=timestr) - - # -- If initial time, copy the initial conditions to be used as boundary conditions - if time == cfg.startdate_sim and cfg.era5_inicond: - shutil.copy( - cfg.input_files_scratch_inicond_filename, - os.path.join(cfg.icon_input_icbc, filename)) - continue - - # -- Fetch ERA5 data - fetch_era5_nudging(time, cfg.icon_input_icbc) - - # -- Copy ERA5 processing script (icon_era5_nudging.job) in workdir - with open(cfg.icon_era5_nudgingjob) as input_file: - to_write = input_file.read() - output_file = os.path.join( - cfg.icon_input_icbc, - 'icon_era5_nudging_{}.sh'.format(timestr)) - with open(output_file, "w") as outf: - outf.write(to_write.format(cfg=cfg, filename=filename)) - - # -- Copy mypartab in workdir - if not os.path.exists( - os.path.join(cfg.icon_input_icbc, 'mypartab')): - shutil.copy( - os.path.join( - os.path.dirname(cfg.icon_era5_nudgingjob), - 'mypartab'), - os.path.join(cfg.icon_input_icbc, 'mypartab')) - - # -- Run ERA5 processing script - process = subprocess.Popen([ - "bash", - os.path.join(cfg.icon_input_icbc, - 'icon_era5_nudging_{}.sh'.format(timestr)) - ], - stdout=subprocess.PIPE) - process.communicate() - - if cfg.species_global_nudging: - - # -- Copy CAMS processing script (icon_cams_nudging.job) in workdir - with open(cfg.icon_species_nudgingjob) as input_file: - to_write = input_file.read() - output_file = os.path.join( - cfg.icon_input_icbc, - 'icon_cams_nudging_{}.sh'.format(timestr)) - with open(output_file, "w") as outf: - outf.write( - to_write.format(cfg=cfg, filename=filename)) - - # -- Run ERA5 processing script - process = subprocess.Popen([ - "bash", - os.path.join( - cfg.icon_input_icbc, - 'icon_cams_nudging_{}.sh'.format(timestr)) - ], - stdout=subprocess.PIPE) - process.communicate() - - else: # non-global ICON-ART - #----------------------------------------------------- - # Create LBC datafile lists (each at 00 UTC and others) - #----------------------------------------------------- - datafile_list = [] - datafile_list_rest = [] - datafile_list_chem = [] - for time in tools.iter_hours(cfg.startdate_sim, cfg.enddate_sim, - cfg.meteo['inc']): - meteo_file = os.path.join( - cfg.icon_input_icbc, cfg.meteo['prefix'] + - time.strftime(cfg.meteo['nameformat'])) - if cfg.model == 'icon-art' or cfg.model == 'icon-art-oem': - chem_file = os.path.join( - cfg.icon_input_icbc, cfg.chem['prefix'] + - time.strftime(cfg.chem_nameformat)) - datafile_list_chem.append(chem_file + cfg.chem['suffix']) - if meteo_file.endswith('00'): - datafile_list.append(meteo_file + cfg.meteo['suffix']) - else: - datafile_list_rest.append(meteo_file + cfg.meteo['suffix']) - datafile_list = ' '.join([str(v) for v in datafile_list]) - datafile_list_rest = ' '.join([str(v) for v in datafile_list_rest]) - datafile_list_chem = ' '.join([str(v) for v in datafile_list_chem]) - - #----------------------------------------------------- - # Write and submit runscripts - #----------------------------------------------------- - for runscript in cfg.icontools_runjobs: - logfile = os.path.join(cfg.log_working_dir, 'prepare_data') - logfile_finish = os.path.join(cfg.log_finished_dir, - 'prepare_data') - with open(os.path.join(cfg.case_path, - runscript)) as input_file: - to_write = input_file.read() - output_run = os.path.join(cfg.icon_work, "%s.job" % runscript) - with open(output_run, "w") as outf: - outf.write( - to_write.format(cfg=cfg, - meteo=cfg.meteo, - logfile=logfile, - logfile_finish=logfile_finish, - datafile_list=datafile_list, - datafile_list_rest=datafile_list_rest, - datafile_list_chem=datafile_list_chem)) - logging.info(f" Starting icontools runscript {runscript}.") - result = subprocess.run([ - "sbatch", "--wait", - os.path.join(cfg.icon_work, "%s.job" % runscript) - ]) - exitcode = result.returncode - if exitcode != 0: - raise RuntimeError( - "sbatch returned exitcode {}".format(exitcode)) - logging.info(f"{runscript} successfully executed.") - - #----------------------------------------------------- - # Add GEOSP to all meteo files - #----------------------------------------------------- - for time in tools.iter_hours(cfg.startdate_sim, cfg.enddate_sim, - cfg.meteo['inc']): - # Specify file names - geosp_filename = time.replace( - hour=0).strftime(cfg.meteo['prefix'] + - cfg.meteo['nameformat']) + '_lbc.nc' - geosp_file = os.path.join(cfg.icon_input_icbc, geosp_filename) - src_filename = time.strftime( - cfg.meteo['prefix'] + cfg.meteo['nameformat']) + '_lbc.nc' - src_file = os.path.join(cfg.icon_input_icbc, src_filename) - merged_filename = time.strftime( - cfg.meteo['prefix'] + - cfg.meteo['nameformat']) + '_merged.nc' - merged_file = os.path.join(cfg.icon_input_icbc, - merged_filename) - - # Copy GEOSP file from last run if not present - if not os.path.exists(geosp_file): - geosp_src_file = os.path.join(cfg.icon_input_icbc_prev, - geosp_filename) - tools.copy_file(geosp_src_file, - cfg.icon_input_icbc, - output_log=True) - - # Load GEOSP data array as da_geosp at time 00: - ds = xr.open_dataset(src_file) - ds_geosp = xr.open_dataset(geosp_file) - da_geosp = ds_geosp['GEOSP'] - - # Merge GEOSP-dataset with other timesteps - if (time.hour != 0): - # Change values of time dimension to current time - da_geosp = da_geosp.assign_coords( - time=[np.datetime64(time)]) - # Merge GEOSP into temporary file - ds_merged = xr.merge([ds, da_geosp]) - ds_merged.attrs = ds.attrs - ds_merged.to_netcdf(merged_file) - # Logging info for merging GEOSP - logging.info("Added GEOSP to file {}".format(merged_file)) - # Rename file to get original file name - tools.rename_file(merged_file, src_file) - - #----------------------------------------------------- - # Add Q (copy of QV) and/or PS to initial file - #----------------------------------------------------- - if cfg.model.startswith('icon-art'): - meteo_file = os.path.join( - cfg.icon_input_icbc, - cfg.startdate_sim.strftime(cfg.meteo['prefix'] + - cfg.meteo['nameformat']) + - '.nc') - if os.path.isfile(meteo_file): - merged_file = os.path.join( - cfg.icon_input_icbc, - cfg.startdate_sim.strftime(cfg.meteo['prefix'] + - cfg.meteo['nameformat']) + - '_merged.nc') - ds = xr.open_dataset(meteo_file) - merging = False - if 'PS' not in ds: - if 'LNPS' not in ds: - raise KeyError( - f"'LNPS' must be found in the initial conditions file {meteo_file}" - ) - merging = True - ds['PS'] = ds['LNPS'] - ds['PS'].attrs = ds['LNPS'].attrs - ds['PS'] = np.exp(ds['PS']) - ds['PS'] = ds['PS'].squeeze(dim='lev_2') - ds['PS'].attrs["long_name"] = 'surface pressure' - ds['PS'].attrs['units'] = 'Pa' - logging.info(f"Added PS to file {meteo_file}") - if 'Q' not in ds: - merging = True - ds['Q'] = ds['QV'] - logging.info(f"Added Q to file {meteo_file}") - if merging: - ds.to_netcdf(merged_file) - tools.rename_file(merged_file, meteo_file) - - #----------------------------------------------------- - # In case of OEM: merge chem tracers with meteo-files - #----------------------------------------------------- - if cfg.model == 'icon-art-oem': - for time in tools.iter_hours(cfg.startdate_sim, - cfg.enddate_sim, - cfg.meteo['inc']): - if time == cfg.startdate_sim: - #------------ - # Merge IC: - #------------ - meteo_file = os.path.join( - cfg.icon_input_icbc, - time.strftime(cfg.meteo['prefix'] + - cfg.meteo['nameformat']) + '.nc') - if os.path.isfile(meteo_file): - chem_file = os.path.join( - cfg.icon_input_icbc, cfg.chem['prefix'] + - time.strftime(cfg.chem['nameformat']) + '.nc') - merged_file = os.path.join( - cfg.icon_input_icbc, - time.strftime(cfg.meteo['prefix'] + - cfg.meteo['nameformat']) + - '_merged.nc') - ds_meteo = xr.open_dataset(meteo_file) - ds_chem = xr.open_dataset(chem_file) - # LNPS --> PS - ds_chem['PS'] = ds_chem['LNPS'] - ds_chem['PS'].attrs = ds_chem['LNPS'].attrs - ds_chem['PS'] = ds_chem['PS'].squeeze(dim='lev_2') - ds_chem['PS'].attrs[ - "long_name"] = 'surface pressure' - # merge: - ds_merged = xr.merge([ds_meteo, ds_chem], - compat="override") - #ds_merged.attrs = ds.attrs - ds_merged.to_netcdf(merged_file) - # Rename file to get original file name - tools.rename_file(merged_file, meteo_file) - tools.remove_file(chem_file) - logging.info( - "Added chemical tracer to file {}".format( - merged_file)) - - #------------ - # Merge LBC: - #------------ - meteo_file = os.path.join( - cfg.icon_input_icbc, - time.strftime(cfg.meteo['prefix'] + - cfg.meteo['nameformat']) + '_lbc.nc') - chem_file = os.path.join( - cfg.icon_input_icbc, cfg.chem['prefix'] + - time.strftime(cfg.chem_nameformat) + '_lbc.nc') - merged_file = os.path.join( - cfg.icon_input_icbc, - time.strftime(cfg.meteo['prefix'] + - cfg.meteo['nameformat']) + '_merged.nc') - ds_meteo = xr.open_dataset(meteo_file) - ds_chem = xr.open_dataset(chem_file) - # LNPS --> PS - ds_chem['PS'] = ds_chem['LNPS'] - ds_chem['PS'].attrs = ds_chem['LNPS'].attrs - ds_chem['PS'].attrs["long_name"] = 'surface pressure' - ds_chem['TRCH4_chemtr'] = ds_chem['CH4_BG'] - # merge: - ds_merged = xr.merge([ds_meteo, ds_chem], - compat="override") - #ds_merged.attrs = ds.attrs - ds_merged.to_netcdf(merged_file) - # Rename file to get original file name - tools.rename_file(merged_file, meteo_file) - tools.remove_file(chem_file) - logging.info( - "Added chemical tracer to file {}".format(merged_file)) - - # If COSMO (and not ICON): - else: - logging.info('COSMO analysis data for IC/BC') - - dest_path = os.path.join(cfg.int2lm_input, 'meteo') - tools.create_dir(dest_path, "meteo input") - - source_nameformat = cfg.meteo['nameformat'] - if cfg.meteo['prefix'] == 'lffd': - # nested runs use cosmoart-output as meteo data - # have to copy the *c.nc-file - src_file = os.path.join( - cfg.meteo['dir'], - cfg.startdate_sim.strftime(source_nameformat + 'c.nc')) - - tools.copy_file(src_file, dest_path, output_log=True) - - logging.info("Copied constant-param file from {} to {}".format( - src_file, dest_path)) - - # extend nameformat with ending to match cosmo-output - source_nameformat += '.nc' - - if cfg.meteo['prefix'] == 'efsf': - source_nameformat = cfg.meteo['prefix'] + '%y%m%d%H' - - num_steps = 0 - meteo_dir = cfg.meteo['dir'] - subdir = os.path.join(meteo_dir, - cfg.startdate_sim.strftime('%y%m%d%H')) - for time in tools.iter_hours(cfg.startdate_sim, cfg.enddate_sim, - cfg.meteo['inc']): - dest_path = os.path.join(cfg.int2lm_input, 'meteo') - src_file = os.path.join(meteo_dir, - time.strftime(source_nameformat)) - - if cfg.meteo['prefix'] == 'efsf': - if time == cfg.startdate_sim: - src_file = os.path.join(subdir, - 'eas' + time.strftime('%Y%m%d%H')) - if not os.path.isfile(src_file) and cfg.meteo.get('dir_alt') \ - is not None: - meteo_dir = cfg.meteo['dir_alt'] - subdir = os.path.join( - meteo_dir, cfg.startdate_sim.strftime('%y%m%d%H')) - src_file = os.path.join( - subdir, 'eas' + time.strftime('%Y%m%d%H')) - dest_path = os.path.join(cfg.int2lm_input, 'meteo', - cfg.meteo['prefix'] + '00000000') - else: - td = time - cfg.startdate_sim - timedelta(hours=6 * - num_steps) - days = str(td.days).zfill(2) - hours = str(td.seconds // 3600).zfill(2) - td_total = time - cfg.startdate_sim - days_total = str(td_total.days).zfill(2) - hours_total = str(td_total.seconds // 3600).zfill(2) - - src_file = os.path.join( - subdir, cfg.meteo['prefix'] + days + hours + '0000') - dest_path = os.path.join( - cfg.int2lm_input, 'meteo', cfg.meteo['prefix'] + - days_total + hours_total + '0000') - - # Next time, change directory - checkdir = os.path.join(meteo_dir, - time.strftime('%y%m%d%H')) - if os.path.isdir(checkdir): - num_steps += 1 - subdir = checkdir - elif cfg.meteo.get('dir_alt') is not None: - checkdir = os.path.join(cfg.meteo['dir_alt'], - time.strftime('%y%m%d%H')) - if os.path.isdir(checkdir): - num_steps += 1 - subdir = checkdir - meteo_dir = cfg.meteo['dir_alt'] - logging.info( - "Switching to other input directory from {} to {}" - .format(cfg.meteo['dir'], - cfg.meteo['dir_alt'])) - elif not os.path.exists(src_file): - # special case for MeteoSwiss COSMO-7 data - archive = '/store/mch/msopr/owm/COSMO-7' - yy = time.strftime("%y") - path = '/'.join([archive, 'ANA' + yy]) - src_file = os.path.join(path, time.strftime(source_nameformat)) - - # copy meteo file from project folder to - tools.copy_file(src_file, dest_path, output_log=True) - - logging.info("Copied file from {} to {}".format( - src_file, dest_path)) - - # Other IC/BC data - inv_to_process = [] - if cfg.model == 'cosmo-ghg': - try: - CAMS = dict(fullname="CAMS", - nickname="cams", - executable="cams4int2cosmo", - indir=cfg.cams['dir_orig'], - outdir=cfg.cams['dir_proc'], - param=[{ - 'inc': cfg.cams['inc'], - 'suffix': cfg.cams['suffix'] - }]) - inv_to_process.append(CAMS) - except AttributeError: - pass - try: - CT = dict(fullname="CarbonTracker", - nickname="ct", - executable="ctnoaa4int2cosmo", - indir=cfg.ct_dir_orig, - outdir=cfg.ct_dir_proc, - param=cfg.ct_parameters) - inv_to_process.append(CT) - except AttributeError: - pass - elif cfg.model == 'cosmo-art': - try: - MOZART = dict(fullname='MOZART', - nickname='mozart', - executable='mozart2int2lm', - indir=cfg.mozart_file_orig, - outdir=cfg.mozart_dir_proc, - param=[{ - 'inc': cfg.mozart_inc, - 'suffix': cfg.mozart_prefix - }]) - inv_to_process.append(MOZART) - except AttributeError: - pass - - if cfg.model == 'cosmo-ghg' or cfg.model == 'cosmo-art': - logging.info("Processing " + - ", ".join([i["fullname"] - for i in inv_to_process]) + " data") - - scratch_path = os.path.join(cfg.int2lm_input, 'icbc') - tools.create_dir(scratch_path, "icbc input") - - for inv in inv_to_process: - logging.info(inv["fullname"] + " files") - tools.create_dir(inv["outdir"], "processed " + inv["fullname"]) - - for p in inv["param"]: - inc = p["inc"] - for time in tools.iter_hours(cfg.startdate_sim, - cfg.enddate_sim, inc): - logging.info(time) - - filename = os.path.join( - inv["outdir"], p["suffix"] + "_" + - time.strftime("%Y%m%d%H") + ".nc") - if not os.path.exists(filename): - logging.info(filename) - try: - to_call = getattr(tools, inv["executable"]) - to_call.main(time, inv["indir"], inv["outdir"], - p) - except: - logging.error("Preprocessing " + - inv["fullname"] + " data failed") - raise - - # copy to (temporary) run input directory - tools.copy_file(filename, - scratch_path, - output_log=True) - - logging.info("OK") diff --git a/jobs/prepare_icon.py b/jobs/prepare_icon.py new file mode 100644 index 00000000..ca3d6872 --- /dev/null +++ b/jobs/prepare_icon.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pathlib import Path +import logging +from . import tools + +BASIC_PYTHON_JOB = True + + +def set_cfg_variables(cfg): + cfg.icon_base = cfg.chain_root / 'icon' + cfg.icon_input = cfg.icon_base / 'input' + cfg.icon_input_icbc = cfg.icon_input / 'icbc' + cfg.icon_work = cfg.icon_base / 'run' + cfg.icon_output = cfg.icon_base / 'output' + cfg.icon_output_reduced = cfg.icon_base / 'output_reduced' + cfg.icon_restart_out = cfg.icon_base / 'restart' + if cfg.chunk_id_prev: + cfg.icon_restart_in = cfg.chain_root_prev / 'icon' / 'run' + cfg.icon_input_icbc_prev = cfg.chain_root_prev / 'icon' / 'input' / 'icbc' + + cfg.input_files_scratch = {} + for dsc, file in cfg.input_files.items(): + cfg.input_files[dsc] = (p := Path(file)) + cfg.input_files_scratch[dsc] = cfg.icon_input / p.name + + cfg.create_vars_from_dicts() + + cfg.ini_datetime_string = cfg.startdate.strftime('%Y-%m-%dT%H:00:00Z') + cfg.end_datetime_string = cfg.enddate.strftime('%Y-%m-%dT%H:00:00Z') + + if cfg.lrestart == '.TRUE.': + cfg.restart_filename = 'restart_atm_DOM01.nc' + cfg.restart_file = cfg.icon_restart_in / cfg.restart_filename + cfg.restart_file_scratch = cfg.icon_work / cfg.restart_filename + + # Nudge type (global or nothing) + cfg.nudge_type = 2 if hasattr(cfg, + 'era5') and cfg.era5_global_nudging else 0 + # Time step for global nudging in seconds + cfg.nudging_step_seconds = cfg.nudging_step * 3600 if hasattr( + cfg, 'nudging_step') else None + # Prescribed initial conditions for CH4, CO and/or OH + cfg.iart_init_gas = 4 if hasattr( + cfg, 'species_inicond') and cfg.species_inicond else 0 + + cfg.startdate_sim_yyyymmdd_hh = cfg.startdate_sim.strftime('%Y%m%d_%H') + + +def main(cfg): + """ + **ICON Data Preparation** + + This function prepares input data for ICON simulations by creating necessary directories, + copying meteorological files, and handling specific data processing. + + - Create working directories and copy input files + + Parameters + ---------- + cfg : Config + Object holding all user-configuration parameters as attributes. + + Raises + ------ + RuntimeError + If any subprocess returns a non-zero exit code during execution. + """ + set_cfg_variables(cfg) + tools.change_logfile(cfg.logfile) + + # Create directories + tools.create_dir(cfg.icon_work, "icon_work") + tools.create_dir(cfg.icon_input_icbc, "icon_input_icbc") + tools.create_dir(cfg.icon_output, "icon_output") + tools.create_dir(cfg.icon_restart_out, "icon_restart_out") + + logging.info('Copy ICON input data (IC/BC) to working directory') + # Copy input files to scratch + script_lines = [ + '#!/usr/bin/env bash', + f'#SBATCH --job-name="copy_input_{cfg.casename}_{cfg.startdate_sim_yyyymmddhh}_{cfg.enddate_sim_yyyymmddhh}"', + f'#SBATCH --account={cfg.compute_account}', '#SBATCH --time=00:10:00', + f'#SBATCH --partition={cfg.compute_queue}', + f'#SBATCH --constraint={cfg.constraint}', '#SBATCH --nodes=1', + f'#SBATCH --output={cfg.logfile}', '#SBATCH --open-mode=append', + f'#SBATCH --chdir={cfg.icon_work}', '' + ] + for target, destination in zip(cfg.input_files.values(), + cfg.input_files_scratch.values()): + script_lines.append(f'rsync -av {target} {destination}') + + with (script := cfg.icon_work / 'copy_input.job').open('w') as f: + f.write('\n'.join(script_lines)) + + cfg.submit('prepare_icon', script) + logging.info("OK") diff --git a/jobs/reduce_output.py b/jobs/reduce_output.py index a1f8e57e..af68b2cc 100644 --- a/jobs/reduce_output.py +++ b/jobs/reduce_output.py @@ -15,8 +15,10 @@ from . import tools +BASIC_PYTHON_JOB = True -def main(cfg, model_cfg): + +def main(cfg): """ Calculates 2D column data and writes them into a new netCDF file. Only a fixed number of levels from **COSMO** output are considered. @@ -41,9 +43,8 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes - model_cfg : dict - Model configuration settings loaded from the ``config\/models.yaml`` file. """ + tools.change_logfile(cfg.logfile) cosmo_output = cfg.cosmo_output output_path = cfg.cosmo_output_reduced @@ -68,6 +69,12 @@ def main(cfg, model_cfg): # Wait for Cosmo to finish first tools.check_job_completion(cfg.log_finished_dir, "cosmo") + + # Number of levels and switch for unit conversion for 'reduce_output' job + if not hasattr(cfg, 'output_levels'): + cfg.output_levels = -1 + if not hasattr(cfg, 'convert_gas'): + cfg.convert_gas = True """Get list of constant files""" cfiles = [] read_cfile = False @@ -113,11 +120,10 @@ def main(cfg, model_cfg): py_file = os.path.join(tool_path, 'reduce_output_start_end.py') alternate_csv_file = os.path.join(cfg.chain_src_dir, 'cases', cfg.casename, 'variables.csv') - logfile = os.path.join(cfg.log_working_dir, 'reduce_output') logging.info('Submitting job to the queue...') result = subprocess.run([ - "sbatch", '--output=' + logfile, '--open-mode=append', '--wait', + "sbatch", '--output=' + cfg.logfile, '--open-mode=append', '--wait', bash_file, py_file, cosmo_output, output_path, str_startdate, str_enddate, str(cfg.reduce_output['output_levels']), diff --git a/jobs/tools/__init__.py b/jobs/tools/__init__.py index 01b8f3e5..15f39ead 100644 --- a/jobs/tools/__init__.py +++ b/jobs/tools/__init__.py @@ -166,14 +166,18 @@ def change_logfile(filename): """ fileh = logging.FileHandler(filename, 'a', delay=True) - # log_format = logging.Formatter('%(levelname)s:%(message)s') - # fileh.setFormatter(log_format) + log_format = logging.Formatter('%(levelname)s: %(message)s') + fileh.setFormatter(log_format) log = logging.getLogger() # root logger + log.setLevel(logging.INFO) # Set the desired logging level + if len(log.handlers) > 0: - log.handlers = [fileh] # set the new handler + # If there are existing handlers, replace them with the new handler + log.handlers = [fileh] else: - logging.basicConfig(filename=filename, level=logging.INFO) + # If no existing handlers, add the new handler + log.addHandler(fileh) def create_dir(path, readable_name): @@ -195,6 +199,7 @@ def create_dir(path, readable_name): """ try: os.makedirs(path, exist_ok=True) + logging.info(f"Created {readable_name} directory at path {path}") except (OSError, Exception) as e: logging.error("Creating {} directory at path {} failed with {}".format( readable_name, path, @@ -420,7 +425,7 @@ def check_job_completion(log_finished_dir, job, waittime=3000): log_finished_dir : directory for logfiles of finished jobs - job: string of job name, e.g. "prepare_data" + job: string of job name, e.g. "prepare_icon" waittime : time to wait (factor of .1 second) Defaults to 3000 (300 seconds) diff --git a/jobs/tools/check_model.py b/jobs/tools/check_model.py index 95b1cc94..b7c9c409 100644 --- a/jobs/tools/check_model.py +++ b/jobs/tools/check_model.py @@ -5,7 +5,7 @@ def check_model(cfg, model='COSMO'): """Check that the model specified in cfg matched the prescribed model. - Check that cfg.model == model. If not, raises a value-error. + Check that cfg.workflow_name == model. If not, raises a value-error. Ignores capitalization of the strings Parameters @@ -17,7 +17,7 @@ def check_model(cfg, model='COSMO'): Prescribed model """ #don't care about capitalization - if not cfg.model.lower() == model.lower(): + if not cfg.workflow_name.lower() == model.lower(): raise ValueError("The model specified in the configuration file is {}" ", but the job only applies to {}.".format( - cfg.model, model)) + cfg.workflow_name, model)) diff --git a/jobs/verify_chain.py b/jobs/verify_chain.py index 3747ee98..05b537a9 100644 --- a/jobs/verify_chain.py +++ b/jobs/verify_chain.py @@ -7,6 +7,8 @@ from . import tools +BASIC_PYTHON_JOB = True + def comp_data(dataset1, dataset2, variables): """Use tools.helper.datasets_equal to compare the datasets. @@ -14,7 +16,7 @@ def comp_data(dataset1, dataset2, variables): tools.helper.datasets_equal(dataset1, dataset2, variables, verbose=True) -def main(cfg, model_cfg): +def main(cfg): """Compare outputs of the chain to a reference. Looks for the reference-file in ``cfg.verify_chain['reference_dir']``. @@ -37,9 +39,8 @@ def main(cfg, model_cfg): ---------- cfg : Config Object holding all user-configuration parameters as attributes - model_cfg : dict - Model configuration settings loaded from the ``config\/models.yaml`` file. """ + tools.change_logfile(cfg.logfile) logging.info("Started verification") for (ref_file, run_file), variables in cfg.verify_chain['values_to_check'].items(): diff --git a/run_chain.py b/run_chain.py index 743b54c2..3f27949b 100755 --- a/run_chain.py +++ b/run_chain.py @@ -2,17 +2,14 @@ # -*- coding: utf-8 -*- from datetime import datetime, timedelta - +import pytz import logging -import os -import sys -import time import shutil import argparse -import yaml import jobs from jobs import tools +from config import Config def parse_arguments(): @@ -44,7 +41,7 @@ def parse_arguments(): "Jobs are executed in the order in which they are " "given here. " "If no jobs are given, default jobs will be executed" - "as defined in config/models.yaml.") + "as defined in config/workflows.yaml.") parser.add_argument("-j", "--jobs", nargs='*', @@ -52,6 +49,31 @@ def parse_arguments(): help=jobs_help, default=None) + chunks_help = ("List of chunks to be executed. A chunk is time" + "frame within the total simulation period." + "It has the format `YYYYMMDDHH_YYYYMMDDHH`." + "If no chunks are given, all chunks within the" + "simulation period will be executed.") + parser.add_argument("-c", + "--chunks", + nargs='*', + dest="chunk_list", + help=chunks_help, + default=None) + + sync_help = ("Force synchronous execution.") + parser.add_argument("-s", + "--force-sync", + action='store_true', + help=sync_help) + + no_logging_help = ("Disable logging for chain_status.log.") + parser.add_argument("--no-logging", + action='store_false', + dest="enable_logging", + default=True, + help=no_logging_help) + force_help = ("Force the processing chain to redo all specified jobs," " even if they have been started already or were finished" " previously. WARNING: Only logfiles get deleted," @@ -84,355 +106,16 @@ def parse_arguments(): return args -class Config(): - - def __init__(self, casename): - """Initialize an instance of the Config class. - - Initializes an instance of the Config class with user-specific - and default attributes. The class represents a processing chain for a - particular case, and its attributes are populated based on the provided - `casename`. - - Parameters - ---------- - casename : str - The identifier for the case, typically specifying the configuration - and settings to be used in the processing chain. - - Attributes - ---------- - user_name : str - The username of the current user, obtained from the 'USER' environment variable. - email : str - The user's email address, initially set to None and updated using the `set_email` method. - casename : str - The specified case name for the processing chain. - chain_src_dir : str - The source directory for the processing chain, typically the current working directory. - case_path : str - The path to the case directory under 'cases/' for the specified `casename`. - work_root : str - The root directory for processing chain execution, typically located under the source directory. - - Notes - ----- - The method also loads user-defined attributes from the configuration file, - sets specific settings based on the node type ('gpu' or 'mc'), and initializes - other instance-specific attributes. - """ - # Global attributes (initialized with default values) - self.user_name = os.environ['USER'] - self.set_email() - self.casename = casename - self.set_account() - - self.chain_src_dir = os.getcwd() - self.case_path = os.path.join(self.chain_src_dir, 'cases', - self.casename) - self.work_root = os.path.join(self.chain_src_dir, 'work') - - # User-defined attributes from config file - self.load_config_file(casename) - - # Specific settings based on the node type ('gpu' or 'mc') - self.set_node_info() - - def load_config_file(self, casename): - """Load configuration settings from a YAML file and set them as attributes. - - This method reads the configuration settings from a YAML file located in - the 'cases/casename' directory and sets them as attributes of the instance. - - Parameters - ---------- - casename : str - Name of the folder in 'cases/' where the configuration files are stored. - - Returns - ------- - Config - The same `Config` instance with configuration settings as attributes. - - Raises - ------ - FileNotFoundError - If the specified configuration file or case directory is not found. - - Notes - ----- - If the configuration file does not exist, the method will attempt to suggest - a similar case directory based on a Levenshtein distance comparison with - existing case directories. The method directly assigns values from the - configuration file to instance attributes for easy access. - """ - cfg_file = os.path.join('cases', casename, 'config.yaml') - - if not os.path.isfile(cfg_file): - all_cases = [ - path.name for path in os.scandir('cases') if path.is_dir() - ] - closest_name = min([(tools.levenshtein(casename, name), name) - for name in all_cases], - key=lambda x: x[0])[1] - raise FileNotFoundError( - f"Case-directory '{casename}' not found, did you mean '{closest_name}'?" - ) - - try: - with open(cfg_file, 'r') as yaml_file: - cfg_data = yaml.load(yaml_file, Loader=yaml.FullLoader) - except FileNotFoundError: - raise FileNotFoundError( - f"No file 'config.yaml' in {os.path.dirname(cfg_file)}") - - # Directly assign values to instance attributes - for key, value in cfg_data.items(): - setattr(self, key, value) - - return self - - def set_account(self): - """Set the compute account based on user information. - - This method determines the compute account to be used based on the user's - name and system configuration. - - Returns - ------- - Config - The same `Config` instance with the `compute_account` attribute set. - - Notes - ----- - - If the user name is 'jenkins', the compute account is set to 'g110' for - Jenkins testing. - - If an account is specified in the user's '~/.acct' file, it will be used - as the compute account. - - If neither of the above conditions is met, the standard account is - determined using the 'id -gn' command. - """ - if self.user_name == 'jenkins': - # g110 account for Jenkins testing - self.compute_account = 'g110' - elif os.path.exists(os.environ['HOME'] + '/.acct'): - # Use account specified in ~/.acct file - with open(os.environ['HOME'] + '/.acct', 'r') as file: - self.compute_account = file.read().rstrip() - else: - # Use standard account - self.compute_account = os.popen("id -gn").read().splitlines()[0] - - return self - - def set_node_info(self): - """Set node-specific information based on configuration settings. - - This method configures node-specific settings, such as the number of tasks - per node and CUDA-related environment variables, based on the provided - configuration settings in the instance. - - Returns - ------- - Config - The same `Config` instance with updated node-specific attributes. - - Raises - ------ - ValueError - If the 'constraint' or 'run_on' configuration values are invalid. - """ - if self.constraint == 'gpu': - if self.model.startswith('icon'): - if self.run_on == 'gpu': - self.ntasks_per_node = 1 - elif self.run_on == 'cpu': - self.ntasks_per_node = 12 - else: - raise ValueError( - "Invalid value for 'run_on' in the configuration." - "It should be either 'gpu' or 'cpu'.") - else: - self.ntasks_per_node = 12 - self.mpich_cuda = ('export MPICH_RDMA_ENABLED_CUDA=1\n' - 'export MPICH_G2G_PIPELINE=256\n' - 'export CRAY_CUDA_MPS=1\n') - elif self.constraint == 'mc': - self.ntasks_per_node = 36 - self.mpich_cuda = '' - else: - raise ValueError( - "Invalid value for 'constraint' in the configuration." - "It should be either 'gpu' or 'mc'.") - - return self - - def set_restart_step_hours(self): - """Set the restart step in hours. - - Converts the 'restart_step' attribute, which is in ISO8601 duration format, - to hours and stores the result in the 'restart_step_hours' attribute. - - Returns - ------- - Config - The same `Config` instance with the 'restart_step_hours' attribute set. - """ - self.restart_step_hours = int( - tools.iso8601_duration_to_hours(self.restart_step)) - - return self - - def set_email(self): - """Set the user's email address based on system configuration. - - This method determines the user's email address based on the user's name - and system configuration. - - Returns - ------- - Config - The same `Config` instance with the `user_mail` attribute set. - - Notes - ----- - - If the user name is 'jenkins', the user's email address is set to None. - - If an email address is specified in the user's '~/.forward' file, it will - be used as the user's email address. - - If neither of the above conditions is met, the user's email address is set - to None. - """ - if self.user_name == 'jenkins': - self.user_mail = None - elif os.path.exists(os.environ['HOME'] + '/.forward'): - with open(os.environ['HOME'] + '/.forward', 'r') as file: - self.user_mail = file.read().rstrip() - else: - self.user_mail = None - - return self - - def print_config(self): - """Print the configuration attributes and their values. - - This method displays the configuration attributes and their corresponding - values in a formatted manner. Lists and dictionaries within the configuration - are also displayed with appropriate indentation. - - Notes - ----- - - The maximum column width for the attribute names is automatically determined. - - The method prints the attribute name, its type, and its value. - - If an attribute is a list, it is displayed with each item indented. - - If an attribute is a dictionary, it is also displayed with each key-value - pair indented. - """ - # max_col_width = max(len(key) for key in vars(self)) + 1 - max_col_width = 27 - - print("\nConfiguration:") - print(f"{'Attribute':<{max_col_width}} Type Value") - print("-" * 80) - for key, value in vars(self).items(): - if isinstance(value, list): - # If the value is a list, format it with indentation - print(f"{key:<{max_col_width}} list") - for item in value: - item_type = type(item).__name__ - print(f" - {item:<{max_col_width-4}} {item_type}") - elif isinstance(value, dict): - # If the value is a dictionary, format it as before - print(f"{key:<{max_col_width}} dict") - for sub_key, sub_value in value.items(): - sub_value_type = type(sub_value).__name__ - print( - f" - {sub_key:<{max_col_width-4}} {sub_value_type:<4} {sub_value}" - ) - else: - # Standard output - key_type = type(key).__name__ - print(f"{key:<{max_col_width}} {key_type:<4} {value}") - - def convert_paths_to_absolute(self): - """Convert relative file paths to absolute paths in the configuration. - - This method iterates through all variables and their dictionary entries in - the configuration and checks for string values that represent file paths. - If a file path is relative (starts with './'), it is converted to an - absolute path using `os.path.abspath`. - - Returns - ------- - Config - The same `Config` instance with relative file paths converted to absolute paths. - """ - # Loop through all variables and their dictionary entries - for attr_name, attr_value in self.__dict__.items(): - if isinstance(attr_value, str): - if os.path.isabs(attr_value): - # If the value is already an absolute path, continue to the next iteration - continue - # Convert relative paths to absolute paths - if attr_value.startswith('./'): - self.__dict__[attr_name] = os.path.abspath(attr_value) - elif isinstance(attr_value, dict): - # If the attribute is a dictionary, loop through its entries - for key, value in attr_value.items(): - if isinstance(value, str): - if os.path.isabs(value): - # If the value is already an absolute path, continue to the next iteration - continue - # Convert relative paths to absolute paths - if value.startswith('./'): - self.__dict__[attr_name][key] = os.path.abspath( - value) - - return self - - def create_vars_from_dicts(self): - """Create instance attributes from dictionary entries in the configuration. - - This method iterates through the instance's attribute dictionary and checks - for dictionary values. For each dictionary encountered, it creates new - instance attributes by concatenating the original attribute name and the - dictionary key, and assigns the corresponding values. - - Returns - ------- - Config - The same `Config` instance with new attributes created from dictionary entries. - """ - # Create a copy of the object's __dict__ to avoid modifying it during iteration - object_dict = vars(self).copy() - - for key, value in object_dict.items(): - if isinstance(value, dict): - for sub_key, sub_value in value.items(): - setattr(self, key + '_' + sub_key, sub_value) - return self - - -def run_chain(work_root, model_cfg, cfg, startdate_sim, enddate_sim, job_names, - force, resume): - """Run the processing chain, managing job execution and logging. +def run_chunk(cfg, force, resume): + """Run a chunk of the processing chain, managing job execution and logging. This function sets up and manages the execution of a processing chain, handling job execution, logging, and various configuration settings. Parameters ---------- - work_root : str - The path to the directory where the processing chain writes files during execution. - model_cfg : dict - Configuration settings for the modeling framework. cfg : Config Object holding user-defined configuration parameters as attributes. - startdate_sim : datetime-object - The start date of the simulation. - enddate_sim : datetime-object - The end date of the simulation. - job_names : list of str - List of names of jobs to execute on every timeslice. force : bool If True, it will force the execution of jobs regardless of their completion status. resume : bool @@ -449,194 +132,108 @@ def run_chain(work_root, model_cfg, cfg, startdate_sim, enddate_sim, job_names, - It checks for job completion status and resumes or forces execution accordingly. - Job log files are managed, and errors or timeouts are handled with notifications. """ - # Write current start and end dates to config variables - cfg.startdate_sim = startdate_sim - cfg.enddate_sim = enddate_sim - # Set forecast time cfg.forecasttime = (cfg.enddate_sim - cfg.startdate_sim).total_seconds() / 3600 - # String variables for startdate_sim - cfg.startdate_sim_yyyymmddhh = startdate_sim.strftime('%Y%m%d%H') - cfg.enddate_sim_yyyymmddhh = enddate_sim.strftime('%Y%m%d%H') - - # Folder naming and structure - cfg.job_id = f'{cfg.startdate_sim_yyyymmddhh}_{cfg.enddate_sim_yyyymmddhh}' - cfg.chain_root = os.path.join(work_root, cfg.casename, cfg.job_id) - - # Config variables for spinup runs (datetimes, job-id, etc.) - if hasattr(cfg, 'spinup'): - if cfg.first_one: # first run in spinup - cfg.chain_root_prev = None - else: # consecutive runs in spinup - cfg.startdate_sim_yyyymmddhh = cfg.startdate_sim.strftime( - '%Y%m%d%H') - enddate_sim_yyyymmddhh_prev = ( - cfg.enddate_sim - - timedelta(hours=cfg.restart_step_hours)).strftime('%Y%m%d%H') - - if cfg.second_one: - startdate_sim_yyyymmddhh_prev = (cfg.enddate_sim - timedelta( - hours=2 * cfg.restart_step_hours)).strftime('%Y%m%d%H') - else: # all other runs (i.e., get job_id from previous run) - startdate_sim_yyyymmddhh_prev = ( - cfg.enddate_sim - - timedelta(hours=2 * cfg.restart_step_hours + - cfg.spinup)).strftime('%Y%m%d%H') - - cfg.job_id_prev = f'{startdate_sim_yyyymmddhh_prev}_{enddate_sim_yyyymmddhh_prev}' - cfg.chain_root_prev = os.path.join(work_root, cfg.casename, - cfg.job_id_prev) - cfg.last_cosmo_output = os.path.join(cfg.chain_root_prev, 'cosmo', - 'output') - - # No restart for spinup simulations (= default values for no restart) - cfg.cosmo_restart_out = '' - cfg.cosmo_restart_in = '' - elif 'restart' in model_cfg['models'][cfg.model]['features']: - cfg.startdate_sim_prev = cfg.startdate_sim - timedelta( - hours=cfg.restart_step_hours) - cfg.enddate_sim_prev = cfg.enddate_sim - timedelta( - hours=cfg.restart_step_hours) - cfg.startdate_sim_prev_yyyymmddhh = cfg.startdate_sim_prev.strftime( - '%Y%m%d%H') - cfg.enddate_sim_prev_yyyymmddhh = cfg.enddate_sim_prev.strftime( - '%Y%m%d%H') - - cfg.job_id_prev = f'{cfg.startdate_sim_prev_yyyymmddhh}_{cfg.enddate_sim_prev_yyyymmddhh}' - cfg.chain_root_prev = os.path.join(work_root, cfg.casename, - cfg.job_id_prev) - - # Set restart directories - cfg.cosmo_restart_out = os.path.join(cfg.chain_root, 'cosmo', - 'restart') - cfg.cosmo_restart_in = os.path.join(cfg.chain_root_prev, 'cosmo', - 'restart') - - # Check constraint - if hasattr(cfg, 'constraint'): - assert cfg.constraint in ['gpu', 'mc'], ("Unknown constraint, use" - "gpu or mc") - - # If nested run: use output of mother-simulation - if 'nesting' in model_cfg['models'][ - cfg.model]['features'] and not os.path.isdir(cfg.meteo.dir): - # if ifs_hres_dir doesn't point to a directory, - # it is the name of the mother run - mother_name = cfg.meteo.dir - cfg.meteo.dir = os.path.join(work_root, mother_name, cfg.job_id, - 'cosmo', 'output') - cfg.meteo.inc = 1 - cfg.meteo.prefix = 'lffd' - # Logging - log_working_dir = os.path.join(cfg.chain_root, 'checkpoints', 'working') - log_finished_dir = os.path.join(cfg.chain_root, 'checkpoints', 'finished') - setattr(cfg, 'log_working_dir', log_working_dir) - setattr(cfg, 'log_finished_dir', log_finished_dir) + cfg.chain_root = cfg.work_root / cfg.casename / cfg.chunk_id + cfg.log_working_dir = cfg.chain_root / 'checkpoints' / 'working' + cfg.log_finished_dir = cfg.chain_root / 'checkpoints' / 'finished' # Create working directories tools.create_dir(cfg.chain_root, "chain_root") - tools.create_dir(log_working_dir, "log_working") - tools.create_dir(log_finished_dir, "log_finished") - - # Number of levels and switch for unit conversion for 'reduce_output' job - if not hasattr(cfg, 'output_levels'): - setattr(cfg, 'output_levels', -1) - if not hasattr(cfg, 'convert_gas'): - setattr(cfg, 'convert_gas', True) - - # run jobs (if required) - for job in job_names: - skip = False - - # if exists job is currently worked on or has been finished - if os.path.exists(os.path.join(log_working_dir, job)): - if not force: - while True: - if os.path.exists(os.path.join(log_finished_dir, job)): - print('Skip "%s" for chain "%s"' % (job, cfg.job_id)) - skip = True - break - elif resume: - resume = False - break - else: - print('Wait for "%s" of chain "%s"' % - (job, cfg.job_id)) - sys.stdout.flush() - for _ in range(3000): - time.sleep(0.1) + tools.create_dir(cfg.log_working_dir, "log_working") + tools.create_dir(cfg.log_finished_dir, "log_finished") + + # Config variables for spinup and restart runs + cfg.cosmo_restart_in = '' + cfg.cosmo_restart_out = '' + if hasattr(cfg, 'spinup'): + if cfg.chunk_id_prev: + cfg.chain_root_prev = cfg.work_root / cfg.casename / cfg.chunk_id_prev + cfg.last_cosmo_output = cfg.chain_root_prev / 'cosmo' / 'output' + elif 'restart' in cfg.workflow['features']: + if cfg.chunk_id_prev: + cfg.chain_root_prev = cfg.work_root / cfg.casename / cfg.chunk_id_prev + cfg.cosmo_restart_in = cfg.chain_root_prev / 'cosmo' / 'restart' + cfg.cosmo_restart_out = cfg.chain_root / 'cosmo' / 'restart' + + if not cfg.force_sync: + # Empty curent job ids + cfg.job_ids['current'] = {} + + # Submit current chunk + for job_name in cfg.jobs: + if (cfg.log_finished_dir / job_name).exists() and not force: + # Skip job if already finished + print(f' └── Skipping "{job_name}" job') + skip = True else: - os.remove(os.path.join(log_working_dir, job)) - try: - os.remove(os.path.join(log_finished_dir, job)) - except FileNotFoundError: - pass - - if not skip: - print('Process "%s" for chain "%s"' % (job, cfg.job_id)) - sys.stdout.flush() - - try_count = 1 + (args.ntry - 1) * (job == 'cosmo') - while try_count > 0: - try_count -= 1 - try: - # Change the log file - logfile = os.path.join(cfg.log_working_dir, job) - logfile_finish = os.path.join(cfg.log_finished_dir, job) - tools.change_logfile(logfile) - - # Launch the job - to_call = getattr(jobs, job) - to_call.main(cfg, model_cfg) - - shutil.copy(logfile, logfile_finish) - - exitcode = 0 - try_count = 0 - except: - subject = "ERROR or TIMEOUT in job '%s' for chain '%s'" % ( - job, cfg.job_id) - logging.exception(subject) - if cfg.user_mail: - message = tools.prepare_message( - os.path.join(log_working_dir, job)) - logging.info('Sending log file to %s' % cfg.user_mail) - tools.send_mail(cfg.user_mail, subject, message) - if try_count == 0: - raise RuntimeError(subject) - - if exitcode != 0 or not os.path.exists( - os.path.join(log_finished_dir, job)): - subject = "ERROR or TIMEOUT in job '%s' for chain '%s'" % ( - job, cfg.job_id) + print(f' └── Submitting "{job_name}" job') + + # Logfile settings + cfg.logfile = cfg.log_working_dir / job_name + cfg.logfile_finish = cfg.log_finished_dir / job_name + + # Submit the job + job = getattr(jobs, job_name) + if hasattr(job, 'BASIC_PYTHON_JOB') and job.BASIC_PYTHON_JOB: + cfg.submit_basic_python(job_name) + else: + job.main(cfg) + + # Wait for previous chunk jobs, monitor them and cycle info + cfg.cycle() + + else: # For nested run_chain.py + for job_name in cfg.jobs: + print(f' └── Process "{job_name}" for chunk "{cfg.chunk_id}"') + try: + # Change the log file + cfg.logfile = cfg.log_working_dir / job_name + cfg.logfile_finish = cfg.log_finished_dir / job_name + + # Launch the job + to_call = getattr(jobs, job_name) + to_call.main(cfg) + + shutil.copy(cfg.logfile, cfg.logfile_finish) + + exitcode = 0 + except Exception: + exitcode = 1 + subject = "ERROR or TIMEOUT in job '%s' for chunk '%s'" % ( + job_name, cfg.chunk_id) + logging.exception(subject) + if cfg.user_mail: + message = tools.prepare_message(cfg.log_working_dir / + job_name) + logging.info('Sending log file to %s' % cfg.user_mail) + tools.send_mail(cfg.user_mail, subject, message) + + if exitcode != 0 or not (cfg.log_finished_dir / job_name).exists(): + subject = "ERROR or TIMEOUT in job '%s' for chunk '%s'" % ( + job_name, cfg.chunk_id) if cfg.user_mail: - message = tools.prepare_message( - os.path.join(log_working_dir, job)) + message = tools.prepare_message(cfg.log_working_dir / + job_name) logging.info('Sending log file to %s' % cfg.user_mail) tools.send_mail(cfg.user_mail, subject, message) raise RuntimeError(subject) -def restart_runs(work_root, model_cfg, cfg, job_names, force, resume): +def restart_runs(cfg, force, resume): """Start subchains in specified intervals and manage restarts. This function slices the total runtime of the processing chain according to the - `cfg.restart_step_hours` configuration. It calls `run_chain()` for each + `cfg.restart_step_hours` configuration. It calls `run_chunk()` for each specified interval. Parameters ---------- - work_root : str - The path to the directory in which the chain writes files during execution. - model_cfg : dict - Configuration settings for the modeling framework. cfg : Config Object holding all user-configuration parameters as attributes. - job_names : list of str - List of names of jobs to execute on every timeslice. force : bool If True, it will force the execution of jobs regardless of their completion status. resume : bool @@ -644,123 +241,49 @@ def restart_runs(work_root, model_cfg, cfg, job_names, force, resume): Notes ----- - - The function iterates over specified intervals, calling `run_chain()` for each. + - The function iterates over specified intervals, calling `run_chunk()` for each. - It manages restart settings and logging for each subchain. """ - # run restarts - for startdate_sim in tools.iter_hours(cfg.startdate, cfg.enddate, - cfg.restart_step_hours): - enddate_sim = startdate_sim + timedelta(hours=cfg.restart_step_hours) - - if enddate_sim > cfg.enddate: - continue - - # Set restart variable (only takes effect for ICON) - if startdate_sim == cfg.startdate: - setattr(cfg, "lrestart", '.FALSE.') - else: - setattr(cfg, "lrestart", '.TRUE.') - - print("Starting run with startdate {}".format(startdate_sim)) - - run_chain(work_root=work_root, - model_cfg=model_cfg, - cfg=cfg, - startdate_sim=startdate_sim, - enddate_sim=enddate_sim, - job_names=job_names, - force=force, - resume=resume) - - -def restart_runs_spinup(work_root, model_cfg, cfg, job_names, force, resume): - """Start subchains in specified intervals and manage restarts with spin-up. - - This function slices the total runtime of the processing chain according to the - `cfg.restart_step_hours` configuration. It calls `run_chain()` for each specified - interval, managing restarts with spin-up. - - Parameters - ---------- - work_root : str - The path to the directory in which the chain writes files during execution. - model_cfg : dict - Configuration settings for the modeling framework. - cfg : Config - Object holding all user-configuration parameters as attributes. - job_names : list of str - List of names of jobs to execute on every timeslice. - force : bool - If True, it will force the execution of jobs regardless of their completion status. - resume : bool - If True, it will resume the last unfinished job. - Notes - ----- - - The function iterates over specified intervals, calling `run_chain()` for each. - - It manages restart settings and logging for each subchain, including spin-up. - """ - for startdate_sim in tools.iter_hours(cfg.startdate, cfg.enddate, - cfg.restart_step_hours): - if startdate_sim == cfg.startdate: - setattr(cfg, "first_one", True) - setattr(cfg, "second_one", False) - setattr(cfg, "lrestart", '.FALSE.') - run_time = cfg.restart_step_hours - startdate_sim_spinup = startdate_sim - elif startdate_sim == cfg.startdate + timedelta( - hours=cfg.restart_step_hours): - setattr(cfg, "first_one", False) - setattr(cfg, "second_one", True) - setattr(cfg, "lrestart", '.TRUE.') - run_time = cfg.restart_step_hours + cfg.spinup - startdate_sim_spinup = startdate_sim - timedelta(hours=cfg.spinup) + for chunk_id in cfg.chunks: + cfg.chunk_id = chunk_id + cfg.get_previous_chunk_id(cfg.chunk_id) + cfg.startdate_sim_yyyymmddhh = cfg.chunk_id[0:10] + cfg.enddate_sim_yyyymmddhh = cfg.chunk_id[-10:] + cfg.startdate_sim = datetime.strptime( + cfg.startdate_sim_yyyymmddhh, "%Y%m%d%H").replace(tzinfo=pytz.UTC) + cfg.enddate_sim = datetime.strptime( + cfg.enddate_sim_yyyymmddhh, "%Y%m%d%H").replace(tzinfo=pytz.UTC) + + if 'spinup' in cfg.workflow['features'] and hasattr(cfg, 'spinup'): + if cfg.startdate_sim == cfg.startdate: + cfg.first_one = True + cfg.second_one = False + cfg.lrestart = '.FALSE.' + elif cfg.startdate_sim == cfg.startdate + timedelta( + hours=cfg.restart_step_hours): + cfg.first_one = False + cfg.second_one = True + cfg.lrestart = '.TRUE.' + else: + cfg.first_one = False + cfg.second_one = False + cfg.lrestart = '.TRUE.' else: - setattr(cfg, "first_one", False) - setattr(cfg, "second_one", False) - setattr(cfg, "lrestart", '.TRUE.') - run_time = cfg.restart_step_hours + cfg.spinup - startdate_sim_spinup = startdate_sim - timedelta(hours=cfg.spinup) + # Set restart variable (only takes effect for ICON) + cfg.lrestart = ".FALSE." if cfg.startdate_sim == cfg.startdate else ".TRUE." - # If current enddate is later than global enddate, skip - enddate_sim = startdate_sim + timedelta(hours=cfg.restart_step_hours) - if enddate_sim > cfg.enddate: - continue + print(f'└── Starting chunk "{cfg.chunk_id}"') - print(f'Runtime of sub-simulation: {run_time} h') - - run_chain(work_root=work_root, - model_cfg=model_cfg, - cfg=cfg, - startdate_sim=startdate_sim_spinup, - enddate_sim=enddate_sim, - job_names=job_names, - force=force, - resume=resume) - - -def load_model_config_yaml(yamlfile): - """Load model configuration from a YAML file. - - Parameters - ---------- - yamlfile : str - The path to the YAML file containing the model configuration. - - Returns - ------- - dict - A dictionary representing the model configuration loaded from the YAML file. - """ - with open(yamlfile) as file: - model_cfg = yaml.safe_load(file) - return model_cfg + run_chunk(cfg=cfg, force=force, resume=resume) -if __name__ == '__main__': +def main(): """Main script for running a processing chain. - This script handles the execution of a processing chain for one or more specified cases. It loads model configurations, prepares the environment, and starts the chain based on the provided settings. + This script handles the execution of a processing chain for one or more + specified cases. It loads model configurations, prepares the environment, + and starts the chain based on the provided settings. Parameters ---------- @@ -769,25 +292,26 @@ def load_model_config_yaml(yamlfile): Notes ----- - This script uses command-line arguments to specify cases and job lists. - - It loads model configurations, converts paths to absolute, sets restart settings, and starts the chain. - - Depending on the model's features, it may run with or without restarts or utilize spin-up restarts. + - It loads model configurations, converts paths to absolute, sets restart + settings, and starts the chain. + - Depending on the model's features, it may run with or without restarts + or utilize spin-up restarts. """ args = parse_arguments() for casename in args.casenames: # Load configs - model_cfg = load_model_config_yaml('config/models.yaml') cfg = Config(casename) + # Make ntry a Config variable + cfg.ntry = args.ntry + # Convert relative to absolute paths cfg.convert_paths_to_absolute() # Set restart step in hours cfg.set_restart_step_hours() - # Print config before duplication of dict variables - cfg.print_config() - # Duplicate variables in the form of _ for better # access within namelist template. # E.g.: cfg.meteo['dir'] -> cfg.meteo_dir @@ -795,36 +319,52 @@ def load_model_config_yaml(yamlfile): # Check if jobs are set or if default ones are used if args.job_list is None: - args.job_list = model_cfg['models'][cfg.model]['jobs'] + cfg.jobs = cfg.workflow['jobs'] + else: + cfg.jobs = args.job_list + + # Check sync is forced + if args.force_sync: + cfg.force_sync = True + else: + cfg.force_sync = False - print(f"Starting chain for case {casename} and model {cfg.model}") + # Check constraint + if cfg.constraint: + assert cfg.constraint in ['gpu', 'mc'], ("Unknown constraint, use" + "gpu or mc") + + # Get complete chunk list + cfg.get_chunk_list() + + # Print config before chain starts + cfg.print_config() + + # Get custom chunks if specified + cfg.chunks = args.chunk_list if args.chunk_list else cfg.chunk_list + + tools.create_dir(cfg.case_root, "case_root") + + print("╔════════════════════════════════════════╗") + print("║ Starting Processing Chain ║") + print("╠════════════════════════════════════════╣") + print(f"║ Case: {casename: <27} ║") + print(f"║ Workflow: {cfg.workflow_name: <27} ║") + print("╚════════════════════════════════════════╝") # Check for restart compatibility and spinup - if 'restart' in model_cfg['models'][cfg.model]['features']: - if hasattr(cfg, 'spinup'): - print("Using spin-up restarts.") - restart_runs_spinup(work_root=cfg.work_root, - model_cfg=model_cfg, - cfg=cfg, - job_names=args.job_list, - force=args.force, - resume=args.resume) - else: - print("Using built-in model restarts.") - restart_runs(work_root=cfg.work_root, - model_cfg=model_cfg, - cfg=cfg, - job_names=args.job_list, - force=args.force, - resume=args.resume) + if 'restart' in cfg.workflow['features']: + restart_runs(cfg=cfg, force=args.force, resume=args.resume) else: print("No restarts are used.") - run_chain(work_root=cfg.work_root, - cfg=cfg, - startdate_sim=cfg.startdate, - enddate_sim=cfg.enddate, - job_names=args.job_list, - force=args.force, - resume=args.resume) - - print('>>> Finished the processing chain successfully <<<') + cfg.startdate_sim = cfg.startdate + cfg.enddate_sim = cfg.enddate + run_chunk(cfg=cfg, force=args.force, resume=args.resume) + + print("╔════════════════════════════════════════╗") + print("║ Processing Chain Completed ║") + print("╚════════════════════════════════════════╝") + + +if __name__ == '__main__': + main() diff --git a/workflows.yaml b/workflows.yaml new file mode 100644 index 00000000..f87c22b5 --- /dev/null +++ b/workflows.yaml @@ -0,0 +1,237 @@ +cosmo: + features: + - restart + jobs: + - prepare_cosmo + - int2lm + - cosmo + - post_cosmo + dependencies: + int2lm: + current: + - prepare_cosmo + cosmo: + previous: + - cosmo + post_cosmo: + current: + - cosmo + +cosmo-ghg: + features: + - restart + - tracers + jobs: + - prepare_cosmo + - emissions + - biofluxes + - oem + - online_vprm + - int2lm + - post_int2lm + - cosmo + - post_cosmo + dependencies: + emissions: + current: + - prepare_cosmo + biofluxes: + current: + - prepare_cosmo + oem: + current: + - prepare_cosmo + online_vprm: + current: + - prepare_cosmo + int2lm: + current: + - prepare_cosmo + - emissions + - biofluxes + - oem + - online_vprm + post_int2lm: + current: + - int2lm + cosmo: + current: + - post_int2lm + previous: + - cosmo + post_cosmo: + current: + - cosmo + +cosmo-ghg-spinup: + features: + - restart + - tracers + - spinup + jobs: + - prepare_cosmo + - emissions + - biofluxes + - oem + - online_vprm + - int2lm + - post_int2lm + - cosmo + - post_cosmo + dependencies: + emissions: + current: + - prepare_cosmo + biofluxes: + current: + - prepare_cosmo + oem: + current: + - prepare_cosmo + online_vprm: + current: + - prepare_cosmo + int2lm: + current: + - prepare_cosmo + - emissions + - biofluxes + - oem + - online_vprm + post_int2lm: + current: + - int2lm + previous: + - cosmo + cosmo: + current: + - post_int2lm + previous: + - cosmo + post_cosmo: + current: + - cosmo + +cosmo-art: + features: + - nesting + - spinup + jobs: + - prepare_cosmo + - emissions + - obs_nudging + - photo_rate + - int2lm + - cosmo + - post_cosmo + dependencies: + emissions: + current: + - prepare_cosmo + obs_nudging: + current: + - prepare_cosmo + photo_rate: + current: + - prepare_cosmo + int2lm: + current: + - prepare_cosmo + - emissions + - obs_nudging + - photo_rate + cosmo: + previous: + - cosmo + post_cosmo: + current: + - cosmo + +icon: + features: + - restart + jobs: + - prepare_icon + - icontools + - icon + dependencies: + icontools: + current: + - prepare_icon + icon: + current: + - prepare_icon + - icontools + previous: + - icon + +icon-art: + features: + - restart + jobs: + - prepare_icon + - icontools + - prepare_art + - icon + dependencies: + icontools: + current: + - prepare_icon + prepare_art: + current: + - icontools + icon: + current: + - prepare_icon + - icontools + - prepare_art + previous: + - icon + +icon-art-global: + features: + - restart + jobs: + - prepare_icon + - prepare_art_global + - icon + dependencies: + prepare_art_global: + current: + - prepare_icon + previous: + - icon + icon: + current: + - prepare_icon + - prepare_art_global + previous: + - icon + +icon-art-oem: + features: + - restart + jobs: + - prepare_icon + - icontools + - prepare_art + - prepare_art_oem + - icon + dependencies: + icontools: + current: + - prepare_icon + prepare_art: + current: + - icontools + prepare_art_oem: + current: + - prepare_art + icon: + current: + - prepare_icon + - icontools + - prepare_art + - prepare_art_oem + previous: + - icon From 37a7363369ebd292b0cf952063b580d571dff86a Mon Sep 17 00:00:00 2001 From: efmkoene Date: Thu, 8 Feb 2024 11:27:39 +0100 Subject: [PATCH 5/7] Chemical renaming (#59) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use config instead of local variables * Add logging for whole chain * GitHub Action: Apply Pep8-formatting * Add logging for jobs * GitHub Action: Apply Pep8-formatting * Small fix * GitHub Action: Apply Pep8-formatting * Format duration * Remove --wait from submit function * Let geosp be a separate job * GitHub Action: Apply Pep8-formatting * Add run_chain argument to process specified chunk * GitHub Action: Apply Pep8-formatting * Fix datetime comparison in int2lm * Submit all jobs as sbatch * GitHub Action: Apply Pep8-formatting * Use existing submit() function and only return job_id * GitHub Action: Apply Pep8-formatting * Fix prepare_data * Disable logging for individual jobs * GitHub Action: Apply Pep8-formatting * Write casename into logfile * Fix timers for jobs * GitHub Action: Apply Pep8-formatting * Use UTC times * GitHub Action: Apply Pep8-formatting * More async jobs and workflows * GitHub Action: Apply Pep8-formatting * Add logging to new jobs * GitHub Action: Apply Pep8-formatting * Remove unused imports * Remove global icon-art from prepare_data * GitHub Action: Apply Pep8-formatting * Replace os.path with Pathlib * GitHub Action: Apply Pep8-formatting * Fix for PosixPaths * ADD: convenience function for slurm job info * REF: move get_job_info method to the end of the class definition * GitHub Action: Apply Pep8-formatting * Add some docstrings * Fix quotes for f-strings * Add imports for art-global job * Add dependencies for all icon workflows * Fix pathname * GitHub Action: Apply Pep8-formatting * Fix chunk calculation * Add icontools job * GitHub Action: Apply Pep8-formatting * Add icontools to dependencies * Modify docstrings * Some code cleanup * fix(icontools): remove unsused packages + fix dependency logic - The `icontools` job already depends on `prepapre_data`, no need to add a `copy_id` in the dependencies (which was anyways undefinied in this scope). - The name of the first argument of `cfg.submit()` must be 'icontools' so that all the sub job ids are associated with the icontools job and are taken into account for other jobs depending on it (icon). Otherwise, icon will find no dependency in `cfg.job_ids['current']['icontools']`. - `cfg.get_job_info()` should be used later in `run_chain.py` to monitor time for all async jobs. Currently the reported time is only the submission time. * Make prepare_art_global dependent on previous icon * Fix import * Explicitly set async variable * Add logfile for icontools * Set variables for icontools * Revert "Explicitly set async variable" This reverts commit 99b96cf7beda6d143c9fa9198ee5be75a6366ee8. * Define sequential workflow in icon-seq-test * Make cosmo-ghg workflow async * Add info about (a)sync mode * fix: also launch waiting job when some workflow jobs failed * add: other keys to default job info dict * fix: empty current job ids before each chunk * GitHub Action: Apply Pep8-formatting * Split prepare_data into cosmo and icon * Remove unused imports * GitHub Action: Apply Pep8-formatting * Rename prepare_data job in workflows * Rename prepare_data in icon-seq case * Set additional cfg variables in prepare_icon * GitHub Action: Apply Pep8-formatting * Time logging for all jobs * Merge geosp into prepare_art * GitHub Action: Apply Pep8-formatting * Include oem in icon-art-oem workflow * Fix icon job * Move geosp to icontools job * GitHub Action: Apply Pep8-formatting * add: placeholder for monitoring async jobs * Run geosp after icontools * Remove oem job from icon-art-oem case * Change to current logfile within jobs * GitHub Action: Apply Pep8-formatting * Add missing log inits * Configure root logger * set logger * Fix logger * Format logging output * Introduce BASIC_PYTHON_JOB option to call jobs directly in async mode * GitHub Action: Apply Pep8-formatting * add: only submit basic python jobs through a nested run_chain * GitHub Action: Apply Pep8-formatting * fix: loop over jobs in run_chunk * ref: job_id becomes chunk_id reflects reality and avoids confusion with actual jobs id * GitHub Action: Apply Pep8-formatting * fix: leftover `job_id` -> `chunk_id` * GitHub Action: Apply Pep8-formatting * add(untested): Slurm monitoring * GitHub Action: Apply Pep8-formatting * Add BASIC_PYHTON_JOB to missing jobs * Fix function arguments * Small fix and hint to KeyError * GitHub Action: Apply Pep8-formatting * ref(slurm summary): streamline code a bit * GitHub Action: Apply Pep8-formatting * Some settings for cosmo-ghg case * afterany -> afterok for wait job * Comment some function calls * add:ref: remove unused `info_requests` + print failing jobs * fix: job summary for previous chunk, not current * fix: reactivate empty current job ids at beginning of chunk * fix: only wait and monitor if not very first chunk * GitHub Action: Apply Pep8-formatting * ref: move icon-art error handling in slurm job itself * fix: remove BASIC_PYTHON_JOB workaround for icon * fix(icon.py): escape curly brackets for string formatting * fix(icon): escape curly brackets in python way * Add walltime and remove conda activation * GitHub Action: Apply Pep8-formatting * Set walltime correctly * Fix call to handle_error function * Set walltimes for icon workflows * Debug * Remove job_ids override * ref(config): clean up * Add smaller walltime to wait job * Remove prints * Some fixes for cosmo case * Remove model check * Don't pass logfile anymore * GitHub Action: Apply Pep8-formatting * Submit int2lm and cosmo jobs correctly * GitHub Action: Apply Pep8-formatting * Small fixes for int2lm and cosmo * Store job scripts in separate directory * Add BASIC_PYTHON_JOB to int2lm * GitHub Action: Apply Pep8-formatting * Add post_cosmo dependency * Bugfixes for cosmo jobs * Further fixes * Make post_cosmo a submit job * Fix post_cosmo * Fix post_cosmo * ref: refactor cycling and monitoring - Regroup waiting, monitoring nd cycling in a single `Config.cycle()` method. - write chunk monitoring info into chain log file * GitHub Action: Apply Pep8-formatting * Fix config variables * Fix log file output * Formatting * Remove time logging from jobs * GitHub Action: Apply Pep8-formatting * Fix for icon job * GitHub Action: Apply Pep8-formatting * ref: exception handling in Config.submit() * Change table cell widths * Remove old way of logging * Cleanup * NNodes -> N * GitHub Action: Apply Pep8-formatting * Fix for N/NNodes * GitHub Action: Apply Pep8-formatting * Yet another fix for N/NNodes * Simplify job names * Change missing job names * Fix syntax error from commit 8810dcf * GitHub Action: Apply Pep8-formatting * Just jobname for jobs * Cleaner console output * GitHub Action: Apply Pep8-formatting * Unify restart and spinup runs * GitHub Action: Apply Pep8-formatting * Complete config file for spinup test * Fix for spinup * GitHub Action: Apply Pep8-formatting * Fix 2 for spinup * Fancy formatting * Define separate spinup workflow * Fix formatting (hopefully) * Aligning case + workflow * Custom workflow_name and improve check * Remove workflow_name check in jobs * GitHub Action: Apply Pep8-formatting * Bugfix in cosmo job * Remove restart info * Compute chunks separately * GitHub Action: Apply Pep8-formatting * Add function to get previous chunk ID * GitHub Action: Apply Pep8-formatting * Directly get previous chunk id * Further cleanup and refactoring * GitHub Action: Apply Pep8-formatting * Fix for chunk_id_prev * Fix * Save total chunk list * Fix restart variables * Don't print chunk list twice * Fix for cosmo_restart_out * Remove sequential part * GitHub Action: Apply Pep8-formatting * Remove sequential case * Add dependencies to all workflows * Remove is_async config variable * Include renaming scheme for chemicals for OEM * GitHub Action: Apply Pep8-formatting * re-order in and output tracers * Shortened variable name * GitHub Action: Apply Pep8-formatting --------- Co-authored-by: Michael Jähn Co-authored-by: github-actions Co-authored-by: Matthieu --- cases/icon-art-oem-test/config.yaml | 2 ++ jobs/prepare_art_oem.py | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/cases/icon-art-oem-test/config.yaml b/cases/icon-art-oem-test/config.yaml index 475d326a..a50fbacc 100644 --- a/cases/icon-art-oem-test/config.yaml +++ b/cases/icon-art-oem-test/config.yaml @@ -41,6 +41,8 @@ chem: nameformat: '%Y%m%d_%H' suffix: .grb inc: 3 + remap_tracers: + CH4_BG: TRCH4_chemtr icontools_runjobs: - icontools_remap_ic_runjob.cfg diff --git a/jobs/prepare_art_oem.py b/jobs/prepare_art_oem.py index 8e4abe17..b421aa1d 100644 --- a/jobs/prepare_art_oem.py +++ b/jobs/prepare_art_oem.py @@ -74,7 +74,10 @@ def main(cfg): ds_chem['PS'] = ds_chem['LNPS'] ds_chem['PS'].attrs = ds_chem['LNPS'].attrs ds_chem['PS'].attrs["long_name"] = 'surface pressure' - ds_chem['TRCH4_chemtr'] = ds_chem['CH4_BG'] + # Remapping chemical tracer names + if "remap_tracers" in cfg.chem: + for chem_in, chem_out in cfg.chem['remap_tracers'].items(): + ds_chem[chem_out] = ds_chem[chem_in] # merge: ds_merged = xr.merge([ds_meteo, ds_chem], compat="override") #ds_merged.attrs = ds.attrs From 76218fa9c96fc5ad6fa6a1f7346bb9a3578811b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20J=C3=A4hn?= Date: Thu, 8 Feb 2024 11:28:16 +0100 Subject: [PATCH 6/7] Docs v3.1 (#57) * Edit features * CHange intro text * Add hint for running multiple cases * Update 'how to run' * Update code structure * Adapt config.rst * Further changes in config.rst * Add missing info * Small adaption in namelists * Adjust jobs to new async mode * Some minor corrections and additions * Revise intro text * model -> workflow * Format variable names in config * Fix table * Fix code block * Change some variable descriptions * Test code-block * Codeblock fix * Codeblock fix * Always use code-blocks * Add flowchart * Fix figure --- .../processing_chain_workflow_icon_art.png | Bin 0 -> 189466 bytes docs/code-structure.rst | 12 +- docs/conf.py | 2 +- docs/config.rst | 245 +++++++++--------- docs/features.rst | 13 +- docs/flowchart.md | 5 + docs/functions.rst | 14 +- docs/howtorun.rst | 70 +++-- docs/index.rst | 23 +- docs/jobs.rst | 131 +++++----- docs/namelists.rst | 14 +- run_chain.py | 29 +-- 12 files changed, 288 insertions(+), 270 deletions(-) create mode 100644 docs/_static/processing_chain_workflow_icon_art.png create mode 100644 docs/flowchart.md diff --git a/docs/_static/processing_chain_workflow_icon_art.png b/docs/_static/processing_chain_workflow_icon_art.png new file mode 100644 index 0000000000000000000000000000000000000000..4a5164d0bd0c95648cc1a8a84b9616583c7c4228 GIT binary patch literal 189466 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%0Ak%7;q2VM(`jS9GwVu;kOGZAEaM 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

78K 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 G*#7|%)kB8> literal 0 HcmV?d00001 diff --git a/docs/code-structure.rst b/docs/code-structure.rst index 5c17f167..9a7ee7ab 100644 --- a/docs/code-structure.rst +++ b/docs/code-structure.rst @@ -3,7 +3,9 @@ Code Structure -------------- -The Processing Chain code is structured as follows:: +The Processing Chain code is structured as follows: + +.. code-block:: bash $ tree -L 3 -F --dirsfirst . @@ -27,8 +29,6 @@ The Processing Chain code is structured as follows:: │ └── icon-test/ # ICON test case │ ├── config.yaml │ └── *.cfg - ├── config/ - │ └── models.yaml # file to store model features and default jobs ├── docs/ # folder for Sphinx documentation │ ├── _static/ # folder for static assets │ │ ├── custom.css # custom CSS styles @@ -39,7 +39,7 @@ The Processing Chain code is structured as follows:: │ └── *.rst # documentation files (reStructuredText) ├── env/ │ └── environment.yml # conda environment file - ├── externals/ # folder for other code (spack, models, etc.) + ├── ext/ # folder for other code (spack, models, etc.) ├── jenkins/ # automated Jenkins testing │ ├── scripts/ │ │ └── *.sh # individual Shell scripts for testing @@ -50,4 +50,6 @@ The Processing Chain code is structured as follows:: │ └── *.py # job scripts ├── LICENSE # license file ├── README.md # README file - └── run_chain.py # main script + ├── config.py # file containing the Config class + ├── run_chain.py # main script + └── workflows.yaml # file to store workflows with job dependencies diff --git a/docs/conf.py b/docs/conf.py index 3fbf359c..740fc891 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -19,7 +19,7 @@ # -- Project information ------------------------------------------------ project = 'Processing Chain' -copyright = '2018-2023, C2SM' +copyright = '2018-2024, C2SM' author = 'Processing Chain Administrators' version = 'v3.1' release = 'v3.1' diff --git a/docs/config.rst b/docs/config.rst index 55180d58..f38ef329 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -2,94 +2,76 @@ The Processing Chain uses cases to describe a simulation. A case is a subdirectory in ``cases/``, containing a ``config.yaml`` and several -`namelists` (e.g., ``int2lm_INPUT.cfg``) and `runscripts` (e.g., -``icon_runjob.cfg``) which define the simulation. +`namelist` (e.g., ``int2lm_INPUT.cfg``) and `runscripts` (e.g., +``icon_runjob.cfg``) :ref:`templates`, +which define the simulation. .. _config.yaml: Configuration File ------------------ -The configuration file contains most of the information that the :ref:`jobs` need to prepare and run the simulation, for example the location of the input data. -This configuration-file is imported as a module in ``run_chain.py``, and therefore -it can contain python expression which are evaluated at runtime. - -General Variables in ``run_chain.py`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This is a list of configuration variables used in the main script of the Processing Chain: - -+------------------------+------------------------------------------------------------------------+ -| Variable | Description | -+========================+========================================================================+ -| ``case_path`` | The path to the case directory under 'cases/' for the specified | -| | casename. | -+------------------------+------------------------------------------------------------------------+ -| ``casename`` | The name of the case. | -+------------------------+------------------------------------------------------------------------+ -| ``chain_src_dir`` | The source directory for the processing chain, typically the current | -| | working directory. | -+------------------------+------------------------------------------------------------------------+ -| ``compute_account`` | The compute account to be used based on user information. | -+------------------------+------------------------------------------------------------------------+ -| ``constraint`` | The computational constraint ('gpu' or 'mc'). | -+------------------------+------------------------------------------------------------------------+ -| ``convert_gas`` | Switch for unit conversion for 'reduce_output' job. | -+------------------------+------------------------------------------------------------------------+ -| ``cosmo_restart_in`` | The path to the COSMO model restart input directory. | -+------------------------+------------------------------------------------------------------------+ -| ``cosmo_restart_out`` | The path to the COSMO model restart output directory. | -+------------------------+------------------------------------------------------------------------+ -| ``email`` | The user's email address, initially set to None and updated using the | -| | set_email method. | -+------------------------+------------------------------------------------------------------------+ -| ``enddate`` | The end date of the simulation in ISO 8601 format | -| | (``YYYY-MM-DDTHH:mm:ssZ``). | -+------------------------+------------------------------------------------------------------------+ -| ``force`` | Boolean indicating whether to force the processing chain to redo all | -| | specified jobs. | -+------------------------+------------------------------------------------------------------------+ -| ``job_list`` | List of job-names to be executed. | -+------------------------+------------------------------------------------------------------------+ -| ``last_cosmo_output`` | The path to the last COSMO model output in spin-up simulations. | -+------------------------+------------------------------------------------------------------------+ -| ``log_finished_dir`` | The directory for finished log files. | -+------------------------+------------------------------------------------------------------------+ -| ``log_working_dir`` | The directory for working log files. | -+------------------------+------------------------------------------------------------------------+ -| ``model`` | The model used in the simulation. | -+------------------------+------------------------------------------------------------------------+ -| ``mpich_cuda`` | CUDA-related environment variables, set based on the configuration | -| | settings. | -+------------------------+------------------------------------------------------------------------+ -| ``ntry`` | Amount of time the COSMO job is re-tried before crashing. | -+------------------------+------------------------------------------------------------------------+ -| ``ntasks_per_node`` | The number of tasks per node, based on the node type. | -+------------------------+------------------------------------------------------------------------+ -| ``output_levels`` | Number of levels for output. | -+------------------------+------------------------------------------------------------------------+ -| ``restart_step`` | The restart step in ISO 8601 format. | -+------------------------+------------------------------------------------------------------------+ -| ``restart_step_hours`` | The restart step in hours, derived from the 'restart_step' attribute. | -+------------------------+------------------------------------------------------------------------+ -| ``resume`` | Boolean indicating whether to resume the processing chain by | -| | restarting the last unfinished job. | -+------------------------+------------------------------------------------------------------------+ -| ``run_on`` | The architecture the model runs on ('cpu' or 'gpu'). | -+------------------------+------------------------------------------------------------------------+ -| ``spinup`` | Spin-up duration in hours. | -+------------------------+------------------------------------------------------------------------+ -| ``startdate`` | The start date of the simulation in ISO 8601 format | -| | (``YYYY-MM-DDTHH:mm:ssZ``). | -+------------------------+------------------------------------------------------------------------+ -| ``user_mail`` | The user's email address, determined based on system configuration. | -+------------------------+------------------------------------------------------------------------+ -| ``user_name`` | The username of the current user, obtained from the 'USER' environment | -| | variable. | -+------------------------+------------------------------------------------------------------------+ -| ``work_root`` | The root directory for processing chain execution, typically located | -| | under the source directory. | -+------------------------+------------------------------------------------------------------------+ +The case-dependent configuration file ``/config.yaml`` contains most +of the information that the :ref:`jobs` need to prepare +and run the simulation, for example the location of the input data. +This configuration file is loaded in ``run_chain.py`` as an instance +of the ``Config()`` class in ``config.py``. + +Configuration Variables +~~~~~~~~~~~~~~~~~~~~~~~ + +This is a non-exhaustive list containing the most important configuration variables: + ++------------------------+-------------------------------------------------------------------------+ +| Variable | Description | ++========================+=========================================================================+ +|| ``case_path`` || The path to the case directory under ``cases/`` for the specified | +|| || casename. | ++------------------------+-------------------------------------------------------------------------+ +| ``casename`` | The name of the case. Derived from the folder name under ``case_path``. | ++------------------------+-------------------------------------------------------------------------+ +|| ``chain_src_dir`` || The source directory for the processing chain, typically the current | +|| || working directory. | ++------------------------+-------------------------------------------------------------------------+ +| ``compute_account`` | The compute account to be used based on user information. | ++------------------------+-------------------------------------------------------------------------+ +| ``constraint`` | The computational constraint (``gpu`` or ``mc``). | ++------------------------+-------------------------------------------------------------------------+ +|| ``email`` || The user's email address, initially set to None and updated using the | +|| || set_email method. | ++------------------------+-------------------------------------------------------------------------+ +|| ``enddate`` || The end date of the simulation in ISO 8601 format | +|| || (``YYYY-MM-DDTHH:mm:ssZ``). | ++------------------------+-------------------------------------------------------------------------+ +| ``jobs`` | List of job-names to be executed. | ++------------------------+-------------------------------------------------------------------------+ +| ``log_finished_dir`` | The directory for finished log files. | ++------------------------+-------------------------------------------------------------------------+ +| ``log_working_dir`` | The directory for working log files. | ++------------------------+-------------------------------------------------------------------------+ +| ``ntasks_per_node`` | The number of tasks per node, based on the node type. | ++------------------------+-------------------------------------------------------------------------+ +| ``restart_step`` | The restart step in ISO 8601 format. | ++------------------------+-------------------------------------------------------------------------+ +| ``restart_step_hours`` | The restart step in hours, derived from the ``restart_step`` attribute. | ++------------------------+-------------------------------------------------------------------------+ +| ``run_on`` | The architecture the model runs on (``cpu`` or ``gpu``). | ++------------------------+-------------------------------------------------------------------------+ +| ``spinup`` | Spin-up duration in hours. Activates spinup behavior if set. | ++------------------------+-------------------------------------------------------------------------+ +|| ``startdate`` || The start date of the simulation in ISO 8601 format | +|| || (``YYYY-MM-DDTHH:mm:ssZ``). | ++------------------------+-------------------------------------------------------------------------+ +| ``user_mail`` | The user's email address, determined based on system configuration. | ++------------------------+-------------------------------------------------------------------------+ +|| ``user_name`` || Your email address to receive notifications. Either provide it | +|| || directly here or in ``~/.forward``. | ++------------------------+-------------------------------------------------------------------------+ +| ``workflow`` | The name of the workflow from ``workflows.yaml`` or a self-defined one. | ++------------------------+-------------------------------------------------------------------------+ +|| ``work_root`` || The working directory where all output is stored. Should be somewhere | +|| || on ``$SCRATCH$``. By default, it is set to ``/work``. | ++------------------------+-------------------------------------------------------------------------+ Variables to Set in ``config.yaml`` @@ -101,9 +83,9 @@ case configuration file. Header of ``config.yaml`` for the ``cosmo-ghg-spinup-test`` case ================================================================ -:: +.. code-block:: yaml - model: cosmo-ghg + workflow: cosmo-ghg constraint: gpu ntasks_per_node: 12 restart_step: PT6H @@ -114,9 +96,9 @@ Header of ``config.yaml`` for the ``cosmo-ghg-spinup-test`` case Header of ``config.yaml`` for the ``icon-art-oem-test`` case ============================================================ -:: +.. code-block:: yaml - model: icon-art-oem + workflow: icon-art-oem constraint: gpu run_on: cpu compute_queue: normal @@ -142,7 +124,9 @@ Further variables Furthermore, there are additional variables to set that are tied to the individual jobs. These config variables themselves are dictionaries. Let's have a look at and example -for the the ``cfg.meteo`` variable:: +for the the ``cfg.meteo`` variable: + +.. code-block:: yaml meteo: dir: ./input/cosmo-ghg/meteo @@ -151,11 +135,14 @@ for the the ``cfg.meteo`` variable:: inc: 1 These config variables can be accessed via ``cfg.meteo['dir']``, ``cfg.meteo['prefix']``, etc. -as they are Python dictionaries. However, in :ref:`namelist and runscript template` files -(see next section), this accessing does not work because of how the ``.format()`` method is implemented -in Python. For that reason, the Processing Chain automatically creates new variables in the form of -``cfg.meteo_dir``, ``cfg.meteo_prefix``, etc. at the start to make them available for namelist -and runjob templates. +as they are Python dictionaries. + +.. hint:: + In :ref:`namelist and runscript template` files + (see next section), this accessing does not work because of how the ``.format()`` + method is implemented in Python. For that reason, the Processing Chain automatically + creates new variables in the form of ``cfg.meteo_dir``, ``cfg.meteo_prefix``, etc. + at the start to make them accessible for namelist and runjob templates. List of dictionary variables **************************** @@ -164,40 +151,40 @@ The following is a list of dictionary variables that exist for the Processing Ch For the individual elements of those variables, please refer to the ``config.yaml`` files within the test cases. -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| Dictionary variable | Used in job | -+========================+======================================================================================================================================+ -| ``meteo`` | ``prepare_data``, ``int2lm``, ``icon`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``icontools_runjobs`` | ``prepare_data`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``input_files`` | ``prepare_data`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``chem`` | ``prepare_data`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``era5`` | ``prepare_data`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``cams`` | ``prepare_data`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``emissions`` | ``emissions`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``vprm`` | ``biofluxes`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``oem`` | ``oem``, ``cosmo`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``online_vprm`` | ``online_vprm`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``int2lm`` | ``prepare_data``, ``emissions``, ``biofluxes``, ``octe``, ``int2lm``, ``post_int2lm``, ``cosmo``, ``post_cosmo`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``post_int2lm`` | ``post_int2lm`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``cosmo`` | ``reduce_output``, ``oem``, ``photo_rate``, ``octe``, ``check_output``, ``post_cosmo``, ``cosmo``, ``obs_nudging``, ``online_vprm`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``reduce_output`` | ``reduce_output`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``post_cosmo`` | ``post_cosmo`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``verify_chain`` | ``verify_chain`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| ``icon`` | ``oem``, ``prepare_data``, ``icon`` | -+------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| Dictionary variable | Used in job | ++=======================+=====================================================================================================================================+ +| ``meteo`` | ``prepare_cosmo``, ``prepare_icon``, ``icontools``, ``int2lm``, ``icon`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``icontools_runjobs`` | ``icontools`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``input_files`` | ``prepare_icon`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``chem`` | ``prepare_icon`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``era5`` | ``prepare_icon`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``cams`` | ``prepare_cosmo`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``emissions`` | ``emissions`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``vprm`` | ``biofluxes`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``oem`` | ``oem``, ``cosmo`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``online_vprm`` | ``online_vprm`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``int2lm`` | ``prepare_cosmo``, ``emissions``, ``biofluxes``, ``octe``, ``int2lm``, ``post_int2lm``, ``cosmo``, ``post_cosmo`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``post_int2lm`` | ``post_int2lm`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``cosmo`` | ``reduce_output``, ``oem``, ``photo_rate``, ``octe``, ``check_output``, ``post_cosmo``, ``cosmo``, ``obs_nudging``, ``online_vprm`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``reduce_output`` | ``reduce_output`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``post_cosmo`` | ``post_cosmo`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``verify_chain`` | ``verify_chain`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +| ``icon`` | ``oem``, ``prepare_icon``, ``icon`` | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/features.rst b/docs/features.rst index 2573f785..c0f14d0a 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -3,12 +3,11 @@ Feature Overview ================ -- Preparing input data -- Submiting compute jobs to the HPC queue -- Applying post-processing steps -- Cycling over time periods +- Asynchronous submission of compute jobs to the HPC queue +- Intuitive definition of job dependencies +- Automatic cycling over time periods including folder structure creation +- Various jobs for pre- and post-processing steps - Using model built-in restarts or custom spinup - Nested runs possible -- Automatic folder structure creation -- Easy creation of own cases and setups -- Various examples for COSMO and ICON available \ No newline at end of file +- Easy creation of own cases and workflows +- Various examples for COSMO and ICON workflows available \ No newline at end of file diff --git a/docs/flowchart.md b/docs/flowchart.md new file mode 100644 index 00000000..202d1ac2 --- /dev/null +++ b/docs/flowchart.md @@ -0,0 +1,5 @@ +flowchart LR + prepare_icon --> icontools + icontools --> prepare_art + prepare_art --> icon_1 + icon_1 --> icon_2 diff --git a/docs/functions.rst b/docs/functions.rst index d33f11a6..4305a932 100644 --- a/docs/functions.rst +++ b/docs/functions.rst @@ -8,6 +8,7 @@ Jobs * :func:`jobs.cosmo.main` * :func:`jobs.emissions.main` * :func:`jobs.icon.main` +* :func:`jobs.icontools.main` * :func:`jobs.int2lm.main` * :func:`jobs.obs_nudging.main` * :func:`jobs.octe.main` @@ -16,7 +17,8 @@ Jobs * :func:`jobs.photo_rate.main` * :func:`jobs.post_cosmo.main` * :func:`jobs.post_int2lm.main` -* :func:`jobs.prepare_data.main` +* :func:`jobs.prepare_cosmo.main` +* :func:`jobs.prepare_icon.main` * :func:`jobs.reduce_output.main` * :func:`jobs.verify_chain.main` @@ -42,6 +44,10 @@ Jobs ------------------------------------------- +.. autofunction:: jobs.icontools.main + +------------------------------------------- + .. autofunction:: jobs.int2lm.main ------------------------------------------- @@ -74,7 +80,11 @@ Jobs ------------------------------------------- -.. autofunction:: jobs.prepare_data.main +.. autofunction:: jobs.prepare_cosmo.main + +------------------------------------------- + +.. autofunction:: jobs.prepare_icon.main ------------------------------------------- diff --git a/docs/howtorun.rst b/docs/howtorun.rst index ba269ae4..9d074ee7 100644 --- a/docs/howtorun.rst +++ b/docs/howtorun.rst @@ -12,7 +12,9 @@ Then it will start the Processing Chain. Starting the Chain ------------------ -The chain has to be run with the following command:: +The chain has to be run with the following command: + +.. code-block:: bash $ ./run_chain.py @@ -21,47 +23,54 @@ there is a ``config.yaml``-file specifying the configuration, as well as templat for the necessary namelist files for **int2lm**, **COSMO** or **ICON**. It may also contain additional runscripts to be submitted via ``sbatch``. -Without specifiying a job list, the default joblist defined in -``config/models.yaml`` will be executed. +.. hint:: + Technically, you can run several cases (instead of a single case) in one command, + which is useful for nested runs, for example. This can be achieved by running + ``./run_chain.py ``. With that, the full chain is executed for + ``case1`` first, and afterwards for ``case2``. There are several optional arguments available to change the behavior of the chain: +.. code-block:: bash + + $ ./run_chain.py -h + * ``-h``, ``--help`` - Show a help message and exit. + Show this help message and exit. * ``-j [JOB_LIST ...]``, ``--jobs [JOB_LIST ...]`` List of job names to be executed. - A job is a .py-file in jobs/ with a ``main()`` function, which + A job is a ``.py`` file in i``jobs/`` with a ``main()`` function, which handles one aspect of the Processing Chain, for example copying ``meteo`` input data or launching a job for ``int2lm``. Jobs are executed in the order in which they are given here. If no jobs are - given, default jobs will be executedas defined - in config/models.yaml. + given, default jobs will be executed as defined + in ``config/models.yaml``. * ``-f``, ``--force`` - Force the processing chain to redo all specified + Force the Processing Chain to redo all specified jobs, even if they have been started already or were finished previously. WARNING: Only logfiles get deleted, other effects of a given job (copied files etc.) are simply overwritten. This - may cause errors. -* ``-t NTRY``, ``--try NTRY`` - Amount of time the cosmo job is re-tried before crashing. Default is 1. + may cause errors or unexpected behavior. * ``-r``, ``--resume`` - Resume the processing chain by restarting the + Resume the Processing Chain by restarting the last unfinished job. WARNING: Only the logfile gets deleted, other effects of a given job (copied files etc.) are simply overwritten. This - may cause errors. + may cause errors or unexpected behavior. What it Does ------------ -The script ``run_chain.py`` reads the command line arguments and the config file. +The script ``run_chain.py`` reads the command line arguments and the config file +from the specified case. It then calls the function :func:`run_chain.restart_runs`, which divides the simulation time according to the specified restart steps. Then it calls -:func:`run_chain.run_chain` for each sub-run. This function sets up the directory -structure of the chain and then starts the specified :ref:`jobs` -sequentially. +:func:`run_chain.run_chunk` for each part (chunk) of the simulation workflow. +This function sets up the directory structure of the chain and then submits the +specified :ref:`jobs` via ``sbatch`` to the Slurm workload manager, +taking job dependencies into account. Test Cases ---------- @@ -83,11 +92,17 @@ the script:: This will run all the individual scripts in ``jenkins/scripts/``, which can also be launched separately if desired. +These cases undergo regulary testing to ensure that the Processing Chain runs +correctly. A corresponding Jenkins plan is launched on a weekly basis and +when triggered within a GitHub pull request. + Directory Structure ------------------- The directory structure generated by the Processing Chain for a ``cosmo-ghg`` -run looks like this:: +run looks like this: + +.. code-block:: bash cfg.work_root/cfg.casename/ └── cfg.chain_root/ @@ -102,9 +117,16 @@ run looks like this:: ├── cfg.int2lm_input/ ├── cfg.int2lm_work/ └── cfg.int2lm_output/ + +As one can see, it creates working directories for both the ``int2lm`` preprocessor +and ``cosmo``. Additionally, and this is always the case, the ``checkpoints`` +directory holds all the job logfiles. Whenever a job has successfully finished, +the logfile is copied from the ``working`` to the ``finished`` sub-directory. Running the ``cosmo-ghg-test`` case therefore produces the following -directories and files (showing four levels of directories deep):: +directories and files (showing four levels of directories deep): + +.. code-block:: bash work/cosmo-ghg-test ├── 2015010100_2015010106/ @@ -118,7 +140,7 @@ directories and files (showing four levels of directories deep):: │ │ │ ├── online_vprm │ │ │ ├── post_cosmo │ │ │ ├── post_int2lm - │ │ │ └── prepare_data + │ │ │ └── prepare_cosmo │ │ └── working/ │ │ ├── biofluxes │ │ ├── cosmo @@ -128,7 +150,7 @@ directories and files (showing four levels of directories deep):: │ │ ├── online_vprm │ │ ├── post_cosmo │ │ ├── post_int2lm - │ │ └── prepare_data + │ │ └── prepare_cosmo │ ├── cosmo/ │ │ ├── input/ │ │ │ ├── oem/ @@ -171,7 +193,7 @@ directories and files (showing four levels of directories deep):: │ │ ├── online_vprm │ │ ├── post_cosmo │ │ ├── post_int2lm - │ │ └── prepare_data + │ │ └── prepare_cosmo │ └── working/ │ ├── biofluxes │ ├── cosmo @@ -181,7 +203,7 @@ directories and files (showing four levels of directories deep):: │ ├── online_vprm │ ├── post_cosmo │ ├── post_int2lm - │ └── prepare_data + │ └── prepare_cosmo ├── cosmo/ │ ├── input/ │ │ ├── oem @@ -216,7 +238,7 @@ directories and files (showing four levels of directories deep):: ------------------------------------------- -.. autofunction:: run_chain.run_chain +.. autofunction:: run_chain.run_chunk ------------------------------------------- diff --git a/docs/index.rst b/docs/index.rst index 25a8fe4d..169bf730 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,13 +6,18 @@ Processing Chain ================ -The Processing Chain is a collection of Python scripts to prepare the -necessary input data, submit the compute jobs to the queue on Piz Daint -and to apply post-processing steps. In addition to the standard versions -of the COSMO and ICON models, it can als handle several variants of these -models, namely COSMO-GHG, COSMO-ART and ICON-ART. The chain can be flexibly -adapted according to your needs, e.g., by creating your own case, -adding new jobs or custom scripts. +The Processing Chain is a Python-based workflow tool designed to streamline +weather and climate simulations. +It facilitates the preparation of essential input data, submission of compute +jobs to the queue on CSCS HPC systems, and the implementation of post-processing +steps. +In addition to supporting standard versions of the COSMO and ICON models, +it is equipped to handle various model variants, notably COSMO-GHG +(Greenhouse Gas Extension) and ICON-ART (Aerosols and Reactive Trace Gases) + +The Processing Chain can be easily customized to meet your specific requirements. +This includes defining custom workflows, creating your own simulation cases, +and integrating new jobs and auxiliary scripts. .. toctree:: :maxdepth: 2 @@ -33,13 +38,13 @@ adding new jobs or custom scripts. .. toctree:: :maxdepth: 2 - :caption: Jobs + :caption: Jobs & Workflows jobs .. toctree:: :maxdepth: 2 - :caption: Function Reference + :caption: API functions diff --git a/docs/jobs.rst b/docs/jobs.rst index c0909180..96cae42b 100644 --- a/docs/jobs.rst +++ b/docs/jobs.rst @@ -3,73 +3,67 @@ Overview -------- -The jobs described here are available for use in the processing chain. -For every model, you can choose from a list of available jobs. -As some jobs depend on the result of others, the order indicated here -has to be respected. - -``cosmo``: - -1. :func:`jobs.prepare_data.main` -2. :func:`jobs.int2lm.main` -3. :func:`jobs.cosmo.main` -4. :func:`jobs.check_output.main` -5. :func:`jobs.reduce_output.main` -6. :func:`jobs.post_cosmo.main` | - :func:`jobs.verify_chain.main` - -``cosmo-ghg``: - -1. :func:`jobs.biofluxes.main` | - :func:`jobs.emissions.main` | - :func:`jobs.online_vprm.main` | - :func:`jobs.oem.main` | - :func:`jobs.obs_nudging.main` | - :func:`jobs.prepare_data.main` -2. :func:`jobs.int2lm.main` -3. :func:`jobs.post_int2lm.main` -4. :func:`jobs.octe.main` -5. :func:`jobs.cosmo.main` -6. :func:`jobs.check_output.main` -7. :func:`jobs.reduce_output.main` -8. :func:`jobs.post_cosmo.main` | - :func:`jobs.verify_chain.main` - -``cosmo-art``: - -1. :func:`jobs.emissions.main` | - :func:`jobs.photo_rate.main` | - :func:`jobs.obs_nudging.main` | - :func:`jobs.online_vprm.main` | - :func:`jobs.oem.main` | - :func:`jobs.prepare_data.main` -2. :func:`jobs.int2lm.main` -3. :func:`jobs.cosmo.main` -4. :func:`jobs.check_output.main` -5. :func:`jobs.reduce_output.main` -6. :func:`jobs.post_cosmo.main` | - :func:`jobs.verify_chain.main` - -``icon``: - -1. :func:`jobs.prepare_data.main` -2. :func:`jobs.icon.main` - -``icon-art``: - -1. :func:`jobs.prepare_data.main` -2. :func:`jobs.icon.main` - -``icon-art-global``: - -1. :func:`jobs.prepare_data.main` -2. :func:`jobs.icon.main` - -``icon-art-oem``: - -1. :func:`jobs.prepare_data.main` -2. :func:`jobs.oem.main` -3. :func:`jobs.icon.main` +Jobs have to be part of the respective workflow. They are submitted via ``sbatch`` +to the Slurm workload manager. + +The order of job submission is based on the list given in ``workflows.yaml`` +(or in ``config.yaml`` in case a custom, user-defined workflow is used.) + +Let's have a look at the ``icon-art`` example: + +.. code-block:: yaml + + icon-art: + features: + - restart + jobs: + - prepare_icon + - icontools + - prepare_art + - icon + +This workflow consists of four jobs: ``prepare_icon``, ``icontools``, +``prepare_art`` and ``icon``. + +These jobs will be submitted, however, they are not starting at the same time, +because some of them depend on others: + +.. code-block:: yaml + + dependencies: + icontools: + current: + - prepare_icon + prepare_art: + current: + - icontools + icon: + current: + - prepare_icon + - icontools + - prepare_art + previous: + - icon + +Since ``icontools`` depends on ``prepare_icon``, and ``prepare_art`` depends +on ``icontools``, the order of execution is ``prepare_icon`` --> ``icontools`` +--> ``prepare_art``. Note that if we had another job in there without dependencies, +it would run in parallel to the others. + +Since ``icon`` depends on all other jobs, it will be executed last. Note that +these dependencies are all listed under the ``current`` keyword, targeting +the current chunk. For ``icon``, there is an additional ``previous`` keyword. +This means that an ``icon`` simulation will always wait until the simulation +from the last chunk is finished (because the restart file has to be available). + +Another effect of this workflow definition is that the ``prepare_icon``, +``icontools`` and ``prepare_art`` jobs will also be launched for the next chunk, +as they are not dependent on their previous ones. + +.. figure:: _static/processing_chain_workflow_icon_art.png + :alt: Flowchart for the ``icon-art`` workflow. + + Flowchart for the ``icon-art`` workflow. Adding New Jobs @@ -81,6 +75,5 @@ Adding a new job to the chain is simple: a function called ``main`` which takes the same arguments as every other job. Make sure the function is documented with a docstring. 2. Import it in ``jobs/__init__.py`` to make it accessible to ``run_chain.py``. -3. Add the function to the documentation. You find the file describing this page - at ``docs/jobs.rst``. +3. Add the job to your workflow. diff --git a/docs/namelists.rst b/docs/namelists.rst index 1d1d3417..20da47ca 100644 --- a/docs/namelists.rst +++ b/docs/namelists.rst @@ -4,19 +4,21 @@ Namelist and Runscript Templates -------------------------------- The namelists and run jobs for **int2lm** and **COSMO**, as well as for **icontools** and **ICON** are dynamically generated -using templates located in the ``cases/`` directory. These templates are essentially +using templates located in the ``cases/`` directory. These templates are essentially text files containing "normal" namelist parameters alongside Python variables enclosed in curly braces. During runtime, these template files are read by their respective jobs. The resulting strings are formatted through Python's ``.format()`` function, facilitating the substitution of Python variables with their corresponding value. Subsequently, the formatted strings are then saved as the actual namelist and run scripts in the -run directory of their respective jobs. :: +run directory of their respective jobs. - cases/example/example_namelist.cfg -> [read file] -> - "namelist_var = '{cfg.prefix}{cfg.suffix}'" -> ["".format(cfg)] -> - "namelist_var = 'pref_suff.nc'" -> [write to disk] -> - int2lm/run/example_namelist +.. code-block:: + + cases/example/example_namelist.cfg -> [read file] -> + "namelist_var = '{cfg.prefix}{cfg.suffix}'" -> ["".format(cfg)] -> + "namelist_var = 'pref_suff.nc'" -> [write to disk] -> + int2lm/run/example_namelist A special case is ``INPUT_ART`` for **int2lm** and ``INPUT_GHG`` for **COSMO** . These namelists are generated by :func:`jobs.tools.write_int2lm_input_art.main` and :func:`jobs.tools.write_cosmo_input_ghg.main` diff --git a/run_chain.py b/run_chain.py index 3f27949b..ea58f9aa 100755 --- a/run_chain.py +++ b/run_chain.py @@ -13,18 +13,18 @@ def parse_arguments(): - """Parse command line arguments for the processing chain script. + """Parse command line arguments for the Processing Chain script. Parses and retrieves command line arguments, allowing users to specify run identifiers, jobs to execute, and various options to control the - execution of the processing chain. + execution of the Processing Chain. Returns ------- argparse.Namespace A namespace object containing parsed command line arguments. """ - parser = argparse.ArgumentParser(description="Run the processing chain.") + parser = argparse.ArgumentParser(description="Run the Processing Chain.") parser.add_argument("casenames", nargs='+', @@ -33,9 +33,9 @@ def parse_arguments(): "to be in cases//. The runs are executed " "sequentially in the order they're given here.") - jobs_help = ("List of job-names to be executed. A job is a .py-" + jobs_help = ("List of job names to be executed. A job is a .py " "file in jobs/ with a main()-function which " - "handles one aspect of the processing chain, for " + "handles one aspect of the Processing Chain, for " "example copying meteo-input data or launching a " "job for int2lm. " "Jobs are executed in the order in which they are " @@ -78,23 +78,16 @@ def parse_arguments(): " even if they have been started already or were finished" " previously. WARNING: Only logfiles get deleted," " other effects of a given job (copied files etc.)" - " are simply overwritten. This may cause errors.") + " are simply overwritten. This may cause errors" + " or unexpected behavior.") parser.add_argument("-f", "--force", action='store_true', help=force_help) - tries_help = ("Amount of time the cosmo job is re-tried before crashing." - " Default is 1.") - parser.add_argument("-t", - "--try", - help=tries_help, - dest="ntry", - type=int, - default=1) - resume_help = ( - "Resume the processing chain by restarting the last unfinished job." + "Resume the Processing Chain by restarting the last unfinished job." " WARNING: Only the logfile gets deleted," " other effects of a given job (copied files etc.)" - " are simply overwritten. This may cause errors.") + " are simply overwritten. This may cause errors." + " or unexpected behavior.") parser.add_argument("-r", "--resume", help=resume_help, @@ -109,7 +102,7 @@ def parse_arguments(): def run_chunk(cfg, force, resume): """Run a chunk of the processing chain, managing job execution and logging. - This function sets up and manages the execution of a processing chain, handling + This function sets up and manages the execution of a Processing Chain, handling job execution, logging, and various configuration settings. Parameters From b3973f1a06c13d304b5e391b133cb8c11a3e8b88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20J=C3=A4hn?= Date: Thu, 8 Feb 2024 13:35:27 +0100 Subject: [PATCH 7/7] Remove ntry --- run_chain.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/run_chain.py b/run_chain.py index ea58f9aa..2a6a43b0 100755 --- a/run_chain.py +++ b/run_chain.py @@ -296,9 +296,6 @@ def main(): # Load configs cfg = Config(casename) - # Make ntry a Config variable - cfg.ntry = args.ntry - # Convert relative to absolute paths cfg.convert_paths_to_absolute()