Skip to content

Commit

Permalink
Merge branch 'develop' into feature/multi_model_build
Browse files Browse the repository at this point in the history
  • Loading branch information
aerorahul authored Dec 10, 2024
2 parents 93ad4bf + 6c5b9bb commit ea41c19
Show file tree
Hide file tree
Showing 43 changed files with 695 additions and 136 deletions.
3 changes: 3 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[flake8]
exclude = .git,.github,venv,__pycache__,old,build,dist
max-line-length = 160
20 changes: 10 additions & 10 deletions .github/workflows/orion.yaml → .github/workflows/hercules.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Orion
name: Hercules

on:
pull_request_target:
Expand Down Expand Up @@ -26,7 +26,7 @@ jobs:
echo "labels=$LABELS" >> $GITHUB_OUTPUT
passed:
if: contains( needs.getlabels.outputs.labels, 'CI-Orion-Passed') && github.event.pull_request.merged
if: contains( needs.getlabels.outputs.labels, 'CI-Hercules-Passed') && github.event.pull_request.merged
runs-on: ubuntu-22.04
needs:
- getlabels
Expand All @@ -38,13 +38,13 @@ jobs:
forceUpdate: true
auth: ${{ secrets.CLI_DYNAMIC_BADGES }}
gistID: e35aa2904a54deae6bbb1fdc2d960c71
filename: orion.json
label: orion
filename: hercules.json
label: hercules
message: passing
color: green

failed:
if: contains( needs.getlabels.outputs.labels, 'CI-Orion-Failed') && github.event.pull_request.merged
if: contains( needs.getlabels.outputs.labels, 'CI-Hercules-Failed') && github.event.pull_request.merged
runs-on: ubuntu-latest
needs:
- getlabels
Expand All @@ -56,14 +56,14 @@ jobs:
forceUpdate: true
auth: ${{ secrets.CLI_DYNAMIC_BADGES }}
gistID: e35aa2904a54deae6bbb1fdc2d960c71
filename: orion.json
label: orion
filename: hercules.json
label: hercules
message: failing
color: red


pending:
if: "!contains( needs.getlabels.outputs.labels, 'CI-Orion-Passed') && !contains( needs.getlabels.outputs.labels, 'CI-Orion-Failed')"
if: "!contains( needs.getlabels.outputs.labels, 'CI-Hercules-Passed') && !contains( needs.getlabels.outputs.labels, 'CI-Hercules-Failed')"
runs-on: ubuntu-latest
needs:
- getlabels
Expand All @@ -75,7 +75,7 @@ jobs:
forceUpdate: true
auth: ${{ secrets.CLI_DYNAMIC_BADGES }}
gistID: e35aa2904a54deae6bbb1fdc2d960c71
filename: orion.json
label: orion
filename: hercules.json
label: hercules
message: pending
color: orange
81 changes: 81 additions & 0 deletions .github/workflows/wcoss2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: WCOSS2

on:
pull_request_target:
branches:
- develop
types: [closed]

jobs:

getlabels:
runs-on: ubuntu-22.04
outputs:
labels: ${{ steps.id.outputs.labels }}
steps:
- name: Get Label Steps
id: id
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
run: |
LABELS1="$(gh api repos/$OWNER/$REPO_NAME/pulls/$PULL_REQUEST_NUMBER --jq '.labels.[].name')"
LABELS=$(echo "$LABELS1" | tr '\n' ' ')
echo "labels=$LABELS" >> $GITHUB_OUTPUT
passed:
if: contains( needs.getlabels.outputs.labels, 'CI-Wcoss2-Passed') && github.event.pull_request.merged
runs-on: ubuntu-latest
needs:
- getlabels

steps:
- name: Passed
uses: schneegans/dynamic-badges-action@v1.6.0
with:
forceUpdate: true
auth: ${{ secrets.CLI_DYNAMIC_BADGES }}
gistID: e35aa2904a54deae6bbb1fdc2d960c71
filename: wcoss2.json
label: wcoss2
message: passing
color: green

