Skip to content

Commit

Permalink
Allow use of ocean obs prep in WCDA cycling and remove R2D2 (NOAA-EMC…
Browse files Browse the repository at this point in the history
…#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.
  • Loading branch information
AndrewEichmann-NOAA authored Jan 12, 2024
1 parent 12a5bb1 commit 997f978
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 12 deletions.
5 changes: 0 additions & 5 deletions parm/config/gfs/config.ocnanal
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,6 @@ export CASE_ANL=@CASE_ANL@
export DOMAIN_STACK_SIZE=116640000 #TODO: Make the stack size resolution dependent
export JEDI_BIN=${HOMEgfs}/sorc/gdas.cd/build/bin

# R2D2
export R2D2_OBS_DB=shared
export R2D2_OBS_DUMP=@R2D2_OBS_DUMP@
export R2D2_OBS_SRC=@R2D2_OBS_SRC@
export R2D2_OBS_WINDOW=24 # TODO: Check if the R2D2 sampling DB window is still needed
export COMIN_OBS=@COMIN_OBS@

# NICAS
Expand Down
5 changes: 4 additions & 1 deletion parm/config/gfs/config.prepoceanobs
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@ echo "BEGIN: config.prepoceanobs"
export OCNOBS2IODAEXEC=${HOMEgfs}/sorc/gdas.cd/build/bin/gdas_obsprovider2ioda.x

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

# ocean analysis needs own dmpdir until standard dmpdir has full ocean obs
export DMPDIR=@DMPDIR@

# Get task specific resources
. "${EXPDIR}/config.resources" prepoceanobs
echo "END: config.prepoceanobs"
10 changes: 7 additions & 3 deletions workflow/applications/gfs_cycled.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ def _get_app_configs(self):
configs += ['anal', 'analdiag']

if self.do_jediocnvar:
configs += ['ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy']
configs += ['prepoceanobs', 'ocnanalprep', 'ocnanalbmat',
'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost',
'ocnanalvrfy']

if self.do_ocean:
configs += ['ocnpost']
Expand Down Expand Up @@ -133,8 +135,10 @@ def get_task_names(self):
gdas_gfs_common_tasks_before_fcst += ['anal']

if self.do_jediocnvar:
gdas_gfs_common_tasks_before_fcst += ['ocnanalprep', 'ocnanalbmat', 'ocnanalrun',
'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy']
gdas_gfs_common_tasks_before_fcst += ['prepoceanobs', 'ocnanalprep',
'ocnanalbmat', 'ocnanalrun',
'ocnanalchkpt', 'ocnanalpost',
'ocnanalvrfy']

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

Expand Down
30 changes: 27 additions & 3 deletions workflow/rocoto/gfs_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -578,7 +578,7 @@ def landanl(self):
task = rocoto.create_task(task_dict)
return task

def ocnanalprep(self):
def prepoceanobs(self):

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

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

resources = self.get_resource('prepoceanobs')
task_name = f'{self.cdump}prepoceanobs'
task_dict = {'task_name': task_name,
'resources': resources,
'dependency': dependencies,
'envars': self.envars,
'cycledef': self.cdump.replace('enkf', ''),
'command': f'{self.HOMEgfs}/jobs/rocoto/prepoceanobs.sh',
'job_name': f'{self.pslot}_{task_name}_@H',
'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log',
'maxtries': '&MAXTRIES;'
}

task = rocoto.create_task(task_dict)

return task

def ocnanalprep(self):

deps = []
dep_dict = {'type': 'task', 'name': f'{self.cdump}prepoceanobs'}
deps.append(rocoto.add_dependency(dep_dict))
dependencies = rocoto.create_dependency(dep=deps)

resources = self.get_resource('ocnanalprep')
task_name = f'{self.cdump}ocnanalprep'
task_dict = {'task_name': task_name,
Expand Down Expand Up @@ -637,13 +661,13 @@ def ocnanalrun(self):
dependencies = rocoto.create_dependency(dep=deps)

resources = self.get_resource('ocnanalrun')
task_name = f'{self.cdump}ocnanlrun'
task_name = f'{self.cdump}ocnanalrun'
task_dict = {'task_name': task_name,
'resources': resources,
'dependency': dependencies,
'envars': self.envars,
'cycledef': self.cdump.replace('enkf', ''),
'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanlrun.sh',
'command': f'{self.HOMEgfs}/jobs/rocoto/ocnanalrun.sh',
'job_name': f'{self.pslot}_{task_name}_@H',
'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log',
'maxtries': '&MAXTRIES;'
Expand Down
1 change: 1 addition & 0 deletions workflow/rocoto/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class Tasks:
VALID_TASKS = ['aerosol_init', 'stage_ic',
'prep', 'anal', 'sfcanl', 'analcalc', 'analdiag', 'arch', "cleanup",
'prepatmiodaobs', 'atmanlinit', 'atmanlrun', 'atmanlfinal',
'prepoceanobs',
'ocnanalprep', 'ocnanalbmat', 'ocnanalrun', 'ocnanalchkpt', 'ocnanalpost', 'ocnanalvrfy',
'earc', 'ecen', 'echgres', 'ediag', 'efcs',
'eobs', 'eomg', 'epos', 'esfc', 'eupd',
Expand Down

0 comments on commit 997f978

Please sign in to comment.