Skip to content

Commit 5730a71

Browse files
Add waveinit and waveprep to half-cycle. (#2037)
This PR addresses issue #1444. The `waveinit` and `waveprep` tasks have been added to the GDAS have cycle. The downstream dependencies for the respective GFS and GDAS forecast tasks have been removed. Resolves #1444
1 parent 28d2e93 commit 5730a71

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

workflow/rocoto/gfs_tasks.py

+15-10
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,17 @@ def waveinit(self):
110110

111111
resources = self.get_resource('waveinit')
112112
dependencies = None
113+
cycledef = None
113114
if self.app_config.mode in ['cycled']:
114115
deps = []
115116
dep_dict = {'type': 'task', 'name': f'{self.cdump}prep'}
116117
deps.append(rocoto.add_dependency(dep_dict))
117-
dep_dict = {'type': 'cycleexist', 'condition': 'not', 'offset': '-06:00:00'}
118-
deps.append(rocoto.add_dependency(dep_dict))
118+
if self.cdump in ['gdas']:
119+
dep_dict = {'type': 'cycleexist', 'condition': 'not', 'offset': '-06:00:00'}
120+
deps.append(rocoto.add_dependency(dep_dict))
119121
dependencies = rocoto.create_dependency(dep_condition='or', dep=deps)
120-
121-
task = create_wf_task('waveinit', resources, cdump=self.cdump, envar=self.envars, dependency=dependencies)
122+
cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump
123+
task = create_wf_task('waveinit', resources, cdump=self.cdump, envar=self.envars, dependency=dependencies, cycledef=cycledef)
122124

123125
return task
124126

@@ -128,9 +130,9 @@ def waveprep(self):
128130
dep_dict = {'type': 'task', 'name': f'{self.cdump}waveinit'}
129131
deps.append(rocoto.add_dependency(dep_dict))
130132
dependencies = rocoto.create_dependency(dep=deps)
131-
133+
cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump
132134
resources = self.get_resource('waveprep')
133-
task = create_wf_task('waveprep', resources, cdump=self.cdump, envar=self.envars, dependency=dependencies)
135+
task = create_wf_task('waveprep', resources, cdump=self.cdump, envar=self.envars, dependency=dependencies, cycledef=cycledef)
134136

135137
return task
136138

@@ -488,6 +490,8 @@ def _fcst_forecast_only(self):
488490
wave_job = 'waveprep' if self.app_config.model_app in ['ATMW'] else 'waveinit'
489491
dep_dict = {'type': 'task', 'name': f'{self.cdump}{wave_job}'}
490492
dependencies.append(rocoto.add_dependency(dep_dict))
493+
dep_dict = {'type': 'task', 'name': f'{self.cdump}waveinit'}
494+
dependencies.append(rocoto.add_dependency(dep_dict))
491495

492496
if self.app_config.do_aero:
493497
# Calculate offset based on CDUMP = gfs | gdas
@@ -521,10 +525,6 @@ def _fcst_cycled(self):
521525
dep_dict = {'type': 'task', 'name': f'{self.cdump}ocnanalpost'}
522526
dependencies.append(rocoto.add_dependency(dep_dict))
523527

524-
if self.app_config.do_wave and self.cdump in self.app_config.wave_cdumps:
525-
dep_dict = {'type': 'task', 'name': f'{self.cdump}waveprep'}
526-
dependencies.append(rocoto.add_dependency(dep_dict))
527-
528528
if self.app_config.do_aero:
529529
dep_dict = {'type': 'task', 'name': f'{self.cdump}aeroanlfinal'}
530530
dependencies.append(rocoto.add_dependency(dep_dict))
@@ -540,6 +540,11 @@ def _fcst_cycled(self):
540540
dependencies.append(rocoto.add_dependency(dep_dict))
541541
dependencies = rocoto.create_dependency(dep_condition='or', dep=dependencies)
542542

543+
if self.app_config.do_wave and self.cdump in self.app_config.wave_cdumps:
544+
dep_dict = {'type': 'task', 'name': f'{self.cdump}waveprep'}
545+
dependencies.append(rocoto.add_dependency(dep_dict))
546+
dependencies = rocoto.create_dependency(dep_condition='and', dep=dependencies)
547+
543548
cycledef = 'gdas_half,gdas' if self.cdump in ['gdas'] else self.cdump
544549

545550
resources = self.get_resource('fcst')

0 commit comments

Comments
 (0)