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 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..79b01210939 --- /dev/null +++ b/modulefiles/gw_upp.wcoss2.lua @@ -0,0 +1,24 @@ +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 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: UPP run environment")