failed:
if: contains( needs.getlabels.outputs.labels, 'CI-Wcoss2-Failed') && github.event.pull_request.merged
runs-on: ubuntu-latest
needs:
- getlabels

steps:
- name: Failed
uses: schneegans/dynamic-badges-action@v1.6.0
with:
forceUpdate: true
auth: ${{ secrets.CLI_DYNAMIC_BADGES }}
gistID: e35aa2904a54deae6bbb1fdc2d960c71
filename: wcoss2.json
label: wcoss2
message: failing
color: red


pending:
if: "!contains( needs.getlabels.outputs.labels, 'CI-Wcoss2-Passed') && !contains( needs.getlabels.outputs.labels, 'CI-Wcoss2-Failed')"
runs-on: ubuntu-latest
needs:
- getlabels

steps:
- name: Pending
uses: schneegans/dynamic-badges-action@v1.6.0
with:
forceUpdate: true
auth: ${{ secrets.CLI_DYNAMIC_BADGES }}
gistID: e35aa2904a54deae6bbb1fdc2d960c71
filename: wcoss2.json
label: wcoss2
message: pending
color: orange
44 changes: 29 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,42 @@
[![pynorms](https://github.com/NOAA-EMC/global-workflow/actions/workflows/pynorms.yaml/badge.svg)](https://github.com/NOAA-EMC/global-workflow/actions/workflows/pynorms.yaml)

![Custom badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/emcbot/e35aa2904a54deae6bbb1fdc2d960c71/raw/hera.json)
![Custom badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/emcbot/e35aa2904a54deae6bbb1fdc2d960c71/raw/orion.json)
![Custom badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/emcbot/e35aa2904a54deae6bbb1fdc2d960c71/raw/hercules.json)
![Custom badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/emcbot/e35aa2904a54deae6bbb1fdc2d960c71/raw/wcoss2.json)

# global-workflow
Global Workflow currently supporting the Global Forecast System (GFS) with the [UFS-weather-model](https://github.com/ufs-community/ufs-weather-model) and [GSI](https://github.com/NOAA-EMC/GSI)-based Data Assimilation System.
The Global Workflow supporting the Global Forecast System (GFS), the Global Ensemble Forecasting System (GEFS), and the Seasonal Forecast System (SFS) with the [UFS-weather-model](https://github.com/ufs-community/ufs-weather-model). Data assimilation, currently only available for the GFS, is provides by both the [GSI](https://github.com/NOAA-EMC/GSI)- and [GDASApp (JEDI)](https://github.com/NOAA-EMC/GDASApp)-based Data Assimilation systems.

The `global-workflow` depends on the following prerequisities to be available on the system:
In progress [documentation](https://global-workflow.readthedocs.io/en/latest/) is available.

* Workflow Engine - [Rocoto](https://github.com/christopherwharrop/rocoto) and [ecFlow](https://github.com/ecmwf/ecflow) (for NWS Operations)
* Compiler - Intel Compiler Suite
* Software - NCEPLIBS (various), ESMF, HDF5, NetCDF, and a host of other softwares (see module files under /modulefiles for additional details)
# Prerequisites

The `global-workflow` current supports the following tier-1 machines:
The Global Workflow depends on the following prerequisities to be available on the system:

* NOAA RDHPCS - Hera
* MSU HPC - Orion
* MSU HPC - Hercules
* NOAA's operational HPC - WCOSS2
* Workflow Engines - [Rocoto](https://github.com/christopherwharrop/rocoto) and [ecFlow](https://github.com/ecmwf/ecflow) (for NWS Operations)
* Compiler - Intel classic compiler suite version 2021.x
* Software - NCEPLIBS (various), ESMF, HDF5, NetCDF, and a host of other softwares (see module files under /modulefiles for additional details).
- [Spack-stack](https://github.com/JCSDA/spack-stack) is recommended for the installation of dependent libraries.

Additionally, the following tier-2 machine is supported:
* SSEC at Univ. of Wisconsin - S4 (Note that S2S+ experiments are not fully supported)
## Supported platforms

Documentation (in progress) is available [here](https://global-workflow.readthedocs.io/en/latest/).
The Global Workflow currently supports the following machines at the indicated tier.

| HPC | Tier | Notes |
| --------------------------------------- |:----:|:--------------------------------------------------------------------------:|
| WCOSS2<br>NCO | 1 | GEFS testing is not regularly performed. |
| Hera<br>NOAA RDHPCS | 1 | |
| Hercules<br>MSU | 1 | Currently does not support the TC Tracker. |
| Orion<br>MSU | 2 | The GSI runs very slowly on Orion and the TC tracker is not supported. |
| Gaea C5/C6<br>RDHPCS | 3 | Currently non-operational following an OS upgrade.<br>Supported by EPIC. |
| AWS, GCP, Azure <br>NOAA Parallel Works | 3 | Supported by EPIC. |
| Jet<br>RDHPCS | 3 | Supported by NESDIS. |
| S4<br>SSEC | 3 | Currently non-operational following an OS upgrade.<br>Supported by NESDIS. |

<ins>**Tier Definitions**</ins>

1. Fully supported by the EMC global workflow team. CI testing is regularly performed on these systems, the majority of the global workflow features are supported, and the team will address any platform-specific features, bugs, upgrades, and requests for data.
2. Supported by the global workflow team on an ad-hoc basis. CI tests are supported on these systems, but not regularly performed.
3. No official support by the global workflow team, but may be supported by other entities (e.g. EPIC).

# Disclaimer

Expand Down
9 changes: 5 additions & 4 deletions ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@ arguments:
resdetocean: 0.25
nens: 0
interval: 6
start: cold
start: warm
comroot: {{ 'RUNTESTS' | getenv }}/COMROOT
expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR
idate: 2021063000
idate: 2021063018
edate: 2021070306
icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2
yaml: {{ HOMEgfs }}/ci/cases/gfsv17/ocnanal.yaml
#icsdir: /scratch1/NCEPDEV/climate/Jessica.Meixner/cycling/IC_2021063000_V2
icsdir: /work/noaa/da/gvernier/ensda/ictest/1440x1080x75/
yaml: {{ HOMEgfs }}/ci/cases/gfsv17/marine3dvar.yaml
19 changes: 19 additions & 0 deletions ci/cases/gfsv17/C384mx025_hybAOWCDA.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
experiment:
system: gfs
mode: cycled

arguments:
pslot: {{ 'pslot' | getenv }}
app: S2S
resdetatmos: 384
resensatmos: 192
resdetocean: 0.25
nens: 30
interval: 0
start: warm
comroot: {{ 'RUNTESTS' | getenv }}/COMROOT
expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR
idate: 2021063018
edate: 2021070306
icsdir: /work/noaa/da/gvernier/ensda/ictest/1440x1080x75/
yaml: {{ HOMEgfs }}/ci/cases/gfsv17/marinehyb.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,3 @@ marineanl:
SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca
SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml
SOCA_NINNER: 100

prepoceanobs:
SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml
OBSPREP_YAML: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obsprep/obsprep_config.yaml
DMPDIR: /scratch1/NCEPDEV/da/common/
21 changes: 21 additions & 0 deletions ci/cases/gfsv17/marinehyb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
defaults:
!INC {{ HOMEgfs }}/parm/config/gfs/yaml/defaults.yaml

base:
DOIAU: "YES"
DO_JEDIATMVAR: "NO"
DO_JEDIATMENS: "NO"
DO_JEDIOCNVAR: "YES"
DO_JEDISNOWDA: "NO"
DO_MERGENSST: "NO"
DOHYBVAR_OCN: "YES"
DO_FIT2OBS: "YES"
DO_VERFOZN: "YES"
DO_VERFRAD: "YES"
DO_VRFY_OCEANDA: "NO"
FHMAX_GFS: 240
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}

marineanl:
SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca
SOCA_NINNER: 20 # revert to ~100 after the memory leak is fixed
5 changes: 2 additions & 3 deletions ci/cases/pr/C48mx500_3DVarAOWCDA.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ arguments:
comroot: {{ 'RUNTESTS' | getenv }}/COMROOT
expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR
icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20241120
idate: 2021032412
edate: 2021032418
idate: 2021032418
edate: 2021032500
nens: 0
interval: 0
start: warm
Expand All @@ -21,4 +21,3 @@ skip_ci_on_hosts:
- wcoss2
- gaea
- orion
- hercules
14 changes: 6 additions & 8 deletions ci/cases/pr/C48mx500_hybAOWCDA.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,19 @@ arguments:
pslot: {{ 'pslot' | getenv }}
app: S2S
resdetatmos: 48
resdetocean: 5.0
resensatmos: 48
resdetocean: 5.0
comroot: {{ 'RUNTESTS' | getenv }}/COMROOT
expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR
icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C48mx500/20241120
idate: 2021032412
edate: 2021032418
nens: 3
idate: 2021032418
edate: 2021032500
nens: 2
interval: 0
start: warm
yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_gfs_defaults_ci.yaml
yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_hyb_gfs_defaults_ci.yaml

skip_ci_on_hosts:
- wcoss2
- orion
- hercules
- hera
- gaea
- orion
3 changes: 3 additions & 0 deletions ci/cases/yamls/soca_gfs_defaults_ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ defaults:
base:
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}
DO_JEDIOCNVAR: "YES"

marineanl:
SOCA_NINNER: 1
DO_TEST_MODE: "YES"
8 changes: 8 additions & 0 deletions ci/cases/yamls/soca_hyb_gfs_defaults_ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
defaults:
!INC {{ HOMEgfs }}/parm/config/gfs/yaml/defaults.yaml
base:
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}
DO_JEDIOCNVAR: "YES"
DOHYBVAR_OCN: "YES"
marineanl:
SOCA_NINNER: 1
1 change: 1 addition & 0 deletions docs/source/components.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ The major components of the system are:
* Forecast
* Post-processing
* Verification
* Archiving

The Global Workflow repository contains the workflow and script layers. External components will be checked out as git submodules. All of the submodules of the system reside in their respective repositories on GitHub.

Expand Down
13 changes: 8 additions & 5 deletions docs/source/configure.rst
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,15 @@ The global-workflow configs contain switches that change how the system runs. Ma
| | (.true.) or cold (.false)? | | | be set when running ``setup_expt.py`` script with |
| | | | | the ``--start`` flag (e.g. ``--start warm``) |
+------------------+----------------------------------+---------------+-------------+---------------------------------------------------+
| HPSSARCH | Archive to HPPS | NO | Possibly | Whether to save output to tarballs on HPPS |
| HPSSARCH | Archive to HPPS | NO | NO | Whether to save output to tarballs on HPPS. |
+------------------+----------------------------------+---------------+-------------+---------------------------------------------------+
| LOCALARCH | Archive to a local directory | NO | Possibly | Instead of archiving data to HPSS, archive to a |
| | | | | local directory, specified by ATARDIR. If |
| | | | | LOCALARCH=YES, then HPSSARCH must =NO. Changing |
| | | | | HPSSARCH from YES to NO will adjust the XML. |
| LOCALARCH | Archive to a local directory | NO | NO | Whether to save output to tarballs locally. For |
| | | | | HPSSARCH and LOCALARCH, ARCDIR specifies the |
| | | | | directory. These options are mutually exclusive. |
+------------------+----------------------------------+---------------+-------------+---------------------------------------------------+
| ARCH_EXPDIR | Archive the EXPDIR | NO | NO | Whether to create a tarball of the EXPDIR. |
| | | | | ARCH_HASHES and ARCH_DIFFS generate text files |
| | | | | of git output that are archived with the EXPDIR. |
+------------------+----------------------------------+---------------+-------------+---------------------------------------------------+
| QUILTING | Use I/O quilting | .true. | NO | If .true. choose OUTPUT_GRID as cubed_sphere_grid |
| | | | | in netcdf or gaussian_grid |
Expand Down
Loading

0 comments on commit ea41c19

Please sign in to comment.