Skip to content

Commit

Permalink
Add GEFS capability to setup_expt
Browse files Browse the repository at this point in the history
Allows GEFS experiment directories to be set up using `setup_expt.py`.
To facilitate this, a new positional argument is added in the first
position to specify which system to set up: `gfs` or `gefs`. If gfs is
chosen, the second positional argument is to choose the mode, and allows
the same values as before: `cycled` and `forecast-only`. If gefs is
chosen, forecast-only is assumed and no second positional argument is
required.

To allow both gfs and gefs configure files to exist in workflow
concurrently, the `parm/config` directory contains two new directories:
gfs and gefs. All of the old config files have been moved into the gfs
directory. A few select config files have also been copied to the gefs
directory. As yet, they are unmodified (except the changes noted below).
These config files will be updated in a future PR so the modifications
for GEFS are not hidden in the new file creation. The `yaml/defaults`
is also copied over, but the contents were removed since GEFS will not
be running its own analyses.

A couple variables have been renamed to be more appropriate for use in
both systems: `NMEM_ENKF`, `NMEM_EFCS`, and `CASE_ENKF` are now
`NMEM_ENS`, `NMEM_ENS_GFS`, and `CASE_ENS` respectively. Further,
`NMEM_EFCS` and `HOMEfv3gfs` were removed as unused.

Finally, resolution validation was extended to the ensemble resolution
as well.

Fixes: NOAA-EMC#1576
  • Loading branch information
WalterKolczynski-NOAA committed May 9, 2023
1 parent 2fd43d1 commit 7ffd730
Show file tree
Hide file tree
Showing 103 changed files with 2,003 additions and 93 deletions.
22 changes: 12 additions & 10 deletions docs/source/setup.rst
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,13 @@ The following command examples include variables for reference but users should
::

cd workflow
./setup_expt.py forecast-only --idate $IDATE --edate $EDATE [--app $APP] [--start $START] [--gfs_cyc $GFS_CYC] [--resdet $RESDET]
./setup_expt.py gfs forecast-only --idate $IDATE --edate $EDATE [--app $APP] [--start $START] [--gfs_cyc $GFS_CYC] [--resdet $RESDET]
[--pslot $PSLOT] [--configdir $CONFIGDIR] [--comrot $COMROT] [--expdir $EXPDIR]

where:

* ``forecast-only`` is the first positional argument that instructs the setup script to produce an experiment directory for forecast only experiments.
* ``gfs`` is the first positional argument that instructs the setup script to produce a GFS experiment directory
* ``forecast-only`` is the second positional argument that instructs the setup script to produce an experiment directory for forecast only experiments.
* ``$APP`` is the target application, one of:

- ATM: atmosphere-only [default]
Expand All @@ -116,21 +117,21 @@ Atm-only:
::

cd workflow
./setup_expt.py forecast-only --pslot test --idate 2020010100 --edate 2020010118 --resdet 384 --gfs_cyc 4 --comrot /some_large_disk_area/Joe.Schmo/comrot --expdir /some_safe_disk_area/Joe.Schmo/expdir
./setup_expt.py gfs forecast-only --pslot test --idate 2020010100 --edate 2020010118 --resdet 384 --gfs_cyc 4 --comrot /some_large_disk_area/Joe.Schmo/comrot --expdir /some_safe_disk_area/Joe.Schmo/expdir

Coupled:

::

cd workflow
./setup_expt.py forecast-only --app S2SW --pslot coupled_test --idate 2013040100 --edate 2013040100 --resdet 384 --comrot /some_large_disk_area/Joe.Schmo/comrot --expdir /some_safe_disk_area/Joe.Schmo/expdir
./setup_expt.py gfs forecast-only --app S2SW --pslot coupled_test --idate 2013040100 --edate 2013040100 --resdet 384 --comrot /some_large_disk_area/Joe.Schmo/comrot --expdir /some_safe_disk_area/Joe.Schmo/expdir

Coupled with aerosols:

::

cd workflow
./setup_expt.py forecast-only --app S2SWA --pslot coupled_test --idate 2013040100 --edate 2013040100 --resdet 384 --comrot /some_large_disk_area/Joe.Schmo/comrot --expdir /some_safe_disk_area/Joe.Schmo/expdir
./setup_expt.py gfs forecast-only --app S2SWA --pslot coupled_test --idate 2013040100 --edate 2013040100 --resdet 384 --comrot /some_large_disk_area/Joe.Schmo/comrot --expdir /some_safe_disk_area/Joe.Schmo/expdir

