From c90264577d90ab2120f4e642ba98cffed5e5a6c8 Mon Sep 17 00:00:00 2001 From: mingshichen-noaa <48537176+mingshichen-noaa@users.noreply.github.com> Date: Thu, 20 Feb 2025 14:13:37 -0500 Subject: [PATCH 1/4] Update jgdas enkf update job with COMIN or COMOUT prefix instead of COM (#3333) NCO has requested that each COM variable specify whether it is an input or an output. This completes that process for the global JGDAS_ENKF_UPDATE job and associated bash and python scripts Refs #2451 --- jobs/JGDAS_ENKF_UPDATE | 9 ++++--- scripts/exgdas_enkf_update.sh | 46 +++++++++++++++++------------------ 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/jobs/JGDAS_ENKF_UPDATE b/jobs/JGDAS_ENKF_UPDATE index 213b49081a..f2676dd92f 100755 --- a/jobs/JGDAS_ENKF_UPDATE +++ b/jobs/JGDAS_ENKF_UPDATE @@ -25,10 +25,13 @@ export APREFIX="${RUN}.t${cyc}z." export GPREFIX="${GDUMP_ENS}.t${gcyc}z." MEMDIR="ensstat" YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ - COM_ATMOS_ANALYSIS_STAT:COM_ATMOS_ANALYSIS_TMPL + COMIN_ATMOS_ANALYSIS_STAT:COM_ATMOS_ANALYSIS_TMPL + +MEMDIR="ensstat" YMD=${PDY} HH=${cyc} declare_from_tmpl -rx \ + COMOUT_ATMOS_ANALYSIS_STAT:COM_ATMOS_ANALYSIS_TMPL MEMDIR="ensstat" RUN="enkfgdas" YMD=${gPDY} HH=${gcyc} declare_from_tmpl -rx \ - COM_ATMOS_HISTORY_STAT_PREV:COM_ATMOS_HISTORY_TMPL + COMIN_ATMOS_HISTORY_STAT_PREV:COM_ATMOS_HISTORY_TMPL ############################################################### @@ -43,7 +46,7 @@ status=$? # Send Alerts ############################################## if [ ${SENDDBN} = YES ] ; then - "${DBNROOT}/bin/dbn_alert" "MODEL" "ENKF1_MSC_enkfstat" "${job}" "${COM_ATMOS_ANALYSIS_STAT}/${APREFIX}enkfstat" + "${DBNROOT}/bin/dbn_alert" "MODEL" "ENKF1_MSC_enkfstat" "${job}" "${COMOUT_ATMOS_ANALYSIS_STAT}/${APREFIX}enkfstat" fi diff --git a/scripts/exgdas_enkf_update.sh b/scripts/exgdas_enkf_update.sh index 752cb07a6b..9517544b1a 100755 --- a/scripts/exgdas_enkf_update.sh +++ b/scripts/exgdas_enkf_update.sh @@ -95,7 +95,7 @@ GSI_SOILANAL=${GSI_SOILANAL:-"NO"} ################################################################################ -ATMGES_ENSMEAN="${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}atmf006.ensmean.nc" +ATMGES_ENSMEAN="${COMIN_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}atmf006.ensmean.nc" LONB_ENKF=${LONB_ENKF:-$($NCLEN $ATMGES_ENSMEAN grid_xt)} # get LONB_ENKF LATB_ENKF=${LATB_ENKF:-$($NCLEN $ATMGES_ENSMEAN grid_yt)} # get LATB_ENFK LEVS_ENKF=${LEVS_ENKF:-$($NCLEN $ATMGES_ENSMEAN pfull)} # get LEVS_ENFK @@ -142,7 +142,7 @@ $NLN $ANAVINFO anavinfo $NLN $VLOCALEIG vlocal_eig.dat # Bias correction coefficients based on the ensemble mean -${NLN} "${COM_ATMOS_ANALYSIS_STAT}/${GBIASe}" "satbias_in" +${NLN} "${COMIN_ATMOS_ANALYSIS_STAT}/${GBIASe}" "satbias_in" ################################################################################ @@ -152,13 +152,13 @@ if [ $USE_CFP = "YES" ]; then cat > $DATA/untar.sh << EOFuntar #!/bin/sh memchar=\$1 -COM_ATMOS_ANALYSIS=\$2 +COMOUT_ATMOS_ANALYSIS=\$2 flist="$CNVSTAT $OZNSTAT $RADSTAT" for ftype in \$flist; do if [ \$memchar = "ensmean" ]; then - fname=\${COM_ATMOS_ANALYSIS}/\${ftype}.ensmean + fname=\${COMOUT_ATMOS_ANALYSIS}/\${ftype}.ensmean else - fname=\${COM_ATMOS_ANALYSIS}/\${ftype} + fname=\${COMOUT_ATMOS_ANALYSIS}/\${ftype} fi tar -xvf \$fname done @@ -171,13 +171,13 @@ fi flist="$CNVSTAT $OZNSTAT $RADSTAT" if [ $USE_CFP = "YES" ]; then - echo "${nm} ${DATA}/untar.sh ensmean ${COM_ATMOS_ANALYSIS_STAT}" | tee -a "${DATA}/mp_untar.sh" + echo "${nm} ${DATA}/untar.sh ensmean ${COMIN_ATMOS_ANALYSIS_STAT}" | tee -a "${DATA}/mp_untar.sh" if [ ${CFP_MP:-"NO"} = "YES" ]; then nm=$((nm+1)) fi else for ftype in $flist; do - fname="${COM_ATMOS_ANALYSIS_STAT}/${ftype}.ensmean" + fname="${COMIN_ATMOS_ANALYSIS_STAT}/${ftype}.ensmean" tar -xvf $fname done fi @@ -191,55 +191,55 @@ for imem in $(seq 1 $NMEM_ENS); do memchar="mem"$(printf %03i $imem) MEMDIR=${gmemchar} RUN=${GDUMP_ENS} YMD=${gPDY} HH=${gcyc} declare_from_tmpl -x \ - COM_ATMOS_HISTORY_MEM_PREV:COM_ATMOS_HISTORY_TMPL + COMIN_ATMOS_HISTORY_MEM_PREV:COM_ATMOS_HISTORY_TMPL MEMDIR=${memchar} YMD=${PDY} HH=${cyc} declare_from_tmpl -x \ - COM_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL + COMOUT_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL if [ $lobsdiag_forenkf = ".false." ]; then if [ $USE_CFP = "YES" ]; then - echo "${nm} ${DATA}/untar.sh ${memchar} ${COM_ATMOS_ANALYSIS_MEM}" | tee -a "${DATA}/mp_untar.sh" + echo "${nm} ${DATA}/untar.sh ${memchar} ${COMOUT_ATMOS_ANALYSIS_MEM}" | tee -a "${DATA}/mp_untar.sh" if [ ${CFP_MP:-"NO"} = "YES" ]; then nm=$((nm+1)) fi else for ftype in $flist; do - fname="${COM_ATMOS_ANALYSIS_MEM}/${ftype}" + fname="${COMOUT_ATMOS_ANALYSIS_MEM}/${ftype}" tar -xvf $fname done fi fi - mkdir -p "${COM_ATMOS_ANALYSIS_MEM}" + mkdir -p "${COMOUT_ATMOS_ANALYSIS_MEM}" for FHR in $nfhrs; do - ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}atmf00${FHR}${ENKF_SUFFIX}.nc" \ + ${NLN} "${COMIN_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}atmf00${FHR}${ENKF_SUFFIX}.nc" \ "sfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" if [ $GSI_SOILANAL = "YES" ]; then - ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}${ENKF_SUFFIX}.nc" \ + ${NLN} "${COMIN_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}${ENKF_SUFFIX}.nc" \ "bfg_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi if [ $cnvw_option = ".true." ]; then - ${NLN} "${COM_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}.nc" \ + ${NLN} "${COMIN_ATMOS_HISTORY_MEM_PREV}/${GPREFIX}sfcf00${FHR}.nc" \ "sfgsfc_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi if [ $FHR -eq 6 ]; then if [ $DO_CALC_INCREMENT = "YES" ]; then - ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}atmanl.nc" \ + ${NLN} "${COMOUT_ATMOS_ANALYSIS_MEM}/${APREFIX}atmanl.nc" \ "sanl_${PDY}${cyc}_fhr0${FHR}_${memchar}" else - ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}atminc.nc" \ + ${NLN} "${COMOUT_ATMOS_ANALYSIS_MEM}/${APREFIX}atminc.nc" \ "incr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi else if [ $DO_CALC_INCREMENT = "YES" ]; then - ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}atma00${FHR}.nc" \ + ${NLN} "${COMOUT_ATMOS_ANALYSIS_MEM}/${APREFIX}atma00${FHR}.nc" \ "sanl_${PDY}${cyc}_fhr0${FHR}_${memchar}" else - ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}atmi00${FHR}.nc" \ + ${NLN} "${COMOUT_ATMOS_ANALYSIS_MEM}/${APREFIX}atmi00${FHR}.nc" \ "incr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi fi if [ $GSI_SOILANAL = "YES" ]; then - ${NLN} "${COM_ATMOS_ANALYSIS_MEM}/${APREFIX}sfci00${FHR}.nc" \ + ${NLN} "${COMOUT_ATMOS_ANALYSIS_MEM}/${APREFIX}sfci00${FHR}.nc" \ "sfcincr_${PDY}${cyc}_fhr0${FHR}_${memchar}" fi done @@ -248,10 +248,10 @@ done # Ensemble mean guess for FHR in $nfhrs; do - ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}atmf00${FHR}.ensmean.nc" \ + ${NLN} "${COMIN_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}atmf00${FHR}.ensmean.nc" \ "sfg_${PDY}${cyc}_fhr0${FHR}_ensmean" if [ $cnvw_option = ".true." ]; then - ${NLN} "${COM_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ + ${NLN} "${COMIN_ATMOS_HISTORY_STAT_PREV}/${GPREFIX}sfcf00${FHR}.ensmean.nc" \ "sfgsfc_${PDY}${cyc}_fhr0${FHR}_ensmean" fi done @@ -412,7 +412,7 @@ $APRUN_ENKF ${DATA}/$(basename $ENKFEXEC) 1>stdout 2>stderr export err=$?; err_chk # Cat runtime output files. -cat stdout stderr > "${COM_ATMOS_ANALYSIS_STAT}/${ENKFSTAT}" +cat stdout stderr > "${COMOUT_ATMOS_ANALYSIS_STAT}/${ENKFSTAT}" ################################################################################ # Postprocessing From 08a14bd1de550f8599c873e71ca45e782396bfe5 Mon Sep 17 00:00:00 2001 From: AntonMFernando-NOAA <167725623+AntonMFernando-NOAA@users.noreply.github.com> Date: Fri, 21 Feb 2025 14:20:21 -0500 Subject: [PATCH 2/4] Remove Direct Linking to COM from DATA for `wavepostsbs` Job (#3303) In the current GFS version, some jobs directly write to COMOUT via links in the working directories. This approach is risky, as downstream jobs might receive incomplete files and fail. In order to resolve this issue direct linking to COM from DATA should be removed. This PR addresses this issue in the `wavepostsbs` job. Resolves #3302 Refs #712 Refs #3273 --------- Co-authored-by: Rahul Mahajan --- ush/wave_grib2_sbs.sh | 45 ++++++++++++++++++++++++++++--------- ush/wave_grid_interp_sbs.sh | 2 +- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/ush/wave_grib2_sbs.sh b/ush/wave_grib2_sbs.sh index 60e8d2a337..34f8b80da0 100755 --- a/ush/wave_grib2_sbs.sh +++ b/ush/wave_grib2_sbs.sh @@ -169,11 +169,11 @@ if [[ ! -s "${com_dir}/${outfile}.idx" ]]; then fi if (( fhr > 0 )); then - ${WGRIB2} gribfile -set_date "${PDY}${cyc}" -set_ftime "${fhr} hour fcst" -grib "${com_dir}/${outfile}" + ${WGRIB2} gribfile -set_date "${PDY}${cyc}" -set_ftime "${fhr} hour fcst" -grib "${outfile}" err=$? else ${WGRIB2} gribfile -set_date "${PDY}${cyc}" -set_ftime "${fhr} hour fcst" \ - -set table_1.4 1 -set table_1.2 1 -grib "${com_dir}/${outfile}" + -set table_1.4 1 -set table_1.2 1 -grib "${outfile}" err=$? fi @@ -183,27 +183,52 @@ if [[ ! -s "${com_dir}/${outfile}.idx" ]]; then echo '********************************************* ' echo "*** FATAL ERROR : ERROR IN ${pgm} *** " # FIXME: This is not an error in $pgm, but in WGRIB2 echo '********************************************* ' - echo ' ' + echo " " set_trace exit 3 fi # Create index - ${WGRIB2} -s "${com_dir}/${outfile}" > "${com_dir}/${outfile}.idx" + ${WGRIB2} -s "${outfile}" > "${outfile}.idx" - # Create grib2 subgrid is this is the source grid + # Create grib2 subgrid if this is the source grid if [[ "${grdID}" = "${WAV_SUBGRBSRC}" ]]; then for subgrb in ${WAV_SUBGRB}; do subgrbref=$(echo ${!subgrb} | cut -d " " -f 1-20) subgrbnam=$(echo ${!subgrb} | cut -d " " -f 21) subgrbres=$(echo ${!subgrb} | cut -d " " -f 22) subfnam="${WAV_MOD_TAG}.${cycle}${ENSTAG}.${subgrbnam}.${subgrbres}.f${FH3}.grib2" - ${COPYGB2} -g "${subgrbref}" -i0 -x "${com_dir}/${outfile}" "${com_dir}/${subfnam}" - ${WGRIB2} -s "${com_dir}/${subfnam}" > "${com_dir}/${subfnam}.idx" + ${COPYGB2} -g "${subgrbref}" -i0 -x "${outfile}" "${subfnam}" + ${WGRIB2} -s "${subfnam}" > "${subfnam}.idx" done fi # 1.e Save in /com + # Move grib files to COM directory + if [[ -s "${outfile}" ]] && [[ -s "${outfile}.idx" ]]; then + cpfs "${outfile}" "${com_dir}/${outfile}" + cpfs "${outfile}.idx" "${com_dir}/${outfile}.idx" + echo "Copied ${outfile} and ${outfile}.idx from ${GRIBDATA} to COM" + else + echo "FATAL ERROR: ${outfile} and ${outfile}.idx not found in ${GRIBDATA} to copy to COM" + exit 4 + fi + + if [[ "${grdID}" = "${WAV_SUBGRBSRC}" ]]; then + for subgrb in ${WAV_SUBGRB}; do + subgrbnam=$(echo "${!subgrb}" | cut -d " " -f 21) + subgrbres=$(echo "${!subgrb}" | cut -d " " -f 22) + subfnam="${WAV_MOD_TAG}.${cycle}${ENSTAG}.${subgrbnam}.${subgrbres}.f${FH3}.grib2" + if [[ -s "${subfnam}" ]] && [[ -s "${subfnam}.idx" ]]; then + cpfs "${subfnam}" "${com_dir}/${subfnam}" + cpfs "${subfnam}.idx" "${com_dir}/${subfnam}.idx" + echo "Copied ${subfnam} and ${subfnam}.idx from ${GRIBDATA} to COM" + else + echo "FATAL ERROR: ${subfnam} and ${subfnam}.idx not found in ${GRIBDATA} to copy to COM" + exit 4 + fi + done + fi if [[ ! -s "${com_dir}/${outfile}" ]]; then set +x @@ -232,16 +257,14 @@ if [[ ! -s "${com_dir}/${outfile}.idx" ]]; then if [[ "${SENDDBN}" = 'YES' ]] && [[ ${outfile} != *global.0p50* ]]; then set +x - echo " Alerting GRIB file as ${com_dir}/${outfile}" - echo " Alerting GRIB index file as ${com_dir}/${outfile}.idx" + echo " Alerting GRIB file as ${outfile}" + echo " Alerting GRIB index file as ${outfile}.idx" set_trace "${DBNROOT}/bin/dbn_alert" MODEL "${alertName}_WAVE_GB2" "${job}" "${com_dir}/${outfile}" "${DBNROOT}/bin/dbn_alert" MODEL "${alertName}_WAVE_GB2_WIDX" "${job}" "${com_dir}/${outfile}.idx" else echo "${outfile} is global.0p50 or SENDDBN is NO, no alert sent" fi - - # --------------------------------------------------------------------------- # # 3. Clean up the directory diff --git a/ush/wave_grid_interp_sbs.sh b/ush/wave_grid_interp_sbs.sh index fd7180add6..e24966b5d5 100755 --- a/ush/wave_grid_interp_sbs.sh +++ b/ush/wave_grid_interp_sbs.sh @@ -93,7 +93,7 @@ source "${USHgfs}/preamble.sh" for ID in ${waveGRD} ${grdID}; do ${NLN} "${DATA}/mod_def.${ID}" "mod_def.${ID}" done - + # --------------------------------------------------------------------------- # # 1. Generate GRID file with all data From 586f658d71ae4a2a8971bd67b6659547badc87fa Mon Sep 17 00:00:00 2001 From: Cory Martin Date: Fri, 21 Feb 2025 19:21:03 +0000 Subject: [PATCH 3/4] Allow for C1152 ATM-Aero cycled DA to run on WCOSS2 (#3309) This PR enables the ability to cycle C1152 atm+aerosol on WCOSS2 to support GFSv17. Wallclock times were extended because 1) model execution is now slower with GOCART (this should probably be configurable in the config.resources depending on APP but that is outside the scope of my PR) 2) the aerosol DA variational solver needs more time at this resolution and 3) it takes FOREVER to copy C1152 restart files with the GOCART aerosol species in them. Also, the prep job runs out of memory so this spreads it out over more nodes. There are also misc. things that were added to get things to run on WCOSS2 that may need altered/removed post the most recent RFC. Finally, GDAS hash is updated. Resolves #3275 --------- Co-authored-by: CatherineThomas-NOAA <59020064+CatherineThomas-NOAA@users.noreply.github.com> Co-authored-by: Rahul Mahajan --- parm/config/gfs/config.aeroanlgenb | 9 ++--- parm/config/gfs/config.resources | 51 +++++++++++++++++++++---- parm/config/gfs/config.resources.WCOSS2 | 1 + ush/load_ufsda_modules.sh | 1 - ush/module-setup.sh | 2 +- 5 files changed, 50 insertions(+), 14 deletions(-) diff --git a/parm/config/gfs/config.aeroanlgenb b/parm/config/gfs/config.aeroanlgenb index d1f0ed10bd..075b4be90b 100644 --- a/parm/config/gfs/config.aeroanlgenb +++ b/parm/config/gfs/config.aeroanlgenb @@ -12,17 +12,16 @@ export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero_bmat_jedi_config.yaml.j2" export JCB_BASE_YAML="${PARMgfs}/gdas/aero/jcb-base.yaml.j2" export AERO_BMATRIX_STAGE_TMPL="${PARMgfs}/gdas/aero_stage_bmatrix_bkg.yaml.j2" export AERO_BMATRIX_FINALIZE_TMPL="${PARMgfs}/gdas/aero_finalize_bmatrix_bkg.yaml.j2" -export aero_diffusion_iter=10 -export aero_diffusion_horiz_len=2500e3 -export aero_diffusion_fixed_val=1.0 +export aero_diffusion_iter=200 +export aero_diffusion_horiz_len=300e3 +export aero_diffusion_fixed_val=20.0 export npx_clim_b=97 export npy_clim_b=97 export aero_diagb_weight=0.9 export aero_staticb_rescaling_factor=2.0 -export aero_diagb_rescale=20.0 export aero_diagb_n_halo=4 export aero_diagb_n_neighbors=16 -export aero_diagb_smooth_horiz_iter=0 +export aero_diagb_smooth_horiz_iter=200 export aero_diagb_smooth_vert_iter=0 echo "END: config.aeroanlgenb" diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index 4cc77d7339..95d6ad117d 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -399,19 +399,23 @@ case ${step} in "C1152" | "C768") layout_x=8 layout_y=8 + walltime="00:30:00" ;; "C384") layout_x=6 layout_y=6 + walltime="00:20:00" ;; "C192" | "C96") layout_x=4 layout_y=4 + walltime="00:10:00" ;; "C48" ) # this case is for testing only layout_x=1 layout_y=1 + walltime="00:10:00" ;; *) echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" @@ -420,7 +424,6 @@ case ${step} in export layout_x export layout_y - walltime="00:10:00" ntasks=1 threads_per_task=1 tasks_per_node=$(( max_tasks_per_node / threads_per_task )) @@ -428,23 +431,34 @@ case ${step} in ;; "aeroanlvar") + + threads_per_task=1 + case ${CASE} in "C1152" | "C768") layout_x=8 layout_y=8 + walltime="00:45:00" + tasks_per_node=24 ;; "C384") layout_x=6 layout_y=6 + walltime="00:30:00" + tasks_per_node=24 ;; "C192" | "C96") layout_x=4 layout_y=4 + walltime="00:20:00" + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) ;; "C48" ) # this case is for testing only layout_x=1 layout_y=1 + walltime="00:20:00" + tasks_per_node=$(( max_tasks_per_node / threads_per_task )) ;; *) echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" @@ -454,10 +468,7 @@ case ${step} in export layout_x export layout_y - walltime="00:30:00" ntasks=$(( layout_x * layout_y * 6 )) - threads_per_task=1 - tasks_per_node=$(( max_tasks_per_node / threads_per_task )) export is_exclusive=True ;; @@ -498,11 +509,36 @@ case ${step} in "aeroanlfinal") - walltime="00:10:00" + case ${CASE} in + "C1152" | "C768") + layout_x=8 + layout_y=8 + walltime="00:30:00" + ;; + "C384") + layout_x=6 + layout_y=6 + walltime="00:20:00" + ;; + "C192" | "C96") + layout_x=4 + layout_y=4 + walltime="00:10:00" + ;; + "C48" ) + # this case is for testing only + layout_x=1 + layout_y=1 + walltime="00:10:00" + ;; + *) + echo "FATAL ERROR: Resources not defined for job ${step} at resolution ${CASE}" + exit 4 + esac ntasks=1 threads_per_task=1 tasks_per_node=$(( max_tasks_per_node / threads_per_task )) - memory="3072M" + memory="13072M" ;; "marineanlinit") @@ -891,6 +927,7 @@ case ${step} in declare -x "threads_per_task"="${UFS_THREADS}" tasks_per_node=$(( max_tasks_per_node / threads_per_task )) + # TODO: make walltimes APP dependent case "${CASE}" in "C48" | "C96" | "C192") declare -x "walltime_gdas"="00:20:00" @@ -906,7 +943,7 @@ case ${step} in ;; "C768" | "C1152") # Not valid resolutions for ensembles - declare -x "walltime_gdas"="00:50:00" + declare -x "walltime_gdas"="01:20:00" declare -x "walltime_gfs"="06:00:00" ;; *) diff --git a/parm/config/gfs/config.resources.WCOSS2 b/parm/config/gfs/config.resources.WCOSS2 index be55214cac..5ca762b0a7 100644 --- a/parm/config/gfs/config.resources.WCOSS2 +++ b/parm/config/gfs/config.resources.WCOSS2 @@ -5,6 +5,7 @@ case ${step} in "prep") export is_exclusive=True + export tasks_per_node=5 export memory="480GB" ;; diff --git a/ush/load_ufsda_modules.sh b/ush/load_ufsda_modules.sh index 3af843f8fe..ab75af0253 100755 --- a/ush/load_ufsda_modules.sh +++ b/ush/load_ufsda_modules.sh @@ -41,7 +41,6 @@ case "${MACHINE_ID}" in # TODO: Add path to GDASApp libraries and cray-mpich as temporary patches # TODO: Remove LD_LIBRARY_PATH lines as soon as permanent solutions are available export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${HOMEgfs}/sorc/gdas.cd/build/lib" - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/cray/pe/mpich/8.1.19/ofi/intel/19.0/lib" fi module load "${MODS}/${MACHINE_ID}" ncdump=$( command -v ncdump ) diff --git a/ush/module-setup.sh b/ush/module-setup.sh index 2429963d70..158efd2569 100755 --- a/ush/module-setup.sh +++ b/ush/module-setup.sh @@ -52,7 +52,7 @@ elif [[ ${MACHINE_ID} = s4* ]] ; then elif [[ ${MACHINE_ID} = wcoss2 ]]; then # We are on WCOSS2 # Ignore default modules of the same version lower in the search path (req'd by spack-stack) - #export LMOD_TMOD_FIND_FIRST=yes #TODO: Uncomment this when using spack-stack + #export LMOD_TMOD_FIND_FIRST=yes #TODO: Uncomment this when using spack-stack for the entire workflow module reset elif [[ ${MACHINE_ID} = cheyenne* ]] ; then From ba094987eccaac6e821fa6936a6ac0062b4a46f0 Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Fri, 21 Feb 2025 14:22:49 -0500 Subject: [PATCH 4/4] Replace WAVECUR_DID variable with "rtofs" (#3337) This PR completes the remaining requested change that resolves bugzilla 1227. Per NCO guidance in bugzilla 1227 discussion, this PR removes the `WAVECUR_DID` variable and replaces it with hardcoded "rtofs". This matches with how the system handles obsproc paths with the hardcoded "obsproc" text. The other aspects of bugzilla 1227 have been remedied through other PRs that removed the old `COMROOTp2` references and renamed `COM` variables. The waveprep job is currently disabled in `develop` so CI is moot. However, a sanity check was done by running the C48_S2SW CI test on Hera. Resolves #1246 --- parm/config/gefs/config.wave | 1 - parm/config/gfs/config.com | 2 +- parm/config/gfs/config.wave | 1 - scripts/exgfs_wave_prep.sh | 24 ++++++++++++------------ ush/wave_prnc_cur.sh | 2 +- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/parm/config/gefs/config.wave b/parm/config/gefs/config.wave index be37e7edb2..50661fce15 100644 --- a/parm/config/gefs/config.wave +++ b/parm/config/gefs/config.wave @@ -122,7 +122,6 @@ else export WAVEICE_FID=glix_10m fi -export WAVECUR_DID=rtofs if [[ ${DO_OCN} == "YES" ]]; then export WW3CURINP='CPL' export WAVECUR_FID= diff --git a/parm/config/gfs/config.com b/parm/config/gfs/config.com index 8b6da376f3..649f82e3e3 100644 --- a/parm/config/gfs/config.com +++ b/parm/config/gfs/config.com @@ -36,7 +36,7 @@ echo "BEGIN: config.com" # if [[ "${RUN_ENVIR:-emc}" == "nco" ]]; then COM_OBS_TMPL=$(compath.py "${envir}/obsproc/${obsproc_ver}")'/${RUN}.${YMD}/${HH}/atmos' - COM_RTOFS_TMPL=$(compath.py "${envir}/${WAVECUR_DID}/${rtofs_ver}") + COM_RTOFS_TMPL=$(compath.py "${envir}/rtofs/${rtofs_ver}") else COM_OBS_TMPL='${ROTDIR}/${RUN}.${YMD}/${HH}/obs' COM_RTOFS_TMPL='${DMPDIR}' diff --git a/parm/config/gfs/config.wave b/parm/config/gfs/config.wave index 722e1122e4..6760e0fe2b 100644 --- a/parm/config/gfs/config.wave +++ b/parm/config/gfs/config.wave @@ -152,7 +152,6 @@ else export WAVEICE_FID=glix_10m fi -export WAVECUR_DID=rtofs if [[ ${DO_OCN} == "YES" ]]; then export WW3CURINP='CPL' export WAVECUR_FID= diff --git a/scripts/exgfs_wave_prep.sh b/scripts/exgfs_wave_prep.sh index f83ead2c22..bf4c21e493 100755 --- a/scripts/exgfs_wave_prep.sh +++ b/scripts/exgfs_wave_prep.sh @@ -19,7 +19,7 @@ # # # COM inputs: # # - ${COMIN_WAVE_PREP}/${RUN}wave.mod_def.${grdID} # -# - ${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f#HHH_prog.nc # +# - ${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f#HHH_prog.nc # # # # COM outputs: # # - ${COMOUT_WAVE_PREP}/${RUN}wave.${WAVECUR_FID}.$cycle.cur # @@ -329,19 +329,19 @@ source "${USHgfs}/preamble.sh" ymdh_rtofs=$ymdh_beg if [ "$FHMAX_WAV_CUR" -le 72 ]; then - rtofsfile1="${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f024_prog.nc" - rtofsfile2="${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f048_prog.nc" - rtofsfile3="${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f072_prog.nc" + rtofsfile1="${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f024_prog.nc" + rtofsfile2="${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f048_prog.nc" + rtofsfile3="${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f072_prog.nc" if [ ! -f $rtofsfile1 ] || [ ! -f $rtofsfile2 ] || [ ! -f $rtofsfile3 ]; then #Needed current files are not available, so use RTOFS from previous day export RPDY=$($NDATE -24 ${RPDY}00 | cut -c1-8) fi else - rtofsfile1="${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f096_prog.nc" - rtofsfile2="${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f120_prog.nc" - rtofsfile3="${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f144_prog.nc" - rtofsfile4="${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f168_prog.nc" - rtofsfile5="${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_f192_prog.nc" + rtofsfile1="${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f096_prog.nc" + rtofsfile2="${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f120_prog.nc" + rtofsfile3="${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f144_prog.nc" + rtofsfile4="${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f168_prog.nc" + rtofsfile5="${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_f192_prog.nc" if [ ! -f $rtofsfile1 ] || [ ! -f $rtofsfile2 ] || [ ! -f $rtofsfile3 ] || [ ! -f $rtofsfile4 ] || [ ! -f $rtofsfile5 ]; then #Needed current files are not available, so use RTOFS from previous day @@ -367,8 +367,8 @@ source "${USHgfs}/preamble.sh" fhr_rtofs=$(${NHOUR} ${ymdh_rtofs} ${RPDY}00) fh3_rtofs=$(printf "%03d" "${fhr_rtofs#0}") - curfile1h=${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_${fext}${fh3_rtofs}_prog.nc - curfile3h=${COMIN_RTOFS}/${WAVECUR_DID}.${RPDY}/rtofs_glo_2ds_${fext}${fh3_rtofs}_prog.nc + curfile1h=${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_${fext}${fh3_rtofs}_prog.nc + curfile3h=${COMIN_RTOFS}/rtofs.${RPDY}/rtofs_glo_2ds_${fext}${fh3_rtofs}_prog.nc if [ -s ${curfile1h} ] && [ "${FLGHF}" = "T" ] ; then curfile=${curfile1h} @@ -449,7 +449,7 @@ source "${USHgfs}/preamble.sh" set_trace fi - files=$(ls ${WAVECUR_DID}.* 2> /dev/null) + files=$(ls rtofs.* 2> /dev/null) if [ -z "$files" ] then diff --git a/ush/wave_prnc_cur.sh b/ush/wave_prnc_cur.sh index cfd499330f..2315d483c6 100755 --- a/ush/wave_prnc_cur.sh +++ b/ush/wave_prnc_cur.sh @@ -93,6 +93,6 @@ then exit 4 fi -mv -f current.ww3 ${DATA}/${WAVECUR_DID}.${ymdh_rtofs} +mv -f current.ww3 ${DATA}/rtofs.${ymdh_rtofs} cd ${DATA}