From a23b7f2fdca5be700d257e28052a0104f2173a0f Mon Sep 17 00:00:00 2001 From: RussTreadon-NOAA <26926959+RussTreadon-NOAA@users.noreply.github.com> Date: Fri, 16 Feb 2024 09:37:58 -0500 Subject: [PATCH] Add JEDI 3DEnVar atmosphere only CI test stub (#2309) --- ci/cases/pr/C48C48_ufs_hybatmDA.yaml | 22 ++++++++++++++++++++ ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml | 14 +++++++++++++ parm/config/gfs/config.base.emc.dyn | 7 +++++++ parm/config/gfs/config.esfc | 5 +++++ parm/config/gfs/config.nsst | 5 +++++ parm/config/gfs/config.resources | 20 ++++++++++-------- parm/config/gfs/config.sfcanl | 5 +++++ ush/python/pygfs/task/atm_analysis.py | 2 +- 8 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 ci/cases/pr/C48C48_ufs_hybatmDA.yaml create mode 100644 ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml diff --git a/ci/cases/pr/C48C48_ufs_hybatmDA.yaml b/ci/cases/pr/C48C48_ufs_hybatmDA.yaml new file mode 100644 index 0000000000..7d3644b1af --- /dev/null +++ b/ci/cases/pr/C48C48_ufs_hybatmDA.yaml @@ -0,0 +1,22 @@ +experiment: + system: gfs + mode: cycled + +arguments: + pslot: {{ 'pslot' | getenv }} + app: ATM + resdetatmos: 48 + resensatmos: 48 + comroot: {{ 'RUNTESTS' | getenv }}/COMROOT + expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR + idate: 2021032312 + edate: 2021032400 + nens: 2 + gfs_cyc: 1 + start: warm + yaml: {{ HOMEgfs }}/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml + +skip_ci_on_hosts: + - hera + - orion + - hercules diff --git a/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml b/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml new file mode 100644 index 0000000000..c072c391b3 --- /dev/null +++ b/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml @@ -0,0 +1,14 @@ +defaults: + !INC {{ HOMEgfs }}/parm/config/gfs/yaml/defaults.yaml +base: + DOIAU: "NO" + DO_JEDIATMVAR: "YES" + DO_JEDIATMENS: "YES" + ACCOUNT: {{ 'SLURM_ACCOUNT' | getenv }} +esfc: + DONST: "NO" +nsst: + NST_MODEL: "1" +sfcanl: + DONST: "NO" + \ No newline at end of file diff --git a/parm/config/gfs/config.base.emc.dyn b/parm/config/gfs/config.base.emc.dyn index 4301679fbb..16aed843ba 100644 --- a/parm/config/gfs/config.base.emc.dyn +++ b/parm/config/gfs/config.base.emc.dyn @@ -397,4 +397,11 @@ export FITSARC="YES" export FHMAX_FITS=132 [[ "${FHMAX_FITS}" -gt "${FHMAX_GFS}" ]] && export FHMAX_FITS=${FHMAX_GFS} +# The monitor jobs are not yet supported for JEDIATMVAR +if [[ ${DO_JEDIATMVAR} = "YES" ]]; then + export DO_VERFOZN="NO" # Ozone data assimilation monitoring + export DO_VERFRAD="NO" # Radiance data assimilation monitoring + export DO_VMINMON="NO" # GSI minimization monitoring +fi + echo "END: config.base" diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index 2bb3d48bb4..7c32313758 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -16,4 +16,9 @@ if [ $DOIAU_ENKF = "YES" ]; then export DOSFCANL_ENKF="NO" fi +# Turn off NST in JEDIATMENS +if [[ "${DO_JEDIATMENS}" == "YES" ]]; then + export DONST="NO" +fi + echo "END: config.esfc" diff --git a/parm/config/gfs/config.nsst b/parm/config/gfs/config.nsst index db4367b2c0..7bda81f058 100644 --- a/parm/config/gfs/config.nsst +++ b/parm/config/gfs/config.nsst @@ -10,6 +10,11 @@ echo "BEGIN: config.nsst" # nstf_name(1) : NST_MODEL (NSST Model) : 0 = OFF, 1 = ON but uncoupled, 2 = ON and coupled export NST_MODEL=2 +# Set NST_MODEL for JEDIATMVAR or JEDIATMENS +if [[ "${DO_JEDIATMVAR}" == "YES" || "${DO_JEDIATMENS}" == "YES" ]]; then + export NST_MODEL=1 +fi + # nstf_name(2) : NST_SPINUP : 0 = OFF, 1 = ON, export NST_SPINUP=0 cdate="${PDY}${cyc}" diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index afebc70ae2..b06e634993 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -91,7 +91,7 @@ case ${step} in ;; "prepatmiodaobs") - export wtime_prepatmiodaobs="00:10:00" + export wtime_prepatmiodaobs="00:30:00" export npe_prepatmiodaobs=1 export nth_prepatmiodaobs=1 export npe_node_prepatmiodaobs=$(( npe_node_max / nth_prepatmiodaobs )) @@ -196,8 +196,8 @@ case ${step} in "atmanlinit") # make below case dependent later - export layout_x=1 - export layout_y=1 + export layout_x=8 + export layout_y=8 export layout_gsib_x=$(( layout_x * 3 )) export layout_gsib_y=$(( layout_y * 2 )) @@ -212,8 +212,8 @@ case ${step} in "atmanlrun") # make below case dependent later - export layout_x=1 - export layout_y=1 + export layout_x=8 + export layout_y=8 export wtime_atmanlrun="00:30:00" export npe_atmanlrun=$(( layout_x * layout_y * 6 )) @@ -221,6 +221,7 @@ case ${step} in export nth_atmanlrun=1 export nth_atmanlrun_gfs=${nth_atmanlrun} export npe_node_atmanlrun=$(( npe_node_max / nth_atmanlrun )) + export memory_atmanlrun="96GB" export is_exclusive=True ;; @@ -829,8 +830,8 @@ case ${step} in "atmensanlinit") # make below case dependent later - export layout_x=1 - export layout_y=1 + export layout_x=8 + export layout_y=8 export wtime_atmensanlinit="00:10:00" export npe_atmensanlinit=1 @@ -841,8 +842,8 @@ case ${step} in "atmensanlrun") # make below case dependent later - export layout_x=1 - export layout_y=1 + export layout_x=8 + export layout_y=8 export wtime_atmensanlrun="00:30:00" export npe_atmensanlrun=$(( layout_x * layout_y * 6 )) @@ -850,6 +851,7 @@ case ${step} in export nth_atmensanlrun=1 export nth_atmensanlrun_gfs=${nth_atmensanlrun} export npe_node_atmensanlrun=$(( npe_node_max / nth_atmensanlrun )) + export memory_atmensanlrun="96GB" export is_exclusive=True ;; diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index 9592fb77c9..e2fde8992a 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -8,4 +8,9 @@ echo "BEGIN: config.sfcanl" # Get task specific resources . $EXPDIR/config.resources sfcanl +# Turn off NST in JEDIATMVAR +if [[ "${DO_JEDIATMVAR}" == "YES" ]]; then + export DONST="NO" +fi + echo "END: config.sfcanl" diff --git a/ush/python/pygfs/task/atm_analysis.py b/ush/python/pygfs/task/atm_analysis.py index da41574fc9..6aed0533c6 100644 --- a/ush/python/pygfs/task/atm_analysis.py +++ b/ush/python/pygfs/task/atm_analysis.py @@ -94,7 +94,7 @@ def initialize(self: Analysis) -> None: 'NMEM_ENS', 'DATA', 'current_cycle', 'ntiles'] for key in keys: localconf[key] = self.task_config[key] - localconf.RUN = 'enkf' + self.task_config.RUN + localconf.RUN = 'enkfgdas' localconf.dirname = 'ens' FileHandler(self.get_fv3ens_dict(localconf)).sync()