diff --git a/Externals.cfg b/Externals.cfg index bd79f5e2ea..ac4daad397 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -8,7 +8,7 @@ protocol = git required = True [GSI] -tag = gfsda.v16.3.19 +tag = gfsda.v16.3.20 local_path = sorc/gsi.fd repo_url = https://github.com/NOAA-EMC/GSI.git protocol = git @@ -29,7 +29,7 @@ protocol = git required = True [UFS_UTILS] -tag = ops-gfsv16.3.0 +tag = ops-gfsv16.3.20 local_path = sorc/ufs_utils.fd repo_url = https://github.com/ufs-community/UFS_UTILS.git protocol = git diff --git a/docs/Release_Notes.md b/docs/Release_Notes.md index 520474eb77..ba8ec2fc0c 100644 --- a/docs/Release_Notes.md +++ b/docs/Release_Notes.md @@ -26,8 +26,8 @@ The checkout script extracts the following GFS components: | --------- | ----------- | ----------------- | | MODEL | GFS.v16.3.1 | Jun.Wang@noaa.gov | | GLDAS | gldas_gfsv16_release.v.2.1.0 | Helin.Wei@noaa.gov | -| GSI | gfsda.v16.3.19 | Andrew.Collard@noaa.gov | -| UFS_UTILS | ops-gfsv16.3.0 | George.Gayno@noaa.gov | +| GSI | gfsda.v16.3.20 | Andrew.Collard@noaa.gov | +| UFS_UTILS | ops-gfsv16.3.20 | George.Gayno@noaa.gov | | POST | upp_v8.3.0 | Wen.Meng@noaa.gov | To build all the GFS components, execute: @@ -188,3 +188,5 @@ DOCUMENTATION PREPARED BY ----------- Kate.Friedman@noaa.gov +Yali.Mao@noaa.gov +Rahul.Mahajan@noaa.gov diff --git a/jobs/JGLOBAL_ATMOS_EMCSFC_SFC_PREP b/jobs/JGLOBAL_ATMOS_EMCSFC_SFC_PREP index 90448269d0..9da802f67d 100755 --- a/jobs/JGLOBAL_ATMOS_EMCSFC_SFC_PREP +++ b/jobs/JGLOBAL_ATMOS_EMCSFC_SFC_PREP @@ -8,7 +8,7 @@ date ############################# # Source relevant config files ############################# -configs="base" +configs="base sfcprep" export EXPDIR=${EXPDIR:-$HOMEgfs/parm/config} config_path=${EXPDIR:-$NWROOT/gfs.${gfs_ver}/parm/config} for config in $configs; do @@ -17,6 +17,13 @@ for config in $configs; do [[ $status -ne 0 ]] && exit $status done +########################################## +# Source machine runtime environment +########################################## +. $HOMEgfs/env/${machine}.env sfcprep +status=$? +[[ $status -ne 0 ]] && exit $status + ############################################## # Obtain unique process id (pid) and make temp directory @@ -64,8 +71,7 @@ export COMIN_m6hrs=${COMIN_m6hrs:-$(compath.py ${envir}/${NET}/${gfs_ver})/${RUN export IMS_FILE=${COMINobsproc}/${RUN}.${cycle}.imssnow96.grib2 export FIVE_MIN_ICE_FILE=${COMINobsproc}/${RUN}.${cycle}.seaice.5min.grib2 -export AFWA_NH_FILE=${COMINobsproc}/${RUN}.${cycle}.NPR.SNWN.SP.S1200.MESH16.grb -export AFWA_SH_FILE=${COMINobsproc}/${RUN}.${cycle}.NPR.SNWS.SP.S1200.MESH16.grb +export AFWA_GLOBAL_FILE=${COMINobsproc}/${RUN}.${cycle}.snow.usaf.grib2 export BLENDED_ICE_FILE=${BLENDED_ICE_FILE:-${RUN}.${cycle}.seaice.5min.blend.grb} export BLENDED_ICE_FILE_m6hrs=${BLENDED_ICE_FILE_m6hrs:-${COMIN_m6hrs}/${RUN}.${cycle_m6hrs}.seaice.5min.blend.grb} diff --git a/jobs/rocoto/sfcprep.sh b/jobs/rocoto/sfcprep.sh new file mode 100755 index 0000000000..986a794e7a --- /dev/null +++ b/jobs/rocoto/sfcprep.sh @@ -0,0 +1,13 @@ +#!/bin/ksh -x + +############################################################### +# Source FV3GFS workflow modules +. $HOMEgfs/ush/load_fv3gfs_modules.sh +status=$? +[[ $status -ne 0 ]] && exit $status + +############################################################### +# Execute the JJOB +$HOMEgfs/jobs/JGLOBAL_ATMOS_EMCSFC_SFC_PREP +status=$? +exit $status diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn index 70cb4110d9..3b1e05244d 100755 --- a/parm/config/config.base.emc.dyn +++ b/parm/config/config.base.emc.dyn @@ -47,6 +47,9 @@ export NOSCRUB="@NOSCRUB@" # Base directories for various builds export BASE_GIT="@BASE_GIT@" +# Toggle to turn on/off EMCSFC_SFC_PREP job +export DO_SFCPREP="NO" # SNOGRB dump file production + # Toggle to turn on/off GFS downstream processing. export DO_BUFRSND="YES" # BUFR sounding products export DO_GEMPAK="NO" # GEMPAK products diff --git a/parm/config/config.resources.emc.dyn b/parm/config/config.resources.emc.dyn index 370b29a04a..f322371c68 100755 --- a/parm/config/config.resources.emc.dyn +++ b/parm/config/config.resources.emc.dyn @@ -36,7 +36,16 @@ elif [[ "$machine" = "ORION" ]]; then export npe_node_max=40 fi -if [ $step = "prep" -o $step = "prepbufr" ]; then +if [ $step = "sfcprep" ]; then + + export wtime_sfcprep="00:08:00" + export npe_sfcprep=1 + export nth_sfcprep=1 + export npe_node_sfcprep=1 + export NTASKS=$npe_sfcprep + export memory_sfcprep="2GB" + +elif [ $step = "prep" -o $step = "prepbufr" ]; then eval "export wtime_$step='00:45:00'" eval "export npe_$step=4" diff --git a/parm/config/config.sfcprep b/parm/config/config.sfcprep new file mode 100755 index 0000000000..94cfc4d2a5 --- /dev/null +++ b/parm/config/config.sfcprep @@ -0,0 +1,20 @@ +#!/bin/ksh -x + +########## config.sfcprep ########## +# Prep step specific + +echo "BEGIN: config.sfcprep" + +# Get task specific resources +. $EXPDIR/config.resources sfcprep + +if [[ $RUN_ENVIR == "emc" ]]; then + + export SENDCOM="YES" + export COMOUT=${COMOUTatmos} + export COMINobsproc=${DMPDIR}/${CDUMP}.${PDY}/${cyc}/atmos + export COMIN_m6hrs=${DMPDIR}/${GDUMP}.${gPDY}/${gcyc}/atmos + +fi + +echo "END: config.sfcprep" diff --git a/sorc/checkout.sh b/sorc/checkout.sh index 8aa2634219..017d42b72d 100755 --- a/sorc/checkout.sh +++ b/sorc/checkout.sh @@ -32,7 +32,7 @@ fi echo gsi checkout ... if [[ ! -d gsi.fd ]] ; then rm -f ${topdir}/checkout-gsi.log - git clone --recursive --branch gfsda.v16.3.19 https://github.com/NOAA-EMC/GSI.git gsi.fd >> ${topdir}/checkout-gsi.log 2>&1 + git clone --recursive --branch gfsda.v16.3.20 https://github.com/NOAA-EMC/GSI.git gsi.fd >> ${topdir}/checkout-gsi.log 2>&1 cd gsi.fd git submodule update --init cd ${topdir} @@ -52,7 +52,7 @@ fi echo ufs_utils checkout ... if [[ ! -d ufs_utils.fd ]] ; then rm -f ${topdir}/checkout-ufs_utils.log - git clone --branch ops-gfsv16.3.0 https://github.com/ufs-community/UFS_UTILS ufs_utils.fd >> ${topdir}/checkout-ufs_utils.fd.log 2>&1 + git clone --branch ops-gfsv16.3.20 https://github.com/ufs-community/UFS_UTILS ufs_utils.fd >> ${topdir}/checkout-ufs_utils.fd.log 2>&1 cd ${topdir} else echo 'Skip. Directory ufs_utils.fd already exists.' diff --git a/ush/rocoto/setup_workflow.py b/ush/rocoto/setup_workflow.py index 8bcdd60a26..4826d1a5fc 100755 --- a/ush/rocoto/setup_workflow.py +++ b/ush/rocoto/setup_workflow.py @@ -63,6 +63,7 @@ def main(): steps = steps + wav_steps_gempak if _base.get('DO_GEMPAK', 'NO') == 'YES' else steps steps = steps + wav_steps_awips if _base.get('DO_AWIPS', 'NO') == 'YES' else steps steps = steps + ['wdqms'] if _base.get('DO_WDQMS', 'NO') == 'YES' else steps + steps = steps + ['sfcprep'] if _base.get('DO_SFCPREP', 'NO') == 'YES' else steps dict_configs = wfu.source_configs(configs, steps) @@ -244,10 +245,13 @@ def get_gdasgfs_resources(dict_configs, cdump='gdas'): do_wdqms = base.get('DO_WDQMS', 'NO').upper() do_wave = base.get('DO_WAVE', 'NO').upper() do_wave_cdump = base.get('WAVE_CDUMP', 'BOTH').upper() + do_sfcprep = base.get('DO_SFCPREP', 'NO').upper() reservation = base.get('RESERVATION', 'NONE').upper() - #tasks = ['prep', 'anal', 'fcst', 'post', 'vrfy', 'arch'] - tasks = ['prep', 'anal', 'analcalc'] + if do_sfcprep in ['Y', 'YES']: + tasks = ['sfcprep', 'prep', 'anal', 'analcalc'] + else: + tasks = ['prep', 'anal', 'analcalc'] if cdump in ['gdas']: tasks += ['analdiag'] @@ -412,14 +416,29 @@ def get_gdasgfs_tasks(dict_configs, cdump='gdas'): do_wdqms = base.get('DO_WDQMS', 'NO').upper() do_wave = base.get('DO_WAVE', 'NO').upper() do_wave_cdump = base.get('WAVE_CDUMP', 'BOTH').upper() + do_sfcprep = base.get('DO_SFCPREP', 'NO').upper() dumpsuffix = base.get('DUMP_SUFFIX', '') gridsuffix = base.get('SUFFIX', '') dict_tasks = OrderedDict() + # sfcprep (emcsfc_sfc_prep) + if do_sfcprep in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'metatask', 'name': f'{"gdas"}post', 'offset': '-06:00:00'} + deps.append(rocoto.add_dependency(dep_dict)) + data = f'&DMPDIR;/{cdump}{dumpsuffix}.@Y@m@d/@H/atmos/{cdump}.t@Hz.snow.usaf.grib2' + dep_dict = {'type': 'data', 'data': data} + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) + task = wfu.create_wf_task('sfcprep', cdump=cdump, envar=envars, dependency=dependencies) + dict_tasks[f'{cdump}sfcprep'] = task + # prep deps = [] - dep_dict = {'type': 'metatask', 'name': f'{"gdas"}post', 'offset': '-06:00:00'} + if do_sfcprep in ['Y', 'YES']: + dep_dict = {'type': 'task', 'name': f'{cdump}sfcprep'} + else: + dep_dict = {'type': 'metatask', 'name': f'{"gdas"}post', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009{gridsuffix}' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} diff --git a/versions/hera.ver b/versions/hera.ver index 2e3b10ad52..9f0ef297e5 100644 --- a/versions/hera.ver +++ b/versions/hera.ver @@ -2,8 +2,8 @@ export hpc_ver=1.2.0 export hpc_intel_ver=18.0.5.274 export hpc_impi_ver=2018.0.4 -export obsproc_run_ver=1.2.0 -export prepobs_run_ver=1.1.0 +export obsproc_run_ver=1.3.0 +export prepobs_run_ver=1.2.0 export hpss_ver=hpss export prod_util_ver=1.2.2 diff --git a/versions/orion.ver b/versions/orion.ver index 9980daefd7..96a262641d 100644 --- a/versions/orion.ver +++ b/versions/orion.ver @@ -2,8 +2,8 @@ export hpc_ver=1.2.0 export hpc_intel_ver=2018.4 export hpc_impi_ver=2018.4 -export obsproc_run_ver=1.2.0 -export prepobs_run_ver=1.1.0 +export obsproc_run_ver=1.3.0 +export prepobs_run_ver=1.2.0 export prod_util_ver=1.2.2 export cmake_ver=3.22.1 diff --git a/versions/run.ver b/versions/run.ver index 3609bb8f2d..112e94982a 100755 --- a/versions/run.ver +++ b/versions/run.ver @@ -5,7 +5,7 @@ export ecmwf_ver=v2.1 export nam_ver=v4.2 export rtofs_ver=v2.4 export radarl2_ver=v1.2 -export obsproc_ver=v1.2 +export obsproc_ver=v1.3 export PrgEnv_intel_ver=8.1.0 export intel_ver=19.1.3.304 diff --git a/versions/wcoss2.ver b/versions/wcoss2.ver index 674a750aa5..5ef1d7ef95 100644 --- a/versions/wcoss2.ver +++ b/versions/wcoss2.ver @@ -2,8 +2,8 @@ export envvar_ver=1.0 export prod_envir_ver=${prod_envir_ver:-2.0.4} # Allow override from ops ecflow export prod_util_ver=${prod_util_ver:-2.0.9} # Allow override from ops ecflow -export obsproc_run_ver=1.2.0 -export prepobs_run_ver=1.1.0 +export obsproc_run_ver=1.3.0 +export prepobs_run_ver=1.2.0 export tracker_ver=v1.1.15.5 export fit_ver="newm.1.5"