diff --git a/Externals.cfg b/Externals.cfg index eaf397edb9..1b30c321ba 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -8,7 +8,7 @@ protocol = git required = True [UFS] -tag = 4d05445 +tag = 68050e5 local_path = sorc/ufs_model.fd repo_url = https://github.com/ufs-community/ufs-weather-model.git protocol = git diff --git a/env/WCOSS2.env b/env/WCOSS2.env index 22d65ba0ed..ae5ceaa022 100755 --- a/env/WCOSS2.env +++ b/env/WCOSS2.env @@ -35,6 +35,7 @@ elif [[ "${step}" = "preplandobs" ]]; then elif [[ "${step}" = "waveinit" ]] || [[ "${step}" = "waveprep" ]] || [[ "${step}" = "wavepostsbs" ]] || [[ "${step}" = "wavepostbndpnt" ]] || [[ "${step}" = "wavepostbndpntbll" ]] || [[ "${step}" = "wavepostpnt" ]]; then + export USE_CFP="YES" if [[ "${step}" = "waveprep" ]] && [[ "${CDUMP}" = "gfs" ]]; then export NTASKS=${NTASKS_gfs} ; fi export wavempexec="${launcher} -np" export wave_mpmd=${mpmd_opt} diff --git a/jobs/rocoto/efcs.sh b/jobs/rocoto/efcs.sh index 46a25ac759..fa9dc0c269 100755 --- a/jobs/rocoto/efcs.sh +++ b/jobs/rocoto/efcs.sh @@ -5,23 +5,9 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules #. ${HOMEgfs}/ush/load_fv3gfs_modules.sh -#status=$? -#[[ ${status} -ne 0 ]] && exit ${status} - -# TODO: clean this up -source "${HOMEgfs}/ush/detect_machine.sh" -set +x -source "${HOMEgfs}/ush/module-setup.sh" -module use "${HOMEgfs}/sorc/ufs_model.fd/tests" -module load modules.ufs_model.lua -# Workflow needs utilities from prod_util (setPDY.sh, ndate, etc.) -module load prod_util -if [[ "${MACHINE_ID}" = "wcoss2" ]]; then - module load cray-pals -fi -module list -unset MACHINE_ID -set_trace +. ${HOMEgfs}/ush/load_ufswm_modules.sh +status=$? +[[ ${status} -ne 0 ]] && exit ${status} export job="efcs" export jobid="${job}.$$" diff --git a/jobs/rocoto/fcst.sh b/jobs/rocoto/fcst.sh index 9d59f70bd8..a5be293f9e 100755 --- a/jobs/rocoto/fcst.sh +++ b/jobs/rocoto/fcst.sh @@ -3,65 +3,11 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### -# Source FV3GFS workflow modules +# Source UFS Weather Model workflow modules #. ${HOMEgfs}/ush/load_fv3gfs_modules.sh -#status=$? -#[[ ${status} -ne 0 ]] && exit ${status} - -# TODO: clean this up -source "${HOMEgfs}/ush/detect_machine.sh" -set +x -source "${HOMEgfs}/ush/module-setup.sh" -if [[ "${MACHINE_ID}" != "noaacloud" ]]; then - module use "${HOMEgfs}/sorc/ufs_model.fd/tests" - module load modules.ufs_model.lua - module load prod_util -fi - -if [[ "${MACHINE_ID}" = "wcoss2" ]]; then - module load cray-pals -fi -if [[ "${MACHINE_ID}" = "hera" ]]; then - module use "/scratch2/NCEPDEV/ensemble/save/Walter.Kolczynski/modulefiles/core" - module load "miniconda3/4.6.14" - module load "gfs_workflow/1.0.0" -# TODO: orion and wcoss2 will be uncommented when they are ready. This comment block will be removed in the next PR -#elif [[ "${MACHINE_ID}" = "orion" ]]; then -# module use "/home/rmahajan/opt/global-workflow/modulefiles/core" -# module load "python/3.7.5" -# module load "gfs_workflow/1.0.0" -#elif [[ "${MACHINE_ID}" = "wcoss2" ]]; then -# module load "python/3.7.5" -fi -if [[ "${MACHINE_ID}" == "noaacloud" ]]; then - if [[ "${PW_CSP:-}" = "aws" ]]; then - - # TODO: This can be cleaned-up; most of this is a hack for now. - module use "/contrib/spack-stack/envs/ufswm/install/modulefiles/Core" - module load "stack-intel" - module load "stack-intel-oneapi-mpi" - module use -a "/contrib/spack-stack/miniconda/modulefiles/miniconda/" - module load "py39_4.12.0" - module load "ufs-weather-model-env/1.0.0" - export NETCDF="/contrib/spack-stack/miniconda/apps/miniconda/py39_4.12.0" - # TODO: Are there plans for EPIC to maintain this package or should GW provide support? - export UTILROOT="/contrib/global-workflow/NCEPLIBS-prod_util" - export PATH="${PATH}:/contrib/global-workflow/bin" - ndate_path="$(command -v ndate)" - export NDATE="${ndate_path}" - fi -fi - -module list -unset MACHINE_ID -set_trace - -############################################################### -# exglobal_forecast.py requires the following in PYTHONPATH -# This will be moved to a module load when ready -wxflowPATH="${HOMEgfs}/ush/python:${HOMEgfs}/ush/python/wxflow/src:${HOMEgfs}/ush/python/pygfs" -PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${wxflowPATH}" -export PYTHONPATH +. ${HOMEgfs}/ush/load_ufswm_modules.sh +status=$? +[[ ${status} -ne 0 ]] && exit ${status} export job="fcst" export jobid="${job}.$$" @@ -71,5 +17,4 @@ export jobid="${job}.$$" ${HOMEgfs}/jobs/JGLOBAL_FORECAST status=$? - exit ${status} diff --git a/jobs/rocoto/waveinit.sh b/jobs/rocoto/waveinit.sh index d0c3f49929..b38367d09a 100755 --- a/jobs/rocoto/waveinit.sh +++ b/jobs/rocoto/waveinit.sh @@ -5,7 +5,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +. ${HOMEgfs}/ush/load_ufswm_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/rocoto/wavepostbndpnt.sh b/jobs/rocoto/wavepostbndpnt.sh index 5d26498356..1a4f940150 100755 --- a/jobs/rocoto/wavepostbndpnt.sh +++ b/jobs/rocoto/wavepostbndpnt.sh @@ -5,7 +5,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +. ${HOMEgfs}/ush/load_ufswm_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/rocoto/wavepostbndpntbll.sh b/jobs/rocoto/wavepostbndpntbll.sh index ce4f9e6b2d..2d128facb7 100755 --- a/jobs/rocoto/wavepostbndpntbll.sh +++ b/jobs/rocoto/wavepostbndpntbll.sh @@ -5,7 +5,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +. ${HOMEgfs}/ush/load_ufswm_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/rocoto/wavepostpnt.sh b/jobs/rocoto/wavepostpnt.sh index 9efb755dec..60017394f5 100755 --- a/jobs/rocoto/wavepostpnt.sh +++ b/jobs/rocoto/wavepostpnt.sh @@ -5,7 +5,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +. ${HOMEgfs}/ush/load_ufswm_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/rocoto/wavepostsbs.sh b/jobs/rocoto/wavepostsbs.sh index e4bea0bc34..f4789210d8 100755 --- a/jobs/rocoto/wavepostsbs.sh +++ b/jobs/rocoto/wavepostsbs.sh @@ -4,7 +4,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source FV3GFS workflow modules -. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +. ${HOMEgfs}/ush/load_ufswm_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/jobs/rocoto/waveprep.sh b/jobs/rocoto/waveprep.sh index 0cbafde87e..fa934167b7 100755 --- a/jobs/rocoto/waveprep.sh +++ b/jobs/rocoto/waveprep.sh @@ -5,7 +5,8 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### echo echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" -. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +#. ${HOMEgfs}/ush/load_fv3gfs_modules.sh +. ${HOMEgfs}/ush/load_ufswm_modules.sh status=$? [[ ${status} -ne 0 ]] && exit ${status} diff --git a/parm/config/gefs/config.base.emc.dyn b/parm/config/gefs/config.base.emc.dyn index e3e221c006..3d17421408 100644 --- a/parm/config/gefs/config.base.emc.dyn +++ b/parm/config/gefs/config.base.emc.dyn @@ -82,7 +82,7 @@ export VERBOSE="YES" export KEEPDATA="NO" export CHGRP_RSTPROD="@CHGRP_RSTPROD@" export CHGRP_CMD="@CHGRP_CMD@" -export NCDUMP="${NETCDF}/bin/ncdump" +export NCDUMP="${NETCDF:-}/bin/ncdump" export NCLEN="${HOMEgfs}/ush/getncdimlen" # Machine environment, jobs, and other utility scripts diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index 0098ad0744..329f5a7dc3 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -150,7 +150,7 @@ elif [[ ${step} = "wavepostbndpntbll" ]]; then elif [[ ${step} = "wavepostpnt" ]]; then - export wtime_wavepostpnt="01:30:00" + export wtime_wavepostpnt="04:00:00" export npe_wavepostpnt=200 export nth_wavepostpnt=1 npe_node_wavepostpnt=$(echo "${npe_node_max} / ${nth_wavepostpnt}" | bc) diff --git a/parm/ufs/chem/CAP.rc b/parm/ufs/chem/CAP.rc index 64425b1bb4..d40106ae81 100644 --- a/parm/ufs/chem/CAP.rc +++ b/parm/ufs/chem/CAP.rc @@ -8,6 +8,8 @@ REPORT_THROUGHPUT: .false. USE_SHMEM: 0 +GridType: Cubed-Sphere + MAPL_ENABLE_TIMERS: NO MAPL_ENABLE_MEMUTILS: NO PRINTSPEC: 0 # (0: OFF, 1: IMPORT & EXPORT, 2: IMPORT, 3: EXPORT) diff --git a/parm/ufs/chem/GOCART2G_GridComp.rc b/parm/ufs/chem/GOCART2G_GridComp.rc index 5ea4fa45df..18954f8cdd 100644 --- a/parm/ufs/chem/GOCART2G_GridComp.rc +++ b/parm/ufs/chem/GOCART2G_GridComp.rc @@ -39,3 +39,5 @@ PASSIVE_INSTANCES_NI: aerosol_monochromatic_optics_wavelength_in_nm_from_LUT: 470 550 670 870 wavelengths_for_profile_aop_in_nm: 470 550 670 870 # must be included in LUT wavelengths_for_vertically_integrated_aop_in_nm: 470 550 670 870 # must be included in LUT + +use_threads: .TRUE. diff --git a/parm/ufs/nems.configure.cpld.IN b/parm/ufs/nems.configure.cpld.IN index 0f6e68cc4e..2182a96384 100644 --- a/parm/ufs/nems.configure.cpld.IN +++ b/parm/ufs/nems.configure.cpld.IN @@ -73,6 +73,7 @@ runSeq:: MED med_phases_post_atm ICE -> MED :remapMethod=redist MED med_phases_post_ice + MED med_phases_ocnalb_run MED med_phases_prep_ocn_accum @ OCN -> MED :remapMethod=redist @@ -89,12 +90,10 @@ MED_attributes:: ATM_model = @[atm_model] ICE_model = @[ice_model] OCN_model = @[ocn_model] - history_n = 0 - history_option = nhours - history_ymd = -999 coupling_mode = @[CPLMODE] history_tile_atm = @[ATMTILESIZE] pio_rearranger = box + ocean_albedo_limit = @[ocean_albedo_limit] :: ALLCOMP_attributes:: ScalarFieldCount = 2 @@ -114,4 +113,10 @@ ALLCOMP_attributes:: stop_n = @[FHMAX] stop_option = nhours stop_ymd = -999 + orb_eccen = 1.e36 + orb_iyear = 2000 + orb_iyear_align = 2000 + orb_mode = fixed_year + orb_mvelp = 1.e36 + orb_obliq = 1.e36 :: diff --git a/parm/ufs/nems.configure.cpld_aero.IN b/parm/ufs/nems.configure.cpld_aero.IN index 9d4afff121..7b13318094 100644 --- a/parm/ufs/nems.configure.cpld_aero.IN +++ b/parm/ufs/nems.configure.cpld_aero.IN @@ -85,6 +85,7 @@ runSeq:: MED med_phases_post_atm ICE -> MED :remapMethod=redist MED med_phases_post_ice + MED med_phases_ocnalb_run MED med_phases_prep_ocn_accum @ OCN -> MED :remapMethod=redist @@ -101,12 +102,10 @@ MED_attributes:: ATM_model = @[atm_model] ICE_model = @[ice_model] OCN_model = @[ocn_model] - history_n = 0 - history_option = nhours - history_ymd = -999 coupling_mode = @[CPLMODE] history_tile_atm = @[ATMTILESIZE] pio_rearranger = box + ocean_albedo_limit = @[ocean_albedo_limit] :: ALLCOMP_attributes:: ScalarFieldCount = 2 @@ -126,4 +125,10 @@ ALLCOMP_attributes:: stop_n = @[FHMAX] stop_option = nhours stop_ymd = -999 + orb_eccen = 1.e36 + orb_iyear = 2000 + orb_iyear_align = 2000 + orb_mode = fixed_year + orb_mvelp = 1.e36 + orb_obliq = 1.e36 :: diff --git a/parm/ufs/nems.configure.cpld_aero_outerwave.IN b/parm/ufs/nems.configure.cpld_aero_outerwave.IN index 78a009b879..fbbf4441f1 100644 --- a/parm/ufs/nems.configure.cpld_aero_outerwave.IN +++ b/parm/ufs/nems.configure.cpld_aero_outerwave.IN @@ -101,6 +101,7 @@ runSeq:: MED med_phases_post_atm ICE -> MED :remapMethod=redist MED med_phases_post_ice + MED med_phases_ocnalb_run MED med_phases_prep_ocn_accum MED med_phases_prep_wav_accum @ @@ -121,12 +122,10 @@ MED_attributes:: ICE_model = @[ice_model] OCN_model = @[ocn_model] WAV_model = @[wav_model] - history_n = 0 - history_option = nhours - history_ymd = -999 coupling_mode = @[CPLMODE] history_tile_atm = @[ATMTILESIZE] pio_rearranger = box + ocean_albedo_limit = @[ocean_albedo_limit] :: ALLCOMP_attributes:: ScalarFieldCount = 2 @@ -146,4 +145,10 @@ ALLCOMP_attributes:: stop_n = @[FHMAX] stop_option = nhours stop_ymd = -999 + orb_eccen = 1.e36 + orb_iyear = 2000 + orb_iyear_align = 2000 + orb_mode = fixed_year + orb_mvelp = 1.e36 + orb_obliq = 1.e36 :: diff --git a/parm/ufs/nems.configure.cpld_aero_wave.IN b/parm/ufs/nems.configure.cpld_aero_wave.IN index 6b886b0626..2bb0416983 100644 --- a/parm/ufs/nems.configure.cpld_aero_wave.IN +++ b/parm/ufs/nems.configure.cpld_aero_wave.IN @@ -104,6 +104,7 @@ runSeq:: MED med_phases_post_ice WAV -> MED :remapMethod=redist MED med_phases_post_wav + MED med_phases_ocnalb_run MED med_phases_prep_ocn_accum @ OCN -> MED :remapMethod=redist @@ -121,11 +122,10 @@ MED_attributes:: ICE_model = @[ice_model] OCN_model = @[ocn_model] WAV_model = @[wav_model] - history_n = 0 - history_option = nhours - history_ymd = -999 coupling_mode = @[CPLMODE] history_tile_atm = @[ATMTILESIZE] + pio_rearranger = box + ocean_albedo_limit = @[ocean_albedo_limit] :: ALLCOMP_attributes:: ScalarFieldCount = 2 @@ -145,4 +145,10 @@ ALLCOMP_attributes:: stop_n = @[FHMAX] stop_option = nhours stop_ymd = -999 + orb_eccen = 1.e36 + orb_iyear = 2000 + orb_iyear_align = 2000 + orb_mode = fixed_year + orb_mvelp = 1.e36 + orb_obliq = 1.e36 :: diff --git a/parm/ufs/nems.configure.cpld_outerwave.IN b/parm/ufs/nems.configure.cpld_outerwave.IN index 736e0cf3fd..521e59941a 100644 --- a/parm/ufs/nems.configure.cpld_outerwave.IN +++ b/parm/ufs/nems.configure.cpld_outerwave.IN @@ -89,6 +89,7 @@ runSeq:: MED med_phases_post_atm ICE -> MED :remapMethod=redist MED med_phases_post_ice + MED med_phases_ocnalb_run MED med_phases_prep_ocn_accum MED med_phases_prep_wav_accum @ @@ -109,12 +110,10 @@ MED_attributes:: ICE_model = @[ice_model] OCN_model = @[ocn_model] WAV_model = @[wav_model] - history_n = 0 - history_option = nhours - history_ymd = -999 coupling_mode = @[CPLMODE] history_tile_atm = @[ATMTILESIZE] pio_rearranger = box + ocean_albedo_limit = @[ocean_albedo_limit] :: ALLCOMP_attributes:: ScalarFieldCount = 2 @@ -134,4 +133,10 @@ ALLCOMP_attributes:: stop_n = @[FHMAX] stop_option = nhours stop_ymd = -999 + orb_eccen = 1.e36 + orb_iyear = 2000 + orb_iyear_align = 2000 + orb_mode = fixed_year + orb_mvelp = 1.e36 + orb_obliq = 1.e36 :: diff --git a/parm/ufs/nems.configure.cpld_wave.IN b/parm/ufs/nems.configure.cpld_wave.IN index 3a1c918900..f9f4bc99ff 100644 --- a/parm/ufs/nems.configure.cpld_wave.IN +++ b/parm/ufs/nems.configure.cpld_wave.IN @@ -92,6 +92,7 @@ runSeq:: MED med_phases_post_ice WAV -> MED :remapMethod=redist MED med_phases_post_wav + MED med_phases_ocnalb_run MED med_phases_prep_ocn_accum @ OCN -> MED :remapMethod=redist @@ -109,12 +110,10 @@ MED_attributes:: ICE_model = @[ice_model] OCN_model = @[ocn_model] WAV_model = @[wav_model] - history_n = 0 - history_option = nhours - history_ymd = -999 coupling_mode = @[CPLMODE] history_tile_atm = @[ATMTILESIZE] pio_rearranger = box + ocean_albedo_limit = @[ocean_albedo_limit] :: ALLCOMP_attributes:: ScalarFieldCount = 2 @@ -134,4 +133,10 @@ ALLCOMP_attributes:: stop_n = @[FHMAX] stop_option = nhours stop_ymd = -999 + orb_eccen = 1.e36 + orb_iyear = 2000 + orb_iyear_align = 2000 + orb_mode = fixed_year + orb_mvelp = 1.e36 + orb_obliq = 1.e36 :: diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index 076c635c17..86cea85dee 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -164,6 +164,7 @@ FV3_out [[ ${cplflx} = .true. ]] && MOM6_out [[ ${cplwav} = .true. ]] && WW3_out [[ ${cplice} = .true. ]] && CICE_out +[[ ${cplchm} = .true. ]] && GOCART_out [[ ${esmf_profile:-} = .true. ]] && CPL_out echo "MAIN: Output copied to COMROT" diff --git a/sorc/checkout.sh b/sorc/checkout.sh index 3554cd99da..1a3d2c9da6 100755 --- a/sorc/checkout.sh +++ b/sorc/checkout.sh @@ -151,7 +151,7 @@ source "${topdir}/../workflow/gw_setup.sh" # The checkout version should always be a speciifc commit (hash or tag), not a branch errs=0 # Checkout UFS submodules in parallel -checkout "ufs_model.fd" "https://github.com/ufs-community/ufs-weather-model" "${ufs_model_hash:-4d05445}" "8" ; errs=$((errs + $?)) +checkout "ufs_model.fd" "https://github.com/ufs-community/ufs-weather-model" "${ufs_model_hash:-68050e5}" "8" ; errs=$((errs + $?)) # Run all other checkouts simultaneously with just 1 core each to handle submodules. checkout "wxflow" "https://github.com/NOAA-EMC/wxflow" "528f5ab" & diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 1336abe5b9..e3166cd72f 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -1038,7 +1038,26 @@ GOCART_postdet() { rm -f "${COM_CHEM_HISTORY}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" fi - ${NLN} "${COM_CHEM_HISTORY}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" \ - "${DATA}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" + #To Do: Temporarily removing this as this will crash gocart, adding copy statement at the end + #${NLN} "${COM_CHEM_HISTORY}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" \ + # "${DATA}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" done } + +GOCART_out() { + echo "SUB ${FUNCNAME[0]}: Copying output data for GOCART" + + # Copy gocart.inst_aod after the forecast is run (and successfull) + # TO DO: this should be linked but there were issues where gocart was crashing if it was linked + local fhr + local vdate + for fhr in ${FV3_OUTPUT_FH}; do + if (( fhr == 0 )); then continue; fi + vdate=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${fhr} hours" +%Y%m%d%H) + ${NCP} "${DATA}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" \ + "${COM_CHEM_HISTORY}/gocart.inst_aod.${vdate:0:8}_${vdate:8:2}00z.nc4" + done + + +} + diff --git a/ush/load_ufswm_modules.sh b/ush/load_ufswm_modules.sh new file mode 100755 index 0000000000..2d6e6a02c1 --- /dev/null +++ b/ush/load_ufswm_modules.sh @@ -0,0 +1,71 @@ +#! /usr/bin/env bash + +############################################################### +if [[ "${DEBUG_WORKFLOW:-NO}" == "NO" ]]; then + echo "Loading modules quietly..." + set +x +fi + +# Setup runtime environment by loading modules +ulimit_s=$( ulimit -S -s ) + +source "${HOMEgfs}/ush/detect_machine.sh" +source "${HOMEgfs}/ush/module-setup.sh" +if [[ "${MACHINE_ID}" != "noaacloud" ]]; then + module use "${HOMEgfs}/sorc/ufs_model.fd/tests" + module load modules.ufs_model.lua + if [[ "${MACHINE_ID}" = "wcoss2" ]]; then + module load prod_util + module load cray-pals + module load cfp + module load libjpeg + else + module load prod-util + export UTILROOT=${prod_util_ROOT} + fi + module load wgrib2 + export WGRIB2=wgrib2 +fi +if [[ "${MACHINE_ID}" = "hera" ]]; then + module use "/scratch2/NCEPDEV/ensemble/save/Walter.Kolczynski/modulefiles/core" + module load "miniconda3/4.6.14" + module load "gfs_workflow/1.0.0" +fi +if [[ "${MACHINE_ID}" == "noaacloud" ]]; then + if [[ "${PW_CSP:-}" = "aws" ]]; then + + # TODO: This can be cleaned-up; most of this is a hack for now. + module use "/contrib/spack-stack/envs/ufswm/install/modulefiles/Core" + module load "stack-intel" + module load "stack-intel-oneapi-mpi" + module use -a "/contrib/spack-stack/miniconda/modulefiles/miniconda/" + module load "py39_4.12.0" + module load "ufs-weather-model-env/1.0.0" + export NETCDF="/contrib/spack-stack/miniconda/apps/miniconda/py39_4.12.0" + # TODO: Are there plans for EPIC to maintain this package or should GW provide support? + export UTILROOT="/contrib/global-workflow/NCEPLIBS-prod_util" + export PATH="${PATH}:/contrib/global-workflow/bin" + ndate_path="$(command -v ndate)" + export NDATE="${ndate_path}" + fi +fi + +module list +unset MACHINE_ID + +############################################################### +# exglobal_forecast.py requires the following in PYTHONPATH +# This will be moved to a module load when ready +wxflowPATH="${HOMEgfs}/ush/python:${HOMEgfs}/ush/python/wxflow/src:${HOMEgfs}/ush/python/pygfs" +PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}${wxflowPATH}" +export PYTHONPATH + +# Restore stack soft limit: +ulimit -S -s "${ulimit_s}" +unset ulimit_s + +# If this function exists in the environment, run it; else do not +ftype=$(type -t set_trace) +if [[ "${ftype}" == "function" ]]; then + set_trace +fi diff --git a/ush/nems_configure.sh b/ush/nems_configure.sh index ecbc4acde5..28c6713dd8 100755 --- a/ush/nems_configure.sh +++ b/ush/nems_configure.sh @@ -56,7 +56,9 @@ if [[ "${cplflx}" = ".true." ]]; then local CPLMODE="${cplmode}" local coupling_interval_fast_sec="${CPL_FAST}" local RESTART_N="${restart_interval}" + local ocean_albedo_limit=0.06 local ATMTILESIZE="${CASE:1}" + local ocean_albedo_limit=0.06 fi if [[ "${cplice}" = ".true." ]]; then diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 27cb96ab81..ec3af83415 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -74,18 +74,6 @@ cat > input.nml <