****************************************
Step 2: Set user and experiment settings
Expand Down Expand Up @@ -193,13 +194,14 @@ The following command examples include variables for reference but users should
::

cd workflow
./setup_expt.py cycled --idate $IDATE --edate $EDATE [--app $APP] [--start $START] [--gfs_cyc $GFS_CYC]
./setup_expt.py gfs cycled --idate $IDATE --edate $EDATE [--app $APP] [--start $START] [--gfs_cyc $GFS_CYC]
[--resdet $RESDET] [--resens $RESENS] [--nens $NENS] [--cdump $CDUMP]
[--pslot $PSLOT] [--configdir $CONFIGDIR] [--comrot $COMROT] [--expdir $EXPDIR] [--icsdir $ICSDIR]

where:

* ``cycled`` is the first positional argument that instructs the setup script to produce an experiment directory for cycled experiments.
* ``gfs`` is the first positional argument that instructs the setup script to produce a GFS experiment directory
* ``cycled`` is the second positional argument that instructs the setup script to produce an experiment directory for cycled experiments.
* ``$APP`` is the target application, one of:

- ATM: atmosphere-only [default]
Expand All @@ -226,13 +228,13 @@ Example:
::

cd workflow
./setup_expt.py cycled --pslot test --configdir /home/Joe.Schmo/git/global-workflow/parm/config --idate 2020010100 --edate 2020010118 --comrot /some_large_disk_area/Joe.Schmo/comrot --expdir /some_safe_disk_area/Joe.Schmo/expdir --resdet 384 --resens 192 --nens 80 --gfs_cyc 4
./setup_expt.py gfs cycled --pslot test --configdir /home/Joe.Schmo/git/global-workflow/parm/config --idate 2020010100 --edate 2020010118 --comrot /some_large_disk_area/Joe.Schmo/comrot --expdir /some_safe_disk_area/Joe.Schmo/expdir --resdet 384 --resens 192 --nens 80 --gfs_cyc 4

Example ``setup_expt.py`` on Orion:

::

Orion-login-3$ ./setup_expt.py cycled --pslot test --idate 2022010118 --edate 2022010200 --resdet 192 --resens 96 --nens 80 --comrot /work/noaa/stmp/jschmo/comrot --expdir /work/noaa/global/jschmo/expdir
Orion-login-3$ ./setup_expt.py gfs cycled --pslot test --idate 2022010118 --edate 2022010200 --resdet 192 --resens 96 --nens 80 --comrot /work/noaa/stmp/jschmo/comrot --expdir /work/noaa/global/jschmo/expdir
EDITED: /work/noaa/global/jschmo/expdir/test/config.base as per user input.
EDITED: /work/noaa/global/jschmo/expdir/test/config.aeroanl as per user input.
EDITED: /work/noaa/global/jschmo/expdir/test/config.ocnanal as per user input.
Expand All @@ -243,7 +245,7 @@ What happens if I run ``setup_expt.py`` again for an experiment that already exi

::

Orion-login-3$ ./setup_expt.py cycled --pslot test --idate 2022010118 --edate 2022010200 --resdet 192 --resens 96 --nens 80 --comrot /work/noaa/stmp/jschmo/comrot --expdir /work/noaa/global/jschmo/expdir
Orion-login-3$ ./setup_expt.py gfs cycled --pslot test --idate 2022010118 --edate 2022010200 --resdet 192 --resens 96 --nens 80 --comrot /work/noaa/stmp/jschmo/comrot --expdir /work/noaa/global/jschmo/expdir

directory already exists in /work/noaa/stmp/jschmo/comrot/test

Expand Down
2 changes: 1 addition & 1 deletion jobs/JGDAS_ENKF_DIAG
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export gcyc=${GDATE:8:2}
export GDUMP="gdas"
export GDUMP_ENS="enkf${GDUMP}"

export CASE=${CASE_ENKF}
export CASE=${CASE_ENS}

export OPREFIX="${CDUMP}.t${cyc}z."
export APREFIX="${RUN}.t${cyc}z."
Expand Down
2 changes: 1 addition & 1 deletion jobs/JGDAS_ENKF_ECEN
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export gcyc=${GDATE:8:2}
export GDUMP="gdas"
export GDUMP_ENS="enkf${GDUMP}"

