From 36bb3ec31a76632ae8f949897bb87e200d0eb79a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 12:14:24 +0000 Subject: [PATCH 01/13] Initial plan From cae2802db9db73bdf1a4e0fdb971addc9fc69d89 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 12:22:30 +0000 Subject: [PATCH 02/13] Create consolidated load_modules.sh script and update all job files - Created new dev/ush/load_modules.sh with support for run, gsi, verif, ufsda, ufswm, setup module types - Updated link_workflow.sh to link new script as load_fv3gfs_modules.sh for backwards compatibility - Updated all 99 job files in dev/jobs/ to use new consolidated script with appropriate module type arguments - Script includes automatic fallback to gw_run module when specific module type is not available on a platform - Preserves all environment variables and special handling from original scripts Co-authored-by: DavidHuber-NOAA <69919478+DavidHuber-NOAA@users.noreply.github.com> --- dev/jobs/aeroanlfinal.sh | 2 +- dev/jobs/aeroanlgenb.sh | 2 +- dev/jobs/aeroanlinit.sh | 2 +- dev/jobs/aeroanlvar.sh | 2 +- dev/jobs/aerosol_init.sh | 2 +- dev/jobs/anal.sh | 2 +- dev/jobs/analcalc.sh | 2 +- dev/jobs/analcalc_fv3jedi.sh | 2 +- dev/jobs/analdiag.sh | 2 +- dev/jobs/anlstat.sh | 2 +- dev/jobs/arch_tars.sh | 2 +- dev/jobs/arch_vrfy.sh | 2 +- dev/jobs/atmanlfinal.sh | 2 +- dev/jobs/atmanlfv3inc.sh | 2 +- dev/jobs/atmanlinit.sh | 2 +- dev/jobs/atmanlvar.sh | 2 +- dev/jobs/atmensanlfinal.sh | 2 +- dev/jobs/atmensanlfv3inc.sh | 2 +- dev/jobs/atmensanlinit.sh | 2 +- dev/jobs/atmensanlletkf.sh | 2 +- dev/jobs/atmensanlobs.sh | 2 +- dev/jobs/atmensanlsol.sh | 2 +- dev/jobs/atmos_ensstat.sh | 2 +- dev/jobs/atmos_products.sh | 2 +- dev/jobs/awips.sh | 2 +- dev/jobs/awips_20km_1p0deg.sh | 2 +- dev/jobs/cleanup.sh | 2 +- dev/jobs/earc_tars.sh | 2 +- dev/jobs/earc_vrfy.sh | 2 +- dev/jobs/ecen.sh | 2 +- dev/jobs/ecen_fv3jedi.sh | 2 +- dev/jobs/echgres.sh | 2 +- dev/jobs/ediag.sh | 2 +- dev/jobs/eobs.sh | 2 +- dev/jobs/epos.sh | 2 +- dev/jobs/esfc.sh | 2 +- dev/jobs/esnowanl.sh | 2 +- dev/jobs/eupd.sh | 2 +- dev/jobs/extractvars.sh | 2 +- dev/jobs/fbwind.sh | 2 +- dev/jobs/fcst.sh | 4 +- dev/jobs/fetch.sh | 2 +- dev/jobs/fit2obs.sh | 2 +- dev/jobs/gempak.sh | 2 +- dev/jobs/gempakgrb2spec.sh | 2 +- dev/jobs/gempakmeta.sh | 2 +- dev/jobs/gempakmetancdc.sh | 2 +- dev/jobs/gempakncdcupapgif.sh | 2 +- dev/jobs/gen_control_ic.sh | 2 +- dev/jobs/genesis.sh | 2 +- dev/jobs/genesis_fsu.sh | 2 +- dev/jobs/globus_arch.sh | 2 +- dev/jobs/globus_earc.sh | 2 +- dev/jobs/marineanlchkpt.sh | 2 +- dev/jobs/marineanlecen.sh | 2 +- dev/jobs/marineanlfinal.sh | 2 +- dev/jobs/marineanlinit.sh | 2 +- dev/jobs/marineanlletkf.sh | 2 +- dev/jobs/marineanlvar.sh | 2 +- dev/jobs/marinebmat.sh | 2 +- dev/jobs/marinebmatinit.sh | 2 +- dev/jobs/metp.sh | 2 +- dev/jobs/npoess.sh | 2 +- dev/jobs/oceanice_products.sh | 2 +- dev/jobs/offlineanl.sh | 2 +- dev/jobs/postsnd.sh | 2 +- dev/jobs/prep.sh | 2 +- dev/jobs/prep_emissions.sh | 2 +- dev/jobs/prep_sfc.sh | 2 +- dev/jobs/prepatmiodaobs.sh | 2 +- dev/jobs/prepobsaero.sh | 2 +- dev/jobs/prepoceanobs.sh | 2 +- dev/jobs/sfcanl.sh | 2 +- dev/jobs/snowanl.sh | 2 +- dev/jobs/stage_ic.sh | 2 +- dev/jobs/tracker.sh | 2 +- dev/jobs/upp.sh | 4 +- dev/jobs/verfozn.sh | 2 +- dev/jobs/verfrad.sh | 2 +- dev/jobs/vminmon.sh | 2 +- dev/jobs/wave_stat.sh | 2 +- dev/jobs/wave_stat_pnt.sh | 2 +- dev/jobs/waveawipsbulls.sh | 2 +- dev/jobs/waveawipsgridded.sh | 2 +- dev/jobs/wavegempak.sh | 2 +- dev/jobs/waveinit.sh | 4 +- dev/jobs/wavepostbndpnt.sh | 4 +- dev/jobs/wavepostbndpntbll.sh | 2 +- dev/jobs/wavepostpnt.sh | 4 +- dev/jobs/wavepostsbs.sh | 4 +- dev/jobs/waveprep.sh | 4 +- dev/ush/load_modules.sh | 269 ++++++++++++++++++++++++++++++++++ sorc/link_workflow.sh | 5 +- 93 files changed, 369 insertions(+), 101 deletions(-) create mode 100644 dev/ush/load_modules.sh diff --git a/dev/jobs/aeroanlfinal.sh b/dev/jobs/aeroanlfinal.sh index 164d8e4201d..e5e0c3736eb 100755 --- a/dev/jobs/aeroanlfinal.sh +++ b/dev/jobs/aeroanlfinal.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/aeroanlgenb.sh b/dev/jobs/aeroanlgenb.sh index 37f97a02ac4..be57aae5857 100755 --- a/dev/jobs/aeroanlgenb.sh +++ b/dev/jobs/aeroanlgenb.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/aeroanlinit.sh b/dev/jobs/aeroanlinit.sh index cdc5a71a358..eb540376c70 100755 --- a/dev/jobs/aeroanlinit.sh +++ b/dev/jobs/aeroanlinit.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/aeroanlvar.sh b/dev/jobs/aeroanlvar.sh index 636342a3efd..8e17bf41f8e 100755 --- a/dev/jobs/aeroanlvar.sh +++ b/dev/jobs/aeroanlvar.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/aerosol_init.sh b/dev/jobs/aerosol_init.sh index 901677c253c..d8e55cb6575 100755 --- a/dev/jobs/aerosol_init.sh +++ b/dev/jobs/aerosol_init.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/anal.sh b/dev/jobs/anal.sh index 720f31364a7..ae420b4063a 100755 --- a/dev/jobs/anal.sh +++ b/dev/jobs/anal.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/analcalc.sh b/dev/jobs/analcalc.sh index 82438c8572f..3f8d5f595c3 100755 --- a/dev/jobs/analcalc.sh +++ b/dev/jobs/analcalc.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source GSI workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/analcalc_fv3jedi.sh b/dev/jobs/analcalc_fv3jedi.sh index f82619ea8ce..52bbdf42804 100755 --- a/dev/jobs/analcalc_fv3jedi.sh +++ b/dev/jobs/analcalc_fv3jedi.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/dev/jobs/analdiag.sh b/dev/jobs/analdiag.sh index 4bfa9f8986e..36e22ff8526 100755 --- a/dev/jobs/analdiag.sh +++ b/dev/jobs/analdiag.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/anlstat.sh b/dev/jobs/anlstat.sh index 7cf8e75b900..8b73be1026b 100755 --- a/dev/jobs/anlstat.sh +++ b/dev/jobs/anlstat.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda err=$? if [[ ${err} -ne 0 ]]; then echo "FATAL ERROR Failed to load UFSDA modules!" diff --git a/dev/jobs/arch_tars.sh b/dev/jobs/arch_tars.sh index b288c24fb49..fb8dbdc170a 100755 --- a/dev/jobs/arch_tars.sh +++ b/dev/jobs/arch_tars.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/arch_vrfy.sh b/dev/jobs/arch_vrfy.sh index 85977fb7665..50cb330281b 100755 --- a/dev/jobs/arch_vrfy.sh +++ b/dev/jobs/arch_vrfy.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmanlfinal.sh b/dev/jobs/atmanlfinal.sh index 3d01812c2f6..05202ea5ccf 100755 --- a/dev/jobs/atmanlfinal.sh +++ b/dev/jobs/atmanlfinal.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmanlfv3inc.sh b/dev/jobs/atmanlfv3inc.sh index 280e1270a7b..9d9fac34c55 100755 --- a/dev/jobs/atmanlfv3inc.sh +++ b/dev/jobs/atmanlfv3inc.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmanlinit.sh b/dev/jobs/atmanlinit.sh index 57288430864..1fe059958e0 100755 --- a/dev/jobs/atmanlinit.sh +++ b/dev/jobs/atmanlinit.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmanlvar.sh b/dev/jobs/atmanlvar.sh index 00d6e80c977..4e6156af443 100755 --- a/dev/jobs/atmanlvar.sh +++ b/dev/jobs/atmanlvar.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmensanlfinal.sh b/dev/jobs/atmensanlfinal.sh index df7206ebb29..a127724b24a 100755 --- a/dev/jobs/atmensanlfinal.sh +++ b/dev/jobs/atmensanlfinal.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmensanlfv3inc.sh b/dev/jobs/atmensanlfv3inc.sh index b6f50b32585..9e2cbc7a82e 100755 --- a/dev/jobs/atmensanlfv3inc.sh +++ b/dev/jobs/atmensanlfv3inc.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmensanlinit.sh b/dev/jobs/atmensanlinit.sh index 35b885315ce..e30e96fce31 100755 --- a/dev/jobs/atmensanlinit.sh +++ b/dev/jobs/atmensanlinit.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmensanlletkf.sh b/dev/jobs/atmensanlletkf.sh index 37fe66b2067..53b296235f3 100755 --- a/dev/jobs/atmensanlletkf.sh +++ b/dev/jobs/atmensanlletkf.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmensanlobs.sh b/dev/jobs/atmensanlobs.sh index d8b9f1e1f3d..fa47622c6db 100755 --- a/dev/jobs/atmensanlobs.sh +++ b/dev/jobs/atmensanlobs.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmensanlsol.sh b/dev/jobs/atmensanlsol.sh index 2fbf5ec25b5..0318e2ccdc4 100755 --- a/dev/jobs/atmensanlsol.sh +++ b/dev/jobs/atmensanlsol.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/atmos_ensstat.sh b/dev/jobs/atmos_ensstat.sh index dd4a70cd07c..8e53455cf0d 100755 --- a/dev/jobs/atmos_ensstat.sh +++ b/dev/jobs/atmos_ensstat.sh @@ -8,7 +8,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/atmos_products.sh b/dev/jobs/atmos_products.sh index e9d15789700..b49613edced 100755 --- a/dev/jobs/atmos_products.sh +++ b/dev/jobs/atmos_products.sh @@ -8,7 +8,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/awips.sh b/dev/jobs/awips.sh index 1c534d4277a..337ab09d16f 100755 --- a/dev/jobs/awips.sh +++ b/dev/jobs/awips.sh @@ -1,7 +1,7 @@ #! /usr/bin/env bash set -x -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/awips_20km_1p0deg.sh b/dev/jobs/awips_20km_1p0deg.sh index 5b35606438c..60f1c1be68e 100755 --- a/dev/jobs/awips_20km_1p0deg.sh +++ b/dev/jobs/awips_20km_1p0deg.sh @@ -14,7 +14,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/cleanup.sh b/dev/jobs/cleanup.sh index 15dac1acf52..0cb259555f6 100755 --- a/dev/jobs/cleanup.sh +++ b/dev/jobs/cleanup.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/earc_tars.sh b/dev/jobs/earc_tars.sh index 57b82021b44..16508f162dc 100755 --- a/dev/jobs/earc_tars.sh +++ b/dev/jobs/earc_tars.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/earc_vrfy.sh b/dev/jobs/earc_vrfy.sh index 86696f429e2..1f6b437046c 100755 --- a/dev/jobs/earc_vrfy.sh +++ b/dev/jobs/earc_vrfy.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/ecen.sh b/dev/jobs/ecen.sh index cc4d2b19b27..db5479c50b7 100755 --- a/dev/jobs/ecen.sh +++ b/dev/jobs/ecen.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/ecen_fv3jedi.sh b/dev/jobs/ecen_fv3jedi.sh index 41b285e4c50..0d3f13c6c57 100755 --- a/dev/jobs/ecen_fv3jedi.sh +++ b/dev/jobs/ecen_fv3jedi.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/dev/jobs/echgres.sh b/dev/jobs/echgres.sh index 00c297249ce..e3725412554 100755 --- a/dev/jobs/echgres.sh +++ b/dev/jobs/echgres.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/ediag.sh b/dev/jobs/ediag.sh index 4adc50ccc3a..6110b86e046 100755 --- a/dev/jobs/ediag.sh +++ b/dev/jobs/ediag.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/eobs.sh b/dev/jobs/eobs.sh index b906aa41ac1..7927e5aa9a0 100755 --- a/dev/jobs/eobs.sh +++ b/dev/jobs/eobs.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/epos.sh b/dev/jobs/epos.sh index e716e4fc557..565f86d74e4 100755 --- a/dev/jobs/epos.sh +++ b/dev/jobs/epos.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source GSI workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/esfc.sh b/dev/jobs/esfc.sh index 58571678b45..9a567802ddc 100755 --- a/dev/jobs/esfc.sh +++ b/dev/jobs/esfc.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source GSI workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/esnowanl.sh b/dev/jobs/esnowanl.sh index 8f321ed4ef1..7ee1d0f6079 100755 --- a/dev/jobs/esnowanl.sh +++ b/dev/jobs/esnowanl.sh @@ -2,7 +2,7 @@ ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/eupd.sh b/dev/jobs/eupd.sh index dc26ff8b45a..0215c2489af 100755 --- a/dev/jobs/eupd.sh +++ b/dev/jobs/eupd.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/extractvars.sh b/dev/jobs/extractvars.sh index 1f6a046235b..da9194dc152 100755 --- a/dev/jobs/extractvars.sh +++ b/dev/jobs/extractvars.sh @@ -5,7 +5,7 @@ set -x ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ "${status}" -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/fbwind.sh b/dev/jobs/fbwind.sh index 1e658e611a8..7bd652fa728 100755 --- a/dev/jobs/fbwind.sh +++ b/dev/jobs/fbwind.sh @@ -3,7 +3,7 @@ set -x ############################################################### -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/fcst.sh b/dev/jobs/fcst.sh index 1e88f175723..6d741c444fa 100755 --- a/dev/jobs/fcst.sh +++ b/dev/jobs/fcst.sh @@ -7,9 +7,9 @@ set -x # TODO clean this up once ncdiag/1.1.2 is installed on WCOSS2 source "${HOMEgfs}/ush/detect_machine.sh" if [[ "${MACHINE_ID}" == "wcoss2" ]]; then - source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" + source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm else - source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" + source "${HOMEgfs}/dev/ush/load_modules.sh" run fi status=$? if [[ ${status} -ne 0 ]]; then diff --git a/dev/jobs/fetch.sh b/dev/jobs/fetch.sh index 9e3850cce82..c16e101c23a 100755 --- a/dev/jobs/fetch.sh +++ b/dev/jobs/fetch.sh @@ -3,7 +3,7 @@ set -x # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ "${status}" -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/fit2obs.sh b/dev/jobs/fit2obs.sh index 3358c65c47d..f4471a73069 100755 --- a/dev/jobs/fit2obs.sh +++ b/dev/jobs/fit2obs.sh @@ -5,7 +5,7 @@ set -x ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/gempak.sh b/dev/jobs/gempak.sh index c6dae756b23..e21384e86a0 100755 --- a/dev/jobs/gempak.sh +++ b/dev/jobs/gempak.sh @@ -1,7 +1,7 @@ #! /usr/bin/env bash set -x -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/gempakgrb2spec.sh b/dev/jobs/gempakgrb2spec.sh index f72030c8e4c..0a0aa2d6a50 100755 --- a/dev/jobs/gempakgrb2spec.sh +++ b/dev/jobs/gempakgrb2spec.sh @@ -1,7 +1,7 @@ #! /usr/bin/env bash set -x -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/gempakmeta.sh b/dev/jobs/gempakmeta.sh index c46777db470..239d9966c59 100755 --- a/dev/jobs/gempakmeta.sh +++ b/dev/jobs/gempakmeta.sh @@ -3,7 +3,7 @@ set -x ############################################################### -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/gempakmetancdc.sh b/dev/jobs/gempakmetancdc.sh index a51c33f627b..dc36d95c574 100755 --- a/dev/jobs/gempakmetancdc.sh +++ b/dev/jobs/gempakmetancdc.sh @@ -3,7 +3,7 @@ set -x ############################################################### -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/gempakncdcupapgif.sh b/dev/jobs/gempakncdcupapgif.sh index f6fe0cf1a33..6741b080e61 100755 --- a/dev/jobs/gempakncdcupapgif.sh +++ b/dev/jobs/gempakncdcupapgif.sh @@ -3,7 +3,7 @@ set -x ############################################################### -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/gen_control_ic.sh b/dev/jobs/gen_control_ic.sh index 1e2e173ea8f..0d4bddbc600 100755 --- a/dev/jobs/gen_control_ic.sh +++ b/dev/jobs/gen_control_ic.sh @@ -1,5 +1,5 @@ #! /usr/bin/env bash -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/genesis.sh b/dev/jobs/genesis.sh index 04a27f5df21..aea3fda5a32 100755 --- a/dev/jobs/genesis.sh +++ b/dev/jobs/genesis.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? (( status != 0 )) && exit "${status}" diff --git a/dev/jobs/genesis_fsu.sh b/dev/jobs/genesis_fsu.sh index 7d50bf6e25a..962f720cb40 100755 --- a/dev/jobs/genesis_fsu.sh +++ b/dev/jobs/genesis_fsu.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? (( status != 0 )) && exit "${status}" diff --git a/dev/jobs/globus_arch.sh b/dev/jobs/globus_arch.sh index 9104a761e8e..9bd32136e45 100755 --- a/dev/jobs/globus_arch.sh +++ b/dev/jobs/globus_arch.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? [[ ${status} -ne 0 ]] && exit "${status}" diff --git a/dev/jobs/globus_earc.sh b/dev/jobs/globus_earc.sh index 2bb6b5dd962..0bb421b41f7 100755 --- a/dev/jobs/globus_earc.sh +++ b/dev/jobs/globus_earc.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}"; fi diff --git a/dev/jobs/marineanlchkpt.sh b/dev/jobs/marineanlchkpt.sh index 770eafdc9e7..3c1de075cae 100755 --- a/dev/jobs/marineanlchkpt.sh +++ b/dev/jobs/marineanlchkpt.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/marineanlecen.sh b/dev/jobs/marineanlecen.sh index 506b67b9231..9d1678c9122 100755 --- a/dev/jobs/marineanlecen.sh +++ b/dev/jobs/marineanlecen.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/marineanlfinal.sh b/dev/jobs/marineanlfinal.sh index 9d726678665..127f74693fd 100755 --- a/dev/jobs/marineanlfinal.sh +++ b/dev/jobs/marineanlfinal.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/marineanlinit.sh b/dev/jobs/marineanlinit.sh index b3f5afea09d..4a5e75db985 100755 --- a/dev/jobs/marineanlinit.sh +++ b/dev/jobs/marineanlinit.sh @@ -5,7 +5,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/marineanlletkf.sh b/dev/jobs/marineanlletkf.sh index bb78a2dafd0..51a342d58f0 100755 --- a/dev/jobs/marineanlletkf.sh +++ b/dev/jobs/marineanlletkf.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/marineanlvar.sh b/dev/jobs/marineanlvar.sh index 2a2fcbc57a1..ac8d06a4a0c 100755 --- a/dev/jobs/marineanlvar.sh +++ b/dev/jobs/marineanlvar.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/marinebmat.sh b/dev/jobs/marinebmat.sh index 8c337b7e591..94d3dd3e9f2 100755 --- a/dev/jobs/marinebmat.sh +++ b/dev/jobs/marinebmat.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ "${status}" -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/marinebmatinit.sh b/dev/jobs/marinebmatinit.sh index 709517c0406..4cbaff95a8d 100755 --- a/dev/jobs/marinebmatinit.sh +++ b/dev/jobs/marinebmatinit.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ "${status}" -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/metp.sh b/dev/jobs/metp.sh index 9fc77ea6d52..797fc029237 100755 --- a/dev/jobs/metp.sh +++ b/dev/jobs/metp.sh @@ -3,7 +3,7 @@ set -x ############################################################### -source "${HOMEgfs}/dev/ush/load_gw_verif_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" verif status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/npoess.sh b/dev/jobs/npoess.sh index b69dc7aceb5..172d5014531 100755 --- a/dev/jobs/npoess.sh +++ b/dev/jobs/npoess.sh @@ -3,7 +3,7 @@ set -x ############################################################### -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/oceanice_products.sh b/dev/jobs/oceanice_products.sh index ee99c3219dd..8ee037dceac 100755 --- a/dev/jobs/oceanice_products.sh +++ b/dev/jobs/oceanice_products.sh @@ -8,7 +8,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if (( status != 0 )); then exit "${status}"; fi diff --git a/dev/jobs/offlineanl.sh b/dev/jobs/offlineanl.sh index b3aba8d3271..26f5576c58d 100755 --- a/dev/jobs/offlineanl.sh +++ b/dev/jobs/offlineanl.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/postsnd.sh b/dev/jobs/postsnd.sh index b5135012b19..3fc3096b487 100755 --- a/dev/jobs/postsnd.sh +++ b/dev/jobs/postsnd.sh @@ -2,7 +2,7 @@ set -x -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/prep.sh b/dev/jobs/prep.sh index d1d8f8f58c7..c11e63533fc 100755 --- a/dev/jobs/prep.sh +++ b/dev/jobs/prep.sh @@ -2,7 +2,7 @@ ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then err_exit "${status}" diff --git a/dev/jobs/prep_emissions.sh b/dev/jobs/prep_emissions.sh index 6487ea33fbb..5c52cd2a224 100755 --- a/dev/jobs/prep_emissions.sh +++ b/dev/jobs/prep_emissions.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? (( status != 0 )) && exit "${status}" diff --git a/dev/jobs/prep_sfc.sh b/dev/jobs/prep_sfc.sh index ade57a937cc..4d4164ca7ad 100755 --- a/dev/jobs/prep_sfc.sh +++ b/dev/jobs/prep_sfc.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ "${status}" -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/prepatmiodaobs.sh b/dev/jobs/prepatmiodaobs.sh index 13635491f62..4633c81b060 100755 --- a/dev/jobs/prepatmiodaobs.sh +++ b/dev/jobs/prepatmiodaobs.sh @@ -2,7 +2,7 @@ ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/prepobsaero.sh b/dev/jobs/prepobsaero.sh index 00dfd867a07..1996172958f 100755 --- a/dev/jobs/prepobsaero.sh +++ b/dev/jobs/prepobsaero.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/prepoceanobs.sh b/dev/jobs/prepoceanobs.sh index 25fc5a49ef3..38f71e3ee39 100755 --- a/dev/jobs/prepoceanobs.sh +++ b/dev/jobs/prepoceanobs.sh @@ -4,7 +4,7 @@ export STRICT="NO" ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/sfcanl.sh b/dev/jobs/sfcanl.sh index c2ce6f0a10c..293fca99a22 100755 --- a/dev/jobs/sfcanl.sh +++ b/dev/jobs/sfcanl.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/snowanl.sh b/dev/jobs/snowanl.sh index d123fe9fe82..84b401f7750 100755 --- a/dev/jobs/snowanl.sh +++ b/dev/jobs/snowanl.sh @@ -2,7 +2,7 @@ ############################################################### # Source UFSDA workflow modules -source "${HOMEgfs}/dev/ush/load_ufsda_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/stage_ic.sh b/dev/jobs/stage_ic.sh index ae60220ee81..e104d785f9c 100755 --- a/dev/jobs/stage_ic.sh +++ b/dev/jobs/stage_ic.sh @@ -3,7 +3,7 @@ set -x # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ "${status}" -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/tracker.sh b/dev/jobs/tracker.sh index 91a28fc3915..ff3b0f9f8e6 100755 --- a/dev/jobs/tracker.sh +++ b/dev/jobs/tracker.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? (( status != 0 )) && exit "${status}" diff --git a/dev/jobs/upp.sh b/dev/jobs/upp.sh index 642f804dc0b..cf3b95a689c 100755 --- a/dev/jobs/upp.sh +++ b/dev/jobs/upp.sh @@ -9,7 +9,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -#source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +#source "${HOMEgfs}/dev/ush/load_modules.sh" run #status=$? #if (( status != 0 )); then exit "${status}"; fi # Temporarily load modules from UPP on WCOSS2 @@ -42,7 +42,7 @@ if [[ "${MACHINE_ID}" == "wcoss2" ]]; then export PYTHONPATH else - source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" + source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}"; diff --git a/dev/jobs/verfozn.sh b/dev/jobs/verfozn.sh index 930243ef913..95260a3264c 100755 --- a/dev/jobs/verfozn.sh +++ b/dev/jobs/verfozn.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source GSI workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ status -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/verfrad.sh b/dev/jobs/verfrad.sh index 5daa372ed0b..4c582018834 100755 --- a/dev/jobs/verfrad.sh +++ b/dev/jobs/verfrad.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source GSI workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ status -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/vminmon.sh b/dev/jobs/vminmon.sh index b3fad40447a..4841f18d467 100755 --- a/dev/jobs/vminmon.sh +++ b/dev/jobs/vminmon.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_gw_gsi_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" gsi status=$? if [[ status -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/wave_stat.sh b/dev/jobs/wave_stat.sh index 1b66a3ea22b..ab20647ff4a 100755 --- a/dev/jobs/wave_stat.sh +++ b/dev/jobs/wave_stat.sh @@ -2,7 +2,7 @@ ############################################################### -source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm err=$? if [[ "${err}" -ne 0 ]]; then exit "${err}" diff --git a/dev/jobs/wave_stat_pnt.sh b/dev/jobs/wave_stat_pnt.sh index 485530be6c0..8b6c48cc608 100755 --- a/dev/jobs/wave_stat_pnt.sh +++ b/dev/jobs/wave_stat_pnt.sh @@ -1,7 +1,7 @@ #! /usr/bin/env bash ############################################################### -source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm err=$? if [[ "${err}" -ne 0 ]]; then exit "${err}" diff --git a/dev/jobs/waveawipsbulls.sh b/dev/jobs/waveawipsbulls.sh index 6761bdbe341..9dd01d3ee8c 100755 --- a/dev/jobs/waveawipsbulls.sh +++ b/dev/jobs/waveawipsbulls.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/waveawipsgridded.sh b/dev/jobs/waveawipsgridded.sh index 3695b5dc42d..0fc8c41ee8d 100755 --- a/dev/jobs/waveawipsgridded.sh +++ b/dev/jobs/waveawipsgridded.sh @@ -4,7 +4,7 @@ set -x ############################################################### # Source FV3GFS workflow modules -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/wavegempak.sh b/dev/jobs/wavegempak.sh index 37d22f3a3d3..767f4306909 100755 --- a/dev/jobs/wavegempak.sh +++ b/dev/jobs/wavegempak.sh @@ -3,7 +3,7 @@ set -x ############################################################### -source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" run err=$? if [[ "${err}" -ne 0 ]]; then exit "${err}" diff --git a/dev/jobs/waveinit.sh b/dev/jobs/waveinit.sh index c702a0722fd..c04a50298ec 100755 --- a/dev/jobs/waveinit.sh +++ b/dev/jobs/waveinit.sh @@ -3,8 +3,8 @@ set -x ############################################################### -#source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" -source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" +#source "${HOMEgfs}/dev/ush/load_modules.sh" run +source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/jobs/wavepostbndpnt.sh b/dev/jobs/wavepostbndpnt.sh index 8e845ec4752..cc30ce0f268 100755 --- a/dev/jobs/wavepostbndpnt.sh +++ b/dev/jobs/wavepostbndpnt.sh @@ -5,8 +5,8 @@ set -x ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -#source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh -source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" +#source "${HOMEgfs}/dev/ush/load_modules.sh" run +source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm err=$? if [[ "${err}" -ne 0 ]]; then exit "${err}" diff --git a/dev/jobs/wavepostbndpntbll.sh b/dev/jobs/wavepostbndpntbll.sh index 492cf7af456..c2a6f709087 100755 --- a/dev/jobs/wavepostbndpntbll.sh +++ b/dev/jobs/wavepostbndpntbll.sh @@ -6,7 +6,7 @@ set -x echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" #source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh -source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" +source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm err=$? if [[ "${err}" -ne 0 ]]; then exit "${err}" diff --git a/dev/jobs/wavepostpnt.sh b/dev/jobs/wavepostpnt.sh index 467f4aaddb6..612b39ef959 100755 --- a/dev/jobs/wavepostpnt.sh +++ b/dev/jobs/wavepostpnt.sh @@ -5,8 +5,8 @@ set -x ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -#source ${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh -source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" +#source "${HOMEgfs}/dev/ush/load_modules.sh" run +source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm status=$? if [[ "${status}" -ne 0 ]]; then exit "${status}"; fi diff --git a/dev/jobs/wavepostsbs.sh b/dev/jobs/wavepostsbs.sh index e0b2cacd328..aedc57ec5e7 100755 --- a/dev/jobs/wavepostsbs.sh +++ b/dev/jobs/wavepostsbs.sh @@ -4,8 +4,8 @@ set -x ############################################################### # Source FV3GFS workflow modules -#source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" -source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" +#source "${HOMEgfs}/dev/ush/load_modules.sh" run +source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm err=$? if [[ "${err}" -ne 0 ]]; then exit "${err}" diff --git a/dev/jobs/waveprep.sh b/dev/jobs/waveprep.sh index 9542e2a94ef..ac2bbbc022a 100755 --- a/dev/jobs/waveprep.sh +++ b/dev/jobs/waveprep.sh @@ -3,8 +3,8 @@ set -x ############################################################### -#source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh" -source "${HOMEgfs}/dev/ush/load_ufswm_modules.sh" +#source "${HOMEgfs}/dev/ush/load_modules.sh" run +source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm status=$? if [[ ${status} -ne 0 ]]; then exit "${status}" diff --git a/dev/ush/load_modules.sh b/dev/ush/load_modules.sh new file mode 100644 index 00000000000..800b9ee4822 --- /dev/null +++ b/dev/ush/load_modules.sh @@ -0,0 +1,269 @@ +#! /usr/bin/env bash + +############################################################### +# Consolidated module loading script for global-workflow +# Usage: source load_modules.sh [module_type] +# where module_type can be: run, gsi, verif, ufsda, ufswm, setup +# Default module_type is 'run' +############################################################### + +if [[ "$-" == *x* ]]; then + set_x=YES +else + set_x=NO +fi + +if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then + echo "Loading modules quietly..." + set +x +fi + +# Parse module type argument +MODULE_TYPE="${1:-run}" + +# For backwards compatibility, handle ufsda options +UFSDA_MODS="GDAS" +if [[ "${MODULE_TYPE}" == "--eva" ]]; then + MODULE_TYPE="ufsda" + UFSDA_MODS="EVA" +elif [[ "${MODULE_TYPE}" == "--gdas" ]]; then + MODULE_TYPE="ufsda" + UFSDA_MODS="GDAS" +fi + +# Setup runtime environment by loading modules +ulimit_s=$(ulimit -S -s) + +# Test if HOMEgfs is defined. If not, then try to determine it with git rev-parse +_unset_homegfs="NO" +if [[ -z ${HOMEgfs+x} ]]; then + echo "INFO HOMEgfs is not defined. Attempting to find the global-workflow root directory" + # HOMEgfs will be removed from the environment at the end of this script + _unset_homegfs="YES" + + script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + HOMEgfs=$(cd "${script_dir}" && git rev-parse --show-toplevel) + export HOMEgfs + err=$? + if [[ ${err} -ne 0 ]]; then + is_git_dir=$(cd -- "${script_dir}" &> /dev/null && git rev-parse --is-inside-work-tree) + git_stat=$? + if [[ ${git_stat} -ne 0 || ${is_git_dir} != "true" ]]; then + echo "FATAL ERROR unable to determine the root because it is not a git repository." + else + echo "FATAL ERROR unable to determine the root because git rev-parse --show-toplevel failed for an unknown reason" + fi + echo " Unable to load modules. Exiting" + exit 1 + fi +fi + +# Find module command and purge: +source "${HOMEgfs}/ush/detect_machine.sh" +source "${HOMEgfs}/ush/module-setup.sh" + +# Handle different module types +case "${MODULE_TYPE}" in + "ufswm") + # UFS Weather Model modules - special handling + module use "${HOMEgfs}/sorc/ufs_model.fd/modulefiles" + module load "ufs_${MACHINE_ID}.intel" + export err=$? + if [[ ${err} -ne 0 ]]; then + echo "FATAL ERROR: Failed to load ufs_${MACHINE_ID}.intel" + exit 1 + fi + module load prod_util + if [[ "${MACHINE_ID}" = "wcoss2" ]]; then + module load cray-pals + module load cfp + module load libjpeg + module load craype-network-ucx + module load cray-mpich-ucx + module load python/3.8.6 + module load wgrib2 + else + export UTILROOT=${prod_util_ROOT} + source "${HOMEgfs}/versions/run.ver" + module load "wgrib2/${wgrib2_ver}" + fi + export WGRIB2=wgrib2 + + module list + unset MACHINE_ID + ;; + + "ufsda") + # UFSDA modules - special handling + module use "${HOMEgfs}/sorc/gdas.cd/modulefiles" + + case "${MACHINE_ID}" in + ("hera" | "orion" | "hercules" | "wcoss2" | "gaeac5" | "gaeac6" | "ursa") + #TODO: Remove LMOD_TMOD_FIND_FIRST line when spack-stack on WCOSS2 + if [[ "${MACHINE_ID}" == "wcoss2" ]]; then + export LMOD_TMOD_FIND_FIRST=yes + # TODO: Add path to GDASApp libraries and cray-mpich as temporary patches + export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${HOMEgfs}/sorc/gdas.cd/build/lib" + # TODO: Remove LD_LIBRARY_PATH line as soon as permanent solution is available + export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/cray/pe/mpich/8.1.29/ofi/intel/2022.1/lib" + fi + module load "${UFSDA_MODS}/${MACHINE_ID}" + export err=$? + if [[ ${err} -ne 0 ]]; then + echo "FATAL ERROR: Failed to load ${UFSDA_MODS}/${MACHINE_ID}" + exit 1 + fi + ncdump=$(command -v ncdump) + NETCDF=$(echo "${ncdump}" | cut -d " " -f 3) + export NETCDF + ;; + ("acorn") + echo WARNING: UFSDA NOT SUPPORTED ON THIS PLATFORM + ;; + *) + echo "WARNING: UNKNOWN PLATFORM" + ;; + esac + + module list + + ftype=$(type -t set_trace || echo "") + if [[ "${ftype}" == "function" ]]; then + set_trace + elif [[ "${set_x}" == "YES" ]]; then + set -x + fi + + pip list + + # Detect the Python major.minor version + _regex="[0-9]+\.[0-9]+" + # shellcheck disable=SC2312 + if [[ $(python --version) =~ ${_regex} ]]; then + export PYTHON_VERSION="${BASH_REMATCH[0]}" + else + echo "FATAL ERROR: Could not detect the python version" + exit 1 + fi + + ############################################################### + # setup python path for ioda utilities + # TODO: a better solution should be created for setting paths to package python scripts + # shellcheck disable=SC2311 + pyiodaPATH="${HOMEgfs}/sorc/gdas.cd/build/lib/python${PYTHON_VERSION}/" + PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}:${pyiodaPATH}" + export PYTHONPATH + ;; + + "run" | "gsi" | "verif" | "setup") + # Source versions file for runtime + if [[ -f "${HOMEgfs}/versions/run.ver" ]]; then + source "${HOMEgfs}/versions/run.ver" + else + echo "FATAL ERROR ${HOMEgfs}/versions/run.ver does not exist!" + echo "HINT: Run link_workflow.sh first." + exit 1 + fi + + # Load our modules: + module use "${HOMEgfs}/modulefiles" + + # Determine target module based on type and machine + target_module="" + case "${MODULE_TYPE}" in + "gsi") + case "${MACHINE_ID}" in + "wcoss2") + target_module="gw_gsi.${MACHINE_ID}" + ;; + "hera" | "orion" | "hercules" | "gaeac6" | "ursa" | "noaacloud") + echo "INFO: gw_gsi module not available for ${MACHINE_ID}, falling back to gw_run" + target_module="gw_run.${MACHINE_ID}" + ;; + *) + echo "FATAL ERROR: UNSUPPORTED PLATFORM: '${MACHINE_ID}'" + exit 2 + ;; + esac + ;; + + "verif") + case "${MACHINE_ID}" in + "wcoss2" | "hera") + target_module="gw_verif.${MACHINE_ID}" + ;; + *) + echo "WARNING: gw_verif module not available for ${MACHINE_ID}, falling back to gw_run" + target_module="gw_run.${MACHINE_ID}" + ;; + esac + ;; + + "run") + case "${MACHINE_ID}" in + "wcoss2" | "ursa" | "hera" | "orion" | "hercules" | "gaeac5" | "gaeac6" | "noaacloud") + target_module="gw_run.${MACHINE_ID}" + ;; + *) + echo "WARNING: UNKNOWN PLATFORM" + ;; + esac + ;; + + "setup") + case "${MACHINE_ID}" in + "wcoss2" | "ursa" | "hera" | "orion" | "hercules" | "gaeac6" | "noaacloud") + target_module="gw_setup.${MACHINE_ID}" + ;; + *) + echo "WARNING: gw_setup module not available for ${MACHINE_ID}, falling back to gw_run" + target_module="gw_run.${MACHINE_ID}" + ;; + esac + ;; + esac + + if [[ -n "${target_module}" ]]; then + module load "${target_module}" + export err=$? + if [[ ${err} -ne 0 ]]; then + echo "FATAL ERROR: Failed to load ${target_module}" + exit 1 + fi + fi + + module list + + # If this function exists in the environment, run it; else set -x if it was set on entering this script + ftype=$(type -t set_trace || echo "") + if [[ "${ftype}" == "function" ]]; then + set_trace + elif [[ "${set_x}" == "YES" ]]; then + set -x + fi + ;; + + *) + echo "FATAL ERROR: Unknown module type '${MODULE_TYPE}'" + echo "Valid types: run, gsi, verif, ufsda, ufswm, setup" + exit 1 + ;; +esac + +# Set up the PYTHONPATH to include wxflow from HOMEgfs +if [[ -d "${HOMEgfs}/sorc/wxflow/src" ]]; then + PYTHONPATH="${HOMEgfs}/sorc/wxflow/src${PYTHONPATH:+:${PYTHONPATH}}" +fi + +# Add HOMEgfs/ush/python to PYTHONPATH +PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/ush/python" +export PYTHONPATH + +# Restore stack soft limit: +ulimit -S -s "${ulimit_s}" +unset ulimit_s + +# Unset HOMEgfs if it was not set at the beginning of this script +if [[ ${_unset_homegfs} == "YES" ]]; then + unset HOMEgfs +fi diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index 0d6eed92442..b563c0a2605 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -196,10 +196,9 @@ if [[ -s "atparse.bash" ]]; then fi ${LINK_OR_COPY} "${HOMEgfs}/sorc/ufs_model.fd/tests/atparse.bash" . -# Temporarilly link load_gw_run_modules.sh to load_fv3gfs_modules.sh -# TODO: Use load_gw_run_modules.sh everywhere +# Link consolidated load_modules.sh to load_fv3gfs_modules.sh for backwards compatibility cd "${HOMEgfs}/dev/ush" || exit 1 -${LINK_OR_COPY} "${HOMEgfs}/dev/ush/load_gw_run_modules.sh" load_fv3gfs_modules.sh +${LINK_OR_COPY} "${HOMEgfs}/dev/ush/load_modules.sh" load_fv3gfs_modules.sh # add ufs_utils parm dir if [[ -d "${HOMEgfs}/sorc/ufs_utils.fd" ]]; then From d9735ac59e89f1f0c7c8feeadba5f683e7e408f6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 12:26:44 +0000 Subject: [PATCH 03/13] Fix gaeac5 handling in load_modules.sh to match original behavior Co-authored-by: DavidHuber-NOAA <69919478+DavidHuber-NOAA@users.noreply.github.com> --- dev/ush/load_modules.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/ush/load_modules.sh b/dev/ush/load_modules.sh index 800b9ee4822..3d326fe24eb 100644 --- a/dev/ush/load_modules.sh +++ b/dev/ush/load_modules.sh @@ -205,14 +205,14 @@ case "${MODULE_TYPE}" in target_module="gw_run.${MACHINE_ID}" ;; *) - echo "WARNING: UNKNOWN PLATFORM" + echo "WARNING: UNKNOWN PLATFORM: '${MACHINE_ID}'" ;; esac ;; "setup") case "${MACHINE_ID}" in - "wcoss2" | "ursa" | "hera" | "orion" | "hercules" | "gaeac6" | "noaacloud") + "wcoss2" | "ursa" | "hera" | "orion" | "hercules" | "gaeac5" | "gaeac6" | "noaacloud") target_module="gw_setup.${MACHINE_ID}" ;; *) From 1c6c1a240d2bdbf26185e6f44b39da9730c3284b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 12:29:49 +0000 Subject: [PATCH 04/13] Convert old module loading scripts to wrapper scripts for backwards compatibility Co-authored-by: DavidHuber-NOAA <69919478+DavidHuber-NOAA@users.noreply.github.com> --- dev/ush/load_gw_gsi_modules.sh | 106 ++--------------------------- dev/ush/load_gw_run_modules.sh | 101 ++-------------------------- dev/ush/load_gw_verif_modules.sh | 103 ++-------------------------- dev/ush/load_ufsda_modules.sh | 111 ++----------------------------- dev/ush/load_ufswm_modules.sh | 60 ++--------------- 5 files changed, 30 insertions(+), 451 deletions(-) diff --git a/dev/ush/load_gw_gsi_modules.sh b/dev/ush/load_gw_gsi_modules.sh index 34207cf4eaf..0eaf898dad0 100755 --- a/dev/ush/load_gw_gsi_modules.sh +++ b/dev/ush/load_gw_gsi_modules.sh @@ -1,104 +1,10 @@ #! /usr/bin/env bash ############################################################### -if [[ "$-" == *x* ]]; then - set_x=YES -else - set_x=NO -fi - -if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then - echo "Loading modules quietly..." - set +x -fi - -# Setup runtime environment by loading modules -ulimit_s=$( ulimit -S -s ) - -# Test if HOMEgfs is defined. If not, then try to determine it with git rev-parse -_unset_homegfs="NO" -if [[ -z ${HOMEgfs+x} ]]; then - echo "INFO HOMEgfs is not defined. Attempting to find the global-workflow root directory" - # HOMEgfs will be removed from the environment at the end of this script - _unset_homegfs="YES" - - script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - HOMEgfs=$(cd "${script_dir}" && git rev-parse --show-toplevel) - export HOMEgfs - err=$? - if [[ ${err} -ne 0 ]]; then - is_git_dir=$( cd -- "${script_dir}" &> /dev/null && git rev-parse --is-inside-work-tree) - git_stat=$? - if [[ ${git_stat} -ne 0 || ${is_git_dir} != "true" ]]; then - echo "FATAL ERROR unable to determine the root because it is not a git repository." - else - echo "FATAL ERROR unable to determine the root because git rev-parse --show-toplevel failed for an unknown reason" - fi - echo " Unable to load modules. Exiting" - exit 1 - fi -fi - -# Find module command and purge: -source "${HOMEgfs}/ush/detect_machine.sh" -source "${HOMEgfs}/ush/module-setup.sh" - -# Source versions file for runtime -if [[ -f "${HOMEgfs}/versions/run.ver" ]]; then - source "${HOMEgfs}/versions/run.ver" -else - echo "FATAL ERROR ${HOMEgfs}/versions/run.ver does not exist!" - echo "HINT: Run link_workflow.sh first." - exit 1 -fi - -# Load our modules: -module use "${HOMEgfs}/modulefiles" - -case "${MACHINE_ID}" in -"wcoss2") - target_module="gw_gsi.${MACHINE_ID}" - ;; -"hera" | "orion" | "hercules" | "gaeac6" | "ursa" | "noaacloud") - target_module="gw_run.${MACHINE_ID}" - ;; -*) - echo "FATAL ERROR: UNSUPPORTED PLATFORM: '${MACHINE_ID}'" - exit 2 - ;; -esac - -module load "${target_module}" -export err=$? -if [[ ${err} -ne 0 ]]; then - echo "FATAL ERROR: Failed to load ${target_module}" - exit 1 -fi - -module list - -# If this function exists in the environment, run it; else set -x if it was set on entering this script -ftype=$(type -t set_trace || echo "") -if [[ "${ftype}" == "function" ]]; then - set_trace -elif [[ "${set_x}" == "YES" ]]; then - set -x -fi - -# Set up the PYTHONPATH to include wxflow from HOMEgfs -if [[ -d "${HOMEgfs}/sorc/wxflow/src" ]]; then - PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/sorc/wxflow/src" -fi - -# Add HOMEgfs/ush/python to PYTHONPATH -PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/ush/python" -export PYTHONPATH - -# Restore stack soft limit: -ulimit -S -s "${ulimit_s}" -unset ulimit_s +# DEPRECATED: This script is deprecated and replaced by load_modules.sh +# This wrapper is maintained for backwards compatibility. +# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" gsi +############################################################### -# Unset HOMEgfs if it was not set at the beginning of this script -if [[ ${_unset_homegfs} == "YES" ]]; then - unset HOMEgfs -fi +script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) +source "${script_dir}/load_modules.sh" gsi diff --git a/dev/ush/load_gw_run_modules.sh b/dev/ush/load_gw_run_modules.sh index 7ca4d2cbb7b..91064ff71e1 100755 --- a/dev/ush/load_gw_run_modules.sh +++ b/dev/ush/load_gw_run_modules.sh @@ -1,99 +1,10 @@ #! /usr/bin/env bash ############################################################### -if [[ "$-" == *x* ]]; then - set_x=YES -else - set_x=NO -fi - -if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then - echo "Loading modules quietly..." - set +x -fi - -# Setup runtime environment by loading modules -ulimit_s=$( ulimit -S -s ) - -# Test if HOMEgfs is defined. If not, then try to determine it with git rev-parse -_unset_homegfs="NO" -if [[ -z ${HOMEgfs+x} ]]; then - echo "INFO HOMEgfs is not defined. Attempting to find the global-workflow root directory" - # HOMEgfs will be removed from the environment at the end of this script - _unset_homegfs="YES" - - script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - HOMEgfs=$(cd "${script_dir}" && git rev-parse --show-toplevel) - export HOMEgfs - err=$? - if [[ ${err} -ne 0 ]]; then - is_git_dir=$( cd -- "${script_dir}" &> /dev/null && git rev-parse --is-inside-work-tree) - git_stat=$? - if [[ ${git_stat} -ne 0 || ${is_git_dir} != "true" ]]; then - echo "FATAL ERROR unable to determine the root because it is not a git repository." - else - echo "FATAL ERROR unable to determine the root because git rev-parse --show-toplevel failed for an unknown reason" - fi - echo " Unable to load modules. Exiting" - exit 1 - fi -fi - -# Find module command and purge: -source "${HOMEgfs}/ush/detect_machine.sh" -source "${HOMEgfs}/ush/module-setup.sh" - -# Source versions file for runtime -if [[ -f "${HOMEgfs}/versions/run.ver" ]]; then - source "${HOMEgfs}/versions/run.ver" -else - echo "FATAL ERROR ${HOMEgfs}/versions/run.ver does not exist!" - echo "HINT: Run link_workflow.sh first." - exit 1 -fi - -# Load our modules: -module use "${HOMEgfs}/modulefiles" - -case "${MACHINE_ID}" in -"wcoss2" | "ursa" | "hera" | "orion" | "hercules" | "gaeac5" | "gaeac6" | "noaacloud") - target_module="gw_run.${MACHINE_ID}" - module load "${target_module}" - export err=$? - if [[ ${err} -ne 0 ]]; then - echo "FATAL ERROR: Failed to load ${target_module}" - exit 1 - fi - ;; -*) - echo "WARNING: UNKNOWN PLATFORM" - ;; -esac - -module list - -# If this function exists in the environment, run it; else set -x if it was set on entering this script -ftype=$(type -t set_trace || echo "") -if [[ "${ftype}" == "function" ]]; then - set_trace -elif [[ "${set_x}" == "YES" ]]; then - set -x -fi - -# Set up the PYTHONPATH to include wxflow from HOMEgfs -if [[ -d "${HOMEgfs}/sorc/wxflow/src" ]]; then - PYTHONPATH="${HOMEgfs}/sorc/wxflow/src${PYTHONPATH:+:${PYTHONPATH}}" -fi - -# Add HOMEgfs/ush/python to PYTHONPATH -PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/ush/python" -export PYTHONPATH - -# Restore stack soft limit: -ulimit -S -s "${ulimit_s}" -unset ulimit_s +# DEPRECATED: This script is deprecated and replaced by load_modules.sh +# This wrapper is maintained for backwards compatibility. +# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" run +############################################################### -# Unset HOMEgfs if it was not set at the beginning of this script -if [[ ${_unset_homegfs} == "YES" ]]; then - unset HOMEgfs -fi +script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) +source "${script_dir}/load_modules.sh" run diff --git a/dev/ush/load_gw_verif_modules.sh b/dev/ush/load_gw_verif_modules.sh index f519b4f7fb2..8056cde1852 100755 --- a/dev/ush/load_gw_verif_modules.sh +++ b/dev/ush/load_gw_verif_modules.sh @@ -1,101 +1,10 @@ #! /usr/bin/env bash ############################################################### -if [[ "$-" == *x* ]]; then - set_x=YES -else - set_x=NO -fi - -if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then - echo "Loading modules quietly..." - set +x -fi - -# Setup runtime environment by loading modules -ulimit_s=$( ulimit -S -s ) - -# Test if HOMEgfs is defined. If not, then try to determine it with git rev-parse -_unset_homegfs="NO" -if [[ -z ${HOMEgfs+x} ]]; then - echo "INFO HOMEgfs is not defined. Attempting to find the global-workflow root directory" - # HOMEgfs will be removed from the environment at the end of this script - _unset_homegfs="YES" - - script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - HOMEgfs=$(cd "${script_dir}" && git rev-parse --show-toplevel) - export HOMEgfs - err=$? - if [[ ${err} -ne 0 ]]; then - is_git_dir=$( cd -- "${script_dir}" &> /dev/null && git rev-parse --is-inside-work-tree) - git_stat=$? - if [[ ${git_stat} -ne 0 || ${is_git_dir} != "true" ]]; then - echo "FATAL ERROR unable to determine the root because it is not a git repository." - else - echo "FATAL ERROR unable to determine the root because git rev-parse --show-toplevel failed for an unknown reason" - fi - echo " Unable to load modules. Exiting" - exit 1 - fi -fi - -# Find module command and purge: -source "${HOMEgfs}/ush/detect_machine.sh" -source "${HOMEgfs}/ush/module-setup.sh" - -# Source versions file for runtime -if [[ -f "${HOMEgfs}/versions/run.ver" ]]; then - source "${HOMEgfs}/versions/run.ver" -else - echo "FATAL ERROR ${HOMEgfs}/versions/run.ver does not exist!" - echo "HINT: Run link_workflow.sh first." - exit 1 -fi - -# Load our modules: -module use "${HOMEgfs}/modulefiles" - -case "${MACHINE_ID}" in -"wcoss2" | "hera") - target_module="gw_verif.${MACHINE_ID}" - ;; -*) - echo "WARNING: UNKNOWN/UNSUPPORTED PLATFORM: '${MACHINE_ID}'" - target_module="gw_run.${MACHINE_ID}" - ;; -esac - -module load "${target_module}" -export err=$? -if [[ ${err} -ne 0 ]]; then - echo "FATAL ERROR: Failed to load ${target_module}" - exit 1 -fi - -module list - -# If this function exists in the environment, run it; else set -x if it was set on entering this script -ftype=$(type -t set_trace || echo "") -if [[ "${ftype}" == "function" ]]; then - set_trace -elif [[ "${set_x}" == "YES" ]]; then - set -x -fi - -# Set up the PYTHONPATH to include wxflow from HOMEgfs -if [[ -d "${HOMEgfs}/sorc/wxflow/src" ]]; then - PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/sorc/wxflow/src" -fi - -# Add HOMEgfs/ush/python to PYTHONPATH -PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/ush/python" -export PYTHONPATH - -# Restore stack soft limit: -ulimit -S -s "${ulimit_s}" -unset ulimit_s +# DEPRECATED: This script is deprecated and replaced by load_modules.sh +# This wrapper is maintained for backwards compatibility. +# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" verif +############################################################### -# Unset HOMEgfs if it was not set at the beginning of this script -if [[ ${_unset_homegfs} == "YES" ]]; then - unset HOMEgfs -fi +script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) +source "${script_dir}/load_modules.sh" verif diff --git a/dev/ush/load_ufsda_modules.sh b/dev/ush/load_ufsda_modules.sh index 63314002c46..bf28c51ff2e 100755 --- a/dev/ush/load_ufsda_modules.sh +++ b/dev/ush/load_ufsda_modules.sh @@ -1,110 +1,11 @@ #! /usr/bin/env bash ############################################################### -if [[ "$-" == *x* ]]; then - set_x=YES -else - set_x=NO -fi - -if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then - echo "Loading modules quietly..." - set +x -fi - -# Read optional module argument, default is to use GDAS -MODS="GDAS" -if [[ $# -gt 0 ]]; then - case "$1" in - --eva) - MODS="EVA" - ;; - --gdas) - MODS="GDAS" - ;; - *) - echo "Invalid option: $1" >&2 - exit 1 - ;; - esac -fi - -# Setup runtime environment by loading modules -ulimit_s=$(ulimit -S -s) - -# Find module command and purge: -source "${HOMEgfs}/ush/detect_machine.sh" -source "${HOMEgfs}/ush/module-setup.sh" - -# Load our modules: -module use "${HOMEgfs}/sorc/gdas.cd/modulefiles" - -case "${MACHINE_ID}" in - ("hera" | "orion" | "hercules" | "wcoss2" | "gaeac5" | "gaeac6" | "ursa") - #TODO: Remove LMOD_TMOD_FIND_FIRST line when spack-stack on WCOSS2 - if [[ "${MACHINE_ID}" == "wcoss2" ]]; then - export LMOD_TMOD_FIND_FIRST=yes - # TODO: Add path to GDASApp libraries and cray-mpich as temporary patches - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${HOMEgfs}/sorc/gdas.cd/build/lib" - # TODO: Remove LD_LIBRARY_PATH line as soon as permanent solution is available - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/cray/pe/mpich/8.1.29/ofi/intel/2022.1/lib" - fi - module load "${MODS}/${MACHINE_ID}" - export err=$? - if [[ ${err} -ne 0 ]]; then - echo "FATAL ERROR: Failed to load ${MODS}/${MACHINE_ID}" - exit 1 - fi - ncdump=$( command -v ncdump ) - NETCDF=$( echo "${ncdump}" | cut -d " " -f 3 ) - export NETCDF - ;; - ("acorn") - echo WARNING: UFSDA NOT SUPPORTED ON THIS PLATFORM - ;; - *) - echo "WARNING: UNKNOWN PLATFORM" - ;; -esac - -module list - -ftype=$(type -t set_trace || echo "") -if [[ "${ftype}" == "function" ]]; then - set_trace -elif [[ "${set_x}" == "YES" ]]; then - set -x -fi - -pip list - -# Set up the PYTHONPATH to include wxflow from HOMEgfs -if [[ -d "${HOMEgfs}/sorc/wxflow/src" ]]; then - PYTHONPATH="${HOMEgfs}/sorc/wxflow/src${PYTHONPATH:+:${PYTHONPATH}}" -fi - -# Add HOMEgfs/ush/python to PYTHONPATH -PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/ush/python" -export PYTHONPATH - -# Detect the Python major.minor version -_regex="[0-9]+\.[0-9]+" -# shellcheck disable=SC2312 -if [[ $(python --version) =~ ${_regex} ]]; then - export PYTHON_VERSION="${BASH_REMATCH[0]}" -else - echo "FATAL ERROR: Could not detect the python version" - exit 1 -fi - +# DEPRECATED: This script is deprecated and replaced by load_modules.sh +# This wrapper is maintained for backwards compatibility. +# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda +# Or for EVA: source "${HOMEgfs}/dev/ush/load_modules.sh" --eva ############################################################### -# setup python path for ioda utilities -# TODO: a better solution should be created for setting paths to package python scripts -# shellcheck disable=SC2311 -pyiodaPATH="${HOMEgfs}/sorc/gdas.cd/build/lib/python${PYTHON_VERSION}/" -PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}:${pyiodaPATH}" -export PYTHONPATH -# Restore stack soft limit: -ulimit -S -s "${ulimit_s}" -unset ulimit_s +script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) +source "${script_dir}/load_modules.sh" "$@" diff --git a/dev/ush/load_ufswm_modules.sh b/dev/ush/load_ufswm_modules.sh index c913d10b0db..73ae4855efb 100755 --- a/dev/ush/load_ufswm_modules.sh +++ b/dev/ush/load_ufswm_modules.sh @@ -1,58 +1,10 @@ #! /usr/bin/env bash ############################################################### -if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then - echo "Loading modules quietly..." - set +x -fi - -# Setup runtime environment by loading modules -ulimit_s=$(ulimit -S -s) - -source "${HOMEgfs}/ush/detect_machine.sh" -source "${HOMEgfs}/ush/module-setup.sh" - -module use "${HOMEgfs}/sorc/ufs_model.fd/modulefiles" -module load "ufs_${MACHINE_ID}.intel" -export err=$? -if [[ ${err} -ne 0 ]]; then - echo "FATAL ERROR: Failed to load ufs_${MACHINE_ID}.intel" - exit 1 -fi -module load prod_util -if [[ "${MACHINE_ID}" = "wcoss2" ]]; then - module load cray-pals - module load cfp - module load libjpeg - module load craype-network-ucx - module load cray-mpich-ucx - module load python/3.8.6 - module load wgrib2 -else - export UTILROOT=${prod_util_ROOT} - source "${HOMEgfs}/versions/run.ver" - module load "wgrib2/${wgrib2_ver}" -fi -export WGRIB2=wgrib2 - -module list -unset MACHINE_ID - -# Set up the PYTHONPATH to include wxflow from HOMEgfs -if [[ -d "${HOMEgfs}/sorc/wxflow/src" ]]; then - PYTHONPATH="${HOMEgfs}/sorc/wxflow/src${PYTHONPATH:+:${PYTHONPATH}}" -fi - -# Add HOMEgfs/ush/python to PYTHONPATH -PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${HOMEgfs}/ush/python" -export PYTHONPATH - -# Restore stack soft limit: -ulimit -S -s "${ulimit_s}" -unset ulimit_s +# DEPRECATED: This script is deprecated and replaced by load_modules.sh +# This wrapper is maintained for backwards compatibility. +# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm +############################################################### -# If this function exists in the environment, run it; else do not -ftype=$(type -t set_trace || echo "") -if [[ "${ftype}" == "function" ]]; then - set_trace -fi +script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) +source "${script_dir}/load_modules.sh" ufswm From d98c09b1311aa9cb3fa7015473d6694b50bebae7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 12:31:37 +0000 Subject: [PATCH 05/13] Fix commented reference in wavepostbndpntbll.sh Co-authored-by: DavidHuber-NOAA <69919478+DavidHuber-NOAA@users.noreply.github.com> --- dev/jobs/wavepostbndpntbll.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/jobs/wavepostbndpntbll.sh b/dev/jobs/wavepostbndpntbll.sh index c2a6f709087..ec9d66c993e 100755 --- a/dev/jobs/wavepostbndpntbll.sh +++ b/dev/jobs/wavepostbndpntbll.sh @@ -5,7 +5,7 @@ set -x ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -#source "${HOMEgfs}/dev/ush/load_fv3gfs_modules.sh +#source "${HOMEgfs}/dev/ush/load_modules.sh" run source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm err=$? if [[ "${err}" -ne 0 ]]; then From 8c58a822ddecdb37e5f86f4f5dc3f752dd13e864 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:06:27 +0000 Subject: [PATCH 06/13] Simplify module loading logic and remove deprecated symlink creation - Replace large case block with simpler logic: set target_module to gw_${MODULE_TYPE}.${MACHINE_ID}, then check if module exists and fall back to gw_run if not - Add else block with FATAL ERROR when target_module cannot be determined - Remove load_fv3gfs_modules.sh symlink creation from link_workflow.sh as it's no longer needed Co-authored-by: DavidHuber-NOAA <69919478+DavidHuber-NOAA@users.noreply.github.com> --- dev/ush/load_modules.sh | 65 ++++++++--------------------------------- sorc/link_workflow.sh | 4 --- 2 files changed, 12 insertions(+), 57 deletions(-) diff --git a/dev/ush/load_modules.sh b/dev/ush/load_modules.sh index 3d326fe24eb..621166d998d 100644 --- a/dev/ush/load_modules.sh +++ b/dev/ush/load_modules.sh @@ -169,59 +169,15 @@ case "${MODULE_TYPE}" in module use "${HOMEgfs}/modulefiles" # Determine target module based on type and machine - target_module="" - case "${MODULE_TYPE}" in - "gsi") - case "${MACHINE_ID}" in - "wcoss2") - target_module="gw_gsi.${MACHINE_ID}" - ;; - "hera" | "orion" | "hercules" | "gaeac6" | "ursa" | "noaacloud") - echo "INFO: gw_gsi module not available for ${MACHINE_ID}, falling back to gw_run" - target_module="gw_run.${MACHINE_ID}" - ;; - *) - echo "FATAL ERROR: UNSUPPORTED PLATFORM: '${MACHINE_ID}'" - exit 2 - ;; - esac - ;; - - "verif") - case "${MACHINE_ID}" in - "wcoss2" | "hera") - target_module="gw_verif.${MACHINE_ID}" - ;; - *) - echo "WARNING: gw_verif module not available for ${MACHINE_ID}, falling back to gw_run" - target_module="gw_run.${MACHINE_ID}" - ;; - esac - ;; - - "run") - case "${MACHINE_ID}" in - "wcoss2" | "ursa" | "hera" | "orion" | "hercules" | "gaeac5" | "gaeac6" | "noaacloud") - target_module="gw_run.${MACHINE_ID}" - ;; - *) - echo "WARNING: UNKNOWN PLATFORM: '${MACHINE_ID}'" - ;; - esac - ;; - - "setup") - case "${MACHINE_ID}" in - "wcoss2" | "ursa" | "hera" | "orion" | "hercules" | "gaeac5" | "gaeac6" | "noaacloud") - target_module="gw_setup.${MACHINE_ID}" - ;; - *) - echo "WARNING: gw_setup module not available for ${MACHINE_ID}, falling back to gw_run" - target_module="gw_run.${MACHINE_ID}" - ;; - esac - ;; - esac + target_module="gw_${MODULE_TYPE}.${MACHINE_ID}" + + # Check if the target module file exists, fall back to gw_run if not + if ! module is-avail "${target_module}" 2>/dev/null; then + if [[ "${MODULE_TYPE}" != "run" ]]; then + echo "INFO: ${target_module} module not available, falling back to gw_run.${MACHINE_ID}" + fi + target_module="gw_run.${MACHINE_ID}" + fi if [[ -n "${target_module}" ]]; then module load "${target_module}" @@ -230,6 +186,9 @@ case "${MODULE_TYPE}" in echo "FATAL ERROR: Failed to load ${target_module}" exit 1 fi + else + echo "FATAL ERROR: Could not determine target module for MODULE_TYPE='${MODULE_TYPE}' and MACHINE_ID='${MACHINE_ID}'" + exit 1 fi module list diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index b563c0a2605..109fc346810 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -196,10 +196,6 @@ if [[ -s "atparse.bash" ]]; then fi ${LINK_OR_COPY} "${HOMEgfs}/sorc/ufs_model.fd/tests/atparse.bash" . -# Link consolidated load_modules.sh to load_fv3gfs_modules.sh for backwards compatibility -cd "${HOMEgfs}/dev/ush" || exit 1 -${LINK_OR_COPY} "${HOMEgfs}/dev/ush/load_modules.sh" load_fv3gfs_modules.sh - # add ufs_utils parm dir if [[ -d "${HOMEgfs}/sorc/ufs_utils.fd" ]]; then cd "${HOMEgfs}/parm" || exit 1 From 91202feabcd18496b217dfe079b6b00a7d9857a2 Mon Sep 17 00:00:00 2001 From: DavidHuber-NOAA Date: Tue, 7 Oct 2025 11:27:20 +0000 Subject: [PATCH 07/13] Ignore spoc links --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index e0e68a8f2ec..19451584709 100644 --- a/.gitignore +++ b/.gitignore @@ -56,6 +56,7 @@ parm/gdas/ioda parm/gdas/marine parm/gdas/snow parm/gdas/soca +parm/gdas/spoc parm/gdas/stat parm/gdas/jcb-gdas parm/gdas/jcb-algorithms @@ -177,6 +178,7 @@ ush/python/ufsda ush/python/soca ush/python/gen_bufr2ioda_json.py ush/python/gen_bufr2ioda_yaml.py +ush/spoc dev/ush/load_fv3gfs_modules.sh # ush log file ush/fetch-fix-data.log From 995848b05f24d7f6820ba5df00f40f3ded912b95 Mon Sep 17 00:00:00 2001 From: DavidHuber-NOAA Date: Tue, 7 Oct 2025 11:28:12 +0000 Subject: [PATCH 08/13] Update inline documentation for load_modules.sh --- dev/test/f90nmlcmp.sh | 2 +- dev/test/g2cmp.sh | 2 +- dev/test/nccmp.sh | 2 +- modulefiles/gw_run.gaeac6.lua | 4 ++-- modulefiles/gw_run.hera.lua | 4 ++-- modulefiles/gw_run.hercules.lua | 4 ++-- modulefiles/gw_run.noaacloud.lua | 4 ++-- modulefiles/gw_run.orion.lua | 4 ++-- modulefiles/gw_run.ursa.lua | 4 ++-- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dev/test/f90nmlcmp.sh b/dev/test/f90nmlcmp.sh index 1b4ad42749b..c437c4db005 100755 --- a/dev/test/f90nmlcmp.sh +++ b/dev/test/f90nmlcmp.sh @@ -8,7 +8,7 @@ set -eu HOMEgfs=$(cd "$(dirname "$(readlink -f -n "${BASH_SOURCE[0]}" )" )/../.." && pwd -P) declare -rx HOMEgfs -source "${HOMEgfs}/ush/load_fv3gfs_modules.sh" 1>/dev/null 2>&1 +source "${HOMEgfs}/dev/ush/load_modules.sh" 1>/dev/null 2>&1 file1=${1:?} file2=${2:?} diff --git a/dev/test/g2cmp.sh b/dev/test/g2cmp.sh index b7c21eb6b68..88902f0f977 100755 --- a/dev/test/g2cmp.sh +++ b/dev/test/g2cmp.sh @@ -12,7 +12,7 @@ declare -rx HOMEgfs file1=${1:?} file2=${2:?} -source "${HOMEgfs}/ush/load_fv3gfs_modules.sh" 1>/dev/null 2>&1 +source "${HOMEgfs}/dev/ush/load_modules.sh" 1>/dev/null 2>&1 # Use wgrib2 to compute correlations and print any record that does not have corr=1 for mismatch #shellcheck disable=SC2312 diff --git a/dev/test/nccmp.sh b/dev/test/nccmp.sh index 6ebb073121c..d02f9003719 100755 --- a/dev/test/nccmp.sh +++ b/dev/test/nccmp.sh @@ -6,7 +6,7 @@ set -eu HOMEgfs=$(cd "$(dirname "$(readlink -f -n "${BASH_SOURCE[0]}" )" )/../.." && pwd -P) declare -rx HOMEgfs -source "${HOMEgfs}/ush/load_fv3gfs_modules.sh" 1>/dev/null 2>&1 +source "${HOMEgfs}/dev/ush/load_modules.sh" 1>/dev/null 2>&1 module load "nccmp/${nccmp_ver:-"1.9.0.1"}" file1=${1:?} diff --git a/modulefiles/gw_run.gaeac6.lua b/modulefiles/gw_run.gaeac6.lua index b509ba83997..fe51631618b 100644 --- a/modulefiles/gw_run.gaeac6.lua +++ b/modulefiles/gw_run.gaeac6.lua @@ -3,11 +3,11 @@ Load environment to run GFS on Gaea C6 ]]) -- Test that HOMEgfs is set. --- If not, load_gw_run_modules.sh was not sourced to load this module. +-- If not, load_modules.sh was not sourced to load this module. local homegfssdir=os.getenv("HOMEgfs") or "None" if (homegfssdir == "None") then LmodError("FATAL ERROR HOMEgfs variable is unset.\n" .. - "Please \"source ush/load_gw_run_modules.sh\" rather than loading this module directly.\n") + "Please \"source dev/ush/load_modules.sh\" rather than loading this module directly.\n") end load("gw_run.common") diff --git a/modulefiles/gw_run.hera.lua b/modulefiles/gw_run.hera.lua index d88f3364879..a352034fb0d 100644 --- a/modulefiles/gw_run.hera.lua +++ b/modulefiles/gw_run.hera.lua @@ -3,11 +3,11 @@ Load environment to run GFS on Hera ]]) -- Test that HOMEgfs is set. --- If not, load_gw_run_modules.sh was not sourced to load this module. +-- If not, load_modules.sh was not sourced to load this module. local homegfssdir=os.getenv("HOMEgfs") or "None" if (homegfssdir == "None") then LmodError("FATAL ERROR HOMEgfs variable is unset.\n" .. - "Please \"source ush/load_gw_run_modules.sh\" rather than loading this module directly.\n") + "Please \"source dev/ush/load_modules.sh\" rather than loading this module directly.\n") end load("gw_run.common") diff --git a/modulefiles/gw_run.hercules.lua b/modulefiles/gw_run.hercules.lua index 8400b523344..5744800ddfd 100644 --- a/modulefiles/gw_run.hercules.lua +++ b/modulefiles/gw_run.hercules.lua @@ -3,11 +3,11 @@ Load environment to run GFS on Hercules ]]) -- Test that HOMEgfs is set. --- If not, load_gw_run_modules.sh was not sourced to load this module. +-- If not, load_modules.sh was not sourced to load this module. local homegfssdir=os.getenv("HOMEgfs") or "None" if (homegfssdir == "None") then LmodError("FATAL ERROR HOMEgfs variable is unset.\n" .. - "Please \"source ush/load_gw_run_modules.sh\" rather than loading this module directly.\n") + "Please \"source dev/ush/load_modules.sh\" rather than loading this module directly.\n") end load("gw_run.common") diff --git a/modulefiles/gw_run.noaacloud.lua b/modulefiles/gw_run.noaacloud.lua index 74a1c3e4f90..46ece7b9c68 100644 --- a/modulefiles/gw_run.noaacloud.lua +++ b/modulefiles/gw_run.noaacloud.lua @@ -3,11 +3,11 @@ Load environment to run GFS on NOAA cloud ]]) -- Test that HOMEgfs is set. --- If not, load_gw_run_modules.sh was not sourced to load this module. +-- If not, load_modules.sh was not sourced to load this module. local homegfssdir=os.getenv("HOMEgfs") or "None" if (homegfssdir == "None") then LmodError("FATAL ERROR HOMEgfs variable is unset.\n" .. - "Please \"source ush/load_gw_run_modules.sh\" rather than loading this module directly.\n") + "Please \"source dev/ush/load_modules.sh\" rather than loading this module directly.\n") end load(pathJoin("perl", (os.getenv("perl_ver") or "None"))) diff --git a/modulefiles/gw_run.orion.lua b/modulefiles/gw_run.orion.lua index 6adbdbef66c..0b52088f573 100644 --- a/modulefiles/gw_run.orion.lua +++ b/modulefiles/gw_run.orion.lua @@ -3,11 +3,11 @@ Load environment to run GFS on Orion ]]) -- Test that HOMEgfs is set. --- If not, load_gw_run_modules.sh was not sourced to load this module. +-- If not, load_modules.sh was not sourced to load this module. local homegfssdir=os.getenv("HOMEgfs") or "None" if (homegfssdir == "None") then LmodError("FATAL ERROR HOMEgfs variable is unset.\n" .. - "Please \"source ush/load_gw_run_modules.sh\" rather than loading this module directly.\n") + "Please \"source dev/ush/load_modules.sh\" rather than loading this module directly.\n") end load("gw_run.common") diff --git a/modulefiles/gw_run.ursa.lua b/modulefiles/gw_run.ursa.lua index 1fcb7e639ec..23895d43ee8 100644 --- a/modulefiles/gw_run.ursa.lua +++ b/modulefiles/gw_run.ursa.lua @@ -3,11 +3,11 @@ Load environment to run GFS on Ursa ]]) -- Test that HOMEgfs is set. --- If not, load_gw_run_modules.sh was not sourced to load this module. +-- If not, load_modules.sh was not sourced to load this module. local homegfssdir=os.getenv("HOMEgfs") or "None" if (homegfssdir == "None") then LmodError("FATAL ERROR HOMEgfs variable is unset.\n" .. - "Please \"source ush/load_gw_run_modules.sh\" rather than loading this module directly.\n") + "Please \"source dev/ush/load_modules.sh\" rather than loading this module directly.\n") end load("gw_run.common") From e9af8febc870b174e251da198e570e3745f7eba3 Mon Sep 17 00:00:00 2001 From: DavidHuber-NOAA Date: Tue, 7 Oct 2025 11:31:03 +0000 Subject: [PATCH 09/13] Update codeowners file --- .github/CODEOWNERS | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 51046f0519f..81b5a0873c1 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -173,11 +173,7 @@ ush/interp_atmos_master.sh @aerorahul @WenMeng-NOAA ush/interp_atmos_sflux.sh @aerorahul @WenMeng-NOAA ush/jjob_header.sh ush/link_crtm_fix.sh -ush/load_fv3gfs_modules.sh @aerorahul -ush/load_gw_run_modules.sh @aerorahul @DavidHuber-NOAA -ush/load_gw_gsi_modules.sh @aerorahul @DavidHuber-NOAA @RussTreadon-NOAA -ush/load_ufsda_modules.sh @aerorahul @CoryMartin-NOAA -ush/load_ufswm_modules.sh @aerorahul @JessicaMeixner-NOAA +ush/load_modules.sh @aerorahul @DavidHuber-NOAA @RussTreadon-NOAA @JessicaMeixner-NOAA ush/merge_fv3_aerosol_tile.py ush/minmon_xtrct_*.pl @EdwardSafford-NOAA ush/module-setup.sh @aerorahul From cccd780c2cb8bbed62e7f13031eb9569945bcc61 Mon Sep 17 00:00:00 2001 From: DavidHuber-NOAA Date: Tue, 7 Oct 2025 11:31:41 +0000 Subject: [PATCH 10/13] No need to ignore fv3gfs script --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 19451584709..b5f61746e94 100644 --- a/.gitignore +++ b/.gitignore @@ -179,7 +179,6 @@ ush/python/soca ush/python/gen_bufr2ioda_json.py ush/python/gen_bufr2ioda_yaml.py ush/spoc -dev/ush/load_fv3gfs_modules.sh # ush log file ush/fetch-fix-data.log From d9417d1bf5806450e0313ca2fd3dae8e74872dca Mon Sep 17 00:00:00 2001 From: DavidHuber-NOAA Date: Tue, 7 Oct 2025 11:32:29 +0000 Subject: [PATCH 11/13] Remove now-unused load_*_modules scripts --- dev/ush/load_gw_gsi_modules.sh | 10 ---------- dev/ush/load_gw_run_modules.sh | 10 ---------- dev/ush/load_gw_verif_modules.sh | 10 ---------- dev/ush/load_ufsda_modules.sh | 11 ----------- dev/ush/load_ufswm_modules.sh | 10 ---------- 5 files changed, 51 deletions(-) delete mode 100755 dev/ush/load_gw_gsi_modules.sh delete mode 100755 dev/ush/load_gw_run_modules.sh delete mode 100755 dev/ush/load_gw_verif_modules.sh delete mode 100755 dev/ush/load_ufsda_modules.sh delete mode 100755 dev/ush/load_ufswm_modules.sh diff --git a/dev/ush/load_gw_gsi_modules.sh b/dev/ush/load_gw_gsi_modules.sh deleted file mode 100755 index 0eaf898dad0..00000000000 --- a/dev/ush/load_gw_gsi_modules.sh +++ /dev/null @@ -1,10 +0,0 @@ -#! /usr/bin/env bash - -############################################################### -# DEPRECATED: This script is deprecated and replaced by load_modules.sh -# This wrapper is maintained for backwards compatibility. -# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" gsi -############################################################### - -script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) -source "${script_dir}/load_modules.sh" gsi diff --git a/dev/ush/load_gw_run_modules.sh b/dev/ush/load_gw_run_modules.sh deleted file mode 100755 index 91064ff71e1..00000000000 --- a/dev/ush/load_gw_run_modules.sh +++ /dev/null @@ -1,10 +0,0 @@ -#! /usr/bin/env bash - -############################################################### -# DEPRECATED: This script is deprecated and replaced by load_modules.sh -# This wrapper is maintained for backwards compatibility. -# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" run -############################################################### - -script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) -source "${script_dir}/load_modules.sh" run diff --git a/dev/ush/load_gw_verif_modules.sh b/dev/ush/load_gw_verif_modules.sh deleted file mode 100755 index 8056cde1852..00000000000 --- a/dev/ush/load_gw_verif_modules.sh +++ /dev/null @@ -1,10 +0,0 @@ -#! /usr/bin/env bash - -############################################################### -# DEPRECATED: This script is deprecated and replaced by load_modules.sh -# This wrapper is maintained for backwards compatibility. -# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" verif -############################################################### - -script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) -source "${script_dir}/load_modules.sh" verif diff --git a/dev/ush/load_ufsda_modules.sh b/dev/ush/load_ufsda_modules.sh deleted file mode 100755 index bf28c51ff2e..00000000000 --- a/dev/ush/load_ufsda_modules.sh +++ /dev/null @@ -1,11 +0,0 @@ -#! /usr/bin/env bash - -############################################################### -# DEPRECATED: This script is deprecated and replaced by load_modules.sh -# This wrapper is maintained for backwards compatibility. -# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" ufsda -# Or for EVA: source "${HOMEgfs}/dev/ush/load_modules.sh" --eva -############################################################### - -script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) -source "${script_dir}/load_modules.sh" "$@" diff --git a/dev/ush/load_ufswm_modules.sh b/dev/ush/load_ufswm_modules.sh deleted file mode 100755 index 73ae4855efb..00000000000 --- a/dev/ush/load_ufswm_modules.sh +++ /dev/null @@ -1,10 +0,0 @@ -#! /usr/bin/env bash - -############################################################### -# DEPRECATED: This script is deprecated and replaced by load_modules.sh -# This wrapper is maintained for backwards compatibility. -# Please use: source "${HOMEgfs}/dev/ush/load_modules.sh" ufswm -############################################################### - -script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) -source "${script_dir}/load_modules.sh" ufswm From cf3a4274f705e1c5ef98b6485db055f3177ad515 Mon Sep 17 00:00:00 2001 From: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed, 8 Oct 2025 07:41:14 -0400 Subject: [PATCH 12/13] Clean up error messages. Co-authored-by: Rahul Mahajan --- dev/ush/load_modules.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dev/ush/load_modules.sh b/dev/ush/load_modules.sh index 621166d998d..18688211340 100644 --- a/dev/ush/load_modules.sh +++ b/dev/ush/load_modules.sh @@ -37,7 +37,7 @@ ulimit_s=$(ulimit -S -s) # Test if HOMEgfs is defined. If not, then try to determine it with git rev-parse _unset_homegfs="NO" if [[ -z ${HOMEgfs+x} ]]; then - echo "INFO HOMEgfs is not defined. Attempting to find the global-workflow root directory" + echo "INFO: HOMEgfs is not defined. Attempting to find the global-workflow root directory" # HOMEgfs will be removed from the environment at the end of this script _unset_homegfs="YES" @@ -49,11 +49,11 @@ if [[ -z ${HOMEgfs+x} ]]; then is_git_dir=$(cd -- "${script_dir}" &> /dev/null && git rev-parse --is-inside-work-tree) git_stat=$? if [[ ${git_stat} -ne 0 || ${is_git_dir} != "true" ]]; then - echo "FATAL ERROR unable to determine the root because it is not a git repository." + echo "FATAL ERROR: unable to determine the root because it is not a git repository." else - echo "FATAL ERROR unable to determine the root because git rev-parse --show-toplevel failed for an unknown reason" + echo "FATAL ERROR: unable to determine the root because git rev-parse --show-toplevel failed for an unknown reason" fi - echo " Unable to load modules. Exiting" + echo "FATAL ERROR: Unable to load modules. Exiting" exit 1 fi fi @@ -118,7 +118,7 @@ case "${MODULE_TYPE}" in export NETCDF ;; ("acorn") - echo WARNING: UFSDA NOT SUPPORTED ON THIS PLATFORM + echo WARNING: UFSDA NOT SUPPORTED ON 'acorn' ;; *) echo "WARNING: UNKNOWN PLATFORM" @@ -160,7 +160,7 @@ case "${MODULE_TYPE}" in if [[ -f "${HOMEgfs}/versions/run.ver" ]]; then source "${HOMEgfs}/versions/run.ver" else - echo "FATAL ERROR ${HOMEgfs}/versions/run.ver does not exist!" + echo "FATAL ERROR: ${HOMEgfs}/versions/run.ver does not exist!" echo "HINT: Run link_workflow.sh first." exit 1 fi From 73fddb0a77c8a86991ce5d327c7f972c8df3cf7c Mon Sep 17 00:00:00 2001 From: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Wed, 8 Oct 2025 08:22:21 -0400 Subject: [PATCH 13/13] Update .github/CODEOWNERS --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 938480c7c10..7e419dc085d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -173,7 +173,7 @@ ush/interp_atmos_master.sh @aerorahul @WenMeng-NOAA ush/interp_atmos_sflux.sh @aerorahul @WenMeng-NOAA ush/jjob_header.sh ush/link_crtm_fix.sh -ush/load_modules.sh @aerorahul @DavidHuber-NOAA @RussTreadon-NOAA @JessicaMeixner-NOAA +dev/ush/load_modules.sh @aerorahul @DavidHuber-NOAA @RussTreadon-NOAA @JessicaMeixner-NOAA ush/merge_fv3_aerosol_tile.py ush/minmon_xtrct_*.pl @EdwardSafford-NOAA ush/module-setup.sh @aerorahul