diff --git a/ci/cases/pr/C48C48_ufs_hybatmDA.yaml b/ci/cases/pr/C96C48_ufs_hybatmDA.yaml similarity index 77% rename from ci/cases/pr/C48C48_ufs_hybatmDA.yaml rename to ci/cases/pr/C96C48_ufs_hybatmDA.yaml index 7d3644b1af..da68b0f86c 100644 --- a/ci/cases/pr/C48C48_ufs_hybatmDA.yaml +++ b/ci/cases/pr/C96C48_ufs_hybatmDA.yaml @@ -5,12 +5,13 @@ experiment: arguments: pslot: {{ 'pslot' | getenv }} app: ATM - resdetatmos: 48 + resdetatmos: 96 resensatmos: 48 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - idate: 2021032312 - edate: 2021032400 + icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C96C48 + idate: 2024022318 + edate: 2024022400 nens: 2 gfs_cyc: 1 start: warm diff --git a/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml b/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml index 126c0f461a..1075f55b63 100644 --- a/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml +++ b/ci/cases/yamls/ufs_hybatmDA_defaults.ci.yaml @@ -6,11 +6,11 @@ base: DO_JEDIATMENS: "YES" ACCOUNT: {{ 'SLURM_ACCOUNT' | getenv }} atmanl: - LAYOUT_X_ATMANL: 1 - LAYOUT_Y_ATMANL: 1 + LAYOUT_X_ATMANL: 4 + LAYOUT_Y_ATMANL: 4 atmensanl: - LAYOUT_X_ATMENSANL: 1 - LAYOUT_Y_ATMENSANL: 1 + LAYOUT_X_ATMENSANL: 4 + LAYOUT_Y_ATMENSANL: 4 esfc: DONST: "NO" nsst: diff --git a/parm/config/gfs/config.atmanl b/parm/config/gfs/config.atmanl index fd4bdc23d7..60d3c2a438 100644 --- a/parm/config/gfs/config.atmanl +++ b/parm/config/gfs/config.atmanl @@ -5,12 +5,16 @@ echo "BEGIN: config.atmanl" -export CASE_ANL=${CASE} -export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/config/ -export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/lists/gdas_prototype_3d.yaml -export ATMVARYAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/variational/3dvar_drpcg.yaml +if [[ ${DOHYBVAR} = "YES" ]]; then + # shellcheck disable=SC2153 + export CASE_ANL=${CASE_ENS} +else + export CASE_ANL=${CASE} +fi +export OBS_LIST="${PARMgfs}/gdas/atm/obs/lists/gdas_prototype_3d.yaml.j2" +export JEDIYAML="${PARMgfs}/gdas/atm/variational/3dvar_drpcg.yaml.j2" export STATICB_TYPE="gsibec" -export BERROR_YAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/berror/staticb_${STATICB_TYPE}.yaml +export BERROR_YAML="${PARMgfs}/gdas/atm/berror/hybvar_${STATICB_TYPE}.yaml.j2" export INTERP_METHOD='barycentric' export layout_x_atmanl=@LAYOUT_X_ATMANL@ diff --git a/parm/config/gfs/config.atmanlinit b/parm/config/gfs/config.atmanlinit index bc95ef4962..1aec88bcc2 100644 --- a/parm/config/gfs/config.atmanlinit +++ b/parm/config/gfs/config.atmanlinit @@ -7,4 +7,5 @@ echo "BEGIN: config.atmanlinit" # Get task specific resources . "${EXPDIR}/config.resources" atmanlinit + echo "END: config.atmanlinit" diff --git a/parm/config/gfs/config.atmensanl b/parm/config/gfs/config.atmensanl index 8058ffeda8..49b903e4c0 100644 --- a/parm/config/gfs/config.atmensanl +++ b/parm/config/gfs/config.atmensanl @@ -5,9 +5,8 @@ echo "BEGIN: config.atmensanl" -export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/config/ -export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/lists/lgetkf_prototype.yaml -export ATMENSYAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/lgetkf/lgetkf.yaml +export OBS_LIST="${PARMgfs}/gdas/atm/obs/lists/lgetkf_prototype.yaml.j2" +export JEDIYAML="${PARMgfs}/gdas/atm/lgetkf/lgetkf.yaml.j2" export INTERP_METHOD='barycentric' export layout_x_atmensanl=@LAYOUT_X_ATMENSANL@ diff --git a/parm/config/gfs/config.atmensanlinit b/parm/config/gfs/config.atmensanlinit index 34429023bb..0eee2ffa82 100644 --- a/parm/config/gfs/config.atmensanlinit +++ b/parm/config/gfs/config.atmensanlinit @@ -7,4 +7,5 @@ echo "BEGIN: config.atmensanlinit" # Get task specific resources . "${EXPDIR}/config.resources" atmensanlinit + echo "END: config.atmensanlinit" diff --git a/parm/gdas/atm_jedi_fix.yaml b/parm/gdas/atm_jedi_fix.yaml index 527d16e6bd..69039baddf 100644 --- a/parm/gdas/atm_jedi_fix.yaml +++ b/parm/gdas/atm_jedi_fix.yaml @@ -1,7 +1,7 @@ mkdir: -- $(DATA)/fv3jedi +- '{{ DATA }}/fv3jedi' copy: -- [$(FIXgfs)/gdas/fv3jedi/fv3files/akbk$(npz).nc4, $(DATA)/fv3jedi/akbk.nc4] -- [$(FIXgfs)/gdas/fv3jedi/fv3files/fmsmpp.nml, $(DATA)/fv3jedi/fmsmpp.nml] -- [$(FIXgfs)/gdas/fv3jedi/fv3files/field_table_gfdl, $(DATA)/fv3jedi/field_table] -- [$(HOMEgfs)/sorc/gdas.cd/parm/io/fv3jedi_fieldmetadata_restart.yaml, $(DATA)/fv3jedi/fv3jedi_fieldmetadata_restart.yaml] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/akbk{{ npz }}.nc4', '{{ DATA }}/fv3jedi/akbk.nc4'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/fmsmpp.nml', '{{ DATA }}/fv3jedi/fmsmpp.nml'] +- ['{{ FIXgfs }}/gdas/fv3jedi/fv3files/field_table_gfdl', '{{ DATA }}/fv3jedi/field_table'] +- ['{{ PARMgfs }}/gdas/io/fv3jedi_fieldmetadata_restart.yaml', '{{ DATA }}/fv3jedi/fv3jedi_fieldmetadata_restart.yaml'] diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 37a28d114c..8a6f825f6d 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 37a28d114c9be6dccff890b33d742b03c22f07c1 +Subproject commit 8a6f825f6d988c81fad11070de92a2744d5a53cc diff --git a/ush/python/pygfs/task/atm_analysis.py b/ush/python/pygfs/task/atm_analysis.py index 7e2ae87b6b..5a90a89e34 100644 --- a/ush/python/pygfs/task/atm_analysis.py +++ b/ush/python/pygfs/task/atm_analysis.py @@ -11,7 +11,7 @@ FileHandler, add_to_datetime, to_fv3time, to_timedelta, to_YMDH, chdir, - parse_yamltmpl, parse_j2yaml, save_as_yaml, + parse_j2yaml, save_as_yaml, logit, Executable, WorkflowException) @@ -103,7 +103,7 @@ def initialize(self: Analysis) -> None: # generate variational YAML file logger.debug(f"Generate variational YAML file: {self.task_config.fv3jedi_yaml}") - varda_yaml = parse_j2yaml(self.task_config.ATMVARYAML, self.task_config) + varda_yaml = parse_j2yaml(self.task_config.JEDIYAML, self.task_config, searchpath=self.gdasapp_j2tmpl_dir) save_as_yaml(varda_yaml, self.task_config.fv3jedi_yaml) logger.info(f"Wrote variational YAML to: {self.task_config.fv3jedi_yaml}") diff --git a/ush/python/pygfs/task/atmens_analysis.py b/ush/python/pygfs/task/atmens_analysis.py index 7b81a10f32..3e2c0a233c 100644 --- a/ush/python/pygfs/task/atmens_analysis.py +++ b/ush/python/pygfs/task/atmens_analysis.py @@ -11,7 +11,7 @@ FileHandler, add_to_datetime, to_fv3time, to_timedelta, to_YMDH, to_YMD, chdir, - parse_yamltmpl, parse_j2yaml, save_as_yaml, + parse_j2yaml, save_as_yaml, logit, Executable, WorkflowException, @@ -119,7 +119,7 @@ def initialize(self: Analysis) -> None: # generate ensemble da YAML file logger.debug(f"Generate ensemble da YAML file: {self.task_config.fv3jedi_yaml}") - ensda_yaml = parse_j2yaml(self.task_config.ATMENSYAML, self.task_config) + ensda_yaml = parse_j2yaml(self.task_config.JEDIYAML, self.task_config, searchpath=self.gdasapp_j2tmpl_dir) save_as_yaml(ensda_yaml, self.task_config.fv3jedi_yaml) logger.info(f"Wrote ensemble da YAML to: {self.task_config.fv3jedi_yaml}") diff --git a/workflow/applications/applications.py b/workflow/applications/applications.py index d45b6a9abc..b20c5a7c28 100644 --- a/workflow/applications/applications.py +++ b/workflow/applications/applications.py @@ -145,6 +145,10 @@ def _source_configs(self, conf: Configuration) -> Dict[str, Any]: files += ['config.anal', 'config.eupd'] elif config in ['efcs']: files += ['config.fcst', 'config.efcs'] + elif config in ['atmanlinit', 'atmanlrun']: + files += ['config.atmanl', f'config.{config}'] + elif config in ['atmensanlinit', 'atmensanlrun']: + files += ['config.atmensanl', f'config.{config}'] elif 'wave' in config: files += ['config.wave', f'config.{config}'] else: