From 8e09b157ba925ef72921f4b64281889077b74d9b Mon Sep 17 00:00:00 2001 From: gerard ketefian Date: Fri, 29 Nov 2024 18:20:46 -0700 Subject: [PATCH] Get observation type from field group; remove unneeded environment variables from workflow; use pre-defined entities for accumulation hours in the rocoto xml; fix bug in calculation of ensemble member indices for the case of a deterministic (non-ensemble) forecast experiment. --- parm/wflow/default_workflow.yaml | 22 +++- parm/wflow/verify_det.yaml | 20 +-- parm/wflow/verify_ens.yaml | 8 -- parm/wflow/verify_pre.yaml | 29 +---- ...onal_run_met_genensprod_or_ensemblestat.sh | 6 +- ...gional_run_met_gridstat_or_pointstat_vx.sh | 6 +- ...un_met_gridstat_or_pointstat_vx_ensmean.sh | 8 +- ...un_met_gridstat_or_pointstat_vx_ensprob.sh | 8 +- scripts/exregional_run_met_pb2nc_obs.sh | 32 ++--- scripts/exregional_run_met_pcpcombine.sh | 10 +- ush/set_vx_params.sh | 115 +++++------------- ush/setup.py | 7 +- 12 files changed, 93 insertions(+), 178 deletions(-) diff --git a/parm/wflow/default_workflow.yaml b/parm/wflow/default_workflow.yaml index b2a793d533..75865a0b04 100644 --- a/parm/wflow/default_workflow.yaml +++ b/parm/wflow/default_workflow.yaml @@ -4,9 +4,25 @@ rocoto: entities: ACCOUNT: '{{ user.ACCOUNT }}' + ACCUM_HH_APCP: '{%- for ah in verification.VX_APCP_ACCUMS_HRS %} + {%- if workflow.FCST_LEN_HRS >= ah %} + {{- "%02d " % ah }} + {%- endif %} + {%- endfor %}' + ACCUM_HH_ASNOW: '{%- for ah in verification.VX_ASNOW_ACCUMS_HRS %} + {%- if workflow.FCST_LEN_HRS >= ah %} + {{- "%02d " % ah }} + {%- endif %} + {%- endfor %}' CCPA_OBS_DIR: '{{ verification.CCPA_OBS_DIR }}' COLDSTART: '{{ workflow.COLDSTART }}' COMINgfs: '{{ platform.get("COMINgfs") }}' + ENSMEM_INDICES: '{%- for mem_indx in global.ENSMEM_INDS %} + {{- mem_indx ~ " " }} + {%- endfor %}' + ENSMEM_NAMES: '{%- for mem_name in global.ENSMEM_NAMES %} + {{- mem_name ~ " " }} + {%- endfor %}' GLOBAL_VAR_DEFNS_FP: '{{ workflow.GLOBAL_VAR_DEFNS_FP }}' HOMEdir: '{{ user.HOMEdir }}' JOBSdir: '{{ user.JOBSdir }}' @@ -31,12 +47,6 @@ rocoto: {%- if global.DO_ENSEMBLE %} {{- "#mem_name#" }} {%- endif %}' - ENSMEM_INDICES: '{%- for mem_indx in global.ENSMEM_INDS %} - {{- mem_indx ~ " " }} - {%- endfor %}' - ENSMEM_NAMES: '{%- for mem_name in global.ENSMEM_NAMES %} - {{- mem_name ~ " " }} - {%- endfor %}' USHdir: '{{ user.USHdir }}' WARMSTART_CYCLE_DIR: '{{ workflow.WARMSTART_CYCLE_DIR }}' WORKFLOW_ID: '{{ workflow.WORKFLOW_ID }}' diff --git a/parm/wflow/verify_det.yaml b/parm/wflow/verify_det.yaml index 06e7a66bcd..71207538ff 100644 --- a/parm/wflow/verify_det.yaml +++ b/parm/wflow/verify_det.yaml @@ -23,11 +23,7 @@ default_task_verify_det: &default_task_verify_det metatask_GridStat_APCP_all_accums_all_mems: var: - ACCUM_HH: '{%- for ah in verification.VX_APCP_ACCUMS_HRS %} - {%- if workflow.FCST_LEN_HRS >= ah %} - {{- "%02d " % ah }} - {%- endif %} - {%- endfor %}' + ACCUM_HH: '&ACCUM_HH_APCP;' metatask_GridStat_APCP#ACCUM_HH#h_all_mems: var: mem_indx: '&ENSMEM_INDICES;' @@ -44,10 +40,8 @@ metatask_GridStat_APCP_all_accums_all_mems: FIELD_GROUP: 'APCP' ACCUM_HH: '#ACCUM_HH#' METPLUSTOOLNAME: 'GRIDSTAT' - OBTYPE: 'CCPA' ENSMEM_INDX: "#mem_indx#" ENSMEM_NAME: "#mem_name#" - OBS_AVAIL_INTVL_HRS: '{{- verification.CCPA_OBS_AVAIL_INTVL_HRS }}' FCST_LEVEL: 'A#ACCUM_HH#' FCST_THRESH: 'all' walltime: 02:00:00 @@ -62,11 +56,7 @@ metatask_GridStat_APCP_all_accums_all_mems: metatask_GridStat_ASNOW_all_accums_all_mems: var: - ACCUM_HH: '{%- for ah in verification.VX_ASNOW_ACCUMS_HRS %} - {%- if workflow.FCST_LEN_HRS >= ah %} - {{- "%02d " % ah }} - {%- endif %} - {%- endfor %}' + ACCUM_HH: '&ACCUM_HH_ASNOW;' metatask_GridStat_ASNOW#ACCUM_HH#h_all_mems: var: mem_indx: '&ENSMEM_INDICES;' @@ -83,10 +73,8 @@ metatask_GridStat_ASNOW_all_accums_all_mems: FIELD_GROUP: 'ASNOW' ACCUM_HH: '#ACCUM_HH#' METPLUSTOOLNAME: 'GRIDSTAT' - OBTYPE: 'NOHRSC' ENSMEM_INDX: "#mem_indx#" ENSMEM_NAME: "#mem_name#" - OBS_AVAIL_INTVL_HRS: '{{- verification.NOHRSC_OBS_AVAIL_INTVL_HRS }}' FCST_LEVEL: 'A#ACCUM_HH#' FCST_THRESH: 'all' walltime: 02:00:00 @@ -118,10 +106,8 @@ metatask_GridStat_REFC_RETOP_all_mems: OBS_DIR: '&MRMS_OBS_DIR;' FIELD_GROUP: '#FIELD_GROUP#' METPLUSTOOLNAME: 'GRIDSTAT' - OBTYPE: 'MRMS' ENSMEM_INDX: "#mem_indx#" ENSMEM_NAME: "#mem_name#" - OBS_AVAIL_INTVL_HRS: '{{- verification.MRMS_OBS_AVAIL_INTVL_HRS }}' FCST_LEVEL: 'L0' FCST_THRESH: 'all' walltime: 02:00:00 @@ -170,10 +156,8 @@ metatask_PointStat_SFC_UPA_all_mems: OBS_DIR: '&NDAS_OBS_DIR;' FIELD_GROUP: '#FIELD_GROUP#' METPLUSTOOLNAME: 'POINTSTAT' - OBTYPE: 'NDAS' ENSMEM_INDX: "#mem_indx#" ENSMEM_NAME: "#mem_name#" - OBS_AVAIL_INTVL_HRS: '{{- verification.NDAS_OBS_AVAIL_INTVL_HRS }}' FCST_LEVEL: 'all' FCST_THRESH: 'all' walltime: 01:00:00 diff --git a/parm/wflow/verify_ens.yaml b/parm/wflow/verify_ens.yaml index f09b354c09..b9c1ec0313 100644 --- a/parm/wflow/verify_ens.yaml +++ b/parm/wflow/verify_ens.yaml @@ -37,7 +37,6 @@ metatask_GenEnsProd_EnsembleStat_APCP_all_accums: OBS_DIR: '&CCPA_OBS_DIR;' FIELD_GROUP: 'APCP' METPLUSTOOLNAME: 'GENENSPROD' - OBTYPE: 'CCPA' FCST_LEVEL: 'A#ACCUM_HH#' FCST_THRESH: 'all' ENSMEM_NAMES_STR: '&ENSMEM_NAMES;' @@ -76,7 +75,6 @@ metatask_GenEnsProd_EnsembleStat_ASNOW_all_accums: OBS_DIR: '&NOHRSC_OBS_DIR;' FIELD_GROUP: 'ASNOW' METPLUSTOOLNAME: 'GENENSPROD' - OBTYPE: 'NOHRSC' FCST_LEVEL: 'A#ACCUM_HH#' FCST_THRESH: 'all' ENSMEM_NAMES_STR: '&ENSMEM_NAMES;' @@ -116,7 +114,6 @@ metatask_GenEnsProd_EnsembleStat_REFC_RETOP: OBS_DIR: '&MRMS_OBS_DIR;' FIELD_GROUP: '#FIELD_GROUP#' METPLUSTOOLNAME: 'GENENSPROD' - OBTYPE: 'MRMS' FCST_LEVEL: 'L0' FCST_THRESH: 'all' ENSMEM_NAMES_STR: '&ENSMEM_NAMES;' @@ -171,7 +168,6 @@ metatask_GenEnsProd_EnsembleStat_SFC_UPA: OBS_DIR: '&NDAS_OBS_DIR;' FIELD_GROUP: '#FIELD_GROUP#' METPLUSTOOLNAME: 'GENENSPROD' - OBTYPE: 'NDAS' ACCUM_HH: '01' FCST_LEVEL: 'all' FCST_THRESH: 'all' @@ -230,7 +226,6 @@ metatask_GridStat_APCP_all_accums_ensmeanprob: OBS_DIR: '&CCPA_OBS_DIR;' FIELD_GROUP: 'APCP' METPLUSTOOLNAME: 'GRIDSTAT' - OBTYPE: 'CCPA' ACCUM_HH: '#ACCUM_HH#' FCST_LEVEL: 'A#ACCUM_HH#' FCST_THRESH: 'all' @@ -261,7 +256,6 @@ metatask_GridStat_ASNOW_all_accums_ensmeanprob: OBS_DIR: '&NOHRSC_OBS_DIR;' FIELD_GROUP: 'ASNOW' METPLUSTOOLNAME: 'GRIDSTAT' - OBTYPE: 'NOHRSC' ACCUM_HH: '#ACCUM_HH#' FCST_LEVEL: 'A#ACCUM_HH#' FCST_THRESH: 'all' @@ -289,7 +283,6 @@ metatask_GridStat_REFC_RETOP_ensprob: OBS_DIR: '&MRMS_OBS_DIR;' FIELD_GROUP: '#FIELD_GROUP#' METPLUSTOOLNAME: 'GRIDSTAT' - OBTYPE: 'MRMS' FCST_LEVEL: 'L0' FCST_THRESH: 'all' dependency: @@ -319,7 +312,6 @@ metatask_PointStat_SFC_UPA_ensmeanprob: OBS_DIR: '&NDAS_OBS_DIR;' FIELD_GROUP: '#FIELD_GROUP#' METPLUSTOOLNAME: 'POINTSTAT' - OBTYPE: 'NDAS' ACCUM_HH: '01' FCST_LEVEL: 'all' FCST_THRESH: 'all' diff --git a/parm/wflow/verify_pre.yaml b/parm/wflow/verify_pre.yaml index e9f3843d46..366ce5e0d1 100644 --- a/parm/wflow/verify_pre.yaml +++ b/parm/wflow/verify_pre.yaml @@ -82,7 +82,6 @@ task_run_MET_Pb2nc_obs_NDAS: FIELD_GROUP: 'SFC' ACCUM_HH: '01' FCST_OR_OBS: OBS - OBTYPE: NDAS OBS_DIR: '&NDAS_OBS_DIR;' METPLUSTOOLNAME: 'PB2NC' dependency: @@ -100,11 +99,7 @@ task_run_MET_Pb2nc_obs_NDAS: metatask_PcpCombine_APCP_all_accums_obs_CCPA: var: - ACCUM_HH: '{%- for ah in verification.VX_APCP_ACCUMS_HRS %} - {%- if workflow.FCST_LEN_HRS >= ah %} - {{- "%02d " % ah }} - {%- endif %} - {%- endfor %}' + ACCUM_HH: '&ACCUM_HH_APCP;' task_run_MET_PcpCombine_APCP#ACCUM_HH#h_obs_CCPA: <<: *default_task_verify_pre attrs: @@ -116,7 +111,6 @@ metatask_PcpCombine_APCP_all_accums_obs_CCPA: FIELD_GROUP: 'APCP' ACCUM_HH: '#ACCUM_HH#' FCST_OR_OBS: OBS - OBTYPE: CCPA OBS_DIR: '&CCPA_OBS_DIR;' OBS_AVAIL_INTVL_HRS: '{{- verification.CCPA_OBS_AVAIL_INTVL_HRS }}' METPLUSTOOLNAME: 'PCPCOMBINE' @@ -146,11 +140,7 @@ metatask_PcpCombine_APCP_all_accums_obs_CCPA: metatask_PcpCombine_ASNOW_all_accums_obs_NOHRSC: var: - ACCUM_HH: '{%- for ah in verification.VX_ASNOW_ACCUMS_HRS %} - {%- if workflow.FCST_LEN_HRS >= ah %} - {{- "%02d " % ah }} - {%- endif %} - {%- endfor %}' + ACCUM_HH: '&ACCUM_HH_ASNOW;' task_run_MET_PcpCombine_ASNOW#ACCUM_HH#h_obs_NOHRSC: <<: *default_task_verify_pre attrs: @@ -162,7 +152,6 @@ metatask_PcpCombine_ASNOW_all_accums_obs_NOHRSC: FIELD_GROUP: 'ASNOW' ACCUM_HH: '#ACCUM_HH#' FCST_OR_OBS: OBS - OBTYPE: NOHRSC OBS_DIR: '&NOHRSC_OBS_DIR;' OBS_AVAIL_INTVL_HRS: '{{- verification.NOHRSC_OBS_AVAIL_INTVL_HRS }}' METPLUSTOOLNAME: 'PCPCOMBINE' @@ -275,11 +264,7 @@ metatask_check_post_output_all_mems: metatask_PcpCombine_APCP_all_accums_all_mems: var: - ACCUM_HH: '{%- for ah in verification.VX_APCP_ACCUMS_HRS %} - {%- if workflow.FCST_LEN_HRS >= ah %} - {{- "%02d " % ah }} - {%- endif %} - {%- endfor %}' + ACCUM_HH: '&ACCUM_HH_APCP;' metatask_PcpCombine_APCP#ACCUM_HH#h_all_mems: var: mem_indx: '&ENSMEM_INDICES;' @@ -295,7 +280,6 @@ metatask_PcpCombine_APCP_all_accums_all_mems: FIELD_GROUP: 'APCP' ACCUM_HH: '#ACCUM_HH#' FCST_OR_OBS: FCST - OBTYPE: CCPA OBS_DIR: '&CCPA_OBS_DIR;' METPLUSTOOLNAME: 'PCPCOMBINE' ENSMEM_INDX: "#mem_indx#" @@ -309,11 +293,7 @@ metatask_PcpCombine_APCP_all_accums_all_mems: metatask_PcpCombine_ASNOW_all_accums_all_mems: var: - ACCUM_HH: '{%- for ah in verification.VX_ASNOW_ACCUMS_HRS %} - {%- if workflow.FCST_LEN_HRS >= ah %} - {{- "%02d " % ah }} - {%- endif %} - {%- endfor %}' + ACCUM_HH: '&ACCUM_HH_ASNOW;' metatask_PcpCombine_ASNOW#ACCUM_HH#h_all_mems: var: mem_indx: '&ENSMEM_INDICES;' @@ -329,7 +309,6 @@ metatask_PcpCombine_ASNOW_all_accums_all_mems: FIELD_GROUP: 'ASNOW' ACCUM_HH: '#ACCUM_HH#' FCST_OR_OBS: FCST - OBTYPE: NOHRSC OBS_DIR: '&NOHRSC_OBS_DIR;' METPLUSTOOLNAME: 'PCPCOMBINE' ENSMEM_INDX: "#mem_indx#" diff --git a/scripts/exregional_run_met_genensprod_or_ensemblestat.sh b/scripts/exregional_run_met_genensprod_or_ensemblestat.sh index 16ff67aff7..e17efe5ec5 100755 --- a/scripts/exregional_run_met_genensprod_or_ensemblestat.sh +++ b/scripts/exregional_run_met_genensprod_or_ensemblestat.sh @@ -103,10 +103,10 @@ CDATE="${PDY}${cyc}" FIELDNAME_IN_MET_FILEDIR_NAMES="" set_vx_params \ - obtype="${OBTYPE}" \ field_group="${FIELD_GROUP}" \ accum_hh="${ACCUM_HH}" \ outvarname_grid_or_point="grid_or_point" \ + outvarname_obtype="obtype" \ outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" # #----------------------------------------------------------------------- @@ -213,7 +213,7 @@ STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" # #----------------------------------------------------------------------- # -case "$OBTYPE" in +case "${obtype}" in "CCPA"|"NOHRSC") vx_intvl="$((10#${ACCUM_HH}))" vx_hr_start="${vx_intvl}" @@ -374,7 +374,7 @@ settings="\ # Field information. # 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' -'obtype': '${OBTYPE}' +'obtype': '${obtype}' 'accum_hh': '${ACCUM_HH:-}' 'accum_no_pad': '${ACCUM_NO_PAD:-}' 'metplus_templates_dir': '${METPLUS_CONF:-}' diff --git a/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh b/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh index ba5a839c59..8e71392d12 100755 --- a/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh @@ -94,9 +94,9 @@ FIELDNAME_IN_MET_FILEDIR_NAMES="" # Note that ACCUM_HH will not be defined for the REFC, RETOP, SFC, and # UPA field groups. set_vx_params \ - obtype="${OBTYPE}" \ field_group="${FIELD_GROUP}" \ accum_hh="${ACCUM_HH:-}" \ + outvarname_obtype="obtype" \ outvarname_grid_or_point="grid_or_point" \ outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" # @@ -213,7 +213,7 @@ STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" # #----------------------------------------------------------------------- # -case "$OBTYPE" in +case "${obtype}" in "CCPA"|"NOHRSC") vx_intvl="$((10#${ACCUM_HH}))" vx_hr_start="${vx_intvl}" @@ -364,7 +364,7 @@ settings="\ # Field information. # 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' -'obtype': '${OBTYPE}' +'obtype': '${obtype}' 'accum_hh': '${ACCUM_HH:-}' 'accum_no_pad': '${ACCUM_NO_PAD:-}' 'metplus_templates_dir': '${METPLUS_CONF:-}' diff --git a/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh index c68ddd1861..69938a8940 100755 --- a/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh @@ -92,9 +92,9 @@ CDATE="${PDY}${cyc}" FIELDNAME_IN_MET_FILEDIR_NAMES="" set_vx_params \ - obtype="${OBTYPE}" \ field_group="${FIELD_GROUP}" \ accum_hh="${ACCUM_HH}" \ + outvarname_obtype="obtype" \ outvarname_grid_or_point="grid_or_point" \ outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" # @@ -142,7 +142,7 @@ elif [ "${grid_or_point}" = "point" ]; then fi OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_INPUT_FN_TEMPLATE} ) -FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) +FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${obtype}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) OUTPUT_BASE="${vx_output_basedir}${slash_cdate_or_null}" OUTPUT_DIR="${OUTPUT_BASE}/metprd/${MetplusToolName}_ensmean" @@ -157,7 +157,7 @@ STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}_ensmean" # #----------------------------------------------------------------------- # -case "$OBTYPE" in +case "${obtype}" in "CCPA"|"NOHRSC") vx_intvl="$((10#${ACCUM_HH}))" vx_hr_start="${vx_intvl}" @@ -317,7 +317,7 @@ settings="\ # Field information. # 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' -'obtype': '${OBTYPE}' +'obtype': '${obtype}' 'accum_hh': '${ACCUM_HH:-}' 'accum_no_pad': '${ACCUM_NO_PAD:-}' 'metplus_templates_dir': '${METPLUS_CONF:-}' diff --git a/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh index c94ee62de5..f9477f0d83 100755 --- a/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh @@ -93,9 +93,9 @@ CDATE="${PDY}${cyc}" FIELDNAME_IN_MET_FILEDIR_NAMES="" set_vx_params \ - obtype="${OBTYPE}" \ field_group="${FIELD_GROUP}" \ accum_hh="${ACCUM_HH}" \ + outvarname_obtype="obtype" \ outvarname_grid_or_point="grid_or_point" \ outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" # @@ -142,7 +142,7 @@ elif [ "${grid_or_point}" = "point" ]; then fi OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_INPUT_FN_TEMPLATE} ) FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/GenEnsProd" -FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) +FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${obtype}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) OUTPUT_BASE="${vx_output_basedir}${slash_cdate_or_null}" OUTPUT_DIR="${OUTPUT_BASE}/metprd/${MetplusToolName}_ensprob" @@ -157,7 +157,7 @@ STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}_ensprob" # #----------------------------------------------------------------------- # -case "$OBTYPE" in +case "${obtype}" in "CCPA"|"NOHRSC") vx_intvl="$((10#${ACCUM_HH}))" vx_hr_start="${vx_intvl}" @@ -317,7 +317,7 @@ settings="\ # Field information. # 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' -'obtype': '${OBTYPE}' +'obtype': '${obtype}' 'accum_hh': '${ACCUM_HH:-}' 'accum_no_pad': '${ACCUM_NO_PAD:-}' 'metplus_templates_dir': '${METPLUS_CONF:-}' diff --git a/scripts/exregional_run_met_pb2nc_obs.sh b/scripts/exregional_run_met_pb2nc_obs.sh index d4c0a08185..dd51c4ba13 100755 --- a/scripts/exregional_run_met_pb2nc_obs.sh +++ b/scripts/exregional_run_met_pb2nc_obs.sh @@ -87,16 +87,6 @@ sec_since_ref_task=$(${DATE_UTIL} --date "${yyyymmdd_task} 0 hours" +%s) # #----------------------------------------------------------------------- # -# Get the list of all the times in the current day at which to retrieve -# obs. This is an array with elements having format "YYYYMMDDHH". -# -#----------------------------------------------------------------------- -# -array_name="OBS_RETRIEVE_TIMES_${OBTYPE}_${yyyymmdd_task}" -eval obs_retrieve_times_crnt_day=\( \${${array_name}[@]} \) -# -#----------------------------------------------------------------------- -# # Get the cycle date and time in YYYYMMDDHH format. # #----------------------------------------------------------------------- @@ -114,14 +104,24 @@ CDATE="${PDY}${cyc}" FIELDNAME_IN_MET_FILEDIR_NAMES="" set_vx_params \ - obtype="${OBTYPE}" \ field_group="${FIELD_GROUP}" \ accum_hh="${ACCUM_HH}" \ + outvarname_obtype="obtype" \ outvarname_grid_or_point="grid_or_point" \ outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" # #----------------------------------------------------------------------- # +# Get the list of all the times in the current day at which to retrieve +# obs. This is an array with elements having format "YYYYMMDDHH". +# +#----------------------------------------------------------------------- +# +array_name="OBS_RETRIEVE_TIMES_${obtype}_${yyyymmdd_task}" +eval obs_retrieve_times_crnt_day=\( \${${array_name}[@]} \) +# +#----------------------------------------------------------------------- +# # Set paths and file templates for input to and output from the MET/ # METplus tool to be run as well as other file/directory parameters. # @@ -163,7 +163,7 @@ for yyyymmddhh in ${obs_retrieve_times_crnt_day[@]}; do if [[ -f "${fp}" ]]; then print_info_msg " -Found ${OBTYPE} obs file corresponding to observation retrieval time (yyyymmddhh): +Found ${obtype} obs file corresponding to observation retrieval time (yyyymmddhh): yyyymmddhh = \"${yyyymmddhh}\" fp = \"${fp}\" " @@ -172,7 +172,7 @@ Found ${OBTYPE} obs file corresponding to observation retrieval time (yyyymmddhh else num_missing_files=$((num_missing_files+1)) print_info_msg " -${OBTYPE} obs file corresponding to observation retrieval time (yyyymmddhh) +${obtype} obs file corresponding to observation retrieval time (yyyymmddhh) does not exist on disk: yyyymmddhh = \"${yyyymmddhh}\" fp = \"${fp}\" @@ -186,7 +186,7 @@ done # exit. if [ "${num_missing_files}" -gt "${NUM_MISSING_OBS_FILES_MAX}" ]; then print_err_msg_exit "\ -The number of missing ${OBTYPE} obs files (num_missing_files) is greater +The number of missing ${obtype} obs files (num_missing_files) is greater than the maximum allowed number (NUM_MISSING_FILES_MAX): num_missing_files = ${num_missing_files} NUM_MISSING_OBS_FILES_MAX = ${NUM_MISSING_OBS_FILES_MAX}" @@ -332,7 +332,7 @@ settings="\ # Field information. # 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' - 'obtype': '${OBTYPE}' + 'obtype': '${obtype}' 'accum_hh': '${ACCUM_HH:-}' 'accum_no_pad': '${ACCUM_NO_PAD:-}' " @@ -367,7 +367,7 @@ fi #----------------------------------------------------------------------- # print_info_msg "$VERBOSE" " -Calling METplus to run MET's ${metplus_tool_name} tool on observations of type: ${OBTYPE}" +Calling METplus to run MET's ${metplus_tool_name} tool on observations of type: ${obtype}" ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${metplus_config_fp} || \ diff --git a/scripts/exregional_run_met_pcpcombine.sh b/scripts/exregional_run_met_pcpcombine.sh index e43d5c09a3..056ebe52a1 100755 --- a/scripts/exregional_run_met_pcpcombine.sh +++ b/scripts/exregional_run_met_pcpcombine.sh @@ -94,9 +94,9 @@ CDATE="${PDY}${cyc}" FIELDNAME_IN_MET_FILEDIR_NAMES="" set_vx_params \ - obtype="${OBTYPE}" \ field_group="${FIELD_GROUP}" \ accum_hh="${ACCUM_HH}" \ + outvarname_obtype="obtype" \ outvarname_grid_or_point="grid_or_point" \ outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" # @@ -187,12 +187,12 @@ if [ "${FCST_OR_OBS}" = "FCST" ]; then elif [ "${FCST_OR_OBS}" = "OBS" ]; then OBS_INPUT_DIR="${OBS_DIR}" - fn_template=$(eval echo \${OBS_${OBTYPE}_FN_TEMPLATES[1]}) + fn_template=$(eval echo \${OBS_${obtype}_FN_TEMPLATES[1]}) OBS_INPUT_FN_TEMPLATE=$( eval echo ${fn_template} ) OUTPUT_BASE="${vx_output_basedir}${slash_cdate_or_null}${slash_obs_or_null}" OUTPUT_DIR="${OUTPUT_BASE}/metprd/${MetplusToolName}_obs" - fn_template=$(eval echo \${OBS_${OBTYPE}_${FIELD_GROUP}_FN_TEMPLATE_PCPCOMBINE_OUTPUT}) + fn_template=$(eval echo \${OBS_${obtype}_${FIELD_GROUP}_FN_TEMPLATE_PCPCOMBINE_OUTPUT}) OUTPUT_FN_TEMPLATE=$( eval echo ${fn_template} ) STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" @@ -317,7 +317,7 @@ metplus_config_tmpl_fn="${MetplusToolName}" if [ "${FCST_OR_OBS}" = "FCST" ]; then suffix="_${ensmem_name}" elif [ "${FCST_OR_OBS}" = "OBS" ]; then - suffix="_${OBTYPE}" + suffix="_${obtype}" fi metplus_config_fn="${metplus_config_tmpl_fn}_$(echo_lowercase ${FCST_OR_OBS})_${FIELDNAME_IN_MET_FILEDIR_NAMES}${suffix}" metplus_log_fn="${metplus_config_fn}_$CDATE" @@ -378,7 +378,7 @@ settings="\ # Field information. # 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' - 'obtype': '${OBTYPE}' + 'obtype': '${obtype}' 'FCST_OR_OBS': '${FCST_OR_OBS}' 'input_accum_hh': '${input_accum_hh}' 'output_accum_hh': '${ACCUM_HH:-}' diff --git a/ush/set_vx_params.sh b/ush/set_vx_params.sh index 6a8a2ad4de..719d0582ff 100644 --- a/ush/set_vx_params.sh +++ b/ush/set_vx_params.sh @@ -54,9 +54,9 @@ function set_vx_params() { #----------------------------------------------------------------------- # local valid_args=( \ - "obtype" \ "field_group" \ "accum_hh" \ + "outvarname_obtype" \ "outvarname_grid_or_point" \ "outvarname_fieldname_in_MET_filedir_names" \ ) @@ -78,7 +78,8 @@ function set_vx_params() { # #----------------------------------------------------------------------- # - local _grid_or_point_ \ + local _obtype_ \ + _grid_or_point_ \ fieldname_in_MET_filedir_names # #----------------------------------------------------------------------- @@ -87,12 +88,12 @@ function set_vx_params() { # #----------------------------------------------------------------------- # - if [ "${obtype}" = "CCPA" ] || [ "${obtype}" = "NOHRSC" ]; then + if [ "${field_group}" = "APCP" ] || [ "${field_group}" = "ASNOW" ]; then if [[ ! "${accum_hh}" =~ ^[0-9]{2}$ ]]; then print_err_msg_exit "\ -For the given observation type (obtype), the accumulation (accum_hh) must +For the given field group (field_group), the accumulation (accum_hh) must be a 2-digit integer: - obtype = \"${obtype}\" + field_group = \"${field_group}\" accum_hh = \"${accum_hh}\"" fi fi @@ -101,7 +102,10 @@ be a 2-digit integer: # # Set the parameters. Definitions: # -# grid_or_point: +# _obtype_: +# The observation type corresponding to the specified field group. +# +# _grid_or_point_: # String that is set to either "grid" or "point" depending on whether # obs type containing the field group is gridded or point-based. # @@ -112,104 +116,41 @@ be a 2-digit integer: # #----------------------------------------------------------------------- # + _obtype_="" _grid_or_point_="" fieldname_in_MET_filedir_names="" - case "${obtype}" in - - "CCPA") + case "${field_group}" in + "APCP") + _obtype_="CCPA" _grid_or_point_="grid" - case "${field_group}" in - - "APCP") - fieldname_in_MET_filedir_names="${field_group}${accum_hh}h" - ;; - - *) - print_err_msg_exit "\ -A method for setting verification parameters has not been specified for -this observation type (obtype) and field group (field_group) combination: - obtype = \"${obtype}\" - field_group = \"${field_group}\"" - ;; - - esac + fieldname_in_MET_filedir_names="${field_group}${accum_hh}h" ;; - "NOHRSC") - + "ASNOW") + _obtype_="NOHRSC" _grid_or_point_="grid" - case "${field_group}" in - - "ASNOW") - fieldname_in_MET_filedir_names="${field_group}${accum_hh}h" - ;; - - *) - print_err_msg_exit "\ -A method for setting verification parameters has not been specified for -this observation type (obtype) and field group (field_group) combination: - obtype = \"${obtype}\" - field_group = \"${field_group}\"" - ;; - - esac + fieldname_in_MET_filedir_names="${field_group}${accum_hh}h" ;; - "MRMS") - + "REFC"|"RETOP") + _obtype_="MRMS" _grid_or_point_="grid" - case "${field_group}" in - - "REFC") - fieldname_in_MET_filedir_names="${field_group}" - ;; - - "RETOP") - fieldname_in_MET_filedir_names="${field_group}" - ;; - - *) - print_err_msg_exit "\ -A method for setting verification parameters has not been specified for -this observation type (obtype) and field group (field_group) combination: - obtype = \"${obtype}\" - field_group = \"${field_group}\"" - ;; - - esac + fieldname_in_MET_filedir_names="${field_group}" ;; - "NDAS") - + "SFC"|"UPA") + _obtype_="NDAS" _grid_or_point_="point" - case "${field_group}" in - - "SFC") - fieldname_in_MET_filedir_names="ADP${field_group}" - ;; - - "UPA") - fieldname_in_MET_filedir_names="ADP${field_group}" - ;; - - *) - print_err_msg_exit "\ -A method for setting verification parameters has not been specified for -this observation type (obtype) and field group (field_group) combination: - obtype = \"${obtype}\" - field_group = \"${field_group}\"" - ;; - - esac + fieldname_in_MET_filedir_names="ADP${field_group}" ;; *) print_err_msg_exit "\ A method for setting verification parameters has not been specified for -this observation type (obtype): - obtype = \"${obtype}\"" +this field group (field_group): + field_group = \"${field_group}\"" ;; esac @@ -220,6 +161,10 @@ this observation type (obtype): # #----------------------------------------------------------------------- # + if [ ! -z "${outvarname_obtype}" ]; then + printf -v ${outvarname_obtype} "%s" "${_obtype_}" + fi + if [ ! -z "${outvarname_grid_or_point}" ]; then printf -v ${outvarname_grid_or_point} "%s" "${_grid_or_point_}" fi diff --git a/ush/setup.py b/ush/setup.py index 4a4d17aecb..e35cb004d1 100644 --- a/ush/setup.py +++ b/ush/setup.py @@ -1533,9 +1533,14 @@ def _get_location(xcs, fmt, expt_cfg): # # ----------------------------------------------------------------------- # + if do_ensemble: + ensmem_indx_min = 1 + else: + ensmem_indx_min = 0 + # The ensemble member indices. num_ens_members = global_sect["NUM_ENS_MEMBERS"] - ensmem_inds = [i for i in range(1,num_ens_members+1)] + ensmem_inds = [i for i in range(ensmem_indx_min,num_ens_members+1)] global_sect["ENSMEM_INDS"] = ensmem_inds # Formatted counterparts of the ensemble member indices. These are strings.