From 3dfc5ec88d87e3e1f200cc1a824af30a2c03f657 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Tue, 7 Feb 2023 12:45:48 -0600 Subject: [PATCH] Change RUN for ensemble jobs Updates `$RUN` and `$CDUMP` for ensemble jobs to include `enkf`. Previously, the `$RUN` for EnKF jobs had been set to `gdas` or `gfs`. However, this violates NCO policy and was also complicating Issue #761. Now the `$RUN` for EnKF jobs is either `enkfgdas` or `enkfgfs`. Theoeretically, `$CDUMP` shouldn't need to change. However, `$CDUMP` and `$RUN` are used interchangably throughout much of the workflow (Issue #1299), so for now the `$CDUMP` is kept identical to `$RUN`. Refs: #1298 --- jobs/JGDAS_ATMOS_ANALYSIS_DIAG | 4 +-- jobs/JGDAS_ATMOS_CHGRES_FORENKF | 28 ++++++------------ jobs/JGDAS_ENKF_DIAG | 40 ++++++++++++++------------ jobs/JGDAS_ENKF_ECEN | 34 +++++++--------------- jobs/JGDAS_ENKF_FCST | 6 ++-- jobs/JGDAS_ENKF_POST | 6 ++-- jobs/JGDAS_ENKF_SELECT_OBS | 20 +++++++------ jobs/JGDAS_ENKF_SFC | 32 +++++++-------------- jobs/JGDAS_ENKF_UPDATE | 6 ++-- jobs/JGLOBAL_ATMOS_ANALYSIS | 3 +- jobs/JGLOBAL_ATMOS_ANALYSIS_CALC | 3 +- parm/config/config.base.emc.dyn | 8 +++--- parm/config/config.fcst | 8 +++--- parm/config/config.resources | 6 ++-- scripts/exgdas_atmos_chgres_forenkf.sh | 5 ++-- scripts/exgdas_enkf_earc.sh | 30 +++++++++---------- scripts/exgdas_enkf_ecen.sh | 33 ++++++++++----------- scripts/exgdas_enkf_fcst.sh | 6 ++-- scripts/exgdas_enkf_sfc.sh | 3 +- scripts/exglobal_atmos_analysis.sh | 8 +++--- scripts/exglobal_forecast.sh | 12 ++++---- ush/forecast_postdet.sh | 16 +++++------ ush/forecast_predet.sh | 12 +++----- workflow/applications.py | 18 ++++++------ workflow/rocoto/workflow_tasks.py | 34 +++++++++++----------- 25 files changed, 176 insertions(+), 205 deletions(-) diff --git a/jobs/JGDAS_ATMOS_ANALYSIS_DIAG b/jobs/JGDAS_ATMOS_ANALYSIS_DIAG index 3e4cf283e4..a9e2ff14ef 100755 --- a/jobs/JGDAS_ATMOS_ANALYSIS_DIAG +++ b/jobs/JGDAS_ATMOS_ANALYSIS_DIAG @@ -24,10 +24,10 @@ GDUMP=${GDUMP:-"gdas"} export OPREFIX="${CDUMP}.t${cyc}z." export GPREFIX="${GDUMP}.t${gcyc}z." export APREFIX="${CDUMP}.t${cyc}z." +export GPREFIX_ENS="enkf${GDUMP}.t${gcyc}z." if [ ${RUN_ENVIR} = "nco" -o ${ROTDIR_DUMP:-NO} = "YES" ]; then - export COMIN=${COMIN:-${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos} export COMOUT=${COMOUT:-${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos} export COMIN_OBS=${COMIN_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${RUN}.${PDY}/${cyc}/atmos} export COMIN_GES_OBS=${COMIN_GES_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${GDUMP}.${gPDY}/${gcyc}/atmos} @@ -50,7 +50,7 @@ fi if [ ${DOHYBVAR} = "YES" ]; then - export ATMGES_ENSMEAN="${COMIN_GES_ENS}/${GPREFIX}atmf006.ensmean.nc" + export ATMGES_ENSMEAN="${COMIN_GES_ENS}/${GPREFIX_ENS}atmf006.ensmean.nc" if [ ! -f ${ATMGES_ENSMEAN} ]; then echo "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" exit 2 diff --git a/jobs/JGDAS_ATMOS_CHGRES_FORENKF b/jobs/JGDAS_ATMOS_CHGRES_FORENKF index 6ade8c38ef..da93058ace 100755 --- a/jobs/JGDAS_ATMOS_CHGRES_FORENKF +++ b/jobs/JGDAS_ATMOS_CHGRES_FORENKF @@ -17,31 +17,19 @@ export DO_CALC_ANALYSIS=${DO_CALC_ANALYSIS:-"YES"} # Begin JOB SPECIFIC work ############################################## -GDATE=$(${NDATE} -${assim_freq} ${CDATE}) -gPDY=$(echo ${GDATE} | cut -c1-8) -gcyc=$(echo ${GDATE} | cut -c9-10) -GDUMP=${GDUMP:-"gdas"} - -export OPREFIX="${CDUMP}.t${cyc}z." -export GPREFIX="${GDUMP}.t${gcyc}z." -export APREFIX="${CDUMP}.t${cyc}z." +export APREFIX="${CDUMP/enkf}.t${cyc}z." +export APREFIX_ENS="${CDUMP}.t${cyc}z." if [ ${RUN_ENVIR} = "nco" -o ${ROTDIR_DUMP:-NO} = "YES" ]; then - export COMIN=${COMIN:-${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos} - export COMOUT=${COMOUT:-${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos} - export COMOUT_ENS=${COMOUT_ENS:-${ROTDIR}/enkfgdas.${PDY}/${cyc}} - export COMIN_OBS=${COMIN_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${RUN}.${PDY}/${cyc}/atmos} - export COMIN_GES_OBS=${COMIN_GES_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${GDUMP}.${gPDY}/${gcyc}/atmos} + export COMOUT=${COMOUT:-${ROTDIR}/${RUN/enkf}.${PDY}/${cyc}/atmos} + export COMOUT_ENS=${COMOUT_ENS:-${ROTDIR}/${RUN}.${PDY}/${cyc}} else - export COMOUT="${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos" - export COMOUT_ENS="${ROTDIR}/enkfgdas.${PDY}/${cyc}" - export COMIN_OBS="${COMIN_OBS:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/obs}" - export COMIN_GES_OBS="${ROTDIR}/${GDUMP}.${gPDY}/${gcyc}/obs" + export COMOUT="${ROTDIR}/${RUN/enkf}.${PDY}/${cyc}/atmos" + export COMOUT_ENS="${ROTDIR}/${RUN}.${PDY}/${cyc}" fi mkdir -m 775 -p ${COMOUT} -# COMIN_GES and COMIN_GES_ENS are used in script -export COMIN_GES="${ROTDIR}/${GDUMP}.${gPDY}/${gcyc}/atmos" -export COMIN_GES_ENS="${ROTDIR}/enkfgdas.${gPDY}/${gcyc}" + +export ATMFCST_ENSRES="${COMOUT_ENS}/mem001/atmos/${APREFIX_ENS}atmf006.nc" ############################################################### # Run relevant script diff --git a/jobs/JGDAS_ENKF_DIAG b/jobs/JGDAS_ENKF_DIAG index ac6a853b04..384f253ff7 100755 --- a/jobs/JGDAS_ENKF_DIAG +++ b/jobs/JGDAS_ENKF_DIAG @@ -22,31 +22,33 @@ GDATE=$(${NDATE} -${assim_freq} ${CDATE}) gPDY=$(echo ${GDATE} | cut -c1-8) gcyc=$(echo ${GDATE} | cut -c9-10) GDUMP=${GDUMP:-"gdas"} +GDUMP_ENS=${GDUMP_ENS:-"enkf${GDUMP}"} export CASE=${CASE_ENKF} -export CDUMP_OBS=${CDUMP_OBS:-${CDUMP}} +export CDUMP_OBS=${CDUMP_OBS:-${CDUMP/enkf}} +export CDUMP_CTL=${CDUMP_CTL:-${CDUMP/enkf}} + export OPREFIX="${CDUMP_OBS}.t${cyc}z." -export APREFIX="${CDUMP}.t${cyc}z." +export APREFIX="${CDUMP_CTL}.t${cyc}z." +export APREFIX_ENS="${CDUMP}.t${cyc}z." export GPREFIX="${GDUMP}.t${gcyc}z." +export GPREFIX_ENS="${GDUMP_ENS}.t${gcyc}z." if [ ${RUN_ENVIR} = "nco" -o ${ROTDIR_DUMP:-NO} = "YES" ]; then - export COMIN_OBS=${COMIN_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${RUN}.${PDY}/${cyc}/${COMPONENT}} - export COMIN_GES_OBS=${COMIN_GES_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${GDUMP}.${gPDY}/${gcyc}/${COMPONENT}} + export COMIN_OBS=${COMIN_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${CDUMP_OBS}.${PDY}/${cyc}/${COMPONENT}} else - export COMIN_OBS="${COMIN_OBS:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/obs}" - export COMIN_GES_OBS="${ROTDIR}/${GDUMP}.${gPDY}/${gcyc}/obs" + export COMIN_OBS="${COMIN_OBS:-${ROTDIR}/${CDUMP_OBS}.${PDY}/${cyc}/obs}" fi # COMIN_GES, COMIN_ANL COMIN_GES_ENS, and COMOUT are used in script COMIN_GES_CTL="${ROTDIR}/gdas.${gPDY}/${gcyc}/${COMPONENT}" -export COMIN_ANL="${ROTDIR}/${CDUMP}.${PDY}/${cyc}/${COMPONENT}" +export COMIN_ANL="${ROTDIR}/${CDUMP/enkf}.${PDY}/${cyc}/${COMPONENT}" export COMIN_GES_ENS="${ROTDIR}/enkfgdas.${gPDY}/${gcyc}" -export COMIN_GES=${COMIN_GES_ENS} -export COMOUT="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}" +export COMOUT="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" -export ATMGES_ENSMEAN="${COMIN_GES_ENS}/${GPREFIX}atmf006.ensmean.nc" +export ATMGES_ENSMEAN="${COMIN_GES_ENS}/${GPREFIX_ENS}atmf006.ensmean.nc" if [ ! -f ${ATMGES_ENSMEAN} ]; then echo "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" exit 1 @@ -71,21 +73,21 @@ export GBIASAIR=${COMIN_GES_CTL}/${GPREFIX}abias_air export GRADSTAT=${COMIN_GES_CTL}/${GPREFIX}radstat # Bias correction coefficients related to ensemble mean -export ABIAS="${COMOUT}/${APREFIX}abias.ensmean" -export ABIASPC="${COMOUT}/${APREFIX}abias_pc.ensmean" -export ABIASAIR="${COMOUT}/${APREFIX}abias_air.ensmean" -export ABIASe="${COMOUT}/${APREFIX}abias_int.ensmean" +export ABIAS="${COMOUT}/${APREFIX_ENS}abias.ensmean" +export ABIASPC="${COMOUT}/${APREFIX_ENS}abias_pc.ensmean" +export ABIASAIR="${COMOUT}/${APREFIX_ENS}abias_air.ensmean" +export ABIASe="${COMOUT}/${APREFIX_ENS}abias_int.ensmean" # Diagnostics related to ensemble mean -export GSISTAT="${COMOUT}/${APREFIX}gsistat.ensmean" -export CNVSTAT="${COMOUT}/${APREFIX}cnvstat.ensmean" -export OZNSTAT="${COMOUT}/${APREFIX}oznstat.ensmean" -export RADSTAT="${COMOUT}/${APREFIX}radstat.ensmean" +export GSISTAT="${COMOUT}/${APREFIX_ENS}gsistat.ensmean" +export CNVSTAT="${COMOUT}/${APREFIX_ENS}cnvstat.ensmean" +export OZNSTAT="${COMOUT}/${APREFIX_ENS}oznstat.ensmean" +export RADSTAT="${COMOUT}/${APREFIX_ENS}radstat.ensmean" # Select observations based on ensemble mean export RUN_SELECT="YES" export USE_SELECT="NO" -export SELECT_OBS="${COMOUT}/${APREFIX}obsinput.ensmean" +export SELECT_OBS="${COMOUT}/${APREFIX_ENS}obsinput.ensmean" export DIAG_SUFFIX="_ensmean" export DIAG_COMPRESS="NO" diff --git a/jobs/JGDAS_ENKF_ECEN b/jobs/JGDAS_ENKF_ECEN index 07f3c58bf4..d08f2e11b0 100755 --- a/jobs/JGDAS_ENKF_ECEN +++ b/jobs/JGDAS_ENKF_ECEN @@ -8,7 +8,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "ecen" -c "base ecen" # Set variables used in the script ############################################## export CDATE=${CDATE:-${PDY}${cyc}} -export CDUMP=${CDUMP:-${RUN:-"gdas"}} +export CDUMP=${CDUMP:-${RUN:-"enkfgdas"}} export COMPONENT="atmos" @@ -20,35 +20,23 @@ GDATE=$(${NDATE} -${assim_freq} ${CDATE}) gPDY=$(echo ${GDATE} | cut -c1-8) gcyc=$(echo ${GDATE} | cut -c9-10) GDUMP=${GDUMP:-"gdas"} +GDUMP_ENS=${GDUMP_ENS:-"enkf${GDUMP}"} export CASE=${CASE_ENKF} +export CDUMP_OBS=${CDUMP_OBS:-${CDUMP/enkf}} -EUPD_CYC=$(echo ${EUPD_CYC:-"gdas"} | tr a-z A-Z) -if [[ ${EUPD_CYC} = "GFS" ]]; then - CDUMP_ENKF="gfs" -else - CDUMP_ENKF=${CDUMP} -fi - -export OPREFIX="${CDUMP}.t${cyc}z." -export APREFIX="${CDUMP}.t${cyc}z." -export APREFIX_ENKF="${CDUMP_ENKF}.t${cyc}z." +export OPREFIX="${CDUMP_OBS}.t${cyc}z." +export APREFIX="${CDUMP/enkf}.t${cyc}z." +export APREFIX_ENS="${CDUMP}.t${cyc}z." export GPREFIX="${GDUMP}.t${gcyc}z." - -if [ ${RUN_ENVIR} = "nco" -o ${ROTDIR_DUMP:-NO} = "YES" ]; then - export COMIN_OBS=${COMIN_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${RUN}.${PDY}/${cyc}/atmos} - export COMIN_GES_OBS=${COMIN_GES_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${GDUMP}.${gPDY}/${gcyc}/atmos} -else - export COMIN_OBS="${COMIN_OBS:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/obs}" - export COMIN_GES_OBS="${ROTDIR}/${GDUMP}.${gPDY}/${gcyc}/obs" -fi +export GPREFIX_ENS="${GDUMP_ENS}.t${gcyc}z." # COMIN, COMIN_ENS and COMIN_GES_ENS are used in script -export COMIN="${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos" -export COMIN_ENS="${ROTDIR}/enkf${CDUMP_ENKF}.${PDY}/${cyc}" -export COMOUT_ENS="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}" -export COMIN_GES_ENS="${ROTDIR}/enkf${GDUMP}.${gPDY}/${gcyc}" +export COMIN="${ROTDIR}/${CDUMP/enkf}.${PDY}/${cyc}/atmos" +export COMIN_ENS="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" +export COMOUT_ENS="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" +export COMIN_GES_ENS="${ROTDIR}/${GDUMP_ENS}.${gPDY}/${gcyc}" ############################################################### diff --git a/jobs/JGDAS_ENKF_FCST b/jobs/JGDAS_ENKF_FCST index 68e9ec6925..8a30b9abe3 100755 --- a/jobs/JGDAS_ENKF_FCST +++ b/jobs/JGDAS_ENKF_FCST @@ -8,9 +8,9 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "efcs" -c "base fcst efcs" # Set variables used in the script ############################################## export CDATE=${CDATE:-${PDY}${cyc}} -export CDUMP=${CDUMP:-${RUN:-"gdas"}} +export CDUMP=${CDUMP:-${RUN:-"enkfgdas"}} export COMPONENT="atmos" -export rCDUMP="gdas" +export rCDUMP="enkfgdas" ############################################## # Begin JOB SPECIFIC work @@ -19,7 +19,7 @@ export rCDUMP="gdas" export CASE=${CASE_ENKF} # COMOUT is used in script -export COMOUT="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}" +export COMOUT="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" # Forecast length for EnKF forecast diff --git a/jobs/JGDAS_ENKF_POST b/jobs/JGDAS_ENKF_POST index 57e94f37f9..a9750d00ba 100755 --- a/jobs/JGDAS_ENKF_POST +++ b/jobs/JGDAS_ENKF_POST @@ -8,7 +8,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "epos" -c "base epos" # Set variables used in the script ############################################## export CDATE=${CDATE:-${PDY}${cyc}} -export CDUMP=${CDUMP:-${RUN:-"gdas"}} +export CDUMP=${CDUMP:-${RUN:-"enkfgdas"}} export COMPONENT="atmos" @@ -20,8 +20,8 @@ export GFS_NCIO=${GFS_NCIO:-"YES"} export PREFIX="${CDUMP}.t${cyc}z." # COMIN, COMOUT are used in script -export COMIN="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}" -export COMOUT="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}" +export COMIN="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" +export COMOUT="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" export LEVS=$((LEVS-1)) diff --git a/jobs/JGDAS_ENKF_SELECT_OBS b/jobs/JGDAS_ENKF_SELECT_OBS index 21dd50ad8a..421011b529 100755 --- a/jobs/JGDAS_ENKF_SELECT_OBS +++ b/jobs/JGDAS_ENKF_SELECT_OBS @@ -22,20 +22,22 @@ GDATE=$(${NDATE} -${assim_freq} ${CDATE}) gPDY=$(echo ${GDATE} | cut -c1-8) gcyc=$(echo ${GDATE} | cut -c9-10) GDUMP=${GDUMP:-"gdas"} +GDUMP_ENS=${GDUMP_ENS:-"enkf${GDUMP}"} export CASE=${CASE_ENKF} -export CDUMP_OBS=${CDUMP_OBS:-${CDUMP}} +export CDUMP_OBS=${CDUMP_OBS:-${CDUMP/enkf}} export OPREFIX="${CDUMP_OBS}.t${cyc}z." export APREFIX="${CDUMP}.t${cyc}z." -export GPREFIX="${GDUMP}.t${gcyc}z." +export GPREFIX_DET="${GDUMP}.t${gcyc}z." +export GPREFIX="${GDUMP_ENS}.t${gcyc}z." export GSUFFIX=".ensmean.nc" if [ ${RUN_ENVIR} = "nco" -o ${ROTDIR_DUMP:-NO} = "YES" ]; then - export COMIN_OBS=${COMIN_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${RUN}.${PDY}/${cyc}/${COMPONENT}} + export COMIN_OBS=${COMIN_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${CDUMP_OBS}.${PDY}/${cyc}/${COMPONENT}} export COMIN_GES_OBS=${COMIN_GES_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${GDUMP}.${gPDY}/${gcyc}/${COMPONENT}} else - export COMIN_OBS="${COMIN_OBS:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/obs}" + export COMIN_OBS="${COMIN_OBS:-${ROTDIR}/${CDUMP_OBS}.${PDY}/${cyc}/obs}" export COMIN_GES_OBS="${ROTDIR}/${GDUMP}.${gPDY}/${gcyc}/obs" fi @@ -44,7 +46,7 @@ COMIN_GES_CTL="${ROTDIR}/gdas.${gPDY}/${gcyc}/${COMPONENT}" export COMIN_ANL="${ROTDIR}/${CDUMP}.${PDY}/${cyc}/${COMPONENT}" export COMIN_GES_ENS="${ROTDIR}/enkfgdas.${gPDY}/${gcyc}" export COMIN_GES=${COMIN_GES_ENS} -export COMOUT="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}" +export COMOUT="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" export ATMGES_ENSMEAN="${COMIN_GES_ENS}/${GPREFIX}atmf006${GSUFFIX}" @@ -69,10 +71,10 @@ fi export PREPQCPF="${COMIN_OBS}/${OPREFIX}prepbufr.acft_profiles" # Guess Bias correction coefficients related to control -export GBIAS=${COMIN_GES_CTL}/${GPREFIX}abias -export GBIASPC=${COMIN_GES_CTL}/${GPREFIX}abias_pc -export GBIASAIR=${COMIN_GES_CTL}/${GPREFIX}abias_air -export GRADSTAT=${COMIN_GES_CTL}/${GPREFIX}radstat +export GBIAS=${COMIN_GES_CTL}/${GPREFIX_DET}abias +export GBIASPC=${COMIN_GES_CTL}/${GPREFIX_DET}abias_pc +export GBIASAIR=${COMIN_GES_CTL}/${GPREFIX_DET}abias_air +export GRADSTAT=${COMIN_GES_CTL}/${GPREFIX_DET}radstat # Bias correction coefficients related to ensemble mean export ABIAS="${COMOUT}/${APREFIX}abias.ensmean" diff --git a/jobs/JGDAS_ENKF_SFC b/jobs/JGDAS_ENKF_SFC index 91a33bb3a2..075c285ba5 100755 --- a/jobs/JGDAS_ENKF_SFC +++ b/jobs/JGDAS_ENKF_SFC @@ -20,36 +20,24 @@ GDATE=$(${NDATE} -${assim_freq} ${CDATE}) gPDY=$(echo ${GDATE} | cut -c1-8) gcyc=$(echo ${GDATE} | cut -c9-10) GDUMP=${GDUMP:-"gdas"} +GDUMP_ENS=${GDUMP_ENS:-"enkf${GDUMP}"} export CASE=${CASE_ENKF} +export CDUMP_OBS=${CDUMP_OBS:-${CDUMP/enkf}} -EUPD_CYC=$(echo ${EUPD_CYC:-"gdas"} | tr a-z A-Z) -if [[ ${EUPD_CYC} = "GFS" ]]; then - CDUMP_ENKF="gfs" -else - CDUMP_ENKF=${CDUMP} -fi - -export OPREFIX="${CDUMP}.t${cyc}z." -export APREFIX="${CDUMP}.t${cyc}z." -export APREFIX_ENKF="${CDUMP_ENKF}.t${cyc}z." +export OPREFIX="${CDUMP_OBS}.t${cyc}z." +export APREFIX="${CDUMP/enkf}.t${cyc}z." +export APREFIX_ENS="${CDUMP}.t${cyc}z." export GPREFIX="${GDUMP}.t${gcyc}z." - -if [ ${RUN_ENVIR} = "nco" -o ${ROTDIR_DUMP:-NO} = "YES" ]; then - export COMIN_OBS=${COMIN_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${RUN}.${PDY}/${cyc}/atmos} - export COMIN_GES_OBS=${COMIN_GES_OBS:-$(compath.py ${envir}/obsproc/${obsproc_ver})/${GDUMP}.${gPDY}/${gcyc}/atmos} -else - export COMIN_OBS="${COMIN_OBS:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/obs}" - export COMIN_GES_OBS="${ROTDIR}/${GDUMP}.${gPDY}/${gcyc}/obs" -fi +export GPREFIX_ENS="${GDUMP_ENS}.t${gcyc}z." # COMIN, COMIN_ENS and COMIN_GES_ENS are used in script -export COMIN="${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos" +export COMIN="${ROTDIR}/${RUN/enkf}.${PDY}/${cyc}/atmos" export COMIN_GES="${ROTDIR}/${GDUMP}.${gPDY}/${gcyc}/atmos" -export COMIN_ENS="${ROTDIR}/enkf${CDUMP_ENKF}.${PDY}/${cyc}" -export COMOUT_ENS="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}" -export COMIN_GES_ENS="${ROTDIR}/enkf${GDUMP}.${gPDY}/${gcyc}" +export COMIN_ENS="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" +export COMOUT_ENS="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" +export COMIN_GES_ENS="${ROTDIR}/${GDUMP_ENS}.${gPDY}/${gcyc}" ############################################################### diff --git a/jobs/JGDAS_ENKF_UPDATE b/jobs/JGDAS_ENKF_UPDATE index 55ad4a05ae..f8f959acc8 100755 --- a/jobs/JGDAS_ENKF_UPDATE +++ b/jobs/JGDAS_ENKF_UPDATE @@ -8,7 +8,7 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "eupd" -c "base anal eupd" # Set variables used in the script ############################################## export CDATE=${CDATE:-${PDY}${cyc}} -export CDUMP=${CDUMP:-${RUN:-"gdas"}} +export CDUMP=${CDUMP:-${RUN:-"enkfgdas"}} export COMPONENT="atmos" @@ -21,11 +21,11 @@ gPDY=$(echo ${GDATE} | cut -c1-8) gcyc=$(echo ${GDATE} | cut -c9-10) export APREFIX="${CDUMP}.t${cyc}z." -export GPREFIX="gdas.t${gcyc}z." +export GPREFIX="enkfgdas.t${gcyc}z." # COMIN_GES_ENS and COMOUT_ANL_ENS are used in script export COMIN_GES_ENS="${ROTDIR}/enkfgdas.${gPDY}/${gcyc}" -export COMOUT_ANL_ENS="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}" +export COMOUT_ANL_ENS="${ROTDIR}/${CDUMP}.${PDY}/${cyc}" ############################################################### diff --git a/jobs/JGLOBAL_ATMOS_ANALYSIS b/jobs/JGLOBAL_ATMOS_ANALYSIS index 9fe9074daf..48c7a44cb0 100755 --- a/jobs/JGLOBAL_ATMOS_ANALYSIS +++ b/jobs/JGLOBAL_ATMOS_ANALYSIS @@ -27,6 +27,7 @@ GDUMP=${GDUMP:-"gdas"} export OPREFIX="${CDUMP}.t${cyc}z." export GPREFIX="${GDUMP}.t${gcyc}z." export APREFIX="${CDUMP}.t${cyc}z." +export GPREFIX_ENS="enkf${GDUMP}.t${gcyc}z." export COMIN=${COMIN:-${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos} export COMOUT=${COMOUT:-${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos} @@ -57,7 +58,7 @@ status=$? if [ ${DOHYBVAR} = "YES" ]; then - export ATMGES_ENSMEAN="${COMIN_GES_ENS}/${GPREFIX}atmf006.ensmean.nc" + export ATMGES_ENSMEAN="${COMIN_GES_ENS}/enkf${GPREFIX}atmf006.ensmean.nc" if [ ! -f ${ATMGES_ENSMEAN} ]; then echo "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" exit 2 diff --git a/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC b/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC index 09427ca452..81f792b032 100755 --- a/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC +++ b/jobs/JGLOBAL_ATMOS_ANALYSIS_CALC @@ -25,6 +25,7 @@ GDUMP=${GDUMP:-"gdas"} export OPREFIX="${CDUMP}.t${cyc}z." export GPREFIX="${GDUMP}.t${gcyc}z." export APREFIX="${CDUMP}.t${cyc}z." +export GPREFIX_ENS="enkf${GDUMP}.t${gcyc}z." if [ ${RUN_ENVIR} = "nco" -o ${ROTDIR_DUMP:-NO} = "YES" ]; then export COMIN=${COMIN:-${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos} @@ -56,7 +57,7 @@ status=$? if [ ${DOHYBVAR} = "YES" ]; then - export ATMGES_ENSMEAN="${COMIN_GES_ENS}/${GPREFIX}atmf006.ensmean.nc" + export ATMGES_ENSMEAN="${COMIN_GES_ENS}/${GPREFIX_ENS}atmf006.ensmean.nc" if [ ! -f ${ATMGES_ENSMEAN} ]; then echo "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = ${ATMGES_ENSMEAN}" exit 2 diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn index 34c71de8d8..96705ac6bd 100644 --- a/parm/config/config.base.emc.dyn +++ b/parm/config/config.base.emc.dyn @@ -119,8 +119,8 @@ export RUN=${RUN:-${CDUMP:-"gfs"}} # RUN is defined in the job-card (ecf); CDUM # TODO: determine where is RUN actually used in the workflow other than here # TODO: is it possible to replace all instances of ${CDUMP} to ${RUN} to be # consistent w/ EE2? -export COMIN_OBS=${COMIN_OBS:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/obs} -export COMIN_GES_OBS=${COMIN_GES_OBS:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/obs} +export COMIN_OBS=${COMIN_OBS:-${ROTDIR}/${CDUMP/enkf}.${PDY}/${cyc}/obs} +export COMIN_GES_OBS=${COMIN_GES_OBS:-${ROTDIR}/${CDUMP/enkf}.${PDY}/${cyc}/obs} export COMINatmos=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos export COMOUTatmos=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos @@ -228,10 +228,10 @@ case "${APP}" in esac # Surface cycle update frequency -if [[ "${CDUMP}" == "gdas" ]] ; then +if [[ "${CDUMP}" =~ "gdas" ]] ; then export FHCYC=1 export FTSFS=10 -elif [[ "${CDUMP}" == "gfs" ]] ; then +elif [[ "${CDUMP}" =~ "gfs" ]] ; then export FHCYC=24 fi diff --git a/parm/config/config.fcst b/parm/config/config.fcst index dcedf7ec2f..366fff0229 100644 --- a/parm/config/config.fcst +++ b/parm/config/config.fcst @@ -12,7 +12,7 @@ echo "BEGIN: config.fcst" # Turn off waves if not used for this CDUMP case $WAVE_CDUMP in - both | $CDUMP ) ;; # Don't change + both | ${CDUMP/enkf} ) ;; # Don't change *) DO_WAVE="NO" ;; # Turn waves off esac @@ -147,7 +147,7 @@ export d2_bg_k1=0.20 export d2_bg_k2=0.04 export dz_min=6 export n_sponge=42 -if [[ "$LEVS" = "128" && "$CDUMP" = "gdas" ]]; then +if [[ "${LEVS}" = "128" && "${CDUMP}" =~ "gdas" ]]; then export tau=5.0 export rf_cutoff=1.0e3 export d2_bg_k1=0.20 @@ -280,7 +280,7 @@ export deflate_level=1 # Disable the use of coupler.res; get model start time from model_configure export USE_COUPLER_RES="NO" -if [[ "$CDUMP" == "gdas" ]] ; then # GDAS cycle specific parameters +if [[ "$CDUMP" =~ "gdas" ]] ; then # GDAS cycle specific parameters # Variables used in DA cycling export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_da" @@ -306,7 +306,7 @@ if [[ "$CDUMP" == "gdas" ]] ; then # GDAS cycle specific parameters # Turn on dry mass adjustment in GDAS export adjust_dry_mass=".true." -elif [[ "$CDUMP" == "gfs" ]] ; then # GFS cycle specific parameters +elif [[ "$CDUMP" =~ "gfs" ]] ; then # GFS cycle specific parameters # Write more variables to output export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table" diff --git a/parm/config/config.resources b/parm/config/config.resources index 617b0cc2c9..70c1f8c7cf 100644 --- a/parm/config/config.resources +++ b/parm/config/config.resources @@ -432,9 +432,9 @@ elif [ ${step} = "fcst" ]; then export is_exclusive=True # During workflow creation, we need resources for all CDUMPs and CDUMP is undefined - CDUMP_LIST=${CDUMP:-"gdas gfs"} + CDUMP_LIST=${CDUMP:-"gdas gfs enkfgdas enkfgfs"} for CDUMP in ${CDUMP_LIST}; do - if [[ ${CDUMP} == "gfs" ]]; then + if [[ ${CDUMP} =~ "gfs" ]]; then export layout_x=${layout_x_gfs} export layout_y=${layout_y_gfs} export WRITE_GROUP=${WRITE_GROUP_GFS} @@ -514,7 +514,7 @@ elif [ ${step} = "fcst" ]; then (( NTASKS_TOT = NTASKS_TOT + ICEPETS )) fi - if [[ ${CDUMP} == "gfs" ]]; then + if [[ ${CDUMP} =~ "gfs" ]]; then export npe_fcst_gfs=${NTASKS_TOT} else export npe_fcst=${NTASKS_TOT} diff --git a/scripts/exgdas_atmos_chgres_forenkf.sh b/scripts/exgdas_atmos_chgres_forenkf.sh index 0662720c42..f99979bc77 100755 --- a/scripts/exgdas_atmos_chgres_forenkf.sh +++ b/scripts/exgdas_atmos_chgres_forenkf.sh @@ -25,7 +25,7 @@ export FIXgsm=${FIXgsm:-$HOMEgfs/fix/am} # Base variables CDATE=${CDATE:-"2001010100"} -CDUMP=${CDUMP:-"gdas"} +CDUMP=${CDUMP:-"enkfgdas"} GDUMP=${GDUMP:-"gdas"} # Derived base variables @@ -63,6 +63,7 @@ SIGLEVEL=${SIGLEVEL:-${FIXgsm}/global_hyblev.l${LEVS}.txt} # forecast files APREFIX=${APREFIX:-""} +APREFIX_ENS=${APREFIX_ENS:-""} # at full resolution ATMF03=${ATMF03:-${COMOUT}/${APREFIX}atmf003.nc} ATMF04=${ATMF04:-${COMOUT}/${APREFIX}atmf004.nc} @@ -79,7 +80,7 @@ ATMF06ENS=${ATMF06ENS:-${COMOUT}/${APREFIX}atmf006.ensres.nc} ATMF07ENS=${ATMF07ENS:-${COMOUT}/${APREFIX}atmf007.ensres.nc} ATMF08ENS=${ATMF08ENS:-${COMOUT}/${APREFIX}atmf008.ensres.nc} ATMF09ENS=${ATMF09ENS:-${COMOUT}/${APREFIX}atmf009.ensres.nc} -ATMFCST_ENSRES=${ATMFCST_ENSRES:-${COMOUT_ENS}/mem001/atmos/${APREFIX}atmf006.nc} +ATMFCST_ENSRES=${ATMFCST_ENSRES:-${COMOUT_ENS}/mem001/atmos/${APREFIX_ENS}atmf006.nc} # Set script / GSI control parameters DOHYBVAR=${DOHYBVAR:-"NO"} diff --git a/scripts/exgdas_enkf_earc.sh b/scripts/exgdas_enkf_earc.sh index 4df4dc82c7..9fd543aae6 100755 --- a/scripts/exgdas_enkf_earc.sh +++ b/scripts/exgdas_enkf_earc.sh @@ -7,7 +7,7 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################## export n=$((10#${ENSGRP})) export CDUMP_ENKF=$(echo "${EUPD_CYC:-"gdas"}" | tr a-z A-Z) -export ARCH_LIST="${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}/earc${ENSGRP}" +export ARCH_LIST="${ROTDIR}/${CDUMP}.${PDY}/${cyc}/earc${ENSGRP}" # ICS are restarts and always lag INC by $assim_freq hours. EARCINC_CYC=${ARCH_CYC} @@ -20,10 +20,10 @@ fi mkdir -p "${ARCH_LIST}" cd "${ARCH_LIST}" -"${HOMEgfs}"/ush/hpssarch_gen.sh enkf"${CDUMP}" +"${HOMEgfs}"/ush/hpssarch_gen.sh "${CDUMP}" status=$? if [ "${status}" -ne 0 ]; then - echo "${HOMEgfs}/ush/hpssarch_gen.sh enkf${CDUMP} failed, ABORT!" + echo "${HOMEgfs}/ush/hpssarch_gen.sh ${CDUMP} failed, ABORT!" exit "${status}" fi @@ -65,27 +65,27 @@ if (( 10#${ENSGRP} > 0 )) && [[ ${HPSSARCH} = "YES" || ${LOCALARCH} = "YES" ]]; if [ "${CDATE}" -gt "${SDATE}" ]; then # Don't run for first half cycle - ${TARCMD} -P -cvf "${ATARDIR}"/"${CDATE}"/enkf"${CDUMP}"_grp"${ENSGRP}".tar $(cat "${ARCH_LIST}"/enkf"${CDUMP}"_grp"${n}".txt) + ${TARCMD} -P -cvf "${ATARDIR}/${CDATE}/${CDUMP}_grp${ENSGRP}.tar" $(cat "${ARCH_LIST}/${CDUMP}_grp${n}.txt") status=$? if [ "${status}" -ne 0 ] && [ "${CDATE}" -ge "${firstday}" ]; then - echo "$(echo "${TARCMD}" | tr 'a-z' 'A-Z') ${CDATE} enkf${CDUMP}_grp${ENSGRP}.tar failed" + echo "$(echo "${TARCMD}" | tr 'a-z' 'A-Z') ${CDATE} ${CDUMP}_grp${ENSGRP}.tar failed" exit "${status}" fi if [ "${SAVEWARMICA}" = "YES" ] && [ "${cyc}" -eq "${EARCINC_CYC}" ]; then - ${TARCMD} -P -cvf "${ATARDIR}"/"${CDATE}"/enkf"${CDUMP}"_restarta_grp"${ENSGRP}".tar $(cat "${ARCH_LIST}"/enkf"${CDUMP}"_restarta_grp"${n}".txt) + ${TARCMD} -P -cvf "${ATARDIR}/${CDATE}/${CDUMP}_restarta_grp${ENSGRP}.tar" $(cat "${ARCH_LIST}/${CDUMP}_restarta_grp${n}.txt") status=$? if [ "${status}" -ne 0 ]; then - echo "$(echo "${TARCMD}" | tr 'a-z' 'A-Z') ${CDATE} enkf${CDUMP}_restarta_grp${ENSGRP}.tar failed" + echo "$(echo "${TARCMD}" | tr 'a-z' 'A-Z') ${CDATE} ${CDUMP}_restarta_grp${ENSGRP}.tar failed" exit "${status}" fi fi if [ "${SAVEWARMICB}" = "YES" ] && [ "${cyc}" -eq "${EARCICS_CYC}" ]; then - ${TARCMD} -P -cvf "${ATARDIR}"/"${CDATE}"/enkf"${CDUMP}"_restartb_grp"${ENSGRP}".tar $(cat "${ARCH_LIST}"/enkf"${CDUMP}"_restartb_grp"${n}".txt) + ${TARCMD} -P -cvf "${ATARDIR}/${CDATE}/${CDUMP}_restartb_grp${ENSGRP}.tar" $(cat "${ARCH_LIST}/${CDUMP}_restartb_grp{n}.txt") status=$? if [ "${status}" -ne 0 ]; then - echo "$(echo "${TARCMD}" | tr 'a-z' 'A-Z') ${CDATE} enkf${CDUMP}_restartb_grp${ENSGRP}.tar failed" + echo "$(echo "${TARCMD}" | tr 'a-z' 'A-Z') ${CDATE} ${CDUMP}_restartb_grp${ENSGRP}.tar failed" exit "${status}" fi fi @@ -109,10 +109,10 @@ if [ "${ENSGRP}" -eq 0 ]; then fi set +e - ${TARCMD} -P -cvf "${ATARDIR}"/"${CDATE}"/enkf"${CDUMP}".tar $(cat "${ARCH_LIST}"/enkf"${CDUMP}".txt) + ${TARCMD} -P -cvf "${ATARDIR}/${CDATE}/${CDUMP}.tar" $(cat "${ARCH_LIST}/${CDUMP}.txt") status=$? if [ "${status}" -ne 0 ] && [ "${CDATE}" -ge "${firstday}" ]; then - echo "$(echo "${TARCMD}" | tr 'a-z' 'A-Z') ${CDATE} enkf${CDUMP}.tar failed" + echo "$(echo "${TARCMD}" | tr 'a-z' 'A-Z') ${CDATE} ${CDUMP}.tar failed" exit "${status}" fi set_strict @@ -122,8 +122,8 @@ if [ "${ENSGRP}" -eq 0 ]; then [[ ! -d ${ARCDIR} ]] && mkdir -p "${ARCDIR}" cd "${ARCDIR}" - nb_copy "${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}/${CDUMP}.t${cyc}z.enkfstat" "enkfstat.${CDUMP}.${CDATE}" - nb_copy "${ROTDIR}/enkf${CDUMP}.${PDY}/${cyc}/${CDUMP}.t${cyc}z.gsistat.ensmean" "gsistat.${CDUMP}.${CDATE}.ensmean" + nb_copy "${ROTDIR}/${CDUMP}.${PDY}/${cyc}/${CDUMP}.t${cyc}z.enkfstat" "enkfstat.${CDUMP}.${CDATE}" + nb_copy "${ROTDIR}/${CDUMP}.${PDY}/${cyc}/${CDUMP}.t${cyc}z.gsistat.ensmean" "gsistat.${CDUMP}.${CDATE}.ensmean" if [ "${CDUMP_ENKF}" != "GDAS" ]; then nb_copy "${ROTDIR}/enkfgfs.${PDY}/${cyc}/${CDUMP}.t${cyc}z.enkfstat" "enkfstat.gfs.${CDATE}" @@ -190,9 +190,9 @@ if [ "${GDATE}" -lt "${RDATE}" ]; then RDATE=${GDATE} fi rPDY=$(echo "${RDATE}" | cut -c1-8) -clist="gdas gfs" +clist="gdas gfs enkfgdas enkfgfs" for ctype in ${clist}; do - COMIN="${ROTDIR}/enkf${ctype}.${rPDY}" + COMIN="${ROTDIR}/${ctype}.${rPDY}" [[ -d ${COMIN} ]] && rm -rf "${COMIN}" done diff --git a/scripts/exgdas_enkf_ecen.sh b/scripts/exgdas_enkf_ecen.sh index 41467324b2..848ed7c776 100755 --- a/scripts/exgdas_enkf_ecen.sh +++ b/scripts/exgdas_enkf_ecen.sh @@ -47,8 +47,9 @@ CALCINCNCEXEC=${CALCINCEXEC:-$HOMEgfs/exec/calc_increment_ens_ncio.x} OPREFIX=${OPREFIX:-""} OSUFFIX=${OSUFFIX:-""} APREFIX=${APREFIX:-""} -APREFIX_ENKF=${APREFIX_ENKF:-$APREFIX} +APREFIX_ENS=${APREFIX_ENS:-$APREFIX} GPREFIX=${GPREFIX:-""} +GPREFIX_ENS=${GPREFIX_ENS:-$GPREFIX} # Variables NMEM_ENKF=${NMEM_ENKF:-80} @@ -109,32 +110,32 @@ for FHR in $(seq $FHMIN $FHOUT $FHMAX); do for imem in $(seq 1 $NMEM_ENKF); do memchar="mem"$(printf %03i $imem) - $NLN $COMIN_GES_ENS/$memchar/atmos/${GPREFIX}atmf00${FHR}${ENKF_SUFFIX}.nc ./atmges_$memchar + $NLN $COMIN_GES_ENS/$memchar/atmos/${GPREFIX_ENS}atmf00${FHR}${ENKF_SUFFIX}.nc ./atmges_$memchar if [ $DO_CALC_INCREMENT = "YES" ]; then if [ $FHR -eq 6 ]; then - $NLN $COMIN_ENS/$memchar/atmos/${APREFIX_ENKF}atmanl.nc ./atmanl_$memchar + $NLN $COMIN_ENS/$memchar/atmos/${APREFIX_ENS}atmanl.nc ./atmanl_$memchar else - $NLN $COMIN_ENS/$memchar/atmos/${APREFIX_ENKF}atma00${FHR}.nc ./atmanl_$memchar + $NLN $COMIN_ENS/$memchar/atmos/${APREFIX_ENS}atma00${FHR}.nc ./atmanl_$memchar fi fi mkdir -p $COMOUT_ENS/$memchar if [ $FHR -eq 6 ]; then - $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX}atminc.nc ./atminc_$memchar + $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX_ENS}atminc.nc ./atminc_$memchar else - $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX}atmi00${FHR}.nc ./atminc_$memchar + $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX_ENS}atmi00${FHR}.nc ./atminc_$memchar fi if [[ $RECENTER_ENKF = "YES" ]]; then if [ $DO_CALC_INCREMENT = "YES" ]; then if [ $FHR -eq 6 ]; then - $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX}ratmanl.nc ./ratmanl_$memchar + $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX_ENS}ratmanl.nc ./ratmanl_$memchar else - $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX}ratma00${FHR}.nc ./ratmanl_$memchar + $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX_ENS}ratma00${FHR}.nc ./ratmanl_$memchar fi else if [ $FHR -eq 6 ]; then - $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX}ratminc.nc ./ratminc_$memchar + $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX_ENS}ratminc.nc ./ratminc_$memchar else - $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX}ratmi00${FHR}.nc ./ratminc_$memchar + $NLN $COMOUT_ENS/$memchar/atmos/${APREFIX_ENS}ratmi00${FHR}.nc ./ratminc_$memchar fi fi fi @@ -143,9 +144,9 @@ done if [ $DO_CALC_INCREMENT = "YES" ]; then # Link ensemble mean analysis if [ $FHR -eq 6 ]; then - $NLN $COMIN_ENS/${APREFIX_ENKF}atmanl.ensmean.nc ./atmanl_ensmean + $NLN $COMIN_ENS/${APREFIX_ENS}atmanl.ensmean.nc ./atmanl_ensmean else - $NLN $COMIN_ENS/${APREFIX_ENKF}atma00${FHR}.ensmean.nc ./atmanl_ensmean + $NLN $COMIN_ENS/${APREFIX_ENS}atma00${FHR}.ensmean.nc ./atmanl_ensmean fi # Compute ensemble mean analysis @@ -163,9 +164,9 @@ if [ $DO_CALC_INCREMENT = "YES" ]; then else # Link ensemble mean increment if [ $FHR -eq 6 ]; then - $NLN $COMIN_ENS/${APREFIX_ENKF}atminc.ensmean.nc ./atminc_ensmean + $NLN $COMIN_ENS/${APREFIX_ENS}atminc.ensmean.nc ./atminc_ensmean else - $NLN $COMIN_ENS/${APREFIX_ENKF}atmi00${FHR}.ensmean.nc ./atminc_ensmean + $NLN $COMIN_ENS/${APREFIX_ENS}atmi00${FHR}.ensmean.nc ./atminc_ensmean fi # Compute ensemble mean increment @@ -182,8 +183,8 @@ else export err=$?; err_chk # If available, link to ensemble mean guess. Otherwise, compute ensemble mean guess - if [ -s $COMIN_GES_ENS/${GPREFIX}atmf00${FHR}.ensmean.nc ]; then - $NLN $COMIN_GES_ENS/${GPREFIX}atmf00${FHR}.ensmean.nc ./atmges_ensmean + if [ -s $COMIN_GES_ENS/${GPREFIX_ENS}atmf00${FHR}.ensmean.nc ]; then + $NLN $COMIN_GES_ENS/${GPREFIX_ENS}atmf00${FHR}.ensmean.nc ./atmges_ensmean else DATAPATH="./" ATMGESNAME="atmges" diff --git a/scripts/exgdas_enkf_fcst.sh b/scripts/exgdas_enkf_fcst.sh index 1db4e9d9da..9580cd9cfa 100755 --- a/scripts/exgdas_enkf_fcst.sh +++ b/scripts/exgdas_enkf_fcst.sh @@ -48,7 +48,7 @@ export DIAG_TABLE=${DIAG_TABLE_ENKF:-${DIAG_TABLE:-$PARM_FV3DIAG/diag_table_da}} # Cycling and forecast hour specific parameters export CDATE=${CDATE:-"2001010100"} -export CDUMP=${CDUMP:-"gdas"} +export CDUMP=${CDUMP:-"enkfgdas"} # Re-run failed members, or entire group RERUN_EFCSGRP=${RERUN_EFCSGRP:-"YES"} @@ -107,13 +107,13 @@ export LEVS=${LEVS_ENKF:-${LEVS:-64}} # nggps_diag_nml export FHOUT=${FHOUT_ENKF:-3} -if [[ ${CDUMP} == "gfs" ]]; then +if [[ ${CDUMP} == "enkfgfs" ]]; then export FHOUT=${FHOUT_ENKF_GFS:-${FHOUT_ENKF:${FHOUT:-3}}} fi # model_configure export DELTIM=${DELTIM_ENKF:-${DELTIM:-225}} export FHMAX=${FHMAX_ENKF:-9} -if [[ $CDUMP == "gfs" ]]; then +if [[ $CDUMP == "enkfgfs" ]]; then export FHMAX=${FHMAX_ENKF_GFS:-${FHMAX_ENKF:-${FHMAX}}} fi diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 3fc99c1890..b6b37a9e73 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -42,8 +42,9 @@ NCLEN=${NCLEN:-$HOMEgfs/ush/getncdimlen} OPREFIX=${OPREFIX:-""} OSUFFIX=${OSUFFIX:-""} APREFIX=${APREFIX:-""} -APREFIX_ENKF=${APREFIX_ENKF:-$APREFIX} +APREFIX_ENS=${APREFIX_ENS:-$APREFIX} GPREFIX=${GPREFIX:-""} +GPREFIX_ENS=${GPREFIX_ENS:-${GPREFIX}} # Variables NMEM_ENKF=${NMEM_ENKF:-80} diff --git a/scripts/exglobal_atmos_analysis.sh b/scripts/exglobal_atmos_analysis.sh index 7b3fd5c381..ea251b373c 100755 --- a/scripts/exglobal_atmos_analysis.sh +++ b/scripts/exglobal_atmos_analysis.sh @@ -243,8 +243,8 @@ JCAP=${JCAP:--9999} # there is no jcap in these files # Get header information from Ensemble Guess files if [ ${DOHYBVAR} = "YES" ]; then - SFCGES_ENSMEAN=${SFCGES_ENSMEAN:-${COMIN_GES_ENS}/${GPREFIX}sfcf006.ensmean.nc} - export ATMGES_ENSMEAN=${ATMGES_ENSMEAN:-${COMIN_GES_ENS}/${GPREFIX}atmf006.ensmean.nc} + SFCGES_ENSMEAN=${SFCGES_ENSMEAN:-${COMIN_GES_ENS}/${GPREFIX_ENS}sfcf006.ensmean.nc} + export ATMGES_ENSMEAN=${ATMGES_ENSMEAN:-${COMIN_GES_ENS}/${GPREFIX_ENS}atmf006.ensmean.nc} LONB_ENKF=${LONB_ENKF:-$(${NCLEN} ${ATMGES_ENSMEAN} grid_xt)} # get LONB_ENKF LATB_ENKF=${LATB_ENKF:-$(${NCLEN} ${ATMGES_ENSMEAN} grid_yt)} # get LATB_ENFK LEVS_ENKF=${LEVS_ENKF:-$(${NCLEN} ${ATMGES_ENSMEAN} pfull)} # get LATB_ENFK @@ -535,9 +535,9 @@ if [ ${DOHYBVAR} = "YES" ]; then for imem in $(seq 1 ${NMEM_ENKF}); do memchar="mem"$(printf %03i ${imem}) for fhr in ${fhrs}; do - ${NLN} ${COMIN_GES_ENS}/${memchar}/atmos/${GPREFIX}atmf0${fhr}${ENKF_SUFFIX}.nc ./ensemble_data/sigf${fhr}_ens_${memchar} + ${NLN} ${COMIN_GES_ENS}/${memchar}/atmos/${GPREFIX_ENS}atmf0${fhr}${ENKF_SUFFIX}.nc ./ensemble_data/sigf${fhr}_ens_${memchar} if [ ${cnvw_option} = ".true." ]; then - ${NLN} ${COMIN_GES_ENS}/${memchar}/atmos/${GPREFIX}sfcf0${fhr}.nc ./ensemble_data/sfcf${fhr}_ens_${memchar} + ${NLN} ${COMIN_GES_ENS}/${memchar}/atmos/${GPREFIX_ENS}sfcf0${fhr}.nc ./ensemble_data/sfcf${fhr}_ens_${memchar} fi done done diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index 04ec9667c6..31701c9ac9 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -123,14 +123,14 @@ common_predet echo $RUN case $RUN in 'data') DATM_predet;; - 'gfs' | 'gdas' | 'gefs') FV3_GFS_predet;; + *gfs | *gdas | 'gefs') FV3_GFS_predet;; esac [[ $cplflx = .true. ]] && MOM6_predet [[ $cplwav = .true. ]] && WW3_predet [[ $cplice = .true. ]] && CICE_predet case $RUN in - 'gfs' | 'gdas' | 'gefs') FV3_GFS_det;; + *gfs | *gdas | 'gefs') FV3_GFS_det;; esac #no run type determination for data atmosphere [[ $cplflx = .true. ]] && MOM6_det [[ $cplwav = .true. ]] && WW3_det @@ -142,7 +142,7 @@ echo "MAIN: Post-determination set up of run type" echo $RUN case $RUN in 'data') DATM_postdet;; - 'gfs' | 'gdas' | 'gefs') FV3_GFS_postdet;; + *gfs | *gdas | 'gefs') FV3_GFS_postdet;; esac #no post determination set up for data atmosphere [[ $cplflx = .true. ]] && MOM6_postdet [[ $cplwav = .true. ]] && WW3_postdet @@ -153,7 +153,7 @@ echo "MAIN: Post-determination set up of run type finished" echo "MAIN: Writing name lists and model configuration" case $RUN in 'data') DATM_nml;; - 'gfs' | 'gdas' | 'gefs') FV3_GFS_nml;; + *gfs | *gdas | 'gefs') FV3_GFS_nml;; esac [[ $cplflx = .true. ]] && MOM6_nml [[ $cplwav = .true. ]] && WW3_nml @@ -162,7 +162,7 @@ esac case $RUN in 'data') DATM_model_configure;; - 'gfs' | 'gdas' | 'gefs') FV3_model_configure;; + *gfs | *gdas | 'gefs') FV3_model_configure;; esac echo "MAIN: Name lists and model configuration written" @@ -187,7 +187,7 @@ $ERRSCRIPT || exit $err case $RUN in 'data') data_out_Data_ATM;; - 'gfs' | 'gdas' | 'gefs') data_out_GFS;; + *gfs | *gdas | 'gefs') data_out_GFS;; esac [[ $cplflx = .true. ]] && MOM6_out [[ $cplwav = .true. ]] && WW3_out diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 6342b4ccba..9ae5aa31e6 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -554,7 +554,7 @@ data_out_GFS() { if [ $SEND = "YES" ]; then # Copy model restart files - if [ $CDUMP = "gdas" -a $rst_invt1 -gt 0 ]; then + if [[ ${CDUMP} =~ "gdas" ]] && (( rst_invt1 > 0 )); then cd $DATA/RESTART mkdir -p $memdir/RESTART for rst_int in $restart_interval ; do @@ -580,7 +580,7 @@ data_out_GFS() { $NCP $file $memdir/RESTART/$file done fi - elif [ $CDUMP = "gfs" ]; then + elif [[ ${CDUMP} =~ "gfs" ]]; then $NCP $DATA/input.nml ${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos/ fi fi @@ -817,7 +817,7 @@ MOM6_postdet() { [[ ! -d $COMOUTocean ]] && mkdir -p $COMOUTocean # Link output files - if [[ "${CDUMP}" = "gfs" ]]; then + if [[ "${CDUMP}" =~ "gfs" ]]; then # Link output files for CDUMP = gfs # TODO: get requirements on what files need to be written out and what these dates here are and what they mean @@ -863,7 +863,7 @@ MOM6_postdet() { last_fhr=$fhr done - elif [[ "${CDUMP}" = "gdas" ]]; then + elif [[ "${CDUMP}" =~ "gdas" ]]; then # Link output files for CDUMP = gdas # MOM6 does not write out the first forecast hour, so start at FHOUT @@ -985,9 +985,9 @@ CICE_postdet() { dumpfreq_n=${dumpfreq_n:-1000} # Set this to a really large value, as cice, mom6 and cmeps restart interval is controlled by nems.configure dumpfreq=${dumpfreq:-"y"} # "h","d","m" or "y" for restarts at intervals of "hours", "days", "months" or "years" - if [[ "${CDUMP}" == "gdas" ]]; then + if [[ "${CDUMP}" =~ "gdas" ]]; then cice_hist_avg=".false." # DA needs instantaneous - elif [[ "${CDUMP}" == "gfs" ]]; then + elif [[ "${CDUMP}" =~ "gfs" ]]; then cice_hist_avg=".true." # P8 wants averaged over histfreq_n fi @@ -1027,7 +1027,7 @@ CICE_postdet() { [[ ! -d $COMOUTice ]] && mkdir -p $COMOUTice mkdir -p ${COMOUTice}/RESTART - if [[ "${CDUMP}" = "gfs" ]]; then + if [[ "${CDUMP}" =~ "gfs" ]]; then # Link output files for CDUMP = gfs # TODO: make these forecast output files consistent w/ GFS output @@ -1059,7 +1059,7 @@ CICE_postdet() { last_fhr=$fhr done - elif [[ "${CDUMP}" = "gdas" ]]; then + elif [[ "${CDUMP}" =~ "gdas" ]]; then # Link CICE generated initial condition file from DATA/CICE_OUTPUT to COMOUTice # This can be thought of as the f000 output from the CICE model diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 2247d84181..c2c8413eea 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -226,7 +226,7 @@ FV3_GFS_predet(){ print_freq=${print_freq:-6} #------------------------------------------------------- - if [[ ${CDUMP} = "gfs" || ${RUN} = "gefs" ]] && [ ${rst_invt1} -gt 0 ]; then + if [[ ${CDUMP} =~ "gfs" || ${RUN} = "gefs" ]] && [ ${rst_invt1} -gt 0 ]; then RSTDIR_ATM=${RSTDIR_ATM:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos/RERUN_RESTART} if [ ! -d $RSTDIR_ATM ]; then mkdir -p $RSTDIR_ATM ; fi $NLN $RSTDIR_ATM RESTART @@ -251,21 +251,17 @@ FV3_GFS_predet(){ #------------------------------------------------------- # member directory if [[ ${MEMBER} -lt 0 || ${RUN} = "gefs" ]]; then - prefix=$CDUMP - rprefix=$rCDUMP memchar="" else - prefix=enkf$CDUMP - rprefix=enkf$rCDUMP memchar=mem$(printf %03i $MEMBER) fi - memdir=${memdir:-${ROTDIR}/${prefix}.${PDY}/${cyc}/${memchar}/atmos} + memdir=${memdir:-${ROTDIR}/${RUN}.${PDY}/${cyc}/${memchar}/atmos} if [ ! -d $memdir ]; then mkdir -p $memdir; fi GDATE=$($NDATE -$assim_freq $CDATE) gPDY=$(echo $GDATE | cut -c1-8) gcyc=$(echo $GDATE | cut -c9-10) - gmemdir=${gmemdir:-${ROTDIR}/${rprefix}.${gPDY}/${gcyc}/${memchar}/atmos} + gmemdir=${gmemdir:-${ROTDIR}/${rCDUMP}.${gPDY}/${gcyc}/${memchar}/atmos} if [[ "$DOIAU" = "YES" ]]; then sCDATE=$($NDATE -3 $CDATE) @@ -286,7 +282,7 @@ FV3_GFS_predet(){ WW3_predet(){ echo "SUB ${FUNCNAME[0]}: Defining variables for WW3" - if [ $CDUMP = "gdas" ]; then + if [ $CDUMP =~ "gdas" ]; then export RSTDIR_WAVE=$ROTDIR/${CDUMP}.${PDY}/${cyc}/wave/restart else export RSTDIR_WAVE=${RSTDIR_WAVE:-$ROTDIR/${CDUMP}.${PDY}/${cyc}/wave/restart} diff --git a/workflow/applications.py b/workflow/applications.py index c1c784a448..9c9996b839 100644 --- a/workflow/applications.py +++ b/workflow/applications.py @@ -396,10 +396,7 @@ def _get_cycled_task_names(self): gdas_tasks += gdas_gfs_common_tasks_after_fcst - if self.do_hybvar: - if 'gdas' in self.eupd_cdumps: - gdas_tasks += hybrid_tasks - gdas_tasks += hybrid_after_eupd_tasks + if self.do_wave and 'gdas' in self.wave_cdumps: if self.do_wave_bnd: @@ -420,10 +417,6 @@ def _get_cycled_task_names(self): if self.do_metp: gfs_tasks += ['metp'] - if self.do_hybvar and 'gfs' in self.eupd_cdumps: - gfs_tasks += hybrid_tasks - gfs_tasks += hybrid_after_eupd_tasks - gfs_tasks.remove("echgres") if self.do_wave and 'gfs' in self.wave_cdumps: if self.do_wave_bnd: @@ -451,10 +444,19 @@ def _get_cycled_task_names(self): tasks = dict() tasks['gdas'] = gdas_tasks + if self.do_hybvar and 'gdas' in self.eupd_cdumps: + enkfgdas_tasks = hybrid_tasks + hybrid_after_eupd_tasks + tasks['enkfgdas'] = enkfgdas_tasks + # Add CDUMP=gfs tasks if running early cycle if self.gfs_cyc > 0: tasks['gfs'] = gfs_tasks + if self.do_hybvar and 'gfs' in self.eupd_cdumps: + enkfgfs_tasks = hybrid_tasks + hybrid_after_eupd_tasks + enkfgfs_tasks.remove("echgres") + tasks['enkfgfs'] = enkfgfs_tasks + return tasks def _get_forecast_only_task_names(self): diff --git a/workflow/rocoto/workflow_tasks.py b/workflow/rocoto/workflow_tasks.py index 2244504d3c..c9a14686cd 100644 --- a/workflow/rocoto/workflow_tasks.py +++ b/workflow/rocoto/workflow_tasks.py @@ -66,8 +66,8 @@ def _get_hybgroups(nens: int, nmem_per_group: int, start_index: int = 1): @staticmethod def _is_this_a_gdas_task(cdump, task_name): - if cdump != 'gdas': - raise TypeError(f'{task_name} must be part of the "gdas" cycle and not {cdump}') + if cdump != 'enkfgdas': + raise TypeError(f'{task_name} must be part of the "enkfgdas" cycle and not {cdump}') def get_resource(self, task_name): """ @@ -248,7 +248,7 @@ def prep(self): gfs_enkf = True if self.app_config.do_hybvar and 'gfs' in self.app_config.eupd_cdumps else False deps = [] - dep_dict = {'type': 'metatask', 'name': f'{"gdas"}post', 'offset': '-06:00:00'} + dep_dict = {'type': 'metatask', 'name': 'gdaspost', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} @@ -338,7 +338,7 @@ def anal(self): dep_dict = {'type': 'task', 'name': f'{self.cdump}prep'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_hybvar: - dep_dict = {'type': 'metatask', 'name': f'{"gdas"}epmn', 'offset': '-06:00:00'} + dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) else: @@ -375,7 +375,7 @@ def analcalc(self): dep_dict = {'type': 'task', 'name': f'{self.cdump}sfcanl'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_hybvar and self.cdump in ['gdas']: - dep_dict = {'type': 'task', 'name': f'{"gdas"}echgres', 'offset': '-06:00:00'} + dep_dict = {'type': 'task', 'name': 'enkfgdasechgres', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) @@ -429,7 +429,7 @@ def atmanalrun(self): dep_dict = {'type': 'task', 'name': f'{self.cdump}atmanalprep'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_hybvar: - dep_dict = {'type': 'metatask', 'name': 'gdasepmn', 'offset': '-06:00:00'} + dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) else: @@ -1050,9 +1050,9 @@ def arch(self): # Start of ensemble tasks def eobs(self): deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}prep'} + dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}prep'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'metatask', 'name': f'{"gdas"}epmn', 'offset': '-06:00:00'} + dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) @@ -1136,7 +1136,7 @@ def atmensanalrun(self): deps = [] dep_dict = {'type': 'task', 'name': f'{self.cdump}atmensanalprep'} deps.append(rocoto.add_dependency(dep_dict)) - dep_dict = {'type': 'metatask', 'name': 'gdasepmn', 'offset': '-06:00:00'} + dep_dict = {'type': 'metatask', 'name': 'enkfgdasepmn', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) @@ -1183,7 +1183,7 @@ def _get_ecengroups(): return grp, dep, lst deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}analcalc'} + dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}analcalc'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_jediens: dep_dict = {'type': 'task', 'name': f'{self.cdump}atmensanalrun'} @@ -1212,7 +1212,7 @@ def esfc(self): # eupd_cdump = 'gdas' if 'gdas' in self.app_config.eupd_cdumps else 'gfs' deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}analcalc'} + dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}analcalc'} deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_jediens: dep_dict = {'type': 'task', 'name': f'{self.cdump}atmensanalrun'} @@ -1245,7 +1245,7 @@ def efcs(self): if self.cdump == "gfs": groups = self._get_hybgroups(self._base['NMEM_EFCS'], self._configs['efcs']['NMEM_EFCSGRP_GFS']) - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump.replace('enkf', '') resources = self.get_resource('efcs') task = create_wf_task('efcs', resources, cdump=self.cdump, envar=efcsenvars, dependency=dependencies, metatask='efmn', varname='grp', varval=groups, cycledef=cycledef) @@ -1257,13 +1257,13 @@ def echgres(self): self._is_this_a_gdas_task(self.cdump, 'echgres') deps = [] - dep_dict = {'type': 'task', 'name': f'{self.cdump}fcst'} + dep_dict = {'type': 'task', 'name': f'{self.cdump.replace("enkf","")}fcst'} deps.append(rocoto.add_dependency(dep_dict)) dep_dict = {'type': 'task', 'name': f'{self.cdump}efcs01'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump resources = self.get_resource('echgres') task = create_wf_task('echgres', resources, cdump=self.cdump, envar=self.envars, dependency=dependencies, @@ -1310,7 +1310,7 @@ def _get_eposgroups(epos): varval1, varval2, varval3 = _get_eposgroups(self._configs['epos']) vardict = {varname2: varval2, varname3: varval3} - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump.replace('enkf', '') resources = self.get_resource('epos') task = create_wf_task('epos', resources, cdump=self.cdump, envar=eposenvars, dependency=dependencies, @@ -1330,7 +1330,7 @@ def earc(self): groups = self._get_hybgroups(self._base['NMEM_ENKF'], self._configs['earc']['NMEM_EARCGRP'], start_index=0) - cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump + cycledef = 'gdas_half,gdas' if self.cdump in ['enkfgdas'] else self.cdump.replace('enkf', '') resources = self.get_resource('earc') task = create_wf_task('earc', resources, cdump=self.cdump, envar=earcenvars, dependency=dependencies, @@ -1352,7 +1352,7 @@ def create_wf_task(task_name, resources, 'varval': f'{varval}', 'vardict': vardict} - cycledefstr = cdump if cycledef is None else cycledef + cycledefstr = cdump.replace('enkf','') if cycledef is None else cycledef task_dict = {'taskname': f'{tasknamestr}', 'cycledef': f'{cycledefstr}',