Skip to content

Commit 997f978

Browse files
Allow use of ocean obs prep in WCDA cycling and remove R2D2 (NOAA-EMC#2215)
Enables use of ocean obs prep task in WCDA cycling and removes R2D2 from same. Runs task gdasprepoceanobs before gdasocnanalprep -- obtains ocean data nc4 files from DMPDIR, processes them into IODA format and copies them to COM_OBS. Replaces the current R2D2 processing.
1 parent 12a5bb1 commit 997f978

File tree

5 files changed

+39
-12
lines changed

5 files changed

+39
-12
lines changed

parm/config/gfs/config.ocnanal

-5
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@ export CASE_ANL=@CASE_ANL@
1717
export DOMAIN_STACK_SIZE=116640000 #TODO: Make the stack size resolution dependent
1818
export JEDI_BIN=${HOMEgfs}/sorc/gdas.cd/build/bin
1919

20-
# R2D2
21-
export R2D2_OBS_DB=shared
22-
export R2D2_OBS_DUMP=@R2D2_OBS_DUMP@
23-
export R2D2_OBS_SRC=@R2D2_OBS_SRC@
24-
export R2D2_OBS_WINDOW=24 # TODO: Check if the R2D2 sampling DB window is still needed
2520
export COMIN_OBS=@COMIN_OBS@
2621

2722
# NICAS

parm/config/gfs/config.prepoceanobs

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@ echo "BEGIN: config.prepoceanobs"
77
export OCNOBS2IODAEXEC=${HOMEgfs}/sorc/gdas.cd/build/bin/gdas_obsprovider2ioda.x
88

99
export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/soca/obs/config
10-
export OBSPROC_YAML=@OBSPROC_CONFIG@
10+
export OBSPROC_YAML=@OBSPROC_YAML@
1111
export OBS_LIST=@SOCA_OBS_LIST@
1212
[[ -n "${OBS_LIST}" ]] || export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml
1313
export OBS_YAML=${OBS_LIST}
1414

15+
# ocean analysis needs own dmpdir until standard dmpdir has full ocean obs
16+
export DMPDIR=@DMPDIR@
17+
1518
# Get task specific resources
1619
. "${EXPDIR}/config.resources" prepoceanobs
1720
echo "END: config.prepoceanobs"

workflow/applications/gfs_cycled.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ def _get_app_configs(self):
4242
configs += ['anal', 'analdiag']
4343

4444
if self.do_jediocnvar:
45-
configs += ['ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy']
45+
configs += ['prepoceanobs', 'ocnanalprep', 'ocnanalbmat',
46+
'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost',
47+
'ocnanalvrfy']
4648

4749
if self.do_ocean:
4850
configs += ['ocnpost']
@@ -133,8 +135,10 @@ def get_task_names(self):
133135
gdas_gfs_common_tasks_before_fcst += ['anal']
134136

135137
if self.do_jediocnvar:
136-
gdas_gfs_common_tasks_before_fcst += ['ocnanalprep', 'ocnanalbmat', 'ocnanalrun',
137-
'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy']
138+
gdas_gfs_common_tasks_before_fcst += ['prepoceanobs', 'ocnanalprep',
139+
'ocnanalbmat', 'ocnanalrun',
140+
'ocnanalchkpt', 'ocnanalpost',
141+
'ocnanalvrfy']
138142

139143
gdas_gfs_common_tasks_before_fcst += ['sfcanl', 'analcalc']
140144

workflow/rocoto/gfs_tasks.py

+27-3
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ def landanl(self):
578578
task = rocoto.create_task(task_dict)
579579
return task
580580

581-
def ocnanalprep(self):
581+
def prepoceanobs(self):
582582

583583
ocean_hist_path = self._template_to_rocoto_cycstring(self._base["COM_OCEAN_HISTORY_TMPL"], {'RUN': 'gdas'})
584584

@@ -588,6 +588,30 @@ def ocnanalprep(self):
588588
deps.append(rocoto.add_dependency(dep_dict))
589589
dependencies = rocoto.create_dependency(dep=deps)
590590

591+
resources = self.get_resource('prepoceanobs')
592+
task_name = f'{self.cdump}prepoceanobs'
593+
task_dict = {'task_name': task_name,
594+
'resources': resources,
595+
'dependency': dependencies,
596+
'envars': self.envars,
597+
'cycledef': self.cdump.replace('enkf', ''),
598+
'command': f'{self.HOMEgfs}/jobs/rocoto/prepoceanobs.sh',
599+
'job_name': f'{self.pslot}_{task_name}_@H',
600+
'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log',
601+
'maxtries': '&MAXTRIES;'
602+
}
603+
604+
task = rocoto.create_task(task_dict)
605+
606+
return task
607+
608+
def ocnanalprep(self):
609+
610+
deps = []
611+
dep_dict = {'type': 'task', 'name': f'{self.cdump}prepoceanobs'}
612+
deps.append(rocoto.add_dependency(dep_dict))
613+
dependencies = rocoto.create_dependency(dep=deps)
614+
591615
resources = self.get_resource('ocnanalprep')
592616
task_name = f'{self.cdump}ocnanalprep'
593617
task_dict = {'task_name': task_name,
@@ -637,13 +661,13 @@ def ocnanalrun(self):
637661
dependencies = rocoto.create_dependency(dep=deps)
638662

639663
resources = self.get_resource('ocnanalrun')
640-
task_name = f'{self.cdump}ocnanlrun'
664+
task_name = f'{self.cdump}ocnanalrun'
641665
task_dict = {'task_name': task_name,
642666
'resources': resources,
643667
'dependency': dependencies,
644668
'envars': self.envars,
645669
'cycledef': self.cdump.replace('enkf', ''),
646-
'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanlrun.sh',
670+
'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalrun.sh',
647671
'job_name': f'{self.pslot}_{task_name}_@H',
648672
'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log',
649673
'maxtries': '&MAXTRIES;'

workflow/rocoto/tasks.py

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class Tasks:
1313
VALID_TASKS = ['aerosol_init', 'stage_ic',
1414
'prep', 'anal', 'sfcanl', 'analcalc', 'analdiag', 'arch', "cleanup",
1515
'prepatmiodaobs', 'atmanlinit', 'atmanlrun', 'atmanlfinal',
16+
'prepoceanobs',
1617
'ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy',
1718
'earc', 'ecen', 'echgres', 'ediag', 'efcs',
1819
'eobs', 'eomg', 'epos', 'esfc', 'eupd',

0 commit comments

Comments
 (0)