From f277b1ac918c70b1b281deca38cc9ff41c404adb Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:22:09 +0000 Subject: [PATCH 01/26] Update GSI monitor JJOB jjob_header inputs Update the JJOB scripts for the GSI monitor jobs with updated inputs for jjob_header: - pass in new job name (no longer vrfy) - source new individual config files for each job Refs #1908 --- jobs/JGDAS_ATMOS_VERFOZN | 2 +- jobs/JGDAS_ATMOS_VERFRAD | 2 +- jobs/JGDAS_ATMOS_VMINMON | 2 +- jobs/JGFS_ATMOS_VMINMON | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index deccc0b28e..86a33293d4 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -4,7 +4,7 @@ # Set up environment for GDAS Ozone Monitor job ############################################################# source "${HOMEgfs}/ush/preamble.sh" -source "${HOMEgfs}/ush/jjob_header.sh" -e "vrfy" -c "base vrfy" +source "${HOMEgfs}/ush/jjob_header.sh" -e "verfozn" -c "base verfozn" export OZNMON_SUFFIX=${OZNMON_SUFFIX:-${NET}} diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 42e112c74f..0e5211aac9 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -4,7 +4,7 @@ # Set up environment for GDAS Radiance Monitor job ############################################################# source "${HOMEgfs}/ush/preamble.sh" -source "${HOMEgfs}/ush/jjob_header.sh" -e "vrfy" -c "base vrfy" +source "${HOMEgfs}/ush/jjob_header.sh" -e "verfrad" -c "base verfrad" export COMPONENT="atmos" diff --git a/jobs/JGDAS_ATMOS_VMINMON b/jobs/JGDAS_ATMOS_VMINMON index 3f9c0d856f..80ad8d1d6c 100755 --- a/jobs/JGDAS_ATMOS_VMINMON +++ b/jobs/JGDAS_ATMOS_VMINMON @@ -4,7 +4,7 @@ # GDAS Minimization Monitor (MinMon) job ########################################################### source "${HOMEgfs}/ush/preamble.sh" -source "${HOMEgfs}/ush/jjob_header.sh" -e "vrfy" -c "base vrfy" +source "${HOMEgfs}/ush/jjob_header.sh" -e "vminmon" -c "base vminmon" ########################################################### # obtain unique process id (pid) and make temp directories diff --git a/jobs/JGFS_ATMOS_VMINMON b/jobs/JGFS_ATMOS_VMINMON index a7300b4dd3..65a49e46f0 100755 --- a/jobs/JGFS_ATMOS_VMINMON +++ b/jobs/JGFS_ATMOS_VMINMON @@ -4,7 +4,7 @@ # GFS Minimization Monitor (MinMon) job ########################################################### source "${HOMEgfs}/ush/preamble.sh" -source "${HOMEgfs}/ush/jjob_header.sh" -e "vrfy" -c "base vrfy" +source "${HOMEgfs}/ush/jjob_header.sh" -e "vminmon" -c "base vminmon" ########################################################### # obtain unique process id (pid) and make temp directories From 8b13eb1b632a3698578e3d22c5cccbfff65b9290 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:25:34 +0000 Subject: [PATCH 02/26] Remove GSI monitor tasks from vrfy job - Remove the invocation of the GSI monitor tasks from the vrfy job script (vrfy.sh). - Remove the GSI monitor task settings from config.vrfy. Refs #1908 --- jobs/rocoto/vrfy.sh | 50 ------------------------------------- parm/config/gfs/config.vrfy | 47 ---------------------------------- 2 files changed, 97 deletions(-) diff --git a/jobs/rocoto/vrfy.sh b/jobs/rocoto/vrfy.sh index 7dc52351fc..67ac43e137 100755 --- a/jobs/rocoto/vrfy.sh +++ b/jobs/rocoto/vrfy.sh @@ -22,11 +22,6 @@ CDATEm1=$(${NDATE} -24 "${PDY}${cyc}") export CDATEm1 export PDYm1=${CDATEm1:0:8} -CDATEm1c=$(${NDATE} -06 "${PDY}${cyc}") -PDYm1c=${CDATEm1c:0:8} -pcyc=${CDATEm1c:8:2} - - ############################################################### # TODO: We can likely drop support for these dev-only grib1 precip files echo @@ -57,51 +52,6 @@ if [[ "${RUNMOS}" == "YES" && "${CDUMP}" == "gfs" ]]; then fi -############################################################### -echo -echo "=============== START TO RUN RADMON DATA EXTRACTION ===============" - -if [[ "${VRFYRAD}" == "YES" && "${CDUMP}" == "${CDFNL}" && "${PDY}${cyc}" != "${SDATE}" ]]; then - - export EXP=${PSLOT} - export TANKverf_rad="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" - export TANKverf_radM1="${TANKverf}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" - export MY_MACHINE=${machine} - - ${VRFYRADSH} - -fi - - -############################################################### -echo -echo "=============== START TO RUN OZMON DATA EXTRACTION ===============" -if [[ "${VRFYOZN}" == "YES" && "${CDUMP}" == "${CDFNL}" && "${PDY}${cyc}" != "${SDATE}" ]]; then - - export EXP=${PSLOT} - export TANKverf_ozn="${TANKverf_ozn}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" - export TANKverf_oznM1="${TANKverf_ozn}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" - export MY_MACHINE=${machine} - - ${VRFYOZNSH} - -fi - - -############################################################### -echo -echo "=============== START TO RUN MINMON ===============" -if [[ "${VRFYMINMON}" == "YES" && "${PDY}${cyc}" != "${SDATE}" && "${MODE}" = "cycled" ]]; then - - export M_TANKverfM0="${M_TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" - export M_TANKverfM1="${M_TANKverf}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" - export MY_MACHINE=${machine} - - ${VRFYMINSH} - -fi - - ################################################################################ echo echo "=============== START TO RUN CYCLONE TRACK VERIFICATION ===============" diff --git a/parm/config/gfs/config.vrfy b/parm/config/gfs/config.vrfy index 0f0ce4ff9d..cda125a2b4 100644 --- a/parm/config/gfs/config.vrfy +++ b/parm/config/gfs/config.vrfy @@ -10,58 +10,11 @@ echo "BEGIN: config.vrfy" export CDFNL="gdas" # Scores verification against GDAS/GFS analysis export MKPGB4PRCP="YES" # Make 0.25-deg pgb files in ARCDIR for precip verification -export VRFYRAD="YES" # Radiance data assimilation monitoring -export VRFYOZN="YES" # Ozone data assimilation monitoring -export VRFYMINMON="YES" # GSI minimization monitoring export VRFYTRAK="YES" # Hurricane track verification export VRFYGENESIS="YES" # Cyclone genesis verification export VRFYFSU="NO" # Cyclone genesis verification (FSU) export RUNMOS="NO" # whether to run entire MOS package -#---------------------------------------------------------- -# Minimization, Radiance and Ozone Monitoring -#---------------------------------------------------------- - -if [[ ${VRFYRAD} = "YES" || ${VRFYMINMON} = "YES" || ${VRFYOZN} = "YES" ]]; then - - export envir="para" - export COM_IN=${ROTDIR} - - # Radiance Monitoring - if [[ "${VRFYRAD}" == "YES" && "${RUN}" == "${CDFNL}" ]] ; then - - export RADMON_SUFFIX=${PSLOT} - export TANKverf="${NOSCRUB}/monitor/radmon" - export VRFYRADSH="${HOMEgfs}/jobs/JGDAS_ATMOS_VERFRAD" - - fi - - # Minimization Monitoring - if [[ "${VRFYMINMON}" = "YES" ]] ; then - - export MINMON_SUFFIX=${PSLOT} - export M_TANKverf="${NOSCRUB}/monitor/minmon" - if [[ "${RUN}" = "gdas" ]] ; then - export VRFYMINSH="${HOMEgfs}/jobs/JGDAS_ATMOS_VMINMON" - elif [[ "${RUN}" = "gfs" ]] ; then - export VRFYMINSH="${HOMEgfs}/jobs/JGFS_ATMOS_VMINMON" - fi - - fi - - # Ozone Monitoring - if [[ "${VRFYOZN}" == "YES" && "${RUN}" == "${CDFNL}" ]] ; then - - export HOMEgfs_ozn="${HOMEgfs}" - export OZNMON_SUFFIX=${PSLOT} - export TANKverf_ozn="${NOSCRUB}/monitor/oznmon" - export VRFYOZNSH="${HOMEgfs}/jobs/JGDAS_ATMOS_VERFOZN" - - fi - -fi - - #------------------------------------------------- # Cyclone genesis and cyclone track verification #------------------------------------------------- From 6596ec599b0c0410029fc7d3fbad1e4840fc3f37 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:36:06 +0000 Subject: [PATCH 03/26] Add new GSI monitor DO_* variables to config.base Add DO_VERFOZN, DO_VERFRAD, and DO_VMINMON switches to turn on/off these jobs in the rocoto mesh. Refs #1908 --- parm/config/gfs/config.base.emc.dyn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/parm/config/gfs/config.base.emc.dyn b/parm/config/gfs/config.base.emc.dyn index 09d8897a31..291cd5f913 100644 --- a/parm/config/gfs/config.base.emc.dyn +++ b/parm/config/gfs/config.base.emc.dyn @@ -57,6 +57,9 @@ export DO_BUFRSND="NO" # BUFR sounding products export DO_GEMPAK="NO" # GEMPAK products export DO_AWIPS="NO" # AWIPS products export DO_VRFY="YES" # VRFY step +export DO_VERFOZN="YES" # Ozone data assimilation monitoring +export DO_VERFRAD="YES" # Radiance data assimilation monitoring +export DO_VMINMON="YES" # GSI minimization monitoring # NO for retrospective parallel; YES for real-time parallel # arch.sh uses REALTIME for MOS. Need to set REALTIME=YES From 4871bafe3ef981abe347004857f94171641771e6 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:37:21 +0000 Subject: [PATCH 04/26] Add the new GSI monitor jobs to config.resources Add the resource needs for the new verfozn, verfrad, vminmon jobs to the system. Refs #1908 --- parm/config/gfs/config.resources | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index d6654b61ed..ad11d8cf27 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -14,7 +14,8 @@ if [[ $# -ne 1 ]]; then echo "atmensanlinit atmensanlrun atmensanlfinal" echo "landanl" echo "aeroanlinit aeroanlrun aeroanlfinal" - echo "anal sfcanl analcalc analdiag fcst post vrfy fit2obs metp arch echgres" + echo "anal sfcanl analcalc analdiag fcst post echgres" + echo "verfozn verfrad vminmon vrfy fit2obs metp arch" echo "eobs ediag eomg eupd ecen esfc efcs epos earc" echo "init_chem mom6ic ocnpost" echo "waveinit waveprep wavepostsbs wavepostbndpnt wavepostbndpntbll wavepostpnt" @@ -696,6 +697,34 @@ elif [[ ${step} = "post" ]]; then if [[ "${npe_node_post_gfs}" -gt "${npe_node_max}" ]]; then export npe_node_post_gfs=${npe_node_max} ; fi export is_exclusive=True +elif [[ ${step} = "verfozn" ]]; then + + export wtime_verfozn="00:05:00" + export npe_verfozn=1 + export nth_verfozn=1 + export npe_node_verfozn=1 + export memory_verfozn="1G" + +elif [[ ${step} = "verfrad" ]]; then + + export wtime_verfrad="00:20:00" + export npe_verfrad=1 + export nth_verfrad=1 + export npe_node_verfrad=1 + export memory_verfrad="5G" + +elif [[ ${step} = "vminmon" ]]; then + + export wtime_vminmon="00:05:00" + export npe_vminmon=1 + export nth_vminmon=1 + export npe_node_vminmon=1 + export wtime_vminmon_gfs="00:05:00" + export npe_vminmon_gfs=1 + export nth_vminmon_gfs=1 + export npe_node_vminmon_gfs=1 + export memory_vminmon="1G" + elif [[ ${step} = "vrfy" ]]; then export wtime_vrfy="03:00:00" From 7dc27531f8e56225d432d82bdec1771c352fe210 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:47:53 +0000 Subject: [PATCH 05/26] Add new GSI monitor job switches to setup Refs #1908 --- workflow/applications/applications.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/workflow/applications/applications.py b/workflow/applications/applications.py index 19c2082dd3..138a5ef43f 100644 --- a/workflow/applications/applications.py +++ b/workflow/applications/applications.py @@ -55,6 +55,9 @@ def __init__(self, conf: Configuration) -> None: self.do_awips = _base.get('DO_AWIPS', False) self.do_wafs = _base.get('WAFSF', False) self.do_vrfy = _base.get('DO_VRFY', True) + self.do_verfozn = _base.get('DO_VERFOZN', True) + self.do_verfrad = _base.get('DO_VERFRAD', True) + self.do_vminmon = _base.get('DO_VMINMON', True) self.do_metp = _base.get('DO_METP', False) self.do_hpssarch = _base.get('HPSSARCH', False) From 0f984dd7f5a48c8d391d666b4b53b226223d5a7c Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:48:33 +0000 Subject: [PATCH 06/26] Add new GSI monitor jobs to task creation Refs #1908 --- workflow/rocoto/gfs_tasks.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 33e2ec82f3..34cc091b49 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -857,6 +857,39 @@ def gempak(self): return task + def verfozn(self): + deps = [] + dep_dict = {'type': 'task', 'name': f'{self.cdump}analdiag'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + + resources = self.get_resource('verfozn') + task = create_wf_task('verfozn', resources, cdump=self.cdump, envar=self.envars, dependency=dependencies) + + return task + + def verfrad(self): + deps = [] + dep_dict = {'type': 'task', 'name': f'{self.cdump}analdiag'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + + resources = self.get_resource('verfrad') + task = create_wf_task('verfrad', resources, cdump=self.cdump, envar=self.envars, dependency=dependencies) + + return task + + def vminmon(self): + deps = [] + dep_dict = {'type': 'task', 'name': f'{self.cdump}anal'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + + resources = self.get_resource('vminmon') + task = create_wf_task('vminmon', resources, cdump=self.cdump, envar=self.envars, dependency=dependencies) + + return task + def vrfy(self): deps = [] dep_dict = {'type': 'metatask', 'name': f'{self.cdump}post'} From 7bf3d2faad5eaf69f87086dc0d999ab89def77ee Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:49:07 +0000 Subject: [PATCH 07/26] Add new GSI monitor tasks to tasks list Refs #1908 --- workflow/rocoto/tasks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow/rocoto/tasks.py b/workflow/rocoto/tasks.py index b9716c938e..8af4faffef 100644 --- a/workflow/rocoto/tasks.py +++ b/workflow/rocoto/tasks.py @@ -19,7 +19,8 @@ class Tasks: 'atmensanlinit', 'atmensanlrun', 'atmensanlfinal', 'aeroanlinit', 'aeroanlrun', 'aeroanlfinal', 'preplandobs', 'landanl', - 'fcst', 'post', 'ocnpost', 'vrfy', 'metp', + 'fcst', 'post', 'ocnpost', + 'vminmon', 'verfozn', 'verfrad', 'vrfy', 'metp', 'postsnd', 'awips', 'gempak', 'waveawipsbulls', 'waveawipsgridded', 'wavegempak', 'waveinit', 'wavepostbndpnt', 'wavepostbndpntbll', 'wavepostpnt', 'wavepostsbs', 'waveprep'] From 566b59b4a3362f6e6f2aa9deb2073d384478162d Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:49:38 +0000 Subject: [PATCH 08/26] Add new GSI monitor jobs to GFS cycled setup - Add job configs to config list. - Add jobs to job list. Refs #1908 --- workflow/applications/gfs_cycled.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/workflow/applications/gfs_cycled.py b/workflow/applications/gfs_cycled.py index 633e93bac0..77244fa8e1 100644 --- a/workflow/applications/gfs_cycled.py +++ b/workflow/applications/gfs_cycled.py @@ -56,6 +56,15 @@ def _get_app_configs(self): configs += ['eobs', 'eomg', 'ediag', 'eupd'] configs += ['ecen', 'esfc', 'efcs', 'echgres', 'epos', 'earc'] + if self.do_verfozn: + configs += ['verfozn'] + + if self.do_verfrad: + configs += ['verfrad'] + + if self.do_vminmon: + configs += ['vminmon'] + if self.do_metp: configs += ['metp'] @@ -159,6 +168,16 @@ def get_task_names(self): if self.do_fit2obs: gdas_tasks += ['fit2obs'] + if self.do_verfozn: + gdas_tasks += ['verfozn'] + + if self.do_verfrad: + gdas_tasks += ['verfrad'] + + if self.do_vminmon: + gdas_tasks += ['vminmon'] + + gdas_tasks += gdas_gfs_common_cleanup_tasks gdas_tasks += gdas_gfs_common_cleanup_tasks # Collect "gfs" cycle tasks @@ -171,6 +190,9 @@ def get_task_names(self): gfs_tasks += gdas_gfs_common_tasks_after_fcst + if self.do_vminmon: + gfs_tasks += ['vminmon'] + if self.do_metp: gfs_tasks += ['metp'] From 5ef2d15d6bb22cb518f7042a5bcafd5f56a9c5d6 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:50:56 +0000 Subject: [PATCH 09/26] Create new rocoto job scripts for GSI monitor jobs Refs #1908 --- jobs/rocoto/verfozn.sh | 22 ++++++++++++++++++++++ jobs/rocoto/verfrad.sh | 22 ++++++++++++++++++++++ jobs/rocoto/vminmon.sh | 22 ++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100755 jobs/rocoto/verfozn.sh create mode 100755 jobs/rocoto/verfrad.sh create mode 100755 jobs/rocoto/vminmon.sh diff --git a/jobs/rocoto/verfozn.sh b/jobs/rocoto/verfozn.sh new file mode 100755 index 0000000000..19b905f2f5 --- /dev/null +++ b/jobs/rocoto/verfozn.sh @@ -0,0 +1,22 @@ +#! /usr/bin/env bash + +source "${HOMEgfs}/ush/preamble.sh" + +############################################################### +# Source FV3GFS workflow modules +source "${HOMEgfs}/ush/load_fv3gfs_modules.sh" +status=$? +(( status != 0 )) && exit "${status}" + +export job="verfozn" +export jobid="${job}.$$" + +############################################################### +# Execute the JJOB +echo +echo "=============== START TO RUN OZMON DATA EXTRACTION ===============" + +${HOMEgfs}/jobs/JGDAS_ATMOS_VERFOZN +status=$? + +exit "${status}" diff --git a/jobs/rocoto/verfrad.sh b/jobs/rocoto/verfrad.sh new file mode 100755 index 0000000000..55d2d27077 --- /dev/null +++ b/jobs/rocoto/verfrad.sh @@ -0,0 +1,22 @@ +#! /usr/bin/env bash + +source "${HOMEgfs}/ush/preamble.sh" + +############################################################### +# Source FV3GFS workflow modules +source "${HOMEgfs}/ush/load_fv3gfs_modules.sh" +status=$? +(( status != 0 )) && exit "${status}" + +export job="verfrad" +export jobid="${job}.$$" + +############################################################### +# Execute the JJOB +echo +echo "=============== START TO RUN RADMON DATA EXTRACTION ===============" + +${HOMEgfs}/jobs/JGDAS_ATMOS_VERFRAD +status=$? + +exit "${status}" diff --git a/jobs/rocoto/vminmon.sh b/jobs/rocoto/vminmon.sh new file mode 100755 index 0000000000..ab98c881e2 --- /dev/null +++ b/jobs/rocoto/vminmon.sh @@ -0,0 +1,22 @@ +#! /usr/bin/env bash + +source "${HOMEgfs}/ush/preamble.sh" + +############################################################### +# Source FV3GFS workflow modules +source "${HOMEgfs}/ush/load_fv3gfs_modules.sh" +status=$? +(( status != 0 )) && exit "${status}" + +export job="vminmon" +export jobid="${job}.$$" + +############################################################### +# Execute the JJOB +echo +echo "=============== START TO RUN MINMON ===============" + +${HOMEgfs}/jobs/J${RUN^^}_ATMOS_VMINMON +status=$? + +exit "${status}" From 76cf81c2f628817669bce256e22a02d6e6bbea10 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 18 Oct 2023 15:52:15 +0000 Subject: [PATCH 10/26] Create new GSI monitor job configs Refs #1908 --- parm/config/gfs/config.verfozn | 20 ++++++++++++++++++++ parm/config/gfs/config.verfrad | 19 +++++++++++++++++++ parm/config/gfs/config.vminmon | 20 ++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 parm/config/gfs/config.verfozn create mode 100644 parm/config/gfs/config.verfrad create mode 100644 parm/config/gfs/config.vminmon diff --git a/parm/config/gfs/config.verfozn b/parm/config/gfs/config.verfozn new file mode 100644 index 0000000000..86ed0a383f --- /dev/null +++ b/parm/config/gfs/config.verfozn @@ -0,0 +1,20 @@ +#! /usr/bin/env bash + +########## config.verfozn ########## +echo "BEGIN: config.verfozn" + +# Get task specific resources +. "${EXPDIR}/config.resources" verfozn + +CDATEm1c=$(${NDATE} -06 "${PDY}${cyc}") +PDYm1c=${CDATEm1c:0:8} +pcyc=${CDATEm1c:8:2} + +export HOMEgfs_ozn="${HOMEgfs}" +export OZNMON_SUFFIX=${PSLOT} + +export TANKverf="${NOSCRUB}/monitor/oznmon" +export TANKverf_ozn="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" +export TANKverf_oznM1="${TANKverf}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" + +echo "END: config.verfozn" diff --git a/parm/config/gfs/config.verfrad b/parm/config/gfs/config.verfrad new file mode 100644 index 0000000000..329eb29c41 --- /dev/null +++ b/parm/config/gfs/config.verfrad @@ -0,0 +1,19 @@ +#! /usr/bin/env bash + +########## config.verfrad ########## +echo "BEGIN: config.verfrad" + +# Get task specific resources +. "${EXPDIR}/config.resources" verfrad + +CDATEm1c=$(${NDATE} -06 "${PDY}${cyc}") +PDYm1c=${CDATEm1c:0:8} +pcyc=${CDATEm1c:8:2} + +export RADMON_SUFFIX=${PSLOT} + +export TANKverf="${NOSCRUB}/monitor/radmon" +export TANKverf_rad="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" +export TANKverf_radM1="${TANKverf}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" + +echo "END: config.verfrad" diff --git a/parm/config/gfs/config.vminmon b/parm/config/gfs/config.vminmon new file mode 100644 index 0000000000..c0cf653d4e --- /dev/null +++ b/parm/config/gfs/config.vminmon @@ -0,0 +1,20 @@ +#! /usr/bin/env bash + +########## config.vminmon ########## +echo "BEGIN: config.vminmon" + +# Get task specific resources +. "${EXPDIR}/config.resources" vminmon + +CDATEm1c=$(${NDATE} -06 "${PDY}${cyc}") +PDYm1c=${CDATEm1c:0:8} +pcyc=${CDATEm1c:8:2} + +export MINMON_SUFFIX="${PSLOT}" + +export TANKverf="${NOSCRUB}/monitor/minmon" +export M_TANKverf="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" +export M_TANKverfM0="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" +export M_TANKverfM1="${TANKverf}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" + +echo "END: config.vminmon" From d0ec6624c8371dc6d2ef68209acca2397ff22bba Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 19 Oct 2023 18:23:24 +0000 Subject: [PATCH 11/26] Add GSI monitor job output folders to config.com - Add COM_ATMOS_OZNMON and COM_ATMOS_RADMON to config.com - COM_ATMOS_MINMON is already in config.com Refs #1908 --- parm/config/gfs/config.com | 2 ++ 1 file changed, 2 insertions(+) diff --git a/parm/config/gfs/config.com b/parm/config/gfs/config.com index 87a5b74b6f..591746690a 100644 --- a/parm/config/gfs/config.com +++ b/parm/config/gfs/config.com @@ -64,6 +64,8 @@ declare -rx COM_ATMOS_TRACK_TMPL=${COM_BASE}'/products/atmos/cyclone/tracks' declare -rx COM_ATMOS_GOES_TMPL=${COM_BASE}'/products/atmos/goes_sim' declare -rx COM_ATMOS_IMAGERY_TMPL=${COM_BASE}'/products/atmos/imagery' declare -rx COM_ATMOS_MINMON_TMPL=${COM_BASE}'/products/atmos/minmon' +declare -rx COM_ATMOS_OZNMON_TMPL=${COM_BASE}'/products/atmos/oznmon' +declare -rx COM_ATMOS_RADMON_TMPL=${COM_BASE}'/products/atmos/radmon' declare -rx COM_ATMOS_WMO_TMPL=${COM_BASE}'/products/atmos/wmo' declare -rx COM_WAVE_RESTART_TMPL=${COM_BASE}'/model_data/wave/restart' From 865d14df21fff8ae5af14b9be85ec78f908e5945 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 25 Oct 2023 13:56:42 +0000 Subject: [PATCH 12/26] Move DO_VMINMON up for order consistency Slight adjustment to move DO_VMINMON before other switches for GSI monitor jobs, so as to match the order used elsewhere. Refs #1908 --- parm/config/gfs/config.base.emc.dyn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/gfs/config.base.emc.dyn b/parm/config/gfs/config.base.emc.dyn index 8445f50400..2eb3628072 100644 --- a/parm/config/gfs/config.base.emc.dyn +++ b/parm/config/gfs/config.base.emc.dyn @@ -57,9 +57,9 @@ export DO_BUFRSND="NO" # BUFR sounding products export DO_GEMPAK="NO" # GEMPAK products export DO_AWIPS="NO" # AWIPS products export DO_VRFY="YES" # VRFY step +export DO_VMINMON="YES" # GSI minimization monitoring export DO_VERFOZN="YES" # Ozone data assimilation monitoring export DO_VERFRAD="YES" # Radiance data assimilation monitoring -export DO_VMINMON="YES" # GSI minimization monitoring # NO for retrospective parallel; YES for real-time parallel # arch.sh uses REALTIME for MOS. Need to set REALTIME=YES From 251db7f820dbd2644bad3ec9e35ee4fe97f855f3 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 25 Oct 2023 14:02:16 +0000 Subject: [PATCH 13/26] Replace M_TANKverfM0 with M_TANKverf The M_TANKverfM0 is the same as the M_TANKverf variable and is not needed anymore. Refs #1908 --- ush/minmon_xtrct_costs.pl | 2 +- ush/minmon_xtrct_gnorms.pl | 2 +- ush/minmon_xtrct_reduct.pl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ush/minmon_xtrct_costs.pl b/ush/minmon_xtrct_costs.pl index 1b5d490102..502032da80 100755 --- a/ush/minmon_xtrct_costs.pl +++ b/ush/minmon_xtrct_costs.pl @@ -208,7 +208,7 @@ #-------------------------- # move files to $M_TANKverf #-------------------------- - my $tankdir = $ENV{"M_TANKverfM0"}; + my $tankdir = $ENV{"M_TANKverf"}; if(! -d $tankdir) { system( "mkdir -p $tankdir" ); } diff --git a/ush/minmon_xtrct_gnorms.pl b/ush/minmon_xtrct_gnorms.pl index ecd44232da..0125c58ac8 100755 --- a/ush/minmon_xtrct_gnorms.pl +++ b/ush/minmon_xtrct_gnorms.pl @@ -414,7 +414,7 @@ sub updateGnormData { #-------------------------- # move files to $M_TANKverf #-------------------------- - my $tankdir = $ENV{"M_TANKverfM0"}; + my $tankdir = $ENV{"M_TANKverf"}; if(! -d $tankdir) { system( "mkdir -p $tankdir" ); } diff --git a/ush/minmon_xtrct_reduct.pl b/ush/minmon_xtrct_reduct.pl index f6037d3f32..1b8186b6ad 100755 --- a/ush/minmon_xtrct_reduct.pl +++ b/ush/minmon_xtrct_reduct.pl @@ -72,7 +72,7 @@ #---------------------------- # copy outfile to $M_TANKverf #---------------------------- - my $tankdir = $ENV{"M_TANKverfM0"}; + my $tankdir = $ENV{"M_TANKverf"}; if(! -d $tankdir) { system( "mkdir -p $tankdir" ); } From a642e784e7ff60c31d8b2176d60399f0bab18df5 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 25 Oct 2023 14:04:26 +0000 Subject: [PATCH 14/26] Change location of GSI monitor outputs into COM - Historically saved GSI monitor output into online archive when run in dev mode but have changed it to match how it's done in ops. - Introduce generate_com utility and COM_* variables into the GSI monitor scripts so the outputs end up in COM. - Remove settings in related configs that redirected outputs to ARCDIR. - Cleaned up variables a bit. Refs #1908 --- jobs/JGDAS_ATMOS_VERFOZN | 11 ++++------- jobs/JGDAS_ATMOS_VERFRAD | 12 +++++++----- jobs/JGDAS_ATMOS_VMINMON | 11 +++++++---- jobs/JGFS_ATMOS_VMINMON | 11 +++++++---- parm/config/gfs/config.verfozn | 11 ----------- parm/config/gfs/config.verfrad | 10 ---------- parm/config/gfs/config.vminmon | 11 ----------- 7 files changed, 25 insertions(+), 52 deletions(-) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index 86a33293d4..6eb9ac178c 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -42,15 +42,12 @@ export p_cyc=${pdate:8:2} #--------------------------------------------- # OZN_TANKDIR - WHERE OUTPUT DATA WILL RESIDE # -export OZN_TANKDIR=${OZN_TANKDIR:-$(compath.py ${envir}/${NET}/${gfs_ver})} -export TANKverf_ozn=${TANKverf_ozn:-${OZN_TANKDIR}/${RUN}.${PDY}/${cyc}/atmos/oznmon} -export TANKverf_oznM1=${TANKverf_oznM1:-${OZN_TANKDIR}/${RUN}.${P_PDY}/${p_cyc}/atmos/oznmon} - YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS +YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_OZNMON -if [[ ! -d ${TANKverf_ozn} ]]; then - mkdir -p -m 775 ${TANKverf_ozn} -fi +export TANKverf_ozn=${TANKverf_ozn:-${COM_ATMOS_OZNMON}} + +if [[ ! -d ${TANKverf_ozn} ]]; then mkdir -p -m 775 ${TANKverf_ozn} ; fi #--------------------------------------- # set up validation file diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 0e5211aac9..00a9e731c3 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -52,13 +52,15 @@ export p_cyc=${pdate:8:2} # COMOUT - WHERE GSI OUTPUT RESIDES # TANKverf - WHERE OUTPUT DATA WILL RESIDE ############################################# -export TANKverf=${TANKverf:-$(compath.py ${envir}/${NET}/${gfs_ver})} -export TANKverf_rad=${TANKverf_rad:-${TANKverf}/${RUN}.${PDY}/${cyc}/atmos/radmon} -export TANKverf_radM1=${TANKverf_radM1:-${TANKverf}/${RUN}.${P_PDY}/${p_cyc}/atmos/radmon} - YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS +YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_RADMON +YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_RADMON_PREV:COM_ATMOS_RADMON_TMPL + +export TANKverf_rad=${TANKverf_rad:-${COM_ATMOS_RADMON}} +export TANKverf_radM1=${TANKverf_radM1:-${COM_ATMOS_RADMON_PREV}} -mkdir -p -m 775 ${TANKverf_rad} +if [[ ! -d ${TANKverf_rad} ]]; then mkdir -p -m 775 ${TANKverf_rad} ; fi +if [[ ! -d ${TANKverf_radM1} ]]; then mkdir -p -m 775 ${TANKverf_radM1} ; fi ######################################## # Set necessary environment variables diff --git a/jobs/JGDAS_ATMOS_VMINMON b/jobs/JGDAS_ATMOS_VMINMON index 80ad8d1d6c..d1278a7092 100755 --- a/jobs/JGDAS_ATMOS_VMINMON +++ b/jobs/JGDAS_ATMOS_VMINMON @@ -40,12 +40,15 @@ export p_cyc=${pdate:8:2} ############################################# # TANKverf - WHERE OUTPUT DATA WILL RESIDE ############################################# -export M_TANKverf=${M_TANKverf:-${COM_IN}/${RUN}.${PDY}/${cyc}/atmos/minmon} -export M_TANKverfM1=${M_TANKverfM1:-${COM_IN}/${RUN}.${P_PDY}/${p_cyc}/atmos/minmon} - YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS +YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_MINMON +YMD=${P_PDY} HH=${p_cyc} generate_com -rx COM_ATMOS_MINMON_PREV:COM_ATMOS_MINMON_TMPL + +export M_TANKverf=${M_TANKverf:-${COM_ATMOS_MINMON}} +export M_TANKverfM1=${M_TANKverfM1:-${COM_ATMOS_MINMON_PREV}} -mkdir -p -m 775 ${M_TANKverf} +if [[ ! -d ${M_TANKverf} ]]; then mkdir -p -m 775 ${M_TANKverf} ; fi +if [[ ! -d ${M_TANKverfM1} ]]; then mkdir -p -m 775 ${M_TANKverfM1} ; fi ######################################## diff --git a/jobs/JGFS_ATMOS_VMINMON b/jobs/JGFS_ATMOS_VMINMON index 65a49e46f0..59b334cf1f 100755 --- a/jobs/JGFS_ATMOS_VMINMON +++ b/jobs/JGFS_ATMOS_VMINMON @@ -39,12 +39,15 @@ export p_cyc=${pdate:8:2} # TANKverf - WHERE OUTPUT DATA WILL RESIDE ############################################# YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS -YMD=${P_PDY} HH=${p_cyc} generate_com -rx COM_ATMOS_ANALYSIS_PREV:COM_ATMOS_ANALYSIS_TMPL +YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_MINMON +YMD=${P_PDY} HH=${p_cyc} generate_com -rx COM_ATMOS_MINMON_PREV:COM_ATMOS_MINMON_TMPL -M_TANKverf=${M_TANKverf:-${COM_ATMOS_ANALYSIS}/minmon} -export M_TANKverfM1=${M_TANKverfM1:-${COM_ATMOS_ANALYSIS_PREV}/minmon} +export M_TANKverf=${M_TANKverf:-${COM_ATMOS_MINMON}} +export M_TANKverfM1=${M_TANKverfM1:-${COM_ATMOS_MINMON_PREV}} + +if [[ ! -d ${M_TANKverf} ]]; then mkdir -p -m 775 ${M_TANKverf} ; fi +if [[ ! -d ${M_TANKverfM1} ]]; then mkdir -p -m 775 ${M_TANKverfM1} ; fi -mkdir -p -m 775 ${M_TANKverf} ######################################## # Set necessary environment variables diff --git a/parm/config/gfs/config.verfozn b/parm/config/gfs/config.verfozn index 86ed0a383f..4091db3a11 100644 --- a/parm/config/gfs/config.verfozn +++ b/parm/config/gfs/config.verfozn @@ -6,15 +6,4 @@ echo "BEGIN: config.verfozn" # Get task specific resources . "${EXPDIR}/config.resources" verfozn -CDATEm1c=$(${NDATE} -06 "${PDY}${cyc}") -PDYm1c=${CDATEm1c:0:8} -pcyc=${CDATEm1c:8:2} - -export HOMEgfs_ozn="${HOMEgfs}" -export OZNMON_SUFFIX=${PSLOT} - -export TANKverf="${NOSCRUB}/monitor/oznmon" -export TANKverf_ozn="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" -export TANKverf_oznM1="${TANKverf}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" - echo "END: config.verfozn" diff --git a/parm/config/gfs/config.verfrad b/parm/config/gfs/config.verfrad index 329eb29c41..e6dffcaa45 100644 --- a/parm/config/gfs/config.verfrad +++ b/parm/config/gfs/config.verfrad @@ -6,14 +6,4 @@ echo "BEGIN: config.verfrad" # Get task specific resources . "${EXPDIR}/config.resources" verfrad -CDATEm1c=$(${NDATE} -06 "${PDY}${cyc}") -PDYm1c=${CDATEm1c:0:8} -pcyc=${CDATEm1c:8:2} - -export RADMON_SUFFIX=${PSLOT} - -export TANKverf="${NOSCRUB}/monitor/radmon" -export TANKverf_rad="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" -export TANKverf_radM1="${TANKverf}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" - echo "END: config.verfrad" diff --git a/parm/config/gfs/config.vminmon b/parm/config/gfs/config.vminmon index c0cf653d4e..d8888a7cb6 100644 --- a/parm/config/gfs/config.vminmon +++ b/parm/config/gfs/config.vminmon @@ -6,15 +6,4 @@ echo "BEGIN: config.vminmon" # Get task specific resources . "${EXPDIR}/config.resources" vminmon -CDATEm1c=$(${NDATE} -06 "${PDY}${cyc}") -PDYm1c=${CDATEm1c:0:8} -pcyc=${CDATEm1c:8:2} - -export MINMON_SUFFIX="${PSLOT}" - -export TANKverf="${NOSCRUB}/monitor/minmon" -export M_TANKverf="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" -export M_TANKverfM0="${TANKverf}/stats/${PSLOT}/${RUN}.${PDY}/${cyc}" -export M_TANKverfM1="${TANKverf}/stats/${PSLOT}/${RUN}.${PDYm1c}/${pcyc}" - echo "END: config.vminmon" From b9cbc13bdb4b3f307c4005061e56a57762bd13a9 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Wed, 25 Oct 2023 14:07:51 +0000 Subject: [PATCH 15/26] Add GSI monitor output to archival Instead of outputs being saved in online archive (ARCDIR) they will now be saved with other outputs via HPSS or local tarball. Refs #1908 --- jobs/JGLOBAL_ARCHIVE | 3 ++- ush/hpssarch_gen.sh | 56 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/jobs/JGLOBAL_ARCHIVE b/jobs/JGLOBAL_ARCHIVE index 1ea8fdfeef..25c9b6cce2 100755 --- a/jobs/JGLOBAL_ARCHIVE +++ b/jobs/JGLOBAL_ARCHIVE @@ -17,7 +17,8 @@ YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS COM_ATMOS_BUFR COM_ATMO COM_ICE_HISTORY COM_ICE_INPUT COM_ICE_RESTART \ COM_OBS COM_TOP \ COM_OCEAN_HISTORY COM_OCEAN_INPUT COM_OCEAN_RESTART COM_OCEAN_XSECT COM_OCEAN_2D COM_OCEAN_3D \ - COM_WAVE_GRID COM_WAVE_HISTORY COM_WAVE_STATION + COM_WAVE_GRID COM_WAVE_HISTORY COM_WAVE_STATION \ + COM_ATMOS_MINMON COM_ATMOS_OZNMON COM_ATMOS_RADMON for grid in "0p25" "0p50" "1p00"; do YMD=${PDY} HH=${cyc} GRID=${grid} generate_com -rx "COM_ATMOS_GRIB_${grid}:COM_ATMOS_GRIB_GRID_TMPL" diff --git a/ush/hpssarch_gen.sh b/ush/hpssarch_gen.sh index 138a5ff656..fe0c290136 100755 --- a/ush/hpssarch_gen.sh +++ b/ush/hpssarch_gen.sh @@ -130,6 +130,17 @@ if [[ ${type} = "gfs" ]]; then for file in "${genesis_files[@]}"; do [[ -s ${COM_ATMOS_GENESIS}/${file} ]] && echo "${COM_ATMOS_GENESIS/${ROTDIR}\//}/${file}" done + + # GSI Monitor job output + + if [[ ${DO_VMINMON} = "YES" ]]; then + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.costs.txt" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.cost_terms.txt" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.gnorms.ieee_d" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.reduction.ieee_d" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/gnorm_data.txt" + fi + } >> gfsa.txt { @@ -350,7 +361,7 @@ if [[ ${type} == "gdas" ]]; then if [[ -s "${COM_ATMOS_ANALYSIS}/${head}radstat" ]]; then echo "${COM_ATMOS_ANALYSIS/${ROTDIR}\//}/${head}radstat" fi - for fstep in prep anal fcst vrfy radmon minmon oznmon; do + for fstep in prep anal fcst vrfy vminmon verfozn verfrad; do if [[ -s "${ROTDIR}/logs/${PDY}${cyc}/gdas${fstep}.log" ]]; then echo "./logs/${PDY}${cyc}/gdas${fstep}.log" fi @@ -379,6 +390,49 @@ if [[ ${type} == "gdas" ]]; then echo "${file}.idx" fi done + + # GSI Monitor jobs output + + if [[ ${DO_VMINMON} = "YES" ]]; then + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.costs.txt" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.cost_terms.txt" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.gnorms.ieee_d" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.reduction.ieee_d" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/gnorm_data.txt" + fi + + if [[ ${DO_VERFOZN} = "YES" ]]; then + for type in horiz time; do + if [[ ${type} = "horiz" ]]; then + suffix=".gz" + elif [[ ${type} = "time" ]]; then + suffix="" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/bad_cnt.${PDY}${cyc}" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/bad_diag.${PDY}${cyc}" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/bad_pen.${PDY}${cyc}" + fi + subtyplist="gome_metop-b omi_aura ompslp_npp ompsnp_n20 ompsnp_npp ompstc8_n20 ompstc8_npp sbuv2_n19" + for subtype in ${subtyplist}; do + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.anl.${PDY}${cyc}.ieee_d${suffix}" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.anl.ctl" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.ges.${PDY}${cyc}.ieee_d${suffix}" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.ges.ctl" + done + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/stdout.${type}.tar.gz" + done + fi + + if [[ ${DO_VERFRAD} = "YES" ]]; then + echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/bad_diag.${PDY}${cyc}" + echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/bad_pen.${PDY}${cyc}" + echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/low_count.${PDY}${cyc}" + echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/radmon_angle.tar.gz" + echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/radmon_bcoef.tar.gz" + echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/radmon_bcor.tar.gz" + echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/radmon_time.tar.gz" + echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/warning.${PDY}${cyc}" + fi + } >> gdas.txt #.................. From 9ac005925bf13edcb55696d9581b495b8659f3f1 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 26 Oct 2023 13:29:07 +0000 Subject: [PATCH 16/26] Adjust GSI monitor job order for consistency - Move the vminmon job to be last when listed - Job order: verfozn, verfrad, vminmon Refs #1908 --- jobs/JGLOBAL_ARCHIVE | 2 +- parm/config/gfs/config.base.emc.dyn | 2 +- parm/config/gfs/config.com | 2 +- ush/hpssarch_gen.sh | 16 ++++++++-------- workflow/rocoto/tasks.py | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/jobs/JGLOBAL_ARCHIVE b/jobs/JGLOBAL_ARCHIVE index 25c9b6cce2..00ca73ceb7 100755 --- a/jobs/JGLOBAL_ARCHIVE +++ b/jobs/JGLOBAL_ARCHIVE @@ -18,7 +18,7 @@ YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS COM_ATMOS_BUFR COM_ATMO COM_OBS COM_TOP \ COM_OCEAN_HISTORY COM_OCEAN_INPUT COM_OCEAN_RESTART COM_OCEAN_XSECT COM_OCEAN_2D COM_OCEAN_3D \ COM_WAVE_GRID COM_WAVE_HISTORY COM_WAVE_STATION \ - COM_ATMOS_MINMON COM_ATMOS_OZNMON COM_ATMOS_RADMON + COM_ATMOS_OZNMON COM_ATMOS_RADMON COM_ATMOS_MINMON for grid in "0p25" "0p50" "1p00"; do YMD=${PDY} HH=${cyc} GRID=${grid} generate_com -rx "COM_ATMOS_GRIB_${grid}:COM_ATMOS_GRIB_GRID_TMPL" diff --git a/parm/config/gfs/config.base.emc.dyn b/parm/config/gfs/config.base.emc.dyn index 2eb3628072..8445f50400 100644 --- a/parm/config/gfs/config.base.emc.dyn +++ b/parm/config/gfs/config.base.emc.dyn @@ -57,9 +57,9 @@ export DO_BUFRSND="NO" # BUFR sounding products export DO_GEMPAK="NO" # GEMPAK products export DO_AWIPS="NO" # AWIPS products export DO_VRFY="YES" # VRFY step -export DO_VMINMON="YES" # GSI minimization monitoring export DO_VERFOZN="YES" # Ozone data assimilation monitoring export DO_VERFRAD="YES" # Radiance data assimilation monitoring +export DO_VMINMON="YES" # GSI minimization monitoring # NO for retrospective parallel; YES for real-time parallel # arch.sh uses REALTIME for MOS. Need to set REALTIME=YES diff --git a/parm/config/gfs/config.com b/parm/config/gfs/config.com index 591746690a..208b0ac096 100644 --- a/parm/config/gfs/config.com +++ b/parm/config/gfs/config.com @@ -63,9 +63,9 @@ declare -rx COM_ATMOS_GENESIS_TMPL=${COM_BASE}'/products/atmos/cyclone/genesis_v declare -rx COM_ATMOS_TRACK_TMPL=${COM_BASE}'/products/atmos/cyclone/tracks' declare -rx COM_ATMOS_GOES_TMPL=${COM_BASE}'/products/atmos/goes_sim' declare -rx COM_ATMOS_IMAGERY_TMPL=${COM_BASE}'/products/atmos/imagery' -declare -rx COM_ATMOS_MINMON_TMPL=${COM_BASE}'/products/atmos/minmon' declare -rx COM_ATMOS_OZNMON_TMPL=${COM_BASE}'/products/atmos/oznmon' declare -rx COM_ATMOS_RADMON_TMPL=${COM_BASE}'/products/atmos/radmon' +declare -rx COM_ATMOS_MINMON_TMPL=${COM_BASE}'/products/atmos/minmon' declare -rx COM_ATMOS_WMO_TMPL=${COM_BASE}'/products/atmos/wmo' declare -rx COM_WAVE_RESTART_TMPL=${COM_BASE}'/model_data/wave/restart' diff --git a/ush/hpssarch_gen.sh b/ush/hpssarch_gen.sh index fe0c290136..a26273d566 100755 --- a/ush/hpssarch_gen.sh +++ b/ush/hpssarch_gen.sh @@ -393,14 +393,6 @@ if [[ ${type} == "gdas" ]]; then # GSI Monitor jobs output - if [[ ${DO_VMINMON} = "YES" ]]; then - echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.costs.txt" - echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.cost_terms.txt" - echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.gnorms.ieee_d" - echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.reduction.ieee_d" - echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/gnorm_data.txt" - fi - if [[ ${DO_VERFOZN} = "YES" ]]; then for type in horiz time; do if [[ ${type} = "horiz" ]]; then @@ -433,6 +425,14 @@ if [[ ${type} == "gdas" ]]; then echo "${COM_ATMOS_RADMON/${ROTDIR}\//}/warning.${PDY}${cyc}" fi + if [[ ${DO_VMINMON} = "YES" ]]; then + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.costs.txt" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.cost_terms.txt" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.gnorms.ieee_d" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/${PDY}${cyc}.reduction.ieee_d" + echo "${COM_ATMOS_MINMON/${ROTDIR}\//}/gnorm_data.txt" + fi + } >> gdas.txt #.................. diff --git a/workflow/rocoto/tasks.py b/workflow/rocoto/tasks.py index f9b33e15c3..b1dd1b0d92 100644 --- a/workflow/rocoto/tasks.py +++ b/workflow/rocoto/tasks.py @@ -20,7 +20,7 @@ class Tasks: 'aeroanlinit', 'aeroanlrun', 'aeroanlfinal', 'preplandobs', 'landanl', 'fcst', 'post', 'ocnpost', - 'vminmon', 'verfozn', 'verfrad', 'vrfy', 'metp', + 'verfozn', 'verfrad', 'vminmon', 'vrfy', 'metp', 'postsnd', 'awips', 'gempak', 'waveawipsbulls', 'waveawipsgridded', 'wavegempak', 'waveinit', 'wavepostbndpnt', 'wavepostbndpntbll', 'wavepostpnt', 'wavepostsbs', 'waveprep'] From 89f151fec33af43b94c1c13c7bbc8d550a670ec5 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 26 Oct 2023 13:33:39 +0000 Subject: [PATCH 17/26] One more change for order consistency Refs #1908 --- ush/hpssarch_gen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/hpssarch_gen.sh b/ush/hpssarch_gen.sh index a26273d566..09bce41a9e 100755 --- a/ush/hpssarch_gen.sh +++ b/ush/hpssarch_gen.sh @@ -361,7 +361,7 @@ if [[ ${type} == "gdas" ]]; then if [[ -s "${COM_ATMOS_ANALYSIS}/${head}radstat" ]]; then echo "${COM_ATMOS_ANALYSIS/${ROTDIR}\//}/${head}radstat" fi - for fstep in prep anal fcst vrfy vminmon verfozn verfrad; do + for fstep in prep anal fcst vrfy verfozn verfrad vminmon; do if [[ -s "${ROTDIR}/logs/${PDY}${cyc}/gdas${fstep}.log" ]]; then echo "./logs/${PDY}${cyc}/gdas${fstep}.log" fi From b9f0f369878c095be5d0decad802978a53a9cbbd Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 26 Oct 2023 13:52:40 +0000 Subject: [PATCH 18/26] Resolve shellcheck SC2086 warning Add double quotes about JJOB invocation in the new rocoto job scripts to resolve shellcheck warning. Refs #1908 --- jobs/rocoto/verfozn.sh | 2 +- jobs/rocoto/verfrad.sh | 2 +- jobs/rocoto/vminmon.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jobs/rocoto/verfozn.sh b/jobs/rocoto/verfozn.sh index 19b905f2f5..70a772fca6 100755 --- a/jobs/rocoto/verfozn.sh +++ b/jobs/rocoto/verfozn.sh @@ -16,7 +16,7 @@ export jobid="${job}.$$" echo echo "=============== START TO RUN OZMON DATA EXTRACTION ===============" -${HOMEgfs}/jobs/JGDAS_ATMOS_VERFOZN +"${HOMEgfs}/jobs/JGDAS_ATMOS_VERFOZN" status=$? exit "${status}" diff --git a/jobs/rocoto/verfrad.sh b/jobs/rocoto/verfrad.sh index 55d2d27077..a687d3cf26 100755 --- a/jobs/rocoto/verfrad.sh +++ b/jobs/rocoto/verfrad.sh @@ -16,7 +16,7 @@ export jobid="${job}.$$" echo echo "=============== START TO RUN RADMON DATA EXTRACTION ===============" -${HOMEgfs}/jobs/JGDAS_ATMOS_VERFRAD +"${HOMEgfs}/jobs/JGDAS_ATMOS_VERFRAD" status=$? exit "${status}" diff --git a/jobs/rocoto/vminmon.sh b/jobs/rocoto/vminmon.sh index ab98c881e2..2bbb7599ca 100755 --- a/jobs/rocoto/vminmon.sh +++ b/jobs/rocoto/vminmon.sh @@ -16,7 +16,7 @@ export jobid="${job}.$$" echo echo "=============== START TO RUN MINMON ===============" -${HOMEgfs}/jobs/J${RUN^^}_ATMOS_VMINMON +"${HOMEgfs}/jobs/J${RUN^^}_ATMOS_VMINMON" status=$? exit "${status}" From 6c621a149c31ad50673e856de6f3d7cd0e309509 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 26 Oct 2023 14:38:42 +0000 Subject: [PATCH 19/26] Cleanup DATA and add missing exit - Resolve more SC2086 shellcheck warnings and cleanup the usage of the $DATA variable in the GSI monitor JJOB scripts. - Add missing exit statement to end of JGFS_ATMOS_VMINMON. Refs #1908 --- jobs/JGDAS_ATMOS_VERFOZN | 6 +----- jobs/JGDAS_ATMOS_VERFRAD | 12 +----------- jobs/JGDAS_ATMOS_VMINMON | 6 +----- jobs/JGFS_ATMOS_VMINMON | 9 ++------- 4 files changed, 5 insertions(+), 28 deletions(-) diff --git a/jobs/JGDAS_ATMOS_VERFOZN b/jobs/JGDAS_ATMOS_VERFOZN index 6eb9ac178c..3b75359e6a 100755 --- a/jobs/JGDAS_ATMOS_VERFOZN +++ b/jobs/JGDAS_ATMOS_VERFOZN @@ -74,10 +74,6 @@ err=$? ################################ # Remove the Working Directory ################################ -KEEPDATA=${KEEPDATA:-NO} -cd ${DATAROOT} -if [ ${KEEPDATA} = NO ] ; then - rm -rf ${DATA} -fi +[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" exit 0 diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 00a9e731c3..4d410bda13 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -8,14 +8,9 @@ source "${HOMEgfs}/ush/jjob_header.sh" -e "verfrad" -c "base verfrad" export COMPONENT="atmos" -export RAD_DATA_IN=${DATA} - export RADMON_SUFFIX=${RADMON_SUFFIX:-${RUN}} export CYCLE_INTERVAL=${CYCLE_INTERVAL:-6} -mkdir -p ${RAD_DATA_IN} -cd ${RAD_DATA_IN} - ############################################## # Specify Execution Areas ############################################## @@ -91,9 +86,4 @@ fi ################################ # Remove the Working Directory ################################ -KEEPDATA=${KEEPDATA:-YES} -cd ${DATAROOT} -if [ ${KEEPDATA} = NO ] ; then - rm -rf ${RAD_DATA_IN} -fi - +[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" diff --git a/jobs/JGDAS_ATMOS_VMINMON b/jobs/JGDAS_ATMOS_VMINMON index d1278a7092..c7c6d12f9a 100755 --- a/jobs/JGDAS_ATMOS_VMINMON +++ b/jobs/JGDAS_ATMOS_VMINMON @@ -68,10 +68,6 @@ err=$? ################################ # Remove the Working Directory ################################ -KEEPDATA=${KEEPDATA:-NO} -cd ${DATAROOT} -if [ ${KEEPDATA} = NO ] ; then - rm -rf ${DATA} -fi +[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" exit 0 diff --git a/jobs/JGFS_ATMOS_VMINMON b/jobs/JGFS_ATMOS_VMINMON index 59b334cf1f..c548d806f5 100755 --- a/jobs/JGFS_ATMOS_VMINMON +++ b/jobs/JGFS_ATMOS_VMINMON @@ -66,11 +66,6 @@ err=$? ################################ # Remove the Working Directory ################################ -KEEPDATA=${KEEPDATA:-NO} -cd ${DATAROOT} - -if [ ${KEEPDATA} = NO ] ; then - rm -rf ${DATA} -fi - +[[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" +exit 0 From f3983a1730732bdaf9ee317113f35a20aeaac407 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 26 Oct 2023 14:51:21 +0000 Subject: [PATCH 20/26] Add missing exit at end of JGDAS_ATMOS_VERFRAD Refs #1908 --- jobs/JGDAS_ATMOS_VERFRAD | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 4d410bda13..6c09c68ee5 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -87,3 +87,5 @@ fi # Remove the Working Directory ################################ [[ "${KEEPDATA}" = "NO" ]] && rm -rf "${DATA}" + +exit 0 From 98c12314f9781f58592e19aa52fa654a699f2a63 Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Fri, 27 Oct 2023 09:33:08 -0400 Subject: [PATCH 21/26] Fix COM_ATMOS_RADMON_PREVS in JGDAS_ATMOS_VERFRAD Refs #1908 Co-authored-by: Walter Kolczynski - NOAA --- jobs/JGDAS_ATMOS_VERFRAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/JGDAS_ATMOS_VERFRAD b/jobs/JGDAS_ATMOS_VERFRAD index 6c09c68ee5..301af7d06e 100755 --- a/jobs/JGDAS_ATMOS_VERFRAD +++ b/jobs/JGDAS_ATMOS_VERFRAD @@ -49,7 +49,7 @@ export p_cyc=${pdate:8:2} ############################################# YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_RADMON -YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_RADMON_PREV:COM_ATMOS_RADMON_TMPL +YMD=${P_PDY} HH=${p_cyc} generate_com -rx COM_ATMOS_RADMON_PREV:COM_ATMOS_RADMON_TMPL export TANKverf_rad=${TANKverf_rad:-${COM_ATMOS_RADMON}} export TANKverf_radM1=${TANKverf_radM1:-${COM_ATMOS_RADMON_PREV}} From ff8af5e22be4e7752225cddd4472a166ed8ce620 Mon Sep 17 00:00:00 2001 From: Kate Friedman Date: Fri, 27 Oct 2023 09:34:01 -0400 Subject: [PATCH 22/26] Remove duplicate line in gfs_cycled.py Refs #1908 Co-authored-by: Walter Kolczynski - NOAA --- workflow/applications/gfs_cycled.py | 1 - 1 file changed, 1 deletion(-) diff --git a/workflow/applications/gfs_cycled.py b/workflow/applications/gfs_cycled.py index aeb1079859..edd61635c2 100644 --- a/workflow/applications/gfs_cycled.py +++ b/workflow/applications/gfs_cycled.py @@ -178,7 +178,6 @@ def get_task_names(self): gdas_tasks += ['vminmon'] gdas_tasks += gdas_gfs_common_cleanup_tasks - gdas_tasks += gdas_gfs_common_cleanup_tasks # Collect "gfs" cycle tasks gfs_tasks = gdas_gfs_common_tasks_before_fcst From b7b2638a492986103f6e40e48eeda0fdd0e57f89 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 31 Oct 2023 14:13:55 +0000 Subject: [PATCH 23/26] Add GSI monitor jobs to archival job dependencies Refs #1908 --- workflow/rocoto/gfs_tasks.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 99a24de908..60eea6e9bd 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -941,6 +941,15 @@ def metp(self): def arch(self): deps = [] + if self.cdump in ['gdas'] and self.app_config.do_verfozn: + dep_dict = {'type': 'task', 'name': f'{self.cdump}verfozn'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.cdump in ['gdas'] and self.app_config.do_verfrad: + dep_dict = {'type': 'task', 'name': f'{self.cdump}verfrad'} + deps.append(rocoto.add_dependency(dep_dict)) + if self.app_config.mode in ['cycled'] and self.app_config.do_vminmon: + dep_dict = {'type': 'task', 'name': f'{self.cdump}vminmon'} + deps.append(rocoto.add_dependency(dep_dict)) if self.app_config.do_vrfy: dep_dict = {'type': 'task', 'name': f'{self.cdump}vrfy'} deps.append(rocoto.add_dependency(dep_dict)) From 3ad60053671e3b2bdde3adb3453a77a8fe3d17b2 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 2 Nov 2023 19:22:50 +0000 Subject: [PATCH 24/26] Update archive job dependencies for GSI monitor jobs - Since the GSI monitor jobs don't run in the first half cycle have updated the dependencies for the gdasarch job to add additional logic for the first half cycle. - The gdasarch job will now check a new "or" logic if the GSI monitor job(s) are done or there isn't a prior cycle. - The first half cycle gdasarch job should fire off based on the lack of prior cycle instead of waiting for the GSI monitor jobs that won't exist. Later cycles should wait for the GSI monitor job(s) are complete. - Also updated the dependencies to appropriately add the gfsvminmon job for the gfsarch job when in cycled mode. Refs #1908 --- workflow/rocoto/gfs_tasks.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 60eea6e9bd..2c78f5c7c8 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -941,15 +941,28 @@ def metp(self): def arch(self): deps = [] - if self.cdump in ['gdas'] and self.app_config.do_verfozn: - dep_dict = {'type': 'task', 'name': f'{self.cdump}verfozn'} - deps.append(rocoto.add_dependency(dep_dict)) - if self.cdump in ['gdas'] and self.app_config.do_verfrad: - dep_dict = {'type': 'task', 'name': f'{self.cdump}verfrad'} - deps.append(rocoto.add_dependency(dep_dict)) - if self.app_config.mode in ['cycled'] and self.app_config.do_vminmon: - dep_dict = {'type': 'task', 'name': f'{self.cdump}vminmon'} - deps.append(rocoto.add_dependency(dep_dict)) + dependencies = [] + if self.app_config.do_verfozn or self.app_config.do_verfrad or self.app_config.do_vminmon: + if self.app_config.mode in ['cycled']: + if self.cdump in ['gfs']: + if self.app_config.do_vminmon: + dep_dict = {'type': 'task', 'name': f'{self.cdump}vminmon'} + deps.append(rocoto.add_dependency(dep_dict)) + elif self.cdump in ['gdas']: + deps2 = [] + if self.app_config.do_verfozn: + dep_dict = {'type': 'task', 'name': f'{self.cdump}verfozn'} + deps2.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_verfrad: + dep_dict = {'type': 'task', 'name': f'{self.cdump}verfrad'} + deps2.append(rocoto.add_dependency(dep_dict)) + if self.app_config.do_vminmon: + dep_dict = {'type': 'task', 'name': f'{self.cdump}vminmon'} + deps2.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps2) + dep_dict = {'type': 'cycleexist', 'condition': 'not', 'offset': '-06:00:00'} + dependencies.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep_condition='or', dep=dependencies) if self.app_config.do_vrfy: dep_dict = {'type': 'task', 'name': f'{self.cdump}vrfy'} deps.append(rocoto.add_dependency(dep_dict)) @@ -973,7 +986,7 @@ def arch(self): dep_dict = {'type': 'metatask', 'name': f'{self.cdump}post'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps+dependencies) cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump From 1fccd1caacb5a9e64f3e93f55507b0c7e80abfa1 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 2 Nov 2023 19:46:46 +0000 Subject: [PATCH 25/26] Resolve PEP8 error in gfs_tasks.py Refs #1908 --- workflow/rocoto/gfs_tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 2c78f5c7c8..53a19fcd60 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -986,7 +986,7 @@ def arch(self): dep_dict = {'type': 'metatask', 'name': f'{self.cdump}post'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='and', dep=deps+dependencies) + dependencies = rocoto.create_dependency(dep_condition='and', dep = deps + dependencies) cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump From e3cfdac9267ce5a8395dc928066c9727e24a6923 Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Thu, 2 Nov 2023 19:49:48 +0000 Subject: [PATCH 26/26] Further resolve PEP8 errors Refs #1908 --- workflow/rocoto/gfs_tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 53a19fcd60..8026316033 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -986,7 +986,7 @@ def arch(self): dep_dict = {'type': 'metatask', 'name': f'{self.cdump}post'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='and', dep = deps + dependencies) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps + dependencies) cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump