From f7bfed254d38558423b0afc603ee3ef9f84f562d Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 27 Jan 2023 16:12:01 +0000 Subject: [PATCH 01/10] stashing additions to soca cycling bmat --- env/HERA.env | 10 ++++++++ env/ORION.env | 10 ++++++++ jobs/rocoto/ocnanalbmat.sh | 19 ++++++++++++++ parm/config/config.ocnanalbmat | 11 ++++++++ parm/config/config.resources | 31 +++++++++++++++++++++-- workflow/applications.py | 13 +++++++++- workflow/rocoto/workflow_tasks.py | 42 +++++++++++++++++++++++-------- 7 files changed, 123 insertions(+), 13 deletions(-) create mode 100755 jobs/rocoto/ocnanalbmat.sh create mode 100644 parm/config/config.ocnanalbmat diff --git a/env/HERA.env b/env/HERA.env index 36f8d77352..2673a92986 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -83,6 +83,16 @@ elif [[ "${step}" = "aeroanlrun" ]]; then [[ ${NTHREADS_AEROANL} -gt ${nth_max} ]] && export NTHREADS_AEROANL=${nth_max} export APRUN_AEROANL="${launcher} -n ${npe_aeroanlrun}" +elif [ ${step} = "ocnanalbmat" ]; then + + export APRUNCFP="${launcher} -n \$ncmd --multi-prog" + + nth_max=$((npe_node_max / npe_node_ocnanalbmat)) + + export NTHREADS_OCNANAL=${nth_ocnanalbmat:-${nth_max}} + [[ ${NTHREADS_OCNANAL} -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" + elif [ ${step} = "ocnanalrun" ]; then export APRUNCFP="${launcher} -n \$ncmd --multi-prog" diff --git a/env/ORION.env b/env/ORION.env index 994184490e..2d0a57fdc8 100755 --- a/env/ORION.env +++ b/env/ORION.env @@ -83,6 +83,16 @@ elif [[ "${step}" = "aeroanlrun" ]]; then [[ ${NTHREADS_AEROANL} -gt ${nth_max} ]] && export NTHREADS_AEROANL=${nth_max} export APRUN_AEROANL="${launcher} -n ${npe_aeroanlrun}" +elif [ ${step} = "ocnanalbmat" ]; then + + export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" + + nth_max=$((npe_node_max / npe_node_ocnanalbmat)) + + export NTHREADS_OCNANAL=${nth_ocnanalbmat:-${nth_max}} + [[ $NTHREADS_OCNANAL -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} + export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" + elif [ ${step} = "ocnanalrun" ]; then export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" diff --git a/jobs/rocoto/ocnanalbmat.sh b/jobs/rocoto/ocnanalbmat.sh new file mode 100755 index 0000000000..b7f5fc3acb --- /dev/null +++ b/jobs/rocoto/ocnanalbmat.sh @@ -0,0 +1,19 @@ +#! /usr/bin/env bash + +source "${HOMEgfs}/ush/preamble.sh" + +############################################################### +# Source UFSDA workflow modules +. ${HOMEgfs}/ush/load_ufsda_modules.sh +status=$? +[[ ${status} -ne 0 ]] && exit ${status} + +export job="ocnanalbmat" +export jobid="${job}.$$" + +############################################################### +# Execute the JJOB +#"${HOMEgfs}"/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT +echo "BMAT gets run here" +status=$? +exit "${status}" diff --git a/parm/config/config.ocnanalbmat b/parm/config/config.ocnanalbmat new file mode 100644 index 0000000000..024da5f51b --- /dev/null +++ b/parm/config/config.ocnanalbmat @@ -0,0 +1,11 @@ +#!/bin/bash + +########## config.ocnanalbmat ########## +# Ocn Analysis specific + +echo "BEGIN: config.ocnanalbmat" + +# Get task specific resources +. "${EXPDIR}/config.resources" ocnanalbmat + +echo "END: config.ocnanalbmat" diff --git a/parm/config/config.resources b/parm/config/config.resources index 431cfd4137..0025d2b430 100755 --- a/parm/config/config.resources +++ b/parm/config/config.resources @@ -249,6 +249,27 @@ elif [[ "${step}" = "ocnanalprep" ]]; then export npe_node_ocnanalprep export memory_ocnanalprep="3072M" +elif [[ "${step}" = "ocnanalbmat" ]]; then + npes=16 + case ${CASE} in + C384) + npes=480 + ;; + C48) + npes=16 + ;; + *) + echo "FATAL: Resolution not supported'" + exit 1 + esac + + export wtime_ocnanalbmat="00:30:00" + export npe_ocnanalbmat=${npes} + export nth_ocnanalbmat=1 + export native_ocnanalbmat="--exclusive" + npe_node_ocnanalbmat=$(echo "${npe_node_max} / ${nth_ocnanalbmat}" | bc) + export npe_node_ocnanalbmat + elif [[ "${step}" = "ocnanalrun" ]]; then npes=16 case ${CASE} in @@ -370,7 +391,7 @@ elif [ ${step} = "gldas" ]; then elif [ ${step} = "fcst" ]; then - export wtime_fcst="00:40:00" + export wtime_fcst="00:30:00" if [ ${CASE} = "C768" ]; then export wtime_fcst_gfs="06:00:00" elif [ ${CASE} = "C384" ]; then @@ -437,6 +458,7 @@ elif [ ${step} = "fcst" ]; then if [[ ${DO_OCN} == "YES" ]]; then case ${OCNRES} in # Except for 025, these are guesses for now + 500) export OCNPETS=8 ;; 100) export OCNPETS=20 ;; 050) export OCNPETS=60 ;; 025) export OCNPETS=220 ;; @@ -451,6 +473,7 @@ elif [ ${step} = "fcst" ]; then if [[ ${DO_ICE} == "YES" ]]; then case ${ICERES} in # Except for 025, these are guesses for now + 500) export ICEPETS=4 ;; 100) export ICEPETS=10 ;; 050) export ICEPETS=30 ;; 025) export ICEPETS=120 ;; @@ -737,7 +760,7 @@ elif [ ${step} = "esfc" ]; then elif [ ${step} = "efcs" ]; then if [ ${CASE} = "C768" ]; then - export wtime_efcs="06:00:00" + export wtime_efcs="01:20:00" else export wtime_efcs="00:40:00" fi @@ -764,6 +787,10 @@ elif [ ${step} = "postsnd" ]; then export npe_node_postsnd=10 export npe_postsndcfp=9 export npe_node_postsndcfp=1 + if [ ${OUTPUT_FILE} == "nemsio" ]; then + export npe_postsnd=13 + export npe_node_postsnd=4 + fi if [[ "$(echo "${npe_node_postsnd} * ${nth_postsnd}" | bc)" -gt "${npe_node_max}" ]]; then export npe_node_postsnd=$(echo "${npe_node_max} / ${nth_postsnd}" | bc) fi diff --git a/workflow/applications.py b/workflow/applications.py index 73c139adb1..a0c4956d23 100644 --- a/workflow/applications.py +++ b/workflow/applications.py @@ -181,6 +181,10 @@ def _cycled_configs(self): else: configs += ['anal', 'analdiag'] + if self.do_jediocnvar: + configs += ['ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalpost'] + configs += ['ocnpost'] + configs += ['sfcanl', 'analcalc', 'fcst', 'post', 'vrfy', 'arch'] if self.do_gldas: @@ -341,7 +345,11 @@ def _get_cycled_task_names(self): """ gdas_gfs_common_tasks_before_fcst = ['prep'] - gdas_gfs_common_tasks_after_fcst = ['post', 'vrfy'] + gdas_gfs_common_tasks_after_fcst = ['post'] + if self.do_ocean: + gdas_gfs_common_tasks_after_fcst += ['ocnpost'] + gdas_gfs_common_tasks_after_fcst += ['vrfy'] + gdas_gfs_common_cleanup_tasks = ['arch'] if self.do_jedivar: @@ -349,6 +357,9 @@ def _get_cycled_task_names(self): else: gdas_gfs_common_tasks_before_fcst += ['anal'] + if self.do_jediocnvar: + gdas_gfs_common_tasks_before_fcst += ['ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalpost'] + gdas_gfs_common_tasks_before_fcst += ['sfcanl', 'analcalc'] if self.do_aero: diff --git a/workflow/rocoto/workflow_tasks.py b/workflow/rocoto/workflow_tasks.py index ba517260e4..d5f354ac57 100644 --- a/workflow/rocoto/workflow_tasks.py +++ b/workflow/rocoto/workflow_tasks.py @@ -13,7 +13,7 @@ class Tasks: VALID_TASKS = ['aerosol_init', 'coupled_ic', 'getic', 'init', 'prep', 'anal', 'sfcanl', 'analcalc', 'analdiag', 'gldas', 'arch', 'atmanalprep', 'atmanalrun', 'atmanalpost', - 'ocnanalprep', 'ocnanalrun', 'ocnanalpost', + 'ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalpost', 'earc', 'ecen', 'echgres', 'ediag', 'efcs', 'eobs', 'eomg', 'epos', 'esfc', 'eupd', 'atmensanalprep', 'atmensanalrun', 'atmensanalpost', @@ -242,6 +242,7 @@ def init(self): def prep(self): + suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] gfs_cyc = self._base["gfs_cyc"] dmpdir = self._base["DMPDIR"] @@ -250,7 +251,7 @@ def prep(self): deps = [] 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.nc' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009{suffix}' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'{dmpdir}/{self.cdump}{dump_suffix}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' @@ -398,6 +399,7 @@ def analdiag(self): def atmanalprep(self): + suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] gfs_cyc = self._base["gfs_cyc"] dmpdir = self._base["DMPDIR"] @@ -406,7 +408,7 @@ def atmanalprep(self): deps = [] dep_dict = {'type': 'metatask', 'name': 'gdaspost', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) - data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009.nc' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009{suffix}' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'{dmpdir}/{self.cdump}{dump_suffix}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' @@ -454,13 +456,14 @@ def atmanalpost(self): def aeroanlinit(self): + suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] dmpdir = self._base["DMPDIR"] deps = [] dep_dict = {'type': 'metatask', 'name': 'gdaspost', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) - data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009.nc' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009{suffix}' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'{dmpdir}/{self.cdump}{dump_suffix}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' @@ -498,14 +501,17 @@ def aeroanlfinal(self): def ocnanalprep(self): + suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] dmpdir = self._base["DMPDIR"] deps = [] - data = f'&ROTDIR;/gdas.@Y@m@d/@H/ocean/gdas.t@Hz.ocnf009.nc' + #dep_dict = {'type': 'metatask', 'name': 'ocnanalpost', 'offset': '-06:00:00'} + #deps.append(rocoto.add_dependency(dep_dict)) + data = f'&ROTDIR;/gdas.@Y@m@d/@H/ocean/gdas.t@Hz.ocnf009{suffix}' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep=deps) + dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) resources = self.get_resource('ocnanalprep') task = create_wf_task('ocnanalprep', @@ -516,13 +522,29 @@ def ocnanalprep(self): return task - def ocnanalrun(self): + def ocnanalbmat(self): deps = [] dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalprep'} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) + resources = self.get_resource('ocnanalbmat') + task = create_wf_task('ocnanalbmat', + resources, + cdump=self.cdump, + envar=self.envars, + dependency=dependencies) + + return task + + def ocnanalrun(self): + + deps = [] + dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalbmat'} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + resources = self.get_resource('ocnanalrun') task = create_wf_task('ocnanalrun', resources, @@ -1083,6 +1105,7 @@ def eupd(self): def atmensanalprep(self): + suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] gfs_cyc = self._base["gfs_cyc"] dmpdir = self._base["DMPDIR"] @@ -1091,7 +1114,7 @@ def atmensanalprep(self): deps = [] dep_dict = {'type': 'metatask', 'name': 'gdaspost', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) - data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009.nc' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009{suffix}' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'{dmpdir}/{self.cdump}{dump_suffix}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' @@ -1254,10 +1277,9 @@ def epos(self): def _get_eposgroups(epos): fhmin = epos['FHMIN_ENKF'] fhmax = epos['FHMAX_ENKF'] - fhout = epos['FHOUT_ENKF'] if self.cdump == "gfs": fhmax = epos['FHMAX_ENKF_GFS'] - fhout = epos['FHOUT_ENKF_GFS'] + fhout = epos['FHOUT_ENKF'] fhrs = range(fhmin, fhmax + fhout, fhout) neposgrp = epos['NEPOSGRP'] From 7e675e12469e7341294571fbf0e6aaa7e5ee2b87 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 27 Jan 2023 16:34:09 +0000 Subject: [PATCH 02/10] manual updating of leftovers from old hash --- parm/config/config.resources | 10 ++-------- workflow/applications.py | 2 +- workflow/rocoto/workflow_tasks.py | 22 ++++++++-------------- 3 files changed, 11 insertions(+), 23 deletions(-) diff --git a/parm/config/config.resources b/parm/config/config.resources index 0025d2b430..4acddaf5af 100644 --- a/parm/config/config.resources +++ b/parm/config/config.resources @@ -391,7 +391,7 @@ elif [ ${step} = "gldas" ]; then elif [ ${step} = "fcst" ]; then - export wtime_fcst="00:30:00" + export wtime_fcst="00:40:00" if [ ${CASE} = "C768" ]; then export wtime_fcst_gfs="06:00:00" elif [ ${CASE} = "C384" ]; then @@ -458,7 +458,6 @@ elif [ ${step} = "fcst" ]; then if [[ ${DO_OCN} == "YES" ]]; then case ${OCNRES} in # Except for 025, these are guesses for now - 500) export OCNPETS=8 ;; 100) export OCNPETS=20 ;; 050) export OCNPETS=60 ;; 025) export OCNPETS=220 ;; @@ -473,7 +472,6 @@ elif [ ${step} = "fcst" ]; then if [[ ${DO_ICE} == "YES" ]]; then case ${ICERES} in # Except for 025, these are guesses for now - 500) export ICEPETS=4 ;; 100) export ICEPETS=10 ;; 050) export ICEPETS=30 ;; 025) export ICEPETS=120 ;; @@ -760,7 +758,7 @@ elif [ ${step} = "esfc" ]; then elif [ ${step} = "efcs" ]; then if [ ${CASE} = "C768" ]; then - export wtime_efcs="01:20:00" + export wtime_efcs="06:00:00" else export wtime_efcs="00:40:00" fi @@ -787,10 +785,6 @@ elif [ ${step} = "postsnd" ]; then export npe_node_postsnd=10 export npe_postsndcfp=9 export npe_node_postsndcfp=1 - if [ ${OUTPUT_FILE} == "nemsio" ]; then - export npe_postsnd=13 - export npe_node_postsnd=4 - fi if [[ "$(echo "${npe_node_postsnd} * ${nth_postsnd}" | bc)" -gt "${npe_node_max}" ]]; then export npe_node_postsnd=$(echo "${npe_node_max} / ${nth_postsnd}" | bc) fi diff --git a/workflow/applications.py b/workflow/applications.py index a0c4956d23..e33582a216 100644 --- a/workflow/applications.py +++ b/workflow/applications.py @@ -345,7 +345,7 @@ def _get_cycled_task_names(self): """ gdas_gfs_common_tasks_before_fcst = ['prep'] - gdas_gfs_common_tasks_after_fcst = ['post'] + gdas_gfs_common_tasks_after_fcst = ['post', 'vrfy'] if self.do_ocean: gdas_gfs_common_tasks_after_fcst += ['ocnpost'] gdas_gfs_common_tasks_after_fcst += ['vrfy'] diff --git a/workflow/rocoto/workflow_tasks.py b/workflow/rocoto/workflow_tasks.py index d5f354ac57..e375c3f908 100644 --- a/workflow/rocoto/workflow_tasks.py +++ b/workflow/rocoto/workflow_tasks.py @@ -242,7 +242,6 @@ def init(self): def prep(self): - suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] gfs_cyc = self._base["gfs_cyc"] dmpdir = self._base["DMPDIR"] @@ -251,7 +250,7 @@ def prep(self): deps = [] 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{suffix}' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'{dmpdir}/{self.cdump}{dump_suffix}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' @@ -399,7 +398,6 @@ def analdiag(self): def atmanalprep(self): - suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] gfs_cyc = self._base["gfs_cyc"] dmpdir = self._base["DMPDIR"] @@ -408,7 +406,7 @@ def atmanalprep(self): deps = [] dep_dict = {'type': 'metatask', 'name': 'gdaspost', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) - data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009{suffix}' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'{dmpdir}/{self.cdump}{dump_suffix}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' @@ -456,14 +454,13 @@ def atmanalpost(self): def aeroanlinit(self): - suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] dmpdir = self._base["DMPDIR"] deps = [] dep_dict = {'type': 'metatask', 'name': 'gdaspost', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) - data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009{suffix}' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'{dmpdir}/{self.cdump}{dump_suffix}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' @@ -501,17 +498,14 @@ def aeroanlfinal(self): def ocnanalprep(self): - suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] dmpdir = self._base["DMPDIR"] deps = [] - #dep_dict = {'type': 'metatask', 'name': 'ocnanalpost', 'offset': '-06:00:00'} - #deps.append(rocoto.add_dependency(dep_dict)) - data = f'&ROTDIR;/gdas.@Y@m@d/@H/ocean/gdas.t@Hz.ocnf009{suffix}' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/ocean/gdas.t@Hz.ocnf009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) - dependencies = rocoto.create_dependency(dep_condition='and', dep=deps) + dependencies = rocoto.create_dependency(dep=deps) resources = self.get_resource('ocnanalprep') task = create_wf_task('ocnanalprep', @@ -1105,7 +1099,6 @@ def eupd(self): def atmensanalprep(self): - suffix = self._base["SUFFIX"] dump_suffix = self._base["DUMP_SUFFIX"] gfs_cyc = self._base["gfs_cyc"] dmpdir = self._base["DMPDIR"] @@ -1114,7 +1107,7 @@ def atmensanalprep(self): deps = [] dep_dict = {'type': 'metatask', 'name': 'gdaspost', 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) - data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009{suffix}' + data = f'&ROTDIR;/gdas.@Y@m@d/@H/atmos/gdas.t@Hz.atmf009.nc' dep_dict = {'type': 'data', 'data': data, 'offset': '-06:00:00'} deps.append(rocoto.add_dependency(dep_dict)) data = f'{dmpdir}/{self.cdump}{dump_suffix}.@Y@m@d/@H/atmos/{self.cdump}.t@Hz.updated.status.tm00.bufr_d' @@ -1277,9 +1270,10 @@ def epos(self): def _get_eposgroups(epos): fhmin = epos['FHMIN_ENKF'] fhmax = epos['FHMAX_ENKF'] + fhout = epos['FHOUT_ENKF'] if self.cdump == "gfs": fhmax = epos['FHMAX_ENKF_GFS'] - fhout = epos['FHOUT_ENKF'] + fhout = epos['FHOUT_ENKF_GFS'] fhrs = range(fhmin, fhmax + fhout, fhout) neposgrp = epos['NEPOSGRP'] From 41cfef224e22259a94d07df8e5cb86085a5d42c1 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 27 Jan 2023 16:51:05 +0000 Subject: [PATCH 03/10] glory to linter --- env/HERA.env | 4 ++-- env/ORION.env | 4 ++-- jobs/rocoto/ocnanalbmat.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/env/HERA.env b/env/HERA.env index 2673a92986..f2be166dce 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -83,7 +83,7 @@ elif [[ "${step}" = "aeroanlrun" ]]; then [[ ${NTHREADS_AEROANL} -gt ${nth_max} ]] && export NTHREADS_AEROANL=${nth_max} export APRUN_AEROANL="${launcher} -n ${npe_aeroanlrun}" -elif [ ${step} = "ocnanalbmat" ]; then +elif [[ "${step}" = "ocnanalbmat" ]]; then export APRUNCFP="${launcher} -n \$ncmd --multi-prog" @@ -93,7 +93,7 @@ elif [ ${step} = "ocnanalbmat" ]; then [[ ${NTHREADS_OCNANAL} -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" -elif [ ${step} = "ocnanalrun" ]; then +elif [[ "${step}" = "ocnanalrun" ]]; then export APRUNCFP="${launcher} -n \$ncmd --multi-prog" diff --git a/env/ORION.env b/env/ORION.env index 2d0a57fdc8..4d73ce60aa 100755 --- a/env/ORION.env +++ b/env/ORION.env @@ -83,7 +83,7 @@ elif [[ "${step}" = "aeroanlrun" ]]; then [[ ${NTHREADS_AEROANL} -gt ${nth_max} ]] && export NTHREADS_AEROANL=${nth_max} export APRUN_AEROANL="${launcher} -n ${npe_aeroanlrun}" -elif [ ${step} = "ocnanalbmat" ]; then +elif [[ "${step}" = "ocnanalbmat" ]]; then export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" @@ -93,7 +93,7 @@ elif [ ${step} = "ocnanalbmat" ]; then [[ $NTHREADS_OCNANAL -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" -elif [ ${step} = "ocnanalrun" ]; then +elif [[ "${step}" = "ocnanalrun" ]]; then export APRUNCFP="${launcher} -n \$ncmd ${mpmd_opt}" diff --git a/jobs/rocoto/ocnanalbmat.sh b/jobs/rocoto/ocnanalbmat.sh index b7f5fc3acb..fd0feb25fe 100755 --- a/jobs/rocoto/ocnanalbmat.sh +++ b/jobs/rocoto/ocnanalbmat.sh @@ -16,4 +16,4 @@ export jobid="${job}.$$" #"${HOMEgfs}"/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT echo "BMAT gets run here" status=$? -exit "${status}" +exit ${status} From ff3fe704208ee22efd0ec03f972d762438ef95e2 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 27 Jan 2023 16:52:50 +0000 Subject: [PATCH 04/10] linter tweak --- jobs/rocoto/ocnanalbmat.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/rocoto/ocnanalbmat.sh b/jobs/rocoto/ocnanalbmat.sh index fd0feb25fe..e64fa82a41 100755 --- a/jobs/rocoto/ocnanalbmat.sh +++ b/jobs/rocoto/ocnanalbmat.sh @@ -4,7 +4,7 @@ source "${HOMEgfs}/ush/preamble.sh" ############################################################### # Source UFSDA workflow modules -. ${HOMEgfs}/ush/load_ufsda_modules.sh +. "${HOMEgfs}/ush/load_ufsda_modules.sh" status=$? [[ ${status} -ne 0 ]] && exit ${status} From 6b8415f0fc1ee365b998a059ae7e094aa1d55e53 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 27 Jan 2023 16:54:18 +0000 Subject: [PATCH 05/10] linter tweak --- jobs/rocoto/ocnanalbmat.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/rocoto/ocnanalbmat.sh b/jobs/rocoto/ocnanalbmat.sh index e64fa82a41..e73f879230 100755 --- a/jobs/rocoto/ocnanalbmat.sh +++ b/jobs/rocoto/ocnanalbmat.sh @@ -16,4 +16,4 @@ export jobid="${job}.$$" #"${HOMEgfs}"/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT echo "BMAT gets run here" status=$? -exit ${status} +exit "${status}" From f64f52a7814b92d975010f46693614a3f29ebaf2 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 27 Jan 2023 16:56:08 +0000 Subject: [PATCH 06/10] linter tweak --- jobs/rocoto/ocnanalbmat.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/rocoto/ocnanalbmat.sh b/jobs/rocoto/ocnanalbmat.sh index e73f879230..f7ee7c1d4f 100755 --- a/jobs/rocoto/ocnanalbmat.sh +++ b/jobs/rocoto/ocnanalbmat.sh @@ -6,7 +6,7 @@ source "${HOMEgfs}/ush/preamble.sh" # Source UFSDA workflow modules . "${HOMEgfs}/ush/load_ufsda_modules.sh" status=$? -[[ ${status} -ne 0 ]] && exit ${status} +[[ "${status}" -ne 0 ]] && exit "${status}" export job="ocnanalbmat" export jobid="${job}.$$" From c42a43dbce9e85659c77ecc3cb4a3fc3eaf44c0b Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 27 Jan 2023 17:02:00 +0000 Subject: [PATCH 07/10] feed the linter --- env/ORION.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/env/ORION.env b/env/ORION.env index 4d73ce60aa..918748fda3 100755 --- a/env/ORION.env +++ b/env/ORION.env @@ -90,7 +90,7 @@ elif [[ "${step}" = "ocnanalbmat" ]]; then nth_max=$((npe_node_max / npe_node_ocnanalbmat)) export NTHREADS_OCNANAL=${nth_ocnanalbmat:-${nth_max}} - [[ $NTHREADS_OCNANAL -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} + [[ ${NTHREADS_OCNANAL} -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalbmat}" elif [[ "${step}" = "ocnanalrun" ]]; then @@ -100,7 +100,7 @@ elif [[ "${step}" = "ocnanalrun" ]]; then nth_max=$((npe_node_max / npe_node_ocnanalrun)) export NTHREADS_OCNANAL=${nth_ocnanalrun:-${nth_max}} - [[ $NTHREADS_OCNANAL -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} + [[ ${NTHREADS_OCNANAL} -gt ${nth_max} ]] && export NTHREADS_OCNANAL=${nth_max} export APRUN_OCNANAL="${launcher} -n ${npe_ocnanalrun}" elif [[ "${step}" = "anal" ]] || [[ "${step}" = "analcalc" ]]; then From 0fd396aac4835b258817ff30ec74009979ca31ff Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Mon, 30 Jan 2023 15:32:41 +0000 Subject: [PATCH 08/10] change sugged by Guillaume --- workflow/applications.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/workflow/applications.py b/workflow/applications.py index e33582a216..11bea0a447 100644 --- a/workflow/applications.py +++ b/workflow/applications.py @@ -346,9 +346,6 @@ def _get_cycled_task_names(self): gdas_gfs_common_tasks_before_fcst = ['prep'] gdas_gfs_common_tasks_after_fcst = ['post', 'vrfy'] - if self.do_ocean: - gdas_gfs_common_tasks_after_fcst += ['ocnpost'] - gdas_gfs_common_tasks_after_fcst += ['vrfy'] gdas_gfs_common_cleanup_tasks = ['arch'] From 7eed87f4f7d21fbdcc9d1f76887c3f96b45f4292 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA <58948505+AndrewEichmann-NOAA@users.noreply.github.com> Date: Mon, 30 Jan 2023 16:32:06 -0500 Subject: [PATCH 09/10] Update parm/config/config.resources Co-authored-by: Rahul Mahajan --- parm/config/config.resources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/config.resources b/parm/config/config.resources index 4acddaf5af..d3517f8328 100644 --- a/parm/config/config.resources +++ b/parm/config/config.resources @@ -266,7 +266,7 @@ elif [[ "${step}" = "ocnanalbmat" ]]; then export wtime_ocnanalbmat="00:30:00" export npe_ocnanalbmat=${npes} export nth_ocnanalbmat=1 - export native_ocnanalbmat="--exclusive" + export is_exclusive=True npe_node_ocnanalbmat=$(echo "${npe_node_max} / ${nth_ocnanalbmat}" | bc) export npe_node_ocnanalbmat From 94b90e5e6753926dc15e16119a270f3d5c452765 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Mon, 30 Jan 2023 21:33:57 +0000 Subject: [PATCH 10/10] change suggested by Rahul --- parm/config/config.resources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/config.resources b/parm/config/config.resources index d3517f8328..563b8e06de 100644 --- a/parm/config/config.resources +++ b/parm/config/config.resources @@ -287,7 +287,7 @@ elif [[ "${step}" = "ocnanalrun" ]]; then export wtime_ocnanalrun="00:30:00" export npe_ocnanalrun=${npes} export nth_ocnanalrun=1 - export native_ocnanalrun="--exclusive" + export is_exclusive=True npe_node_ocnanalrun=$(echo "${npe_node_max} / ${nth_ocnanalrun}" | bc) export npe_node_ocnanalrun