From 1b5827c78e3238e4061b16a0a34eb387243dfe18 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Fri, 10 Jun 2022 18:56:01 -0400 Subject: [PATCH 01/24] Improve to run fcst (atm only) On branch feature/gefs_v13_822_add_atm_fcst modified: jobs/rocoto/fcst.sh modified: ush/forecast_det.sh modified: ush/forecast_postdet.sh modified: ush/forecast_predet.sh Refs: #822 --- jobs/rocoto/fcst.sh | 4 +++- ush/forecast_det.sh | 1 + ush/forecast_postdet.sh | 19 +++++++++++++++++++ ush/forecast_predet.sh | 36 +++++++++++++++++++++++++++++++----- 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/jobs/rocoto/fcst.sh b/jobs/rocoto/fcst.sh index 199c89724a9..e142fcce795 100755 --- a/jobs/rocoto/fcst.sh +++ b/jobs/rocoto/fcst.sh @@ -5,7 +5,9 @@ . $HOMEgfs/ush/load_fv3gfs_modules.sh status=$? [[ $status -ne 0 ]] && exit $status - +if [[ $CDUMP == "gefs" ]]; then + export MEMBER=`echo ${RUNMEM:-"c00"}|cut -c2-3` +fi ############################################################### # Execute the JJOB $HOMEgfs/jobs/JGLOBAL_FORECAST diff --git a/ush/forecast_det.sh b/ush/forecast_det.sh index 5529ce8a834..30ec79015dc 100755 --- a/ush/forecast_det.sh +++ b/ush/forecast_det.sh @@ -66,6 +66,7 @@ FV3_GFS_det(){ FV3_GEFS_det(){ echo "SUB ${FUNCNAME[0]}: Defining variables for FV3GEFS" + FV3_GFS_det } WW3_det(){ diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 5f2f152670f..1a333a13a50 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -14,6 +14,7 @@ FV3_GEFS_postdet(){ echo SUB ${FUNCNAME[0]}: Linking input data for FV3 $RUN # soft link commands insert here + FV3_GFS_postdet } DATM_postdet(){ @@ -558,6 +559,20 @@ FV3_GFS_nml(){ echo SUB ${FUNCNAME[0]}: FV3 name lists and model configure file created } +FV3_GEFS_nml(){ + # namelist output for a certain component + echo SUB ${FUNCNAME[0]}: Creating name lists and model configure file for FV3 + if [ $machine = 'sandbox' ]; then + cd $SCRIPTDIR + echo "MAIN: !!!Sandbox mode, writing to current directory!!!" + fi + # Call child scripts in current script directory + source $SCRIPTDIR/parsing_namelists_FV3.sh + FV3_namelists + echo SUB ${FUNCNAME[0]}: FV3 name lists and model configure file created +} + + DATM_nml(){ source $SCRIPTDIR/parsing_namelists_DATM.sh DATM_namelists @@ -609,6 +624,10 @@ data_out_GFS() { echo "SUB ${FUNCNAME[0]}: Output data for FV3 copied" } +data_out_GEFS() { + data_out_GFS +} + WW3_postdet() { echo "SUB ${FUNCNAME[0]}: Linking input data for WW3" COMPONENTwave=${COMPONENTwave:-${RUN}wave} diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 2f9ed863ca7..5704bda6d8f 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -252,17 +252,35 @@ FV3_GFS_predet(){ rprefix=$rCDUMP memchar="" else - prefix=enkf$CDUMP - rprefix=enkf$rCDUMP - memchar=mem$(printf %03i $MEMBER) + if [[ $CDUMP == "gefs" ]]; then + prefix=$CDUMP + rprefix=$rCDUMP + if [ $MEMBER -eq 0 ]; then + memchar=c$(printf %02i $MEMBER) + else + memchar=p$(printf %02i $MEMBER) + fi + else + prefix=enkf$CDUMP + rprefix=enkf$rCDUMP + memchar=mem$(printf %03i $MEMBER) + fi + fi + if [[ $CDUMP == "gefs" ]]; then + memdir=$ROTDIR/${prefix}.$PDY/$cyc/$memchar/atmos + else + memdir=$ROTDIR/${prefix}.$PDY/$cyc/atmos/$memchar fi - memdir=$ROTDIR/${prefix}.$PDY/$cyc/atmos/$memchar 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=$ROTDIR/${rprefix}.$gPDY/$gcyc/atmos/$memchar + if [[ $CDUMP == "gefs" ]]; then + gmemdir=$ROTDIR/${rprefix}.$gPDY/$gcyc/$memchar/atmos + else + gmemdir=$ROTDIR/${rprefix}.$gPDY/$gcyc/atmos/$memchar + fi sCDATE=$($NDATE -3 $CDATE) if [[ "$DOIAU" = "YES" ]]; then @@ -282,6 +300,14 @@ FV3_GFS_predet(){ echo "SUB ${FUNCNAME[0]}: pre-determination variables set" } +FV3_GEFS_predet(){ + echo "SUB ${FUNCNAME[0]}: Defining variables for FV3GFS" + + FV3_GFS_predet + + echo "SUB ${FUNCNAME[0]}: pre-determination variables set" +} + WW3_predet(){ echo "SUB ${FUNCNAME[0]}: Defining variables for WW3" if [ $CDUMP = "gdas" ]; then From 9865bf9530b9d847601db5020789f8f96ce99422 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Thu, 21 Jul 2022 11:37:42 -0400 Subject: [PATCH 02/24] Improve the script to run fcst for GEFS On branch feature/gefs_v13_822_add_atm_fcst modified: jobs/JGLOBAL_FORECAST modified: jobs/rocoto/fcst.sh modified: parm/config/config.fcst modified: ush/forecast_postdet.sh modified: ush/forecast_predet.sh Refs: #822 --- jobs/JGLOBAL_FORECAST | 2 +- jobs/rocoto/fcst.sh | 3 ++ parm/config/config.fcst | 79 +++++++++++++++++++++++++++++++++++++++++ ush/forecast_postdet.sh | 2 ++ ush/forecast_predet.sh | 29 ++++++++++++++- 5 files changed, 113 insertions(+), 2 deletions(-) diff --git a/jobs/JGLOBAL_FORECAST b/jobs/JGLOBAL_FORECAST index d72a07614f9..134c7072472 100755 --- a/jobs/JGLOBAL_FORECAST +++ b/jobs/JGLOBAL_FORECAST @@ -122,7 +122,7 @@ rCDUMP=$CDUMP [[ $CDUMP = "gfs" ]] && export rCDUMP="gdas" # Forecast length for GFS forecast -if [ $CDUMP = "gfs" ]; then +if [ $CDUMP = "gfs" ] || [ $CDUMP = "gefs" ]; then export FHMAX=$FHMAX_GFS export FHOUT=$FHOUT_GFS export FHMAX_HF=$FHMAX_HF_GFS diff --git a/jobs/rocoto/fcst.sh b/jobs/rocoto/fcst.sh index e142fcce795..90402efb9f3 100755 --- a/jobs/rocoto/fcst.sh +++ b/jobs/rocoto/fcst.sh @@ -7,6 +7,9 @@ status=$? [[ $status -ne 0 ]] && exit $status if [[ $CDUMP == "gefs" ]]; then export MEMBER=`echo ${RUNMEM:-"c00"}|cut -c2-3` + if [[ $RUNMEM != "c00" ]]; then + export PREFIX_ATMINC="r" + fi fi ############################################################### # Execute the JJOB diff --git a/parm/config/config.fcst b/parm/config/config.fcst index e73c35d15da..3041906a8e8 100755 --- a/parm/config/config.fcst +++ b/parm/config/config.fcst @@ -358,6 +358,85 @@ elif [[ "$CDUMP" == "gfs" ]] ; then # GFS cycle specific parameters export io_layout="1,1" fi +elif [[ "$CDUMP" == "gefs" ]] ; then # GEFS cycle specific parameters + + if [[ $RUNMEM == "c00" ]]; then + # Write more variables to output + if [ $QUILTING = ".true." -a $OUTPUT_GRID = "gaussian_grid" ]; then + export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table" + else + export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_orig" + fi + + # Write gfs restart files to rerun fcst from any break point + export restart_interval_gfs=${restart_interval_gfs:-0} + if [ $restart_interval_gfs -le 0 ]; then + export restart_interval="$FHMAX_GFS" + else + rst_list="" + IAU_OFFSET=${IAU_OFFSET:-0} + [[ $DOIAU = "NO" ]] && export IAU_OFFSET=0 + xfh=$((restart_interval_gfs+(IAU_OFFSET/2))) + while [ $xfh -le $FHMAX_GFS ]; do + rst_list="$rst_list $xfh" + xfh=$((xfh+restart_interval_gfs)) + done + export restart_interval="$rst_list" + fi + + if [ $DO_AERO = "YES" ]; then + # Make sure a restart file is written at the cadence time + if [[ ! "${restart_interval[*]}" =~ "$STEP_GFS" ]]; then + export restart_interval="$STEP_GFS $restart_interval" + fi + fi + + # Choose coupling with wave + if [ $DO_WAVE = "YES" -a "$WAVE_CDUMP" != "gdas" ]; then + export cplwav=".true." + fi + + # Turn off dry mass adjustment in GFS + export adjust_dry_mass=".false." + + # Write each restart file in 16 small files to save time + if [ $CASE = C768 ]; then + export io_layout="4,4" + else + export io_layout="1,1" + fi + + else + # Variables used in DA cycling + if [ $QUILTING = ".true." -a $OUTPUT_GRID = "gaussian_grid" ]; then + export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_da" + else + export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_da_orig" + fi + + # Write restart files, where $number is current model start time. + # restart_interval: $number + # number=0, writes out restart files at the end of forecast. + # number>0, writes out restart files at the frequency of $number and at the end of forecast. + # restart_interval: "$number -1" + # writes out restart files only once at $number forecast hour. + # restart_interval: "$number1 $number2 $number3 ..." + # writes out restart file at the specified forecast hours + export restart_interval=${restart_interval:-6} + + # For IAU, write restarts at beginning of window also + if [ $DOIAU = "YES" ]; then + export restart_interval="3 6" + fi + + # Choose coupling with wave + if [ $DO_WAVE = "YES" ]; then export cplwav=".true." ; fi + + # Turn on dry mass adjustment in GDAS + export adjust_dry_mass=".true." + + fi + fi if [[ $DO_COUPLED = "YES" ]] ; then # coupled model diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index a67e6f4df65..85b502f453d 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -618,6 +618,8 @@ data_out_GFS() { fi elif [ $CDUMP = "gfs" ]; then $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/atmos/ + elif [ $CDUMP = "gefs" ]; then + $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/$RUNMEM/atmos/ fi fi diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 3ebd3605790..833b5c89a9f 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -127,7 +127,11 @@ FV3_GFS_predet(){ if [ $MEMBER -lt 0 ]; then NTASKS_TOT=${NTASKS_TOT:-$npe_fcst_gfs} else - NTASKS_TOT=${NTASKS_TOT:-$npe_efcs} + if [[ $CDUMP == gefs ]]; then + NTASKS_TOT=${NTASKS_TOT:-$npe_fcst_gfs} + else + NTASKS_TOT=${NTASKS_TOT:-$npe_efcs} + fi fi TYPE=${TYPE:-"nh"} # choices: nh, hydro @@ -241,6 +245,29 @@ FV3_GFS_predet(){ for file in $files; do $NLN $RSTDIR_ATM/$file $RSTDIR_ATM/${vPDY}.${vcyc}0000.$file done + elif [ $CDUMP = "gefs" -a $rst_invt1 -gt 0 ]; then + if [ $MEMBER -eq 0 ]; then + memchar=c$(printf %02i $MEMBER) + else + memchar=p$(printf %02i $MEMBER) + fi + RSTDIR_ATM=${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/${memchar}/atmos/RERUN_RESTART + if [ ! -d $RSTDIR_ATM ]; then mkdir -p $RSTDIR_ATM ; fi + $NLN $RSTDIR_ATM RESTART + # The final restart written at the end doesn't include the valid date + # Create links that keep the same name pattern for these files + VDATE=$($NDATE +$FHMAX_GFS $CDATE) + vPDY=$(echo $VDATE | cut -c1-8) + vcyc=$(echo $VDATE | cut -c9-10) + files="coupler.res fv_core.res.nc" + for tile in {1..6}; do + for base in ca_data fv_core.res fv_srf_wnd.res fv_tracer.res phy_data sfc_data; do + files="${files} ${base}.tile${tile}.nc" + done + done + for file in $files; do + $NLN $RSTDIR_ATM/$file $RSTDIR_ATM/${vPDY}.${vcyc}0000.$file + done else mkdir -p $DATA/RESTART fi From 9f57a1f3d101af742a5dda04fe68e41c733d7905 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Sun, 11 Dec 2022 16:05:18 -0500 Subject: [PATCH 03/24] Modify to run atm fcst for GEFS On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_postdet.sh modified: ush/forecast_predet.sh Refs: #822 --- ush/forecast_postdet.sh | 17 +++++++---- ush/forecast_predet.sh | 63 ++++++----------------------------------- 2 files changed, 21 insertions(+), 59 deletions(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index e0eba828e42..28aaf7e4233 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -308,8 +308,13 @@ EOF # inline post fix files if [ $WRITE_DOPOST = ".true." ]; then $NLN $PARM_POST/post_tag_gfs${LEVS} $DATA/itag - $NLN $PARM_POST/postxconfig-NT-GFS-TWO.txt $DATA/postxconfig-NT.txt - $NLN $PARM_POST/postxconfig-NT-GFS-F00-TWO.txt $DATA/postxconfig-NT_FH00.txt + if [[ $RUN == "gefs" ]]; then + $NLN $PARM_POST/postxconfig-NT-GEFS.txt $DATA/postxconfig-NT.txt + $NLN $PARM_POST/postxconfig-NT-GEFS-F00.txt $DATA/postxconfig-NT_FH00.txt + else + $NLN $PARM_POST/postxconfig-NT-GFS-TWO.txt $DATA/postxconfig-NT.txt + $NLN $PARM_POST/postxconfig-NT-GFS-F00-TWO.txt $DATA/postxconfig-NT_FH00.txt + fi $NLN $PARM_POST/params_grib2_tbl_new $DATA/params_grib2_tbl_new fi @@ -615,9 +620,11 @@ data_out_GFS() { done fi elif [ $CDUMP = "gfs" ]; then - $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/atmos/ - elif [ $CDUMP = "gefs" ]; then - $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/$RUNMEM/atmos/ + if [ $RUN = "gefs" ]; then + $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/$RUNMEM/atmos/ + else + $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/atmos/ + fi fi fi diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 13524119bf5..3ea97929025 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -125,11 +125,7 @@ FV3_GFS_predet(){ if [ $MEMBER -lt 0 ]; then NTASKS_TOT=${NTASKS_TOT:-${npe_fcst_gfs:-0}} else - if [[ $CDUMP == gefs ]]; then - NTASKS_TOT=${NTASKS_TOT:-${npe_fcst_gfs:-0}} - else - NTASKS_TOT=${NTASKS_TOT:-${npe_efcs:-0}} - fi + NTASKS_TOT=${NTASKS_TOT:-${npe_efcs:-0}} fi TYPE=${TYPE:-"nh"} # choices: nh, hydro @@ -212,31 +208,8 @@ FV3_GFS_predet(){ print_freq=${print_freq:-6} #------------------------------------------------------- - if [ $CDUMP = "gfs" ] && [ $rst_invt1 -gt 0 ] && [ $MEMBER -lt 0 ]; then - RSTDIR_ATM=${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos/RERUN_RESTART - if [ ! -d $RSTDIR_ATM ]; then mkdir -p $RSTDIR_ATM ; fi - $NLN $RSTDIR_ATM RESTART - # The final restart written at the end doesn't include the valid date - # Create links that keep the same name pattern for these files - VDATE=$($NDATE +$FHMAX_GFS $CDATE) - vPDY=$(echo $VDATE | cut -c1-8) - vcyc=$(echo $VDATE | cut -c9-10) - files="coupler.res fv_core.res.nc" - for tile in {1..6}; do - for base in ca_data fv_core.res fv_srf_wnd.res fv_tracer.res phy_data sfc_data; do - files="${files} ${base}.tile${tile}.nc" - done - done - for file in $files; do - $NLN $RSTDIR_ATM/$file $RSTDIR_ATM/${vPDY}.${vcyc}0000.$file - done - elif [ $CDUMP = "gefs" -a $rst_invt1 -gt 0 ]; then - if [ $MEMBER -eq 0 ]; then - memchar=c$(printf %02i $MEMBER) - else - memchar=p$(printf %02i $MEMBER) - fi - RSTDIR_ATM=${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/${memchar}/atmos/RERUN_RESTART + if [ $CDUMP = "gfs" || $RUN = "gefs" ] && [ $rst_invt1 -gt 0 ] && [ $MEMBER -lt 0 ]; then + RSTDIR_ATM=${RSTDIR_ATM:-${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos/RERUN_RESTART} if [ ! -d $RSTDIR_ATM ]; then mkdir -p $RSTDIR_ATM ; fi $NLN $RSTDIR_ATM RESTART # The final restart written at the end doesn't include the valid date @@ -259,40 +232,22 @@ FV3_GFS_predet(){ #------------------------------------------------------- # member directory - if [ $MEMBER -lt 0 ]; then + if [ $MEMBER -lt 0 || $RUN = "gefs" ]; then prefix=$CDUMP rprefix=$rCDUMP memchar="" else - if [[ $CDUMP == "gefs" ]]; then - prefix=$CDUMP - rprefix=$rCDUMP - if [ $MEMBER -eq 0 ]; then - memchar=c$(printf %02i $MEMBER) - else - memchar=p$(printf %02i $MEMBER) - fi - else - prefix=enkf$CDUMP - rprefix=enkf$rCDUMP - memchar=mem$(printf %03i $MEMBER) - fi - fi - if [[ $CDUMP == "gefs" ]]; then - memdir=$ROTDIR/${prefix}.$PDY/$cyc/$memchar/atmos - else - memdir=$ROTDIR/${prefix}.$PDY/$cyc/atmos/$memchar + prefix=enkf$CDUMP + rprefix=enkf$rCDUMP + memchar=mem$(printf %03i $MEMBER) fi + memdir=${memdir:-$ROTDIR/${prefix}.$PDY/$cyc/atmos/$memchar} 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) - if [[ $CDUMP == "gefs" ]]; then - gmemdir=$ROTDIR/${rprefix}.$gPDY/$gcyc/$memchar/atmos - else - gmemdir=$ROTDIR/${rprefix}.$gPDY/$gcyc/atmos/$memchar - fi + gmemdir=${gmemdir:-$ROTDIR/${rprefix}.$gPDY/$gcyc/atmos/$memchar} if [[ "$DOIAU" = "YES" ]]; then sCDATE=$($NDATE -3 $CDATE) From c905b74a0f6e6e99fac6cda7a64ed85e032d1535 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Sun, 11 Dec 2022 23:27:30 -0500 Subject: [PATCH 04/24] Fix bugs for condition statements On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_predet.sh Refs: #822 --- ush/forecast_predet.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 3ea97929025..b6ba2dc43e8 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -208,7 +208,7 @@ FV3_GFS_predet(){ print_freq=${print_freq:-6} #------------------------------------------------------- - if [ $CDUMP = "gfs" || $RUN = "gefs" ] && [ $rst_invt1 -gt 0 ] && [ $MEMBER -lt 0 ]; then + if [[ $CDUMP = "gfs" || $RUN = "gefs" ]] && [ $rst_invt1 -gt 0 ] && [ $MEMBER -lt 0 ]; then RSTDIR_ATM=${RSTDIR_ATM:-${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos/RERUN_RESTART} if [ ! -d $RSTDIR_ATM ]; then mkdir -p $RSTDIR_ATM ; fi $NLN $RSTDIR_ATM RESTART @@ -232,7 +232,7 @@ FV3_GFS_predet(){ #------------------------------------------------------- # member directory - if [ $MEMBER -lt 0 || $RUN = "gefs" ]; then + if [[ $MEMBER -lt 0 || $RUN = "gefs" ]]; then prefix=$CDUMP rprefix=$rCDUMP memchar="" From af7dc51316fb2b0280c93b3541e143d1d8cbd51d Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Fri, 23 Dec 2022 14:33:14 -0500 Subject: [PATCH 05/24] Introduce FHOUT_ENKF_GFS for gfsefcs jobs and increase alltime of efcs jobs On branch feature/gefs_v13_822_add_atm_fcst modified: parm/config/config.base.emc.dyn modified: parm/config/config.resources modified: scripts/exgdas_enkf_fcst.sh Refs: #822 --- parm/config/config.base.emc.dyn | 1 + parm/config/config.resources | 2 +- scripts/exgdas_enkf_fcst.sh | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn index 5519b6a3bb4..b0ed66769e3 100755 --- a/parm/config/config.base.emc.dyn +++ b/parm/config/config.base.emc.dyn @@ -340,6 +340,7 @@ if [ $DOHYBVAR = "YES" ]; then export FHMIN_ENKF=3 export FHMAX_ENKF=9 export FHMAX_ENKF_GFS=120 + export FHOUT_ENKF_GFS=3 if [ $l4densvar = ".true." ]; then export FHOUT=1 export FHOUT_ENKF=1 diff --git a/parm/config/config.resources b/parm/config/config.resources index cbd45561aa3..3862f0a5f63 100755 --- a/parm/config/config.resources +++ b/parm/config/config.resources @@ -737,7 +737,7 @@ elif [ ${step} = "esfc" ]; then elif [ ${step} = "efcs" ]; then if [ ${CASE} = "C768" ]; then - export wtime_efcs="01:20:00" + export wtime_efcs="06:00:00" else export wtime_efcs="00:40:00" fi diff --git a/scripts/exgdas_enkf_fcst.sh b/scripts/exgdas_enkf_fcst.sh index 5b002430127..5a26d12c3da 100755 --- a/scripts/exgdas_enkf_fcst.sh +++ b/scripts/exgdas_enkf_fcst.sh @@ -108,7 +108,9 @@ export LEVS=${LEVS_ENKF:-${LEVS:-64}} # nggps_diag_nml export FHOUT=${FHOUT_ENKF:-3} - +if [[ $CDUMP == "gfs" ]]; then + export FHOUT=${FHOUT_ENKF_GFS:-${FHOUT_ENKF:${FHOUT:-3}}} +fi # model_configure export DELTIM=${DELTIM_ENKF:-${DELTIM:-225}} export FHMAX=${FHMAX_ENKF:-9} From 052ad495738b09e0c6b8868d48ed0010af2baccd Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Fri, 30 Dec 2022 11:08:47 -0500 Subject: [PATCH 06/24] Add FHOUT_ENKF_GFS to calculate epos group On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: workflow/rocoto/workflow_tasks.py Refs: #822 --- workflow/rocoto/workflow_tasks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow/rocoto/workflow_tasks.py b/workflow/rocoto/workflow_tasks.py index c31397dd264..83850e44c18 100644 --- a/workflow/rocoto/workflow_tasks.py +++ b/workflow/rocoto/workflow_tasks.py @@ -1259,9 +1259,10 @@ def epos(self): def _get_eposgroups(epos): fhmin = epos['FHMIN_ENKF'] fhmax = epos['FHMAX_ENKF'] + fhout = epos['FHOUT_ENKF'] if self.cdump == "gfs": fhmax = epos['FHMAX_ENKF_GFS'] - fhout = epos['FHOUT_ENKF'] + fhout = epos['FHOUT_ENKF_GFS'] fhrs = range(fhmin, fhmax + fhout, fhout) neposgrp = epos['NEPOSGRP'] From f0aaaf0593a7664362bd157c8f9049e9a7404103 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Fri, 30 Dec 2022 11:20:13 -0500 Subject: [PATCH 07/24] Add GEFS functions with new COM to fcst ush scripts On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_det.sh modified: ush/forecast_postdet.sh modified: ush/forecast_predet.sh Refs: #822 --- ush/forecast_det.sh | 2 +- ush/forecast_postdet.sh | 44 ++++++++++++++++++++++++++--------------- ush/forecast_predet.sh | 6 ++++++ 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/ush/forecast_det.sh b/ush/forecast_det.sh index c3a49360768..cb0cd875520 100755 --- a/ush/forecast_det.sh +++ b/ush/forecast_det.sh @@ -41,7 +41,7 @@ FV3_GFS_det(){ # determine if restart IC exists to continue from a previous forecast RERUN="NO" filecount=$(find "${RSTDIR_ATM:-/dev/null}" -type f | wc -l) - if [ ${CDUMP} = "gfs" -a ${rst_invt1} -gt 0 -a ${FHMAX} -gt ${rst_invt1} -a ${filecount} -gt 10 ]; then + if [[ ( ${CDUMP} = "gfs" || ( $RUN = "gefs" && $CDATE_RST = "" )) && ${rst_invt1} -gt 0 && ${FHMAX} -gt ${rst_invt1} && ${filecount} -gt 10 ]]; then reverse=$(echo "${restart_interval[@]} " | tac -s ' ') for xfh in ${reverse} ; do yfh=$((xfh-(IAU_OFFSET/2))) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 28aaf7e4233..1012eeb0c3f 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -525,11 +525,19 @@ EOF logi=logf${FH3} pgbi=GFSPRS.GrbF${FH2} flxi=GFSFLX.GrbF${FH2} - atmo=$memdir/${CDUMP}.t${cyc}z.atmf${FH3}.$affix - sfco=$memdir/${CDUMP}.t${cyc}z.sfcf${FH3}.$affix - logo=$memdir/${CDUMP}.t${cyc}z.logf${FH3}.txt - pgbo=$memdir/${CDUMP}.t${cyc}z.master.grb2f${FH3} - flxo=$memdir/${CDUMP}.t${cyc}z.sfluxgrbf${FH3}.grib2 + if [[ $RUN == "gefs" ]]; then + atmo=$memdir/history/${CDUMP}.t${cyc}z.atmf${FH3}.$affix + sfco=$memdir/history/${CDUMP}.t${cyc}z.sfcf${FH3}.$affix + logo=$memdir/history/${CDUMP}.t${cyc}z.logf${FH3}.txt + pgbo=$memdir/master/${CDUMP}.t${cyc}z.master.grb2f${FH3} + flxo=$memdir/master/${CDUMP}.t${cyc}z.sfluxgrbf${FH3}.grib2 + else + atmo=$memdir/${CDUMP}.t${cyc}z.atmf${FH3}.$affix + sfco=$memdir/${CDUMP}.t${cyc}z.sfcf${FH3}.$affix + logo=$memdir/${CDUMP}.t${cyc}z.logf${FH3}.txt + pgbo=$memdir/${CDUMP}.t${cyc}z.master.grb2f${FH3} + flxo=$memdir/${CDUMP}.t${cyc}z.sfluxgrbf${FH3}.grib2 + fi eval $NLN $atmo $atmi eval $NLN $sfco $sfci eval $NLN $logo $logi @@ -540,11 +548,19 @@ EOF done else for n in $(seq 1 $ntiles); do - eval $NLN nggps2d.tile${n}.nc $memdir/nggps2d.tile${n}.nc - eval $NLN nggps3d.tile${n}.nc $memdir/nggps3d.tile${n}.nc - eval $NLN grid_spec.tile${n}.nc $memdir/grid_spec.tile${n}.nc - eval $NLN atmos_static.tile${n}.nc $memdir/atmos_static.tile${n}.nc - eval $NLN atmos_4xdaily.tile${n}.nc $memdir/atmos_4xdaily.tile${n}.nc + if [[ $RUN == "gefs" ]]; then + eval $NLN nggps2d.tile${n}.nc $memdir/history/nggps2d.tile${n}.nc + eval $NLN nggps3d.tile${n}.nc $memdir/history/nggps3d.tile${n}.nc + eval $NLN grid_spec.tile${n}.nc $memdir/history/grid_spec.tile${n}.nc + eval $NLN atmos_static.tile${n}.nc $memdir/history/atmos_static.tile${n}.nc + eval $NLN atmos_4xdaily.tile${n}.nc $memdir/history/atmos_4xdaily.tile${n}.nc + else + eval $NLN nggps2d.tile${n}.nc $memdir/nggps2d.tile${n}.nc + eval $NLN nggps3d.tile${n}.nc $memdir/nggps3d.tile${n}.nc + eval $NLN grid_spec.tile${n}.nc $memdir/grid_spec.tile${n}.nc + eval $NLN atmos_static.tile${n}.nc $memdir/atmos_static.tile${n}.nc + eval $NLN atmos_4xdaily.tile${n}.nc $memdir/atmos_4xdaily.tile${n}.nc + fi done fi } @@ -619,12 +635,8 @@ data_out_GFS() { $NCP $file $memdir/RESTART/$file done fi - elif [ $CDUMP = "gfs" ]; then - if [ $RUN = "gefs" ]; then - $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/$RUNMEM/atmos/ - else - $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/atmos/ - fi + elif [ $CDUMP = "gfs" ] || [ ${RUN} = "gefs" ]; then + $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/${RUNMEM:-""}/atmos/ fi fi diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index b6ba2dc43e8..38a490d14f6 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -243,6 +243,12 @@ FV3_GFS_predet(){ fi memdir=${memdir:-$ROTDIR/${prefix}.$PDY/$cyc/atmos/$memchar} if [ ! -d $memdir ]; then mkdir -p $memdir; fi + if [[ $RUN == "gefs" ]]; then + if [ ! -d ${memdir}/history ]; then mkdir -p ${memdir}/history; fi + if [ $WRITE_DOPOST = ".true." ]; then + if [ ! -d ${memdir}/master ]; then mkdir -p ${memdir}/master; fi + fi + fi GDATE=$($NDATE -$assim_freq $CDATE) gPDY=$(echo $GDATE | cut -c1-8) From a56b707cc7888333115846f2b3d44addde4b9e8b Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Mon, 2 Jan 2023 00:30:32 -0500 Subject: [PATCH 08/24] Remove unused statements for gefs On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: parm/config/config.fcst Refs: #822 --- parm/config/config.fcst | 79 ----------------------------------------- 1 file changed, 79 deletions(-) diff --git a/parm/config/config.fcst b/parm/config/config.fcst index e23dd059de9..6a57a804a5a 100755 --- a/parm/config/config.fcst +++ b/parm/config/config.fcst @@ -357,85 +357,6 @@ elif [[ "$CDUMP" == "gfs" ]] ; then # GFS cycle specific parameters export io_layout="1,1" fi -elif [[ "$CDUMP" == "gefs" ]] ; then # GEFS cycle specific parameters - - if [[ $RUNMEM == "c00" ]]; then - # Write more variables to output - if [ $QUILTING = ".true." -a $OUTPUT_GRID = "gaussian_grid" ]; then - export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table" - else - export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_orig" - fi - - # Write gfs restart files to rerun fcst from any break point - export restart_interval_gfs=${restart_interval_gfs:-0} - if [ $restart_interval_gfs -le 0 ]; then - export restart_interval="$FHMAX_GFS" - else - rst_list="" - IAU_OFFSET=${IAU_OFFSET:-0} - [[ $DOIAU = "NO" ]] && export IAU_OFFSET=0 - xfh=$((restart_interval_gfs+(IAU_OFFSET/2))) - while [ $xfh -le $FHMAX_GFS ]; do - rst_list="$rst_list $xfh" - xfh=$((xfh+restart_interval_gfs)) - done - export restart_interval="$rst_list" - fi - - if [ $DO_AERO = "YES" ]; then - # Make sure a restart file is written at the cadence time - if [[ ! "${restart_interval[*]}" =~ "$STEP_GFS" ]]; then - export restart_interval="$STEP_GFS $restart_interval" - fi - fi - - # Choose coupling with wave - if [ $DO_WAVE = "YES" -a "$WAVE_CDUMP" != "gdas" ]; then - export cplwav=".true." - fi - - # Turn off dry mass adjustment in GFS - export adjust_dry_mass=".false." - - # Write each restart file in 16 small files to save time - if [ $CASE = C768 ]; then - export io_layout="4,4" - else - export io_layout="1,1" - fi - - else - # Variables used in DA cycling - if [ $QUILTING = ".true." -a $OUTPUT_GRID = "gaussian_grid" ]; then - export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_da" - else - export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_da_orig" - fi - - # Write restart files, where $number is current model start time. - # restart_interval: $number - # number=0, writes out restart files at the end of forecast. - # number>0, writes out restart files at the frequency of $number and at the end of forecast. - # restart_interval: "$number -1" - # writes out restart files only once at $number forecast hour. - # restart_interval: "$number1 $number2 $number3 ..." - # writes out restart file at the specified forecast hours - export restart_interval=${restart_interval:-6} - - # For IAU, write restarts at beginning of window also - if [ $DOIAU = "YES" ]; then - export restart_interval="3 6" - fi - - # Choose coupling with wave - if [ $DO_WAVE = "YES" ]; then export cplwav=".true." ; fi - - # Turn on dry mass adjustment in GDAS - export adjust_dry_mass=".true." - - fi - fi if [[ "$DO_COUPLED" = "YES" ]] ; then # coupled model From 61f44aaff68dd6914c32ba237f73c8f29aaa9bb4 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Mon, 2 Jan 2023 00:36:17 -0500 Subject: [PATCH 09/24] Add FLTFILEGFS[F00] & POSTGRB2TBL to pass values from external packages such as GEFS On branch feature/gefs_v13_822_add_atm_fcst modified: ush/forecast_postdet.sh Refs: #822 --- ush/forecast_postdet.sh | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 1012eeb0c3f..2782ce2fefd 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -308,14 +308,9 @@ EOF # inline post fix files if [ $WRITE_DOPOST = ".true." ]; then $NLN $PARM_POST/post_tag_gfs${LEVS} $DATA/itag - if [[ $RUN == "gefs" ]]; then - $NLN $PARM_POST/postxconfig-NT-GEFS.txt $DATA/postxconfig-NT.txt - $NLN $PARM_POST/postxconfig-NT-GEFS-F00.txt $DATA/postxconfig-NT_FH00.txt - else - $NLN $PARM_POST/postxconfig-NT-GFS-TWO.txt $DATA/postxconfig-NT.txt - $NLN $PARM_POST/postxconfig-NT-GFS-F00-TWO.txt $DATA/postxconfig-NT_FH00.txt - fi - $NLN $PARM_POST/params_grib2_tbl_new $DATA/params_grib2_tbl_new + $NLN ${FLTFILEGFS:-$PARM_POST/postxconfig-NT-GFS-TWO.txt} $DATA/postxconfig-NT.txt + $NLN ${FLTFILEGFSF00:-$PARM_POST/postxconfig-NT-GFS-F00-TWO.txt} $DATA/postxconfig-NT_FH00.txt + $NLN ${POSTGRB2TBL:-$PARM_POST/params_grib2_tbl_new} $DATA/params_grib2_tbl_new fi #------------------------------------------------------------------ @@ -636,7 +631,11 @@ data_out_GFS() { done fi elif [ $CDUMP = "gfs" ] || [ ${RUN} = "gefs" ]; then - $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/${RUNMEM:-""}/atmos/ + if [ ${RUN} = "gefs" ]; then + $NCP $DATA/input.nml ${ROTDIR}/${RUN}.${PDY}/$cyc/${mem}/atmos/history/ + else + $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/atmos/ + fi fi fi From 4ef0d93267a71fdda2c6dd85a1d78c89c2657f51 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Wed, 4 Jan 2023 14:09:46 -0500 Subject: [PATCH 10/24] Add braces around variables to fix the lint warning On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: \ modified: ush/forecast_det.sh Refs: #822 --- ush/forecast_det.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/forecast_det.sh b/ush/forecast_det.sh index cb0cd875520..1337413030f 100755 --- a/ush/forecast_det.sh +++ b/ush/forecast_det.sh @@ -41,7 +41,7 @@ FV3_GFS_det(){ # determine if restart IC exists to continue from a previous forecast RERUN="NO" filecount=$(find "${RSTDIR_ATM:-/dev/null}" -type f | wc -l) - if [[ ( ${CDUMP} = "gfs" || ( $RUN = "gefs" && $CDATE_RST = "" )) && ${rst_invt1} -gt 0 && ${FHMAX} -gt ${rst_invt1} && ${filecount} -gt 10 ]]; then + if [[ ( ${CDUMP} = "gfs" || ( ${RUN} = "gefs" && ${CDATE_RST} = "" )) && ${rst_invt1} -gt 0 && ${FHMAX} -gt ${rst_invt1} && ${filecount} -gt 10 ]]; then reverse=$(echo "${restart_interval[@]} " | tac -s ' ') for xfh in ${reverse} ; do yfh=$((xfh-(IAU_OFFSET/2))) From bf053c167a8ef3ecafc7705198495022206ed307 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Wed, 4 Jan 2023 14:44:40 -0500 Subject: [PATCH 11/24] Remove FV3_GEFS_nml and use FV3_GFS_nml for GEFS On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: scripts/exglobal_forecast.sh modified: ush/forecast_postdet.sh Refs: #822 --- scripts/exglobal_forecast.sh | 2 +- ush/forecast_postdet.sh | 14 -------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index 3f2ad87cafd..65e2cc50f5e 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -161,7 +161,7 @@ case $RUN in 'data') DATM_nml;; 'gfs') FV3_GFS_nml;; 'gdas') FV3_GFS_nml;; - 'gefs') FV3_GEFS_nml;; + 'gefs') FV3_GFS_nml;; esac #no namelist for data atmosphere [[ $cplflx = .true. ]] && MOM6_nml [[ $cplwav = .true. ]] && WW3_nml diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 2782ce2fefd..332397db27b 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -573,20 +573,6 @@ FV3_GFS_nml(){ echo SUB ${FUNCNAME[0]}: FV3 name lists and model configure file created } -FV3_GEFS_nml(){ - # namelist output for a certain component - echo SUB ${FUNCNAME[0]}: Creating name lists and model configure file for FV3 - if [ $machine = 'sandbox' ]; then - cd $SCRIPTDIR - echo "MAIN: !!!Sandbox mode, writing to current directory!!!" - fi - # Call child scripts in current script directory - source $SCRIPTDIR/parsing_namelists_FV3.sh - FV3_namelists - echo SUB ${FUNCNAME[0]}: FV3 name lists and model configure file created -} - - DATM_nml(){ source $SCRIPTDIR/parsing_namelists_DATM.sh DATM_namelists From 4346c8c53ee99f76143e5db6b1b947e5e7cea25b Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Wed, 4 Jan 2023 15:35:55 -0500 Subject: [PATCH 12/24] Remove the new COM dirs On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_postdet.sh Refs: #822 --- ush/forecast_postdet.sh | 42 +++++++++++------------------------------ 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 332397db27b..9c0f3b8ee82 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -520,19 +520,11 @@ EOF logi=logf${FH3} pgbi=GFSPRS.GrbF${FH2} flxi=GFSFLX.GrbF${FH2} - if [[ $RUN == "gefs" ]]; then - atmo=$memdir/history/${CDUMP}.t${cyc}z.atmf${FH3}.$affix - sfco=$memdir/history/${CDUMP}.t${cyc}z.sfcf${FH3}.$affix - logo=$memdir/history/${CDUMP}.t${cyc}z.logf${FH3}.txt - pgbo=$memdir/master/${CDUMP}.t${cyc}z.master.grb2f${FH3} - flxo=$memdir/master/${CDUMP}.t${cyc}z.sfluxgrbf${FH3}.grib2 - else - atmo=$memdir/${CDUMP}.t${cyc}z.atmf${FH3}.$affix - sfco=$memdir/${CDUMP}.t${cyc}z.sfcf${FH3}.$affix - logo=$memdir/${CDUMP}.t${cyc}z.logf${FH3}.txt - pgbo=$memdir/${CDUMP}.t${cyc}z.master.grb2f${FH3} - flxo=$memdir/${CDUMP}.t${cyc}z.sfluxgrbf${FH3}.grib2 - fi + atmo=$memdir/${CDUMP}.t${cyc}z.atmf${FH3}.$affix + sfco=$memdir/${CDUMP}.t${cyc}z.sfcf${FH3}.$affix + logo=$memdir/${CDUMP}.t${cyc}z.logf${FH3}.txt + pgbo=$memdir/${CDUMP}.t${cyc}z.master.grb2f${FH3} + flxo=$memdir/${CDUMP}.t${cyc}z.sfluxgrbf${FH3}.grib2 eval $NLN $atmo $atmi eval $NLN $sfco $sfci eval $NLN $logo $logi @@ -543,19 +535,11 @@ EOF done else for n in $(seq 1 $ntiles); do - if [[ $RUN == "gefs" ]]; then - eval $NLN nggps2d.tile${n}.nc $memdir/history/nggps2d.tile${n}.nc - eval $NLN nggps3d.tile${n}.nc $memdir/history/nggps3d.tile${n}.nc - eval $NLN grid_spec.tile${n}.nc $memdir/history/grid_spec.tile${n}.nc - eval $NLN atmos_static.tile${n}.nc $memdir/history/atmos_static.tile${n}.nc - eval $NLN atmos_4xdaily.tile${n}.nc $memdir/history/atmos_4xdaily.tile${n}.nc - else - eval $NLN nggps2d.tile${n}.nc $memdir/nggps2d.tile${n}.nc - eval $NLN nggps3d.tile${n}.nc $memdir/nggps3d.tile${n}.nc - eval $NLN grid_spec.tile${n}.nc $memdir/grid_spec.tile${n}.nc - eval $NLN atmos_static.tile${n}.nc $memdir/atmos_static.tile${n}.nc - eval $NLN atmos_4xdaily.tile${n}.nc $memdir/atmos_4xdaily.tile${n}.nc - fi + eval $NLN nggps2d.tile${n}.nc $memdir/nggps2d.tile${n}.nc + eval $NLN nggps3d.tile${n}.nc $memdir/nggps3d.tile${n}.nc + eval $NLN grid_spec.tile${n}.nc $memdir/grid_spec.tile${n}.nc + eval $NLN atmos_static.tile${n}.nc $memdir/atmos_static.tile${n}.nc + eval $NLN atmos_4xdaily.tile${n}.nc $memdir/atmos_4xdaily.tile${n}.nc done fi } @@ -617,11 +601,7 @@ data_out_GFS() { done fi elif [ $CDUMP = "gfs" ] || [ ${RUN} = "gefs" ]; then - if [ ${RUN} = "gefs" ]; then - $NCP $DATA/input.nml ${ROTDIR}/${RUN}.${PDY}/$cyc/${mem}/atmos/history/ - else - $NCP $DATA/input.nml $ROTDIR/${CDUMP}.${PDY}/${cyc}/atmos/ - fi + $NCP $DATA/input.nml ${ROTDIR}/${RUN}.${PDY}/$cyc/${mem:-""}/atmos/ fi fi From e1f83055bfaac325907c587108f0a61aabb32275 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Wed, 4 Jan 2023 17:15:22 -0500 Subject: [PATCH 13/24] Correct a typo On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_predet.sh Refs: #822 --- ush/forecast_predet.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 38a490d14f6..e9132fa7a8c 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -273,7 +273,7 @@ FV3_GFS_predet(){ } FV3_GEFS_predet(){ - echo "SUB ${FUNCNAME[0]}: Defining variables for FV3GFS" + echo "SUB ${FUNCNAME[0]}: Defining variables for FV3GEFS" FV3_GFS_predet From ec701f5363ac823af3d6d079d5bce51b6048561a Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Wed, 4 Jan 2023 17:19:05 -0500 Subject: [PATCH 14/24] Delete the unused statements On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_predet.sh Refs: #822 --- ush/forecast_predet.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index e9132fa7a8c..fc105f456ea 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -243,12 +243,6 @@ FV3_GFS_predet(){ fi memdir=${memdir:-$ROTDIR/${prefix}.$PDY/$cyc/atmos/$memchar} if [ ! -d $memdir ]; then mkdir -p $memdir; fi - if [[ $RUN == "gefs" ]]; then - if [ ! -d ${memdir}/history ]; then mkdir -p ${memdir}/history; fi - if [ $WRITE_DOPOST = ".true." ]; then - if [ ! -d ${memdir}/master ]; then mkdir -p ${memdir}/master; fi - fi - fi GDATE=$($NDATE -$assim_freq $CDATE) gPDY=$(echo $GDATE | cut -c1-8) From 4299561fc2cebeaa519057befea5a00bf6d0661d Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Fri, 6 Jan 2023 23:16:48 -0500 Subject: [PATCH 15/24] Modify to save RESTART files for both gfs and gefs On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_predet.sh Refs: #822 --- ush/forecast_predet.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index fc105f456ea..2d5f1050726 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -208,7 +208,7 @@ FV3_GFS_predet(){ print_freq=${print_freq:-6} #------------------------------------------------------- - if [[ $CDUMP = "gfs" || $RUN = "gefs" ]] && [ $rst_invt1 -gt 0 ] && [ $MEMBER -lt 0 ]; then + if [[ $CDUMP = "gfs" || $RUN = "gefs" ]] && [ $rst_invt1 -gt 0 ]; then RSTDIR_ATM=${RSTDIR_ATM:-${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos/RERUN_RESTART} if [ ! -d $RSTDIR_ATM ]; then mkdir -p $RSTDIR_ATM ; fi $NLN $RSTDIR_ATM RESTART From fd325acba7c9075be88ce88536d1a2170e62388e Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Wed, 11 Jan 2023 10:46:37 -0500 Subject: [PATCH 16/24] Make RERUN receive value from out of the script This is mostly for GEFS forecast_d16_35 job On branch feature/gefs_v13_822_add_atm_fcst modified: ush/forecast_det.sh Refs: #822 --- ush/forecast_det.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/forecast_det.sh b/ush/forecast_det.sh index 1337413030f..257f0e13ff9 100755 --- a/ush/forecast_det.sh +++ b/ush/forecast_det.sh @@ -39,7 +39,7 @@ FV3_GFS_det(){ #------------------------------------------------------- # determine if restart IC exists to continue from a previous forecast - RERUN="NO" + RERUN=${RERUN:-"NO"} filecount=$(find "${RSTDIR_ATM:-/dev/null}" -type f | wc -l) if [[ ( ${CDUMP} = "gfs" || ( ${RUN} = "gefs" && ${CDATE_RST} = "" )) && ${rst_invt1} -gt 0 && ${FHMAX} -gt ${rst_invt1} && ${filecount} -gt 10 ]]; then reverse=$(echo "${restart_interval[@]} " | tac -s ' ') From 33b4d90f76835309dba5f865c37a8ff13b8ef798 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Thu, 12 Jan 2023 12:56:40 -0500 Subject: [PATCH 17/24] Delete the GEFS functions to reuse GFS functions On branch feature/gefs_v13_822_add_atm_fcst modified: scripts/exglobal_forecast.sh modified: ush/forecast_det.sh modified: ush/forecast_postdet.sh modified: ush/forecast_predet.sh Refs: #822 --- scripts/exglobal_forecast.sh | 8 ++++---- ush/forecast_det.sh | 5 ----- ush/forecast_postdet.sh | 9 --------- ush/forecast_predet.sh | 8 -------- 4 files changed, 4 insertions(+), 26 deletions(-) diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index 65e2cc50f5e..87c96833a56 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -125,7 +125,7 @@ case $RUN in 'data') DATM_predet;; 'gfs') FV3_GFS_predet;; 'gdas') FV3_GFS_predet;; - 'gefs') FV3_GEFS_predet;; + 'gefs') FV3_GFS_predet;; esac [[ $cplflx = .true. ]] && MOM6_predet [[ $cplwav = .true. ]] && WW3_predet @@ -134,7 +134,7 @@ esac case $RUN in 'gfs') FV3_GFS_det;; 'gdas') FV3_GFS_det;; - 'gefs') FV3_GEFS_det;; + 'gefs') FV3_GFS_det;; esac #no run type determination for data atmosphere [[ $cplflx = .true. ]] && MOM6_det [[ $cplwav = .true. ]] && WW3_det @@ -148,7 +148,7 @@ case $RUN in 'data') DATM_postdet;; 'gfs') FV3_GFS_postdet;; 'gdas') FV3_GFS_postdet;; - 'gefs') FV3_GEFS_postdet;; + 'gefs') FV3_GFS_postdet;; esac #no post determination set up for data atmosphere [[ $cplflx = .true. ]] && MOM6_postdet [[ $cplwav = .true. ]] && WW3_postdet @@ -204,7 +204,7 @@ if [ $machine != 'sandbox' ]; then 'data') data_out_Data_ATM;; 'gfs') data_out_GFS;; 'gdas') data_out_GFS;; - 'gefs') data_out_GEFS;; + 'gefs') data_out_GFS;; esac [[ $cplflx = .true. ]] && MOM6_out [[ $cplwav = .true. ]] && WW3_out diff --git a/ush/forecast_det.sh b/ush/forecast_det.sh index 257f0e13ff9..575f35696ab 100755 --- a/ush/forecast_det.sh +++ b/ush/forecast_det.sh @@ -74,11 +74,6 @@ FV3_GFS_det(){ #------------------------------------------------------- } -FV3_GEFS_det(){ - echo "SUB ${FUNCNAME[0]}: Defining variables for FV3GEFS" - FV3_GFS_det -} - WW3_det(){ echo "SUB ${FUNCNAME[0]}: Run type determination for WW3" } diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 9c0f3b8ee82..1be06620228 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -11,12 +11,6 @@ ## for execution. ##### -FV3_GEFS_postdet(){ - echo SUB ${FUNCNAME[0]}: Linking input data for FV3 $RUN - # soft link commands insert here - FV3_GFS_postdet -} - DATM_postdet(){ ###################################################################### # Link DATM inputs (ie forcing files) # @@ -608,9 +602,6 @@ data_out_GFS() { echo "SUB ${FUNCNAME[0]}: Output data for FV3 copied" } -data_out_GEFS() { - data_out_GFS -} WW3_postdet() { echo "SUB ${FUNCNAME[0]}: Linking input data for WW3" diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index c2c0f019bf2..e46b9fac92b 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -266,14 +266,6 @@ FV3_GFS_predet(){ echo "SUB ${FUNCNAME[0]}: pre-determination variables set" } -FV3_GEFS_predet(){ - echo "SUB ${FUNCNAME[0]}: Defining variables for FV3GEFS" - - FV3_GFS_predet - - echo "SUB ${FUNCNAME[0]}: pre-determination variables set" -} - WW3_predet(){ echo "SUB ${FUNCNAME[0]}: Defining variables for WW3" if [ $CDUMP = "gdas" ]; then From 119e5b7aca00302bfe578cbeec390475d14051d7 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Tue, 17 Jan 2023 17:55:47 -0500 Subject: [PATCH 18/24] Add { } to variables On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: scripts/exgdas_enkf_fcst.sh modified: ush/forecast_predet.sh Refs: #822 --- scripts/exgdas_enkf_fcst.sh | 2 +- ush/forecast_predet.sh | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/exgdas_enkf_fcst.sh b/scripts/exgdas_enkf_fcst.sh index cd21704ca99..32221f96ec1 100755 --- a/scripts/exgdas_enkf_fcst.sh +++ b/scripts/exgdas_enkf_fcst.sh @@ -108,7 +108,7 @@ export LEVS=${LEVS_ENKF:-${LEVS:-64}} # nggps_diag_nml export FHOUT=${FHOUT_ENKF:-3} -if [[ $CDUMP == "gfs" ]]; then +if [[ ${CDUMP} == "gfs" ]]; then export FHOUT=${FHOUT_ENKF_GFS:-${FHOUT_ENKF:${FHOUT:-3}}} fi # model_configure diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index e46b9fac92b..536c33cb378 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -208,7 +208,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:-${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos/RERUN_RESTART} if [ ! -d $RSTDIR_ATM ]; then mkdir -p $RSTDIR_ATM ; fi $NLN $RSTDIR_ATM RESTART @@ -232,7 +232,7 @@ FV3_GFS_predet(){ #------------------------------------------------------- # member directory - if [[ $MEMBER -lt 0 || $RUN = "gefs" ]]; then + if [[ ${MEMBER} -lt 0 || ${RUN} = "gefs" ]]; then prefix=$CDUMP rprefix=$rCDUMP memchar="" @@ -241,13 +241,13 @@ FV3_GFS_predet(){ rprefix=enkf$rCDUMP memchar=mem$(printf %03i $MEMBER) fi - memdir=${memdir:-$ROTDIR/${prefix}.$PDY/$cyc/$memchar/atmos} + memdir=${memdir:-${ROTDIR}/${prefix}.${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}/${rprefix}.${gPDY}/${gcyc}/${memchar}/atmos} if [[ "$DOIAU" = "YES" ]]; then sCDATE=$($NDATE -3 $CDATE) From 5c95d7ab913f4f95c55b1740c478d4f0c18ac89b Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Thu, 19 Jan 2023 12:09:13 -0500 Subject: [PATCH 19/24] Remove unused RSTDIR On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_predet.sh Refs: #822 --- ush/forecast_predet.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 536c33cb378..6e5c317a689 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -209,7 +209,7 @@ FV3_GFS_predet(){ #------------------------------------------------------- if [[ ${CDUMP} = "gfs" || ${RUN} = "gefs" ]] && [ ${rst_invt1} -gt 0 ]; then - RSTDIR_ATM=${RSTDIR_ATM:-${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos/RERUN_RESTART} + 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 # The final restart written at the end doesn't include the valid date From 1be0572989bc123ca6b9ba29c3337d01d450955d Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Sun, 22 Jan 2023 17:57:24 -0500 Subject: [PATCH 20/24] Create links for final restart written files only when FHMAX_GFS%restart_interval_gfs=0 These changes will avoid to create invalid links for the final restart writting files On branch feature/gefs_v13_822_add_atm_fcst Changes to be committed: modified: ush/forecast_predet.sh Refs: #822 --- ush/forecast_predet.sh | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 6e5c317a689..3292d29947c 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -212,20 +212,22 @@ FV3_GFS_predet(){ 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 - # The final restart written at the end doesn't include the valid date - # Create links that keep the same name pattern for these files - VDATE=$($NDATE +$FHMAX_GFS $CDATE) - vPDY=$(echo $VDATE | cut -c1-8) - vcyc=$(echo $VDATE | cut -c9-10) - files="coupler.res fv_core.res.nc" - for tile in {1..6}; do - for base in ca_data fv_core.res fv_srf_wnd.res fv_tracer.res phy_data sfc_data; do - files="${files} ${base}.tile${tile}.nc" + if [[ $(( ${FHMAX_GFS} % ${restart_interval_gfs} )) == 0 ]]; then + # The final restart written at the end doesn't include the valid date + # Create links that keep the same name pattern for these files + VDATE=$($NDATE +$FHMAX_GFS $CDATE) + vPDY=$(echo $VDATE | cut -c1-8) + vcyc=$(echo $VDATE | cut -c9-10) + files="coupler.res fv_core.res.nc" + for tile in {1..6}; do + for base in ca_data fv_core.res fv_srf_wnd.res fv_tracer.res phy_data sfc_data; do + files="${files} ${base}.tile${tile}.nc" + done done - done - for file in $files; do - $NLN $RSTDIR_ATM/$file $RSTDIR_ATM/${vPDY}.${vcyc}0000.$file - done + for file in $files; do + $NLN $RSTDIR_ATM/$file $RSTDIR_ATM/${vPDY}.${vcyc}0000.$file + done + fi else mkdir -p $DATA/RESTART fi From 7ee08e292e92a07f60058bbd1ec8a930f1c45643 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Mon, 23 Jan 2023 20:56:43 -0500 Subject: [PATCH 21/24] Change memdir/INPUT using ICSDIR to use dif ICSDIR On branch feature/gefs_v13_822_add_atm_fcst modified: ush/forecast_postdet.sh Refs: #822 --- ush/forecast_postdet.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 1be06620228..0bbbd4b4e3e 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -129,7 +129,8 @@ EOF #............................. else ## cold start - for file in $(ls $memdir/INPUT/*.nc); do + ICSDIR=${ICSDIR:-${memdir}/INPUT} # cold start initial conditions + for file in $(ls ${ICSDIR}/*.nc); do file2=$(echo $(basename $file)) fsuf=$(echo $file2 | cut -c1-3) if [ $fsuf = "gfs" -o $fsuf = "sfc" ]; then @@ -594,7 +595,7 @@ data_out_GFS() { $NCP $file $memdir/RESTART/$file done fi - elif [ $CDUMP = "gfs" ] || [ ${RUN} = "gefs" ]; then + elif [ $CDUMP = "gfs" ]; then $NCP $DATA/input.nml ${ROTDIR}/${RUN}.${PDY}/$cyc/${mem:-""}/atmos/ fi fi From b686fe7fdb415bdf4f3efd4b2a617d5c1421b4e3 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Mon, 23 Jan 2023 21:01:50 -0500 Subject: [PATCH 22/24] Remove unused function On branch feature/gefs_v13_822_add_atm_fcst modified: ush/forecast_postdet.sh Refs: #822 --- ush/forecast_postdet.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 0bbbd4b4e3e..70498fe610e 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -596,7 +596,7 @@ data_out_GFS() { done fi elif [ $CDUMP = "gfs" ]; then - $NCP $DATA/input.nml ${ROTDIR}/${RUN}.${PDY}/$cyc/${mem:-""}/atmos/ + $NCP $DATA/input.nml ${ROTDIR}/${RUN}.${PDY}/${cyc}/atmos/ fi fi From 1ac2957369e707db2b24368deaf051eb329abfb9 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Wed, 25 Jan 2023 15:22:22 -0500 Subject: [PATCH 23/24] Remove the ICSDIR in the forecast_postdef.sh On branch feature/gefs_v13_822_add_atm_fcst modified: ush/forecast_postdet.sh Refs: #822 --- ush/forecast_postdet.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index e58add682ae..824a0946ce4 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -129,8 +129,7 @@ EOF #............................. else ## cold start - ICSDIR=${ICSDIR:-${memdir}/INPUT} # cold start initial conditions - for file in $(ls ${ICSDIR}/*.nc); do + for file in $(ls ${memdir}/INPUT/*.nc); do file2=$(echo $(basename $file)) fsuf=$(echo $file2 | cut -c1-3) if [ $fsuf = "gfs" -o $fsuf = "sfc" ]; then From c6e082c70fb2359d6752c8e7ea07e70d9d0c6fb3 Mon Sep 17 00:00:00 2001 From: "Xianwu.Xue" Date: Wed, 25 Jan 2023 16:53:21 -0500 Subject: [PATCH 24/24] Optimize case statements in the script On branch feature/gefs_v13_822_add_atm_fcst modified: scripts/exglobal_forecast.sh Refs: #822 --- scripts/exglobal_forecast.sh | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index 87c96833a56..5130b6602ed 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -123,18 +123,14 @@ common_predet echo $RUN case $RUN in 'data') DATM_predet;; - 'gfs') FV3_GFS_predet;; - 'gdas') FV3_GFS_predet;; - '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') FV3_GFS_det;; - 'gdas') FV3_GFS_det;; - '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 @@ -146,9 +142,7 @@ echo "MAIN: Post-determination set up of run type" echo $RUN case $RUN in 'data') DATM_postdet;; - 'gfs') FV3_GFS_postdet;; - 'gdas') FV3_GFS_postdet;; - '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 @@ -159,9 +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') FV3_GFS_nml;; - 'gdas') FV3_GFS_nml;; - 'gefs') FV3_GFS_nml;; + 'gfs' | 'gdas' | 'gefs') FV3_GFS_nml;; esac #no namelist for data atmosphere [[ $cplflx = .true. ]] && MOM6_nml [[ $cplwav = .true. ]] && WW3_nml @@ -170,9 +162,7 @@ esac #no namelist for data atmosphere case $RUN in 'data') DATM_model_configure;; - 'gfs') FV3_model_configure;; - 'gdas') FV3_model_configure;; - 'gefs') FV3_model_configure;; + 'gfs' | 'gdas' | 'gefs') FV3_model_configure;; esac echo "MAIN: Name lists and model configuration written" @@ -202,9 +192,7 @@ fi if [ $machine != 'sandbox' ]; then case $RUN in 'data') data_out_Data_ATM;; - 'gfs') data_out_GFS;; - 'gdas') data_out_GFS;; - 'gefs') data_out_GFS;; + 'gfs' | 'gdas' | 'gefs') data_out_GFS;; esac [[ $cplflx = .true. ]] && MOM6_out [[ $cplwav = .true. ]] && WW3_out