From ab09ab17e54ddbd9c6ff78bba735a6a8e5877200 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 18 Dec 2024 23:41:02 +0000 Subject: [PATCH 01/50] Updates to: i) write out the ensemble mean reanalysis, and apply it to the deterministic member. ii) replace UFS_UTILS regridding of Gaussian soil analysis to model grid with an external ESMF-based program (with appropriate land masking) Requires: sorc/gsi_enkf.fd develop after Tue Nov 12. Latest works. sorc/gdas.cd/sorc/da-utils PR: https://github.com/NOAA-EMC/DA-utils/pull/5 sorc/ufs_utils.fd from PR: https://github.com/ufs-community/UFS_UTILS/pull/1010 --- env/HERA.env | 2 ++ jobs/JGLOBAL_ATMOS_SFCANL | 3 +++ jobs/rocoto/esfc.sh | 3 ++- jobs/rocoto/sfcanl.sh | 3 ++- scripts/exgdas_enkf_sfc.sh | 23 ++++++++++++++++++--- scripts/exgdas_enkf_update.sh | 6 ++++++ scripts/exglobal_atmos_sfcanl.sh | 34 ++++++++++++++++++++++++++++++++ 7 files changed, 69 insertions(+), 5 deletions(-) diff --git a/env/HERA.env b/env/HERA.env index f10bfcc537..a6dfee6508 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -185,6 +185,7 @@ elif [[ "${step}" = "sfcanl" ]]; then export NTHREADS_CYCLE=${threads_per_task:-14} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + export APRUN_REGR="${launcher} -n 6" elif [[ "${step}" = "eobs" ]]; then @@ -250,6 +251,7 @@ elif [[ "${step}" = "esfc" ]]; then export NTHREADS_CYCLE=${threads_per_task_cycle:-14} [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + export APRUN_REGR="${launcher} -n 6" elif [[ "${step}" = "epos" ]]; then diff --git a/jobs/JGLOBAL_ATMOS_SFCANL b/jobs/JGLOBAL_ATMOS_SFCANL index 2822b1e94b..954661bc5c 100755 --- a/jobs/JGLOBAL_ATMOS_SFCANL +++ b/jobs/JGLOBAL_ATMOS_SFCANL @@ -24,6 +24,9 @@ YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ COMOUT_ATMOS_RESTART:COM_ATMOS_RESTART_TMPL +RUN="enkfgdas" MEMDIR="ensstat" YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ + COM_ATMOS_ENKF_ANALYSIS_STAT:COM_ATMOS_ANALYSIS_TMPL + mkdir -p "${COMOUT_ATMOS_RESTART}" diff --git a/jobs/rocoto/esfc.sh b/jobs/rocoto/esfc.sh index 85f44151c9..13be45372f 100755 --- a/jobs/rocoto/esfc.sh +++ b/jobs/rocoto/esfc.sh @@ -4,7 +4,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +. ${HOMEgfs}/ush/load_ufsda_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/rocoto/sfcanl.sh b/jobs/rocoto/sfcanl.sh index 44f93ee0c3..0dfbdabfe2 100755 --- a/jobs/rocoto/sfcanl.sh +++ b/jobs/rocoto/sfcanl.sh @@ -4,7 +4,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +. ${HOMEgfs}/ush/load_ufsda_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 1944325317..6db5e8ff3c 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -65,6 +65,8 @@ export CYCLVARS=${CYCLVARS:-"FSNOL=-2.,FSNOS=99999.,"} export FHOUR=${FHOUR:-0} export DELTSFC=${DELTSFC:-6} +REGRIDSH=${REGRIDSH:-${USHgfs}/regrid_gsiSfcIncr_to_tile.sh} + APRUN_ESFC=${APRUN_ESFC:-${APRUN:-""}} NTHREADS_ESFC=${NTHREADS_ESFC:-${NTHREADS:-1}} @@ -115,6 +117,19 @@ else export NST_FILE="NULL" fi +# regrid the surface increment files +if [ $GSI_SOILANAL = "YES" ]; then + + export CASE_IN=${CASE_ENS} + export CASE_OUT=${CASE_ENS} + export OCNRES_OUT=${OCNRES} + export soilinc_fhrs="6" + export NMEM_REGRID=${NMEM_ENS} + + $REGRIDSH + +fi + export APRUNCY=${APRUN_CYCLE:-$APRUN_ESFC} export OMP_NUM_THREADS_CY=${NTHREADS_CYCLE:-$NTHREADS_ESFC} export MAX_TASKS_CY=$NMEM_ENS @@ -133,6 +148,7 @@ if [ $DOIAU = "YES" ]; then if (( smem > NMEM_ENS_MAX )); then smem=$((smem - NMEM_ENS_MAX)) fi + # CSD - what is this doing? gmemchar="mem"$(printf %03i "$smem") cmem=$(printf %03i $imem) memchar="mem$cmem" @@ -165,9 +181,10 @@ if [ $DOIAU = "YES" ]; then if [[ ${GSI_SOILANAL} = "YES" ]]; then FHR=6 - ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ - "${DATA}/lnd_incr.${cmem}" + ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ + "${DATA}/soil_xainc.${cmem}" fi + done # ensembles CDATE="${PDY}${cyc}" ${CYCLESH} @@ -196,7 +213,7 @@ if [ $DOIAU = "YES" ]; then if [[ ${GSI_SOILANAL} = "YES" ]]; then FHR=6 ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ - "${DATA}/lnd_incr.${cmem}" + "${DATA}/sfcincr_gsi.${cmem}" fi done # ensembles diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index 752cb07a6b..c2636f2d78 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -254,6 +254,12 @@ for FHR in $nfhrs; do ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "sfgsfc_${PDY}${cyc}_fhr0${FHR}_ensmean" fi + if [ $GSI_SOILANAL = "YES" ]; then + ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ + "bfg_${PDY}${cyc}_fhr0${FHR}_ensmean" + ${NLN} "${COM_ATMOS_ANALYSIS_STAT}/${APREFIX}sfci00${FHR}.nc" \ + "sfcincr_${PDY}${cyc}_fhr0${FHR}_ensmean" + fi done if [[ $USE_CFP = "YES" ]]; then diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index cbc43b0979..ef4328831b 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -28,6 +28,7 @@ cd "${DATA}" || exit 99 # Dependent Scripts and Executables CYCLESH=${CYCLESH:-${USHgfs}/global_cycle.sh} +REGRIDSH=${REGRIDSH:-${USHgfs}/regrid_gsiSfcIncr_to_tile.sh} export CYCLEXEC=${CYCLEXEC:-${EXECgfs}/global_cycle} NTHREADS_CYCLE=${NTHREADS_CYCLE:-24} APRUN_CYCLE=${APRUN_CYCLE:-${APRUN:-""}} @@ -38,6 +39,10 @@ export CYCLVARS=${CYCLVARS:-""} export FHOUR=${FHOUR:-0} export DELTSFC=${DELTSFC:-6} +# Land DA options +export GSI_SOILANAL=${GSI_SOILANAL:-"NO"} +export DO_JEDISNOWDA=${DO_JEDISNOWDA:-"NO"} + # Other info used in this script RUN_GETGES=${RUN_GETGES:-"NO"} GETGESSH=${GETGESSH:-"getges.sh"} @@ -117,13 +122,42 @@ if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of gcycle_dates+=("${BDATE}") fi +# if doing GSI soil anaysis, copy increment file and re-grid it to native model resolution +if [ $GSI_SOILANAL = "YES" ]; then + + export COM_SOIL_ANALYSIS_MEM=${COM_ATMOS_ENKF_ANALYSIS_STAT} + export COM_ATMOS_ANALYSIS_MEM=${COMIN_ATMOS_ANALYSIS} + export CASE_IN=${CASE_ENS} + export CASE_OUT=$CASE + export OCNRES_OUT=$OCNRES + # CSD-TG currently regrids every 3 hours. refine? + export soilinc_fhrs=$(echo $IAUFHRS_ENKF | sed 's/,/ /g') + + $REGRIDSH + +fi + # Loop over the dates in the window to update the surface restarts +FHR=6 for gcycle_date in "${gcycle_dates[@]}"; do echo "Updating surface restarts for ${gcycle_date} ..." datestr="${gcycle_date:0:8}.${gcycle_date:8:2}0000" + # THIS BLOCK SPECIFIC TO NON-IAU CASE + if [[ ${GSI_SOILANAL} = "YES" ]]; then + # first time uses 6 hour forecast (middle of window) + # next cycle uses 3 hour foreast (start of window) + # ??????????????? + # CSD-TG check have correct timing, then code properly + for (( nn=1; nn <= ntiles; nn++ )); do + cp "${COMIN_ATMOS_ANALYSIS}/sfci00${FHR}.tile${nn}.nc" \ + "${DATA}/soil_xainc.00${nn}" + done + FHR=3 + fi + # Copy inputs from COMIN to DATA for (( nn=1; nn <= ntiles; nn++ )); do ${NCP} "${sfcdata_dir}/${datestr}.sfc_data.tile${nn}.nc" "${DATA}/fnbgsi.00${nn}" From f9e9a4906548e76a8d041330072ef2519dcea60c Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 18 Dec 2024 23:50:29 +0000 Subject: [PATCH 02/50] Adding missing ush file --- ush/regrid_gsiSfcIncr_to_tile.sh | 106 +++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100755 ush/regrid_gsiSfcIncr_to_tile.sh diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh new file mode 100755 index 0000000000..26382483f3 --- /dev/null +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -0,0 +1,106 @@ +#! /usr/bin/env bash + +source "${USHgfs}/preamble.sh" + +#------------------------------------------------------------------------------------------------- +# Script to regrid surface increment from GSI grid +# to fv3 tiles. +# Requires CASE_OUT,OCNRES_OUT, CSD to be set in calling script +# Clara Draper, Dec 2024 +#------------------------------------------------------------------------------------------------- + +export PGMOUT=${PGMOUT:-${pgmout:-'&1'}} +export PGMERR=${PGMERR:-${pgmerr:-'&2'}} +export REDOUT=${REDOUT:-'1>'} +export REDERR=${REDERR:-'2>'} + +REGRID_EXEC=${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x + +export PGM=$REGRID_EXEC +export pgm=$PGM + +NMEM_REGRID=${NMEM_REGRID:-1} +CASE_IN=${CASE_IN:-$CASE_ENS} + + +# get resolutions +CRES_IN=$(echo $CASE_IN | cut -c2-) +LONB_CASE_IN=$((4*CRES_IN)) +LATB_CASE_IN=$((2*CRES_IN)) + +CRES_OUT=$(echo $CASE_OUT | cut -c2-) +ntiles=6 + +APREFIX="${RUN/enkf}.t${cyc}z." +APREFIX_ENS="enkfgdas.t${cyc}z." + +cat << EOF > regrid.nml + &config + n_vars=4, + variable_list(1)="soilt1_inc ", + variable_list(2)="soilt2_inc ", + variable_list(3)="slc1_inc ", + variable_list(4)="slc2_inc ", + missing_value=0., + / + &input + gridtype="gau_inc", + ires=${LONB_CASE_IN}, + jres=${LATB_CASE_IN}, + fname="enkfgdas.sfci.nc", + dir="./", + fname_coord="gaussian_scrip.nc", + dir_coord="./" +/ + + &output + gridtype="fv3_rst", + ires=${CRES_OUT}, + jres=${CRES_OUT}, + fname="sfci", + dir="./", + fname_mask="vegetation_type" + dir_mask="./" + dir_coord="$FIXorog", + / +EOF + +#CSD +#add a check into regrdding code that inputs have correct dimensions +#add checking that all required inputs are added +#change to read in pre-calculated grid + +# fixed input files +ln -sf /scratch2/BMC/gsienkf/Clara.Draper/regridding/inputs/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc gaussian_scrip.nc + +# fixed output files +for n in $(seq 1 $ntiles); do + ln -sf ${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc vegetation_type.tile${n}.nc +done + +#nfhrs=$(echo $IAUFHRS_ENKF | sed 's/,/ /g') +for imem in $(seq 1 $NMEM_REGRID); do + if [[ $NMEM_REGRID > 1 ]]; then + cmem=$(printf %03i $imem) + memchar="mem$cmem" + + MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ + COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL + + COM_SOIL_ANALYSIS_MEM=$COM_ATMOS_ANALYSIS_MEM + fi + + for FHR in $soilinc_fhrs; do + ln -fs ${COM_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc \ + ${DATA}/enkfgdas.sfci.nc + + $APRUN_REGR $REGRID_EXEC $REDOUT$PGMOUT $REDERR$PGMERR + + for n in $(seq 1 $ntiles); do + mv ${DATA}/sfci.tile${n}.nc ${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc + done + done +done + +exit 0 + From 8120fb6a472deb4f5aabad1a5d51bdccb4c25100 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Thu, 19 Dec 2024 20:30:14 +0000 Subject: [PATCH 03/50] Clean up calculation of forecast times required for regridding. --- scripts/exgdas_enkf_sfc.sh | 3 +-- scripts/exglobal_atmos_sfcanl.sh | 17 ++++++++--------- ush/regrid_gsiSfcIncr_to_tile.sh | 10 ++-------- 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 6db5e8ff3c..c69e27965b 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -123,7 +123,7 @@ if [ $GSI_SOILANAL = "YES" ]; then export CASE_IN=${CASE_ENS} export CASE_OUT=${CASE_ENS} export OCNRES_OUT=${OCNRES} - export soilinc_fhrs="6" + export soilinc_fhrs="06" export NMEM_REGRID=${NMEM_ENS} $REGRIDSH @@ -148,7 +148,6 @@ if [ $DOIAU = "YES" ]; then if (( smem > NMEM_ENS_MAX )); then smem=$((smem - NMEM_ENS_MAX)) fi - # CSD - what is this doing? gmemchar="mem"$(printf %03i "$smem") cmem=$(printf %03i $imem) memchar="mem$cmem" diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index ef4328831b..4104f6d39f 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -116,8 +116,11 @@ fi # Collect the dates in the window to update surface restarts gcycle_dates=("${PDY}${cyc}") # Always update surface restarts at middle of window +soilinc_fhrs=("06") # increment file at middle of window has FHR=6 if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of window half_window=$(( assim_freq / 2 )) + half_fhrs=$(printf %02d $half_window) + soilinc_fhrs+=("$half_fhrs") BDATE=$(date --utc -d "${PDY} ${cyc} - ${half_window} hours" +%Y%m%d%H) gcycle_dates+=("${BDATE}") fi @@ -130,16 +133,17 @@ if [ $GSI_SOILANAL = "YES" ]; then export CASE_IN=${CASE_ENS} export CASE_OUT=$CASE export OCNRES_OUT=$OCNRES - # CSD-TG currently regrids every 3 hours. refine? - export soilinc_fhrs=$(echo $IAUFHRS_ENKF | sed 's/,/ /g') $REGRIDSH fi # Loop over the dates in the window to update the surface restarts -FHR=6 -for gcycle_date in "${gcycle_dates[@]}"; do +for hr in "${!gcycle_dates[@]}"; do + + gcycle_date=${gcycle_dates[hr]} + FHR=${FHR[hr]} + echo "CSD check hours $FHR" echo "Updating surface restarts for ${gcycle_date} ..." @@ -147,15 +151,10 @@ for gcycle_date in "${gcycle_dates[@]}"; do # THIS BLOCK SPECIFIC TO NON-IAU CASE if [[ ${GSI_SOILANAL} = "YES" ]]; then - # first time uses 6 hour forecast (middle of window) - # next cycle uses 3 hour foreast (start of window) - # ??????????????? - # CSD-TG check have correct timing, then code properly for (( nn=1; nn <= ntiles; nn++ )); do cp "${COMIN_ATMOS_ANALYSIS}/sfci00${FHR}.tile${nn}.nc" \ "${DATA}/soil_xainc.00${nn}" done - FHR=3 fi # Copy inputs from COMIN to DATA diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 26382483f3..7014007269 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -5,7 +5,6 @@ source "${USHgfs}/preamble.sh" #------------------------------------------------------------------------------------------------- # Script to regrid surface increment from GSI grid # to fv3 tiles. -# Requires CASE_OUT,OCNRES_OUT, CSD to be set in calling script # Clara Draper, Dec 2024 #------------------------------------------------------------------------------------------------- @@ -65,11 +64,6 @@ cat << EOF > regrid.nml / EOF -#CSD -#add a check into regrdding code that inputs have correct dimensions -#add checking that all required inputs are added -#change to read in pre-calculated grid - # fixed input files ln -sf /scratch2/BMC/gsienkf/Clara.Draper/regridding/inputs/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc gaussian_scrip.nc @@ -91,13 +85,13 @@ for imem in $(seq 1 $NMEM_REGRID); do fi for FHR in $soilinc_fhrs; do - ln -fs ${COM_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc \ + ln -fs ${COM_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci0${FHR}.nc \ ${DATA}/enkfgdas.sfci.nc $APRUN_REGR $REGRID_EXEC $REDOUT$PGMOUT $REDERR$PGMERR for n in $(seq 1 $ntiles); do - mv ${DATA}/sfci.tile${n}.nc ${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc + mv ${DATA}/sfci.tile${n}.nc ${COM_ATMOS_ANALYSIS_MEM}/sfci0${FHR}.tile${n}.nc done done done From 1f3c8dfd5c2b311c3bcd2f9e677b1ac74960da1d Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 28 Jan 2025 19:51:41 +0000 Subject: [PATCH 04/50] Added dependency on enkf for gdas_sfcanl, for GSI_SOILANAL case --- workflow/applications/gfs_cycled.py | 1 + workflow/rocoto/gfs_tasks.py | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/workflow/applications/gfs_cycled.py b/workflow/applications/gfs_cycled.py index 7a2c812a0d..234fc83d64 100644 --- a/workflow/applications/gfs_cycled.py +++ b/workflow/applications/gfs_cycled.py @@ -47,6 +47,7 @@ def _get_run_options(self, conf: Configuration) -> Dict[str, Any]: run_options[run]['do_jediatmens'] = base.get('DO_JEDIATMENS', False) run_options[run]['do_jediocnvar'] = base.get('DO_JEDIOCNVAR', False) run_options[run]['do_jedisnowda'] = base.get('DO_JEDISNOWDA', False) + run_options[run]['do_gsisoilda'] = base.get('GSI_SOILANAL', False) run_options[run]['do_mergensst'] = base.get('DO_MERGENSST', False) run_options[run]['do_vrfy_oceanda'] = base.get('DO_VRFY_OCEANDA', False) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 08d260fe57..c926356f15 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -212,6 +212,10 @@ def anal(self): return task def sfcanl(self): +# CSD +# add enkf manually (see analcalc example) +# how to get variable in +# how to do two ands deps = [] if self.options['do_jediatmvar']: @@ -222,10 +226,15 @@ def sfcanl(self): if self.options['do_jedisnowda']: dep_dict = {'type': 'task', 'name': f'{self.run}_snowanl'} deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_gsisoilda']: + dep_dict = {'type': 'task', 'name': 'enkfgdas_eupd'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.options['do_jedisnowda'] or self.options['do_gsisoilda']: dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) else: dependencies = rocoto.create_dependency(dep=deps) + resources = self.get_resource('sfcanl') task_name = f'{self.run}_sfcanl' task_dict = {'task_name': task_name, From 0bf0a900d55c76379e8da5f8be8f64e5024c7523 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Thu, 30 Jan 2025 18:58:59 +0000 Subject: [PATCH 05/50] Tidy up timing of adding the sfc increments. Update config and xml. --- env/GAEAC5.env | 7 +++++++ env/GAEAC6.env | 7 +++++++ env/HERA.env | 16 ++++++++++++++-- env/HERCULES.env | 14 ++++++++++++++ env/JET.env | 14 ++++++++++++++ env/ORION.env | 14 ++++++++++++++ env/WCOSS2.env | 14 ++++++++++++++ parm/config/gfs/config.esfc | 4 ++-- parm/config/gfs/config.resources | 6 +++--- parm/config/gfs/config.sfcanl | 5 +++++ scripts/exgdas_enkf_sfc.sh | 11 ++++++++--- scripts/exglobal_atmos_sfcanl.sh | 15 ++++++++------- sorc/link_workflow.sh | 3 ++- ush/regrid_gsiSfcIncr_to_tile.sh | 25 ++++++++++++++++++++----- 14 files changed, 132 insertions(+), 23 deletions(-) diff --git a/env/GAEAC5.env b/env/GAEAC5.env index 4fdb6d3546..9f2b599e7a 100755 --- a/env/GAEAC5.env +++ b/env/GAEAC5.env @@ -71,6 +71,13 @@ elif [[ "${step}" = "sfcanl" ]]; then export NTHREADS_CYCLE=${threads_per_task:-14} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + elif [[ "${step}" = "fcst" ]]; then (( nnodes = (ntasks+tasks_per_node-1)/tasks_per_node )) diff --git a/env/GAEAC6.env b/env/GAEAC6.env index 09bbd6530b..4e10556251 100755 --- a/env/GAEAC6.env +++ b/env/GAEAC6.env @@ -71,6 +71,13 @@ elif [[ "${step}" = "sfcanl" ]]; then export NTHREADS_CYCLE=${threads_per_task:-14} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + elif [[ "${step}" = "fcst" ]]; then (( nnodes = (ntasks+tasks_per_node-1)/tasks_per_node )) diff --git a/env/HERA.env b/env/HERA.env index c29b60d812..fab88ec59a 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -182,7 +182,13 @@ elif [[ "${step}" = "sfcanl" ]]; then export NTHREADS_CYCLE=${threads_per_task:-14} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" - export APRUN_REGR="${launcher} -n 6" + + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " elif [[ "${step}" = "eobs" ]]; then @@ -248,7 +254,13 @@ elif [[ "${step}" = "esfc" ]]; then export NTHREADS_CYCLE=${threads_per_task_cycle:-14} [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" - export APRUN_REGR="${launcher} -n 6" + + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " elif [[ "${step}" = "epos" ]]; then diff --git a/env/HERCULES.env b/env/HERCULES.env index acfbe438ef..e2053b2de9 100755 --- a/env/HERCULES.env +++ b/env/HERCULES.env @@ -186,6 +186,13 @@ case ${step} in export NTHREADS_CYCLE=${threads_per_task:-14} [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " ;; "eobs") @@ -262,6 +269,13 @@ case ${step} in [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + ;; "epos") diff --git a/env/JET.env b/env/JET.env index 7bfd912062..1ae247ea22 100755 --- a/env/JET.env +++ b/env/JET.env @@ -156,6 +156,13 @@ elif [[ "${step}" = "sfcanl" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + elif [[ "${step}" = "eobs" ]]; then export MKL_NUM_THREADS=4 @@ -221,6 +228,13 @@ elif [[ "${step}" = "esfc" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + elif [[ "${step}" = "epos" ]]; then export NTHREADS_EPOS=${NTHREADSmax} diff --git a/env/ORION.env b/env/ORION.env index fbe00c153c..8dca806a5b 100755 --- a/env/ORION.env +++ b/env/ORION.env @@ -184,6 +184,13 @@ elif [[ "${step}" = "sfcanl" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + elif [[ "${step}" = "eobs" ]]; then export MKL_NUM_THREADS=4 @@ -250,6 +257,13 @@ elif [[ "${step}" = "esfc" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + elif [[ "${step}" = "epos" ]]; then export NTHREADS_EPOS=${NTHREADSmax} diff --git a/env/WCOSS2.env b/env/WCOSS2.env index fe6acf88fb..7f8ffc73ae 100755 --- a/env/WCOSS2.env +++ b/env/WCOSS2.env @@ -175,6 +175,13 @@ elif [[ "${step}" = "sfcanl" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + elif [[ "${step}" = "eobs" ]]; then export OMP_PLACES=cores @@ -260,6 +267,13 @@ elif [[ "${step}" = "esfc" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} -ppn ${tasks_per_node_cycle} --cpu-bind depth --depth ${NTHREADS_CYCLE}" + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + elif [[ "${step}" = "epos" ]]; then export NTHREADS_EPOS=${NTHREADSmax} diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index 684dea4ee3..37bc14d45b 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -23,8 +23,8 @@ fi # set up soil analysis if [[ ${GSI_SOILANAL} = "YES" ]]; then - export DO_LNDINC=".true." - export LND_SOI_FILE="lnd_incr" + export DO_SOI_INC=".true." + export GCYCLE_INTERP_LNDINC=".false." fi echo "END: config.esfc" diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index ec09b6d455..66b958d499 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -679,12 +679,12 @@ case ${step} in ntasks_gfs=825 threads_per_task=5 ;; - "C384") + "C384" | "C192") ntasks_gdas=160 ntasks_gfs=160 threads_per_task=10 ;; - "C192" | "C96" | "C48") + "C96" | "C48") ntasks_gdas=84 ntasks_gfs=84 threads_per_task=5 @@ -1226,7 +1226,7 @@ case ${step} in ;; "esfc") - walltime="00:25:00" + walltime="01:00:00" ntasks=80 threads_per_task=1 tasks_per_node=$(( max_tasks_per_node / threads_per_task )) diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index e2fde8992a..391d5db1ae 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -12,5 +12,10 @@ echo "BEGIN: config.sfcanl" if [[ "${DO_JEDIATMVAR}" == "YES" ]]; then export DONST="NO" fi +if [[ ${GSI_SOILANAL} = "YES" ]]; then + export DO_LNDINC=".true." + export DO_SOI_INC=".true." + export GCYCLE_INTERP_LNDINC=".false." +fi echo "END: config.sfcanl" diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index c69e27965b..90030a27a6 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -123,8 +123,12 @@ if [ $GSI_SOILANAL = "YES" ]; then export CASE_IN=${CASE_ENS} export CASE_OUT=${CASE_ENS} export OCNRES_OUT=${OCNRES} - export soilinc_fhrs="06" export NMEM_REGRID=${NMEM_ENS} + if [ $DOIAU = "YES" ]; then + export LFHR=3 # match BDATE + else + export LFHR=6 # PDYcyc + fi $REGRIDSH @@ -179,7 +183,7 @@ if [ $DOIAU = "YES" ]; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" if [[ ${GSI_SOILANAL} = "YES" ]]; then - FHR=6 + FHR=$LFHR ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" fi @@ -210,7 +214,7 @@ if [ $DOIAU = "YES" ]; then if [[ ${GSI_SOILANAL} = "YES" ]]; then - FHR=6 + FHR=$LFHR ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ "${DATA}/sfcincr_gsi.${cmem}" fi @@ -220,6 +224,7 @@ if [ $DOIAU = "YES" ]; then fi +# to do- add SOILANAL below if [ $DOSFCANL_ENKF = "YES" ]; then for n in $(seq 1 $ntiles); do diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index 4104f6d39f..b65a6ecc60 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -116,11 +116,12 @@ fi # Collect the dates in the window to update surface restarts gcycle_dates=("${PDY}${cyc}") # Always update surface restarts at middle of window -soilinc_fhrs=("06") # increment file at middle of window has FHR=6 +soilinc_fhrs=($assim_freq) # increment file at middle of window +LFHR=$assim_freq if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of window half_window=$(( assim_freq / 2 )) - half_fhrs=$(printf %02d $half_window) - soilinc_fhrs+=("$half_fhrs") + soilinc_fhrs+=($half_window) + LFHR=-1 BDATE=$(date --utc -d "${PDY} ${cyc} - ${half_window} hours" +%Y%m%d%H) gcycle_dates+=("${BDATE}") fi @@ -133,6 +134,7 @@ if [ $GSI_SOILANAL = "YES" ]; then export CASE_IN=${CASE_ENS} export CASE_OUT=$CASE export OCNRES_OUT=$OCNRES + export LFHR $REGRIDSH @@ -142,14 +144,13 @@ fi for hr in "${!gcycle_dates[@]}"; do gcycle_date=${gcycle_dates[hr]} - FHR=${FHR[hr]} - echo "CSD check hours $FHR" + FHR=${soilinc_fhrs[hr]} - echo "Updating surface restarts for ${gcycle_date} ..." + echo "CSD Updating surface restarts for ${gcycle_date} ..." + echo "CSD increment FHR ${FHR}" datestr="${gcycle_date:0:8}.${gcycle_date:8:2}0000" - # THIS BLOCK SPECIFIC TO NON-IAU CASE if [[ ${GSI_SOILANAL} = "YES" ]]; then for (( nn=1; nn <= ntiles; nn++ )); do cp "${COMIN_ATMOS_ANALYSIS}/sfci00${FHR}.tile${nn}.nc" \ diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index a57f5660cc..dc451c7754 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -369,7 +369,8 @@ if [[ -d "${HOMEgfs}/sorc/gdas.cd/build" ]]; then "gdasapp_land_ensrecenter.x" "bufr2ioda.x" "calcfIMS.exe" - "apply_incr.exe") + "apply_incr.exe" + "regridStates.x") for gdasexe in "${JEDI_EXE[@]}"; do [[ -s "${gdasexe}" ]] && rm -f "${gdasexe}" ${LINK_OR_COPY} "${HOMEgfs}/sorc/gdas.cd/build/bin/${gdasexe}" . diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 7014007269..e62d8f3614 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -20,7 +20,7 @@ export pgm=$PGM NMEM_REGRID=${NMEM_REGRID:-1} CASE_IN=${CASE_IN:-$CASE_ENS} - +LFHR=${LFHR:-6} # get resolutions CRES_IN=$(echo $CASE_IN | cut -c2-) @@ -72,7 +72,21 @@ for n in $(seq 1 $ntiles); do ln -sf ${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc vegetation_type.tile${n}.nc done -#nfhrs=$(echo $IAUFHRS_ENKF | sed 's/,/ /g') +if [ $LFHR .GE. 0 ]; then + soilinc_fhrs=($LFHR) +else # construct restart times for deterministic member + soilinc_fhrs=($assim_freq) # increment file at middle of window + if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of window + half_window=$(( assim_freq / 2 )) + soilinc_fhrs+=($half_window) + fi +fi + +echo "CSDregrid DOIAU $DOIAU" + for FHR in "${soilinc_fhrs[@]}"; do + echo "CSDregrid FHR $FHR" + done + for imem in $(seq 1 $NMEM_REGRID); do if [[ $NMEM_REGRID > 1 ]]; then cmem=$(printf %03i $imem) @@ -84,14 +98,15 @@ for imem in $(seq 1 $NMEM_REGRID); do COM_SOIL_ANALYSIS_MEM=$COM_ATMOS_ANALYSIS_MEM fi - for FHR in $soilinc_fhrs; do - ln -fs ${COM_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci0${FHR}.nc \ + for FHR in "${soilinc_fhrs[@]}"; do + echo "CSDregrid FHR calling $FHR" + ln -fs ${COM_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc \ ${DATA}/enkfgdas.sfci.nc $APRUN_REGR $REGRID_EXEC $REDOUT$PGMOUT $REDERR$PGMERR for n in $(seq 1 $ntiles); do - mv ${DATA}/sfci.tile${n}.nc ${COM_ATMOS_ANALYSIS_MEM}/sfci0${FHR}.tile${n}.nc + mv ${DATA}/sfci.tile${n}.nc ${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc done done done From e47821081b51a8593c08131247dc7a7b850ed4c7 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Fri, 31 Jan 2025 20:39:14 +0000 Subject: [PATCH 06/50] Fixed bug in FHR calc in regrid, added soil analysis to non-IAU (atmos) case --- scripts/exgdas_enkf_sfc.sh | 17 +++++++++-------- scripts/exglobal_atmos_sfcanl.sh | 3 --- ush/regrid_gsiSfcIncr_to_tile.sh | 8 +------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 90030a27a6..2997d54caf 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -126,7 +126,7 @@ if [ $GSI_SOILANAL = "YES" ]; then export NMEM_REGRID=${NMEM_ENS} if [ $DOIAU = "YES" ]; then export LFHR=3 # match BDATE - else + else # DOSFCANL_ENKF export LFHR=6 # PDYcyc fi @@ -212,19 +212,12 @@ if [ $DOIAU = "YES" ]; then [[ ${TILE_NUM} -eq 1 ]] && mkdir -p "${COM_ATMOS_RESTART_MEM}" cpfs "${DATA}/fnbgso.${cmem}" "${COM_ATMOS_RESTART_MEM}/${bPDY}.${bcyc}0000.sfcanl_data.tile${n}.nc" - - if [[ ${GSI_SOILANAL} = "YES" ]]; then - FHR=$LFHR - ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ - "${DATA}/sfcincr_gsi.${cmem}" - fi done # ensembles done fi -# to do- add SOILANAL below if [ $DOSFCANL_ENKF = "YES" ]; then for n in $(seq 1 $ntiles); do @@ -246,6 +239,9 @@ if [ $DOSFCANL_ENKF = "YES" ]; then RUN="${GDUMP_ENS}" MEMDIR=${gmemchar} YMD=${gPDY} HH=${gcyc} declare_from_tmpl \ COMIN_ATMOS_RESTART_MEM_PREV:COM_ATMOS_RESTART_TMPL + MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ + COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL + # determine where the input snow restart files come from if [[ "${DO_JEDISNOWDA:-}" == "YES" ]]; then sfcdata_dir="${COMIN_SNOW_ANALYSIS_MEM}" @@ -259,6 +255,11 @@ if [ $DOSFCANL_ENKF = "YES" ]; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_grid.tile${n}.nc" "${DATA}/fngrid.${cmem}" ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" + if [[ ${GSI_SOILANAL} = "YES" ]]; then + FHR=$LFHR + ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ + "${DATA}/soil_xainc.${cmem}" + fi done CDATE="${PDY}${cyc}" ${CYCLESH} diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index b65a6ecc60..99a1f9a5e7 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -146,9 +146,6 @@ for hr in "${!gcycle_dates[@]}"; do gcycle_date=${gcycle_dates[hr]} FHR=${soilinc_fhrs[hr]} - echo "CSD Updating surface restarts for ${gcycle_date} ..." - echo "CSD increment FHR ${FHR}" - datestr="${gcycle_date:0:8}.${gcycle_date:8:2}0000" if [[ ${GSI_SOILANAL} = "YES" ]]; then diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index e62d8f3614..97941dc0c7 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -72,7 +72,7 @@ for n in $(seq 1 $ntiles); do ln -sf ${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc vegetation_type.tile${n}.nc done -if [ $LFHR .GE. 0 ]; then +if (( $LFHR >= 0 )); then soilinc_fhrs=($LFHR) else # construct restart times for deterministic member soilinc_fhrs=($assim_freq) # increment file at middle of window @@ -82,11 +82,6 @@ else # construct restart times for deterministic member fi fi -echo "CSDregrid DOIAU $DOIAU" - for FHR in "${soilinc_fhrs[@]}"; do - echo "CSDregrid FHR $FHR" - done - for imem in $(seq 1 $NMEM_REGRID); do if [[ $NMEM_REGRID > 1 ]]; then cmem=$(printf %03i $imem) @@ -99,7 +94,6 @@ for imem in $(seq 1 $NMEM_REGRID); do fi for FHR in "${soilinc_fhrs[@]}"; do - echo "CSDregrid FHR calling $FHR" ln -fs ${COM_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc \ ${DATA}/enkfgdas.sfci.nc From 3856b1f14d234a3f4e98dc3cab77c38b41c7696f Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Fri, 31 Jan 2025 21:18:53 +0000 Subject: [PATCH 07/50] Added LSOIL_INC to config files. generalized regridding namelist input. --- parm/config/gfs/config.esfc | 1 + parm/config/gfs/config.sfcanl | 1 + ush/regrid_gsiSfcIncr_to_tile.sh | 19 ++++++++++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index 37bc14d45b..8391133c5f 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -25,6 +25,7 @@ fi if [[ ${GSI_SOILANAL} = "YES" ]]; then export DO_SOI_INC=".true." export GCYCLE_INTERP_LNDINC=".false." + export LSOIL_INCR=2 fi echo "END: config.esfc" diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index 391d5db1ae..8279c36f65 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -16,6 +16,7 @@ if [[ ${GSI_SOILANAL} = "YES" ]]; then export DO_LNDINC=".true." export DO_SOI_INC=".true." export GCYCLE_INTERP_LNDINC=".false." + export LSOIL_INCR=2 fi echo "END: config.sfcanl" diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 97941dc0c7..6e7e7bf9e8 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -33,13 +33,22 @@ ntiles=6 APREFIX="${RUN/enkf}.t${cyc}z." APREFIX_ENS="enkfgdas.t${cyc}z." +LSOIL_INCR=${LSOIL_INCR:-2} + +n_vars=$(( LSOIL_INCR*2 )) + +soil_incr_vars="" +for vi in $( seq 1 ${LSOIL_INCR} ); do + soil_incr_vars=${soil_incr_vars}'"soilt'${vi}'_inc"', +done +for vi in $( seq 1 ${LSOIL_INCR} ); do + soil_incr_vars=${soil_incr_vars}'"slc'${vi}'_inc"', +done + cat << EOF > regrid.nml &config - n_vars=4, - variable_list(1)="soilt1_inc ", - variable_list(2)="soilt2_inc ", - variable_list(3)="slc1_inc ", - variable_list(4)="slc2_inc ", + n_vars=${n_vars}, + variable_list=$soil_incr_vars missing_value=0., / &input From d8e945fe61f0e3326896f737d16d3ec96aae1daa Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Sun, 2 Feb 2025 23:43:23 +0000 Subject: [PATCH 08/50] workaround to ease merging. --- env/GAEAC5.env | 7 ------- env/GAEAC6.env | 7 ------- 2 files changed, 14 deletions(-) diff --git a/env/GAEAC5.env b/env/GAEAC5.env index 9f2b599e7a..4fdb6d3546 100755 --- a/env/GAEAC5.env +++ b/env/GAEAC5.env @@ -71,13 +71,6 @@ elif [[ "${step}" = "sfcanl" ]]; then export NTHREADS_CYCLE=${threads_per_task:-14} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" - ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 - fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " - elif [[ "${step}" = "fcst" ]]; then (( nnodes = (ntasks+tasks_per_node-1)/tasks_per_node )) diff --git a/env/GAEAC6.env b/env/GAEAC6.env index 4e10556251..09bbd6530b 100755 --- a/env/GAEAC6.env +++ b/env/GAEAC6.env @@ -71,13 +71,6 @@ elif [[ "${step}" = "sfcanl" ]]; then export NTHREADS_CYCLE=${threads_per_task:-14} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" - ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 - fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " - elif [[ "${step}" = "fcst" ]]; then (( nnodes = (ntasks+tasks_per_node-1)/tasks_per_node )) From 86e0deb682653ebf6ea45becda8794f8b7d87eb8 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Sun, 2 Feb 2025 23:46:30 +0000 Subject: [PATCH 09/50] Added back in env changes after merge. --- env/GAEAC5.env | 8 ++++++++ env/GAEAC6.env | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/env/GAEAC5.env b/env/GAEAC5.env index 8af8003dff..e25cc9ee79 100755 --- a/env/GAEAC5.env +++ b/env/GAEAC5.env @@ -175,6 +175,14 @@ case ${step} in export NTHREADS_CYCLE=${threads_per_task:-14} [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + ;; "eobs") diff --git a/env/GAEAC6.env b/env/GAEAC6.env index 90150948e3..892596d386 100755 --- a/env/GAEAC6.env +++ b/env/GAEAC6.env @@ -175,6 +175,14 @@ case ${step} in export NTHREADS_CYCLE=${threads_per_task:-14} [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + + ntdiv6=$((ntasks/6)) + ntasks_reg=$((ntdiv6*6)) + if [[ ${ntasks_reg} -gt 36 ]]; then + ntasks_reg=36 + fi + export APRUN_REGR="${launcher} -n ${ntasks_reg} " + ;; "eobs") From 59e82b72b3f659951ed3e9c5c80ddaa37da54612 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 4 Feb 2025 17:45:59 +0000 Subject: [PATCH 10/50] Tidy up. --- jobs/rocoto/esfc.sh | 5 +++-- jobs/rocoto/sfcanl.sh | 5 +++-- scripts/exglobal_atmos_sfcanl.sh | 1 + ush/regrid_gsiSfcIncr_to_tile.sh | 5 ++++- workflow/rocoto/gfs_tasks.py | 4 ---- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/jobs/rocoto/esfc.sh b/jobs/rocoto/esfc.sh index 13be45372f..3229cf3bcd 100755 --- a/jobs/rocoto/esfc.sh +++ b/jobs/rocoto/esfc.sh @@ -4,8 +4,9 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh -. ${HOMEgfs}/ush/load_ufsda_modules.sh +# CSD for GSI_SOILANAL, need ufsda modules (temporary, until merged) +. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_ufsda_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/rocoto/sfcanl.sh b/jobs/rocoto/sfcanl.sh index 0dfbdabfe2..fb562ae18b 100755 --- a/jobs/rocoto/sfcanl.sh +++ b/jobs/rocoto/sfcanl.sh @@ -4,8 +4,9 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh -. ${HOMEgfs}/ush/load_ufsda_modules.sh +# CSD for GSI_SOILANAL, need ufsda modules (temporary, until merged) +. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_ufsda_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index 99a1f9a5e7..06a42b71f0 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -145,6 +145,7 @@ for hr in "${!gcycle_dates[@]}"; do gcycle_date=${gcycle_dates[hr]} FHR=${soilinc_fhrs[hr]} + echo "Updating surface restarts for ${gcycle_date} ..." datestr="${gcycle_date:0:8}.${gcycle_date:8:2}0000" diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 6e7e7bf9e8..90f8661c10 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -8,6 +8,9 @@ source "${USHgfs}/preamble.sh" # Clara Draper, Dec 2024 #------------------------------------------------------------------------------------------------- +# CSD: temporary on hera, until scrip files added to fix dir. +TMP_FIX_FILES=/scratch2/BMC/gsienkf/Clara.Draper/gw_new_fix_files/ + export PGMOUT=${PGMOUT:-${pgmout:-'&1'}} export PGMERR=${PGMERR:-${pgmerr:-'&2'}} export REDOUT=${REDOUT:-'1>'} @@ -74,7 +77,7 @@ cat << EOF > regrid.nml EOF # fixed input files -ln -sf /scratch2/BMC/gsienkf/Clara.Draper/regridding/inputs/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc gaussian_scrip.nc +ln -sf ${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc gaussian_scrip.nc # fixed output files for n in $(seq 1 $ntiles); do diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index b761b0c082..e0c0fa9e40 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -242,10 +242,6 @@ def anal(self): return task def sfcanl(self): -# CSD -# add enkf manually (see analcalc example) -# how to get variable in -# how to do two ands deps = [] if self.options['do_jediatmvar']: From b02e8afc6bd233126452e68c5dbe444350c09a37 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 4 Feb 2025 17:54:26 +0000 Subject: [PATCH 11/50] Updated UFS_UTILS to include latest update, needed for the soil analysis. --- sorc/ufs_utils.fd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/ufs_utils.fd b/sorc/ufs_utils.fd index 5b2bfa39a5..e718003548 160000 --- a/sorc/ufs_utils.fd +++ b/sorc/ufs_utils.fd @@ -1 +1 @@ -Subproject commit 5b2bfa39a5b1fbe6bb1d247102679885685c9336 +Subproject commit e718003548f8a12b675a4b3237a55e290d2f03cf From 7ffee90f33aad86a003203197ac92f5d288998fb Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 4 Feb 2025 18:15:24 +0000 Subject: [PATCH 12/50] Updated code owners. --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 81e387d361..3fa75581aa 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -181,6 +181,7 @@ syndat_qctropcy.sh @JiayiPeng-NOAA tropcy_relocate.sh @JiayiPeng-NOAA tropcy_relocate_extrkr.sh @JiayiPeng-NOAA wave_*.sh @JessicaMeixner-NOAA @sbanihash +regrid_gsiSfcIncr_to_tile.sh @ClaraDraper-NOAA # ush/python ush/python/pygfs/jedi/__init__.py @aerorahul @DavidNew-NOAA From 5cccc3f58cca10c2991e36c77352a60520b048a0 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 4 Feb 2025 18:50:01 +0000 Subject: [PATCH 13/50] coding norms. --- scripts/exgdas_enkf_sfc.sh | 4 ++-- scripts/exgdas_enkf_update.sh | 6 ++--- ush/regrid_gsiSfcIncr_to_tile.sh | 39 ++++++++++++++++---------------- workflow/rocoto/gfs_tasks.py | 1 - 4 files changed, 24 insertions(+), 26 deletions(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 2997d54caf..c189154d5f 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -118,7 +118,7 @@ else fi # regrid the surface increment files -if [ $GSI_SOILANAL = "YES" ]; then +if [[ ${GSI_SOILANAL} = "YES" ]]; then export CASE_IN=${CASE_ENS} export CASE_OUT=${CASE_ENS} @@ -183,7 +183,7 @@ if [ $DOIAU = "YES" ]; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" if [[ ${GSI_SOILANAL} = "YES" ]]; then - FHR=$LFHR + FHR=${LFHR} ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" fi diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index c2636f2d78..961ea867fd 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -213,7 +213,7 @@ for imem in $(seq 1 $NMEM_ENS); do for FHR in $nfhrs; do ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}atmf00${FHR}${ENKF_SUFFIX}.nc" \ "sfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" - if [ $GSI_SOILANAL = "YES" ]; then + if [[ $GSI_SOILANAL = "YES" ]]; then ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}${ENKF_SUFFIX}.nc" \ "bfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi @@ -238,7 +238,7 @@ for imem in $(seq 1 $NMEM_ENS); do "incr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi fi - if [ $GSI_SOILANAL = "YES" ]; then + if [[ $GSI_SOILANAL = "YES" ]]; then ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}sfci00${FHR}.nc" \ "sfcincr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi @@ -254,7 +254,7 @@ for FHR in $nfhrs; do ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "sfgsfc_${PDY}${cyc}_fhr0${FHR}_ensmean" fi - if [ $GSI_SOILANAL = "YES" ]; then + if [[ $GSI_SOILANAL = "YES" ]]; then ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "bfg_${PDY}${cyc}_fhr0${FHR}_ensmean" ${NLN} "${COM_ATMOS_ANALYSIS_STAT}/${APREFIX}sfci00${FHR}.nc" \ diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 90f8661c10..2269c9f252 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -18,22 +18,21 @@ export REDERR=${REDERR:-'2>'} REGRID_EXEC=${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x -export PGM=$REGRID_EXEC -export pgm=$PGM +export PGM=${REGRID_EXEC} +export pgm=${PGM} NMEM_REGRID=${NMEM_REGRID:-1} -CASE_IN=${CASE_IN:-$CASE_ENS} +CASE_IN=${CASE_IN:-${CASE_ENS}} LFHR=${LFHR:-6} # get resolutions -CRES_IN=$(echo $CASE_IN | cut -c2-) +CRES_IN=$(echo ${CASE_IN} | cut -c2-) LONB_CASE_IN=$((4*CRES_IN)) LATB_CASE_IN=$((2*CRES_IN)) -CRES_OUT=$(echo $CASE_OUT | cut -c2-) +CRES_OUT=$(echo ${CASE_OUT} | cut -c2-) ntiles=6 -APREFIX="${RUN/enkf}.t${cyc}z." APREFIX_ENS="enkfgdas.t${cyc}z." LSOIL_INCR=${LSOIL_INCR:-2} @@ -51,7 +50,7 @@ done cat << EOF > regrid.nml &config n_vars=${n_vars}, - variable_list=$soil_incr_vars + variable_list=${soil_incr_vars} missing_value=0., / &input @@ -72,7 +71,7 @@ cat << EOF > regrid.nml dir="./", fname_mask="vegetation_type" dir_mask="./" - dir_coord="$FIXorog", + dir_coord="${FIXorog}", / EOF @@ -80,38 +79,38 @@ EOF ln -sf ${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc gaussian_scrip.nc # fixed output files -for n in $(seq 1 $ntiles); do +for n in $(seq 1 ${ntiles}); do ln -sf ${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc vegetation_type.tile${n}.nc done -if (( $LFHR >= 0 )); then - soilinc_fhrs=($LFHR) +if (( ${LFHR} >= 0 )); then + soilinc_fhrs=(${LFHR}) else # construct restart times for deterministic member - soilinc_fhrs=($assim_freq) # increment file at middle of window + soilinc_fhrs=(${assim_freq}) # increment file at middle of window if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of window half_window=$(( assim_freq / 2 )) - soilinc_fhrs+=($half_window) + soilinc_fhrs+=(${half_window}) fi fi -for imem in $(seq 1 $NMEM_REGRID); do - if [[ $NMEM_REGRID > 1 ]]; then - cmem=$(printf %03i $imem) - memchar="mem$cmem" +for imem in $(seq 1 ${NMEM_REGRID}); do + if [[ ${NMEM_REGRID} > 1 ]]; then + cmem=$(printf %03i ${imem}) + memchar="mem${cmem}" MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL - COM_SOIL_ANALYSIS_MEM=$COM_ATMOS_ANALYSIS_MEM + COM_SOIL_ANALYSIS_MEM=${COM_ATMOS_ANALYSIS_MEM} fi for FHR in "${soilinc_fhrs[@]}"; do ln -fs ${COM_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc \ ${DATA}/enkfgdas.sfci.nc - $APRUN_REGR $REGRID_EXEC $REDOUT$PGMOUT $REDERR$PGMERR + ${APRUN_REGR} ${REGRID_EXEC} ${REDOUT}${PGMOUT} ${REDERR}${PGMERR} - for n in $(seq 1 $ntiles); do + for n in $(seq 1 ${ntiles}); do mv ${DATA}/sfci.tile${n}.nc ${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc done done diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 2f05b1a0ff..1ecb1a7a02 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -260,7 +260,6 @@ def sfcanl(self): else: dependencies = rocoto.create_dependency(dep=deps) - resources = self.get_resource('sfcanl') task_name = f'{self.run}_sfcanl' task_dict = {'task_name': task_name, From 04e542ebf0dcef10801db884f4cdc2229de6991e Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:12:11 -0700 Subject: [PATCH 14/50] Update parm/config/gfs/config.sfcanl Co-authored-by: Cory Martin --- parm/config/gfs/config.sfcanl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index 8279c36f65..2f079de48c 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -12,7 +12,7 @@ echo "BEGIN: config.sfcanl" if [[ "${DO_JEDIATMVAR}" == "YES" ]]; then export DONST="NO" fi -if [[ ${GSI_SOILANAL} = "YES" ]]; then +if [[ "${GSI_SOILANAL}" = "YES" ]]; then export DO_LNDINC=".true." export DO_SOI_INC=".true." export GCYCLE_INTERP_LNDINC=".false." From fae30c6f213ae8de343ad040a891e0ff0a46784e Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:12:21 -0700 Subject: [PATCH 15/50] Update scripts/exgdas_enkf_sfc.sh Co-authored-by: Cory Martin --- scripts/exgdas_enkf_sfc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index c189154d5f..ee9eaa508b 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -256,7 +256,7 @@ if [ $DOSFCANL_ENKF = "YES" ]; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" if [[ ${GSI_SOILANAL} = "YES" ]]; then - FHR=$LFHR + FHR=${LFHR} ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" fi From 6cda29cc7621ff8febc52b8772d2cf704a6a0d21 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:13:59 -0700 Subject: [PATCH 16/50] Update scripts/exglobal_atmos_sfcanl.sh Co-authored-by: Cory Martin --- scripts/exglobal_atmos_sfcanl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index 06a42b71f0..60ecb93d1c 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -116,7 +116,7 @@ fi # Collect the dates in the window to update surface restarts gcycle_dates=("${PDY}${cyc}") # Always update surface restarts at middle of window -soilinc_fhrs=($assim_freq) # increment file at middle of window +soilinc_fhrs=("${assim_freq}") # increment file at middle of window LFHR=$assim_freq if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of window half_window=$(( assim_freq / 2 )) From 255cf33df269b593890c655061a5ef5fcf47f896 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:14:11 -0700 Subject: [PATCH 17/50] Update ush/regrid_gsiSfcIncr_to_tile.sh Co-authored-by: Rahul Mahajan --- ush/regrid_gsiSfcIncr_to_tile.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 2269c9f252..d140305898 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -26,7 +26,7 @@ CASE_IN=${CASE_IN:-${CASE_ENS}} LFHR=${LFHR:-6} # get resolutions -CRES_IN=$(echo ${CASE_IN} | cut -c2-) +CRES_IN="${CASE_IN:1}" LONB_CASE_IN=$((4*CRES_IN)) LATB_CASE_IN=$((2*CRES_IN)) From 660fc4c0b14991a3af2f0807b88b694bd8c4fcc3 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:14:18 -0700 Subject: [PATCH 18/50] Update ush/regrid_gsiSfcIncr_to_tile.sh Co-authored-by: Rahul Mahajan --- ush/regrid_gsiSfcIncr_to_tile.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index d140305898..ec67ea2cdf 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -30,7 +30,7 @@ CRES_IN="${CASE_IN:1}" LONB_CASE_IN=$((4*CRES_IN)) LATB_CASE_IN=$((2*CRES_IN)) -CRES_OUT=$(echo ${CASE_OUT} | cut -c2-) +CRES_OUT="${CASE_OUT:1}" ntiles=6 APREFIX_ENS="enkfgdas.t${cyc}z." From 01072aa6b6f05180f808623b0cfbc6a61c956c81 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 5 Feb 2025 00:49:34 +0000 Subject: [PATCH 19/50] Updates for Cory's review. --- env/GAEAC5.env | 8 ++++---- env/GAEAC6.env | 8 ++++---- env/HERA.env | 16 ++++++++-------- env/HERCULES.env | 16 ++++++++-------- env/JET.env | 16 ++++++++-------- env/ORION.env | 16 ++++++++-------- env/WCOSS2.env | 16 ++++++++-------- jobs/JGLOBAL_ATMOS_SFCANL | 2 +- scripts/exgdas_enkf_sfc.sh | 11 ++++------- scripts/exgdas_enkf_update.sh | 6 +++--- scripts/exglobal_atmos_sfcanl.sh | 16 ++++++++-------- ush/regrid_gsiSfcIncr_to_tile.sh | 11 ++++++----- 12 files changed, 70 insertions(+), 72 deletions(-) diff --git a/env/GAEAC5.env b/env/GAEAC5.env index e25cc9ee79..954bb9e4c0 100755 --- a/env/GAEAC5.env +++ b/env/GAEAC5.env @@ -177,11 +177,11 @@ case ${step} in export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " ;; "eobs") diff --git a/env/GAEAC6.env b/env/GAEAC6.env index 892596d386..10595a383f 100755 --- a/env/GAEAC6.env +++ b/env/GAEAC6.env @@ -177,11 +177,11 @@ case ${step} in export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " ;; "eobs") diff --git a/env/HERA.env b/env/HERA.env index fab88ec59a..7b7f64030a 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -184,11 +184,11 @@ elif [[ "${step}" = "sfcanl" ]]; then export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " elif [[ "${step}" = "eobs" ]]; then @@ -256,11 +256,11 @@ elif [[ "${step}" = "esfc" ]]; then export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " elif [[ "${step}" = "epos" ]]; then diff --git a/env/HERCULES.env b/env/HERCULES.env index e2053b2de9..63f2ec6b26 100755 --- a/env/HERCULES.env +++ b/env/HERCULES.env @@ -188,11 +188,11 @@ case ${step} in export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " ;; "eobs") @@ -270,11 +270,11 @@ case ${step} in export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " ;; "epos") diff --git a/env/JET.env b/env/JET.env index 1ae247ea22..3c744bf197 100755 --- a/env/JET.env +++ b/env/JET.env @@ -157,11 +157,11 @@ elif [[ "${step}" = "sfcanl" ]]; then export APRUN_CYCLE="${APRUN_default}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " elif [[ "${step}" = "eobs" ]]; then @@ -229,11 +229,11 @@ elif [[ "${step}" = "esfc" ]]; then export APRUN_CYCLE="${APRUN_default}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " elif [[ "${step}" = "epos" ]]; then diff --git a/env/ORION.env b/env/ORION.env index 8dca806a5b..c67b2cb959 100755 --- a/env/ORION.env +++ b/env/ORION.env @@ -185,11 +185,11 @@ elif [[ "${step}" = "sfcanl" ]]; then export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " elif [[ "${step}" = "eobs" ]]; then @@ -258,11 +258,11 @@ elif [[ "${step}" = "esfc" ]]; then export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " elif [[ "${step}" = "epos" ]]; then diff --git a/env/WCOSS2.env b/env/WCOSS2.env index 7f8ffc73ae..3ca691995a 100755 --- a/env/WCOSS2.env +++ b/env/WCOSS2.env @@ -176,11 +176,11 @@ elif [[ "${step}" = "sfcanl" ]]; then export APRUN_CYCLE="${APRUN_default}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " elif [[ "${step}" = "eobs" ]]; then @@ -268,11 +268,11 @@ elif [[ "${step}" = "esfc" ]]; then export APRUN_CYCLE="${APRUN_default} -ppn ${tasks_per_node_cycle} --cpu-bind depth --depth ${NTHREADS_CYCLE}" ntdiv6=$((ntasks/6)) - ntasks_reg=$((ntdiv6*6)) - if [[ ${ntasks_reg} -gt 36 ]]; then - ntasks_reg=36 + ntasks_regrid=$((ntdiv6*6)) + if [[ ${ntasks_regrid} -gt 36 ]]; then + ntasks_regrid=36 fi - export APRUN_REGR="${launcher} -n ${ntasks_reg} " + export APRUN_REGRID="${launcher} -n ${ntasks_regrid} " elif [[ "${step}" = "epos" ]]; then diff --git a/jobs/JGLOBAL_ATMOS_SFCANL b/jobs/JGLOBAL_ATMOS_SFCANL index 954661bc5c..ed8e6aebe2 100755 --- a/jobs/JGLOBAL_ATMOS_SFCANL +++ b/jobs/JGLOBAL_ATMOS_SFCANL @@ -25,7 +25,7 @@ YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ COMOUT_ATMOS_RESTART:COM_ATMOS_RESTART_TMPL RUN="enkfgdas" MEMDIR="ensstat" YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ - COM_ATMOS_ENKF_ANALYSIS_STAT:COM_ATMOS_ANALYSIS_TMPL + COMIN_ATMOS_ENKF_ANALYSIS_STAT:COM_ATMOS_ANALYSIS_TMPL mkdir -p "${COMOUT_ATMOS_RESTART}" diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index ee9eaa508b..1e62f923d5 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -163,7 +163,7 @@ if [ $DOIAU = "YES" ]; then COMIN_ATMOS_RESTART_MEM_PREV:COM_ATMOS_RESTART_TMPL MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ - COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL + COMIN_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ COMIN_SNOW_ANALYSIS_MEM:COM_SNOW_ANALYSIS_TMPL @@ -184,7 +184,7 @@ if [ $DOIAU = "YES" ]; then if [[ ${GSI_SOILANAL} = "YES" ]]; then FHR=${LFHR} - ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ + ${NCP} "${COMIN_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" fi @@ -206,9 +206,6 @@ if [ $DOIAU = "YES" ]; then MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ COM_ATMOS_RESTART_MEM:COM_ATMOS_RESTART_TMPL - MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ - COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL - [[ ${TILE_NUM} -eq 1 ]] && mkdir -p "${COM_ATMOS_RESTART_MEM}" cpfs "${DATA}/fnbgso.${cmem}" "${COM_ATMOS_RESTART_MEM}/${bPDY}.${bcyc}0000.sfcanl_data.tile${n}.nc" @@ -240,7 +237,7 @@ if [ $DOSFCANL_ENKF = "YES" ]; then COMIN_ATMOS_RESTART_MEM_PREV:COM_ATMOS_RESTART_TMPL MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ - COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL + COMIN_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL # determine where the input snow restart files come from if [[ "${DO_JEDISNOWDA:-}" == "YES" ]]; then @@ -257,7 +254,7 @@ if [ $DOSFCANL_ENKF = "YES" ]; then if [[ ${GSI_SOILANAL} = "YES" ]]; then FHR=${LFHR} - ${NCP} "${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ + ${NCP} "${COMIN_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" fi done diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index 961ea867fd..b2d41510ca 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -238,7 +238,7 @@ for imem in $(seq 1 $NMEM_ENS); do "incr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi fi - if [[ $GSI_SOILANAL = "YES" ]]; then + if [[ ${GSI_SOILANAL} = "YES" ]]; then ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}sfci00${FHR}.nc" \ "sfcincr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi @@ -250,11 +250,11 @@ for FHR in $nfhrs; do ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}atmf00${FHR}.ensmean.nc" \ "sfg_${PDY}${cyc}_fhr0${FHR}_ensmean" - if [ $cnvw_option = ".true." ]; then + if [[ $cnvw_option = ".true." ]]; then ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "sfgsfc_${PDY}${cyc}_fhr0${FHR}_ensmean" fi - if [[ $GSI_SOILANAL = "YES" ]]; then + if [[ ${GSI_SOILANAL} = "YES" ]]; then ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "bfg_${PDY}${cyc}_fhr0${FHR}_ensmean" ${NLN} "${COM_ATMOS_ANALYSIS_STAT}/${APREFIX}sfci00${FHR}.nc" \ diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index 60ecb93d1c..b411944206 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -117,26 +117,26 @@ fi # Collect the dates in the window to update surface restarts gcycle_dates=("${PDY}${cyc}") # Always update surface restarts at middle of window soilinc_fhrs=("${assim_freq}") # increment file at middle of window -LFHR=$assim_freq +LFHR=${assim_freq} if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of window half_window=$(( assim_freq / 2 )) - soilinc_fhrs+=($half_window) + soilinc_fhrs+=("${half_window}") LFHR=-1 BDATE=$(date --utc -d "${PDY} ${cyc} - ${half_window} hours" +%Y%m%d%H) gcycle_dates+=("${BDATE}") fi # if doing GSI soil anaysis, copy increment file and re-grid it to native model resolution -if [ $GSI_SOILANAL = "YES" ]; then +if [[ ${GSI_SOILANAL} = "YES" ]]; then - export COM_SOIL_ANALYSIS_MEM=${COM_ATMOS_ENKF_ANALYSIS_STAT} - export COM_ATMOS_ANALYSIS_MEM=${COMIN_ATMOS_ANALYSIS} + export COMIN_SOIL_ANALYSIS_MEM=${COMIN_ATMOS_ENKF_ANALYSIS_STAT} + export COMOUT_ATMOS_ANALYSIS_MEM=${COMIN_ATMOS_ANALYSIS} export CASE_IN=${CASE_ENS} - export CASE_OUT=$CASE - export OCNRES_OUT=$OCNRES + export CASE_OUT=${CASE} + export OCNRES_OUT=${OCNRES} export LFHR - $REGRIDSH + ${REGRIDSH} fi diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index ec67ea2cdf..95ba8a0ddf 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -99,19 +99,20 @@ for imem in $(seq 1 ${NMEM_REGRID}); do memchar="mem${cmem}" MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ - COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL + COMOUT_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL - COM_SOIL_ANALYSIS_MEM=${COM_ATMOS_ANALYSIS_MEM} + MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ + COMIN_SOIL_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL fi for FHR in "${soilinc_fhrs[@]}"; do - ln -fs ${COM_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc \ + ln -fs ${COMIN_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc \ ${DATA}/enkfgdas.sfci.nc - ${APRUN_REGR} ${REGRID_EXEC} ${REDOUT}${PGMOUT} ${REDERR}${PGMERR} + ${APRUN_REGRID} ${REGRID_EXEC} ${REDOUT}${PGMOUT} ${REDERR}${PGMERR} for n in $(seq 1 ${ntiles}); do - mv ${DATA}/sfci.tile${n}.nc ${COM_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc + mv ${DATA}/sfci.tile${n}.nc ${COMOUT_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc done done done From 65e8cc458f37b8978ef5f6977bb7462fed1bea20 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 5 Feb 2025 01:35:06 +0000 Subject: [PATCH 20/50] spelling --- ush/regrid_gsiSfcIncr_to_tile.sh | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 95ba8a0ddf..cb64343c84 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -40,10 +40,10 @@ LSOIL_INCR=${LSOIL_INCR:-2} n_vars=$(( LSOIL_INCR*2 )) soil_incr_vars="" -for vi in $( seq 1 ${LSOIL_INCR} ); do +for vi in $( seq 1 "${LSOIL_INCR}" ); do soil_incr_vars=${soil_incr_vars}'"soilt'${vi}'_inc"', done -for vi in $( seq 1 ${LSOIL_INCR} ); do +for vi in $( seq 1 "${LSOIL_INCR}" ); do soil_incr_vars=${soil_incr_vars}'"slc'${vi}'_inc"', done @@ -76,26 +76,26 @@ cat << EOF > regrid.nml EOF # fixed input files -ln -sf ${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc gaussian_scrip.nc +ln -sf "${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc" "gaussian_scrip.nc" # fixed output files -for n in $(seq 1 ${ntiles}); do - ln -sf ${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc vegetation_type.tile${n}.nc +for n in $(seq 1 "${ntiles}"); do + ln -sf "${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc" "vegetation_type.tile${n}.nc" done -if (( ${LFHR} >= 0 )); then - soilinc_fhrs=(${LFHR}) +if (( $LFHR >= 0 )); then + soilinc_fhrs=("${LFHR}") else # construct restart times for deterministic member - soilinc_fhrs=(${assim_freq}) # increment file at middle of window + soilinc_fhrs=("${assim_freq}") # increment file at middle of window if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of window half_window=$(( assim_freq / 2 )) - soilinc_fhrs+=(${half_window}) + soilinc_fhrs+=("${half_window}") fi fi -for imem in $(seq 1 ${NMEM_REGRID}); do - if [[ ${NMEM_REGRID} > 1 ]]; then - cmem=$(printf %03i ${imem}) +for imem in $(seq 1 "${NMEM_REGRID}"); do + if (( ${NMEM_REGRID} > 1 )); then + cmem=$(printf %03i "${imem}") memchar="mem${cmem}" MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ @@ -106,13 +106,13 @@ for imem in $(seq 1 ${NMEM_REGRID}); do fi for FHR in "${soilinc_fhrs[@]}"; do - ln -fs ${COMIN_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc \ - ${DATA}/enkfgdas.sfci.nc + ln -fs "${COMIN_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ + "${DATA}/enkfgdas.sfci.nc" ${APRUN_REGRID} ${REGRID_EXEC} ${REDOUT}${PGMOUT} ${REDERR}${PGMERR} - for n in $(seq 1 ${ntiles}); do - mv ${DATA}/sfci.tile${n}.nc ${COMOUT_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc + for n in $(seq 1 "${ntiles}"); do + mv "${DATA}/sfci.tile${n}.nc" "${COMOUT_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" done done done From 376cf3350d081e1b20d9a48cb63a5dc3594fe59f Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 5 Feb 2025 01:50:53 +0000 Subject: [PATCH 21/50] more spelling --- ush/regrid_gsiSfcIncr_to_tile.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index cb64343c84..243bbc86e9 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -83,7 +83,7 @@ for n in $(seq 1 "${ntiles}"); do ln -sf "${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc" "vegetation_type.tile${n}.nc" done -if (( $LFHR >= 0 )); then +if (( LFHR >= 0 )); then soilinc_fhrs=("${LFHR}") else # construct restart times for deterministic member soilinc_fhrs=("${assim_freq}") # increment file at middle of window @@ -94,7 +94,7 @@ else # construct restart times for deterministic member fi for imem in $(seq 1 "${NMEM_REGRID}"); do - if (( ${NMEM_REGRID} > 1 )); then + if (( NMEM_REGRID > 1 )); then cmem=$(printf %03i "${imem}") memchar="mem${cmem}" @@ -109,7 +109,7 @@ for imem in $(seq 1 "${NMEM_REGRID}"); do ln -fs "${COMIN_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ "${DATA}/enkfgdas.sfci.nc" - ${APRUN_REGRID} ${REGRID_EXEC} ${REDOUT}${PGMOUT} ${REDERR}${PGMERR} + "${APRUN_REGRID}" "${REGRID_EXEC}" "${REDOUT}${PGMOUT}" "${REDERR}${PGMERR}" for n in $(seq 1 "${ntiles}"); do mv "${DATA}/sfci.tile${n}.nc" "${COMOUT_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" From 4f50aae176a9d731c6873157b81f87e0ef11ffd1 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 5 Feb 2025 17:48:09 +0000 Subject: [PATCH 22/50] Response to reviews. --- .github/CODEOWNERS | 2 +- jobs/rocoto/esfc.sh | 2 +- jobs/rocoto/sfcanl.sh | 2 +- parm/config/gfs/config.anal | 2 +- parm/config/gfs/config.base | 2 +- parm/config/gfs/config.esfc | 3 ++- parm/config/gfs/config.sfcanl | 2 +- parm/config/gfs/yaml/defaults.yaml | 2 +- scripts/exgdas_enkf_sfc.sh | 10 ++++------ scripts/exgdas_enkf_update.sh | 8 ++++---- scripts/exglobal_atmos_sfcanl.sh | 6 +++--- workflow/applications/gfs_cycled.py | 2 +- 12 files changed, 21 insertions(+), 22 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3fa75581aa..3d29174401 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -181,7 +181,7 @@ syndat_qctropcy.sh @JiayiPeng-NOAA tropcy_relocate.sh @JiayiPeng-NOAA tropcy_relocate_extrkr.sh @JiayiPeng-NOAA wave_*.sh @JessicaMeixner-NOAA @sbanihash -regrid_gsiSfcIncr_to_tile.sh @ClaraDraper-NOAA +ush/regrid_gsiSfcIncr_to_tile.sh @ClaraDraper-NOAA # ush/python ush/python/pygfs/jedi/__init__.py @aerorahul @DavidNew-NOAA diff --git a/jobs/rocoto/esfc.sh b/jobs/rocoto/esfc.sh index 3229cf3bcd..1c87d6d6fd 100755 --- a/jobs/rocoto/esfc.sh +++ b/jobs/rocoto/esfc.sh @@ -4,7 +4,7 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -# CSD for GSI_SOILANAL, need ufsda modules (temporary, until merged) +# CSD for DO_GSISOILDA, need ufsda modules (temporary, until merged) . ${HOMEgfs}/ush/load_fv3gfs_modules.sh #. ${HOMEgfs}/ush/load_ufsda_modules.sh status=$? diff --git a/jobs/rocoto/sfcanl.sh b/jobs/rocoto/sfcanl.sh index fb562ae18b..1ed5a9fd3a 100755 --- a/jobs/rocoto/sfcanl.sh +++ b/jobs/rocoto/sfcanl.sh @@ -4,7 +4,7 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -# CSD for GSI_SOILANAL, need ufsda modules (temporary, until merged) +# CSD for DO_GSISOILDA, need ufsda modules (temporary, until merged) . ${HOMEgfs}/ush/load_fv3gfs_modules.sh #. ${HOMEgfs}/ush/load_ufsda_modules.sh status=$? diff --git a/parm/config/gfs/config.anal b/parm/config/gfs/config.anal index 123bd6decd..cd4151cad2 100644 --- a/parm/config/gfs/config.anal +++ b/parm/config/gfs/config.anal @@ -48,7 +48,7 @@ export OZINFO=${FIXgfs}/gsi/global_ozinfo.txt export SATINFO=${FIXgfs}/gsi/global_satinfo.txt export OBERROR=${FIXgfs}/gsi/prepobs_errtable.global -if [[ ${GSI_SOILANAL} = "YES" ]]; then +if [[ ${DO_GSISOILDA} = "YES" ]]; then export hofx_2m_sfcfile=".true." export reducedgrid=".false." # not possible for sfc analysis, Jeff Whitaker says it's not useful anyway export paranc=".false." # temporary until sfc io coded for parance (PR being prepared by T. Gichamo) diff --git a/parm/config/gfs/config.base b/parm/config/gfs/config.base index e28e7ef226..ccb163db2c 100644 --- a/parm/config/gfs/config.base +++ b/parm/config/gfs/config.base @@ -435,7 +435,7 @@ else export restart_interval_gdas="6" fi -export GSI_SOILANAL=@GSI_SOILANAL@ +export DO_GSISOILDA=@DO_GSISOILDA@ # turned on nsst in anal and/or fcst steps, and turn off rtgsst export DONST="YES" diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index 8391133c5f..e42ef63329 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -22,10 +22,11 @@ if [[ "${DO_JEDIATMENS}" == "YES" ]]; then fi # set up soil analysis -if [[ ${GSI_SOILANAL} = "YES" ]]; then +if [[ ${DO_GSISOILDA} = "YES" ]]; then export DO_SOI_INC=".true." export GCYCLE_INTERP_LNDINC=".false." export LSOIL_INCR=2 + export REGRIDSH=${REGRIDSH:-${USHgfs}/regrid_gsiSfcIncr_to_tile.sh} fi echo "END: config.esfc" diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index 2f079de48c..583b82f9df 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -12,7 +12,7 @@ echo "BEGIN: config.sfcanl" if [[ "${DO_JEDIATMVAR}" == "YES" ]]; then export DONST="NO" fi -if [[ "${GSI_SOILANAL}" = "YES" ]]; then +if [[ "${DO_GSISOILDA}" = "YES" ]]; then export DO_LNDINC=".true." export DO_SOI_INC=".true." export GCYCLE_INTERP_LNDINC=".false." diff --git a/parm/config/gfs/yaml/defaults.yaml b/parm/config/gfs/yaml/defaults.yaml index 55f4b03f50..5b09067b7e 100644 --- a/parm/config/gfs/yaml/defaults.yaml +++ b/parm/config/gfs/yaml/defaults.yaml @@ -19,7 +19,7 @@ base: FHMAX_HF_GFS: 0 FCST_BREAKPOINTS: "" DO_VRFY_OCEANDA: "NO" - GSI_SOILANAL: "NO" + DO_GSISOILDA: "NO" EUPD_CYC: "gdas" FHMAX_ENKF_GFS: 12 DOHYBVAR_OCN: "NO" diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 1e62f923d5..b3422ace9c 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -24,7 +24,7 @@ pwd=$(pwd) # Base variables DONST=${DONST:-"NO"} -GSI_SOILANAL=${GSI_SOILANAL:-"NO"} +DO_GSISOILDA=${DO_GSISOILDA:-"NO"} DOSFCANL_ENKF=${DOSFCANL_ENKF:-"YES"} export CASE=${CASE:-384} ntiles=${ntiles:-6} @@ -65,8 +65,6 @@ export CYCLVARS=${CYCLVARS:-"FSNOL=-2.,FSNOS=99999.,"} export FHOUR=${FHOUR:-0} export DELTSFC=${DELTSFC:-6} -REGRIDSH=${REGRIDSH:-${USHgfs}/regrid_gsiSfcIncr_to_tile.sh} - APRUN_ESFC=${APRUN_ESFC:-${APRUN:-""}} NTHREADS_ESFC=${NTHREADS_ESFC:-${NTHREADS:-1}} @@ -118,7 +116,7 @@ else fi # regrid the surface increment files -if [[ ${GSI_SOILANAL} = "YES" ]]; then +if [[ ${DO_GSISOILDA} = "YES" ]]; then export CASE_IN=${CASE_ENS} export CASE_OUT=${CASE_ENS} @@ -182,7 +180,7 @@ if [ $DOIAU = "YES" ]; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_grid.tile${n}.nc" "${DATA}/fngrid.${cmem}" ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" - if [[ ${GSI_SOILANAL} = "YES" ]]; then + if [[ ${DO_GSISOILDA} = "YES" ]]; then FHR=${LFHR} ${NCP} "${COMIN_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" @@ -252,7 +250,7 @@ if [ $DOSFCANL_ENKF = "YES" ]; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_grid.tile${n}.nc" "${DATA}/fngrid.${cmem}" ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" - if [[ ${GSI_SOILANAL} = "YES" ]]; then + if [[ ${DO_GSISOILDA} = "YES" ]]; then FHR=${LFHR} ${NCP} "${COMIN_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index b2d41510ca..1cf314c37b 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -91,7 +91,7 @@ else mem_offset=0 fi INCREMENTS_TO_ZERO=${INCREMENTS_TO_ZERO:-"'NONE'"} -GSI_SOILANAL=${GSI_SOILANAL:-"NO"} +DO_GSISOILDA=${DO_GSISOILDA:-"NO"} ################################################################################ @@ -213,7 +213,7 @@ for imem in $(seq 1 $NMEM_ENS); do for FHR in $nfhrs; do ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}atmf00${FHR}${ENKF_SUFFIX}.nc" \ "sfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" - if [[ $GSI_SOILANAL = "YES" ]]; then + if [[ $DO_GSISOILDA = "YES" ]]; then ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}${ENKF_SUFFIX}.nc" \ "bfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi @@ -238,7 +238,7 @@ for imem in $(seq 1 $NMEM_ENS); do "incr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi fi - if [[ ${GSI_SOILANAL} = "YES" ]]; then + if [[ ${DO_GSISOILDA} = "YES" ]]; then ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}sfci00${FHR}.nc" \ "sfcincr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi @@ -254,7 +254,7 @@ for FHR in $nfhrs; do ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "sfgsfc_${PDY}${cyc}_fhr0${FHR}_ensmean" fi - if [[ ${GSI_SOILANAL} = "YES" ]]; then + if [[ ${DO_GSISOILDA} = "YES" ]]; then ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "bfg_${PDY}${cyc}_fhr0${FHR}_ensmean" ${NLN} "${COM_ATMOS_ANALYSIS_STAT}/${APREFIX}sfci00${FHR}.nc" \ diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index b411944206..f227a958a8 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -40,7 +40,7 @@ export FHOUR=${FHOUR:-0} export DELTSFC=${DELTSFC:-6} # Land DA options -export GSI_SOILANAL=${GSI_SOILANAL:-"NO"} +export DO_GSISOILDA=${DO_GSISOILDA:-"NO"} export DO_JEDISNOWDA=${DO_JEDISNOWDA:-"NO"} # Other info used in this script @@ -127,7 +127,7 @@ if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of fi # if doing GSI soil anaysis, copy increment file and re-grid it to native model resolution -if [[ ${GSI_SOILANAL} = "YES" ]]; then +if [[ ${DO_GSISOILDA} = "YES" ]]; then export COMIN_SOIL_ANALYSIS_MEM=${COMIN_ATMOS_ENKF_ANALYSIS_STAT} export COMOUT_ATMOS_ANALYSIS_MEM=${COMIN_ATMOS_ANALYSIS} @@ -149,7 +149,7 @@ for hr in "${!gcycle_dates[@]}"; do datestr="${gcycle_date:0:8}.${gcycle_date:8:2}0000" - if [[ ${GSI_SOILANAL} = "YES" ]]; then + if [[ ${DO_GSISOILDA} = "YES" ]]; then for (( nn=1; nn <= ntiles; nn++ )); do cp "${COMIN_ATMOS_ANALYSIS}/sfci00${FHR}.tile${nn}.nc" \ "${DATA}/soil_xainc.00${nn}" diff --git a/workflow/applications/gfs_cycled.py b/workflow/applications/gfs_cycled.py index 1224fd4a47..b6f07a0200 100644 --- a/workflow/applications/gfs_cycled.py +++ b/workflow/applications/gfs_cycled.py @@ -47,7 +47,7 @@ def _get_run_options(self, conf: Configuration) -> Dict[str, Any]: run_options[run]['do_jediatmens'] = base.get('DO_JEDIATMENS', False) run_options[run]['do_jediocnvar'] = base.get('DO_JEDIOCNVAR', False) run_options[run]['do_jedisnowda'] = base.get('DO_JEDISNOWDA', False) - run_options[run]['do_gsisoilda'] = base.get('GSI_SOILANAL', False) + run_options[run]['do_gsisoilda'] = base.get('DO_GSISOILDA', False) run_options[run]['do_mergensst'] = base.get('DO_MERGENSST', False) run_options[run]['do_vrfy_oceanda'] = base.get('DO_VRFY_OCEANDA', False) From 0f3b810ca28dd99eda800cd42b3602b00ba522b8 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 5 Feb 2025 19:31:10 +0000 Subject: [PATCH 23/50] Changes for review. --- .github/CODEOWNERS | 2 +- parm/config/gfs/config.sfcanl | 1 + scripts/exglobal_atmos_sfcanl.sh | 20 ++++++--------- ush/regrid_gsiSfcIncr_to_tile.sh | 42 +++++++++++++++----------------- 4 files changed, 30 insertions(+), 35 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3d29174401..3fa75581aa 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -181,7 +181,7 @@ syndat_qctropcy.sh @JiayiPeng-NOAA tropcy_relocate.sh @JiayiPeng-NOAA tropcy_relocate_extrkr.sh @JiayiPeng-NOAA wave_*.sh @JessicaMeixner-NOAA @sbanihash -ush/regrid_gsiSfcIncr_to_tile.sh @ClaraDraper-NOAA +regrid_gsiSfcIncr_to_tile.sh @ClaraDraper-NOAA # ush/python ush/python/pygfs/jedi/__init__.py @aerorahul @DavidNew-NOAA diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index 583b82f9df..4ac1e0a1fc 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -17,6 +17,7 @@ if [[ "${DO_GSISOILDA}" = "YES" ]]; then export DO_SOI_INC=".true." export GCYCLE_INTERP_LNDINC=".false." export LSOIL_INCR=2 + export REGRID_EXEC=${REGRID_EXEC:-"${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x"} fi echo "END: config.sfcanl" diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index f227a958a8..92b952880d 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -28,7 +28,7 @@ cd "${DATA}" || exit 99 # Dependent Scripts and Executables CYCLESH=${CYCLESH:-${USHgfs}/global_cycle.sh} -REGRIDSH=${REGRIDSH:-${USHgfs}/regrid_gsiSfcIncr_to_tile.sh} +REGRIDSH=${REGRIDSH:-"${USHgfs}/regrid_gsiSfcIncr_to_tile.sh"} export CYCLEXEC=${CYCLEXEC:-${EXECgfs}/global_cycle} NTHREADS_CYCLE=${NTHREADS_CYCLE:-24} APRUN_CYCLE=${APRUN_CYCLE:-${APRUN:-""}} @@ -39,10 +39,6 @@ export CYCLVARS=${CYCLVARS:-""} export FHOUR=${FHOUR:-0} export DELTSFC=${DELTSFC:-6} -# Land DA options -export DO_GSISOILDA=${DO_GSISOILDA:-"NO"} -export DO_JEDISNOWDA=${DO_JEDISNOWDA:-"NO"} - # Other info used in this script RUN_GETGES=${RUN_GETGES:-"NO"} GETGESSH=${GETGESSH:-"getges.sh"} @@ -129,14 +125,14 @@ fi # if doing GSI soil anaysis, copy increment file and re-grid it to native model resolution if [[ ${DO_GSISOILDA} = "YES" ]]; then - export COMIN_SOIL_ANALYSIS_MEM=${COMIN_ATMOS_ENKF_ANALYSIS_STAT} - export COMOUT_ATMOS_ANALYSIS_MEM=${COMIN_ATMOS_ANALYSIS} - export CASE_IN=${CASE_ENS} - export CASE_OUT=${CASE} - export OCNRES_OUT=${OCNRES} + export COMIN_SOIL_ANALYSIS_MEM="${COMIN_ATMOS_ENKF_ANALYSIS_STAT}" + export COMOUT_ATMOS_ANALYSIS_MEM="${COMIN_ATMOS_ANALYSIS}" + export CASE_IN="${CASE_ENS}" + export CASE_OUT="${CASE}" + export OCNRES_OUT="${OCNRES}" export LFHR - ${REGRIDSH} + "${REGRIDSH}" fi @@ -151,7 +147,7 @@ for hr in "${!gcycle_dates[@]}"; do if [[ ${DO_GSISOILDA} = "YES" ]]; then for (( nn=1; nn <= ntiles; nn++ )); do - cp "${COMIN_ATMOS_ANALYSIS}/sfci00${FHR}.tile${nn}.nc" \ + ${NCP} "${COMIN_ATMOS_ANALYSIS}/sfci00${FHR}.tile${nn}.nc" \ "${DATA}/soil_xainc.00${nn}" done fi diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 243bbc86e9..49ae96978e 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -16,8 +16,6 @@ export PGMERR=${PGMERR:-${pgmerr:-'&2'}} export REDOUT=${REDOUT:-'1>'} export REDERR=${REDERR:-'2>'} -REGRID_EXEC=${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x - export PGM=${REGRID_EXEC} export pgm=${PGM} @@ -26,11 +24,9 @@ CASE_IN=${CASE_IN:-${CASE_ENS}} LFHR=${LFHR:-6} # get resolutions -CRES_IN="${CASE_IN:1}" -LONB_CASE_IN=$((4*CRES_IN)) -LATB_CASE_IN=$((2*CRES_IN)) +LONB_CASE_IN=$((4*${CASE_IN:1})) +LATB_CASE_IN=$((2*${CASE_IN:1})) -CRES_OUT="${CASE_OUT:1}" ntiles=6 APREFIX_ENS="enkfgdas.t${cyc}z." @@ -58,38 +54,40 @@ cat << EOF > regrid.nml ires=${LONB_CASE_IN}, jres=${LATB_CASE_IN}, fname="enkfgdas.sfci.nc", - dir="./", + dir="${DATA}", fname_coord="gaussian_scrip.nc", dir_coord="./" / &output gridtype="fv3_rst", - ires=${CRES_OUT}, - jres=${CRES_OUT}, + ires=${CASE_OUT:1}, + jres=${CASE_OUT:1}, fname="sfci", - dir="./", + dir="${DATA}", fname_mask="vegetation_type" - dir_mask="./" + dir_mask="${DATA}" dir_coord="${FIXorog}", / EOF # fixed input files -ln -sf "${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc" "gaussian_scrip.nc" +${NCP} "${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc" & + "${DATA}/gaussian_scrip.nc" # fixed output files for n in $(seq 1 "${ntiles}"); do - ln -sf "${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc" "vegetation_type.tile${n}.nc" + ${NCP} "${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc" & + "${DATA}/vegetation_type.tile${n}.nc" done if (( LFHR >= 0 )); then - soilinc_fhrs=("${LFHR}") + soilinc_fhrs=("${LFHR}") else # construct restart times for deterministic member soilinc_fhrs=("${assim_freq}") # increment file at middle of window if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of window - half_window=$(( assim_freq / 2 )) - soilinc_fhrs+=("${half_window}") + half_window=$(( assim_freq / 2 )) + soilinc_fhrs+=("${half_window}") fi fi @@ -106,14 +104,14 @@ for imem in $(seq 1 "${NMEM_REGRID}"); do fi for FHR in "${soilinc_fhrs[@]}"; do - ln -fs "${COMIN_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ - "${DATA}/enkfgdas.sfci.nc" + ${NCP} "${COMIN_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ + "${DATA}/enkfgdas.sfci.nc" - "${APRUN_REGRID}" "${REGRID_EXEC}" "${REDOUT}${PGMOUT}" "${REDERR}${PGMERR}" + "${APRUN_REGRID}" "${REGRID_EXEC}" "${REDOUT}${PGMOUT}" "${REDERR}${PGMERR}" - for n in $(seq 1 "${ntiles}"); do - mv "${DATA}/sfci.tile${n}.nc" "${COMOUT_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" - done + for n in $(seq 1 "${ntiles}"); do + cpfs "${DATA}/sfci.tile${n}.nc" "${COMOUT_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" + done done done From a19d56d2c65ecd3b21fe151c3279faab85291c5b Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 5 Feb 2025 19:40:57 +0000 Subject: [PATCH 24/50] exgdas_enkf_upd spelling errors. --- scripts/exgdas_enkf_sfc.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index b3422ace9c..8ec43b4571 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -213,7 +213,7 @@ if [ $DOIAU = "YES" ]; then fi -if [ $DOSFCANL_ENKF = "YES" ]; then +if [[ $DOSFCANL_ENKF = "YES" ]]; then for n in $(seq 1 $ntiles); do export TILE_NUM=$n @@ -225,8 +225,8 @@ if [ $DOSFCANL_ENKF = "YES" ]; then smem=$((smem - NMEM_ENS_MAX)) fi gmemchar="mem"$(printf %03i "$smem") - cmem=$(printf %03i $imem) - memchar="mem$cmem" + cmem=$(printf %03i ${imem}) + memchar="mem${cmem}" RUN="${GDUMP_ENS}" MEMDIR=${gmemchar} YMD=${PDY} HH=${cyc} declare_from_tmpl \ COMIN_SNOW_ANALYSIS_MEM:COM_SNOW_ANALYSIS_TMPL @@ -289,4 +289,4 @@ fi cd "${pwd}" || exit 1 -exit ${err} +exit "${err}" From d726dbeb9865b34486df7acc4b9f97ae72c4be33 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 5 Feb 2025 21:03:29 +0000 Subject: [PATCH 25/50] Cleaning up global_cycle variable names. --- parm/config/gfs/config.esfc | 4 ++-- parm/config/gfs/config.sfcanl | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index e42ef63329..cd1dc403ce 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -23,8 +23,8 @@ fi # set up soil analysis if [[ ${DO_GSISOILDA} = "YES" ]]; then - export DO_SOI_INC=".true." - export GCYCLE_INTERP_LNDINC=".false." + export GCYCLE_DO_SOILINCR=".true." + export GCYCLE_INTERP_LANDINCR=".false." export LSOIL_INCR=2 export REGRIDSH=${REGRIDSH:-${USHgfs}/regrid_gsiSfcIncr_to_tile.sh} fi diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index 4ac1e0a1fc..40b0c2b567 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -13,9 +13,8 @@ if [[ "${DO_JEDIATMVAR}" == "YES" ]]; then export DONST="NO" fi if [[ "${DO_GSISOILDA}" = "YES" ]]; then - export DO_LNDINC=".true." - export DO_SOI_INC=".true." - export GCYCLE_INTERP_LNDINC=".false." + export GCYCLE_DO_SOILINCR=".true." + export GCYCLE_INTERP_LANDINCR=".false." export LSOIL_INCR=2 export REGRID_EXEC=${REGRID_EXEC:-"${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x"} fi From c22a8c80deefd54bec92bc26ecdd57c0822ebff1 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Thu, 6 Feb 2025 09:56:05 -0700 Subject: [PATCH 26/50] Update scripts/exgdas_enkf_sfc.sh Co-authored-by: Cory Martin --- scripts/exgdas_enkf_sfc.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 8ec43b4571..82d9949693 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -181,8 +181,7 @@ if [ $DOIAU = "YES" ]; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" if [[ ${DO_GSISOILDA} = "YES" ]]; then - FHR=${LFHR} - ${NCP} "${COMIN_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ + ${NCP} "${COMIN_ATMOS_ANALYSIS_MEM}/sfci00${LFHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" fi From fd1603598693db7649676f1cb4e94e5a6b043427 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Thu, 6 Feb 2025 09:56:28 -0700 Subject: [PATCH 27/50] Update scripts/exgdas_enkf_sfc.sh Co-authored-by: Cory Martin --- scripts/exgdas_enkf_sfc.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 82d9949693..fab86b2bb6 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -250,8 +250,7 @@ if [[ $DOSFCANL_ENKF = "YES" ]]; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}.mx${OCNRES}_oro_data.tile${n}.nc" "${DATA}/fnorog.${cmem}" if [[ ${DO_GSISOILDA} = "YES" ]]; then - FHR=${LFHR} - ${NCP} "${COMIN_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" \ + ${NCP} "${COMIN_ATMOS_ANALYSIS_MEM}/sfci00${LFHR}.tile${n}.nc" \ "${DATA}/soil_xainc.${cmem}" fi done From 36d21a6747190e38d0b2f18e867da2756c4c8ede Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Thu, 6 Feb 2025 17:05:02 +0000 Subject: [PATCH 28/50] Cory's review. --- env/GAEAC5.env | 1 + env/GAEAC6.env | 1 + env/HERA.env | 1 + env/HERCULES.env | 1 + env/JET.env | 1 + env/ORION.env | 1 + env/WCOSS2.env | 1 + parm/config/gfs/config.anal | 2 +- 8 files changed, 8 insertions(+), 1 deletion(-) diff --git a/env/GAEAC5.env b/env/GAEAC5.env index 954bb9e4c0..f05d04fd09 100755 --- a/env/GAEAC5.env +++ b/env/GAEAC5.env @@ -176,6 +176,7 @@ case ${step} in [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + # REGRID requires multiple of 6 tasks ntdiv6=$((ntasks/6)) ntasks_regrid=$((ntdiv6*6)) if [[ ${ntasks_regrid} -gt 36 ]]; then diff --git a/env/GAEAC6.env b/env/GAEAC6.env index 10595a383f..5f5540c55a 100755 --- a/env/GAEAC6.env +++ b/env/GAEAC6.env @@ -176,6 +176,7 @@ case ${step} in [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + # REGRID requires multiple of 6 tasks ntdiv6=$((ntasks/6)) ntasks_regrid=$((ntdiv6*6)) if [[ ${ntasks_regrid} -gt 36 ]]; then diff --git a/env/HERA.env b/env/HERA.env index 7b7f64030a..02780b88a5 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -183,6 +183,7 @@ elif [[ "${step}" = "sfcanl" ]]; then export NTHREADS_CYCLE=${threads_per_task:-14} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + # REGRID requires multiple of 6 tasks ntdiv6=$((ntasks/6)) ntasks_regrid=$((ntdiv6*6)) if [[ ${ntasks_regrid} -gt 36 ]]; then diff --git a/env/HERCULES.env b/env/HERCULES.env index 63f2ec6b26..75dc89bf6b 100755 --- a/env/HERCULES.env +++ b/env/HERCULES.env @@ -187,6 +187,7 @@ case ${step} in [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + # REGRID requires multiple of 6 tasks ntdiv6=$((ntasks/6)) ntasks_regrid=$((ntdiv6*6)) if [[ ${ntasks_regrid} -gt 36 ]]; then diff --git a/env/JET.env b/env/JET.env index 3c744bf197..3b6373d763 100755 --- a/env/JET.env +++ b/env/JET.env @@ -156,6 +156,7 @@ elif [[ "${step}" = "sfcanl" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default}" + # REGRID requires multiple of 6 tasks ntdiv6=$((ntasks/6)) ntasks_regrid=$((ntdiv6*6)) if [[ ${ntasks_regrid} -gt 36 ]]; then diff --git a/env/ORION.env b/env/ORION.env index c67b2cb959..e2ab988809 100755 --- a/env/ORION.env +++ b/env/ORION.env @@ -184,6 +184,7 @@ elif [[ "${step}" = "sfcanl" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default} --cpus-per-task=${NTHREADS_CYCLE}" + # REGRID requires multiple of 6 tasks ntdiv6=$((ntasks/6)) ntasks_regrid=$((ntdiv6*6)) if [[ ${ntasks_regrid} -gt 36 ]]; then diff --git a/env/WCOSS2.env b/env/WCOSS2.env index 3ca691995a..a6be4464e2 100755 --- a/env/WCOSS2.env +++ b/env/WCOSS2.env @@ -175,6 +175,7 @@ elif [[ "${step}" = "sfcanl" ]]; then [[ ${NTHREADS_CYCLE} -gt ${max_tasks_per_node} ]] && export NTHREADS_CYCLE=${max_tasks_per_node} export APRUN_CYCLE="${APRUN_default}" + # REGRID requires multiple of 6 tasks ntdiv6=$((ntasks/6)) ntasks_regrid=$((ntdiv6*6)) if [[ ${ntasks_regrid} -gt 36 ]]; then diff --git a/parm/config/gfs/config.anal b/parm/config/gfs/config.anal index cd4151cad2..b66ba0c800 100644 --- a/parm/config/gfs/config.anal +++ b/parm/config/gfs/config.anal @@ -51,7 +51,7 @@ export OBERROR=${FIXgfs}/gsi/prepobs_errtable.global if [[ ${DO_GSISOILDA} = "YES" ]]; then export hofx_2m_sfcfile=".true." export reducedgrid=".false." # not possible for sfc analysis, Jeff Whitaker says it's not useful anyway - export paranc=".false." # temporary until sfc io coded for parance (PR being prepared by T. Gichamo) + # NOTE: convinfo here will be over-written by date-specific files below. export CONVINFO=${FIXgfs}/gsi/global_convinfo_2mObs.txt export ANAVINFO=${FIXgfs}/gsi/global_anavinfo_soilanal.l127.txt fi From 8e9d193dc359314d6e5f6144bee24b01400a4015 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Thu, 6 Feb 2025 20:46:55 +0000 Subject: [PATCH 29/50] Fixed bugs introduced by PR updates. --- parm/config/gfs/config.esfc | 12 ++++++++++-- parm/config/gfs/config.sfcanl | 11 ++++++++++- ush/regrid_gsiSfcIncr_to_tile.sh | 17 +++++++++-------- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index cd1dc403ce..de1348b7be 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -21,12 +21,20 @@ if [[ "${DO_JEDIATMENS}" == "YES" ]]; then export DONST="NO" fi +_RUN=${RUN:-"gfs"} +_RUN=${RUN/enkf/} + +if [[ "${_RUN}" == "gfs" ]]; then + echo "turning off gsi soilda for gfs run" + DO_GSISOILDA="NO" +fi + # set up soil analysis -if [[ ${DO_GSISOILDA} = "YES" ]]; then +if [[ ${DO_GSISOILDA} == "YES" ]]; then export GCYCLE_DO_SOILINCR=".true." export GCYCLE_INTERP_LANDINCR=".false." export LSOIL_INCR=2 - export REGRIDSH=${REGRIDSH:-${USHgfs}/regrid_gsiSfcIncr_to_tile.sh} + export REGRID_EXEC=${REGRID_EXEC:-"${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x"} fi echo "END: config.esfc" diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index 40b0c2b567..66c53783a0 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -12,7 +12,16 @@ echo "BEGIN: config.sfcanl" if [[ "${DO_JEDIATMVAR}" == "YES" ]]; then export DONST="NO" fi -if [[ "${DO_GSISOILDA}" = "YES" ]]; then + +_RUN=${RUN:-"gfs"} +_RUN=${RUN/enkf/} + +if [[ "${_RUN}" == "gfs" ]]; then + echo "turning off gsi soilda for gfs run" + DO_GSISOILDA="NO" +fi + +if [[ "${DO_GSISOILDA}" == "YES" ]]; then export GCYCLE_DO_SOILINCR=".true." export GCYCLE_INTERP_LANDINCR=".false." export LSOIL_INCR=2 diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 49ae96978e..07b5cb69c6 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -11,6 +11,7 @@ source "${USHgfs}/preamble.sh" # CSD: temporary on hera, until scrip files added to fix dir. TMP_FIX_FILES=/scratch2/BMC/gsienkf/Clara.Draper/gw_new_fix_files/ + export PGMOUT=${PGMOUT:-${pgmout:-'&1'}} export PGMERR=${PGMERR:-${pgmerr:-'&2'}} export REDOUT=${REDOUT:-'1>'} @@ -54,7 +55,7 @@ cat << EOF > regrid.nml ires=${LONB_CASE_IN}, jres=${LATB_CASE_IN}, fname="enkfgdas.sfci.nc", - dir="${DATA}", + dir="./", fname_coord="gaussian_scrip.nc", dir_coord="./" / @@ -64,21 +65,21 @@ cat << EOF > regrid.nml ires=${CASE_OUT:1}, jres=${CASE_OUT:1}, fname="sfci", - dir="${DATA}", + dir="./", fname_mask="vegetation_type" - dir_mask="${DATA}" + dir_mask="./" dir_coord="${FIXorog}", / EOF # fixed input files -${NCP} "${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc" & - "${DATA}/gaussian_scrip.nc" +${NCP} "${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc" \ + "${DATA}/gaussian_scrip.nc" # fixed output files for n in $(seq 1 "${ntiles}"); do - ${NCP} "${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc" & - "${DATA}/vegetation_type.tile${n}.nc" + ${NCP} "${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc" \ + "${DATA}/vegetation_type.tile${n}.nc" done if (( LFHR >= 0 )); then @@ -107,7 +108,7 @@ for imem in $(seq 1 "${NMEM_REGRID}"); do ${NCP} "${COMIN_SOIL_ANALYSIS_MEM}/${APREFIX_ENS}sfci00${FHR}.nc" \ "${DATA}/enkfgdas.sfci.nc" - "${APRUN_REGRID}" "${REGRID_EXEC}" "${REDOUT}${PGMOUT}" "${REDERR}${PGMERR}" + ${APRUN_REGRID} "${REGRID_EXEC}" "${REDOUT}${PGMOUT}" "${REDERR}${PGMERR}" for n in $(seq 1 "${ntiles}"); do cpfs "${DATA}/sfci.tile${n}.nc" "${COMOUT_ATMOS_ANALYSIS_MEM}/sfci00${FHR}.tile${n}.nc" From 1bd801492bed99bcd0fff89ecc7fea8601ae806b Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Thu, 6 Feb 2025 20:56:44 +0000 Subject: [PATCH 30/50] bugfix. --- scripts/exgdas_enkf_sfc.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index fab86b2bb6..b4d225a516 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -58,6 +58,7 @@ DOIAU=${DOIAU_ENKF:-"NO"} # Global_cycle stuff CYCLESH=${CYCLESH:-${USHgfs}/global_cycle.sh} +REGRIDSH=${REGRIDSH:-"${USHgfs}/regrid_gsiSfcIncr_to_tile.sh"} export CYCLEXEC=${CYCLEXEC:-${EXECgfs}/global_cycle} APRUN_CYCLE=${APRUN_CYCLE:-${APRUN:-""}} NTHREADS_CYCLE=${NTHREADS_CYCLE:-${NTHREADS:-1}} From ef0f65d9281c6dc4a91a58e58578cc3e5a5d69bf Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Fri, 7 Feb 2025 00:59:31 +0000 Subject: [PATCH 31/50] Added CI test for DO_GSISOILDA --- ci/cases/pr/C96C48_hybatmsoilDA.yaml | 24 +++++++++++++++++++++++ ci/cases/yamls/atmsoilDA_defaults_ci.yaml | 6 ++++++ 2 files changed, 30 insertions(+) create mode 100644 ci/cases/pr/C96C48_hybatmsoilDA.yaml create mode 100644 ci/cases/yamls/atmsoilDA_defaults_ci.yaml diff --git a/ci/cases/pr/C96C48_hybatmsoilDA.yaml b/ci/cases/pr/C96C48_hybatmsoilDA.yaml new file mode 100644 index 0000000000..7fae4fa37d --- /dev/null +++ b/ci/cases/pr/C96C48_hybatmsoilDA.yaml @@ -0,0 +1,24 @@ +experiment: + system: gfs + mode: cycled + +arguments: + pslot: {{ 'pslot' | getenv }} + app: ATMA + resdetatmos: 96 + resensatmos: 48 + comroot: {{ 'RUNTESTS' | getenv }}/COMROOT + expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR + icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C96C48/20241120 + idate: 2021122012 + edate: 2021122100 + nens: 2 + interval: 24 + start: cold + yaml: {{ HOMEgfs }}/ci/cases/yamls/atmsoilDA_defaults_ci.yaml + +skip_ci_on_hosts: + - wcoss2 + - orion + - gaea + - hercules diff --git a/ci/cases/yamls/atmsoilDA_defaults_ci.yaml b/ci/cases/yamls/atmsoilDA_defaults_ci.yaml new file mode 100644 index 0000000000..8ace896632 --- /dev/null +++ b/ci/cases/yamls/atmsoilDA_defaults_ci.yaml @@ -0,0 +1,6 @@ +defaults: + !INC {{ HOMEgfs }}/parm/config/gfs/yaml/defaults.yaml +base: + DO_GSISOILDA: "YES" + ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }} + DO_TEST_MODE: "NO" From e413ff82ddecab7acc33529ec0ab15f7bd489f7f Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:22:33 -0700 Subject: [PATCH 32/50] Update parm/config/gfs/config.esfc Co-authored-by: Rahul Mahajan --- parm/config/gfs/config.esfc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index de1348b7be..c32268ec2a 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -34,7 +34,7 @@ if [[ ${DO_GSISOILDA} == "YES" ]]; then export GCYCLE_DO_SOILINCR=".true." export GCYCLE_INTERP_LANDINCR=".false." export LSOIL_INCR=2 - export REGRID_EXEC=${REGRID_EXEC:-"${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x"} + export REGRID_EXEC="${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x" fi echo "END: config.esfc" From 37d0960719ed504cebcfdf546eb2fd7034855ce8 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:22:52 -0700 Subject: [PATCH 33/50] Update scripts/exgdas_enkf_sfc.sh Co-authored-by: Rahul Mahajan --- scripts/exgdas_enkf_sfc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index b4d225a516..363d211ec8 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -123,7 +123,7 @@ if [[ ${DO_GSISOILDA} = "YES" ]]; then export CASE_OUT=${CASE_ENS} export OCNRES_OUT=${OCNRES} export NMEM_REGRID=${NMEM_ENS} - if [ $DOIAU = "YES" ]; then + if [[ "${DOIAU}" == "YES" ]]; then export LFHR=3 # match BDATE else # DOSFCANL_ENKF export LFHR=6 # PDYcyc From dc2634fc708e292ed81075d1453fada56e36f7cb Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:24:40 -0700 Subject: [PATCH 34/50] Update scripts/exgdas_enkf_sfc.sh Co-authored-by: Rahul Mahajan --- scripts/exgdas_enkf_sfc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 363d211ec8..d2284745ee 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -129,7 +129,7 @@ if [[ ${DO_GSISOILDA} = "YES" ]]; then export LFHR=6 # PDYcyc fi - $REGRIDSH + "${REGRIDSH}" fi From 2d92509b85c8fbe5a9fbda292a402ad751a109d1 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:24:56 -0700 Subject: [PATCH 35/50] Update scripts/exgdas_enkf_sfc.sh Co-authored-by: Rahul Mahajan --- scripts/exgdas_enkf_sfc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index d2284745ee..bfe559a27a 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -213,7 +213,7 @@ if [ $DOIAU = "YES" ]; then fi -if [[ $DOSFCANL_ENKF = "YES" ]]; then +if [[ "${DOSFCANL_ENKF}" == "YES" ]]; then for n in $(seq 1 $ntiles); do export TILE_NUM=$n From 58512e377a8b5a7f05d5dbdef8f58082447be87d Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:34:43 -0700 Subject: [PATCH 36/50] Update parm/config/gfs/config.esfc Co-authored-by: Rahul Mahajan --- parm/config/gfs/config.esfc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index c32268ec2a..0921211aa8 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -21,10 +21,7 @@ if [[ "${DO_JEDIATMENS}" == "YES" ]]; then export DONST="NO" fi -_RUN=${RUN:-"gfs"} -_RUN=${RUN/enkf/} - -if [[ "${_RUN}" == "gfs" ]]; then +if [[ "${RUN/enkf}" == "gfs" ]]; then echo "turning off gsi soilda for gfs run" DO_GSISOILDA="NO" fi From f51ab827671f121091e4437d7a2cb74b60283892 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 18 Feb 2025 23:14:17 +0000 Subject: [PATCH 37/50] copying fix files into DATA dir, instead of linking. --- ush/regrid_gsiSfcIncr_to_tile.sh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index 07b5cb69c6..abb08c836e 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -68,18 +68,23 @@ cat << EOF > regrid.nml dir="./", fname_mask="vegetation_type" dir_mask="./" - dir_coord="${FIXorog}", + dir_coord="./", / EOF -# fixed input files +# input, fixed files ${NCP} "${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc" \ "${DATA}/gaussian_scrip.nc" -# fixed output files +# output, fixed files +${NCP} "${FIXorog}/${CASE_OUT}/${CASE_OUT}_mosaic.nc" \ + "${DATA}/${CASE_OUT}_mosaic.nc" + for n in $(seq 1 "${ntiles}"); do ${NCP} "${FIXorog}/${CASE_OUT}/sfc/${CASE_OUT}.mx${OCNRES_OUT}.vegetation_type.tile${n}.nc" \ "${DATA}/vegetation_type.tile${n}.nc" + ${NCP} "${FIXorog}/${CASE_OUT}/${CASE_OUT}_grid.tile${n}.nc" \ + "${DATA}/${CASE_OUT}_grid.tile${n}.nc" done if (( LFHR >= 0 )); then From f7641b1abbc80cc3b8380687e553152179fab432 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 18 Feb 2025 23:58:46 +0000 Subject: [PATCH 38/50] rm trailing space --- ush/regrid_gsiSfcIncr_to_tile.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index abb08c836e..f1d2afcab5 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -77,7 +77,7 @@ ${NCP} "${TMP_FIX_FILES}/gaussian.${LONB_CASE_IN}.${LATB_CASE_IN}.nc" \ "${DATA}/gaussian_scrip.nc" # output, fixed files -${NCP} "${FIXorog}/${CASE_OUT}/${CASE_OUT}_mosaic.nc" \ +${NCP} "${FIXorog}/${CASE_OUT}/${CASE_OUT}_mosaic.nc" \ "${DATA}/${CASE_OUT}_mosaic.nc" for n in $(seq 1 "${ntiles}"); do From f85c42d6f885ac986cabab939d0226d8cf3b9628 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Sun, 23 Feb 2025 17:19:11 +0000 Subject: [PATCH 39/50] update ufs model and gdas hashes. --- sorc/gdas.cd | 2 +- sorc/ufs_model.fd | 2 +- sorc/ufs_utils.fd | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 417ed5e686..f91938b871 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 417ed5e686ae73af7be65350fda20037c5934242 +Subproject commit f91938b8714c9274c18f91e4d2a712473176a224 diff --git a/sorc/ufs_model.fd b/sorc/ufs_model.fd index 76471dc6b7..ee3d52d362 160000 --- a/sorc/ufs_model.fd +++ b/sorc/ufs_model.fd @@ -1 +1 @@ -Subproject commit 76471dc6b7bfc3342416d1a3402f360724f7c0fa +Subproject commit ee3d52d3620565dbf7bc4f47bd039fe6423fa5c1 diff --git a/sorc/ufs_utils.fd b/sorc/ufs_utils.fd index e718003548..0f8cb9faa3 160000 --- a/sorc/ufs_utils.fd +++ b/sorc/ufs_utils.fd @@ -1 +1 @@ -Subproject commit e718003548f8a12b675a4b3237a55e290d2f03cf +Subproject commit 0f8cb9faa33d0985e0ca6250e6842d821a9f3cde From 3eb495453b9eeda351d41ce658ea2c31b81b1e53 Mon Sep 17 00:00:00 2001 From: CoryMartin-NOAA Date: Mon, 24 Feb 2025 16:21:26 +0000 Subject: [PATCH 40/50] hotfix for CI --- parm/config/gfs/config.aeroanlgenb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/parm/config/gfs/config.aeroanlgenb b/parm/config/gfs/config.aeroanlgenb index 075b4be90b..c117aff481 100644 --- a/parm/config/gfs/config.aeroanlgenb +++ b/parm/config/gfs/config.aeroanlgenb @@ -21,7 +21,11 @@ export aero_diagb_weight=0.9 export aero_staticb_rescaling_factor=2.0 export aero_diagb_n_halo=4 export aero_diagb_n_neighbors=16 -export aero_diagb_smooth_horiz_iter=200 +aero_diagb_smooth_horiz_iter=0 export aero_diagb_smooth_vert_iter=0 +if [[ "${CASE_ANL}" == "C384" ]]; then + aero_diagb_smooth_horiz_iter=200 +fi +export aero_diagb_smooth_horiz_iter echo "END: config.aeroanlgenb" From c83379d30003f3b1fd6ecba97781ff33dfa8230e Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Mon, 24 Feb 2025 20:39:05 +0000 Subject: [PATCH 41/50] Update UFS_UTILS and GDASApp hashes. Now has all submodules necessary for the GSI soil DA. --- ci/cases/pr/C96C48_hybatmsoilDA.yaml | 2 +- parm/config/gfs/config.aeroanlgenb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/cases/pr/C96C48_hybatmsoilDA.yaml b/ci/cases/pr/C96C48_hybatmsoilDA.yaml index 7fae4fa37d..a7b9459591 100644 --- a/ci/cases/pr/C96C48_hybatmsoilDA.yaml +++ b/ci/cases/pr/C96C48_hybatmsoilDA.yaml @@ -4,7 +4,7 @@ experiment: arguments: pslot: {{ 'pslot' | getenv }} - app: ATMA + app: ATM resdetatmos: 96 resensatmos: 48 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT diff --git a/parm/config/gfs/config.aeroanlgenb b/parm/config/gfs/config.aeroanlgenb index 075b4be90b..d49d4da822 100644 --- a/parm/config/gfs/config.aeroanlgenb +++ b/parm/config/gfs/config.aeroanlgenb @@ -21,7 +21,7 @@ export aero_diagb_weight=0.9 export aero_staticb_rescaling_factor=2.0 export aero_diagb_n_halo=4 export aero_diagb_n_neighbors=16 -export aero_diagb_smooth_horiz_iter=200 +export aero_diagb_smooth_horiz_iter=0 export aero_diagb_smooth_vert_iter=0 echo "END: config.aeroanlgenb" From 8a7e1cf3548f656fc18d11b31baa58d09c38ee43 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Mon, 24 Feb 2025 20:56:35 +0000 Subject: [PATCH 42/50] Temporarily remove soil DA test case, while we sort out module dependencies that prevent it from running. --- ci/cases/pr/C96C48_hybatmsoilDA.yaml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 ci/cases/pr/C96C48_hybatmsoilDA.yaml diff --git a/ci/cases/pr/C96C48_hybatmsoilDA.yaml b/ci/cases/pr/C96C48_hybatmsoilDA.yaml deleted file mode 100644 index a7b9459591..0000000000 --- a/ci/cases/pr/C96C48_hybatmsoilDA.yaml +++ /dev/null @@ -1,24 +0,0 @@ -experiment: - system: gfs - mode: cycled - -arguments: - pslot: {{ 'pslot' | getenv }} - app: ATM - resdetatmos: 96 - resensatmos: 48 - comroot: {{ 'RUNTESTS' | getenv }}/COMROOT - expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C96C48/20241120 - idate: 2021122012 - edate: 2021122100 - nens: 2 - interval: 24 - start: cold - yaml: {{ HOMEgfs }}/ci/cases/yamls/atmsoilDA_defaults_ci.yaml - -skip_ci_on_hosts: - - wcoss2 - - orion - - gaea - - hercules From 1147c568955f4fad1f5f46a8c3b68bc0e6ded834 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 25 Feb 2025 08:41:49 -0700 Subject: [PATCH 43/50] Update parm/config/gfs/config.esfc Co-authored-by: Rahul Mahajan --- parm/config/gfs/config.esfc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/parm/config/gfs/config.esfc b/parm/config/gfs/config.esfc index 0921211aa8..f2c8414be4 100644 --- a/parm/config/gfs/config.esfc +++ b/parm/config/gfs/config.esfc @@ -28,9 +28,9 @@ fi # set up soil analysis if [[ ${DO_GSISOILDA} == "YES" ]]; then - export GCYCLE_DO_SOILINCR=".true." - export GCYCLE_INTERP_LANDINCR=".false." - export LSOIL_INCR=2 + export GCYCLE_DO_SOILINCR=".true." + export GCYCLE_INTERP_LANDINCR=".false." + export LSOIL_INCR=2 export REGRID_EXEC="${HOMEgfs}/sorc/gdas.cd/build/bin/regridStates.x" fi From 5d5ca8656747e64b2865ac122e60fae73b8a0a38 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 25 Feb 2025 08:42:12 -0700 Subject: [PATCH 44/50] Update parm/config/gfs/config.sfcanl Co-authored-by: Rahul Mahajan --- parm/config/gfs/config.sfcanl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/parm/config/gfs/config.sfcanl b/parm/config/gfs/config.sfcanl index 66c53783a0..e235154f2d 100644 --- a/parm/config/gfs/config.sfcanl +++ b/parm/config/gfs/config.sfcanl @@ -13,10 +13,7 @@ if [[ "${DO_JEDIATMVAR}" == "YES" ]]; then export DONST="NO" fi -_RUN=${RUN:-"gfs"} -_RUN=${RUN/enkf/} - -if [[ "${_RUN}" == "gfs" ]]; then +if [[ "${RUN/enkf}" == "gfs" ]]; then echo "turning off gsi soilda for gfs run" DO_GSISOILDA="NO" fi From 83f5227977b36040f0e263529fb25504d02aaf03 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 25 Feb 2025 08:42:24 -0700 Subject: [PATCH 45/50] Update scripts/exgdas_enkf_update.sh Co-authored-by: Rahul Mahajan --- scripts/exgdas_enkf_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index d8227b592e..a5cdf59db7 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -213,7 +213,7 @@ for imem in $(seq 1 $NMEM_ENS); do for FHR in $nfhrs; do ${NLN} "${COMIN_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}atmf00${FHR}${ENKF_SUFFIX}.nc" \ "sfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" - if [[ $DO_GSISOILDA = "YES" ]]; then + if [[ "${DO_GSISOILDA}" = "YES" ]]; then ${NLN} "${COMIN_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}${ENKF_SUFFIX}.nc" \ "bfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi From 59cc8fff7809d7c52865aa848e358e6d3b56f1e2 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 25 Feb 2025 08:42:51 -0700 Subject: [PATCH 46/50] Update scripts/exgdas_enkf_update.sh Co-authored-by: Rahul Mahajan --- scripts/exgdas_enkf_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index a5cdf59db7..a5f015130d 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -238,7 +238,7 @@ for imem in $(seq 1 $NMEM_ENS); do "incr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi fi - if [[ ${DO_GSISOILDA} = "YES" ]]; then + if [[ "${DO_GSISOILDA}" = "YES" ]]; then ${NLN} "${COMOUT_ATMOS_ANALYSIS_MEM}/${APREFIX}sfci00${FHR}.nc" \ "sfcincr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi From 1eb8871b767fea5197d013194aaa152c0843ad97 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 25 Feb 2025 08:43:00 -0700 Subject: [PATCH 47/50] Update scripts/exglobal_atmos_sfcanl.sh Co-authored-by: Rahul Mahajan --- scripts/exglobal_atmos_sfcanl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index 92b952880d..fa47de0aab 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -123,7 +123,7 @@ if [[ "${DOIAU:-}" == "YES" ]]; then # Update surface restarts at beginning of fi # if doing GSI soil anaysis, copy increment file and re-grid it to native model resolution -if [[ ${DO_GSISOILDA} = "YES" ]]; then +if [[ "${DO_GSISOILDA}" = "YES" ]]; then export COMIN_SOIL_ANALYSIS_MEM="${COMIN_ATMOS_ENKF_ANALYSIS_STAT}" export COMOUT_ATMOS_ANALYSIS_MEM="${COMIN_ATMOS_ANALYSIS}" From fc105c37e0c72f8bc9b48f29fe3956d5d81a26e9 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 25 Feb 2025 08:43:08 -0700 Subject: [PATCH 48/50] Update scripts/exgdas_enkf_update.sh Co-authored-by: Rahul Mahajan --- scripts/exgdas_enkf_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index a5f015130d..4d75b182b0 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -254,7 +254,7 @@ for FHR in $nfhrs; do ${NLN} "${COMIN_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "sfgsfc_${PDY}${cyc}_fhr0${FHR}_ensmean" fi - if [[ ${DO_GSISOILDA} = "YES" ]]; then + if [[ "${DO_GSISOILDA}" = "YES" ]]; then ${NLN} "${COMIN_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "bfg_${PDY}${cyc}_fhr0${FHR}_ensmean" ${NLN} "${COMIN_ATMOS_ANALYSIS_STAT}/${APREFIX}sfci00${FHR}.nc" \ From f555978edf3f1262b3fe9199b7761d871509e601 Mon Sep 17 00:00:00 2001 From: Clara Draper <33430543+ClaraDraper-NOAA@users.noreply.github.com> Date: Tue, 25 Feb 2025 08:43:18 -0700 Subject: [PATCH 49/50] Update scripts/exglobal_atmos_sfcanl.sh Co-authored-by: Rahul Mahajan --- scripts/exglobal_atmos_sfcanl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index fa47de0aab..95b2ae4796 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -145,7 +145,7 @@ for hr in "${!gcycle_dates[@]}"; do datestr="${gcycle_date:0:8}.${gcycle_date:8:2}0000" - if [[ ${DO_GSISOILDA} = "YES" ]]; then + if [[ "${DO_GSISOILDA}" = "YES" ]]; then for (( nn=1; nn <= ntiles; nn++ )); do ${NCP} "${COMIN_ATMOS_ANALYSIS}/sfci00${FHR}.tile${nn}.nc" \ "${DATA}/soil_xainc.00${nn}" From 93541a01917f5b356d11a3e2838a42c7c2ebdc15 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 25 Feb 2025 20:12:38 +0000 Subject: [PATCH 50/50] Added comments pointing to two unresolved issues for the soil DA. --- jobs/rocoto/esfc.sh | 3 ++- jobs/rocoto/sfcanl.sh | 3 ++- ush/regrid_gsiSfcIncr_to_tile.sh | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/jobs/rocoto/esfc.sh b/jobs/rocoto/esfc.sh index 1c87d6d6fd..b8f9393113 100755 --- a/jobs/rocoto/esfc.sh +++ b/jobs/rocoto/esfc.sh @@ -4,7 +4,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -# CSD for DO_GSISOILDA, need ufsda modules (temporary, until merged) +# For DO_GSISOILDA=YES need to switch to ufsda modules +# until g-w issue 3390 is resolved. . ${HOMEgfs}/ush/load_fv3gfs_modules.sh #. ${HOMEgfs}/ush/load_ufsda_modules.sh status=$? diff --git a/jobs/rocoto/sfcanl.sh b/jobs/rocoto/sfcanl.sh index 1ed5a9fd3a..c9459a9d8d 100755 --- a/jobs/rocoto/sfcanl.sh +++ b/jobs/rocoto/sfcanl.sh @@ -4,7 +4,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -# CSD for DO_GSISOILDA, need ufsda modules (temporary, until merged) +# For DO_GSISOILDA=YES need to switch to ufsda modules +# until g-w issue 3390 is resolved. . ${HOMEgfs}/ush/load_fv3gfs_modules.sh #. ${HOMEgfs}/ush/load_ufsda_modules.sh status=$? diff --git a/ush/regrid_gsiSfcIncr_to_tile.sh b/ush/regrid_gsiSfcIncr_to_tile.sh index f1d2afcab5..0e28c77c51 100755 --- a/ush/regrid_gsiSfcIncr_to_tile.sh +++ b/ush/regrid_gsiSfcIncr_to_tile.sh @@ -8,7 +8,7 @@ source "${USHgfs}/preamble.sh" # Clara Draper, Dec 2024 #------------------------------------------------------------------------------------------------- -# CSD: temporary on hera, until scrip files added to fix dir. +# temporary files on hera, until g-w issue 3392 is resolved. TMP_FIX_FILES=/scratch2/BMC/gsienkf/Clara.Draper/gw_new_fix_files/