export CASE=${CASE_ENKF}
export CASE=${CASE_ENS}

export OPREFIX="${CDUMP}.t${cyc}z."
export APREFIX="${CDUMP}.t${cyc}z."
Expand Down
2 changes: 1 addition & 1 deletion jobs/JGDAS_ENKF_FCST
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export rCDUMP="enkfgdas"
# Begin JOB SPECIFIC work
##############################################

export CASE=${CASE_ENKF}
export CASE=${CASE_ENS}

YMD=${PDY} HH=${cyc} generate_com -rx COM_TOP

Expand Down
2 changes: 1 addition & 1 deletion jobs/JGDAS_ENKF_SFC
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export OPREFIX="${CDUMP}.t${cyc}z."
export GPREFIX="${GDUMP}.t${gcyc}z."
export APREFIX="${CDUMP}.t${cyc}z."

export CASE=${CASE_ENKF}
export CASE=${CASE_ENS}

export OPREFIX="${CDUMP}.t${cyc}z."
export APREFIX="${CDUMP}.t${cyc}z."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ export MODE="@MODE@" # cycled/forecast-only
####################################################
# Build paths relative to $HOMEgfs
export FIXgsi="${HOMEgfs}/fix/gsi"
export HOMEfv3gfs="${HOMEgfs}/sorc/fv3gfs.fd"
export HOMEpost="${HOMEgfs}"
export HOMEobsproc="${BASE_GIT}/obsproc/v1.1.2"

Expand Down Expand Up @@ -159,8 +158,8 @@ export OPS_RES="C768" # Do not change
# Resolution specific parameters
export LEVS=128
export CASE="@CASECTL@"
export CASE_ENKF="@CASEENS@"
# TODO: This should not depend on $CASE or $CASE_ENKF
export CASE_ENS="@CASEENS@"
# TODO: This should not depend on $CASE or $CASE_ENS
# These are the currently available grid-combinations
case "${CASE}" in
"C48") export OCNRES=500;;
Expand Down Expand Up @@ -306,8 +305,8 @@ export DO_MERGENSST="NO"

# Hybrid related
export DOHYBVAR="@DOHYBVAR@"
export NMEM_ENKF=@NMEM_ENKF@
export NMEM_EFCS=30
export NMEM_ENS=@NMEM_ENS@
export NMEM_ENS_GFS=@NMEM_ENS@
export SMOOTH_ENKF="NO"
export l4densvar=".true."
export lwrite4danl=".true."
Expand Down
File renamed without changes.
6 changes: 3 additions & 3 deletions parm/config/config.efcs → parm/config/gefs/config.efcs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export DO_WAVE=${DO_WAVE_ENKF:-"NO"}

# TODO: Possibly need OCNRES_ENKF, ICERES_ENKF, WAVRES_ENKF too
if [[ ${DO_OCN} == "YES" ]]; then
case "$CASE_ENKF" in
case "$CASE_ENS" in
"C48") export OCNRES=500;;
"C96") export OCNRES=100;;
"C192") export OCNRES=050;;
Expand All @@ -26,7 +26,7 @@ fi
[[ ${DO_WAVE} == "YES" ]] && export waveGRD=${waveGRD_ENKF:-$waveGRD} # TODO: will we run waves with a different resolution in the ensemble?

# Source model specific information that is resolution dependent
string="--fv3 $CASE_ENKF"
string="--fv3 $CASE_ENS"
[[ ${DO_OCN} == "YES" ]] && string="$string --mom6 $OCNRES"
[[ ${DO_ICE} == "YES" ]] && string="$string --cice6 $ICERES"
[[ ${DO_WAVE} == "YES" ]] && string="$string --ww3 ${waveGRD// /;}"
Expand Down Expand Up @@ -84,7 +84,7 @@ fi
export cplwav=.false.

# ocean model resolution
case "$CASE_ENKF" in
case "$CASE_ENS" in
"C48") export OCNRES=500;;
"C96") export OCNRES=100;;
"C192") export OCNRES=050;;
Expand Down
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions parm/config/gefs/yaml/defaults.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# This file intentionally left blank
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit 7ffd730

Please sign in to comment.