From 0e840f338a9374447a42f1fd94906b0bf4eca07e Mon Sep 17 00:00:00 2001 From: David Huber Date: Fri, 24 Oct 2025 13:22:35 +0000 Subject: [PATCH 1/4] Add upp module for WCOSS2 --- dev/jobs/upp.sh | 37 ++++------------------------------- dev/ush/load_modules.sh | 17 +++++++++++----- modulefiles/gw_upp.wcoss2.lua | 26 ++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 38 deletions(-) create mode 100644 modulefiles/gw_upp.wcoss2.lua diff --git a/dev/jobs/upp.sh b/dev/jobs/upp.sh index 18bc2799c8d..7dbce24453f 100755 --- a/dev/jobs/upp.sh +++ b/dev/jobs/upp.sh @@ -14,39 +14,10 @@ set -x #if (( status != 0 )); then exit "${status}"; fi # Temporarily load modules from UPP on WCOSS2 source "${HOMEgfs}/ush/detect_machine.sh" -if [[ "${MACHINE_ID}" == "wcoss2" ]]; then - set +x - source "${HOMEgfs}/ush/module-setup.sh" - module use "${HOMEgfs}/sorc/ufs_model.fd/UFSATM/upp/modulefiles" - module load "${MACHINE_ID}_intel" - module load prod_util - module load cray-pals - module load cfp - module load libjpeg - module load grib_util/1.2.3 - module load wgrib2/2.0.8 - export WGRIB2=wgrib2 - module load python/3.8.6 - if [[ "${UPP_RUN:-}" == "goes" ]]; then - module load crtm/2.4.0 - fi - set -x - - # 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 - -else - source "${HOMEgfs}/dev/ush/load_modules.sh" run - status=$? - if [[ ${status} -ne 0 ]]; then - exit "${status}"; - fi +source "${HOMEgfs}/dev/ush/load_modules.sh" upp +status=$? +if [[ ${status} -ne 0 ]]; then + exit "${status}"; fi export job="upp" diff --git a/dev/ush/load_modules.sh b/dev/ush/load_modules.sh index b222308afbd..8684fbbf079 100644 --- a/dev/ush/load_modules.sh +++ b/dev/ush/load_modules.sh @@ -156,11 +156,10 @@ case "${MODULE_TYPE}" in export PYTHONPATH ;; - "run" | "gsi" | "verif" | "setup") - # Source versions file for runtime - if [[ -f "${HOMEgfs}/versions/run.ver" ]]; then - source "${HOMEgfs}/versions/run.ver" - else + "run" | "gsi" | "verif" | "setup" | "upp") + + # Test that the version file exists + if [[ ! -f "${HOMEgfs}/versions/run.ver" ]]; then echo "FATAL ERROR: ${HOMEgfs}/versions/run.ver does not exist!" echo "HINT: Run link_workflow.sh first." exit 1 @@ -176,8 +175,16 @@ case "${MODULE_TYPE}" in 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}" + mod_type="run" fi target_module="gw_run.${MACHINE_ID}" + else + mod_type="${MODULE_TYPE}" + fi + + # Source versions file (except for upp) + if [[ "${mod_type}" != "upp" ]]; then + source "${HOMEgfs}/versions/run.ver" fi if [[ -n "${target_module}" ]]; then diff --git a/modulefiles/gw_upp.wcoss2.lua b/modulefiles/gw_upp.wcoss2.lua new file mode 100644 index 00000000000..da95c5dfbc5 --- /dev/null +++ b/modulefiles/gw_upp.wcoss2.lua @@ -0,0 +1,26 @@ +help([[ +Load environment to run the UPP on WCOSS2 +]]) + +local homegfs=os.getenv("HOMEgfs") or "" +prepend_path("MODULEPATH", pathJoin(homegfs,"/sorc/ufs_model.fd/UFSATM/upp/modulefiles")) +-- Load UPP modules +load("wcoss2_intel") + +load(pathJoin("cray-pals", "1.0.17")) +load(pathJoin("cfp", "2.0.4")) +setenv("USE_CFP","YES") + +-- Load workflow modules +load(pathJoin("prod_util", "2.0.9")) +load(pathJoin("python", "3.12.0")) +load(pathJoin("libjpeg", "9c")) +load(pathJoin("wgrib2", "2.0.8")) +load(pathJoin("grib_util","1.2.3")) +setenv("WGRIB2","wgrib2") + +-- Load the GW Python environment +prepend_path("MODULEPATH", "/apps/dev/modulefiles") +load(pathJoin("ve","gw", "1.0")) + +whatis("Description: GFS run environment") From 6c7d63eb03e9fa016b85b42e2a5745f192d4d359 Mon Sep 17 00:00:00 2001 From: David Huber Date: Fri, 24 Oct 2025 13:53:25 +0000 Subject: [PATCH 2/4] Add new module to CODEOWNERS file --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 51ac7db706c..f22bae6be85 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -82,7 +82,7 @@ jobs/JGLOBAL_WAVE_* @JessicaMeixner-NOAA @sbanihash # System-specific modules modulefiles/gw_gsi_wcoss2.lua @RussTreadon-NOAA @CoryMartin-NOAA -modulefiles/gw_gsi_wcoss2.lua @RussTreadon-NOAA @CoryMartin-NOAA +modulefiles/gw_upp_wcoss2.lua @WenMeng-NOAA # scripts scripts/exgdas_aero_analysis_generate_bmatrix.py @CoryMartin-NOAA From cb7913ff535cb6800c198ced6938b31f00b57701 Mon Sep 17 00:00:00 2001 From: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Fri, 24 Oct 2025 11:06:19 -0400 Subject: [PATCH 3/4] Update modulefiles/gw_upp.wcoss2.lua Co-authored-by: Rahul Mahajan --- modulefiles/gw_upp.wcoss2.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modulefiles/gw_upp.wcoss2.lua b/modulefiles/gw_upp.wcoss2.lua index da95c5dfbc5..ad866132f98 100644 --- a/modulefiles/gw_upp.wcoss2.lua +++ b/modulefiles/gw_upp.wcoss2.lua @@ -23,4 +23,4 @@ setenv("WGRIB2","wgrib2") prepend_path("MODULEPATH", "/apps/dev/modulefiles") load(pathJoin("ve","gw", "1.0")) -whatis("Description: GFS run environment") +whatis("Description: UPP run environment") From c24e640b64cd5be5b22172b767f6823e4eef82a9 Mon Sep 17 00:00:00 2001 From: David Huber Date: Fri, 24 Oct 2025 19:45:57 +0000 Subject: [PATCH 4/4] Do not load cfp for upp jobs --- modulefiles/gw_upp.wcoss2.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/modulefiles/gw_upp.wcoss2.lua b/modulefiles/gw_upp.wcoss2.lua index ad866132f98..79b01210939 100644 --- a/modulefiles/gw_upp.wcoss2.lua +++ b/modulefiles/gw_upp.wcoss2.lua @@ -8,8 +8,6 @@ prepend_path("MODULEPATH", pathJoin(homegfs,"/sorc/ufs_model.fd/UFSATM/upp/modul load("wcoss2_intel") load(pathJoin("cray-pals", "1.0.17")) -load(pathJoin("cfp", "2.0.4")) -setenv("USE_CFP","YES") -- Load workflow modules load(pathJoin("prod_util", "2.0.9"))