From b3b3b177ae7acb0f6b3b8dc973c9af363f4b93a8 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Mon, 8 Apr 2024 16:48:48 +0000 Subject: [PATCH 01/37] add noaacloud module for AWS --- modulefiles/module_base.noaacloud.lua | 51 ++++++++++++++++++++++++ modulefiles/module_gwci.noaacloud.lua | 15 +++++++ modulefiles/module_gwsetup.noaacloud.lua | 20 ++++++++++ ush/module-setup.sh | 6 ++- 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 modulefiles/module_base.noaacloud.lua create mode 100644 modulefiles/module_gwci.noaacloud.lua create mode 100644 modulefiles/module_gwsetup.noaacloud.lua diff --git a/modulefiles/module_base.noaacloud.lua b/modulefiles/module_base.noaacloud.lua new file mode 100644 index 0000000000..a96747603a --- /dev/null +++ b/modulefiles/module_base.noaacloud.lua @@ -0,0 +1,51 @@ +help([[ +Load environment to run GFS on noaacloud +]]) + +local spack_mod_path=(os.getenv("spack_mod_path") or "None") +prepend_path("MODULEPATH", spack_mod_path) + +load(pathJoin("stack-intel", (os.getenv("stack_intel_ver") or "None"))) +load(pathJoin("stack-intel-oneapi-mpi", (os.getenv("stack_impi_ver") or "None"))) +load(pathJoin("python", (os.getenv("python_ver") or "None"))) + +load(pathJoin("hpss", (os.getenv("hpss_ver") or "None"))) +load(pathJoin("gempak", (os.getenv("gempak_ver") or "None"))) +load(pathJoin("ncl", (os.getenv("ncl_ver") or "None"))) +load(pathJoin("jasper", (os.getenv("jasper_ver") or "None"))) +load(pathJoin("libpng", (os.getenv("libpng_ver") or "None"))) +load(pathJoin("cdo", (os.getenv("cdo_ver") or "None"))) +load(pathJoin("R", (os.getenv("R_ver") or "None"))) + +load(pathJoin("hdf5", (os.getenv("hdf5_ver") or "None"))) +load(pathJoin("netcdf-c", (os.getenv("netcdf_c_ver") or "None"))) +load(pathJoin("netcdf-fortran", (os.getenv("netcdf_fortran_ver") or "None"))) + +load(pathJoin("nco", (os.getenv("nco_ver") or "None"))) +load(pathJoin("prod_util", (os.getenv("prod_util_ver") or "None"))) +load(pathJoin("grib-util", (os.getenv("grib_util_ver") or "None"))) +load(pathJoin("g2tmpl", (os.getenv("g2tmpl_ver") or "None"))) +load(pathJoin("gsi-ncdiag", (os.getenv("gsi_ncdiag_ver") or "None"))) +load(pathJoin("crtm", (os.getenv("crtm_ver") or "None"))) +load(pathJoin("bufr", (os.getenv("bufr_ver") or "None"))) +load(pathJoin("wgrib2", (os.getenv("wgrib2_ver") or "None"))) +load(pathJoin("py-netcdf4", (os.getenv("py_netcdf4_ver") or "None"))) +load(pathJoin("py-pyyaml", (os.getenv("py_pyyaml_ver") or "None"))) +load(pathJoin("py-jinja2", (os.getenv("py_jinja2_ver") or "None"))) +load(pathJoin("py-pandas", (os.getenv("py_pandas_ver") or "None"))) +load(pathJoin("py-python-dateutil", (os.getenv("py_python_dateutil_ver") or "None"))) +load(pathJoin("met", (os.getenv("met_ver") or "None"))) +load(pathJoin("metplus", (os.getenv("metplus_ver") or "None"))) +load(pathJoin("py-xarray", (os.getenv("py_xarray_ver") or "None"))) + +setenv("WGRIB2","wgrib2") +setenv("UTILROOT",(os.getenv("prod_util_ROOT") or "None")) + +--prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/prepobs/v" .. (os.getenv("prepobs_run_ver") or "None"), "modulefiles")) +prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/prepobs/feature-GFSv17_com_reorg_log_update/modulefiles")) +load(pathJoin("prepobs", (os.getenv("prepobs_run_ver") or "None"))) + +prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/Fit2Obs/v" .. (os.getenv("fit2obs_ver") or "None"), "modulefiles")) +load(pathJoin("fit2obs", (os.getenv("fit2obs_ver") or "None"))) + +whatis("Description: GFS run environment") diff --git a/modulefiles/module_gwci.noaacloud.lua b/modulefiles/module_gwci.noaacloud.lua new file mode 100644 index 0000000000..3f63942ba8 --- /dev/null +++ b/modulefiles/module_gwci.noaacloud.lua @@ -0,0 +1,15 @@ +help([[ +Load environment to run GFS workflow setup scripts on noaacloud +]]) + +prepend_path("MODULEPATH", "/contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core") + +load(pathJoin("stack-intel", os.getenv("2021.3.0"))) +load(pathJoin("stack-intel-oneapi-mpi", os.getenv("2021.5.1"))) + +load(pathJoin("netcdf-c", os.getenv("4.9.2"))) +load(pathJoin("netcdf-fortran", os.getenv("4.6.1"))) +load(pathJoin("nccmp","1.9.0.1")) +load(pathJoin("wgrib2", "2.0.8")) + +whatis("Description: GFS run setup CI environment") diff --git a/modulefiles/module_gwsetup.noaacloud.lua b/modulefiles/module_gwsetup.noaacloud.lua new file mode 100644 index 0000000000..acbb0d9d81 --- /dev/null +++ b/modulefiles/module_gwsetup.noaacloud.lua @@ -0,0 +1,20 @@ +help([[ +Load environment to run GFS workflow setup scripts on noaacloud +]]) + +load(pathJoin("rocoto")) + +prepend_path("MODULEPATH", "/contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core") + +local stack_intel_ver=os.getenv("stack_intel_ver") or "2021.3.0" +local python_ver=os.getenv("python_ver") or "3.11.6" + +load(pathJoin("stack-intel", stack_intel_ver)) +load(pathJoin("python", python_ver)) +load("py-jinja2") +load("py-pyyaml") +load("py-numpy") +local git_ver=os.getenv("git_ver") or "2.18.0" +load(pathJoin("git", git_ver)) + +whatis("Description: GFS run setup environment") diff --git a/ush/module-setup.sh b/ush/module-setup.sh index 008ef7ee97..532f493b29 100755 --- a/ush/module-setup.sh +++ b/ush/module-setup.sh @@ -3,6 +3,8 @@ set -u source "${HOMEgfs}/ush/detect_machine.sh" +echo "MACHINE_ID: ${MACHINE_ID}" + if [[ ${MACHINE_ID} = jet* ]] ; then # We are on NOAA Jet if ( ! eval module help > /dev/null 2>&1 ) ; then @@ -122,7 +124,9 @@ elif [[ ${MACHINE_ID} = discover* ]]; then # platforms come online. elif [[ ${MACHINE_ID} = "noaacloud" ]]; then - export SPACK_ROOT=/contrib/global-workflow/spack-stack/spack + #export SPACK_ROOT=/contrib/global-workflow/spack-stack/spack + #export SPACK_ROOT=/contrib/spack-stack-rocky8/spack-stack-1.6.0/spack + export SPACK_ROOT=/contrib/spack-stack/spack-stack-1.6.0/spack export PATH=${PATH}:${SPACK_ROOT}/bin . "${SPACK_ROOT}"/share/spack/setup-env.sh From 149d776821f6e6be62fc9da737d277138c89d0e4 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Fri, 12 Apr 2024 00:25:46 +0000 Subject: [PATCH 02/37] to compile on AWS --- base.env | 16 ++ modulefiles/module_gwci.noaacloud.lua | 2 +- modulefiles/module_gwsetup.noaacloud.lua | 4 +- sorc/.gitignore | 46 ++++ sorc/aws.env | 7 + sorc/build_ufs.sh | 47 ++-- sorc/build_ww3prepost.sh | 4 + sorc/gfs_utils.aws.tar | Bin 0 -> 10240 bytes sorc/gsi_enkf.azure.tar | Bin 0 -> 20480 bytes sorc/gsi_utils.aws.tar | Bin 0 -> 20480 bytes sorc/link_workflow.sh | 3 + sorc/list.module.1.6.0 | 105 ++++++++ sorc/module.1.7.0 | 323 +++++++++++++++++++++++ sorc/setup-case.sh | 45 ++++ sorc/ufs_model.aws.tar | Bin 0 -> 30720 bytes sorc/ufs_utils.aws.tar | Bin 0 -> 10240 bytes ush/module-setup.sh | 4 +- 17 files changed, 584 insertions(+), 22 deletions(-) create mode 100644 base.env create mode 100644 sorc/.gitignore create mode 100644 sorc/aws.env create mode 100644 sorc/gfs_utils.aws.tar create mode 100644 sorc/gsi_enkf.azure.tar create mode 100644 sorc/gsi_utils.aws.tar create mode 100644 sorc/list.module.1.6.0 create mode 100644 sorc/module.1.7.0 create mode 100755 sorc/setup-case.sh create mode 100644 sorc/ufs_model.aws.tar create mode 100644 sorc/ufs_utils.aws.tar diff --git a/base.env b/base.env new file mode 100644 index 0000000000..b899524568 --- /dev/null +++ b/base.env @@ -0,0 +1,16 @@ + export BASH_ENV=$LMOD_ROOT/lmod/init/profile + source $BASH_ENV + + echo $LMOD_VERSION + echo $LMOD_PKG + echo $BASH_ENV + + module purge + module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core + module load stack-intel/2021.3.0 + module load stack-intel-oneapi-mpi + module load cmake/3.23.1 +#module list +#cmake --version +#which cmake +#module show cmake diff --git a/modulefiles/module_gwci.noaacloud.lua b/modulefiles/module_gwci.noaacloud.lua index 3f63942ba8..c3142cd60d 100644 --- a/modulefiles/module_gwci.noaacloud.lua +++ b/modulefiles/module_gwci.noaacloud.lua @@ -5,7 +5,7 @@ Load environment to run GFS workflow setup scripts on noaacloud prepend_path("MODULEPATH", "/contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core") load(pathJoin("stack-intel", os.getenv("2021.3.0"))) -load(pathJoin("stack-intel-oneapi-mpi", os.getenv("2021.5.1"))) +load(pathJoin("stack-intel-oneapi-mpi", os.getenv("2021.3.0"))) load(pathJoin("netcdf-c", os.getenv("4.9.2"))) load(pathJoin("netcdf-fortran", os.getenv("4.6.1"))) diff --git a/modulefiles/module_gwsetup.noaacloud.lua b/modulefiles/module_gwsetup.noaacloud.lua index acbb0d9d81..f3845e8d72 100644 --- a/modulefiles/module_gwsetup.noaacloud.lua +++ b/modulefiles/module_gwsetup.noaacloud.lua @@ -7,14 +7,14 @@ load(pathJoin("rocoto")) prepend_path("MODULEPATH", "/contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core") local stack_intel_ver=os.getenv("stack_intel_ver") or "2021.3.0" -local python_ver=os.getenv("python_ver") or "3.11.6" +local python_ver=os.getenv("python_ver") or "3.10.3" load(pathJoin("stack-intel", stack_intel_ver)) load(pathJoin("python", python_ver)) load("py-jinja2") load("py-pyyaml") load("py-numpy") -local git_ver=os.getenv("git_ver") or "2.18.0" +local git_ver=os.getenv("git_ver") or "1.8.3.1" load(pathJoin("git", git_ver)) whatis("Description: GFS run setup environment") diff --git a/sorc/.gitignore b/sorc/.gitignore new file mode 100644 index 0000000000..181cdd9193 --- /dev/null +++ b/sorc/.gitignore @@ -0,0 +1,46 @@ +calc_analysis.fd +calc_increment_ens.fd +calc_increment_ens_ncio.fd +emcsfc_ice_blend.fd +emcsfc_snow2mdl.fd +enkf.fd +enkf_chgres_recenter_nc.fd +fbwndgfs.fd +gaussian_sfcanl.fd +getsfcensmeanp.fd +getsigensmeanp_smooth.fd +getsigensstatp.fd +gfs_bufr.fd +global_cycle.fd +gsi.fd +interp_inc.fd +logs/ +ocnicepost.fd +overgridid.fd +oznmon_horiz.fd +oznmon_time.fd +radmon_angle.fd +radmon_bcoef.fd +radmon_bcor.fd +radmon_time.fd +rdbfmsua.fd +recentersigp.fd +supvit.fd +syndat_getjtbul.fd +syndat_maksynrc.fd +syndat_qctropcy.fd +tave.fd +tocsbufr.fd +vint.fd +webtitle.fd +gdas.cd/ +gfs_utils.fd/ +gsi_enkf.fd/ +gsi_monitor.fd/ +gsi_utils.fd/ +mkgfsawps.fd +ufs_model.fd/ +ufs_utils.fd/ +upp.fd/ +verif-global.fd/ +wxflow/ diff --git a/sorc/aws.env b/sorc/aws.env new file mode 100644 index 0000000000..020cdaa991 --- /dev/null +++ b/sorc/aws.env @@ -0,0 +1,7 @@ + module purge + module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core + module load stack-intel/2021.3.0 stack-intel-oneapi-mpi/2021.3.0 + spackdir=/contrib/spack-stack/spack-stack-1.6.0/spack + export PATH=${spackdir}/bin:$PATH + . ${spackdir}/share/spack/setup-env.sh + diff --git a/sorc/build_ufs.sh b/sorc/build_ufs.sh index 3055179f50..85d2bde2d6 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -1,5 +1,5 @@ #! /usr/bin/env bash -set -eux +set -eu cwd=$(pwd) @@ -35,6 +35,9 @@ COMPILE_NR=0 CLEAN_BEFORE=YES CLEAN_AFTER=NO +echo "MACHINE_ID: ${MACHINE_ID}" +echo "PW_CSP: ${PW_CSP}" + if [[ "${MACHINE_ID}" != "noaacloud" ]]; then BUILD_JOBS=${BUILD_JOBS:-8} ./tests/compile.sh "${MACHINE_ID}" "${MAKE_OPT}" "${COMPILE_NR}" "intel" "${CLEAN_BEFORE}" "${CLEAN_AFTER}" mv "./tests/fv3_${COMPILE_NR}.exe" ./tests/ufs_model.x @@ -42,23 +45,33 @@ if [[ "${MACHINE_ID}" != "noaacloud" ]]; then cp "./modulefiles/ufs_common.lua" ./tests/ufs_common.lua else - if [[ "${PW_CSP:-}" == "aws" ]]; then - set +x - # TODO: This will need to be addressed further when the EPIC stacks are available/supported. - module use /contrib/spack-stack/envs/ufswm/install/modulefiles/Core - module load stack-intel - module load stack-intel-oneapi-mpi - module load ufs-weather-model-env/1.0.0 - # TODO: It is still uncertain why this is the only module that is - # missing; check the spack build as this needed to be added manually. - module load w3emc/2.9.2 # TODO: This has similar issues for the EPIC stack. - module list - set -x - fi + #if [[ "${PW_CSP:-}" == "aws" ]]; then + # set +x + # # TODO: This will need to be addressed further when the EPIC stacks are available/supported. + # module purge + # module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core + # module load stack-intel/2021.3.0 + # module load cmake/3.23.1 + # #module list + # #export SPACK_ROOT=/contrib/spack-stack/spack-stack-1.6.0/spack + # #export PATH=$PATH:$SPACK_ROOT/bin + # #. $SPACK_ROOT/share/spack/setup-env.sh + # #module load stack-intel/2021.3.0 + # #module load cmake/3.23.1 + # set -x + #fi + + #export CMAKE_FLAGS="${MAKE_OPT}" + #BUILD_JOBS=${BUILD_JOBS:-8} ./build.sh + #mv "${cwd}/ufs_model.fd/build/ufs_model" "${cwd}/ufs_model.fd/tests/ufs_model.x" - export CMAKE_FLAGS="${MAKE_OPT}" - BUILD_JOBS=${BUILD_JOBS:-8} ./build.sh - mv "${cwd}/ufs_model.fd/build/ufs_model" "${cwd}/ufs_model.fd/tests/ufs_model.x" + echo "MACHINE_ID: ${MACHINE_ID}" + echo "COMPILE_NR: ${COMPILE_NR}" + + BUILD_JOBS=${BUILD_JOBS:-8} ./tests/compile.sh "${MACHINE_ID}" "${MAKE_OPT}" "${COMPILE_NR}" "intel" "${CLEAN_BEFORE}" "${CLEAN_AFTER}" + mv "./tests/fv3_${COMPILE_NR}.exe" ./tests/ufs_model.x + mv "./tests/modules.fv3_${COMPILE_NR}.lua" ./tests/modules.ufs_model.lua + cp "./modulefiles/ufs_common.lua" ./tests/ufs_common.lua fi exit 0 diff --git a/sorc/build_ww3prepost.sh b/sorc/build_ww3prepost.sh index 5b527a1641..f5533f6553 100755 --- a/sorc/build_ww3prepost.sh +++ b/sorc/build_ww3prepost.sh @@ -93,6 +93,10 @@ cat "${buildswitch}" MAKE_OPT="-DCMAKE_INSTALL_PREFIX=install" [[ ${BUILD_TYPE:-"Release"} = "Debug" ]] && MAKE_OPT+=" -DCMAKE_BUILD_TYPE=Debug" +echo "WW3_DIR: ${WW3_DIR}" +echo "buildswitch: ${buildswitch}" +echo "MAKE_OPT: ${MAKE_OPT}" + #Build executables: # shellcheck disable=SC2086 cmake "${WW3_DIR}" -DSWITCH="${buildswitch}" ${MAKE_OPT} diff --git a/sorc/gfs_utils.aws.tar b/sorc/gfs_utils.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..7d7102fd105cb8212f76d8ee0f7e2d4a7a98bed6 GIT binary patch literal 10240 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 WI|=M0u#><}0y_!pB=852!2bi<6gN!( literal 0 HcmV?d00001 diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index b92ae0e757..af8e2b1626 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -19,6 +19,8 @@ EOF exit 1 } +set -x + RUN_ENVIR="emc" # Reset option counter in case this script is sourced @@ -70,6 +72,7 @@ case "${machine}" in "hercules") FIX_DIR="/work/noaa/global/glopara/fix" ;; "jet") FIX_DIR="/lfs4/HFIP/hfv3gfs/glopara/git/fv3gfs/fix" ;; "s4") FIX_DIR="/data/prod/glopara/fix" ;; + "noaacloud") FIX_DIR="/contrib/Wei.Huang/data/hack-orion/fix" ;; *) echo "FATAL: Unknown target machine ${machine}, couldn't set FIX_DIR" exit 1 diff --git a/sorc/list.module.1.6.0 b/sorc/list.module.1.6.0 new file mode 100644 index 0000000000..4d2238da3a --- /dev/null +++ b/sorc/list.module.1.6.0 @@ -0,0 +1,105 @@ +#/contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/intel-oneapi-mpi/2021.3.0/intel/2021.3.0 + atlas/0.35.1 fms/release-jcsda mapl/2.40.3-esmf-8.5.0 p4est/2.8 + base-env/1.0.0 fms/2023.04 (D) mapl/2.40.3-esmf-8.6.0 (D) parallel-netcdf/1.12.2 + cdo/2.2.0 (D) global-workflow-env/1.0.0 mct/2.11.0 parallelio/2.5.10 + cprnc/1.0.3 gmao-swell-env/1.0.0 met/11.1.0 py-h5py/3.7.0 + crtm/v2.4-jedi.2 gsi-env/1.0.0 metplus/5.1.0 py-netcdf4/1.5.8 + crtm/v2.4.1-jedi gsi-ncdiag/1.1.2 nccmp/1.9.0.1 (D) scotch/7.0.4 + crtm/2.4.0.1 (D) gsibec/1.1.3 ncio/1.1.2 soca-env/1.0.0 + eckit/1.24.5 hdf5/1.14.0 nco/5.0.6 (D) ufs-pyenv/1.0.0 + ectrans/1.2.0 jedi-base-env/1.0.0 ncview/2.1.9 (D) ufs-srw-app-env/1.0.0 + esmf/8.5.0 jedi-fv3-env/1.0.0 nemsio/2.5.4 ufs-weather-model-env/1.0.0 + esmf/8.6.0 (D) jedi-mpas-env/1.0.0 nemsiogfs/2.5.3 upp/10.0.10 + ewok-env/1.0.0 jedi-neptune-env/1.0.0 netcdf-c/4.9.2 wrf-io/1.2.0 + fckit/0.11.0 jedi-ufs-env/1.0.0 netcdf-cxx4/4.3.1 + fftw/3.3.10 jedi-um-env/1.0.0 netcdf-fortran/4.6.1 + fiat/1.2.0 madis/4.5 odc/1.4.6 + +#/contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/intel/2021.3.0 + antlr/2.7.7 py-colorama/0.4.6 py-prompt-toolkit/3.0.38 + awscli-v2/2.13.22 py-contourpy/1.0.7 py-protobuf/4.21.9 + bacio/2.4.1 py-cppy/1.2.1 py-psutil/5.9.5 + boost/1.83.0 py-cryptography/38.0.1 py-ptyprocess/0.7.0 + bufr/12.0.1 py-cycler/0.11.0 py-pyasn1/0.4.8 + c-blosc/1.21.5 py-cylc-flow/8.2.3 py-pybind11/2.11.0 + ca-certificates-mozilla/2023-05-30 py-cylc-rose/1.3.0 py-pycodestyle/2.11.0 + cmake/3.23.1 (D) py-cylc-uiserver/1.3.0 py-pycparser/2.21 + crtm-fix/2.4.0.1_emc py-cython/0.29.36 py-pygments/2.16.1 + curl/8.4.0 py-defusedxml/0.7.1 py-pyhdf/0.10.4 + ecbuild/3.7.2 py-deprecation/2.1.0 py-pyjwt/2.4.0 + eccodes/2.32.0 (D) py-distlib/0.3.7 py-pyparsing/3.0.9 + eigen/3.4.0 py-distro/1.8.0 py-pyproj/3.6.0 + fargparse/1.5.0 py-docutils/0.19 py-pyproject-metadata/0.7.1 + g2/3.4.5 py-eccodes/1.5.0 py-pyrsistent/0.19.3 + g2c/1.6.4 py-editables/0.3 py-pyshp/2.1.0 + g2tmpl/1.10.2 py-et-xmlfile/1.0.1 py-pytest/7.3.2 + gdal/3.7.3 py-exceptiongroup/1.1.1 py-python-dateutil/2.8.2 + geos/3.12.0 py-f90nml/1.4.3 py-pythran/0.12.2 + gettext/0.19.8.1 py-fastjsonschema/2.16.3 py-pytz/2023.3 + gfsio/1.4.1 py-filelock/3.12.4 py-pyxlsb/1.0.10 + gftl-shared/1.6.1 py-findlibs/0.0.2 py-pyyaml/6.0 + gftl/1.10.0 py-flit-core/3.8.0 py-pyzmq/25.0.2 + git-lfs/2.4.1 py-flit-scm/1.7.0 py-requests/2.31.0 + git/1.8.3.1 py-fonttools/4.39.4 py-ruamel-yaml-clib/0.2.7 + gmake/3.82 py-gast/0.5.3 py-ruamel-yaml/0.17.16 + graphviz/8.0.5 py-gevent/1.5.0 py-rx/1.6.1 + grib-util/1.3.0 py-gitdb/4.0.9 py-s3transfer/0.6.0 + gsl-lite/0.37.0 py-gitpython/3.1.27 py-scipy/1.11.3 + gsl/2.7.1 py-globus-cli/3.16.0 py-secretstorage/3.3.3 + hdf/4.2.15 py-globus-sdk/3.25.0 py-semantic-version/2.10.0 + help2man/1.49.3 py-graphene-tornado/2.6.1 py-send2trash/1.8.0 + ip/4.3.0 py-graphene/2.1.9 py-setuptools-rust/1.6.0 + jasper/2.0.32 py-graphql-core/2.3.2 py-setuptools-scm/7.1.0 + jedi-cmake/1.4.0 py-graphql-relay/2.0.1 py-setuptools/63.4.3 + json-c/0.16 py-graphql-ws/0.4.4 py-shapely/1.8.0 + json-schema-validator/2.1.0 py-greenlet/2.0.2 py-six/1.16.0 + json/3.10.5 py-hatch-fancy-pypi-readme/23.1.0 py-smmap/5.0.0 + krb5/1.15.1 py-hatch-nodejs-version/0.3.1 py-sniffio/1.3.0 + landsfcutil/2.4.1 py-hatch-vcs/0.3.0 py-soupsieve/2.4.1 + libbsd/0.11.7 py-hatchling/1.18.0 py-sqlalchemy/1.4.45 + libjpeg/2.1.0 py-identify/2.5.24 py-terminado/0.17.1 + libmd/1.0.4 py-idna/3.4 py-tinycss2/1.2.1 + libpng/1.6.37 py-importlib-metadata/6.6.0 py-tomli/2.0.1 + libsodium/1.0.18 py-iniconfig/2.0.0 py-tomlkit/0.12.1 + libtirpc/1.3.3 py-jaraco-classes/3.2.3 py-tornado/6.3.3 + libxaw/1.0.13 py-jeepney/0.8.0 py-traitlets/5.9.0 + libxcrypt/4.4.35 py-jinja2/3.0.3 py-trove-classifiers/2023.8.7 + libxmu/1.1.4 py-jmespath/1.0.1 py-typing-extensions/4.8.0 + libxpm/3.5.12 py-jsonschema/4.17.3 py-urllib3/1.26.12 + libxt/1.1.5 py-jupyter-client/8.2.0 py-urwid/2.1.2 + libyaml/0.2.5 py-jupyter-core/5.3.0 py-versioneer/0.29 + libzmq/4.3.5 py-jupyter-packaging/0.12.0 py-virtualenv/20.24.5 + meson/1.2.2 py-jupyter-server/1.21.0 py-wcwidth/0.2.7 + nghttp2/1.57.0 py-jupyterlab-pygments/0.2.2 py-webencodings/0.5.1 + ninja/1.11.1 py-keyring/23.13.1 py-websocket-client/1.6.3 + openblas/0.3.24 py-kiwisolver/1.4.5 py-werkzeug/0.15.3 + openjpeg/2.3.1 py-ldap3/2.9.1 py-wheel/0.41.2 + patchelf/0.18.0 py-markupsafe/2.1.3 py-xarray/2023.7.0 + pcre2/10.42 py-matplotlib/3.7.3 py-xlrd/2.0.1 + pkg-config/0.27.1 py-meson-python/0.13.1 py-xlsxwriter/3.1.7 + prod_util/2.1.1 py-metomi-isodatetime/3.1.0 py-xlwt/1.3.0 + proj/9.2.1 py-metomi-rose/2.1.0 py-zipp/3.17.0 + py-aiofiles/0.7.0 py-mistune/2.0.5 python/3.10.13 + py-aniso8601/7.0.0 py-more-itertools/9.1.0 qhull/2020.2 + py-ansimarkup/2.1.0 py-nbclient/0.8.0 re2c/2.2 + py-anyio/3.6.2 py-nbconvert/7.4.0 rust-bootstrap/1.70.0 + py-argon2-cffi-bindings/21.2.0 py-nbformat/5.8.0 sed/4.2.2 + py-argon2-cffi/21.3.0 py-nodeenv/1.8.0 sfcio/1.4.1 + py-async-timeout/4.0.2 py-numexpr/2.8.4 shumlib/macos_clang_linux_intel_port + py-attrs/21.4.0 py-numpy/1.22.3 sigio/2.3.2 + py-awscrt/0.16.16 py-openpyxl/3.1.2 snappy/1.1.10 + py-beautifulsoup4/4.12.2 py-packaging/23.1 sp/2.5.0 + py-beniget/0.4.1 py-pandas/1.5.3 sqlite/3.43.2 + py-bleach/6.0.0 py-pandocfilters/1.5.0 stack-intel-oneapi-mpi/2021.3.0 (L) + py-boto3/1.26.26 py-pathspec/0.11.1 stack-python/3.10.13 + py-botocore/1.29.84 py-pillow/10.0.0 swig/4.1.1 + py-bottleneck/1.3.7 py-pip/23.1.2 udunits/2.2.28 (D) + py-calver/2022.6.26 py-pkgconfig/1.5.5 util-linux-uuid/2.38.1 + py-cartopy/0.21.1 py-platformdirs/3.10.0 util-macros/1.19.3 + py-certifi/2023.7.22 py-pluggy/1.0.0 w3emc/2.10.0 + py-cffi/1.15.1 py-ply/3.11 w3nco/2.4.1 + py-cfgv/3.4.0 py-poetry-core/1.6.1 wget/1.14 + py-cftime/1.0.3.4 py-pre-commit/3.3.3 wgrib2/2.0.8 (D) + py-charset-normalizer/3.3.0 py-prometheus-client/0.17.0 zlib/1.2.13 + py-click/8.1.7 py-promise/2.3 zstd/1.5.2 + diff --git a/sorc/module.1.7.0 b/sorc/module.1.7.0 new file mode 100644 index 0000000000..301a02fa27 --- /dev/null +++ b/sorc/module.1.7.0 @@ -0,0 +1,323 @@ + + +antlr/2.7.7 +atlas/0.36.0 +awscli-v2/2.13.22 +bacio/2.4.1 +base-env/1.0.0 +boost/1.84.0 +bufr/12.0.1 +ca-certificates-mozilla/2023-05-30 +c-blosc/1.21.5 +cdo/2.2.0 +cmake/3.23.1 +#/contrib/spack-stack/spack-stack-1.7.0/envs/ue-intel/install/modulefiles/intel/2021.3.0 +#/contrib/spack-stack/spack-stack-1.7.0/envs/ue-intel/install/modulefiles/intel-oneapi-mpi/2021.3.0-2tx7j7u/intel/2021.3.0 +cprnc/1.0.3 +crtm/2.4.0.1 +crtm-fix/2.4.0.1_emc +crtm/v2.4.1-jedi +crtm/v2.4-jedi.2 +curl/8.4.0 +ecbuild/3.7.2 +eccodes/2.33.0 +eckit/1.24.5 +ectrans/1.2.0 +eigen/3.4.0 +esmf/8.6.0 +ewok-env/1.0.0 +fargparse/1.6.0 +fckit/0.11.0 +fftw/3.3.10 +fiat/1.2.0 +fms/2023.04 +fms/release-jcsda +g2/3.4.9 +g2c/1.6.4 +g2tmpl/1.10.2 +gdal/3.8.3 +geos/3.12.1 +geos-gcm-env/1.0.0 +gettext/0.19.8.1 +gfsio/1.4.1 +gftl/1.11.0 +gftl-shared/1.6.1 +git/1.8.3.1 +git-lfs/2.4.1 +global-workflow-env/1.0.0 +gmake/3.82 +gmao-swell-env/1.0.0 +graphviz/8.0.5 +grib-util/1.4.0 +gsibec/1.2.1 +gsi-env/1.0.0 +gsi-ncdiag/1.1.2 +gsl/2.7.1 +gsl-lite/0.37.0 +hdf/4.2.15 +hdf5/1.14.3 +help2man/1.49.3 +ip/5.0.0 +jasper/2.0.32 +jedi-base-env/1.0.0 +jedi-cmake/1.4.0 +jedi-fv3-env/1.0.0 +jedi-geos-env/1.0.0 +jedi-mpas-env/1.0.0 +jedi-neptune-env/1.0.0 +jedi-ufs-env/1.0.0 +jedi-um-env/1.0.0 +json/3.10.5 +json-c/0.16 +json-schema-validator/2.1.0 +krb5/1.15.1 +landsfcutil/2.4.1 +libbsd/0.11.7 +libjpeg/2.1.0 +libmd/1.0.4 +libpng/1.6.37 +libsodium/1.0.18 +libtirpc/1.3.3 +libxaw/1.0.15 +libxcrypt/4.4.35 +libxmu/1.1.4 +libxpm/3.5.17 +libxt/1.3.0 +libyaml/0.2.5 +libzmq/4.3.5 +madis/4.5 +mapl/2.40.3-esmf-8.6.0 +mct/2.11.0 +mepo/1.51.1 +meson/1.2.2 +met/11.1.0 +metis/5.1.0 +metplus/5.1.0 +nccmp/1.9.0.1 +ncio/1.1.2 +nco/5.1.6 +ncview/2.1.9 +nemsio/2.5.4 +nemsiogfs/2.5.3 +netcdf-c/4.9.2 +netcdf-cxx4/4.3.1 +netcdf-fortran/4.6.1 +netlib-lapack/3.11.0 +nghttp2/1.57.0 +ninja/1.11.1 +odc/1.4.6 +openblas/0.3.24 +openjpeg/2.3.1 +p4est/2.8 +parallelio/2.6.2 +parallel-netcdf/1.12.3 +pcre2/10.42 +pflogger/1.12.0 +pkg-config/0.27.1 +prod_util/2.1.1 +proj/9.2.1 +py-aiofiles/0.7.0 +py-aniso8601/7.0.0 +py-ansimarkup/2.1.0 +py-anyio/3.6.2 +py-argon2-cffi/21.3.0 +py-argon2-cffi-bindings/21.2.0 +py-async-timeout/4.0.2 +py-attrs/21.4.0 +py-awscrt/0.16.16 +py-beautifulsoup4/4.12.2 +py-beniget/0.4.1 +py-bleach/6.0.0 +py-boto3/1.26.26 +py-botocore/1.29.84 +py-bottleneck/1.3.7 +py-calver/2022.6.26 +py-cartopy/0.21.1 +py-certifi/2023.7.22 +py-cffi/1.15.1 +py-cfgv/3.4.0 +py-cftime/1.0.3.4 +py-charset-normalizer/3.3.0 +py-click/8.1.7 +py-colorama/0.4.6 +py-contourpy/1.0.7 +py-cppy/1.2.1 +py-cryptography/38.0.1 +py-cycler/0.11.0 +py-cylc-flow/8.2.3 +py-cylc-rose/1.3.0 +py-cylc-uiserver/1.3.0 +py-cython/0.29.36 +py-defusedxml/0.7.1 +py-deprecation/2.1.0 +py-distlib/0.3.7 +py-distro/1.8.0 +py-docutils/0.19 +py-eccodes/1.5.0 +py-editables/0.3 +py-et-xmlfile/1.0.1 +py-exceptiongroup/1.1.1 +py-f90nml/1.4.3 +py-fastjsonschema/2.16.3 +py-filelock/3.12.4 +py-findlibs/0.0.2 +py-flit-core/3.8.0 +py-flit-scm/1.7.0 +py-fonttools/4.39.4 +py-gast/0.5.3 +py-gevent/1.5.0 +py-gitdb/4.0.9 +py-gitpython/3.1.40 +py-globus-cli/3.16.0 +py-globus-sdk/3.25.0 +py-graphene/2.1.9 +py-graphene-tornado/2.6.1 +py-graphql-core/2.3.2 +py-graphql-relay/2.0.1 +py-graphql-ws/0.4.4 +py-greenlet/2.0.2 +py-h5py/3.8.0 +py-hatch-fancy-pypi-readme/23.1.0 +py-hatchling/1.21.0 +py-hatch-nodejs-version/0.3.1 +py-hatch-vcs/0.3.0 +py-identify/2.5.24 +py-idna/3.4 +py-importlib-metadata/6.6.0 +py-iniconfig/2.0.0 +py-jaraco-classes/3.2.3 +py-jeepney/0.8.0 +py-jinja2/3.0.3 +py-jmespath/1.0.1 +py-jsonschema/4.17.3 +py-jupyter-client/8.2.0 +py-jupyter-core/5.3.0 +py-jupyterlab-pygments/0.2.2 +py-jupyter-packaging/0.12.0 +py-jupyter-server/1.21.0 +py-keyring/23.13.1 +py-kiwisolver/1.4.5 +py-ldap3/2.9.1 +py-markupsafe/2.1.3 +py-matplotlib/3.7.4 +py-meson-python/0.13.1 +py-metomi-isodatetime/3.1.0 +py-metomi-rose/2.1.0 +py-mistune/2.0.5 +py-more-itertools/9.1.0 +py-nbclient/0.8.0 +py-nbconvert/7.14.1 +py-nbformat/5.8.0 +py-netcdf4/1.5.8 +py-nodeenv/1.8.0 +py-numexpr/2.8.4 +py-numpy/1.22.3 +py-openpyxl/3.1.2 +py-packaging/23.1 +py-pandas/1.5.3 +py-pandocfilters/1.5.0 +py-pathspec/0.11.1 +py-pillow/10.0.0 +py-pip/23.1.2 +py-pkgconfig/1.5.5 +py-platformdirs/3.10.0 +py-pluggy/1.0.0 +py-ply/3.11 +py-poetry-core/1.7.0 +py-pre-commit/3.5.0 +py-prometheus-client/0.17.0 +py-promise/2.3 +py-prompt-toolkit/3.0.38 +py-protobuf/4.21.9 +py-psutil/5.9.5 +py-ptyprocess/0.7.0 +py-pyasn1/0.4.8 +py-pybind11/2.11.0 +py-pycodestyle/2.11.0 +py-pycparser/2.21 +py-pygments/2.16.1 +py-pyhdf/0.10.4 +py-pyjwt/2.4.0 +py-pyparsing/3.0.9 +py-pyproj/3.6.0 +py-pyproject-metadata/0.7.1 +py-pyrsistent/0.19.3 +py-pyshp/2.1.0 +py-pytest/7.3.2 +py-python-dateutil/2.8.2 +py-pythran/0.12.2 +py-pytz/2023.3 +py-pyxlsb/1.0.10 +py-pyyaml/6.0 +py-pyzmq/25.0.2 +py-requests/2.31.0 +py-ruamel-yaml/0.17.16 +py-ruamel-yaml-clib/0.2.7 +py-rx/1.6.1 +py-s3transfer/0.6.0 +py-scipy/1.11.4 +py-secretstorage/3.3.3 +py-semantic-version/2.10.0 +py-send2trash/1.8.0 +py-setuptools/63.4.3 +py-setuptools-rust/1.6.0 +py-setuptools-scm/7.1.0 +py-shapely/1.8.0 +py-six/1.16.0 +py-smmap/5.0.0 +py-sniffio/1.3.0 +py-soupsieve/2.4.1 +py-sqlalchemy/1.4.49 +py-terminado/0.17.1 +py-terminado/0.17.2 +python/3.10.13 +py-tinycss2/1.2.1 +py-tomli/2.0.1 +py-tomlkit/0.12.1 +py-tornado/6.3.3 +py-traitlets/5.9.0 +py-trove-classifiers/2023.8.7 +py-typing-extensions/4.8.0 +py-urllib3/1.26.12 +py-urwid/2.1.2 +py-versioneer/0.29 +py-virtualenv/20.24.5 +py-wcwidth/0.2.7 +py-webencodings/0.5.1 +py-websocket-client/1.6.3 +py-werkzeug/0.15.3 +py-wheel/0.41.2 +py-xarray/2023.7.0 +py-xlrd/2.0.1 +py-xlsxwriter/3.1.7 +py-xlwt/1.3.0 +py-zipp/3.17.0 +qhull/2020.2 +re2c/2.2 +rust-bootstrap/1.75.0 +scotch/7.0.4 +sed/4.2.2 +sfcio/1.4.1 +shumlib/macos_clang_linux_intel_port +sigio/2.3.2 +snappy/1.1.10 +soca-env/1.0.0 +sp/2.5.0 +sqlite/3.43.2 +stack-intel-oneapi-mpi/2021.3.0 +stack-python/3.10.13 +swig/4.1.1 +udunits/2.2.28 +ufs-pyenv/1.0.0 +ufs-srw-app-env/1.0.0 +ufs-weather-model-env/1.0.0 +util-linux-uuid/2.38.1 +util-macros/1.19.3 +w3emc/2.10.0 +w3nco/2.4.1 +wget/1.14 +wgrib2/2.0.8 +wrf-io/1.2.0 +yafyaml/1.2.0 +zlib-ng/2.1.5 +zstd/1.5.2 diff --git a/sorc/setup-case.sh b/sorc/setup-case.sh new file mode 100755 index 0000000000..c60465d01d --- /dev/null +++ b/sorc/setup-case.sh @@ -0,0 +1,45 @@ +#!/bin/bash +#https://global-workflow.readthedocs.io/en/latest/setup.html + + set -x + + GLOBALWORKFLOWTEMP=/contrib/Wei.Huang/run + GLOBALWORKFLOWHOME=/contrib/Wei.Huang/src/global-workflow-cloud + PSLOT=c48atm + CONFIGDIR=${GLOBALWORKFLOWHOME}/parm/config + IDATE=2022032312 + EDATE=2022032412 + COMROOT=${GLOBALWORKFLOWTEMP}/comroot + EXPDIR=${GLOBALWORKFLOWTEMP}/expdir + + mkdir -p ${COMROOT} ${EXPDIR} + + cd ${GLOBALWORKFLOWHOME}/workflow + source ${GLOBALWORKFLOWHOME}/workflow/gw_setup.sh + + ${GLOBALWORKFLOWHOME}/workflow/setup_expt.py gfs forecast-only \ + --idate ${IDATE} \ + --edate ${EDATE} \ + --app ATM \ + --pslot ${PSLOT} \ + --configdir ${CONFIGDIR}/gfs \ + --resdetatmos 48 \ + --comroot ${COMROOT} \ + --expdir ${EXPDIR} + +# --resdetocean 1.0 \ +#${GLOBALWORKFLOWHOME}/workflow/setup_expt.py gfs forecast-only \ +# --idate $IDATE \ +# --edate $EDATE \ +# [--app $APP] \ +# [--start $START] \ +# [--gfs_cyc $GFS_CYC] \ +# [--resdetatmos $RESDETATMOS] \ +# [--resdetocean $RESDETOCEAN] \ +# [--pslot $PSLOT] \ +# [--configdir $CONFIGDIR] \ +# [--comroot $COMROOT] \ +# [--expdir $EXPDIR] + +#${GLOBALWORKFLOWHOME}/workflow/setup_xml.py ${EXPDIR}/${PSLOT} + diff --git a/sorc/ufs_model.aws.tar b/sorc/ufs_model.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..6f2221ae9188cce574809dc3a1838bd4b3e65e93 GIT binary patch literal 30720 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 X0$T}eC9sviRsvfIY$fpjLjwN-k{Z$O literal 0 HcmV?d00001 diff --git a/sorc/ufs_utils.aws.tar b/sorc/ufs_utils.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..c37fb6a82420980a50884519b4a04669e29cff06 GIT binary patch literal 10240 zcmeHKZBOII7Ur{m#i>CRwAe{V0&Oa;1R=2LWeFnT?p>`=POAv9jg9A_N>6BDsf_>oex6V?@}k2tn4lxqIs%BymD;VUBBqw4exrr!Rg+< z>yf#)4=DXAmJ`A-F>@_jm2ir|QFtNeBAh_uo@A_sF_EFodtf z*BBwx02_|LIBeU{cmyv?~y6$MTrapWuP@CB01grBU`jA z^XC5g+I%tGa26qTF}8{&Hf4|qAG^07hVA|>_OeCGdLa~4@1obr$_ka_1SDsXFJ>Z0 z96pT3aX6#SZMUs!z{T-WCD_gK&q=+%?9+$$MNvLucV-)gaHk=exq-BoEzDe88b^D@ zve?RPqrGea=d)@s3ka?S6A4Y9>>o_}@&ysh!SxQJ7b?BAR4Hkot8tvyH&V;bKR)r| zl{92spqrqgd(AFFjbiy1RXp)n2~ywBajd7JU`o_CyeBH0$x{bBb|(lO2mO$G=5l=# z?Ji|!F44H$kCcQoLNAF&sU$ad7@&?g6FN<0(_5fW_p>5ISTIGP|7}>jipn{sDfGxo z0TR+QoNFuOu3NhBD@VB3 z?7Ce=t`|}Z%P4H+N^341X+kk)i1O6G(nrUay4pfBFRZL~?L{A~6<8iM zA6*9oUB*ua^T#fA0+k~6oOzXwGDU@CJ_@8kppyfc;3AN}3l9yMRo-`GF+(nKj_XE| z6-}R&bX6t)T`5CNsf!ob`-w~zN9uDnglXiVKypjlq3`3?p!56g^+icz?e}N@?hG%l z&#wAEo|y65)x0s zO%rE?`|OZ>If|WF@={-1bc-r+aAlz!$8uu4VNmy`KRCO-9^T${F1!DQQLBQMwG_^m z(v3ptyn6$JUwSJOv@A9)^JSn-pA^0zwFBf7g^ybkTZBkD=%sm}D+etbIdOT9=EFe7 zyL5vK79CPv_~beP@Eq3_N@XPRzD?sKBIb@m&>tmftfvOOo1yJn7kS`2{XzHU>a=%x zc~D&3Y!{$l7`VfA!`PF-#DB&V0JB5%jh+mO6PW?POiPE76N?u0V!mB?u6PG3u{UGC zYCu^DnL#ZJ7G=T1JOj!?|6!8RqXpuVk49jiC=MT`C-Qvf#X`cK*htjXW&gBy^94|v zQ}t8@8L3FPARU)@FhLJt7UDT0x3PCS=p&t3vG4;fQf|jPVKED!^jypY3A14!=2^`T zQ3AAoA;wPXC#^zZW&6O$JkE-xT;u*;DzEH1!d=euQQjQw>(1E?)IN6l<_n$vk3Kzr zOa>3QNeClNJR>U}qvcCP)0ln6fJ9crL{N%x6+t~~_9dZVxHHUnIBlsrUdl)I|7C?x z(4G1P>$e5`uf20b=_efVpU&NRuirT>PtFC1A?)IVa*jttU9PeGhpa9&4x5-Op3oIl z;~Sat-*RK=w#g@uazwE8t!DeF^VZ8>Dd(@e<3{7H@4q^>%kRJ13BC)DsaJ#?31W}QtlPC?yJi}E#q38;GW|7_L9S*VQmK9bz-itLCr3}nM@Za6zR0!*f-U5wT-q?Y6u4W3swFl5A@X+6dW#7u2Ewvd*dHSNX* zR;C8Lg+61d4ZAYQ64s_&itWnu7-L=+Gk4v+QdlC@s;{`H)qqy2Yoo@mBv2K?9I*Ck z0<{)fS7>WIIoXVxDukthb^B-|Y+8%)3T?*w9dqTnzlE%{?#QmyH{e(cXoWI^MZshp zD;Jee$9DZ>0}4pc16Z!jSW|D@Tn8&;B^vT@yn)7Az$%m(ED(w7jo0B8(j2gXFSkt^ z$<%kvL1hx^_MqnF(Z3MOv*hb)6h`^t?akRkz literal 0 HcmV?d00001 diff --git a/ush/module-setup.sh b/ush/module-setup.sh index 609fb8ec9a..350aeea035 100755 --- a/ush/module-setup.sh +++ b/ush/module-setup.sh @@ -124,8 +124,8 @@ elif [[ ${MACHINE_ID} = discover* ]]; then # platforms come online. elif [[ ${MACHINE_ID} = "noaacloud" ]]; then - #export SPACK_ROOT=/contrib/global-workflow/spack-stack/spack - #export SPACK_ROOT=/contrib/spack-stack-rocky8/spack-stack-1.6.0/spack + module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core + module load stack-intel/2021.3.0 stack-intel-oneapi-mpi/2021.3.0 export SPACK_ROOT=/contrib/spack-stack/spack-stack-1.6.0/spack export PATH=${PATH}:${SPACK_ROOT}/bin . "${SPACK_ROOT}"/share/spack/setup-env.sh From 2fb6e6d31bab829fd52381b27aabe9aee96fa9e7 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Mon, 15 Apr 2024 00:50:31 +0000 Subject: [PATCH 03/37] check back on hera to make sure it did not break anything --- sorc/build_ufs.sh | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/sorc/build_ufs.sh b/sorc/build_ufs.sh index 85d2bde2d6..f075703544 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -36,7 +36,6 @@ CLEAN_BEFORE=YES CLEAN_AFTER=NO echo "MACHINE_ID: ${MACHINE_ID}" -echo "PW_CSP: ${PW_CSP}" if [[ "${MACHINE_ID}" != "noaacloud" ]]; then BUILD_JOBS=${BUILD_JOBS:-8} ./tests/compile.sh "${MACHINE_ID}" "${MAKE_OPT}" "${COMPILE_NR}" "intel" "${CLEAN_BEFORE}" "${CLEAN_AFTER}" @@ -44,27 +43,6 @@ if [[ "${MACHINE_ID}" != "noaacloud" ]]; then mv "./tests/modules.fv3_${COMPILE_NR}.lua" ./tests/modules.ufs_model.lua cp "./modulefiles/ufs_common.lua" ./tests/ufs_common.lua else - - #if [[ "${PW_CSP:-}" == "aws" ]]; then - # set +x - # # TODO: This will need to be addressed further when the EPIC stacks are available/supported. - # module purge - # module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core - # module load stack-intel/2021.3.0 - # module load cmake/3.23.1 - # #module list - # #export SPACK_ROOT=/contrib/spack-stack/spack-stack-1.6.0/spack - # #export PATH=$PATH:$SPACK_ROOT/bin - # #. $SPACK_ROOT/share/spack/setup-env.sh - # #module load stack-intel/2021.3.0 - # #module load cmake/3.23.1 - # set -x - #fi - - #export CMAKE_FLAGS="${MAKE_OPT}" - #BUILD_JOBS=${BUILD_JOBS:-8} ./build.sh - #mv "${cwd}/ufs_model.fd/build/ufs_model" "${cwd}/ufs_model.fd/tests/ufs_model.x" - echo "MACHINE_ID: ${MACHINE_ID}" echo "COMPILE_NR: ${COMPILE_NR}" From 30b615a257703ee2ffba5138b05dda566b6c812d Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Mon, 15 Apr 2024 03:59:04 +0000 Subject: [PATCH 04/37] add mods to save aws changes --- sorc/mods4aws/gdas.aws.tar | Bin 0 -> 20480 bytes sorc/mods4aws/gfs_utils.aws.tar | Bin 0 -> 10240 bytes sorc/mods4aws/gsi_enkf.aws.tar | Bin 0 -> 20480 bytes sorc/mods4aws/gsi_monitor.aws.tar | Bin 0 -> 10240 bytes sorc/mods4aws/gsi_utils.aws.tar | Bin 0 -> 20480 bytes sorc/mods4aws/ufs_model.aws.tar | Bin 0 -> 30720 bytes sorc/mods4aws/ufs_utils.aws.tar | Bin 0 -> 10240 bytes sorc/mods4aws/upp.aws.tar | Bin 0 -> 10240 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sorc/mods4aws/gdas.aws.tar create mode 100644 sorc/mods4aws/gfs_utils.aws.tar create mode 100644 sorc/mods4aws/gsi_enkf.aws.tar create mode 100644 sorc/mods4aws/gsi_monitor.aws.tar create mode 100644 sorc/mods4aws/gsi_utils.aws.tar create mode 100644 sorc/mods4aws/ufs_model.aws.tar create mode 100644 sorc/mods4aws/ufs_utils.aws.tar create mode 100644 sorc/mods4aws/upp.aws.tar diff --git a/sorc/mods4aws/gdas.aws.tar b/sorc/mods4aws/gdas.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..5d80553e255b0a2553167b2c6c64acaba98ebc0e GIT binary patch literal 20480 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 EKmIGxbpQYW literal 0 HcmV?d00001 diff --git a/sorc/mods4aws/gfs_utils.aws.tar b/sorc/mods4aws/gfs_utils.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..7d7102fd105cb8212f76d8ee0f7e2d4a7a98bed6 GIT binary patch literal 10240 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 $Vo|mZETG z3diiMRyn3HO^08Z9r8OPz|#qRZ$&-0%JU$L4=wTtg#aAVgZsc?Dwu%_hpRB#pAmE9 z7!m=AfJ8tdAQ6xVNCYGT5&?;TL_i`S5s(N-1SA3y0f~S_Kq4R!kO)WwBmxoviGV~v gA|Mfv2uK7Z0uljv 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 WI|=M0u#><}0y_!pB=852!2bi<6gN!( literal 0 HcmV?d00001 diff --git a/sorc/mods4aws/ufs_model.aws.tar b/sorc/mods4aws/ufs_model.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..c4c064fd935b238c617836250039b6589cda7395 GIT binary patch literal 30720 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 Y*hyd~ft>_)64*&#CxM*=zEcAK2J#t9Q~&?~ literal 0 HcmV?d00001 diff --git a/sorc/mods4aws/ufs_utils.aws.tar b/sorc/mods4aws/ufs_utils.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..c37fb6a82420980a50884519b4a04669e29cff06 GIT binary patch literal 10240 zcmeHKZBOII7Ur{m#i>CRwAe{V0&Oa;1R=2LWeFnT?p>`=POAv9jg9A_N>6BDsf_>oex6V?@}k2tn4lxqIs%BymD;VUBBqw4exrr!Rg+< z>yf#)4=DXAmJ`A-F>@_jm2ir|QFtNeBAh_uo@A_sF_EFodtf z*BBwx02_|LIBeU{cmyv?~y6$MTrapWuP@CB01grBU`jA z^XC5g+I%tGa26qTF}8{&Hf4|qAG^07hVA|>_OeCGdLa~4@1obr$_ka_1SDsXFJ>Z0 z96pT3aX6#SZMUs!z{T-WCD_gK&q=+%?9+$$MNvLucV-)gaHk=exq-BoEzDe88b^D@ zve?RPqrGea=d)@s3ka?S6A4Y9>>o_}@&ysh!SxQJ7b?BAR4Hkot8tvyH&V;bKR)r| zl{92spqrqgd(AFFjbiy1RXp)n2~ywBajd7JU`o_CyeBH0$x{bBb|(lO2mO$G=5l=# z?Ji|!F44H$kCcQoLNAF&sU$ad7@&?g6FN<0(_5fW_p>5ISTIGP|7}>jipn{sDfGxo z0TR+QoNFuOu3NhBD@VB3 z?7Ce=t`|}Z%P4H+N^341X+kk)i1O6G(nrUay4pfBFRZL~?L{A~6<8iM zA6*9oUB*ua^T#fA0+k~6oOzXwGDU@CJ_@8kppyfc;3AN}3l9yMRo-`GF+(nKj_XE| z6-}R&bX6t)T`5CNsf!ob`-w~zN9uDnglXiVKypjlq3`3?p!56g^+icz?e}N@?hG%l z&#wAEo|y65)x0s zO%rE?`|OZ>If|WF@={-1bc-r+aAlz!$8uu4VNmy`KRCO-9^T${F1!DQQLBQMwG_^m z(v3ptyn6$JUwSJOv@A9)^JSn-pA^0zwFBf7g^ybkTZBkD=%sm}D+etbIdOT9=EFe7 zyL5vK79CPv_~beP@Eq3_N@XPRzD?sKBIb@m&>tmftfvOOo1yJn7kS`2{XzHU>a=%x zc~D&3Y!{$l7`VfA!`PF-#DB&V0JB5%jh+mO6PW?POiPE76N?u0V!mB?u6PG3u{UGC zYCu^DnL#ZJ7G=T1JOj!?|6!8RqXpuVk49jiC=MT`C-Qvf#X`cK*htjXW&gBy^94|v zQ}t8@8L3FPARU)@FhLJt7UDT0x3PCS=p&t3vG4;fQf|jPVKED!^jypY3A14!=2^`T zQ3AAoA;wPXC#^zZW&6O$JkE-xT;u*;DzEH1!d=euQQjQw>(1E?)IN6l<_n$vk3Kzr zOa>3QNeClNJR>U}qvcCP)0ln6fJ9crL{N%x6+t~~_9dZVxHHUnIBlsrUdl)I|7C?x z(4G1P>$e5`uf20b=_efVpU&NRuirT>PtFC1A?)IVa*jttU9PeGhpa9&4x5-Op3oIl z;~Sat-*RK=w#g@uazwE8t!DeF^VZ8>Dd(@e<3{7H@4q^>%kRJ13BC)DsaJ#?31W}QtlPC?yJi}E#q38;GW|7_L9S*VQmK9bz-itLCr3}nM@Za6zR0!*f-U5wT-q?Y6u4W3swFl5A@X+6dW#7u2Ewvd*dHSNX* zR;C8Lg+61d4ZAYQ64s_&itWnu7-L=+Gk4v+QdlC@s;{`H)qqy2Yoo@mBv2K?9I*Ck z0<{)fS7>WIIoXVxDukthb^B-|Y+8%)3T?*w9dqTnzlE%{?#QmyH{e(cXoWI^MZshp zD;Jee$9DZ>0}4pc16Z!jSW|D@Tn8&;B^vT@yn)7Az$%m(ED(w7jo0B8(j2gXFSkt^ z$<%kvL1hx^_MqnF(Z3MOv*hb)6h`^t?akRkz literal 0 HcmV?d00001 diff --git a/sorc/mods4aws/upp.aws.tar b/sorc/mods4aws/upp.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..864c459bfb7fa0e3a008b1f57d4f87a9b1916aa0 GIT binary patch literal 10240 zcmeIxPixyS6aa9a{V9Y_4%D(7J1Go$DCtHS9m`>5g;IhlD~*UO3H@om{uIw?Lq-mR zUII@S+fPsLNk8P?bWw@5RKi!ozbSfOwVcE&g%3WMqM{e zR=0CHr!A#*lhJy1+0YEp&)dT3O3?@A5XycFNp2(4FDFv%TlB)6m^|O`Mkrf6KIV6Z zbx7z}>5T4$4k#G(9Hr{e{c?$nMjPQ+{`54-^V~XNh3;0Cg-wBf{Jgop`?|dTb&D?$ zuDH>`$>+*j#AsZ**_Rex|F7sd&k8V*HPQU{?{ zufkm!PhLbws|tKHg(t{3gs16(k%my5t8}blx6kiJ>M^|>Dy7XHEuMU|>a9G{X`K0w zMy1h$Sy`r)A3eu1yOz9XTXEd&JvcUM$h0B#Kj#_JQq}kLUBThZI9j{nrtgg&2uH8Q z0$u;QplS^ZhAc z=O6$AAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w8cE G0)GIJI_4b! literal 0 HcmV?d00001 From 5ec3a78dca97e0cffe8a4f89fec9d16db7dd3b12 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Mon, 15 Apr 2024 14:19:52 +0000 Subject: [PATCH 05/37] mv .aws.tar to mods4aws --- sorc/gfs_utils.aws.tar | Bin 10240 -> 0 bytes sorc/gsi_enkf.azure.tar | Bin 20480 -> 0 bytes sorc/gsi_utils.aws.tar | Bin 20480 -> 0 bytes sorc/mods4aws/update-modulefiles.sh | 23 +++++++++++++++++++++++ sorc/ufs_model.aws.tar | Bin 30720 -> 0 bytes sorc/ufs_utils.aws.tar | Bin 10240 -> 0 bytes 6 files changed, 23 insertions(+) delete mode 100644 sorc/gfs_utils.aws.tar delete mode 100644 sorc/gsi_enkf.azure.tar delete mode 100644 sorc/gsi_utils.aws.tar create mode 100755 sorc/mods4aws/update-modulefiles.sh delete mode 100644 sorc/ufs_model.aws.tar delete mode 100644 sorc/ufs_utils.aws.tar diff --git a/sorc/gfs_utils.aws.tar b/sorc/gfs_utils.aws.tar deleted file mode 100644 index 7d7102fd105cb8212f76d8ee0f7e2d4a7a98bed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 WI|=M0u#><}0y_!pB=852!2bi<6gN!( diff --git a/sorc/mods4aws/update-modulefiles.sh b/sorc/mods4aws/update-modulefiles.sh new file mode 100755 index 0000000000..590b2d5c5f --- /dev/null +++ b/sorc/mods4aws/update-modulefiles.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -x + +#machine=azure +machine=aws + +for item in gdas gfs_utils gsi_enkf gsi_monitor gsi_utils \ + ufs_model ufs_utils upp verif-global +do + tf=${item}.${machine}.tar + if [ -f ${tf} ] + then + dir=${item}.fd + if [ -d ${dir} ] + then + cd ${dir} + tar xvf ../mods4${machine}/${tf} + cd .. + fi + fi +done + diff --git a/sorc/ufs_model.aws.tar b/sorc/ufs_model.aws.tar deleted file mode 100644 index 6f2221ae9188cce574809dc3a1838bd4b3e65e93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30720 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 X0$T}eC9sviRsvfIY$fpjLjwN-k{Z$O diff --git a/sorc/ufs_utils.aws.tar b/sorc/ufs_utils.aws.tar deleted file mode 100644 index c37fb6a82420980a50884519b4a04669e29cff06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 zcmeHKZBOII7Ur{m#i>CRwAe{V0&Oa;1R=2LWeFnT?p>`=POAv9jg9A_N>6BDsf_>oex6V?@}k2tn4lxqIs%BymD;VUBBqw4exrr!Rg+< z>yf#)4=DXAmJ`A-F>@_jm2ir|QFtNeBAh_uo@A_sF_EFodtf z*BBwx02_|LIBeU{cmyv?~y6$MTrapWuP@CB01grBU`jA z^XC5g+I%tGa26qTF}8{&Hf4|qAG^07hVA|>_OeCGdLa~4@1obr$_ka_1SDsXFJ>Z0 z96pT3aX6#SZMUs!z{T-WCD_gK&q=+%?9+$$MNvLucV-)gaHk=exq-BoEzDe88b^D@ zve?RPqrGea=d)@s3ka?S6A4Y9>>o_}@&ysh!SxQJ7b?BAR4Hkot8tvyH&V;bKR)r| zl{92spqrqgd(AFFjbiy1RXp)n2~ywBajd7JU`o_CyeBH0$x{bBb|(lO2mO$G=5l=# z?Ji|!F44H$kCcQoLNAF&sU$ad7@&?g6FN<0(_5fW_p>5ISTIGP|7}>jipn{sDfGxo z0TR+QoNFuOu3NhBD@VB3 z?7Ce=t`|}Z%P4H+N^341X+kk)i1O6G(nrUay4pfBFRZL~?L{A~6<8iM zA6*9oUB*ua^T#fA0+k~6oOzXwGDU@CJ_@8kppyfc;3AN}3l9yMRo-`GF+(nKj_XE| z6-}R&bX6t)T`5CNsf!ob`-w~zN9uDnglXiVKypjlq3`3?p!56g^+icz?e}N@?hG%l z&#wAEo|y65)x0s zO%rE?`|OZ>If|WF@={-1bc-r+aAlz!$8uu4VNmy`KRCO-9^T${F1!DQQLBQMwG_^m z(v3ptyn6$JUwSJOv@A9)^JSn-pA^0zwFBf7g^ybkTZBkD=%sm}D+etbIdOT9=EFe7 zyL5vK79CPv_~beP@Eq3_N@XPRzD?sKBIb@m&>tmftfvOOo1yJn7kS`2{XzHU>a=%x zc~D&3Y!{$l7`VfA!`PF-#DB&V0JB5%jh+mO6PW?POiPE76N?u0V!mB?u6PG3u{UGC zYCu^DnL#ZJ7G=T1JOj!?|6!8RqXpuVk49jiC=MT`C-Qvf#X`cK*htjXW&gBy^94|v zQ}t8@8L3FPARU)@FhLJt7UDT0x3PCS=p&t3vG4;fQf|jPVKED!^jypY3A14!=2^`T zQ3AAoA;wPXC#^zZW&6O$JkE-xT;u*;DzEH1!d=euQQjQw>(1E?)IN6l<_n$vk3Kzr zOa>3QNeClNJR>U}qvcCP)0ln6fJ9crL{N%x6+t~~_9dZVxHHUnIBlsrUdl)I|7C?x z(4G1P>$e5`uf20b=_efVpU&NRuirT>PtFC1A?)IVa*jttU9PeGhpa9&4x5-Op3oIl z;~Sat-*RK=w#g@uazwE8t!DeF^VZ8>Dd(@e<3{7H@4q^>%kRJ13BC)DsaJ#?31W}QtlPC?yJi}E#q38;GW|7_L9S*VQmK9bz-itLCr3}nM@Za6zR0!*f-U5wT-q?Y6u4W3swFl5A@X+6dW#7u2Ewvd*dHSNX* zR;C8Lg+61d4ZAYQ64s_&itWnu7-L=+Gk4v+QdlC@s;{`H)qqy2Yoo@mBv2K?9I*Ck z0<{)fS7>WIIoXVxDukthb^B-|Y+8%)3T?*w9dqTnzlE%{?#QmyH{e(cXoWI^MZshp zD;Jee$9DZ>0}4pc16Z!jSW|D@Tn8&;B^vT@yn)7Az$%m(ED(w7jo0B8(j2gXFSkt^ z$<%kvL1hx^_MqnF(Z3MOv*hb)6h`^t?akRkz From 43a6b33b84f1ecb974683bb3c61f77b1f378d367 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 16 Apr 2024 19:30:01 +0000 Subject: [PATCH 06/37] update gdas modulefile --- sorc/mods4aws/gdas.aws.tar | Bin 20480 -> 20480 bytes sorc/mods4aws/update-modulefiles.sh | 7 ++++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sorc/mods4aws/gdas.aws.tar b/sorc/mods4aws/gdas.aws.tar index 5d80553e255b0a2553167b2c6c64acaba98ebc0e..dc0d1ed7a8d52597cad8ef0c20a6bc302d72717b 100644 GIT binary patch delta 139 zcmZozz}T>WaYLJuxB-KqiJ5`9sfoFXkr9J|p}CoX8H0ksWJAW3&5X)ZnHdcxPgj#; zG@86kEfUBUP?uma)iX4htgWuXXgoPUJr^joPrYfflZGlYP-1eH#$IMaJ=4irnp)yU pN}60b`H3kSN;#QH6^Z5ghI$5ihQ^z-HBA^9jW;jQN>F8F006QeBjNx6 delta 139 zcmZozz}T>WaYLJuxFLg~iJ1Wq8kv}xF&G${1DOm829pgLQ#LayPi1B_o;+Pm4oGfO zi)1vMETAsIY^G;4Sw~%k(PVO Date: Thu, 18 Apr 2024 03:16:55 +0000 Subject: [PATCH 07/37] add changes of gsi_enkf --- sorc/mods4aws/gsi_enkf.aws.tar | Bin 20480 -> 20480 bytes sorc/mods4aws/gsi_enkf.azure.tar | Bin 0 -> 20480 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sorc/mods4aws/gsi_enkf.azure.tar diff --git a/sorc/mods4aws/gsi_enkf.aws.tar b/sorc/mods4aws/gsi_enkf.aws.tar index ee933414a6f2fd92f2c8b7803996809b994288b7..d0f03610e8c63d284a3cd6117ffda5cbd3b0df99 100644 GIT binary patch delta 230 zcmZozz}T>WaYCzvp)rG@iJ75+fsv89kpY8&p_!qfIfH`1WJAW3&5Vq@7@2f+H}7WJ zzyzYRS!Xjca!sBn_jMCTHY*iK($ET$k`~PDbU)e`VrOjNV$HZ&P;H|o0A^-8 A`Tzg` delta 257 zcmZozz}T>WaYCzvff<9LiJ5_^fvKsXxiN!*p_!qvDT9K+WJAW3&5Vq@7&q@_+Q76q zpLI6lHgR-w2^p9fn41CB167-tni|7Z3;*V1RG9o%CLTz}%DMr`C9+PFgJt|# z6o6o}rJOgDq=AtE*g`Wy10WM*p}Cp48QciPYR1WLmDnd=Qqf{H&@(hv+Wc1OKI3Ll zRVzkUuJVk;lFVWaC70CVoq5Ca0CEE{YxMK diff --git a/sorc/mods4aws/gsi_enkf.azure.tar b/sorc/mods4aws/gsi_enkf.azure.tar new file mode 100644 index 0000000000000000000000000000000000000000..a4d9c996aff71e040df2c6c38cb7d8a2aa73abac GIT binary patch literal 20480 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 Date: Thu, 18 Apr 2024 17:35:04 +0000 Subject: [PATCH 08/37] add two vers for noaacloud --- sorc/gfs_utils.aws.tar | Bin 10240 -> 0 bytes sorc/gsi_enkf.azure.tar | Bin 20480 -> 0 bytes sorc/gsi_utils.aws.tar | Bin 20480 -> 0 bytes sorc/ufs_model.aws.tar | Bin 30720 -> 0 bytes sorc/ufs_utils.aws.tar | Bin 10240 -> 0 bytes versions/build.noaacloud.ver | 5 +++++ versions/run.noaacloud.ver | 11 +++++++++++ workflow/hosts/awspw.yaml | 32 ++++++++++++++++++-------------- 8 files changed, 34 insertions(+), 14 deletions(-) delete mode 100644 sorc/gfs_utils.aws.tar delete mode 100644 sorc/gsi_enkf.azure.tar delete mode 100644 sorc/gsi_utils.aws.tar delete mode 100644 sorc/ufs_model.aws.tar delete mode 100644 sorc/ufs_utils.aws.tar create mode 100644 versions/build.noaacloud.ver create mode 100644 versions/run.noaacloud.ver diff --git a/sorc/gfs_utils.aws.tar b/sorc/gfs_utils.aws.tar deleted file mode 100644 index 7d7102fd105cb8212f76d8ee0f7e2d4a7a98bed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 WI|=M0u#><}0y_!pB=852!2bi<6gN!( diff --git a/sorc/ufs_model.aws.tar b/sorc/ufs_model.aws.tar deleted file mode 100644 index 6f2221ae9188cce574809dc3a1838bd4b3e65e93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30720 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 X0$T}eC9sviRsvfIY$fpjLjwN-k{Z$O diff --git a/sorc/ufs_utils.aws.tar b/sorc/ufs_utils.aws.tar deleted file mode 100644 index c37fb6a82420980a50884519b4a04669e29cff06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 zcmeHKZBOII7Ur{m#i>CRwAe{V0&Oa;1R=2LWeFnT?p>`=POAv9jg9A_N>6BDsf_>oex6V?@}k2tn4lxqIs%BymD;VUBBqw4exrr!Rg+< z>yf#)4=DXAmJ`A-F>@_jm2ir|QFtNeBAh_uo@A_sF_EFodtf z*BBwx02_|LIBeU{cmyv?~y6$MTrapWuP@CB01grBU`jA z^XC5g+I%tGa26qTF}8{&Hf4|qAG^07hVA|>_OeCGdLa~4@1obr$_ka_1SDsXFJ>Z0 z96pT3aX6#SZMUs!z{T-WCD_gK&q=+%?9+$$MNvLucV-)gaHk=exq-BoEzDe88b^D@ zve?RPqrGea=d)@s3ka?S6A4Y9>>o_}@&ysh!SxQJ7b?BAR4Hkot8tvyH&V;bKR)r| zl{92spqrqgd(AFFjbiy1RXp)n2~ywBajd7JU`o_CyeBH0$x{bBb|(lO2mO$G=5l=# z?Ji|!F44H$kCcQoLNAF&sU$ad7@&?g6FN<0(_5fW_p>5ISTIGP|7}>jipn{sDfGxo z0TR+QoNFuOu3NhBD@VB3 z?7Ce=t`|}Z%P4H+N^341X+kk)i1O6G(nrUay4pfBFRZL~?L{A~6<8iM zA6*9oUB*ua^T#fA0+k~6oOzXwGDU@CJ_@8kppyfc;3AN}3l9yMRo-`GF+(nKj_XE| z6-}R&bX6t)T`5CNsf!ob`-w~zN9uDnglXiVKypjlq3`3?p!56g^+icz?e}N@?hG%l z&#wAEo|y65)x0s zO%rE?`|OZ>If|WF@={-1bc-r+aAlz!$8uu4VNmy`KRCO-9^T${F1!DQQLBQMwG_^m z(v3ptyn6$JUwSJOv@A9)^JSn-pA^0zwFBf7g^ybkTZBkD=%sm}D+etbIdOT9=EFe7 zyL5vK79CPv_~beP@Eq3_N@XPRzD?sKBIb@m&>tmftfvOOo1yJn7kS`2{XzHU>a=%x zc~D&3Y!{$l7`VfA!`PF-#DB&V0JB5%jh+mO6PW?POiPE76N?u0V!mB?u6PG3u{UGC zYCu^DnL#ZJ7G=T1JOj!?|6!8RqXpuVk49jiC=MT`C-Qvf#X`cK*htjXW&gBy^94|v zQ}t8@8L3FPARU)@FhLJt7UDT0x3PCS=p&t3vG4;fQf|jPVKED!^jypY3A14!=2^`T zQ3AAoA;wPXC#^zZW&6O$JkE-xT;u*;DzEH1!d=euQQjQw>(1E?)IN6l<_n$vk3Kzr zOa>3QNeClNJR>U}qvcCP)0ln6fJ9crL{N%x6+t~~_9dZVxHHUnIBlsrUdl)I|7C?x z(4G1P>$e5`uf20b=_efVpU&NRuirT>PtFC1A?)IVa*jttU9PeGhpa9&4x5-Op3oIl z;~Sat-*RK=w#g@uazwE8t!DeF^VZ8>Dd(@e<3{7H@4q^>%kRJ13BC)DsaJ#?31W}QtlPC?yJi}E#q38;GW|7_L9S*VQmK9bz-itLCr3}nM@Za6zR0!*f-U5wT-q?Y6u4W3swFl5A@X+6dW#7u2Ewvd*dHSNX* zR;C8Lg+61d4ZAYQ64s_&itWnu7-L=+Gk4v+QdlC@s;{`H)qqy2Yoo@mBv2K?9I*Ck z0<{)fS7>WIIoXVxDukthb^B-|Y+8%)3T?*w9dqTnzlE%{?#QmyH{e(cXoWI^MZshp zD;Jee$9DZ>0}4pc16Z!jSW|D@Tn8&;B^vT@yn)7Az$%m(ED(w7jo0B8(j2gXFSkt^ z$<%kvL1hx^_MqnF(Z3MOv*hb)6h`^t?akRkz diff --git a/versions/build.noaacloud.ver b/versions/build.noaacloud.ver new file mode 100644 index 0000000000..e08c4a3fec --- /dev/null +++ b/versions/build.noaacloud.ver @@ -0,0 +1,5 @@ +export stack_intel_ver=2021.3.0 +export stack_impi_ver=2021.3.0 +export spack_env=gsi-addon-env +source "${HOMEgfs:-}/versions/build.spack.ver" +export spack_mod_path="/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" diff --git a/versions/run.noaacloud.ver b/versions/run.noaacloud.ver new file mode 100644 index 0000000000..d0d351db5e --- /dev/null +++ b/versions/run.noaacloud.ver @@ -0,0 +1,11 @@ +export stack_intel_ver=2021.3.0 +export stack_impi_ver=2021.3.0 +export spack_env=gsi-addon-env + +export ncl_ver=6.6.2 +export gempak_ver=7.4.2 + +source "${HOMEgfs:-}/versions/run.spack.ver" +export spack_mod_path="/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" + +export cdo_ver=2.2.0 diff --git a/workflow/hosts/awspw.yaml b/workflow/hosts/awspw.yaml index c683010e0e..252f09fab5 100644 --- a/workflow/hosts/awspw.yaml +++ b/workflow/hosts/awspw.yaml @@ -1,23 +1,27 @@ -BASE_GIT: '/scratch1/NCEPDEV/global/glopara/git' #TODO: This does not yet exist. -DMPDIR: '/scratch1/NCEPDEV/global/glopara/dump' # TODO: This does not yet exist. -PACKAGEROOT: '/scratch1/NCEPDEV/global/glopara/nwpara' #TODO: This does not yet exist. -COMINsyn: '/scratch1/NCEPDEV/global/glopara/com/gfs/prod/syndat' #TODO: This does not yet exist. -HOMEDIR: '/contrib/${USER}' -STMP: '/lustre/${USER}/stmp2/' -PTMP: '/lustre/${USER}/stmp4/' -NOSCRUB: ${HOMEDIR} -ACCOUNT: hwufscpldcld +BASE_GIT: '/work/noaa/global/glopara/git' +DMPDIR: '/work/noaa/rstprod/dump' +BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' +PACKAGEROOT: '/work/noaa/global/glopara/nwpara' +COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' +HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' +STMP: '/contrib/${USER}/stmp' +PTMP: '/contrib/${USER}/ptmp' +NOSCRUB: '/contrib/${USER}/scrub' SCHEDULER: slurm +ACCOUNT: $USER QUEUE: batch QUEUE_SERVICE: batch PARTITION_BATCH: compute PARTITION_SERVICE: compute CHGRP_RSTPROD: 'YES' -CHGRP_CMD: 'chgrp rstprod' # TODO: This is not yet supported. -HPSSARCH: 'YES' -HPSS_PROJECT: emc-global #TODO: See `ATARDIR` below. +CHGRP_CMD: 'chgrp rstprod' +HPSSARCH: 'NO' +HPSS_PROJECT: epic LOCALARCH: 'NO' -ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' # TODO: This will not yet work from AWS. +ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' -SUPPORTED_RESOLUTIONS: ['C48', 'C96'] # TODO: Test and support all cubed-sphere resolutions. +SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf +COMINnam: /work/noaa/global/glopara/data/external_gempak/nam +COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet From b5eb58cbdf39b27b9cd5cac39778048b9c094d96 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 18 Apr 2024 21:53:31 +0000 Subject: [PATCH 09/37] re-add these tar files --- sorc/mods4aws/gfs_utils.aws.tar | Bin 0 -> 10240 bytes sorc/mods4aws/gsi_enkf.aws.tar | Bin 20480 -> 10240 bytes sorc/mods4aws/gsi_utils.aws.tar | Bin 0 -> 10240 bytes sorc/mods4aws/ufs_model.aws.tar | Bin 0 -> 10240 bytes sorc/mods4aws/ufs_utils.aws.tar | Bin 0 -> 10240 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sorc/mods4aws/gfs_utils.aws.tar create mode 100644 sorc/mods4aws/gsi_utils.aws.tar create mode 100644 sorc/mods4aws/ufs_model.aws.tar create mode 100644 sorc/mods4aws/ufs_utils.aws.tar diff --git a/sorc/mods4aws/gfs_utils.aws.tar b/sorc/mods4aws/gfs_utils.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..aba215b25cf0980d230dfe3dd3668f5bd7529a56 GIT binary patch literal 10240 zcmeHJOOMkq5bk+@g_ToRqHbPo0f_@Fj|D9P2@r?Xs&W&jwbrqtIH7-^aUM=K-hy`7 z3zBn5JM(?x$>$l5bD7qhW{gv{+-It;7+2dw=D8G@*JSn-j}Ol}j%U8V@}qbI?=Xm0 z0lb?h+=S6Ah}Ym^ zlo#{s>$59KQq=A{%A1-{sFG+`GoGRk@4q2k8LVPdAt?~y9OWcAFhSMX&CU7Q8J7v+ zNYE-tvu(2dMax%G;XSRW_%-*&cJCa?5_vIxfkW>uFOy|e5^;h(@|qZH9C-cWyE-eU z)ZW$+f)M+f(Pq0N36mD1H+GZ|#{=US(cJntV>FDw$9}(vDyA#676V=lSY}~cONWhd zG+-6m+sPZFi5`tb&Xr9Ow6_}03deo+trrf4=||jgjF?f+JeJwkUTv^;oB+d?^c-=| ze)Kkj2S$(IhtsrLONWhM>sCFM6OpPc(Pca(O1s~`@(iI?Q9#tb~Y8S$$dNA1IeJQ zG(^8U87*;i698uD20ISa?xFz=MQnp~x#~D4m)eKmZp+kWk17#Rqks3O-PRuNG2@{!%I2+XdXPlH2j`MS$1XU&3l?Sqqjinl9kak_muvz8n|jg)FIOE*MRyZBv!ggLUHS zPh_}j-Wi)Zmo3W+c7oq|PSBH_+|nu27&{Wo+~$@sJ%XDI7fte@(j;H|Fc`rXQczN` z1td2xyG(6jlMmobUI1xx@g`S%E$s0?DyHV%TdIWdXN8T?FXJsss9{ zj|X%iAr($b1>qi9hK}YGa0)mDoB~b(r+`zyDc}@v3OEIv0!{&^fK$LJ;1qBQI0c*n TP64NYQ@|W6EYm;oqE$3X}iJ!~@A#SvMfL zMAm6?u#7*80uXGrl=EhiG%_$`Ff=hUG%z+aG&eK@8ewj3U=BAz@iXJ(ODbBd26~3Z zN}Jy*-Dlh^s%pjP%2l3`Sdv++q2!WUoLrPyP?DLSXQkjC?5U8NSC(0npO>4OSE7)g nr{IxVl&DaiS(2gPnOBmUqu`vMTacNPT2!p0$+bC9tzH-ax|lh( literal 20480 zcmeHNdvD@M63^fM6t#dx$?e$2Jd(YfScwplFq1%pnaz!&2sx$!Z;WlZ?L0KfefFzr zKZ64^(y-F)$tVh@yQ;eS*HzV3-Cnt~&}MVXW?WrxYihcymFp;WXzcCmQ^(I?tF>3J zx9iQ;5q>wcR$Iew@oBWQ=APC%)UdsA)Tr;(wL?ui+JpMeG}t02?A9LA-) zy8}tGUDL3^VSzcDPtEBg^E)nA7A#=S<9;RIUO52Qhe}KNr_!jr<(s>H;2X{c?p$vw z<51Bmk|fK~@b}@|UuRC*Viv8T)QKl%FiguWa3qZ}OG9a898XQQDoihJOgXf=Qcniq z-uehpOG@0%XsrTm)DqLSlx9ZDtwmA!v@w<5%wXp8ccz;*#vEFHx(-|M;viXTI!aq< zCG&mq=hGrj)|!rkOOfz6?!>DesZOo@Qak3%G8XGRS?k+T&_0aW zzGno>Pp;)81}vMEk8f=J;9vt`Y^xc0&UleYSnQht$V`zsvDTvCd$LNRNUXC+BFqp; zQgbYla1Z+<^DA~*)EU`Zu~QfpF(+2{4hfkTktAkTB#A5sX)+Tk5}~QcLQrNiMIy2e zk`o(Fk$}tr2@W^PGVb+n>vyjeIKV$uQ7Z7^19(p}kgw4vtMCQ0E*N=%{30XO&l}ch&vepN_64I?`l6j%Dl`U0n|@`(x^eACc8^0%jv) zBoAki%Eo8xuYF5q_8Peg(hi3Dq#|*CTd_Du%D0Ervf5 zCDPzH{}t}=>+}2E5si#Pg&y%nzaixLVWLJ+TqOjQVL*i{t=hLt#aAV>$k$3rYw;lR zN#T(?dSq`joQy}8*WJklJQ}`b+}n)ubR5@5t9fL$>p^U82Kfxye9F?vCEDS8R)pGFbrI3ak`9qSv7-n;B~hpGFoYwWK;_U8~=2a1+f54bOY z?B&{MYPe)Ndx&$ zggR3F)96G$mVbMNKl2lscN8RA3 zH@%UrH-zS~|6n13Zo9#Mux?p-Y{s_XGU@hupvQze!o>B0oyCBK!M4VL^KQSZ{G{Gh zz))x!j)TQAw^kmO!y?nC3OdG_4%adLQ~)N}NP~(oDWFwB#Upgp^IfVHh{2j;I!swv zxVp#89_#N&itIBR^R-!;{PUcUdxi-%69Z#KC@S{C*f&YG7`73~WwjYm;{M1eae<;{#RsIUlPnr;&0b8}7^r_&XmMg&vr zpT?MUUhv9+cro^i??i@;_c!P{^M=@2eAi|Q^DI+ECk=e-UcE#FrnG&C0`L7zf<1eN z!-b7+@EZM8??FEz6T|=f4wsv}GK*6%PD;kJq_24Oq8%>RAWVzfp}$gN-PHzOJv5Z& zCO@80*uwmo{CLA0hrON-37yaaWn&2g`gOPWIXc-}X z+(M;LYA`|t8RMS$5KSq1mNn&2sjH|IS3`%~b4D7b#d9Pox<~Dy7v|+h%S94pan^*3 z)zIip2VEg+mGNxN@GN=dSt)_A_3At8keK&&ZPO)5L~LJ@>W?l-4m&Y7QJ|@K<Bn(ajL9FT0bo(fA6q-#;`Y^yj}Wxh*As7lFLp(y3JH zSBfyzoxBJ@_20Jpf4b~X?*H5LUVwIVq-kaS_ua+Y0YP&AFRt@FpLxugP3Z=7zk=t~ zUoQI;GVnsJvg-g@IgoZW99`)dGrWY@8j*3p`2Jr6T}%q_*njDXU~=goVe~)~EfR_8B27ANx`7o6i^K8gO%zYH75VvMq)+mFXT?6e z;7?iU82Mx{?2f<2w_J3tN|ID=`bJP#5A7hQ2(*H`KZHOs`^5640tQ z>c8QjKP30b^&c=VGmIY)_ycMtDMtEYlsYp4LtRoDBdYuN6x~5YDn*nCln9gvln9gv zln9gvln9gvln9gvln9gvln9gvln9gvln9gvln9gvln9gvln9gvln9gvln9gvln9gv Zln9gvln9gvln9gvln9gvln87?;J?C8;uZh^ diff --git a/sorc/mods4aws/gsi_utils.aws.tar b/sorc/mods4aws/gsi_utils.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..9c85a986bc98b4e850ac2cdcd9eaceebb0e988d1 GIT binary patch literal 10240 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 literal 0 HcmV?d00001 diff --git a/sorc/mods4aws/ufs_utils.aws.tar b/sorc/mods4aws/ufs_utils.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..c37fb6a82420980a50884519b4a04669e29cff06 GIT binary patch literal 10240 zcmeHKZBOII7Ur{m#i>CRwAe{V0&Oa;1R=2LWeFnT?p>`=POAv9jg9A_N>6BDsf_>oex6V?@}k2tn4lxqIs%BymD;VUBBqw4exrr!Rg+< z>yf#)4=DXAmJ`A-F>@_jm2ir|QFtNeBAh_uo@A_sF_EFodtf z*BBwx02_|LIBeU{cmyv?~y6$MTrapWuP@CB01grBU`jA z^XC5g+I%tGa26qTF}8{&Hf4|qAG^07hVA|>_OeCGdLa~4@1obr$_ka_1SDsXFJ>Z0 z96pT3aX6#SZMUs!z{T-WCD_gK&q=+%?9+$$MNvLucV-)gaHk=exq-BoEzDe88b^D@ zve?RPqrGea=d)@s3ka?S6A4Y9>>o_}@&ysh!SxQJ7b?BAR4Hkot8tvyH&V;bKR)r| zl{92spqrqgd(AFFjbiy1RXp)n2~ywBajd7JU`o_CyeBH0$x{bBb|(lO2mO$G=5l=# z?Ji|!F44H$kCcQoLNAF&sU$ad7@&?g6FN<0(_5fW_p>5ISTIGP|7}>jipn{sDfGxo z0TR+QoNFuOu3NhBD@VB3 z?7Ce=t`|}Z%P4H+N^341X+kk)i1O6G(nrUay4pfBFRZL~?L{A~6<8iM zA6*9oUB*ua^T#fA0+k~6oOzXwGDU@CJ_@8kppyfc;3AN}3l9yMRo-`GF+(nKj_XE| z6-}R&bX6t)T`5CNsf!ob`-w~zN9uDnglXiVKypjlq3`3?p!56g^+icz?e}N@?hG%l z&#wAEo|y65)x0s zO%rE?`|OZ>If|WF@={-1bc-r+aAlz!$8uu4VNmy`KRCO-9^T${F1!DQQLBQMwG_^m z(v3ptyn6$JUwSJOv@A9)^JSn-pA^0zwFBf7g^ybkTZBkD=%sm}D+etbIdOT9=EFe7 zyL5vK79CPv_~beP@Eq3_N@XPRzD?sKBIb@m&>tmftfvOOo1yJn7kS`2{XzHU>a=%x zc~D&3Y!{$l7`VfA!`PF-#DB&V0JB5%jh+mO6PW?POiPE76N?u0V!mB?u6PG3u{UGC zYCu^DnL#ZJ7G=T1JOj!?|6!8RqXpuVk49jiC=MT`C-Qvf#X`cK*htjXW&gBy^94|v zQ}t8@8L3FPARU)@FhLJt7UDT0x3PCS=p&t3vG4;fQf|jPVKED!^jypY3A14!=2^`T zQ3AAoA;wPXC#^zZW&6O$JkE-xT;u*;DzEH1!d=euQQjQw>(1E?)IN6l<_n$vk3Kzr zOa>3QNeClNJR>U}qvcCP)0ln6fJ9crL{N%x6+t~~_9dZVxHHUnIBlsrUdl)I|7C?x z(4G1P>$e5`uf20b=_efVpU&NRuirT>PtFC1A?)IVa*jttU9PeGhpa9&4x5-Op3oIl z;~Sat-*RK=w#g@uazwE8t!DeF^VZ8>Dd(@e<3{7H@4q^>%kRJ13BC)DsaJ#?31W}QtlPC?yJi}E#q38;GW|7_L9S*VQmK9bz-itLCr3}nM@Za6zR0!*f-U5wT-q?Y6u4W3swFl5A@X+6dW#7u2Ewvd*dHSNX* zR;C8Lg+61d4ZAYQ64s_&itWnu7-L=+Gk4v+QdlC@s;{`H)qqy2Yoo@mBv2K?9I*Ck z0<{)fS7>WIIoXVxDukthb^B-|Y+8%)3T?*w9dqTnzlE%{?#QmyH{e(cXoWI^MZshp zD;Jee$9DZ>0}4pc16Z!jSW|D@Tn8&;B^vT@yn)7Az$%m(ED(w7jo0B8(j2gXFSkt^ z$<%kvL1hx^_MqnF(Z3MOv*hb)6h`^t?akRkz literal 0 HcmV?d00001 From 7e2d1c4b6f11528b6408037d09567b7f99facce0 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 18 Apr 2024 22:44:45 +0000 Subject: [PATCH 10/37] update gsi_utils module file --- sorc/mods4aws/gsi_utils.aws.tar | Bin 10240 -> 10240 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sorc/mods4aws/gsi_utils.aws.tar b/sorc/mods4aws/gsi_utils.aws.tar index 9c85a986bc98b4e850ac2cdcd9eaceebb0e988d1..e009418350f0ddc23fba9b0445d45f9c7bfb7099 100644 GIT binary patch delta 166 zcmZn&Xb70lB57u5$Y5wVrpu{pkOfBkTGR5BjYyS$tU=nCd=~$ zPLAeZI?+IIl0b{3iIEXplcA|OgMpEufq?;BlVCOD Date: Fri, 19 Apr 2024 22:44:59 +0000 Subject: [PATCH 11/37] update version and modules for AWS --- jobs/rocoto/stage_ic.sh | 3 +-- modulefiles/module_base.noaacloud.lua | 12 ++++++------ sorc/mod4aws/gdas.aws.tar | Bin 0 -> 20480 bytes sorc/mod4aws/gfs_utils.aws.tar | Bin 0 -> 10240 bytes sorc/mod4aws/gsi_enkf.aws.tar | Bin 0 -> 20480 bytes sorc/mod4aws/gsi_enkf.azure.tar | Bin 0 -> 20480 bytes sorc/mod4aws/gsi_monitor.aws.tar | Bin 0 -> 10240 bytes sorc/mod4aws/gsi_utils.aws.tar | Bin 0 -> 20480 bytes sorc/mod4aws/ufs_model.aws.tar | Bin 0 -> 30720 bytes sorc/mod4aws/ufs_utils.aws.tar | Bin 0 -> 10240 bytes sorc/mod4aws/update-modulefiles.sh | 24 ++++++++++++++++++++++++ sorc/mod4aws/upp.aws.tar | Bin 0 -> 10240 bytes versions/run.noaacloud.ver | 3 +++ 13 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 sorc/mod4aws/gdas.aws.tar create mode 100644 sorc/mod4aws/gfs_utils.aws.tar create mode 100644 sorc/mod4aws/gsi_enkf.aws.tar create mode 100644 sorc/mod4aws/gsi_enkf.azure.tar create mode 100644 sorc/mod4aws/gsi_monitor.aws.tar create mode 100644 sorc/mod4aws/gsi_utils.aws.tar create mode 100644 sorc/mod4aws/ufs_model.aws.tar create mode 100644 sorc/mod4aws/ufs_utils.aws.tar create mode 100755 sorc/mod4aws/update-modulefiles.sh create mode 100644 sorc/mod4aws/upp.aws.tar diff --git a/jobs/rocoto/stage_ic.sh b/jobs/rocoto/stage_ic.sh index 489a839886..342192d3ba 100755 --- a/jobs/rocoto/stage_ic.sh +++ b/jobs/rocoto/stage_ic.sh @@ -9,8 +9,7 @@ status=0 [[ "${status}" -ne 0 ]] && exit "${status}" export job="stage_ic" -#export jobid="${job}.$$" -export jobid="${job}.5" +export jobid="${job}.$$" # Execute the JJOB # "${HOMEgfs}/jobs/JGLOBAL_STAGE_IC" diff --git a/modulefiles/module_base.noaacloud.lua b/modulefiles/module_base.noaacloud.lua index a96747603a..5e42895468 100644 --- a/modulefiles/module_base.noaacloud.lua +++ b/modulefiles/module_base.noaacloud.lua @@ -9,13 +9,13 @@ load(pathJoin("stack-intel", (os.getenv("stack_intel_ver") or "None"))) load(pathJoin("stack-intel-oneapi-mpi", (os.getenv("stack_impi_ver") or "None"))) load(pathJoin("python", (os.getenv("python_ver") or "None"))) -load(pathJoin("hpss", (os.getenv("hpss_ver") or "None"))) +--load(pathJoin("hpss", (os.getenv("hpss_ver") or "None"))) load(pathJoin("gempak", (os.getenv("gempak_ver") or "None"))) load(pathJoin("ncl", (os.getenv("ncl_ver") or "None"))) load(pathJoin("jasper", (os.getenv("jasper_ver") or "None"))) load(pathJoin("libpng", (os.getenv("libpng_ver") or "None"))) load(pathJoin("cdo", (os.getenv("cdo_ver") or "None"))) -load(pathJoin("R", (os.getenv("R_ver") or "None"))) +--load(pathJoin("R", (os.getenv("R_ver") or "None"))) load(pathJoin("hdf5", (os.getenv("hdf5_ver") or "None"))) load(pathJoin("netcdf-c", (os.getenv("netcdf_c_ver") or "None"))) @@ -42,10 +42,10 @@ setenv("WGRIB2","wgrib2") setenv("UTILROOT",(os.getenv("prod_util_ROOT") or "None")) --prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/prepobs/v" .. (os.getenv("prepobs_run_ver") or "None"), "modulefiles")) -prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/prepobs/feature-GFSv17_com_reorg_log_update/modulefiles")) -load(pathJoin("prepobs", (os.getenv("prepobs_run_ver") or "None"))) +--prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/prepobs/feature-GFSv17_com_reorg_log_update/modulefiles")) +--load(pathJoin("prepobs", (os.getenv("prepobs_run_ver") or "None"))) -prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/Fit2Obs/v" .. (os.getenv("fit2obs_ver") or "None"), "modulefiles")) -load(pathJoin("fit2obs", (os.getenv("fit2obs_ver") or "None"))) +--prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/Fit2Obs/v" .. (os.getenv("fit2obs_ver") or "None"), "modulefiles")) +--load(pathJoin("fit2obs", (os.getenv("fit2obs_ver") or "None"))) whatis("Description: GFS run environment") diff --git a/sorc/mod4aws/gdas.aws.tar b/sorc/mod4aws/gdas.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..dc0d1ed7a8d52597cad8ef0c20a6bc302d72717b GIT binary patch literal 20480 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 Zln9gvln9gvln9gvln9gvln87?;J?C8;uZh^ literal 0 HcmV?d00001 diff --git a/sorc/mod4aws/gsi_enkf.azure.tar b/sorc/mod4aws/gsi_enkf.azure.tar new file mode 100644 index 0000000000000000000000000000000000000000..a4d9c996aff71e040df2c6c38cb7d8a2aa73abac GIT binary patch literal 20480 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 WI|=M0u#><}0y_!pB=852!2bi<6gN!( literal 0 HcmV?d00001 diff --git a/sorc/mod4aws/ufs_model.aws.tar b/sorc/mod4aws/ufs_model.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..c4c064fd935b238c617836250039b6589cda7395 GIT binary patch literal 30720 zcmeHP`*Yez^538RSIm*r95*BtKRY!ymd}t=DRn-^S4H>=Zl4jlbrEIA-%WT$L)mpi2RZF67 zbj@@0N}M$=62fSd#2VOeQ1xxq%AJmQo6e@Q`ygWE1c80yBr8VOs9EK9yV+)x!t_UD zcj!#SyP|k2+(3kkCieFnukQ|$AaRIUkThDYax{FsS-Pl|t(MU}7q7ock~+VAJVbb^ff1_iG+`yqV77>|YR^;rbI=Xg`m98X=}3pPI5-YfCm z9=d&DkHh)xr3+{*n#= zQynfU9qX)V8tty^w}vDMqWbV-(uP^nhrm>i^AA`xp6|h6s*71Q%SX?5VKCL@^72K} z0+{O1={C)Ct9AZCJ(e|$bf$jq)()m_Pqc0y0=E~0G}gVSVMrCD;qs-~=$ZUT-+- zJ4s$AGrbU*g#{u=tHm?cA?i#To{oJmBhW}wVGabXj=`h}=zSpuM4G$=gvJ<<(p(J= znC2=SgJrGNAk#D|HO8Q%rs`mT;>H-5)XoJkZj6DEM(RL3CK_WvnieWp3^{L%!J4c- zI!eHDV;qbXa}kUhV_-_NG&o?BjRd!GOG9?;bmk8GTeD@fXcqFPRkfP&q**g7C0H_W zy&J5#;|Zoj0Q-t%+@0Qz9GdN}C;AUPAJd2|@c>JJ7|R7Dt59^R^-}$! z)~ya&P0Ts%wV(~C2Ws5ST`*vRjbMJJJ$svYAL-d&|` zaPP%_B{z^(6n=kS)QOz&@F8XN`#L3oNZ$LC&-TQh;n8}I(+BXtp9ljKms=mq{e-AA z;W5fVtBqQ<0gti?7lJ-(o`CBOT@T9S2ch6uV%C|_ftSo3SDSndOtD#SzOOdUtVTH; zadpR$e+LBy1JKRhTuANm8NvWK)5=ya3Q2hyZRZAhVh@F8tDA77W9DYHvNgw!2e9ew z#IgGzL6O}u+Hly)H4xr4OOLX6;Z-d!XhwX2V&}v z#n8C}mj1-Ob0!K4n_J6hR%#cl^lNyxrz1ZY-#QZ~<@X%h6NBOGi|EOi!AYsenUl%DwBr5v8Bf|pc3&KvOGYmw-?>(ObwdCnVwN|n&tKD;}TB(YJ zw0sS-+@keC+{4U>s+Xz^-J9E~sP;%UNkHz4p?f{CCl7cUWS0U2e+imM`yu9b`PYkT zyDZTf*9g`L6uoF16}Aj`Vf&kKIHm|hoSI^@5l2~Vbjxj8Fql*ocPknRsTa6?2eaJ~ z&KIXQo6-{dh8I*!f8h@hCMl{FUW&eSq%mD%Q4qf@gphDK#vFfIlza}s`VjTRy`D|= z(S<*oGEo@((rk7*`7}QcvJr7+rR)Tm!=x@c7HRa1{L=a2pmwc#u&J??K)O~b7KrlH@*@WU|M4gShJ+c^#-uk z7zfsjY=l{}yfNUIO=W0cjy1->l^xZ%1GsFA!7W-$mf1pMtb=YPBcip&7;wxOhD7U) zacJEbMbKI!LC^J!{@85l>lNp|U@250QO>XKhgO-Lv$-?4@o_Pk8GAVKrS;RsPn4YN z*-b(@-kok6?wLpssndtCLrdT_hc;6mh98jW$bpQeHZ3U2c-sik?Z9~vW(BL^4zr-4 zt&}l)Xv|h5Z6o8naS>8@SHV&T{^1<<9k1sidAMl>iLH)EMQf`lo}rvz^blik%3GZ; zxX}U{1C!pUI7lC-4M&-Y>C(ML_J`LD2rJR4p?m!58`+7$Wp zVY(100xW&>Y&A8CP{s7=+U~hN5F9|E=9(G<3C6fz&<0pg$@_vc>H#E&ofQp7EG5`_ znBMwcT$N=TwvCRWUOMSjZ|Y3oisGud85MRhWmn34%U@Rcs%&0#DMn{&vFZ6wt4t7O zWG$7D+4wSphdj^0(UT@!3uf1S?6dU{5k4fBiO_t*ZE$Tw5$k+cC=ef!IejDQEu-^) zpSB?dpkK*8w?~S+6@GuMZ-XHukykRr?OSC?rmMHX(>&+Bk~KN-meuppzH_u41@RH- zj;&}U@Di8HCX$UvWGu+r>LC0^wlcw4Ny`aFgGD!sjW`l2%C1r;5~gXiL_&rQ1hLpl z#_}A!&Vi6T3eo6$(iV2#t-gcH7-=dSL2RYnL`DT{6ff(9y}lR$f;G+&5u5ahvEl@` z7|0s;VgDEDYFsp1CZ$|%HDV(Fa}BDOA&KmvBqtIQ4{3pq^F=(Gkmf)dT`v{Vy?tj< zCe89@{C%3geDT{q@pWjDIBve!0jKwTwZW8!A-Ybz3t{JJG;&v*Vb zwoCTZj9d4Ws=*)?#62Z+}mXuW}ex=wpY3a2~m0m}T+$?=mA3wVXVI z``ybZB-&s9z1rxY01Y{CN`}*TC!p>fl3Z9uwFDdK&C|9^14gDjz8-7tXJ5;cu*B_u zj-E#@y$7Hvt^4}+J|BT*JrH_Nog zD|_ms#fQ;pR34sE3+$_V~BU%@ywW>)QY9}Xgi@)?>^byGcl#eqW+dbLo$v6)J z)dHj?Ne=D`*k@cRi4`6pFcoDFi#$A@8Y@&y=O`RNm!9q>EKxM_N9;o^vAlvFLR3VD z7gHmV>$F7P$4kaz;38kGI;{(9^z#-)87$Oi6+}Vm6vZ5yCGqr7@c7cl#h8ldu;868 zv8q2XIY5jcs>@l+Yj5O?UoZ*TJyC%L|1Q?c9929`j6@!zMt296#ee*$6TCJukxWtP=335z#ucaX(;*ThF&|N2}Md6|+SmD-N;O z7mrq+d<5Yb5m|~ILV*ou3LH`7%{95oC|BPb-Lgo${<;)cQoik3X@ng$rQBMc4lBI2 zU%V9uXTDub;-NJ&ss|xYNBTJA2`xTd1&U5j2yG4|$aVQ@*LaU;N3l%mS7dh320dKNvw9m@euz>g?5379DYEm6B+ETK}Bf5pM znKoQLQ9?NroWCxeQGfzQ_o=1~Wj~Ae$yTcYL*(SCtr%bdaaiIXb&ot&t(L(;FgS#NIA1Fd|K<{NAWs2^Kb%2 zq=J1>EQ*pnxkvHgr%!*Q`YjJ@E|qNh-ta+C1cs0v<(gO@i?5TtKKzO#!f)=6pEm?b z@s~&qM9L$tySL|j8B^_> zX%?|inYC?N?Xw#+NVAoeFiR$PRc`HMKlA3NKI~E9^TTC%c?4w>Az;QpFvW@OiV*H4fFGWCbe}wbFKkUx` zZtfAR#dLp*^64OnqO_nlak=35L|mX^h$lZb$nM;U?~Ul(s8kJAo{Iz;Rqfq6!*TNC z$C{7gT`Y0}*%pLNi;$l_0d(l2CZ1ew3Tf!zt0;=ESl+*WOz?i{C-TU{Pf;X(N*|@O ziN`k*1jR^+7zBDJPyvOase=gUW-uMbp#YTQB9<6TD!9cV%f13-n4@$q0{P9x!M2Hx zh{nPp<3c`y8QJ6Ip-^%IpcJu_ij$8RWsI{88V73B!f}N1wm&%3Aq24q>QTlM!FbNJ z*B_*Mb2z{pq~E6JlqnF@!_(1g0%Q=K!El9l{SXg8sNg6!ABl^I!rS~<80J8eQ*SaI z#US{ZP}z|Nbd!&RFgXPP9Y##u1gk)Zt2qeA+c8AU z6jeDzXgp_x^IJNQ63$%D0vE?!bO_0KL3;|p05w>PAUUu-SF`)cAQgvUwxMVdE&qbv z#E?jpKwVaWVBiAaF$)*1xi{jKKDYWl<_+B>5A2OV_Q%EvCJU!q_;4EhxUua{cz-6G zk00Gn`#6_?e#jN`WX0?cdsytr6;UyTP3xQV4Jw$D5_KY#cq0;4VjpGF_@?tS3WeQI zj_v8~&%Wy^SU*VPI2X_+7g6sE(7He+pR7hci;n2;oPo7V_;=k{wEsvW+P$Ga>!+y< zV7L)S;2Ham`0tqGKiL0#?ilX{$sHdT3OoD%T@Ut!os|KHb+-F~X2MaV$?wR(p)*)& zT1b$VHbhIEx1%$UL59jXhkI<@@rn@Mgv9Zb>1{G0_jl>V8MHXi5idG;lL_eXN(!03 z-e>)HDo3_HgEaw8sD~5fPCtb|GAd`6(UsK1FUJ7N^4GWzO*D3Zee8t`Q$9* z*j_NN^OZ@0^G5v;#4dEk8WawNsBq0l>dx;ND1{WAJ$5P5oR6u{(2yL-Eshp7s)1l{ z@P3xWB0mfUtPwaNr01JV%sqS-pHfxP z{vIjgtUKI<^%O(M46+%bm4f)lK~6TICc(iIq<1=H6bQKid>FjrLv#){!$W2kOfsB@ z*aQdnJwFKY;@h`{31H)`BTs1(&s)>(O=kf)NhSa0-uL_eQ4Y1aO=s5SlCoxg_u-^c z#(llwHB6(8bA$}`A7^U~7jQX8W4t)z2{yWhX^M`5+Yldky}-s6+8f(>YN0(d%Eot6 z&DN%8d-N)`z(v030Z9sE9cdpznF2~XqWCv0L>G zpRzM1jPExTWJT*nyF@QNt4B2rHqJj&6o_RO6ZN#Z9N2 zUTc&Rdt$Z+2DI(IxXJI7I;JQ~C`SJMW?v&W-B(U&0Dp7^?b7U%K-B|aWeA3|$ta^p z&*YKT!zoAZy@tyuK3SN13aN4~v|+H(B{m(-GJ!ERC_t7GDVUI9E1aWws}?>+0DFu^ zZDn>^hWU%tZZ^Bc7gEcixsHN@_u^~1p1hu;qupYL!W$X1R%yr>M~0&air?wUE%C-t zX-0;wOY>4=;m%=vL+W^5<)K} z)8B}y-tiS~8ilXg3SVosIa+p@{(K4O`JW)Ic91rd_Yb*wX8vpW|D)pr)PiCEKYw(z z%m0M(+vfK!|G&%s@ACiKoMHdnxaImk-xu1*hVKH)&#eDi{a3jDA7--$yY+uTj9dA0 z^={m*{%cqNMK6(x)gEyflwQEJtN)S-JzQBfyZWzP{nu6&=^fIY1a=bGNnj^|odk9g Y*hyd~ft>_)64*&#CxM*=zEcAK2J#t9Q~&?~ literal 0 HcmV?d00001 diff --git a/sorc/mod4aws/ufs_utils.aws.tar b/sorc/mod4aws/ufs_utils.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..c37fb6a82420980a50884519b4a04669e29cff06 GIT binary patch literal 10240 zcmeHKZBOII7Ur{m#i>CRwAe{V0&Oa;1R=2LWeFnT?p>`=POAv9jg9A_N>6BDsf_>oex6V?@}k2tn4lxqIs%BymD;VUBBqw4exrr!Rg+< z>yf#)4=DXAmJ`A-F>@_jm2ir|QFtNeBAh_uo@A_sF_EFodtf z*BBwx02_|LIBeU{cmyv?~y6$MTrapWuP@CB01grBU`jA z^XC5g+I%tGa26qTF}8{&Hf4|qAG^07hVA|>_OeCGdLa~4@1obr$_ka_1SDsXFJ>Z0 z96pT3aX6#SZMUs!z{T-WCD_gK&q=+%?9+$$MNvLucV-)gaHk=exq-BoEzDe88b^D@ zve?RPqrGea=d)@s3ka?S6A4Y9>>o_}@&ysh!SxQJ7b?BAR4Hkot8tvyH&V;bKR)r| zl{92spqrqgd(AFFjbiy1RXp)n2~ywBajd7JU`o_CyeBH0$x{bBb|(lO2mO$G=5l=# z?Ji|!F44H$kCcQoLNAF&sU$ad7@&?g6FN<0(_5fW_p>5ISTIGP|7}>jipn{sDfGxo z0TR+QoNFuOu3NhBD@VB3 z?7Ce=t`|}Z%P4H+N^341X+kk)i1O6G(nrUay4pfBFRZL~?L{A~6<8iM zA6*9oUB*ua^T#fA0+k~6oOzXwGDU@CJ_@8kppyfc;3AN}3l9yMRo-`GF+(nKj_XE| z6-}R&bX6t)T`5CNsf!ob`-w~zN9uDnglXiVKypjlq3`3?p!56g^+icz?e}N@?hG%l z&#wAEo|y65)x0s zO%rE?`|OZ>If|WF@={-1bc-r+aAlz!$8uu4VNmy`KRCO-9^T${F1!DQQLBQMwG_^m z(v3ptyn6$JUwSJOv@A9)^JSn-pA^0zwFBf7g^ybkTZBkD=%sm}D+etbIdOT9=EFe7 zyL5vK79CPv_~beP@Eq3_N@XPRzD?sKBIb@m&>tmftfvOOo1yJn7kS`2{XzHU>a=%x zc~D&3Y!{$l7`VfA!`PF-#DB&V0JB5%jh+mO6PW?POiPE76N?u0V!mB?u6PG3u{UGC zYCu^DnL#ZJ7G=T1JOj!?|6!8RqXpuVk49jiC=MT`C-Qvf#X`cK*htjXW&gBy^94|v zQ}t8@8L3FPARU)@FhLJt7UDT0x3PCS=p&t3vG4;fQf|jPVKED!^jypY3A14!=2^`T zQ3AAoA;wPXC#^zZW&6O$JkE-xT;u*;DzEH1!d=euQQjQw>(1E?)IN6l<_n$vk3Kzr zOa>3QNeClNJR>U}qvcCP)0ln6fJ9crL{N%x6+t~~_9dZVxHHUnIBlsrUdl)I|7C?x z(4G1P>$e5`uf20b=_efVpU&NRuirT>PtFC1A?)IVa*jttU9PeGhpa9&4x5-Op3oIl z;~Sat-*RK=w#g@uazwE8t!DeF^VZ8>Dd(@e<3{7H@4q^>%kRJ13BC)DsaJ#?31W}QtlPC?yJi}E#q38;GW|7_L9S*VQmK9bz-itLCr3}nM@Za6zR0!*f-U5wT-q?Y6u4W3swFl5A@X+6dW#7u2Ewvd*dHSNX* zR;C8Lg+61d4ZAYQ64s_&itWnu7-L=+Gk4v+QdlC@s;{`H)qqy2Yoo@mBv2K?9I*Ck z0<{)fS7>WIIoXVxDukthb^B-|Y+8%)3T?*w9dqTnzlE%{?#QmyH{e(cXoWI^MZshp zD;Jee$9DZ>0}4pc16Z!jSW|D@Tn8&;B^vT@yn)7Az$%m(ED(w7jo0B8(j2gXFSkt^ z$<%kvL1hx^_MqnF(Z3MOv*hb)6h`^t?akRkz literal 0 HcmV?d00001 diff --git a/sorc/mod4aws/update-modulefiles.sh b/sorc/mod4aws/update-modulefiles.sh new file mode 100755 index 0000000000..9d20ae9659 --- /dev/null +++ b/sorc/mod4aws/update-modulefiles.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -x + +#machine=azure +machine=aws + +srcdir=/contrib/Wei.Huang/debug/global-workflow-cloud + +for item in gdas gfs_utils gsi_enkf gsi_monitor gsi_utils \ + ufs_model ufs_utils upp verif-global +do + tf=${item}.${machine}.tar + if [ -f ${srcdir}/sorc/mods4${machine}/${tf} ] + then + dir=${srcdir}/sorc/${item}.fd + if [ -d ${dir} ] + then + cd ${dir} + tar xvf ../mods4${machine}/${tf} + fi + fi +done + diff --git a/sorc/mod4aws/upp.aws.tar b/sorc/mod4aws/upp.aws.tar new file mode 100644 index 0000000000000000000000000000000000000000..864c459bfb7fa0e3a008b1f57d4f87a9b1916aa0 GIT binary patch literal 10240 zcmeIxPixyS6aa9a{V9Y_4%D(7J1Go$DCtHS9m`>5g;IhlD~*UO3H@om{uIw?Lq-mR zUII@S+fPsLNk8P?bWw@5RKi!ozbSfOwVcE&g%3WMqM{e zR=0CHr!A#*lhJy1+0YEp&)dT3O3?@A5XycFNp2(4FDFv%TlB)6m^|O`Mkrf6KIV6Z zbx7z}>5T4$4k#G(9Hr{e{c?$nMjPQ+{`54-^V~XNh3;0Cg-wBf{Jgop`?|dTb&D?$ zuDH>`$>+*j#AsZ**_Rex|F7sd&k8V*HPQU{?{ zufkm!PhLbws|tKHg(t{3gs16(k%my5t8}blx6kiJ>M^|>Dy7XHEuMU|>a9G{X`K0w zMy1h$Sy`r)A3eu1yOz9XTXEd&JvcUM$h0B#Kj#_JQq}kLUBThZI9j{nrtgg&2uH8Q z0$u;QplS^ZhAc z=O6$AAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w8cE G0)GIJI_4b! literal 0 HcmV?d00001 diff --git a/versions/run.noaacloud.ver b/versions/run.noaacloud.ver index d0d351db5e..251c750923 100644 --- a/versions/run.noaacloud.ver +++ b/versions/run.noaacloud.ver @@ -1,11 +1,14 @@ export stack_intel_ver=2021.3.0 export stack_impi_ver=2021.3.0 export spack_env=gsi-addon-env +#export spack_env=unified-env export ncl_ver=6.6.2 export gempak_ver=7.4.2 source "${HOMEgfs:-}/versions/run.spack.ver" export spack_mod_path="/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-${spack_stack_ver}/envs/${spack_env}/install/modulefiles/Core" +export spack_mod_path="/contrib/spack-stack/spack-stack-${spack_stack_ver}/envs/gsi-addon-env/install/modulefiles/Core" export cdo_ver=2.2.0 +#export R_ver=4.0.2 From 47bffad9b07ee9ba6ef769c5049d80e8052c31d0 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Sun, 21 Apr 2024 02:22:41 +0000 Subject: [PATCH 12/37] add hosts info for noaacloud --- base.env | 16 ---------------- workflow/hosts/azurepw.yaml | 27 +++++++++++++++++++++++++++ workflow/hosts/gcppw.yaml | 27 +++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 16 deletions(-) delete mode 100644 base.env create mode 100644 workflow/hosts/azurepw.yaml create mode 100644 workflow/hosts/gcppw.yaml diff --git a/base.env b/base.env deleted file mode 100644 index b899524568..0000000000 --- a/base.env +++ /dev/null @@ -1,16 +0,0 @@ - export BASH_ENV=$LMOD_ROOT/lmod/init/profile - source $BASH_ENV - - echo $LMOD_VERSION - echo $LMOD_PKG - echo $BASH_ENV - - module purge - module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core - module load stack-intel/2021.3.0 - module load stack-intel-oneapi-mpi - module load cmake/3.23.1 -#module list -#cmake --version -#which cmake -#module show cmake diff --git a/workflow/hosts/azurepw.yaml b/workflow/hosts/azurepw.yaml new file mode 100644 index 0000000000..252f09fab5 --- /dev/null +++ b/workflow/hosts/azurepw.yaml @@ -0,0 +1,27 @@ +BASE_GIT: '/work/noaa/global/glopara/git' +DMPDIR: '/work/noaa/rstprod/dump' +BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' +PACKAGEROOT: '/work/noaa/global/glopara/nwpara' +COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' +HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' +STMP: '/contrib/${USER}/stmp' +PTMP: '/contrib/${USER}/ptmp' +NOSCRUB: '/contrib/${USER}/scrub' +SCHEDULER: slurm +ACCOUNT: $USER +QUEUE: batch +QUEUE_SERVICE: batch +PARTITION_BATCH: compute +PARTITION_SERVICE: compute +CHGRP_RSTPROD: 'YES' +CHGRP_CMD: 'chgrp rstprod' +HPSSARCH: 'NO' +HPSS_PROJECT: epic +LOCALARCH: 'NO' +ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' +MAKE_NSSTBUFR: 'NO' +MAKE_ACFTBUFR: 'NO' +SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf +COMINnam: /work/noaa/global/glopara/data/external_gempak/nam +COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet diff --git a/workflow/hosts/gcppw.yaml b/workflow/hosts/gcppw.yaml new file mode 100644 index 0000000000..252f09fab5 --- /dev/null +++ b/workflow/hosts/gcppw.yaml @@ -0,0 +1,27 @@ +BASE_GIT: '/work/noaa/global/glopara/git' +DMPDIR: '/work/noaa/rstprod/dump' +BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' +PACKAGEROOT: '/work/noaa/global/glopara/nwpara' +COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' +HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' +STMP: '/contrib/${USER}/stmp' +PTMP: '/contrib/${USER}/ptmp' +NOSCRUB: '/contrib/${USER}/scrub' +SCHEDULER: slurm +ACCOUNT: $USER +QUEUE: batch +QUEUE_SERVICE: batch +PARTITION_BATCH: compute +PARTITION_SERVICE: compute +CHGRP_RSTPROD: 'YES' +CHGRP_CMD: 'chgrp rstprod' +HPSSARCH: 'NO' +HPSS_PROJECT: epic +LOCALARCH: 'NO' +ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' +MAKE_NSSTBUFR: 'NO' +MAKE_ACFTBUFR: 'NO' +SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf +COMINnam: /work/noaa/global/glopara/data/external_gempak/nam +COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet From 956a3e594e09b36c5295a231ded838bed76d1d4b Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Sun, 21 Apr 2024 14:36:44 +0000 Subject: [PATCH 13/37] compiled OK for ca-sfc-emc account --- modulefiles/module_base.noaacloud.lua | 16 ++++++++-------- sorc/mods4aws/gdas.aws.tar | Bin 20480 -> 20480 bytes sorc/mods4aws/gfs_utils.aws.tar | Bin 10240 -> 10240 bytes sorc/mods4aws/gsi_enkf.aws.tar | Bin 10240 -> 20480 bytes sorc/mods4aws/gsi_utils.aws.tar | Bin 10240 -> 20480 bytes sorc/mods4aws/ufs_model.aws.tar | Bin 10240 -> 10240 bytes sorc/mods4aws/update-modulefiles.sh | 3 ++- versions/run.spack.ver | 6 +++--- 8 files changed, 13 insertions(+), 12 deletions(-) diff --git a/modulefiles/module_base.noaacloud.lua b/modulefiles/module_base.noaacloud.lua index a96747603a..fb5b283087 100644 --- a/modulefiles/module_base.noaacloud.lua +++ b/modulefiles/module_base.noaacloud.lua @@ -9,13 +9,13 @@ load(pathJoin("stack-intel", (os.getenv("stack_intel_ver") or "None"))) load(pathJoin("stack-intel-oneapi-mpi", (os.getenv("stack_impi_ver") or "None"))) load(pathJoin("python", (os.getenv("python_ver") or "None"))) -load(pathJoin("hpss", (os.getenv("hpss_ver") or "None"))) +--load(pathJoin("hpss", (os.getenv("hpss_ver") or "None"))) load(pathJoin("gempak", (os.getenv("gempak_ver") or "None"))) load(pathJoin("ncl", (os.getenv("ncl_ver") or "None"))) load(pathJoin("jasper", (os.getenv("jasper_ver") or "None"))) load(pathJoin("libpng", (os.getenv("libpng_ver") or "None"))) load(pathJoin("cdo", (os.getenv("cdo_ver") or "None"))) -load(pathJoin("R", (os.getenv("R_ver") or "None"))) +--load(pathJoin("R", (os.getenv("R_ver") or "None"))) load(pathJoin("hdf5", (os.getenv("hdf5_ver") or "None"))) load(pathJoin("netcdf-c", (os.getenv("netcdf_c_ver") or "None"))) @@ -34,18 +34,18 @@ load(pathJoin("py-pyyaml", (os.getenv("py_pyyaml_ver") or "None"))) load(pathJoin("py-jinja2", (os.getenv("py_jinja2_ver") or "None"))) load(pathJoin("py-pandas", (os.getenv("py_pandas_ver") or "None"))) load(pathJoin("py-python-dateutil", (os.getenv("py_python_dateutil_ver") or "None"))) -load(pathJoin("met", (os.getenv("met_ver") or "None"))) -load(pathJoin("metplus", (os.getenv("metplus_ver") or "None"))) +--load(pathJoin("met", (os.getenv("met_ver") or "None"))) +--load(pathJoin("metplus", (os.getenv("metplus_ver") or "None"))) load(pathJoin("py-xarray", (os.getenv("py_xarray_ver") or "None"))) setenv("WGRIB2","wgrib2") setenv("UTILROOT",(os.getenv("prod_util_ROOT") or "None")) --prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/prepobs/v" .. (os.getenv("prepobs_run_ver") or "None"), "modulefiles")) -prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/prepobs/feature-GFSv17_com_reorg_log_update/modulefiles")) -load(pathJoin("prepobs", (os.getenv("prepobs_run_ver") or "None"))) +--prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/prepobs/feature-GFSv17_com_reorg_log_update/modulefiles")) +--load(pathJoin("prepobs", (os.getenv("prepobs_run_ver") or "None"))) -prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/Fit2Obs/v" .. (os.getenv("fit2obs_ver") or "None"), "modulefiles")) -load(pathJoin("fit2obs", (os.getenv("fit2obs_ver") or "None"))) +--prepend_path("MODULEPATH", pathJoin("/scratch1/NCEPDEV/global/glopara/git/Fit2Obs/v" .. (os.getenv("fit2obs_ver") or "None"), "modulefiles")) +--load(pathJoin("fit2obs", (os.getenv("fit2obs_ver") or "None"))) whatis("Description: GFS run environment") diff --git a/sorc/mods4aws/gdas.aws.tar b/sorc/mods4aws/gdas.aws.tar index dc0d1ed7a8d52597cad8ef0c20a6bc302d72717b..0b40e0ef8ed435467a395f6766d34a8876c71b93 100644 GIT binary patch delta 14 VcmZozz}T>WagmU~0-;4pdH^P|1gii5 delta 14 VcmZozz}T>Wagl(~0)a(JdH^P;1gQW3 diff --git a/sorc/mods4aws/gfs_utils.aws.tar b/sorc/mods4aws/gfs_utils.aws.tar index aba215b25cf0980d230dfe3dd3668f5bd7529a56..c37fb6a82420980a50884519b4a04669e29cff06 100644 GIT binary patch literal 10240 zcmeHKZBOII7Ur{m#i>CRwAe{V0&Oa;1R=2LWeFnT?p>`=POAv9jg9A_N>6BDsf_>oex6V?@}k2tn4lxqIs%BymD;VUBBqw4exrr!Rg+< z>yf#)4=DXAmJ`A-F>@_jm2ir|QFtNeBAh_uo@A_sF_EFodtf z*BBwx02_|LIBeU{cmyv?~y6$MTrapWuP@CB01grBU`jA z^XC5g+I%tGa26qTF}8{&Hf4|qAG^07hVA|>_OeCGdLa~4@1obr$_ka_1SDsXFJ>Z0 z96pT3aX6#SZMUs!z{T-WCD_gK&q=+%?9+$$MNvLucV-)gaHk=exq-BoEzDe88b^D@ zve?RPqrGea=d)@s3ka?S6A4Y9>>o_}@&ysh!SxQJ7b?BAR4Hkot8tvyH&V;bKR)r| zl{92spqrqgd(AFFjbiy1RXp)n2~ywBajd7JU`o_CyeBH0$x{bBb|(lO2mO$G=5l=# z?Ji|!F44H$kCcQoLNAF&sU$ad7@&?g6FN<0(_5fW_p>5ISTIGP|7}>jipn{sDfGxo z0TR+QoNFuOu3NhBD@VB3 z?7Ce=t`|}Z%P4H+N^341X+kk)i1O6G(nrUay4pfBFRZL~?L{A~6<8iM zA6*9oUB*ua^T#fA0+k~6oOzXwGDU@CJ_@8kppyfc;3AN}3l9yMRo-`GF+(nKj_XE| z6-}R&bX6t)T`5CNsf!ob`-w~zN9uDnglXiVKypjlq3`3?p!56g^+icz?e}N@?hG%l z&#wAEo|y65)x0s zO%rE?`|OZ>If|WF@={-1bc-r+aAlz!$8uu4VNmy`KRCO-9^T${F1!DQQLBQMwG_^m z(v3ptyn6$JUwSJOv@A9)^JSn-pA^0zwFBf7g^ybkTZBkD=%sm}D+etbIdOT9=EFe7 zyL5vK79CPv_~beP@Eq3_N@XPRzD?sKBIb@m&>tmftfvOOo1yJn7kS`2{XzHU>a=%x zc~D&3Y!{$l7`VfA!`PF-#DB&V0JB5%jh+mO6PW?POiPE76N?u0V!mB?u6PG3u{UGC zYCu^DnL#ZJ7G=T1JOj!?|6!8RqXpuVk49jiC=MT`C-Qvf#X`cK*htjXW&gBy^94|v zQ}t8@8L3FPARU)@FhLJt7UDT0x3PCS=p&t3vG4;fQf|jPVKED!^jypY3A14!=2^`T zQ3AAoA;wPXC#^zZW&6O$JkE-xT;u*;DzEH1!d=euQQjQw>(1E?)IN6l<_n$vk3Kzr zOa>3QNeClNJR>U}qvcCP)0ln6fJ9crL{N%x6+t~~_9dZVxHHUnIBlsrUdl)I|7C?x z(4G1P>$e5`uf20b=_efVpU&NRuirT>PtFC1A?)IVa*jttU9PeGhpa9&4x5-Op3oIl z;~Sat-*RK=w#g@uazwE8t!DeF^VZ8>Dd(@e<3{7H@4q^>%kRJ13BC)DsaJ#?31W}QtlPC?yJi}E#q38;GW|7_L9S*VQmK9bz-itLCr3}nM@Za6zR0!*f-U5wT-q?Y6u4W3swFl5A@X+6dW#7u2Ewvd*dHSNX* zR;C8Lg+61d4ZAYQ64s_&itWnu7-L=+Gk4v+QdlC@s;{`H)qqy2Yoo@mBv2K?9I*Ck z0<{)fS7>WIIoXVxDukthb^B-|Y+8%)3T?*w9dqTnzlE%{?#QmyH{e(cXoWI^MZshp zD;Jee$9DZ>0}4pc16Z!jSW|D@Tn8&;B^vT@yn)7Az$%m(ED(w7jo0B8(j2gXFSkt^ z$<%kvL1hx^_MqnF(Z3MOv*hb)6h`^t?akRkz literal 10240 zcmeHJOOMkq5bk+@g_ToRqHbPo0f_@Fj|D9P2@r?Xs&W&jwbrqtIH7-^aUM=K-hy`7 z3zBn5JM(?x$>$l5bD7qhW{gv{+-It;7+2dw=D8G@*JSn-j}Ol}j%U8V@}qbI?=Xm0 z0lb?h+=S6Ah}Ym^ zlo#{s>$59KQq=A{%A1-{sFG+`GoGRk@4q2k8LVPdAt?~y9OWcAFhSMX&CU7Q8J7v+ zNYE-tvu(2dMax%G;XSRW_%-*&cJCa?5_vIxfkW>uFOy|e5^;h(@|qZH9C-cWyE-eU z)ZW$+f)M+f(Pq0N36mD1H+GZ|#{=US(cJntV>FDw$9}(vDyA#676V=lSY}~cONWhd zG+-6m+sPZFi5`tb&Xr9Ow6_}03deo+trrf4=||jgjF?f+JeJwkUTv^;oB+d?^c-=| ze)Kkj2S$(IhtsrLONWhM>sCFM6OpPc(Pca(O1s~`@(iI?Q9#tb~Y8S$$dNA1IeJQ zG(^8U87*;i698uD20ISa?xFz=MQnp~x#~D4m)eKmZp+kWk17#Rqks3O-PRuNG2@{!%I2+XdXPlH2j`MS$1XU&3l?Sqqjinl9kak_muvz8n|jg)FIOE*MRyZBv!ggLUHS zPh_}j-Wi)Zmo3W+c7oq|PSBH_+|nu27&{Wo+~$@sJ%XDI7fte@(j;H|Fc`rXQczN` z1td2xyG(6jlMmobUI1xx@g`S%E$s0?DyHV%TdIWdXN8T?FXJsss9{ zj|X%iAr($b1>qi9hK}YGa0)mDoB~b(r+`zyDc}@v3OEIv0!{&^fK$LJ;1qBQI0c*n TP64NYQ@|wEo0eT`NDv3C5lK;J* zy)TkLfbGQ3OgqIhHu!FLZ*OmJzufK3gYnYi6W8OBF^yb%6wK#=U-p*Hi)Z_(;ODen ze^IHNRF3Os_^egyCsllkpIW_g_M%!ptya#?>J@yiR8OnNr!QFL**MriXc@&$$k>bb z+%3OZI{tJE?BZ@2@o-D$e{b`QdyC>PzZ|p!XUyc{v$@cTh{XZBUAo?wT@6|+@R{Rz zZ0?L^uFs=`Uw=J1IPijz<1wGdqw&NZ*`Ij$Du~Kc9&`Uwv5;*q9I+r|g?jm~lF6rF86M`k+`v zv)5~OE|_&~zHQpq-HV%c)9#tWH>_~@MK)SD{eH7Ev5b?Mu zq0rp4hTZ-LyKSB~+XHs^rPuHNj5fPtUN^sCJl7w2%P}urb#7Wd0zA*VaKnf?CdE#7 zsCYQPX|*rx;fG$6U7JJe4VW(cfANCfE~j7n+~ZEf>GQoC&(PTNC&AZi*B`k5;%GfO z1XGO7c@#NQUK|X~;SKNyJdRy|ssg9@e!(e>`jaB}C+0-V4}8w<@FiOCkvnnuxGYGe zGfWv%axEzQg8JVw!7UpM`>oCuD_FB2h%n9!zcgSlk;9h@?6M0%5}zP$V-*)XjPHvQ zT}m?@i$RLLW`FoW5yotUED9_co)uC7$mWc2FbVFDA>nm7Tej7`?zP&@zTLXWiWc12;S7 zIX2Dp+cqnJ7^5!;GFaQ}nbuq8&LO@z_hW~KU`2ProKKGH5#=LL>Li4222J~FaACE( zHy4r={$rLGEXU0B9q&GZL_PO5bi(^p76|kD>ikkMK;Ke03?TL?@&)^y*=}9XHm6;6 zbvY2~g5VX@)ovyz>Q~)cb(*pd(hPSb=0%%jgElABa$0=&WsM)Q5HDHNkCq{4pB&E> z8II%y^Nz6fM^GYdEE3ACj@@nzhLjFvr_*It9<3k)Gws@ny`nrBd|+q0cH#>a z%HYyhg-=~uaTAf|adj8rVtFq(w$hj*T12u6qm)jJ)@$PWV|(F@K9cRmHcCwwK=HqQ z*}dspD8pHl`wNSI-Z%R#DD>eMf=T{|LUAwRFnq$$X2zoJ%cN$vI>TnaV`A%y)w^&b zvEykENAOpixv}sHP&7-Wsy>XdQ8Z;V>Nqi_cmhVtgu%`6v<06;L*WKr^qa}c2Z8Uty3lwTYGn5ikxs8 zX0+JW<8JK{$=5bCO7FJyQKFLR!y0HEPF+%;CpL3U8Dy%I!OtwrfO9sB<3-dkj48sG zfJ4UB#nx*EoWr&4qoexScl?c}A^vfTJ)R-q@b&f5aa$|JXf63DjsPp$kR6 zG_9sgI~xrl0DCMG)kZ_+t97vpx4V^8XYOfxW-SNlAev|+49)&kbI7LActp;Lde+3C zyE1}cOp8K)LRW>wQLbvk*wmdLcRszHY#5W89~$q9$8?^yz{zUJCZ02mgsY|?4XezY z)S)HODxzyN(-Ew|vIUkDBZv_u#nI$J=p-%*mLaT$IJ(V}utiH*#LWWP3OsUX`gBip z3tos16~|~Nz7naEHV*ohtzaN~>A9#4d1Lf#rDfzfQ6ycf9x)wCg}Ng#_lz^ArOzup zg$qaQCBtViPf*QVhfFe$#CK#Xh11m5GJ!-V*zZxL-xt zJ1O_b6T=_(ZJF=1EEzaU?MC8-7#m5-VC(UAW3Ah za<4@P&Umcs;yvZUIPwl|e`DQqNr#I2}!S12D8_1y)%bRg(_D}ZJ{l^ zD5)kKQPL>S>+P|N1NJ0AQmOQLt79Tl7OAw#is`%u>$yIci8_YgI3qPIc%#r;%}wQ# zWn|h-igVppdCNtQirLiu8%xS`F zX!v*hY#JlO`gc=pb#QFZZrdsEnI(Fi2xOZMtqMG=Nm}M)0a9IDbL;Ce?cJQWTNaZs zVxu8Hwee4wc^na>`;7+vd?)(hm-UeQsk0D4NG2B99NBCUfrv{R4e{~BiHnnPpi=Pq zMAX$V>#4{X4-wkaM-{QY3iBLl{s z#GWS6Xy|Y0Je4oaM8b;AGzxx@MGg9$>=AmSA&F=bU`ytp+Lolb`6H*UoUEkMXsl98 z=buIZI!IUP!n&)(`KUQ;S*tE|?GTy->@u8znFC}m?he1Hk6oYBS2AVGpUH6@{_T;T zD(@ULCuC_ww6tTtXJIqGO>CmoMSFw_K&;XuK7HBwXFgiSbUGteKK++=WchO@(3?B1 z56`q|TL5nNx&z=xqNKd21wlDyG4l6poD7Xe$W7g?=nzjAjvyNqcP_;=)>{en7|w); zh)aib!=$4%tzo@>^Ro4iZ-$D5LRp`@u2dku5w-*kqp>*mgZ5E)Zc zyfOggRQxmDAtX6~v@z*Gu)UeFR0crWozYlYdB8RQ(d+gpFTgsd*HcYFpAs{9e)wT0 zmw+KI0d4lJH?4QO=cJ&;oO<$f6KTIcai_@%fw<^ZeU|8YgAyQ4w_}t`Sl!NL>k1L6 zj7)c}lp0Ll&>3s91PfA-#fPLI;&HmT8{iUyQlS-TH5!<@__@Rd(t2-6txj^j@HR8ct=*HZ>bs~3^2n~f?C;{?wQhRvvC54&@L0=Q6e5)4HX*wH# z88~mXTex;K{re8Tp7es~l7PN9D9~c6vf}p{Nc$Io{WQL%s&}EZW~zb^&hM3C`*no)uFb5bMVOU zpqTOx9i2%Y31~vj6{Q!VOqDH`xU+z_@iuWiPKdpClY$Av8$)Srp_WfU3_&gJ=Y$o*~< zL{SYJb;~||Z*>QQn&4dRpO9nUZ`(hJ#jJ4b#|M*cu|fEZMaNtWy-Gf+Zr;5?mf z%m{(X!Xn&6_{;e%6%9=kl~Tw(+)<2Cwi3FOp;8_pe_o=(1UU#U2{AC0pluwR>a~I; z-6m4WSVHBe44FJ0o1ls)0_Sf~Pl4JsSp8AF#3kfCn>n9Eg_|_o87eC?f>Gg8#KfyM z@|ig&h_*e)ot?Paw9!vBYb29b_iCoF{Q_3g@K9QVoinKk&k_b6FY|>vGO$VG(7iR< z5T;G;1A)ypB}by-_>s`@ExTrLF|ZgCHv$vG|G0+a10#bid&TIAQ;| zTo`j_5yWv+H6qHmvUpV6`Rb7VHV#u76mAG8)ca&wr2!N)3=xQy@PuT?n)!j_h?0O^ zGoqM86t#%~mGD%&kP#b;xW-)l)S zvJ-O?wFU+rouFKpG*E34PIYXmbhE*3I&VAO_Z`-2n?u~@UbE`!Kh{tW^uJqs|2u^9 zPbMihh16R*#Y*-S&OD&1&+-s(cm02*R;yHX{eSJOPWAt1XSMo1|9kRceg}en|0kaF zEkaSphhw04RxHR8eX`$pR8x40frKKJa3&u3J53~R=$>o9$5>RA|!8J-Ou>*s31R3ntYu2_Fjw$`N|qbV!DMgaDG3%=^vf-YZbz=vm_SSF1L&t!x3 zhzOp>_A+*J46k(P@yb>8ta9ZQT*gB|4c2Cwe`1vZ&p5OcQ_V4tD8&!JbRF_QV!D7y zrVSAJuC74Fi$d(c$3l}=%Dm)Drc30rG9mN@j=;ooRqL{CUJU?JD1Cm@9Sli7b>C&a z@1Rsly6GBPosFi|CPc}IMxhgrW>rygdC`1lOg%(S9(^pF&@oVoCf;8mB&b(vmA_!n zN720t!jA~T9On@PAHk-MCz4mt#@LA+V@5HHNaZ&%dT=*GMSfJoGZ9SF6%QL4qGAg2 zbi=@>w+M7NL?N?5z+M7-3G5}Xm%v^EdkO3%u$RDI U0(%MUC9s#kUIKdwJYE9-28adeV*mgE delta 56 zcmZozz}OJ5NvoGnz}V2x+|Z1{z|h>>z??zBV6q`&%4SB(5XQ;JtkfshS$RwjwbI=D M)=F4(@dP_20Kkk8ssI20 diff --git a/sorc/mods4aws/gsi_utils.aws.tar b/sorc/mods4aws/gsi_utils.aws.tar index e009418350f0ddc23fba9b0445d45f9c7bfb7099..677965c04cbf3b4633bf6c0624093fa330deec52 100644 GIT binary patch literal 20480 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 U1S$zs5~w6lNuZLz|Az$r4c&sVpa1{> delta 53 zcmZozz}OJ5Nv20Y(7@Qpz}(c3!NADSz`&3}!CW6EYm-4Mpf$Mn=E*Xemo4%O4# J{8mp`6aa%w4-5bR diff --git a/sorc/mods4aws/ufs_model.aws.tar b/sorc/mods4aws/ufs_model.aws.tar index b25cf3a512bbecdbc78e38816ccab810d5d1d595..b32dd5ee46a5aa28669ab9728affc112e6561200 100644 GIT binary patch literal 10240 zcmeHK(Qex|6wR~0g3w-UAfiP{wzmO!2+|ha)~o@xVg-W0pe4%YLXjFNHNcAg`z~o& zqP?ZdiU30a3J8>t=bm$UMBdBPs_X=-xL{`9Rc2kNx>gd4j-EZ+lfbjg^RpybBw48;F*BzDHN3hL9XPACu z^6MRb*wL1oY4n1bLi48ON`8;tz4`@hIxb4YZGBACL&j{j=`p}9D#JNm3_{zqtsCLPfQ7)4Ja2g8&)aMOlVeDD zpfUdhvEGc3hm6(U7ud7F=T1D#wrWLec2u*nmvq_qU!kVQ>AGZ6oWtgdt^4t@+on)$ zvGel>#uaQu=k=$_1im=pupn}dzVSD6sbHVlNl9yVj!IV1PPFR}OdB{;h)dK^uFceo zx#f2=&~n<)cK4&= zvd1cex2y%)=_&OLL9QoR&SpTwWI3@vUvEtdnLpiueJvjQzf_bKLUkqPvSs2~E&{g8 zf2RMFJWUS$f0ZV1PavyRx(NOM>0j~7k$nS)?o3PLweUtW&Hm`P;Vm<+uKoP>@)F(j zJ?%m1do%yRZjp)W?h^=Tplqyd0h&hFZ(qE7^YZ5M*VndI%?l-=jBVzop~Za+H?HE| z|2-zQietGaAL!+gmFVBvkO}bO4tkq!GlDO8QsI6icXriIC9iw_0#TB#9y#Erq;S z&bbZ|>+bHrvMgkXDGx_6NoLi`Wxw<3WB00cb5?l^6(n=l&I@DGP^B#k0xUI@~*khF5JGj&tNY9tH=|DHn2SUoaXF)KX_xuUx5*KO~KKZXpYuE@1O9Z=PZE-8VS&jrVKW~m&nc3VdU zYG*-!=d0t-pI7H`@#1tvkAavJIWAil-O*J<61!cn*E%pja<6QA2pks>VMO39_jk; z9=Z)5n*i4TrssKO{oe@a4lnj!Ib+71F;O#}hft%bWw8m|-ooq4R{QL{*BzaA;28eI z%ey=H1Ckl#7T~iFLkdJv5Ik!RA82AOki818fG$V`S?LDdX5a*zkS-jaMiKZYZ#+0C ziqj&MNM%65A#tpn2zj#)##xe?sEH=bXvrnVshm>FqS13k&!{Bdv-%8a{$pkfi8X4A z-F4QPH4MV1IhEa^eps^btoK#6i z%`ks<;lVNxO8M~h>sr>5K*(*8WQMvn36fOlnWZD9OCiEv>Y+~YJhvsql4Ok8kl!H= zsliNad3(Kf>l!*4*)Ml%gBLjN&0`wUEpFVj+HDx*bUX4x#L3PI?Uc}Mh4y``+j^nZ zrrQLBbCG~z^Emnfdc@T2=v%nxL6h*%2Drh)l};T{`{2+daAGO+s;e3FmZ5+EPv>JQ zK}>QfHA!)tq#-PbWMqtG%^02u8B?4ysZq@M^m*Mwmdr$&;H6OXLCV{Ln5Q!Ssq&E4bHnWfi;prn7tgrfs@ zcN<#%pfhMgH={DbU*7f$=GtLClq#G@pRqk_`}(cqwZa60ic&dua?>5(wO!w?8}1EW zuGWRM+!L z?)Ptwf6!X9nioar<^A}z{(SfPL7biz4V4YW)2xvh8IIW^^g6BI+!No-lIUccq#oN8 z&6MggK5Sk0&U^21JL_Ha`okVveQe#F_OCC&J9*<<7`;23d`nR!0wn?^0wn?^0wn?^ h0wn?^0wn?^0wn?^0wn?^0wn?^0wn?^0{?FW{sEPjZkzxB diff --git a/sorc/mods4aws/update-modulefiles.sh b/sorc/mods4aws/update-modulefiles.sh index 9d20ae9659..2753cad6f6 100755 --- a/sorc/mods4aws/update-modulefiles.sh +++ b/sorc/mods4aws/update-modulefiles.sh @@ -5,7 +5,8 @@ set -x #machine=azure machine=aws -srcdir=/contrib/Wei.Huang/debug/global-workflow-cloud +#srcdir=/contrib/Wei.Huang/debug/global-workflow-cloud +srcdir=/contrib/Wei.Huang/src/global-workflow-cloud for item in gdas gfs_utils gsi_enkf gsi_monitor gsi_utils \ ufs_model ufs_utils upp verif-global diff --git a/versions/run.spack.ver b/versions/run.spack.ver index c00b7483cd..ecfa83ef6e 100644 --- a/versions/run.spack.ver +++ b/versions/run.spack.ver @@ -1,5 +1,5 @@ export spack_stack_ver=1.6.0 -export python_ver=3.11.6 +export python_ver=3.10.13 export jasper_ver=2.0.32 export libpng_ver=1.6.37 @@ -10,7 +10,7 @@ export hdf5_ver=1.14.0 export netcdf_c_ver=4.9.2 export netcdf_fortran_ver=4.6.1 -export bufr_ver=11.7.0 +export bufr_ver=12.0.1 export gsi_ncdiag_ver=1.1.2 export g2tmpl_ver=1.10.2 export crtm_ver=2.4.0.1 @@ -19,7 +19,7 @@ export grib_util_ver=1.3.0 export prod_util_ver=2.1.1 export py_netcdf4_ver=1.5.8 export py_pyyaml_ver=6.0 -export py_jinja2_ver=3.1.2 +export py_jinja2_ver=3.0.3 export py_pandas_ver=1.5.3 export py_python_dateutil_ver=2.8.2 From 27686864a6899e5ef4cad9ca81422bc988f181ef Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 23 Apr 2024 21:20:37 +0000 Subject: [PATCH 14/37] add host and env for CSP --- env/AWSPW.env | 4 +- env/AZUREPW.env | 138 ++++++++++++++++++++++++++++++++++++++ env/GCPPW.env | 138 ++++++++++++++++++++++++++++++++++++++ sorc/setup-case.sh | 4 +- workflow/hosts.py | 3 +- workflow/hosts/awspw.yaml | 2 +- 6 files changed, 284 insertions(+), 5 deletions(-) create mode 100755 env/AZUREPW.env create mode 100755 env/GCPPW.env diff --git a/env/AWSPW.env b/env/AWSPW.env index 2dbba67eb3..80f08ba7c5 100755 --- a/env/AWSPW.env +++ b/env/AWSPW.env @@ -14,7 +14,9 @@ fi step=$1 -export launcher="mpiexec.hydra" +echo "step: $step" + +export launcher="srun --mpi=pmi2" export mpmd_opt="" # Configure MPI environment diff --git a/env/AZUREPW.env b/env/AZUREPW.env new file mode 100755 index 0000000000..80f08ba7c5 --- /dev/null +++ b/env/AZUREPW.env @@ -0,0 +1,138 @@ +#! /usr/bin/env bash + +if [[ $# -ne 1 ]]; then + + echo "Must specify an input argument to set runtime environment variables!" + echo "argument can be any one of the following:" + echo "atmanlrun atmensanlrun aeroanlrun snowanl" + echo "anal sfcanl fcst post metp" + echo "eobs eupd ecen efcs epos" + echo "postsnd awips gempak" + exit 1 + +fi + +step=$1 + +echo "step: $step" + +export launcher="srun --mpi=pmi2" +export mpmd_opt="" + +# Configure MPI environment +export OMP_STACKSIZE=2048000 +export NTHSTACK=1024000000 + +ulimit -s unlimited +ulimit -a + +if [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then + + if [[ "${CDUMP}" =~ "gfs" ]]; then + nprocs="npe_${step}_gfs" + ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}" + else + nprocs="npe_${step}" + ppn="npe_node_${step}" + fi + (( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} )) + (( ntasks = nnodes*${!ppn} )) + # With ESMF threading, the model wants to use the full node + export APRUN_UFS="${launcher} -n ${ntasks}" + unset nprocs ppn nnodes ntasks + +elif [[ "${step}" = "post" ]]; then + + nth_max=$((npe_node_max / npe_node_post)) + + export NTHREADS_NP=${nth_np:-1} + [[ ${NTHREADS_NP} -gt ${nth_max} ]] && export NTHREADS_NP=${nth_max} + export APRUN_NP="${launcher} -n ${npe_post}" + + export NTHREADS_DWN=${nth_dwn:-1} + [[ ${NTHREADS_DWN} -gt ${nth_max} ]] && export NTHREADS_DWN=${nth_max} + export APRUN_DWN="${launcher} -n ${npe_dwn}" + +elif [[ "${step}" = "ecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ecen)) + + export NTHREADS_ECEN=${nth_ecen:-${nth_max}} + [[ ${NTHREADS_ECEN} -gt ${nth_max} ]] && export NTHREADS_ECEN=${nth_max} + export APRUN_ECEN="${launcher} -n ${npe_ecen}" + + export NTHREADS_CHGRES=${nth_chgres:-12} + [[ ${NTHREADS_CHGRES} -gt ${npe_node_max} ]] && export NTHREADS_CHGRES=${npe_node_max} + export APRUN_CHGRES="time" + + export NTHREADS_CALCINC=${nth_calcinc:-1} + [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} + export APRUN_CALCINC="${launcher} -n ${npe_ecen}" + +elif [[ "${step}" = "esfc" ]]; then + + nth_max=$((npe_node_max / npe_node_esfc)) + + export NTHREADS_ESFC=${nth_esfc:-${nth_max}} + [[ ${NTHREADS_ESFC} -gt ${nth_max} ]] && export NTHREADS_ESFC=${nth_max} + export APRUN_ESFC="${launcher} -n ${npe_esfc}" + + export NTHREADS_CYCLE=${nth_cycle:-14} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + export APRUN_CYCLE="${launcher} -n ${npe_esfc}" + +elif [[ "${step}" = "epos" ]]; then + + nth_max=$((npe_node_max / npe_node_epos)) + + export NTHREADS_EPOS=${nth_epos:-${nth_max}} + [[ ${NTHREADS_EPOS} -gt ${nth_max} ]] && export NTHREADS_EPOS=${nth_max} + export APRUN_EPOS="${launcher} -n ${npe_epos}" + +elif [[ "${step}" = "postsnd" ]]; then + + export CFP_MP="YES" + + nth_max=$((npe_node_max / npe_node_postsnd)) + + export NTHREADS_POSTSND=${nth_postsnd:-1} + [[ ${NTHREADS_POSTSND} -gt ${nth_max} ]] && export NTHREADS_POSTSND=${nth_max} + export APRUN_POSTSND="${launcher} -n ${npe_postsnd}" + + export NTHREADS_POSTSNDCFP=${nth_postsndcfp:-1} + [[ ${NTHREADS_POSTSNDCFP} -gt ${nth_max} ]] && export NTHREADS_POSTSNDCFP=${nth_max} + export APRUN_POSTSNDCFP="${launcher} -n ${npe_postsndcfp} ${mpmd_opt}" + +elif [[ "${step}" = "awips" ]]; then + + nth_max=$((npe_node_max / npe_node_awips)) + + export NTHREADS_AWIPS=${nth_awips:-2} + [[ ${NTHREADS_AWIPS} -gt ${nth_max} ]] && export NTHREADS_AWIPS=${nth_max} + export APRUN_AWIPSCFP="${launcher} -n ${npe_awips} ${mpmd_opt}" + +elif [[ "${step}" = "gempak" ]]; then + + export CFP_MP="YES" + + if [[ ${CDUMP} == "gfs" ]]; then + npe_gempak=${npe_gempak_gfs} + npe_node_gempak=${npe_node_gempak_gfs} + fi + + nth_max=$((npe_node_max / npe_node_gempak)) + + export NTHREADS_GEMPAK=${nth_gempak:-1} + [[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max} + export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}" + + +elif [[ "${step}" = "fit2obs" ]]; then + + nth_max=$((npe_node_max / npe_node_fit2obs)) + + export NTHREADS_FIT2OBS=${nth_fit2obs:-1} + [[ ${NTHREADS_FIT2OBS} -gt ${nth_max} ]] && export NTHREADS_FIT2OBS=${nth_max} + export MPIRUN="${launcher} -n ${npe_fit2obs}" + +fi diff --git a/env/GCPPW.env b/env/GCPPW.env new file mode 100755 index 0000000000..80f08ba7c5 --- /dev/null +++ b/env/GCPPW.env @@ -0,0 +1,138 @@ +#! /usr/bin/env bash + +if [[ $# -ne 1 ]]; then + + echo "Must specify an input argument to set runtime environment variables!" + echo "argument can be any one of the following:" + echo "atmanlrun atmensanlrun aeroanlrun snowanl" + echo "anal sfcanl fcst post metp" + echo "eobs eupd ecen efcs epos" + echo "postsnd awips gempak" + exit 1 + +fi + +step=$1 + +echo "step: $step" + +export launcher="srun --mpi=pmi2" +export mpmd_opt="" + +# Configure MPI environment +export OMP_STACKSIZE=2048000 +export NTHSTACK=1024000000 + +ulimit -s unlimited +ulimit -a + +if [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then + + if [[ "${CDUMP}" =~ "gfs" ]]; then + nprocs="npe_${step}_gfs" + ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}" + else + nprocs="npe_${step}" + ppn="npe_node_${step}" + fi + (( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} )) + (( ntasks = nnodes*${!ppn} )) + # With ESMF threading, the model wants to use the full node + export APRUN_UFS="${launcher} -n ${ntasks}" + unset nprocs ppn nnodes ntasks + +elif [[ "${step}" = "post" ]]; then + + nth_max=$((npe_node_max / npe_node_post)) + + export NTHREADS_NP=${nth_np:-1} + [[ ${NTHREADS_NP} -gt ${nth_max} ]] && export NTHREADS_NP=${nth_max} + export APRUN_NP="${launcher} -n ${npe_post}" + + export NTHREADS_DWN=${nth_dwn:-1} + [[ ${NTHREADS_DWN} -gt ${nth_max} ]] && export NTHREADS_DWN=${nth_max} + export APRUN_DWN="${launcher} -n ${npe_dwn}" + +elif [[ "${step}" = "ecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ecen)) + + export NTHREADS_ECEN=${nth_ecen:-${nth_max}} + [[ ${NTHREADS_ECEN} -gt ${nth_max} ]] && export NTHREADS_ECEN=${nth_max} + export APRUN_ECEN="${launcher} -n ${npe_ecen}" + + export NTHREADS_CHGRES=${nth_chgres:-12} + [[ ${NTHREADS_CHGRES} -gt ${npe_node_max} ]] && export NTHREADS_CHGRES=${npe_node_max} + export APRUN_CHGRES="time" + + export NTHREADS_CALCINC=${nth_calcinc:-1} + [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} + export APRUN_CALCINC="${launcher} -n ${npe_ecen}" + +elif [[ "${step}" = "esfc" ]]; then + + nth_max=$((npe_node_max / npe_node_esfc)) + + export NTHREADS_ESFC=${nth_esfc:-${nth_max}} + [[ ${NTHREADS_ESFC} -gt ${nth_max} ]] && export NTHREADS_ESFC=${nth_max} + export APRUN_ESFC="${launcher} -n ${npe_esfc}" + + export NTHREADS_CYCLE=${nth_cycle:-14} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + export APRUN_CYCLE="${launcher} -n ${npe_esfc}" + +elif [[ "${step}" = "epos" ]]; then + + nth_max=$((npe_node_max / npe_node_epos)) + + export NTHREADS_EPOS=${nth_epos:-${nth_max}} + [[ ${NTHREADS_EPOS} -gt ${nth_max} ]] && export NTHREADS_EPOS=${nth_max} + export APRUN_EPOS="${launcher} -n ${npe_epos}" + +elif [[ "${step}" = "postsnd" ]]; then + + export CFP_MP="YES" + + nth_max=$((npe_node_max / npe_node_postsnd)) + + export NTHREADS_POSTSND=${nth_postsnd:-1} + [[ ${NTHREADS_POSTSND} -gt ${nth_max} ]] && export NTHREADS_POSTSND=${nth_max} + export APRUN_POSTSND="${launcher} -n ${npe_postsnd}" + + export NTHREADS_POSTSNDCFP=${nth_postsndcfp:-1} + [[ ${NTHREADS_POSTSNDCFP} -gt ${nth_max} ]] && export NTHREADS_POSTSNDCFP=${nth_max} + export APRUN_POSTSNDCFP="${launcher} -n ${npe_postsndcfp} ${mpmd_opt}" + +elif [[ "${step}" = "awips" ]]; then + + nth_max=$((npe_node_max / npe_node_awips)) + + export NTHREADS_AWIPS=${nth_awips:-2} + [[ ${NTHREADS_AWIPS} -gt ${nth_max} ]] && export NTHREADS_AWIPS=${nth_max} + export APRUN_AWIPSCFP="${launcher} -n ${npe_awips} ${mpmd_opt}" + +elif [[ "${step}" = "gempak" ]]; then + + export CFP_MP="YES" + + if [[ ${CDUMP} == "gfs" ]]; then + npe_gempak=${npe_gempak_gfs} + npe_node_gempak=${npe_node_gempak_gfs} + fi + + nth_max=$((npe_node_max / npe_node_gempak)) + + export NTHREADS_GEMPAK=${nth_gempak:-1} + [[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max} + export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}" + + +elif [[ "${step}" = "fit2obs" ]]; then + + nth_max=$((npe_node_max / npe_node_fit2obs)) + + export NTHREADS_FIT2OBS=${nth_fit2obs:-1} + [[ ${NTHREADS_FIT2OBS} -gt ${nth_max} ]] && export NTHREADS_FIT2OBS=${nth_max} + export MPIRUN="${launcher} -n ${npe_fit2obs}" + +fi diff --git a/sorc/setup-case.sh b/sorc/setup-case.sh index f800f0735d..cc65975913 100755 --- a/sorc/setup-case.sh +++ b/sorc/setup-case.sh @@ -7,7 +7,7 @@ GLOBALWORKFLOWTEMP=/contrib/Wei.Huang/run GLOBALWORKFLOWHOME=/contrib/Wei.Huang/src/global-workflow-cloud - PSLOT=c48atm + PSLOT=c96atm CONFIGDIR=${GLOBALWORKFLOWHOME}/parm/config IDATE=2024010100 EDATE=2024010100 @@ -24,7 +24,7 @@ --app ATM \ --pslot ${PSLOT} \ --configdir ${CONFIGDIR}/gfs \ - --resdetatmos 48 \ + --resdetatmos 96 \ --comroot ${COMROOT} \ --expdir ${EXPDIR} diff --git a/workflow/hosts.py b/workflow/hosts.py index a17cd3f4a8..ea735be44b 100644 --- a/workflow/hosts.py +++ b/workflow/hosts.py @@ -15,7 +15,8 @@ class Host: """ SUPPORTED_HOSTS = ['HERA', 'ORION', 'JET', 'HERCULES', - 'WCOSS2', 'S4', 'CONTAINER', 'AWSPW'] + 'WCOSS2', 'S4', 'CONTAINER', + 'AWSPW', 'AZUREPW', 'GCPPW'] def __init__(self, host=None): diff --git a/workflow/hosts/awspw.yaml b/workflow/hosts/awspw.yaml index 252f09fab5..563794f85f 100644 --- a/workflow/hosts/awspw.yaml +++ b/workflow/hosts/awspw.yaml @@ -1,6 +1,6 @@ BASE_GIT: '/work/noaa/global/glopara/git' DMPDIR: '/work/noaa/rstprod/dump' -BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' +BASE_CPLIC: '/contrib-epic/Wei.Huang/data/ICs' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' From cab449054e6e30e6e4c865e900236bb6ed6a597d Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Fri, 26 Apr 2024 20:47:49 +0000 Subject: [PATCH 15/37] compile gdas --- sorc/build_all.sh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/sorc/build_all.sh b/sorc/build_all.sh index 71c877b38d..528a7ebc29 100755 --- a/sorc/build_all.sh +++ b/sorc/build_all.sh @@ -142,13 +142,9 @@ build_opts["ww3prepost"]="${_wave_opt} ${_verbose_opt} ${_build_ufs_opt} ${_buil # Optional DA builds if [[ "${_build_ufsda}" == "YES" ]]; then - if [[ "${MACHINE_ID}" != "orion" && "${MACHINE_ID}" != "hera" && "${MACHINE_ID}" != "hercules" ]]; then - echo "NOTE: The GDAS App is not supported on ${MACHINE_ID}. Disabling build." - else - build_jobs["gdas"]=8 - big_jobs=$((big_jobs+1)) - build_opts["gdas"]="${_verbose_opt} ${_build_debug}" - fi + build_jobs["gdas"]=8 + big_jobs=$((big_jobs+1)) + build_opts["gdas"]="${_verbose_opt} ${_build_debug}" fi if [[ "${_build_gsi}" == "YES" ]]; then build_jobs["gsi_enkf"]=8 From 5e588f05c6672d4b5893722316630911f1bbcd06 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Sat, 27 Apr 2024 22:29:09 +0000 Subject: [PATCH 16/37] run through at ca-epic --- env/AZUREPW.env | 299 +++++++++++++++++++++++++++++++ env/GCPPW.env | 299 +++++++++++++++++++++++++++++++ env/NOAACLOUD.env | 299 +++++++++++++++++++++++++++++++ parm/config/gfs/config.resources | 4 +- scripts/exglobal_forecast.sh | 3 +- sorc/setup-case.sh | 33 ++-- ush/exglobal_prep_ocean_obs.py | 1 + workflow/hosts.py | 3 +- workflow/hosts/awspw.yaml | 2 +- workflow/hosts/azurepw.yaml | 8 +- workflow/hosts/gcppw.yaml | 8 +- workflow/hosts/noaacloud.yaml | 27 +++ workflow/rocoto/gfs_tasks.py | 9 + 13 files changed, 959 insertions(+), 36 deletions(-) create mode 100755 env/AZUREPW.env create mode 100755 env/GCPPW.env create mode 100755 env/NOAACLOUD.env create mode 120000 ush/exglobal_prep_ocean_obs.py create mode 100644 workflow/hosts/noaacloud.yaml diff --git a/env/AZUREPW.env b/env/AZUREPW.env new file mode 100755 index 0000000000..f55434e8d9 --- /dev/null +++ b/env/AZUREPW.env @@ -0,0 +1,299 @@ +#! /usr/bin/env bash + +if [[ $# -ne 1 ]]; then + + echo "Must specify an input argument to set runtime environment variables!" + echo "argument can be any one of the following:" + echo "atmanlrun atmensanlrun aeroanlrun snowanl" + echo "anal sfcanl fcst post metp" + echo "eobs eupd ecen efcs epos" + echo "postsnd awips gempak" + exit 1 + +fi + +step=$1 + +export launcher="srun -l --export=ALL" +export mpmd_opt="--multi-prog --output=mpmd.%j.%t.out" + +#export POSTAMBLE_CMD='report-mem' + +# Configure MPI environment +#export I_MPI_ADJUST_ALLREDUCE=5 +#export MPI_BUFS_PER_PROC=2048 +#export MPI_BUFS_PER_HOST=2048 +#export MPI_GROUP_MAX=256 +#export MPI_MEMMAP_OFF=1 +#export MP_STDOUTMODE="ORDERED" +export OMP_STACKSIZE=2048000 +export NTHSTACK=1024000000 +#export LD_BIND_NOW=1 + +ulimit -s unlimited +ulimit -a + +if [[ "${step}" = "prep" ]] || [[ "${step}" = "prepbufr" ]]; then + + nth_max=$((npe_node_max / npe_node_prep)) + + export POE="NO" + export BACK="NO" + export sys_tp="HERA" + export launcher_PREP="srun" + +elif [[ "${step}" = "prepsnowobs" ]]; then + + export APRUN_CALCFIMS="${launcher} -n 1" + +elif [[ "${step}" = "waveinit" ]] || [[ "${step}" = "waveprep" ]] || [[ "${step}" = "wavepostsbs" ]] || [[ "${step}" = "wavepostbndpnt" ]] || [[ "${step}" = "wavepostbndpntbll" ]] || [[ "${step}" = "wavepostpnt" ]]; then + + export CFP_MP="YES" + if [[ "${step}" = "waveprep" ]]; then export MP_PULSE=0 ; fi + export wavempexec=${launcher} + export wave_mpmd=${mpmd_opt} + +elif [[ "${step}" = "atmanlrun" ]]; then + + nth_max=$((npe_node_max / npe_node_atmanlrun)) + + export NTHREADS_ATMANL=${nth_atmanlrun:-${nth_max}} + [[ ${NTHREADS_ATMANL} -gt ${nth_max} ]] && export NTHREADS_ATMANL=${nth_max} + export APRUN_ATMANL="${launcher} -n ${npe_atmanlrun} --cpus-per-task=${NTHREADS_ATMANL}" + +elif [[ "${step}" = "atmensanlrun" ]]; then + + nth_max=$((npe_node_max / npe_node_atmensanlrun)) + + export NTHREADS_ATMENSANL=${nth_atmensanlrun:-${nth_max}} + [[ ${NTHREADS_ATMENSANL} -gt ${nth_max} ]] && export NTHREADS_ATMENSANL=${nth_max} + export APRUN_ATMENSANL="${launcher} -n ${npe_atmensanlrun} --cpus-per-task=${NTHREADS_ATMENSANL}" + +elif [[ "${step}" = "aeroanlrun" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + + nth_max=$((npe_node_max / npe_node_aeroanlrun)) + + export NTHREADS_AEROANL=${nth_aeroanlrun:-${nth_max}} + [[ ${NTHREADS_AEROANL} -gt ${nth_max} ]] && export NTHREADS_AEROANL=${nth_max} + export APRUN_AEROANL="${launcher} -n ${npe_aeroanlrun} --cpus-per-task=${NTHREADS_AEROANL}" + +elif [[ "${step}" = "snowanl" ]]; then + + nth_max=$((npe_node_max / npe_node_snowanl)) + + export NTHREADS_SNOWANL=${nth_snowanl:-${nth_max}} + [[ ${NTHREADS_SNOWANL} -gt ${nth_max} ]] && export NTHREADS_SNOWANL=${nth_max} + export APRUN_SNOWANL="${launcher} -n ${npe_snowanl} --cpus-per-task=${NTHREADS_SNOWANL}" + + export APRUN_APPLY_INCR="${launcher} -n 6" + +elif [[ "${step}" = "ocnanalbmat" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" + +elif [[ "${step}" = "ocnanalrun" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalrun}" + +elif [[ "${step}" = "ocnanalchkpt" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalchkpt}" + +elif [[ "${step}" = "ocnanalecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ocnanalecen)) + + export NTHREADS_OCNANALECEN=${nth_ocnanalecen:-${nth_max}} + [[ ${NTHREADS_OCNANALECEN} -gt ${nth_max} ]] && export NTHREADS_OCNANALECEN=${nth_max} + export APRUN_OCNANALECEN="${launcher} -n ${npe_ocnanalecen} --cpus-per-task=${NTHREADS_OCNANALECEN}" + +elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then + + export MKL_NUM_THREADS=4 + export MKL_CBWR=AUTO + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + + nth_max=$((npe_node_max / npe_node_anal)) + + export NTHREADS_GSI=${nth_anal:-${nth_max}} + [[ ${NTHREADS_GSI} -gt ${nth_max} ]] && export NTHREADS_GSI=${nth_max} + export APRUN_GSI="${launcher} -n ${npe_gsi:-${npe_anal}} --cpus-per-task=${NTHREADS_GSI}" + + export NTHREADS_CALCINC=${nth_calcinc:-1} + [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} + export APRUN_CALCINC="${launcher} \$ncmd --cpus-per-task=${NTHREADS_CALCINC}" + + export NTHREADS_CYCLE=${nth_cycle:-12} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + npe_cycle=${ntiles:-6} + export APRUN_CYCLE="${launcher} -n ${npe_cycle} --cpus-per-task=${NTHREADS_CYCLE}" + + export NTHREADS_GAUSFCANL=1 + npe_gausfcanl=${npe_gausfcanl:-1} + export APRUN_GAUSFCANL="${launcher} -n ${npe_gausfcanl} --cpus-per-task=${NTHREADS_GAUSFCANL}" + +elif [[ "${step}" = "sfcanl" ]]; then + + nth_max=$((npe_node_max / npe_node_sfcanl)) + + export NTHREADS_CYCLE=${nth_sfcanl:-14} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + npe_sfcanl=${ntiles:-6} + export APRUN_CYCLE="${launcher} -n ${npe_sfcanl} --cpus-per-task=${NTHREADS_CYCLE}" + +elif [[ "${step}" = "eobs" ]]; then + + export MKL_NUM_THREADS=4 + export MKL_CBWR=AUTO + + nth_max=$((npe_node_max / npe_node_eobs)) + + export NTHREADS_GSI=${nth_eobs:-${nth_max}} + [[ ${NTHREADS_GSI} -gt ${nth_max} ]] && export NTHREADS_GSI=${nth_max} + export APRUN_GSI="${launcher} -n ${npe_gsi:-${npe_eobs}} --cpus-per-task=${NTHREADS_GSI}" + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + +elif [[ "${step}" = "eupd" ]]; then + + nth_max=$((npe_node_max / npe_node_eupd)) + + export NTHREADS_ENKF=${nth_eupd:-${nth_max}} + [[ ${NTHREADS_ENKF} -gt ${nth_max} ]] && export NTHREADS_ENKF=${nth_max} + export APRUN_ENKF="${launcher} -n ${npe_enkf:-${npe_eupd}} --cpus-per-task=${NTHREADS_ENKF}" + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + +elif [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then + + if [[ "${CDUMP}" =~ "gfs" ]]; then + nprocs="npe_${step}_gfs" + ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}" + else + nprocs="npe_${step}" + ppn="npe_node_${step}" + fi + (( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} )) + (( ntasks = nnodes*${!ppn} )) + # With ESMF threading, the model wants to use the full node + export APRUN_UFS="${launcher} -n ${ntasks}" + unset nprocs ppn nnodes ntasks + + +elif [[ "${step}" = "upp" ]]; then + + nth_max=$((npe_node_max / npe_node_upp)) + + export NTHREADS_UPP=${nth_upp:-1} + [[ ${NTHREADS_UPP} -gt ${nth_max} ]] && export NTHREADS_UPP=${nth_max} + export APRUN_UPP="${launcher} -n ${npe_upp} --cpus-per-task=${NTHREADS_UPP}" + +elif [[ "${step}" = "atmos_products" ]]; then + + export USE_CFP="YES" # Use MPMD for downstream product generation on Hera + +elif [[ "${step}" = "oceanice_products" ]]; then + + nth_max=$((npe_node_max / npe_node_oceanice_products)) + + export NTHREADS_OCNICEPOST=${nth_oceanice_products:-1} + export APRUN_OCNICEPOST="${launcher} -n 1 --cpus-per-task=${NTHREADS_OCNICEPOST}" + +elif [[ "${step}" = "ecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ecen)) + + export NTHREADS_ECEN=${nth_ecen:-${nth_max}} + [[ ${NTHREADS_ECEN} -gt ${nth_max} ]] && export NTHREADS_ECEN=${nth_max} + export APRUN_ECEN="${launcher} -n ${npe_ecen} --cpus-per-task=${NTHREADS_ECEN}" + + export NTHREADS_CHGRES=${nth_chgres:-12} + [[ ${NTHREADS_CHGRES} -gt ${npe_node_max} ]] && export NTHREADS_CHGRES=${npe_node_max} + export APRUN_CHGRES="time" + + export NTHREADS_CALCINC=${nth_calcinc:-1} + [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} + export APRUN_CALCINC="${launcher} -n ${npe_ecen} --cpus-per-task=${NTHREADS_CALCINC}" + +elif [[ "${step}" = "esfc" ]]; then + + nth_max=$((npe_node_max / npe_node_esfc)) + + export NTHREADS_ESFC=${nth_esfc:-${nth_max}} + [[ ${NTHREADS_ESFC} -gt ${nth_max} ]] && export NTHREADS_ESFC=${nth_max} + export APRUN_ESFC="${launcher} -n ${npe_esfc} --cpus-per-task=${NTHREADS_ESFC}" + + export NTHREADS_CYCLE=${nth_cycle:-14} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + export APRUN_CYCLE="${launcher} -n ${npe_esfc} --cpus-per-task=${NTHREADS_CYCLE}" + +elif [[ "${step}" = "epos" ]]; then + + nth_max=$((npe_node_max / npe_node_epos)) + + export NTHREADS_EPOS=${nth_epos:-${nth_max}} + [[ ${NTHREADS_EPOS} -gt ${nth_max} ]] && export NTHREADS_EPOS=${nth_max} + export APRUN_EPOS="${launcher} -n ${npe_epos} --cpus-per-task=${NTHREADS_EPOS}" + +elif [[ "${step}" = "postsnd" ]]; then + + export CFP_MP="YES" + + nth_max=$((npe_node_max / npe_node_postsnd)) + + export NTHREADS_POSTSND=${nth_postsnd:-1} + [[ ${NTHREADS_POSTSND} -gt ${nth_max} ]] && export NTHREADS_POSTSND=${nth_max} + export APRUN_POSTSND="${launcher} -n ${npe_postsnd} --cpus-per-task=${NTHREADS_POSTSND}" + + export NTHREADS_POSTSNDCFP=${nth_postsndcfp:-1} + [[ ${NTHREADS_POSTSNDCFP} -gt ${nth_max} ]] && export NTHREADS_POSTSNDCFP=${nth_max} + export APRUN_POSTSNDCFP="${launcher} -n ${npe_postsndcfp} ${mpmd_opt}" + +elif [[ "${step}" = "awips" ]]; then + + nth_max=$((npe_node_max / npe_node_awips)) + + export NTHREADS_AWIPS=${nth_awips:-2} + [[ ${NTHREADS_AWIPS} -gt ${nth_max} ]] && export NTHREADS_AWIPS=${nth_max} + export APRUN_AWIPSCFP="${launcher} -n ${npe_awips} ${mpmd_opt}" + +elif [[ "${step}" = "gempak" ]]; then + + export CFP_MP="YES" + + if [[ ${CDUMP} == "gfs" ]]; then + npe_gempak=${npe_gempak_gfs} + npe_node_gempak=${npe_node_gempak_gfs} + fi + + nth_max=$((npe_node_max / npe_node_gempak)) + + export NTHREADS_GEMPAK=${nth_gempak:-1} + [[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max} + export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}" + + +elif [[ "${step}" = "fit2obs" ]]; then + + nth_max=$((npe_node_max / npe_node_fit2obs)) + + export NTHREADS_FIT2OBS=${nth_fit2obs:-1} + [[ ${NTHREADS_FIT2OBS} -gt ${nth_max} ]] && export NTHREADS_FIT2OBS=${nth_max} + export MPIRUN="${launcher} -n ${npe_fit2obs} --cpus-per-task=${NTHREADS_FIT2OBS}" + +fi diff --git a/env/GCPPW.env b/env/GCPPW.env new file mode 100755 index 0000000000..f55434e8d9 --- /dev/null +++ b/env/GCPPW.env @@ -0,0 +1,299 @@ +#! /usr/bin/env bash + +if [[ $# -ne 1 ]]; then + + echo "Must specify an input argument to set runtime environment variables!" + echo "argument can be any one of the following:" + echo "atmanlrun atmensanlrun aeroanlrun snowanl" + echo "anal sfcanl fcst post metp" + echo "eobs eupd ecen efcs epos" + echo "postsnd awips gempak" + exit 1 + +fi + +step=$1 + +export launcher="srun -l --export=ALL" +export mpmd_opt="--multi-prog --output=mpmd.%j.%t.out" + +#export POSTAMBLE_CMD='report-mem' + +# Configure MPI environment +#export I_MPI_ADJUST_ALLREDUCE=5 +#export MPI_BUFS_PER_PROC=2048 +#export MPI_BUFS_PER_HOST=2048 +#export MPI_GROUP_MAX=256 +#export MPI_MEMMAP_OFF=1 +#export MP_STDOUTMODE="ORDERED" +export OMP_STACKSIZE=2048000 +export NTHSTACK=1024000000 +#export LD_BIND_NOW=1 + +ulimit -s unlimited +ulimit -a + +if [[ "${step}" = "prep" ]] || [[ "${step}" = "prepbufr" ]]; then + + nth_max=$((npe_node_max / npe_node_prep)) + + export POE="NO" + export BACK="NO" + export sys_tp="HERA" + export launcher_PREP="srun" + +elif [[ "${step}" = "prepsnowobs" ]]; then + + export APRUN_CALCFIMS="${launcher} -n 1" + +elif [[ "${step}" = "waveinit" ]] || [[ "${step}" = "waveprep" ]] || [[ "${step}" = "wavepostsbs" ]] || [[ "${step}" = "wavepostbndpnt" ]] || [[ "${step}" = "wavepostbndpntbll" ]] || [[ "${step}" = "wavepostpnt" ]]; then + + export CFP_MP="YES" + if [[ "${step}" = "waveprep" ]]; then export MP_PULSE=0 ; fi + export wavempexec=${launcher} + export wave_mpmd=${mpmd_opt} + +elif [[ "${step}" = "atmanlrun" ]]; then + + nth_max=$((npe_node_max / npe_node_atmanlrun)) + + export NTHREADS_ATMANL=${nth_atmanlrun:-${nth_max}} + [[ ${NTHREADS_ATMANL} -gt ${nth_max} ]] && export NTHREADS_ATMANL=${nth_max} + export APRUN_ATMANL="${launcher} -n ${npe_atmanlrun} --cpus-per-task=${NTHREADS_ATMANL}" + +elif [[ "${step}" = "atmensanlrun" ]]; then + + nth_max=$((npe_node_max / npe_node_atmensanlrun)) + + export NTHREADS_ATMENSANL=${nth_atmensanlrun:-${nth_max}} + [[ ${NTHREADS_ATMENSANL} -gt ${nth_max} ]] && export NTHREADS_ATMENSANL=${nth_max} + export APRUN_ATMENSANL="${launcher} -n ${npe_atmensanlrun} --cpus-per-task=${NTHREADS_ATMENSANL}" + +elif [[ "${step}" = "aeroanlrun" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + + nth_max=$((npe_node_max / npe_node_aeroanlrun)) + + export NTHREADS_AEROANL=${nth_aeroanlrun:-${nth_max}} + [[ ${NTHREADS_AEROANL} -gt ${nth_max} ]] && export NTHREADS_AEROANL=${nth_max} + export APRUN_AEROANL="${launcher} -n ${npe_aeroanlrun} --cpus-per-task=${NTHREADS_AEROANL}" + +elif [[ "${step}" = "snowanl" ]]; then + + nth_max=$((npe_node_max / npe_node_snowanl)) + + export NTHREADS_SNOWANL=${nth_snowanl:-${nth_max}} + [[ ${NTHREADS_SNOWANL} -gt ${nth_max} ]] && export NTHREADS_SNOWANL=${nth_max} + export APRUN_SNOWANL="${launcher} -n ${npe_snowanl} --cpus-per-task=${NTHREADS_SNOWANL}" + + export APRUN_APPLY_INCR="${launcher} -n 6" + +elif [[ "${step}" = "ocnanalbmat" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" + +elif [[ "${step}" = "ocnanalrun" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalrun}" + +elif [[ "${step}" = "ocnanalchkpt" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalchkpt}" + +elif [[ "${step}" = "ocnanalecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ocnanalecen)) + + export NTHREADS_OCNANALECEN=${nth_ocnanalecen:-${nth_max}} + [[ ${NTHREADS_OCNANALECEN} -gt ${nth_max} ]] && export NTHREADS_OCNANALECEN=${nth_max} + export APRUN_OCNANALECEN="${launcher} -n ${npe_ocnanalecen} --cpus-per-task=${NTHREADS_OCNANALECEN}" + +elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then + + export MKL_NUM_THREADS=4 + export MKL_CBWR=AUTO + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + + nth_max=$((npe_node_max / npe_node_anal)) + + export NTHREADS_GSI=${nth_anal:-${nth_max}} + [[ ${NTHREADS_GSI} -gt ${nth_max} ]] && export NTHREADS_GSI=${nth_max} + export APRUN_GSI="${launcher} -n ${npe_gsi:-${npe_anal}} --cpus-per-task=${NTHREADS_GSI}" + + export NTHREADS_CALCINC=${nth_calcinc:-1} + [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} + export APRUN_CALCINC="${launcher} \$ncmd --cpus-per-task=${NTHREADS_CALCINC}" + + export NTHREADS_CYCLE=${nth_cycle:-12} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + npe_cycle=${ntiles:-6} + export APRUN_CYCLE="${launcher} -n ${npe_cycle} --cpus-per-task=${NTHREADS_CYCLE}" + + export NTHREADS_GAUSFCANL=1 + npe_gausfcanl=${npe_gausfcanl:-1} + export APRUN_GAUSFCANL="${launcher} -n ${npe_gausfcanl} --cpus-per-task=${NTHREADS_GAUSFCANL}" + +elif [[ "${step}" = "sfcanl" ]]; then + + nth_max=$((npe_node_max / npe_node_sfcanl)) + + export NTHREADS_CYCLE=${nth_sfcanl:-14} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + npe_sfcanl=${ntiles:-6} + export APRUN_CYCLE="${launcher} -n ${npe_sfcanl} --cpus-per-task=${NTHREADS_CYCLE}" + +elif [[ "${step}" = "eobs" ]]; then + + export MKL_NUM_THREADS=4 + export MKL_CBWR=AUTO + + nth_max=$((npe_node_max / npe_node_eobs)) + + export NTHREADS_GSI=${nth_eobs:-${nth_max}} + [[ ${NTHREADS_GSI} -gt ${nth_max} ]] && export NTHREADS_GSI=${nth_max} + export APRUN_GSI="${launcher} -n ${npe_gsi:-${npe_eobs}} --cpus-per-task=${NTHREADS_GSI}" + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + +elif [[ "${step}" = "eupd" ]]; then + + nth_max=$((npe_node_max / npe_node_eupd)) + + export NTHREADS_ENKF=${nth_eupd:-${nth_max}} + [[ ${NTHREADS_ENKF} -gt ${nth_max} ]] && export NTHREADS_ENKF=${nth_max} + export APRUN_ENKF="${launcher} -n ${npe_enkf:-${npe_eupd}} --cpus-per-task=${NTHREADS_ENKF}" + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + +elif [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then + + if [[ "${CDUMP}" =~ "gfs" ]]; then + nprocs="npe_${step}_gfs" + ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}" + else + nprocs="npe_${step}" + ppn="npe_node_${step}" + fi + (( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} )) + (( ntasks = nnodes*${!ppn} )) + # With ESMF threading, the model wants to use the full node + export APRUN_UFS="${launcher} -n ${ntasks}" + unset nprocs ppn nnodes ntasks + + +elif [[ "${step}" = "upp" ]]; then + + nth_max=$((npe_node_max / npe_node_upp)) + + export NTHREADS_UPP=${nth_upp:-1} + [[ ${NTHREADS_UPP} -gt ${nth_max} ]] && export NTHREADS_UPP=${nth_max} + export APRUN_UPP="${launcher} -n ${npe_upp} --cpus-per-task=${NTHREADS_UPP}" + +elif [[ "${step}" = "atmos_products" ]]; then + + export USE_CFP="YES" # Use MPMD for downstream product generation on Hera + +elif [[ "${step}" = "oceanice_products" ]]; then + + nth_max=$((npe_node_max / npe_node_oceanice_products)) + + export NTHREADS_OCNICEPOST=${nth_oceanice_products:-1} + export APRUN_OCNICEPOST="${launcher} -n 1 --cpus-per-task=${NTHREADS_OCNICEPOST}" + +elif [[ "${step}" = "ecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ecen)) + + export NTHREADS_ECEN=${nth_ecen:-${nth_max}} + [[ ${NTHREADS_ECEN} -gt ${nth_max} ]] && export NTHREADS_ECEN=${nth_max} + export APRUN_ECEN="${launcher} -n ${npe_ecen} --cpus-per-task=${NTHREADS_ECEN}" + + export NTHREADS_CHGRES=${nth_chgres:-12} + [[ ${NTHREADS_CHGRES} -gt ${npe_node_max} ]] && export NTHREADS_CHGRES=${npe_node_max} + export APRUN_CHGRES="time" + + export NTHREADS_CALCINC=${nth_calcinc:-1} + [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} + export APRUN_CALCINC="${launcher} -n ${npe_ecen} --cpus-per-task=${NTHREADS_CALCINC}" + +elif [[ "${step}" = "esfc" ]]; then + + nth_max=$((npe_node_max / npe_node_esfc)) + + export NTHREADS_ESFC=${nth_esfc:-${nth_max}} + [[ ${NTHREADS_ESFC} -gt ${nth_max} ]] && export NTHREADS_ESFC=${nth_max} + export APRUN_ESFC="${launcher} -n ${npe_esfc} --cpus-per-task=${NTHREADS_ESFC}" + + export NTHREADS_CYCLE=${nth_cycle:-14} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + export APRUN_CYCLE="${launcher} -n ${npe_esfc} --cpus-per-task=${NTHREADS_CYCLE}" + +elif [[ "${step}" = "epos" ]]; then + + nth_max=$((npe_node_max / npe_node_epos)) + + export NTHREADS_EPOS=${nth_epos:-${nth_max}} + [[ ${NTHREADS_EPOS} -gt ${nth_max} ]] && export NTHREADS_EPOS=${nth_max} + export APRUN_EPOS="${launcher} -n ${npe_epos} --cpus-per-task=${NTHREADS_EPOS}" + +elif [[ "${step}" = "postsnd" ]]; then + + export CFP_MP="YES" + + nth_max=$((npe_node_max / npe_node_postsnd)) + + export NTHREADS_POSTSND=${nth_postsnd:-1} + [[ ${NTHREADS_POSTSND} -gt ${nth_max} ]] && export NTHREADS_POSTSND=${nth_max} + export APRUN_POSTSND="${launcher} -n ${npe_postsnd} --cpus-per-task=${NTHREADS_POSTSND}" + + export NTHREADS_POSTSNDCFP=${nth_postsndcfp:-1} + [[ ${NTHREADS_POSTSNDCFP} -gt ${nth_max} ]] && export NTHREADS_POSTSNDCFP=${nth_max} + export APRUN_POSTSNDCFP="${launcher} -n ${npe_postsndcfp} ${mpmd_opt}" + +elif [[ "${step}" = "awips" ]]; then + + nth_max=$((npe_node_max / npe_node_awips)) + + export NTHREADS_AWIPS=${nth_awips:-2} + [[ ${NTHREADS_AWIPS} -gt ${nth_max} ]] && export NTHREADS_AWIPS=${nth_max} + export APRUN_AWIPSCFP="${launcher} -n ${npe_awips} ${mpmd_opt}" + +elif [[ "${step}" = "gempak" ]]; then + + export CFP_MP="YES" + + if [[ ${CDUMP} == "gfs" ]]; then + npe_gempak=${npe_gempak_gfs} + npe_node_gempak=${npe_node_gempak_gfs} + fi + + nth_max=$((npe_node_max / npe_node_gempak)) + + export NTHREADS_GEMPAK=${nth_gempak:-1} + [[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max} + export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}" + + +elif [[ "${step}" = "fit2obs" ]]; then + + nth_max=$((npe_node_max / npe_node_fit2obs)) + + export NTHREADS_FIT2OBS=${nth_fit2obs:-1} + [[ ${NTHREADS_FIT2OBS} -gt ${nth_max} ]] && export NTHREADS_FIT2OBS=${nth_max} + export MPIRUN="${launcher} -n ${npe_fit2obs} --cpus-per-task=${NTHREADS_FIT2OBS}" + +fi diff --git a/env/NOAACLOUD.env b/env/NOAACLOUD.env new file mode 100755 index 0000000000..f55434e8d9 --- /dev/null +++ b/env/NOAACLOUD.env @@ -0,0 +1,299 @@ +#! /usr/bin/env bash + +if [[ $# -ne 1 ]]; then + + echo "Must specify an input argument to set runtime environment variables!" + echo "argument can be any one of the following:" + echo "atmanlrun atmensanlrun aeroanlrun snowanl" + echo "anal sfcanl fcst post metp" + echo "eobs eupd ecen efcs epos" + echo "postsnd awips gempak" + exit 1 + +fi + +step=$1 + +export launcher="srun -l --export=ALL" +export mpmd_opt="--multi-prog --output=mpmd.%j.%t.out" + +#export POSTAMBLE_CMD='report-mem' + +# Configure MPI environment +#export I_MPI_ADJUST_ALLREDUCE=5 +#export MPI_BUFS_PER_PROC=2048 +#export MPI_BUFS_PER_HOST=2048 +#export MPI_GROUP_MAX=256 +#export MPI_MEMMAP_OFF=1 +#export MP_STDOUTMODE="ORDERED" +export OMP_STACKSIZE=2048000 +export NTHSTACK=1024000000 +#export LD_BIND_NOW=1 + +ulimit -s unlimited +ulimit -a + +if [[ "${step}" = "prep" ]] || [[ "${step}" = "prepbufr" ]]; then + + nth_max=$((npe_node_max / npe_node_prep)) + + export POE="NO" + export BACK="NO" + export sys_tp="HERA" + export launcher_PREP="srun" + +elif [[ "${step}" = "prepsnowobs" ]]; then + + export APRUN_CALCFIMS="${launcher} -n 1" + +elif [[ "${step}" = "waveinit" ]] || [[ "${step}" = "waveprep" ]] || [[ "${step}" = "wavepostsbs" ]] || [[ "${step}" = "wavepostbndpnt" ]] || [[ "${step}" = "wavepostbndpntbll" ]] || [[ "${step}" = "wavepostpnt" ]]; then + + export CFP_MP="YES" + if [[ "${step}" = "waveprep" ]]; then export MP_PULSE=0 ; fi + export wavempexec=${launcher} + export wave_mpmd=${mpmd_opt} + +elif [[ "${step}" = "atmanlrun" ]]; then + + nth_max=$((npe_node_max / npe_node_atmanlrun)) + + export NTHREADS_ATMANL=${nth_atmanlrun:-${nth_max}} + [[ ${NTHREADS_ATMANL} -gt ${nth_max} ]] && export NTHREADS_ATMANL=${nth_max} + export APRUN_ATMANL="${launcher} -n ${npe_atmanlrun} --cpus-per-task=${NTHREADS_ATMANL}" + +elif [[ "${step}" = "atmensanlrun" ]]; then + + nth_max=$((npe_node_max / npe_node_atmensanlrun)) + + export NTHREADS_ATMENSANL=${nth_atmensanlrun:-${nth_max}} + [[ ${NTHREADS_ATMENSANL} -gt ${nth_max} ]] && export NTHREADS_ATMENSANL=${nth_max} + export APRUN_ATMENSANL="${launcher} -n ${npe_atmensanlrun} --cpus-per-task=${NTHREADS_ATMENSANL}" + +elif [[ "${step}" = "aeroanlrun" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + + nth_max=$((npe_node_max / npe_node_aeroanlrun)) + + export NTHREADS_AEROANL=${nth_aeroanlrun:-${nth_max}} + [[ ${NTHREADS_AEROANL} -gt ${nth_max} ]] && export NTHREADS_AEROANL=${nth_max} + export APRUN_AEROANL="${launcher} -n ${npe_aeroanlrun} --cpus-per-task=${NTHREADS_AEROANL}" + +elif [[ "${step}" = "snowanl" ]]; then + + nth_max=$((npe_node_max / npe_node_snowanl)) + + export NTHREADS_SNOWANL=${nth_snowanl:-${nth_max}} + [[ ${NTHREADS_SNOWANL} -gt ${nth_max} ]] && export NTHREADS_SNOWANL=${nth_max} + export APRUN_SNOWANL="${launcher} -n ${npe_snowanl} --cpus-per-task=${NTHREADS_SNOWANL}" + + export APRUN_APPLY_INCR="${launcher} -n 6" + +elif [[ "${step}" = "ocnanalbmat" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" + +elif [[ "${step}" = "ocnanalrun" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalrun}" + +elif [[ "${step}" = "ocnanalchkpt" ]]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalchkpt}" + +elif [[ "${step}" = "ocnanalecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ocnanalecen)) + + export NTHREADS_OCNANALECEN=${nth_ocnanalecen:-${nth_max}} + [[ ${NTHREADS_OCNANALECEN} -gt ${nth_max} ]] && export NTHREADS_OCNANALECEN=${nth_max} + export APRUN_OCNANALECEN="${launcher} -n ${npe_ocnanalecen} --cpus-per-task=${NTHREADS_OCNANALECEN}" + +elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then + + export MKL_NUM_THREADS=4 + export MKL_CBWR=AUTO + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + + nth_max=$((npe_node_max / npe_node_anal)) + + export NTHREADS_GSI=${nth_anal:-${nth_max}} + [[ ${NTHREADS_GSI} -gt ${nth_max} ]] && export NTHREADS_GSI=${nth_max} + export APRUN_GSI="${launcher} -n ${npe_gsi:-${npe_anal}} --cpus-per-task=${NTHREADS_GSI}" + + export NTHREADS_CALCINC=${nth_calcinc:-1} + [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} + export APRUN_CALCINC="${launcher} \$ncmd --cpus-per-task=${NTHREADS_CALCINC}" + + export NTHREADS_CYCLE=${nth_cycle:-12} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + npe_cycle=${ntiles:-6} + export APRUN_CYCLE="${launcher} -n ${npe_cycle} --cpus-per-task=${NTHREADS_CYCLE}" + + export NTHREADS_GAUSFCANL=1 + npe_gausfcanl=${npe_gausfcanl:-1} + export APRUN_GAUSFCANL="${launcher} -n ${npe_gausfcanl} --cpus-per-task=${NTHREADS_GAUSFCANL}" + +elif [[ "${step}" = "sfcanl" ]]; then + + nth_max=$((npe_node_max / npe_node_sfcanl)) + + export NTHREADS_CYCLE=${nth_sfcanl:-14} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + npe_sfcanl=${ntiles:-6} + export APRUN_CYCLE="${launcher} -n ${npe_sfcanl} --cpus-per-task=${NTHREADS_CYCLE}" + +elif [[ "${step}" = "eobs" ]]; then + + export MKL_NUM_THREADS=4 + export MKL_CBWR=AUTO + + nth_max=$((npe_node_max / npe_node_eobs)) + + export NTHREADS_GSI=${nth_eobs:-${nth_max}} + [[ ${NTHREADS_GSI} -gt ${nth_max} ]] && export NTHREADS_GSI=${nth_max} + export APRUN_GSI="${launcher} -n ${npe_gsi:-${npe_eobs}} --cpus-per-task=${NTHREADS_GSI}" + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + +elif [[ "${step}" = "eupd" ]]; then + + nth_max=$((npe_node_max / npe_node_eupd)) + + export NTHREADS_ENKF=${nth_eupd:-${nth_max}} + [[ ${NTHREADS_ENKF} -gt ${nth_max} ]] && export NTHREADS_ENKF=${nth_max} + export APRUN_ENKF="${launcher} -n ${npe_enkf:-${npe_eupd}} --cpus-per-task=${NTHREADS_ENKF}" + + export CFP_MP=${CFP_MP:-"YES"} + export USE_CFP=${USE_CFP:-"YES"} + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + +elif [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then + + if [[ "${CDUMP}" =~ "gfs" ]]; then + nprocs="npe_${step}_gfs" + ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}" + else + nprocs="npe_${step}" + ppn="npe_node_${step}" + fi + (( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} )) + (( ntasks = nnodes*${!ppn} )) + # With ESMF threading, the model wants to use the full node + export APRUN_UFS="${launcher} -n ${ntasks}" + unset nprocs ppn nnodes ntasks + + +elif [[ "${step}" = "upp" ]]; then + + nth_max=$((npe_node_max / npe_node_upp)) + + export NTHREADS_UPP=${nth_upp:-1} + [[ ${NTHREADS_UPP} -gt ${nth_max} ]] && export NTHREADS_UPP=${nth_max} + export APRUN_UPP="${launcher} -n ${npe_upp} --cpus-per-task=${NTHREADS_UPP}" + +elif [[ "${step}" = "atmos_products" ]]; then + + export USE_CFP="YES" # Use MPMD for downstream product generation on Hera + +elif [[ "${step}" = "oceanice_products" ]]; then + + nth_max=$((npe_node_max / npe_node_oceanice_products)) + + export NTHREADS_OCNICEPOST=${nth_oceanice_products:-1} + export APRUN_OCNICEPOST="${launcher} -n 1 --cpus-per-task=${NTHREADS_OCNICEPOST}" + +elif [[ "${step}" = "ecen" ]]; then + + nth_max=$((npe_node_max / npe_node_ecen)) + + export NTHREADS_ECEN=${nth_ecen:-${nth_max}} + [[ ${NTHREADS_ECEN} -gt ${nth_max} ]] && export NTHREADS_ECEN=${nth_max} + export APRUN_ECEN="${launcher} -n ${npe_ecen} --cpus-per-task=${NTHREADS_ECEN}" + + export NTHREADS_CHGRES=${nth_chgres:-12} + [[ ${NTHREADS_CHGRES} -gt ${npe_node_max} ]] && export NTHREADS_CHGRES=${npe_node_max} + export APRUN_CHGRES="time" + + export NTHREADS_CALCINC=${nth_calcinc:-1} + [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} + export APRUN_CALCINC="${launcher} -n ${npe_ecen} --cpus-per-task=${NTHREADS_CALCINC}" + +elif [[ "${step}" = "esfc" ]]; then + + nth_max=$((npe_node_max / npe_node_esfc)) + + export NTHREADS_ESFC=${nth_esfc:-${nth_max}} + [[ ${NTHREADS_ESFC} -gt ${nth_max} ]] && export NTHREADS_ESFC=${nth_max} + export APRUN_ESFC="${launcher} -n ${npe_esfc} --cpus-per-task=${NTHREADS_ESFC}" + + export NTHREADS_CYCLE=${nth_cycle:-14} + [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} + export APRUN_CYCLE="${launcher} -n ${npe_esfc} --cpus-per-task=${NTHREADS_CYCLE}" + +elif [[ "${step}" = "epos" ]]; then + + nth_max=$((npe_node_max / npe_node_epos)) + + export NTHREADS_EPOS=${nth_epos:-${nth_max}} + [[ ${NTHREADS_EPOS} -gt ${nth_max} ]] && export NTHREADS_EPOS=${nth_max} + export APRUN_EPOS="${launcher} -n ${npe_epos} --cpus-per-task=${NTHREADS_EPOS}" + +elif [[ "${step}" = "postsnd" ]]; then + + export CFP_MP="YES" + + nth_max=$((npe_node_max / npe_node_postsnd)) + + export NTHREADS_POSTSND=${nth_postsnd:-1} + [[ ${NTHREADS_POSTSND} -gt ${nth_max} ]] && export NTHREADS_POSTSND=${nth_max} + export APRUN_POSTSND="${launcher} -n ${npe_postsnd} --cpus-per-task=${NTHREADS_POSTSND}" + + export NTHREADS_POSTSNDCFP=${nth_postsndcfp:-1} + [[ ${NTHREADS_POSTSNDCFP} -gt ${nth_max} ]] && export NTHREADS_POSTSNDCFP=${nth_max} + export APRUN_POSTSNDCFP="${launcher} -n ${npe_postsndcfp} ${mpmd_opt}" + +elif [[ "${step}" = "awips" ]]; then + + nth_max=$((npe_node_max / npe_node_awips)) + + export NTHREADS_AWIPS=${nth_awips:-2} + [[ ${NTHREADS_AWIPS} -gt ${nth_max} ]] && export NTHREADS_AWIPS=${nth_max} + export APRUN_AWIPSCFP="${launcher} -n ${npe_awips} ${mpmd_opt}" + +elif [[ "${step}" = "gempak" ]]; then + + export CFP_MP="YES" + + if [[ ${CDUMP} == "gfs" ]]; then + npe_gempak=${npe_gempak_gfs} + npe_node_gempak=${npe_node_gempak_gfs} + fi + + nth_max=$((npe_node_max / npe_node_gempak)) + + export NTHREADS_GEMPAK=${nth_gempak:-1} + [[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max} + export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}" + + +elif [[ "${step}" = "fit2obs" ]]; then + + nth_max=$((npe_node_max / npe_node_fit2obs)) + + export NTHREADS_FIT2OBS=${nth_fit2obs:-1} + [[ ${NTHREADS_FIT2OBS} -gt ${nth_max} ]] && export NTHREADS_FIT2OBS=${nth_max} + export MPIRUN="${launcher} -n ${npe_fit2obs} --cpus-per-task=${NTHREADS_FIT2OBS}" + +fi diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index 9e229de11a..12066f8fa6 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -746,7 +746,7 @@ case ${step} in ;; "atmos_products") - export wtime_atmos_products="00:15:00" + export wtime_atmos_products="01:15:00" export npe_atmos_products=24 export nth_atmos_products=1 export npe_node_atmos_products="${npe_atmos_products}" @@ -758,7 +758,7 @@ case ${step} in ;; "verfozn") - export wtime_verfozn="00:05:00" + export wtime_verfozn="00:15:00" export npe_verfozn=1 export nth_verfozn=1 export npe_node_verfozn=1 diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index 590c3aba17..87c080d34e 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -150,7 +150,8 @@ else fi ${NCP} "${EXECgfs}/${FCSTEXEC}" "${DATA}/" -${APRUN_UFS} "${DATA}/${FCSTEXEC}" 1>&1 2>&2 +#${APRUN_UFS} "${DATA}/${FCSTEXEC}" 1>&1 2>&2 +srun --mpi=pmi2 -l -n 12 -N 1 --distribution=block:block --hint=nomultithread --cpus-per-task=1 ./ufs_model.x export ERR=$? export err=${ERR} ${ERRSCRIPT} || exit "${err}" diff --git a/sorc/setup-case.sh b/sorc/setup-case.sh index f800f0735d..ba543779d7 100755 --- a/sorc/setup-case.sh +++ b/sorc/setup-case.sh @@ -1,46 +1,33 @@ #!/bin/bash #https://global-workflow.readthedocs.io/en/latest/setup.html - set -x - - cd ${GLOBALWORKFLOWHOME}/workflow +#set -x GLOBALWORKFLOWTEMP=/contrib/Wei.Huang/run GLOBALWORKFLOWHOME=/contrib/Wei.Huang/src/global-workflow-cloud - PSLOT=c48atm - CONFIGDIR=${GLOBALWORKFLOWHOME}/parm/config + EXPNAME=gfs + RES=96 + PSLOT=c${RES}atm IDATE=2024010100 EDATE=2024010100 COMROOT=${GLOBALWORKFLOWTEMP}/comroot EXPDIR=${GLOBALWORKFLOWTEMP}/expdir + CONFIGDIR=${GLOBALWORKFLOWHOME}/parm/config +#export BASE_CPLIC=${COMROOT}/${PSLOT} mkdir -p ${COMROOT} ${EXPDIR} source ${GLOBALWORKFLOWHOME}/workflow/gw_setup.sh - ${GLOBALWORKFLOWHOME}/workflow/setup_expt.py gfs forecast-only \ + ${GLOBALWORKFLOWHOME}/workflow/setup_expt.py ${EXPNAME} forecast-only \ + --app ATM \ --idate ${IDATE} \ --edate ${EDATE} \ - --app ATM \ --pslot ${PSLOT} \ --configdir ${CONFIGDIR}/gfs \ - --resdetatmos 48 \ + --resdetatmos ${RES} \ --comroot ${COMROOT} \ --expdir ${EXPDIR} -# --resdetocean 1.0 \ -#${GLOBALWORKFLOWHOME}/workflow/setup_expt.py gfs forecast-only \ -# --idate $IDATE \ -# --edate $EDATE \ -# [--app $APP] \ -# [--start $START] \ -# [--gfs_cyc $GFS_CYC] \ -# [--resdetatmos $RESDETATMOS] \ -# [--resdetocean $RESDETOCEAN] \ -# [--pslot $PSLOT] \ -# [--configdir $CONFIGDIR] \ -# [--comroot $COMROOT] \ -# [--expdir $EXPDIR] - -#${GLOBALWORKFLOWHOME}/workflow/setup_xml.py ${EXPDIR}/${PSLOT} + ${GLOBALWORKFLOWHOME}/workflow/setup_xml.py ${EXPDIR}/${PSLOT} diff --git a/ush/exglobal_prep_ocean_obs.py b/ush/exglobal_prep_ocean_obs.py new file mode 120000 index 0000000000..75133748af --- /dev/null +++ b/ush/exglobal_prep_ocean_obs.py @@ -0,0 +1 @@ +/contrib/Wei.Huang/src/global-workflow-cloud/sorc/gdas.cd/scripts/exglobal_prep_ocean_obs.py \ No newline at end of file diff --git a/workflow/hosts.py b/workflow/hosts.py index a17cd3f4a8..ea735be44b 100644 --- a/workflow/hosts.py +++ b/workflow/hosts.py @@ -15,7 +15,8 @@ class Host: """ SUPPORTED_HOSTS = ['HERA', 'ORION', 'JET', 'HERCULES', - 'WCOSS2', 'S4', 'CONTAINER', 'AWSPW'] + 'WCOSS2', 'S4', 'CONTAINER', + 'AWSPW', 'AZUREPW', 'GCPPW'] def __init__(self, host=None): diff --git a/workflow/hosts/awspw.yaml b/workflow/hosts/awspw.yaml index 252f09fab5..906dafdb86 100644 --- a/workflow/hosts/awspw.yaml +++ b/workflow/hosts/awspw.yaml @@ -1,6 +1,6 @@ BASE_GIT: '/work/noaa/global/glopara/git' DMPDIR: '/work/noaa/rstprod/dump' -BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' +BASE_CPLIC: '/contrib/Wei.Huang/run/comroot' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' diff --git a/workflow/hosts/azurepw.yaml b/workflow/hosts/azurepw.yaml index 252f09fab5..c0e45a40db 100644 --- a/workflow/hosts/azurepw.yaml +++ b/workflow/hosts/azurepw.yaml @@ -1,12 +1,12 @@ BASE_GIT: '/work/noaa/global/glopara/git' DMPDIR: '/work/noaa/rstprod/dump' -BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' +BASE_CPLIC: '/contrib/Wei.Huang/data/ICs' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' -STMP: '/contrib/${USER}/stmp' -PTMP: '/contrib/${USER}/ptmp' -NOSCRUB: '/contrib/${USER}/scrub' +STMP: '/lustre/${USER}/stmp' +PTMP: '/lustre/${USER}/ptmp' +NOSCRUB: '/lustre/${USER}/scrub' SCHEDULER: slurm ACCOUNT: $USER QUEUE: batch diff --git a/workflow/hosts/gcppw.yaml b/workflow/hosts/gcppw.yaml index 252f09fab5..c0e45a40db 100644 --- a/workflow/hosts/gcppw.yaml +++ b/workflow/hosts/gcppw.yaml @@ -1,12 +1,12 @@ BASE_GIT: '/work/noaa/global/glopara/git' DMPDIR: '/work/noaa/rstprod/dump' -BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' +BASE_CPLIC: '/contrib/Wei.Huang/data/ICs' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' -STMP: '/contrib/${USER}/stmp' -PTMP: '/contrib/${USER}/ptmp' -NOSCRUB: '/contrib/${USER}/scrub' +STMP: '/lustre/${USER}/stmp' +PTMP: '/lustre/${USER}/ptmp' +NOSCRUB: '/lustre/${USER}/scrub' SCHEDULER: slurm ACCOUNT: $USER QUEUE: batch diff --git a/workflow/hosts/noaacloud.yaml b/workflow/hosts/noaacloud.yaml new file mode 100644 index 0000000000..252f09fab5 --- /dev/null +++ b/workflow/hosts/noaacloud.yaml @@ -0,0 +1,27 @@ +BASE_GIT: '/work/noaa/global/glopara/git' +DMPDIR: '/work/noaa/rstprod/dump' +BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' +PACKAGEROOT: '/work/noaa/global/glopara/nwpara' +COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' +HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' +STMP: '/contrib/${USER}/stmp' +PTMP: '/contrib/${USER}/ptmp' +NOSCRUB: '/contrib/${USER}/scrub' +SCHEDULER: slurm +ACCOUNT: $USER +QUEUE: batch +QUEUE_SERVICE: batch +PARTITION_BATCH: compute +PARTITION_SERVICE: compute +CHGRP_RSTPROD: 'YES' +CHGRP_CMD: 'chgrp rstprod' +HPSSARCH: 'NO' +HPSS_PROJECT: epic +LOCALARCH: 'NO' +ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' +MAKE_NSSTBUFR: 'NO' +MAKE_ACFTBUFR: 'NO' +SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] +COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf +COMINnam: /work/noaa/global/glopara/data/external_gempak/nam +COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index bba7bac3dd..125910cc7e 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -24,7 +24,16 @@ def stage_ic(self): # Atm ICs if self.app_config.do_atm: + pslot = self._base['PSLOT'] prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/@Y@m@d@H/atmos" + base_cplic = f"{cpl_ic['BASE_CPLIC']}" + cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" + print('base_cplic =', base_cplic) + print('cpl_atmic =', cpl_atmic) + print('pslot =', pslot) + print('prefix =', prefix) + prefix = f"{cpl_ic['BASE_CPLIC']}/{self._base['PSLOT']}/gfs.@Y@m@d/@H/model_data/atmos/input" + print('prefix =', prefix) for file in ['gfs_ctrl.nc'] + \ [f'{datatype}_data.tile{tile}.nc' for datatype in ['gfs', 'sfc'] From 2cc1c56f492ddeffafc0ba7e1ace2f4b692c6dfc Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Sat, 27 Apr 2024 22:32:24 +0000 Subject: [PATCH 17/37] sync to ca-sfc-emc --- parm/config/gfs/config.resources | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index 9e229de11a..ee2ecff619 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -58,7 +58,15 @@ case ${machine} in ;; "AWSPW") export PARTITION_BATCH="compute" - npe_node_max=40 + npe_node_max=36 + ;; + "AZUREPW") + export PARTITION_BATCH="compute" + npe_node_max=32 + ;; + "GOOGLEPW") + export PARTITION_BATCH="compute" + npe_node_max=32 ;; "CONTAINER") npe_node_max=1 @@ -746,7 +754,7 @@ case ${step} in ;; "atmos_products") - export wtime_atmos_products="00:15:00" + export wtime_atmos_products="01:15:00" export npe_atmos_products=24 export nth_atmos_products=1 export npe_node_atmos_products="${npe_atmos_products}" From c18cc33d4a098ef6370482ea41c45721ee1740d3 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 30 Apr 2024 20:57:05 +0000 Subject: [PATCH 18/37] clean up some temporary files --- sorc/aws.env | 7 - sorc/list.module.1.6.0 | 105 ---------- sorc/mod4aws/gdas.aws.tar | Bin 20480 -> 0 bytes sorc/mod4aws/gfs_utils.aws.tar | Bin 10240 -> 0 bytes sorc/mod4aws/gsi_enkf.aws.tar | Bin 20480 -> 0 bytes sorc/mod4aws/gsi_enkf.azure.tar | Bin 20480 -> 0 bytes sorc/mod4aws/gsi_monitor.aws.tar | Bin 10240 -> 0 bytes sorc/mod4aws/gsi_utils.aws.tar | Bin 20480 -> 0 bytes sorc/mod4aws/ufs_model.aws.tar | Bin 30720 -> 0 bytes sorc/mod4aws/ufs_utils.aws.tar | Bin 10240 -> 0 bytes sorc/mod4aws/update-modulefiles.sh | 24 --- sorc/mod4aws/upp.aws.tar | Bin 10240 -> 0 bytes sorc/module.1.7.0 | 323 ----------------------------- 13 files changed, 459 deletions(-) delete mode 100644 sorc/aws.env delete mode 100644 sorc/list.module.1.6.0 delete mode 100644 sorc/mod4aws/gdas.aws.tar delete mode 100644 sorc/mod4aws/gfs_utils.aws.tar delete mode 100644 sorc/mod4aws/gsi_enkf.aws.tar delete mode 100644 sorc/mod4aws/gsi_enkf.azure.tar delete mode 100644 sorc/mod4aws/gsi_monitor.aws.tar delete mode 100644 sorc/mod4aws/gsi_utils.aws.tar delete mode 100644 sorc/mod4aws/ufs_model.aws.tar delete mode 100644 sorc/mod4aws/ufs_utils.aws.tar delete mode 100755 sorc/mod4aws/update-modulefiles.sh delete mode 100644 sorc/mod4aws/upp.aws.tar delete mode 100644 sorc/module.1.7.0 diff --git a/sorc/aws.env b/sorc/aws.env deleted file mode 100644 index 020cdaa991..0000000000 --- a/sorc/aws.env +++ /dev/null @@ -1,7 +0,0 @@ - module purge - module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core - module load stack-intel/2021.3.0 stack-intel-oneapi-mpi/2021.3.0 - spackdir=/contrib/spack-stack/spack-stack-1.6.0/spack - export PATH=${spackdir}/bin:$PATH - . ${spackdir}/share/spack/setup-env.sh - diff --git a/sorc/list.module.1.6.0 b/sorc/list.module.1.6.0 deleted file mode 100644 index 4d2238da3a..0000000000 --- a/sorc/list.module.1.6.0 +++ /dev/null @@ -1,105 +0,0 @@ -#/contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/intel-oneapi-mpi/2021.3.0/intel/2021.3.0 - atlas/0.35.1 fms/release-jcsda mapl/2.40.3-esmf-8.5.0 p4est/2.8 - base-env/1.0.0 fms/2023.04 (D) mapl/2.40.3-esmf-8.6.0 (D) parallel-netcdf/1.12.2 - cdo/2.2.0 (D) global-workflow-env/1.0.0 mct/2.11.0 parallelio/2.5.10 - cprnc/1.0.3 gmao-swell-env/1.0.0 met/11.1.0 py-h5py/3.7.0 - crtm/v2.4-jedi.2 gsi-env/1.0.0 metplus/5.1.0 py-netcdf4/1.5.8 - crtm/v2.4.1-jedi gsi-ncdiag/1.1.2 nccmp/1.9.0.1 (D) scotch/7.0.4 - crtm/2.4.0.1 (D) gsibec/1.1.3 ncio/1.1.2 soca-env/1.0.0 - eckit/1.24.5 hdf5/1.14.0 nco/5.0.6 (D) ufs-pyenv/1.0.0 - ectrans/1.2.0 jedi-base-env/1.0.0 ncview/2.1.9 (D) ufs-srw-app-env/1.0.0 - esmf/8.5.0 jedi-fv3-env/1.0.0 nemsio/2.5.4 ufs-weather-model-env/1.0.0 - esmf/8.6.0 (D) jedi-mpas-env/1.0.0 nemsiogfs/2.5.3 upp/10.0.10 - ewok-env/1.0.0 jedi-neptune-env/1.0.0 netcdf-c/4.9.2 wrf-io/1.2.0 - fckit/0.11.0 jedi-ufs-env/1.0.0 netcdf-cxx4/4.3.1 - fftw/3.3.10 jedi-um-env/1.0.0 netcdf-fortran/4.6.1 - fiat/1.2.0 madis/4.5 odc/1.4.6 - -#/contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/intel/2021.3.0 - antlr/2.7.7 py-colorama/0.4.6 py-prompt-toolkit/3.0.38 - awscli-v2/2.13.22 py-contourpy/1.0.7 py-protobuf/4.21.9 - bacio/2.4.1 py-cppy/1.2.1 py-psutil/5.9.5 - boost/1.83.0 py-cryptography/38.0.1 py-ptyprocess/0.7.0 - bufr/12.0.1 py-cycler/0.11.0 py-pyasn1/0.4.8 - c-blosc/1.21.5 py-cylc-flow/8.2.3 py-pybind11/2.11.0 - ca-certificates-mozilla/2023-05-30 py-cylc-rose/1.3.0 py-pycodestyle/2.11.0 - cmake/3.23.1 (D) py-cylc-uiserver/1.3.0 py-pycparser/2.21 - crtm-fix/2.4.0.1_emc py-cython/0.29.36 py-pygments/2.16.1 - curl/8.4.0 py-defusedxml/0.7.1 py-pyhdf/0.10.4 - ecbuild/3.7.2 py-deprecation/2.1.0 py-pyjwt/2.4.0 - eccodes/2.32.0 (D) py-distlib/0.3.7 py-pyparsing/3.0.9 - eigen/3.4.0 py-distro/1.8.0 py-pyproj/3.6.0 - fargparse/1.5.0 py-docutils/0.19 py-pyproject-metadata/0.7.1 - g2/3.4.5 py-eccodes/1.5.0 py-pyrsistent/0.19.3 - g2c/1.6.4 py-editables/0.3 py-pyshp/2.1.0 - g2tmpl/1.10.2 py-et-xmlfile/1.0.1 py-pytest/7.3.2 - gdal/3.7.3 py-exceptiongroup/1.1.1 py-python-dateutil/2.8.2 - geos/3.12.0 py-f90nml/1.4.3 py-pythran/0.12.2 - gettext/0.19.8.1 py-fastjsonschema/2.16.3 py-pytz/2023.3 - gfsio/1.4.1 py-filelock/3.12.4 py-pyxlsb/1.0.10 - gftl-shared/1.6.1 py-findlibs/0.0.2 py-pyyaml/6.0 - gftl/1.10.0 py-flit-core/3.8.0 py-pyzmq/25.0.2 - git-lfs/2.4.1 py-flit-scm/1.7.0 py-requests/2.31.0 - git/1.8.3.1 py-fonttools/4.39.4 py-ruamel-yaml-clib/0.2.7 - gmake/3.82 py-gast/0.5.3 py-ruamel-yaml/0.17.16 - graphviz/8.0.5 py-gevent/1.5.0 py-rx/1.6.1 - grib-util/1.3.0 py-gitdb/4.0.9 py-s3transfer/0.6.0 - gsl-lite/0.37.0 py-gitpython/3.1.27 py-scipy/1.11.3 - gsl/2.7.1 py-globus-cli/3.16.0 py-secretstorage/3.3.3 - hdf/4.2.15 py-globus-sdk/3.25.0 py-semantic-version/2.10.0 - help2man/1.49.3 py-graphene-tornado/2.6.1 py-send2trash/1.8.0 - ip/4.3.0 py-graphene/2.1.9 py-setuptools-rust/1.6.0 - jasper/2.0.32 py-graphql-core/2.3.2 py-setuptools-scm/7.1.0 - jedi-cmake/1.4.0 py-graphql-relay/2.0.1 py-setuptools/63.4.3 - json-c/0.16 py-graphql-ws/0.4.4 py-shapely/1.8.0 - json-schema-validator/2.1.0 py-greenlet/2.0.2 py-six/1.16.0 - json/3.10.5 py-hatch-fancy-pypi-readme/23.1.0 py-smmap/5.0.0 - krb5/1.15.1 py-hatch-nodejs-version/0.3.1 py-sniffio/1.3.0 - landsfcutil/2.4.1 py-hatch-vcs/0.3.0 py-soupsieve/2.4.1 - libbsd/0.11.7 py-hatchling/1.18.0 py-sqlalchemy/1.4.45 - libjpeg/2.1.0 py-identify/2.5.24 py-terminado/0.17.1 - libmd/1.0.4 py-idna/3.4 py-tinycss2/1.2.1 - libpng/1.6.37 py-importlib-metadata/6.6.0 py-tomli/2.0.1 - libsodium/1.0.18 py-iniconfig/2.0.0 py-tomlkit/0.12.1 - libtirpc/1.3.3 py-jaraco-classes/3.2.3 py-tornado/6.3.3 - libxaw/1.0.13 py-jeepney/0.8.0 py-traitlets/5.9.0 - libxcrypt/4.4.35 py-jinja2/3.0.3 py-trove-classifiers/2023.8.7 - libxmu/1.1.4 py-jmespath/1.0.1 py-typing-extensions/4.8.0 - libxpm/3.5.12 py-jsonschema/4.17.3 py-urllib3/1.26.12 - libxt/1.1.5 py-jupyter-client/8.2.0 py-urwid/2.1.2 - libyaml/0.2.5 py-jupyter-core/5.3.0 py-versioneer/0.29 - libzmq/4.3.5 py-jupyter-packaging/0.12.0 py-virtualenv/20.24.5 - meson/1.2.2 py-jupyter-server/1.21.0 py-wcwidth/0.2.7 - nghttp2/1.57.0 py-jupyterlab-pygments/0.2.2 py-webencodings/0.5.1 - ninja/1.11.1 py-keyring/23.13.1 py-websocket-client/1.6.3 - openblas/0.3.24 py-kiwisolver/1.4.5 py-werkzeug/0.15.3 - openjpeg/2.3.1 py-ldap3/2.9.1 py-wheel/0.41.2 - patchelf/0.18.0 py-markupsafe/2.1.3 py-xarray/2023.7.0 - pcre2/10.42 py-matplotlib/3.7.3 py-xlrd/2.0.1 - pkg-config/0.27.1 py-meson-python/0.13.1 py-xlsxwriter/3.1.7 - prod_util/2.1.1 py-metomi-isodatetime/3.1.0 py-xlwt/1.3.0 - proj/9.2.1 py-metomi-rose/2.1.0 py-zipp/3.17.0 - py-aiofiles/0.7.0 py-mistune/2.0.5 python/3.10.13 - py-aniso8601/7.0.0 py-more-itertools/9.1.0 qhull/2020.2 - py-ansimarkup/2.1.0 py-nbclient/0.8.0 re2c/2.2 - py-anyio/3.6.2 py-nbconvert/7.4.0 rust-bootstrap/1.70.0 - py-argon2-cffi-bindings/21.2.0 py-nbformat/5.8.0 sed/4.2.2 - py-argon2-cffi/21.3.0 py-nodeenv/1.8.0 sfcio/1.4.1 - py-async-timeout/4.0.2 py-numexpr/2.8.4 shumlib/macos_clang_linux_intel_port - py-attrs/21.4.0 py-numpy/1.22.3 sigio/2.3.2 - py-awscrt/0.16.16 py-openpyxl/3.1.2 snappy/1.1.10 - py-beautifulsoup4/4.12.2 py-packaging/23.1 sp/2.5.0 - py-beniget/0.4.1 py-pandas/1.5.3 sqlite/3.43.2 - py-bleach/6.0.0 py-pandocfilters/1.5.0 stack-intel-oneapi-mpi/2021.3.0 (L) - py-boto3/1.26.26 py-pathspec/0.11.1 stack-python/3.10.13 - py-botocore/1.29.84 py-pillow/10.0.0 swig/4.1.1 - py-bottleneck/1.3.7 py-pip/23.1.2 udunits/2.2.28 (D) - py-calver/2022.6.26 py-pkgconfig/1.5.5 util-linux-uuid/2.38.1 - py-cartopy/0.21.1 py-platformdirs/3.10.0 util-macros/1.19.3 - py-certifi/2023.7.22 py-pluggy/1.0.0 w3emc/2.10.0 - py-cffi/1.15.1 py-ply/3.11 w3nco/2.4.1 - py-cfgv/3.4.0 py-poetry-core/1.6.1 wget/1.14 - py-cftime/1.0.3.4 py-pre-commit/3.3.3 wgrib2/2.0.8 (D) - py-charset-normalizer/3.3.0 py-prometheus-client/0.17.0 zlib/1.2.13 - py-click/8.1.7 py-promise/2.3 zstd/1.5.2 - diff --git a/sorc/mod4aws/gdas.aws.tar b/sorc/mod4aws/gdas.aws.tar deleted file mode 100644 index dc0d1ed7a8d52597cad8ef0c20a6bc302d72717b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 Zln9gvln9gvln9gvln9gvln87?;J?C8;uZh^ diff --git a/sorc/mod4aws/gsi_enkf.azure.tar b/sorc/mod4aws/gsi_enkf.azure.tar deleted file mode 100644 index a4d9c996aff71e040df2c6c38cb7d8a2aa73abac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 WI|=M0u#><}0y_!pB=852!2bi<6gN!( diff --git a/sorc/mod4aws/ufs_model.aws.tar b/sorc/mod4aws/ufs_model.aws.tar deleted file mode 100644 index c4c064fd935b238c617836250039b6589cda7395..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30720 zcmeHP`*Yez^538RSIm*r95*BtKRY!ymd}t=DRn-^S4H>=Zl4jlbrEIA-%WT$L)mpi2RZF67 zbj@@0N}M$=62fSd#2VOeQ1xxq%AJmQo6e@Q`ygWE1c80yBr8VOs9EK9yV+)x!t_UD zcj!#SyP|k2+(3kkCieFnukQ|$AaRIUkThDYax{FsS-Pl|t(MU}7q7ock~+VAJVbb^ff1_iG+`yqV77>|YR^;rbI=Xg`m98X=}3pPI5-YfCm z9=d&DkHh)xr3+{*n#= zQynfU9qX)V8tty^w}vDMqWbV-(uP^nhrm>i^AA`xp6|h6s*71Q%SX?5VKCL@^72K} z0+{O1={C)Ct9AZCJ(e|$bf$jq)()m_Pqc0y0=E~0G}gVSVMrCD;qs-~=$ZUT-+- zJ4s$AGrbU*g#{u=tHm?cA?i#To{oJmBhW}wVGabXj=`h}=zSpuM4G$=gvJ<<(p(J= znC2=SgJrGNAk#D|HO8Q%rs`mT;>H-5)XoJkZj6DEM(RL3CK_WvnieWp3^{L%!J4c- zI!eHDV;qbXa}kUhV_-_NG&o?BjRd!GOG9?;bmk8GTeD@fXcqFPRkfP&q**g7C0H_W zy&J5#;|Zoj0Q-t%+@0Qz9GdN}C;AUPAJd2|@c>JJ7|R7Dt59^R^-}$! z)~ya&P0Ts%wV(~C2Ws5ST`*vRjbMJJJ$svYAL-d&|` zaPP%_B{z^(6n=kS)QOz&@F8XN`#L3oNZ$LC&-TQh;n8}I(+BXtp9ljKms=mq{e-AA z;W5fVtBqQ<0gti?7lJ-(o`CBOT@T9S2ch6uV%C|_ftSo3SDSndOtD#SzOOdUtVTH; zadpR$e+LBy1JKRhTuANm8NvWK)5=ya3Q2hyZRZAhVh@F8tDA77W9DYHvNgw!2e9ew z#IgGzL6O}u+Hly)H4xr4OOLX6;Z-d!XhwX2V&}v z#n8C}mj1-Ob0!K4n_J6hR%#cl^lNyxrz1ZY-#QZ~<@X%h6NBOGi|EOi!AYsenUl%DwBr5v8Bf|pc3&KvOGYmw-?>(ObwdCnVwN|n&tKD;}TB(YJ zw0sS-+@keC+{4U>s+Xz^-J9E~sP;%UNkHz4p?f{CCl7cUWS0U2e+imM`yu9b`PYkT zyDZTf*9g`L6uoF16}Aj`Vf&kKIHm|hoSI^@5l2~Vbjxj8Fql*ocPknRsTa6?2eaJ~ z&KIXQo6-{dh8I*!f8h@hCMl{FUW&eSq%mD%Q4qf@gphDK#vFfIlza}s`VjTRy`D|= z(S<*oGEo@((rk7*`7}QcvJr7+rR)Tm!=x@c7HRa1{L=a2pmwc#u&J??K)O~b7KrlH@*@WU|M4gShJ+c^#-uk z7zfsjY=l{}yfNUIO=W0cjy1->l^xZ%1GsFA!7W-$mf1pMtb=YPBcip&7;wxOhD7U) zacJEbMbKI!LC^J!{@85l>lNp|U@250QO>XKhgO-Lv$-?4@o_Pk8GAVKrS;RsPn4YN z*-b(@-kok6?wLpssndtCLrdT_hc;6mh98jW$bpQeHZ3U2c-sik?Z9~vW(BL^4zr-4 zt&}l)Xv|h5Z6o8naS>8@SHV&T{^1<<9k1sidAMl>iLH)EMQf`lo}rvz^blik%3GZ; zxX}U{1C!pUI7lC-4M&-Y>C(ML_J`LD2rJR4p?m!58`+7$Wp zVY(100xW&>Y&A8CP{s7=+U~hN5F9|E=9(G<3C6fz&<0pg$@_vc>H#E&ofQp7EG5`_ znBMwcT$N=TwvCRWUOMSjZ|Y3oisGud85MRhWmn34%U@Rcs%&0#DMn{&vFZ6wt4t7O zWG$7D+4wSphdj^0(UT@!3uf1S?6dU{5k4fBiO_t*ZE$Tw5$k+cC=ef!IejDQEu-^) zpSB?dpkK*8w?~S+6@GuMZ-XHukykRr?OSC?rmMHX(>&+Bk~KN-meuppzH_u41@RH- zj;&}U@Di8HCX$UvWGu+r>LC0^wlcw4Ny`aFgGD!sjW`l2%C1r;5~gXiL_&rQ1hLpl z#_}A!&Vi6T3eo6$(iV2#t-gcH7-=dSL2RYnL`DT{6ff(9y}lR$f;G+&5u5ahvEl@` z7|0s;VgDEDYFsp1CZ$|%HDV(Fa}BDOA&KmvBqtIQ4{3pq^F=(Gkmf)dT`v{Vy?tj< zCe89@{C%3geDT{q@pWjDIBve!0jKwTwZW8!A-Ybz3t{JJG;&v*Vb zwoCTZj9d4Ws=*)?#62Z+}mXuW}ex=wpY3a2~m0m}T+$?=mA3wVXVI z``ybZB-&s9z1rxY01Y{CN`}*TC!p>fl3Z9uwFDdK&C|9^14gDjz8-7tXJ5;cu*B_u zj-E#@y$7Hvt^4}+J|BT*JrH_Nog zD|_ms#fQ;pR34sE3+$_V~BU%@ywW>)QY9}Xgi@)?>^byGcl#eqW+dbLo$v6)J z)dHj?Ne=D`*k@cRi4`6pFcoDFi#$A@8Y@&y=O`RNm!9q>EKxM_N9;o^vAlvFLR3VD z7gHmV>$F7P$4kaz;38kGI;{(9^z#-)87$Oi6+}Vm6vZ5yCGqr7@c7cl#h8ldu;868 zv8q2XIY5jcs>@l+Yj5O?UoZ*TJyC%L|1Q?c9929`j6@!zMt296#ee*$6TCJukxWtP=335z#ucaX(;*ThF&|N2}Md6|+SmD-N;O z7mrq+d<5Yb5m|~ILV*ou3LH`7%{95oC|BPb-Lgo${<;)cQoik3X@ng$rQBMc4lBI2 zU%V9uXTDub;-NJ&ss|xYNBTJA2`xTd1&U5j2yG4|$aVQ@*LaU;N3l%mS7dh320dKNvw9m@euz>g?5379DYEm6B+ETK}Bf5pM znKoQLQ9?NroWCxeQGfzQ_o=1~Wj~Ae$yTcYL*(SCtr%bdaaiIXb&ot&t(L(;FgS#NIA1Fd|K<{NAWs2^Kb%2 zq=J1>EQ*pnxkvHgr%!*Q`YjJ@E|qNh-ta+C1cs0v<(gO@i?5TtKKzO#!f)=6pEm?b z@s~&qM9L$tySL|j8B^_> zX%?|inYC?N?Xw#+NVAoeFiR$PRc`HMKlA3NKI~E9^TTC%c?4w>Az;QpFvW@OiV*H4fFGWCbe}wbFKkUx` zZtfAR#dLp*^64OnqO_nlak=35L|mX^h$lZb$nM;U?~Ul(s8kJAo{Iz;Rqfq6!*TNC z$C{7gT`Y0}*%pLNi;$l_0d(l2CZ1ew3Tf!zt0;=ESl+*WOz?i{C-TU{Pf;X(N*|@O ziN`k*1jR^+7zBDJPyvOase=gUW-uMbp#YTQB9<6TD!9cV%f13-n4@$q0{P9x!M2Hx zh{nPp<3c`y8QJ6Ip-^%IpcJu_ij$8RWsI{88V73B!f}N1wm&%3Aq24q>QTlM!FbNJ z*B_*Mb2z{pq~E6JlqnF@!_(1g0%Q=K!El9l{SXg8sNg6!ABl^I!rS~<80J8eQ*SaI z#US{ZP}z|Nbd!&RFgXPP9Y##u1gk)Zt2qeA+c8AU z6jeDzXgp_x^IJNQ63$%D0vE?!bO_0KL3;|p05w>PAUUu-SF`)cAQgvUwxMVdE&qbv z#E?jpKwVaWVBiAaF$)*1xi{jKKDYWl<_+B>5A2OV_Q%EvCJU!q_;4EhxUua{cz-6G zk00Gn`#6_?e#jN`WX0?cdsytr6;UyTP3xQV4Jw$D5_KY#cq0;4VjpGF_@?tS3WeQI zj_v8~&%Wy^SU*VPI2X_+7g6sE(7He+pR7hci;n2;oPo7V_;=k{wEsvW+P$Ga>!+y< zV7L)S;2Ham`0tqGKiL0#?ilX{$sHdT3OoD%T@Ut!os|KHb+-F~X2MaV$?wR(p)*)& zT1b$VHbhIEx1%$UL59jXhkI<@@rn@Mgv9Zb>1{G0_jl>V8MHXi5idG;lL_eXN(!03 z-e>)HDo3_HgEaw8sD~5fPCtb|GAd`6(UsK1FUJ7N^4GWzO*D3Zee8t`Q$9* z*j_NN^OZ@0^G5v;#4dEk8WawNsBq0l>dx;ND1{WAJ$5P5oR6u{(2yL-Eshp7s)1l{ z@P3xWB0mfUtPwaNr01JV%sqS-pHfxP z{vIjgtUKI<^%O(M46+%bm4f)lK~6TICc(iIq<1=H6bQKid>FjrLv#){!$W2kOfsB@ z*aQdnJwFKY;@h`{31H)`BTs1(&s)>(O=kf)NhSa0-uL_eQ4Y1aO=s5SlCoxg_u-^c z#(llwHB6(8bA$}`A7^U~7jQX8W4t)z2{yWhX^M`5+Yldky}-s6+8f(>YN0(d%Eot6 z&DN%8d-N)`z(v030Z9sE9cdpznF2~XqWCv0L>G zpRzM1jPExTWJT*nyF@QNt4B2rHqJj&6o_RO6ZN#Z9N2 zUTc&Rdt$Z+2DI(IxXJI7I;JQ~C`SJMW?v&W-B(U&0Dp7^?b7U%K-B|aWeA3|$ta^p z&*YKT!zoAZy@tyuK3SN13aN4~v|+H(B{m(-GJ!ERC_t7GDVUI9E1aWws}?>+0DFu^ zZDn>^hWU%tZZ^Bc7gEcixsHN@_u^~1p1hu;qupYL!W$X1R%yr>M~0&air?wUE%C-t zX-0;wOY>4=;m%=vL+W^5<)K} z)8B}y-tiS~8ilXg3SVosIa+p@{(K4O`JW)Ic91rd_Yb*wX8vpW|D)pr)PiCEKYw(z z%m0M(+vfK!|G&%s@ACiKoMHdnxaImk-xu1*hVKH)&#eDi{a3jDA7--$yY+uTj9dA0 z^={m*{%cqNMK6(x)gEyflwQEJtN)S-JzQBfyZWzP{nu6&=^fIY1a=bGNnj^|odk9g Y*hyd~ft>_)64*&#CxM*=zEcAK2J#t9Q~&?~ diff --git a/sorc/mod4aws/ufs_utils.aws.tar b/sorc/mod4aws/ufs_utils.aws.tar deleted file mode 100644 index c37fb6a82420980a50884519b4a04669e29cff06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 zcmeHKZBOII7Ur{m#i>CRwAe{V0&Oa;1R=2LWeFnT?p>`=POAv9jg9A_N>6BDsf_>oex6V?@}k2tn4lxqIs%BymD;VUBBqw4exrr!Rg+< z>yf#)4=DXAmJ`A-F>@_jm2ir|QFtNeBAh_uo@A_sF_EFodtf z*BBwx02_|LIBeU{cmyv?~y6$MTrapWuP@CB01grBU`jA z^XC5g+I%tGa26qTF}8{&Hf4|qAG^07hVA|>_OeCGdLa~4@1obr$_ka_1SDsXFJ>Z0 z96pT3aX6#SZMUs!z{T-WCD_gK&q=+%?9+$$MNvLucV-)gaHk=exq-BoEzDe88b^D@ zve?RPqrGea=d)@s3ka?S6A4Y9>>o_}@&ysh!SxQJ7b?BAR4Hkot8tvyH&V;bKR)r| zl{92spqrqgd(AFFjbiy1RXp)n2~ywBajd7JU`o_CyeBH0$x{bBb|(lO2mO$G=5l=# z?Ji|!F44H$kCcQoLNAF&sU$ad7@&?g6FN<0(_5fW_p>5ISTIGP|7}>jipn{sDfGxo z0TR+QoNFuOu3NhBD@VB3 z?7Ce=t`|}Z%P4H+N^341X+kk)i1O6G(nrUay4pfBFRZL~?L{A~6<8iM zA6*9oUB*ua^T#fA0+k~6oOzXwGDU@CJ_@8kppyfc;3AN}3l9yMRo-`GF+(nKj_XE| z6-}R&bX6t)T`5CNsf!ob`-w~zN9uDnglXiVKypjlq3`3?p!56g^+icz?e}N@?hG%l z&#wAEo|y65)x0s zO%rE?`|OZ>If|WF@={-1bc-r+aAlz!$8uu4VNmy`KRCO-9^T${F1!DQQLBQMwG_^m z(v3ptyn6$JUwSJOv@A9)^JSn-pA^0zwFBf7g^ybkTZBkD=%sm}D+etbIdOT9=EFe7 zyL5vK79CPv_~beP@Eq3_N@XPRzD?sKBIb@m&>tmftfvOOo1yJn7kS`2{XzHU>a=%x zc~D&3Y!{$l7`VfA!`PF-#DB&V0JB5%jh+mO6PW?POiPE76N?u0V!mB?u6PG3u{UGC zYCu^DnL#ZJ7G=T1JOj!?|6!8RqXpuVk49jiC=MT`C-Qvf#X`cK*htjXW&gBy^94|v zQ}t8@8L3FPARU)@FhLJt7UDT0x3PCS=p&t3vG4;fQf|jPVKED!^jypY3A14!=2^`T zQ3AAoA;wPXC#^zZW&6O$JkE-xT;u*;DzEH1!d=euQQjQw>(1E?)IN6l<_n$vk3Kzr zOa>3QNeClNJR>U}qvcCP)0ln6fJ9crL{N%x6+t~~_9dZVxHHUnIBlsrUdl)I|7C?x z(4G1P>$e5`uf20b=_efVpU&NRuirT>PtFC1A?)IVa*jttU9PeGhpa9&4x5-Op3oIl z;~Sat-*RK=w#g@uazwE8t!DeF^VZ8>Dd(@e<3{7H@4q^>%kRJ13BC)DsaJ#?31W}QtlPC?yJi}E#q38;GW|7_L9S*VQmK9bz-itLCr3}nM@Za6zR0!*f-U5wT-q?Y6u4W3swFl5A@X+6dW#7u2Ewvd*dHSNX* zR;C8Lg+61d4ZAYQ64s_&itWnu7-L=+Gk4v+QdlC@s;{`H)qqy2Yoo@mBv2K?9I*Ck z0<{)fS7>WIIoXVxDukthb^B-|Y+8%)3T?*w9dqTnzlE%{?#QmyH{e(cXoWI^MZshp zD;Jee$9DZ>0}4pc16Z!jSW|D@Tn8&;B^vT@yn)7Az$%m(ED(w7jo0B8(j2gXFSkt^ z$<%kvL1hx^_MqnF(Z3MOv*hb)6h`^t?akRkz diff --git a/sorc/mod4aws/update-modulefiles.sh b/sorc/mod4aws/update-modulefiles.sh deleted file mode 100755 index 9d20ae9659..0000000000 --- a/sorc/mod4aws/update-modulefiles.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -x - -#machine=azure -machine=aws - -srcdir=/contrib/Wei.Huang/debug/global-workflow-cloud - -for item in gdas gfs_utils gsi_enkf gsi_monitor gsi_utils \ - ufs_model ufs_utils upp verif-global -do - tf=${item}.${machine}.tar - if [ -f ${srcdir}/sorc/mods4${machine}/${tf} ] - then - dir=${srcdir}/sorc/${item}.fd - if [ -d ${dir} ] - then - cd ${dir} - tar xvf ../mods4${machine}/${tf} - fi - fi -done - diff --git a/sorc/mod4aws/upp.aws.tar b/sorc/mod4aws/upp.aws.tar deleted file mode 100644 index 864c459bfb7fa0e3a008b1f57d4f87a9b1916aa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 zcmeIxPixyS6aa9a{V9Y_4%D(7J1Go$DCtHS9m`>5g;IhlD~*UO3H@om{uIw?Lq-mR zUII@S+fPsLNk8P?bWw@5RKi!ozbSfOwVcE&g%3WMqM{e zR=0CHr!A#*lhJy1+0YEp&)dT3O3?@A5XycFNp2(4FDFv%TlB)6m^|O`Mkrf6KIV6Z zbx7z}>5T4$4k#G(9Hr{e{c?$nMjPQ+{`54-^V~XNh3;0Cg-wBf{Jgop`?|dTb&D?$ zuDH>`$>+*j#AsZ**_Rex|F7sd&k8V*HPQU{?{ zufkm!PhLbws|tKHg(t{3gs16(k%my5t8}blx6kiJ>M^|>Dy7XHEuMU|>a9G{X`K0w zMy1h$Sy`r)A3eu1yOz9XTXEd&JvcUM$h0B#Kj#_JQq}kLUBThZI9j{nrtgg&2uH8Q z0$u;QplS^ZhAc z=O6$AAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w8cE G0)GIJI_4b! diff --git a/sorc/module.1.7.0 b/sorc/module.1.7.0 deleted file mode 100644 index 301a02fa27..0000000000 --- a/sorc/module.1.7.0 +++ /dev/null @@ -1,323 +0,0 @@ - - -antlr/2.7.7 -atlas/0.36.0 -awscli-v2/2.13.22 -bacio/2.4.1 -base-env/1.0.0 -boost/1.84.0 -bufr/12.0.1 -ca-certificates-mozilla/2023-05-30 -c-blosc/1.21.5 -cdo/2.2.0 -cmake/3.23.1 -#/contrib/spack-stack/spack-stack-1.7.0/envs/ue-intel/install/modulefiles/intel/2021.3.0 -#/contrib/spack-stack/spack-stack-1.7.0/envs/ue-intel/install/modulefiles/intel-oneapi-mpi/2021.3.0-2tx7j7u/intel/2021.3.0 -cprnc/1.0.3 -crtm/2.4.0.1 -crtm-fix/2.4.0.1_emc -crtm/v2.4.1-jedi -crtm/v2.4-jedi.2 -curl/8.4.0 -ecbuild/3.7.2 -eccodes/2.33.0 -eckit/1.24.5 -ectrans/1.2.0 -eigen/3.4.0 -esmf/8.6.0 -ewok-env/1.0.0 -fargparse/1.6.0 -fckit/0.11.0 -fftw/3.3.10 -fiat/1.2.0 -fms/2023.04 -fms/release-jcsda -g2/3.4.9 -g2c/1.6.4 -g2tmpl/1.10.2 -gdal/3.8.3 -geos/3.12.1 -geos-gcm-env/1.0.0 -gettext/0.19.8.1 -gfsio/1.4.1 -gftl/1.11.0 -gftl-shared/1.6.1 -git/1.8.3.1 -git-lfs/2.4.1 -global-workflow-env/1.0.0 -gmake/3.82 -gmao-swell-env/1.0.0 -graphviz/8.0.5 -grib-util/1.4.0 -gsibec/1.2.1 -gsi-env/1.0.0 -gsi-ncdiag/1.1.2 -gsl/2.7.1 -gsl-lite/0.37.0 -hdf/4.2.15 -hdf5/1.14.3 -help2man/1.49.3 -ip/5.0.0 -jasper/2.0.32 -jedi-base-env/1.0.0 -jedi-cmake/1.4.0 -jedi-fv3-env/1.0.0 -jedi-geos-env/1.0.0 -jedi-mpas-env/1.0.0 -jedi-neptune-env/1.0.0 -jedi-ufs-env/1.0.0 -jedi-um-env/1.0.0 -json/3.10.5 -json-c/0.16 -json-schema-validator/2.1.0 -krb5/1.15.1 -landsfcutil/2.4.1 -libbsd/0.11.7 -libjpeg/2.1.0 -libmd/1.0.4 -libpng/1.6.37 -libsodium/1.0.18 -libtirpc/1.3.3 -libxaw/1.0.15 -libxcrypt/4.4.35 -libxmu/1.1.4 -libxpm/3.5.17 -libxt/1.3.0 -libyaml/0.2.5 -libzmq/4.3.5 -madis/4.5 -mapl/2.40.3-esmf-8.6.0 -mct/2.11.0 -mepo/1.51.1 -meson/1.2.2 -met/11.1.0 -metis/5.1.0 -metplus/5.1.0 -nccmp/1.9.0.1 -ncio/1.1.2 -nco/5.1.6 -ncview/2.1.9 -nemsio/2.5.4 -nemsiogfs/2.5.3 -netcdf-c/4.9.2 -netcdf-cxx4/4.3.1 -netcdf-fortran/4.6.1 -netlib-lapack/3.11.0 -nghttp2/1.57.0 -ninja/1.11.1 -odc/1.4.6 -openblas/0.3.24 -openjpeg/2.3.1 -p4est/2.8 -parallelio/2.6.2 -parallel-netcdf/1.12.3 -pcre2/10.42 -pflogger/1.12.0 -pkg-config/0.27.1 -prod_util/2.1.1 -proj/9.2.1 -py-aiofiles/0.7.0 -py-aniso8601/7.0.0 -py-ansimarkup/2.1.0 -py-anyio/3.6.2 -py-argon2-cffi/21.3.0 -py-argon2-cffi-bindings/21.2.0 -py-async-timeout/4.0.2 -py-attrs/21.4.0 -py-awscrt/0.16.16 -py-beautifulsoup4/4.12.2 -py-beniget/0.4.1 -py-bleach/6.0.0 -py-boto3/1.26.26 -py-botocore/1.29.84 -py-bottleneck/1.3.7 -py-calver/2022.6.26 -py-cartopy/0.21.1 -py-certifi/2023.7.22 -py-cffi/1.15.1 -py-cfgv/3.4.0 -py-cftime/1.0.3.4 -py-charset-normalizer/3.3.0 -py-click/8.1.7 -py-colorama/0.4.6 -py-contourpy/1.0.7 -py-cppy/1.2.1 -py-cryptography/38.0.1 -py-cycler/0.11.0 -py-cylc-flow/8.2.3 -py-cylc-rose/1.3.0 -py-cylc-uiserver/1.3.0 -py-cython/0.29.36 -py-defusedxml/0.7.1 -py-deprecation/2.1.0 -py-distlib/0.3.7 -py-distro/1.8.0 -py-docutils/0.19 -py-eccodes/1.5.0 -py-editables/0.3 -py-et-xmlfile/1.0.1 -py-exceptiongroup/1.1.1 -py-f90nml/1.4.3 -py-fastjsonschema/2.16.3 -py-filelock/3.12.4 -py-findlibs/0.0.2 -py-flit-core/3.8.0 -py-flit-scm/1.7.0 -py-fonttools/4.39.4 -py-gast/0.5.3 -py-gevent/1.5.0 -py-gitdb/4.0.9 -py-gitpython/3.1.40 -py-globus-cli/3.16.0 -py-globus-sdk/3.25.0 -py-graphene/2.1.9 -py-graphene-tornado/2.6.1 -py-graphql-core/2.3.2 -py-graphql-relay/2.0.1 -py-graphql-ws/0.4.4 -py-greenlet/2.0.2 -py-h5py/3.8.0 -py-hatch-fancy-pypi-readme/23.1.0 -py-hatchling/1.21.0 -py-hatch-nodejs-version/0.3.1 -py-hatch-vcs/0.3.0 -py-identify/2.5.24 -py-idna/3.4 -py-importlib-metadata/6.6.0 -py-iniconfig/2.0.0 -py-jaraco-classes/3.2.3 -py-jeepney/0.8.0 -py-jinja2/3.0.3 -py-jmespath/1.0.1 -py-jsonschema/4.17.3 -py-jupyter-client/8.2.0 -py-jupyter-core/5.3.0 -py-jupyterlab-pygments/0.2.2 -py-jupyter-packaging/0.12.0 -py-jupyter-server/1.21.0 -py-keyring/23.13.1 -py-kiwisolver/1.4.5 -py-ldap3/2.9.1 -py-markupsafe/2.1.3 -py-matplotlib/3.7.4 -py-meson-python/0.13.1 -py-metomi-isodatetime/3.1.0 -py-metomi-rose/2.1.0 -py-mistune/2.0.5 -py-more-itertools/9.1.0 -py-nbclient/0.8.0 -py-nbconvert/7.14.1 -py-nbformat/5.8.0 -py-netcdf4/1.5.8 -py-nodeenv/1.8.0 -py-numexpr/2.8.4 -py-numpy/1.22.3 -py-openpyxl/3.1.2 -py-packaging/23.1 -py-pandas/1.5.3 -py-pandocfilters/1.5.0 -py-pathspec/0.11.1 -py-pillow/10.0.0 -py-pip/23.1.2 -py-pkgconfig/1.5.5 -py-platformdirs/3.10.0 -py-pluggy/1.0.0 -py-ply/3.11 -py-poetry-core/1.7.0 -py-pre-commit/3.5.0 -py-prometheus-client/0.17.0 -py-promise/2.3 -py-prompt-toolkit/3.0.38 -py-protobuf/4.21.9 -py-psutil/5.9.5 -py-ptyprocess/0.7.0 -py-pyasn1/0.4.8 -py-pybind11/2.11.0 -py-pycodestyle/2.11.0 -py-pycparser/2.21 -py-pygments/2.16.1 -py-pyhdf/0.10.4 -py-pyjwt/2.4.0 -py-pyparsing/3.0.9 -py-pyproj/3.6.0 -py-pyproject-metadata/0.7.1 -py-pyrsistent/0.19.3 -py-pyshp/2.1.0 -py-pytest/7.3.2 -py-python-dateutil/2.8.2 -py-pythran/0.12.2 -py-pytz/2023.3 -py-pyxlsb/1.0.10 -py-pyyaml/6.0 -py-pyzmq/25.0.2 -py-requests/2.31.0 -py-ruamel-yaml/0.17.16 -py-ruamel-yaml-clib/0.2.7 -py-rx/1.6.1 -py-s3transfer/0.6.0 -py-scipy/1.11.4 -py-secretstorage/3.3.3 -py-semantic-version/2.10.0 -py-send2trash/1.8.0 -py-setuptools/63.4.3 -py-setuptools-rust/1.6.0 -py-setuptools-scm/7.1.0 -py-shapely/1.8.0 -py-six/1.16.0 -py-smmap/5.0.0 -py-sniffio/1.3.0 -py-soupsieve/2.4.1 -py-sqlalchemy/1.4.49 -py-terminado/0.17.1 -py-terminado/0.17.2 -python/3.10.13 -py-tinycss2/1.2.1 -py-tomli/2.0.1 -py-tomlkit/0.12.1 -py-tornado/6.3.3 -py-traitlets/5.9.0 -py-trove-classifiers/2023.8.7 -py-typing-extensions/4.8.0 -py-urllib3/1.26.12 -py-urwid/2.1.2 -py-versioneer/0.29 -py-virtualenv/20.24.5 -py-wcwidth/0.2.7 -py-webencodings/0.5.1 -py-websocket-client/1.6.3 -py-werkzeug/0.15.3 -py-wheel/0.41.2 -py-xarray/2023.7.0 -py-xlrd/2.0.1 -py-xlsxwriter/3.1.7 -py-xlwt/1.3.0 -py-zipp/3.17.0 -qhull/2020.2 -re2c/2.2 -rust-bootstrap/1.75.0 -scotch/7.0.4 -sed/4.2.2 -sfcio/1.4.1 -shumlib/macos_clang_linux_intel_port -sigio/2.3.2 -snappy/1.1.10 -soca-env/1.0.0 -sp/2.5.0 -sqlite/3.43.2 -stack-intel-oneapi-mpi/2021.3.0 -stack-python/3.10.13 -swig/4.1.1 -udunits/2.2.28 -ufs-pyenv/1.0.0 -ufs-srw-app-env/1.0.0 -ufs-weather-model-env/1.0.0 -util-linux-uuid/2.38.1 -util-macros/1.19.3 -w3emc/2.10.0 -w3nco/2.4.1 -wget/1.14 -wgrib2/2.0.8 -wrf-io/1.2.0 -yafyaml/1.2.0 -zlib-ng/2.1.5 -zstd/1.5.2 From bd8ebd840efbb70b5a1fbfffc39c58cbf81d699c Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Wed, 1 May 2024 03:10:00 +0000 Subject: [PATCH 19/37] clean up few unused files --- env/AWSPW.env | 4 +- env/{GCPPW.env => GOOGLEPW.env} | 0 env/NOAACLOUD.env | 299 ------------------- jobs/rocoto/stage_ic.sh | 8 +- parm/config/gfs/config.resources | 6 +- scripts/exglobal_forecast.sh | 5 +- sorc/build_all.sh | 2 +- sorc/build_ufs.sh | 22 +- sorc/build_ww3prepost.sh | 4 - sorc/mods4aws/gdas.aws.tar | Bin 20480 -> 0 bytes sorc/mods4aws/gfs_utils.aws.tar | Bin 10240 -> 0 bytes sorc/mods4aws/gsi_enkf.aws.tar | Bin 20480 -> 0 bytes sorc/mods4aws/gsi_monitor.aws.tar | Bin 10240 -> 0 bytes sorc/mods4aws/gsi_utils.aws.tar | Bin 20480 -> 0 bytes sorc/mods4aws/ufs_model.aws.tar | Bin 10240 -> 0 bytes sorc/mods4aws/ufs_utils.aws.tar | Bin 10240 -> 0 bytes sorc/mods4aws/update-modulefiles.sh | 25 -- sorc/mods4aws/upp.aws.tar | Bin 10240 -> 0 bytes sorc/setup-case.sh | 4 +- ush/module-setup.sh | 13 +- workflow/hosts.py | 2 +- workflow/hosts/{gcppw.yaml => googlepw.yaml} | 0 workflow/hosts/noaacloud.yaml | 27 -- 23 files changed, 25 insertions(+), 396 deletions(-) rename env/{GCPPW.env => GOOGLEPW.env} (100%) delete mode 100755 env/NOAACLOUD.env delete mode 100644 sorc/mods4aws/gdas.aws.tar delete mode 100644 sorc/mods4aws/gfs_utils.aws.tar delete mode 100644 sorc/mods4aws/gsi_enkf.aws.tar delete mode 100644 sorc/mods4aws/gsi_monitor.aws.tar delete mode 100644 sorc/mods4aws/gsi_utils.aws.tar delete mode 100644 sorc/mods4aws/ufs_model.aws.tar delete mode 100644 sorc/mods4aws/ufs_utils.aws.tar delete mode 100755 sorc/mods4aws/update-modulefiles.sh delete mode 100644 sorc/mods4aws/upp.aws.tar rename workflow/hosts/{gcppw.yaml => googlepw.yaml} (100%) delete mode 100644 workflow/hosts/noaacloud.yaml diff --git a/env/AWSPW.env b/env/AWSPW.env index e8c676f5ee..3fddd423df 100755 --- a/env/AWSPW.env +++ b/env/AWSPW.env @@ -16,8 +16,8 @@ step=$1 echo "step: $step" -export launcher="srun --mpi=pmi2" -export mpmd_opt="" +export launcher="srun --mpi=pmi2 -l" +export mpmd_opt="--distribution=block:block --hint=nomultithread --cpus-per-task=1" # Configure MPI environment export OMP_STACKSIZE=2048000 diff --git a/env/GCPPW.env b/env/GOOGLEPW.env similarity index 100% rename from env/GCPPW.env rename to env/GOOGLEPW.env diff --git a/env/NOAACLOUD.env b/env/NOAACLOUD.env deleted file mode 100755 index f55434e8d9..0000000000 --- a/env/NOAACLOUD.env +++ /dev/null @@ -1,299 +0,0 @@ -#! /usr/bin/env bash - -if [[ $# -ne 1 ]]; then - - echo "Must specify an input argument to set runtime environment variables!" - echo "argument can be any one of the following:" - echo "atmanlrun atmensanlrun aeroanlrun snowanl" - echo "anal sfcanl fcst post metp" - echo "eobs eupd ecen efcs epos" - echo "postsnd awips gempak" - exit 1 - -fi - -step=$1 - -export launcher="srun -l --export=ALL" -export mpmd_opt="--multi-prog --output=mpmd.%j.%t.out" - -#export POSTAMBLE_CMD='report-mem' - -# Configure MPI environment -#export I_MPI_ADJUST_ALLREDUCE=5 -#export MPI_BUFS_PER_PROC=2048 -#export MPI_BUFS_PER_HOST=2048 -#export MPI_GROUP_MAX=256 -#export MPI_MEMMAP_OFF=1 -#export MP_STDOUTMODE="ORDERED" -export OMP_STACKSIZE=2048000 -export NTHSTACK=1024000000 -#export LD_BIND_NOW=1 - -ulimit -s unlimited -ulimit -a - -if [[ "${step}" = "prep" ]] || [[ "${step}" = "prepbufr" ]]; then - - nth_max=$((npe_node_max / npe_node_prep)) - - export POE="NO" - export BACK="NO" - export sys_tp="HERA" - export launcher_PREP="srun" - -elif [[ "${step}" = "prepsnowobs" ]]; then - - export APRUN_CALCFIMS="${launcher} -n 1" - -elif [[ "${step}" = "waveinit" ]] || [[ "${step}" = "waveprep" ]] || [[ "${step}" = "wavepostsbs" ]] || [[ "${step}" = "wavepostbndpnt" ]] || [[ "${step}" = "wavepostbndpntbll" ]] || [[ "${step}" = "wavepostpnt" ]]; then - - export CFP_MP="YES" - if [[ "${step}" = "waveprep" ]]; then export MP_PULSE=0 ; fi - export wavempexec=${launcher} - export wave_mpmd=${mpmd_opt} - -elif [[ "${step}" = "atmanlrun" ]]; then - - nth_max=$((npe_node_max / npe_node_atmanlrun)) - - export NTHREADS_ATMANL=${nth_atmanlrun:-${nth_max}} - [[ ${NTHREADS_ATMANL} -gt ${nth_max} ]] && export NTHREADS_ATMANL=${nth_max} - export APRUN_ATMANL="${launcher} -n ${npe_atmanlrun} --cpus-per-task=${NTHREADS_ATMANL}" - -elif [[ "${step}" = "atmensanlrun" ]]; then - - nth_max=$((npe_node_max / npe_node_atmensanlrun)) - - export NTHREADS_ATMENSANL=${nth_atmensanlrun:-${nth_max}} - [[ ${NTHREADS_ATMENSANL} -gt ${nth_max} ]] && export NTHREADS_ATMENSANL=${nth_max} - export APRUN_ATMENSANL="${launcher} -n ${npe_atmensanlrun} --cpus-per-task=${NTHREADS_ATMENSANL}" - -elif [[ "${step}" = "aeroanlrun" ]]; then - - export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" - - nth_max=$((npe_node_max / npe_node_aeroanlrun)) - - export NTHREADS_AEROANL=${nth_aeroanlrun:-${nth_max}} - [[ ${NTHREADS_AEROANL} -gt ${nth_max} ]] && export NTHREADS_AEROANL=${nth_max} - export APRUN_AEROANL="${launcher} -n ${npe_aeroanlrun} --cpus-per-task=${NTHREADS_AEROANL}" - -elif [[ "${step}" = "snowanl" ]]; then - - nth_max=$((npe_node_max / npe_node_snowanl)) - - export NTHREADS_SNOWANL=${nth_snowanl:-${nth_max}} - [[ ${NTHREADS_SNOWANL} -gt ${nth_max} ]] && export NTHREADS_SNOWANL=${nth_max} - export APRUN_SNOWANL="${launcher} -n ${npe_snowanl} --cpus-per-task=${NTHREADS_SNOWANL}" - - export APRUN_APPLY_INCR="${launcher} -n 6" - -elif [[ "${step}" = "ocnanalbmat" ]]; then - - export APRUNCFP="${launcher} -n \$ncmd --multi-prog" - - export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" - -elif [[ "${step}" = "ocnanalrun" ]]; then - - export APRUNCFP="${launcher} -n \$ncmd --multi-prog" - - export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalrun}" - -elif [[ "${step}" = "ocnanalchkpt" ]]; then - - export APRUNCFP="${launcher} -n \$ncmd --multi-prog" - - export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalchkpt}" - -elif [[ "${step}" = "ocnanalecen" ]]; then - - nth_max=$((npe_node_max / npe_node_ocnanalecen)) - - export NTHREADS_OCNANALECEN=${nth_ocnanalecen:-${nth_max}} - [[ ${NTHREADS_OCNANALECEN} -gt ${nth_max} ]] && export NTHREADS_OCNANALECEN=${nth_max} - export APRUN_OCNANALECEN="${launcher} -n ${npe_ocnanalecen} --cpus-per-task=${NTHREADS_OCNANALECEN}" - -elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then - - export MKL_NUM_THREADS=4 - export MKL_CBWR=AUTO - - export CFP_MP=${CFP_MP:-"YES"} - export USE_CFP=${USE_CFP:-"YES"} - export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" - - nth_max=$((npe_node_max / npe_node_anal)) - - export NTHREADS_GSI=${nth_anal:-${nth_max}} - [[ ${NTHREADS_GSI} -gt ${nth_max} ]] && export NTHREADS_GSI=${nth_max} - export APRUN_GSI="${launcher} -n ${npe_gsi:-${npe_anal}} --cpus-per-task=${NTHREADS_GSI}" - - export NTHREADS_CALCINC=${nth_calcinc:-1} - [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} - export APRUN_CALCINC="${launcher} \$ncmd --cpus-per-task=${NTHREADS_CALCINC}" - - export NTHREADS_CYCLE=${nth_cycle:-12} - [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} - npe_cycle=${ntiles:-6} - export APRUN_CYCLE="${launcher} -n ${npe_cycle} --cpus-per-task=${NTHREADS_CYCLE}" - - export NTHREADS_GAUSFCANL=1 - npe_gausfcanl=${npe_gausfcanl:-1} - export APRUN_GAUSFCANL="${launcher} -n ${npe_gausfcanl} --cpus-per-task=${NTHREADS_GAUSFCANL}" - -elif [[ "${step}" = "sfcanl" ]]; then - - nth_max=$((npe_node_max / npe_node_sfcanl)) - - export NTHREADS_CYCLE=${nth_sfcanl:-14} - [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} - npe_sfcanl=${ntiles:-6} - export APRUN_CYCLE="${launcher} -n ${npe_sfcanl} --cpus-per-task=${NTHREADS_CYCLE}" - -elif [[ "${step}" = "eobs" ]]; then - - export MKL_NUM_THREADS=4 - export MKL_CBWR=AUTO - - nth_max=$((npe_node_max / npe_node_eobs)) - - export NTHREADS_GSI=${nth_eobs:-${nth_max}} - [[ ${NTHREADS_GSI} -gt ${nth_max} ]] && export NTHREADS_GSI=${nth_max} - export APRUN_GSI="${launcher} -n ${npe_gsi:-${npe_eobs}} --cpus-per-task=${NTHREADS_GSI}" - - export CFP_MP=${CFP_MP:-"YES"} - export USE_CFP=${USE_CFP:-"YES"} - export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" - -elif [[ "${step}" = "eupd" ]]; then - - nth_max=$((npe_node_max / npe_node_eupd)) - - export NTHREADS_ENKF=${nth_eupd:-${nth_max}} - [[ ${NTHREADS_ENKF} -gt ${nth_max} ]] && export NTHREADS_ENKF=${nth_max} - export APRUN_ENKF="${launcher} -n ${npe_enkf:-${npe_eupd}} --cpus-per-task=${NTHREADS_ENKF}" - - export CFP_MP=${CFP_MP:-"YES"} - export USE_CFP=${USE_CFP:-"YES"} - export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" - -elif [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then - - if [[ "${CDUMP}" =~ "gfs" ]]; then - nprocs="npe_${step}_gfs" - ppn="npe_node_${step}_gfs" || ppn="npe_node_${step}" - else - nprocs="npe_${step}" - ppn="npe_node_${step}" - fi - (( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} )) - (( ntasks = nnodes*${!ppn} )) - # With ESMF threading, the model wants to use the full node - export APRUN_UFS="${launcher} -n ${ntasks}" - unset nprocs ppn nnodes ntasks - - -elif [[ "${step}" = "upp" ]]; then - - nth_max=$((npe_node_max / npe_node_upp)) - - export NTHREADS_UPP=${nth_upp:-1} - [[ ${NTHREADS_UPP} -gt ${nth_max} ]] && export NTHREADS_UPP=${nth_max} - export APRUN_UPP="${launcher} -n ${npe_upp} --cpus-per-task=${NTHREADS_UPP}" - -elif [[ "${step}" = "atmos_products" ]]; then - - export USE_CFP="YES" # Use MPMD for downstream product generation on Hera - -elif [[ "${step}" = "oceanice_products" ]]; then - - nth_max=$((npe_node_max / npe_node_oceanice_products)) - - export NTHREADS_OCNICEPOST=${nth_oceanice_products:-1} - export APRUN_OCNICEPOST="${launcher} -n 1 --cpus-per-task=${NTHREADS_OCNICEPOST}" - -elif [[ "${step}" = "ecen" ]]; then - - nth_max=$((npe_node_max / npe_node_ecen)) - - export NTHREADS_ECEN=${nth_ecen:-${nth_max}} - [[ ${NTHREADS_ECEN} -gt ${nth_max} ]] && export NTHREADS_ECEN=${nth_max} - export APRUN_ECEN="${launcher} -n ${npe_ecen} --cpus-per-task=${NTHREADS_ECEN}" - - export NTHREADS_CHGRES=${nth_chgres:-12} - [[ ${NTHREADS_CHGRES} -gt ${npe_node_max} ]] && export NTHREADS_CHGRES=${npe_node_max} - export APRUN_CHGRES="time" - - export NTHREADS_CALCINC=${nth_calcinc:-1} - [[ ${NTHREADS_CALCINC} -gt ${nth_max} ]] && export NTHREADS_CALCINC=${nth_max} - export APRUN_CALCINC="${launcher} -n ${npe_ecen} --cpus-per-task=${NTHREADS_CALCINC}" - -elif [[ "${step}" = "esfc" ]]; then - - nth_max=$((npe_node_max / npe_node_esfc)) - - export NTHREADS_ESFC=${nth_esfc:-${nth_max}} - [[ ${NTHREADS_ESFC} -gt ${nth_max} ]] && export NTHREADS_ESFC=${nth_max} - export APRUN_ESFC="${launcher} -n ${npe_esfc} --cpus-per-task=${NTHREADS_ESFC}" - - export NTHREADS_CYCLE=${nth_cycle:-14} - [[ ${NTHREADS_CYCLE} -gt ${npe_node_max} ]] && export NTHREADS_CYCLE=${npe_node_max} - export APRUN_CYCLE="${launcher} -n ${npe_esfc} --cpus-per-task=${NTHREADS_CYCLE}" - -elif [[ "${step}" = "epos" ]]; then - - nth_max=$((npe_node_max / npe_node_epos)) - - export NTHREADS_EPOS=${nth_epos:-${nth_max}} - [[ ${NTHREADS_EPOS} -gt ${nth_max} ]] && export NTHREADS_EPOS=${nth_max} - export APRUN_EPOS="${launcher} -n ${npe_epos} --cpus-per-task=${NTHREADS_EPOS}" - -elif [[ "${step}" = "postsnd" ]]; then - - export CFP_MP="YES" - - nth_max=$((npe_node_max / npe_node_postsnd)) - - export NTHREADS_POSTSND=${nth_postsnd:-1} - [[ ${NTHREADS_POSTSND} -gt ${nth_max} ]] && export NTHREADS_POSTSND=${nth_max} - export APRUN_POSTSND="${launcher} -n ${npe_postsnd} --cpus-per-task=${NTHREADS_POSTSND}" - - export NTHREADS_POSTSNDCFP=${nth_postsndcfp:-1} - [[ ${NTHREADS_POSTSNDCFP} -gt ${nth_max} ]] && export NTHREADS_POSTSNDCFP=${nth_max} - export APRUN_POSTSNDCFP="${launcher} -n ${npe_postsndcfp} ${mpmd_opt}" - -elif [[ "${step}" = "awips" ]]; then - - nth_max=$((npe_node_max / npe_node_awips)) - - export NTHREADS_AWIPS=${nth_awips:-2} - [[ ${NTHREADS_AWIPS} -gt ${nth_max} ]] && export NTHREADS_AWIPS=${nth_max} - export APRUN_AWIPSCFP="${launcher} -n ${npe_awips} ${mpmd_opt}" - -elif [[ "${step}" = "gempak" ]]; then - - export CFP_MP="YES" - - if [[ ${CDUMP} == "gfs" ]]; then - npe_gempak=${npe_gempak_gfs} - npe_node_gempak=${npe_node_gempak_gfs} - fi - - nth_max=$((npe_node_max / npe_node_gempak)) - - export NTHREADS_GEMPAK=${nth_gempak:-1} - [[ ${NTHREADS_GEMPAK} -gt ${nth_max} ]] && export NTHREADS_GEMPAK=${nth_max} - export APRUN="${launcher} -n ${npe_gempak} ${mpmd_opt}" - - -elif [[ "${step}" = "fit2obs" ]]; then - - nth_max=$((npe_node_max / npe_node_fit2obs)) - - export NTHREADS_FIT2OBS=${nth_fit2obs:-1} - [[ ${NTHREADS_FIT2OBS} -gt ${nth_max} ]] && export NTHREADS_FIT2OBS=${nth_max} - export MPIRUN="${launcher} -n ${npe_fit2obs} --cpus-per-task=${NTHREADS_FIT2OBS}" - -fi diff --git a/jobs/rocoto/stage_ic.sh b/jobs/rocoto/stage_ic.sh index 342192d3ba..5e7b3395d2 100755 --- a/jobs/rocoto/stage_ic.sh +++ b/jobs/rocoto/stage_ic.sh @@ -4,15 +4,15 @@ source "${HOMEgfs}/ush/preamble.sh" # Source FV3GFS workflow modules . "${HOMEgfs}/ush/load_fv3gfs_modules.sh" -#status=$? -status=0 +status=$? [[ "${status}" -ne 0 ]] && exit "${status}" export job="stage_ic" export jobid="${job}.$$" # Execute the JJOB -# "${HOMEgfs}/jobs/JGLOBAL_STAGE_IC" -status=0 +"${HOMEgfs}/jobs/JGLOBAL_STAGE_IC" +status=$? + exit "${status}" diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index 825b64fa47..c54804b6ab 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -58,15 +58,15 @@ case ${machine} in ;; "AWSPW") export PARTITION_BATCH="compute" - npe_node_max=36 + npe_node_max=24 ;; "AZUREPW") export PARTITION_BATCH="compute" - npe_node_max=32 + npe_node_max=24 ;; "GOOGLEPW") export PARTITION_BATCH="compute" - npe_node_max=32 + npe_node_max=24 ;; "CONTAINER") npe_node_max=1 diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index ccfd3783d8..590c3aba17 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -150,10 +150,7 @@ else fi ${NCP} "${EXECgfs}/${FCSTEXEC}" "${DATA}/" -#${APRUN_UFS} "${DATA}/${FCSTEXEC}" 1>&1 2>&2 -#srun --mpi=pmi2 -l -n 12 -N 1 --distribution=block:block --hint=nomultithread --cpus-per-task=1 ./ufs_model.x -#srun --mpi=pmi2 -l -n 12 -N 1 ./ufs_model.x -srun --mpi=pmi2 -l -n 30 -N 1 --distribution=block:block --hint=nomultithread --cpus-per-task=1 ./ufs_model.x +${APRUN_UFS} "${DATA}/${FCSTEXEC}" 1>&1 2>&2 export ERR=$? export err=${ERR} ${ERRSCRIPT} || exit "${err}" diff --git a/sorc/build_all.sh b/sorc/build_all.sh index c0f6381d85..77e7b04473 100755 --- a/sorc/build_all.sh +++ b/sorc/build_all.sh @@ -145,7 +145,7 @@ build_opts["ww3prepost"]="${_wave_opt} ${_verbose_opt} ${_build_ufs_opt} ${_buil # Optional DA builds if [[ "${_build_ufsda}" == "YES" ]]; then - build_jobs["gdas"]=8 + build_jobs["gdas"]=24 big_jobs=$((big_jobs+1)) build_opts["gdas"]="${_verbose_opt} ${_build_debug}" fi diff --git a/sorc/build_ufs.sh b/sorc/build_ufs.sh index 16c61000b4..44c8c7a2ad 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -1,5 +1,5 @@ #! /usr/bin/env bash -set -eu +set -eux cwd=$(pwd) @@ -41,21 +41,9 @@ COMPILE_NR=0 CLEAN_BEFORE=YES CLEAN_AFTER=NO -echo "MACHINE_ID: ${MACHINE_ID}" - -if [[ "${MACHINE_ID}" != "noaacloud" ]]; then - BUILD_JOBS=${BUILD_JOBS:-8} ./tests/compile.sh "${MACHINE_ID}" "${MAKE_OPT}" "${COMPILE_NR}" "intel" "${CLEAN_BEFORE}" "${CLEAN_AFTER}" - mv "./tests/fv3_${COMPILE_NR}.exe" ./tests/ufs_model.x - mv "./tests/modules.fv3_${COMPILE_NR}.lua" ./tests/modules.ufs_model.lua - cp "./modulefiles/ufs_common.lua" ./tests/ufs_common.lua -else - echo "MACHINE_ID: ${MACHINE_ID}" - echo "COMPILE_NR: ${COMPILE_NR}" - - BUILD_JOBS=${BUILD_JOBS:-8} ./tests/compile.sh "${MACHINE_ID}" "${MAKE_OPT}" "${COMPILE_NR}" "intel" "${CLEAN_BEFORE}" "${CLEAN_AFTER}" - mv "./tests/fv3_${COMPILE_NR}.exe" ./tests/ufs_model.x - mv "./tests/modules.fv3_${COMPILE_NR}.lua" ./tests/modules.ufs_model.lua - cp "./modulefiles/ufs_common.lua" ./tests/ufs_common.lua -fi +BUILD_JOBS=${BUILD_JOBS:-8} ./tests/compile.sh "${MACHINE_ID}" "${MAKE_OPT}" "${COMPILE_NR}" "intel" "${CLEAN_BEFORE}" "${CLEAN_AFTER}" +mv "./tests/fv3_${COMPILE_NR}.exe" ./tests/ufs_model.x +mv "./tests/modules.fv3_${COMPILE_NR}.lua" ./tests/modules.ufs_model.lua +cp "./modulefiles/ufs_common.lua" ./tests/ufs_common.lua exit 0 diff --git a/sorc/build_ww3prepost.sh b/sorc/build_ww3prepost.sh index fb6f95b8ea..67ee5e1dc2 100755 --- a/sorc/build_ww3prepost.sh +++ b/sorc/build_ww3prepost.sh @@ -93,10 +93,6 @@ cat "${buildswitch}" MAKE_OPT="-DCMAKE_INSTALL_PREFIX=install" [[ ${BUILD_TYPE:-"Release"} = "Debug" ]] && MAKE_OPT+=" -DCMAKE_BUILD_TYPE=Debug" -echo "WW3_DIR: ${WW3_DIR}" -echo "buildswitch: ${buildswitch}" -echo "MAKE_OPT: ${MAKE_OPT}" - #Build executables: # shellcheck disable=SC2086 cmake "${WW3_DIR}" -DSWITCH="${buildswitch}" ${MAKE_OPT} diff --git a/sorc/mods4aws/gdas.aws.tar b/sorc/mods4aws/gdas.aws.tar deleted file mode 100644 index 0b40e0ef8ed435467a395f6766d34a8876c71b93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/sorc/mods4aws/gsi_enkf.aws.tar b/sorc/mods4aws/gsi_enkf.aws.tar deleted file mode 100644 index b32813d76b3c2363cd13a09e38bad997d2d8e90b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 U0(%MUC9s#kUIKdwJYE9-28adeV*mgE diff --git a/sorc/mods4aws/gsi_monitor.aws.tar b/sorc/mods4aws/gsi_monitor.aws.tar deleted file mode 100644 index 0d711a7c7dc6db23badf931a5c78c763a5b56cef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 U1S$zs5~w6lNuZLz|Az$r4c&sVpa1{> diff --git a/sorc/mods4aws/ufs_model.aws.tar b/sorc/mods4aws/ufs_model.aws.tar deleted file mode 100644 index b32dd5ee46a5aa28669ab9728affc112e6561200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 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 diff --git a/sorc/mods4aws/update-modulefiles.sh b/sorc/mods4aws/update-modulefiles.sh deleted file mode 100755 index 2753cad6f6..0000000000 --- a/sorc/mods4aws/update-modulefiles.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -x - -#machine=azure -machine=aws - -#srcdir=/contrib/Wei.Huang/debug/global-workflow-cloud -srcdir=/contrib/Wei.Huang/src/global-workflow-cloud - -for item in gdas gfs_utils gsi_enkf gsi_monitor gsi_utils \ - ufs_model ufs_utils upp verif-global -do - tf=${item}.${machine}.tar - if [ -f ${srcdir}/sorc/mods4${machine}/${tf} ] - then - dir=${srcdir}/sorc/${item}.fd - if [ -d ${dir} ] - then - cd ${dir} - tar xvf ../mods4${machine}/${tf} - fi - fi -done - diff --git a/sorc/mods4aws/upp.aws.tar b/sorc/mods4aws/upp.aws.tar deleted file mode 100644 index 864c459bfb7fa0e3a008b1f57d4f87a9b1916aa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 zcmeIxPixyS6aa9a{V9Y_4%D(7J1Go$DCtHS9m`>5g;IhlD~*UO3H@om{uIw?Lq-mR zUII@S+fPsLNk8P?bWw@5RKi!ozbSfOwVcE&g%3WMqM{e zR=0CHr!A#*lhJy1+0YEp&)dT3O3?@A5XycFNp2(4FDFv%TlB)6m^|O`Mkrf6KIV6Z zbx7z}>5T4$4k#G(9Hr{e{c?$nMjPQ+{`54-^V~XNh3;0Cg-wBf{Jgop`?|dTb&D?$ zuDH>`$>+*j#AsZ**_Rex|F7sd&k8V*HPQU{?{ zufkm!PhLbws|tKHg(t{3gs16(k%my5t8}blx6kiJ>M^|>Dy7XHEuMU|>a9G{X`K0w zMy1h$Sy`r)A3eu1yOz9XTXEd&JvcUM$h0B#Kj#_JQq}kLUBThZI9j{nrtgg&2uH8Q z0$u;QplS^ZhAc z=O6$AAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w8cE G0)GIJI_4b! diff --git a/sorc/setup-case.sh b/sorc/setup-case.sh index f2d2f3a9e9..3a77946fc7 100755 --- a/sorc/setup-case.sh +++ b/sorc/setup-case.sh @@ -5,8 +5,8 @@ GLOBALWORKFLOWTEMP=/contrib/Wei.Huang/run GLOBALWORKFLOWHOME=/contrib/Wei.Huang/src/global-workflow-cloud -#ATMOSRES=48 - ATMOSRES=96 + ATMOSRES=48 +#ATMOSRES=96 PSLOT=c${ATMOSRES}atm EXPNAME=gfs PSLOT=c${ATMOSRES}atm diff --git a/ush/module-setup.sh b/ush/module-setup.sh index 350aeea035..cff8c2a625 100755 --- a/ush/module-setup.sh +++ b/ush/module-setup.sh @@ -3,8 +3,6 @@ set -u source "${HOMEgfs}/ush/detect_machine.sh" -echo "MACHINE_ID: ${MACHINE_ID}" - if [[ ${MACHINE_ID} = jet* ]] ; then # We are on NOAA Jet if ( ! eval module help > /dev/null 2>&1 ) ; then @@ -123,12 +121,13 @@ elif [[ ${MACHINE_ID} = discover* ]]; then # TODO: This can likely be made more general once other cloud # platforms come online. elif [[ ${MACHINE_ID} = "noaacloud" ]]; then + module purge - module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core - module load stack-intel/2021.3.0 stack-intel-oneapi-mpi/2021.3.0 - export SPACK_ROOT=/contrib/spack-stack/spack-stack-1.6.0/spack - export PATH=${PATH}:${SPACK_ROOT}/bin - . "${SPACK_ROOT}"/share/spack/setup-env.sh + #module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core + #module load stack-intel/2021.3.0 stack-intel-oneapi-mpi/2021.3.0 + #export SPACK_ROOT=/contrib/spack-stack/spack-stack-1.6.0/spack + #export PATH=${PATH}:${SPACK_ROOT}/bin + #. "${SPACK_ROOT}"/share/spack/setup-env.sh else echo WARNING: UNKNOWN PLATFORM 1>&2 diff --git a/workflow/hosts.py b/workflow/hosts.py index ea735be44b..1682abee77 100644 --- a/workflow/hosts.py +++ b/workflow/hosts.py @@ -16,7 +16,7 @@ class Host: SUPPORTED_HOSTS = ['HERA', 'ORION', 'JET', 'HERCULES', 'WCOSS2', 'S4', 'CONTAINER', - 'AWSPW', 'AZUREPW', 'GCPPW'] + 'AWSPW', 'AZUREPW', 'GOOGLEPW'] def __init__(self, host=None): diff --git a/workflow/hosts/gcppw.yaml b/workflow/hosts/googlepw.yaml similarity index 100% rename from workflow/hosts/gcppw.yaml rename to workflow/hosts/googlepw.yaml diff --git a/workflow/hosts/noaacloud.yaml b/workflow/hosts/noaacloud.yaml deleted file mode 100644 index 252f09fab5..0000000000 --- a/workflow/hosts/noaacloud.yaml +++ /dev/null @@ -1,27 +0,0 @@ -BASE_GIT: '/work/noaa/global/glopara/git' -DMPDIR: '/work/noaa/rstprod/dump' -BASE_CPLIC: '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs' -PACKAGEROOT: '/work/noaa/global/glopara/nwpara' -COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' -HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' -STMP: '/contrib/${USER}/stmp' -PTMP: '/contrib/${USER}/ptmp' -NOSCRUB: '/contrib/${USER}/scrub' -SCHEDULER: slurm -ACCOUNT: $USER -QUEUE: batch -QUEUE_SERVICE: batch -PARTITION_BATCH: compute -PARTITION_SERVICE: compute -CHGRP_RSTPROD: 'YES' -CHGRP_CMD: 'chgrp rstprod' -HPSSARCH: 'NO' -HPSS_PROJECT: epic -LOCALARCH: 'NO' -ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' -MAKE_NSSTBUFR: 'NO' -MAKE_ACFTBUFR: 'NO' -SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] -COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf -COMINnam: /work/noaa/global/glopara/data/external_gempak/nam -COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet From ef6bc098a7de12e548c1a41bcb3a41dedc788ec1 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 2 May 2024 03:34:28 +0000 Subject: [PATCH 20/37] run in ca-epic --- env/AWSPW.env | 2 +- parm/config/gfs/config.base | 10 +-- parm/config/gfs/config.stage_ic | 3 +- scripts/exglobal_atmos_products.sh | 22 ++++++ scripts/exglobal_stage_ic.sh | 104 +++++++++++++++++++++++------ ush/load_fv3gfs_modules.sh | 10 +-- versions/run.spack.ver | 6 +- workflow/rocoto/tasks.py | 9 ++- workflow/rocoto/workflow_xml.py | 4 +- 9 files changed, 130 insertions(+), 40 deletions(-) diff --git a/env/AWSPW.env b/env/AWSPW.env index 3fddd423df..f51bd7226b 100755 --- a/env/AWSPW.env +++ b/env/AWSPW.env @@ -38,7 +38,7 @@ if [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then (( nnodes = (${!nprocs}+${!ppn}-1)/${!ppn} )) (( ntasks = nnodes*${!ppn} )) # With ESMF threading, the model wants to use the full node - export APRUN_UFS="${launcher} -n ${ntasks}" + export APRUN_UFS="${launcher} -n ${ntasks} ${mpmd_opt}" unset nprocs ppn nnodes ntasks elif [[ "${step}" = "post" ]]; then diff --git a/parm/config/gfs/config.base b/parm/config/gfs/config.base index 5a58c75220..633dce81ed 100644 --- a/parm/config/gfs/config.base +++ b/parm/config/gfs/config.base @@ -70,12 +70,12 @@ export DO_BUFRSND="NO" # BUFR sounding products export DO_GEMPAK="NO" # GEMPAK products export DO_AWIPS="NO" # AWIPS products export DO_NPOESS="NO" # NPOESS products -export DO_TRACKER="YES" # Hurricane track verification -export DO_GENESIS="YES" # Cyclone genesis verification +export DO_TRACKER="NO" # Hurricane track verification +export DO_GENESIS="NO" # Cyclone genesis verification export DO_GENESIS_FSU="NO" # Cyclone genesis verification (FSU) -export DO_VERFOZN="YES" # Ozone data assimilation monitoring -export DO_VERFRAD="YES" # Radiance data assimilation monitoring -export DO_VMINMON="YES" # GSI minimization monitoring +export DO_VERFOZN="NO" # Ozone data assimilation monitoring +export DO_VERFRAD="NO" # Radiance data assimilation monitoring +export DO_VMINMON="NO" # GSI minimization monitoring export DO_MOS="NO" # GFS Model Output Statistics - Only supported on WCOSS2 # NO for retrospective parallel; YES for real-time parallel diff --git a/parm/config/gfs/config.stage_ic b/parm/config/gfs/config.stage_ic index 63d0e4a5cf..a3889b199a 100644 --- a/parm/config/gfs/config.stage_ic +++ b/parm/config/gfs/config.stage_ic @@ -9,7 +9,8 @@ source "${EXPDIR}/config.resources" stage_ic case "${CASE}" in "C48" | "C96" | "C192") - export CPL_ATMIC="workflow_${CASE}_refactored" + #export CPL_ATMIC="workflow_${CASE}_refactored" + export CPL_ATMIC="${CASE}" export CPL_ICEIC="workflow_${CASE}_refactored" export CPL_OCNIC="workflow_${CASE}_refactored" export CPL_WAVIC="workflow_${CASE}_refactored" diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index 9067819380..d363962380 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -3,6 +3,28 @@ source "${USHgfs}/preamble.sh" # Programs used +if [[ ${WGRIB2:-"NEEDLOAD"} == "NEEDLOAD" ]]; then +# Find module command and purge: + source "${HOMEgfs}/ush/detect_machine.sh" + source "${HOMEgfs}/ush/module-setup.sh" + +# Source versions file for runtime + source "${HOMEgfs}/versions/run.ver" + +# Load our modules: + module use "${HOMEgfs}/modulefiles" + + case "${MACHINE_ID}" in + "wcoss2" | "hera" | "orion" | "hercules" | "gaea" | "jet" | "s4" | "noaacloud") + module load "module_base.${MACHINE_ID}" + ;; + *) + echo "WARNING: UNKNOWN PLATFORM" + ;; + esac + + module list +fi export WGRIB2=${WGRIB2:-${wgrib2_ROOT}/bin/wgrib2} # Scripts used diff --git a/scripts/exglobal_stage_ic.sh b/scripts/exglobal_stage_ic.sh index 1a15ceb465..078d08211b 100755 --- a/scripts/exglobal_stage_ic.sh +++ b/scripts/exglobal_stage_ic.sh @@ -36,8 +36,12 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do for ftype in coupler.res fv_core.res.nc; do src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/${PDY}.${cyc}0000.${ftype}" tgt="${COM_ATMOS_RESTART_PREV}/${PDY}.${cyc}0000.${ftype}" - ${NCP} "${src}" "${tgt}" - rc=$? + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) done @@ -45,8 +49,12 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do for ((tt = 1; tt <= 6; tt++)); do src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/${PDY}.${cyc}0000.${ftype}.tile${tt}.nc" tgt="${COM_ATMOS_RESTART_PREV}/${PDY}.${cyc}0000.${ftype}.tile${tt}.nc" - ${NCP} "${src}" "${tgt}" - rc=$? + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) done @@ -55,18 +63,46 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do # Stage the FV3 cold-start initial conditions to ROTDIR YMD=${PDY} HH=${cyc} declare_from_tmpl COM_ATMOS_INPUT [[ ! -d "${COM_ATMOS_INPUT}" ]] && mkdir -p "${COM_ATMOS_INPUT}" - src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" + #src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" + if [[ "${RUN:-}" = "gefs" ]]; then + src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" + else + src="${BASE_CPLIC}/${CPL_ATMIC:-}/gfs.${PDY}${cyc}/model_data/atmos/input/gfs_ctrl.nc" + fi tgt="${COM_ATMOS_INPUT}/gfs_ctrl.nc" - ${NCP} "${src}" "${tgt}" - rc=$? + + echo "BASE_CPLIC=$BASE_CPLIC" + echo "CPL_ATMIC=$CPL_ATMIC" + echo "PDY=$PDY" + echo "cyc=$cyc" + echo "COM_ATMOS_INPUT=$COM_ATMOS_INPUT" + echo "MEMDIR=$MEMDIR" + echo "NCP=$NCP" + echo "src=$src" + echo "tgt=$tgt" + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) for ftype in gfs_data sfc_data; do for ((tt = 1; tt <= 6; tt++)); do - src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc" + #src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc" + if [[ "${RUN:-}" = "gefs" ]]; then + src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc" + else + src="${BASE_CPLIC}/${CPL_ATMIC:-}/gfs.${PDY}${cyc}/model_data/atmos/input/${ftype}.tile${tt}.nc" + fi tgt="${COM_ATMOS_INPUT}/${ftype}.tile${tt}.nc" - ${NCP} "${src}" "${tgt}" - rc=$? + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) done @@ -79,8 +115,12 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do [[ ! -d "${COM_OCEAN_RESTART_PREV}" ]] && mkdir -p "${COM_OCEAN_RESTART_PREV}" src="${BASE_CPLIC}/${CPL_OCNIC:-}/${PDY}${cyc}/${MEMDIR}/ocean/${PDY}.${cyc}0000.MOM.res.nc" tgt="${COM_OCEAN_RESTART_PREV}/${PDY}.${cyc}0000.MOM.res.nc" - ${NCP} "${src}" "${tgt}" - rc=$? + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) case "${OCNRES}" in @@ -91,8 +131,12 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do for nn in $(seq 1 3); do src="${BASE_CPLIC}/${CPL_OCNIC:-}/${PDY}${cyc}/${MEMDIR}/ocean/${PDY}.${cyc}0000.MOM.res_${nn}.nc" tgt="${COM_OCEAN_RESTART_PREV}/${PDY}.${cyc}0000.MOM.res_${nn}.nc" - ${NCP} "${src}" "${tgt}" - rc=$? + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) done @@ -109,8 +153,12 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do if (( 0${MEMDIR:3} > 0 )) && [[ "${USE_OCN_PERTURB_FILES:-false}" == "true" ]]; then src="${BASE_CPLIC}/${CPL_OCNIC:-}/${PDY}${cyc}/${MEMDIR}/ocean/${PDY}.${cyc}0000.mom6_increment.nc" tgt="${COM_OCEAN_RESTART_PREV}/${PDY}.${cyc}0000.mom6_increment.nc" - ${NCP} "${src}" "${tgt}" - rc=${?} + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) fi @@ -124,8 +172,12 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do src="${BASE_CPLIC}/${CPL_MEDIC:-}/${PDY}${cyc}/${MEMDIR}/med/${PDY}.${cyc}0000.ufs.cpld.cpl.r.nc" tgt="${COM_MED_RESTART_PREV}/${PDY}.${cyc}0000.ufs.cpld.cpl.r.nc" if [[ -f "${src}" ]]; then - ${NCP} "${src}" "${tgt}" - rc=$? + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) else @@ -141,8 +193,12 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do [[ ! -d "${COM_ICE_RESTART_PREV}" ]] && mkdir -p "${COM_ICE_RESTART_PREV}" src="${BASE_CPLIC}/${CPL_ICEIC:-}/${PDY}${cyc}/${MEMDIR}/ice/${PDY}.${cyc}0000.cice_model.res.nc" tgt="${COM_ICE_RESTART_PREV}/${PDY}.${cyc}0000.cice_model.res.nc" - ${NCP} "${src}" "${tgt}" - rc=$? + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) fi @@ -154,8 +210,12 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do for grdID in ${waveGRD}; do # TODO: check if this is a bash array; if so adjust src="${BASE_CPLIC}/${CPL_WAVIC:-}/${PDY}${cyc}/${MEMDIR}/wave/${PDY}.${cyc}0000.restart.${grdID}" tgt="${COM_WAVE_RESTART}/${PDY}.${cyc}0000.restart.${grdID}" - ${NCP} "${src}" "${tgt}" - rc=$? + if [ ! -f ${tgt} ]; then + ${NCP} "${src}" "${tgt}" + rc=$? + else + rc=0 + fi ((rc != 0)) && error_message "${src}" "${tgt}" "${rc}" err=$((err + rc)) done diff --git a/ush/load_fv3gfs_modules.sh b/ush/load_fv3gfs_modules.sh index 91fe23b426..541c1d5e4e 100755 --- a/ush/load_fv3gfs_modules.sh +++ b/ush/load_fv3gfs_modules.sh @@ -13,9 +13,9 @@ uname -n # 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" +# Find module command and purge: +source "${HOMEgfs}/ush/detect_machine.sh" +source "${HOMEgfs}/ush/module-setup.sh" # Source versions file for runtime #source "${HOMEgfs}/versions/run.ver" @@ -36,7 +36,7 @@ ulimit_s=$( ulimit -S -s ) # pjj - use this to load modules (spack-stack ) ROOT_DIR=${HOMEgfs}/sorc -set +x +#set +x #Determine machine and load modules # pjj - use consistent module setup (spack-stack) source "${ROOT_DIR}/ufs_model.fd/tests/detect_machine.sh" @@ -45,7 +45,7 @@ module use "${ROOT_DIR}/ufs_model.fd/modulefiles" module load "ufs_${MACHINE_ID}.intel" module load prod_util module list -set -x +#set -x echo $MACHINE_ID # Restore stack soft limit: diff --git a/versions/run.spack.ver b/versions/run.spack.ver index d27cab4535..6685d748cb 100644 --- a/versions/run.spack.ver +++ b/versions/run.spack.ver @@ -1,5 +1,5 @@ export spack_stack_ver=1.6.0 -export python_ver=3.10.13 +export python_ver=3.11.6 export jasper_ver=2.0.32 export libpng_ver=1.6.37 @@ -10,7 +10,7 @@ export hdf5_ver=1.14.0 export netcdf_c_ver=4.9.2 export netcdf_fortran_ver=4.6.1 -export bufr_ver=12.0.1 +export bufr_ver=11.7.0 export gsi_ncdiag_ver=1.1.2 export g2tmpl_ver=1.10.2 export crtm_ver=2.4.0.1 @@ -19,7 +19,7 @@ export grib_util_ver=1.3.0 export prod_util_ver=2.1.1 export py_netcdf4_ver=1.5.8 export py_pyyaml_ver=6.0 -export py_jinja2_ver=3.0.3 +export py_jinja2_ver=3.1.2 export py_pandas_ver=1.5.3 export py_python_dateutil_ver=2.8.2 export py_f90nml_ver=1.4.3 diff --git a/workflow/rocoto/tasks.py b/workflow/rocoto/tasks.py index 3abae9b5b7..c0b9a39e75 100644 --- a/workflow/rocoto/tasks.py +++ b/workflow/rocoto/tasks.py @@ -167,6 +167,11 @@ def get_resource(self, task_name): scheduler = self.app_config.scheduler + #print('In workflow/rocoto/tasks.py') + #print('self.app_config = ', self.app_config) + #print('dir(self.app_config) = ', dir(self.app_config)) + #print('vars(self.app_config) = ', vars(self.app_config)) + task_config = self._configs[task_name] account = task_config['ACCOUNT'] @@ -207,7 +212,9 @@ def get_resource(self, task_name): else: native += ':shared' elif scheduler in ['slurm']: - native = '--export=NONE' + #native = '--export=NONE' + #On AWS, need to set as: + native = '--export=ALL --exclusive' queue = task_config['QUEUE_SERVICE'] if task_name in Tasks.SERVICE_TASKS else task_config['QUEUE'] diff --git a/workflow/rocoto/workflow_xml.py b/workflow/rocoto/workflow_xml.py index 11b2cdfc45..28595acd6d 100644 --- a/workflow/rocoto/workflow_xml.py +++ b/workflow/rocoto/workflow_xml.py @@ -133,9 +133,9 @@ def _write_xml(self, xml_file: str = None) -> None: with open(xml_file, 'w') as fh: fh.write(self.xml) - def _write_crontab(self, crontab_file: str = None, cronint: int = 5) -> None: + def _write_crontab(self, crontab_file: str = None, cronint: int = 2) -> None: """ - Create crontab to execute rocotorun every cronint (5) minutes + Create crontab to execute rocotorun every cronint (2) minutes """ # No point creating a crontab if rocotorun is not available. From b4d8d6e75ea2b708c23876d77276d6bca63ffbcf Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 2 May 2024 20:25:34 +0000 Subject: [PATCH 21/37] update global-workflow forked at epic, still waiting on gsi and ufs --- .gitmodules | 4 ++-- sorc/gdas.cd | 2 +- sorc/gsi_enkf.fd | 2 +- sorc/gsi_monitor.fd | 2 +- sorc/gsi_utils.fd | 2 +- sorc/ufs_model.fd | 2 +- sorc/ufs_utils.fd | 2 +- sorc/upp.fd | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.gitmodules b/.gitmodules index 4851e232ee..78a8d41db0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "sorc/ufs_model.fd"] path = sorc/ufs_model.fd - url = https://github.com/ufs-community/ufs-weather-model + url = https://github.com/NOAA-EPIC/ufs-weather-model-cloud.git ignore = dirty [submodule "sorc/wxflow"] path = sorc/wxflow @@ -16,7 +16,7 @@ url = https://github.com/NOAA-EMC/EMC_verif-global.git [submodule "sorc/gsi_enkf.fd"] path = sorc/gsi_enkf.fd - url = https://github.com/NOAA-EMC/GSI.git + url = https://github.com/NOAA-EPIC/GSI-cloud.git [submodule "sorc/gdas.cd"] path = sorc/gdas.cd url = https://github.com/NOAA-EMC/GDASApp.git diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 1b07517a22..8fdaf3d522 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 1b07517a22cd569d35ee24d341c15a97fc6ad932 +Subproject commit 8fdaf3d5229101364d38a6d86d75337871c3c374 diff --git a/sorc/gsi_enkf.fd b/sorc/gsi_enkf.fd index 457510c72e..2316996f76 160000 --- a/sorc/gsi_enkf.fd +++ b/sorc/gsi_enkf.fd @@ -1 +1 @@ -Subproject commit 457510c72e486b7b01db09e5b1a6f407778dc772 +Subproject commit 2316996f767d8b4588c6886b66af7d26cfb0c5da diff --git a/sorc/gsi_monitor.fd b/sorc/gsi_monitor.fd index 8efe38eade..f298c9f04d 160000 --- a/sorc/gsi_monitor.fd +++ b/sorc/gsi_monitor.fd @@ -1 +1 @@ -Subproject commit 8efe38eadebbd5d50284aee44f6d8b6799a7f6e6 +Subproject commit f298c9f04d6667188c566ed3cbc198f6596523e7 diff --git a/sorc/gsi_utils.fd b/sorc/gsi_utils.fd index 68bc14d30b..8e279f9c73 160000 --- a/sorc/gsi_utils.fd +++ b/sorc/gsi_utils.fd @@ -1 +1 @@ -Subproject commit 68bc14d30b3ca8f890f2761c8bdd0a3cea635cf1 +Subproject commit 8e279f9c734097f673b07e80f385b2623d13ba4a diff --git a/sorc/ufs_model.fd b/sorc/ufs_model.fd index 7fdb58cad0..8da4bbbe42 160000 --- a/sorc/ufs_model.fd +++ b/sorc/ufs_model.fd @@ -1 +1 @@ -Subproject commit 7fdb58cad0dad2f62ce7813c6719554d1c5a17af +Subproject commit 8da4bbbe428cf1608fef7fbb9a2f2d8ce50a296e diff --git a/sorc/ufs_utils.fd b/sorc/ufs_utils.fd index f42fae239d..e34f12dd40 160000 --- a/sorc/ufs_utils.fd +++ b/sorc/ufs_utils.fd @@ -1 +1 @@ -Subproject commit f42fae239d0824f7b9a83c9afdc3d980894c7df8 +Subproject commit e34f12dd40738ec1bbdfe1db65e3183949378b4b diff --git a/sorc/upp.fd b/sorc/upp.fd index 4770a2f509..13d5b6d50b 160000 --- a/sorc/upp.fd +++ b/sorc/upp.fd @@ -1 +1 @@ -Subproject commit 4770a2f509b7122e76c4f004210031a58ae9502c +Subproject commit 13d5b6d50bfa159380b5d7647723ca9f65cc60ba From a8487dc98ff8f8a554fa90e44c3a61ca0d2fcd1c Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Fri, 3 May 2024 14:35:11 +0000 Subject: [PATCH 22/37] load gw module --- env/AWSPW.env | 2 -- env/AZUREPW.env | 4 ++-- env/GOOGLEPW.env | 6 ++--- parm/config/gfs/config.resources | 2 +- scripts/exglobal_stage_ic.sh | 10 ++++---- sorc/setup-case.sh | 9 +++---- ush/load_fv3gfs_modules.sh | 40 +++++++++++--------------------- workflow/hosts/awspw.yaml | 2 +- workflow/rocoto/gfs_tasks.py | 4 +++- workflow/rocoto/rocoto.py | 6 +++-- 10 files changed, 35 insertions(+), 50 deletions(-) diff --git a/env/AWSPW.env b/env/AWSPW.env index f51bd7226b..650070b594 100755 --- a/env/AWSPW.env +++ b/env/AWSPW.env @@ -14,8 +14,6 @@ fi step=$1 -echo "step: $step" - export launcher="srun --mpi=pmi2 -l" export mpmd_opt="--distribution=block:block --hint=nomultithread --cpus-per-task=1" diff --git a/env/AZUREPW.env b/env/AZUREPW.env index 176e2bc7b3..185599682c 100755 --- a/env/AZUREPW.env +++ b/env/AZUREPW.env @@ -14,8 +14,8 @@ fi step=$1 -export launcher="srun --mpi=pmi2 -l --export=ALL" -export mpmd_opt="--multi-prog --output=mpmd.%j.%t.out" +export launcher="srun --mpi=pmi2 -l" +export mpmd_opt="--distribution=block:block --hint=nomultithread --cpus-per-task=1" #export POSTAMBLE_CMD='report-mem' diff --git a/env/GOOGLEPW.env b/env/GOOGLEPW.env index f1e9c99a6b..185599682c 100755 --- a/env/GOOGLEPW.env +++ b/env/GOOGLEPW.env @@ -14,10 +14,8 @@ fi step=$1 -echo "step: $step" - -export launcher="srun --mpi=mpi2 -l --export=ALL" -export mpmd_opt="--multi-prog --output=mpmd.%j.%t.out" +export launcher="srun --mpi=pmi2 -l" +export mpmd_opt="--distribution=block:block --hint=nomultithread --cpus-per-task=1" #export POSTAMBLE_CMD='report-mem' diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index c54804b6ab..4f6317d33b 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -58,7 +58,7 @@ case ${machine} in ;; "AWSPW") export PARTITION_BATCH="compute" - npe_node_max=24 + npe_node_max=36 ;; "AZUREPW") export PARTITION_BATCH="compute" diff --git a/scripts/exglobal_stage_ic.sh b/scripts/exglobal_stage_ic.sh index 078d08211b..442c304f6c 100755 --- a/scripts/exglobal_stage_ic.sh +++ b/scripts/exglobal_stage_ic.sh @@ -63,11 +63,10 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do # Stage the FV3 cold-start initial conditions to ROTDIR YMD=${PDY} HH=${cyc} declare_from_tmpl COM_ATMOS_INPUT [[ ! -d "${COM_ATMOS_INPUT}" ]] && mkdir -p "${COM_ATMOS_INPUT}" - #src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" if [[ "${RUN:-}" = "gefs" ]]; then - src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" + src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}PDY}/${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" else - src="${BASE_CPLIC}/${CPL_ATMIC:-}/gfs.${PDY}${cyc}/model_data/atmos/input/gfs_ctrl.nc" + src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}.${PDY}/${cyc}/model_data/atmos/input/gfs_ctrl.nc" fi tgt="${COM_ATMOS_INPUT}/gfs_ctrl.nc" @@ -90,11 +89,10 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do err=$((err + rc)) for ftype in gfs_data sfc_data; do for ((tt = 1; tt <= 6; tt++)); do - #src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc" if [[ "${RUN:-}" = "gefs" ]]; then - src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc" + src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}.${PDY}/${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc" else - src="${BASE_CPLIC}/${CPL_ATMIC:-}/gfs.${PDY}${cyc}/model_data/atmos/input/${ftype}.tile${tt}.nc" + src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}.${PDY}/${cyc}/model_data/atmos/input/${ftype}.tile${tt}.nc" fi tgt="${COM_ATMOS_INPUT}/${ftype}.tile${tt}.nc" if [ ! -f ${tgt} ]; then diff --git a/sorc/setup-case.sh b/sorc/setup-case.sh index 3a77946fc7..9ff6afb504 100755 --- a/sorc/setup-case.sh +++ b/sorc/setup-case.sh @@ -5,8 +5,10 @@ GLOBALWORKFLOWTEMP=/contrib/Wei.Huang/run GLOBALWORKFLOWHOME=/contrib/Wei.Huang/src/global-workflow-cloud - ATMOSRES=48 +#ATMOSRES=48 #ATMOSRES=96 + ATMOSRES=192 +#ATMOSRES=384 PSLOT=c${ATMOSRES}atm EXPNAME=gfs PSLOT=c${ATMOSRES}atm @@ -15,9 +17,8 @@ COMROOT=${GLOBALWORKFLOWTEMP}/comroot EXPDIR=${GLOBALWORKFLOWTEMP}/expdir CONFIGDIR=${GLOBALWORKFLOWHOME}/parm/config -#export BASE_CPLIC=${COMROOT}/${PSLOT} - - mkdir -p ${COMROOT} ${EXPDIR} + export BASE_CPLIC=/contrib/Wei.Huang/data/ICs + export CPL_ATMIC=C${ATMOSRES} source ${GLOBALWORKFLOWHOME}/workflow/gw_setup.sh diff --git a/ush/load_fv3gfs_modules.sh b/ush/load_fv3gfs_modules.sh index 541c1d5e4e..5acc842990 100755 --- a/ush/load_fv3gfs_modules.sh +++ b/ush/load_fv3gfs_modules.sh @@ -7,8 +7,6 @@ if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then fi set -x -echo 'pjj900' -uname -n # Setup runtime environment by loading modules ulimit_s=$( ulimit -S -s ) @@ -18,34 +16,22 @@ source "${HOMEgfs}/ush/detect_machine.sh" source "${HOMEgfs}/ush/module-setup.sh" # Source versions file for runtime -#source "${HOMEgfs}/versions/run.ver" +source "${HOMEgfs}/versions/run.ver" # Load our modules: -#module use "${HOMEgfs}/modulefiles" - -#case "${MACHINE_ID}" in -# "wcoss2" | "hera" | "orion" | "hercules" | "gaea" | "jet" | "s4" | "noaacloud") -# module load "module_base.${MACHINE_ID}" -# ;; -# *) -# echo "WARNING: UNKNOWN PLATFORM" -# ;; -#esac - -#module list - -# pjj - use this to load modules (spack-stack ) -ROOT_DIR=${HOMEgfs}/sorc -#set +x -#Determine machine and load modules -# pjj - use consistent module setup (spack-stack) -source "${ROOT_DIR}/ufs_model.fd/tests/detect_machine.sh" -source "${ROOT_DIR}/ufs_model.fd/tests/module-setup.sh" -module use "${ROOT_DIR}/ufs_model.fd/modulefiles" -module load "ufs_${MACHINE_ID}.intel" -module load prod_util +module use "${HOMEgfs}/modulefiles" + +case "${MACHINE_ID}" in + "wcoss2" | "hera" | "orion" | "hercules" | "gaea" | "jet" | "s4" | "noaacloud") + module load "module_base.${MACHINE_ID}" + ;; + *) + echo "WARNING: UNKNOWN PLATFORM" + ;; +esac + module list -#set -x + echo $MACHINE_ID # Restore stack soft limit: diff --git a/workflow/hosts/awspw.yaml b/workflow/hosts/awspw.yaml index 906dafdb86..2ba303136e 100644 --- a/workflow/hosts/awspw.yaml +++ b/workflow/hosts/awspw.yaml @@ -1,6 +1,6 @@ BASE_GIT: '/work/noaa/global/glopara/git' DMPDIR: '/work/noaa/rstprod/dump' -BASE_CPLIC: '/contrib/Wei.Huang/run/comroot' +BASE_CPLIC: '/contrib/Wei.Huang/data/ICs' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 125910cc7e..e8e264ce7d 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -32,7 +32,9 @@ def stage_ic(self): print('cpl_atmic =', cpl_atmic) print('pslot =', pslot) print('prefix =', prefix) - prefix = f"{cpl_ic['BASE_CPLIC']}/{self._base['PSLOT']}/gfs.@Y@m@d/@H/model_data/atmos/input" + #prefix = f"{self.rotdir}/gfs.@Y@m@d/@H/model_data/atmos/input" + #prefix = f"{cpl_ic['BASE_CPLIC']}/{self._base['PSLOT']}/gfs.@Y@m@d/@H/model_data/atmos/input" + prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/gfs.@Y@m@d/@H/model_data/atmos/input" print('prefix =', prefix) for file in ['gfs_ctrl.nc'] + \ [f'{datatype}_data.tile{tile}.nc' diff --git a/workflow/rocoto/rocoto.py b/workflow/rocoto/rocoto.py index 0abb56cafb..988be8b455 100644 --- a/workflow/rocoto/rocoto.py +++ b/workflow/rocoto/rocoto.py @@ -144,8 +144,10 @@ def _create_innermost_task(task_dict: Dict[str, Any]) -> List[str]: strings.append(f'\t{partition}\n') strings.append(f'\t{walltime}\n') strings.append(f'\t{nodes}:ppn={ppn}:tpp={threads}\n') - if memory is not None: - strings.append(f'\t{memory}\n') + + #on AWS, check memory failed. So, comment out here to by-pass memory check. + #if memory is not None: + # strings.append(f'\t{memory}\n') if native is not None: strings.append(f'\t{native}\n') strings.append('\n') From 343a3ac434746adbc19b5686ab07a043cf5ae9d7 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 7 May 2024 20:15:18 +0000 Subject: [PATCH 23/37] update submodule hash --- sorc/gfs_utils.fd | 2 +- sorc/gsi_enkf.fd | 2 +- sorc/gsi_utils.fd | 2 +- sorc/ufs_model.fd | 2 +- sorc/ufs_utils.fd | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sorc/gfs_utils.fd b/sorc/gfs_utils.fd index de3708bfb0..a876e1f07e 160000 --- a/sorc/gfs_utils.fd +++ b/sorc/gfs_utils.fd @@ -1 +1 @@ -Subproject commit de3708bfb00cd51900e813b84fdf2a3be5d398b0 +Subproject commit a876e1f07e909925fa5fed9236e5746653befee3 diff --git a/sorc/gsi_enkf.fd b/sorc/gsi_enkf.fd index 2316996f76..457510c72e 160000 --- a/sorc/gsi_enkf.fd +++ b/sorc/gsi_enkf.fd @@ -1 +1 @@ -Subproject commit 2316996f767d8b4588c6886b66af7d26cfb0c5da +Subproject commit 457510c72e486b7b01db09e5b1a6f407778dc772 diff --git a/sorc/gsi_utils.fd b/sorc/gsi_utils.fd index 8e279f9c73..52021382a4 160000 --- a/sorc/gsi_utils.fd +++ b/sorc/gsi_utils.fd @@ -1 +1 @@ -Subproject commit 8e279f9c734097f673b07e80f385b2623d13ba4a +Subproject commit 52021382a458bb44a2f1f99b2b4b3c4c7ae50e7e diff --git a/sorc/ufs_model.fd b/sorc/ufs_model.fd index 8da4bbbe42..7fdb58cad0 160000 --- a/sorc/ufs_model.fd +++ b/sorc/ufs_model.fd @@ -1 +1 @@ -Subproject commit 8da4bbbe428cf1608fef7fbb9a2f2d8ce50a296e +Subproject commit 7fdb58cad0dad2f62ce7813c6719554d1c5a17af diff --git a/sorc/ufs_utils.fd b/sorc/ufs_utils.fd index e34f12dd40..d902d3959a 160000 --- a/sorc/ufs_utils.fd +++ b/sorc/ufs_utils.fd @@ -1 +1 @@ -Subproject commit e34f12dd40738ec1bbdfe1db65e3183949378b4b +Subproject commit d902d3959a9d57386d7790ded8cf81d48b5381e8 From ec03c7d7c701087dc912cebf9494486c6fc9db5e Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Sun, 12 May 2024 15:06:38 +0000 Subject: [PATCH 24/37] trying compile on GCP --- sorc/gsi_enkf.fd | 2 +- sorc/setup-case.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sorc/gsi_enkf.fd b/sorc/gsi_enkf.fd index 457510c72e..38bdb95640 160000 --- a/sorc/gsi_enkf.fd +++ b/sorc/gsi_enkf.fd @@ -1 +1 @@ -Subproject commit 457510c72e486b7b01db09e5b1a6f407778dc772 +Subproject commit 38bdb95640b72fb335092857680dd2f16e29940e diff --git a/sorc/setup-case.sh b/sorc/setup-case.sh index 9ff6afb504..b897a7903a 100755 --- a/sorc/setup-case.sh +++ b/sorc/setup-case.sh @@ -5,9 +5,9 @@ GLOBALWORKFLOWTEMP=/contrib/Wei.Huang/run GLOBALWORKFLOWHOME=/contrib/Wei.Huang/src/global-workflow-cloud -#ATMOSRES=48 + ATMOSRES=48 #ATMOSRES=96 - ATMOSRES=192 +#ATMOSRES=192 #ATMOSRES=384 PSLOT=c${ATMOSRES}atm EXPNAME=gfs From 0b53426bec21947067a048e285d2a04f4ec1ba68 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 21 May 2024 16:34:06 +0000 Subject: [PATCH 25/37] save AWS change --- parm/config/gfs/config.stage_ic | 6 ++- sorc/gdas.cd | 2 +- sorc/gsi_enkf.fd | 2 +- sorc/gsi_monitor.fd | 2 +- sorc/gsi_utils.fd | 2 +- sorc/setup-case.sh | 11 +++++- sorc/ufs_model.fd | 2 +- sorc/ufs_utils.fd | 2 +- sorc/upp.fd | 2 +- ush/forecast_postdet.sh | 24 ++++++++++++ ush/forecast_predet.sh | 66 ++++++++++++++++++++++++--------- workflow/hosts/awspw.yaml | 9 ++++- workflow/rocoto/gfs_tasks.py | 13 ++++++- workflow/setup_expt.py | 12 +++++- 14 files changed, 122 insertions(+), 33 deletions(-) diff --git a/parm/config/gfs/config.stage_ic b/parm/config/gfs/config.stage_ic index a3889b199a..adddee9251 100644 --- a/parm/config/gfs/config.stage_ic +++ b/parm/config/gfs/config.stage_ic @@ -16,13 +16,15 @@ case "${CASE}" in export CPL_WAVIC="workflow_${CASE}_refactored" ;; "C384") - export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c_refactored + #export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c_refactored + export CPL_ATMIC="${CASE}" export CPL_ICEIC=CPC_refactored export CPL_OCNIC=CPC3Dvar_refactored export CPL_WAVIC=workflow_C384_refactored ;; "C768") - export CPL_ATMIC=HR3C768 + #export CPL_ATMIC=HR3C768 + export CPL_ATMIC="${CASE}" export CPL_ICEIC=HR3marine export CPL_OCNIC=HR3marine export CPL_WAVIC=HR3marine diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 8fdaf3d522..2198b41956 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 8fdaf3d5229101364d38a6d86d75337871c3c374 +Subproject commit 2198b419567cf7efa7404cd076e76e01d86f9e58 diff --git a/sorc/gsi_enkf.fd b/sorc/gsi_enkf.fd index 2316996f76..b53740a7bd 160000 --- a/sorc/gsi_enkf.fd +++ b/sorc/gsi_enkf.fd @@ -1 +1 @@ -Subproject commit 2316996f767d8b4588c6886b66af7d26cfb0c5da +Subproject commit b53740a7bd1cc416f634589075b8c8b89f0ef761 diff --git a/sorc/gsi_monitor.fd b/sorc/gsi_monitor.fd index f298c9f04d..8efe38eade 160000 --- a/sorc/gsi_monitor.fd +++ b/sorc/gsi_monitor.fd @@ -1 +1 @@ -Subproject commit f298c9f04d6667188c566ed3cbc198f6596523e7 +Subproject commit 8efe38eadebbd5d50284aee44f6d8b6799a7f6e6 diff --git a/sorc/gsi_utils.fd b/sorc/gsi_utils.fd index 8e279f9c73..67b014d8d3 160000 --- a/sorc/gsi_utils.fd +++ b/sorc/gsi_utils.fd @@ -1 +1 @@ -Subproject commit 8e279f9c734097f673b07e80f385b2623d13ba4a +Subproject commit 67b014d8d3e5acc1d21aca15e3fe2d66d327a206 diff --git a/sorc/setup-case.sh b/sorc/setup-case.sh index 9ff6afb504..9b864ac4f9 100755 --- a/sorc/setup-case.sh +++ b/sorc/setup-case.sh @@ -6,19 +6,26 @@ GLOBALWORKFLOWTEMP=/contrib/Wei.Huang/run GLOBALWORKFLOWHOME=/contrib/Wei.Huang/src/global-workflow-cloud #ATMOSRES=48 -#ATMOSRES=96 - ATMOSRES=192 + ATMOSRES=96 +#ATMOSRES=192 #ATMOSRES=384 PSLOT=c${ATMOSRES}atm EXPNAME=gfs PSLOT=c${ATMOSRES}atm +#PSLOT=C48C48mx500 IDATE=2024010100 EDATE=2024010100 +#IDATE=2021032306 +#EDATE=2021032306 COMROOT=${GLOBALWORKFLOWTEMP}/comroot EXPDIR=${GLOBALWORKFLOWTEMP}/expdir CONFIGDIR=${GLOBALWORKFLOWHOME}/parm/config export BASE_CPLIC=/contrib/Wei.Huang/data/ICs export CPL_ATMIC=C${ATMOSRES} +#export BASE_CPLIC=/contrib/Wei.Huang/data/ICs +#export CPL_ATMIC=C48C48mx500 +#export IC_PREFIX=gdas +#export IC_TYPE=restart source ${GLOBALWORKFLOWHOME}/workflow/gw_setup.sh diff --git a/sorc/ufs_model.fd b/sorc/ufs_model.fd index 8da4bbbe42..7fdb58cad0 160000 --- a/sorc/ufs_model.fd +++ b/sorc/ufs_model.fd @@ -1 +1 @@ -Subproject commit 8da4bbbe428cf1608fef7fbb9a2f2d8ce50a296e +Subproject commit 7fdb58cad0dad2f62ce7813c6719554d1c5a17af diff --git a/sorc/ufs_utils.fd b/sorc/ufs_utils.fd index e34f12dd40..f42fae239d 160000 --- a/sorc/ufs_utils.fd +++ b/sorc/ufs_utils.fd @@ -1 +1 @@ -Subproject commit e34f12dd40738ec1bbdfe1db65e3183949378b4b +Subproject commit f42fae239d0824f7b9a83c9afdc3d980894c7df8 diff --git a/sorc/upp.fd b/sorc/upp.fd index 13d5b6d50b..4770a2f509 160000 --- a/sorc/upp.fd +++ b/sorc/upp.fd @@ -1 +1 @@ -Subproject commit 13d5b6d50bfa159380b5d7647723ca9f65cc60ba +Subproject commit 4770a2f509b7122e76c4f004210031a58ae9502c diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index fd1ef9a078..ebf5607acf 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -8,6 +8,14 @@ FV3_postdet() { echo "warm_start = ${warm_start}" echo "RERUN = ${RERUN}" + PLATFORM_NAME="${PW_CSP:-NotOnPW_CSP}" + echo "PLATFORM_NAME: $PLATFORM_NAME" + + if [[ "$PLATFORM_NAME" == "aws" ]]; then + NCP="rsync " + NLN="echo " + fi + # cold start case if [[ "${warm_start}" == ".false." ]]; then @@ -210,6 +218,14 @@ FV3_nml() { FV3_out() { echo "SUB ${FUNCNAME[0]}: copying output data for FV3" + PLATFORM_NAME="${PW_CSP:-NotOnPW_CSP}" + echo "PLATFORM_NAME: $PLATFORM_NAME" + + if [[ "$PLATFORM_NAME" == "aws" ]]; then + NCP="rsync " + NLN="echo " + fi + # Copy configuration files if [[ "${RUN}" == "gfs" || "${RUN}" == "gefs" ]]; then ${NCP} "${DATA}/input.nml" "${COM_CONF}/ufs.input.nml" @@ -262,6 +278,14 @@ FV3_out() { WW3_postdet() { echo "SUB ${FUNCNAME[0]}: Linking input data for WW3" + PLATFORM_NAME="${PW_CSP:-NotOnPW_CSP}" + echo "PLATFORM_NAME: $PLATFORM_NAME" + + if [[ "$PLATFORM_NAME" == "aws" ]]; then + NCP="rsync " + NLN="echo " + fi + local ww3_grid # Copy initial condition files: if [[ "${warm_start}" == ".true." ]]; then diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index a5944d5bd2..955ba62580 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -80,7 +80,17 @@ FV3_predet(){ if [[ ! -d "${COM_ATMOS_MASTER}" ]]; then mkdir -p "${COM_ATMOS_MASTER}"; fi if [[ ! -d "${COM_ATMOS_RESTART}" ]]; then mkdir -p "${COM_ATMOS_RESTART}"; fi if [[ ! -d "${DATArestart}/FV3_RESTART" ]]; then mkdir -p "${DATArestart}/FV3_RESTART"; fi - ${NLN} "${DATArestart}/FV3_RESTART" "${DATA}/RESTART" + + PLATFORM_NAME="${PW_CSP:-NotOnPW_CSP}" + echo "PLATFORM_NAME: $PLATFORM_NAME" + + if [[ "$PLATFORM_NAME" == "aws" ]]; then + cp --reflink=always -r "${DATArestart}/FV3_RESTART" "${DATA}/RESTART" + #NCP="rsync -ut" + NCP="rsync " + else + ${NLN} "${DATArestart}/FV3_RESTART" "${DATA}/RESTART" + fi FHZER=${FHZER:-6} FHCYC=${FHCYC:-24} @@ -353,11 +363,14 @@ FV3_predet(){ [[ ! -f "${FNSMCC}" ]] && FNSMCC="${FIXgfs}/am/global_soilmgldas.statsgo.t1534.3072.1536.grb" # Grid and orography data - if [[ "${cplflx}" == ".false." ]] ; then - ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc" "${DATA}/INPUT/grid_spec.nc" - else - ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc" "${DATA}/INPUT/${CASE}_mosaic.nc" - fi + #if [[ "${cplflx}" == ".false." ]] ; then + # #${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc" "${DATA}/INPUT/grid_spec.nc" + # echo ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc" "${DATA}/INPUT/grid_spec.nc" + #else + # ${NCP} /contrib/Wei.Huang/data/ICs/C384/gfs.20240101/00/model_data/atmos/input/grid_spec.nc "${DATA}/INPUT/grid_spec.nc" + # ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc" "${DATA}/INPUT/${CASE}_mosaic.nc" + # ${NCP} /contrib/Wei.Huang/data/hack-orion/fix/mom6/20231219/025/ocean_mosaic.nc "${DATA}/INPUT/ocean_mosaic.nc" + #fi # Files for GWD ${NCP} "${FIXgfs}/ugwd/ugwp_limb_tau.nc" "${DATA}/ugwp_limb_tau.nc" @@ -468,7 +481,11 @@ WW3_predet(){ if [[ ! -d "${COM_WAVE_RESTART}" ]]; then mkdir -p "${COM_WAVE_RESTART}" ; fi if [[ ! -d "${DATArestart}/WAVE_RESTART" ]]; then mkdir -p "${DATArestart}/WAVE_RESTART"; fi - ${NLN} "${DATArestart}/WAVE_RESTART" "${DATA}/restart_wave" + if [[ "$PLATFORM_NAME" == "aws" ]]; then + cp --reflink=always -r "${DATArestart}/WAVE_RESTART" "${DATA}/restart_wave" + else + ${NLN} "${DATArestart}/WAVE_RESTART" "${DATA}/restart_wave" + fi # Files from wave prep and wave init jobs # Copy mod_def files for wave grids @@ -546,7 +563,11 @@ CICE_predet(){ if [[ ! -d "${DATA}/CICE_OUTPUT" ]]; then mkdir -p "${DATA}/CICE_OUTPUT"; fi if [[ ! -d "${DATArestart}/CICE_RESTART" ]]; then mkdir -p "${DATArestart}/CICE_RESTART"; fi - ${NLN} "${DATArestart}/CICE_RESTART" "${DATA}/CICE_RESTART" + if [[ "$PLATFORM_NAME" == "aws" ]]; then + cp --reflink=always -r "${DATArestart}/CICE_RESTART" "${DATA}/CICE_RESTART" + else + ${NLN} "${DATArestart}/CICE_RESTART" "${DATA}/CICE_RESTART" + fi # CICE does not have a concept of high frequency output like FV3 # Convert output settings into an explicit list for CICE @@ -569,7 +590,11 @@ MOM6_predet(){ if [[ ! -d "${DATA}/MOM6_OUTPUT" ]]; then mkdir -p "${DATA}/MOM6_OUTPUT"; fi if [[ ! -d "${DATArestart}/MOM6_RESTART" ]]; then mkdir -p "${DATArestart}/MOM6_RESTART"; fi - ${NLN} "${DATArestart}/MOM6_RESTART" "${DATA}/MOM6_RESTART" + if [[ "$PLATFORM_NAME" == "aws" ]]; then + cp --reflink=always -r "${DATArestart}/MOM6_RESTART" "${DATA}/MOM6_RESTART" + else + ${NLN} "${DATArestart}/MOM6_RESTART" "${DATA}/MOM6_RESTART" + fi # MOM6 does not have a concept of high frequency output like FV3 # Convert output settings into an explicit list for MOM6 @@ -594,14 +619,15 @@ MOM6_predet(){ ${NCP} "${FIXgfs}/mom6/${OCNRES}/"* "${DATA}/INPUT/" # TODO: These need to be explicit # Copy coupled grid_spec - local spec_file - spec_file="${FIXgfs}/cpl/a${CASE}o${OCNRES}/grid_spec.nc" - if [[ -s "${spec_file}" ]]; then - ${NCP} "${spec_file}" "${DATA}/INPUT/" - else - echo "FATAL ERROR: coupled grid_spec file '${spec_file}' does not exist" - exit 3 - fi + #${NCP} /contrib/Wei.Huang/data/ICs/C384/gfs.20240101/00/model_data/atmos/input/grid_spec.nc "${DATA}/INPUT/grid_spec.nc" + #local spec_file + #spec_file="${FIXgfs}/cpl/a${CASE}o${OCNRES}/grid_spec.nc" + #if [[ -s "${spec_file}" ]]; then + # ${NCP} "${spec_file}" "${DATA}/INPUT/" + #else + # echo "FATAL ERROR: coupled grid_spec file '${spec_file}' does not exist" + # exit 3 + #fi } @@ -611,7 +637,11 @@ CMEPS_predet(){ if [[ ! -d "${COM_MED_RESTART}" ]]; then mkdir -p "${COM_MED_RESTART}"; fi if [[ ! -d "${DATArestart}/CMEPS_RESTART" ]]; then mkdir -p "${DATArestart}/CMEPS_RESTART"; fi - ${NLN} "${DATArestart}/CMEPS_RESTART" "${DATA}/CMEPS_RESTART" + if [[ "$PLATFORM_NAME" == "aws" ]]; then + cp --reflink=always -r "${DATArestart}/CMEPS_RESTART" "${DATA}/CMEPS_RESTART" + else + ${NLN} "${DATArestart}/CMEPS_RESTART" "${DATA}/CMEPS_RESTART" + fi } diff --git a/workflow/hosts/awspw.yaml b/workflow/hosts/awspw.yaml index 2ba303136e..384c8a6da4 100644 --- a/workflow/hosts/awspw.yaml +++ b/workflow/hosts/awspw.yaml @@ -1,11 +1,16 @@ BASE_GIT: '/work/noaa/global/glopara/git' DMPDIR: '/work/noaa/rstprod/dump' BASE_CPLIC: '/contrib/Wei.Huang/data/ICs' +IC_PREFIX: 'gfs' +IC_TYPE: 'input' +BASE_CPLIC: '/contrib/Wei.Huang/data/ICs' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' -STMP: '/contrib/${USER}/stmp' -PTMP: '/contrib/${USER}/ptmp' +#STMP: '/contrib/${USER}/stmp' +#PTMP: '/contrib/${USER}/ptmp' +STMP: '/lustre/${USER}/stmp' +PTMP: '/lustre/${USER}/ptmp' NOSCRUB: '/contrib/${USER}/scrub' SCHEDULER: slurm ACCOUNT: $USER diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index e8e264ce7d..066b400ff3 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -25,6 +25,7 @@ def stage_ic(self): # Atm ICs if self.app_config.do_atm: pslot = self._base['PSLOT'] + #print('cpl_ic:', cpl_ic) prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/@Y@m@d@H/atmos" base_cplic = f"{cpl_ic['BASE_CPLIC']}" cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" @@ -34,7 +35,17 @@ def stage_ic(self): print('prefix =', prefix) #prefix = f"{self.rotdir}/gfs.@Y@m@d/@H/model_data/atmos/input" #prefix = f"{cpl_ic['BASE_CPLIC']}/{self._base['PSLOT']}/gfs.@Y@m@d/@H/model_data/atmos/input" - prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/gfs.@Y@m@d/@H/model_data/atmos/input" + #prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/gfs.@Y@m@d/@H/model_data/atmos/input" + icdir = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}" + if('IC_PREFIX' in cpl_ic.keys()): + cpl_ic_prefix = f"{icdir}/{cpl_ic['IC_PREFIX']}" + else: + cpl_ic_prefix = 'gfs' + if('IC_TYPE' in cpl_ic.keys()): + cpl_ic_type = f"{cpl_ic['IC_TYPE']}" + else: + cpl_ic_type = 'input' + prefix = f"{icdir}/{cpl_ic_prefix}.@Y@m@d/@H/model_data/atmos/{cpl_ic_type}" print('prefix =', prefix) for file in ['gfs_ctrl.nc'] + \ [f'{datatype}_data.tile{tile}.nc' diff --git a/workflow/setup_expt.py b/workflow/setup_expt.py index 9602b66b60..6cd2da7007 100755 --- a/workflow/setup_expt.py +++ b/workflow/setup_expt.py @@ -279,6 +279,15 @@ def _update_defaults(dict_in: dict) -> dict: defaults.update(dict_in) return defaults + print('host:', host) + print('inputs:', inputs) + + print('dir(host):', dir(host)) + print('dir(inputs):', dir(inputs)) + + print('vars(host):', vars(host)) + print('vars(inputs):', vars(inputs)) + # Read in the YAML file to fill out templates and override host defaults data = AttrDict(host.info, **inputs.__dict__) data.HOMEgfs = _top @@ -587,7 +596,8 @@ def main(*argv): print(f'EXPDIR: {expdir}') print(f'ROTDIR: {rotdir}') print(f"*" * 100) - + print('host:', host) + print('user_inputs:', user_inputs) if __name__ == '__main__': From 75af7b76513d2acafb567e882337590550a17376 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 28 May 2024 21:53:03 +0000 Subject: [PATCH 26/37] change google CPU numbers --- parm/config/gfs/config.resources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index 7360b885bf..c4e38dca14 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -66,7 +66,7 @@ case ${machine} in ;; "GOOGLEPW") export PARTITION_BATCH="compute" - npe_node_max=24 + npe_node_max=30 ;; "CONTAINER") npe_node_max=1 From f9c4fc7f923d19b3ed6d7d1d15229d88e7b428c0 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Wed, 29 May 2024 19:28:27 +0000 Subject: [PATCH 27/37] tidying up AWS changes --- parm/config/gfs/config.stage_ic | 27 +++++++++++------- scripts/exglobal_atmos_products.sh | 22 -------------- scripts/exglobal_stage_ic.sh | 25 ++++++---------- sorc/.gitignore | 46 ------------------------------ sorc/build_all.sh | 2 +- sorc/com.slurm | 2 +- sorc/gdas.cd | 2 +- sorc/gsi_enkf.fd | 2 +- sorc/gsi_monitor.fd | 2 +- sorc/link_workflow.sh | 2 -- sorc/setup-case.sh | 8 ++++-- sorc/upp.fd | 2 +- ush/exglobal_prep_ocean_obs.py | 1 - ush/forecast_postdet.sh | 9 ------ ush/forecast_predet.sh | 30 ++++--------------- ush/load_fv3gfs_modules.sh | 8 ++---- ush/module-setup.sh | 7 +---- workflow/hosts.py | 4 +-- workflow/hosts/awspw.yaml | 2 +- workflow/rocoto/gfs_tasks.py | 39 ++++++++++++------------- workflow/rocoto/rocoto.py | 8 ++++-- workflow/rocoto/tasks.py | 14 ++++----- workflow/rocoto/workflow_xml.py | 27 ++++++++++++------ workflow/setup_expt.py | 11 ------- 24 files changed, 96 insertions(+), 206 deletions(-) delete mode 100644 sorc/.gitignore delete mode 120000 ush/exglobal_prep_ocean_obs.py diff --git a/parm/config/gfs/config.stage_ic b/parm/config/gfs/config.stage_ic index 773afcd644..d418829474 100644 --- a/parm/config/gfs/config.stage_ic +++ b/parm/config/gfs/config.stage_ic @@ -9,22 +9,29 @@ source "${EXPDIR}/config.resources" stage_ic case "${CASE}" in "C48" | "C96" | "C192") - #export CPL_ATMIC="workflow_${CASE}_refactored" - export CPL_ATMIC="${CASE}" - export CPL_ICEIC="workflow_${CASE}_refactored" - export CPL_OCNIC="workflow_${CASE}_refactored" - export CPL_WAVIC="workflow_${CASE}_refactored" - ;; + echo "COM_ATMOS_INPUT: $COM_ATMOS_INPUT" + echo "BASE_CPLIC: $BASE_CPLIC" + echo "CPL_ATMIC: $CPL_ATMIC" + echo "PW_CSP: $PW_CSP" + + case "${PW_CSP}" in + "aws" | "azure" | "google") + export CPL_ATMIC="${CASE}" + ;; + *) + export CPL_ATMIC="workflow_${CASE}_refactored" + export CPL_ICEIC="workflow_${CASE}_refactored" + export CPL_OCNIC="workflow_${CASE}_refactored" + export CPL_WAVIC="workflow_${CASE}_refactored" + ;; "C384") - #export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c_refactored - export CPL_ATMIC="${CASE}" + export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c_refactored export CPL_ICEIC=CPC_refactored export CPL_OCNIC=CPC3Dvar_refactored export CPL_WAVIC=workflow_C384_refactored ;; "C768") - #export CPL_ATMIC=HR3C768 - export CPL_ATMIC="${CASE}" + export CPL_ATMIC=HR3C768 export CPL_ICEIC=HR3marine export CPL_OCNIC=HR3marine export CPL_WAVIC=HR3marine diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index d363962380..9067819380 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -3,28 +3,6 @@ source "${USHgfs}/preamble.sh" # Programs used -if [[ ${WGRIB2:-"NEEDLOAD"} == "NEEDLOAD" ]]; then -# Find module command and purge: - source "${HOMEgfs}/ush/detect_machine.sh" - source "${HOMEgfs}/ush/module-setup.sh" - -# Source versions file for runtime - source "${HOMEgfs}/versions/run.ver" - -# Load our modules: - module use "${HOMEgfs}/modulefiles" - - case "${MACHINE_ID}" in - "wcoss2" | "hera" | "orion" | "hercules" | "gaea" | "jet" | "s4" | "noaacloud") - module load "module_base.${MACHINE_ID}" - ;; - *) - echo "WARNING: UNKNOWN PLATFORM" - ;; - esac - - module list -fi export WGRIB2=${WGRIB2:-${wgrib2_ROOT}/bin/wgrib2} # Scripts used diff --git a/scripts/exglobal_stage_ic.sh b/scripts/exglobal_stage_ic.sh index a972622615..2ee674c950 100755 --- a/scripts/exglobal_stage_ic.sh +++ b/scripts/exglobal_stage_ic.sh @@ -68,22 +68,17 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do # Stage the FV3 cold-start initial conditions to ROTDIR YMD=${PDY} HH=${cyc} declare_from_tmpl COM_ATMOS_INPUT [[ ! -d "${COM_ATMOS_INPUT}" ]] && mkdir -p "${COM_ATMOS_INPUT}" - if [[ "${RUN:-}" = "gefs" ]]; then - src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}PDY}/${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" - else + + echo "COM_ATMOS_INPUT: $COM_ATMOS_INPUT" + echo "BASE_CPLIC: $BASE_CPLIC" + echo "CPL_ATMIC: $CPL_ATMIC" + + src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}/${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" + if [[ ! -f ${src} ]]; then + echo "PW_CSP: $PW_CSP" src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}.${PDY}/${cyc}/model_data/atmos/input/gfs_ctrl.nc" fi tgt="${COM_ATMOS_INPUT}/gfs_ctrl.nc" - - echo "BASE_CPLIC=$BASE_CPLIC" - echo "CPL_ATMIC=$CPL_ATMIC" - echo "PDY=$PDY" - echo "cyc=$cyc" - echo "COM_ATMOS_INPUT=$COM_ATMOS_INPUT" - echo "MEMDIR=$MEMDIR" - echo "NCP=$NCP" - echo "src=$src" - echo "tgt=$tgt" if [ ! -f ${tgt} ]; then ${NCP} "${src}" "${tgt}" rc=$? @@ -95,9 +90,7 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do for ftype in gfs_data sfc_data; do for ((tt = 1; tt <= ntiles; tt++)); do src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc" - if [[ "${RUN:-}" = "gefs" ]]; then - src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}.${PDY}/${cyc}/${MEMDIR}/atmos/${ftype}.tile${tt}.nc" - else + if [[ ! -f ${src} ]]; then src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}.${PDY}/${cyc}/model_data/atmos/input/${ftype}.tile${tt}.nc" fi tgt="${COM_ATMOS_INPUT}/${ftype}.tile${tt}.nc" diff --git a/sorc/.gitignore b/sorc/.gitignore deleted file mode 100644 index 181cdd9193..0000000000 --- a/sorc/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -calc_analysis.fd -calc_increment_ens.fd -calc_increment_ens_ncio.fd -emcsfc_ice_blend.fd -emcsfc_snow2mdl.fd -enkf.fd -enkf_chgres_recenter_nc.fd -fbwndgfs.fd -gaussian_sfcanl.fd -getsfcensmeanp.fd -getsigensmeanp_smooth.fd -getsigensstatp.fd -gfs_bufr.fd -global_cycle.fd -gsi.fd -interp_inc.fd -logs/ -ocnicepost.fd -overgridid.fd -oznmon_horiz.fd -oznmon_time.fd -radmon_angle.fd -radmon_bcoef.fd -radmon_bcor.fd -radmon_time.fd -rdbfmsua.fd -recentersigp.fd -supvit.fd -syndat_getjtbul.fd -syndat_maksynrc.fd -syndat_qctropcy.fd -tave.fd -tocsbufr.fd -vint.fd -webtitle.fd -gdas.cd/ -gfs_utils.fd/ -gsi_enkf.fd/ -gsi_monitor.fd/ -gsi_utils.fd/ -mkgfsawps.fd -ufs_model.fd/ -ufs_utils.fd/ -upp.fd/ -verif-global.fd/ -wxflow/ diff --git a/sorc/build_all.sh b/sorc/build_all.sh index 8068f90fe1..19d7447f25 100755 --- a/sorc/build_all.sh +++ b/sorc/build_all.sh @@ -145,7 +145,7 @@ build_opts["ww3prepost"]="${_wave_opt} ${_verbose_opt} ${_build_ufs_opt} ${_buil # Optional DA builds if [[ "${_build_ufsda}" == "YES" ]]; then - build_jobs["gdas"]=24 + build_jobs["gdas"]=8 big_jobs=$((big_jobs+1)) build_opts["gdas"]="${_verbose_opt} ${_build_debug}" fi diff --git a/sorc/com.slurm b/sorc/com.slurm index 4af46e9492..5d0ded6832 100644 --- a/sorc/com.slurm +++ b/sorc/com.slurm @@ -3,7 +3,7 @@ #SBATCH --account=$USER #SBATCH --qos=batch #SBATCH --partition=compute -#SBATCH -t 01:15:00 +#SBATCH -t 04:15:00 #SBATCH --nodes=1 ##SBATCH --tasks-per-node=36 ##SBATCH --cpus-per-task=1 diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 8fdaf3d522..2198b41956 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 8fdaf3d5229101364d38a6d86d75337871c3c374 +Subproject commit 2198b419567cf7efa7404cd076e76e01d86f9e58 diff --git a/sorc/gsi_enkf.fd b/sorc/gsi_enkf.fd index 38bdb95640..b53740a7bd 160000 --- a/sorc/gsi_enkf.fd +++ b/sorc/gsi_enkf.fd @@ -1 +1 @@ -Subproject commit 38bdb95640b72fb335092857680dd2f16e29940e +Subproject commit b53740a7bd1cc416f634589075b8c8b89f0ef761 diff --git a/sorc/gsi_monitor.fd b/sorc/gsi_monitor.fd index f298c9f04d..8efe38eade 160000 --- a/sorc/gsi_monitor.fd +++ b/sorc/gsi_monitor.fd @@ -1 +1 @@ -Subproject commit f298c9f04d6667188c566ed3cbc198f6596523e7 +Subproject commit 8efe38eadebbd5d50284aee44f6d8b6799a7f6e6 diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index d4ea2e2f47..366cbc0245 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -19,8 +19,6 @@ EOF exit 1 } -set -x - RUN_ENVIR="emc" # Reset option counter in case this script is sourced diff --git a/sorc/setup-case.sh b/sorc/setup-case.sh index e06b357a12..530cd47ba9 100755 --- a/sorc/setup-case.sh +++ b/sorc/setup-case.sh @@ -3,7 +3,6 @@ #set -x - GLOBALWORKFLOWTEMP=/contrib/Wei.Huang/run GLOBALWORKFLOWHOME=/contrib/Wei.Huang/src/global-workflow-cloud #ATMOSRES=48 ATMOSRES=96 @@ -17,8 +16,13 @@ EDATE=2024010100 #IDATE=2021032306 #EDATE=2021032306 + + GLOBALWORKFLOWTEMP=/lustre/Wei.Huang/run COMROOT=${GLOBALWORKFLOWTEMP}/comroot + + GLOBALWORKFLOWTEMP=/lustre/Wei.Huang/run EXPDIR=${GLOBALWORKFLOWTEMP}/expdir + CONFIGDIR=${GLOBALWORKFLOWHOME}/parm/config export BASE_CPLIC=/contrib/Wei.Huang/data/ICs export CPL_ATMIC=C${ATMOSRES} @@ -30,7 +34,7 @@ #workflow/hosts/awspw.yaml export STMP=/lustre/${USER}/stmp export PTMP=/lustre/${USER}/ptmp - export NOSCRUB=/bucket/${USER}/archive + export NOSCRUB=/s3bucket/${USER}/archive source ${GLOBALWORKFLOWHOME}/workflow/gw_setup.sh diff --git a/sorc/upp.fd b/sorc/upp.fd index 13d5b6d50b..4770a2f509 160000 --- a/sorc/upp.fd +++ b/sorc/upp.fd @@ -1 +1 @@ -Subproject commit 13d5b6d50bfa159380b5d7647723ca9f65cc60ba +Subproject commit 4770a2f509b7122e76c4f004210031a58ae9502c diff --git a/ush/exglobal_prep_ocean_obs.py b/ush/exglobal_prep_ocean_obs.py deleted file mode 120000 index 75133748af..0000000000 --- a/ush/exglobal_prep_ocean_obs.py +++ /dev/null @@ -1 +0,0 @@ -/contrib/Wei.Huang/src/global-workflow-cloud/sorc/gdas.cd/scripts/exglobal_prep_ocean_obs.py \ No newline at end of file diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 376ec03102..f5a2bec07c 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -8,9 +8,6 @@ FV3_postdet() { echo "warm_start = ${warm_start}" echo "RERUN = ${RERUN}" - PLATFORM_NAME="${PW_CSP:-NotOnPW_CSP}" - echo "PLATFORM_NAME: $PLATFORM_NAME" - # cold start case if [[ "${warm_start}" == ".false." ]]; then @@ -219,9 +216,6 @@ FV3_nml() { FV3_out() { echo "SUB ${FUNCNAME[0]}: copying output data for FV3" - PLATFORM_NAME="${PW_CSP:-NotOnPW_CSP}" - echo "PLATFORM_NAME: $PLATFORM_NAME" - # Copy configuration files if [[ "${RUN}" == "gfs" || "${RUN}" == "gefs" ]]; then ${NCP} "${DATA}/input.nml" "${COM_CONF}/ufs.input.nml" @@ -276,9 +270,6 @@ FV3_out() { WW3_postdet() { echo "SUB ${FUNCNAME[0]}: Linking input data for WW3" - PLATFORM_NAME="${PW_CSP:-NotOnPW_CSP}" - echo "PLATFORM_NAME: $PLATFORM_NAME" - local ww3_grid # Copy initial condition files: if [[ "${warm_start}" == ".true." ]]; then diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 96e10ce567..de414437b1 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -87,7 +87,6 @@ FV3_predet(){ if [[ ! -d "${COM_ATMOS_MASTER}" ]]; then mkdir -p "${COM_ATMOS_MASTER}"; fi if [[ ! -d "${COM_ATMOS_RESTART}" ]]; then mkdir -p "${COM_ATMOS_RESTART}"; fi if [[ ! -d "${DATArestart}/FV3_RESTART" ]]; then mkdir -p "${DATArestart}/FV3_RESTART"; fi - ${NLN} "${DATArestart}/FV3_RESTART" "${DATA}/RESTART" FHZER=${FHZER:-6} @@ -368,10 +367,7 @@ FV3_predet(){ if [[ "${cplflx}" == ".false." ]] ; then ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc" "${DATA}/INPUT/grid_spec.nc" else - #${NCP} /contrib/Wei.Huang/data/ICs/C384/gfs.20240101/00/model_data/atmos/input/grid_spec.nc "${DATA}/INPUT/grid_spec.nc" - ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc" "${DATA}/INPUT/grid_spec.nc" ${NCP} "${FIXgfs}/orog/${CASE}/${CASE}_mosaic.nc" "${DATA}/INPUT/${CASE}_mosaic.nc" - ${NCP} /contrib/Wei.Huang/data/hack-orion/fix/mom6/20231219/025/ocean_mosaic.nc "${DATA}/INPUT/ocean_mosaic.nc" fi # Files for GWD @@ -490,11 +486,7 @@ WW3_predet(){ if [[ ! -d "${COM_WAVE_RESTART}" ]]; then mkdir -p "${COM_WAVE_RESTART}" ; fi if [[ ! -d "${DATArestart}/WAVE_RESTART" ]]; then mkdir -p "${DATArestart}/WAVE_RESTART"; fi - if [[ "$PLATFORM_NAME" == "aws" ]]; then - cp --reflink=always -r "${DATArestart}/WAVE_RESTART" "${DATA}/restart_wave" - else - ${NLN} "${DATArestart}/WAVE_RESTART" "${DATA}/restart_wave" - fi + ${NLN} "${DATArestart}/WAVE_RESTART" "${DATA}/restart_wave" # Files from wave prep and wave init jobs # Copy mod_def files for wave grids @@ -572,11 +564,7 @@ CICE_predet(){ if [[ ! -d "${DATA}/CICE_OUTPUT" ]]; then mkdir -p "${DATA}/CICE_OUTPUT"; fi if [[ ! -d "${DATArestart}/CICE_RESTART" ]]; then mkdir -p "${DATArestart}/CICE_RESTART"; fi - if [[ "$PLATFORM_NAME" == "aws" ]]; then - cp --reflink=always -r "${DATArestart}/CICE_RESTART" "${DATA}/CICE_RESTART" - else - ${NLN} "${DATArestart}/CICE_RESTART" "${DATA}/CICE_RESTART" - fi + ${NLN} "${DATArestart}/CICE_RESTART" "${DATA}/CICE_RESTART" # CICE does not have a concept of high frequency output like FV3 # Convert output settings into an explicit list for CICE @@ -599,11 +587,7 @@ MOM6_predet(){ if [[ ! -d "${DATA}/MOM6_OUTPUT" ]]; then mkdir -p "${DATA}/MOM6_OUTPUT"; fi if [[ ! -d "${DATArestart}/MOM6_RESTART" ]]; then mkdir -p "${DATArestart}/MOM6_RESTART"; fi - if [[ "$PLATFORM_NAME" == "aws" ]]; then - cp --reflink=always -r "${DATArestart}/MOM6_RESTART" "${DATA}/MOM6_RESTART" - else - ${NLN} "${DATArestart}/MOM6_RESTART" "${DATA}/MOM6_RESTART" - fi + ${NLN} "${DATArestart}/MOM6_RESTART" "${DATA}/MOM6_RESTART" # MOM6 does not have a concept of high frequency output like FV3 # Convert output settings into an explicit list for MOM6 @@ -628,7 +612,7 @@ MOM6_predet(){ ${NCP} "${FIXgfs}/mom6/${OCNRES}/"* "${DATA}/INPUT/" # TODO: These need to be explicit # Copy coupled grid_spec - #local spec_file + local spec_file spec_file="${FIXgfs}/cpl/a${CASE}o${OCNRES}/grid_spec.nc" if [[ -s "${spec_file}" ]]; then ${NCP} "${spec_file}" "${DATA}/INPUT/" @@ -645,11 +629,7 @@ CMEPS_predet(){ if [[ ! -d "${COM_MED_RESTART}" ]]; then mkdir -p "${COM_MED_RESTART}"; fi if [[ ! -d "${DATArestart}/CMEPS_RESTART" ]]; then mkdir -p "${DATArestart}/CMEPS_RESTART"; fi - if [[ "$PLATFORM_NAME" == "aws" ]]; then - cp --reflink=always -r "${DATArestart}/CMEPS_RESTART" "${DATA}/CMEPS_RESTART" - else - ${NLN} "${DATArestart}/CMEPS_RESTART" "${DATA}/CMEPS_RESTART" - fi + ${NLN} "${DATArestart}/CMEPS_RESTART" "${DATA}/CMEPS_RESTART" } diff --git a/ush/load_fv3gfs_modules.sh b/ush/load_fv3gfs_modules.sh index 5acc842990..2cafc4fd81 100755 --- a/ush/load_fv3gfs_modules.sh +++ b/ush/load_fv3gfs_modules.sh @@ -2,12 +2,10 @@ ############################################################### if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then - echo "Loading modules quietly..BS." - set -x + echo "Loading modules quietly..." + set +x fi -set -x - # Setup runtime environment by loading modules ulimit_s=$( ulimit -S -s ) @@ -32,8 +30,6 @@ esac module list -echo $MACHINE_ID - # Restore stack soft limit: ulimit -S -s "${ulimit_s}" unset ulimit_s diff --git a/ush/module-setup.sh b/ush/module-setup.sh index 7f9b803b4d..398562652d 100755 --- a/ush/module-setup.sh +++ b/ush/module-setup.sh @@ -92,14 +92,9 @@ elif [[ ${MACHINE_ID} = discover* ]]; then # TODO: This can likely be made more general once other cloud # platforms come online. elif [[ ${MACHINE_ID} = "noaacloud" ]]; then + # We are on NOAA Cloud module purge - #module use /contrib/spack-stack/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core - #module load stack-intel/2021.3.0 stack-intel-oneapi-mpi/2021.3.0 - #export SPACK_ROOT=/contrib/spack-stack/spack-stack-1.6.0/spack - #export PATH=${PATH}:${SPACK_ROOT}/bin - #. "${SPACK_ROOT}"/share/spack/setup-env.sh - else echo WARNING: UNKNOWN PLATFORM 1>&2 fi diff --git a/workflow/hosts.py b/workflow/hosts.py index 451a2301f8..3ae95c38bb 100644 --- a/workflow/hosts.py +++ b/workflow/hosts.py @@ -15,7 +15,7 @@ class Host: """ SUPPORTED_HOSTS = ['HERA', 'ORION', 'JET', 'HERCULES', - 'WCOSS2', 'S4', 'CONTAINER', + 'WCOSS2', 'S4', 'CONTAINER', 'GAEA', 'AWSPW', 'AZUREPW', 'GOOGLEPW'] def __init__(self, host=None): @@ -55,7 +55,7 @@ def detect(cls): elif container is not None: machine = 'CONTAINER' elif pw_csp is not None: - if pw_csp.lower() not in ['azure', 'aws', 'gcp']: + if pw_csp.lower() not in ['azure', 'aws', 'google']: raise ValueError( f'NOAA cloud service provider "{pw_csp}" is not supported.') machine = f"{pw_csp.upper()}PW" diff --git a/workflow/hosts/awspw.yaml b/workflow/hosts/awspw.yaml index 384c8a6da4..98762825cd 100644 --- a/workflow/hosts/awspw.yaml +++ b/workflow/hosts/awspw.yaml @@ -1,9 +1,9 @@ BASE_GIT: '/work/noaa/global/glopara/git' DMPDIR: '/work/noaa/rstprod/dump' BASE_CPLIC: '/contrib/Wei.Huang/data/ICs' +CPL_ATMIC: 'C96' IC_PREFIX: 'gfs' IC_TYPE: 'input' -BASE_CPLIC: '/contrib/Wei.Huang/data/ICs' PACKAGEROOT: '/work/noaa/global/glopara/nwpara' COMINsyn: '/work/noaa/global/glopara/com/gfs/prod/syndat' HOMEDIR: '/contrib/${USER}/src/global-workflow-cloud' diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 13a3e4febd..23ad4a5363 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -3,6 +3,7 @@ from wxflow import timedelta_to_HMS import rocoto.rocoto as rocoto import numpy as np +import os class GFSTasks(Tasks): @@ -25,28 +26,24 @@ def stage_ic(self): # Atm ICs if self.app_config.do_atm: pslot = self._base['PSLOT'] - #print('cpl_ic:', cpl_ic) prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/@Y@m@d@H/atmos" - base_cplic = f"{cpl_ic['BASE_CPLIC']}" - cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" - print('base_cplic =', base_cplic) - print('cpl_atmic =', cpl_atmic) - print('pslot =', pslot) - print('prefix =', prefix) - #prefix = f"{self.rotdir}/gfs.@Y@m@d/@H/model_data/atmos/input" - #prefix = f"{cpl_ic['BASE_CPLIC']}/{self._base['PSLOT']}/gfs.@Y@m@d/@H/model_data/atmos/input" - #prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/gfs.@Y@m@d/@H/model_data/atmos/input" - icdir = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}" - if('IC_PREFIX' in cpl_ic.keys()): - cpl_ic_prefix = f"{icdir}/{cpl_ic['IC_PREFIX']}" - else: - cpl_ic_prefix = 'gfs' - if('IC_TYPE' in cpl_ic.keys()): - cpl_ic_type = f"{cpl_ic['IC_TYPE']}" - else: - cpl_ic_type = 'input' - prefix = f"{icdir}/{cpl_ic_prefix}.@Y@m@d/@H/model_data/atmos/{cpl_ic_type}" - print('prefix =', prefix) + + pw_csp = os.environ.get('PW_CSP') + if ( pw_csp in ['aws', 'azure', 'google'] ): + base_cplic = f"{cpl_ic['BASE_CPLIC']}" + #cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" + cpl_atmic = os.environ.get('CPL_ATMIC') + print('cpl_atmic = ', os.environ.get('CPL_ATMIC') + icdir = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}" + if('IC_PREFIX' in cpl_ic.keys()): + cpl_ic_prefix = f"{icdir}/{cpl_ic['IC_PREFIX']}" + else: + cpl_ic_prefix = 'gfs' + if('IC_TYPE' in cpl_ic.keys()): + cpl_ic_type = f"{cpl_ic['IC_TYPE']}" + else: + cpl_ic_type = 'input' + prefix = f"{icdir}/{cpl_ic_prefix}.@Y@m@d/@H/model_data/atmos/{cpl_ic_type}" for file in ['gfs_ctrl.nc'] + \ [f'{datatype}_data.tile{tile}.nc' for datatype in ['gfs', 'sfc'] diff --git a/workflow/rocoto/rocoto.py b/workflow/rocoto/rocoto.py index 988be8b455..7920d64f01 100644 --- a/workflow/rocoto/rocoto.py +++ b/workflow/rocoto/rocoto.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import os from typing import Union, List, Dict, Any ''' @@ -145,9 +146,10 @@ def _create_innermost_task(task_dict: Dict[str, Any]) -> List[str]: strings.append(f'\t{walltime}\n') strings.append(f'\t{nodes}:ppn={ppn}:tpp={threads}\n') - #on AWS, check memory failed. So, comment out here to by-pass memory check. - #if memory is not None: - # strings.append(f'\t{memory}\n') + pw_csp = os.environ.get('PW_CSP') + if pw_csp not in ['aws', 'azure', 'google']: + if memory is not None: + strings.append(f'\t{memory}\n') if native is not None: strings.append(f'\t{native}\n') strings.append('\n') diff --git a/workflow/rocoto/tasks.py b/workflow/rocoto/tasks.py index 5df1ba264f..04a2dce9a7 100644 --- a/workflow/rocoto/tasks.py +++ b/workflow/rocoto/tasks.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import os import numpy as np from applications.applications import AppConfig import rocoto.rocoto as rocoto @@ -167,11 +168,6 @@ def get_resource(self, task_name): scheduler = self.app_config.scheduler - #print('In workflow/rocoto/tasks.py') - #print('self.app_config = ', self.app_config) - #print('dir(self.app_config) = ', dir(self.app_config)) - #print('vars(self.app_config) = ', vars(self.app_config)) - task_config = self._configs[task_name] account = task_config['ACCOUNT'] @@ -212,9 +208,11 @@ def get_resource(self, task_name): else: native += ':shared' elif scheduler in ['slurm']: - #native = '--export=NONE' - #On AWS, need to set as: - native = '--export=ALL --exclusive' + pw_csp = os.environ.get('PW_CSP') + if ( pw_csp in ['aws', 'azure', 'google'] ): + native = '--export=ALL --exclusive' + else: + native = '--export=NONE' queue = task_config['QUEUE_SERVICE'] if task_name in Tasks.SERVICE_TASKS else task_config['QUEUE'] diff --git a/workflow/rocoto/workflow_xml.py b/workflow/rocoto/workflow_xml.py index 32430d6bc0..c586fba0f5 100644 --- a/workflow/rocoto/workflow_xml.py +++ b/workflow/rocoto/workflow_xml.py @@ -8,6 +8,7 @@ from applications.applications import AppConfig from rocoto.workflow_tasks import get_wf_tasks import rocoto.rocoto as rocoto +import numpy as np from abc import ABC, abstractmethod @@ -133,9 +134,9 @@ def _write_xml(self, xml_file: str = None) -> None: with open(xml_file, 'w') as fh: fh.write(self.xml) - def _write_crontab(self, crontab_file: str = None, cronint: int = 2) -> None: + def _write_crontab(self, crontab_file: str = None, cronint: int = 5) -> None: """ - Create crontab to execute rocotorun every cronint (2) minutes + Create crontab to execute rocotorun every cronint (5) minutes """ # No point creating a crontab if rocotorun is not available. @@ -156,13 +157,21 @@ def _write_crontab(self, crontab_file: str = None, cronint: int = 2) -> None: replyto = '' strings = ['', - f'#################### {pslot} ####################', - f'MAILTO="{replyto}"', - f'SHELL="/bin/bash"', - f'BASH_ENV="/etc/bashrc"', - f'{cronintstr} {rocotorunstr}', - '#################################################################', - ''] + f'#################### {pslot} ####################', + f'MAILTO="{replyto}"' + ] + pw_csp = os.environ.get('PW_CSP') + if ( pw_csp in ['aws', 'azure', 'google'] ): + strings = np.append(strings, + [ + f'SHELL="/bin/bash"', + f'BASH_ENV="/etc/bashrc"' + ]) + strings = np.append(strings, + [ + f'{cronintstr} {rocotorunstr}', + '#################################################################', + '']) if crontab_file is None: crontab_file = f"{expdir}/{pslot}.crontab" diff --git a/workflow/setup_expt.py b/workflow/setup_expt.py index 694425eb15..9d9c90162b 100755 --- a/workflow/setup_expt.py +++ b/workflow/setup_expt.py @@ -283,15 +283,6 @@ def _update_defaults(dict_in: dict) -> dict: defaults.update(dict_in) return defaults - print('host:', host) - print('inputs:', inputs) - - print('dir(host):', dir(host)) - print('dir(inputs):', dir(inputs)) - - print('vars(host):', vars(host)) - print('vars(inputs):', vars(inputs)) - # Read in the YAML file to fill out templates and override host defaults data = AttrDict(host.info, **inputs.__dict__) data.HOMEgfs = _top @@ -600,8 +591,6 @@ def main(*argv): print(f'EXPDIR: {expdir}') print(f'ROTDIR: {rotdir}') print(f"*" * 100) - print('host:', host) - print('user_inputs:', user_inputs) if __name__ == '__main__': From f2667d885cd67248323583d90fde70535bc03e62 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Wed, 29 May 2024 21:42:16 +0000 Subject: [PATCH 28/37] handle ICs differently on AWS --- parm/config/gfs/config.stage_ic | 1 + workflow/rocoto/gfs_tasks.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/parm/config/gfs/config.stage_ic b/parm/config/gfs/config.stage_ic index d418829474..a982f7c727 100644 --- a/parm/config/gfs/config.stage_ic +++ b/parm/config/gfs/config.stage_ic @@ -24,6 +24,7 @@ case "${CASE}" in export CPL_OCNIC="workflow_${CASE}_refactored" export CPL_WAVIC="workflow_${CASE}_refactored" ;; + esac "C384") export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c_refactored export CPL_ICEIC=CPC_refactored diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 23ad4a5363..6a348ab2d4 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -33,7 +33,7 @@ def stage_ic(self): base_cplic = f"{cpl_ic['BASE_CPLIC']}" #cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" cpl_atmic = os.environ.get('CPL_ATMIC') - print('cpl_atmic = ', os.environ.get('CPL_ATMIC') + print('cpl_atmic = ', os.environ.get('CPL_ATMIC')) icdir = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}" if('IC_PREFIX' in cpl_ic.keys()): cpl_ic_prefix = f"{icdir}/{cpl_ic['IC_PREFIX']}" From b8d3ef1942919a17c05b5184596541c9855c263c Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Wed, 29 May 2024 21:46:12 +0000 Subject: [PATCH 29/37] handle ICs differently on AWS --- parm/config/gfs/config.stage_ic | 1 + 1 file changed, 1 insertion(+) diff --git a/parm/config/gfs/config.stage_ic b/parm/config/gfs/config.stage_ic index a982f7c727..578e4eddea 100644 --- a/parm/config/gfs/config.stage_ic +++ b/parm/config/gfs/config.stage_ic @@ -25,6 +25,7 @@ case "${CASE}" in export CPL_WAVIC="workflow_${CASE}_refactored" ;; esac + ;; "C384") export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c_refactored export CPL_ICEIC=CPC_refactored From d0b8b509d908dd4421fbfeba7cb2c8921132e2d3 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 30 May 2024 14:05:36 +0000 Subject: [PATCH 30/37] tidying up --- parm/config/gfs/config.stage_ic | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/parm/config/gfs/config.stage_ic b/parm/config/gfs/config.stage_ic index 578e4eddea..ccfb575156 100644 --- a/parm/config/gfs/config.stage_ic +++ b/parm/config/gfs/config.stage_ic @@ -9,22 +9,19 @@ source "${EXPDIR}/config.resources" stage_ic case "${CASE}" in "C48" | "C96" | "C192") - echo "COM_ATMOS_INPUT: $COM_ATMOS_INPUT" - echo "BASE_CPLIC: $BASE_CPLIC" - echo "CPL_ATMIC: $CPL_ATMIC" - echo "PW_CSP: $PW_CSP" - case "${PW_CSP}" in - "aws" | "azure" | "google") - export CPL_ATMIC="${CASE}" - ;; - *) - export CPL_ATMIC="workflow_${CASE}_refactored" - export CPL_ICEIC="workflow_${CASE}_refactored" - export CPL_OCNIC="workflow_${CASE}_refactored" - export CPL_WAVIC="workflow_${CASE}_refactored" - ;; - esac + if [ -z ${PW_CSP+x} ]; then + export CPL_ATMIC="workflow_${CASE}_refactored" + export CPL_ICEIC="workflow_${CASE}_refactored" + export CPL_OCNIC="workflow_${CASE}_refactored" + export CPL_WAVIC="workflow_${CASE}_refactored" + else + echo "PW_CSP: $PW_CSP" + export CPL_ATMIC="${CASE}" + export CPL_ICEIC="${CASE}" + export CPL_OCNIC="${CASE}" + export CPL_WAVIC="${CASE}" + fi ;; "C384") export CPL_ATMIC=GEFS-NoahMP-aerosols-p8c_refactored From 613b0fc1a05cb3ee9cd3dfebef6a4057b3eaa259 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Wed, 12 Jun 2024 14:26:45 +0000 Subject: [PATCH 31/37] switch ufs-weather-model back --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 1d62a6e4c8..3514363414 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "sorc/ufs_model.fd"] path = sorc/ufs_model.fd - url = https://github.com/NOAA-EPIC/ufs-weather-model-cloud.git + url = https://github.com/ufs-community/ufs-weather-model.git ignore = dirty [submodule "sorc/wxflow"] path = sorc/wxflow From 9c8e01a214488aae82aaf91cd9ac1359e9d5bf28 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Wed, 12 Jun 2024 15:13:55 +0000 Subject: [PATCH 32/37] before final sync with EMC repo --- parm/config/gfs/config.base | 9 ++++++--- workflow/hosts/awspw.yaml | 11 ++++------- workflow/hosts/azurepw.yaml | 11 ++++------- workflow/hosts/googlepw.yaml | 11 ++++------- workflow/setup_expt.py | 1 + 5 files changed, 19 insertions(+), 24 deletions(-) diff --git a/parm/config/gfs/config.base b/parm/config/gfs/config.base index 50fcc168d7..9c0be42aae 100644 --- a/parm/config/gfs/config.base +++ b/parm/config/gfs/config.base @@ -72,9 +72,12 @@ export DO_BUFRSND="@DO_BUFRSND@" # BUFR sounding products export DO_GEMPAK="@DO_GEMPAK@" # GEMPAK products export DO_AWIPS="@DO_AWIPS@" # AWIPS products export DO_NPOESS="@DO_NPOESS@" # NPOESS products -export DO_TRACKER="@DO_TRACKER@" # Hurricane track verification -export DO_GENESIS="@DO_GENESIS@" # Cyclone genesis verification -export DO_GENESIS_FSU="@DO_GENESIS_FSU@" # Cyclone genesis verification (FSU) +#export DO_TRACKER="@DO_TRACKER@" # Hurricane track verification +#export DO_GENESIS="@DO_GENESIS@" # Cyclone genesis verification +#export DO_GENESIS_FSU="@DO_GENESIS_FSU@" # Cyclone genesis verification (FSU) +export DO_TRACKER="NO" # Hurricane track verification +export DO_GENESIS="NO" # Cyclone genesis verification +export DO_GENESIS_FSU="NO" # Cyclone genesis verification (FSU) export DO_VERFOZN="YES" # Ozone data assimilation monitoring export DO_VERFRAD="YES" # Radiance data assimilation monitoring export DO_VMINMON="YES" # GSI minimization monitoring diff --git a/workflow/hosts/awspw.yaml b/workflow/hosts/awspw.yaml index 653d418691..90546e6093 100644 --- a/workflow/hosts/awspw.yaml +++ b/workflow/hosts/awspw.yaml @@ -21,14 +21,11 @@ PARTITION_BATCH: compute PARTITION_SERVICE: compute RESERVATION: '' CHGRP_RSTPROD: 'YES' -CHGRP_CMD: 'chgrp rstprod' +CHGRP_CMD: 'chgrp rstprod' # TODO: This is not yet supported. HPSSARCH: 'NO' -HPSS_PROJECT: epic +HPSS_PROJECT: emc-global #TODO: See `ATARDIR` below. LOCALARCH: 'NO' -ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' +ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' # TODO: This will not yet work from AWS. MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' -SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] -COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf -COMINnam: /work/noaa/global/glopara/data/external_gempak/nam -COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet +SUPPORTED_RESOLUTIONS: ['C48', 'C96'] # TODO: Test and support all cubed-sphere resolutions. diff --git a/workflow/hosts/azurepw.yaml b/workflow/hosts/azurepw.yaml index c0e45a40db..640a8d97c5 100644 --- a/workflow/hosts/azurepw.yaml +++ b/workflow/hosts/azurepw.yaml @@ -14,14 +14,11 @@ QUEUE_SERVICE: batch PARTITION_BATCH: compute PARTITION_SERVICE: compute CHGRP_RSTPROD: 'YES' -CHGRP_CMD: 'chgrp rstprod' +CHGRP_CMD: 'chgrp rstprod' # TODO: This is not yet supported. HPSSARCH: 'NO' -HPSS_PROJECT: epic +HPSS_PROJECT: emc-global #TODO: See `ATARDIR` below. LOCALARCH: 'NO' -ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' +ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' # TODO: This will not yet work from AWS. MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' -SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] -COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf -COMINnam: /work/noaa/global/glopara/data/external_gempak/nam -COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet +SUPPORTED_RESOLUTIONS: ['C48', 'C96'] # TODO: Test and support all cubed-sphere resolutions. diff --git a/workflow/hosts/googlepw.yaml b/workflow/hosts/googlepw.yaml index c0e45a40db..640a8d97c5 100644 --- a/workflow/hosts/googlepw.yaml +++ b/workflow/hosts/googlepw.yaml @@ -14,14 +14,11 @@ QUEUE_SERVICE: batch PARTITION_BATCH: compute PARTITION_SERVICE: compute CHGRP_RSTPROD: 'YES' -CHGRP_CMD: 'chgrp rstprod' +CHGRP_CMD: 'chgrp rstprod' # TODO: This is not yet supported. HPSSARCH: 'NO' -HPSS_PROJECT: epic +HPSS_PROJECT: emc-global #TODO: See `ATARDIR` below. LOCALARCH: 'NO' -ATARDIR: '${NOSCRUB}/archive_rotdir/${PSLOT}' +ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' # TODO: This will not yet work from AWS. MAKE_NSSTBUFR: 'NO' MAKE_ACFTBUFR: 'NO' -SUPPORTED_RESOLUTIONS: ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'] -COMINecmwf: /work/noaa/global/glopara/data/external_gempak/ecmwf -COMINnam: /work/noaa/global/glopara/data/external_gempak/nam -COMINukmet: /work/noaa/global/glopara/data/external_gempak/ukmet +SUPPORTED_RESOLUTIONS: ['C48', 'C96'] # TODO: Test and support all cubed-sphere resolutions. diff --git a/workflow/setup_expt.py b/workflow/setup_expt.py index 9d9c90162b..97d25dc15a 100755 --- a/workflow/setup_expt.py +++ b/workflow/setup_expt.py @@ -592,6 +592,7 @@ def main(*argv): print(f'ROTDIR: {rotdir}') print(f"*" * 100) + if __name__ == '__main__': main() From 42f99903afeffe6e41c0472485a3a7efa74713f4 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 13 Jun 2024 13:39:52 +0000 Subject: [PATCH 33/37] make it also run on hera --- scripts/exglobal_stage_ic.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/exglobal_stage_ic.sh b/scripts/exglobal_stage_ic.sh index 2ee674c950..880538f5df 100755 --- a/scripts/exglobal_stage_ic.sh +++ b/scripts/exglobal_stage_ic.sh @@ -73,9 +73,11 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do echo "BASE_CPLIC: $BASE_CPLIC" echo "CPL_ATMIC: $CPL_ATMIC" - src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}/${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" + mkdir -p ${COM_ATMOS_INPUT} + + #src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}/${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" + src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" if [[ ! -f ${src} ]]; then - echo "PW_CSP: $PW_CSP" src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}.${PDY}/${cyc}/model_data/atmos/input/gfs_ctrl.nc" fi tgt="${COM_ATMOS_INPUT}/gfs_ctrl.nc" From a2802aa51c826fea38f0e3ba011d782692615714 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 13 Jun 2024 16:57:48 +0000 Subject: [PATCH 34/37] avoid change wxflow --- workflow/rocoto/gfs_tasks.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 09e20c7e63..95f27c1ba7 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -26,15 +26,22 @@ def stage_ic(self): # Atm ICs if self.app_config.do_atm: pslot = self._base['PSLOT'] - prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/@Y@m@d@H/atmos" - - pw_csp = os.environ.get('PW_CSP') - if ( pw_csp in ['aws', 'azure', 'google'] ): + if ( 'BASE_CPLIC' in cpl_ic.keys() ): base_cplic = f"{cpl_ic['BASE_CPLIC']}" - #cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" + else: + base_cplic = os.environ.get('BASE_CPLIC') + if ( 'CPL_ATMIC' in cpl_ic.keys() ): + cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" + else: cpl_atmic = os.environ.get('CPL_ATMIC') - print('cpl_atmic = ', os.environ.get('CPL_ATMIC')) - icdir = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}" + + prefix = f"{base_cplic}/{cpl_atmic}/@Y@m@d@H/atmos" + + pw_csp = os.environ.get('PW_CSP') + use_ufs_utils_format = os.environ.get('USE_UFS_UTILS_FORMAT', False) + if ( pw_csp in ['aws', 'azure', 'google'] or use_ufs_utils_format): + icdir = f"{base_cplic}/{cpl_atmic}" + if('IC_PREFIX' in cpl_ic.keys()): cpl_ic_prefix = f"{icdir}/{cpl_ic['IC_PREFIX']}" else: From d6b0f71874d45f0ec197333d7cf226b222dcf998 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 13 Jun 2024 17:42:27 +0000 Subject: [PATCH 35/37] remove echo --- scripts/exglobal_stage_ic.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/scripts/exglobal_stage_ic.sh b/scripts/exglobal_stage_ic.sh index 880538f5df..099437ee54 100755 --- a/scripts/exglobal_stage_ic.sh +++ b/scripts/exglobal_stage_ic.sh @@ -69,13 +69,8 @@ for MEMDIR in "${MEMDIR_ARRAY[@]}"; do YMD=${PDY} HH=${cyc} declare_from_tmpl COM_ATMOS_INPUT [[ ! -d "${COM_ATMOS_INPUT}" ]] && mkdir -p "${COM_ATMOS_INPUT}" - echo "COM_ATMOS_INPUT: $COM_ATMOS_INPUT" - echo "BASE_CPLIC: $BASE_CPLIC" - echo "CPL_ATMIC: $CPL_ATMIC" - mkdir -p ${COM_ATMOS_INPUT} - #src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}/${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" src="${BASE_CPLIC}/${CPL_ATMIC:-}/${PDY}${cyc}/${MEMDIR}/atmos/gfs_ctrl.nc" if [[ ! -f ${src} ]]; then src="${BASE_CPLIC}/${CPL_ATMIC:-}/${RUN}.${PDY}/${cyc}/model_data/atmos/input/gfs_ctrl.nc" From a88ca296fe995b2253d2182dfede5777b4d1df34 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 13 Jun 2024 21:12:31 +0000 Subject: [PATCH 36/37] sync and clean up --- sorc/gdas.cd | 2 +- sorc/jcb | 2 +- sorc/ufs_model.fd | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 3e50a8fdcd..30016772cb 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 3e50a8fdcd07305a3464a02e20eaf4b033179167 +Subproject commit 30016772cbdff77d526150ddf8b05f1e03adc065 diff --git a/sorc/jcb b/sorc/jcb index f62b9df37f..de75655d81 160000 --- a/sorc/jcb +++ b/sorc/jcb @@ -1 +1 @@ -Subproject commit f62b9df37f131c9ff68b62eb6e19c1109c314cf0 +Subproject commit de75655d81ec2ee668d8d47bf4a43625c81dde7c diff --git a/sorc/ufs_model.fd b/sorc/ufs_model.fd index 5bec704243..a183a52151 160000 --- a/sorc/ufs_model.fd +++ b/sorc/ufs_model.fd @@ -1 +1 @@ -Subproject commit 5bec704243286421fc613838fc67a2129e96acd6 +Subproject commit a183a521516110cc9bcb86d853bd9b0dccef5bc7 From 80eced97339d7b4db00a9697d9601466477b2c60 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 13 Jun 2024 21:14:41 +0000 Subject: [PATCH 37/37] sync on hera and test --- workflow/rocoto/gfs_tasks.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 09e20c7e63..1f9dbb8330 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -26,15 +26,22 @@ def stage_ic(self): # Atm ICs if self.app_config.do_atm: pslot = self._base['PSLOT'] - prefix = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}/@Y@m@d@H/atmos" - pw_csp = os.environ.get('PW_CSP') - if ( pw_csp in ['aws', 'azure', 'google'] ): + if ( 'BASE_CPLIC' in cpl_ic.keys() ): base_cplic = f"{cpl_ic['BASE_CPLIC']}" - #cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" + else: + base_cplic = os.environ.get('BASE_CPLIC') + if ( 'CPL_ATMIC' in cpl_ic.keys() ): + cpl_atmic = f"{cpl_ic['CPL_ATMIC']}" + else: cpl_atmic = os.environ.get('CPL_ATMIC') - print('cpl_atmic = ', os.environ.get('CPL_ATMIC')) - icdir = f"{cpl_ic['BASE_CPLIC']}/{cpl_ic['CPL_ATMIC']}" + + prefix = f"{base_cplic}/{cpl_atmic}/@Y@m@d@H/atmos" + + pw_csp = os.environ.get('PW_CSP') + use_ufs_utils_format = os.environ.get('USE_UFS_UTILS_FORMAT', False) + if ( pw_csp in ['aws', 'azure', 'google'] or use_ufs_utils_format): + icdir = f"{base_cplic}/{cpl_atmic}" if('IC_PREFIX' in cpl_ic.keys()): cpl_ic_prefix = f"{icdir}/{cpl_ic['IC_PREFIX']}" else: