diff --git a/jobs/JREGIONAL_CHECK_POST_OUTPUT b/jobs/JREGIONAL_CHECK_POST_OUTPUT new file mode 100755 index 0000000000..b9c1868282 --- /dev/null +++ b/jobs/JREGIONAL_CHECK_POST_OUTPUT @@ -0,0 +1,99 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# +# +#----------------------------------------------------------------------- +# + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. $USHdir/source_util_funcs.sh +source_config_for_task "" ${GLOBAL_VAR_DEFNS_FP} +. $USHdir/job_preamble.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the J-job script for the task that checks that all the post- +processed output files in fact exist and are at least a certain age. +These files may have been generated by UPP as part of the current SRW +App workflow, or they may be user-staged. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Call the ex-script for this J-job and pass to it the necessary varia- +# bles. +# +#----------------------------------------------------------------------- +# +$SCRIPTSdir/exregional_check_post_output.sh || \ +print_err_msg_exit "\ +Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." +# +#----------------------------------------------------------------------- +# +# Create a flag file to make rocoto aware that the make_grid task has +# successfully completed (so that other tasks that depend on it can be +# launched). +# +#----------------------------------------------------------------------- +# +ensmem_name="mem${ENSMEM_INDX}" +cycle_dir="$EXPTDIR/$CDATE" +mkdir_vrfy -p "${cycle_dir}" +touch "${cycle_dir}/post_files_exist_${ensmem_name}.txt" +# +#----------------------------------------------------------------------- +# +# Run job postamble. +# +#----------------------------------------------------------------------- +# +job_postamble +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/parm/metplus/EnsembleStat_APCP01h.conf b/parm/metplus/EnsembleStat_APCP01h.conf index 4f78827e08..aa85f5dc51 100644 --- a/parm/metplus/EnsembleStat_APCP01h.conf +++ b/parm/metplus/EnsembleStat_APCP01h.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = EnsembleStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -54,19 +54,23 @@ METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET configuration file to pass to EnsembleStat. # +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. +# ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # -# Used in the MET config file for: model, output_prefix +# Name to identify model (forecast) data in output. # MODEL = {{vx_fcst_model_name}} ENSEMBLE_STAT_DESC = NA - -# Name to identify observation data in output +# +# Name to identify observation data in output. +# OBTYPE = {{obtype}} -#ENSEMBLE_STAT_DESC = - # The METplus EnsembleStat logging level # 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf @@ -89,8 +93,6 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} - FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. @@ -144,7 +146,7 @@ ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False -ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = False ENSEMBLE_STAT_MASK_GRID = @@ -164,36 +166,22 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # -# Ensemble variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION. -# -# ENS_VARn_THRESH must be included here in order for the netCDF file -# generated by EnsembleStat to include the ensemble probability (aka -# ensembe frequency) fields corresponding to the specified thresholds. -# These must be included because the corresonding GridStat task for -# ensemble probabilities expects to read them in as input. -# -ENS_VAR1_NAME = {{fieldname_in_fcst_input}} -ENS_VAR1_LEVELS = A{ACCUM_HH} -ENS_VAR1_THRESH = {{field_thresholds}} -# -# Get the variable ACCUM_HH from the environment. +# Precipitation accumulation interval in 2-digit hours. # ACCUM_HH = {{accum_hh}} # @@ -216,7 +204,6 @@ OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} # configuration file. # OUTPUT_BASE = {{output_base}} -OUTPUT_DIR = {{output_dir}} # # Point observation input directory for EnsembleStat. # @@ -242,31 +229,37 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = # # Output directory for EnsembleStat. # -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +ENSEMBLE_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # STAGING_DIR = {{staging_dir}} +# End of [dir] section and start of [filename_templates] section. [filename_templates] # -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. +# Template for point observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. # -# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to -# FCST_ENSEMBLE_STAT_INPUT_DIR. +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# Template for gridded observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. # -# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} # -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = +# Template for forecast input to EnsembleStat relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. # -# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. # -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from EnsembleStat relative to ENSEMBLE_STAT_OUTPUT_DIR. +# +ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE}_{lead?fmt=%H%M%S}L # # Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. @@ -278,7 +271,7 @@ ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # -# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to -# ENSEMBLE_STAT_OUTPUT_DIR. +# Variable used to specify one or more verification mask files for +# EnsembleStat. Not used for this example. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/EnsembleStat_APCPgt01h.conf b/parm/metplus/EnsembleStat_APCPgt01h.conf index e8b64b6763..e748642b9b 100644 --- a/parm/metplus/EnsembleStat_APCPgt01h.conf +++ b/parm/metplus/EnsembleStat_APCPgt01h.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = EnsembleStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -54,24 +54,29 @@ METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET configuration file to pass to EnsembleStat. # +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. +# ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # -# Used in the MET config file for: model, output_prefix +# Name to identify model (forecast) data in output. # MODEL = {{vx_fcst_model_name}} -FCST_NATIVE_DATA_TYPE = GRIB - ENSEMBLE_STAT_DESC = NA - -# Name to identify observation data in output +# +# Name to identify observation data in output. +# OBTYPE = {{obtype}} -OBS_NATIVE_DATA_TYPE = GRIB - -# Forecast data description variables +# +# Forecast data description variables. +# FCST_IS_PROB = false -#ENSEMBLE_STAT_DESC = +FCST_NATIVE_DATA_TYPE = GRIB +OBS_NATIVE_DATA_TYPE = GRIB # The METplus EnsembleStat logging level # 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. @@ -95,8 +100,6 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} - FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. @@ -150,7 +153,7 @@ ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False -ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = False ENSEMBLE_STAT_MASK_GRID = @@ -170,36 +173,22 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # -# Ensemble variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION. -# -# ENS_VARn_THRESH must be included here in order for the netCDF file -# generated by EnsembleStat to include the ensemble probability (aka -# ensembe frequency) fields corresponding to the specified thresholds. -# These must be included because the corresonding GridStat task for -# ensemble probabilities expects to read them in as input. -# -ENS_VAR1_NAME = {{fieldname_in_met_output}} -ENS_VAR1_LEVELS = A{ACCUM_HH} -ENS_VAR1_THRESH = {{field_thresholds}} -# -# Get the variable ACCUM_HH from the environment. +# Precipitation accumulation interval in 2-digit hours. # ACCUM_HH = {{accum_hh}} # @@ -222,7 +211,6 @@ OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} # configuration file. # OUTPUT_BASE = {{output_base}} -OUTPUT_DIR = {{output_dir}} # # Point observation input directory for EnsembleStat. # @@ -248,31 +236,38 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = # # Output directory for EnsembleStat. # -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +ENSEMBLE_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # STAGING_DIR = {{staging_dir}} +# End of [dir] section and start of [filename_templates] section. [filename_templates] # -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. +# Template for point observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. # -# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to -# FCST_ENSEMBLE_STAT_INPUT_DIR. +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# Template for gridded observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. # -# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} # -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = +# Template for forecast input to EnsembleStat relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. +# +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. +# +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # -# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# Template for output from EnsembleStat relative to ENSEMBLE_STAT_OUTPUT_DIR. # -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} +ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE}_{lead?fmt=%H%M%S}L -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly # # Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. @@ -284,7 +279,7 @@ ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # -# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to -# ENSEMBLE_STAT_OUTPUT_DIR. +# Variable used to specify one or more verification mask files for +# EnsembleStat. Not used for this example. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/EnsembleStat_REFC.conf b/parm/metplus/EnsembleStat_REFC.conf index 5379540b76..d6fe4874c8 100644 --- a/parm/metplus/EnsembleStat_REFC.conf +++ b/parm/metplus/EnsembleStat_REFC.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = EnsembleStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -54,19 +54,23 @@ METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET configuration file to pass to EnsembleStat. # +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. +# ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # -# Used in the MET config file for: model, output_prefix +# Name to identify model (forecast) data in output. # MODEL = {{vx_fcst_model_name}} ENSEMBLE_STAT_DESC = NA - -# Name to identify observation data in output +# +# Name to identify observation data in output. +# OBTYPE = {{obtype}} -#ENSEMBLE_STAT_DESC = - # The METplus EnsembleStat logging level # 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf @@ -89,8 +93,6 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} - FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. @@ -146,7 +148,7 @@ ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False -ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = False ENSEMBLE_STAT_MASK_GRID = FULL @@ -166,35 +168,21 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # -# Ensemble variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION. -# -# ENS_VARn_THRESH must be included here in order for the netCDF file -# generated by EnsembleStat to include the ensemble probability (aka -# ensembe frequency) fields corresponding to the specified thresholds. -# These must be included because the corresonding GridStat task for -# ensemble probabilities expects to read them in as input. -# -ENS_VAR1_NAME = {{fieldname_in_fcst_input}} -ENS_VAR1_LEVELS = L0 -ENS_VAR1_THRESH = {{field_thresholds}} -# # Forecast and observation variables and levels as specified in the fcst # field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, # FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, @@ -214,7 +202,6 @@ OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 # configuration file. # OUTPUT_BASE = {{output_base}} -OUTPUT_DIR = {{output_dir}} # # Point observation input directory for EnsembleStat. # @@ -240,31 +227,37 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = # # Output directory for EnsembleStat. # -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +ENSEMBLE_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # STAGING_DIR = {{staging_dir}} +# End of [dir] section and start of [filename_templates] section. [filename_templates] # -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. +# Template for point observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. # -# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to -# FCST_ENSEMBLE_STAT_INPUT_DIR. +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# Template for gridded observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. # -# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} # -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = +# Template for forecast input to EnsembleStat relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. # -# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. # -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from EnsembleStat relative to ENSEMBLE_STAT_OUTPUT_DIR. +# +ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE}_{lead?fmt=%H%M%S}L # # Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. @@ -276,7 +269,7 @@ ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # -# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to -# ENSEMBLE_STAT_OUTPUT_DIR. +# Variable used to specify one or more verification mask files for +# EnsembleStat. Not used for this example. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/EnsembleStat_RETOP.conf b/parm/metplus/EnsembleStat_RETOP.conf index 46286e1632..55ac5fc8b1 100644 --- a/parm/metplus/EnsembleStat_RETOP.conf +++ b/parm/metplus/EnsembleStat_RETOP.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = EnsembleStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -54,19 +54,23 @@ METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET configuration file to pass to EnsembleStat. # +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. +# ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # -# Used in the MET config file for: model, output_prefix +# Name to identify model (forecast) data in output. # MODEL = {{vx_fcst_model_name}} ENSEMBLE_STAT_DESC = NA - -# Name to identify observation data in output +# +# Name to identify observation data in output. +# OBTYPE = {{obtype}} -#ENSEMBLE_STAT_DESC = - # The METplus EnsembleStat logging level # 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf @@ -89,8 +93,6 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} - FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. @@ -146,7 +148,7 @@ ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False -ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = False ENSEMBLE_STAT_MASK_GRID = FULL @@ -166,37 +168,21 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # -# Ensemble variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION. -# -# ENS_VARn_THRESH must be included here in order for the netCDF file -# generated by EnsembleStat to include the ensemble probability (aka -# ensembe frequency) fields corresponding to the specified thresholds. -# These must be included because the corresonding GridStat task for -# ensemble probabilities expects to read them in as input. -# -ENS_VAR1_NAME = {{fieldname_in_fcst_input}} -ENS_VAR1_LEVELS = L0 -ENS_VAR1_THRESH = {{field_thresholds}} -# convert from meters to kilofeet: M_to_KFT(x) = x * 3.28084 * 0.001; -ENS_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; -# # Forecast and observation variables and levels as specified in the fcst # field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, # FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, @@ -218,7 +204,6 @@ OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 # configuration file. # OUTPUT_BASE = {{output_base}} -OUTPUT_DIR = {{output_dir}} # # Point observation input directory for EnsembleStat. # @@ -244,31 +229,37 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = # # Output directory for EnsembleStat. # -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +ENSEMBLE_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # STAGING_DIR = {{staging_dir}} +# End of [dir] section and start of [filename_templates] section. [filename_templates] # -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. +# Template for point observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. # -# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to -# FCST_ENSEMBLE_STAT_INPUT_DIR. +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# Template for gridded observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. # -# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} # -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = +# Template for forecast input to EnsembleStat relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. # -# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. # -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from EnsembleStat relative to ENSEMBLE_STAT_OUTPUT_DIR. +# +ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE}_{lead?fmt=%H%M%S}L # # Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. @@ -280,7 +271,7 @@ ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # -# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to -# ENSEMBLE_STAT_OUTPUT_DIR. +# Variable used to specify one or more verification mask files for +# EnsembleStat. Not used for this example. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/EnsembleStat_SFC.conf b/parm/metplus/EnsembleStat_SFC.conf index 1cd1495ca6..14c5c7b85a 100644 --- a/parm/metplus/EnsembleStat_SFC.conf +++ b/parm/metplus/EnsembleStat_SFC.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = EnsembleStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -54,19 +54,23 @@ METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET configuration file to pass to EnsembleStat. # +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. +# ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # -# Used in the MET config file for: model, output_prefix +# Name to identify model (forecast) data in output. # MODEL = {{vx_fcst_model_name}} ENSEMBLE_STAT_DESC = NA - -# Name to identify observation data in output +# +# Name to identify observation data in output. +# OBTYPE = {{obtype}} -#ENSEMBLE_STAT_DESC = - # The METplus EnsembleStat logging level # 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf @@ -89,8 +93,6 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} - FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} ENSEMBLE_STAT_OBS_QUALITY_INC = 0, 1, 2, 3, 9, NA @@ -147,7 +149,7 @@ ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 #ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 #ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False -#ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = False ENSEMBLE_STAT_MASK_GRID = @@ -167,53 +169,21 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # -# Ensemble variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION. -# -ENS_VAR1_NAME = TMP -ENS_VAR1_LEVELS = Z02 -ENS_VAR1_THRESH = >=268, >=273, >=278, >=293, >=298, >=303 - -ENS_VAR2_NAME = DPT -ENS_VAR2_LEVELS = Z2 -ENS_VAR2_THRESH = >=263, >=268, >=273, >=288, >=293, >=298 - -ENS_VAR3_NAME = WIND -ENS_VAR3_LEVELS = Z10 -ENS_VAR3_THRESH = >=5, >=10, >=15 -ENS_VAR3_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind - -ENS_VAR4_NAME = TCDC -ENS_VAR4_LEVELS = L0 -ENS_VAR4_THRESH = <25, >75 -ENS_VAR4_OPTIONS = GRIB_lvl_typ = 200; GRIB2_ipdtmpl_index=[27]; GRIB2_ipdtmpl_val=[255]; interp = { type = [ { method = NEAREST; width = 1; } ]; } - -ENS_VAR5_NAME = VIS -ENS_VAR5_LEVELS = L0 -ENS_VAR5_THRESH = <1609, <8045, >=8045 -ENS_VAR5_OPTIONS = interp = { type = [ { method = NEAREST; width = 1; } ]; } - -ENS_VAR6_NAME = HGT -ENS_VAR6_LEVELS = L0 -ENS_VAR6_THRESH = <152, <1520, >=914 -ENS_VAR6_OPTIONS = GRIB_lvl_typ = 215; desc = "CEILING"; -# # Forecast and observation variables and levels as specified in the fcst # field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, # FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, @@ -281,7 +251,6 @@ OBS_VAR6_THRESH = <152, <305, >=914 # configuration file. # OUTPUT_BASE = {{output_base}} -OUTPUT_DIR = {{output_dir}} # # Point observation input directory for EnsembleStat. # @@ -307,31 +276,37 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = # # Output directory for EnsembleStat. # -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +ENSEMBLE_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # STAGING_DIR = {{staging_dir}} +# End of [dir] section and start of [filename_templates] section. [filename_templates] # -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. +# Template for point observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. # -# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to -# FCST_ENSEMBLE_STAT_INPUT_DIR. +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {{obs_input_fn_template}} # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# Template for gridded observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. # -# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = # -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# Template for forecast input to EnsembleStat relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. # -# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. # -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from EnsembleStat relative to ENSEMBLE_STAT_OUTPUT_DIR. +# +ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE}_{lead?fmt=%H%M%S}L # # Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. @@ -343,7 +318,7 @@ ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # -# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to -# ENSEMBLE_STAT_OUTPUT_DIR. +# Variable used to specify one or more verification mask files for +# EnsembleStat. Not used for this example. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/EnsembleStat_UPA.conf b/parm/metplus/EnsembleStat_UPA.conf index 9a60c5ae0f..4bc2bad3d0 100644 --- a/parm/metplus/EnsembleStat_UPA.conf +++ b/parm/metplus/EnsembleStat_UPA.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = EnsembleStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -54,19 +54,23 @@ METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET configuration file to pass to EnsembleStat. # +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. +# ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # -# Used in the MET config file for: model, output_prefix +# Name to identify model (forecast) data in output. # MODEL = {{vx_fcst_model_name}} ENSEMBLE_STAT_DESC = NA - -# Name to identify observation data in output +# +# Name to identify observation data in output. +# OBTYPE = {{obtype}} -#ENSEMBLE_STAT_DESC = - # The METplus EnsembleStat logging level # 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf @@ -89,8 +93,6 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} - FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} ENSEMBLE_STAT_OBS_QUALITY_INC = 0, 1, 2, 3, 9, NA @@ -147,7 +149,7 @@ ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 #ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 #ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False -#ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = False ENSEMBLE_STAT_MASK_GRID = @@ -167,74 +169,21 @@ ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # -# Ensemble variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION. -# -ENS_VAR1_NAME = TMP -ENS_VAR1_LEVELS = P850 -ENS_VAR1_THRESH = >=288, >=293, >=298 - -ENS_VAR2_NAME = TMP -ENS_VAR2_LEVELS = P700 -ENS_VAR2_THRESH = >=273, >=278, >=283 - -ENS_VAR3_NAME = TMP -ENS_VAR3_LEVELS = P500 -ENS_VAR3_THRESH = >=258, >=263, >=268 - -ENS_VAR4_NAME = DPT -ENS_VAR4_LEVELS = P850 -ENS_VAR4_THRESH = >=273, >=278, >=283 - -ENS_VAR5_NAME = DPT -ENS_VAR5_LEVELS = P700 -ENS_VAR5_THRESH = >=263, >=268, >=273 - -ENS_VAR6_NAME = WIND -ENS_VAR6_LEVELS = P850 -ENS_VAR6_THRESH = >=5, >=10, >=15 - -ENS_VAR7_NAME = WIND -ENS_VAR7_LEVELS = P700 -ENS_VAR7_THRESH = >=10, >=15, >=20 - -ENS_VAR8_NAME = WIND -ENS_VAR8_LEVELS = P500 -ENS_VAR8_THRESH = >=15, >=21, >=26 - -ENS_VAR9_NAME = WIND -ENS_VAR9_LEVELS = P250 -ENS_VAR9_THRESH = >=26, >=31, >=36, >=46, >=62 - -ENS_VAR10_NAME = HGT -ENS_VAR10_LEVELS = P500 -ENS_VAR10_THRESH = >=5400, >=5600, >=5880 - -ENS_VAR11_NAME = CAPE -ENS_VAR11_LEVELS = L0 -ENS_VAR11_OPTIONS = cnt_thresh = [ >0 ]; -ENS_VAR11_THRESH = <=1000, >1000&&<2500, >2500&&<4000, >2500 - -ENS_VAR12_NAME = HPBL -ENS_VAR12_LEVELS = Z0 -ENS_VAR12_THRESH = <500, <1500, >1500 -# # Forecast and observation variables and levels as specified in the fcst # field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, # FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, @@ -344,7 +293,6 @@ OBS_VAR12_THRESH = <500, <1500, >1500 # configuration file. # OUTPUT_BASE = {{output_base}} -OUTPUT_DIR = {{output_dir}} # # Point observation input directory for EnsembleStat. # @@ -370,31 +318,37 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = # # Output directory for EnsembleStat. # -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +ENSEMBLE_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # STAGING_DIR = {{staging_dir}} +# End of [dir] section and start of [filename_templates] section. [filename_templates] # -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. +# Template for point observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. # -# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to -# FCST_ENSEMBLE_STAT_INPUT_DIR. +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {{obs_input_fn_template}} # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# Template for gridded observation input to EnsembleStat relative to +# OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. # -# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = # -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# Template for forecast input to EnsembleStat relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. +# +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. # -# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Template for output from EnsembleStat relative to ENSEMBLE_STAT_OUTPUT_DIR. +# +ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE}_{lead?fmt=%H%M%S}L # # Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. @@ -406,7 +360,7 @@ ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # -# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to -# ENSEMBLE_STAT_OUTPUT_DIR. +# Variable used to specify one or more verification mask files for +# EnsembleStat. Not used for this example. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GenEnsProd_APCP01h.conf b/parm/metplus/GenEnsProd_APCP01h.conf new file mode 100644 index 0000000000..d60c8d3ce0 --- /dev/null +++ b/parm/metplus/GenEnsProd_APCP01h.conf @@ -0,0 +1,191 @@ +# GenEnsProd METplus Configuration + +[config] + +# List of applications (tools) to run. +PROCESS_LIST = GenEnsProd + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GEN_ENS_PROD_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Name to identify model (forecast) data in output. +# +MODEL = {{vx_fcst_model_name}} + +GEN_ENS_PROD_DESC = NA +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} + +# The METplus GenEnsProd logging level +# 0 quiet to 5 loud, Verbosity setting for MET gen_ens_prod output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_GEN_ENS_PROD_VERBOSITY = 2 + +### +# File I/O +### + +# +# Forecast model input directory for GenEnsProd. +# +GEN_ENS_PROD_INPUT_DIR = {{fcst_input_dir}} +# +# Template for forecast input to GenEnsProd relative to +# GEN_ENS_PROD_INPUT_DIR. +# +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. +# +GEN_ENS_PROD_INPUT_TEMPLATE = {{fcst_input_fn_template}} + +# GEN_ENS_PROD_CTRL_INPUT_DIR = {INPUT_BASE} +# GEN_ENS_PROD_CTRL_INPUT_TEMPLATE = +# {init?fmt=%Y%m%d%H}/mem1/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# +# Output directory for GenEnsProd. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GEN_ENS_PROD_OUTPUT_DIR = {{output_dir}} +# +# Template for output from GenEnsProd relative to GEN_ENS_PROD_OUTPUT_DIR. +# +GEN_ENS_PROD_OUTPUT_TEMPLATE = gen_ens_prod_{MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d_%H%M%S}V.nc +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} +# +# There are n ensembles but 1 is used as control, so specify n-1 members. +# +GEN_ENS_PROD_N_MEMBERS = {{num_ens_members}} + +### +# Field Info +### + +# Ensemble Variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION +ENS_VAR1_NAME = {{fieldname_in_fcst_input}} +ENS_VAR1_LEVELS = A{{accum_hh}} +ENS_VAR1_THRESH = {{field_thresholds}} + +### +# GenEnsProd +### + +# GEN_ENS_PROD_REGRID_TO_GRID = NONE +# GEN_ENS_PROD_REGRID_METHOD = NEAREST +# GEN_ENS_PROD_REGRID_WIDTH = 1 +# GEN_ENS_PROD_REGRID_VLD_THRESH = 0.5 +# GEN_ENS_PROD_REGRID_SHAPE = SQUARE + +# GEN_ENS_PROD_CENSOR_THRESH = +# GEN_ENS_PROD_CENSOR_VAL = +# GEN_ENS_PROD_CAT_THRESH = +# GEN_ENS_PROD_NC_VAR_STR = + +# Threshold for ratio of valid files to expected files to allow app to run +GEN_ENS_PROD_ENS_THRESH = 0.05 + +GEN_ENS_PROD_NBRHD_PROB_WIDTH = 27 +GEN_ENS_PROD_NBRHD_PROB_SHAPE = CIRCLE +GEN_ENS_PROD_NBRHD_PROB_VLD_THRESH = 0.0 + +# GEN_ENS_PROD_NMEP_SMOOTH_VLD_THRESH = 0.0 +# GEN_ENS_PROD_NMEP_SMOOTH_SHAPE = CIRCLE +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +# GEN_ENS_PROD_NMEP_SMOOTH_METHOD = GAUSSIAN +# GEN_ENS_PROD_NMEP_SMOOTH_WIDTH = 1 + +# GEN_ENS_PROD_CLIMO_MEAN_FILE_NAME = +# GEN_ENS_PROD_CLIMO_MEAN_FIELD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_MEAN_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_MEAN_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_MEAN_HOUR_INTERVAL = 6 + +# GEN_ENS_PROD_CLIMO_STDEV_FILE_NAME = +# GEN_ENS_PROD_CLIMO_STDEV_FIELD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_STDEV_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_STDEV_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_STDEV_HOUR_INTERVAL = 6 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF = FALSE + +# GEN_ENS_PROD_ENS_MEMBER_IDS = +# GEN_ENS_PROD_CONTROL_ID = diff --git a/parm/metplus/GenEnsProd_APCPgt01h.conf b/parm/metplus/GenEnsProd_APCPgt01h.conf new file mode 100644 index 0000000000..08886087d9 --- /dev/null +++ b/parm/metplus/GenEnsProd_APCPgt01h.conf @@ -0,0 +1,204 @@ +# GenEnsProd METplus Configuration + +[config] + +# List of applications (tools) to run. +PROCESS_LIST = GenEnsProd + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GEN_ENS_PROD_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Name to identify model (forecast) data in output. +# +MODEL = {{vx_fcst_model_name}} + +GEN_ENS_PROD_DESC = NA +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} + +# The METplus GenEnsProd logging level +# 0 quiet to 5 loud, Verbosity setting for MET gen_ens_prod output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_GEN_ENS_PROD_VERBOSITY = 2 + +### +# File I/O +### + +# +# Forecast model input directory for GenEnsProd. +# +GEN_ENS_PROD_INPUT_DIR = {{fcst_input_dir}} +# +# Template for forecast input to GenEnsProd relative to +# GEN_ENS_PROD_INPUT_DIR. +# +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. +# +GEN_ENS_PROD_INPUT_TEMPLATE = {{fcst_input_fn_template}} + +# Forecast data description variables +FCST_IS_PROB = false + +# GEN_ENS_PROD_CTRL_INPUT_DIR = {INPUT_BASE} +# GEN_ENS_PROD_CTRL_INPUT_TEMPLATE = +# {init?fmt=%Y%m%d%H}/mem1/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# +# Output directory for GenEnsProd. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GEN_ENS_PROD_OUTPUT_DIR = {{output_dir}} +# +# Template for output from GenEnsProd relative to GEN_ENS_PROD_OUTPUT_DIR. +# +GEN_ENS_PROD_OUTPUT_TEMPLATE = gen_ens_prod_{MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d_%H%M%S}V.nc +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} +# +# There are n ensembles but 1 is used as control, so specify n-1 members. +# +GEN_ENS_PROD_N_MEMBERS = {{num_ens_members}} + +### +# Field Info +### + +# Ensemble Variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION +# Note: +# For APCP variables with accumulation periods greater than 1 hour (e.g. +# 03h, 06h, 24h), ENS_VAR1_NAME in the corresponding METplus configuration +# file specifies the name of the field in the NetCDF file(s) generated by +# MET's pcp_combine tool. This tool reads in the grib2 file(s) containing +# 1 hour accumulation data and outputs NetCDF file(s) with the appropriate +# > 1 hour accumulation. These output NetCDF files name their arrays as +# specified by the environment variable fieldname_in_met_output. Thus, +# that is the value we set ENS_VAR1_NAME to here, not to the name of the +# variable in the grib2 file. +ENS_VAR1_NAME = {{fieldname_in_met_output}} +ENS_VAR1_LEVELS = A{{accum_hh}} +ENS_VAR1_THRESH = {{field_thresholds}} + +### +# GenEnsProd +### + +# GEN_ENS_PROD_REGRID_TO_GRID = NONE +# GEN_ENS_PROD_REGRID_METHOD = NEAREST +# GEN_ENS_PROD_REGRID_WIDTH = 1 +# GEN_ENS_PROD_REGRID_VLD_THRESH = 0.5 +# GEN_ENS_PROD_REGRID_SHAPE = SQUARE + +# GEN_ENS_PROD_CENSOR_THRESH = +# GEN_ENS_PROD_CENSOR_VAL = +# GEN_ENS_PROD_CAT_THRESH = +# GEN_ENS_PROD_NC_VAR_STR = + +# Threshold for ratio of valid files to expected files to allow app to run +GEN_ENS_PROD_ENS_THRESH = 0.05 + +GEN_ENS_PROD_NBRHD_PROB_WIDTH = 27 +GEN_ENS_PROD_NBRHD_PROB_SHAPE = CIRCLE +GEN_ENS_PROD_NBRHD_PROB_VLD_THRESH = 0.0 + +# GEN_ENS_PROD_NMEP_SMOOTH_VLD_THRESH = 0.0 +# GEN_ENS_PROD_NMEP_SMOOTH_SHAPE = CIRCLE +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +# GEN_ENS_PROD_NMEP_SMOOTH_METHOD = GAUSSIAN +# GEN_ENS_PROD_NMEP_SMOOTH_WIDTH = 1 + +# GEN_ENS_PROD_CLIMO_MEAN_FILE_NAME = +# GEN_ENS_PROD_CLIMO_MEAN_FIELD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_MEAN_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_MEAN_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_MEAN_HOUR_INTERVAL = 6 + +# GEN_ENS_PROD_CLIMO_STDEV_FILE_NAME = +# GEN_ENS_PROD_CLIMO_STDEV_FIELD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_STDEV_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_STDEV_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_STDEV_HOUR_INTERVAL = 6 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF = FALSE + +# GEN_ENS_PROD_ENS_MEMBER_IDS = +# GEN_ENS_PROD_CONTROL_ID = diff --git a/parm/metplus/GenEnsProd_REFC.conf b/parm/metplus/GenEnsProd_REFC.conf new file mode 100644 index 0000000000..8c02f71d64 --- /dev/null +++ b/parm/metplus/GenEnsProd_REFC.conf @@ -0,0 +1,191 @@ +# GenEnsProd METplus Configuration + +[config] + +# List of applications (tools) to run. +PROCESS_LIST = GenEnsProd + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GEN_ENS_PROD_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Name to identify model (forecast) data in output. +# +MODEL = {{vx_fcst_model_name}} + +GEN_ENS_PROD_DESC = NA +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} + +# The METplus GenEnsProd logging level +# 0 quiet to 5 loud, Verbosity setting for MET gen_ens_prod output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_GEN_ENS_PROD_VERBOSITY = 2 + +### +# File I/O +### + +# +# Forecast model input directory for GenEnsProd. +# +GEN_ENS_PROD_INPUT_DIR = {{fcst_input_dir}} +# +# Template for forecast input to GenEnsProd relative to +# GEN_ENS_PROD_INPUT_DIR. +# +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. +# +GEN_ENS_PROD_INPUT_TEMPLATE = {{fcst_input_fn_template}} + +# GEN_ENS_PROD_CTRL_INPUT_DIR = {INPUT_BASE} +# GEN_ENS_PROD_CTRL_INPUT_TEMPLATE = +# {init?fmt=%Y%m%d%H}/mem1/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# +# Output directory for GenEnsProd. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GEN_ENS_PROD_OUTPUT_DIR = {{output_dir}} +# +# Template for output from GenEnsProd relative to GEN_ENS_PROD_OUTPUT_DIR. +# +GEN_ENS_PROD_OUTPUT_TEMPLATE = gen_ens_prod_{MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d_%H%M%S}V.nc +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} +# +# There are n ensembles but 1 is used as control, so specify n-1 members. +# +GEN_ENS_PROD_N_MEMBERS = {{num_ens_members}} + +### +# Field Info +### + +# Ensemble Variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION +ENS_VAR1_NAME = {{fieldname_in_fcst_input}} +ENS_VAR1_LEVELS = L0 +ENS_VAR1_THRESH = {{field_thresholds}} + +### +# GenEnsProd +### + +# GEN_ENS_PROD_REGRID_TO_GRID = NONE +# GEN_ENS_PROD_REGRID_METHOD = NEAREST +# GEN_ENS_PROD_REGRID_WIDTH = 1 +# GEN_ENS_PROD_REGRID_VLD_THRESH = 0.5 +# GEN_ENS_PROD_REGRID_SHAPE = SQUARE + +# GEN_ENS_PROD_CENSOR_THRESH = +# GEN_ENS_PROD_CENSOR_VAL = +# GEN_ENS_PROD_CAT_THRESH = +# GEN_ENS_PROD_NC_VAR_STR = + +# Threshold for ratio of valid files to expected files to allow app to run +GEN_ENS_PROD_ENS_THRESH = 0.05 + +GEN_ENS_PROD_NBRHD_PROB_WIDTH = 27 +GEN_ENS_PROD_NBRHD_PROB_SHAPE = CIRCLE +GEN_ENS_PROD_NBRHD_PROB_VLD_THRESH = 0.0 + +# GEN_ENS_PROD_NMEP_SMOOTH_VLD_THRESH = 0.0 +# GEN_ENS_PROD_NMEP_SMOOTH_SHAPE = CIRCLE +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +# GEN_ENS_PROD_NMEP_SMOOTH_METHOD = GAUSSIAN +# GEN_ENS_PROD_NMEP_SMOOTH_WIDTH = 1 + +# GEN_ENS_PROD_CLIMO_MEAN_FILE_NAME = +# GEN_ENS_PROD_CLIMO_MEAN_FIELD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_MEAN_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_MEAN_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_MEAN_HOUR_INTERVAL = 6 + +# GEN_ENS_PROD_CLIMO_STDEV_FILE_NAME = +# GEN_ENS_PROD_CLIMO_STDEV_FIELD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_STDEV_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_STDEV_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_STDEV_HOUR_INTERVAL = 6 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF = FALSE + +# GEN_ENS_PROD_ENS_MEMBER_IDS = +# GEN_ENS_PROD_CONTROL_ID = diff --git a/parm/metplus/GenEnsProd_RETOP.conf b/parm/metplus/GenEnsProd_RETOP.conf new file mode 100644 index 0000000000..111b3bfccc --- /dev/null +++ b/parm/metplus/GenEnsProd_RETOP.conf @@ -0,0 +1,193 @@ +# GenEnsProd METplus Configuration + +[config] + +# List of applications (tools) to run. +PROCESS_LIST = GenEnsProd + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GEN_ENS_PROD_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Name to identify model (forecast) data in output. +# +MODEL = {{vx_fcst_model_name}} + +GEN_ENS_PROD_DESC = NA +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} + +# The METplus GenEnsProd logging level +# 0 quiet to 5 loud, Verbosity setting for MET gen_ens_prod output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_GEN_ENS_PROD_VERBOSITY = 2 + +### +# File I/O +### + +# +# Forecast model input directory for GenEnsProd. +# +GEN_ENS_PROD_INPUT_DIR = {{fcst_input_dir}} +# +# Template for forecast input to GenEnsProd relative to +# GEN_ENS_PROD_INPUT_DIR. +# +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. +# +GEN_ENS_PROD_INPUT_TEMPLATE = {{fcst_input_fn_template}} + +# GEN_ENS_PROD_CTRL_INPUT_DIR = {INPUT_BASE} +# GEN_ENS_PROD_CTRL_INPUT_TEMPLATE = +# {init?fmt=%Y%m%d%H}/mem1/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# +# Output directory for GenEnsProd. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GEN_ENS_PROD_OUTPUT_DIR = {{output_dir}} +# +# Template for output from GenEnsProd relative to GEN_ENS_PROD_OUTPUT_DIR. +# +GEN_ENS_PROD_OUTPUT_TEMPLATE = gen_ens_prod_{MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d_%H%M%S}V.nc +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} +# +# There are n ensembles but 1 is used as control, so specify n-1 members. +# +GEN_ENS_PROD_N_MEMBERS = {{num_ens_members}} + +### +# Field Info +### + +# Ensemble Variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION +ENS_VAR1_NAME = {{fieldname_in_fcst_input}} +ENS_VAR1_LEVELS = L0 +ENS_VAR1_THRESH = {{field_thresholds}} +# convert from meters to kilofeet: M_to_KFT(x) = x * 3.28084 * 0.001; +ENS_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; + +### +# GenEnsProd +### + +# GEN_ENS_PROD_REGRID_TO_GRID = NONE +# GEN_ENS_PROD_REGRID_METHOD = NEAREST +# GEN_ENS_PROD_REGRID_WIDTH = 1 +# GEN_ENS_PROD_REGRID_VLD_THRESH = 0.5 +# GEN_ENS_PROD_REGRID_SHAPE = SQUARE + +# GEN_ENS_PROD_CENSOR_THRESH = +# GEN_ENS_PROD_CENSOR_VAL = +# GEN_ENS_PROD_CAT_THRESH = +# GEN_ENS_PROD_NC_VAR_STR = + +# Threshold for ratio of valid files to expected files to allow app to run +GEN_ENS_PROD_ENS_THRESH = 0.05 + +GEN_ENS_PROD_NBRHD_PROB_WIDTH = 27 +GEN_ENS_PROD_NBRHD_PROB_SHAPE = CIRCLE +GEN_ENS_PROD_NBRHD_PROB_VLD_THRESH = 0.0 + +# GEN_ENS_PROD_NMEP_SMOOTH_VLD_THRESH = 0.0 +# GEN_ENS_PROD_NMEP_SMOOTH_SHAPE = CIRCLE +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +# GEN_ENS_PROD_NMEP_SMOOTH_METHOD = GAUSSIAN +# GEN_ENS_PROD_NMEP_SMOOTH_WIDTH = 1 + +# GEN_ENS_PROD_CLIMO_MEAN_FILE_NAME = +# GEN_ENS_PROD_CLIMO_MEAN_FIELD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_MEAN_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_MEAN_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_MEAN_HOUR_INTERVAL = 6 + +# GEN_ENS_PROD_CLIMO_STDEV_FILE_NAME = +# GEN_ENS_PROD_CLIMO_STDEV_FIELD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_STDEV_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_STDEV_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_STDEV_HOUR_INTERVAL = 6 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF = FALSE + +# GEN_ENS_PROD_ENS_MEMBER_IDS = +# GEN_ENS_PROD_CONTROL_ID = diff --git a/parm/metplus/GenEnsProd_SFC.conf b/parm/metplus/GenEnsProd_SFC.conf new file mode 100644 index 0000000000..47b49b9adb --- /dev/null +++ b/parm/metplus/GenEnsProd_SFC.conf @@ -0,0 +1,216 @@ +# GenEnsProd METplus Configuration + +[config] + +# List of applications (tools) to run. +PROCESS_LIST = GenEnsProd + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GEN_ENS_PROD_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Name to identify model (forecast) data in output. +# +MODEL = {{vx_fcst_model_name}} + +GEN_ENS_PROD_DESC = NA +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} + +# The METplus GenEnsProd logging level +# 0 quiet to 5 loud, Verbosity setting for MET gen_ens_prod output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_GEN_ENS_PROD_VERBOSITY = 2 + +### +# File I/O +### + +# +# Forecast model input directory for GenEnsProd. +# +GEN_ENS_PROD_INPUT_DIR = {{fcst_input_dir}} +# +# Template for forecast input to GenEnsProd relative to +# GEN_ENS_PROD_INPUT_DIR. +# +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. +# +GEN_ENS_PROD_INPUT_TEMPLATE = {{fcst_input_fn_template}} + +# GEN_ENS_PROD_CTRL_INPUT_DIR = {INPUT_BASE} +# GEN_ENS_PROD_CTRL_INPUT_TEMPLATE = +# {init?fmt=%Y%m%d%H}/mem1/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# +# Output directory for GenEnsProd. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GEN_ENS_PROD_OUTPUT_DIR = {{output_dir}} +# +# Template for output from GenEnsProd relative to GEN_ENS_PROD_OUTPUT_DIR. +# +GEN_ENS_PROD_OUTPUT_TEMPLATE = gen_ens_prod_{MODEL}_ADP{{fieldname_in_met_filedir_names}}_{OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d_%H%M%S}V.nc +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} +# +# There are n ensembles but 1 is used as control, so specify n-1 members. +# +GEN_ENS_PROD_N_MEMBERS = {{num_ens_members}} + +### +# Field Info +### + +# Ensemble Variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION +ENS_VAR1_NAME = TMP +ENS_VAR1_LEVELS = Z02 +ENS_VAR1_THRESH = >=268, >=273, >=278, >=293, >=298, >=303 + +ENS_VAR2_NAME = DPT +ENS_VAR2_LEVELS = Z2 +ENS_VAR2_THRESH = >=263, >=268, >=273, >=288, >=293, >=298 + +ENS_VAR3_NAME = WIND +ENS_VAR3_LEVELS = Z10 +ENS_VAR3_THRESH = >=5, >=10, >=15 +ENS_VAR3_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind + +ENS_VAR4_NAME = TCDC +ENS_VAR4_LEVELS = L0 +ENS_VAR4_THRESH = <25, >75 +ENS_VAR4_OPTIONS = GRIB_lvl_typ = 200; GRIB2_ipdtmpl_index=[27]; GRIB2_ipdtmpl_val=[255]; interp = { type = [ { method = NEAREST; width = 1; } ]; } + +ENS_VAR5_NAME = VIS +ENS_VAR5_LEVELS = L0 +ENS_VAR5_THRESH = <1609, <8045, >=8045 +ENS_VAR5_OPTIONS = interp = { type = [ { method = NEAREST; width = 1; } ]; } + +ENS_VAR6_NAME = HGT +ENS_VAR6_LEVELS = L0 +ENS_VAR6_THRESH = <152, <1520, >=914 +ENS_VAR6_OPTIONS = GRIB_lvl_typ = 215; desc = "CEILING"; + + +### +# GenEnsProd +### + +# GEN_ENS_PROD_REGRID_TO_GRID = NONE +# GEN_ENS_PROD_REGRID_METHOD = NEAREST +# GEN_ENS_PROD_REGRID_WIDTH = 1 +# GEN_ENS_PROD_REGRID_VLD_THRESH = 0.5 +# GEN_ENS_PROD_REGRID_SHAPE = SQUARE + +# GEN_ENS_PROD_CENSOR_THRESH = +# GEN_ENS_PROD_CENSOR_VAL = +# GEN_ENS_PROD_CAT_THRESH = +# GEN_ENS_PROD_NC_VAR_STR = + +# Threshold for ratio of valid files to expected files to allow app to run +GEN_ENS_PROD_ENS_THRESH = 0.05 + +GEN_ENS_PROD_NBRHD_PROB_WIDTH = 27 +GEN_ENS_PROD_NBRHD_PROB_SHAPE = CIRCLE +GEN_ENS_PROD_NBRHD_PROB_VLD_THRESH = 0.0 + +# GEN_ENS_PROD_NMEP_SMOOTH_VLD_THRESH = 0.0 +# GEN_ENS_PROD_NMEP_SMOOTH_SHAPE = CIRCLE +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +# GEN_ENS_PROD_NMEP_SMOOTH_METHOD = GAUSSIAN +# GEN_ENS_PROD_NMEP_SMOOTH_WIDTH = 1 + +# GEN_ENS_PROD_CLIMO_MEAN_FILE_NAME = +# GEN_ENS_PROD_CLIMO_MEAN_FIELD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_MEAN_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_MEAN_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_MEAN_HOUR_INTERVAL = 6 + +# GEN_ENS_PROD_CLIMO_STDEV_FILE_NAME = +# GEN_ENS_PROD_CLIMO_STDEV_FIELD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_STDEV_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_STDEV_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_STDEV_HOUR_INTERVAL = 6 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF = FALSE + +# GEN_ENS_PROD_ENS_MEMBER_IDS = +# GEN_ENS_PROD_CONTROL_ID = diff --git a/parm/metplus/GenEnsProd_UPA.conf b/parm/metplus/GenEnsProd_UPA.conf new file mode 100644 index 0000000000..ee1ceb42ca --- /dev/null +++ b/parm/metplus/GenEnsProd_UPA.conf @@ -0,0 +1,236 @@ +# GenEnsProd METplus Configuration + +[config] + +# List of applications (tools) to run. +PROCESS_LIST = GenEnsProd + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GEN_ENS_PROD_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Name to identify model (forecast) data in output. +# +MODEL = {{vx_fcst_model_name}} + +GEN_ENS_PROD_DESC = NA +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} + +# The METplus GenEnsProd logging level +# 0 quiet to 5 loud, Verbosity setting for MET gen_ens_prod output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_GEN_ENS_PROD_VERBOSITY = 2 + +### +# File I/O +### + +# +# Forecast model input directory for GenEnsProd. +# +GEN_ENS_PROD_INPUT_DIR = {{fcst_input_dir}} +# +# Template for forecast input to GenEnsProd relative to +# GEN_ENS_PROD_INPUT_DIR. +# +# Note that this can be a comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. +# +GEN_ENS_PROD_INPUT_TEMPLATE = {{fcst_input_fn_template}} + +# GEN_ENS_PROD_CTRL_INPUT_DIR = {INPUT_BASE} +# GEN_ENS_PROD_CTRL_INPUT_TEMPLATE = +# {init?fmt=%Y%m%d%H}/mem1/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# +# Output directory for GenEnsProd. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GEN_ENS_PROD_OUTPUT_DIR = {{output_dir}} +# +# Template for output from GenEnsProd relative to GEN_ENS_PROD_OUTPUT_DIR. +# +GEN_ENS_PROD_OUTPUT_TEMPLATE = gen_ens_prod_{MODEL}_ADP{{fieldname_in_met_filedir_names}}_{OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d_%H%M%S}V.nc +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} +# +# There are n ensembles but 1 is used as control, so specify n-1 members. +# +GEN_ENS_PROD_N_MEMBERS = {{num_ens_members}} + +### +# Field Info +### + +# Ensemble Variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION +ENS_VAR1_NAME = TMP +ENS_VAR1_LEVELS = P850 +ENS_VAR1_THRESH = >=288, >=293, >=298 + +ENS_VAR2_NAME = TMP +ENS_VAR2_LEVELS = P700 +ENS_VAR2_THRESH = >=273, >=278, >=283 + +ENS_VAR3_NAME = TMP +ENS_VAR3_LEVELS = P500 +ENS_VAR3_THRESH = >=258, >=263, >=268 + +ENS_VAR4_NAME = DPT +ENS_VAR4_LEVELS = P850 +ENS_VAR4_THRESH = >=273, >=278, >=283 + +ENS_VAR5_NAME = DPT +ENS_VAR5_LEVELS = P700 +ENS_VAR5_THRESH = >=263, >=268, >=273 + +ENS_VAR6_NAME = WIND +ENS_VAR6_LEVELS = P850 +ENS_VAR6_THRESH = >=5, >=10, >=15 + +ENS_VAR7_NAME = WIND +ENS_VAR7_LEVELS = P700 +ENS_VAR7_THRESH = >=10, >=15, >=20 + +ENS_VAR8_NAME = WIND +ENS_VAR8_LEVELS = P500 +ENS_VAR8_THRESH = >=15, >=21, >=26 + +ENS_VAR9_NAME = WIND +ENS_VAR9_LEVELS = P250 +ENS_VAR9_THRESH = >=26, >=31, >=36, >=46, >=62 + +ENS_VAR10_NAME = HGT +ENS_VAR10_LEVELS = P500 +ENS_VAR10_THRESH = >=5400, >=5600, >=5880 + +ENS_VAR11_NAME = CAPE +ENS_VAR11_LEVELS = L0 +ENS_VAR11_OPTIONS = cnt_thresh = [ >0 ]; +ENS_VAR11_THRESH = <=1000, >1000&&<2500, >2500&&<4000, >2500 + +ENS_VAR12_NAME = HPBL +ENS_VAR12_LEVELS = Z0 +ENS_VAR12_THRESH = <500, <1500, >1500 + +### +# GenEnsProd +### + +# GEN_ENS_PROD_REGRID_TO_GRID = NONE +# GEN_ENS_PROD_REGRID_METHOD = NEAREST +# GEN_ENS_PROD_REGRID_WIDTH = 1 +# GEN_ENS_PROD_REGRID_VLD_THRESH = 0.5 +# GEN_ENS_PROD_REGRID_SHAPE = SQUARE + +# GEN_ENS_PROD_CENSOR_THRESH = +# GEN_ENS_PROD_CENSOR_VAL = +# GEN_ENS_PROD_CAT_THRESH = +# GEN_ENS_PROD_NC_VAR_STR = + +# Threshold for ratio of valid files to expected files to allow app to run +GEN_ENS_PROD_ENS_THRESH = 0.05 + +GEN_ENS_PROD_NBRHD_PROB_WIDTH = 27 +GEN_ENS_PROD_NBRHD_PROB_SHAPE = CIRCLE +GEN_ENS_PROD_NBRHD_PROB_VLD_THRESH = 0.0 + +# GEN_ENS_PROD_NMEP_SMOOTH_VLD_THRESH = 0.0 +# GEN_ENS_PROD_NMEP_SMOOTH_SHAPE = CIRCLE +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +# GEN_ENS_PROD_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +# GEN_ENS_PROD_NMEP_SMOOTH_METHOD = GAUSSIAN +# GEN_ENS_PROD_NMEP_SMOOTH_WIDTH = 1 + +# GEN_ENS_PROD_CLIMO_MEAN_FILE_NAME = +# GEN_ENS_PROD_CLIMO_MEAN_FIELD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_MEAN_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_MEAN_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_MEAN_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_MEAN_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_MEAN_HOUR_INTERVAL = 6 + +# GEN_ENS_PROD_CLIMO_STDEV_FILE_NAME = +# GEN_ENS_PROD_CLIMO_STDEV_FIELD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_WIDTH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_VLD_THRESH = +# GEN_ENS_PROD_CLIMO_STDEV_REGRID_SHAPE = +# GEN_ENS_PROD_CLIMO_STDEV_TIME_INTERP_METHOD = +# GEN_ENS_PROD_CLIMO_STDEV_MATCH_MONTH = +# GEN_ENS_PROD_CLIMO_STDEV_DAY_INTERVAL = 31 +# GEN_ENS_PROD_CLIMO_STDEV_HOUR_INTERVAL = 6 + +GEN_ENS_PROD_ENSEMBLE_FLAG_LATLON = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MEAN = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_STDEV = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_MINUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_PLUS = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MIN = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_MAX = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_RANGE = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_VLD_COUNT = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_FREQUENCY = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_NMEP = TRUE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO = FALSE +GEN_ENS_PROD_ENSEMBLE_FLAG_CLIMO_CDF = FALSE + +# GEN_ENS_PROD_ENS_MEMBER_IDS = +# GEN_ENS_PROD_CONTROL_ID = diff --git a/parm/metplus/GridStat_APCP01h.conf b/parm/metplus/GridStat_APCP01h.conf index d8a686ab00..0ba9399203 100644 --- a/parm/metplus/GridStat_APCP01h.conf +++ b/parm/metplus/GridStat_APCP01h.conf @@ -1,10 +1,8 @@ # GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -59,6 +57,11 @@ METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET configuration file to pass to GridStat. # +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary @@ -85,7 +88,7 @@ GRID_STAT_REGRID_SHAPE = SQUARE # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} +MODEL = {{vx_fcst_model_name}}_{{ensmem_name}} FCST_NATIVE_DATA_TYPE = GRIB # @@ -284,19 +287,23 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR. +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. # -FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} # -# Template for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR. +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. # -OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. # diff --git a/parm/metplus/GridStat_APCPgt01h.conf b/parm/metplus/GridStat_APCPgt01h.conf index 6d8968796d..d56bd21e23 100644 --- a/parm/metplus/GridStat_APCPgt01h.conf +++ b/parm/metplus/GridStat_APCPgt01h.conf @@ -1,10 +1,8 @@ # GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -85,7 +88,7 @@ GRID_STAT_REGRID_SHAPE = SQUARE # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} +MODEL = {{vx_fcst_model_name}}_{{ensmem_name}} FCST_NATIVE_DATA_TYPE = GRIB # @@ -143,7 +146,7 @@ FCST_VAR1_LEVELS = A{ACCUM_HH} FCST_VAR1_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; # # List of thresholds to evaluate for each name/level combination for -# forecast variable 1. +# both obs and forecast variable 1. # BOTH_VAR1_THRESH = {{field_thresholds}} # @@ -271,12 +274,10 @@ GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE # # Directory containing observation input to GridStat. # -#OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/PcpCombine_obs OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to GridStat. # -#FCST_GRID_STAT_INPUT_DIR = {OUTPUT_BASE}/metprd/PcpCombine_fcst FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to GridStat. Not used in @@ -295,14 +296,11 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # to its default value. But it is not explicitly used elsewhere in this # configuration file. # -#OUTPUT_BASE = {ENV[OUTPUT_BASE]} -#GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # -#STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. @@ -311,18 +309,15 @@ STAGING_DIR = {{staging_dir}} # Template for observation input to GridStat relative to # OBS_GRID_STAT_INPUT_DIR. # -#OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a{level?fmt=%HH}h.nc OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} # # Template for forecast input to GridStat relative to # FCST_GRID_STAT_INPUT_DIR. # -#FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}_a{level?fmt=%HH}h.nc FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. # -#GRID_STAT_OUTPUT_TEMPLATE = metprd/GridStat GRID_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to GridStat relative to diff --git a/parm/metplus/GridStat_REFC.conf b/parm/metplus/GridStat_REFC.conf index 9fd7e2f86c..ce77614033 100644 --- a/parm/metplus/GridStat_REFC.conf +++ b/parm/metplus/GridStat_REFC.conf @@ -1,10 +1,8 @@ # GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -84,7 +87,7 @@ GRID_STAT_GRID_WEIGHT_FLAG = NONE # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} +MODEL = {{vx_fcst_model_name}}_{{ensmem_name}} FCST_NATIVE_DATA_TYPE = GRIB # @@ -156,6 +159,7 @@ OBS_VAR1_OPTIONS = censor_thresh = [eq-999, <-20]; censor_val = [-9999, -20]; cn # Time relative to valid time (in seconds) to allow files to be considered # valid. Set both BEGIN and END to 0 to require the exact time in the # filename. Not used in this example. +# #FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 #FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 @@ -188,12 +192,14 @@ FCST_IS_PROB = False FCST_GRID_STAT_PROB_THRESH = ==0.1 GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} - -# Set to true if observation data is probabilistic. -# Only used if configuring forecast data as the 'OBS' input. +# +# Set to true if observation data is probabilistic. Only used if +# configuring forecast data as the 'OBS' input. +# OBS_IS_PROB = false - +# # Only used if OBS_IS_PROB is true - sets probabilistic threshold. +# OBS_GRID_STAT_PROB_THRESH = ==0.1 # Climatology data @@ -291,19 +297,23 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR. +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. # -FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} # -# Template for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR. +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. # -OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. # diff --git a/parm/metplus/GridStat_RETOP.conf b/parm/metplus/GridStat_RETOP.conf index fde17ded5d..67ed1e8b2b 100644 --- a/parm/metplus/GridStat_RETOP.conf +++ b/parm/metplus/GridStat_RETOP.conf @@ -1,10 +1,8 @@ # GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -84,7 +87,7 @@ GRID_STAT_GRID_WEIGHT_FLAG = NONE # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} +MODEL = {{vx_fcst_model_name}}_{{ensmem_name}} FCST_NATIVE_DATA_TYPE = GRIB # @@ -157,6 +160,7 @@ OBS_VAR1_OPTIONS = convert(x) = x * 3280.84 * 0.001; censor_thresh = [<=-9.84252 # Time relative to valid time (in seconds) to allow files to be considered # valid. Set both BEGIN and END to 0 to require the exact time in the # filename. Not used in this example. +# #FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 #FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 @@ -189,12 +193,14 @@ FCST_IS_PROB = False FCST_GRID_STAT_PROB_THRESH = ==0.1 GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} - -# Set to true if observation data is probabilistic. -# Only used if configuring forecast data as the 'OBS' input. +# +# Set to true if observation data is probabilistic. Only used if +# configuring forecast data as the 'OBS' input. +# OBS_IS_PROB = false - +# # Only used if OBS_IS_PROB is true - sets probabilistic threshold. +# OBS_GRID_STAT_PROB_THRESH = ==0.1 # Climatology data @@ -292,19 +298,23 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR. +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. # -FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} # -# Template for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR. +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. # -OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. # diff --git a/parm/metplus/GridStat_ensmean_APCP01h.conf b/parm/metplus/GridStat_ensmean_APCP01h.conf index 5e215f5395..a8408f90d9 100644 --- a/parm/metplus/GridStat_ensmean_APCP01h.conf +++ b/parm/metplus/GridStat_ensmean_APCP01h.conf @@ -1,10 +1,8 @@ # Ensemble mean GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -93,8 +96,9 @@ FCST_NATIVE_DATA_TYPE = GRIB # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -104,7 +108,9 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; # -# Name of forecast variable 1 +# String to search for in the foreast input files for forecast variable +# 1. +# # Note: # This is the name of the field in the NetCDF file(s) created by MET's # gen_ens_prod tool. This tool reads in the grib2 file(s) (in this case @@ -135,11 +141,12 @@ ACCUM_HH = {{accum_hh}} FCST_VAR1_LEVELS = A{ACCUM_HH} # # List of thresholds to evaluate for each name/level combination for -# observation and forecast variable 1. +# both obs and forecast variable 1. # BOTH_VAR1_THRESH = {{field_thresholds}} # -# Name of observation variable 1. +# String to search for in the observation input files for observation +# variable 1. # # Note: # This is the name of the field in the grib2 observation file. Thus, @@ -290,22 +297,24 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to GridStat relative to -# FCST_GRID_STAT_INPUT_DIR. -# -FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} -# # Template for observation input to GridStat relative to # OBS_GRID_STAT_INPUT_DIR. # OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} # +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# # Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. # GRID_STAT_OUTPUT_TEMPLATE = diff --git a/parm/metplus/GridStat_ensmean_APCPgt01h.conf b/parm/metplus/GridStat_ensmean_APCPgt01h.conf index 09dd54d68c..8eb87fafca 100644 --- a/parm/metplus/GridStat_ensmean_APCPgt01h.conf +++ b/parm/metplus/GridStat_ensmean_APCPgt01h.conf @@ -1,10 +1,8 @@ # Ensemble mean GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -93,8 +96,9 @@ FCST_NATIVE_DATA_TYPE = GRIB # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -104,7 +108,9 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; # -# Name of forecast variable 1 +# String to search for in the foreast input files for forecast variable +# 1. +# # Note: # This is the name of the field in the NetCDF file(s) created by MET's # gen_ens_prod tool. This tool reads in the NetCDF file(s) generated by @@ -131,11 +137,12 @@ ACCUM_HH = {{accum_hh}} FCST_VAR1_LEVELS = A{ACCUM_HH} # # List of thresholds to evaluate for each name/level combination for -# observation and forecast variable 1. +# both obs and forecast variable 1. # BOTH_VAR1_THRESH = {{field_thresholds}} # -# Name of observation variable 1. +# String to search for in the observation input files for observation +# variable 1. # # Note: # This is the name of the field in the NetCDF file created by MET's @@ -286,7 +293,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/GridStat_ensmean_REFC.conf b/parm/metplus/GridStat_ensmean_REFC.conf index 17a1996211..bfd4c65990 100644 --- a/parm/metplus/GridStat_ensmean_REFC.conf +++ b/parm/metplus/GridStat_ensmean_REFC.conf @@ -1,10 +1,8 @@ # Ensemble mean GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -90,8 +93,9 @@ MODEL = {{vx_fcst_model_name}}_ensmean # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -101,16 +105,18 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; # -# Name of forecast variable 1. +# String to search for in the foreast input files for forecast variable +# 1. +# # Note: # This is the name of the field in the NetCDF file(s) created by MET's # gen_ens_prod tool. This tool reads in the grib2 file(s) (in this case # of forecasts) and outputs NetCDF file(s) in which the array names -# consist of the value of FIELDNAME_IN_MET_OUTPUT plus a suffix that +# consist of the value of fieldname_in_met_output plus a suffix that # specifies additional properties of the data in the array such as the # level, the type of statistic, etc. In this case, this suffix is # "_L0_ENS_MEAN". Thus, below, FCST_VAR1_NAME must be set to the value -# of FIELDNAME_IN_MET_OUTPUT with "_L0_ENS_MEAN" appended to it. +# of fieldname_in_met_output with "_L0_ENS_MEAN" appended to it. # FCST_VAR1_NAME = {{fieldname_in_met_output}}_L0_ENS_MEAN # @@ -121,11 +127,12 @@ FCST_VAR1_LEVELS = L0 #FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; # # List of thresholds to evaluate for each name/level combination for -# observation and forecast variable 1. +# both obs and forecast variable 1. # BOTH_VAR1_THRESH = {{field_thresholds}} # -# Name of observation variable 1. +# String to search for in the observation input files for observation +# variable 1. # # Note: # This is the name of the field in the grib2 observation file. Thus, @@ -142,7 +149,6 @@ OBS_VAR1_NAME = {{fieldname_in_obs_input}} # same length as FCST_VAR1_LEVELS. # OBS_VAR1_LEVELS = Z500 - OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; # # Time relative to valid time (in seconds) to allow files to be considered @@ -179,6 +185,8 @@ FCST_IS_PROB = False # Only used if FCST_IS_PROB is true - sets probabilistic threshold # FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # # Set to true if observation data is probabilistic. Only used if # configuring forecast data as the 'OBS' input. @@ -189,8 +197,6 @@ OBS_IS_PROB = false # OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} - # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = #GRID_STAT_CLIMO_MEAN_FIELD = @@ -286,7 +292,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/GridStat_ensmean_RETOP.conf b/parm/metplus/GridStat_ensmean_RETOP.conf index 36c6282671..04e337e0d4 100644 --- a/parm/metplus/GridStat_ensmean_RETOP.conf +++ b/parm/metplus/GridStat_ensmean_RETOP.conf @@ -1,10 +1,8 @@ # Ensemble mean GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -90,8 +93,9 @@ MODEL = {{vx_fcst_model_name}}_ensmean # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -101,7 +105,8 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; # -# Name of forecast variable 1. +# String to search for in the foreast input files for forecast variable +# 1. # # Note: # This is the name of the field in the NetCDF file(s) created by MET's @@ -118,15 +123,15 @@ FCST_VAR1_NAME = {{fieldname_in_met_output}}_L0_ENS_MEAN # List of levels to evaluate for forecast variable 1. # FCST_VAR1_LEVELS = L0 - FCST_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; # # List of thresholds to evaluate for each name/level combination for -# observation and forecast variable 1. +# both obs and forecast variable 1. # BOTH_VAR1_THRESH = {{field_thresholds}} # -# Name of observation variable 1. +# String to search for in the observation input files for observation +# variable 1. # # Note: # This is the name of the field in the grib2 observation file. Thus, @@ -143,7 +148,6 @@ OBS_VAR1_NAME = {{fieldname_in_obs_input}} # same length as FCST_VAR1_LEVELS. # OBS_VAR1_LEVELS = Z500 - OBS_VAR1_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; # # Time relative to valid time (in seconds) to allow files to be considered @@ -180,6 +184,8 @@ FCST_IS_PROB = False # Only used if FCST_IS_PROB is true - sets probabilistic threshold # FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # # Set to true if observation data is probabilistic. Only used if # configuring forecast data as the 'OBS' input. @@ -190,8 +196,6 @@ OBS_IS_PROB = false # OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} - # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = #GRID_STAT_CLIMO_MEAN_FIELD = @@ -287,7 +291,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/GridStat_ensprob_APCP01h.conf b/parm/metplus/GridStat_ensprob_APCP01h.conf index 728a80275c..289c407d31 100644 --- a/parm/metplus/GridStat_ensprob_APCP01h.conf +++ b/parm/metplus/GridStat_ensprob_APCP01h.conf @@ -1,10 +1,8 @@ # Ensemble probabilistic GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -93,8 +96,9 @@ FCST_NATIVE_DATA_TYPE = GRIB # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -319,7 +323,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/GridStat_ensprob_APCP03h.conf b/parm/metplus/GridStat_ensprob_APCP03h.conf index 3b3f9a3e20..145f3e5fa1 100644 --- a/parm/metplus/GridStat_ensprob_APCP03h.conf +++ b/parm/metplus/GridStat_ensprob_APCP03h.conf @@ -1,10 +1,8 @@ # Ensemble probabilistic GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -93,8 +96,9 @@ FCST_NATIVE_DATA_TYPE = GRIB # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -110,7 +114,9 @@ FIELDNAME_IN_MET_OUTPUT = {{fieldname_in_met_output}} # Process as probability # -# Name of forecast variable 1 +# String to search for in the foreast input files for forecast variable +# 1. +# # Note: # This is the name of the field in the NetCDF file(s) created by MET's # gen_ens_prod tool. This tool reads in the NetCDF file(s) generated by @@ -134,7 +140,8 @@ FCST_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A03 FCST_VAR1_THRESH = ==0.1 # -# Name of observation variable 1 +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. # # Note: # This is the name of the field in the NetCDF file created by MET's @@ -368,7 +375,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/GridStat_ensprob_APCP06h.conf b/parm/metplus/GridStat_ensprob_APCP06h.conf index d9856518c6..f3e2243c15 100644 --- a/parm/metplus/GridStat_ensprob_APCP06h.conf +++ b/parm/metplus/GridStat_ensprob_APCP06h.conf @@ -1,10 +1,8 @@ # Ensemble probabilistic GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -93,8 +96,9 @@ FCST_NATIVE_DATA_TYPE = GRIB # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -110,7 +114,9 @@ FIELDNAME_IN_MET_OUTPUT = {{fieldname_in_met_output}} # Process as probability # -# Name of forecast variable 1 +# String to search for in the foreast input files for forecast variable +# 1. +# # Note: # This is the name of the field in the NetCDF file(s) created by MET's # gen_ens_prod tool. This tool reads in the NetCDF file(s) generated by @@ -134,7 +140,8 @@ FCST_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A06 FCST_VAR1_THRESH = ==0.1 # -# Name of observation variable 1 +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. # # Note: # This is the name of the field in the NetCDF file created by MET's @@ -368,7 +375,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/GridStat_ensprob_APCP24h.conf b/parm/metplus/GridStat_ensprob_APCP24h.conf index 4c82f06829..089b8d3821 100644 --- a/parm/metplus/GridStat_ensprob_APCP24h.conf +++ b/parm/metplus/GridStat_ensprob_APCP24h.conf @@ -1,10 +1,8 @@ # Ensemble probabilistic GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -93,8 +96,9 @@ FCST_NATIVE_DATA_TYPE = GRIB # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -110,7 +114,9 @@ FIELDNAME_IN_MET_OUTPUT = {{fieldname_in_met_output}} # Process as probability # -# Name of forecast variable 1 +# String to search for in the foreast input files for forecast variable +# 1. +# # Note: # This is the name of the field in the NetCDF file(s) created by MET's # gen_ens_prod tool. This tool reads in the NetCDF file(s) generated by @@ -134,7 +140,8 @@ FCST_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A24 FCST_VAR1_THRESH = ==0.1 # -# Name of observation variable 1 +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. # # Note: # This is the name of the field in the NetCDF file created by MET's @@ -368,7 +375,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/GridStat_ensprob_REFC.conf b/parm/metplus/GridStat_ensprob_REFC.conf index 2348b46832..671d351dfb 100644 --- a/parm/metplus/GridStat_ensprob_REFC.conf +++ b/parm/metplus/GridStat_ensprob_REFC.conf @@ -1,10 +1,8 @@ # Ensemble probabilistic GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -92,8 +95,9 @@ MODEL = {{vx_fcst_model_name}}_ensprob # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -107,7 +111,9 @@ GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = # Process as probability # -# Name of forecast variable 1 +# String to search for in the foreast input files for forecast variable +# 1. +# # Note: # This is the name of the field in the NetCDF file(s) created by MET's # gen_ens_prod tool. This tool reads in the grib2 file(s) (in this case @@ -122,10 +128,7 @@ GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = # #FCST_VAR1_NAME = REFC_L0_ENS_FREQ_ge20 FCST_VAR1_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge20 - -# List of levels to evaluate for forecast variable 1 FCST_VAR1_LEVELS = L0 - #FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; # # List of thresholds to evaluate for each name/level combination for @@ -135,7 +138,8 @@ FCST_VAR1_THRESH = ==0.1 #FCST_GRID_STAT_FILE_TYPE = # -# Name of observation variable 1. +# String to search for in the observation input files for observation +# variable 1. # # Note: # This is the name of the field in the grib2 observation file. Thus, @@ -274,6 +278,8 @@ FCST_PROB_IN_GRIB_PDS = False # Only used if FCST_IS_PROB is true - sets probabilistic threshold # FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # # Set to true if observation data is probabilistic. Only used if # configuring forecast data as the 'OBS' input. @@ -284,8 +290,6 @@ OBS_IS_PROB = false # OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} - # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = #GRID_STAT_CLIMO_MEAN_FIELD = @@ -379,7 +383,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/GridStat_ensprob_RETOP.conf b/parm/metplus/GridStat_ensprob_RETOP.conf index 071d47fdc7..581dd4164e 100644 --- a/parm/metplus/GridStat_ensprob_RETOP.conf +++ b/parm/metplus/GridStat_ensprob_RETOP.conf @@ -1,10 +1,8 @@ # Ensemble probabilistic GridStat METplus Configuration -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only GridStat for this case +# List of applications (tools) to run. PROCESS_LIST = GridStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -34,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -43,11 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 - # # Specify the name of the METplus log file. # @@ -57,7 +55,12 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat. +# Location of MET configuration file to pass to GridStat. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. # GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped @@ -92,8 +95,9 @@ MODEL = {{vx_fcst_model_name}}_ensprob # OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. +# GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -107,7 +111,8 @@ GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = # Process as probability # -# Name of forecast variable 1. +# String to search for in the foreast input files for forecast variable +# 1. # # Note: # This is the name of the field in the NetCDF file(s) created by MET's @@ -123,12 +128,17 @@ GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = # #FCST_VAR1_NAME = RETOP_L0_ENS_FREQ_ge20 FCST_VAR1_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge20 -FCST_VAR1_LEVELS = L0 +FCST_VAR1_LEVELS = L0 +# +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1. +# FCST_VAR1_THRESH = ==0.1 #FCST_GRID_STAT_FILE_TYPE = # -# Name of observation variable 1. +# String to search for in the observation input files for observation +# variable 1. # # Note: # This is the name of the field in the grib2 observation file. Thus, @@ -267,6 +277,8 @@ FCST_PROB_IN_GRIB_PDS = False # Only used if FCST_IS_PROB is true - sets probabilistic threshold # FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # # Set to true if observation data is probabilistic. Only used if # configuring forecast data as the 'OBS' input. @@ -277,8 +289,6 @@ OBS_IS_PROB = false # OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} - # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = #GRID_STAT_CLIMO_MEAN_FIELD = @@ -372,7 +382,9 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} GRID_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/Pb2nc_obs.conf b/parm/metplus/Pb2nc_obs.conf index 263ad864ed..ae2b5e19f0 100644 --- a/parm/metplus/Pb2nc_obs.conf +++ b/parm/metplus/Pb2nc_obs.conf @@ -1,6 +1,8 @@ +# Pb2nc METplus Configuration + [config] -# List of applications to run. +# List of applications (tools) to run. PROCESS_LIST = PB2NC # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -14,7 +16,7 @@ LOOP_BY = INIT # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH -INIT_TIME_FMT = %Y%m%d%H +INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT INIT_BEG = {{cdate}} @@ -22,8 +24,8 @@ INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) @@ -39,13 +41,31 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run -LOOP_ORDER = times +LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 - -# Location of MET config file to pass to PB2NC +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {PB2NC_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET configuration file to pass to Pb2nc. +# +# References PARM_BASE, which is the location of the parm directory +# corresponding to the ush directory of the run_metplus.py script that +# is called or the value of the environment variable METPLUS_PARM_BASE +# if set. +# PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -84,41 +104,30 @@ PB2NC_TIME_SUMMARY_BEG = 000000 PB2NC_TIME_SUMMARY_END = 235959 PB2NC_TIME_SUMMARY_VAR_NAMES = PMO,TOB,TDO,UOB,VOB,PWO,TOCC PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 -# -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} -# -# Specify the location and name of the final METplus configuration file. -# -METPLUS_CONF = {PB2NC_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} - -OBTYPE = NDAS # End of [config] section and start of [dir] section [dir] # -# Directory containing (obs) input to PB2NC. +# Directory containing (observation) input to Pb2nc. # PB2NC_INPUT_DIR = {{obs_input_dir}} # -# Directory in which to write output from PB2NC. -# -PB2NC_OUTPUT_DIR = {{output_dir}} +# Directory in which to write output from Pb2nc. # # OUTPUT_BASE apparently has to be set to something; it cannot be left # to its default value. But it is not explicitly used elsewhere in this # configuration file. # OUTPUT_BASE = {{output_base}} +PB2NC_OUTPUT_DIR = {{output_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for prepbufr input to PB2NC relative to PB2NC_INPUT_DIR. +# Template for prepbufr input to Pb2nc relative to PB2NC_INPUT_DIR. # PB2NC_INPUT_TEMPLATE = {{obs_input_fn_template}} # -# Template for output from PB2NC. +# Template for output from Pb2nc relative to PB2NC_OUTPUT_DIR. # PB2NC_OUTPUT_TEMPLATE = {{output_fn_template}} diff --git a/parm/metplus/PcpCombine_fcst.conf b/parm/metplus/PcpCombine_fcst.conf index 1ab2b22425..65204c7caa 100644 --- a/parm/metplus/PcpCombine_fcst.conf +++ b/parm/metplus/PcpCombine_fcst.conf @@ -1,10 +1,8 @@ # PcpCombine METplus Configuration for Forecasts -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only PcpCombine for this case +# List of applications (tools) to run. PROCESS_LIST = PcpCombine # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -30,9 +28,9 @@ INIT_END = {{cdate}} # Must be >= 60 seconds. INIT_INCREMENT = 3600 -# List of forecast leads to process for each run time (init or valid). -# In hours if units are not specified. -# If unset, defaults to 0 (don't loop through forecast leads). +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes @@ -45,6 +43,14 @@ LEAD_SEQ = {{fhr_list}} # wrappers have been run LOOP_ORDER = times # +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {FCST_PCP_COMBINE_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# # Run PcpCombine on forecast data but not observation (observation input # files are not provided). # @@ -83,14 +89,6 @@ FCST_PCP_COMBINE_MAX_FORECAST = 2d # Keep initialization time constant. FCST_PCP_COMBINE_CONSTANT_INIT = True -# -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} -# -# Specify the location and name of the final METplus configuration file. -# -METPLUS_CONF = {FCST_PCP_COMBINE_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB FCST_NATIVE_DATA_TYPE = GRIB @@ -104,13 +102,12 @@ FCST_PCP_COMBINE_INPUT_DIR = {{fcst_input_dir}} # # Directory in which to write output from PcpCombine. # -FCST_PCP_COMBINE_OUTPUT_DIR = {{output_dir}} -# # OUTPUT_BASE apparently has to be set to something; it cannot be left # to its default value. But it is not explicitly used elsewhere in this # configuration file. # OUTPUT_BASE = {{output_base}} +FCST_PCP_COMBINE_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # @@ -119,13 +116,12 @@ STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# The template FCST_PCP_COMBINE_INPUT_TEMPLATE is used to search for -# forecast input files. It is relative to FCST_PCP_COMBINE_INPUT_DIR. +# Template for forecast input to PcpCombine relative to +# FCST_PCP_COMBINE_INPUT_DIR. # FCST_PCP_COMBINE_INPUT_TEMPLATE = {{fcst_input_fn_template}} # -# FCST_PCP_COMBINE_OUTPUT_TEMPLATE is a path/file template that specifies -# the name of output file, including optional subdirectories. It is -# relative to FCST_PCP_COMBINE_OUTPUT_DIR. +# Template for output from PCPCOMBINE relative to +# FCST_PCP_COMBINE_OUTPUT_DIR. # FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {{output_fn_template}} diff --git a/parm/metplus/PcpCombine_obs.conf b/parm/metplus/PcpCombine_obs.conf index 8b9202d081..bc2c4180eb 100644 --- a/parm/metplus/PcpCombine_obs.conf +++ b/parm/metplus/PcpCombine_obs.conf @@ -1,10 +1,8 @@ # PcpCombine METplus Configuration for Observations -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section [config] -# List of applications to run - only PcpCombine for this case +# List of applications (tools) to run. PROCESS_LIST = PcpCombine # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -30,9 +28,9 @@ INIT_END = {{cdate}} # Must be >= 60 seconds. INIT_INCREMENT = 3600 -# List of forecast leads to process for each run time (init or valid). -# In hours if units are not specified. -# If unset, defaults to 0 (don't loop through forecast leads). +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes @@ -45,6 +43,14 @@ LEAD_SEQ = {{fhr_list}} # wrappers have been run LOOP_ORDER = times # +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {OBS_PCP_COMBINE_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# # Run PcpCombine on observation data but not forecast (forecast input # files are not provided). # @@ -90,14 +96,6 @@ OBS_PCP_COMBINE_OUTPUT_ACCUM = {{accum_hh}} # PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True # -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} -# -# Specify the location and name of the final METplus configuration file. -# -METPLUS_CONF = {OBS_PCP_COMBINE_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} -# # Name to identify observation data in output. # OBTYPE = CCPA @@ -112,13 +110,12 @@ OBS_PCP_COMBINE_INPUT_DIR = {{obs_input_dir}} # # Directory in which to write output from PcpCombine. # -OBS_PCP_COMBINE_OUTPUT_DIR = {{output_dir}} -# # OUTPUT_BASE apparently has to be set to something; it cannot be left # to its default value. But it is not explicitly used elsewhere in this # configuration file. # OUTPUT_BASE = {{output_base}} +OBS_PCP_COMBINE_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # @@ -127,13 +124,12 @@ STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# The template OBS_PCP_COMBINE_INPUT_TEMPLATE is used to search for -# observation input files. It is relative to OBS_PCP_COMBINE_INPUT_DIR. +# Template for observation input to PcpCombine relative to +# OBS_PCP_COMBINE_INPUT_DIR. # OBS_PCP_COMBINE_INPUT_TEMPLATE = {{obs_input_fn_template}} # -# OBS_PCP_COMBINE_OUTPUT_TEMPLATE is a path/file template that specifies -# the name of output file, including optional subdirectories. It is -# relative to OBS_PCP_COMBINE_OUTPUT_DIR. +# Template for output from PcpCombine relative to +# OBS_PCP_COMBINE_OUTPUT_DIR. # OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {{output_fn_template}} diff --git a/parm/metplus/PointStat_SFC.conf b/parm/metplus/PointStat_SFC.conf index 2d5fe0a2e4..62f59328fe 100644 --- a/parm/metplus/PointStat_SFC.conf +++ b/parm/metplus/PointStat_SFC.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only PointStat for this case +# List of applications (tools) to run. PROCESS_LIST = PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -24,7 +24,7 @@ INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) +# Increment between METplus runs (in seconds if no units are specified). # Must be >= 60 seconds. INIT_INCREMENT = 3600 @@ -32,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -41,12 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 - -FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # @@ -55,12 +54,14 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # Specify the location and name of the final METplus conf file. # METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} - -# Location of MET config file to pass to GridStat +# +# Location of MET configuration file to pass to PointStat. +# # References PARM_BASE, which is the location of the parm directory # corresponding to the ush directory of the run_metplus.py script that # is called or the value of the environment variable METPLUS_PARM_BASE # if set. +# POINT_STAT_CONFIG_FILE = {PARM_BASE}/met_config/PointStatConfig_wrapped POINT_STAT_OBS_QUALITY_INC = 0, 1, 2, 3, 9, NA @@ -122,7 +123,11 @@ POINT_STAT_OFFSETS = 0 # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} +MODEL = {{vx_fcst_model_name}}_{{ensmem_name}} +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} # # Value to enter under the DESC column in the output stat file. Here, # we store the value of the original lead in this column, i.e. the lead @@ -134,10 +139,6 @@ MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} # Uncomment this line only after upgrading to METplus 5.x. #POINT_STAT_DESC = {lead?fmt=%H%M%S?shift={{time_lag}}} POINT_STAT_DESC = NA -# -# Name to identify observation data in output. -# -OBTYPE = {{obtype}} # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -145,7 +146,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{{fieldname_in_met_filedir_names}}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -169,7 +170,7 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} +POINT_STAT_MESSAGE_TYPE = ADP{{fieldname_in_met_filedir_names}} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields diff --git a/parm/metplus/PointStat_UPA.conf b/parm/metplus/PointStat_UPA.conf index 1d20b16fd8..385b5387a2 100644 --- a/parm/metplus/PointStat_UPA.conf +++ b/parm/metplus/PointStat_UPA.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only PointStat for this case +# List of applications (tools) to run. PROCESS_LIST = PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -24,7 +24,7 @@ INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) +# Increment between METplus runs (in seconds if no units are specified). # Must be >= 60 seconds. INIT_INCREMENT = 3600 @@ -32,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -41,12 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 - -FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # @@ -55,12 +54,14 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # Specify the location and name of the final METplus conf file. # METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} - -# Location of MET config file to pass to GridStat +# +# Location of MET configuration file to pass to PointStat. +# # References PARM_BASE, which is the location of the parm directory # corresponding to the ush directory of the run_metplus.py script that # is called or the value of the environment variable METPLUS_PARM_BASE # if set. +# POINT_STAT_CONFIG_FILE = {PARM_BASE}/met_config/PointStatConfig_wrapped POINT_STAT_OBS_QUALITY_INC = 0, 1, 2, 3, 9, NA @@ -122,7 +123,11 @@ POINT_STAT_OFFSETS = 0 # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} +MODEL = {{vx_fcst_model_name}}_{{ensmem_name}} +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} # # Value to enter under the DESC column in the output stat file. Here, # we store the value of the original lead in this column, i.e. the lead @@ -134,10 +139,6 @@ MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} # Uncomment this line only after upgrading to METplus 5.x. #POINT_STAT_DESC = {lead?fmt=%H%M%S?shift={{time_lag}}} POINT_STAT_DESC = NA -# -# Name to identify observation data in output. -# -OBTYPE = {{obtype}} # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -145,7 +146,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{{fieldname_in_met_filedir_names}}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -169,7 +170,7 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} +POINT_STAT_MESSAGE_TYPE = ADP{{fieldname_in_met_filedir_names}} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields diff --git a/parm/metplus/PointStat_ensmean_SFC.conf b/parm/metplus/PointStat_ensmean_SFC.conf index 9771081456..0d5ee3b696 100644 --- a/parm/metplus/PointStat_ensmean_SFC.conf +++ b/parm/metplus/PointStat_ensmean_SFC.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only PointStat for this case +# List of applications (tools) to run. PROCESS_LIST = PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -32,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -41,12 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 - -FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # @@ -56,7 +55,8 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat +# Location of MET configuration file to pass to PointStat. +# # References PARM_BASE, which is the location of the parm directory # corresponding to the ush directory of the run_metplus.py script that # is called or the value of the environment variable METPLUS_PARM_BASE @@ -124,12 +124,14 @@ POINT_STAT_OFFSETS = 0 # mean. This makes it easier to identify each curve. # MODEL = {{vx_fcst_model_name}}_ensmean - -POINT_STAT_DESC = NA # # Name to identify observation data in output. # OBTYPE = {{obtype}} +# +# Value to enter under the DESC column in the output stat file. +# +POINT_STAT_DESC = NA # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -137,7 +139,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{{fieldname_in_met_filedir_names}}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -161,7 +163,7 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} +POINT_STAT_MESSAGE_TYPE = ADP{{fieldname_in_met_filedir_names}} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields @@ -228,7 +230,9 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} POINT_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/PointStat_ensmean_UPA.conf b/parm/metplus/PointStat_ensmean_UPA.conf index 3fb3f1b790..1846e0cf6e 100644 --- a/parm/metplus/PointStat_ensmean_UPA.conf +++ b/parm/metplus/PointStat_ensmean_UPA.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only PointStat for this case +# List of applications (tools) to run. PROCESS_LIST = PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -32,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -41,12 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 - -FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # @@ -56,7 +55,8 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat +# Location of MET configuration file to pass to PointStat. +# # References PARM_BASE, which is the location of the parm directory # corresponding to the ush directory of the run_metplus.py script that # is called or the value of the environment variable METPLUS_PARM_BASE @@ -124,12 +124,14 @@ POINT_STAT_OFFSETS = 0 # mean. This makes it easier to identify each curve. # MODEL = {{vx_fcst_model_name}}_ensmean - -POINT_STAT_DESC = NA # # Name to identify observation data in output. # OBTYPE = {{obtype}} +# +# Value to enter under the DESC column in the output stat file. +# +POINT_STAT_DESC = NA # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -137,7 +139,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{{fieldname_in_met_filedir_names}}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -161,7 +163,7 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} +POINT_STAT_MESSAGE_TYPE = ADP{{fieldname_in_met_filedir_names}} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields @@ -303,7 +305,9 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} POINT_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/PointStat_ensprob_SFC.conf b/parm/metplus/PointStat_ensprob_SFC.conf index 10937c2ec7..84b3ac9445 100644 --- a/parm/metplus/PointStat_ensprob_SFC.conf +++ b/parm/metplus/PointStat_ensprob_SFC.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only PointStat for this case +# List of applications (tools) to run. PROCESS_LIST = PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -32,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -41,12 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 - -FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # @@ -56,7 +55,8 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat +# Location of MET configuration file to pass to PointStat. +# # References PARM_BASE, which is the location of the parm directory # corresponding to the ush directory of the run_metplus.py script that # is called or the value of the environment variable METPLUS_PARM_BASE @@ -124,12 +124,14 @@ POINT_STAT_OFFSETS = 0 # This makes it easier to identify each curve. # MODEL = {{vx_fcst_model_name}}_ensprob - -POINT_STAT_DESC = NA # # Name to identify observation data in output. # OBTYPE = {{obtype}} +# +# Value to enter under the DESC column in the output stat file. +# +POINT_STAT_DESC = NA # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -137,7 +139,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{{fieldname_in_met_filedir_names}}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -161,7 +163,7 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} +POINT_STAT_MESSAGE_TYPE = ADP{{fieldname_in_met_filedir_names}} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields @@ -406,7 +408,9 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} POINT_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/metplus/PointStat_ensprob_UPA.conf b/parm/metplus/PointStat_ensprob_UPA.conf index ea6e380422..6b4628112f 100644 --- a/parm/metplus/PointStat_ensprob_UPA.conf +++ b/parm/metplus/PointStat_ensprob_UPA.conf @@ -2,7 +2,7 @@ [config] -# List of applications to run - only PointStat for this case +# List of applications (tools) to run. PROCESS_LIST = PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME @@ -32,7 +32,7 @@ INIT_INCREMENT = 3600 # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {{fhr_list}} - +# # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST # times = run all wrappers in the PROCESS_LIST for a single run time, then @@ -41,12 +41,11 @@ LEAD_SEQ = {{fhr_list}} # processes = run the first wrapper in the PROCESS_LIST for all times # specified, then repeat for the next item in the PROCESS_LIST until all # wrappers have been run +# LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 - -FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # @@ -56,7 +55,8 @@ LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# Location of MET config file to pass to GridStat +# Location of MET configuration file to pass to PointStat. +# # References PARM_BASE, which is the location of the parm directory # corresponding to the ush directory of the run_metplus.py script that # is called or the value of the environment variable METPLUS_PARM_BASE @@ -124,12 +124,14 @@ POINT_STAT_OFFSETS = 0 # This makes it easier to identify each curve. # MODEL = {{vx_fcst_model_name}}_ensprob - -POINT_STAT_DESC = NA # # Name to identify observation data in output. # OBTYPE = {{obtype}} +# +# Value to enter under the DESC column in the output stat file. +# +POINT_STAT_DESC = NA # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -137,7 +139,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{{fieldname_in_met_filedir_names}}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -161,7 +163,7 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} +POINT_STAT_MESSAGE_TYPE = ADP{{fieldname_in_met_filedir_names}} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields @@ -528,7 +530,9 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # OUTPUT_BASE = {{output_base}} POINT_STAT_OUTPUT_DIR = {{output_dir}} - +# +# Directory for staging data. +# STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. diff --git a/parm/wflow/coldstart.yaml b/parm/wflow/coldstart.yaml index 98aa2e98fd..c64b62bbe3 100644 --- a/parm/wflow/coldstart.yaml +++ b/parm/wflow/coldstart.yaml @@ -75,7 +75,7 @@ task_get_extrn_lbcs: metatask_run_ensemble: var: - mem: '{% if global.DO_ENSEMBLE %}{%- for m in range(1, global.NUM_ENS_MEMBERS+1) -%}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' + mem: '{% if global.DO_ENSEMBLE %}{%- for m in range(1, global.NUM_ENS_MEMBERS+1) -%}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' task_make_ics_mem#mem#: <<: *default_task command: '&LOAD_MODULES_RUN_TASK_FP; "make_ics" "&JOBSdir;/JREGIONAL_MAKE_ICS"' diff --git a/parm/wflow/post.yaml b/parm/wflow/post.yaml index 782b21b020..ae02b4025b 100644 --- a/parm/wflow/post.yaml +++ b/parm/wflow/post.yaml @@ -25,8 +25,8 @@ default_task_post: &default_task metatask_run_ens_post: var: - mem: '{% if global.DO_ENSEMBLE %}{%- for m in range(1, global.NUM_ENS_MEMBERS+1) -%}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' - metatask_run_post: + mem: '{% if global.DO_ENSEMBLE %}{%- for m in range(1, global.NUM_ENS_MEMBERS+1) -%}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' + metatask_run_post_mem#mem#_all_fhrs: var: fhr: '{% for h in range(0, workflow.LONG_FCST_LEN+1) %}{{ " %03d" % h }}{% endfor %}' cycledef: '{% for h in range(0, workflow.LONG_FCST_LEN+1) %}{% if h <= workflow.FCST_LEN_CYCL|min %}forecast {% else %}long_forecast {% endif %}{% endfor %}' diff --git a/parm/wflow/verify.yaml b/parm/wflow/verify.yaml deleted file mode 100644 index b905dc2b68..0000000000 --- a/parm/wflow/verify.yaml +++ /dev/null @@ -1,252 +0,0 @@ -default_task_verify: &default_task - account: '&ACCOUNT;' - attrs: - cycledefs: forecast - maxtries: '1' - envars: &default_vars - GLOBAL_VAR_DEFNS_FP: '&GLOBAL_VAR_DEFNS_FP;' - USHdir: '&USHdir;' - PDY: !cycstr '@Y@m@d' - cyc: !cycstr "@H" - subcyc: !cycstr "@M" - LOGDIR: !cycstr "&LOGDIR;" - nprocs: '{{ parent.nnodes * parent.ppn }}' - FHR: '{% for h in range(0, workflow.FCST_LEN_HRS+1) %}{{ " %02d" % h }}{% endfor %}' - join: !cycstr '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;' - memory: '{% if user.MACHINE not in ["NOAACLOUD"] %}{{ "2G" }}{% endif %}' - native: '{{ platform.SCHED_NATIVE_CMD }}' - nnodes: 1 - nodes: '{{ nnodes }}:ppn={{ ppn }}' - nodesize: '&NCORES_PER_NODE;' - partition: '{% if platform.get("PARTITION_DEFAULT") %}&PARTITION_DEFAULT;{% else %}None{% endif %}' - ppn: 1 - queue: '&QUEUE_DEFAULT;' - walltime: 00:30:00 - -task_get_obs_ccpa: - <<: *default_task - command: '&LOAD_MODULES_RUN_TASK_FP; "get_obs" "&JOBSdir;/JREGIONAL_GET_OBS_CCPA"' - envars: - <<: *default_vars - ACCUM_HH: '01' - OBS_DIR: '&CCPA_OBS_DIR;' - partition: '{% if platform.get("PARTITION_HPSS") %}&PARTITION_HPSS;{% else %}None{% endif %}' - queue: "&QUEUE_HPSS;" - walltime: 00:45:00 - -task_get_obs_mrms: - <<: *default_task - command: '&LOAD_MODULES_RUN_TASK_FP; "get_obs" "&JOBSdir;/JREGIONAL_GET_OBS_MRMS"' - envars: - <<: *default_vars - OBS_DIR: '&MRMS_OBS_DIR;' - VAR: 'REFC RETOP' - partition: '{% if platform.get("PARTITION_HPSS") %}&PARTITION_HPSS;{% else %}None{% endif %}' - queue: "&QUEUE_HPSS;" - walltime: 00:45:00 - -task_get_obs_ndas: - <<: *default_task - envars: - <<: *default_vars - OBS_DIR: '&NDAS_OBS_DIR;' - command: '&LOAD_MODULES_RUN_TASK_FP; "get_obs" "&JOBSdir;/JREGIONAL_GET_OBS_NDAS"' - queue: "&QUEUE_HPSS;" - partition: '{% if platform.get("PARTITION_HPSS") %}&PARTITION_HPSS;{% else %}None{% endif %}' - walltime: 02:00:00 - -task_run_MET_Pb2nc_obs: - <<: *default_task - attrs: - cycledefs: forecast - maxtries: '2' - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_PB2NC_OBS"' - envars: - <<: *default_vars - VAR: SFC - ACCUM_HH: '01' - obs_or_fcst: obs - OBTYPE: NDAS - OBS_DIR: '&NDAS_OBS_DIR;' - MET_TOOL: 'PB2NC' - dependency: - and: - datadep: - text: "&NDAS_OBS_DIR;" - or: - not: - taskvalid: - attrs: - task: get_obs_ndas - taskdep: - attrs: - task: get_obs_ndas - -metatask_vx_ens_member: - var: - mem: '{% if global.DO_ENSEMBLE %}{% for m in range(1, global.NUM_ENS_MEMBERS+1) %}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' - metatask_GridStat_MRMS_mem#mem#: - var: - VAR: REFC RETOP - task_run_MET_GridStat_vx_#VAR#_mem#mem#: - <<: *default_task - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' - envars: - <<: *default_vars - OBS_DIR: '&MRMS_OBS_DIR;' - VAR: '#VAR#' - ACCUM_HH: '01' - MET_TOOL: 'GRIDSTAT' - OBTYPE: 'MRMS' - ENSMEM_INDX: "#mem#" - SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' - walltime: 02:00:00 - dependency: - and: - or_get_obs: # Ensure get_obs task is complete if it's turned on - not: - taskvalid: - attrs: - task: get_obs_mrms - and: - taskvalid: - attrs: - task: get_obs_mrms - taskdep: - attrs: - task: get_obs_mrms - or_do_post: &post_files_exist - and_run_post: # If post was meant to run, wait on the whole post metatask - taskvalid: - attrs: - task: run_post_mem#mem#_f000 - metataskdep: - attrs: - metatask: run_ens_post - and_inline_post: # If inline post ran, wait on the forecast task to complete - not: - taskvalid: - attrs: - task: run_post_mem#mem#_f000 - taskdep: - attrs: - task: run_fcst_mem#mem# - - metatask_PointStat_mem#mem#: - var: - VAR: SFC UPA - task_run_MET_PointStat_vx_#VAR#_mem#mem#: - <<: *default_task - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' - envars: - <<: *default_vars - FHR: '#FCST_HR_LIST#' - OBS_DIR: '&NDAS_OBS_DIR;' - VAR: '#VAR#' - MET_TOOL: 'POINTSTAT' - OBTYPE: 'NDAS' - ACCUM_HH: '01' - ENSMEM_INDX: "#mem#" - SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' - walltime: 01:00:00 - dependency: - and: - taskdep_pb2nc: - attrs: - task: run_MET_Pb2nc_obs - or_do_post: - <<: *post_files_exist - or_get_obs: # Get obs complete if turned on - not: - taskvalid: - attrs: - task: get_obs_ndas - and: - taskvalid: - attrs: - task: get_obs_ndas - taskdep: - attrs: - task: get_obs_ndas - -metatask_GridStat_APCP_acc: - var: - ACCUM_HR: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{{ "%02d " % ah }}{% endif %}{% endfor %}' - FCST_HR_LIST: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{% for h in range(ah, workflow.FCST_LEN_HRS+1, ah) %}{{ "%02d," % h }}{% endfor %}{% endif %} {% endfor %}' - - - task_run_MET_PcpCombine_obs_APCP#ACCUM_HR#h: - <<: *default_task - attrs: - cycledefs: forecast - maxtries: '2' - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_PCPCOMBINE"' - envars: - <<: *default_vars - VAR: APCP - ACCUM_HH: '#ACCUM_HR#' - obs_or_fcst: obs - OBTYPE: CCPA - OBS_DIR: '&CCPA_OBS_DIR;' - MET_TOOL: 'PCPCOMBINE' - dependency: - or: - not: - taskvalid: - attrs: - task: get_obs_ccpa - and: - taskdep: - attrs: - task: get_obs_ccpa - datadep: - text: "&CCPA_OBS_DIR;" - - metatask_vx_ens_member_acc: - var: - mem: '{% if global.DO_ENSEMBLE %}{% for m in range(1, global.NUM_ENS_MEMBERS+1) %}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' - - task_run_MET_PcpCombine_fcst_APCP#ACCUM_HR#h_mem#mem#: - <<: *default_task - attrs: - cycledefs: forecast - maxtries: '2' - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_PCPCOMBINE"' - envars: - <<: *default_vars - VAR: APCP - ACCUM_HH: '#ACCUM_HR#' - obs_or_fcst: fcst - OBTYPE: CCPA - OBS_DIR: '&CCPA_OBS_DIR;' - MET_TOOL: 'PCPCOMBINE' - ENSMEM_INDX: "#mem#" - SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' - dependency: - or_do_post: - <<: *post_files_exist - - task_run_MET_GridStat_vx_APCP#ACCUM_HR#h_mem#mem#: - <<: *default_task - attrs: - maxtries: '2' - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' - envars: - <<: *default_vars - FHR: '#FCST_HR_LIST#' - OBS_DIR: '&CCPA_OBS_DIR;' - VAR: APCP - ACCUM_HH: '#ACCUM_HR#' - MET_TOOL: 'GRIDSTAT' - OBTYPE: 'CCPA' - ENSMEM_INDX: "#mem#" - SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' - walltime: 02:00:00 - dependency: - and: - taskdep_obs: - attrs: - task: run_MET_PcpCombine_obs_APCP#ACCUM_HR#h - taskdep_fcst: - attrs: - task: run_MET_PcpCombine_fcst_APCP#ACCUM_HR#h_mem#mem# diff --git a/parm/wflow/verify_det.yaml b/parm/wflow/verify_det.yaml new file mode 100644 index 0000000000..804cc06107 --- /dev/null +++ b/parm/wflow/verify_det.yaml @@ -0,0 +1,116 @@ +default_task_verify_det: &default_task_verify_det + account: '&ACCOUNT;' + attrs: + cycledefs: forecast + maxtries: '1' + envars: &default_vars + GLOBAL_VAR_DEFNS_FP: '&GLOBAL_VAR_DEFNS_FP;' + USHdir: '&USHdir;' + PDY: !cycstr '@Y@m@d' + cyc: !cycstr "@H" + subcyc: !cycstr "@M" + LOGDIR: !cycstr "&LOGDIR;" + nprocs: '{{ parent.nnodes * parent.ppn }}' + join: !cycstr '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;' + memory: '{% if user.MACHINE not in ["NOAACLOUD"] %}{{ "2G" }}{% endif %}' + native: '{{ platform.SCHED_NATIVE_CMD }}' + nnodes: 1 + nodes: '{{ nnodes }}:ppn={{ ppn }}' + nodesize: '&NCORES_PER_NODE;' + partition: '{% if platform.get("PARTITION_DEFAULT") %}&PARTITION_DEFAULT;{% else %}None{% endif %}' + ppn: 1 + queue: '&QUEUE_DEFAULT;' + walltime: 00:30:00 + +metatask_GridStat_CCPA_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 %}' + metatask_GridStat_CCPA_APCP#ACCUM_HH#h_all_mems: + var: + mem: '{% if global.DO_ENSEMBLE %}{% for m in range(1, global.NUM_ENS_MEMBERS+1) %}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' + task_run_MET_GridStat_vx_APCP#ACCUM_HH#h_mem#mem#: + <<: *default_task_verify_det + attrs: + maxtries: '2' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' + envars: + <<: *default_vars + OBS_DIR: '&CCPA_OBS_DIR;' + VAR: APCP + ACCUM_HH: '#ACCUM_HH#' + MET_TOOL: 'GRIDSTAT' + OBTYPE: 'CCPA' + ENSMEM_INDX: "#mem#" + SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' + walltime: 02:00:00 + dependency: + and: + taskdep_pcpcombine_obs: + attrs: + task: run_MET_PcpCombine_obs_APCP#ACCUM_HH#h + taskdep_pcpcombine_fcst: + attrs: + task: run_MET_PcpCombine_fcst_APCP#ACCUM_HH#h_mem#mem# + +metatask_GridStat_MRMS_all_mems: + var: + mem: '{% if global.DO_ENSEMBLE %}{% for m in range(1, global.NUM_ENS_MEMBERS+1) %}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' + metatask_GridStat_MRMS_mem#mem#: + var: + VAR: '{% for var in verification.VX_FIELDS %}{% if var in ["REFC", "RETOP"] %}{{ "%s " % var }}{% endif %}{% endfor %}' + task_run_MET_GridStat_vx_#VAR#_mem#mem#: + <<: *default_task_verify_det + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' + envars: + <<: *default_vars + OBS_DIR: '&MRMS_OBS_DIR;' + VAR: '#VAR#' + ACCUM_HH: '01' + MET_TOOL: 'GRIDSTAT' + OBTYPE: 'MRMS' + ENSMEM_INDX: "#mem#" + SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' + walltime: 02:00:00 + dependency: + and: + or_get_obs: # Ensure get_obs task is complete if it's turned on + not: + taskvalid: + attrs: + task: get_obs_mrms + taskdep: + attrs: + task: get_obs_mrms + datadep_post_files_exist: + attrs: + age: 00:00:00:30 + text: !cycstr '{{ workflow.EXPTDIR }}/@Y@m@d@H/post_files_exist_mem#mem#.txt' + +metatask_PointStat_NDAS_all_mems: + var: + mem: '{% if global.DO_ENSEMBLE %}{% for m in range(1, global.NUM_ENS_MEMBERS+1) %}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' + metatask_PointStat_NDAS_mem#mem#: + var: + VAR: '{% for var in verification.VX_FIELDS %}{% if var in ["SFC", "UPA"] %}{{ "%s " % var }}{% endif %}{% endfor %}' + task_run_MET_PointStat_vx_#VAR#_mem#mem#: + <<: *default_task_verify_det + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' + envars: + <<: *default_vars + OBS_DIR: '&NDAS_OBS_DIR;' + VAR: '#VAR#' + MET_TOOL: 'POINTSTAT' + OBTYPE: 'NDAS' + ACCUM_HH: '01' + ENSMEM_INDX: "#mem#" + SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' + walltime: 01:00:00 + dependency: + and: + taskdep_pb2nc: + attrs: + task: run_MET_Pb2nc_obs + datadep_post_files_exist: + attrs: + age: 00:00:00:30 + text: !cycstr '{{ workflow.EXPTDIR }}/@Y@m@d@H/post_files_exist_mem#mem#.txt' diff --git a/parm/wflow/verify_ens.yaml b/parm/wflow/verify_ens.yaml new file mode 100644 index 0000000000..3dbf924ce8 --- /dev/null +++ b/parm/wflow/verify_ens.yaml @@ -0,0 +1,189 @@ +default_task_verify_ens: &default_task_verify_ens + account: '&ACCOUNT;' + attrs: + cycledefs: forecast + maxtries: '2' + envars: &default_vars + GLOBAL_VAR_DEFNS_FP: '&GLOBAL_VAR_DEFNS_FP;' + USHdir: '&USHdir;' + PDY: !cycstr '@Y@m@d' + cyc: !cycstr "@H" + subcyc: !cycstr "@M" + LOGDIR: !cycstr "&LOGDIR;" + nprocs: '{{ parent.nnodes * parent.ppn }}' + join: !cycstr '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;' + memory: '{% if user.MACHINE not in ["WCOSS2", "NOAACLOUD"] %}{{ "2G" }}{% endif %}' + native: '{{ platform.SCHED_NATIVE_CMD }}' + nnodes: 1 + nodes: '{{ nnodes }}:ppn={{ ppn }}' + nodesize: '&NCORES_PER_NODE;' + partition: '{% if platform.get("PARTITION_DEFAULT") %}&PARTITION_DEFAULT;{% else %}None{% endif %}' + ppn: 1 + queue: '&QUEUE_DEFAULT;' + walltime: 01:00:00 + +metatask_GenEnsProd_EnsembleStat_CCPA: + var: + ACCUM_HH: '{% for ah in verification.VX_APCP_ACCUMS_HRS %}{% if workflow.FCST_LEN_HRS >= ah %}{{ "%02d " % ah }}{% endif %}{% endfor %}' + task_run_MET_GenEnsProd_vx_APCP#ACCUM_HH#h: &task_GenEnsProd_CCPA + <<: *default_task_verify_ens + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' + envars: &envars_GenEnsProd_CCPA + <<: *default_vars + ACCUM_HH: '#ACCUM_HH#' + OBS_DIR: '&CCPA_OBS_DIR;' + VAR: APCP + MET_TOOL: 'GENENSPROD' + OBTYPE: 'CCPA' + dependency: + and: + # The PcpCombine task for obs must be complete because this GenEnsProd + # task checks to see the forecast hours for which obs are available before + # processing the forecast for those hours. + taskdep_pcpcombine_obs: + attrs: + task: run_MET_PcpCombine_obs_APCP#ACCUM_HH#h + metataskdep_pcpcombine_fcst: + attrs: + metatask: PcpCombine_fcst_APCP#ACCUM_HH#h_all_mems + task_run_MET_EnsembleStat_vx_APCP#ACCUM_HH#h: + <<: *task_GenEnsProd_CCPA + envars: + <<: *envars_GenEnsProd_CCPA + MET_TOOL: 'ENSEMBLESTAT' + dependency: + taskdep_genensprod: + attrs: + task: run_MET_GenEnsProd_vx_APCP#ACCUM_HH#h + +metatask_GenEnsProd_EnsembleStat_MRMS: + var: + VAR: '{% for var in verification.VX_FIELDS %}{% if var in ["REFC", "RETOP"] %}{{ "%s " % var }}{% endif %}{% endfor %}' + task_run_MET_GenEnsProd_vx_#VAR#: &task_GenEnsProd_MRMS + <<: *default_task_verify_ens + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' + envars: &envars_GenEnsProd_MRMS + <<: *default_vars + ACCUM_HH: '01' + OBS_DIR: '&MRMS_OBS_DIR;' + VAR: '#VAR#' + MET_TOOL: 'GENENSPROD' + OBTYPE: 'MRMS' + dependency: + and: + or_get_obs: # Ensure get_obs task is complete if it's turned on + not: + taskvalid: + attrs: + task: get_obs_mrms + taskdep: + attrs: + task: get_obs_mrms + metataskdep_post_files_exist: &post_files_exist + attrs: + metatask: check_post_output_all_mems + + task_run_MET_EnsembleStat_vx_#VAR#: + <<: *task_GenEnsProd_MRMS + envars: + <<: *envars_GenEnsProd_MRMS + MET_TOOL: 'ENSEMBLESTAT' + dependency: + taskdep: + attrs: + task: run_MET_GenEnsProd_vx_#VAR# + +metatask_GenEnsProd_EnsembleStat_NDAS: + var: + VAR: '{% for var in verification.VX_FIELDS %}{% if var in ["SFC", "UPA"] %}{{ "%s " % var }}{% endif %}{% endfor %}' + task_run_MET_GenEnsProd_vx_#VAR#: &task_GenEnsProd_NDAS + <<: *default_task_verify_ens + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' + envars: &envars_GenEnsProd_NDAS + <<: *default_vars + OBS_DIR: '&NDAS_OBS_DIR;' + VAR: '#VAR#' + MET_TOOL: 'GENENSPROD' + OBTYPE: 'NDAS' + ACCUM_HH: '01' + dependency: + and: + # The Pb2nc task (which is run only for obs) must be complete because + # this GenEnsProd task checks to see the forecast hours for which obs + # are available before processing the forecast for those hours. + taskdep_pb2nc: + attrs: + task: run_MET_Pb2nc_obs + metataskdep_post_files_exist: + <<: *post_files_exist + task_run_MET_EnsembleStat_vx_#VAR#: + <<: *task_GenEnsProd_NDAS + envars: + <<: *envars_GenEnsProd_NDAS + MET_TOOL: 'ENSEMBLESTAT' + dependency: + taskdep_genensprod: + attrs: + task: run_MET_GenEnsProd_vx_#VAR# + +metatask_GridStat_CCPA_ensmeanprob_all_accums: + var: + stat: MEAN PROB + statlc: mean prob + metatask_GridStat_CCPA_ens#statlc#_all_accums: + var: + ACCUM_HH: '{% for ah in verification.VX_APCP_ACCUMS_HRS %}{% if workflow.FCST_LEN_HRS >= ah %}{{ "%02d " % ah }}{% endif %}{% endfor %}' + task_run_MET_GridStat_vx_ens#statlc#_APCP#ACCUM_HH#h: + <<: *default_task_verify_ens + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENS#stat#"' + envars: + <<: *default_vars + OBS_DIR: '&CCPA_OBS_DIR;' + VAR: APCP + MET_TOOL: 'GRIDSTAT' + OBTYPE: 'CCPA' + ACCUM_HH: '#ACCUM_HH#' + dependency: + taskdep: + attrs: + task: run_MET_GenEnsProd_vx_APCP#ACCUM_HH#h + +metatask_GridStat_MRMS_ensprob: + var: + VAR: '{% for var in verification.VX_FIELDS %}{% if var in ["REFC", "RETOP"] %}{{ "%s " % var }}{% endif %}{% endfor %}' + task_run_MET_GridStat_vx_ensprob_#VAR#: + <<: *default_task_verify_ens + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSPROB"' + envars: + <<: *default_vars + ACCUM_HH: '01' + OBS_DIR: '&MRMS_OBS_DIR;' + VAR: '#VAR#' + MET_TOOL: 'GRIDSTAT' + OBTYPE: 'MRMS' + dependency: + taskdep: + attrs: + task: run_MET_GenEnsProd_vx_#VAR# + +metatask_PointStat_NDAS_ensmeanprob: + var: + stat: MEAN PROB + statlc: mean prob + metatask_PointStat_NDAS_ens#statlc#: + var: + VAR: '{% for var in verification.VX_FIELDS %}{% if var in ["SFC", "UPA"] %}{{ "%s " % var }}{% endif %}{% endfor %}' + task_run_MET_PointStat_vx_ens#statlc#_#VAR#: + <<: *default_task_verify_ens + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENS#stat#"' + envars: + <<: *default_vars + OBS_DIR: '&NDAS_OBS_DIR;' + VAR: '#VAR#' + MET_TOOL: 'POINTSTAT' + OBTYPE: 'NDAS' + ACCUM_HH: '01' + dependency: + taskdep: + attrs: + task: run_MET_GenEnsProd_vx_#VAR# diff --git a/parm/wflow/verify_ensgrid.yaml b/parm/wflow/verify_ensgrid.yaml deleted file mode 100644 index 4f8dd65ddf..0000000000 --- a/parm/wflow/verify_ensgrid.yaml +++ /dev/null @@ -1,160 +0,0 @@ -default_task_verify_ens: &default_task_verify_ens - account: '&ACCOUNT;' - attrs: - cycledefs: forecast - maxtries: '2' - envars: &default_vars - GLOBAL_VAR_DEFNS_FP: '&GLOBAL_VAR_DEFNS_FP;' - USHdir: '&USHdir;' - PDY: !cycstr '@Y@m@d' - cyc: !cycstr "@H" - subcyc: !cycstr "@M" - LOGDIR: !cycstr "&LOGDIR;" - FHR: '{% for h in range(0, workflow.FCST_LEN_HRS+1) %}{{ " %02d" % h }}{% endfor %}' - nprocs: '{{ parent.nnodes * parent.ppn }}' - join: !cycstr '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;' - memory: '{% if user.MACHINE not in ["WCOSS2", "NOAACLOUD"] %}{{ "2G" }}{% endif %}' - native: '{{ platform.SCHED_NATIVE_CMD }}' - nnodes: 1 - nodes: '{{ nnodes }}:ppn={{ ppn }}' - nodesize: '&NCORES_PER_NODE;' - partition: '{% if platform.get("PARTITION_DEFAULT") %}&PARTITION_DEFAULT;{% else %}None{% endif %}' - ppn: 1 - queue: '&QUEUE_DEFAULT;' - walltime: 01:00:00 - -metatask_EnsembleStat: - var: - VAR: REFC RETOP - task_run_MET_EnsembleStat_vx_#VAR#: - <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' - envars: - <<: *default_vars - ACCUM_HH: '01' - OBS_DIR: '&MRMS_OBS_DIR;' - VAR: '#VAR#' - MET_TOOL: 'ENSEMBLESTAT' - OBTYPE: 'MRMS' - dependency: - metataskdep: - attrs: - metatask: run_ens_post - -metatask_GridStat_ensprob: - var: - VAR: REFC RETOP - task_run_MET_GridStat_vx_ensprob_#VAR#: - <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSPROB"' - envars: - <<: *default_vars - ACCUM_HH: '01' - OBS_DIR: '&MRMS_OBS_DIR;' - VAR: '#VAR#' - MET_TOOL: 'GRIDSTAT' - OBTYPE: 'MRMS' - dependency: - taskdep: - attrs: - task: run_MET_EnsembleStat_vx_#VAR# - -metatask_EnsembleStat_acc: - var: - ACCUM_HR: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{{ "%02d " % ah }}{% endif %}{% endfor %}' - FCST_HR_LIST: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{% for h in range(ah, workflow.FCST_LEN_HRS+1, ah) %}{{ "%02d," % h }}{% endfor %}{% endif %} {% endfor %}' - task_run_MET_EnsembleStat_vx_APCP#ACCUM_HR#h: - <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' - envars: - <<: *default_vars - ACCUM_HH: '#ACCUM_HR#' - FHR: '#FCST_HR_LIST#' - OBS_DIR: '&CCPA_OBS_DIR;' - VAR: APCP - MET_TOOL: 'ENSEMBLESTAT' - OBTYPE: 'CCPA' - dependency: - and: - or_do_post: &post_files_exist - and_run_post: # If post was meant to run, wait on the whole post metatask - taskvalid: - attrs: - task: run_post_mem001_f000 - metataskdep: - attrs: - metatask: run_ens_post - and_inline_post: # If inline post ran, wait on the forecast ensemble to complete - not: - taskvalid: - attrs: - task: run_post_mem001_f000 - metataskdep: - attrs: - metatask: run_ensemble - metataskdep: - attrs: - metatask: GridStat_APCP_acc - -metatask_ensemble_vx_stats: - var: - stat: MEAN PROB - statlc: mean prob - metatask_GridStat_ens_acc: - var: - ACCUM_HR: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{{ "%02d " % ah }}{% endif %}{% endfor %}' - FCST_HR_LIST: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{% for h in range(ah, workflow.FCST_LEN_HRS+1, ah) %}{{ "%02d," % h }}{% endfor %}{% endif %} {% endfor %}' - task_run_MET_GridStat_vx_ens#statlc#_APCP#ACCUM_HR#h: - <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENS#stat#"' - envars: - <<: *default_vars - ACCUM_HH: '#ACCUM_HR#' - FHR: '#FCST_HR_LIST#' - OBS_DIR: '&CCPA_OBS_DIR;' - VAR: APCP - MET_TOOL: 'GRIDSTAT' - OBTYPE: 'CCPA' - dependency: - taskdep: - attrs: - task: run_MET_EnsembleStat_vx_APCP#ACCUM_HR#h - metatask_PointStat_ens: - var: - VAR: SFC UPA - task_run_MET_PointStat_vx_ens#statlc#_#VAR#: - <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENS#stat#"' - envars: - <<: *default_vars - OBS_DIR: '&NDAS_OBS_DIR;' - VAR: '#VAR#' - MET_TOOL: 'POINTSTAT' - OBTYPE: 'NDAS' - ACCUM_HH: '01' - dependency: - taskdep: - attrs: - task: run_MET_EnsembleStat_vx_#VAR# - -metatask_EnsembleStat_point: - var: - VAR: SFC UPA - task_run_MET_EnsembleStat_vx_#VAR#: - <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' - envars: - <<: *default_vars - OBS_DIR: '&NDAS_OBS_DIR;' - VAR: '#VAR#' - MET_TOOL: 'ENSEMBLESTAT' - OBTYPE: 'NDAS' - ACCUM_HH: '01' - dependency: - and: - metataskdep: - attrs: - metatask: run_ens_post - taskdep: - attrs: - task: run_MET_Pb2nc_obs diff --git a/parm/wflow/verify_pre.yaml b/parm/wflow/verify_pre.yaml new file mode 100644 index 0000000000..2eccbf8027 --- /dev/null +++ b/parm/wflow/verify_pre.yaml @@ -0,0 +1,222 @@ +default_task_verify_pre: &default_task_verify_pre + account: '&ACCOUNT;' + attrs: + cycledefs: forecast + maxtries: '1' + envars: &default_vars + GLOBAL_VAR_DEFNS_FP: '&GLOBAL_VAR_DEFNS_FP;' + USHdir: '&USHdir;' + PDY: !cycstr '@Y@m@d' + cyc: !cycstr "@H" + subcyc: !cycstr "@M" + LOGDIR: !cycstr "&LOGDIR;" + nprocs: '{{ parent.nnodes * parent.ppn }}' + join: !cycstr '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;' + memory: '{% if user.MACHINE not in ["NOAACLOUD"] %}{{ "2G" }}{% endif %}' + native: '{{ platform.SCHED_NATIVE_CMD }}' + nnodes: 1 + nodes: '{{ nnodes }}:ppn={{ ppn }}' + nodesize: '&NCORES_PER_NODE;' + partition: '{% if platform.get("PARTITION_DEFAULT") %}&PARTITION_DEFAULT;{% else %}None{% endif %}' + ppn: 1 + queue: '&QUEUE_DEFAULT;' + walltime: 00:30:00 + +task_get_obs_ccpa: + <<: *default_task_verify_pre + command: '&LOAD_MODULES_RUN_TASK_FP; "get_obs" "&JOBSdir;/JREGIONAL_GET_OBS_CCPA"' + envars: + <<: *default_vars + ACCUM_HH: '01' + OBS_DIR: '&CCPA_OBS_DIR;' + FHR: '{% for h in range(0, workflow.FCST_LEN_HRS+1) %}{{ " %02d" % h }}{% endfor %}' + partition: '{% if platform.get("PARTITION_HPSS") %}&PARTITION_HPSS;{% else %}None{% endif %}' + queue: "&QUEUE_HPSS;" + walltime: 00:45:00 + +task_get_obs_mrms: + <<: *default_task_verify_pre + command: '&LOAD_MODULES_RUN_TASK_FP; "get_obs" "&JOBSdir;/JREGIONAL_GET_OBS_MRMS"' + envars: + <<: *default_vars + OBS_DIR: '&MRMS_OBS_DIR;' + VAR: 'REFC RETOP' + FHR: '{% for h in range(0, workflow.FCST_LEN_HRS+1) %}{{ " %02d" % h }}{% endfor %}' + partition: '{% if platform.get("PARTITION_HPSS") %}&PARTITION_HPSS;{% else %}None{% endif %}' + queue: "&QUEUE_HPSS;" + walltime: 00:45:00 + +task_get_obs_ndas: + <<: *default_task_verify_pre + envars: + <<: *default_vars + OBS_DIR: '&NDAS_OBS_DIR;' + FHR: '{% for h in range(0, workflow.FCST_LEN_HRS+1) %}{{ " %02d" % h }}{% endfor %}' + command: '&LOAD_MODULES_RUN_TASK_FP; "get_obs" "&JOBSdir;/JREGIONAL_GET_OBS_NDAS"' + queue: "&QUEUE_HPSS;" + partition: '{% if platform.get("PARTITION_HPSS") %}&PARTITION_HPSS;{% else %}None{% endif %}' + walltime: 02:00:00 + +task_run_MET_Pb2nc_obs: + <<: *default_task_verify_pre + attrs: + cycledefs: forecast + maxtries: '2' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_PB2NC_OBS"' + envars: + <<: *default_vars + VAR: SFC + ACCUM_HH: '01' + obs_or_fcst: obs + OBTYPE: NDAS + OBS_DIR: '&NDAS_OBS_DIR;' + MET_TOOL: 'PB2NC' + dependency: + and: + datadep: + text: "&NDAS_OBS_DIR;" + or: + not: + taskvalid: + attrs: + task: get_obs_ndas + taskdep: + attrs: + task: get_obs_ndas + +metatask_PcpCombine_obs: + var: + ACCUM_HH: '{% for ah in verification.VX_APCP_ACCUMS_HRS %}{% if workflow.FCST_LEN_HRS >= ah %}{{ "%02d " % ah }}{% endif %}{% endfor %}' + task_run_MET_PcpCombine_obs_APCP#ACCUM_HH#h: + <<: *default_task_verify_pre + attrs: + cycledefs: forecast + maxtries: '2' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_PCPCOMBINE"' + envars: + <<: *default_vars + VAR: APCP + ACCUM_HH: '#ACCUM_HH#' + obs_or_fcst: obs + OBTYPE: CCPA + OBS_DIR: '&CCPA_OBS_DIR;' + MET_TOOL: 'PCPCOMBINE' + ENSMEM_INDX: '' + dependency: + and: + datadep: + text: "&CCPA_OBS_DIR;" + or: + not: + taskvalid: + attrs: + task: get_obs_ccpa + taskdep: + attrs: + task: get_obs_ccpa + +metatask_check_post_output_all_mems: + var: + mem: '{% if global.DO_ENSEMBLE %}{% for m in range(1, global.NUM_ENS_MEMBERS+1) %}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' + task_check_post_output_mem#mem#: + <<: *default_task_verify_pre + attrs: + cycledefs: forecast + maxtries: '1' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_CHECK_POST_OUTPUT"' + envars: + <<: *default_vars + VAR: APCP + ACCUM_HH: '01' + ENSMEM_INDX: '#mem#' + dependency: + # This "or" checks that the necessary stand-alone post tasks or forecast + # tasks with inline post have run to generate the post files that are + # needed as forecast input to various verification tasks. + or_post_files_exist: &post_files_exist + # This "and" is to check whether post is being run stand-alone (i.e. outside + # the weather model in tasks separate from the forecast task(s)), and if + # so, to ensure that the stand-alone post metatask for the current member + # has completed for all forecast hours. + and_standalone_post: + # This "or" is to check whether a stand-alane post task exists [either for + # mem000 (if running a deterministic forecast) or for mem001 (if running + # an ensemble forecast)]. Checking for forecast hour 000 is sufficient. + # If so, it implies post is being run stand-alone. + or_post_task_exists: &post_task_exists + taskvalid_mem000: + attrs: + task: run_post_mem000_f000 + taskvalid_mem001: + attrs: + task: run_post_mem001_f000 + # We would like a dependency here on the run_post_#mem#_all_fhrs metatask, + # but that is apparently not possible in rocoto with a metataskvalid/ + # metataskdep combination (currently, metataskvalid is not a defined + # dependency type in ROCOTO); that approach only works for tasks. Thus, + # here we use jinja directives to explicitly list all the tasks in the + # run_post_#mem#_all_fhrs metatask. + #or_post_metatask: + # not: + # metataskvalid: + # attrs: + # metatask: run_post_mem#mem#_all_fhrs + # metataskdep: + # attrs: + # metatask: run_post_mem#mem#_all_fhrs + taskdep: + attrs: + task: '{% for h in range(0, workflow.LONG_FCST_LEN+1) %}{% if h > 0 %}{{" \n"}}{% endif %}{%- endfor -%}' + # This "and" is to check whether post is being run inline (i.e. as part of + # the weather model), and if so, to ensure that the forecast task for the + # current member has completed. + and_inline_post: + # This "not" is to check whether a stand-alone post task DOESN'T exist + # [either for mem000 (if running a deterministic forecast) or for mem001 + # (if running an ensemble forecast)]. If so, it implies that either + # post is being run inline (as part of the weather model) or is not being + # run at all. + not: + or_post_task_exists: + <<: *post_task_exists + # This "or" is to verify that either the forecast task for the current + # member exists and has completed, or that it doesn't exist. + or_run_fcst: + and: + taskvalid: &fcst_task_exists + attrs: + task: run_fcst_mem#mem# + taskdep: + attrs: + task: run_fcst_mem#mem# + not: + taskvalid: + <<: *fcst_task_exists + +metatask_PcpCombine_fcst_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 %}' + metatask_PcpCombine_fcst_APCP#ACCUM_HH#h_all_mems: + var: + mem: '{% if global.DO_ENSEMBLE %}{% for m in range(1, global.NUM_ENS_MEMBERS+1) %}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' + task_run_MET_PcpCombine_fcst_APCP#ACCUM_HH#h_mem#mem#: + <<: *default_task_verify_pre + attrs: + cycledefs: forecast + maxtries: '2' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_PCPCOMBINE"' + envars: + <<: *default_vars + VAR: APCP + ACCUM_HH: '#ACCUM_HH#' + obs_or_fcst: fcst + OBTYPE: CCPA + OBS_DIR: '&CCPA_OBS_DIR;' + MET_TOOL: 'PCPCOMBINE' + ENSMEM_INDX: "#mem#" + dependency: + datadep: + attrs: + age: 00:00:00:30 + text: !cycstr '{{ workflow.EXPTDIR }}/@Y@m@d@H/post_files_exist_mem#mem#.txt' + walltime: 00:05:00 diff --git a/scripts/exregional_check_post_output.sh b/scripts/exregional_check_post_output.sh new file mode 100755 index 0000000000..d088e218cd --- /dev/null +++ b/scripts/exregional_check_post_output.sh @@ -0,0 +1,120 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. $USHdir/source_util_funcs.sh +source_config_for_task "task_run_met_pcpcombine|task_run_post" ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# Source files defining auxiliary functions for verification. +# +#----------------------------------------------------------------------- +# +. $USHdir/set_vx_fhr_list.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the ex-script for the task that checks that all the post-processed +output files in fact exist and are at least a certain age. These files +may have been generated by UPP as part of the current SRW App workflow, +or they may be user-staged. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Get the time lag for the current ensemble member. +# +#----------------------------------------------------------------------- +# +i="0" +if [ "${DO_ENSEMBLE}" = "TRUE" ]; then + i=$( bc -l <<< "${ENSMEM_INDX}-1" ) +fi +time_lag=$( bc -l <<< "${ENS_TIME_LAG_HRS[$i]}*${SECS_PER_HOUR}" ) +# +#----------------------------------------------------------------------- +# +# Get the list of forecast hours for which there is a post-processed +# output file. Note that: +# +# 1) CDATE (in YYYYMMDDHH format) is already available via the call to +# the job_preamble.sh script in the j-job of this ex-script. +# 2) VAR is set to "APCP" and ACCUM_HH is set to "01" because we assume +# the output files are hourly, so these settings will result in the +# function set_vx_fhr_list checking for existence of hourly post output +# files. +# +#----------------------------------------------------------------------- +# +ensmem_indx=$(printf "%0${VX_NDIGITS_ENSMEM_NAMES}d" "${ENSMEM_INDX}") +ensmem_name="mem${ensmem_indx}" +FCST_INPUT_FN_TEMPLATE=$( eval echo ${FCST_SUBDIR_TEMPLATE:+${FCST_SUBDIR_TEMPLATE}/}${FCST_FN_TEMPLATE} ) +set_vx_fhr_list \ + cdate="${CDATE}" \ + fcst_len_hrs="${FCST_LEN_HRS}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + base_dir="${VX_FCST_INPUT_BASEDIR}" \ + fn_template="${FCST_INPUT_FN_TEMPLATE}" \ + check_accum_contrib_files="FALSE" \ + num_missing_files_max="${NUM_MISSING_FCST_FILES_MAX}" \ + outvarname_fhr_list="FHR_LIST" +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Done checking for existence of post-processed files for ensemble member ${ENSMEM_INDX}. + +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_get_obs_ccpa.sh b/scripts/exregional_get_obs_ccpa.sh index d3f53c8d5a..9b54e49d56 100755 --- a/scripts/exregional_get_obs_ccpa.sh +++ b/scripts/exregional_get_obs_ccpa.sh @@ -162,15 +162,15 @@ while [[ ${current_fcst} -le ${fcst_length} ]]; do if [[ ${vhh_noZero} -ge 19 && ${vhh_noZero} -le 23 ]]; then cd_vrfy $ccpa_raw/${vyyyymmdd_p1} # Pull CCPA data from HPSS - TarCommand="htar -xvf ${TarFile_p1} \`htar -tf ${TarFile_p1} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile_p1} \`htar -tf ${TarFile_p1} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile_p1} `htar -tf ${TarFile_p1} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print $7}'` + htar -xvf ${TarFile_p1} `htar -tf ${TarFile_p1} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print \$7}'` else cd_vrfy $ccpa_raw/${vyyyymmdd} # Pull CCPA data from HPSS - TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print $7}'` + htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print \$7}'` fi # One hour CCPA files have incorrect metadeta in the files under the "00" directory from 20180718 to 20210504. @@ -200,15 +200,15 @@ while [[ ${current_fcst} -le ${fcst_length} ]]; do if [[ ${vhh_noZero} -ne 21 ]]; then cd_vrfy $ccpa_raw/${vyyyymmdd} # Pull CCPA data from HPSS - TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print $7}'` + htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print \$7}'` elif [[ ${vhh_noZero} -eq 21 ]]; then cd_vrfy $ccpa_raw/${vyyyymmdd_p1} # Pull CCPA data from HPSS - TarCommand="htar -xvf ${TarFile_p1} \`htar -tf ${TarFile_p1} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile_p1} \`htar -tf ${TarFile_p1} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile_p1} `htar -tf ${TarFile_p1} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print $7}'` + htar -xvf ${TarFile_p1} `htar -tf ${TarFile_p1} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print \$7}'` fi if [[ ${vhh_noZero} -eq 0 ]]; then @@ -226,9 +226,9 @@ while [[ ${current_fcst} -le ${fcst_length} ]]; do elif [[ ${accum} == "06" ]]; then cd_vrfy $ccpa_raw/${vyyyymmdd} # Pull CCPA data from HPSS - TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"ccpa.t${vhh}z.${accum}h.hrap.conus.gb2\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print $7}'` + htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "ccpa.t${vhh}z.${accum}h.hrap.conus.gb2" | awk '{print \$7}'` if [[ ${vhh_noZero} -eq 0 ]]; then cp_vrfy $ccpa_raw/${vyyyymmdd}/00/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 $ccpa_proc/${vyyyymmdd} diff --git a/scripts/exregional_get_obs_mrms.sh b/scripts/exregional_get_obs_mrms.sh index 2f2d7afb4f..2d4ecac82f 100755 --- a/scripts/exregional_get_obs_mrms.sh +++ b/scripts/exregional_get_obs_mrms.sh @@ -128,8 +128,8 @@ while [[ ${cur_ut} -le ${end_valid_ut} ]]; do echo "TAR FILE:${TarFile}" - TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"${field_base_name}${level}${vyyyy}${vmm}${vdd}-[0-9][0-9][0-9][0-9][0-9][0-9].grib2.gz\" | awk '{print $7}'\`" - htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "${field_base_name}${level}${vyyyy}${vmm}${vdd}-[0-9][0-9][0-9][0-9][0-9][0-9].grib2.gz" | awk '{print $7}'` + TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"${field_base_name}${level}${vyyyy}${vmm}${vdd}-[0-9][0-9][0-9][0-9][0-9][0-9].grib2.gz\" | awk '{print \$7}'\`" + htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "${field_base_name}${level}${vyyyy}${vmm}${vdd}-[0-9][0-9][0-9][0-9][0-9][0-9].grib2.gz" | awk '{print \$7}'` Status=$? if [[ ${Status} != 0 ]]; then diff --git a/scripts/exregional_get_obs_ndas.sh b/scripts/exregional_get_obs_ndas.sh index 401013a9ce..4249faafca 100755 --- a/scripts/exregional_get_obs_ndas.sh +++ b/scripts/exregional_get_obs_ndas.sh @@ -91,24 +91,24 @@ echo "vhh_noZero=$vhh_noZero" # Name of NDAS tar file on HPSS is dependent on date. Logic accounts for files from 2019 until July 2020. if [[ ${vyyyymmdd} -ge 20190101 && ${vyyyymmdd} -le 20190820 ]]; then TarFile="/NCEPPROD/hpssprod/runhistory/rh${vyyyy}/${vyyyy}${vmm}/${vyyyy}${vmm}${vdd}/com2_nam_prod_nam.${vyyyy}${vmm}${vdd}${vhh}.bufr.tar" - TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"prepbufr.tm[0-9][0-9].nr\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"prepbufr.tm[0-9][0-9].nr\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "prepbufr.tm[0-9][0-9].nr" | awk '{print $7}'` + htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "prepbufr.tm[0-9][0-9].nr" | awk '{print \$7}'` elif [[ ${vyyyymmdd} -ge 20190821 && ${vyyyymmdd} -le 20200226 ]]; then TarFile="/NCEPPROD/hpssprod/runhistory/rh${vyyyy}/${vyyyy}${vmm}/${vyyyy}${vmm}${vdd}/gpfs_dell1_nco_ops_com_nam_prod_nam.${vyyyy}${vmm}${vdd}${vhh}.bufr.tar" - TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"prepbufr.tm[0-9][0-9].nr\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"prepbufr.tm[0-9][0-9].nr\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "prepbufr.tm[0-9][0-9].nr" | awk '{print $7}'` + htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "prepbufr.tm[0-9][0-9].nr" | awk '{print \$7}'` elif [[ ${vyyyymmdd} -gt 20200226 && ${vyyyymmdd} -le 20220627 ]]; then TarFile="/NCEPPROD/hpssprod/runhistory/rh${vyyyy}/${vyyyy}${vmm}/${vyyyy}${vmm}${vdd}/com_nam_prod_nam.${vyyyy}${vmm}${vdd}${vhh}.bufr.tar" - TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"prepbufr.tm[0-9][0-9].nr\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"prepbufr.tm[0-9][0-9].nr\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "prepbufr.tm[0-9][0-9].nr" | awk '{print $7}'` + htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "prepbufr.tm[0-9][0-9].nr" | awk '{print \$7}'` else TarFile="/NCEPPROD/hpssprod/runhistory/rh${vyyyy}/${vyyyy}${vmm}/${vyyyy}${vmm}${vdd}/com_obsproc_v1.0_nam.${vyyyy}${vmm}${vdd}${vhh}.bufr.tar" - TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"prepbufr.tm[0-9][0-9].nr\" | awk '{print $7}'\`" + TarCommand="htar -xvf ${TarFile} \`htar -tf ${TarFile} | egrep \"prepbufr.tm[0-9][0-9].nr\" | awk '{print \$7}'\`" echo "CALLING: ${TarCommand}" - htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "prepbufr.tm[0-9][0-9].nr" | awk '{print $7}'` + htar -xvf ${TarFile} `htar -tf ${TarFile} | egrep "prepbufr.tm[0-9][0-9].nr" | awk '{print \$7}'` fi if [[ ! -d "$ndas_proc" ]]; then diff --git a/scripts/exregional_run_met_genensprod_or_ensemblestat.sh b/scripts/exregional_run_met_genensprod_or_ensemblestat.sh index 9f5ddef0b7..49e2dfdd91 100755 --- a/scripts/exregional_run_met_genensprod_or_ensemblestat.sh +++ b/scripts/exregional_run_met_genensprod_or_ensemblestat.sh @@ -205,29 +205,27 @@ fi # tasks). This will be exported to the environment and read by the # METplus configuration files. # -NDIGITS_ENSMEM_NAMES=3 FCST_INPUT_FN_TEMPLATE="" for (( i=0; i<${NUM_ENS_MEMBERS}; i++ )); do - mem_indx=$(($i+1)) - mem_indx_fmt=$(printf "%0${NDIGITS_ENSMEM_NAMES}d" "${mem_indx}") - time_lag=$( bc -l <<< "${ENS_TIME_LAG_HRS[$i]}*${SECS_PER_HOUR}" ) + ensmem_indx=$(printf "%0${VX_NDIGITS_ENSMEM_NAMES}d" "$((i+1))") + ensmem_name="mem${ensmem_indx}" if [ "${RUN_ENVIR}" = "nco" ]; then cdate_ensmem_subdir_or_null="" - DOT_ENSMEM_OR_NULL=".mem${mem_indx_fmt}" else - cdate_ensmem_subdir_or_null="${CDATE}/mem${mem_indx_fmt}" - DOT_ENSMEM_OR_NULL="" + cdate_ensmem_subdir_or_null="${CDATE}/${ensmem_name}" fi + time_lag=$( bc -l <<< "${ENS_TIME_LAG_HRS[$i]}*${SECS_PER_HOUR}" ) + if [ "${field_is_APCPgt01h}" = "TRUE" ]; then template="${cdate_ensmem_subdir_or_null:+${cdate_ensmem_subdir_or_null}/}metprd/PcpCombine_fcst/${FCST_FN_METPROC_TEMPLATE}" else template="${FCST_SUBDIR_TEMPLATE}/${FCST_FN_TEMPLATE}" fi - SLASH_ENSMEM_SUBDIR_OR_NULL="/mem${mem_indx_fmt}" + slash_ensmem_subdir_or_null="/${ensmem_name}" if [ -z "${FCST_INPUT_FN_TEMPLATE}" ]; then FCST_INPUT_FN_TEMPLATE=" $(eval echo ${template})" else @@ -255,7 +253,8 @@ set_vx_fhr_list \ accum_hh="${ACCUM_HH}" \ base_dir="${OBS_INPUT_DIR}" \ fn_template="${OBS_INPUT_FN_TEMPLATE}" \ - check_hourly_files="FALSE" \ + check_accum_contrib_files="FALSE" \ + num_missing_files_max="${NUM_MISSING_OBS_FILES_MAX}" \ outvarname_fhr_list="FHR_LIST" # #----------------------------------------------------------------------- @@ -368,6 +367,7 @@ settings="\ # Ensemble and member-specific information. # 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'ensmem_indx': '${ENSMEM_INDX:-}' 'time_lag': '${time_lag:-}' # # Field information. diff --git a/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh b/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh index 62e5961f4e..a6a30671b6 100755 --- a/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh @@ -117,10 +117,11 @@ set_vx_params \ # #----------------------------------------------------------------------- # -time_lag=$(( (${MEM_INDX_OR_NULL:+${ENS_TIME_LAG_HRS[${MEM_INDX_OR_NULL}-1]}}+0) )) -# Convert to seconds. We do this as a separate step using bc because -# bash's $((...)) arithmetic operator can't handle floats well. -time_lag=$( bc -l <<< "${time_lag}*${SECS_PER_HOUR}" ) +i="0" +if [ "${DO_ENSEMBLE}" = "TRUE" ]; then + i=$( bc -l <<< "${ENSMEM_INDX}-1" ) +fi +time_lag=$( bc -l <<< "${ENS_TIME_LAG_HRS[$i]}*${SECS_PER_HOUR}" ) # #----------------------------------------------------------------------- # @@ -172,15 +173,30 @@ fi # vx_fcst_input_basedir=$( eval echo "${VX_FCST_INPUT_BASEDIR}" ) vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) +ensmem_indx=$(printf "%0${VX_NDIGITS_ENSMEM_NAMES}d" "${ENSMEM_INDX}") +ensmem_name="mem${ensmem_indx}" if [ "${RUN_ENVIR}" = "nco" ]; then - if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then - ENSMEM=$( echo ${SLASH_ENSMEM_SUBDIR_OR_NULL} | cut -d"/" -f2 ) - DOT_ENSMEM_OR_NULL=".$ENSMEM" + slash_cdate_or_null="" + slash_ensmem_subdir_or_null="" +else + slash_cdate_or_null="/${CDATE}" +# +# Since other aspects of a deterministic run use the "mem000" string (e.g. +# in rocoto workflow task names, in log file names), it seems reasonable +# that a deterministic run create a "mem000" subdirectory under the $CDATE +# directory. But since that is currently not the case in in the run_fcst +# task, we need the following if-statement. If and when such a modification +# is made for the run_fcst task, we would remove this if-statement and +# simply set +# slash_ensmem_subdir_or_null="/${ensmem_name}" +# or, better, just remove this variale and code "/${ensmem_name}" where +# slash_ensmem_subdir_or_null currently appears below. +# + if [ "${DO_ENSEMBLE}" = "TRUE" ]; then + slash_ensmem_subdir_or_null="/${ensmem_name}" else - DOT_ENSMEM_OR_NULL="" + slash_ensmem_subdir_or_null="" fi -else - DOT_ENSMEM_OR_NULL="" fi if [ "${grid_or_point}" = "grid" ]; then @@ -189,7 +205,7 @@ if [ "${grid_or_point}" = "grid" ]; then if [ "${field_is_APCPgt01h}" = "TRUE" ]; then OBS_INPUT_DIR="${vx_output_basedir}/metprd/PcpCombine_obs" OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCPgt01h_FN_TEMPLATE} ) - FCST_INPUT_DIR="${vx_output_basedir}/${CDATE}/mem${ENSMEM_INDX}/metprd/PcpCombine_fcst" + FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/${slash_ensmem_subdir_or_null}/metprd/PcpCombine_fcst" FCST_INPUT_FN_TEMPLATE=$( eval echo ${FCST_FN_METPROC_TEMPLATE} ) else OBS_INPUT_DIR="${OBS_DIR}" @@ -218,7 +234,7 @@ elif [ "${grid_or_point}" = "point" ]; then fi -OUTPUT_BASE="${vx_output_basedir}/${CDATE}/mem${ENSMEM_INDX}" +OUTPUT_BASE="${vx_output_basedir}${slash_cdate_or_null}/${slash_ensmem_subdir_or_null}" OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}" STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" # @@ -235,7 +251,8 @@ set_vx_fhr_list \ accum_hh="${ACCUM_HH}" \ base_dir="${OBS_INPUT_DIR}" \ fn_template="${OBS_INPUT_FN_TEMPLATE}" \ - check_hourly_files="FALSE" \ + check_accum_contrib_files="FALSE" \ + num_missing_files_max="${NUM_MISSING_OBS_FILES_MAX}" \ outvarname_fhr_list="FHR_LIST" # #----------------------------------------------------------------------- @@ -300,7 +317,7 @@ else metplus_config_tmpl_fn="${FIELDNAME_IN_MET_FILEDIR_NAMES}" fi metplus_config_tmpl_fn="${metplus_tool_name}_${metplus_config_tmpl_fn}" -metplus_config_fn="${metplus_tool_name}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_mem${ENSMEM_INDX}" +metplus_config_fn="${metplus_tool_name}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${ensmem_name}" metplus_log_fn="${metplus_config_fn}" # # Add prefixes and suffixes (extensions) to the base file names. @@ -348,6 +365,7 @@ settings="\ # Ensemble and member-specific information. # 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'ensmem_name': '${ensmem_name:-}' 'time_lag': '${time_lag:-}' # # Field information. 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 15c2e34a56..c8cb4d9cac 100755 --- a/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh @@ -177,21 +177,15 @@ if [ "${grid_or_point}" = "grid" ]; then esac OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_INPUT_FN_TEMPLATE} ) fi -# Keep for when splitting GenEnsProd from EnsembleStat. -# FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/gen_ens_prod" -# FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) - FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/EnsembleStat" - FCST_INPUT_FN_TEMPLATE=$( eval echo 'ensemble_stat_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc' ) + 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' ) elif [ "${grid_or_point}" = "point" ]; then OBS_INPUT_DIR="${vx_output_basedir}/metprd/Pb2nc_obs" OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) -# Keep for when splitting GenEnsProd from EnsembleStat. -# FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/gen_ens_prod" -# FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) - FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/EnsembleStat" - FCST_INPUT_FN_TEMPLATE=$( eval echo 'ensemble_stat_${VX_FCST_MODEL_NAME}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc' ) + 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}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) fi @@ -212,7 +206,8 @@ set_vx_fhr_list \ accum_hh="${ACCUM_HH}" \ base_dir="${OBS_INPUT_DIR}" \ fn_template="${OBS_INPUT_FN_TEMPLATE}" \ - check_hourly_files="FALSE" \ + check_accum_contrib_files="FALSE" \ + num_missing_files_max="${NUM_MISSING_OBS_FILES_MAX}" \ outvarname_fhr_list="FHR_LIST" # #----------------------------------------------------------------------- @@ -334,6 +329,7 @@ settings="\ # Ensemble and member-specific information. # 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'ensmem_name': '${ensmem_name:-}' 'time_lag': '${time_lag:-}' # # Field information. 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 fb33760892..473a17dcf5 100755 --- a/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh @@ -136,21 +136,15 @@ if [ "${grid_or_point}" = "grid" ]; then esac OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_INPUT_FN_TEMPLATE} ) fi -# Keep for when splitting GenEnsProd from EnsembleStat. -# FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/gen_ens_prod" -# FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) - FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/EnsembleStat" - FCST_INPUT_FN_TEMPLATE=$( eval echo 'ensemble_stat_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc' ) + 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' ) elif [ "${grid_or_point}" = "point" ]; then OBS_INPUT_DIR="${vx_output_basedir}/metprd/Pb2nc_obs" OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) -# Keep for when splitting GenEnsProd from EnsembleStat. -# FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/gen_ens_prod" -# FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) - FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/EnsembleStat" - FCST_INPUT_FN_TEMPLATE=$( eval echo 'ensemble_stat_${VX_FCST_MODEL_NAME}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc' ) + 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}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{lead?fmt=%H%M%S}L_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) fi @@ -171,7 +165,8 @@ set_vx_fhr_list \ accum_hh="${ACCUM_HH}" \ base_dir="${OBS_INPUT_DIR}" \ fn_template="${OBS_INPUT_FN_TEMPLATE}" \ - check_hourly_files="FALSE" \ + check_accum_contrib_files="FALSE" \ + num_missing_files_max="${NUM_MISSING_OBS_FILES_MAX}" \ outvarname_fhr_list="FHR_LIST" # #----------------------------------------------------------------------- @@ -296,6 +291,7 @@ settings="\ # Ensemble and member-specific information. # 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'ensmem_name': '${ensmem_name:-}' 'time_lag': '${time_lag:-}' # # Field information. diff --git a/scripts/exregional_run_met_pb2nc_obs.sh b/scripts/exregional_run_met_pb2nc_obs.sh index 528e7743dc..95feb701f4 100755 --- a/scripts/exregional_run_met_pb2nc_obs.sh +++ b/scripts/exregional_run_met_pb2nc_obs.sh @@ -108,16 +108,6 @@ set_vx_params \ #----------------------------------------------------------------------- # vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) -if [ "${RUN_ENVIR}" = "nco" ]; then - if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then - ENSMEM=$( echo ${SLASH_ENSMEM_SUBDIR_OR_NULL} | cut -d"/" -f2 ) - DOT_ENSMEM_OR_NULL=".$ENSMEM" - else - DOT_ENSMEM_OR_NULL="" - fi -else - DOT_ENSMEM_OR_NULL="" -fi OBS_INPUT_DIR="${OBS_DIR}" OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_TEMPLATE} ) @@ -140,7 +130,8 @@ set_vx_fhr_list \ accum_hh="${ACCUM_HH}" \ base_dir="${OBS_INPUT_DIR}" \ fn_template="${OBS_INPUT_FN_TEMPLATE}" \ - check_hourly_files="FALSE" \ + check_accum_contrib_files="FALSE" \ + num_missing_files_max="${NUM_MISSING_OBS_FILES_MAX}" \ outvarname_fhr_list="FHR_LIST" # #----------------------------------------------------------------------- @@ -265,6 +256,7 @@ settings="\ # Ensemble and member-specific information. # 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'ensmem_name': '${ensmem_name:-}' 'time_lag': '${time_lag:-}' # # Field information. diff --git a/scripts/exregional_run_met_pcpcombine.sh b/scripts/exregional_run_met_pcpcombine.sh index 0ff30d270a..a40bece103 100755 --- a/scripts/exregional_run_met_pcpcombine.sh +++ b/scripts/exregional_run_met_pcpcombine.sh @@ -121,10 +121,11 @@ set_vx_params \ # time_lag="0" if [ "${obs_or_fcst}" = "fcst" ]; then - time_lag=$(( (${MEM_INDX_OR_NULL:+${ENS_TIME_LAG_HRS[${MEM_INDX_OR_NULL}-1]}}+0) )) -# Convert to seconds. We do this as a separate step using bc because -# bash's $((...)) arithmetic operator can't handle floats well. - time_lag=$( bc -l <<< "${time_lag}*${SECS_PER_HOUR}" ) + i="0" + if [ "${DO_ENSEMBLE}" = "TRUE" ]; then + i=$( bc -l <<< "${ENSMEM_INDX}-1" ) + fi + time_lag=$( bc -l <<< "${ENS_TIME_LAG_HRS[$i]}*${SECS_PER_HOUR}" ) fi # #----------------------------------------------------------------------- @@ -136,15 +137,30 @@ fi # vx_fcst_input_basedir=$( eval echo "${VX_FCST_INPUT_BASEDIR}" ) vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) +ensmem_indx=$(printf "%0${VX_NDIGITS_ENSMEM_NAMES}d" "${ENSMEM_INDX}") +ensmem_name="mem${ensmem_indx}" if [ "${RUN_ENVIR}" = "nco" ]; then - if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then - ENSMEM=$( echo ${SLASH_ENSMEM_SUBDIR_OR_NULL} | cut -d"/" -f2 ) - DOT_ENSMEM_OR_NULL=".$ENSMEM" + slash_cdate_or_null="" + slash_ensmem_subdir_or_null="" +else + slash_cdate_or_null="/${CDATE}" +# +# Since other aspects of a deterministic run use the "mem000" string (e.g. +# in rocoto workflow task names, in log file names), it seems reasonable +# that a deterministic run create a "mem000" subdirectory under the $CDATE +# directory. But since that is currently not the case in in the run_fcst +# task, we need the following if-statement. If and when such a modification +# is made for the run_fcst task, we would remove this if-statement and +# simply set +# slash_ensmem_subdir_or_null="/${ensmem_name}" +# or, better, just remove this variale and code "/${ensmem_name}" where +# slash_ensmem_subdir_or_null currently appears below. +# + if [ "${DO_ENSEMBLE}" = "TRUE" ]; then + slash_ensmem_subdir_or_null="/${ensmem_name}" else - DOT_ENSMEM_OR_NULL="" + slash_ensmem_subdir_or_null="" fi -else - DOT_ENSMEM_OR_NULL="" fi OBS_INPUT_DIR="" @@ -167,7 +183,7 @@ elif [ "${obs_or_fcst}" = "fcst" ]; then FCST_INPUT_DIR="${vx_fcst_input_basedir}" FCST_INPUT_FN_TEMPLATE=$( eval echo ${FCST_SUBDIR_TEMPLATE:+${FCST_SUBDIR_TEMPLATE}/}${FCST_FN_TEMPLATE} ) - OUTPUT_BASE="${vx_output_basedir}/${CDATE}/mem${ENSMEM_INDX}" + OUTPUT_BASE="${vx_output_basedir}${slash_cdate_or_null}/${slash_ensmem_subdir_or_null}" OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}_fcst" OUTPUT_FN_TEMPLATE=$( eval echo ${FCST_FN_METPROC_TEMPLATE} ) STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" @@ -183,9 +199,11 @@ fi if [ "${obs_or_fcst}" = "obs" ]; then base_dir="${OBS_INPUT_DIR}" fn_template="${OBS_INPUT_FN_TEMPLATE}" + num_missing_files_max="${NUM_MISSING_OBS_FILES_MAX}" elif [ "${obs_or_fcst}" = "fcst" ]; then base_dir="${FCST_INPUT_DIR}" fn_template="${FCST_INPUT_FN_TEMPLATE}" + num_missing_files_max="${NUM_MISSING_FCST_FILES_MAX}" fi set_vx_fhr_list \ @@ -195,7 +213,8 @@ set_vx_fhr_list \ accum_hh="${ACCUM_HH}" \ base_dir="${base_dir}" \ fn_template="${fn_template}" \ - check_hourly_files="TRUE" \ + check_accum_contrib_files="TRUE" \ + num_missing_files_max="${num_missing_files_max}" \ outvarname_fhr_list="FHR_LIST" # #----------------------------------------------------------------------- @@ -252,15 +271,10 @@ fi # #----------------------------------------------------------------------- # -uscore_ensmem_name_or_null="" -if [ "${obs_or_fcst}" = "fcst" ]; then - uscore_ensmem_name_or_null="_mem${ENSMEM_INDX}" -fi -# # First, set the base file names. # metplus_config_tmpl_fn="${metplus_tool_name}_${obs_or_fcst}" -metplus_config_fn="${metplus_config_tmpl_fn}_${FIELDNAME_IN_MET_FILEDIR_NAMES}${uscore_ensmem_name_or_null}" +metplus_config_fn="${metplus_config_tmpl_fn}_${FIELDNAME_IN_MET_FILEDIR_NAMES}${ENSMEM_INDX:+_${ensmem_name}}" metplus_log_fn="${metplus_config_fn}_$CDATE" # # If operating on observation files, append the cycle date to the name @@ -318,6 +332,7 @@ settings="\ # Ensemble and member-specific information. # 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'ensmem_name': '${ensmem_name:-}' 'time_lag': '${time_lag:-}' # # Field information. diff --git a/tests/WE2E/machine_suites/comprehensive b/tests/WE2E/machine_suites/comprehensive index 07ea344271..ce5baaff91 100644 --- a/tests/WE2E/machine_suites/comprehensive +++ b/tests/WE2E/machine_suites/comprehensive @@ -55,6 +55,8 @@ grid_SUBCONUS_Ind_3km_ics_NAM_lbcs_NAM_suite_GFS_v16 grid_SUBCONUS_Ind_3km_ics_RAP_lbcs_RAP_suite_RRFS_v1beta_plot GST_release_public_v1 MET_verification_only_vx +MET_ensemble_verification_only_vx +MET_ensemble_verification_only_vx_time_lag nco nco_ensemble nco_grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16 diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_HRRR.yaml b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_HRRR.yaml index 2d2ee706a1..41da098f00 100644 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_HRRR.yaml +++ b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_HRRR.yaml @@ -17,7 +17,7 @@ workflow: PREEXISTING_DIR_METHOD: rename rocoto: tasks: - taskgroups: '{{ ["parm/wflow/prep.yaml", "parm/wflow/coldstart.yaml", "parm/wflow/post.yaml", "parm/wflow/verify.yaml"]|include }}' + taskgroups: '{{ ["parm/wflow/prep.yaml", "parm/wflow/coldstart.yaml", "parm/wflow/post.yaml", "parm/wflow/verify_pre.yaml", "parm/wflow/verify_det.yaml"]|include }}' metatask_run_ensemble: task_run_fcst_mem#mem#: walltime: 01:00:00 diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_GFS_v16.yaml b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_GFS_v16.yaml index 9ec3925c59..25099ce9b8 100644 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_GFS_v16.yaml +++ b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_GFS_v16.yaml @@ -16,10 +16,13 @@ workflow: PREEXISTING_DIR_METHOD: rename rocoto: tasks: - taskgroups: '{{ ["parm/wflow/prep.yaml", "parm/wflow/coldstart.yaml", "parm/wflow/post.yaml", "parm/wflow/verify.yaml", "parm/wflow/verify_ensgrid.yaml"]|include }}' + taskgroups: '{{ ["parm/wflow/prep.yaml", "parm/wflow/coldstart.yaml", "parm/wflow/post.yaml", "parm/wflow/verify_pre.yaml", "parm/wflow/verify_det.yaml", "parm/wflow/verify_ens.yaml"]|include }}' metatask_run_ensemble: task_run_fcst_mem#mem#: walltime: 01:00:00 + task_get_obs_ccpa: + task_get_obs_mrms: + task_get_obs_ndas: task_get_extrn_ics: EXTRN_MDL_NAME_ICS: NAM USE_USER_STAGED_EXTRN_FILES: true @@ -32,4 +35,3 @@ global: NUM_ENS_MEMBERS: 2 verification: VX_FCST_MODEL_NAME: FV3_GFS_v15p2_CONUS_25km - diff --git a/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx.yaml b/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx.yaml index 0c545761ab..ff7b05a906 100644 --- a/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx.yaml +++ b/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx.yaml @@ -17,45 +17,10 @@ workflow: rocoto: tasks: - taskgroups: '{{ ["parm/wflow/verify.yaml", "parm/wflow/verify_ensgrid.yaml"]|include }}' + taskgroups: '{{ ["parm/wflow/verify_pre.yaml", "parm/wflow/verify_det.yaml", "parm/wflow/verify_ens.yaml"]|include }}' task_get_obs_ccpa: task_get_obs_mrms: task_get_obs_ndas: - metatask_vx_ens_member: - metatask_GridStat_MRMS_mem#mem#: - task_run_MET_GridStat_vx_#VAR#_mem#mem#: - dependency: - metatask_PointStat_mem#mem#: - task_run_MET_PointStat_vx_#VAR#_mem#mem#: - dependency: - and: - or_do_post: - or_get_obs: - - metatask_GridStat_APCP_acc: - metatask_vx_ens_member_acc: - task_run_MET_PcpCombine_fcst_APCP#ACCUM_HR#h_mem#mem#: - dependency: - metatask_EnsembleStat_acc: - task_run_MET_GridStat_vx_ensprob_#VAR#: - dependency: - task_run_MET_EnsembleStat_vx_APCP#ACCUM_HR#h: - dependency: - and: - metataskdep: - attrs: - metatask: GridStat_APCP_acc - metatask_EnsembleStat: - task_run_MET_EnsembleStat_vx_#VAR#: - dependency: - metatask_EnsembleStat_point: - task_run_MET_EnsembleStat_vx_#VAR#: - dependency: - and: - metataskdep: - taskdep: - attrs: - task: run_MET_Pb2nc_obs global: DO_ENSEMBLE: true diff --git a/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx_time_lag.yaml b/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx_time_lag.yaml new file mode 100644 index 0000000000..d4a95812bb --- /dev/null +++ b/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx_time_lag.yaml @@ -0,0 +1,43 @@ +metadata: + description: |- + This test is to ensure that the workflow running in community mode can + successfully run both the MET deterministic and ensemble verification + tasks using staged observation and forecast files (i.e. with other tasks + such as pre-processing, forecast, and post-processing deactivated) AND + assuming one of the ensemble members is time-lagged. + +user: + RUN_ENVIR: community + +workflow: + PREDEF_GRID_NAME: RRFS_CONUS_3km + DATE_FIRST_CYCL: '2021050500' + DATE_LAST_CYCL: '2021050500' + FCST_LEN_HRS: 6 + PREEXISTING_DIR_METHOD: rename + +rocoto: + tasks: + taskgroups: '{{ ["parm/wflow/verify_pre.yaml", "parm/wflow/verify_det.yaml", "parm/wflow/verify_ens.yaml"]|include }}' + task_get_obs_ccpa: + task_get_obs_mrms: + task_get_obs_ndas: + +nco: + NET: 'RRFSE_CONUS' + +global: + DO_ENSEMBLE: true + NUM_ENS_MEMBERS: 2 + ENS_TIME_LAG_HRS: '[ 0, 12 ]' + +platform: + CCPA_OBS_DIR: '/scratch2/BMC/fv3lam/ens_design_RRFS/obs_data/ccpa/proc' + MRMS_OBS_DIR: '/scratch2/BMC/fv3lam/ens_design_RRFS/obs_data/mrms/proc' + NDAS_OBS_DIR: '/scratch2/BMC/fv3lam/ens_design_RRFS/obs_data/ndas/proc' + +verification: + VX_FCST_MODEL_NAME: FV3_GFS_v15p2_CONUS_25km + VX_FCST_INPUT_BASEDIR: '{{ platform.get("TEST_VX_FCST_INPUT_BASEDIR") }}' + VX_NDIGITS_ENSMEM_NAMES: 1 + FCST_FN_TEMPLATE: '${NET}.t{init?fmt=%H?shift=-${time_lag}}z{% if user.RUN_ENVIR == "nco" and global.DO_ENSEMBLE %}.${ensmem_name}{% endif %}.bgdawpf{lead?fmt=%HHH?shift=${time_lag}}.tm00.grib2' diff --git a/tests/WE2E/test_configs/verification/config.MET_verification_only_vx.yaml b/tests/WE2E/test_configs/verification/config.MET_verification_only_vx.yaml index 57d1ca3d53..1fc04a622a 100644 --- a/tests/WE2E/test_configs/verification/config.MET_verification_only_vx.yaml +++ b/tests/WE2E/test_configs/verification/config.MET_verification_only_vx.yaml @@ -21,26 +21,11 @@ workflow: # It also assumes staged observations, so turn off those tasks. rocoto: tasks: - taskgroups: '{{ ["parm/wflow/verify.yaml"]|include }}' + taskgroups: '{{ ["parm/wflow/verify_pre.yaml", "parm/wflow/verify_det.yaml"]|include }}' task_get_obs_ccpa: task_get_obs_mrms: task_get_obs_ndas: - metatask_vx_ens_member: - metatask_GridStat_MRMS_mem#mem#: - task_run_MET_GridStat_vx_#VAR#_mem#mem#: - dependency: - metatask_PointStat_mem#mem#: - task_run_MET_PointStat_vx_#VAR#_mem#mem#: - dependency: - and: - or_do_post: - or_get_obs: - metatask_GridStat_APCP_acc: - metatask_vx_ens_member_acc: - task_run_MET_PcpCombine_fcst_APCP#ACCUM_HR#h_mem#mem#: - dependency: verification: VX_FCST_MODEL_NAME: FV3_GFS_v15p2_CONUS_25km VX_FCST_INPUT_BASEDIR: '{{ platform.get("TEST_VX_FCST_INPUT_BASEDIR") }}' - diff --git a/ush/bash_utils/eval_METplus_timestr_tmpl.sh b/ush/bash_utils/eval_METplus_timestr_tmpl.sh index 0f5db76153..245369509b 100644 --- a/ush/bash_utils/eval_METplus_timestr_tmpl.sh +++ b/ush/bash_utils/eval_METplus_timestr_tmpl.sh @@ -185,8 +185,10 @@ METplus time string template passed to this function is: METplus_timestr_tmpl = \"${METplus_timestr_tmpl}\"" ;; esac - - time_shift_str=$(( ${METplus_time_shift} + 0 ))" seconds" +# +# Calculate the time shift as an integer in units of seconds. +# + time_shift_str=$(( $(printf "%.0f" "${METplus_time_shift}") + 0 ))" seconds" # #----------------------------------------------------------------------- # diff --git a/ush/config_defaults.yaml b/ush/config_defaults.yaml index 6df35759e3..0087e85c21 100644 --- a/ush/config_defaults.yaml +++ b/ush/config_defaults.yaml @@ -2295,7 +2295,9 @@ global: # experiment directory # # ENS_TIME_LAG_HRS: - # Time lag (in hours) to use for each ensemble member. + # Time lag (in hours) to use for each ensemble member. For a deterministic + # forecast, this is a one-element array. Default values of array elements + # are zero. # #----------------------------------------------------------------------- # @@ -2303,7 +2305,7 @@ global: NUM_ENS_MEMBERS: 0 ENSMEM_NAMES: '{% for m in range(NUM_ENS_MEMBERS) %}{{ "mem%03d, " % m }}{% endfor %}' FV3_NML_ENSMEM_FPS: '{% for mem in ENSMEM_NAMES %}{{ [EXPTDIR, "%s_%s" % FV3_NML_FN, mem]|path_join }}{% endfor %}' - ENS_TIME_LAG_HRS: '[ {% for m in range(NUM_ENS_MEMBERS) %} 0, {% endfor %} ]' + ENS_TIME_LAG_HRS: '[ {% for m in range([1,NUM_ENS_MEMBERS]|max) %} 0, {% endfor %} ]' # #----------------------------------------------------------------------- # @@ -2430,7 +2432,18 @@ verification: # This is used in forming the names of the verification output files as # well as in the contents of those files. # + # VX_FIELDS: + # The fields or groups of fields on which to run verification. + # + # VX_APCP_ACCUMS_HRS: + # The 2-digit accumulation periods (in units of hours) to consider for + # APCP (accumulated precipitation). If VX_FIELDS contains "APCP", then + # VX_APCP_ACCUMS_HRS must contain at least one element. If not, + # VX_APCP_ACCUMS_HRS will be ignored. + # VX_FCST_MODEL_NAME: '{{ nco.NET }}.{{ task_run_post.POST_OUTPUT_DOMAIN_NAME }}' + VX_FIELDS: [ "APCP", "REFC", "RETOP", "SFC", "UPA" ] + VX_APCP_ACCUMS_HRS: [ 1, 3, 6, 24 ] # # VX_FCST_INPUT_BASEDIR: # Template for top-level directory containing forecast (but not obs) @@ -2443,11 +2456,18 @@ verification: VX_FCST_INPUT_BASEDIR: '{% if user.RUN_ENVIR == "nco" %}$COMOUT/../..{% else %}{{ workflow.EXPTDIR }}{% endif %}' VX_OUTPUT_BASEDIR: '{% if user.RUN_ENVIR == "nco" %}$COMOUT/metout{% else %}{{ workflow.EXPTDIR }}{% endif %}' # + # Number of digits in the ensember member names. This is a configurable + # variable to allow users to change its value (e.g. to go from "mem004" + # to "mem02") when using staged forecast files that do not use the same + # number of digits as the SRW App. + # + VX_NDIGITS_ENSMEM_NAMES: 3 + # # File name and path templates used in the verification tasks. # - FCST_SUBDIR_TEMPLATE: '{% if user.RUN_ENVIR == "nco" %}${NET}.{init?fmt=%Y%m%d?shift=-${time_lag}}/{init?fmt=%H?shift=-${time_lag}}{% else %}{init?fmt=%Y%m%d%H?shift=-${time_lag}}${SLASH_ENSMEM_SUBDIR_OR_NULL}/postprd{% endif %}' - FCST_FN_TEMPLATE: '${NET}.t{init?fmt=%H?shift=-${time_lag}}z{% if user.RUN_ENVIR == "nco" %}${DOT_ENSMEM_OR_NULL}{% endif %}.prslev.f{lead?fmt=%HHH?shift=${time_lag}}.${POST_OUTPUT_DOMAIN_NAME}.grib2' - FCST_FN_METPROC_TEMPLATE: '${NET}.t{init?fmt=%H}z{% if user.RUN_ENVIR == "nco" %}${DOT_ENSMEM_OR_NULL}{% endif %}.prslev.f{lead?fmt=%HHH}.${POST_OUTPUT_DOMAIN_NAME}_a${ACCUM_HH}h.nc' + FCST_SUBDIR_TEMPLATE: '{% if user.RUN_ENVIR == "nco" %}${NET}.{init?fmt=%Y%m%d?shift=-${time_lag}}/{init?fmt=%H?shift=-${time_lag}}{% else %}{init?fmt=%Y%m%d%H?shift=-${time_lag}}{% if global.DO_ENSEMBLE %}/${ensmem_name}{% endif %}/postprd{% endif %}' + FCST_FN_TEMPLATE: '${NET}.t{init?fmt=%H?shift=-${time_lag}}z{% if user.RUN_ENVIR == "nco" and global.DO_ENSEMBLE %}.${ensmem_name}{% endif %}.prslev.f{lead?fmt=%HHH?shift=${time_lag}}.${POST_OUTPUT_DOMAIN_NAME}.grib2' + FCST_FN_METPROC_TEMPLATE: '${NET}.t{init?fmt=%H}z{% if user.RUN_ENVIR == "nco" and global.DO_ENSEMBLE %}.${ensmem_name}{% endif %}.prslev.f{lead?fmt=%HHH}.${POST_OUTPUT_DOMAIN_NAME}_a${ACCUM_HH}h.nc' # # For verification tasks that need observational data, this specifies # the maximum number of observation files that may be missing. If more @@ -2461,6 +2481,13 @@ verification: # number missing divided by the number that are expected to exist). # NUM_MISSING_OBS_FILES_MAX: 2 + # + # For verification tasks that need forecast data, this specifies the + # maximum number of post-processed forecast files that may be missing. + # If more than this number are missing, the verification task will not + # be run. + # + NUM_MISSING_FCST_FILES_MAX: 0 #---------------------------- # CPL_AQM config parameters diff --git a/ush/get_met_metplus_tool_name.sh b/ush/get_met_metplus_tool_name.sh index 9ecadfbcb8..3802ded893 100644 --- a/ush/get_met_metplus_tool_name.sh +++ b/ush/get_met_metplus_tool_name.sh @@ -65,8 +65,8 @@ function get_met_metplus_tool_name() { # generic_tool_name=${generic_tool_name,,} valid_vals_generic_tool_name=( \ - "PB2NC" "PCPCOMBINE" "GRIDSTAT" "POINTSTAT" "ENSEMBLESTAT" \ - "pb2nc" "pcpcombine" "gridstat" "pointstat" "ensemblestat" \ + "PB2NC" "PCPCOMBINE" "GRIDSTAT" "POINTSTAT" "GENENSPROD" "ENSEMBLESTAT" \ + "pb2nc" "pcpcombine" "gridstat" "pointstat" "genensprod" "ensemblestat" \ ) check_var_valid_value "generic_tool_name" "valid_vals_generic_tool_name" @@ -87,6 +87,10 @@ function get_met_metplus_tool_name() { _met_tool_name_="point_stat" _metplus_tool_name_="PointStat" ;; + "genensprod") + _met_tool_name_="gen_ens_prod" + _metplus_tool_name_="GenEnsProd" + ;; "ensemblestat") _met_tool_name_="ensemble_stat" _metplus_tool_name_="EnsembleStat" diff --git a/ush/set_vx_fhr_list.sh b/ush/set_vx_fhr_list.sh index d3403d09f2..490c7f5374 100644 --- a/ush/set_vx_fhr_list.sh +++ b/ush/set_vx_fhr_list.sh @@ -54,7 +54,8 @@ function set_vx_fhr_list() { "accum_hh" \ "base_dir" \ "fn_template" \ - "check_hourly_files" \ + "check_accum_contrib_files" \ + "num_missing_files_max" \ "outvarname_fhr_list" \ ) process_args valid_args "$@" @@ -105,19 +106,19 @@ function set_vx_fhr_list() { fhr_int="${accum_hh}" ;; "REFC") - fhr_min="01" + fhr_min="00" fhr_int="01" ;; "RETOP") - fhr_min="01" + fhr_min="00" fhr_int="01" ;; "SFC") - fhr_min="01" + fhr_min="00" fhr_int="01" ;; "UPA") - fhr_min="06" + fhr_min="00" fhr_int="06" ;; *) @@ -153,7 +154,7 @@ is: fhr_orig="${fhr_array[$i]}" - if [ "${check_hourly_files}" = "TRUE" ]; then + if [ "${check_accum_contrib_files}" = "TRUE" ]; then fhr=$(( ${fhr_orig} - ${accum_hh} + 1 )) num_back_hrs=${accum_hh} else @@ -165,6 +166,9 @@ is: for (( j=0; j<${num_back_hrs}; j++ )); do # # Use the provided template to set the name of/relative path to the file +# Note that the while-loop below is over all METplus time string templates +# of the form {...} in the template fn_template; it continues until all +# such templates have been evaluated to actual time strings. # fn="${fn_template}" regex_search_tmpl="(.*)(\{.*\})(.*)" @@ -247,18 +251,18 @@ Final (i.e. after filtering for missing files) set of foreast hours is # #----------------------------------------------------------------------- # -# If the number of missing files is greater than the user-specified -# variable NUM_MISSING_OBS_FILES_MAX, print out an error message and +# If the number of missing files is greater than the maximum allowed +# (specified by num_missing_files_max), print out an error message and # exit. # #----------------------------------------------------------------------- # - if [ "${num_missing_files}" -gt "${NUM_MISSING_OBS_FILES_MAX}" ]; then + if [ "${num_missing_files}" -gt "${num_missing_files_max}" ]; then print_err_msg_exit "\ The number of missing files (num_missing_files) is greater than the -maximum allowed number (NUM_MISSING_OBS_FILES_MAX): +maximum allowed number (num_missing_files_max): num_missing_files = ${num_missing_files} - NUM_MISSING_OBS_FILES_MAX = ${NUM_MISSING_OBS_FILES_MAX}" + num_missing_files_max = ${num_missing_files_max}" fi # #----------------------------------------------------------------------- diff --git a/ush/setup.py b/ush/setup.py index 002ccbf2df..6d387c0374 100644 --- a/ush/setup.py +++ b/ush/setup.py @@ -540,6 +540,58 @@ def remove_tag(tasks, tag): post_meta = rocoto_tasks.get("metatask_run_ens_post", {}) post_meta.pop("metatask_run_sub_hourly_post", None) post_meta.pop("metatask_sub_hourly_last_hour_post", None) + # + # ----------------------------------------------------------------------- + # + # Remove all verification [meta]tasks for which no fields are specified. + # + # ----------------------------------------------------------------------- + # + vx_fields_all = {} + vx_metatasks_all = {} + + vx_fields_all["CCPA"] = ["APCP"] + vx_metatasks_all["CCPA"] = ["metatask_PcpCombine_obs", + "metatask_PcpCombine_fcst_all_accums_all_mems", + "metatask_GridStat_CCPA_all_accums_all_mems", + "metatask_GenEnsProd_EnsembleStat_CCPA", + "metatask_GridStat_CCPA_ensmeanprob_all_accums"] + + vx_fields_all["MRMS"] = ["REFC", "RETOP"] + vx_metatasks_all["MRMS"] = ["metatask_GridStat_MRMS_all_mems", + "metatask_GenEnsProd_EnsembleStat_MRMS", + "metatask_GridStat_MRMS_ensprob"] + + vx_fields_all["NDAS"] = ["SFC", "UPA"] + vx_metatasks_all["NDAS"] = ["task_run_MET_Pb2nc_obs", + "metatask_PointStat_NDAS_all_mems", + "metatask_GenEnsProd_EnsembleStat_NDAS", + "metatask_PointStat_NDAS_ensmeanprob"] + + # Get the vx fields specified in the experiment configuration. + vx_fields_config = expt_config["verification"]["VX_FIELDS"] + + # If there are no vx fields specified, remove those tasks that are necessary + # for all observation types. + if not vx_fields_config: + metatask = "metatask_check_post_output_all_mems" + rocoto_config['tasks'].pop(metatask) + + # If for a given obstype no fields are specified, remove all vx metatasks + # for that obstype. + for obstype in vx_fields_all: + vx_fields_obstype = [field for field in vx_fields_config if field in vx_fields_all[obstype]] + if not vx_fields_obstype: + for metatask in vx_metatasks_all[obstype]: + if metatask in rocoto_config['tasks']: + logging.info(dedent( + f""" + Removing verification [meta]task + "{metatask}" + from workflow since no fields belonging to observation type "{obstype}" + are specified for verification.""" + )) + rocoto_config['tasks'].pop(metatask) # # ----------------------------------------------------------------------- @@ -1235,25 +1287,35 @@ def get_location(xcs, fmt, expt_cfg): # # ----------------------------------------------------------------------- # - + # Get list of all top-level tasks and metatasks in the workflow. task_defs = rocoto_config.get('tasks') + all_tasks = [task for task in task_defs] - # Ensemble verification can only be run in ensemble mode - do_ensemble = global_sect["DO_ENSEMBLE"] + # Get list of all valid top-level tasks and metatasks pertaining to ensemble + # verification. + ens_vx_task_defns = load_config_file( + os.path.join(USHdir, os.pardir, "parm", "wflow", "verify_ens.yaml")) + ens_vx_valid_tasks = [task for task in ens_vx_task_defns] + # Get list of all valid top-level tasks and metatasks in the workflow that + # pertain to ensemble verification. + ens_vx_tasks = [task for task in ens_vx_valid_tasks if task in all_tasks] - # Gather all the tasks/metatasks that are defined for verifying - # ensembles - ens_vx_tasks = [task for task in task_defs if "MET_GridStat_vx_ens" in task] + # Get the value of the configuration flag for ensemble mode (DO_ENSEMBLE) + # and ensure that it is set to True if ensemble vx tasks are included in + # the workflow (or vice-versa). + do_ensemble = global_sect["DO_ENSEMBLE"] if (not do_ensemble) and ens_vx_tasks: - task_str = "\n".join(ens_vx_tasks) - raise Exception( - f''' - Ensemble verification can not be run unless running in ensemble mode: - DO_ENSEMBLE = \"{do_ensemble}\" - Ensemble verification tasks: {task_str} - ''' - ) + task_str = " " + "\n ".join(ens_vx_tasks) + msg = dedent(f""" + Ensemble verification can not be run unless running in ensemble mode: + DO_ENSEMBLE = \"{do_ensemble}\" + Ensemble verification tasks: + """) + msg = "".join([msg, task_str, dedent(f""" + Please set DO_ENSEMBLE to True or remove ensemble vx tasks from the + workflow.""")]) + raise Exception(msg) # # ----------------------------------------------------------------------- @@ -1530,13 +1592,25 @@ def dict_find(user_dict, substring): if v is None or v == "": continue vkey = "valid_vals_" + k - if (vkey in cfg_v) and not (v in cfg_v[vkey]): - raise Exception( - f""" - The variable {k}={v} in the user's configuration - does not have a valid value. Possible values are: - {k} = {cfg_v[vkey]}""" - ) + if (vkey in cfg_v): + if (type(v) == list): + if not(all(ele in cfg_v[vkey] for ele in v)): + raise Exception( + dedent(f""" + The variable + {k} = {v} + in the user's configuration has at least one invalid value. Possible values are: + {k} = {cfg_v[vkey]}""" + )) + else: + if not (v in cfg_v[vkey]): + raise Exception( + dedent(f""" + The variable + {k} = {v} + in the user's configuration does not have a valid value. Possible values are: + {k} = {cfg_v[vkey]}""" + )) return expt_config diff --git a/ush/valid_param_vals.yaml b/ush/valid_param_vals.yaml index 98fbfd09d9..f839dcb858 100644 --- a/ush/valid_param_vals.yaml +++ b/ush/valid_param_vals.yaml @@ -86,3 +86,5 @@ valid_vals_DO_AQM_GEFS_LBCS: [True, False] valid_vals_DO_AQM_SAVE_AIRNOW_HIST: [True, False] valid_vals_COLDSTART: [True, False] valid_vals_DO_NLDN_LGHT: [True, False] +valid_vals_VX_FIELDS: [ "APCP", "REFC", "RETOP", "SFC", "UPA" ] +valid_vals_VX_APCP_ACCUMS_HRS: [ 1, 3, 6, 24 ]