From dd0f7edd14fe5c72a14505bb97acade584759f6f Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 24 Jul 2025 14:09:15 +0000 Subject: [PATCH 01/41] Initial commit --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 65466562499..0a1ce07bb04 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 65466562499d9d2d640559bd1148b21435274128 +Subproject commit 0a1ce07bb041e37e00bafd0ea30219a52fcf57a2 From 94745becc29142517204aade3275317f68f01b48 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Wed, 30 Jul 2025 18:06:48 +0000 Subject: [PATCH 02/41] Update --- dev/parm/config/gcafs/config.aeroanl.j2 | 10 +++++----- dev/parm/config/gcafs/config.aeroanlgenb | 6 +++--- dev/parm/config/gcafs/config.anlstat | 4 ++-- dev/parm/config/gfs/config.aeroanl.j2 | 10 +++++----- dev/parm/config/gfs/config.aeroanlgenb | 6 +++--- dev/parm/config/gfs/config.analcalc_fv3jedi | 7 ++++--- dev/parm/config/gfs/config.anlstat | 6 +++--- dev/parm/config/gfs/config.atmanl.j2 | 13 +++++++------ dev/parm/config/gfs/config.atmensanl.j2 | 9 +++++---- dev/parm/config/gfs/config.ecen_fv3jedi | 7 ++++--- dev/parm/config/gfs/config.esnowanl.j2 | 20 ++++++++++---------- dev/parm/config/gfs/config.snowanl.j2 | 9 ++++----- dev/workflow/hosts/hera.yaml | 4 ++-- sorc/gdas.cd | 2 +- ush/python/pygfs/task/aero_analysis.py | 14 +++++++------- ush/python/pygfs/task/aero_bmatrix.py | 10 +++++----- ush/python/pygfs/task/atm_analysis.py | 16 ++++++++-------- ush/python/pygfs/task/atmens_analysis.py | 10 +++++----- ush/python/pygfs/task/ensemble_recenter.py | 8 ++++---- ush/python/pygfs/task/fv3_analysis_calc.py | 8 ++++---- ush/python/pygfs/task/snow_analysis.py | 10 +++++----- ush/python/pygfs/task/snowens_analysis.py | 10 +++++----- 22 files changed, 101 insertions(+), 98 deletions(-) diff --git a/dev/parm/config/gcafs/config.aeroanl.j2 b/dev/parm/config/gcafs/config.aeroanl.j2 index 4d78d975336..942f27ef9c8 100644 --- a/dev/parm/config/gcafs/config.aeroanl.j2 +++ b/dev/parm/config/gcafs/config.aeroanl.j2 @@ -23,13 +23,13 @@ export STATICB_TYPE='diffusion' export BERROR_YAML="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" -export CRTM_FIX_YAML="${PARMgfs}/gdas/aero_crtm_coeff.yaml.j2" -export JEDI_FIX_YAML="${PARMgfs}/gdas/aero_jedi_fix.yaml.j2" +export AERO_STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" +export AERO_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aeroanl_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" -export AERO_STAGE_VARIATIONAL_TMPL="${PARMgfs}/gdas/aero_stage_variational.yaml.j2" -export AERO_FINALIZE_VARIATIONAL_TMPL="${PARMgfs}/gdas/aero_finalize_variational.yaml.j2" +export AERO_DET_INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" +export AERO_DET_FINALIZE_TMPL="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gcafs/config.aeroanlgenb b/dev/parm/config/gcafs/config.aeroanlgenb index c117aff481c..844ed0988bb 100644 --- a/dev/parm/config/gcafs/config.aeroanlgenb +++ b/dev/parm/config/gcafs/config.aeroanlgenb @@ -8,10 +8,10 @@ echo "BEGIN: config.aeroanlgenb" # Get task specific resources source "${EXPDIR}/config.resources" aeroanlgenb -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero_bmat_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" export JCB_BASE_YAML="${PARMgfs}/gdas/aero/jcb-base.yaml.j2" -export AERO_BMATRIX_STAGE_TMPL="${PARMgfs}/gdas/aero_stage_bmatrix_bkg.yaml.j2" -export AERO_BMATRIX_FINALIZE_TMPL="${PARMgfs}/gdas/aero_finalize_bmatrix_bkg.yaml.j2" +export AERO_BMAT_INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" +export AERO_BMAT_FINALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" export aero_diffusion_iter=200 export aero_diffusion_horiz_len=300e3 export aero_diffusion_fixed_val=20.0 diff --git a/dev/parm/config/gcafs/config.anlstat b/dev/parm/config/gcafs/config.anlstat index 6c295f89d1d..f73a91aa296 100644 --- a/dev/parm/config/gcafs/config.anlstat +++ b/dev/parm/config/gcafs/config.anlstat @@ -8,7 +8,7 @@ echo "BEGIN: config.anlstat" # Get task specific resources source "${EXPDIR}/config.resources" anlstat -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/anlstat_jedi_config.yaml.j2" -export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/stat_base_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/stat/anlstat_jedi_config.yaml.j2" +export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/stat/stat_base_config.yaml.j2" echo "END: config.anlstat" diff --git a/dev/parm/config/gfs/config.aeroanl.j2 b/dev/parm/config/gfs/config.aeroanl.j2 index 76813213a6e..31963c3e17e 100644 --- a/dev/parm/config/gfs/config.aeroanl.j2 +++ b/dev/parm/config/gfs/config.aeroanl.j2 @@ -23,13 +23,13 @@ export STATICB_TYPE='diffusion' export BERROR_YAML="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" -export CRTM_FIX_YAML="${PARMgfs}/gdas/aero_crtm_coeff.yaml.j2" -export JEDI_FIX_YAML="${PARMgfs}/gdas/aero_jedi_fix.yaml.j2" +export AERO_STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" +export AERO_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aeroanl_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" -export AERO_STAGE_VARIATIONAL_TMPL="${PARMgfs}/gdas/aero_stage_variational.yaml.j2" -export AERO_FINALIZE_VARIATIONAL_TMPL="${PARMgfs}/gdas/aero_finalize_variational.yaml.j2" +export AERO_DET_INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" +export AERO_DET_FINALIZE_TMPL="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gfs/config.aeroanlgenb b/dev/parm/config/gfs/config.aeroanlgenb index c117aff481c..844ed0988bb 100644 --- a/dev/parm/config/gfs/config.aeroanlgenb +++ b/dev/parm/config/gfs/config.aeroanlgenb @@ -8,10 +8,10 @@ echo "BEGIN: config.aeroanlgenb" # Get task specific resources source "${EXPDIR}/config.resources" aeroanlgenb -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero_bmat_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" export JCB_BASE_YAML="${PARMgfs}/gdas/aero/jcb-base.yaml.j2" -export AERO_BMATRIX_STAGE_TMPL="${PARMgfs}/gdas/aero_stage_bmatrix_bkg.yaml.j2" -export AERO_BMATRIX_FINALIZE_TMPL="${PARMgfs}/gdas/aero_finalize_bmatrix_bkg.yaml.j2" +export AERO_BMAT_INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" +export AERO_BMAT_FINALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" export aero_diffusion_iter=200 export aero_diffusion_horiz_len=300e3 export aero_diffusion_fixed_val=20.0 diff --git a/dev/parm/config/gfs/config.analcalc_fv3jedi b/dev/parm/config/gfs/config.analcalc_fv3jedi index f03d92aca8e..910b62972e3 100644 --- a/dev/parm/config/gfs/config.analcalc_fv3jedi +++ b/dev/parm/config/gfs/config.analcalc_fv3jedi @@ -14,7 +14,7 @@ export layout_y_analcalc_fv3jedi=2 # Get task specific resources . "${EXPDIR}/config.resources" analcalc_fv3jedi -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/analcalc_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/analcalc/analcalc_jedi_config.yaml.j2" if [[ ${DOHYBVAR} = "YES" ]]; then export CASE_ANL=${CASE_ENS} @@ -22,7 +22,8 @@ else export CASE_ANL=${CASE} fi -export JEDI_FIX_YAML="${PARMgfs}/gdas/atm_jedi_fix.yaml.j2" -export JEDI_BKG_INC_YAML="${PARMgfs}/gdas/staging/analcalc.yaml.j2" +export ATM_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" + +export ANALCALC_INITIALIZE_TMPL="${PARMgfs}/gdas/analcalc/analcalc_initialize.yaml.j2" echo "END: config.analcalc_fv3jedi" diff --git a/dev/parm/config/gfs/config.anlstat b/dev/parm/config/gfs/config.anlstat index 7a5b516baaf..1b9427a70ef 100644 --- a/dev/parm/config/gfs/config.anlstat +++ b/dev/parm/config/gfs/config.anlstat @@ -8,9 +8,9 @@ echo "BEGIN: config.anlstat" # Get task specific resources source "${EXPDIR}/config.resources" anlstat -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/anlstat_jedi_config.yaml.j2" -export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/stat_base_config.yaml.j2" -export JCB_BASE_YAML="${PARMgfs}/gdas/stat/aero/jcb-base.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/anlstat/anlstat_jedi_config.yaml.j2" +export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/anlstat/stat_base_config.yaml.j2" +export JCB_BASE_YAML="${PARMgfs}/gdas/anlstat/aero/jcb-base.yaml.j2" export JCB_ALGO_YAML="${PARMgfs}/gdas/jcb-algorithms/anlstat.yaml.j2" export JEDIEXE="${HOMEgfs}/sorc/gdas.cd/build/bin/ioda-stats.x" diff --git a/dev/parm/config/gfs/config.atmanl.j2 b/dev/parm/config/gfs/config.atmanl.j2 index 0c35fabb5c3..6ebf4723175 100644 --- a/dev/parm/config/gfs/config.atmanl.j2 +++ b/dev/parm/config/gfs/config.atmanl.j2 @@ -21,13 +21,14 @@ else export BERROR_YAML="atmosphere_background_error_static_${STATICB_TYPE}" fi -export CRTM_FIX_YAML="${PARMgfs}/gdas/atm_crtm_coeff.yaml.j2" -export JEDI_FIX_YAML="${PARMgfs}/gdas/atm_jedi_fix.yaml.j2" +export ATM_STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" +export ATM_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atmanl_jedi_config.yaml.j2" -export VAR_BKG_STAGING_YAML="${PARMgfs}/gdas/staging/atm_var_bkg.yaml.j2" -export BERROR_STAGING_YAML="${PARMgfs}/gdas/staging/atm_berror_${STATICB_TYPE}.yaml.j2" -export FV3ENS_STAGING_YAML="${PARMgfs}/gdas/staging/atm_var_fv3ens.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_det_jedi_config.yaml.j2" + +export ATM_DET_STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_bkg.yaml.j2" +export ATM_DET_STAGE_BERROR_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_berror_${STATICB_TYPE}.yaml.j2" +export ATM_DET_STAGE_FV3ENS_YAML="${PARMgfs}/gdas/atm/atm_det_stage_fv3ens.yaml.j2" export layout_x_atmanl="{{ LAYOUT_X_ATMANL }}" export layout_y_atmanl="{{ LAYOUT_Y_ATMANL }}" diff --git a/dev/parm/config/gfs/config.atmensanl.j2 b/dev/parm/config/gfs/config.atmensanl.j2 index 2ab784b3a86..b6aa9642ab6 100644 --- a/dev/parm/config/gfs/config.atmensanl.j2 +++ b/dev/parm/config/gfs/config.atmensanl.j2 @@ -12,11 +12,12 @@ export JCB_ALGO_YAML_FV3INC="{{ JCB_ALGO_YAML_FV3INC }}" export INTERP_METHOD='barycentric' -export CRTM_FIX_YAML="${PARMgfs}/gdas/atm_crtm_coeff.yaml.j2" -export JEDI_FIX_YAML="${PARMgfs}/gdas/atm_jedi_fix.yaml.j2" +export ATM_STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" +export ATM_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atmensanl_jedi_config.yaml.j2" -export LGETKF_BKG_STAGING_YAML="${PARMgfs}/gdas/staging/atm_lgetkf_bkg.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ens_jedi_config.yaml.j2" + +export ATM_ENS_STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_ens_stage_bkg.yaml.j2" export layout_x_atmensanl="{{ LAYOUT_X_ATMENSANL }}" export layout_y_atmensanl="{{ LAYOUT_Y_ATMENSANL }}" diff --git a/dev/parm/config/gfs/config.ecen_fv3jedi b/dev/parm/config/gfs/config.ecen_fv3jedi index cbaba7a2b41..0275bf48321 100644 --- a/dev/parm/config/gfs/config.ecen_fv3jedi +++ b/dev/parm/config/gfs/config.ecen_fv3jedi @@ -14,7 +14,7 @@ export layout_y_ecen_fv3jedi=1 # Get task specific resources . "${EXPDIR}/config.resources" ecen_fv3jedi -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm_ecen_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ecen_jedi_config.yaml.j2" if [[ ${DOHYBVAR} = "YES" ]]; then export CASE_ANL=${CASE_ENS} @@ -22,7 +22,8 @@ else export CASE_ANL=${CASE} fi -export JEDI_FIX_YAML="${PARMgfs}/gdas/atm_jedi_fix.yaml.j2" -export JEDI_BKG_INC_YAML="${PARMgfs}/gdas/staging/atm_ecen.yaml.j2" +export ATM_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" + +export ATM_ECEN_INITIALIZE_TMPL="${PARMgfs}/gdas/atm/atm_ecen_initialize.yaml.j2" echo "END: config.ecen_fv3jedi" diff --git a/dev/parm/config/gfs/config.esnowanl.j2 b/dev/parm/config/gfs/config.esnowanl.j2 index 297db3390b0..5acabf2494b 100644 --- a/dev/parm/config/gfs/config.esnowanl.j2 +++ b/dev/parm/config/gfs/config.esnowanl.j2 @@ -8,9 +8,6 @@ echo "BEGIN: config.esnowanl" # Get task specific resources source "${EXPDIR}/config.resources" esnowanl -export OBS_LIST="${PARMgfs}/gdas/snow/obs/lists/gdas_snow.yaml.j2" -export GTS_SNOW_STAGE_YAML="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" - export JCB_BASE_YAML="${PARMgfs}/gdas/snow/jcb-base.yaml.j2" export JCB_ALGO_YAML_VAR="${PARMgfs}/gdas/snow/jcb-prototype_2dvar.yaml.j2" @@ -20,17 +17,20 @@ export CALCFIMSEXE="${EXECgfs}/gdas_calcfIMS.x" export FIMS_NML_TMPL="${PARMgfs}/gdas/snow/prep/fims.nml.j2" export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" -export JEDI_FIX_YAML="${PARMgfs}/gdas/snow_jedi_fix.yaml.j2" -export BERROR_STAGING_YAML="${PARMgfs}/gdas/staging/snow_berror.yaml.j2" -export SNOW_ENS_STAGE_TMPL="${PARMgfs}/gdas/snow_stage_ens_update.yaml.j2" -export SNOW_OROG_STAGE_TMPL="${PARMgfs}/gdas/snow_stage_orog.yaml.j2" -export SNOW_ENS_FINALIZE_TMPL="${PARMgfs}/gdas/snow_finalize_ens_update.yaml.j2" +export SNOW_STAGE_JEDI_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" +export SNOW_STAGE_OROG_TMPL="${PARMgfs}/gdas/snow/snow_stage_orog.yaml.j2" +export SNOW_STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" + +export SNOW_ENS_STAGE_UPDATE_TMPL="${PARMgfs}/gdas/snow/snow_ens_stage_update.yaml.j2" +export SNOW_ENS_FINALIZE_TMPL="${PARMgfs}/gdas/snow/snow_ens_finalize_update.yaml.j2" + +export SNOW_STAGE_GTS_TMPL="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" # Name of the executable that applies increment to bkg and its namelist template export APPLY_INCR_EXE="${EXECgfs}/gdas_apply_incr.x" -export ENS_APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/ens_apply_incr_nml.j2" +export ENS_APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/ens_apply_incr_nml.j2"list -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/esnowanl_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snow/snow_ens_jedi_config.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gfs/config.snowanl.j2 b/dev/parm/config/gfs/config.snowanl.j2 index 6d6182c8b5a..3ade4530523 100644 --- a/dev/parm/config/gfs/config.snowanl.j2 +++ b/dev/parm/config/gfs/config.snowanl.j2 @@ -8,7 +8,6 @@ echo "BEGIN: config.snowanl" # Get task specific resources source "${EXPDIR}/config.resources" snowanl -export OBS_LIST="${PARMgfs}/gdas/snow/obs/lists/gdas_snow.yaml.j2" export GTS_SNOW_STAGE_YAML="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" export JCB_BASE_YAML="${PARMgfs}/gdas/snow/jcb-base.yaml.j2" @@ -24,11 +23,11 @@ export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" export APPLY_INCR_EXE="${EXECgfs}/gdas_apply_incr.x" export APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/apply_incr_nml.j2" -export JEDI_FIX_YAML="${PARMgfs}/gdas/snow_jedi_fix.yaml.j2" -export VAR_BKG_STAGING_YAML="${PARMgfs}/gdas/staging/snow_var_bkg.yaml.j2" -export BERROR_STAGING_YAML="${PARMgfs}/gdas/staging/snow_berror.yaml.j2" +export SNOW_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" +export SNOW_DET_STAGE_BKG_TMPL="${PARMgfs}/gdas/snow/snow_det_stage_bkg.yaml.j2" +export SNOW_STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snowanl_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snow/snow_det_jedi_config.yaml.j2" export JEDIEXE=${EXECgfs}/gdas.x diff --git a/dev/workflow/hosts/hera.yaml b/dev/workflow/hosts/hera.yaml index c6b0d15179e..05e3a0785fc 100644 --- a/dev/workflow/hosts/hera.yaml +++ b/dev/workflow/hosts/hera.yaml @@ -5,7 +5,7 @@ BASE_DATA: '/scratch3/NCEPDEV/global/role.glopara/data' BASE_IC: '/scratch3/NCEPDEV/global/role.glopara/data/ICSDIR' AERO_INPUTS_DIR: '/scratch1/NCEPDEV/global/glopara/data/GEFS_ExtData/20250310' PACKAGEROOT: '/scratch3/NCEPDEV/global/role.glopara/nwpara' -HOMEDIR: '/scratch3/NCEPDEV/global/${USER}' +HOMEDIR: '/scratch3/NCEPDEV/da/${USER}' STMP: '/scratch3/NCEPDEV/stmp/${USER}' PTMP: '/scratch3/NCEPDEV/stmp/${USER}' NOSCRUB: '${HOMEDIR}' @@ -19,7 +19,7 @@ QUEUE: batch PARTITION_BATCH: hera PARTITION_SERVICE: service # HPSS properties -HPSS_PROJECT: emc-global +HPSS_PROJECT: emc-da ARCHCOM_TO: 'hpss' ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' CHGRP_RSTPROD: 'YES' diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 0a1ce07bb04..d280bd56d4d 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 0a1ce07bb041e37e00bafd0ea30219a52fcf57a2 +Subproject commit d280bd56d4d03f628bd5ea93dd2a2a1cb3a1e862 diff --git a/ush/python/pygfs/task/aero_analysis.py b/ush/python/pygfs/task/aero_analysis.py index 5ed904811f8..98d4660e9b6 100644 --- a/ush/python/pygfs/task/aero_analysis.py +++ b/ush/python/pygfs/task/aero_analysis.py @@ -119,20 +119,20 @@ def initialize(self) -> None: logger.error(f"Bias correction files or directories do not exist:\n{pformat(bias_dict)}") # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.CRTM_FIX_YAML}") - crtm_fix_dict = parse_j2yaml(self.task_config.CRTM_FIX_YAML, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.AERO_STAGE_CRTM_COEFF_TMPL}") + crtm_fix_dict = parse_j2yaml(self.task_config.AERO_STAGE_CRTM_COEFF_TMPL}"), self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") - jedi_fix_dict = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.AERO_STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.AERO_STAGE_JEDI_FIX_TMPL}"), self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage files from COM and create working directories - logger.info(f"Staging files prescribed from {self.task_config.AERO_STAGE_VARIATIONAL_TMPL}") - aero_var_stage_dict = parse_j2yaml(self.task_config.AERO_STAGE_VARIATIONAL_TMPL, self.task_config) + logger.info(f"Staging files prescribed from {self.task_config.AERO_DET_INITIALIZE_TMPL}") + aero_var_stage_dict = parse_j2yaml(self.task_config.AERO_DET_INITIALIZE_TMPL}"), self.task_config) FileHandler(aero_var_stage_dict).sync() logger.debug(f"Staging from COM:\n{pformat(aero_var_stage_dict)}") @@ -230,7 +230,7 @@ def _add_fms_cube_sphere_increments(self) -> None: inc_template = os.path.join(self.task_config.DATA, 'anl', 'aeroinc.' + increment_template) bkg_template = os.path.join(self.task_config.DATA, 'anl', restart_template) # get list of increment vars - incvars_list_path = os.path.join(self.task_config['PARMgfs'], 'gdas', 'aeroanl_inc_vars.yaml') + incvars_list_path = os.path.join(self.task_config['PARMgfs'], 'gdas', 'aero', 'aero_det_inc_vars.yaml') incvars = YAMLFile(path=incvars_list_path)['incvars'] self.add_fv3_increments(inc_template, bkg_template, incvars) diff --git a/ush/python/pygfs/task/aero_bmatrix.py b/ush/python/pygfs/task/aero_bmatrix.py index 572eaaf9dcf..d78479a10ee 100644 --- a/ush/python/pygfs/task/aero_bmatrix.py +++ b/ush/python/pygfs/task/aero_bmatrix.py @@ -88,13 +88,13 @@ def initialize(self: Task) -> None: """ # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") - jedi_fix_list = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.AERO_STAGE_JEDI_FIX_TMPL}") + jedi_fix_list = parse_j2yaml(self.task_config.AERO_STAGE_JEDI_FIX_TMPL}"), self.task_config) FileHandler(jedi_fix_list).sync() - # stage backgrounds - logger.info(f"Staging backgrounds prescribed from {self.task_config.AERO_BMATRIX_STAGE_TMPL}") - aero_bmat_stage_list = parse_j2yaml(self.task_config.AERO_BMATRIX_STAGE_TMPL, self.task_config) + # stage files from COM and create working directories + logger.info(f"Staging files from COM and creating working directories {self.task_config.AERO_BMAT_INITIALIZE_TMPL}") + aero_bmat_stage_list = parse_j2yaml(self.task_config.AERO_BMAT_INITIALIZE_TMPL, self.task_config) FileHandler(aero_bmat_stage_list).sync() # initialize JEDI applications diff --git a/ush/python/pygfs/task/atm_analysis.py b/ush/python/pygfs/task/atm_analysis.py index 67b25c12365..bdf63e59147 100644 --- a/ush/python/pygfs/task/atm_analysis.py +++ b/ush/python/pygfs/task/atm_analysis.py @@ -118,21 +118,21 @@ def initialize(self) -> None: Jedi.extract_tar_from_filehandler_dict(bias_dict) # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.CRTM_FIX_YAML}") - crtm_fix_dict = parse_j2yaml(self.task_config.CRTM_FIX_YAML, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.ATM_STAGE_CRTM_COEFF_TMPL}") + crtm_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_CRTM_COEFF_TMPL}"), self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") - jedi_fix_dict = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL}"), self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage static background error files, otherwise it will assume ID matrix logger.info(f"Stage files for STATICB_TYPE {self.task_config.STATICB_TYPE}") if self.task_config.STATICB_TYPE != 'identity': - berror_staging_dict = parse_j2yaml(self.task_config.BERROR_STAGING_YAML, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.ATM_DET_STAGE_BERROR_TMPL, self.task_config) else: berror_staging_dict = {} FileHandler(berror_staging_dict).sync() @@ -141,13 +141,13 @@ def initialize(self) -> None: # stage ensemble files for use in hybrid background error if self.task_config.DOHYBVAR: logger.debug(f"Stage ensemble files for DOHYBVAR {self.task_config.DOHYBVAR}") - fv3ens_staging_dict = parse_j2yaml(self.task_config.FV3ENS_STAGING_YAML, self.task_config) + fv3ens_staging_dict = parse_j2yaml(self.task_config.ATM_DET_STAGE_FV3ENS_TMPL, self.task_config) FileHandler(fv3ens_staging_dict).sync() logger.debug(f"Ensemble files:\n{pformat(fv3ens_staging_dict)}") # stage backgrounds - logger.info(f"Staging background files from {self.task_config.VAR_BKG_STAGING_YAML}") - bkg_staging_dict = parse_j2yaml(self.task_config.VAR_BKG_STAGING_YAML, self.task_config) + logger.info(f"Staging background files from {self.task_config.ATM_DET_STAGE_BKG_TMPL}") + bkg_staging_dict = parse_j2yaml(self.task_config.ATM_DET_STAGE_BKG_TMPL}"), self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") diff --git a/ush/python/pygfs/task/atmens_analysis.py b/ush/python/pygfs/task/atmens_analysis.py index d8ca007cdf8..f04e755d774 100644 --- a/ush/python/pygfs/task/atmens_analysis.py +++ b/ush/python/pygfs/task/atmens_analysis.py @@ -112,20 +112,20 @@ def initialize(self) -> None: Jedi.extract_tar_from_filehandler_dict(bias_dict) # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.CRTM_FIX_YAML}") - crtm_fix_dict = parse_j2yaml(self.task_config.CRTM_FIX_YAML, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.ATM_ENS_STAGE_CRTM_COEFF_TMPL}") + crtm_fix_dict = parse_j2yaml(self.task_config.ATM_ENS_STAGE_CRTM_COEFF_TMPL}"), self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") - jedi_fix_dict = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.ATM_ENS_STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.ATM_ENS_STAGE_JEDI_FIX_TMPL}"), self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage backgrounds logger.info(f"Stage ensemble member background files") - bkg_staging_dict = parse_j2yaml(self.task_config.LGETKF_BKG_STAGING_YAML, self.task_config) + bkg_staging_dict = parse_j2yaml(self.task_config.ATM_ENS_STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Ensemble member background files:\n{pformat(bkg_staging_dict)}") diff --git a/ush/python/pygfs/task/ensemble_recenter.py b/ush/python/pygfs/task/ensemble_recenter.py index 34cdc08302b..420f950a947 100644 --- a/ush/python/pygfs/task/ensemble_recenter.py +++ b/ush/python/pygfs/task/ensemble_recenter.py @@ -97,14 +97,14 @@ def initialize(self) -> None: self.jedi_dict['ensemble_recenter'].initialize(self.task_config) # Stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") - jedi_fix_dict = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL}"), self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # Stage background and increment files - logger.info(f"Staging background and increment files from {self.task_config.JEDI_BKG_INC_YAML}") - fh_dict = parse_j2yaml(self.task_config.JEDI_BKG_INC_YAML, self.task_config) + logger.info(f"Staging background and increment files from {self.task_config.ATM_ECEN_INITIALIZE_TMPL}") + fh_dict = parse_j2yaml(self.task_config.ATM_ECEN_INITIALIZE_TMPL, self.task_config) FileHandler(fh_dict).sync() logger.debug(f"JEDI background and increment files:\n{pformat(fh_dict)}") diff --git a/ush/python/pygfs/task/fv3_analysis_calc.py b/ush/python/pygfs/task/fv3_analysis_calc.py index 77bd4dab24f..b1103107acd 100644 --- a/ush/python/pygfs/task/fv3_analysis_calc.py +++ b/ush/python/pygfs/task/fv3_analysis_calc.py @@ -100,14 +100,14 @@ def initialize(self) -> None: self.jedi_dict['snow_addincrement'].initialize(self.task_config) # Stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") - jedi_fix_dict = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # Stage background and increment files - logger.info(f"Staging background and increment files from {self.task_config.JEDI_BKG_INC_YAML}") - fh_dict = parse_j2yaml(self.task_config.JEDI_BKG_INC_YAML, self.task_config) + logger.info(f"Staging background and increment files from COM") + fh_dict = parse_j2yaml(self.task_config.ANALCALC_INITIALIZE_TMPL, self.task_config) FileHandler(fh_dict).sync() logger.debug(f"Background and increment files:\n{pformat(fh_dict)}") diff --git a/ush/python/pygfs/task/snow_analysis.py b/ush/python/pygfs/task/snow_analysis.py index d6754be2a25..4900cb9e339 100644 --- a/ush/python/pygfs/task/snow_analysis.py +++ b/ush/python/pygfs/task/snow_analysis.py @@ -104,8 +104,8 @@ def initialize(self) -> None: """ # stage backgrounds - logger.info(f"Staging background files from {self.task_config.VAR_BKG_STAGING_YAML}") - bkg_staging_dict = parse_j2yaml(self.task_config.VAR_BKG_STAGING_YAML, self.task_config) + logger.info(f"Staging background files from {self.task_config.SNOW_DET_STAGE_BKG_TMPL}") + bkg_staging_dict = parse_j2yaml(self.task_config.SNOW_DET_STAGE_BKG_TMPL}"), self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") @@ -121,14 +121,14 @@ def initialize(self) -> None: FileHandler(gts_mapping_list).sync() # stage FV3-JEDI fix files - logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") - jedi_fix_dict = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.SNOW_STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.SNOW_STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # staging B error files logger.info("Stage files for static background error") - berror_staging_dict = parse_j2yaml(self.task_config.BERROR_STAGING_YAML, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.SNOW_STAGE_BERROR_TMPL, self.task_config) FileHandler(berror_staging_dict).sync() logger.debug(f"Background error files:\n{pformat(berror_staging_dict)}") diff --git a/ush/python/pygfs/task/snowens_analysis.py b/ush/python/pygfs/task/snowens_analysis.py index 99b764f309f..1b4892ed70c 100644 --- a/ush/python/pygfs/task/snowens_analysis.py +++ b/ush/python/pygfs/task/snowens_analysis.py @@ -134,19 +134,19 @@ def initialize(self) -> None: logger.debug(f"Observation files:\n{pformat(obs_dict)}") # stage GTS bufr2ioda mapping YAML files - logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.GTS_SNOW_STAGE_YAML}") - gts_mapping_list = parse_j2yaml(self.task_config.GTS_SNOW_STAGE_YAML, self.task_config) + logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.SNOW_STAGE_GTS_TMPL}") + gts_mapping_list = parse_j2yaml(self.task_config.SNOW_STAGE_GTS_TMPL}"), self.task_config) FileHandler(gts_mapping_list).sync() # stage FV3-JEDI fix files - logger.info(f"Staging JEDI fix files from {self.task_config.JEDI_FIX_YAML}") - jedi_fix_dict = parse_j2yaml(self.task_config.JEDI_FIX_YAML, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.SNOW_STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.SNOW_STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # staging B error files logger.info("Stage files for static background error") - berror_staging_dict = parse_j2yaml(self.task_config.BERROR_STAGING_YAML, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.SNOW_STAGE_BERROR_TMPL, self.task_config) FileHandler(berror_staging_dict).sync() logger.debug(f"Background error files:\n{pformat(berror_staging_dict)}") From 51f89e01c3e018b95059939b6e86a39aa554ca69 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 31 Jul 2025 15:22:48 +0000 Subject: [PATCH 03/41] Update gdas hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index d280bd56d4d..6ab206c9736 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit d280bd56d4d03f628bd5ea93dd2a2a1cb3a1e862 +Subproject commit 6ab206c97367579882a63c309130f35bedc0f06e From 6a376fa8355c7efd50231b0c78eb999aecd53a9b Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Wed, 6 Aug 2025 15:05:53 +0000 Subject: [PATCH 04/41] Update gdas hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 6ab206c9736..c3f779d5e0e 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 6ab206c97367579882a63c309130f35bedc0f06e +Subproject commit c3f779d5e0e86bf3b60782cb5c7b94fed538257c From 7584ace3c3b84c45e291ff3f016156db2687aea2 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 7 Aug 2025 13:43:48 +0000 Subject: [PATCH 05/41] Update gdas hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index c3f779d5e0e..1478345a043 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit c3f779d5e0e86bf3b60782cb5c7b94fed538257c +Subproject commit 1478345a04324d026995d19680bdd2d64ada686e From ee3de9dfa6d96a7e83181ef5ef4b1e65990e89eb Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 7 Aug 2025 13:44:54 +0000 Subject: [PATCH 06/41] Updates --- dev/parm/config/gfs/config.anlstat | 3 --- dev/parm/config/gfs/config.marineanl.j2 | 19 +++++++------------ dev/parm/config/gfs/config.marineanlecen | 6 +++--- dev/parm/config/gfs/config.marineanlletkf | 4 ++-- dev/parm/config/gfs/config.marineanlvar | 6 ++++++ dev/parm/config/gfs/config.marinebmat | 4 ++-- ush/python/pygfs/task/aero_analysis.py | 2 +- ush/python/pygfs/task/marine_analysis.py | 10 +++++----- ush/python/pygfs/task/marine_bmat.py | 8 ++++---- ush/python/pygfs/task/marine_letkf.py | 8 ++++---- ush/python/pygfs/task/marine_recenter.py | 10 +++++----- ush/python/pygfs/task/snowens_analysis.py | 2 +- 12 files changed, 40 insertions(+), 42 deletions(-) diff --git a/dev/parm/config/gfs/config.anlstat b/dev/parm/config/gfs/config.anlstat index 1b9427a70ef..bc5265bb3cf 100644 --- a/dev/parm/config/gfs/config.anlstat +++ b/dev/parm/config/gfs/config.anlstat @@ -10,8 +10,5 @@ source "${EXPDIR}/config.resources" anlstat export JEDI_CONFIG_YAML="${PARMgfs}/gdas/anlstat/anlstat_jedi_config.yaml.j2" export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/anlstat/stat_base_config.yaml.j2" -export JCB_BASE_YAML="${PARMgfs}/gdas/anlstat/aero/jcb-base.yaml.j2" -export JCB_ALGO_YAML="${PARMgfs}/gdas/jcb-algorithms/anlstat.yaml.j2" -export JEDIEXE="${HOMEgfs}/sorc/gdas.cd/build/bin/ioda-stats.x" echo "END: config.anlstat" diff --git a/dev/parm/config/gfs/config.marineanl.j2 b/dev/parm/config/gfs/config.marineanl.j2 index 57c148b6402..03239e938e2 100644 --- a/dev/parm/config/gfs/config.marineanl.j2 +++ b/dev/parm/config/gfs/config.marineanl.j2 @@ -5,23 +5,18 @@ echo "BEGIN: config.marineanl" -export JEDI_CONFIG_YAML_ANALYSIS="${PARMgfs}/gdas/soca_analysis_jedi_config.yaml.j2" -export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" - -export MARINE_OBS_YAML_DIR="${PARMgfs}/gdas/soca/obs/config" export MARINE_OBS_LIST_YAML="{{ SOCA_OBS_LIST }}" export SOCA_INPUT_FIX_DIR="{{ SOCA_INPUT_FIX_DIR }}" export SOCA_ANL_GEOM="{{ SOCA_ANL_GEOM }}" export SOCA_NINNER="{{ SOCA_NINNER }}" + export DOMAIN_STACK_SIZE=116640000 #TODO: Make the stack size resolution dependent -export SOCA_ENS_BKG_STAGE_YAML_TMPL="${PARMgfs}/gdas/soca/soca_ens_bkg_stage.yaml.j2" -export SOCA_FIX_YAML_TMPL="${PARMgfs}/gdas/soca/soca_fix_stage_${OCNRES}.yaml.j2" -export MARINE_UTILITY_YAML_TMPL="${PARMgfs}/gdas/soca/soca_utils_stage.yaml.j2" -export MARINE_ENSDA_STAGE_BKG_YAML_TMPL="${PARMgfs}/gdas/soca/ensda/stage_ens_mem.yaml.j2" -export MARINE_DET_STAGE_BKG_YAML_TMPL="${PARMgfs}/gdas/soca/soca_det_bkg_stage.yaml.j2" -export MARINE_DET_STAGE_FILES_YAML_TMPL="${PARMgfs}/gdas/soca/soca_det_files_stage.yaml.j2" -export MARINE_DET_FINALIZE_YAML_TMPL="${PARMgfs}/gdas/soca/soca_det_finalize.yaml.j2" -export MARINE_JCB_GDAS_ALGO="${PARMgfs}/gdas/jcb-gdas/algorithm/marine" export MARINE_JCB_GDAS_OBS="${PARMgfs}/gdas/jcb-gdas/observations/marine" +export MARINE_STAGE_FIX_TMPL="${PARMgfs}/gdas/marine/marine_stage_fix_${OCNRES}.yaml.j2" +export MARINE_STAGE_UTILITIES_TMPL="${PARMgfs}/gdas/marine/marine_stage_utilities.yaml.j2" + +export MARINE_DET_STAGE_BKG_TMPL="${PARMgfs}/gdas/marine/marine_det_stage_bkg.yaml.j2" +export MARINE_ENS_STAGE_BKG_TMPL="${PARMgfs}/gdas/marine/marine_ens_stage_bkg.yaml.j2" + echo "END: config.marineanl" diff --git a/dev/parm/config/gfs/config.marineanlecen b/dev/parm/config/gfs/config.marineanlecen index f440bd423a9..f7e0048103f 100644 --- a/dev/parm/config/gfs/config.marineanlecen +++ b/dev/parm/config/gfs/config.marineanlecen @@ -8,8 +8,8 @@ echo "BEGIN: config.marineanlecen" # Get task specific resources source "${EXPDIR}/config.resources" marineanlecen -export JEDI_CONFIG_YAML_ECEN="${PARMgfs}/gdas/soca/soca_ecen_jedi_config.yaml.j2" -export MARINE_ECEN_STAGE_YAML_TMPL="${PARMgfs}/gdas/soca/soca_ecen_stage.yaml.j2" -export MARINE_ECEN_FINALIZE_YAML_TMPL="${PARMgfs}/gdas/soca/soca_ecen_finalize.yaml.j2" +export JEDI_CONFIG_YAML_ECEN="${PARMgfs}/gdas/marine/marine_ecen_jedi_config.yaml.j2" +export MARINE_ECEN_INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ecen_initialize.yaml.j2" +export MARINE_ECEN_FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ecen_finalize.yaml.j2" echo "END: config.marineanlecen" diff --git a/dev/parm/config/gfs/config.marineanlletkf b/dev/parm/config/gfs/config.marineanlletkf index 60d9b36c2bc..8e77748245a 100644 --- a/dev/parm/config/gfs/config.marineanlletkf +++ b/dev/parm/config/gfs/config.marineanlletkf @@ -10,8 +10,8 @@ echo "BEGIN: config.marineanlletkf" export MARINE_LETKF_EXEC="${EXECgfs}/gdas.x" export MARINE_LETKF_YAML_TMPL="${PARMgfs}/gdas/soca/letkf/letkf.yaml.j2" -export MARINE_LETKF_STAGE_YAML_TMPL="${PARMgfs}/gdas/soca/letkf/letkf_stage.yaml.j2" -export MARINE_LETKF_SAVE_YAML_TMPL="${PARMgfs}/gdas/soca/letkf/letkf_save.yaml.j2" +export MARINE_ENS_INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ens_initialize.yaml.j2" +export MARINE_ENS_FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ens_finalize.yaml.j2" export GRIDGEN_EXEC="${EXECgfs}/gdas_soca_gridgen.x" export GRIDGEN_YAML="${HOMEgfs}/sorc/gdas.cd/parm/jcb-gdas/algorithm/marine/soca_gridgen.yaml.j2" diff --git a/dev/parm/config/gfs/config.marineanlvar b/dev/parm/config/gfs/config.marineanlvar index 5ed6d444ebe..8ad1c8f325a 100644 --- a/dev/parm/config/gfs/config.marineanlvar +++ b/dev/parm/config/gfs/config.marineanlvar @@ -8,4 +8,10 @@ echo "BEGIN: config.marineanlvar" # Get task specific resources . "${EXPDIR}/config.resources" marineanlvar +export JEDI_CONFIG_YAML_ANALYSIS="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" +export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" + +export MARINE_DET_INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_initialize.yaml.j2" +export MARINE_DET_FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_finalize.yaml.j2" + echo "END: config.marineanlvar" diff --git a/dev/parm/config/gfs/config.marinebmat b/dev/parm/config/gfs/config.marinebmat index e5316c6fc2c..1d659c7ba1f 100644 --- a/dev/parm/config/gfs/config.marinebmat +++ b/dev/parm/config/gfs/config.marinebmat @@ -8,7 +8,7 @@ echo "BEGIN: config.marinebmat" # Get task specific resources . "${EXPDIR}/config.resources" marinebmat -export JEDI_CONFIG_YAML_BMAT="${PARMgfs}/gdas/soca_bmat_jedi_config.yaml.j2" -export MARINE_BMAT_FINALIZE_YAML_TMPL="${PARMgfs}/gdas/soca/soca_bmat_finalize.yaml.j2" +export JEDI_CONFIG_YAML_BMAT="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" +export MARINE_BMAT_FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_bmat_finalize.yaml.j2" echo "END: config.marinebmat" diff --git a/ush/python/pygfs/task/aero_analysis.py b/ush/python/pygfs/task/aero_analysis.py index 98d4660e9b6..524e3a8fa83 100644 --- a/ush/python/pygfs/task/aero_analysis.py +++ b/ush/python/pygfs/task/aero_analysis.py @@ -120,7 +120,7 @@ def initialize(self) -> None: # stage CRTM fix files logger.info(f"Staging CRTM fix files from {self.task_config.AERO_STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.AERO_STAGE_CRTM_COEFF_TMPL}"), self.task_config) + crtm_fix_dict = parse_j2yaml(self.task_config.AERO_STAGE_CRTM_COEFF_TMPL, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 539a69466af..f4774d66d3b 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -109,7 +109,7 @@ def initialize(self: Task) -> None: # stage fix files logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.SOCA_FIX_YAML_TMPL, self.task_config) + soca_fix_list = parse_j2yaml(self.task_config.MARINE_STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_list).sync() # prepare the deterministic MOM6 input.nml @@ -129,17 +129,17 @@ def initialize(self: Task) -> None: # stage the soca utility yamls (gridgen, fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMsoca}") - soca_utility_list = parse_j2yaml(self.task_config.MARINE_UTILITY_YAML_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.MARINE_STAGE_UTILITIES_TMPL, self.task_config) FileHandler(soca_utility_list).sync() # stage the ocean and ice backgrounds for FGAT logger.info(f"Staging files needed for deterministic analysis from COM") - bkg_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_BKG_YAML_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_list).sync() # stage files and link directories from B-matrix job needed for deterministic analysis logger.info(f"Staging files needed for deterministic analysis from COM") - soca_files_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_FILES_YAML_TMPL, self.task_config) + soca_files_list = parse_j2yaml(self.task_config.MARINE_DET_INITIALIZE_TMPL, self.task_config) FileHandler(soca_files_list).sync() # assert that dates of the history files are correct @@ -198,7 +198,7 @@ def finalize(self: Task) -> None: # Save output files to COM logger.info(f"Copy files to ROTDIR") - soca_finalize_list = parse_j2yaml(self.task_config.MARINE_DET_FINALIZE_YAML_TMPL, self.task_config) + soca_finalize_list = parse_j2yaml(self.task_config.MARINE_DET_FINALIZE_TMPL, self.task_config) FileHandler(soca_finalize_list).sync() # Save obs diag statistics to COM (success is optional) diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index 835f5382900..99837a34e41 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -102,7 +102,7 @@ def initialize(self: Task) -> None: # stage fix files logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.SOCA_FIX_YAML_TMPL, self.task_config) + soca_fix_list = parse_j2yaml(self.task_config.MARINE_STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_list).sync() # prepare the deterministic MOM6 input.nml @@ -120,7 +120,7 @@ def initialize(self: Task) -> None: # stage the soca utility yamls (fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files") - soca_utility_list = parse_j2yaml(self.task_config.MARINE_UTILITY_YAML_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.MARINE_STAGE_UTILITIES_TMPL, self.task_config) FileHandler(soca_utility_list).sync() # initialize vtscales python script @@ -141,7 +141,7 @@ def initialize(self: Task) -> None: # stage ensemble members for the hybrid background error if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: logger.debug(f"Stage ensemble members for the hybrid background error") - letkf_stage_list = parse_j2yaml(self.task_config.MARINE_ENSDA_STAGE_BKG_YAML_TMPL, self.task_config) + letkf_stage_list = parse_j2yaml(self.task_config.MARINE_ENS_STAGE_BKG_TMPL, self.task_config) FileHandler(letkf_stage_list).sync() # create the symbolic link to the static B-matrix directory @@ -221,5 +221,5 @@ def finalize(self: Task) -> None: # Save output files to COM logger.info(f"Copy files to ROTDIR") - soca_finalize_list = parse_j2yaml(self.task_config.MARINE_BMAT_FINALIZE_YAML_TMPL, self.task_config) + soca_finalize_list = parse_j2yaml(self.task_config.MARINE_BMAT_FINALIZE_TMPL, self.task_config) FileHandler(soca_finalize_list).sync() diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py index 88780bfc46f..b86a81cef55 100644 --- a/ush/python/pygfs/task/marine_letkf.py +++ b/ush/python/pygfs/task/marine_letkf.py @@ -73,7 +73,7 @@ def initialize(self): logger.info("initialize") # make directories and stage ensemble background files - soca_fix_stage_list = parse_j2yaml(self.task_config.SOCA_FIX_YAML_TMPL, self.task_config) + soca_fix_stage_list = parse_j2yaml(self.task_config.MARINE_STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_stage_list).sync() stageconfig = AttrDict() keys = ['app_path_observations', @@ -114,11 +114,11 @@ def initialize(self): jcb_config = {**jcb_base_config, **stageconfig} # stage letkf-specific files - letkf_stage_list = parse_j2yaml(self.task_config.MARINE_LETKF_STAGE_YAML_TMPL, jcb_config) + letkf_stage_list = parse_j2yaml(self.task_config.MARINE_ENS_INITIALIZE_TMPL, jcb_config) FileHandler(letkf_stage_list).sync() # stage ensemble background files - soca_ens_bkg_stage_list = parse_j2yaml(self.task_config.MARINE_ENSDA_STAGE_BKG_YAML_TMPL, stageconfig) + soca_ens_bkg_stage_list = parse_j2yaml(self.task_config.MARINE_ENS_STAGE_BKG_TMPL, stageconfig) FileHandler(soca_ens_bkg_stage_list).sync() # "observations" is expected by later JCB code to populate it with config info, @@ -232,5 +232,5 @@ def finalize(self): yamls_to_copy = [] yamls_to_copy.append([letkfsaveconf.letkf_yaml_file, os.path.join(letkfsaveconf.COMOUT_CONF, 'soca_letkf.yaml')]) FileHandler({'copy': yamls_to_copy}).sync() - letkf_save_list = parse_j2yaml(self.task_config.MARINE_LETKF_SAVE_YAML_TMPL, letkfsaveconf) + letkf_save_list = parse_j2yaml(self.task_config.MARINE_ENS_FINALIZE_TMPL, letkfsaveconf) FileHandler(letkf_save_list).sync() diff --git a/ush/python/pygfs/task/marine_recenter.py b/ush/python/pygfs/task/marine_recenter.py index 78fbca00418..45d98cd560d 100644 --- a/ush/python/pygfs/task/marine_recenter.py +++ b/ush/python/pygfs/task/marine_recenter.py @@ -79,7 +79,7 @@ def initialize(self): # stage fix files logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.SOCA_FIX_YAML_TMPL, self.task_config) + soca_fix_list = parse_j2yaml(self.task_config.SOCA_STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_list).sync() # prepare the MOM6 input.nml @@ -87,16 +87,16 @@ def initialize(self): # stage the soca utility yamls (gridgen, fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMsoca}") - soca_utility_list = parse_j2yaml(self.task_config.MARINE_UTILITY_YAML_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.MARINE_STAGE_UTILITIES_TMPL, self.task_config) FileHandler(soca_utility_list).sync() # stage backgrounds - bkg_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_BKG_YAML_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_list).sync() # stage the ensemble members and CICE restarts logger.info("---------------- Stage ensemble members and CICE restarts") - soca_ens_list = parse_j2yaml(self.task_config.MARINE_ECEN_STAGE_YAML_TMPL, self.task_config) + soca_ens_list = parse_j2yaml(self.task_config.MARINE_ECEN_INITIALIZE_TMPL, self.task_config) FileHandler(soca_ens_list).sync() # initialize JEDI applications @@ -135,5 +135,5 @@ def finalize(self): # Save recentered increments and ensemble statistics logger.info("---------------- Save recentered increments and ensemble statistics") - soca_ens_list = parse_j2yaml(self.task_config.MARINE_ECEN_FINALIZE_YAML_TMPL, self.task_config) + soca_ens_list = parse_j2yaml(self.task_config.MARINE_ECEN_FINALIZE_TMPL, self.task_config) FileHandler(soca_ens_list).sync() diff --git a/ush/python/pygfs/task/snowens_analysis.py b/ush/python/pygfs/task/snowens_analysis.py index 1b4892ed70c..109cc99e5db 100644 --- a/ush/python/pygfs/task/snowens_analysis.py +++ b/ush/python/pygfs/task/snowens_analysis.py @@ -135,7 +135,7 @@ def initialize(self) -> None: # stage GTS bufr2ioda mapping YAML files logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.SNOW_STAGE_GTS_TMPL}") - gts_mapping_list = parse_j2yaml(self.task_config.SNOW_STAGE_GTS_TMPL}"), self.task_config) + gts_mapping_list = parse_j2yaml(self.task_config.SNOW_STAGE_GTS_TMPL"), self.task_config) FileHandler(gts_mapping_list).sync() # stage FV3-JEDI fix files From d093e70ce80a736fb47ac05b6945c2f8af53cadf Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Tue, 19 Aug 2025 16:54:07 +0000 Subject: [PATCH 07/41] Update GDAS hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 1478345a043..af114bbbd3b 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 1478345a04324d026995d19680bdd2d64ada686e +Subproject commit af114bbbd3b193f81cd2263e7be43ded68f90d71 From 82d45c62b26f2adbd9de284a5fcacba4fc983aa6 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Tue, 19 Aug 2025 16:56:48 +0000 Subject: [PATCH 08/41] Update aero_analysis.py --- ush/python/pygfs/task/aero_analysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/python/pygfs/task/aero_analysis.py b/ush/python/pygfs/task/aero_analysis.py index 524e3a8fa83..c32aa3bae73 100644 --- a/ush/python/pygfs/task/aero_analysis.py +++ b/ush/python/pygfs/task/aero_analysis.py @@ -126,7 +126,7 @@ def initialize(self) -> None: # stage fix files logger.info(f"Staging JEDI fix files from {self.task_config.AERO_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.AERO_STAGE_JEDI_FIX_TMPL}"), self.task_config) + jedi_fix_dict = parse_j2yaml(self.task_config.AERO_STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") From 4553d4da835983fa5cad70c31ee8e6649a442e3b Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Wed, 20 Aug 2025 19:32:56 +0000 Subject: [PATCH 09/41] Clean up and bug fixes --- parm/gdas/aero_bmat_jedi_config.yaml.j2 | 19 --- parm/gdas/aero_crtm_coeff.yaml.j2 | 13 -- parm/gdas/aero_finalize_bmatrix_bkg.yaml.j2 | 19 --- parm/gdas/aero_finalize_variational.yaml.j2 | 25 --- parm/gdas/aero_jedi_fix.yaml.j2 | 6 - parm/gdas/aero_stage_bmatrix_bkg.yaml.j2 | 46 ----- parm/gdas/aero_stage_variational.yaml.j2 | 50 ------ parm/gdas/aeroanl_inc_vars.yaml | 1 - parm/gdas/aeroanl_jedi_config.yaml.j2 | 7 - parm/gdas/analcalc_jedi_config.yaml.j2 | 25 --- parm/gdas/anlstat_jedi_config.yaml.j2 | 21 --- parm/gdas/atm_crtm_coeff.yaml.j2 | 178 -------------------- parm/gdas/atm_ecen_jedi_config.yaml.j2 | 12 -- parm/gdas/atm_jedi_fix.yaml.j2 | 6 - parm/gdas/atmanl_inc_vars.yaml | 1 - parm/gdas/atmanl_jedi_config.yaml.j2 | 13 -- parm/gdas/atmensanl_jedi_config.yaml.j2 | 27 --- parm/gdas/esnowanl_jedi_config.yaml.j2 | 14 -- parm/gdas/snow_finalize_ens_update.yaml.j2 | 43 ----- parm/gdas/snow_jedi_fix.yaml.j2 | 6 - parm/gdas/snow_stage_ens_update.yaml.j2 | 52 ------ parm/gdas/snow_stage_orog.yaml.j2 | 8 - parm/gdas/snowanl_jedi_config.yaml.j2 | 7 - parm/gdas/soca_analysis_jedi_config.yaml.j2 | 19 --- parm/gdas/soca_bmat_jedi_config.yaml.j2 | 49 ------ parm/gdas/staging/analcalc.yaml.j2 | 14 -- parm/gdas/staging/atm_berror_gsibec.yaml.j2 | 8 - parm/gdas/staging/atm_ecen.yaml.j2 | 36 ---- parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 | 23 --- parm/gdas/staging/atm_var_bkg.yaml.j2 | 5 - parm/gdas/staging/atm_var_fv3ens.yaml.j2 | 15 -- parm/gdas/staging/snow_berror.yaml.j2 | 4 - parm/gdas/staging/snow_var_bkg.yaml.j2 | 8 - parm/gdas/stat_base_config.yaml.j2 | 35 ---- ush/python/pygfs/task/aero_analysis.py | 2 +- ush/python/pygfs/task/aero_bmatrix.py | 2 +- ush/python/pygfs/task/atm_analysis.py | 6 +- ush/python/pygfs/task/atmens_analysis.py | 8 +- ush/python/pygfs/task/ensemble_recenter.py | 2 +- ush/python/pygfs/task/snow_analysis.py | 2 +- ush/python/pygfs/task/snowens_analysis.py | 2 +- 41 files changed, 12 insertions(+), 827 deletions(-) delete mode 100644 parm/gdas/aero_bmat_jedi_config.yaml.j2 delete mode 100644 parm/gdas/aero_crtm_coeff.yaml.j2 delete mode 100644 parm/gdas/aero_finalize_bmatrix_bkg.yaml.j2 delete mode 100644 parm/gdas/aero_finalize_variational.yaml.j2 delete mode 100644 parm/gdas/aero_jedi_fix.yaml.j2 delete mode 100644 parm/gdas/aero_stage_bmatrix_bkg.yaml.j2 delete mode 100644 parm/gdas/aero_stage_variational.yaml.j2 delete mode 100644 parm/gdas/aeroanl_inc_vars.yaml delete mode 100644 parm/gdas/aeroanl_jedi_config.yaml.j2 delete mode 100644 parm/gdas/analcalc_jedi_config.yaml.j2 delete mode 100644 parm/gdas/anlstat_jedi_config.yaml.j2 delete mode 100644 parm/gdas/atm_crtm_coeff.yaml.j2 delete mode 100644 parm/gdas/atm_ecen_jedi_config.yaml.j2 delete mode 100644 parm/gdas/atm_jedi_fix.yaml.j2 delete mode 100644 parm/gdas/atmanl_inc_vars.yaml delete mode 100644 parm/gdas/atmanl_jedi_config.yaml.j2 delete mode 100644 parm/gdas/atmensanl_jedi_config.yaml.j2 delete mode 100644 parm/gdas/esnowanl_jedi_config.yaml.j2 delete mode 100644 parm/gdas/snow_finalize_ens_update.yaml.j2 delete mode 100644 parm/gdas/snow_jedi_fix.yaml.j2 delete mode 100644 parm/gdas/snow_stage_ens_update.yaml.j2 delete mode 100644 parm/gdas/snow_stage_orog.yaml.j2 delete mode 100644 parm/gdas/snowanl_jedi_config.yaml.j2 delete mode 100644 parm/gdas/soca_analysis_jedi_config.yaml.j2 delete mode 100644 parm/gdas/soca_bmat_jedi_config.yaml.j2 delete mode 100644 parm/gdas/staging/analcalc.yaml.j2 delete mode 100644 parm/gdas/staging/atm_berror_gsibec.yaml.j2 delete mode 100644 parm/gdas/staging/atm_ecen.yaml.j2 delete mode 100644 parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 delete mode 100644 parm/gdas/staging/atm_var_bkg.yaml.j2 delete mode 100644 parm/gdas/staging/atm_var_fv3ens.yaml.j2 delete mode 100644 parm/gdas/staging/snow_berror.yaml.j2 delete mode 100644 parm/gdas/staging/snow_var_bkg.yaml.j2 delete mode 100644 parm/gdas/stat_base_config.yaml.j2 diff --git a/parm/gdas/aero_bmat_jedi_config.yaml.j2 b/parm/gdas/aero_bmat_jedi_config.yaml.j2 deleted file mode 100644 index d30a1bd7cd6..00000000000 --- a/parm/gdas/aero_bmat_jedi_config.yaml.j2 +++ /dev/null @@ -1,19 +0,0 @@ -aero_interpbkg: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - jedi_args: ['fv3jedi', 'convertstate'] - mpi_cmd: '{{ APRUN_AEROANLGENB }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' - jcb_algo: aero_convert_background -aero_diagb: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_fv3jedi_chem_diagb.x' - mpi_cmd: '{{ APRUN_AEROANLGENB }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' - jcb_algo: aero_gen_bmatrix_diagb -aero_diffusion: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_fv3jedi_error_covariance_toolbox.x' - mpi_cmd: '{{ APRUN_AEROANLGENB }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' - jcb_algo: aero_gen_bmatrix_diffusion diff --git a/parm/gdas/aero_crtm_coeff.yaml.j2 b/parm/gdas/aero_crtm_coeff.yaml.j2 deleted file mode 100644 index b48d8ff2315..00000000000 --- a/parm/gdas/aero_crtm_coeff.yaml.j2 +++ /dev/null @@ -1,13 +0,0 @@ -mkdir: -- '{{ DATA }}/crtm/' -copy: -- ['{{ CRTM_FIX }}/AerosolCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/CloudCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/v.viirs-m_npp.SpcCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/v.viirs-m_npp.TauCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/v.viirs-m_j1.SpcCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/v.viirs-m_j1.TauCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/NPOESS.VISice.EmisCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/NPOESS.VISland.EmisCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/NPOESS.VISsnow.EmisCoeff.bin', '{{ DATA }}/crtm/'] -- ['{{ CRTM_FIX }}/NPOESS.VISwater.EmisCoeff.bin', '{{ DATA }}/crtm/'] diff --git a/parm/gdas/aero_finalize_bmatrix_bkg.yaml.j2 b/parm/gdas/aero_finalize_bmatrix_bkg.yaml.j2 deleted file mode 100644 index d7addee30d3..00000000000 --- a/parm/gdas/aero_finalize_bmatrix_bkg.yaml.j2 +++ /dev/null @@ -1,19 +0,0 @@ -{% set cycle_HH = current_cycle | strftime("%H") %} -{% set HEAD = RUN + ".t" + cycle_HH + "z." %} -{% set offset_td = "+6H" | to_timedelta %} -{% set background_time = current_cycle | add_to_datetime(offset_td) %} -copy: -### copy YAMLs used -{% set yaml_list = ['aero_diagb.yaml', 'aero_diffusion.yaml', 'aero_interpbkg.yaml'] %} -{% for fname in yaml_list %} -- ["{{ DATA }}/{{ fname }}", "{{ COMOUT_CHEM_BMAT }}/{{ HEAD }}{{ fname }}"] -{% endfor %} -### copy stddev files to ROTDIR -{% for tile in range(1, ntiles+1) %} -- ["{{ DATA }}/stddev/{{ background_time | to_fv3time }}.stddev.fv_tracer.res.tile{{ tile }}.nc", "{{ COMOUT_CHEM_BMAT }}/{{ background_time | to_fv3time }}.stddev.fv_tracer.res.tile{{ tile }}.nc"] -{% endfor %} -### copy coupler file -- ["{{ DATA }}/stddev/{{ background_time | to_fv3time }}.stddev.coupler.res", "{{ COMOUT_CHEM_BMAT }}/{{ background_time | to_fv3time }}.stddev.coupler.res"] -### copy diffusion files -- ["{{ DATA }}/diffusion/diffusion_hz.nc", "{{ COMOUT_CHEM_BMAT }}/{{ HEAD }}aero_diffusion_hz.nc"] -- ["{{ DATA }}/diffusion/diffusion_vt.nc", "{{ COMOUT_CHEM_BMAT }}/{{ HEAD }}aero_diffusion_vt.nc"] diff --git a/parm/gdas/aero_finalize_variational.yaml.j2 b/parm/gdas/aero_finalize_variational.yaml.j2 deleted file mode 100644 index 45674cc615f..00000000000 --- a/parm/gdas/aero_finalize_variational.yaml.j2 +++ /dev/null @@ -1,25 +0,0 @@ -###################################### -# set some variables -###################################### -{% if DOIAU == True %} - {% set bkgtime = AERO_WINDOW_BEGIN %} -{% else %} - {% set bkgtime = current_cycle %} -{% endif %} -###################################### -mkdir: -- "{{ COMOUT_CHEM_ANALYSIS }}" -- "{{ COMOUT_ATMOS_RESTART }}" -- "{{ COMOUT_CONF }}" -copy: -## copy variational YAML to ROTDIR -- ["{{ DATA }}/aeroanlvar.yaml", "{{ COMOUT_CONF }}/{{ APREFIX }}aerovar.yaml"] -## copy increments -{% for tile in range(1,ntiles+1) %} -- ["{{ DATA }}/anl/aeroinc.{{ current_cycle | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc", "{{ COMOUT_CHEM_ANALYSIS }}/aeroinc.{{ current_cycle | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc"] -{% endfor %} -- ["{{ DATA }}/anl/aeroinc_gauss.{{ current_cycle | to_isotime }}.gaussian.modelLevels.nc", "{{ COMOUT_CHEM_ANALYSIS }}/{{ APREFIX }}aeroinc.nc"] -## copy analysis -{% for tile in range(1,ntiles+1) %} -- ["{{ DATA }}/anl/{{ bkgtime | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc", "{{ COMOUT_ATMOS_RESTART }}/{{ bkgtime | to_fv3time }}.aeroanl_fv_tracer.res.tile{{ tile }}.nc"] -{% endfor %} diff --git a/parm/gdas/aero_jedi_fix.yaml.j2 b/parm/gdas/aero_jedi_fix.yaml.j2 deleted file mode 100644 index 6a5ca865b25..00000000000 --- a/parm/gdas/aero_jedi_fix.yaml.j2 +++ /dev/null @@ -1,6 +0,0 @@ -mkdir: -- '{{ 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'] diff --git a/parm/gdas/aero_stage_bmatrix_bkg.yaml.j2 b/parm/gdas/aero_stage_bmatrix_bkg.yaml.j2 deleted file mode 100644 index 56dce8df8eb..00000000000 --- a/parm/gdas/aero_stage_bmatrix_bkg.yaml.j2 +++ /dev/null @@ -1,46 +0,0 @@ -###################################### -# set some variables -###################################### -{% set offset_td = "+6H" | to_timedelta %} -{% set background_time = current_cycle | add_to_datetime(offset_td) %} -{% set ftype_list = ['fv_core.res', 'fv_tracer.res', 'sfc_data'] %} -###################################### -# create working directories -###################################### -mkdir: -- "{{ DATA }}/bkg" -- "{{ DATA }}/stddev" -- "{{ DATA }}/clm_stddev" -- "{{ DATA }}/diffusion" -- "{{ DATA }}/rescale" -copy: -###################################### -# copy deterministic background files -###################################### -# define variables -# Declare a dict of search and replace terms to run on each template -{% set tmpl_dict = {'${ROTDIR}':ROTDIR, - '${RUN}':RUN, - '${YMD}':current_cycle | to_YMD, - '${HH}':current_cycle | strftime("%H"), - '${MEMDIR}':""} %} - -- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ background_time | to_fv3time }}.coupler.res", "{{ DATA }}/bkg/{{ background_time | to_fv3time }}.coupler.res"] -{% for ftype in ftype_list %} - {% for tile in range(1, ntiles+1) %} -- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ background_time | to_fv3time }}.{{ ftype }}.tile{{ tile }}.nc", "{{ DATA }}/bkg/{{ background_time | to_fv3time }}.{{ ftype }}.tile{{ tile }}.nc"] -- ["{{ FIXorog }}/{{ CASE }}/{{ CASE }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc", "{{ DATA }}/bkg/{{ CASE }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc" ] - {% endfor %} -{% endfor %} -###################################### -# copy climatological stddev files -###################################### -{% for tile in range(1, ntiles+1) %} -- ["{{ BERROR_DATA_DIR }}/stddev.fv_tracer.res.tile{{ tile }}.nc", "{{ DATA }}/clm_stddev/stddev.fv_tracer.res.tile{{ tile }}.nc"] -{% endfor %} -###################################### -# copy stddev rescaling factor files -###################################### -{% for tile in range(1, ntiles+1) %} -- ["{{ BERROR_DATA_DIR }}/rescale.fv_tracer.res.tile{{ tile }}.nc", "{{ DATA }}/rescale/rescale.fv_tracer.res.tile{{ tile }}.nc"] -{% endfor %} diff --git a/parm/gdas/aero_stage_variational.yaml.j2 b/parm/gdas/aero_stage_variational.yaml.j2 deleted file mode 100644 index 839d7fd74a9..00000000000 --- a/parm/gdas/aero_stage_variational.yaml.j2 +++ /dev/null @@ -1,50 +0,0 @@ -###################################### -# set some variables -###################################### -{% set bkg_times = [] %} -{% for fh in aero_bkg_fhr %} - {% set offset = fh | string + "H" %} - {% set fcst_timedelta = offset | to_timedelta %} - {% set fcst_time = AERO_WINDOW_BEGIN | add_to_datetime(fcst_timedelta) %} - {% do bkg_times.append(fcst_time) %} -{% endfor %} -{% if DOIAU == True %} - {% set anl_time = AERO_WINDOW_BEGIN %} -{% else %} - {% set anl_time = current_cycle %} -{% endif %} -{% set fvfiles = ['fv_core.res.', 'fv_tracer.res.', 'sfc_data.', 'fv_srf_wnd.res.'] %} -###################################### -mkdir: -- "{{ DATA }}/anl" -- "{{ DATA }}/diags" -- "{{ DATA }}/berror" -- "{{ DATA }}/bkg" -copy: -###################################### -## copy backgrounds -{% for bkgtime in bkg_times %} -- ["{{ COMIN_ATMOS_RESTART_PREV }}/{{ bkgtime | to_fv3time }}.coupler.res", "{{ DATA }}/bkg/{{ bkgtime | to_fv3time }}.coupler.res"] - {% for fvfile in fvfiles %} - {% for tile in range(1,ntiles+1) %} -- ["{{ COMIN_ATMOS_RESTART_PREV }}/{{ bkgtime | to_fv3time }}.{{ fvfile }}tile{{ tile }}.nc", "{{ DATA }}/bkg/{{ bkgtime | to_fv3time }}.{{ fvfile }}tile{{ tile }}.nc"] - {% endfor %} - {% endfor %} -{% endfor %} -###################################### -## copy backgrounds again for fv_tracer to create analysis files later -{% for tile in range(1,ntiles+1) %} -- ["{{ COMIN_ATMOS_RESTART_PREV }}/{{ anl_time | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc", "{{ DATA }}/anl/{{ anl_time | to_fv3time }}.fv_tracer.res.tile{{ tile }}.nc"] -{% endfor %} - -###################################### -## copy berror files from COMIN_CHEM_BMAT_PREV -## stddev files -{% for tile in range(1, ntiles+1) %} -- ["{{ COMIN_CHEM_BMAT_PREV }}/{{ current_cycle | to_fv3time }}.stddev.fv_tracer.res.tile{{ tile }}.nc", "{{ DATA }}/berror/{{ current_cycle | to_fv3time }}.stddev.fv_tracer.res.tile{{ tile }}.nc"] -{% endfor %} -### copy coupler file -- ["{{ COMIN_CHEM_BMAT_PREV }}/{{ current_cycle | to_fv3time }}.stddev.coupler.res", "{{ DATA }}/berror/{{ current_cycle | to_fv3time }}.stddev.coupler.res"] -### copy diffusion files -- ["{{ COMIN_CHEM_BMAT_PREV }}/{{ GPREFIX }}aero_diffusion_hz.nc", "{{ DATA }}/berror/diffusion_hz.nc"] -- ["{{ COMIN_CHEM_BMAT_PREV }}/{{ GPREFIX }}aero_diffusion_vt.nc", "{{ DATA }}/berror/diffusion_vt.nc"] diff --git a/parm/gdas/aeroanl_inc_vars.yaml b/parm/gdas/aeroanl_inc_vars.yaml deleted file mode 100644 index 298373d6e28..00000000000 --- a/parm/gdas/aeroanl_inc_vars.yaml +++ /dev/null @@ -1 +0,0 @@ -incvars: ['dust1', 'dust2', 'dust3', 'dust4', 'dust5', 'seas1', 'seas2', 'seas3', 'seas4', 'so4', 'oc1', 'oc2', 'bc1', 'bc2'] diff --git a/parm/gdas/aeroanl_jedi_config.yaml.j2 b/parm/gdas/aeroanl_jedi_config.yaml.j2 deleted file mode 100644 index 4171f94676c..00000000000 --- a/parm/gdas/aeroanl_jedi_config.yaml.j2 +++ /dev/null @@ -1,7 +0,0 @@ -aeroanlvar: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_AEROANL }}' - jedi_args: ['fv3jedi', 'variational'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_VAR }}' diff --git a/parm/gdas/analcalc_jedi_config.yaml.j2 b/parm/gdas/analcalc_jedi_config.yaml.j2 deleted file mode 100644 index 9912248f910..00000000000 --- a/parm/gdas/analcalc_jedi_config.yaml.j2 +++ /dev/null @@ -1,25 +0,0 @@ -atm_addincrement: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - jedi_args: ['fv3jedi', 'addincrement'] - mpi_cmd: '{{ APRUN_ANALCALC_FV3JEDI }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo: atm_addincrement -{% if DO_AERO_ANL %} -aero_addincrement: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - jedi_args: ['fv3jedi', 'addincrement'] - mpi_cmd: '{{ APRUN_ANALCALC_FV3JEDI }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/aero/jcb-base.yaml.j2' - jcb_algo: aero_addincrement -{% endif %} -{% if DO_JEDISNOWDA %} -snow_addincrement: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - jedi_args: ['fv3jedi', 'addincrement'] - mpi_cmd: '{{ APRUN_ANALCALC_FV3JEDI }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' - jcb_algo: snow_addincrement -{% endif %} diff --git a/parm/gdas/anlstat_jedi_config.yaml.j2 b/parm/gdas/anlstat_jedi_config.yaml.j2 deleted file mode 100644 index a2bd93291f9..00000000000 --- a/parm/gdas/anlstat_jedi_config.yaml.j2 +++ /dev/null @@ -1,21 +0,0 @@ -aero: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_ioda_diag-stats.x' - mpi_cmd: '{{ APRUN_ANLSTAT }}' - # jedi_args: None - jcb_base_yaml: '{{ PARMgfs }}/gdas/stat/aero/jcb-base.yaml.j2' - jcb_algo: 'anlstat' -atmos: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_ioda_diag-stats.x' - mpi_cmd: '{{ APRUN_ANLSTAT }}' - # jedi_args: None - jcb_base_yaml: '{{ PARMgfs }}/gdas/stat/atmos/jcb-base.yaml.j2' - jcb_algo: 'anlstat' -snow: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_ioda_diag-stats.x' - mpi_cmd: '{{ APRUN_ANLSTAT }}' - # jedi_args: None - jcb_base_yaml: '{{ PARMgfs }}/gdas/stat/snow/jcb-base.yaml.j2' - jcb_algo: 'anlstat' diff --git a/parm/gdas/atm_crtm_coeff.yaml.j2 b/parm/gdas/atm_crtm_coeff.yaml.j2 deleted file mode 100644 index b943f5cbb34..00000000000 --- a/parm/gdas/atm_crtm_coeff.yaml.j2 +++ /dev/null @@ -1,178 +0,0 @@ -mkdir: -- {{ DATA }}/crtm -copy: -# Emissivity files -- [{{ CRTM_FIX }}/NPOESS.VISice.EmisCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/NPOESS.VISland.EmisCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/NPOESS.VISsnow.EmisCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/NPOESS.VISwater.EmisCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/NPOESS.IRice.EmisCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/NPOESS.IRland.EmisCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/NPOESS.IRsnow.EmisCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/Nalli.IRwater.EmisCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/FASTEM6.MWwater.EmisCoeff.bin, {{ DATA }}/crtm] -# Aerosol and Cloud files -- [{{ CRTM_FIX }}/AerosolCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/CloudCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/CloudCoeff.GFDLFV3.-109z-1.bin, {{ DATA }}/crtm] -# Satellite_Sensor specific Tau and Spc coefficient files -- [{{ CRTM_FIX }}/abi_g16.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/abi_g16.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/abi_g17.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/abi_g17.TauCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/abi_g18.SpcCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/abi_g18.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ahi_himawari8.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ahi_himawari8.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ahi_himawari9.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ahi_himawari9.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/airs_aqua.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/airs_aqua.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsr2_gcom-w1.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsr2_gcom-w1.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsre_aqua.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsre_aqua.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_aqua.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_aqua.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_metop-a.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_metop-b.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_metop-c.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_metop-c.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_n15.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_n15.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_n18.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_n18.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_n19.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsua_n19.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsub_n17.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/amsub_n17.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/atms_n20.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/atms_n20.TauCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/atms_n21.SpcCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/atms_n21.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/atms_npp.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/atms_npp.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_metop-a.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_metop-b.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_metop-c.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_metop-c.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_n18.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_n18.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_n19.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/avhrr3_n19.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/cris-fsr_n20.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/cris-fsr_n20.TauCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/cris-fsr_n21.SpcCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/cris-fsr_n21.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/cris-fsr_npp.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/cris-fsr_npp.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/gmi_gpm.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/gmi_gpm.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/hirs3_n17.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/hirs3_n17.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/hirs4_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/hirs4_metop-a.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/hirs4_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/hirs4_metop-b.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/hirs4_n19.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/hirs4_n19.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/iasi_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/iasi_metop-a.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/iasi_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/iasi_metop-b.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/iasi_metop-c.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/iasi_metop-c.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g11.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g11.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g12.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g12.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g13.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g13.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g14.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g14.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g15.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/imgr_g15.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_metop-a.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_metop-a.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_metop-b.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_metop-b.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_metop-c.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_metop-c.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_n18.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_n18.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_n19.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/mhs_n19.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/saphir_meghat.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/saphir_meghat.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/seviri_m08.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/seviri_m08.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/seviri_m09.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/seviri_m09.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/seviri_m10.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/seviri_m10.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/seviri_m11.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/seviri_m11.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g11.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g11.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g12.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g12.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g13.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g13.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g14.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g14.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g15.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD1_g15.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g11.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g11.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g12.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g12.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g13.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g13.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g14.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g14.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g15.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD2_g15.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g11.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g11.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g12.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g12.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g13.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g13.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g14.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g14.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g15.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD3_g15.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g11.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g11.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g12.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g12.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g13.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g13.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g14.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g14.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g15.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/sndrD4_g15.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmi_f15.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmi_f15.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f16.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f16.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f17.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f17.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f18.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f18.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f19.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f19.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f20.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/ssmis_f20.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/viirs-m_j1.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/viirs-m_j1.TauCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/viirs-m_j2.SpcCoeff.bin, {{ DATA }}/crtm] -##- [{{ CRTM_FIX }}/viirs-m_j2.TauCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/viirs-m_npp.SpcCoeff.bin, {{ DATA }}/crtm] -- [{{ CRTM_FIX }}/viirs-m_npp.TauCoeff.bin, {{ DATA }}/crtm] -# Special Spc files -##- [{{ CRTM_FIX }}/amsua_metop-a_v2.SpcCoeff.bin, {{ DATA }}/crtm] diff --git a/parm/gdas/atm_ecen_jedi_config.yaml.j2 b/parm/gdas/atm_ecen_jedi_config.yaml.j2 deleted file mode 100644 index 5ecf3450101..00000000000 --- a/parm/gdas/atm_ecen_jedi_config.yaml.j2 +++ /dev/null @@ -1,12 +0,0 @@ -correction_increment: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_fv3jedi_correction_increment.x' - mpi_cmd: '{{ APRUN_CORRECTION_INCREMENT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo: fv3jedi_correction_increment -ensemble_recenter: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_fv3jedi_ensemble_add_increment.x' - mpi_cmd: '{{ APRUN_ENSEMBLE_RECENTER }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo: fv3jedi_ensemble_recenter diff --git a/parm/gdas/atm_jedi_fix.yaml.j2 b/parm/gdas/atm_jedi_fix.yaml.j2 deleted file mode 100644 index 6a5ca865b25..00000000000 --- a/parm/gdas/atm_jedi_fix.yaml.j2 +++ /dev/null @@ -1,6 +0,0 @@ -mkdir: -- '{{ 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'] diff --git a/parm/gdas/atmanl_inc_vars.yaml b/parm/gdas/atmanl_inc_vars.yaml deleted file mode 100644 index cb6718ce9f4..00000000000 --- a/parm/gdas/atmanl_inc_vars.yaml +++ /dev/null @@ -1 +0,0 @@ -incvars: ['ua', 'va', 't', 'sphum', 'liq_wat', 'ice_wat', 'o3mr'] diff --git a/parm/gdas/atmanl_jedi_config.yaml.j2 b/parm/gdas/atmanl_jedi_config.yaml.j2 deleted file mode 100644 index 3933437c80b..00000000000 --- a/parm/gdas/atmanl_jedi_config.yaml.j2 +++ /dev/null @@ -1,13 +0,0 @@ -atmanlvar: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_ATMANLVAR }}' - jedi_args: ['fv3jedi', 'variational'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_VAR }}' -atmanlfv3inc: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_fv3jedi_fv3inc.x' - mpi_cmd: '{{ APRUN_ATMANLFV3INC }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_FV3INC }}' diff --git a/parm/gdas/atmensanl_jedi_config.yaml.j2 b/parm/gdas/atmensanl_jedi_config.yaml.j2 deleted file mode 100644 index 5c0045cb037..00000000000 --- a/parm/gdas/atmensanl_jedi_config.yaml.j2 +++ /dev/null @@ -1,27 +0,0 @@ -atmensanlobs: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_ATMENSANLOBS }}' - jedi_args: ['fv3jedi', 'localensembleda'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_OBS }}' -atmensanlsol: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_ATMENSANLSOL }}' - jedi_args: ['fv3jedi', 'localensembleda'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_SOL }}' -atmensanlfv3inc: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_fv3jedi_fv3inc.x' - mpi_cmd: '{{ APRUN_ATMENSANLFV3INC }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_FV3INC }}' -atmensanlletkf: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_ATMENSANLLETKF }}' - jedi_args: ['fv3jedi', 'localensembleda'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/atm/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_LETKF }}' diff --git a/parm/gdas/esnowanl_jedi_config.yaml.j2 b/parm/gdas/esnowanl_jedi_config.yaml.j2 deleted file mode 100644 index ee0909f6db4..00000000000 --- a/parm/gdas/esnowanl_jedi_config.yaml.j2 +++ /dev/null @@ -1,14 +0,0 @@ -esnowanlensmean: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_ESNOWANL }}' - jedi_args: ['fv3jedi', 'ensmean'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' - jcb_algo: 'fv3jedi_snow_ensmean' -snowanlvar: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_ESNOWANL }}' - jedi_args: ['fv3jedi', 'variational'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_VAR }}' \ No newline at end of file diff --git a/parm/gdas/snow_finalize_ens_update.yaml.j2 b/parm/gdas/snow_finalize_ens_update.yaml.j2 deleted file mode 100644 index a2a5763ab80..00000000000 --- a/parm/gdas/snow_finalize_ens_update.yaml.j2 +++ /dev/null @@ -1,43 +0,0 @@ -copy: -###################################### -# copy analyses to directories -###################################### -{% for mem in range(1, NMEM_ENS + 1) %} - # define variables - # Declare a dict of search and replace terms to run on each template - {% set tmpl_dict = {'${ROTDIR}':ROTDIR, - '${RUN}':RUN, - '${YMD}':current_cycle | to_YMD , - '${HH}':current_cycle | strftime("%H"), - '${MEMDIR}':"mem" + '%03d' % mem} %} - - {% for tile in range(1, ntiles+1) %} -- ["{{ DATA }}/anl/mem{{ '%03d' % mem }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ COM_SNOW_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] - {% endfor %} - {% if DOIAU == True %} - # if using IAU, also need analyses copied at the beginning of the window - {% for tile in range(1, ntiles+1) %} -- ["{{ DATA }}/anl/mem{{ '%03d' % mem }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ COM_SNOW_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] - {% endfor %} - {% endif %} -{% endfor %} -###################################### -# copy ensemble mean increment to COM -###################################### -# define variables -# Declare a dict of search and replace terms to run on each template -{% set tmpl_dict = {'${ROTDIR}':ROTDIR, - '${RUN}':RUN, - '${YMD}':current_cycle | to_YMD , - '${HH}':current_cycle | strftime("%H"), - '${MEMDIR}':"ensstat"} %} - -{% for tile in range(1, ntiles+1) %} -- ["{{ DATA }}/inc/ensmean/snowinc.{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ COM_SNOW_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/snowinc.{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] -{% endfor %} -{% if DOIAU == True %} - # if using IAU, also need increment copied at the beginning of the window - {% for tile in range(1, ntiles+1) %} -- ["{{ DATA }}/inc/ensmean/snowinc.{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ COM_SNOW_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/snowinc.{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] - {% endfor %} -{% endif %} diff --git a/parm/gdas/snow_jedi_fix.yaml.j2 b/parm/gdas/snow_jedi_fix.yaml.j2 deleted file mode 100644 index 6a5ca865b25..00000000000 --- a/parm/gdas/snow_jedi_fix.yaml.j2 +++ /dev/null @@ -1,6 +0,0 @@ -mkdir: -- '{{ 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'] diff --git a/parm/gdas/snow_stage_ens_update.yaml.j2 b/parm/gdas/snow_stage_ens_update.yaml.j2 deleted file mode 100644 index cae119ee744..00000000000 --- a/parm/gdas/snow_stage_ens_update.yaml.j2 +++ /dev/null @@ -1,52 +0,0 @@ -###################################### -# set some variables -###################################### -{% if DOIAU == True %} - {% set bkg_time = SNOW_WINDOW_BEGIN | to_fv3time %} -{% else %} - {% set bkg_time = current_cycle | to_fv3time %} -{% endif %} -###################################### -# create working directories -###################################### -mkdir: -- "{{ DATA }}/obs" -- "{{ DATA }}/bkg/ensmean" -- "{{ DATA }}/anl/ensmean" -{% for mem in range(1, NMEM_ENS + 1) %} -- "{{ DATA }}/bkg/mem{{ '%03d' % mem }}" -- "{{ DATA }}/anl/mem{{ '%03d' % mem }}" -{% endfor %} -copy: -###################################### -# copy ensemble background files -###################################### -{% for mem in range(1, NMEM_ENS + 1) %} - {% set gmem = mem+mem_offset %} - {% if gmem > NMEM_ENS_MAX %} - {% set gmem = gmem-NMEM_ENS_MAX %} - {% endif %} - # define variables - # Declare a dict of search and replace terms to run on each template - {% set tmpl_dict = {'${ROTDIR}':ROTDIR, - '${RUN}':"enkfgdas", - '${YMD}':previous_cycle | to_YMD, - '${HH}':previous_cycle | strftime("%H"), - '${MEMDIR}':"mem" + '%03d' % gmem} %} - - # copy coupler file -- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ current_cycle | to_fv3time }}.coupler.res", "{{ DATA }}/bkg/mem{{ '%03d' % mem }}/{{ current_cycle | to_fv3time }}.coupler.res"] - # we need to copy them to two places, one serves as the basis for the analysis - {% for tile in range(1, ntiles+1) %} -- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ DATA }}/bkg/mem{{ '%03d' % mem }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] -- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ DATA }}/anl/mem{{ '%03d' % mem }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] - {% endfor %} - {% if DOIAU == True %} - # if using IAU, also need backgrounds copied at the beginning of the window - # we need to copy them to two places, one serves as the basis for the analysis - {% for tile in range(1, ntiles+1) %} -- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ DATA }}/bkg/mem{{ '%03d' % mem }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] -- ["{{ COM_ATMOS_RESTART_TMPL | replace_tmpl(tmpl_dict) }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc", "{{ DATA }}/anl/mem{{ '%03d' % mem }}/{{ SNOW_WINDOW_BEGIN | to_fv3time }}.sfc_data.tile{{ tile }}.nc"] - {% endfor %} - {% endif %} -{% endfor %} diff --git a/parm/gdas/snow_stage_orog.yaml.j2 b/parm/gdas/snow_stage_orog.yaml.j2 deleted file mode 100644 index f915b36d1fb..00000000000 --- a/parm/gdas/snow_stage_orog.yaml.j2 +++ /dev/null @@ -1,8 +0,0 @@ -mkdir: -- "{{ DATA }}/orog/ens" -copy: -- ["{{ FIXorog }}/{{ CASE_ENS }}/{{ CASE_ENS }}_mosaic.nc", "{{ DATA }}/orog/ens/{{ CASE_ENS }}_mosaic.nc"] -{% for tile in range(1, ntiles+1) %} -- ["{{ FIXorog }}/{{ CASE_ENS }}/{{ CASE_ENS }}_grid.tile{{ tile }}.nc", "{{ DATA }}/orog/ens/{{ CASE_ENS }}_grid.tile{{ tile }}.nc"] -- ["{{ FIXorog }}/{{ CASE_ENS }}/{{ CASE_ENS }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc", "{{ DATA }}/orog/ens/{{ CASE_ENS }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc" ] -{% endfor %} diff --git a/parm/gdas/snowanl_jedi_config.yaml.j2 b/parm/gdas/snowanl_jedi_config.yaml.j2 deleted file mode 100644 index c5997875924..00000000000 --- a/parm/gdas/snowanl_jedi_config.yaml.j2 +++ /dev/null @@ -1,7 +0,0 @@ -snowanlvar: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_SNOWANL }}' - jedi_args: ['fv3jedi', 'variational'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/snow/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_VAR }}' \ No newline at end of file diff --git a/parm/gdas/soca_analysis_jedi_config.yaml.j2 b/parm/gdas/soca_analysis_jedi_config.yaml.j2 deleted file mode 100644 index 871b6c90177..00000000000 --- a/parm/gdas/soca_analysis_jedi_config.yaml.j2 +++ /dev/null @@ -1,19 +0,0 @@ -var: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_MARINEANLVAR }}' - jedi_args: ['soca', 'variational'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo_yaml: '{{ JCB_ALGO_YAML_VAR }}' -soca_incpostproc: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_incr_handler.x' - mpi_cmd: '{{ APRUN_MARINEANLCHKPT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_incpostproc -soca_diag_stats: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_obsstats.x' - mpi_cmd: '{{ APRUN_MARINEANLOBSSTATS }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_diag_stats diff --git a/parm/gdas/soca_bmat_jedi_config.yaml.j2 b/parm/gdas/soca_bmat_jedi_config.yaml.j2 deleted file mode 100644 index 2e6ac68497c..00000000000 --- a/parm/gdas/soca_bmat_jedi_config.yaml.j2 +++ /dev/null @@ -1,49 +0,0 @@ -gridgen: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_gridgen.x' - mpi_cmd: '{{ APRUN_MARINEBMAT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_gridgen -soca_diagb: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_diagb.x' - mpi_cmd: '{{ APRUN_MARINEBMAT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_diagb -soca_chgres: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas.x' - mpi_cmd: '{{ APRUN_MARINEBMAT }}' - jedi_args: ['soca', 'convertstate'] - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_chgres -soca_parameters_diffusion_vt: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_error_covariance_toolbox.x' - mpi_cmd: '{{ APRUN_MARINEBMAT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_parameters_diffusion_vt -soca_setcorscales: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_setcorscales.x' - mpi_cmd: '{{ APRUN_MARINEBMAT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_setcorscales -soca_parameters_diffusion_hz: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_error_covariance_toolbox.x' - mpi_cmd: '{{ APRUN_MARINEBMAT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_parameters_diffusion_hz -soca_ensb: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_ens_handler.x' - mpi_cmd: '{{ APRUN_MARINEBMAT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_ensb -soca_ensweights: - rundir: '{{ DATA }}' - exe_src: '{{ EXECgfs }}/gdas_soca_hybridweights.x' - mpi_cmd: '{{ APRUN_MARINEBMAT }}' - jcb_base_yaml: '{{ PARMgfs }}/gdas/soca/jcb-base.yaml.j2' - jcb_algo: soca_ensweights diff --git a/parm/gdas/staging/analcalc.yaml.j2 b/parm/gdas/staging/analcalc.yaml.j2 deleted file mode 100644 index 2a9a871c51a..00000000000 --- a/parm/gdas/staging/analcalc.yaml.j2 +++ /dev/null @@ -1,14 +0,0 @@ -copy: -- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}atmf006.nc", "{{ DATA }}"] -- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}sfcf006.nc", "{{ DATA }}"] -- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_atmf006.nc", "{{ DATA }}"] -- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_sfcf006.nc", "{{ DATA }}"] -{% for itile in range(6) %} -- ["{{ COMIN_ATMOS_ANALYSIS }}/{{ APREFIX }}cubed_sphere_grid_atminc.tile{{ itile+1 }}.nc", "{{ DATA }}"] -{% if DO_AERO_ANL %} -- ["{{ COMIN_AERO_ANALYSIS }}/{{ APREFIX }}aeroinc.{{ current_cycle | to_fv3time }}.fv_tracer.res.tile{{ itile+1 }}.nc", "{{ DATA }}"] -{% endif %} -{% if DO_JEDISNOWDA %} -- ["{{ COMIN_SNOW_ANALYSIS }}/{{ APREFIX }}snowinc.{{ current_cycle | to_fv3time }}.sfc_data.tile{{ itile+1 }}.nc", "{{ DATA }}"] -{% endif %} -{% endfor %} diff --git a/parm/gdas/staging/atm_berror_gsibec.yaml.j2 b/parm/gdas/staging/atm_berror_gsibec.yaml.j2 deleted file mode 100644 index e6c5e416094..00000000000 --- a/parm/gdas/staging/atm_berror_gsibec.yaml.j2 +++ /dev/null @@ -1,8 +0,0 @@ -{% set fname_list = ['gfs_gsi_global.nml', 'gsi-coeffs-gfs-global.nc4'] %} - -mkdir: -- '{{ DATA }}/berror' -copy: -{% for fname in fname_list %} -- ['{{ HOMEgfs }}/fix/gdas/gsibec/{{ CASE_ANL }}/{{ fname }}', '{{ DATA }}/berror'] -{% endfor %} diff --git a/parm/gdas/staging/atm_ecen.yaml.j2 b/parm/gdas/staging/atm_ecen.yaml.j2 deleted file mode 100644 index 851cab444c3..00000000000 --- a/parm/gdas/staging/atm_ecen.yaml.j2 +++ /dev/null @@ -1,36 +0,0 @@ -mkdir: -{% for imem in range(1,NMEM_ENS+1) %} -{% set memchar = 'mem%03d' | format(imem) %} -- '{{ DATA }}/{{ memchar }}' -{% endfor %} -copy: -{% for fh in IAUFHRS %} -- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_atmf{{ '%03d' % fh }}.nc", "{{ DATA }}"] -- ["{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_sfcf{{ '%03d' % fh }}.nc", "{{ DATA }}"] -{% if fh == 6 %} -- ["{{ COMIN_ATMOS_ANALYSIS_ENSSTAT }}/{{ APREFIX_ENS }}cubed_sphere_grid_atmanl.ensmean.nc", "{{ DATA }}/{{ APREFIX_ENS }}cubed_sphere_grid_atma006.ensmean.nc"] -{% for itile in range(6) %} -- ["{{ COMIN_ATMOS_ANALYSIS }}/{{ APREFIX }}cubed_sphere_grid_atminc.tile{{ itile+1 }}.nc", "{{ DATA }}/{{ APREFIX }}cubed_sphere_grid_atmi006.tile{{ itile+1 }}.nc"] -{% endfor %} -{% else %} -- ["{{ COMIN_ATMOS_ANALYSIS_ENSSTAT }}/{{ APREFIX_ENS }}cubed_sphere_grid_atma{{ '%03d' % fh }}.ensmean.nc", "{{ DATA }}"] -{% for itile in range(6) %} -- ["{{ COMIN_ATMOS_ANALYSIS }}/{{ APREFIX }}cubed_sphere_grid_atmi{{ '%03d' % fh }}.tile{{ itile+1 }}.nc", "{{ DATA }}"] -{% endfor %} -{% endif %} -{% endfor %} -{% for imem in range(1,NMEM_ENS+1) %} - {% set memchar = 'mem%03d' | format(imem) %} - {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, - '${RUN}': 'enkfgdas', - '${YMD}': current_cycle | to_YMD, - '${HH}': current_cycle | strftime('%H'), - '${MEMDIR}': memchar }) %} -{% for fh in IAUFHRS %} -{% if fh == 6 %} -- ['{{ COM_ATMOS_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/{{ APREFIX_ENS }}cubed_sphere_grid_atminc.nc', '{{ DATA }}/{{ memchar }}/{{ APREFIX_ENS }}cubed_sphere_grid_atmi006.nc'] -{% else %} -- ['{{ COM_ATMOS_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}/{{ APREFIX_ENS }}cubed_sphere_grid_atmi{{ '%03d' % fh }}.nc', '{{ DATA }}/{{ memchar }}/'] -{% endif %} -{% endfor %} -{% endfor %} diff --git a/parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 b/parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 deleted file mode 100644 index 6a685ac1cf9..00000000000 --- a/parm/gdas/staging/atm_lgetkf_bkg.yaml.j2 +++ /dev/null @@ -1,23 +0,0 @@ -mkdir: -{% for imem in range(1,NMEM_ENS+1) %} - {% set memchar = 'mem%03d' | format(imem) %} - {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, - '${RUN}': RUN, - '${YMD}': current_cycle | to_YMD, - '${HH}': current_cycle | strftime('%H'), - '${MEMDIR}': memchar }) %} -- '{{ DATA }}/bkg/{{ memchar }}' -- '{{ DATA }}/anl/{{ memchar }}' -- '{{ COM_ATMOS_ANALYSIS_TMPL | replace_tmpl(tmpl_dict) }}' -{% endfor %} -copy: -{% for imem in range(1,NMEM_ENS+1) %} - {% set memchar = 'mem%03d' | format(imem) %} - {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, - '${RUN}': 'enkfgdas', - '${YMD}': previous_cycle | to_YMD, - '${HH}': previous_cycle | strftime('%H'), - '${MEMDIR}': memchar }) %} -- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/{{ GPREFIX_ENS }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/bkg/{{ memchar }}/'] -- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/{{ GPREFIX_ENS }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/bkg/{{ memchar }}/'] -{% endfor %} diff --git a/parm/gdas/staging/atm_var_bkg.yaml.j2 b/parm/gdas/staging/atm_var_bkg.yaml.j2 deleted file mode 100644 index b4b6bc883e1..00000000000 --- a/parm/gdas/staging/atm_var_bkg.yaml.j2 +++ /dev/null @@ -1,5 +0,0 @@ -mkdir: -- '{{ DATA }}/bkg' -copy: -- ['{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/bkg/'] -- ['{{ COMIN_ATMOS_HISTORY_PREV }}/{{ GPREFIX }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/bkg/'] diff --git a/parm/gdas/staging/atm_var_fv3ens.yaml.j2 b/parm/gdas/staging/atm_var_fv3ens.yaml.j2 deleted file mode 100644 index 804bb252e31..00000000000 --- a/parm/gdas/staging/atm_var_fv3ens.yaml.j2 +++ /dev/null @@ -1,15 +0,0 @@ -mkdir: -{% for imem in range(1,NMEM_ENS+1) %} -- '{{ DATA }}/ens/{{ 'mem%03d' | format(imem) }}' -{% endfor %} -copy: -{% for imem in range(1,NMEM_ENS+1) %} - {% set memchar = 'mem%03d' | format(imem) %} - {% set tmpl_dict = ({ '${ROTDIR}': ROTDIR, - '${RUN}': 'enkfgdas', - '${YMD}': previous_cycle | to_YMD, - '${HH}': previous_cycle | strftime('%H'), - '${MEMDIR}': memchar }) %} -- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/{{ GPREFIX_ENS }}cubed_sphere_grid_atmf006.nc', '{{ DATA }}/ens/{{ memchar }}/'] -- ['{{ COM_ATMOS_HISTORY_TMPL | replace_tmpl(tmpl_dict) }}/{{ GPREFIX_ENS }}cubed_sphere_grid_sfcf006.nc', '{{ DATA }}/ens/{{ memchar }}/'] -{% endfor %} diff --git a/parm/gdas/staging/snow_berror.yaml.j2 b/parm/gdas/staging/snow_berror.yaml.j2 deleted file mode 100644 index e230217300a..00000000000 --- a/parm/gdas/staging/snow_berror.yaml.j2 +++ /dev/null @@ -1,4 +0,0 @@ -mkdir: -- '{{ DATA }}/berror' -copy: -- ['{{ HOMEgfs }}/fix/gdas/snow/snow_bump_nicas_250km_shadowlevels_nicas.nc', '{{ DATA }}/berror'] diff --git a/parm/gdas/staging/snow_var_bkg.yaml.j2 b/parm/gdas/staging/snow_var_bkg.yaml.j2 deleted file mode 100644 index 164fb3945e7..00000000000 --- a/parm/gdas/staging/snow_var_bkg.yaml.j2 +++ /dev/null @@ -1,8 +0,0 @@ -mkdir: -- '{{ DATA }}/bkg' -copy: -- ['{{ COMIN_ATMOS_RESTART_PREV }}/{{ current_cycle | to_fv3time }}.coupler.res', '{{ DATA }}/bkg/'] -{% for tile in range(1, ntiles+1) %} -- ['{{ COMIN_ATMOS_RESTART_PREV }}/{{ current_cycle | to_fv3time }}.sfc_data.tile{{ tile }}.nc', '{{ DATA }}/bkg/'] -- ["{{ FIXorog }}/{{ CASE }}/{{ CASE }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc", "{{ DATA }}/bkg/{{ CASE }}.mx{{ OCNRES }}_oro_data.tile{{ tile }}.nc" ] -{% endfor %} \ No newline at end of file diff --git a/parm/gdas/stat_base_config.yaml.j2 b/parm/gdas/stat_base_config.yaml.j2 deleted file mode 100644 index de817f5f6ae..00000000000 --- a/parm/gdas/stat_base_config.yaml.j2 +++ /dev/null @@ -1,35 +0,0 @@ -aero: - stat_file_path: '{{ COMIN_AERO_ANALYSIS }}' - stat_file_name: 'aerostat.tgz' - obs spaces: - - name: viirs_npp - input file: "diag_viirs_npp_aod_{{ current_cycle | to_YMDH }}.nc" - output file: "viirs_npp_{{ current_cycle | to_YMDH }}_output_aod.nc" - - name: viirs_n20 - input file: "diag_viirs_n20_aod_{{ current_cycle | to_YMDH }}.nc" - output file: "viirs_n20_{{ current_cycle | to_YMDH }}_output_aod.nc" - -atmos: - stat_file_path: '{{ COMIN_ATMOS_ANALYSIS }}' - stat_file_name: 'atmstat' - obs spaces: - - name: conventional_ps - input file: "diag_conventional_ps_{{ current_cycle | to_YMDH }}.nc" - output file: "conventional_ps_{{ current_cycle | to_YMDH }}_output_atmos.nc" - -snow: - stat_file_path: '{{ COMIN_SNOW_ANALYSIS }}' - stat_file_name: 'snowstat.tgz' - obs spaces: - - name: ims_snow - input file: "diag_ims_snow_{{ current_cycle | to_YMDH }}.nc" - output file: "ims_snow_{{ current_cycle | to_YMDH }}_output_snow.nc" - - name: sfcsno - input file: "diag_sfcsno_{{ current_cycle | to_YMDH }}.nc" - output file: "sfcsno_{{ current_cycle | to_YMDH }}_output_snow.nc" - - name: snocvr - input file: "diag_snocvr_{{ current_cycle | to_YMDH }}.nc" - output file: "snocvr_{{ current_cycle | to_YMDH }}_output_snow.nc" - - name: madis_snow - input file: "diag_madis_snow_{{ current_cycle | to_YMDH }}.nc" - output file: "madis_snow_{{ current_cycle | to_YMDH }}_output_snow.nc" diff --git a/ush/python/pygfs/task/aero_analysis.py b/ush/python/pygfs/task/aero_analysis.py index c32aa3bae73..f19146f2dfc 100644 --- a/ush/python/pygfs/task/aero_analysis.py +++ b/ush/python/pygfs/task/aero_analysis.py @@ -132,7 +132,7 @@ def initialize(self) -> None: # stage files from COM and create working directories logger.info(f"Staging files prescribed from {self.task_config.AERO_DET_INITIALIZE_TMPL}") - aero_var_stage_dict = parse_j2yaml(self.task_config.AERO_DET_INITIALIZE_TMPL}"), self.task_config) + aero_var_stage_dict = parse_j2yaml(self.task_config.AERO_DET_INITIALIZE_TMPL, self.task_config) FileHandler(aero_var_stage_dict).sync() logger.debug(f"Staging from COM:\n{pformat(aero_var_stage_dict)}") diff --git a/ush/python/pygfs/task/aero_bmatrix.py b/ush/python/pygfs/task/aero_bmatrix.py index 6ed0057e530..ffad497d1df 100644 --- a/ush/python/pygfs/task/aero_bmatrix.py +++ b/ush/python/pygfs/task/aero_bmatrix.py @@ -92,7 +92,7 @@ def initialize(self: Task) -> None: # stage fix files logger.info(f"Staging JEDI fix files from {self.task_config.AERO_STAGE_JEDI_FIX_TMPL}") - jedi_fix_list = parse_j2yaml(self.task_config.AERO_STAGE_JEDI_FIX_TMPL}"), self.task_config) + jedi_fix_list = parse_j2yaml(self.task_config.AERO_STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_list).sync() # stage files from COM and create working directories diff --git a/ush/python/pygfs/task/atm_analysis.py b/ush/python/pygfs/task/atm_analysis.py index bdf63e59147..9ebdbeae0a8 100644 --- a/ush/python/pygfs/task/atm_analysis.py +++ b/ush/python/pygfs/task/atm_analysis.py @@ -119,13 +119,13 @@ def initialize(self) -> None: # stage CRTM fix files logger.info(f"Staging CRTM fix files from {self.task_config.ATM_STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_CRTM_COEFF_TMPL}"), self.task_config) + crtm_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_CRTM_COEFF_TMPL, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL}"), self.task_config) + jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") @@ -147,7 +147,7 @@ def initialize(self) -> None: # stage backgrounds logger.info(f"Staging background files from {self.task_config.ATM_DET_STAGE_BKG_TMPL}") - bkg_staging_dict = parse_j2yaml(self.task_config.ATM_DET_STAGE_BKG_TMPL}"), self.task_config) + bkg_staging_dict = parse_j2yaml(self.task_config.ATM_DET_STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") diff --git a/ush/python/pygfs/task/atmens_analysis.py b/ush/python/pygfs/task/atmens_analysis.py index f04e755d774..14f064e945e 100644 --- a/ush/python/pygfs/task/atmens_analysis.py +++ b/ush/python/pygfs/task/atmens_analysis.py @@ -112,14 +112,14 @@ def initialize(self) -> None: Jedi.extract_tar_from_filehandler_dict(bias_dict) # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.ATM_ENS_STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.ATM_ENS_STAGE_CRTM_COEFF_TMPL}"), self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.ATM_STAGE_CRTM_COEFF_TMPL}") + crtm_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_CRTM_COEFF_TMPL, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.ATM_ENS_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.ATM_ENS_STAGE_JEDI_FIX_TMPL}"), self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") diff --git a/ush/python/pygfs/task/ensemble_recenter.py b/ush/python/pygfs/task/ensemble_recenter.py index 420f950a947..7f5dcb6856b 100644 --- a/ush/python/pygfs/task/ensemble_recenter.py +++ b/ush/python/pygfs/task/ensemble_recenter.py @@ -98,7 +98,7 @@ def initialize(self) -> None: # Stage fix files logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL}"), self.task_config) + jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") diff --git a/ush/python/pygfs/task/snow_analysis.py b/ush/python/pygfs/task/snow_analysis.py index 4900cb9e339..e6984293e06 100644 --- a/ush/python/pygfs/task/snow_analysis.py +++ b/ush/python/pygfs/task/snow_analysis.py @@ -105,7 +105,7 @@ def initialize(self) -> None: # stage backgrounds logger.info(f"Staging background files from {self.task_config.SNOW_DET_STAGE_BKG_TMPL}") - bkg_staging_dict = parse_j2yaml(self.task_config.SNOW_DET_STAGE_BKG_TMPL}"), self.task_config) + bkg_staging_dict = parse_j2yaml(self.task_config.SNOW_DET_STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") diff --git a/ush/python/pygfs/task/snowens_analysis.py b/ush/python/pygfs/task/snowens_analysis.py index 109cc99e5db..5fdb29b284c 100644 --- a/ush/python/pygfs/task/snowens_analysis.py +++ b/ush/python/pygfs/task/snowens_analysis.py @@ -135,7 +135,7 @@ def initialize(self) -> None: # stage GTS bufr2ioda mapping YAML files logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.SNOW_STAGE_GTS_TMPL}") - gts_mapping_list = parse_j2yaml(self.task_config.SNOW_STAGE_GTS_TMPL"), self.task_config) + gts_mapping_list = parse_j2yaml(self.task_config.SNOW_STAGE_GTS_TMPL, self.task_config) FileHandler(gts_mapping_list).sync() # stage FV3-JEDI fix files From ce0084bede1af493d239521ccadc11f2ccee330c Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Wed, 20 Aug 2025 19:33:56 +0000 Subject: [PATCH 10/41] Bug fix --- dev/parm/config/gfs/config.atmanl.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/parm/config/gfs/config.atmanl.j2 b/dev/parm/config/gfs/config.atmanl.j2 index 6ebf4723175..1589f1e9fe5 100644 --- a/dev/parm/config/gfs/config.atmanl.j2 +++ b/dev/parm/config/gfs/config.atmanl.j2 @@ -28,7 +28,7 @@ export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_det_jedi_config.yaml.j2" export ATM_DET_STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_bkg.yaml.j2" export ATM_DET_STAGE_BERROR_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_berror_${STATICB_TYPE}.yaml.j2" -export ATM_DET_STAGE_FV3ENS_YAML="${PARMgfs}/gdas/atm/atm_det_stage_fv3ens.yaml.j2" +export ATM_DET_STAGE_FV3ENS_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_fv3ens.yaml.j2" export layout_x_atmanl="{{ LAYOUT_X_ATMANL }}" export layout_y_atmanl="{{ LAYOUT_Y_ATMANL }}" From 3cef5fd60a4be7df6fcf810f4114e5fd4013a7ca Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 21 Aug 2025 13:20:46 +0000 Subject: [PATCH 11/41] Slightly refactor the refactor --- dev/parm/config/gcafs/config.aeroanl.j2 | 14 ++++++-------- dev/parm/config/gcafs/config.aeroanlgenb | 9 ++++----- dev/parm/config/gcafs/config.anlstat | 4 ++-- dev/parm/config/gfs/config.aeroanl.j2 | 14 ++++++-------- dev/parm/config/gfs/config.aeroanlgenb | 8 ++++---- dev/parm/config/gfs/config.analcalc_fv3jedi | 6 +++--- dev/parm/config/gfs/config.anlstat | 4 ++-- dev/parm/config/gfs/config.atmanl.j2 | 17 ++++++++--------- dev/parm/config/gfs/config.atmensanl.j2 | 8 ++++---- dev/parm/config/gfs/config.ecen_fv3jedi | 6 +++--- dev/parm/config/gfs/config.esnowanl.j2 | 17 +++++++---------- dev/parm/config/gfs/config.marineanl.j2 | 8 ++++---- dev/parm/config/gfs/config.marineanlecen | 6 +++--- dev/parm/config/gfs/config.marineanlvar | 6 +++--- dev/parm/config/gfs/config.marinebmat | 4 ++-- dev/parm/config/gfs/config.marinebmatinit | 2 +- dev/parm/config/gfs/config.snowanl.j2 | 13 ++++--------- sorc/gdas.cd | 2 +- sorc/link_workflow.sh | 2 +- ush/python/pygfs/task/aero_analysis.py | 14 +++++++------- ush/python/pygfs/task/aero_bmatrix.py | 10 +++++----- ush/python/pygfs/task/analysis_stats.py | 6 +++--- ush/python/pygfs/task/atm_analysis.py | 18 +++++++++--------- ush/python/pygfs/task/atmens_analysis.py | 12 ++++++------ ush/python/pygfs/task/ensemble_recenter.py | 10 +++++----- ush/python/pygfs/task/fv3_analysis_calc.py | 8 ++++---- ush/python/pygfs/task/marine_analysis.py | 12 ++++++------ ush/python/pygfs/task/marine_bmat.py | 12 ++++++------ ush/python/pygfs/task/marine_letkf.py | 12 ++++++------ ush/python/pygfs/task/marine_recenter.py | 10 +++++----- ush/python/pygfs/task/snow_analysis.py | 16 ++++++++-------- ush/python/pygfs/task/snowens_analysis.py | 20 ++++++++++---------- 32 files changed, 148 insertions(+), 162 deletions(-) diff --git a/dev/parm/config/gcafs/config.aeroanl.j2 b/dev/parm/config/gcafs/config.aeroanl.j2 index 942f27ef9c8..bf1d6388903 100644 --- a/dev/parm/config/gcafs/config.aeroanl.j2 +++ b/dev/parm/config/gcafs/config.aeroanl.j2 @@ -20,22 +20,20 @@ esac export CASE_ANL export JCB_ALGO_YAML_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 export STATICB_TYPE='diffusion' -export BERROR_YAML="aero_background_error_static_${STATICB_TYPE}" +export BERROR_TMPL="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" -export AERO_STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" -export AERO_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" +export STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" +export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" -export AERO_DET_INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" -export AERO_DET_FINALIZE_TMPL="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" -export JEDIEXE="${EXECgfs}/gdas.x" - export aero_bkg_times="3,6,9" echo "END: config.aeroanl" diff --git a/dev/parm/config/gcafs/config.aeroanlgenb b/dev/parm/config/gcafs/config.aeroanlgenb index d1e6c439d8c..1c0fc514425 100644 --- a/dev/parm/config/gcafs/config.aeroanlgenb +++ b/dev/parm/config/gcafs/config.aeroanlgenb @@ -8,11 +8,10 @@ echo "BEGIN: config.aeroanlgenb" # Get task specific resources source "${EXPDIR}/config.resources" aeroanlgenb -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" -export JCB_BASE_YAML="${PARMgfs}/gdas/aero/jcb-base.yaml.j2" -export AERO_BMAT_INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" -export AERO_BMAT_FINALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" -export AERO_BMATRIX_RESCALE_TMPL="${PARMgfs}/gdas/jcb-gdas/aero/algorithm/aero_gen_bmatrix_rescale_default.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" +export RESCALE_TMPL="${PARMgfs}/gdas/jcb-gdas/aero/algorithm/aero_gen_bmatrix_rescale_default.yaml.j2" export aero_diffusion_iter=200 export aero_diffusion_horiz_len=300e3 export aero_diffusion_fixed_val=20.0 diff --git a/dev/parm/config/gcafs/config.anlstat b/dev/parm/config/gcafs/config.anlstat index f73a91aa296..8fce16505ce 100644 --- a/dev/parm/config/gcafs/config.anlstat +++ b/dev/parm/config/gcafs/config.anlstat @@ -8,7 +8,7 @@ echo "BEGIN: config.anlstat" # Get task specific resources source "${EXPDIR}/config.resources" anlstat -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/stat/anlstat_jedi_config.yaml.j2" -export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/stat/stat_base_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/stat/anlstat_jedi_config.yaml.j2" +export STAT_BASE_CONFIG_TMPL="${PARMgfs}/gdas/stat/stat_base_config.yaml.j2" echo "END: config.anlstat" diff --git a/dev/parm/config/gfs/config.aeroanl.j2 b/dev/parm/config/gfs/config.aeroanl.j2 index 31963c3e17e..ebf8322f9b2 100644 --- a/dev/parm/config/gfs/config.aeroanl.j2 +++ b/dev/parm/config/gfs/config.aeroanl.j2 @@ -20,22 +20,20 @@ esac export CASE_ANL export JCB_ALGO_YAML_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 export STATICB_TYPE='diffusion' -export BERROR_YAML="aero_background_error_static_${STATICB_TYPE}" +export BERROR_TMPL="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" -export AERO_STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" -export AERO_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" +export STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" +export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" -export AERO_DET_INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" -export AERO_DET_FINALIZE_TMPL="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" -export JEDIEXE="${EXECgfs}/gdas.x" - if [[ "${DOIAU}" == "YES" ]]; then export aero_bkg_times="3,6,9" else diff --git a/dev/parm/config/gfs/config.aeroanlgenb b/dev/parm/config/gfs/config.aeroanlgenb index 844ed0988bb..af28cd26d7a 100644 --- a/dev/parm/config/gfs/config.aeroanlgenb +++ b/dev/parm/config/gfs/config.aeroanlgenb @@ -8,10 +8,10 @@ echo "BEGIN: config.aeroanlgenb" # Get task specific resources source "${EXPDIR}/config.resources" aeroanlgenb -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" -export JCB_BASE_YAML="${PARMgfs}/gdas/aero/jcb-base.yaml.j2" -export AERO_BMAT_INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" -export AERO_BMAT_FINALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" +export JCB_BASE_TMPL="${PARMgfs}/gdas/aero/jcb-base.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" export aero_diffusion_iter=200 export aero_diffusion_horiz_len=300e3 export aero_diffusion_fixed_val=20.0 diff --git a/dev/parm/config/gfs/config.analcalc_fv3jedi b/dev/parm/config/gfs/config.analcalc_fv3jedi index 910b62972e3..d255bf1edc3 100644 --- a/dev/parm/config/gfs/config.analcalc_fv3jedi +++ b/dev/parm/config/gfs/config.analcalc_fv3jedi @@ -14,7 +14,7 @@ export layout_y_analcalc_fv3jedi=2 # Get task specific resources . "${EXPDIR}/config.resources" analcalc_fv3jedi -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/analcalc/analcalc_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/analcalc/analcalc_jedi_config.yaml.j2" if [[ ${DOHYBVAR} = "YES" ]]; then export CASE_ANL=${CASE_ENS} @@ -22,8 +22,8 @@ else export CASE_ANL=${CASE} fi -export ATM_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export ANALCALC_INITIALIZE_TMPL="${PARMgfs}/gdas/analcalc/analcalc_initialize.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/analcalc/analcalc_initialize.yaml.j2" echo "END: config.analcalc_fv3jedi" diff --git a/dev/parm/config/gfs/config.anlstat b/dev/parm/config/gfs/config.anlstat index bc5265bb3cf..5fc647702fc 100644 --- a/dev/parm/config/gfs/config.anlstat +++ b/dev/parm/config/gfs/config.anlstat @@ -8,7 +8,7 @@ echo "BEGIN: config.anlstat" # Get task specific resources source "${EXPDIR}/config.resources" anlstat -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/anlstat/anlstat_jedi_config.yaml.j2" -export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/anlstat/stat_base_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/anlstat/anlstat_jedi_config.yaml.j2" +export ANLSTAT_BASE_CONFIG_TMPL="${PARMgfs}/gdas/anlstat/anlstat_base_config.yaml.j2" echo "END: config.anlstat" diff --git a/dev/parm/config/gfs/config.atmanl.j2 b/dev/parm/config/gfs/config.atmanl.j2 index 1589f1e9fe5..9ed59268b50 100644 --- a/dev/parm/config/gfs/config.atmanl.j2 +++ b/dev/parm/config/gfs/config.atmanl.j2 @@ -15,20 +15,19 @@ export INTERP_METHOD='barycentric' if [[ ${DOHYBVAR} = "YES" ]]; then # shellcheck disable=SC2153 export CASE_ANL=${CASE_ENS} - export BERROR_YAML="atmosphere_background_error_hybrid_${STATICB_TYPE}_${LOCALIZATION_TYPE}" + export BERROR_TMPL="atmosphere_background_error_hybrid_${STATICB_TYPE}_${LOCALIZATION_TYPE}" else export CASE_ANL=${CASE} - export BERROR_YAML="atmosphere_background_error_static_${STATICB_TYPE}" + export BERROR_TMPL="atmosphere_background_error_static_${STATICB_TYPE}" fi -export ATM_STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" -export ATM_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" +export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_det_jedi_config.yaml.j2" - -export ATM_DET_STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_bkg.yaml.j2" -export ATM_DET_STAGE_BERROR_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_berror_${STATICB_TYPE}.yaml.j2" -export ATM_DET_STAGE_FV3ENS_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_fv3ens.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/atm/atm_det_jedi_config.yaml.j2" +export STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_bkg.yaml.j2" +export STAGE_BERROR_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_berror_${STATICB_TYPE}.yaml.j2" +export STAGE_FV3ENS_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_fv3ens.yaml.j2" export layout_x_atmanl="{{ LAYOUT_X_ATMANL }}" export layout_y_atmanl="{{ LAYOUT_Y_ATMANL }}" diff --git a/dev/parm/config/gfs/config.atmensanl.j2 b/dev/parm/config/gfs/config.atmensanl.j2 index b6aa9642ab6..af5730bb1f6 100644 --- a/dev/parm/config/gfs/config.atmensanl.j2 +++ b/dev/parm/config/gfs/config.atmensanl.j2 @@ -12,12 +12,12 @@ export JCB_ALGO_YAML_FV3INC="{{ JCB_ALGO_YAML_FV3INC }}" export INTERP_METHOD='barycentric' -export ATM_STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" -export ATM_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" +export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ens_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/atm/atm_ens_jedi_config.yaml.j2" -export ATM_ENS_STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_ens_stage_bkg.yaml.j2" +export STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_ens_stage_bkg.yaml.j2" export layout_x_atmensanl="{{ LAYOUT_X_ATMENSANL }}" export layout_y_atmensanl="{{ LAYOUT_Y_ATMENSANL }}" diff --git a/dev/parm/config/gfs/config.ecen_fv3jedi b/dev/parm/config/gfs/config.ecen_fv3jedi index 0275bf48321..8bba2a532e7 100644 --- a/dev/parm/config/gfs/config.ecen_fv3jedi +++ b/dev/parm/config/gfs/config.ecen_fv3jedi @@ -14,7 +14,7 @@ export layout_y_ecen_fv3jedi=1 # Get task specific resources . "${EXPDIR}/config.resources" ecen_fv3jedi -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ecen_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/atm/atm_ecen_jedi_config.yaml.j2" if [[ ${DOHYBVAR} = "YES" ]]; then export CASE_ANL=${CASE_ENS} @@ -22,8 +22,8 @@ else export CASE_ANL=${CASE} fi -export ATM_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export ATM_ECEN_INITIALIZE_TMPL="${PARMgfs}/gdas/atm/atm_ecen_initialize.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/atm/atm_ecen_initialize.yaml.j2" echo "END: config.ecen_fv3jedi" diff --git a/dev/parm/config/gfs/config.esnowanl.j2 b/dev/parm/config/gfs/config.esnowanl.j2 index 5acabf2494b..574f5cbced2 100644 --- a/dev/parm/config/gfs/config.esnowanl.j2 +++ b/dev/parm/config/gfs/config.esnowanl.j2 @@ -8,29 +8,26 @@ echo "BEGIN: config.esnowanl" # Get task specific resources source "${EXPDIR}/config.resources" esnowanl -export JCB_BASE_YAML="${PARMgfs}/gdas/snow/jcb-base.yaml.j2" -export JCB_ALGO_YAML_VAR="${PARMgfs}/gdas/snow/jcb-prototype_2dvar.yaml.j2" - # Process IMS snowcover into snow depth export IMS_OBS_LIST="${PARMgfs}/gdas/snow/prep/prep_ims.yaml.j2" export CALCFIMSEXE="${EXECgfs}/gdas_calcfIMS.x" export FIMS_NML_TMPL="${PARMgfs}/gdas/snow/prep/fims.nml.j2" export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" -export SNOW_STAGE_JEDI_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" -export SNOW_STAGE_OROG_TMPL="${PARMgfs}/gdas/snow/snow_stage_orog.yaml.j2" -export SNOW_STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" +export STAGE_JEDI_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" +export STAGE_OROG_TMPL="${PARMgfs}/gdas/snow/snow_stage_orog.yaml.j2" +export STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" -export SNOW_ENS_STAGE_UPDATE_TMPL="${PARMgfs}/gdas/snow/snow_ens_stage_update.yaml.j2" -export SNOW_ENS_FINALIZE_TMPL="${PARMgfs}/gdas/snow/snow_ens_finalize_update.yaml.j2" +export STAGE_UPDATE_TMPL="${PARMgfs}/gdas/snow/snow_ens_stage_update.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/snow/snow_ens_finalize_update.yaml.j2" -export SNOW_STAGE_GTS_TMPL="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" +export STAGE_GTS_TMPL="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" # Name of the executable that applies increment to bkg and its namelist template export APPLY_INCR_EXE="${EXECgfs}/gdas_apply_incr.x" export ENS_APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/ens_apply_incr_nml.j2"list -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snow/snow_ens_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/snow/snow_ens_jedi_config.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gfs/config.marineanl.j2 b/dev/parm/config/gfs/config.marineanl.j2 index 03239e938e2..6b1dac706f6 100644 --- a/dev/parm/config/gfs/config.marineanl.j2 +++ b/dev/parm/config/gfs/config.marineanl.j2 @@ -13,10 +13,10 @@ export SOCA_NINNER="{{ SOCA_NINNER }}" export DOMAIN_STACK_SIZE=116640000 #TODO: Make the stack size resolution dependent export MARINE_JCB_GDAS_OBS="${PARMgfs}/gdas/jcb-gdas/observations/marine" -export MARINE_STAGE_FIX_TMPL="${PARMgfs}/gdas/marine/marine_stage_fix_${OCNRES}.yaml.j2" -export MARINE_STAGE_UTILITIES_TMPL="${PARMgfs}/gdas/marine/marine_stage_utilities.yaml.j2" +export STAGE_FIX_TMPL="${PARMgfs}/gdas/marine/marine_stage_fix_${OCNRES}.yaml.j2" +export STAGE_UTILITIES_TMPL="${PARMgfs}/gdas/marine/marine_stage_utilities.yaml.j2" -export MARINE_DET_STAGE_BKG_TMPL="${PARMgfs}/gdas/marine/marine_det_stage_bkg.yaml.j2" -export MARINE_ENS_STAGE_BKG_TMPL="${PARMgfs}/gdas/marine/marine_ens_stage_bkg.yaml.j2" +export STAGE_DET_BKG_TMPL="${PARMgfs}/gdas/marine/marine_det_stage_bkg.yaml.j2" +export STAGE_ENS_BKG_TMPL="${PARMgfs}/gdas/marine/marine_ens_stage_bkg.yaml.j2" echo "END: config.marineanl" diff --git a/dev/parm/config/gfs/config.marineanlecen b/dev/parm/config/gfs/config.marineanlecen index f7e0048103f..4fbef3d32ca 100644 --- a/dev/parm/config/gfs/config.marineanlecen +++ b/dev/parm/config/gfs/config.marineanlecen @@ -8,8 +8,8 @@ echo "BEGIN: config.marineanlecen" # Get task specific resources source "${EXPDIR}/config.resources" marineanlecen -export JEDI_CONFIG_YAML_ECEN="${PARMgfs}/gdas/marine/marine_ecen_jedi_config.yaml.j2" -export MARINE_ECEN_INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ecen_initialize.yaml.j2" -export MARINE_ECEN_FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ecen_finalize.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_ecen_jedi_config.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ecen_initialize.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ecen_finalize.yaml.j2" echo "END: config.marineanlecen" diff --git a/dev/parm/config/gfs/config.marineanlvar b/dev/parm/config/gfs/config.marineanlvar index 8ad1c8f325a..5dba94da94e 100644 --- a/dev/parm/config/gfs/config.marineanlvar +++ b/dev/parm/config/gfs/config.marineanlvar @@ -8,10 +8,10 @@ echo "BEGIN: config.marineanlvar" # Get task specific resources . "${EXPDIR}/config.resources" marineanlvar -export JEDI_CONFIG_YAML_ANALYSIS="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" -export MARINE_DET_INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_initialize.yaml.j2" -export MARINE_DET_FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_finalize.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_initialize.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_finalize.yaml.j2" echo "END: config.marineanlvar" diff --git a/dev/parm/config/gfs/config.marinebmat b/dev/parm/config/gfs/config.marinebmat index 1d659c7ba1f..4a6ac93526e 100644 --- a/dev/parm/config/gfs/config.marinebmat +++ b/dev/parm/config/gfs/config.marinebmat @@ -8,7 +8,7 @@ echo "BEGIN: config.marinebmat" # Get task specific resources . "${EXPDIR}/config.resources" marinebmat -export JEDI_CONFIG_YAML_BMAT="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" -export MARINE_BMAT_FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_bmat_finalize.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_bmat_finalize.yaml.j2" echo "END: config.marinebmat" diff --git a/dev/parm/config/gfs/config.marinebmatinit b/dev/parm/config/gfs/config.marinebmatinit index 7e82ed33c53..6803fbe0f6c 100644 --- a/dev/parm/config/gfs/config.marinebmatinit +++ b/dev/parm/config/gfs/config.marinebmatinit @@ -8,6 +8,6 @@ echo "BEGIN: config.marinebmatinit" # Get task specific resources source "${EXPDIR}/config.resources" marinebmatinit -export JEDI_CONFIG_YAML_BMAT="${PARMgfs}/gdas/soca_bmat_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/soca_bmat_jedi_config.yaml.j2" echo "END: config.marinebmatinit" diff --git a/dev/parm/config/gfs/config.snowanl.j2 b/dev/parm/config/gfs/config.snowanl.j2 index 3ade4530523..ffd645006a8 100644 --- a/dev/parm/config/gfs/config.snowanl.j2 +++ b/dev/parm/config/gfs/config.snowanl.j2 @@ -10,9 +10,6 @@ source "${EXPDIR}/config.resources" snowanl export GTS_SNOW_STAGE_YAML="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" -export JCB_BASE_YAML="${PARMgfs}/gdas/snow/jcb-base.yaml.j2" -export JCB_ALGO_YAML_VAR="${PARMgfs}/gdas/snow/jcb-prototype_2dvar.yaml.j2" - # Process IMS snowcover into snow depth export IMS_OBS_LIST="${PARMgfs}/gdas/snow/prep/prep_ims.yaml.j2" export CALCFIMSEXE="${EXECgfs}/gdas_calcfIMS.x" @@ -23,13 +20,11 @@ export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" export APPLY_INCR_EXE="${EXECgfs}/gdas_apply_incr.x" export APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/apply_incr_nml.j2" -export SNOW_STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" -export SNOW_DET_STAGE_BKG_TMPL="${PARMgfs}/gdas/snow/snow_det_stage_bkg.yaml.j2" -export SNOW_STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" - -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snow/snow_det_jedi_config.yaml.j2" +export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" +export STAGE_BKG_TMPL="${PARMgfs}/gdas/snow/snow_det_stage_bkg.yaml.j2" +export STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" -export JEDIEXE=${EXECgfs}/gdas.x +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/snow/snow_det_jedi_config.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/sorc/gdas.cd b/sorc/gdas.cd index af114bbbd3b..cd311f4c9e0 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit af114bbbd3b193f81cd2263e7be43ded68f90d71 +Subproject commit cd311f4c9e09186826af94a78794c05febb9ebbb diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index f9d23c7a012..a0a35b1f01e 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -232,7 +232,7 @@ fi #------------------------------ if [[ -d "${HOMEgfs}/sorc/gdas.cd" ]]; then cd "${HOMEgfs}/parm/gdas" || exit 1 - declare -a gdasapp_comps=("aero" "atm" "io" "ioda" "snow" "soca" "jcb-gdas" "jcb-algorithms" "stat") + declare -a gdasapp_comps=("aero" "atm" "io" "ioda" "snow" "soca" "jcb-gdas" "jcb-algorithms" "anlstat" "analcalc") for comp in "${gdasapp_comps[@]}"; do if [[ -d "${comp}" ]]; then rm -rf "${comp}" diff --git a/ush/python/pygfs/task/aero_analysis.py b/ush/python/pygfs/task/aero_analysis.py index f19146f2dfc..b060dc1806e 100644 --- a/ush/python/pygfs/task/aero_analysis.py +++ b/ush/python/pygfs/task/aero_analysis.py @@ -77,7 +77,7 @@ def __init__(self, config): # Create dictionary of Jedi objects expected_keys = ['aeroanlvar'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -119,20 +119,20 @@ def initialize(self) -> None: logger.error(f"Bias correction files or directories do not exist:\n{pformat(bias_dict)}") # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.AERO_STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.AERO_STAGE_CRTM_COEFF_TMPL, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_TMPL}") + crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_TMPL, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.AERO_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.AERO_STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage files from COM and create working directories - logger.info(f"Staging files prescribed from {self.task_config.AERO_DET_INITIALIZE_TMPL}") - aero_var_stage_dict = parse_j2yaml(self.task_config.AERO_DET_INITIALIZE_TMPL, self.task_config) + logger.info(f"Staging files prescribed from {self.task_config.INITIALIZE_TMPL}") + aero_var_stage_dict = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) FileHandler(aero_var_stage_dict).sync() logger.debug(f"Staging from COM:\n{pformat(aero_var_stage_dict)}") diff --git a/ush/python/pygfs/task/aero_bmatrix.py b/ush/python/pygfs/task/aero_bmatrix.py index ffad497d1df..a75bad8399c 100644 --- a/ush/python/pygfs/task/aero_bmatrix.py +++ b/ush/python/pygfs/task/aero_bmatrix.py @@ -69,7 +69,7 @@ def __init__(self, config): # Create dictionary of Jedi objects expected_keys = ['aero_interpbkg', 'aero_diagb', 'aero_diffusion'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self: Task) -> None: @@ -91,13 +91,13 @@ def initialize(self: Task) -> None: """ # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.AERO_STAGE_JEDI_FIX_TMPL}") - jedi_fix_list = parse_j2yaml(self.task_config.AERO_STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") + jedi_fix_list = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_list).sync() # stage files from COM and create working directories - logger.info(f"Staging files from COM and creating working directories {self.task_config.AERO_BMAT_INITIALIZE_TMPL}") - aero_bmat_stage_list = parse_j2yaml(self.task_config.AERO_BMAT_INITIALIZE_TMPL, self.task_config) + logger.info(f"Staging files from COM and creating working directories {self.task_config.INITIALIZE_TMPL}") + aero_bmat_stage_list = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) FileHandler(aero_bmat_stage_list).sync() # initialize JEDI applications diff --git a/ush/python/pygfs/task/analysis_stats.py b/ush/python/pygfs/task/analysis_stats.py index 192fc239e38..b6003d71876 100644 --- a/ush/python/pygfs/task/analysis_stats.py +++ b/ush/python/pygfs/task/analysis_stats.py @@ -74,12 +74,12 @@ def initialize(self) -> None: # Expected keys are what must be included from the JEDI config file. We can # then loop through ob space list from scripts/exglobal_analysis_stats.py expected_keys = ['aero', 'atmos', 'snow'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) logger.info(f"Copying files to {self.task_config.DATA}/stats") # Extract info from stat config file - analysis_config_dict = parse_j2yaml(self.task_config.STAT_BASE_CONFIG_YAML, self.task_config) + analysis_config_dict = parse_j2yaml(self.task_config.BASE_CONFIG_TMPL, self.task_config) # Loop through a copy of ob space list for analysis in self.task_config.STAT_ANALYSES[:]: @@ -168,7 +168,7 @@ def finalize(self, jedi_dict_key: str) -> None: None """ - analysis_config_dict = parse_j2yaml(self.task_config.STAT_BASE_CONFIG_YAML, self.task_config) + analysis_config_dict = parse_j2yaml(self.task_config.BASE_CONFIG_TMPL, self.task_config) for analysis_dict in analysis_config_dict[jedi_dict_key]['obs spaces']: statfile = os.path.join(self.task_config.DATA, analysis_dict['output file']) diff --git a/ush/python/pygfs/task/atm_analysis.py b/ush/python/pygfs/task/atm_analysis.py index 9ebdbeae0a8..e889a2d3e31 100644 --- a/ush/python/pygfs/task/atm_analysis.py +++ b/ush/python/pygfs/task/atm_analysis.py @@ -72,7 +72,7 @@ def __init__(self, config: Dict[str, Any]): # Create dictionary of Jedi objects expected_keys = ['atmanlvar', 'atmanlfv3inc'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -118,21 +118,21 @@ def initialize(self) -> None: Jedi.extract_tar_from_filehandler_dict(bias_dict) # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.ATM_STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_CRTM_COEFF_TMPL, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_TMPL}") + crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_TMPL, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage static background error files, otherwise it will assume ID matrix logger.info(f"Stage files for STATICB_TYPE {self.task_config.STATICB_TYPE}") if self.task_config.STATICB_TYPE != 'identity': - berror_staging_dict = parse_j2yaml(self.task_config.ATM_DET_STAGE_BERROR_TMPL, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_TMPL, self.task_config) else: berror_staging_dict = {} FileHandler(berror_staging_dict).sync() @@ -141,13 +141,13 @@ def initialize(self) -> None: # stage ensemble files for use in hybrid background error if self.task_config.DOHYBVAR: logger.debug(f"Stage ensemble files for DOHYBVAR {self.task_config.DOHYBVAR}") - fv3ens_staging_dict = parse_j2yaml(self.task_config.ATM_DET_STAGE_FV3ENS_TMPL, self.task_config) + fv3ens_staging_dict = parse_j2yaml(self.task_config.STAGE_FV3ENS_TMPL, self.task_config) FileHandler(fv3ens_staging_dict).sync() logger.debug(f"Ensemble files:\n{pformat(fv3ens_staging_dict)}") # stage backgrounds - logger.info(f"Staging background files from {self.task_config.ATM_DET_STAGE_BKG_TMPL}") - bkg_staging_dict = parse_j2yaml(self.task_config.ATM_DET_STAGE_BKG_TMPL, self.task_config) + logger.info(f"Staging background files from {self.task_config.STAGE_BKG_TMPL}") + bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") diff --git a/ush/python/pygfs/task/atmens_analysis.py b/ush/python/pygfs/task/atmens_analysis.py index 14f064e945e..253f53686e4 100644 --- a/ush/python/pygfs/task/atmens_analysis.py +++ b/ush/python/pygfs/task/atmens_analysis.py @@ -70,7 +70,7 @@ def __init__(self, config: Dict[str, Any]): # Create dictionary of JEDI objects expected_keys = ['atmensanlobs', 'atmensanlsol', 'atmensanlfv3inc', 'atmensanlletkf'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -112,20 +112,20 @@ def initialize(self) -> None: Jedi.extract_tar_from_filehandler_dict(bias_dict) # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.ATM_STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_CRTM_COEFF_TMPL, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_TMPL}") + crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_TMPL, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage backgrounds logger.info(f"Stage ensemble member background files") - bkg_staging_dict = parse_j2yaml(self.task_config.ATM_ENS_STAGE_BKG_TMPL, self.task_config) + bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Ensemble member background files:\n{pformat(bkg_staging_dict)}") diff --git a/ush/python/pygfs/task/ensemble_recenter.py b/ush/python/pygfs/task/ensemble_recenter.py index 7f5dcb6856b..66f9572d53e 100644 --- a/ush/python/pygfs/task/ensemble_recenter.py +++ b/ush/python/pygfs/task/ensemble_recenter.py @@ -70,7 +70,7 @@ def __init__(self, config): # Create dictionary of Jedi objects expected_keys = ['correction_increment', 'ensemble_recenter'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -97,14 +97,14 @@ def initialize(self) -> None: self.jedi_dict['ensemble_recenter'].initialize(self.task_config) # Stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # Stage background and increment files - logger.info(f"Staging background and increment files from {self.task_config.ATM_ECEN_INITIALIZE_TMPL}") - fh_dict = parse_j2yaml(self.task_config.ATM_ECEN_INITIALIZE_TMPL, self.task_config) + logger.info(f"Staging background and increment files from {self.task_config.INITIALIZE_TMPL}") + fh_dict = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) FileHandler(fh_dict).sync() logger.debug(f"JEDI background and increment files:\n{pformat(fh_dict)}") diff --git a/ush/python/pygfs/task/fv3_analysis_calc.py b/ush/python/pygfs/task/fv3_analysis_calc.py index b1103107acd..8e8f392c582 100644 --- a/ush/python/pygfs/task/fv3_analysis_calc.py +++ b/ush/python/pygfs/task/fv3_analysis_calc.py @@ -70,7 +70,7 @@ def __init__(self, config): expected_keys.append('aero_addincrement') if self.task_config.DO_JEDISNOWDA: expected_keys.append('snow_addincrement') - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -100,14 +100,14 @@ def initialize(self) -> None: self.jedi_dict['snow_addincrement'].initialize(self.task_config) # Stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.ATM_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.ATM_STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # Stage background and increment files logger.info(f"Staging background and increment files from COM") - fh_dict = parse_j2yaml(self.task_config.ANALCALC_INITIALIZE_TMPL, self.task_config) + fh_dict = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) FileHandler(fh_dict).sync() logger.debug(f"Background and increment files:\n{pformat(fh_dict)}") diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index f4774d66d3b..4c4ff0439a1 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -81,7 +81,7 @@ def __init__(self, config): # Construct dictionary of JEDI objects, one for each JEDI application need for the analysis expected_keys = ['var', 'soca_incpostproc', 'soca_diag_stats'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML_ANALYSIS, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self: Task) -> None: @@ -109,7 +109,7 @@ def initialize(self: Task) -> None: # stage fix files logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.MARINE_STAGE_FIX_TMPL, self.task_config) + soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_list).sync() # prepare the deterministic MOM6 input.nml @@ -129,17 +129,17 @@ def initialize(self: Task) -> None: # stage the soca utility yamls (gridgen, fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMsoca}") - soca_utility_list = parse_j2yaml(self.task_config.MARINE_STAGE_UTILITIES_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_TMPL, self.task_config) FileHandler(soca_utility_list).sync() # stage the ocean and ice backgrounds for FGAT logger.info(f"Staging files needed for deterministic analysis from COM") - bkg_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_BKG_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_list).sync() # stage files and link directories from B-matrix job needed for deterministic analysis logger.info(f"Staging files needed for deterministic analysis from COM") - soca_files_list = parse_j2yaml(self.task_config.MARINE_DET_INITIALIZE_TMPL, self.task_config) + soca_files_list = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) FileHandler(soca_files_list).sync() # assert that dates of the history files are correct @@ -198,7 +198,7 @@ def finalize(self: Task) -> None: # Save output files to COM logger.info(f"Copy files to ROTDIR") - soca_finalize_list = parse_j2yaml(self.task_config.MARINE_DET_FINALIZE_TMPL, self.task_config) + soca_finalize_list = parse_j2yaml(self.task_config.FINALIZE_TMPL, self.task_config) FileHandler(soca_finalize_list).sync() # Save obs diag statistics to COM (success is optional) diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index 99837a34e41..1bce23290c4 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -75,7 +75,7 @@ def __init__(self, config): # Create dictionary of Jedi objects expected_keys = ['gridgen', 'soca_diagb', 'soca_parameters_diffusion_vt', 'soca_setcorscales', 'soca_parameters_diffusion_hz', 'soca_ensb', 'soca_ensweights', 'soca_chgres'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML_BMAT, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self: Task) -> None: @@ -102,7 +102,7 @@ def initialize(self: Task) -> None: # stage fix files logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.MARINE_STAGE_FIX_TMPL, self.task_config) + soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_list).sync() # prepare the deterministic MOM6 input.nml @@ -115,12 +115,12 @@ def initialize(self: Task) -> None: # stage backgrounds # TODO(G): Check ocean backgrounds dates for consistency logger.info(f"Staging SOCA backgrounds") - bkg_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_BKG_YAML_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.DET_STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_list).sync() # stage the soca utility yamls (fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files") - soca_utility_list = parse_j2yaml(self.task_config.MARINE_STAGE_UTILITIES_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_TMPL, self.task_config) FileHandler(soca_utility_list).sync() # initialize vtscales python script @@ -141,7 +141,7 @@ def initialize(self: Task) -> None: # stage ensemble members for the hybrid background error if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: logger.debug(f"Stage ensemble members for the hybrid background error") - letkf_stage_list = parse_j2yaml(self.task_config.MARINE_ENS_STAGE_BKG_TMPL, self.task_config) + letkf_stage_list = parse_j2yaml(self.task_config.STAGE_ENS_BKG_TMPL, self.task_config) FileHandler(letkf_stage_list).sync() # create the symbolic link to the static B-matrix directory @@ -221,5 +221,5 @@ def finalize(self: Task) -> None: # Save output files to COM logger.info(f"Copy files to ROTDIR") - soca_finalize_list = parse_j2yaml(self.task_config.MARINE_BMAT_FINALIZE_TMPL, self.task_config) + soca_finalize_list = parse_j2yaml(self.task_config.FINALIZE_TMPL, self.task_config) FileHandler(soca_finalize_list).sync() diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py index b86a81cef55..9a37081a585 100644 --- a/ush/python/pygfs/task/marine_letkf.py +++ b/ush/python/pygfs/task/marine_letkf.py @@ -114,15 +114,15 @@ def initialize(self): jcb_config = {**jcb_base_config, **stageconfig} # stage letkf-specific files - letkf_stage_list = parse_j2yaml(self.task_config.MARINE_ENS_INITIALIZE_TMPL, jcb_config) + letkf_stage_list = parse_j2yaml(self.task_config.INITIALIZE_TMPL, jcb_config) FileHandler(letkf_stage_list).sync() # stage ensemble background files - soca_ens_bkg_stage_list = parse_j2yaml(self.task_config.MARINE_ENS_STAGE_BKG_TMPL, stageconfig) + soca_ens_bkg_stage_list = parse_j2yaml(self.task_config.STAGE_ENS_BKG_TMPL, stageconfig) FileHandler(soca_ens_bkg_stage_list).sync() # "observations" is expected by later JCB code to populate it with config info, - jcb_config['observations'] = parse_j2yaml(self.task_config.MARINE_OBS_LIST_YAML, jcb_config)['observations'] + jcb_config['observations'] = parse_j2yaml(self.task_config.OBS_LIST_YAML, jcb_config)['observations'] obsconfigfile = os.path.join(self.task_config['PARMgfs'], 'gdas/soca/obs/obs_list_base_yaml.j2') jcb_config['observations'] = parse_j2yaml(obsconfigfile, jcb_config) @@ -154,7 +154,7 @@ def initialize(self): # make the letkf.yaml # TODO (AFE) switch to fully JCB version - letkf_yaml = parse_j2yaml(self.task_config.MARINE_LETKF_YAML_TMPL, jcb_config) + letkf_yaml = parse_j2yaml(self.task_config.LETKF_YAML_TMPL, jcb_config) letkf_yaml.observations.observers = obs_to_use letkf_yaml.save(self.task_config.letkf_yaml_file) @@ -210,7 +210,7 @@ def finalize(self): keys = ['current_cycle', 'DATA', 'NMEM_ENS', 'WINDOW_BEGIN', 'GDUMP_ENS', 'PARMgfs', 'ROTDIR', 'COM_OCEAN_LETKF_TMPL', 'COM_ICE_LETKF_TMPL', 'COMOUT_OCEAN_LETKF', 'COMOUT_ICE_LETKF', 'WINDOW_MIDDLE', - 'MARINE_OBS_LIST_YAML', 'COMOUT_CONF', 'letkf_yaml_file'] + 'OBS_LIST_YAML', 'COMOUT_CONF', 'letkf_yaml_file'] for key in keys: letkfsaveconf[key] = self.task_config[key] @@ -232,5 +232,5 @@ def finalize(self): yamls_to_copy = [] yamls_to_copy.append([letkfsaveconf.letkf_yaml_file, os.path.join(letkfsaveconf.COMOUT_CONF, 'soca_letkf.yaml')]) FileHandler({'copy': yamls_to_copy}).sync() - letkf_save_list = parse_j2yaml(self.task_config.MARINE_ENS_FINALIZE_TMPL, letkfsaveconf) + letkf_save_list = parse_j2yaml(self.task_config.FINALIZE_TMPL, letkfsaveconf) FileHandler(letkf_save_list).sync() diff --git a/ush/python/pygfs/task/marine_recenter.py b/ush/python/pygfs/task/marine_recenter.py index 45d98cd560d..3834c41b8f5 100644 --- a/ush/python/pygfs/task/marine_recenter.py +++ b/ush/python/pygfs/task/marine_recenter.py @@ -64,7 +64,7 @@ def __init__(self, config: Dict) -> None: # Construct dictionary of JEDI objects, one for each JEDI application need for the analysis expected_keys = ['gridgen', 'ens_handler'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML_ECEN, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self): @@ -87,16 +87,16 @@ def initialize(self): # stage the soca utility yamls (gridgen, fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMsoca}") - soca_utility_list = parse_j2yaml(self.task_config.MARINE_STAGE_UTILITIES_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_TMPL, self.task_config) FileHandler(soca_utility_list).sync() # stage backgrounds - bkg_list = parse_j2yaml(self.task_config.MARINE_DET_STAGE_BKG_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_TMPL, self.task_config) FileHandler(bkg_list).sync() # stage the ensemble members and CICE restarts logger.info("---------------- Stage ensemble members and CICE restarts") - soca_ens_list = parse_j2yaml(self.task_config.MARINE_ECEN_INITIALIZE_TMPL, self.task_config) + soca_ens_list = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) FileHandler(soca_ens_list).sync() # initialize JEDI applications @@ -135,5 +135,5 @@ def finalize(self): # Save recentered increments and ensemble statistics logger.info("---------------- Save recentered increments and ensemble statistics") - soca_ens_list = parse_j2yaml(self.task_config.MARINE_ECEN_FINALIZE_TMPL, self.task_config) + soca_ens_list = parse_j2yaml(self.task_config.FINALIZE_TMPL, self.task_config) FileHandler(soca_ens_list).sync() diff --git a/ush/python/pygfs/task/snow_analysis.py b/ush/python/pygfs/task/snow_analysis.py index e6984293e06..e028cfc09d7 100644 --- a/ush/python/pygfs/task/snow_analysis.py +++ b/ush/python/pygfs/task/snow_analysis.py @@ -79,7 +79,7 @@ def __init__(self, config: Dict[str, Any]): # Create JEDI object dictionary expected_keys = ['snowanlvar'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -104,8 +104,8 @@ def initialize(self) -> None: """ # stage backgrounds - logger.info(f"Staging background files from {self.task_config.SNOW_DET_STAGE_BKG_TMPL}") - bkg_staging_dict = parse_j2yaml(self.task_config.SNOW_DET_STAGE_BKG_TMPL, self.task_config) + logger.info(f"Staging background files from {self.task_config.STAGE_BKG_TMPL}") + bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") @@ -116,19 +116,19 @@ def initialize(self) -> None: logger.debug(f"Observation files:\n{pformat(obs_dict)}") # stage GTS bufr2ioda mapping YAML files - logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.GTS_SNOW_STAGE_YAML}") - gts_mapping_list = parse_j2yaml(self.task_config.GTS_SNOW_STAGE_YAML, self.task_config) + logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.STAGE_GTS_TMPL}") + gts_mapping_list = parse_j2yaml(self.task_config.STAGE_GTS_TMPL, self.task_config) FileHandler(gts_mapping_list).sync() # stage FV3-JEDI fix files - logger.info(f"Staging JEDI fix files from {self.task_config.SNOW_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.SNOW_STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # staging B error files logger.info("Stage files for static background error") - berror_staging_dict = parse_j2yaml(self.task_config.SNOW_STAGE_BERROR_TMPL, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_TMPL, self.task_config) FileHandler(berror_staging_dict).sync() logger.debug(f"Background error files:\n{pformat(berror_staging_dict)}") diff --git a/ush/python/pygfs/task/snowens_analysis.py b/ush/python/pygfs/task/snowens_analysis.py index 5fdb29b284c..36bb7cd9df1 100644 --- a/ush/python/pygfs/task/snowens_analysis.py +++ b/ush/python/pygfs/task/snowens_analysis.py @@ -80,7 +80,7 @@ def __init__(self, config: Dict[str, Any]): # Create JEDI object dictionary expected_keys = ['snowanlvar', 'esnowanlensmean'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -105,14 +105,14 @@ def initialize(self) -> None: """ # stage backgrounds - logger.info(f"Staging background files from {self.task_config.SNOW_ENS_STAGE_TMPL}") - bkg_staging_dict = parse_j2yaml(self.task_config.SNOW_ENS_STAGE_TMPL, self.task_config) + logger.info(f"Staging background files from {self.task_config.STAGE_BKG_TMPL}") + bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") # stage orography - logger.info(f"Staging orography files from {self.task_config.SNOW_OROG_STAGE_TMPL}") - orog_staging_dict = parse_j2yaml(self.task_config.SNOW_OROG_STAGE_TMPL, self.task_config) + logger.info(f"Staging orography files from {self.task_config.STAGE_OROG_TMPL}") + orog_staging_dict = parse_j2yaml(self.task_config.STAGE_OROG_TMPL, self.task_config) FileHandler(orog_staging_dict).sync() logger.debug(f"Orography files:\n{pformat(orog_staging_dict)}") # note JEDI will try to read the orog files for each member, let's just symlink @@ -134,19 +134,19 @@ def initialize(self) -> None: logger.debug(f"Observation files:\n{pformat(obs_dict)}") # stage GTS bufr2ioda mapping YAML files - logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.SNOW_STAGE_GTS_TMPL}") - gts_mapping_list = parse_j2yaml(self.task_config.SNOW_STAGE_GTS_TMPL, self.task_config) + logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.STAGE_GTS_TMPL}") + gts_mapping_list = parse_j2yaml(self.task_config.STAGE_GTS_TMPL, self.task_config) FileHandler(gts_mapping_list).sync() # stage FV3-JEDI fix files - logger.info(f"Staging JEDI fix files from {self.task_config.SNOW_STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.SNOW_STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # staging B error files logger.info("Stage files for static background error") - berror_staging_dict = parse_j2yaml(self.task_config.SNOW_STAGE_BERROR_TMPL, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_TMPL, self.task_config) FileHandler(berror_staging_dict).sync() logger.debug(f"Background error files:\n{pformat(berror_staging_dict)}") From 89fa10cd5d3c8d0ab3f2aec0aa5c4e3acb8a3062 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 21 Aug 2025 13:31:51 +0000 Subject: [PATCH 12/41] Debug --- dev/parm/config/gfs/config.anlstat | 2 +- dev/parm/config/gfs/config.esnowanl.j2 | 2 +- dev/parm/config/gfs/config.marineanl.j2 | 2 +- dev/workflow/hosts/hera.yaml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dev/parm/config/gfs/config.anlstat b/dev/parm/config/gfs/config.anlstat index 5fc647702fc..eed1ea9224f 100644 --- a/dev/parm/config/gfs/config.anlstat +++ b/dev/parm/config/gfs/config.anlstat @@ -9,6 +9,6 @@ echo "BEGIN: config.anlstat" source "${EXPDIR}/config.resources" anlstat export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/anlstat/anlstat_jedi_config.yaml.j2" -export ANLSTAT_BASE_CONFIG_TMPL="${PARMgfs}/gdas/anlstat/anlstat_base_config.yaml.j2" +export BASE_CONFIG_TMPL="${PARMgfs}/gdas/anlstat/anlstat_base_config.yaml.j2" echo "END: config.anlstat" diff --git a/dev/parm/config/gfs/config.esnowanl.j2 b/dev/parm/config/gfs/config.esnowanl.j2 index 574f5cbced2..2481dd71f2d 100644 --- a/dev/parm/config/gfs/config.esnowanl.j2 +++ b/dev/parm/config/gfs/config.esnowanl.j2 @@ -14,7 +14,7 @@ export CALCFIMSEXE="${EXECgfs}/gdas_calcfIMS.x" export FIMS_NML_TMPL="${PARMgfs}/gdas/snow/prep/fims.nml.j2" export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" -export STAGE_JEDI_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" +export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" export STAGE_OROG_TMPL="${PARMgfs}/gdas/snow/snow_stage_orog.yaml.j2" export STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" diff --git a/dev/parm/config/gfs/config.marineanl.j2 b/dev/parm/config/gfs/config.marineanl.j2 index 6b1dac706f6..aedef651d37 100644 --- a/dev/parm/config/gfs/config.marineanl.j2 +++ b/dev/parm/config/gfs/config.marineanl.j2 @@ -5,7 +5,7 @@ echo "BEGIN: config.marineanl" -export MARINE_OBS_LIST_YAML="{{ SOCA_OBS_LIST }}" +export OBS_LIST_TMPL="{{ SOCA_OBS_LIST }}" export SOCA_INPUT_FIX_DIR="{{ SOCA_INPUT_FIX_DIR }}" export SOCA_ANL_GEOM="{{ SOCA_ANL_GEOM }}" export SOCA_NINNER="{{ SOCA_NINNER }}" diff --git a/dev/workflow/hosts/hera.yaml b/dev/workflow/hosts/hera.yaml index 9ec94fc6292..cd964557a92 100644 --- a/dev/workflow/hosts/hera.yaml +++ b/dev/workflow/hosts/hera.yaml @@ -5,7 +5,7 @@ BASE_DATA: '/scratch3/NCEPDEV/global/role.glopara/data' BASE_IC: '/scratch3/NCEPDEV/global/role.glopara/data/ICSDIR' AERO_INPUTS_DIR: '/scratch3/NCEPDEV/global/role.glopara/data/GEFS_ExtData/20250310' PACKAGEROOT: '/scratch3/NCEPDEV/global/role.glopara/nwpara' -HOMEDIR: '/scratch3/NCEPDEV/da/${USER}' +HOMEDIR: '/scratch3/NCEPDEV/global/${USER}' STMP: '/scratch3/NCEPDEV/stmp/${USER}' PTMP: '/scratch3/NCEPDEV/stmp/${USER}' NOSCRUB: '${HOMEDIR}' @@ -19,7 +19,7 @@ QUEUE: batch PARTITION_BATCH: hera PARTITION_SERVICE: service # HPSS properties -HPSS_PROJECT: emc-da +HPSS_PROJECT: emc-global ARCHCOM_TO: 'hpss' ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' CHGRP_RSTPROD: 'YES' From a4e7aa0a1067a86999edaace0f520583bc971c6d Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 21 Aug 2025 18:40:24 +0000 Subject: [PATCH 13/41] Save many things --- dev/ci/cases/gfsv17/marine3dvar.yaml | 4 ++-- dev/ci/cases/gfsv17/s2sw.yaml | 2 +- dev/parm/config/gcafs/yaml/defaults.yaml | 8 ++++---- dev/parm/config/gfs/config.esnowanl.j2 | 6 +++--- dev/parm/config/gfs/config.marineanl.j2 | 12 +++++++++--- dev/parm/config/gfs/config.marineanlfinal | 2 ++ dev/parm/config/gfs/config.marineanlinit | 2 ++ dev/parm/config/gfs/config.marineanlletkf | 8 ++++---- dev/parm/config/gfs/config.marineanlvar | 3 --- dev/parm/config/gfs/config.marinebmatinit | 2 +- dev/parm/config/gfs/config.snowanl.j2 | 2 +- dev/parm/config/gfs/yaml/defaults.yaml | 6 +++--- dev/workflow/hosts/hera.yaml | 4 ++-- sorc/gdas.cd | 2 +- sorc/link_workflow.sh | 2 +- ush/python/pygfs/task/marine_analysis.py | 8 ++++---- ush/python/pygfs/task/marine_bmat.py | 6 +++--- ush/python/pygfs/task/marine_letkf.py | 12 ++++++------ ush/python/pygfs/task/marine_recenter.py | 6 +++--- 19 files changed, 52 insertions(+), 45 deletions(-) diff --git a/dev/ci/cases/gfsv17/marine3dvar.yaml b/dev/ci/cases/gfsv17/marine3dvar.yaml index a81326cd452..0582b001472 100644 --- a/dev/ci/cases/gfsv17/marine3dvar.yaml +++ b/dev/ci/cases/gfsv17/marine3dvar.yaml @@ -22,5 +22,5 @@ prepoceanobs: marineanl: SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca SOCA_ANL_GEOM: {{ HOMEgfs }}/fix/gdas/soca/720x540x75/soca - SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml.j2 - SOCA_NINNER: 100 + SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/marine/obs/obs_list.yaml.j2 + SOCA_NINNER: 100 \ No newline at end of file diff --git a/dev/ci/cases/gfsv17/s2sw.yaml b/dev/ci/cases/gfsv17/s2sw.yaml index 961f511247b..e0ad4e3c923 100644 --- a/dev/ci/cases/gfsv17/s2sw.yaml +++ b/dev/ci/cases/gfsv17/s2sw.yaml @@ -28,5 +28,5 @@ prepoceanobs: marineanl: SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca SOCA_ANL_GEOM: {{ HOMEgfs }}/fix/gdas/soca/720x540x75/soca - SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml.j2 + SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/marine/obs/obs_list.yaml.j2 SOCA_NINNER: 100 diff --git a/dev/parm/config/gcafs/yaml/defaults.yaml b/dev/parm/config/gcafs/yaml/defaults.yaml index cb3bd4ab510..2c8379195fe 100644 --- a/dev/parm/config/gcafs/yaml/defaults.yaml +++ b/dev/parm/config/gcafs/yaml/defaults.yaml @@ -66,14 +66,14 @@ snowanl: marineanl: SOCA_INPUT_FIX_DIR: "${FIXgfs}/gdas/soca/72x35x25/soca" SOCA_ANL_GEOM: "${FIXgfs}/gdas/soca/72x35x25/soca" - SOCA_OBS_LIST: "${PARMgfs}/gdas/soca/obs/obs_list.yaml" # TODO: This is also repeated in oceanprepobs + SOCA_OBS_LIST: "${PARMgfs}/gdas/marine/obs/obs_list.yaml" # TODO: This is also repeated in oceanprepobs SOCA_NINNER: 100 - JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/soca/marine-jcb-3dfgat.yaml.j2" + JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/marine/marine-jcb-3dfgat.yaml.j2" prepoceanobs: SOCA_INPUT_FIX_DIR: "${FIXgfs}/gdas/soca/72x35x25/soca" - SOCA_OBS_LIST: "${PARMgfs}/gdas/soca/obs/obs_list.yaml" # TODO: This is also repeated in ocnanal - OBSPREP_YAML: "${PARMgfs}/gdas/soca/obsprep/obsprep_config.yaml" + SOCA_OBS_LIST: "${PARMgfs}/gdas/marine/obs/obs_list.yaml" # TODO: This is also repeated in ocnanal + OBSPREP_YAML: "${PARMgfs}/gdas/marine/obsprep/obsprep_config.yaml" use_exp_obs: "YES" dmpdir_exp: "${BASE_DATA}/experimental_obs" diff --git a/dev/parm/config/gfs/config.esnowanl.j2 b/dev/parm/config/gfs/config.esnowanl.j2 index 2481dd71f2d..31fcc814138 100644 --- a/dev/parm/config/gfs/config.esnowanl.j2 +++ b/dev/parm/config/gfs/config.esnowanl.j2 @@ -18,14 +18,14 @@ export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" export STAGE_OROG_TMPL="${PARMgfs}/gdas/snow/snow_stage_orog.yaml.j2" export STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" -export STAGE_UPDATE_TMPL="${PARMgfs}/gdas/snow/snow_ens_stage_update.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/snow/snow_ens_finalize_update.yaml.j2" +export STAGE_BKG_TMPL="${PARMgfs}/gdas/snow/snow_ens_stage_bkg.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/snow/snow_ens_finalize.yaml.j2" export STAGE_GTS_TMPL="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" # Name of the executable that applies increment to bkg and its namelist template export APPLY_INCR_EXE="${EXECgfs}/gdas_apply_incr.x" -export ENS_APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/ens_apply_incr_nml.j2"list +export ENS_APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/ens_apply_incr_nml.j2" export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/snow/snow_ens_jedi_config.yaml.j2" diff --git a/dev/parm/config/gfs/config.marineanl.j2 b/dev/parm/config/gfs/config.marineanl.j2 index aedef651d37..89a36eebf1d 100644 --- a/dev/parm/config/gfs/config.marineanl.j2 +++ b/dev/parm/config/gfs/config.marineanl.j2 @@ -5,10 +5,16 @@ echo "BEGIN: config.marineanl" +# TODO: This should be sources in a config file specific to marine deterministic analysis +# and renamed to remove DET_ +export DET_JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" + +export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" + export OBS_LIST_TMPL="{{ SOCA_OBS_LIST }}" -export SOCA_INPUT_FIX_DIR="{{ SOCA_INPUT_FIX_DIR }}" -export SOCA_ANL_GEOM="{{ SOCA_ANL_GEOM }}" -export SOCA_NINNER="{{ SOCA_NINNER }}" +export INPUT_FIX_DIR="{{ SOCA_INPUT_FIX_DIR }}" +export ANL_GEOM="{{ SOCA_ANL_GEOM }}" +export NINNER="{{ SOCA_NINNER }}" export DOMAIN_STACK_SIZE=116640000 #TODO: Make the stack size resolution dependent export MARINE_JCB_GDAS_OBS="${PARMgfs}/gdas/jcb-gdas/observations/marine" diff --git a/dev/parm/config/gfs/config.marineanlfinal b/dev/parm/config/gfs/config.marineanlfinal index ccde2890880..30b8835aabc 100644 --- a/dev/parm/config/gfs/config.marineanlfinal +++ b/dev/parm/config/gfs/config.marineanlfinal @@ -5,6 +5,8 @@ echo "BEGIN: config.marineanlfinal" +export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_finalize.yaml.j2" + # Get task specific resources . "${EXPDIR}/config.resources" marineanlfinal echo "END: config.marineanlfinal" diff --git a/dev/parm/config/gfs/config.marineanlinit b/dev/parm/config/gfs/config.marineanlinit index 01489fc0b87..75e18725761 100644 --- a/dev/parm/config/gfs/config.marineanlinit +++ b/dev/parm/config/gfs/config.marineanlinit @@ -5,6 +5,8 @@ echo "BEGIN: config.marineanlinit" +export INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_initialize.yaml.j2" + # Get task specific resources . "${EXPDIR}/config.resources" marineanlinit echo "END: config.marineanlinit" diff --git a/dev/parm/config/gfs/config.marineanlletkf b/dev/parm/config/gfs/config.marineanlletkf index 8e77748245a..8e5aabd347e 100644 --- a/dev/parm/config/gfs/config.marineanlletkf +++ b/dev/parm/config/gfs/config.marineanlletkf @@ -8,10 +8,10 @@ echo "BEGIN: config.marineanlletkf" # Get task specific resources . "${EXPDIR}/config.resources" marineanlletkf -export MARINE_LETKF_EXEC="${EXECgfs}/gdas.x" -export MARINE_LETKF_YAML_TMPL="${PARMgfs}/gdas/soca/letkf/letkf.yaml.j2" -export MARINE_ENS_INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ens_initialize.yaml.j2" -export MARINE_ENS_FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ens_finalize.yaml.j2" +export LETKF_EXEC="${EXECgfs}/gdas.x" +export LETKF_YAML_TMPL="${PARMgfs}/gdas/marine/letkf/letkf.yaml.j2" +export INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ens_initialize.yaml.j2" +export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ens_finalize.yaml.j2" export GRIDGEN_EXEC="${EXECgfs}/gdas_soca_gridgen.x" export GRIDGEN_YAML="${HOMEgfs}/sorc/gdas.cd/parm/jcb-gdas/algorithm/marine/soca_gridgen.yaml.j2" diff --git a/dev/parm/config/gfs/config.marineanlvar b/dev/parm/config/gfs/config.marineanlvar index 5dba94da94e..6f30b4c0b93 100644 --- a/dev/parm/config/gfs/config.marineanlvar +++ b/dev/parm/config/gfs/config.marineanlvar @@ -11,7 +11,4 @@ echo "BEGIN: config.marineanlvar" export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" -export INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_initialize.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_finalize.yaml.j2" - echo "END: config.marineanlvar" diff --git a/dev/parm/config/gfs/config.marinebmatinit b/dev/parm/config/gfs/config.marinebmatinit index 6803fbe0f6c..a78b56adbc4 100644 --- a/dev/parm/config/gfs/config.marinebmatinit +++ b/dev/parm/config/gfs/config.marinebmatinit @@ -8,6 +8,6 @@ echo "BEGIN: config.marinebmatinit" # Get task specific resources source "${EXPDIR}/config.resources" marinebmatinit -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/soca_bmat_jedi_config.yaml.j2" +export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" echo "END: config.marinebmatinit" diff --git a/dev/parm/config/gfs/config.snowanl.j2 b/dev/parm/config/gfs/config.snowanl.j2 index ffd645006a8..fae005b1770 100644 --- a/dev/parm/config/gfs/config.snowanl.j2 +++ b/dev/parm/config/gfs/config.snowanl.j2 @@ -8,7 +8,7 @@ echo "BEGIN: config.snowanl" # Get task specific resources source "${EXPDIR}/config.resources" snowanl -export GTS_SNOW_STAGE_YAML="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" +export STAGE_GTS_TMPL="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" # Process IMS snowcover into snow depth export IMS_OBS_LIST="${PARMgfs}/gdas/snow/prep/prep_ims.yaml.j2" diff --git a/dev/parm/config/gfs/yaml/defaults.yaml b/dev/parm/config/gfs/yaml/defaults.yaml index 38becfcb62e..5802aa9aa9d 100644 --- a/dev/parm/config/gfs/yaml/defaults.yaml +++ b/dev/parm/config/gfs/yaml/defaults.yaml @@ -58,13 +58,13 @@ snowanl: marineanl: SOCA_INPUT_FIX_DIR: "${FIXgfs}/gdas/soca/72x35x25/soca" SOCA_ANL_GEOM: "${FIXgfs}/gdas/soca/72x35x25/soca" - SOCA_OBS_LIST: "${PARMgfs}/gdas/soca/obs/obs_list.yaml.j2" # TODO: This is also repeated in oceanprepobs + SOCA_OBS_LIST: "${PARMgfs}/gdas/marine/obs/obs_list.yaml.j2" # TODO: This is also repeated in oceanprepobs SOCA_NINNER: 100 - JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/soca/jcb-prototype_3dfgat.yaml.j2" + JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/marine/jcb-prototype_3dfgat.yaml.j2" prepoceanobs: SOCA_INPUT_FIX_DIR: "${FIXgfs}/gdas/soca/72x35x25/soca" - OBSPREP_YAML: "${PARMgfs}/gdas/soca/obsprep/obsprep_config.yaml" + OBSPREP_YAML: "${PARMgfs}/gdas/marine/obsprep/obsprep_config.yaml" use_exp_obs: "YES" dmpdir_exp: "${BASE_DATA}/experimental_obs" diff --git a/dev/workflow/hosts/hera.yaml b/dev/workflow/hosts/hera.yaml index cd964557a92..9ec94fc6292 100644 --- a/dev/workflow/hosts/hera.yaml +++ b/dev/workflow/hosts/hera.yaml @@ -5,7 +5,7 @@ BASE_DATA: '/scratch3/NCEPDEV/global/role.glopara/data' BASE_IC: '/scratch3/NCEPDEV/global/role.glopara/data/ICSDIR' AERO_INPUTS_DIR: '/scratch3/NCEPDEV/global/role.glopara/data/GEFS_ExtData/20250310' PACKAGEROOT: '/scratch3/NCEPDEV/global/role.glopara/nwpara' -HOMEDIR: '/scratch3/NCEPDEV/global/${USER}' +HOMEDIR: '/scratch3/NCEPDEV/da/${USER}' STMP: '/scratch3/NCEPDEV/stmp/${USER}' PTMP: '/scratch3/NCEPDEV/stmp/${USER}' NOSCRUB: '${HOMEDIR}' @@ -19,7 +19,7 @@ QUEUE: batch PARTITION_BATCH: hera PARTITION_SERVICE: service # HPSS properties -HPSS_PROJECT: emc-global +HPSS_PROJECT: emc-da ARCHCOM_TO: 'hpss' ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' CHGRP_RSTPROD: 'YES' diff --git a/sorc/gdas.cd b/sorc/gdas.cd index cd311f4c9e0..a483720c546 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit cd311f4c9e09186826af94a78794c05febb9ebbb +Subproject commit a483720c5466c007b52533027ef284392f0b422f diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index a0a35b1f01e..bd8a24f9c89 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -232,7 +232,7 @@ fi #------------------------------ if [[ -d "${HOMEgfs}/sorc/gdas.cd" ]]; then cd "${HOMEgfs}/parm/gdas" || exit 1 - declare -a gdasapp_comps=("aero" "atm" "io" "ioda" "snow" "soca" "jcb-gdas" "jcb-algorithms" "anlstat" "analcalc") + declare -a gdasapp_comps=("aero" "atm" "io" "ioda" "snow" "marine" "jcb-gdas" "jcb-algorithms" "anlstat" "analcalc") for comp in "${gdasapp_comps[@]}"; do if [[ -d "${comp}" ]]; then rm -rf "${comp}" diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 4c4ff0439a1..ac8e0a83cbf 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -57,7 +57,7 @@ def __init__(self, config): # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( { - 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'soca'), + 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), 'MARINE_WINDOW_BEGIN': _window_begin, 'MARINE_WINDOW_END': _window_end, 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, @@ -81,7 +81,7 @@ def __init__(self, config): # Construct dictionary of JEDI objects, one for each JEDI application need for the analysis expected_keys = ['var', 'soca_incpostproc', 'soca_diag_stats'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.DET_JEDI_CONFIG_TMPL, self.task_config, expected_keys) @logit(logger) def initialize(self: Task) -> None: @@ -108,7 +108,7 @@ def initialize(self: Task) -> None: """ # stage fix files - logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") + logger.info(f"Staging SOCA fix files from {self.task_config.INPUT_FIX_DIR}") soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_list).sync() @@ -134,7 +134,7 @@ def initialize(self: Task) -> None: # stage the ocean and ice backgrounds for FGAT logger.info(f"Staging files needed for deterministic analysis from COM") - bkg_list = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_TMPL, self.task_config) FileHandler(bkg_list).sync() # stage files and link directories from B-matrix job needed for deterministic analysis diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index 1bce23290c4..d2f8190d97a 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -53,7 +53,7 @@ def __init__(self, config): # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( { - 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'soca'), + 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), 'CALC_SCALE_EXEC': _calc_scale_exec, 'MARINE_WINDOW_BEGIN': _window_begin, 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, @@ -101,7 +101,7 @@ def initialize(self: Task) -> None: """ # stage fix files - logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") + logger.info(f"Staging SOCA fix files from {self.task_config.INPUT_FIX_DIR}") soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_list).sync() @@ -115,7 +115,7 @@ def initialize(self: Task) -> None: # stage backgrounds # TODO(G): Check ocean backgrounds dates for consistency logger.info(f"Staging SOCA backgrounds") - bkg_list = parse_j2yaml(self.task_config.DET_STAGE_BKG_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_TMPL, self.task_config) FileHandler(bkg_list).sync() # stage the soca utility yamls (fields and ufo mapping yamls) diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py index 9a37081a585..3199b455700 100644 --- a/ush/python/pygfs/task/marine_letkf.py +++ b/ush/python/pygfs/task/marine_letkf.py @@ -39,7 +39,7 @@ def __init__(self, config: Dict) -> None: _half_assim_freq = to_timedelta(f"{self.task_config.assim_freq}H") / 2 _letkf_yaml_file = 'letkf.yaml' - _letkf_exec_args = [self.task_config.MARINE_LETKF_EXEC, + _letkf_exec_args = [self.task_config.LETKF_EXEC, 'soca', 'localensembleda', _letkf_yaml_file] @@ -54,7 +54,7 @@ def __init__(self, config: Dict) -> None: self.task_config.mom_input_nml = os.path.join(self.task_config.DATA, 'mom_input.nml') self.task_config.obs_dir = os.path.join(self.task_config.DATA, 'obs') self.task_config.ENSPERT_RELPATH = _enspert_relpath - self.task_config.PARMsoca = os.path.join(self.task_config.PARMgfs, 'gdas', 'soca') + self.task_config.PARMsoca = os.path.join(self.task_config.PARMgfs, 'gdas', 'marine') self.task_config.app_path_observations = self.task_config.MARINE_JCB_GDAS_OBS self.task_config.letkf_app = "true" self.task_config.OPREFIX = f"{self.task_config.RUN.replace('enkf','')}.t{self.task_config.cyc:02d}z." @@ -73,7 +73,7 @@ def initialize(self): logger.info("initialize") # make directories and stage ensemble background files - soca_fix_stage_list = parse_j2yaml(self.task_config.MARINE_STAGE_FIX_TMPL, self.task_config) + soca_fix_stage_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_stage_list).sync() stageconfig = AttrDict() keys = ['app_path_observations', @@ -122,9 +122,9 @@ def initialize(self): FileHandler(soca_ens_bkg_stage_list).sync() # "observations" is expected by later JCB code to populate it with config info, - jcb_config['observations'] = parse_j2yaml(self.task_config.OBS_LIST_YAML, jcb_config)['observations'] + jcb_config['observations'] = parse_j2yaml(self.task_config.OBS_LIST_TMPL, jcb_config)['observations'] - obsconfigfile = os.path.join(self.task_config['PARMgfs'], 'gdas/soca/obs/obs_list_base_yaml.j2') + obsconfigfile = os.path.join(self.task_config['PARMgfs'], 'gdas/marine/obs/obs_list_base.yaml.j2') jcb_config['observations'] = parse_j2yaml(obsconfigfile, jcb_config) # get the list of expected observation files @@ -210,7 +210,7 @@ def finalize(self): keys = ['current_cycle', 'DATA', 'NMEM_ENS', 'WINDOW_BEGIN', 'GDUMP_ENS', 'PARMgfs', 'ROTDIR', 'COM_OCEAN_LETKF_TMPL', 'COM_ICE_LETKF_TMPL', 'COMOUT_OCEAN_LETKF', 'COMOUT_ICE_LETKF', 'WINDOW_MIDDLE', - 'OBS_LIST_YAML', 'COMOUT_CONF', 'letkf_yaml_file'] + 'OBS_LIST_TMPL', 'COMOUT_CONF', 'letkf_yaml_file'] for key in keys: letkfsaveconf[key] = self.task_config[key] diff --git a/ush/python/pygfs/task/marine_recenter.py b/ush/python/pygfs/task/marine_recenter.py index 3834c41b8f5..e2d0a72964e 100644 --- a/ush/python/pygfs/task/marine_recenter.py +++ b/ush/python/pygfs/task/marine_recenter.py @@ -44,7 +44,7 @@ def __init__(self, config: Dict) -> None: local_dict = AttrDict( { - 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'soca'), + 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), 'MARINE_WINDOW_BEGIN': _window_begin, 'MARINE_WINDOW_END': _window_end, 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, @@ -78,8 +78,8 @@ def initialize(self): """ # stage fix files - logger.info(f"Staging SOCA fix files from {self.task_config.SOCA_INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.SOCA_STAGE_FIX_TMPL, self.task_config) + logger.info(f"Staging SOCA fix files from {self.task_config.INPUT_FIX_DIR}") + soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) FileHandler(soca_fix_list).sync() # prepare the MOM6 input.nml From 5db60db914a3bc2b02a5555657691acf9a51d52a Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Fri, 22 Aug 2025 14:19:53 +0000 Subject: [PATCH 14/41] Update --- dev/parm/config/gfs/config.aeroanl.j2 | 2 +- dev/parm/config/gfs/config.atmanl.j2 | 4 ++-- dev/parm/config/gfs/config.atmensanl.j2 | 8 ++++---- dev/parm/config/gfs/config.marineanl.j2 | 6 +++--- dev/parm/config/gfs/config.marineanlvar | 2 +- dev/parm/config/gfs/yaml/defaults.yaml | 14 +++++++------- sorc/gdas.cd | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dev/parm/config/gfs/config.aeroanl.j2 b/dev/parm/config/gfs/config.aeroanl.j2 index ebf8322f9b2..816f888393b 100644 --- a/dev/parm/config/gfs/config.aeroanl.j2 +++ b/dev/parm/config/gfs/config.aeroanl.j2 @@ -18,7 +18,7 @@ case ${CASE} in exit 4 esac export CASE_ANL -export JCB_ALGO_YAML_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 +export JCB_ALGO_TMPL_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 export STATICB_TYPE='diffusion' export BERROR_TMPL="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" diff --git a/dev/parm/config/gfs/config.atmanl.j2 b/dev/parm/config/gfs/config.atmanl.j2 index 9ed59268b50..f3f97b77b34 100644 --- a/dev/parm/config/gfs/config.atmanl.j2 +++ b/dev/parm/config/gfs/config.atmanl.j2 @@ -5,8 +5,8 @@ echo "BEGIN: config.atmanl" -export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" -export JCB_ALGO_YAML_FV3INC="{{ JCB_ALGO_YAML_FV3INC }}" +export JCB_ALGO_TMPL_VAR="{{ JCB_ALGO_TMPL_VAR }}" +export JCB_ALGO_TMPL_FV3INC="{{ JCB_ALGO_TMPL_FV3INC }}" export STATICB_TYPE="{{ STATICB_TYPE }}" export LOCALIZATION_TYPE="bump" diff --git a/dev/parm/config/gfs/config.atmensanl.j2 b/dev/parm/config/gfs/config.atmensanl.j2 index af5730bb1f6..13d7f3fbb1d 100644 --- a/dev/parm/config/gfs/config.atmensanl.j2 +++ b/dev/parm/config/gfs/config.atmensanl.j2 @@ -5,10 +5,10 @@ echo "BEGIN: config.atmensanl" -export JCB_ALGO_YAML_LETKF="{{ JCB_ALGO_YAML_LETKF }}" -export JCB_ALGO_YAML_OBS="{{ JCB_ALGO_YAML_OBS }}" -export JCB_ALGO_YAML_SOL="{{ JCB_ALGO_YAML_SOL }}" -export JCB_ALGO_YAML_FV3INC="{{ JCB_ALGO_YAML_FV3INC }}" +export JCB_ALGO_TMPL_LETKF="{{ JCB_ALGO_TMPL_LETKF }}" +export JCB_ALGO_TMPL_OBS="{{ JCB_ALGO_TMPL_OBS }}" +export JCB_ALGO_TMPL_SOL="{{ JCB_ALGO_TMPL_SOL }}" +export JCB_ALGO_TMPL_FV3INC="{{ JCB_ALGO_TMPL_FV3INC }}" export INTERP_METHOD='barycentric' diff --git a/dev/parm/config/gfs/config.marineanl.j2 b/dev/parm/config/gfs/config.marineanl.j2 index 89a36eebf1d..0b847b12c96 100644 --- a/dev/parm/config/gfs/config.marineanl.j2 +++ b/dev/parm/config/gfs/config.marineanl.j2 @@ -6,10 +6,10 @@ echo "BEGIN: config.marineanl" # TODO: This should be sources in a config file specific to marine deterministic analysis -# and renamed to remove DET_ -export DET_JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" +# and renamed to remove _DET +export JEDI_CONFIG_TMPL_DET="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" -export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" +export JCB_ALGO_TMPL_VAR="{{ JCB_ALGO_TMPL_VAR }}" export OBS_LIST_TMPL="{{ SOCA_OBS_LIST }}" export INPUT_FIX_DIR="{{ SOCA_INPUT_FIX_DIR }}" diff --git a/dev/parm/config/gfs/config.marineanlvar b/dev/parm/config/gfs/config.marineanlvar index 6f30b4c0b93..a8188794cfa 100644 --- a/dev/parm/config/gfs/config.marineanlvar +++ b/dev/parm/config/gfs/config.marineanlvar @@ -9,6 +9,6 @@ echo "BEGIN: config.marineanlvar" . "${EXPDIR}/config.resources" marineanlvar export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" -export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" +export JCB_ALGO_TMPL_VAR="{{ JCB_ALGO_TMPL_VAR }}" echo "END: config.marineanlvar" diff --git a/dev/parm/config/gfs/yaml/defaults.yaml b/dev/parm/config/gfs/yaml/defaults.yaml index 5802aa9aa9d..72b8dbf9a42 100644 --- a/dev/parm/config/gfs/yaml/defaults.yaml +++ b/dev/parm/config/gfs/yaml/defaults.yaml @@ -29,8 +29,8 @@ base: NMEM_ENS_GFS_OFFSET: 20 atmanl: - JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" - JCB_ALGO_YAML_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar-fv3inc.yaml.j2" + JCB_ALGO_TMPL_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" + JCB_ALGO_TMPL_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar-fv3inc.yaml.j2" STATICB_TYPE: "gsibec" LAYOUT_X_ATMANL: 8 LAYOUT_Y_ATMANL: 8 @@ -38,10 +38,10 @@ atmanl: IO_LAYOUT_Y: 1 atmensanl: - JCB_ALGO_YAML_LETKF: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2" - JCB_ALGO_YAML_OBS: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_observer.yaml.j2" - JCB_ALGO_YAML_SOL: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" - JCB_ALGO_YAML_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf-fv3inc.yaml.j2" + JCB_ALGO_TMPL_LETKF: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2" + JCB_ALGO_TMPL_OBS: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_observer.yaml.j2" + JCB_ALGO_TMPL_SOL: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" + JCB_ALGO_TMPL_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf-fv3inc.yaml.j2" LAYOUT_X_ATMENSANL: 8 LAYOUT_Y_ATMENSANL: 8 IO_LAYOUT_X: 1 @@ -60,7 +60,7 @@ marineanl: SOCA_ANL_GEOM: "${FIXgfs}/gdas/soca/72x35x25/soca" SOCA_OBS_LIST: "${PARMgfs}/gdas/marine/obs/obs_list.yaml.j2" # TODO: This is also repeated in oceanprepobs SOCA_NINNER: 100 - JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/marine/jcb-prototype_3dfgat.yaml.j2" + JCB_ALGO_TMPL_VAR: "${PARMgfs}/gdas/marine/jcb-prototype_3dfgat.yaml.j2" prepoceanobs: SOCA_INPUT_FIX_DIR: "${FIXgfs}/gdas/soca/72x35x25/soca" diff --git a/sorc/gdas.cd b/sorc/gdas.cd index a483720c546..662ab4cfe9e 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit a483720c5466c007b52533027ef284392f0b422f +Subproject commit 662ab4cfe9e99e06c19c6e5507f5662b5015f7af From 1c090181887edfd93a828aab7eec35598edce3d5 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Fri, 22 Aug 2025 14:25:59 +0000 Subject: [PATCH 15/41] Clean up --- dev/parm/config/gcafs/config.aeroanl.j2 | 2 +- dev/parm/config/gcafs/yaml/defaults.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dev/parm/config/gcafs/config.aeroanl.j2 b/dev/parm/config/gcafs/config.aeroanl.j2 index 8093bf7d559..6aac993bf20 100644 --- a/dev/parm/config/gcafs/config.aeroanl.j2 +++ b/dev/parm/config/gcafs/config.aeroanl.j2 @@ -18,7 +18,7 @@ case ${CASE} in exit 4 esac export CASE_ANL -export JCB_ALGO_YAML_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 +export JCB_ALGO_TMPL_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 export STATICB_TYPE='diffusion' export BERROR_TMPL="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" diff --git a/dev/parm/config/gcafs/yaml/defaults.yaml b/dev/parm/config/gcafs/yaml/defaults.yaml index 2c8379195fe..447f07ae03b 100644 --- a/dev/parm/config/gcafs/yaml/defaults.yaml +++ b/dev/parm/config/gcafs/yaml/defaults.yaml @@ -37,8 +37,8 @@ base: FHOUT_AERO: 3 atmanl: - JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" - JCB_ALGO_YAML_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar-fv3inc.yaml.j2" + JCB_ALGO_TMPL_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" + JCB_ALGO_TMPL_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar-fv3inc.yaml.j2" STATICB_TYPE: "gsibec" LAYOUT_X_ATMANL: 8 LAYOUT_Y_ATMANL: 8 @@ -46,10 +46,10 @@ atmanl: IO_LAYOUT_Y: 1 atmensanl: - JCB_ALGO_YAML_LETKF: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2" - JCB_ALGO_YAML_OBS: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_observer.yaml.j2" - JCB_ALGO_YAML_SOL: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" - JCB_ALGO_YAML_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf-fv3inc.yaml.j2" + JCB_ALGO_TMPL_LETKF: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2" + JCB_ALGO_TMPL_OBS: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_observer.yaml.j2" + JCB_ALGO_TMPL_SOL: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" + JCB_ALGO_TMPL_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf-fv3inc.yaml.j2" LAYOUT_X_ATMENSANL: 8 LAYOUT_Y_ATMENSANL: 8 IO_LAYOUT_X: 1 @@ -68,7 +68,7 @@ marineanl: SOCA_ANL_GEOM: "${FIXgfs}/gdas/soca/72x35x25/soca" SOCA_OBS_LIST: "${PARMgfs}/gdas/marine/obs/obs_list.yaml" # TODO: This is also repeated in oceanprepobs SOCA_NINNER: 100 - JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/marine/marine-jcb-3dfgat.yaml.j2" + JCB_ALGO_TMPL_VAR: "${PARMgfs}/gdas/marine/marine-jcb-3dfgat.yaml.j2" prepoceanobs: SOCA_INPUT_FIX_DIR: "${FIXgfs}/gdas/soca/72x35x25/soca" From 4e46f1a563fc7c527e46e61b8c31f612a87f25e1 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Tue, 26 Aug 2025 18:45:19 +0000 Subject: [PATCH 16/41] _TMPL -> _YAML --- dev/parm/config/gcafs/config.aeroanl.j2 | 16 ++++++------ dev/parm/config/gcafs/config.aeroanlgenb | 8 +++--- dev/parm/config/gcafs/config.anlstat | 4 +-- dev/parm/config/gcafs/yaml/defaults.yaml | 14 +++++------ dev/parm/config/gfs/config.aeroanl.j2 | 14 +++++------ dev/parm/config/gfs/config.aeroanlgenb | 8 +++--- dev/parm/config/gfs/config.analcalc_fv3jedi | 6 ++--- dev/parm/config/gfs/config.anlstat | 4 +-- dev/parm/config/gfs/config.atmanl.j2 | 20 +++++++-------- dev/parm/config/gfs/config.atmensanl.j2 | 16 ++++++------ dev/parm/config/gfs/config.ecen_fv3jedi | 6 ++--- dev/parm/config/gfs/config.esnowanl.j2 | 14 +++++------ dev/parm/config/gfs/config.marineanl.j2 | 14 +++++------ dev/parm/config/gfs/config.marineanlecen | 6 ++--- dev/parm/config/gfs/config.marineanlfinal | 2 +- dev/parm/config/gfs/config.marineanlinit | 2 +- dev/parm/config/gfs/config.marineanlletkf | 6 ++--- dev/parm/config/gfs/config.marineanlvar | 4 +-- dev/parm/config/gfs/config.marinebmat | 4 +-- dev/parm/config/gfs/config.marinebmatinit | 2 +- dev/parm/config/gfs/config.snowanl.j2 | 10 ++++---- dev/parm/config/gfs/config.stage_ic.j2 | 2 +- dev/parm/config/gfs/yaml/defaults.yaml | 14 +++++------ sorc/gdas.cd | 2 +- sorc/link_workflow.sh | 6 ++++- ush/python/pygfs/task/aero_analysis.py | 28 ++++++++++----------- ush/python/pygfs/task/aero_bmatrix.py | 14 +++++------ ush/python/pygfs/task/analysis_stats.py | 6 ++--- ush/python/pygfs/task/atm_analysis.py | 18 ++++++------- ush/python/pygfs/task/fv3_analysis_calc.py | 8 +++--- ush/python/pygfs/task/marine_analysis.py | 12 ++++----- ush/python/pygfs/task/marine_bmat.py | 12 ++++----- ush/python/pygfs/task/marine_letkf.py | 10 ++++---- ush/python/pygfs/task/marine_recenter.py | 12 ++++----- ush/python/pygfs/task/snow_analysis.py | 16 ++++++------ ush/python/pygfs/task/snowens_analysis.py | 20 +++++++-------- 36 files changed, 182 insertions(+), 178 deletions(-) diff --git a/dev/parm/config/gcafs/config.aeroanl.j2 b/dev/parm/config/gcafs/config.aeroanl.j2 index 6aac993bf20..04029626b0b 100644 --- a/dev/parm/config/gcafs/config.aeroanl.j2 +++ b/dev/parm/config/gcafs/config.aeroanl.j2 @@ -18,19 +18,19 @@ case ${CASE} in exit 4 esac export CASE_ANL -export JCB_ALGO_TMPL_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 +export JCB_ALGO_YAML_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 export STATICB_TYPE='diffusion' -export BERROR_TMPL="aero_background_error_static_${STATICB_TYPE}" +export BERROR_YAML="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" -export STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" -export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" +export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" -export INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" -export AERO_BMATRIX_RESCALE_TMPL="aero_gen_bmatrix_rescale_default.yaml.j2" +export INITIALIZE_YAML="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" +export FINALIZE_YAML="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" +export AERO_BMATRIX_RESCALE_YAML="aero_gen_bmatrix_rescale_default.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gcafs/config.aeroanlgenb b/dev/parm/config/gcafs/config.aeroanlgenb index 1c0fc514425..c2628862271 100644 --- a/dev/parm/config/gcafs/config.aeroanlgenb +++ b/dev/parm/config/gcafs/config.aeroanlgenb @@ -8,10 +8,10 @@ echo "BEGIN: config.aeroanlgenb" # Get task specific resources source "${EXPDIR}/config.resources" aeroanlgenb -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" -export INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" -export RESCALE_TMPL="${PARMgfs}/gdas/jcb-gdas/aero/algorithm/aero_gen_bmatrix_rescale_default.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" +export INITIALIZE_YAML="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" +export FINALIZE_YAML="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" +export RESCALE_YAML="${PARMgfs}/gdas/jcb-gdas/aero/algorithm/aero_gen_bmatrix_rescale_default.yaml.j2" export aero_diffusion_iter=200 export aero_diffusion_horiz_len=300e3 export aero_diffusion_fixed_val=20.0 diff --git a/dev/parm/config/gcafs/config.anlstat b/dev/parm/config/gcafs/config.anlstat index 8fce16505ce..f73a91aa296 100644 --- a/dev/parm/config/gcafs/config.anlstat +++ b/dev/parm/config/gcafs/config.anlstat @@ -8,7 +8,7 @@ echo "BEGIN: config.anlstat" # Get task specific resources source "${EXPDIR}/config.resources" anlstat -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/stat/anlstat_jedi_config.yaml.j2" -export STAT_BASE_CONFIG_TMPL="${PARMgfs}/gdas/stat/stat_base_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/stat/anlstat_jedi_config.yaml.j2" +export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/stat/stat_base_config.yaml.j2" echo "END: config.anlstat" diff --git a/dev/parm/config/gcafs/yaml/defaults.yaml b/dev/parm/config/gcafs/yaml/defaults.yaml index 447f07ae03b..2c8379195fe 100644 --- a/dev/parm/config/gcafs/yaml/defaults.yaml +++ b/dev/parm/config/gcafs/yaml/defaults.yaml @@ -37,8 +37,8 @@ base: FHOUT_AERO: 3 atmanl: - JCB_ALGO_TMPL_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" - JCB_ALGO_TMPL_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar-fv3inc.yaml.j2" + JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" + JCB_ALGO_YAML_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar-fv3inc.yaml.j2" STATICB_TYPE: "gsibec" LAYOUT_X_ATMANL: 8 LAYOUT_Y_ATMANL: 8 @@ -46,10 +46,10 @@ atmanl: IO_LAYOUT_Y: 1 atmensanl: - JCB_ALGO_TMPL_LETKF: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2" - JCB_ALGO_TMPL_OBS: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_observer.yaml.j2" - JCB_ALGO_TMPL_SOL: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" - JCB_ALGO_TMPL_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf-fv3inc.yaml.j2" + JCB_ALGO_YAML_LETKF: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2" + JCB_ALGO_YAML_OBS: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_observer.yaml.j2" + JCB_ALGO_YAML_SOL: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" + JCB_ALGO_YAML_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf-fv3inc.yaml.j2" LAYOUT_X_ATMENSANL: 8 LAYOUT_Y_ATMENSANL: 8 IO_LAYOUT_X: 1 @@ -68,7 +68,7 @@ marineanl: SOCA_ANL_GEOM: "${FIXgfs}/gdas/soca/72x35x25/soca" SOCA_OBS_LIST: "${PARMgfs}/gdas/marine/obs/obs_list.yaml" # TODO: This is also repeated in oceanprepobs SOCA_NINNER: 100 - JCB_ALGO_TMPL_VAR: "${PARMgfs}/gdas/marine/marine-jcb-3dfgat.yaml.j2" + JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/marine/marine-jcb-3dfgat.yaml.j2" prepoceanobs: SOCA_INPUT_FIX_DIR: "${FIXgfs}/gdas/soca/72x35x25/soca" diff --git a/dev/parm/config/gfs/config.aeroanl.j2 b/dev/parm/config/gfs/config.aeroanl.j2 index 816f888393b..b1ffb4fd425 100644 --- a/dev/parm/config/gfs/config.aeroanl.j2 +++ b/dev/parm/config/gfs/config.aeroanl.j2 @@ -18,18 +18,18 @@ case ${CASE} in exit 4 esac export CASE_ANL -export JCB_ALGO_TMPL_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 +export JCB_ALGO_YAML_VAR=${PARMgfs}/gdas/aero/jcb-prototype_3dvar.yaml.j2 export STATICB_TYPE='diffusion' -export BERROR_TMPL="aero_background_error_static_${STATICB_TYPE}" +export BERROR_YAML="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" -export STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" -export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" +export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" -export INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" +export INITIALIZE_YAML="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" +export FINALIZE_YAML="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gfs/config.aeroanlgenb b/dev/parm/config/gfs/config.aeroanlgenb index af28cd26d7a..17d90c843c9 100644 --- a/dev/parm/config/gfs/config.aeroanlgenb +++ b/dev/parm/config/gfs/config.aeroanlgenb @@ -8,10 +8,10 @@ echo "BEGIN: config.aeroanlgenb" # Get task specific resources source "${EXPDIR}/config.resources" aeroanlgenb -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" -export JCB_BASE_TMPL="${PARMgfs}/gdas/aero/jcb-base.yaml.j2" -export INITIALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" +export JEDI_CONFIG_YAML"${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" +export JCB_BASE_YAML"${PARMgfs}/gdas/aero/jcb-base.yaml.j2" +export INITIALIZE_YAML"${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" +export FINALIZE_YAML"${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" export aero_diffusion_iter=200 export aero_diffusion_horiz_len=300e3 export aero_diffusion_fixed_val=20.0 diff --git a/dev/parm/config/gfs/config.analcalc_fv3jedi b/dev/parm/config/gfs/config.analcalc_fv3jedi index d255bf1edc3..c2d61a10dd0 100644 --- a/dev/parm/config/gfs/config.analcalc_fv3jedi +++ b/dev/parm/config/gfs/config.analcalc_fv3jedi @@ -14,7 +14,7 @@ export layout_y_analcalc_fv3jedi=2 # Get task specific resources . "${EXPDIR}/config.resources" analcalc_fv3jedi -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/analcalc/analcalc_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/analcalc/analcalc_jedi_config.yaml.j2" if [[ ${DOHYBVAR} = "YES" ]]; then export CASE_ANL=${CASE_ENS} @@ -22,8 +22,8 @@ else export CASE_ANL=${CASE} fi -export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export INITIALIZE_TMPL="${PARMgfs}/gdas/analcalc/analcalc_initialize.yaml.j2" +export INITIALIZE_YAML="${PARMgfs}/gdas/analcalc/analcalc_initialize.yaml.j2" echo "END: config.analcalc_fv3jedi" diff --git a/dev/parm/config/gfs/config.anlstat b/dev/parm/config/gfs/config.anlstat index eed1ea9224f..2eb8bcabb1b 100644 --- a/dev/parm/config/gfs/config.anlstat +++ b/dev/parm/config/gfs/config.anlstat @@ -8,7 +8,7 @@ echo "BEGIN: config.anlstat" # Get task specific resources source "${EXPDIR}/config.resources" anlstat -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/anlstat/anlstat_jedi_config.yaml.j2" -export BASE_CONFIG_TMPL="${PARMgfs}/gdas/anlstat/anlstat_base_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/anlstat/anlstat_jedi_config.yaml.j2" +export BASE_CONFIG_YAML="${PARMgfs}/gdas/anlstat/anlstat_base_config.yaml.j2" echo "END: config.anlstat" diff --git a/dev/parm/config/gfs/config.atmanl.j2 b/dev/parm/config/gfs/config.atmanl.j2 index f3f97b77b34..7cded0db97f 100644 --- a/dev/parm/config/gfs/config.atmanl.j2 +++ b/dev/parm/config/gfs/config.atmanl.j2 @@ -5,8 +5,8 @@ echo "BEGIN: config.atmanl" -export JCB_ALGO_TMPL_VAR="{{ JCB_ALGO_TMPL_VAR }}" -export JCB_ALGO_TMPL_FV3INC="{{ JCB_ALGO_TMPL_FV3INC }}" +export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" +export JCB_ALGO_YAML_FV3INC="{{ JCB_ALGO_YAML_FV3INC }}" export STATICB_TYPE="{{ STATICB_TYPE }}" export LOCALIZATION_TYPE="bump" @@ -15,19 +15,19 @@ export INTERP_METHOD='barycentric' if [[ ${DOHYBVAR} = "YES" ]]; then # shellcheck disable=SC2153 export CASE_ANL=${CASE_ENS} - export BERROR_TMPL="atmosphere_background_error_hybrid_${STATICB_TYPE}_${LOCALIZATION_TYPE}" + export BERROR_YAML="atmosphere_background_error_hybrid_${STATICB_TYPE}_${LOCALIZATION_TYPE}" else export CASE_ANL=${CASE} - export BERROR_TMPL="atmosphere_background_error_static_${STATICB_TYPE}" + export BERROR_YAML="atmosphere_background_error_static_${STATICB_TYPE}" fi -export STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" -export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/atm/atm_det_jedi_config.yaml.j2" -export STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_bkg.yaml.j2" -export STAGE_BERROR_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_berror_${STATICB_TYPE}.yaml.j2" -export STAGE_FV3ENS_TMPL="${PARMgfs}/gdas/atm/atm_det_stage_fv3ens.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_det_jedi_config.yaml.j2" +export STAGE_BKG_YAML="${PARMgfs}/gdas/atm/atm_det_stage_bkg.yaml.j2" +export STAGE_BERROR_YAML="${PARMgfs}/gdas/atm/atm_det_stage_berror_${STATICB_TYPE}.yaml.j2" +export STAGE_FV3ENS_YAML="${PARMgfs}/gdas/atm/atm_det_stage_fv3ens.yaml.j2" export layout_x_atmanl="{{ LAYOUT_X_ATMANL }}" export layout_y_atmanl="{{ LAYOUT_Y_ATMANL }}" diff --git a/dev/parm/config/gfs/config.atmensanl.j2 b/dev/parm/config/gfs/config.atmensanl.j2 index 13d7f3fbb1d..0e4b2114b5a 100644 --- a/dev/parm/config/gfs/config.atmensanl.j2 +++ b/dev/parm/config/gfs/config.atmensanl.j2 @@ -5,19 +5,19 @@ echo "BEGIN: config.atmensanl" -export JCB_ALGO_TMPL_LETKF="{{ JCB_ALGO_TMPL_LETKF }}" -export JCB_ALGO_TMPL_OBS="{{ JCB_ALGO_TMPL_OBS }}" -export JCB_ALGO_TMPL_SOL="{{ JCB_ALGO_TMPL_SOL }}" -export JCB_ALGO_TMPL_FV3INC="{{ JCB_ALGO_TMPL_FV3INC }}" +export JCB_ALGO_YAML_LETKF="{{ JCB_ALGO_YAML_LETKF }}" +export JCB_ALGO_YAML_OBS="{{ JCB_ALGO_YAML_OBS }}" +export JCB_ALGO_YAML_SOL="{{ JCB_ALGO_YAML_SOL }}" +export JCB_ALGO_YAML_FV3INC="{{ JCB_ALGO_YAML_FV3INC }}" export INTERP_METHOD='barycentric' -export STAGE_CRTM_COEFF_TMPL="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" -export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/atm/atm_ens_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ens_jedi_config.yaml.j2" -export STAGE_BKG_TMPL="${PARMgfs}/gdas/atm/atm_ens_stage_bkg.yaml.j2" +export STAGE_BKG_YAML="${PARMgfs}/gdas/atm/atm_ens_stage_bkg.yaml.j2" export layout_x_atmensanl="{{ LAYOUT_X_ATMENSANL }}" export layout_y_atmensanl="{{ LAYOUT_Y_ATMENSANL }}" diff --git a/dev/parm/config/gfs/config.ecen_fv3jedi b/dev/parm/config/gfs/config.ecen_fv3jedi index 8bba2a532e7..b36772aa8cb 100644 --- a/dev/parm/config/gfs/config.ecen_fv3jedi +++ b/dev/parm/config/gfs/config.ecen_fv3jedi @@ -14,7 +14,7 @@ export layout_y_ecen_fv3jedi=1 # Get task specific resources . "${EXPDIR}/config.resources" ecen_fv3jedi -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/atm/atm_ecen_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ecen_jedi_config.yaml.j2" if [[ ${DOHYBVAR} = "YES" ]]; then export CASE_ANL=${CASE_ENS} @@ -22,8 +22,8 @@ else export CASE_ANL=${CASE} fi -export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" -export INITIALIZE_TMPL="${PARMgfs}/gdas/atm/atm_ecen_initialize.yaml.j2" +export INITIALIZE_YAML="${PARMgfs}/gdas/atm/atm_ecen_initialize.yaml.j2" echo "END: config.ecen_fv3jedi" diff --git a/dev/parm/config/gfs/config.esnowanl.j2 b/dev/parm/config/gfs/config.esnowanl.j2 index 31fcc814138..095c62059fe 100644 --- a/dev/parm/config/gfs/config.esnowanl.j2 +++ b/dev/parm/config/gfs/config.esnowanl.j2 @@ -14,20 +14,20 @@ export CALCFIMSEXE="${EXECgfs}/gdas_calcfIMS.x" export FIMS_NML_TMPL="${PARMgfs}/gdas/snow/prep/fims.nml.j2" export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" -export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" -export STAGE_OROG_TMPL="${PARMgfs}/gdas/snow/snow_stage_orog.yaml.j2" -export STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" +export STAGE_OROG_YAML="${PARMgfs}/gdas/snow/snow_stage_orog.yaml.j2" +export STAGE_BERROR_YAML="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" -export STAGE_BKG_TMPL="${PARMgfs}/gdas/snow/snow_ens_stage_bkg.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/snow/snow_ens_finalize.yaml.j2" +export STAGE_BKG_YAML="${PARMgfs}/gdas/snow/snow_ens_stage_bkg.yaml.j2" +export FINALIZE_YAML="${PARMgfs}/gdas/snow/snow_ens_finalize.yaml.j2" -export STAGE_GTS_TMPL="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" +export STAGE_GTS_YAML="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" # Name of the executable that applies increment to bkg and its namelist template export APPLY_INCR_EXE="${EXECgfs}/gdas_apply_incr.x" export ENS_APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/ens_apply_incr_nml.j2" -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/snow/snow_ens_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snow/snow_ens_jedi_config.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gfs/config.marineanl.j2 b/dev/parm/config/gfs/config.marineanl.j2 index 0b847b12c96..c666066e16f 100644 --- a/dev/parm/config/gfs/config.marineanl.j2 +++ b/dev/parm/config/gfs/config.marineanl.j2 @@ -7,11 +7,11 @@ echo "BEGIN: config.marineanl" # TODO: This should be sources in a config file specific to marine deterministic analysis # and renamed to remove _DET -export JEDI_CONFIG_TMPL_DET="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML_DET="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" -export JCB_ALGO_TMPL_VAR="{{ JCB_ALGO_TMPL_VAR }}" +export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" -export OBS_LIST_TMPL="{{ SOCA_OBS_LIST }}" +export OBS_LIST_YAML="{{ SOCA_OBS_LIST }}" export INPUT_FIX_DIR="{{ SOCA_INPUT_FIX_DIR }}" export ANL_GEOM="{{ SOCA_ANL_GEOM }}" export NINNER="{{ SOCA_NINNER }}" @@ -19,10 +19,10 @@ export NINNER="{{ SOCA_NINNER }}" export DOMAIN_STACK_SIZE=116640000 #TODO: Make the stack size resolution dependent export MARINE_JCB_GDAS_OBS="${PARMgfs}/gdas/jcb-gdas/observations/marine" -export STAGE_FIX_TMPL="${PARMgfs}/gdas/marine/marine_stage_fix_${OCNRES}.yaml.j2" -export STAGE_UTILITIES_TMPL="${PARMgfs}/gdas/marine/marine_stage_utilities.yaml.j2" +export STAGE_FIX_YAML="${PARMgfs}/gdas/marine/marine_stage_fix_${OCNRES}.yaml.j2" +export STAGE_UTILITIES_YAML="${PARMgfs}/gdas/marine/marine_stage_utilities.yaml.j2" -export STAGE_DET_BKG_TMPL="${PARMgfs}/gdas/marine/marine_det_stage_bkg.yaml.j2" -export STAGE_ENS_BKG_TMPL="${PARMgfs}/gdas/marine/marine_ens_stage_bkg.yaml.j2" +export STAGE_DET_BKG_YAML="${PARMgfs}/gdas/marine/marine_det_stage_bkg.yaml.j2" +export STAGE_ENS_BKG_YAML="${PARMgfs}/gdas/marine/marine_ens_stage_bkg.yaml.j2" echo "END: config.marineanl" diff --git a/dev/parm/config/gfs/config.marineanlecen b/dev/parm/config/gfs/config.marineanlecen index 4fbef3d32ca..a7a534a10c3 100644 --- a/dev/parm/config/gfs/config.marineanlecen +++ b/dev/parm/config/gfs/config.marineanlecen @@ -8,8 +8,8 @@ echo "BEGIN: config.marineanlecen" # Get task specific resources source "${EXPDIR}/config.resources" marineanlecen -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_ecen_jedi_config.yaml.j2" -export INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ecen_initialize.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ecen_finalize.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_ecen_jedi_config.yaml.j2" +export INITIALIZE_YAML="${PARMgfs}/gdas/marine/marine_ecen_initialize.yaml.j2" +export FINALIZE_YAML="${PARMgfs}/gdas/marine/marine_ecen_finalize.yaml.j2" echo "END: config.marineanlecen" diff --git a/dev/parm/config/gfs/config.marineanlfinal b/dev/parm/config/gfs/config.marineanlfinal index 30b8835aabc..135bc33bf80 100644 --- a/dev/parm/config/gfs/config.marineanlfinal +++ b/dev/parm/config/gfs/config.marineanlfinal @@ -5,7 +5,7 @@ echo "BEGIN: config.marineanlfinal" -export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_finalize.yaml.j2" +export FINALIZE_YAML="${PARMgfs}/gdas/marine/marine_det_finalize.yaml.j2" # Get task specific resources . "${EXPDIR}/config.resources" marineanlfinal diff --git a/dev/parm/config/gfs/config.marineanlinit b/dev/parm/config/gfs/config.marineanlinit index 75e18725761..afed0a96772 100644 --- a/dev/parm/config/gfs/config.marineanlinit +++ b/dev/parm/config/gfs/config.marineanlinit @@ -5,7 +5,7 @@ echo "BEGIN: config.marineanlinit" -export INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_det_initialize.yaml.j2" +export INITIALIZE_YAML="${PARMgfs}/gdas/marine/marine_det_initialize.yaml.j2" # Get task specific resources . "${EXPDIR}/config.resources" marineanlinit diff --git a/dev/parm/config/gfs/config.marineanlletkf b/dev/parm/config/gfs/config.marineanlletkf index 8e5aabd347e..8c12e757915 100644 --- a/dev/parm/config/gfs/config.marineanlletkf +++ b/dev/parm/config/gfs/config.marineanlletkf @@ -9,9 +9,9 @@ echo "BEGIN: config.marineanlletkf" . "${EXPDIR}/config.resources" marineanlletkf export LETKF_EXEC="${EXECgfs}/gdas.x" -export LETKF_YAML_TMPL="${PARMgfs}/gdas/marine/letkf/letkf.yaml.j2" -export INITIALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ens_initialize.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_ens_finalize.yaml.j2" +export LETKF_YAML_YAML="${PARMgfs}/gdas/marine/letkf/letkf.yaml.j2" +export INITIALIZE_YAML="${PARMgfs}/gdas/marine/marine_ens_initialize.yaml.j2" +export FINALIZE_YAML="${PARMgfs}/gdas/marine/marine_ens_finalize.yaml.j2" export GRIDGEN_EXEC="${EXECgfs}/gdas_soca_gridgen.x" export GRIDGEN_YAML="${HOMEgfs}/sorc/gdas.cd/parm/jcb-gdas/algorithm/marine/soca_gridgen.yaml.j2" diff --git a/dev/parm/config/gfs/config.marineanlvar b/dev/parm/config/gfs/config.marineanlvar index a8188794cfa..4e89b135974 100644 --- a/dev/parm/config/gfs/config.marineanlvar +++ b/dev/parm/config/gfs/config.marineanlvar @@ -8,7 +8,7 @@ echo "BEGIN: config.marineanlvar" # Get task specific resources . "${EXPDIR}/config.resources" marineanlvar -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" -export JCB_ALGO_TMPL_VAR="{{ JCB_ALGO_TMPL_VAR }}" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" +export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" echo "END: config.marineanlvar" diff --git a/dev/parm/config/gfs/config.marinebmat b/dev/parm/config/gfs/config.marinebmat index 4a6ac93526e..91c7d05c6a6 100644 --- a/dev/parm/config/gfs/config.marinebmat +++ b/dev/parm/config/gfs/config.marinebmat @@ -8,7 +8,7 @@ echo "BEGIN: config.marinebmat" # Get task specific resources . "${EXPDIR}/config.resources" marinebmat -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" -export FINALIZE_TMPL="${PARMgfs}/gdas/marine/marine_bmat_finalize.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" +export FINALIZE_YAML="${PARMgfs}/gdas/marine/marine_bmat_finalize.yaml.j2" echo "END: config.marinebmat" diff --git a/dev/parm/config/gfs/config.marinebmatinit b/dev/parm/config/gfs/config.marinebmatinit index a78b56adbc4..e746f1a6498 100644 --- a/dev/parm/config/gfs/config.marinebmatinit +++ b/dev/parm/config/gfs/config.marinebmatinit @@ -8,6 +8,6 @@ echo "BEGIN: config.marinebmatinit" # Get task specific resources source "${EXPDIR}/config.resources" marinebmatinit -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" echo "END: config.marinebmatinit" diff --git a/dev/parm/config/gfs/config.snowanl.j2 b/dev/parm/config/gfs/config.snowanl.j2 index fae005b1770..e1e43b7dc42 100644 --- a/dev/parm/config/gfs/config.snowanl.j2 +++ b/dev/parm/config/gfs/config.snowanl.j2 @@ -8,7 +8,7 @@ echo "BEGIN: config.snowanl" # Get task specific resources source "${EXPDIR}/config.resources" snowanl -export STAGE_GTS_TMPL="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" +export STAGE_GTS_YAML="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" # Process IMS snowcover into snow depth export IMS_OBS_LIST="${PARMgfs}/gdas/snow/prep/prep_ims.yaml.j2" @@ -20,11 +20,11 @@ export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" export APPLY_INCR_EXE="${EXECgfs}/gdas_apply_incr.x" export APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/apply_incr_nml.j2" -export STAGE_JEDI_FIX_TMPL="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" -export STAGE_BKG_TMPL="${PARMgfs}/gdas/snow/snow_det_stage_bkg.yaml.j2" -export STAGE_BERROR_TMPL="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" +export STAGE_BKG_YAML="${PARMgfs}/gdas/snow/snow_det_stage_bkg.yaml.j2" +export STAGE_BERROR_YAML="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" -export JEDI_CONFIG_TMPL="${PARMgfs}/gdas/snow/snow_det_jedi_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snow/snow_det_jedi_config.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gfs/config.stage_ic.j2 b/dev/parm/config/gfs/config.stage_ic.j2 index 66b2d375332..576578bf0eb 100644 --- a/dev/parm/config/gfs/config.stage_ic.j2 +++ b/dev/parm/config/gfs/config.stage_ic.j2 @@ -15,7 +15,7 @@ fi export BASE_IC="{{ BASE_IC }}" # Platform home for staged ICs -export STAGE_IC_YAML_TMPL="${PARMgfs}/stage/master_${NET}.yaml.j2" +export STAGE_IC_YAML_YAML="${PARMgfs}/stage/master_${NET}.yaml.j2" source "${HOMEgfs}/versions/ic.ver" diff --git a/dev/parm/config/gfs/yaml/defaults.yaml b/dev/parm/config/gfs/yaml/defaults.yaml index 72b8dbf9a42..5802aa9aa9d 100644 --- a/dev/parm/config/gfs/yaml/defaults.yaml +++ b/dev/parm/config/gfs/yaml/defaults.yaml @@ -29,8 +29,8 @@ base: NMEM_ENS_GFS_OFFSET: 20 atmanl: - JCB_ALGO_TMPL_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" - JCB_ALGO_TMPL_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar-fv3inc.yaml.j2" + JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar.yaml.j2" + JCB_ALGO_YAML_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_3dvar-fv3inc.yaml.j2" STATICB_TYPE: "gsibec" LAYOUT_X_ATMANL: 8 LAYOUT_Y_ATMANL: 8 @@ -38,10 +38,10 @@ atmanl: IO_LAYOUT_Y: 1 atmensanl: - JCB_ALGO_TMPL_LETKF: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2" - JCB_ALGO_TMPL_OBS: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_observer.yaml.j2" - JCB_ALGO_TMPL_SOL: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" - JCB_ALGO_TMPL_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf-fv3inc.yaml.j2" + JCB_ALGO_YAML_LETKF: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf.yaml.j2" + JCB_ALGO_YAML_OBS: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_observer.yaml.j2" + JCB_ALGO_YAML_SOL: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf_solver.yaml.j2" + JCB_ALGO_YAML_FV3INC: "${PARMgfs}/gdas/atm/jcb-prototype_lgetkf-fv3inc.yaml.j2" LAYOUT_X_ATMENSANL: 8 LAYOUT_Y_ATMENSANL: 8 IO_LAYOUT_X: 1 @@ -60,7 +60,7 @@ marineanl: SOCA_ANL_GEOM: "${FIXgfs}/gdas/soca/72x35x25/soca" SOCA_OBS_LIST: "${PARMgfs}/gdas/marine/obs/obs_list.yaml.j2" # TODO: This is also repeated in oceanprepobs SOCA_NINNER: 100 - JCB_ALGO_TMPL_VAR: "${PARMgfs}/gdas/marine/jcb-prototype_3dfgat.yaml.j2" + JCB_ALGO_YAML_VAR: "${PARMgfs}/gdas/marine/jcb-prototype_3dfgat.yaml.j2" prepoceanobs: SOCA_INPUT_FIX_DIR: "${FIXgfs}/gdas/soca/72x35x25/soca" diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 662ab4cfe9e..d73a058bf74 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 662ab4cfe9e99e06c19c6e5507f5662b5015f7af +Subproject commit d73a058bf741402cb95adcec00a27784aef8115e diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index bd8a24f9c89..64f002202cf 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -231,7 +231,11 @@ fi #--add GDASApp parm directory #------------------------------ if [[ -d "${HOMEgfs}/sorc/gdas.cd" ]]; then - cd "${HOMEgfs}/parm/gdas" || exit 1 + cd "${HOMEgfs}/parm" || exit 1 + if [[ ! -d gdas ]]; then + mkdir -p gdas + fi + cd gdas || exit 1 declare -a gdasapp_comps=("aero" "atm" "io" "ioda" "snow" "marine" "jcb-gdas" "jcb-algorithms" "anlstat" "analcalc") for comp in "${gdasapp_comps[@]}"; do if [[ -d "${comp}" ]]; then diff --git a/ush/python/pygfs/task/aero_analysis.py b/ush/python/pygfs/task/aero_analysis.py index b060dc1806e..045faea07c4 100644 --- a/ush/python/pygfs/task/aero_analysis.py +++ b/ush/python/pygfs/task/aero_analysis.py @@ -77,7 +77,7 @@ def __init__(self, config): # Create dictionary of Jedi objects expected_keys = ['aeroanlvar'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -119,20 +119,20 @@ def initialize(self) -> None: logger.error(f"Bias correction files or directories do not exist:\n{pformat(bias_dict)}") # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_TMPL, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_YAML}") + crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_YAML, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_YAML}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage files from COM and create working directories - logger.info(f"Staging files prescribed from {self.task_config.INITIALIZE_TMPL}") - aero_var_stage_dict = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) + logger.info(f"Staging files prescribed from {self.task_config.INITIALIZE_YAML}") + aero_var_stage_dict = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) FileHandler(aero_var_stage_dict).sync() logger.debug(f"Staging from COM:\n{pformat(aero_var_stage_dict)}") @@ -195,8 +195,8 @@ def finalize(self) -> None: satlist = glob.glob(os.path.join(self.task_config.DATA, 'bc', '*satbias*nc')) # copy files back to COM - logger.info(f"Copying files to COM based on {self.task_config.AERO_FINALIZE_VARIATIONAL_TMPL}") - aero_var_final_list = parse_j2yaml(self.task_config.AERO_FINALIZE_VARIATIONAL_TMPL, self.task_config) + logger.info(f"Copying files to COM based on {self.task_config.AERO_FINALIZE_VARIATIONAL_YAML}") + aero_var_final_list = parse_j2yaml(self.task_config.AERO_FINALIZE_VARIATIONAL_YAML, self.task_config) FileHandler(aero_var_final_list).sync() # tar aerosol bias correction files to ROTDIR @@ -235,22 +235,22 @@ def _add_fms_cube_sphere_increments(self) -> None: self.add_fv3_increments(inc_template, bkg_template, incvars) @logit(logger) - def add_fv3_increments(self, inc_file_tmpl: str, bkg_file_tmpl: str, incvars: List) -> None: + def add_fv3_increments(self, inc_file_YAML: str, bkg_file_YAML: str, incvars: List) -> None: """Add cubed-sphere increments to cubed-sphere backgrounds Parameters ---------- - inc_file_tmpl : str + inc_file_YAML : str template of the FV3 increment file of the form: 'filetype.tile{tilenum}.nc' - bkg_file_tmpl : str + bkg_file_YAML : str template of the FV3 background file of the form: 'filetype.tile{tilenum}.nc' incvars : List List of increment variables to add to the background """ for itile in range(1, self.task_config.ntiles + 1): - inc_path = inc_file_tmpl.format(tilenum=itile) - bkg_path = bkg_file_tmpl.format(tilenum=itile) + inc_path = inc_file_YAML.format(tilenum=itile) + bkg_path = bkg_file_YAML.format(tilenum=itile) with Dataset(inc_path, mode='r') as incfile, Dataset(bkg_path, mode='a') as rstfile: for vname in incvars: increment = incfile.variables[vname][:] diff --git a/ush/python/pygfs/task/aero_bmatrix.py b/ush/python/pygfs/task/aero_bmatrix.py index a75bad8399c..74e333eae72 100644 --- a/ush/python/pygfs/task/aero_bmatrix.py +++ b/ush/python/pygfs/task/aero_bmatrix.py @@ -69,7 +69,7 @@ def __init__(self, config): # Create dictionary of Jedi objects expected_keys = ['aero_interpbkg', 'aero_diagb', 'aero_diffusion'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self: Task) -> None: @@ -91,13 +91,13 @@ def initialize(self: Task) -> None: """ # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") - jedi_fix_list = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_YAML}") + jedi_fix_list = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_list).sync() # stage files from COM and create working directories - logger.info(f"Staging files from COM and creating working directories {self.task_config.INITIALIZE_TMPL}") - aero_bmat_stage_list = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) + logger.info(f"Staging files from COM and creating working directories {self.task_config.INITIALIZE_YAML}") + aero_bmat_stage_list = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) FileHandler(aero_bmat_stage_list).sync() # initialize JEDI applications @@ -142,6 +142,6 @@ def finalize(self) -> None: """ # save files to COMOUT - logger.info(f"Saving files to COMOUT based on {self.task_config.AERO_BMATRIX_FINALIZE_TMPL}") - aero_bmat_finalize_list = parse_j2yaml(self.task_config.AERO_BMATRIX_FINALIZE_TMPL, self.task_config) + logger.info(f"Saving files to COMOUT based on {self.task_config.AERO_BMATRIX_FINALIZE_YAML}") + aero_bmat_finalize_list = parse_j2yaml(self.task_config.AERO_BMATRIX_FINALIZE_YAML, self.task_config) FileHandler(aero_bmat_finalize_list).sync() diff --git a/ush/python/pygfs/task/analysis_stats.py b/ush/python/pygfs/task/analysis_stats.py index b6003d71876..cfe34d3257f 100644 --- a/ush/python/pygfs/task/analysis_stats.py +++ b/ush/python/pygfs/task/analysis_stats.py @@ -74,12 +74,12 @@ def initialize(self) -> None: # Expected keys are what must be included from the JEDI config file. We can # then loop through ob space list from scripts/exglobal_analysis_stats.py expected_keys = ['aero', 'atmos', 'snow'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) logger.info(f"Copying files to {self.task_config.DATA}/stats") # Extract info from stat config file - analysis_config_dict = parse_j2yaml(self.task_config.BASE_CONFIG_TMPL, self.task_config) + analysis_config_dict = parse_j2yaml(self.task_config.BASE_CONFIG_YAML, self.task_config) # Loop through a copy of ob space list for analysis in self.task_config.STAT_ANALYSES[:]: @@ -168,7 +168,7 @@ def finalize(self, jedi_dict_key: str) -> None: None """ - analysis_config_dict = parse_j2yaml(self.task_config.BASE_CONFIG_TMPL, self.task_config) + analysis_config_dict = parse_j2yaml(self.task_config.BASE_CONFIG_YAML, self.task_config) for analysis_dict in analysis_config_dict[jedi_dict_key]['obs spaces']: statfile = os.path.join(self.task_config.DATA, analysis_dict['output file']) diff --git a/ush/python/pygfs/task/atm_analysis.py b/ush/python/pygfs/task/atm_analysis.py index e889a2d3e31..dae5469a1c3 100644 --- a/ush/python/pygfs/task/atm_analysis.py +++ b/ush/python/pygfs/task/atm_analysis.py @@ -72,7 +72,7 @@ def __init__(self, config: Dict[str, Any]): # Create dictionary of Jedi objects expected_keys = ['atmanlvar', 'atmanlfv3inc'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -118,21 +118,21 @@ def initialize(self) -> None: Jedi.extract_tar_from_filehandler_dict(bias_dict) # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_TMPL, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_YAML}") + crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_YAML, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_YAML}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage static background error files, otherwise it will assume ID matrix logger.info(f"Stage files for STATICB_TYPE {self.task_config.STATICB_TYPE}") if self.task_config.STATICB_TYPE != 'identity': - berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_TMPL, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_YAML, self.task_config) else: berror_staging_dict = {} FileHandler(berror_staging_dict).sync() @@ -141,13 +141,13 @@ def initialize(self) -> None: # stage ensemble files for use in hybrid background error if self.task_config.DOHYBVAR: logger.debug(f"Stage ensemble files for DOHYBVAR {self.task_config.DOHYBVAR}") - fv3ens_staging_dict = parse_j2yaml(self.task_config.STAGE_FV3ENS_TMPL, self.task_config) + fv3ens_staging_dict = parse_j2yaml(self.task_config.STAGE_FV3ENS_YAML, self.task_config) FileHandler(fv3ens_staging_dict).sync() logger.debug(f"Ensemble files:\n{pformat(fv3ens_staging_dict)}") # stage backgrounds - logger.info(f"Staging background files from {self.task_config.STAGE_BKG_TMPL}") - bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) + logger.info(f"Staging background files from {self.task_config.STAGE_BKG_YAML}") + bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_YAML, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") diff --git a/ush/python/pygfs/task/fv3_analysis_calc.py b/ush/python/pygfs/task/fv3_analysis_calc.py index 8e8f392c582..a472ad52888 100644 --- a/ush/python/pygfs/task/fv3_analysis_calc.py +++ b/ush/python/pygfs/task/fv3_analysis_calc.py @@ -70,7 +70,7 @@ def __init__(self, config): expected_keys.append('aero_addincrement') if self.task_config.DO_JEDISNOWDA: expected_keys.append('snow_addincrement') - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -100,14 +100,14 @@ def initialize(self) -> None: self.jedi_dict['snow_addincrement'].initialize(self.task_config) # Stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_YAML}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # Stage background and increment files logger.info(f"Staging background and increment files from COM") - fh_dict = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) + fh_dict = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) FileHandler(fh_dict).sync() logger.debug(f"Background and increment files:\n{pformat(fh_dict)}") diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index ac8e0a83cbf..11d4733f1dd 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -81,7 +81,7 @@ def __init__(self, config): # Construct dictionary of JEDI objects, one for each JEDI application need for the analysis expected_keys = ['var', 'soca_incpostproc', 'soca_diag_stats'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.DET_JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML_DET, self.task_config, expected_keys) @logit(logger) def initialize(self: Task) -> None: @@ -109,7 +109,7 @@ def initialize(self: Task) -> None: # stage fix files logger.info(f"Staging SOCA fix files from {self.task_config.INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) + soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_YAML, self.task_config) FileHandler(soca_fix_list).sync() # prepare the deterministic MOM6 input.nml @@ -129,17 +129,17 @@ def initialize(self: Task) -> None: # stage the soca utility yamls (gridgen, fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMsoca}") - soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_YAML, self.task_config) FileHandler(soca_utility_list).sync() # stage the ocean and ice backgrounds for FGAT logger.info(f"Staging files needed for deterministic analysis from COM") - bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_YAML, self.task_config) FileHandler(bkg_list).sync() # stage files and link directories from B-matrix job needed for deterministic analysis logger.info(f"Staging files needed for deterministic analysis from COM") - soca_files_list = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) + soca_files_list = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) FileHandler(soca_files_list).sync() # assert that dates of the history files are correct @@ -198,7 +198,7 @@ def finalize(self: Task) -> None: # Save output files to COM logger.info(f"Copy files to ROTDIR") - soca_finalize_list = parse_j2yaml(self.task_config.FINALIZE_TMPL, self.task_config) + soca_finalize_list = parse_j2yaml(self.task_config.FINALIZE_YAML, self.task_config) FileHandler(soca_finalize_list).sync() # Save obs diag statistics to COM (success is optional) diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index d2f8190d97a..d493b477351 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -75,7 +75,7 @@ def __init__(self, config): # Create dictionary of Jedi objects expected_keys = ['gridgen', 'soca_diagb', 'soca_parameters_diffusion_vt', 'soca_setcorscales', 'soca_parameters_diffusion_hz', 'soca_ensb', 'soca_ensweights', 'soca_chgres'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self: Task) -> None: @@ -102,7 +102,7 @@ def initialize(self: Task) -> None: # stage fix files logger.info(f"Staging SOCA fix files from {self.task_config.INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) + soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_YAML, self.task_config) FileHandler(soca_fix_list).sync() # prepare the deterministic MOM6 input.nml @@ -115,12 +115,12 @@ def initialize(self: Task) -> None: # stage backgrounds # TODO(G): Check ocean backgrounds dates for consistency logger.info(f"Staging SOCA backgrounds") - bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_YAML, self.task_config) FileHandler(bkg_list).sync() # stage the soca utility yamls (fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files") - soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_YAML, self.task_config) FileHandler(soca_utility_list).sync() # initialize vtscales python script @@ -141,7 +141,7 @@ def initialize(self: Task) -> None: # stage ensemble members for the hybrid background error if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: logger.debug(f"Stage ensemble members for the hybrid background error") - letkf_stage_list = parse_j2yaml(self.task_config.STAGE_ENS_BKG_TMPL, self.task_config) + letkf_stage_list = parse_j2yaml(self.task_config.STAGE_ENS_BKG_YAML, self.task_config) FileHandler(letkf_stage_list).sync() # create the symbolic link to the static B-matrix directory @@ -221,5 +221,5 @@ def finalize(self: Task) -> None: # Save output files to COM logger.info(f"Copy files to ROTDIR") - soca_finalize_list = parse_j2yaml(self.task_config.FINALIZE_TMPL, self.task_config) + soca_finalize_list = parse_j2yaml(self.task_config.FINALIZE_YAML, self.task_config) FileHandler(soca_finalize_list).sync() diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py index 3199b455700..196e23090cd 100644 --- a/ush/python/pygfs/task/marine_letkf.py +++ b/ush/python/pygfs/task/marine_letkf.py @@ -114,15 +114,15 @@ def initialize(self): jcb_config = {**jcb_base_config, **stageconfig} # stage letkf-specific files - letkf_stage_list = parse_j2yaml(self.task_config.INITIALIZE_TMPL, jcb_config) + letkf_stage_list = parse_j2yaml(self.task_config.INITIALIZE_YAML, jcb_config) FileHandler(letkf_stage_list).sync() # stage ensemble background files - soca_ens_bkg_stage_list = parse_j2yaml(self.task_config.STAGE_ENS_BKG_TMPL, stageconfig) + soca_ens_bkg_stage_list = parse_j2yaml(self.task_config.STAGE_ENS_BKG_YAML, stageconfig) FileHandler(soca_ens_bkg_stage_list).sync() # "observations" is expected by later JCB code to populate it with config info, - jcb_config['observations'] = parse_j2yaml(self.task_config.OBS_LIST_TMPL, jcb_config)['observations'] + jcb_config['observations'] = parse_j2yaml(self.task_config.OBS_LIST_YAML, jcb_config)['observations'] obsconfigfile = os.path.join(self.task_config['PARMgfs'], 'gdas/marine/obs/obs_list_base.yaml.j2') jcb_config['observations'] = parse_j2yaml(obsconfigfile, jcb_config) @@ -210,7 +210,7 @@ def finalize(self): keys = ['current_cycle', 'DATA', 'NMEM_ENS', 'WINDOW_BEGIN', 'GDUMP_ENS', 'PARMgfs', 'ROTDIR', 'COM_OCEAN_LETKF_TMPL', 'COM_ICE_LETKF_TMPL', 'COMOUT_OCEAN_LETKF', 'COMOUT_ICE_LETKF', 'WINDOW_MIDDLE', - 'OBS_LIST_TMPL', 'COMOUT_CONF', 'letkf_yaml_file'] + 'OBS_LIST_YAML', 'COMOUT_CONF', 'letkf_yaml_file'] for key in keys: letkfsaveconf[key] = self.task_config[key] @@ -232,5 +232,5 @@ def finalize(self): yamls_to_copy = [] yamls_to_copy.append([letkfsaveconf.letkf_yaml_file, os.path.join(letkfsaveconf.COMOUT_CONF, 'soca_letkf.yaml')]) FileHandler({'copy': yamls_to_copy}).sync() - letkf_save_list = parse_j2yaml(self.task_config.FINALIZE_TMPL, letkfsaveconf) + letkf_save_list = parse_j2yaml(self.task_config.FINALIZE_YAML, letkfsaveconf) FileHandler(letkf_save_list).sync() diff --git a/ush/python/pygfs/task/marine_recenter.py b/ush/python/pygfs/task/marine_recenter.py index e2d0a72964e..d5c4ffc93ed 100644 --- a/ush/python/pygfs/task/marine_recenter.py +++ b/ush/python/pygfs/task/marine_recenter.py @@ -64,7 +64,7 @@ def __init__(self, config: Dict) -> None: # Construct dictionary of JEDI objects, one for each JEDI application need for the analysis expected_keys = ['gridgen', 'ens_handler'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self): @@ -79,7 +79,7 @@ def initialize(self): # stage fix files logger.info(f"Staging SOCA fix files from {self.task_config.INPUT_FIX_DIR}") - soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) + soca_fix_list = parse_j2yaml(self.task_config.STAGE_FIX_YAML, self.task_config) FileHandler(soca_fix_list).sync() # prepare the MOM6 input.nml @@ -87,16 +87,16 @@ def initialize(self): # stage the soca utility yamls (gridgen, fields and ufo mapping yamls) logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMsoca}") - soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_TMPL, self.task_config) + soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_YAML, self.task_config) FileHandler(soca_utility_list).sync() # stage backgrounds - bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_TMPL, self.task_config) + bkg_list = parse_j2yaml(self.task_config.STAGE_DET_BKG_YAML, self.task_config) FileHandler(bkg_list).sync() # stage the ensemble members and CICE restarts logger.info("---------------- Stage ensemble members and CICE restarts") - soca_ens_list = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) + soca_ens_list = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) FileHandler(soca_ens_list).sync() # initialize JEDI applications @@ -135,5 +135,5 @@ def finalize(self): # Save recentered increments and ensemble statistics logger.info("---------------- Save recentered increments and ensemble statistics") - soca_ens_list = parse_j2yaml(self.task_config.FINALIZE_TMPL, self.task_config) + soca_ens_list = parse_j2yaml(self.task_config.FINALIZE_YAML, self.task_config) FileHandler(soca_ens_list).sync() diff --git a/ush/python/pygfs/task/snow_analysis.py b/ush/python/pygfs/task/snow_analysis.py index e028cfc09d7..05ef63a73bf 100644 --- a/ush/python/pygfs/task/snow_analysis.py +++ b/ush/python/pygfs/task/snow_analysis.py @@ -79,7 +79,7 @@ def __init__(self, config: Dict[str, Any]): # Create JEDI object dictionary expected_keys = ['snowanlvar'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -104,8 +104,8 @@ def initialize(self) -> None: """ # stage backgrounds - logger.info(f"Staging background files from {self.task_config.STAGE_BKG_TMPL}") - bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) + logger.info(f"Staging background files from {self.task_config.STAGE_BKG_YAML}") + bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_YAML, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") @@ -116,19 +116,19 @@ def initialize(self) -> None: logger.debug(f"Observation files:\n{pformat(obs_dict)}") # stage GTS bufr2ioda mapping YAML files - logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.STAGE_GTS_TMPL}") - gts_mapping_list = parse_j2yaml(self.task_config.STAGE_GTS_TMPL, self.task_config) + logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.STAGE_GTS_YAML}") + gts_mapping_list = parse_j2yaml(self.task_config.STAGE_GTS_YAML, self.task_config) FileHandler(gts_mapping_list).sync() # stage FV3-JEDI fix files - logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_YAML}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # staging B error files logger.info("Stage files for static background error") - berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_TMPL, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_YAML, self.task_config) FileHandler(berror_staging_dict).sync() logger.debug(f"Background error files:\n{pformat(berror_staging_dict)}") diff --git a/ush/python/pygfs/task/snowens_analysis.py b/ush/python/pygfs/task/snowens_analysis.py index 36bb7cd9df1..7fd6e12e5cc 100644 --- a/ush/python/pygfs/task/snowens_analysis.py +++ b/ush/python/pygfs/task/snowens_analysis.py @@ -80,7 +80,7 @@ def __init__(self, config: Dict[str, Any]): # Create JEDI object dictionary expected_keys = ['snowanlvar', 'esnowanlensmean'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -105,14 +105,14 @@ def initialize(self) -> None: """ # stage backgrounds - logger.info(f"Staging background files from {self.task_config.STAGE_BKG_TMPL}") - bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) + logger.info(f"Staging background files from {self.task_config.STAGE_BKG_YAML}") + bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_YAML, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Background files:\n{pformat(bkg_staging_dict)}") # stage orography - logger.info(f"Staging orography files from {self.task_config.STAGE_OROG_TMPL}") - orog_staging_dict = parse_j2yaml(self.task_config.STAGE_OROG_TMPL, self.task_config) + logger.info(f"Staging orography files from {self.task_config.STAGE_OROG_YAML}") + orog_staging_dict = parse_j2yaml(self.task_config.STAGE_OROG_YAML, self.task_config) FileHandler(orog_staging_dict).sync() logger.debug(f"Orography files:\n{pformat(orog_staging_dict)}") # note JEDI will try to read the orog files for each member, let's just symlink @@ -134,19 +134,19 @@ def initialize(self) -> None: logger.debug(f"Observation files:\n{pformat(obs_dict)}") # stage GTS bufr2ioda mapping YAML files - logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.STAGE_GTS_TMPL}") - gts_mapping_list = parse_j2yaml(self.task_config.STAGE_GTS_TMPL, self.task_config) + logger.info(f"Staging GTS bufr2ioda mapping YAML files from {self.task_config.STAGE_GTS_YAML}") + gts_mapping_list = parse_j2yaml(self.task_config.STAGE_GTS_YAML, self.task_config) FileHandler(gts_mapping_list).sync() # stage FV3-JEDI fix files - logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_YAML}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # staging B error files logger.info("Stage files for static background error") - berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_TMPL, self.task_config) + berror_staging_dict = parse_j2yaml(self.task_config.STAGE_BERROR_YAML, self.task_config) FileHandler(berror_staging_dict).sync() logger.debug(f"Background error files:\n{pformat(berror_staging_dict)}") From be4241b1b9aa66740b35092f1ec058bbf30ba474 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Tue, 2 Sep 2025 13:29:39 +0000 Subject: [PATCH 17/41] INITIALIZE->STAGE and FINALIZE->save --- dev/parm/config/gcafs/config.aeroanl.j2 | 7 +++---- dev/parm/config/gcafs/config.aeroanlgenb | 5 +++-- dev/parm/config/gfs/config.aeroanl.j2 | 8 +++----- dev/parm/config/gfs/config.aeroanlgenb | 6 +++--- dev/parm/config/gfs/config.analcalc_fv3jedi | 6 ++---- dev/parm/config/gfs/config.atmanl.j2 | 3 +-- dev/parm/config/gfs/config.atmensanl.j2 | 4 +--- dev/parm/config/gfs/config.ecen_fv3jedi | 6 ++---- dev/parm/config/gfs/config.esnowanl.j2 | 3 +-- dev/parm/config/gfs/config.marineanl.j2 | 3 +-- dev/parm/config/gfs/config.marineanlecen | 4 ++-- dev/parm/config/gfs/config.marineanlfinal | 2 +- dev/parm/config/gfs/config.marineanlinit | 2 +- dev/parm/config/gfs/config.marineanlletkf | 5 +++-- dev/parm/config/gfs/config.marinebmat | 2 +- dev/parm/config/gfs/config.snowanl.j2 | 3 +-- dev/parm/config/gfs/config.stage_ic.j2 | 2 +- sorc/gdas.cd | 2 +- ush/python/pygfs/task/aero_analysis.py | 13 ++++++------- ush/python/pygfs/task/aero_bmatrix.py | 12 ++++++------ ush/python/pygfs/task/fv3_analysis_calc.py | 3 +-- ush/python/pygfs/task/marine_analysis.py | 8 ++++---- ush/python/pygfs/task/marine_bmat.py | 4 ++-- ush/python/pygfs/task/marine_letkf.py | 8 ++++---- ush/python/pygfs/task/marine_recenter.py | 8 ++++---- 25 files changed, 58 insertions(+), 71 deletions(-) diff --git a/dev/parm/config/gcafs/config.aeroanl.j2 b/dev/parm/config/gcafs/config.aeroanl.j2 index 04029626b0b..f35d54ff91c 100644 --- a/dev/parm/config/gcafs/config.aeroanl.j2 +++ b/dev/parm/config/gcafs/config.aeroanl.j2 @@ -23,13 +23,12 @@ export STATICB_TYPE='diffusion' export BERROR_YAML="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" +export STAGE_YAML="${PARMgfs}/gdas/aero/aero_det_stage.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/aero_det_save.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" - -export INITIALIZE_YAML="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" -export FINALIZE_YAML="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" export AERO_BMATRIX_RESCALE_YAML="aero_gen_bmatrix_rescale_default.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" diff --git a/dev/parm/config/gcafs/config.aeroanlgenb b/dev/parm/config/gcafs/config.aeroanlgenb index c2628862271..fc4fd2243fd 100644 --- a/dev/parm/config/gcafs/config.aeroanlgenb +++ b/dev/parm/config/gcafs/config.aeroanlgenb @@ -9,8 +9,9 @@ echo "BEGIN: config.aeroanlgenb" source "${EXPDIR}/config.resources" aeroanlgenb export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" -export INITIALIZE_YAML="${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" -export FINALIZE_YAML="${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" +export STAGE_YAML="${PARMgfs}/gdas/aero/aero_bmat_stage.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/aero/aero_bmat_save.yaml.j2" + export RESCALE_YAML="${PARMgfs}/gdas/jcb-gdas/aero/algorithm/aero_gen_bmatrix_rescale_default.yaml.j2" export aero_diffusion_iter=200 export aero_diffusion_horiz_len=300e3 diff --git a/dev/parm/config/gfs/config.aeroanl.j2 b/dev/parm/config/gfs/config.aeroanl.j2 index b1ffb4fd425..ad9d4a40192 100644 --- a/dev/parm/config/gfs/config.aeroanl.j2 +++ b/dev/parm/config/gfs/config.aeroanl.j2 @@ -23,13 +23,11 @@ export STATICB_TYPE='diffusion' export BERROR_YAML="aero_background_error_static_${STATICB_TYPE}" export BERROR_DATA_DIR="${FIXgfs}/gdas/aero/clim_b" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" - -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" - -export INITIALIZE_YAML="${PARMgfs}/gdas/aero/aero_det_initialize.yaml.j2" -export FINALIZE_YAML="${PARMgfs}/gdas/aero_det_finalize.yaml.j2" +export STAGE_YAML="${PARMgfs}/gdas/aero/aero_det_stage.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/aero_det_save.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gfs/config.aeroanlgenb b/dev/parm/config/gfs/config.aeroanlgenb index 17d90c843c9..7fadfe33da2 100644 --- a/dev/parm/config/gfs/config.aeroanlgenb +++ b/dev/parm/config/gfs/config.aeroanlgenb @@ -9,9 +9,9 @@ echo "BEGIN: config.aeroanlgenb" source "${EXPDIR}/config.resources" aeroanlgenb export JEDI_CONFIG_YAML"${PARMgfs}/gdas/aero/aero_bmat_jedi_config.yaml.j2" -export JCB_BASE_YAML"${PARMgfs}/gdas/aero/jcb-base.yaml.j2" -export INITIALIZE_YAML"${PARMgfs}/gdas/aero/aero_bmat_initialize.yaml.j2" -export FINALIZE_YAML"${PARMgfs}/gdas/aero/aero_bmat_finalize.yaml.j2" +export STAGE_YAML"${PARMgfs}/gdas/aero/aero_bmat_stage.yaml.j2" +export SAVE_YAML"${PARMgfs}/gdas/aero/aero_bmat_save.yaml.j2" + export aero_diffusion_iter=200 export aero_diffusion_horiz_len=300e3 export aero_diffusion_fixed_val=20.0 diff --git a/dev/parm/config/gfs/config.analcalc_fv3jedi b/dev/parm/config/gfs/config.analcalc_fv3jedi index c2d61a10dd0..83b7a75394e 100644 --- a/dev/parm/config/gfs/config.analcalc_fv3jedi +++ b/dev/parm/config/gfs/config.analcalc_fv3jedi @@ -14,6 +14,8 @@ export layout_y_analcalc_fv3jedi=2 # Get task specific resources . "${EXPDIR}/config.resources" analcalc_fv3jedi +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_YAML="${PARMgfs}/gdas/analcalc/analcalc_stage.yaml.j2" export JEDI_CONFIG_YAML="${PARMgfs}/gdas/analcalc/analcalc_jedi_config.yaml.j2" if [[ ${DOHYBVAR} = "YES" ]]; then @@ -22,8 +24,4 @@ else export CASE_ANL=${CASE} fi -export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" - -export INITIALIZE_YAML="${PARMgfs}/gdas/analcalc/analcalc_initialize.yaml.j2" - echo "END: config.analcalc_fv3jedi" diff --git a/dev/parm/config/gfs/config.atmanl.j2 b/dev/parm/config/gfs/config.atmanl.j2 index 7cded0db97f..14d2acfa959 100644 --- a/dev/parm/config/gfs/config.atmanl.j2 +++ b/dev/parm/config/gfs/config.atmanl.j2 @@ -21,10 +21,9 @@ else export BERROR_YAML="atmosphere_background_error_static_${STATICB_TYPE}" fi +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_det_jedi_config.yaml.j2" export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" - -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_det_jedi_config.yaml.j2" export STAGE_BKG_YAML="${PARMgfs}/gdas/atm/atm_det_stage_bkg.yaml.j2" export STAGE_BERROR_YAML="${PARMgfs}/gdas/atm/atm_det_stage_berror_${STATICB_TYPE}.yaml.j2" export STAGE_FV3ENS_YAML="${PARMgfs}/gdas/atm/atm_det_stage_fv3ens.yaml.j2" diff --git a/dev/parm/config/gfs/config.atmensanl.j2 b/dev/parm/config/gfs/config.atmensanl.j2 index 0e4b2114b5a..a8d72c7889d 100644 --- a/dev/parm/config/gfs/config.atmensanl.j2 +++ b/dev/parm/config/gfs/config.atmensanl.j2 @@ -12,11 +12,9 @@ export JCB_ALGO_YAML_FV3INC="{{ JCB_ALGO_YAML_FV3INC }}" export INTERP_METHOD='barycentric' +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ens_jedi_config.yaml.j2" export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/atm/atm_stage_crtm_coeff.yaml.j2" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" - -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ens_jedi_config.yaml.j2" - export STAGE_BKG_YAML="${PARMgfs}/gdas/atm/atm_ens_stage_bkg.yaml.j2" export layout_x_atmensanl="{{ LAYOUT_X_ATMENSANL }}" diff --git a/dev/parm/config/gfs/config.ecen_fv3jedi b/dev/parm/config/gfs/config.ecen_fv3jedi index b36772aa8cb..1b243c3a2d7 100644 --- a/dev/parm/config/gfs/config.ecen_fv3jedi +++ b/dev/parm/config/gfs/config.ecen_fv3jedi @@ -15,6 +15,8 @@ export layout_y_ecen_fv3jedi=1 . "${EXPDIR}/config.resources" ecen_fv3jedi export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ecen_jedi_config.yaml.j2" +export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" +export STAGE_YAML="${PARMgfs}/gdas/atm/atm_ecen_stage.yaml.j2" if [[ ${DOHYBVAR} = "YES" ]]; then export CASE_ANL=${CASE_ENS} @@ -22,8 +24,4 @@ else export CASE_ANL=${CASE} fi -export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" - -export INITIALIZE_YAML="${PARMgfs}/gdas/atm/atm_ecen_initialize.yaml.j2" - echo "END: config.ecen_fv3jedi" diff --git a/dev/parm/config/gfs/config.esnowanl.j2 b/dev/parm/config/gfs/config.esnowanl.j2 index 095c62059fe..a1398aacbbc 100644 --- a/dev/parm/config/gfs/config.esnowanl.j2 +++ b/dev/parm/config/gfs/config.esnowanl.j2 @@ -17,9 +17,8 @@ export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" export STAGE_OROG_YAML="${PARMgfs}/gdas/snow/snow_stage_orog.yaml.j2" export STAGE_BERROR_YAML="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" - export STAGE_BKG_YAML="${PARMgfs}/gdas/snow/snow_ens_stage_bkg.yaml.j2" -export FINALIZE_YAML="${PARMgfs}/gdas/snow/snow_ens_finalize.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/snow/snow_ens_save.yaml.j2" export STAGE_GTS_YAML="${PARMgfs}/gdas/snow/obs/config/bufr2ioda_mapping.yaml.j2" diff --git a/dev/parm/config/gfs/config.marineanl.j2 b/dev/parm/config/gfs/config.marineanl.j2 index c666066e16f..f365eeb563a 100644 --- a/dev/parm/config/gfs/config.marineanl.j2 +++ b/dev/parm/config/gfs/config.marineanl.j2 @@ -7,7 +7,6 @@ echo "BEGIN: config.marineanl" # TODO: This should be sources in a config file specific to marine deterministic analysis # and renamed to remove _DET -export JEDI_CONFIG_YAML_DET="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" @@ -19,9 +18,9 @@ export NINNER="{{ SOCA_NINNER }}" export DOMAIN_STACK_SIZE=116640000 #TODO: Make the stack size resolution dependent export MARINE_JCB_GDAS_OBS="${PARMgfs}/gdas/jcb-gdas/observations/marine" +export JEDI_CONFIG_YAML_DET="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" export STAGE_FIX_YAML="${PARMgfs}/gdas/marine/marine_stage_fix_${OCNRES}.yaml.j2" export STAGE_UTILITIES_YAML="${PARMgfs}/gdas/marine/marine_stage_utilities.yaml.j2" - export STAGE_DET_BKG_YAML="${PARMgfs}/gdas/marine/marine_det_stage_bkg.yaml.j2" export STAGE_ENS_BKG_YAML="${PARMgfs}/gdas/marine/marine_ens_stage_bkg.yaml.j2" diff --git a/dev/parm/config/gfs/config.marineanlecen b/dev/parm/config/gfs/config.marineanlecen index a7a534a10c3..b5bd66b3cf7 100644 --- a/dev/parm/config/gfs/config.marineanlecen +++ b/dev/parm/config/gfs/config.marineanlecen @@ -9,7 +9,7 @@ echo "BEGIN: config.marineanlecen" source "${EXPDIR}/config.resources" marineanlecen export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_ecen_jedi_config.yaml.j2" -export INITIALIZE_YAML="${PARMgfs}/gdas/marine/marine_ecen_initialize.yaml.j2" -export FINALIZE_YAML="${PARMgfs}/gdas/marine/marine_ecen_finalize.yaml.j2" +export STAGE_YAML="${PARMgfs}/gdas/marine/marine_ecen_stage.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/marine/marine_ecen_save.yaml.j2" echo "END: config.marineanlecen" diff --git a/dev/parm/config/gfs/config.marineanlfinal b/dev/parm/config/gfs/config.marineanlfinal index 135bc33bf80..9bc0af6e836 100644 --- a/dev/parm/config/gfs/config.marineanlfinal +++ b/dev/parm/config/gfs/config.marineanlfinal @@ -5,7 +5,7 @@ echo "BEGIN: config.marineanlfinal" -export FINALIZE_YAML="${PARMgfs}/gdas/marine/marine_det_finalize.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/marine/marine_det_save.yaml.j2" # Get task specific resources . "${EXPDIR}/config.resources" marineanlfinal diff --git a/dev/parm/config/gfs/config.marineanlinit b/dev/parm/config/gfs/config.marineanlinit index afed0a96772..4af25cd7b8e 100644 --- a/dev/parm/config/gfs/config.marineanlinit +++ b/dev/parm/config/gfs/config.marineanlinit @@ -5,7 +5,7 @@ echo "BEGIN: config.marineanlinit" -export INITIALIZE_YAML="${PARMgfs}/gdas/marine/marine_det_initialize.yaml.j2" +export STAGE_YAML="${PARMgfs}/gdas/marine/marine_det_stage.yaml.j2" # Get task specific resources . "${EXPDIR}/config.resources" marineanlinit diff --git a/dev/parm/config/gfs/config.marineanlletkf b/dev/parm/config/gfs/config.marineanlletkf index 8c12e757915..632b922c6d9 100644 --- a/dev/parm/config/gfs/config.marineanlletkf +++ b/dev/parm/config/gfs/config.marineanlletkf @@ -10,8 +10,9 @@ echo "BEGIN: config.marineanlletkf" export LETKF_EXEC="${EXECgfs}/gdas.x" export LETKF_YAML_YAML="${PARMgfs}/gdas/marine/letkf/letkf.yaml.j2" -export INITIALIZE_YAML="${PARMgfs}/gdas/marine/marine_ens_initialize.yaml.j2" -export FINALIZE_YAML="${PARMgfs}/gdas/marine/marine_ens_finalize.yaml.j2" + +export STAGE_YAML="${PARMgfs}/gdas/marine/marine_ens_stage.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/marine/marine_ens_save.yaml.j2" export GRIDGEN_EXEC="${EXECgfs}/gdas_soca_gridgen.x" export GRIDGEN_YAML="${HOMEgfs}/sorc/gdas.cd/parm/jcb-gdas/algorithm/marine/soca_gridgen.yaml.j2" diff --git a/dev/parm/config/gfs/config.marinebmat b/dev/parm/config/gfs/config.marinebmat index 91c7d05c6a6..eb87a231f93 100644 --- a/dev/parm/config/gfs/config.marinebmat +++ b/dev/parm/config/gfs/config.marinebmat @@ -9,6 +9,6 @@ echo "BEGIN: config.marinebmat" . "${EXPDIR}/config.resources" marinebmat export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" -export FINALIZE_YAML="${PARMgfs}/gdas/marine/marine_bmat_finalize.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/marine/marine_bmat_save.yaml.j2" echo "END: config.marinebmat" diff --git a/dev/parm/config/gfs/config.snowanl.j2 b/dev/parm/config/gfs/config.snowanl.j2 index e1e43b7dc42..12988ef7570 100644 --- a/dev/parm/config/gfs/config.snowanl.j2 +++ b/dev/parm/config/gfs/config.snowanl.j2 @@ -20,12 +20,11 @@ export IMS2IODACONV="${USHgfs}/imsfv3_scf2ioda.py" export APPLY_INCR_EXE="${EXECgfs}/gdas_apply_incr.x" export APPLY_INCR_NML_TMPL="${PARMgfs}/gdas/snow/apply_incr_nml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snow/snow_det_jedi_config.yaml.j2" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/snow/snow_stage_jedi_fix.yaml.j2" export STAGE_BKG_YAML="${PARMgfs}/gdas/snow/snow_det_stage_bkg.yaml.j2" export STAGE_BERROR_YAML="${PARMgfs}/gdas/snow/snow_stage_berror.yaml.j2" -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/snow/snow_det_jedi_config.yaml.j2" - export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/dev/parm/config/gfs/config.stage_ic.j2 b/dev/parm/config/gfs/config.stage_ic.j2 index 576578bf0eb..66b2d375332 100644 --- a/dev/parm/config/gfs/config.stage_ic.j2 +++ b/dev/parm/config/gfs/config.stage_ic.j2 @@ -15,7 +15,7 @@ fi export BASE_IC="{{ BASE_IC }}" # Platform home for staged ICs -export STAGE_IC_YAML_YAML="${PARMgfs}/stage/master_${NET}.yaml.j2" +export STAGE_IC_YAML_TMPL="${PARMgfs}/stage/master_${NET}.yaml.j2" source "${HOMEgfs}/versions/ic.ver" diff --git a/sorc/gdas.cd b/sorc/gdas.cd index d73a058bf74..ed5cdfdd9ab 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit d73a058bf741402cb95adcec00a27784aef8115e +Subproject commit ed5cdfdd9ab3d31e66c7c339177aff4af7f56469 diff --git a/ush/python/pygfs/task/aero_analysis.py b/ush/python/pygfs/task/aero_analysis.py index 045faea07c4..28310ea1643 100644 --- a/ush/python/pygfs/task/aero_analysis.py +++ b/ush/python/pygfs/task/aero_analysis.py @@ -131,10 +131,9 @@ def initialize(self) -> None: logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage files from COM and create working directories - logger.info(f"Staging files prescribed from {self.task_config.INITIALIZE_YAML}") - aero_var_stage_dict = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) - FileHandler(aero_var_stage_dict).sync() - logger.debug(f"Staging from COM:\n{pformat(aero_var_stage_dict)}") + logger.info(f"Staging files prescribed from {self.task_config.STAGE_YAML}") + stage_dict = parse_j2yaml(self.task_config.STAGE_YAML, self.task_config) + FileHandler(stage_dict).sync() # initialize JEDI variational application logger.info(f"Initializing JEDI variational DA application") @@ -195,9 +194,9 @@ def finalize(self) -> None: satlist = glob.glob(os.path.join(self.task_config.DATA, 'bc', '*satbias*nc')) # copy files back to COM - logger.info(f"Copying files to COM based on {self.task_config.AERO_FINALIZE_VARIATIONAL_YAML}") - aero_var_final_list = parse_j2yaml(self.task_config.AERO_FINALIZE_VARIATIONAL_YAML, self.task_config) - FileHandler(aero_var_final_list).sync() + logger.info(f"Copying files to COM based on {self.task_config.SAVE_YAML}") + save_dict = parse_j2yaml(self.task_config.SAVE_YAML, self.task_config) + FileHandler(save_dict).sync() # tar aerosol bias correction files to ROTDIR logger.info(f"Creating aerosol bias correction tar file {aertar}") diff --git a/ush/python/pygfs/task/aero_bmatrix.py b/ush/python/pygfs/task/aero_bmatrix.py index 74e333eae72..cc9918d4d77 100644 --- a/ush/python/pygfs/task/aero_bmatrix.py +++ b/ush/python/pygfs/task/aero_bmatrix.py @@ -96,9 +96,9 @@ def initialize(self: Task) -> None: FileHandler(jedi_fix_list).sync() # stage files from COM and create working directories - logger.info(f"Staging files from COM and creating working directories {self.task_config.INITIALIZE_YAML}") - aero_bmat_stage_list = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) - FileHandler(aero_bmat_stage_list).sync() + logger.info(f"Staging files from COM and creating working directories {self.task_config.STAGE_YAML}") + stage_dict = parse_j2yaml(self.task_config.STAGE_YAML, self.task_config) + FileHandler(stage_dict).sync() # initialize JEDI applications self.jedi_dict['aero_interpbkg'].initialize(self.task_config) @@ -142,6 +142,6 @@ def finalize(self) -> None: """ # save files to COMOUT - logger.info(f"Saving files to COMOUT based on {self.task_config.AERO_BMATRIX_FINALIZE_YAML}") - aero_bmat_finalize_list = parse_j2yaml(self.task_config.AERO_BMATRIX_FINALIZE_YAML, self.task_config) - FileHandler(aero_bmat_finalize_list).sync() + logger.info(f"Saving files to COMOUT based on {self.task_config.SAVE_YAML}") + save_dict = parse_j2yaml(self.task_config.SAVE_YAML, self.task_config) + FileHandler(save_dict).sync() diff --git a/ush/python/pygfs/task/fv3_analysis_calc.py b/ush/python/pygfs/task/fv3_analysis_calc.py index a472ad52888..a287c82ad4e 100644 --- a/ush/python/pygfs/task/fv3_analysis_calc.py +++ b/ush/python/pygfs/task/fv3_analysis_calc.py @@ -107,9 +107,8 @@ def initialize(self) -> None: # Stage background and increment files logger.info(f"Staging background and increment files from COM") - fh_dict = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) + fh_dict = parse_j2yaml(self.task_config.STAGE_YAML, self.task_config) FileHandler(fh_dict).sync() - logger.debug(f"Background and increment files:\n{pformat(fh_dict)}") @logit(logger) def execute(self) -> None: diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 11d4733f1dd..5e104a22962 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -139,8 +139,8 @@ def initialize(self: Task) -> None: # stage files and link directories from B-matrix job needed for deterministic analysis logger.info(f"Staging files needed for deterministic analysis from COM") - soca_files_list = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) - FileHandler(soca_files_list).sync() + stage_dict = parse_j2yaml(self.task_config.STAGE_YAML, self.task_config) + FileHandler(stage_dict).sync() # assert that dates of the history files are correct mdau.test_hist_date('./INPUT/MOM.res.nc', self.task_config.MARINE_WINDOW_BEGIN) @@ -198,8 +198,8 @@ def finalize(self: Task) -> None: # Save output files to COM logger.info(f"Copy files to ROTDIR") - soca_finalize_list = parse_j2yaml(self.task_config.FINALIZE_YAML, self.task_config) - FileHandler(soca_finalize_list).sync() + save_dict = parse_j2yaml(self.task_config.SAVE_YAML, self.task_config) + FileHandler(save_dict).sync() # Save obs diag statistics to COM (success is optional) logger.info(f"Copy observation statistics from {self.task_config.DATA} to {self.task_config.COMOUT_OCEAN_ANALYSIS}") diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index d493b477351..58bd4f27505 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -221,5 +221,5 @@ def finalize(self: Task) -> None: # Save output files to COM logger.info(f"Copy files to ROTDIR") - soca_finalize_list = parse_j2yaml(self.task_config.FINALIZE_YAML, self.task_config) - FileHandler(soca_finalize_list).sync() + save_dict = parse_j2yaml(self.task_config.SAVE_YAML, self.task_config) + FileHandler(save_dict).sync() diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py index 196e23090cd..73b96be4b82 100644 --- a/ush/python/pygfs/task/marine_letkf.py +++ b/ush/python/pygfs/task/marine_letkf.py @@ -114,8 +114,8 @@ def initialize(self): jcb_config = {**jcb_base_config, **stageconfig} # stage letkf-specific files - letkf_stage_list = parse_j2yaml(self.task_config.INITIALIZE_YAML, jcb_config) - FileHandler(letkf_stage_list).sync() + stage_dict = parse_j2yaml(self.task_config.STAGE_YAML, jcb_config) + FileHandler(stage_dict).sync() # stage ensemble background files soca_ens_bkg_stage_list = parse_j2yaml(self.task_config.STAGE_ENS_BKG_YAML, stageconfig) @@ -232,5 +232,5 @@ def finalize(self): yamls_to_copy = [] yamls_to_copy.append([letkfsaveconf.letkf_yaml_file, os.path.join(letkfsaveconf.COMOUT_CONF, 'soca_letkf.yaml')]) FileHandler({'copy': yamls_to_copy}).sync() - letkf_save_list = parse_j2yaml(self.task_config.FINALIZE_YAML, letkfsaveconf) - FileHandler(letkf_save_list).sync() + save_dict = parse_j2yaml(self.task_config.SAVE_YAML, letkfsaveconf) + FileHandler(save_dict).sync() diff --git a/ush/python/pygfs/task/marine_recenter.py b/ush/python/pygfs/task/marine_recenter.py index d5c4ffc93ed..501cdbbc2a8 100644 --- a/ush/python/pygfs/task/marine_recenter.py +++ b/ush/python/pygfs/task/marine_recenter.py @@ -96,8 +96,8 @@ def initialize(self): # stage the ensemble members and CICE restarts logger.info("---------------- Stage ensemble members and CICE restarts") - soca_ens_list = parse_j2yaml(self.task_config.INITIALIZE_YAML, self.task_config) - FileHandler(soca_ens_list).sync() + stage_dict = parse_j2yaml(self.task_config.STAGE_YAML, self.task_config) + FileHandler(stage_dict).sync() # initialize JEDI applications logger.info(f"Initializing SOCA gridgen application") @@ -135,5 +135,5 @@ def finalize(self): # Save recentered increments and ensemble statistics logger.info("---------------- Save recentered increments and ensemble statistics") - soca_ens_list = parse_j2yaml(self.task_config.FINALIZE_YAML, self.task_config) - FileHandler(soca_ens_list).sync() + save_dict = parse_j2yaml(self.task_config.SAVE_YAML, self.task_config) + FileHandler(save_dict).sync() From e76679b308ab4a09fbcddb1ef755f07fe6d41e84 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Tue, 2 Sep 2025 15:02:56 +0000 Subject: [PATCH 18/41] Update gdas hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index ed5cdfdd9ab..36a4b9be9a6 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit ed5cdfdd9ab3d31e66c7c339177aff4af7f56469 +Subproject commit 36a4b9be9a6421a5d29c579a85648b4f299d7db1 From fdb5b0d85aae7ca87400770fd17721c7d56a5c56 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Wed, 3 Sep 2025 18:15:30 +0000 Subject: [PATCH 19/41] Debug --- dev/parm/config/gfs/config.marineanlletkf | 2 +- dev/workflow/hosts/hera.yaml | 4 ++-- sorc/gdas.cd | 2 +- ush/python/pygfs/task/atmens_analysis.py | 12 ++++++------ ush/python/pygfs/task/ensemble_recenter.py | 10 +++++----- ush/python/pygfs/task/marine_letkf.py | 4 ++-- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dev/parm/config/gfs/config.marineanlletkf b/dev/parm/config/gfs/config.marineanlletkf index 632b922c6d9..5ef0ecb494d 100644 --- a/dev/parm/config/gfs/config.marineanlletkf +++ b/dev/parm/config/gfs/config.marineanlletkf @@ -9,7 +9,7 @@ echo "BEGIN: config.marineanlletkf" . "${EXPDIR}/config.resources" marineanlletkf export LETKF_EXEC="${EXECgfs}/gdas.x" -export LETKF_YAML_YAML="${PARMgfs}/gdas/marine/letkf/letkf.yaml.j2" +export LETKF_YAML="${PARMgfs}/gdas/marine/letkf/letkf.yaml.j2" export STAGE_YAML="${PARMgfs}/gdas/marine/marine_ens_stage.yaml.j2" export SAVE_YAML="${PARMgfs}/gdas/marine/marine_ens_save.yaml.j2" diff --git a/dev/workflow/hosts/hera.yaml b/dev/workflow/hosts/hera.yaml index 659e35474cd..a57a415b423 100644 --- a/dev/workflow/hosts/hera.yaml +++ b/dev/workflow/hosts/hera.yaml @@ -5,7 +5,7 @@ BASE_DATA: '/scratch3/NCEPDEV/global/role.glopara/data' BASE_IC: '/scratch3/NCEPDEV/global/role.glopara/data/ICSDIR' AERO_INPUTS_DIR: '/scratch3/NCEPDEV/global/role.glopara/data/GEFS_ExtData/20250310' PACKAGEROOT: '/scratch3/NCEPDEV/global/role.glopara/nwpara' -HOMEDIR: '/scratch3/NCEPDEV/da/${USER}' +HOMEDIR: '/scratch3/NCEPDEV/global/${USER}' STMP: '/scratch3/NCEPDEV/stmp/${USER}' PTMP: '/scratch3/NCEPDEV/stmp/${USER}' NOSCRUB: '${HOMEDIR}' @@ -19,7 +19,7 @@ QUEUE: batch PARTITION_BATCH: hera PARTITION_SERVICE: service # HPSS properties -HPSS_PROJECT: emc-da +HPSS_PROJECT: emc-global ARCHCOM_TO: 'hpss' ATARDIR: '/NCEPDEV/${HPSS_PROJECT}/1year/${USER}/${machine}/scratch/${PSLOT}' CHGRP_RSTPROD: 'YES' diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 36a4b9be9a6..5673028adc2 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 36a4b9be9a6421a5d29c579a85648b4f299d7db1 +Subproject commit 5673028adc2afab26f90201165bbb8a4e132a3c0 diff --git a/ush/python/pygfs/task/atmens_analysis.py b/ush/python/pygfs/task/atmens_analysis.py index 253f53686e4..6db19c11166 100644 --- a/ush/python/pygfs/task/atmens_analysis.py +++ b/ush/python/pygfs/task/atmens_analysis.py @@ -70,7 +70,7 @@ def __init__(self, config: Dict[str, Any]): # Create dictionary of JEDI objects expected_keys = ['atmensanlobs', 'atmensanlsol', 'atmensanlfv3inc', 'atmensanlletkf'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -112,20 +112,20 @@ def initialize(self) -> None: Jedi.extract_tar_from_filehandler_dict(bias_dict) # stage CRTM fix files - logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_TMPL}") - crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_TMPL, self.task_config) + logger.info(f"Staging CRTM fix files from {self.task_config.STAGE_CRTM_COEFF_YAML}") + crtm_fix_dict = parse_j2yaml(self.task_config.STAGE_CRTM_COEFF_YAML, self.task_config) FileHandler(crtm_fix_dict).sync() logger.debug(f"CRTM fix files:\n{pformat(crtm_fix_dict)}") # stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_YAML}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # stage backgrounds logger.info(f"Stage ensemble member background files") - bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_TMPL, self.task_config) + bkg_staging_dict = parse_j2yaml(self.task_config.STAGE_BKG_YAML, self.task_config) FileHandler(bkg_staging_dict).sync() logger.debug(f"Ensemble member background files:\n{pformat(bkg_staging_dict)}") diff --git a/ush/python/pygfs/task/ensemble_recenter.py b/ush/python/pygfs/task/ensemble_recenter.py index 66f9572d53e..2f50f45501e 100644 --- a/ush/python/pygfs/task/ensemble_recenter.py +++ b/ush/python/pygfs/task/ensemble_recenter.py @@ -70,7 +70,7 @@ def __init__(self, config): # Create dictionary of Jedi objects expected_keys = ['correction_increment', 'ensemble_recenter'] - self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_TMPL, self.task_config, expected_keys) + self.jedi_dict = Jedi.get_jedi_dict(self.task_config.JEDI_CONFIG_YAML, self.task_config, expected_keys) @logit(logger) def initialize(self) -> None: @@ -97,14 +97,14 @@ def initialize(self) -> None: self.jedi_dict['ensemble_recenter'].initialize(self.task_config) # Stage fix files - logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_TMPL}") - jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_TMPL, self.task_config) + logger.info(f"Staging JEDI fix files from {self.task_config.STAGE_JEDI_FIX_YAML}") + jedi_fix_dict = parse_j2yaml(self.task_config.STAGE_JEDI_FIX_YAML, self.task_config) FileHandler(jedi_fix_dict).sync() logger.debug(f"JEDI fix files:\n{pformat(jedi_fix_dict)}") # Stage background and increment files - logger.info(f"Staging background and increment files from {self.task_config.INITIALIZE_TMPL}") - fh_dict = parse_j2yaml(self.task_config.INITIALIZE_TMPL, self.task_config) + logger.info(f"Staging background and increment files from {self.task_config.STAGE_YAML}") + fh_dict = parse_j2yaml(self.task_config.STAGE_YAML, self.task_config) FileHandler(fh_dict).sync() logger.debug(f"JEDI background and increment files:\n{pformat(fh_dict)}") diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py index 73b96be4b82..85f96179757 100644 --- a/ush/python/pygfs/task/marine_letkf.py +++ b/ush/python/pygfs/task/marine_letkf.py @@ -73,7 +73,7 @@ def initialize(self): logger.info("initialize") # make directories and stage ensemble background files - soca_fix_stage_list = parse_j2yaml(self.task_config.STAGE_FIX_TMPL, self.task_config) + soca_fix_stage_list = parse_j2yaml(self.task_config.STAGE_FIX_YAML, self.task_config) FileHandler(soca_fix_stage_list).sync() stageconfig = AttrDict() keys = ['app_path_observations', @@ -154,7 +154,7 @@ def initialize(self): # make the letkf.yaml # TODO (AFE) switch to fully JCB version - letkf_yaml = parse_j2yaml(self.task_config.LETKF_YAML_TMPL, jcb_config) + letkf_yaml = parse_j2yaml(self.task_config.LETKF_YAML, jcb_config) letkf_yaml.observations.observers = obs_to_use letkf_yaml.save(self.task_config.letkf_yaml_file) From cbe266995174781b511228c2c4e075c01b704aaf Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 4 Sep 2025 17:52:08 +0000 Subject: [PATCH 20/41] Update GDAS hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 5673028adc2..4ba098fb8f8 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 5673028adc2afab26f90201165bbb8a4e132a3c0 +Subproject commit 4ba098fb8f82419a30478cdde8592508346dfaaa From d2615f207bace51a10235702285afe7660959d78 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 4 Sep 2025 17:55:36 +0000 Subject: [PATCH 21/41] Forgot something --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 4ba098fb8f8..64a2e486b5c 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 4ba098fb8f82419a30478cdde8592508346dfaaa +Subproject commit 64a2e486b5c453c454fcc3cf87c321bd4d634aab From 8d887c99b9bbd0d78c6ef5ea9a5a2ca601e0c31f Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:05:28 -0400 Subject: [PATCH 22/41] Update dev/ci/cases/gfsv17/marine3dvar.yaml Co-authored-by: Rahul Mahajan --- dev/ci/cases/gfsv17/marine3dvar.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/ci/cases/gfsv17/marine3dvar.yaml b/dev/ci/cases/gfsv17/marine3dvar.yaml index 0582b001472..e4c9a20fa75 100644 --- a/dev/ci/cases/gfsv17/marine3dvar.yaml +++ b/dev/ci/cases/gfsv17/marine3dvar.yaml @@ -22,5 +22,5 @@ prepoceanobs: marineanl: SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca SOCA_ANL_GEOM: {{ HOMEgfs }}/fix/gdas/soca/720x540x75/soca - SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/marine/obs/obs_list.yaml.j2 + SOCA_OBS_LIST: {{ HOMEgfs }}/parm/gdas/marine/obs/obs_list.yaml.j2 SOCA_NINNER: 100 \ No newline at end of file From 26d19f4c92bdc6ea9cbbae121e9c3db6daedceb0 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:05:38 -0400 Subject: [PATCH 23/41] Update dev/ci/cases/gfsv17/s2sw.yaml Co-authored-by: Rahul Mahajan --- dev/ci/cases/gfsv17/s2sw.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/ci/cases/gfsv17/s2sw.yaml b/dev/ci/cases/gfsv17/s2sw.yaml index 594b7b5e04a..f6127a89846 100644 --- a/dev/ci/cases/gfsv17/s2sw.yaml +++ b/dev/ci/cases/gfsv17/s2sw.yaml @@ -29,5 +29,5 @@ prepoceanobs: marineanl: SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca SOCA_ANL_GEOM: {{ HOMEgfs }}/fix/gdas/soca/720x540x75/soca - SOCA_OBS_LIST: {{ HOMEgfs }}/sorc/gdas.cd/parm/marine/obs/obs_list.yaml.j2 + SOCA_OBS_LIST: {{ HOMEgfs }}/parm/gdas/marine/obs/obs_list.yaml.j2 SOCA_NINNER: 100 From 4bafbce05d7c343ad793c5b40c2374b17de7288e Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:05:54 -0400 Subject: [PATCH 24/41] Update dev/parm/config/gfs/config.analcalc_fv3jedi Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.analcalc_fv3jedi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/parm/config/gfs/config.analcalc_fv3jedi b/dev/parm/config/gfs/config.analcalc_fv3jedi index 83b7a75394e..b0ede30dca5 100644 --- a/dev/parm/config/gfs/config.analcalc_fv3jedi +++ b/dev/parm/config/gfs/config.analcalc_fv3jedi @@ -12,7 +12,7 @@ export layout_x_analcalc_fv3jedi=2 export layout_y_analcalc_fv3jedi=2 # Get task specific resources -. "${EXPDIR}/config.resources" analcalc_fv3jedi +source "${EXPDIR}/config.resources" analcalc_fv3jedi export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" export STAGE_YAML="${PARMgfs}/gdas/analcalc/analcalc_stage.yaml.j2" From b9aacccc585fac33f5ab11c90d2ff8f9c52cfe9e Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:06:07 -0400 Subject: [PATCH 25/41] Update dev/parm/config/gfs/config.ecen_fv3jedi Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.ecen_fv3jedi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/parm/config/gfs/config.ecen_fv3jedi b/dev/parm/config/gfs/config.ecen_fv3jedi index 1b243c3a2d7..bf33719bc7d 100644 --- a/dev/parm/config/gfs/config.ecen_fv3jedi +++ b/dev/parm/config/gfs/config.ecen_fv3jedi @@ -12,7 +12,7 @@ export layout_x_ecen_fv3jedi=1 export layout_y_ecen_fv3jedi=1 # Get task specific resources -. "${EXPDIR}/config.resources" ecen_fv3jedi +source "${EXPDIR}/config.resources" ecen_fv3jedi export JEDI_CONFIG_YAML="${PARMgfs}/gdas/atm/atm_ecen_jedi_config.yaml.j2" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/atm/atm_stage_jedi_fix.yaml.j2" From 6ea7da402dce906e9921fecdc23045ad381600bf Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:06:18 -0400 Subject: [PATCH 26/41] Update dev/parm/config/gfs/config.marineanlfinal Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.marineanlfinal | 1 - 1 file changed, 1 deletion(-) diff --git a/dev/parm/config/gfs/config.marineanlfinal b/dev/parm/config/gfs/config.marineanlfinal index 9bc0af6e836..0efe3ef84c2 100644 --- a/dev/parm/config/gfs/config.marineanlfinal +++ b/dev/parm/config/gfs/config.marineanlfinal @@ -5,7 +5,6 @@ echo "BEGIN: config.marineanlfinal" -export SAVE_YAML="${PARMgfs}/gdas/marine/marine_det_save.yaml.j2" # Get task specific resources . "${EXPDIR}/config.resources" marineanlfinal From dc9687ecf60f8a98decccaacf20bc952bcd33977 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:06:36 -0400 Subject: [PATCH 27/41] Update dev/parm/config/gfs/config.marineanlfinal Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.marineanlfinal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/parm/config/gfs/config.marineanlfinal b/dev/parm/config/gfs/config.marineanlfinal index 0efe3ef84c2..376783a632b 100644 --- a/dev/parm/config/gfs/config.marineanlfinal +++ b/dev/parm/config/gfs/config.marineanlfinal @@ -7,5 +7,5 @@ echo "BEGIN: config.marineanlfinal" # Get task specific resources -. "${EXPDIR}/config.resources" marineanlfinal +source "${EXPDIR}/config.resources" marineanlfinal echo "END: config.marineanlfinal" From 6a975e01d6e23f76ef4b522ce519c2bf88c5cf72 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:06:50 -0400 Subject: [PATCH 28/41] Update dev/parm/config/gfs/config.marineanlfinal Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.marineanlfinal | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dev/parm/config/gfs/config.marineanlfinal b/dev/parm/config/gfs/config.marineanlfinal index 376783a632b..63c6d4762a1 100644 --- a/dev/parm/config/gfs/config.marineanlfinal +++ b/dev/parm/config/gfs/config.marineanlfinal @@ -8,4 +8,7 @@ echo "BEGIN: config.marineanlfinal" # Get task specific resources source "${EXPDIR}/config.resources" marineanlfinal + +export SAVE_YAML="${PARMgfs}/gdas/marine/marine_det_save.yaml.j2" + echo "END: config.marineanlfinal" From dd63b0cc25bf7a8b534fbb77a24bd75a0f4275ce Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:07:01 -0400 Subject: [PATCH 29/41] Update dev/parm/config/gfs/config.marineanlinit Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.marineanlinit | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dev/parm/config/gfs/config.marineanlinit b/dev/parm/config/gfs/config.marineanlinit index 4af25cd7b8e..181176e9551 100644 --- a/dev/parm/config/gfs/config.marineanlinit +++ b/dev/parm/config/gfs/config.marineanlinit @@ -5,8 +5,10 @@ echo "BEGIN: config.marineanlinit" -export STAGE_YAML="${PARMgfs}/gdas/marine/marine_det_stage.yaml.j2" # Get task specific resources -. "${EXPDIR}/config.resources" marineanlinit +source "${EXPDIR}/config.resources" marineanlinit + +export STAGE_YAML="${PARMgfs}/gdas/marine/marine_det_stage.yaml.j2" + echo "END: config.marineanlinit" From 9947397d6c95c520a26fbe5d5ec0e45636820b25 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:07:14 -0400 Subject: [PATCH 30/41] Update dev/parm/config/gfs/config.marineanlletkf Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.marineanlletkf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/parm/config/gfs/config.marineanlletkf b/dev/parm/config/gfs/config.marineanlletkf index 5ef0ecb494d..6fc218aafe1 100644 --- a/dev/parm/config/gfs/config.marineanlletkf +++ b/dev/parm/config/gfs/config.marineanlletkf @@ -6,7 +6,7 @@ echo "BEGIN: config.marineanlletkf" # Get task specific resources -. "${EXPDIR}/config.resources" marineanlletkf +source "${EXPDIR}/config.resources" marineanlletkf export LETKF_EXEC="${EXECgfs}/gdas.x" export LETKF_YAML="${PARMgfs}/gdas/marine/letkf/letkf.yaml.j2" From f856a4f0888215a60d0b46bf42dcf49226550584 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:07:22 -0400 Subject: [PATCH 31/41] Update dev/parm/config/gfs/config.marineanlvar Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.marineanlvar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/parm/config/gfs/config.marineanlvar b/dev/parm/config/gfs/config.marineanlvar index 4e89b135974..7342396dc70 100644 --- a/dev/parm/config/gfs/config.marineanlvar +++ b/dev/parm/config/gfs/config.marineanlvar @@ -6,7 +6,7 @@ echo "BEGIN: config.marineanlvar" # Get task specific resources -. "${EXPDIR}/config.resources" marineanlvar +source "${EXPDIR}/config.resources" marineanlvar export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_det_jedi_config.yaml.j2" export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}" From 3192f7bd5341e4654dda0ffbd741655ab3edb67c Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:07:30 -0400 Subject: [PATCH 32/41] Update dev/parm/config/gfs/config.marinebmat Co-authored-by: Rahul Mahajan --- dev/parm/config/gfs/config.marinebmat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/parm/config/gfs/config.marinebmat b/dev/parm/config/gfs/config.marinebmat index eb87a231f93..a62d96ab113 100644 --- a/dev/parm/config/gfs/config.marinebmat +++ b/dev/parm/config/gfs/config.marinebmat @@ -6,7 +6,7 @@ echo "BEGIN: config.marinebmat" # Get task specific resources -. "${EXPDIR}/config.resources" marinebmat +source "${EXPDIR}/config.resources" marinebmat export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" export SAVE_YAML="${PARMgfs}/gdas/marine/marine_bmat_save.yaml.j2" From 2f5c1b82550dd4e9ca56e3d517d9181ebca79fff Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:08:20 -0400 Subject: [PATCH 33/41] Update marine3dvar.yaml --- dev/ci/cases/gfsv17/marine3dvar.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/ci/cases/gfsv17/marine3dvar.yaml b/dev/ci/cases/gfsv17/marine3dvar.yaml index e4c9a20fa75..6a67ee7a813 100644 --- a/dev/ci/cases/gfsv17/marine3dvar.yaml +++ b/dev/ci/cases/gfsv17/marine3dvar.yaml @@ -23,4 +23,4 @@ marineanl: SOCA_INPUT_FIX_DIR: {{ HOMEgfs }}/fix/gdas/soca/1440x1080x75/soca SOCA_ANL_GEOM: {{ HOMEgfs }}/fix/gdas/soca/720x540x75/soca SOCA_OBS_LIST: {{ HOMEgfs }}/parm/gdas/marine/obs/obs_list.yaml.j2 - SOCA_NINNER: 100 \ No newline at end of file + SOCA_NINNER: 100 From de509c52dc9d9316c9f05dddcd0e3c1f8a743780 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Thu, 4 Sep 2025 19:34:29 +0000 Subject: [PATCH 34/41] PARMsoca -> PARMmarine --- ush/python/pygfs/task/marine_analysis.py | 4 ++-- ush/python/pygfs/task/marine_bmat.py | 1 - ush/python/pygfs/task/marine_letkf.py | 4 ++-- ush/python/pygfs/task/marine_recenter.py | 4 ++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/ush/python/pygfs/task/marine_analysis.py b/ush/python/pygfs/task/marine_analysis.py index 5e104a22962..fd7fa8d2427 100644 --- a/ush/python/pygfs/task/marine_analysis.py +++ b/ush/python/pygfs/task/marine_analysis.py @@ -57,7 +57,7 @@ def __init__(self, config): # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( { - 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), + 'PARMmarine': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), 'MARINE_WINDOW_BEGIN': _window_begin, 'MARINE_WINDOW_END': _window_end, 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, @@ -128,7 +128,7 @@ def initialize(self: Task) -> None: FileHandler(obs_list).sync() # stage the soca utility yamls (gridgen, fields and ufo mapping yamls) - logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMsoca}") + logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMmarine}") soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_YAML, self.task_config) FileHandler(soca_utility_list).sync() diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index 58bd4f27505..f13729658d9 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -53,7 +53,6 @@ def __init__(self, config): # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( { - 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), 'CALC_SCALE_EXEC': _calc_scale_exec, 'MARINE_WINDOW_BEGIN': _window_begin, 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, diff --git a/ush/python/pygfs/task/marine_letkf.py b/ush/python/pygfs/task/marine_letkf.py index 85f96179757..b8ec5cdddbb 100644 --- a/ush/python/pygfs/task/marine_letkf.py +++ b/ush/python/pygfs/task/marine_letkf.py @@ -54,7 +54,7 @@ def __init__(self, config: Dict) -> None: self.task_config.mom_input_nml = os.path.join(self.task_config.DATA, 'mom_input.nml') self.task_config.obs_dir = os.path.join(self.task_config.DATA, 'obs') self.task_config.ENSPERT_RELPATH = _enspert_relpath - self.task_config.PARMsoca = os.path.join(self.task_config.PARMgfs, 'gdas', 'marine') + self.task_config.PARMmarine = os.path.join(self.task_config.PARMgfs, 'gdas', 'marine') self.task_config.app_path_observations = self.task_config.MARINE_JCB_GDAS_OBS self.task_config.letkf_app = "true" self.task_config.OPREFIX = f"{self.task_config.RUN.replace('enkf','')}.t{self.task_config.cyc:02d}z." @@ -108,7 +108,7 @@ def initialize(self): for key in keys: stageconfig[key] = self.task_config[key] - jcb_base_yaml = os.path.join(self.task_config.PARMsoca, 'jcb-base.yaml.j2') + jcb_base_yaml = os.path.join(self.task_config.PARMmarine, 'jcb-base.yaml.j2') jcb_base_config = parse_j2yaml(path=jcb_base_yaml, data=stageconfig) jcb_config = {**jcb_base_config, **stageconfig} diff --git a/ush/python/pygfs/task/marine_recenter.py b/ush/python/pygfs/task/marine_recenter.py index 501cdbbc2a8..03fb5e2bcbc 100644 --- a/ush/python/pygfs/task/marine_recenter.py +++ b/ush/python/pygfs/task/marine_recenter.py @@ -44,7 +44,7 @@ def __init__(self, config: Dict) -> None: local_dict = AttrDict( { - 'PARMsoca': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), + 'PARMmarine': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), 'MARINE_WINDOW_BEGIN': _window_begin, 'MARINE_WINDOW_END': _window_end, 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, @@ -86,7 +86,7 @@ def initialize(self): mdau.prep_input_nml(self.task_config) # stage the soca utility yamls (gridgen, fields and ufo mapping yamls) - logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMsoca}") + logger.info(f"Staging SOCA utility yaml files from {self.task_config.PARMmarine}") soca_utility_list = parse_j2yaml(self.task_config.STAGE_UTILITIES_YAML, self.task_config) FileHandler(soca_utility_list).sync() From c8cd6d4dc7b1a27e5c02ed1e82a6a0a171be4f36 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Fri, 5 Sep 2025 13:17:43 +0000 Subject: [PATCH 35/41] Update gdas hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 64a2e486b5c..f47535ea4e7 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 64a2e486b5c453c454fcc3cf87c321bd4d634aab +Subproject commit f47535ea4e770ddc1ad1bff696fe77eb67281613 From fb286e66c89a72c8668de33c8516d60329a1311f Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Fri, 5 Sep 2025 15:16:09 +0000 Subject: [PATCH 36/41] Final debugging --- dev/parm/config/gcafs/config.aeroanl.j2 | 2 +- dev/parm/config/gfs/config.aeroanl.j2 | 2 +- ush/python/pygfs/task/marine_bmat.py | 1 + ush/python/pygfs/utils/marine_da_utils.py | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dev/parm/config/gcafs/config.aeroanl.j2 b/dev/parm/config/gcafs/config.aeroanl.j2 index f35d54ff91c..e97b6d088a6 100644 --- a/dev/parm/config/gcafs/config.aeroanl.j2 +++ b/dev/parm/config/gcafs/config.aeroanl.j2 @@ -27,7 +27,7 @@ export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" export STAGE_YAML="${PARMgfs}/gdas/aero/aero_det_stage.yaml.j2" -export SAVE_YAML="${PARMgfs}/gdas/aero_det_save.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/aero/aero_det_save.yaml.j2" export AERO_BMATRIX_RESCALE_YAML="aero_gen_bmatrix_rescale_default.yaml.j2" diff --git a/dev/parm/config/gfs/config.aeroanl.j2 b/dev/parm/config/gfs/config.aeroanl.j2 index ad9d4a40192..f7d21986930 100644 --- a/dev/parm/config/gfs/config.aeroanl.j2 +++ b/dev/parm/config/gfs/config.aeroanl.j2 @@ -27,7 +27,7 @@ export JEDI_CONFIG_YAML="${PARMgfs}/gdas/aero/aero_det_jedi_config.yaml.j2" export STAGE_CRTM_COEFF_YAML="${PARMgfs}/gdas/aero/aero_stage_crtm_coeff.yaml.j2" export STAGE_JEDI_FIX_YAML="${PARMgfs}/gdas/aero/aero_stage_jedi_fix.yaml.j2" export STAGE_YAML="${PARMgfs}/gdas/aero/aero_det_stage.yaml.j2" -export SAVE_YAML="${PARMgfs}/gdas/aero_det_save.yaml.j2" +export SAVE_YAML="${PARMgfs}/gdas/aero/aero_det_save.yaml.j2" export io_layout_x="{{ IO_LAYOUT_X }}" export io_layout_y="{{ IO_LAYOUT_Y }}" diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index f13729658d9..c9707a47469 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -53,6 +53,7 @@ def __init__(self, config): # Create a local dictionary that is repeatedly used across this class local_dict = AttrDict( { + 'PARMmarine': os.path.join(self.task_config.PARMgfs, 'gdas', 'marine'), 'CALC_SCALE_EXEC': _calc_scale_exec, 'MARINE_WINDOW_BEGIN': _window_begin, 'MARINE_WINDOW_MIDDLE': self.task_config.current_cycle, diff --git a/ush/python/pygfs/utils/marine_da_utils.py b/ush/python/pygfs/utils/marine_da_utils.py index ebb523a60b6..543568d3abe 100644 --- a/ush/python/pygfs/utils/marine_da_utils.py +++ b/ush/python/pygfs/utils/marine_da_utils.py @@ -52,7 +52,7 @@ def prep_input_nml(task_config: AttrDict, """Prepare the mom_input.nml file """ # stage input.nml.j2 - mom_input_nml_tmpl_src = os.path.join(task_config.PARMsoca, 'fms', 'input.nml.j2') + mom_input_nml_tmpl_src = os.path.join(task_config.PARMmarine, 'fms', 'input.nml.j2') mom_input_nml_tmpl = os.path.join(task_config.DATA, 'mom_input.nml.tmpl') FileHandler({'copy': [[mom_input_nml_tmpl_src, mom_input_nml_tmpl]]}).sync() From 34f1018f015e545dc6c54e8e97ca7bafa9e58f78 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Fri, 5 Sep 2025 15:41:58 +0000 Subject: [PATCH 37/41] One more debug --- dev/parm/config/gcafs/config.anlstat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/parm/config/gcafs/config.anlstat b/dev/parm/config/gcafs/config.anlstat index f73a91aa296..2eb8bcabb1b 100644 --- a/dev/parm/config/gcafs/config.anlstat +++ b/dev/parm/config/gcafs/config.anlstat @@ -8,7 +8,7 @@ echo "BEGIN: config.anlstat" # Get task specific resources source "${EXPDIR}/config.resources" anlstat -export JEDI_CONFIG_YAML="${PARMgfs}/gdas/stat/anlstat_jedi_config.yaml.j2" -export STAT_BASE_CONFIG_YAML="${PARMgfs}/gdas/stat/stat_base_config.yaml.j2" +export JEDI_CONFIG_YAML="${PARMgfs}/gdas/anlstat/anlstat_jedi_config.yaml.j2" +export BASE_CONFIG_YAML="${PARMgfs}/gdas/anlstat/anlstat_base_config.yaml.j2" echo "END: config.anlstat" From e31f0aeea859ca4dc2ade2fcce72b720d3f5c611 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Fri, 5 Sep 2025 15:54:58 +0000 Subject: [PATCH 38/41] Update gdas hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index f47535ea4e7..b8a546ab205 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit f47535ea4e770ddc1ad1bff696fe77eb67281613 +Subproject commit b8a546ab20540ca4a9e9e23abb12679474e34e72 From 31aedf63e61e438446800913b4b9cb93674a8c63 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Mon, 8 Sep 2025 13:04:13 +0000 Subject: [PATCH 39/41] Update gdas hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index b8a546ab205..f3c6445b30a 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit b8a546ab20540ca4a9e9e23abb12679474e34e72 +Subproject commit f3c6445b30a35749f8fa266d7a625b2806c08805 From 02d58c02ebebc7dbe7b49585ffb0a94efcb582e2 Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA Date: Mon, 8 Sep 2025 13:06:33 +0000 Subject: [PATCH 40/41] Update gdas hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index f3c6445b30a..560fcbf6464 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit f3c6445b30a35749f8fa266d7a625b2806c08805 +Subproject commit 560fcbf6464d0285e8b0603a05d3fd0380327b4a From cbe9eca5a6881bfadaa7951b0591cece9d9a92fe Mon Sep 17 00:00:00 2001 From: DavidNew-NOAA <134300700+DavidNew-NOAA@users.noreply.github.com> Date: Mon, 8 Sep 2025 09:22:03 -0400 Subject: [PATCH 41/41] Update dev/parm/config/gfs/config.marineanl.j2 Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> --- dev/parm/config/gfs/config.marineanl.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/parm/config/gfs/config.marineanl.j2 b/dev/parm/config/gfs/config.marineanl.j2 index f365eeb563a..e1f81b87b97 100644 --- a/dev/parm/config/gfs/config.marineanl.j2 +++ b/dev/parm/config/gfs/config.marineanl.j2 @@ -5,7 +5,7 @@ echo "BEGIN: config.marineanl" -# TODO: This should be sources in a config file specific to marine deterministic analysis +# TODO: This should be sourced in a config file specific to marine deterministic analysis # and renamed to remove _DET export JCB_ALGO_YAML_VAR="{{ JCB_ALGO_YAML_VAR }}"