diff --git a/jobs/JREGIONAL_RUN_VX_ENSGRID b/jobs/JREGIONAL_RUN_VX_ENSGRID
new file mode 100755
index 0000000000..9fa88c2f7d
--- /dev/null
+++ b/jobs/JREGIONAL_RUN_VX_ENSGRID
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+#
+#-----------------------------------------------------------------------
+#
+# This script runs METplus for ensemble-stat on the UPP output files by
+# initialization time for all forecast hours for gridded analysis.
+#
+#-----------------------------------------------------------------------
+#
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u -x; } > /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 runs METplus for ensemble-stat
+on gridded fields by initialization time for all forecast hours.
+========================================================================"
+#
+#-----------------------------------------------------------------------
+#
+# Call the ex-script for this J-job and pass to it the necessary varia-
+# bles.
+#
+#-----------------------------------------------------------------------
+#
+$SCRIPTSDIR/exregional_run_ensgridvx.sh \
+ cycle_dir="${CYCLE_DIR}" || \
+print_err_msg_exit "\
+Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed."
+#
+#-----------------------------------------------------------------------
+#
+# Print exit message.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+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/jobs/JREGIONAL_RUN_VX_ENSGRID_MEAN b/jobs/JREGIONAL_RUN_VX_ENSGRID_MEAN
new file mode 100755
index 0000000000..67945ca7b9
--- /dev/null
+++ b/jobs/JREGIONAL_RUN_VX_ENSGRID_MEAN
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+#
+#-----------------------------------------------------------------------
+#
+# This script runs METplus for grid-stat on the UPP output files by
+# initialization time for all forecast hours for gridded analysis.
+#
+#-----------------------------------------------------------------------
+#
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u -x; } > /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 runs METplus for grid-stat
+on gridded fields by initialization time for all forecast hours.
+========================================================================"
+#
+#-----------------------------------------------------------------------
+#
+# Call the ex-script for this J-job and pass to it the necessary varia-
+# bles.
+#
+#-----------------------------------------------------------------------
+#
+$SCRIPTSDIR/exregional_run_ensgridvx_mean.sh \
+ cycle_dir="${CYCLE_DIR}" || \
+print_err_msg_exit "\
+Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed."
+#
+#-----------------------------------------------------------------------
+#
+# Print exit message.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+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/jobs/JREGIONAL_RUN_VX_ENSGRID_PROB b/jobs/JREGIONAL_RUN_VX_ENSGRID_PROB
new file mode 100755
index 0000000000..f792d4b77f
--- /dev/null
+++ b/jobs/JREGIONAL_RUN_VX_ENSGRID_PROB
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+#
+#-----------------------------------------------------------------------
+#
+# This script runs METplus for grid-stat on the UPP output files by
+# initialization time for all forecast hours for gridded analysis.
+#
+#-----------------------------------------------------------------------
+#
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u -x; } > /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 runs METplus for grid-stat
+on gridded fields by initialization time for all forecast hours.
+========================================================================"
+#
+#-----------------------------------------------------------------------
+#
+# Call the ex-script for this J-job and pass to it the necessary varia-
+# bles.
+#
+#-----------------------------------------------------------------------
+#
+$SCRIPTSDIR/exregional_run_ensgridvx_prob.sh \
+ cycle_dir="${CYCLE_DIR}" || \
+print_err_msg_exit "\
+Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed."
+#
+#-----------------------------------------------------------------------
+#
+# Print exit message.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+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/jobs/JREGIONAL_RUN_VX_ENSPOINT b/jobs/JREGIONAL_RUN_VX_ENSPOINT
new file mode 100755
index 0000000000..dac8873a2a
--- /dev/null
+++ b/jobs/JREGIONAL_RUN_VX_ENSPOINT
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+#
+#-----------------------------------------------------------------------
+#
+#
+#-----------------------------------------------------------------------
+#
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u -x; } > /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 runs METplus for point-stat
+by initialitation time for all forecast hours.
+========================================================================"
+#
+#-----------------------------------------------------------------------
+#
+# Call the ex-script for this J-job and pass to it the necessary varia-
+# bles.
+#
+#-----------------------------------------------------------------------
+#
+$SCRIPTSDIR/exregional_run_enspointvx.sh \
+ cycle_dir="${CYCLE_DIR}" || \
+print_err_msg_exit "\
+Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed."
+#
+#-----------------------------------------------------------------------
+#
+# Print exit message.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+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/jobs/JREGIONAL_RUN_VX_ENSPOINT_MEAN b/jobs/JREGIONAL_RUN_VX_ENSPOINT_MEAN
new file mode 100755
index 0000000000..3ae1cb56dc
--- /dev/null
+++ b/jobs/JREGIONAL_RUN_VX_ENSPOINT_MEAN
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+#
+#-----------------------------------------------------------------------
+#
+#
+#-----------------------------------------------------------------------
+#
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u -x; } > /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 runs METplus for point-stat
+by initialitation time for all forecast hours.
+========================================================================"
+#
+#-----------------------------------------------------------------------
+#
+# Call the ex-script for this J-job and pass to it the necessary varia-
+# bles.
+#
+#-----------------------------------------------------------------------
+#
+$SCRIPTSDIR/exregional_run_enspointvx_mean.sh \
+ cycle_dir="${CYCLE_DIR}" || \
+print_err_msg_exit "\
+Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed."
+#
+#-----------------------------------------------------------------------
+#
+# Print exit message.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+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/jobs/JREGIONAL_RUN_VX_ENSPOINT_PROB b/jobs/JREGIONAL_RUN_VX_ENSPOINT_PROB
new file mode 100755
index 0000000000..8810d0bcbc
--- /dev/null
+++ b/jobs/JREGIONAL_RUN_VX_ENSPOINT_PROB
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+#
+#-----------------------------------------------------------------------
+#
+#
+#-----------------------------------------------------------------------
+#
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u -x; } > /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 runs METplus for point-stat
+by initialitation time for all forecast hours.
+========================================================================"
+#
+#-----------------------------------------------------------------------
+#
+# Call the ex-script for this J-job and pass to it the necessary varia-
+# bles.
+#
+#-----------------------------------------------------------------------
+#
+$SCRIPTSDIR/exregional_run_enspointvx_prob.sh \
+ cycle_dir="${CYCLE_DIR}" || \
+print_err_msg_exit "\
+Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed."
+#
+#-----------------------------------------------------------------------
+#
+# Print exit message.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+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/jobs/JREGIONAL_RUN_VX_GRIDSTAT b/jobs/JREGIONAL_RUN_VX_GRIDSTAT
index ca29e2d931..300c79f9c6 100755
--- a/jobs/JREGIONAL_RUN_VX_GRIDSTAT
+++ b/jobs/JREGIONAL_RUN_VX_GRIDSTAT
@@ -57,51 +57,13 @@ by initialization time for all forecast hours.
#
#-----------------------------------------------------------------------
#
-# If it doesn't already exist, create the directory (vx_dir) in
-# which to store grid-stat output.
-#
-# Note that there may be a preexisting version of vx_dir from previous
-# runs of this script (e.g. from the workflow task that runs this script
-# failing and then being called again). Thus, we first make sure
-# preexisting versions are deleted.
-#
-#-----------------------------------------------------------------------
-#
-
-if [ "${RUN_ENVIR}" = "nco" ]; then
- COMOUT="$COMROOT/$NET/$envir/$RUN.$PDY/$cyc"
- postprd_dir="$COMOUT"
-else
- postprd_dir="${CYCLE_DIR}/postprd"
-fi
-mkdir_vrfy -p "${postprd_dir}"
-
-if [ "${RUN_ENVIR}" = "nco" ]; then
- COMOUT="$COMROOT/$NET/$envir/$RUN.$PDY/$cyc"
- vx_dir="$COMOUT"
-else
- vx_dir="${CYCLE_DIR}/metprd"
-fi
-mkdir_vrfy -p "${vx_dir}"
-
-gridstat_dir="${vx_dir}/grid_stat"
-#check_for_preexist_dir "${gridstat_dir}" "delete"
-mkdir_vrfy -p "${gridstat_dir}"
-
-cd_vrfy "${gridstat_dir}"
-#
-#-----------------------------------------------------------------------
-#
# Call the ex-script for this J-job and pass to it the necessary varia-
# bles.
#
#-----------------------------------------------------------------------
#
$SCRIPTSDIR/exregional_run_gridstatvx.sh \
- cycle_dir="${CYCLE_DIR}" \
- postprd_dir="${postprd_dir}" \
- vx_dir="${vx_dir}" \
- gridstat_dir="${gridstat_dir}" || \
+ cycle_dir="${CYCLE_DIR}" || \
print_err_msg_exit "\
Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed."
#
diff --git a/jobs/JREGIONAL_RUN_VX_POINTSTAT b/jobs/JREGIONAL_RUN_VX_POINTSTAT
index f5c35253a2..f67cb55479 100755
--- a/jobs/JREGIONAL_RUN_VX_POINTSTAT
+++ b/jobs/JREGIONAL_RUN_VX_POINTSTAT
@@ -55,51 +55,13 @@ by initialitation time for all forecast hours.
#
#-----------------------------------------------------------------------
#
-# If it doesn't already exist, create the directory (vx_dir) in
-# which to store point-stat output.
-#
-# Note that there may be a preexisting version of vx_dir from previous
-# runs of this script (e.g. from the workflow task that runs this script
-# failing and then being called again). Thus, we first make sure
-# preexisting versions are deleted.
-#
-#-----------------------------------------------------------------------
-#
-
-if [ "${RUN_ENVIR}" = "nco" ]; then
- COMOUT="$COMROOT/$NET/$envir/$RUN.$PDY/$cyc"
- postprd_dir="$COMOUT"
-else
- postprd_dir="${CYCLE_DIR}/postprd"
-fi
-mkdir_vrfy -p "${postprd_dir}"
-
-if [ "${RUN_ENVIR}" = "nco" ]; then
- COMOUT="$COMROOT/$NET/$envir/$RUN.$PDY/$cyc"
- vx_dir="$COMOUT"
-else
- vx_dir="${CYCLE_DIR}/metprd"
-fi
-mkdir_vrfy -p "${vx_dir}"
-
-pointstat_dir="${vx_dir}/point_stat"
-#check_for_preexist_dir "${pointstat_dir}" "delete"
-mkdir_vrfy -p "${pointstat_dir}"
-
-cd_vrfy "${pointstat_dir}"
-#
-#-----------------------------------------------------------------------
-#
# Call the ex-script for this J-job and pass to it the necessary varia-
# bles.
#
#-----------------------------------------------------------------------
#
$SCRIPTSDIR/exregional_run_pointstatvx.sh \
- cycle_dir="${CYCLE_DIR}" \
- postprd_dir="${postprd_dir}" \
- vx_dir="${vx_dir}" \
- pointstat_dir="${pointstat_dir}" || \
+ cycle_dir="${CYCLE_DIR}" || \
print_err_msg_exit "\
Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed."
#
diff --git a/scripts/exregional_get_ccpa_files.sh b/scripts/exregional_get_ccpa_files.sh
index 2354938f1a..3c1504292d 100755
--- a/scripts/exregional_get_ccpa_files.sh
+++ b/scripts/exregional_get_ccpa_files.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# This script reorganizes the CCPA data into a more intuitive structure:
# A valid YYYYMMDD directory is created, and all files for the valid day are placed within the directory.
@@ -150,7 +150,8 @@ while [[ ${current_fcst} -le ${fcst_length} ]]; do
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. After data is pulled, reorganize into correct valid yyyymmdd structure.
+ # One hour CCPA files have incorrect metadeta in the files under the "00" directory from 20180718 to 20210504.
+ # After data is pulled, reorganize into correct valid yyyymmdd structure.
if [[ ${vhh_noZero} -ge 1 && ${vhh_noZero} -le 6 ]]; then
cp $ccpa_raw/${vyyyymmdd}/06/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 $ccpa_proc/${vyyyymmdd}
elif [[ ${vhh_noZero} -ge 7 && ${vhh_noZero} -le 12 ]]; then
@@ -158,9 +159,17 @@ while [[ ${current_fcst} -le ${fcst_length} ]]; do
elif [[ ${vhh_noZero} -ge 13 && ${vhh_noZero} -le 18 ]]; then
cp $ccpa_raw/${vyyyymmdd}/18/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 $ccpa_proc/${vyyyymmdd}
elif [[ ${vhh_noZero} -ge 19 && ${vhh_noZero} -le 23 ]]; then
- wgrib2 $ccpa_raw/${vyyyymmdd_p1}/00/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 -set_date -24hr -grib $ccpa_proc/${vyyyymmdd}/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 -s
+ if [[ ${vyyyymmdd} -ge 20180718 && ${vyyyymmdd} -le 20210504 ]]; then
+ wgrib2 $ccpa_raw/${vyyyymmdd_p1}/00/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 -set_date -24hr -grib $ccpa_proc/${vyyyymmdd}/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 -s
+ else
+ cp $ccpa_raw/${vyyyymmdd_p1}/00/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 $ccpa_proc/${vyyyymmdd}
+ fi
elif [[ ${vhh_noZero} -eq 0 ]]; then
- wgrib2 $ccpa_raw/${vyyyymmdd}/00/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 -set_date -24hr -grib $ccpa_proc/${vyyyymmdd}/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 -s
+ if [[ ${vyyyymmdd} -ge 20180718 && ${vyyyymmdd} -le 20210504 ]]; then
+ wgrib2 $ccpa_raw/${vyyyymmdd}/00/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 -set_date -24hr -grib $ccpa_proc/${vyyyymmdd}/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 -s
+ else
+ cp $ccpa_raw/${vyyyymmdd}/00/ccpa.t${vhh}z.${accum}h.hrap.conus.gb2 $ccpa_proc/${vyyyymmdd}
+ fi
fi
elif [[ ${accum} == "03" ]]; then
diff --git a/scripts/exregional_get_mrms_files.sh b/scripts/exregional_get_mrms_files.sh
index ff09c55462..8819959ecc 100755
--- a/scripts/exregional_get_mrms_files.sh
+++ b/scripts/exregional_get_mrms_files.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
. ${GLOBAL_VAR_DEFNS_FP}
diff --git a/scripts/exregional_get_ndas_files.sh b/scripts/exregional_get_ndas_files.sh
index f79acf77f2..e1ec7f8d68 100755
--- a/scripts/exregional_get_ndas_files.sh
+++ b/scripts/exregional_get_ndas_files.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# This script reorganizes the NDAS data into a more intuitive structure:
# A valid YYYYMMDD directory is created, and all files for the valid day are placed within the directory.
diff --git a/scripts/exregional_run_ensgridvx.sh b/scripts/exregional_run_ensgridvx.sh
new file mode 100755
index 0000000000..ce06547530
--- /dev/null
+++ b/scripts/exregional_run_ensgridvx.sh
@@ -0,0 +1,180 @@
+#!/bin/bash
+set -x
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u +x; } > /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 runs METplus for ensemble-stat on
+the UPP output files by initialization time for all forecast hours for
+gridded data.
+========================================================================"
+
+#
+#-----------------------------------------------------------------------
+#
+# Specify the set of valid argument names for this script/function.
+# Then process the arguments provided to this script/function (which
+# should consist of a set of name-value pairs of the form arg1="value1",
+# etc).
+#
+#-----------------------------------------------------------------------
+#
+valid_args=( "cycle_dir" )
+process_args valid_args "$@"
+#
+#-----------------------------------------------------------------------
+#
+# For debugging purposes, print out values of arguments passed to this
+# script. Note that these will be printed out only if VERBOSE is set to
+# TRUE.
+#
+#-----------------------------------------------------------------------
+#
+print_input_args valid_args
+
+#-----------------------------------------------------------------------
+#
+# Begin grid-to-grid ensemble vx.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "$VERBOSE" "Starting ensemble-stat verification"
+
+#
+#-----------------------------------------------------------------------
+#
+# Get the cycle date and hour (in formats of yyyymmdd and hh, respect-
+# ively) from CDATE. Read in FHR and create a comma-separated list
+# for METplus to run over. Determine the number padding needed based
+# on number of ensemble members.
+#
+#-----------------------------------------------------------------------
+#
+yyyymmdd=${CDATE:0:8}
+hh=${CDATE:8:2}
+cyc=$hh
+export CDATE
+export hh
+
+fhr_last=`echo ${FHR} | awk '{ print $NF }'`
+export fhr_last
+
+fhr_list=`echo ${FHR} | sed "s/ /,/g"`
+export fhr_list
+
+NUM_PAD=${NDIGITS_ENSMEM_NAMES}
+
+#
+#-----------------------------------------------------------------------
+#
+# Create LOG_SUFFIX to read into METplus conf files.
+#
+#-----------------------------------------------------------------------
+#
+
+if [ ${VAR} == "APCP" ]; then
+ LOG_SUFFIX=ensgrid_${CDATE}_${VAR}_${ACCUM}h
+else
+ LOG_SUFFIX=ensgrid_${CDATE}_${VAR}
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Export some environment variables passed in by the XML
+#
+#-----------------------------------------------------------------------
+#
+export SCRIPTSDIR
+export EXPTDIR
+export MET_INSTALL_DIR
+export MET_BIN_EXEC
+export METPLUS_PATH
+export METPLUS_CONF
+export MET_CONFIG
+export MODEL
+export NET
+export NUM_ENS_MEMBERS
+export NUM_PAD
+export LOG_SUFFIX
+
+#
+#-----------------------------------------------------------------------
+#
+# Run METplus
+#
+#-----------------------------------------------------------------------
+#
+if [ ${VAR} == "APCP" ]; then
+ acc="${ACCUM}h" # for stats output prefix in EnsembleStatConfig
+ ${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/EnsembleStat_${VAR}${acc}.conf
+else
+ ${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/EnsembleStat_${VAR}.conf
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Print message indicating successful completion of script.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+METplus ensemble-stat grid completed successfully.
+
+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_run_ensgridvx_mean.sh b/scripts/exregional_run_ensgridvx_mean.sh
new file mode 100755
index 0000000000..1a4d68aa85
--- /dev/null
+++ b/scripts/exregional_run_ensgridvx_mean.sh
@@ -0,0 +1,189 @@
+#!/bin/bash
+set -x
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u +x; } > /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 runs METplus for grid-stat on
+the UPP output files by initialization time for all forecast hours for
+gridded data.
+========================================================================"
+
+#
+#-----------------------------------------------------------------------
+#
+# Specify the set of valid argument names for this script/function.
+# Then process the arguments provided to this script/function (which
+# should consist of a set of name-value pairs of the form arg1="value1",
+# etc).
+#
+#-----------------------------------------------------------------------
+#
+valid_args=( "cycle_dir" )
+process_args valid_args "$@"
+#
+#-----------------------------------------------------------------------
+#
+# For debugging purposes, print out values of arguments passed to this
+# script. Note that these will be printed out only if VERBOSE is set to
+# TRUE.
+#
+#-----------------------------------------------------------------------
+#
+print_input_args valid_args
+
+#-----------------------------------------------------------------------
+#
+# Begin grid-to-grid vx on ensemble output.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "$VERBOSE" "Starting grid-stat verification"
+
+#
+#-----------------------------------------------------------------------
+#
+# Get the cycle date and hour (in formats of yyyymmdd and hh, respect-
+# ively) from CDATE. Also read in FHR and create a comma-separated list
+# for METplus to run over.
+#
+#-----------------------------------------------------------------------
+#
+yyyymmdd=${CDATE:0:8}
+hh=${CDATE:8:2}
+cyc=$hh
+export CDATE
+export hh
+
+fhr_last=`echo ${FHR} | awk '{ print $NF }'`
+export fhr_last
+
+fhr_list=`echo ${FHR} | sed "s/ /,/g"`
+export fhr_list
+
+#
+#-----------------------------------------------------------------------
+#
+# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files.
+#
+#-----------------------------------------------------------------------
+#
+INPUT_BASE=${EXPTDIR}/${CDATE}/metprd/ensemble_stat
+
+if [ ${VAR} == "APCP" ]; then
+ LOG_SUFFIX=ensgrid_mean_${CDATE}_${VAR}_${ACCUM}h
+else
+ LOG_SUFFIX=ensgrid_mean_${CDATE}_${VAR}
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Check for existence of top-level OBS_DIR
+#
+#-----------------------------------------------------------------------
+#
+if [[ ! -d "$OBS_DIR" ]]; then
+ print_err_msg_exit "\
+ Exiting: OBS_DIR does not exist."
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Export some environment variables passed in by the XML
+#
+#-----------------------------------------------------------------------
+#
+export SCRIPTSDIR
+export EXPTDIR
+export MET_INSTALL_DIR
+export MET_BIN_EXEC
+export METPLUS_PATH
+export METPLUS_CONF
+export MET_CONFIG
+export MODEL
+export NET
+export INPUT_BASE
+export LOG_SUFFIX
+
+#
+#-----------------------------------------------------------------------
+#
+# Run METplus
+#
+#-----------------------------------------------------------------------
+#
+if [ ${VAR} == "APCP" ]; then
+ export acc="${ACCUM}h"
+ ${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/GridStat_${VAR}${acc}_mean.conf
+else
+ ${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/GridStat_${VAR}_mean.conf
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Print message indicating successful completion of script.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+METplus grid-stat completed successfully.
+
+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_run_ensgridvx_prob.sh b/scripts/exregional_run_ensgridvx_prob.sh
new file mode 100755
index 0000000000..d0c948e333
--- /dev/null
+++ b/scripts/exregional_run_ensgridvx_prob.sh
@@ -0,0 +1,189 @@
+#!/bin/bash
+set -x
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u +x; } > /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 runs METplus for grid-stat on
+the UPP output files by initialization time for all forecast hours for
+gridded data.
+========================================================================"
+
+#
+#-----------------------------------------------------------------------
+#
+# Specify the set of valid argument names for this script/function.
+# Then process the arguments provided to this script/function (which
+# should consist of a set of name-value pairs of the form arg1="value1",
+# etc).
+#
+#-----------------------------------------------------------------------
+#
+valid_args=( "cycle_dir" )
+process_args valid_args "$@"
+#
+#-----------------------------------------------------------------------
+#
+# For debugging purposes, print out values of arguments passed to this
+# script. Note that these will be printed out only if VERBOSE is set to
+# TRUE.
+#
+#-----------------------------------------------------------------------
+#
+print_input_args valid_args
+
+#-----------------------------------------------------------------------
+#
+# Begin grid-to-grid vx on ensemble output.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "$VERBOSE" "Starting grid-stat verification"
+
+#
+#-----------------------------------------------------------------------
+#
+# Get the cycle date and hour (in formats of yyyymmdd and hh, respect-
+# ively) from CDATE. Also read in FHR and create a comma-separated list
+# for METplus to run over.
+#
+#-----------------------------------------------------------------------
+#
+yyyymmdd=${CDATE:0:8}
+hh=${CDATE:8:2}
+cyc=$hh
+export CDATE
+export hh
+
+fhr_last=`echo ${FHR} | awk '{ print $NF }'`
+export fhr_last
+
+fhr_list=`echo ${FHR} | sed "s/ /,/g"`
+export fhr_list
+
+#
+#-----------------------------------------------------------------------
+#
+# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files.
+#
+#-----------------------------------------------------------------------
+#
+INPUT_BASE=${EXPTDIR}/${CDATE}/metprd/ensemble_stat
+
+if [ ${VAR} == "APCP" ]; then
+ LOG_SUFFIX=ensgrid_prob_${CDATE}_${VAR}_${ACCUM}h
+else
+ LOG_SUFFIX=ensgrid_prob_${CDATE}_${VAR}
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Check for existence of top-level OBS_DIR
+#
+#-----------------------------------------------------------------------
+#
+if [[ ! -d "$OBS_DIR" ]]; then
+ print_err_msg_exit "\
+ Exiting: OBS_DIR does not exist."
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Export some environment variables passed in by the XML
+#
+#-----------------------------------------------------------------------
+#
+export SCRIPTSDIR
+export INPUT_BASE
+export EXPTDIR
+export MET_INSTALL_DIR
+export MET_BIN_EXEC
+export METPLUS_PATH
+export METPLUS_CONF
+export MET_CONFIG
+export MODEL
+export NET
+export LOG_SUFFIX
+
+#
+#-----------------------------------------------------------------------
+#
+# Run METplus
+#
+#-----------------------------------------------------------------------
+#
+if [ ${VAR} == "APCP" ]; then
+ export acc="${ACCUM}h"
+ ${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/GridStat_${VAR}${acc}_prob.conf
+else
+ ${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/GridStat_${VAR}_prob.conf
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Print message indicating successful completion of script.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+METplus grid-stat completed successfully.
+
+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_run_enspointvx.sh b/scripts/exregional_run_enspointvx.sh
new file mode 100755
index 0000000000..67f0017a3b
--- /dev/null
+++ b/scripts/exregional_run_enspointvx.sh
@@ -0,0 +1,170 @@
+#!/bin/bash
+set -x
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u +x; } > /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 runs METplus for point-stat on
+the UPP output files by initialization time for all forecast hours.
+========================================================================"
+
+#
+#-----------------------------------------------------------------------
+#
+# Specify the set of valid argument names for this script/function.
+# Then process the arguments provided to this script/function (which
+# should consist of a set of name-value pairs of the form arg1="value1",
+# etc).
+#
+#-----------------------------------------------------------------------
+#
+valid_args=( "cycle_dir" )
+process_args valid_args "$@"
+#
+#-----------------------------------------------------------------------
+#
+# For debugging purposes, print out values of arguments passed to this
+# script. Note that these will be printed out only if VERBOSE is set to
+# TRUE.
+#
+#-----------------------------------------------------------------------
+#
+print_input_args valid_args
+#-----------------------------------------------------------------------
+#
+# Begin grid-to-point ensemble vx.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "$VERBOSE" "Starting point-based ensemble-stat verification"
+
+#
+#-----------------------------------------------------------------------
+#
+# Get the cycle date and hour (in formats of yyyymmdd and hh, respect-
+# ively) from CDATE. Also read in FHR and create a comma-separated list
+# for METplus to run over.
+#
+#-----------------------------------------------------------------------
+#
+yyyymmdd=${CDATE:0:8}
+hh=${CDATE:8:2}
+cyc=$hh
+export CDATE
+export hh
+
+fhr_last=`echo ${FHR} | awk '{ print $NF }'`
+export fhr_last
+
+fhr_list=`echo ${FHR} | sed "s/ /,/g"`
+export fhr_list
+
+#
+#-----------------------------------------------------------------------
+#
+# Create LOG_SUFFIX to read into METplus conf files.
+#
+#-----------------------------------------------------------------------
+#
+LOG_SUFFIX=enspoint_${CDATE}
+
+#
+#-----------------------------------------------------------------------
+#
+# Check for existence of top-level OBS_DIR
+#
+#-----------------------------------------------------------------------
+#
+if [[ ! -d "$OBS_DIR" ]]; then
+ print_err_msg_exit "\
+ Exiting: OBS_DIR does not exist."
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Export some environment variables passed in by the XML and run METplus
+#
+#-----------------------------------------------------------------------
+#
+export EXPTDIR
+export LOG_SUFFIX
+export MET_INSTALL_DIR
+export MET_BIN_EXEC
+export METPLUS_PATH
+export METPLUS_CONF
+export MET_CONFIG
+export MODEL
+export NET
+export NUM_ENS_MEMBERS
+
+${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/EnsembleStat_conus_sfc.conf
+
+${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/EnsembleStat_upper_air.conf
+
+#
+#-----------------------------------------------------------------------
+#
+# Print message indicating successful completion of script.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+METplus ensemble-stat completed successfully.
+
+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_run_enspointvx_mean.sh b/scripts/exregional_run_enspointvx_mean.sh
new file mode 100755
index 0000000000..ad673428a8
--- /dev/null
+++ b/scripts/exregional_run_enspointvx_mean.sh
@@ -0,0 +1,170 @@
+#!/bin/bash
+set -x
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u +x; } > /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 runs METplus for point-stat on
+the UPP output files by initialization time for all forecast hours.
+========================================================================"
+
+#
+#-----------------------------------------------------------------------
+#
+# Specify the set of valid argument names for this script/function.
+# Then process the arguments provided to this script/function (which
+# should consist of a set of name-value pairs of the form arg1="value1",
+# etc).
+#
+#-----------------------------------------------------------------------
+#
+valid_args=( "cycle_dir" )
+process_args valid_args "$@"
+#
+#-----------------------------------------------------------------------
+#
+# For debugging purposes, print out values of arguments passed to this
+# script. Note that these will be printed out only if VERBOSE is set to
+# TRUE.
+#
+#-----------------------------------------------------------------------
+#
+print_input_args valid_args
+#-----------------------------------------------------------------------
+#
+# Begin grid-to-point vx on ensemble output.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "$VERBOSE" "Starting point-stat verification"
+
+#
+#-----------------------------------------------------------------------
+#
+# Get the cycle date and hour (in formats of yyyymmdd and hh, respect-
+# ively) from CDATE. Also read in FHR and create a comma-separated list
+# for METplus to run over.
+#
+#-----------------------------------------------------------------------
+#
+yyyymmdd=${CDATE:0:8}
+hh=${CDATE:8:2}
+cyc=$hh
+export CDATE
+export hh
+
+fhr_last=`echo ${FHR} | awk '{ print $NF }'`
+export fhr_last
+
+fhr_list=`echo ${FHR} | sed "s/ /,/g"`
+export fhr_list
+
+#
+#-----------------------------------------------------------------------
+#
+# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files.
+#
+#-----------------------------------------------------------------------
+#
+INPUT_BASE=${EXPTDIR}/${CDATE}/metprd/ensemble_stat
+LOG_SUFFIX=enspoint_mean_${CDATE}
+
+#
+#-----------------------------------------------------------------------
+#
+# Check for existence of top-level OBS_DIR
+#
+#-----------------------------------------------------------------------
+#
+if [[ ! -d "$OBS_DIR" ]]; then
+ print_err_msg_exit "\
+ Exiting: OBS_DIR does not exist."
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Export some environment variables passed in by the XML and run METplus
+#
+#-----------------------------------------------------------------------
+#
+export EXPTDIR
+export INPUT_BASE
+export LOG_SUFFIX
+export MET_INSTALL_DIR
+export MET_BIN_EXEC
+export METPLUS_PATH
+export METPLUS_CONF
+export MET_CONFIG
+export MODEL
+export NET
+
+${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/PointStat_conus_sfc_mean.conf
+
+${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/PointStat_upper_air_mean.conf
+#
+#-----------------------------------------------------------------------
+#
+# Print message indicating successful completion of script.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+METplus ensemble-stat completed successfully.
+
+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_run_enspointvx_prob.sh b/scripts/exregional_run_enspointvx_prob.sh
new file mode 100755
index 0000000000..afecf2ff16
--- /dev/null
+++ b/scripts/exregional_run_enspointvx_prob.sh
@@ -0,0 +1,170 @@
+#!/bin/bash
+set -x
+
+#
+#-----------------------------------------------------------------------
+#
+# Source the variable definitions file and the bash utility functions.
+#
+#-----------------------------------------------------------------------
+#
+. ${GLOBAL_VAR_DEFNS_FP}
+. $USHDIR/source_util_funcs.sh
+#
+#-----------------------------------------------------------------------
+#
+# Save current shell options (in a global array). Then set new options
+# for this script/function.
+#
+#-----------------------------------------------------------------------
+#
+{ save_shell_opts; set -u +x; } > /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 runs METplus for point-stat on
+the UPP output files by initialization time for all forecast hours.
+========================================================================"
+
+#
+#-----------------------------------------------------------------------
+#
+# Specify the set of valid argument names for this script/function.
+# Then process the arguments provided to this script/function (which
+# should consist of a set of name-value pairs of the form arg1="value1",
+# etc).
+#
+#-----------------------------------------------------------------------
+#
+valid_args=( "cycle_dir" )
+process_args valid_args "$@"
+#
+#-----------------------------------------------------------------------
+#
+# For debugging purposes, print out values of arguments passed to this
+# script. Note that these will be printed out only if VERBOSE is set to
+# TRUE.
+#
+#-----------------------------------------------------------------------
+#
+print_input_args valid_args
+#-----------------------------------------------------------------------
+#
+# Begin grid-to-point vx on ensemble output.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "$VERBOSE" "Starting point-stat verification"
+
+#
+#-----------------------------------------------------------------------
+#
+# Get the cycle date and hour (in formats of yyyymmdd and hh, respect-
+# ively) from CDATE. Also read in FHR and create a comma-separated list
+# for METplus to run over.
+#
+#-----------------------------------------------------------------------
+#
+yyyymmdd=${CDATE:0:8}
+hh=${CDATE:8:2}
+cyc=$hh
+export CDATE
+export hh
+
+fhr_last=`echo ${FHR} | awk '{ print $NF }'`
+export fhr_last
+
+fhr_list=`echo ${FHR} | sed "s/ /,/g"`
+export fhr_list
+
+#
+#-----------------------------------------------------------------------
+#
+# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files.
+#
+#-----------------------------------------------------------------------
+#
+INPUT_BASE=${EXPTDIR}/${CDATE}/metprd/ensemble_stat
+LOG_SUFFIX=enspoint_prob_${CDATE}
+
+#
+#-----------------------------------------------------------------------
+#
+# Check for existence of top-level OBS_DIR
+#
+#-----------------------------------------------------------------------
+#
+if [[ ! -d "$OBS_DIR" ]]; then
+ print_err_msg_exit "\
+ Exiting: OBS_DIR does not exist."
+fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Export some environment variables passed in by the XML and run METplus
+#
+#-----------------------------------------------------------------------
+#
+export EXPTDIR
+export INPUT_BASE
+export LOG_SUFFIX
+export MET_INSTALL_DIR
+export MET_BIN_EXEC
+export METPLUS_PATH
+export METPLUS_CONF
+export MET_CONFIG
+export MODEL
+export NET
+
+${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/PointStat_conus_sfc_prob.conf
+
+${METPLUS_PATH}/ush/master_metplus.py \
+ -c ${METPLUS_CONF}/common.conf \
+ -c ${METPLUS_CONF}/PointStat_upper_air_prob.conf
+#
+#-----------------------------------------------------------------------
+#
+# Print message indicating successful completion of script.
+#
+#-----------------------------------------------------------------------
+#
+print_info_msg "
+========================================================================
+METplus ensemble-stat completed successfully.
+
+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_run_gridstatvx.sh b/scripts/exregional_run_gridstatvx.sh
index 6b377f8c43..16b641f33f 100755
--- a/scripts/exregional_run_gridstatvx.sh
+++ b/scripts/exregional_run_gridstatvx.sh
@@ -1,4 +1,4 @@
-#!/bin/sh -l
+#!/bin/bash
set -x
#
@@ -57,7 +57,7 @@ the UPP output files by initialization time for all forecast hours.
#
#-----------------------------------------------------------------------
#
-valid_args=( "cycle_dir" "postprd_dir" "vx_dir" "gridstat_dir" )
+valid_args=( "cycle_dir" )
process_args valid_args "$@"
#
#-----------------------------------------------------------------------
@@ -70,16 +70,6 @@ process_args valid_args "$@"
#
print_input_args valid_args
-#-----------------------------------------------------------------------
-#
-# Remove any files from previous runs and stage necessary files in gridstat_dir.
-#
-#-----------------------------------------------------------------------
-#
-print_info_msg "$VERBOSE" "Starting grid-stat verification"
-
-cd ${gridstat_dir}
-
#
#-----------------------------------------------------------------------
#
@@ -101,6 +91,33 @@ export fhr_last
fhr_list=`echo ${FHR} | sed "s/ /,/g"`
export fhr_list
+#
+#-----------------------------------------------------------------------
+#
+# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files.
+#
+#-----------------------------------------------------------------------
+#
+if [[ ${DO_ENSEMBLE} == "FALSE" ]]; then
+ INPUT_BASE=${EXPTDIR}/${CDATE}/postprd
+ OUTPUT_BASE=${EXPTDIR}/${CDATE}
+ if [ ${VAR} == "APCP" ]; then
+ LOG_SUFFIX=gridstat_${CDATE}_${VAR}_${ACCUM}h
+ else
+ LOG_SUFFIX=gridstat_${CDATE}_${VAR}
+ fi
+elif [[ ${DO_ENSEMBLE} == "TRUE" ]]; then
+ INPUT_BASE=${EXPTDIR}/${CDATE}/${SLASH_ENSMEM_SUBDIR}/postprd
+ OUTPUT_BASE=${EXPTDIR}/${CDATE}/${SLASH_ENSMEM_SUBDIR}
+ ENSMEM=`echo ${SLASH_ENSMEM_SUBDIR} | cut -d"/" -f2`
+ MODEL=${MODEL}_${ENSMEM}
+ if [ ${VAR} == "APCP" ]; then
+ LOG_SUFFIX=gridstat_${CDATE}_${ENSMEM}_${VAR}_${ACCUM}h
+ else
+ LOG_SUFFIX=gridstat_${CDATE}_${ENSMEM}_${VAR}
+ fi
+fi
+
#
#-----------------------------------------------------------------------
#
@@ -123,13 +140,14 @@ fi
#
export SCRIPTSDIR
export EXPTDIR
+export INPUT_BASE
+export OUTPUT_BASE
+export LOG_SUFFIX
export MET_INSTALL_DIR
export MET_BIN_EXEC
export METPLUS_PATH
export METPLUS_CONF
export MET_CONFIG
-export OBS_DIR
-export VAR
export MODEL
export NET
@@ -145,16 +163,10 @@ if [ ${VAR} == "APCP" ]; then
${METPLUS_PATH}/ush/master_metplus.py \
-c ${METPLUS_CONF}/common.conf \
-c ${METPLUS_CONF}/${VAR}_${acc}.conf
-elif [ ${VAR} == "REFC" ]; then
- ${METPLUS_PATH}/ush/master_metplus.py \
- -c ${METPLUS_CONF}/common.conf \
- -c ${METPLUS_CONF}/${VAR}.conf
-elif [ ${VAR} == "RETOP" ]; then
+else
${METPLUS_PATH}/ush/master_metplus.py \
-c ${METPLUS_CONF}/common.conf \
-c ${METPLUS_CONF}/${VAR}.conf
-else
- echo "No variable defined"
fi
#
diff --git a/scripts/exregional_run_pointstatvx.sh b/scripts/exregional_run_pointstatvx.sh
index 73572d9a6f..fd68dfca8f 100755
--- a/scripts/exregional_run_pointstatvx.sh
+++ b/scripts/exregional_run_pointstatvx.sh
@@ -1,4 +1,4 @@
-#!/bin/sh -l
+#!/bin/bash
set -x
#
@@ -57,7 +57,7 @@ the UPP output files by initialization time for all forecast hours.
#
#-----------------------------------------------------------------------
#
-valid_args=( "cycle_dir" "postprd_dir" "vx_dir" "pointstat_dir" )
+valid_args=( "cycle_dir" )
process_args valid_args "$@"
#
#-----------------------------------------------------------------------
@@ -69,15 +69,6 @@ process_args valid_args "$@"
#-----------------------------------------------------------------------
#
print_input_args valid_args
-#-----------------------------------------------------------------------
-#
-# Remove any files from previous runs and stage necessary files in pointstat_dir.
-#
-#-----------------------------------------------------------------------
-#
-print_info_msg "$VERBOSE" "Starting point-stat verification"
-
-cd ${pointstat_dir}
#
#-----------------------------------------------------------------------
@@ -100,6 +91,25 @@ export fhr_last
fhr_list=`echo ${FHR} | sed "s/ /,/g"`
export fhr_list
+#
+#-----------------------------------------------------------------------
+#
+# Create INPUT_BASE to read into METplus conf files.
+#
+#-----------------------------------------------------------------------
+#
+if [[ ${DO_ENSEMBLE} == "FALSE" ]]; then
+ INPUT_BASE=${EXPTDIR}/${CDATE}/postprd
+ OUTPUT_BASE=${EXPTDIR}/${CDATE}
+ LOG_SUFFIX=pointstat_${CDATE}
+elif [[ ${DO_ENSEMBLE} == "TRUE" ]]; then
+ INPUT_BASE=${EXPTDIR}/${CDATE}/${SLASH_ENSMEM_SUBDIR}/postprd
+ OUTPUT_BASE=${EXPTDIR}/${CDATE}/${SLASH_ENSMEM_SUBDIR}
+ ENSMEM=`echo ${SLASH_ENSMEM_SUBDIR} | cut -d"/" -f2`
+ MODEL=${MODEL}_${ENSMEM}
+ LOG_SUFFIX=pointstat_${CDATE}_${ENSMEM}
+fi
+
#
#-----------------------------------------------------------------------
#
@@ -120,12 +130,14 @@ fi
#-----------------------------------------------------------------------
#
export EXPTDIR
+export INPUT_BASE
+export OUTPUT_BASE
+export LOG_SUFFIX
export MET_INSTALL_DIR
export MET_BIN_EXEC
export METPLUS_PATH
export METPLUS_CONF
export MET_CONFIG
-export OBS_DIR
export MODEL
export NET
diff --git a/tests/WE2E/run_WE2E_tests.sh b/tests/WE2E/run_WE2E_tests.sh
index 3ca9a2c013..b8eaeec74f 100755
--- a/tests/WE2E/run_WE2E_tests.sh
+++ b/tests/WE2E/run_WE2E_tests.sh
@@ -950,7 +950,6 @@ external model files should be located has not been specified for this
machine (MACHINE):
MACHINE= \"${MACHINE}\""
fi
-
EXTRN_MDL_SOURCE_BASEDIR_ICS="${extrn_mdl_source_basedir}/${EXTRN_MDL_NAME_ICS}"
if [ "${EXTRN_MDL_NAME_ICS}" = "FV3GFS" ] && [ "$MACHINE" = "HERA" ]; then
EXTRN_MDL_SOURCE_BASEDIR_ICS="${EXTRN_MDL_SOURCE_BASEDIR_ICS}/${FV3GFS_FILE_FMT_ICS}"
@@ -1023,7 +1022,9 @@ EXTRN_MDL_FILES_LBCS=( $( printf "\"%s\" " "${EXTRN_MDL_FILES_LBCS[@]}" ))"
#-----------------------------------------------------------------------
#
if [ "${RUN_TASK_VX_GRIDSTAT}" = "TRUE" ] || \
- [ "${RUN_TASK_VX_POINTSTAT}" = "TRUE" ]; then
+ [ "${RUN_TASK_VX_POINTSTAT}" = "TRUE" ] || \
+ [ "${RUN_TASK_VX_ENSGRID}" = "TRUE" ] || \
+ [ "${RUN_TASK_VX_ENSPOINT}" = "TRUE" ]; then
if [ "$MACHINE" = "WCOSS_CRAY" ]; then
met_install_dir="/gpfs/hps3/emc/meso/noscrub/emc.metplus/met/10.0.0"
diff --git a/tests/WE2E/test_configs/wflow_features/config.MET_ensemble_verification.sh b/tests/WE2E/test_configs/wflow_features/config.MET_ensemble_verification.sh
new file mode 100644
index 0000000000..078ce144f9
--- /dev/null
+++ b/tests/WE2E/test_configs/wflow_features/config.MET_ensemble_verification.sh
@@ -0,0 +1,38 @@
+#
+# TEST PURPOSE/DESCRIPTION:
+# ------------------------
+#
+# This test is to ensure that the workflow running in community mode
+# completes successfully with MET verification.
+#
+
+RUN_ENVIR="community"
+PREEXISTING_DIR_METHOD="rename"
+
+PREDEF_GRID_NAME="RRFS_CONUS_25km"
+CCPP_PHYS_SUITE="FV3_GFS_v15p2"
+
+DO_ENSEMBLE="TRUE"
+NUM_ENS_MEMBERS="2"
+
+USE_USER_STAGED_EXTRN_FILES="TRUE"
+
+EXTRN_MDL_NAME_ICS="FV3GFS"
+FV3GFS_FILE_FMT_ICS="grib2"
+EXTRN_MDL_NAME_LBCS="FV3GFS"
+FV3GFS_FILE_FMT_LBCS="grib2"
+
+DATE_FIRST_CYCL="20190615"
+DATE_LAST_CYCL="20190615"
+CYCL_HRS=( "00" )
+
+FCST_LEN_HRS="6"
+LBC_SPEC_INTVL_HRS="6"
+
+MODEL="FV3_GFS_v15p2_CONUS_25km"
+RUN_TASK_VX_GRIDSTAT="TRUE"
+RUN_TASK_VX_POINTSTAT="TRUE"
+RUN_TASK_VX_ENSGRID="TRUE"
+RUN_TASK_VX_ENSPOINT="TRUE"
+
+WTIME_RUN_FCST="01:00:00"
diff --git a/ush/config.community.sh b/ush/config.community.sh
index b0c1f21f1b..70433d5973 100644
--- a/ush/config.community.sh
+++ b/ush/config.community.sh
@@ -11,6 +11,9 @@ PREEXISTING_DIR_METHOD="rename"
PREDEF_GRID_NAME="RRFS_CONUS_25km"
QUILTING="TRUE"
+DO_ENSEMBLE="FALSE"
+NUM_ENS_MEMBERS="2"
+
CCPP_PHYS_SUITE="FV3_GFS_v15p2"
FCST_LEN_HRS="48"
LBC_SPEC_INTVL_HRS="6"
@@ -42,6 +45,8 @@ RUN_TASK_GET_OBS_MRMS="FALSE"
RUN_TASK_GET_OBS_NDAS="FALSE"
RUN_TASK_VX_GRIDSTAT="FALSE"
RUN_TASK_VX_POINTSTAT="FALSE"
+RUN_TASK_VX_ENSGRID="FALSE"
+RUN_TASK_VX_ENSPOINT="FALSE"
#
# Uncomment the following line in order to use user-staged external model
diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh
index 8fb02f5c91..72c758df4a 100644
--- a/ush/config_defaults.sh
+++ b/ush/config_defaults.sh
@@ -648,7 +648,6 @@ NOMADS_file_type="nemsio"
# directory or the cycle directories under it.
#
#-----------------------------------------------------------------------
-#
CCPP_PHYS_SUITE="FV3_GFS_v15p2"
#
#-----------------------------------------------------------------------
@@ -1148,6 +1147,25 @@ VX_GRIDSTAT_03h_TN="run_gridstatvx_03h"
VX_GRIDSTAT_06h_TN="run_gridstatvx_06h"
VX_GRIDSTAT_24h_TN="run_gridstatvx_24h"
VX_POINTSTAT_TN="run_pointstatvx"
+VX_ENSGRID_TN="run_ensgridvx"
+VX_ENSGRID_03h_TN="run_ensgridvx_03h"
+VX_ENSGRID_06h_TN="run_ensgridvx_06h"
+VX_ENSGRID_24h_TN="run_ensgridvx_24h"
+VX_ENSGRID_REFC_TN="run_ensgridvx_refc"
+VX_ENSGRID_RETOP_TN="run_ensgridvx_retop"
+VX_ENSGRID_MEAN_TN="run_ensgridvx_mean"
+VX_ENSGRID_PROB_TN="run_ensgridvx_prob"
+VX_ENSGRID_MEAN_03h_TN="run_ensgridvx_mean_03h"
+VX_ENSGRID_PROB_03h_TN="run_ensgridvx_prob_03h"
+VX_ENSGRID_MEAN_06h_TN="run_ensgridvx_mean_06h"
+VX_ENSGRID_PROB_06h_TN="run_ensgridvx_prob_06h"
+VX_ENSGRID_MEAN_24h_TN="run_ensgridvx_mean_24h"
+VX_ENSGRID_PROB_24h_TN="run_ensgridvx_prob_24h"
+VX_ENSGRID_PROB_REFC_TN="run_ensgridvx_prob_refc"
+VX_ENSGRID_PROB_RETOP_TN="run_ensgridvx_prob_retop"
+VX_ENSPOINT_TN="run_enspointvx"
+VX_ENSPOINT_MEAN_TN="run_enspointvx_mean"
+VX_ENSPOINT_PROB_TN="run_enspointvx_prob"
#
#-----------------------------------------------------------------------
#
@@ -1191,6 +1209,15 @@ VX_POINTSTAT_TN="run_pointstatvx"
# Flag that determines whether the point-stat verification task is to be
# run.
#
+# RUN_TASK_VX_ENSGRID:
+# Flag that determines whether the ensemble-stat verification for gridded
+# data task is to be run.
+#
+# RUN_TASK_VX_ENSPOINT:
+# Flag that determines whether the ensemble point verification task is
+# to be run. If this flag is set, both ensemble-stat point verification
+# and point verification of ensemble-stat output is computed.
+#
#-----------------------------------------------------------------------
#
RUN_TASK_MAKE_GRID="TRUE"
@@ -1213,6 +1240,10 @@ RUN_TASK_GET_OBS_NDAS="FALSE"
RUN_TASK_VX_GRIDSTAT="FALSE"
RUN_TASK_VX_POINTSTAT="FALSE"
+
+RUN_TASK_VX_ENSGRID="FALSE"
+
+RUN_TASK_VX_ENSPOINT="FALSE"
#
#-----------------------------------------------------------------------
#
@@ -1421,6 +1452,12 @@ NNODES_GET_OBS_MRMS="1"
NNODES_GET_OBS_NDAS="1"
NNODES_VX_GRIDSTAT="1"
NNODES_VX_POINTSTAT="1"
+NNODES_VX_ENSGRID="1"
+NNODES_VX_ENSGRID_MEAN="1"
+NNODES_VX_ENSGRID_PROB="1"
+NNODES_VX_ENSPOINT="1"
+NNODES_VX_ENSPOINT_MEAN="1"
+NNODES_VX_ENSPOINT_PROB="1"
#
# Number of MPI processes per node.
#
@@ -1438,6 +1475,12 @@ PPN_GET_OBS_MRMS="1"
PPN_GET_OBS_NDAS="1"
PPN_VX_GRIDSTAT="1"
PPN_VX_POINTSTAT="1"
+PPN_VX_ENSGRID="1"
+PPN_VX_ENSGRID_MEAN="1"
+PPN_VX_ENSGRID_PROB="1"
+PPN_VX_ENSPOINT="1"
+PPN_VX_ENSPOINT_MEAN="1"
+PPN_VX_ENSPOINT_PROB="1"
#
# Walltimes.
#
@@ -1455,6 +1498,12 @@ WTIME_GET_OBS_MRMS="00:45:00"
WTIME_GET_OBS_NDAS="02:00:00"
WTIME_VX_GRIDSTAT="02:00:00"
WTIME_VX_POINTSTAT="01:00:00"
+WTIME_VX_ENSGRID="01:00:00"
+WTIME_VX_ENSGRID_MEAN="01:00:00"
+WTIME_VX_ENSGRID_PROB="01:00:00"
+WTIME_VX_ENSPOINT="01:00:00"
+WTIME_VX_ENSPOINT_MEAN="01:00:00"
+WTIME_VX_ENSPOINT_PROB="01:00:00"
#
# Maximum number of attempts.
#
@@ -1477,6 +1526,25 @@ MAXTRIES_VX_GRIDSTAT_03h="1"
MAXTRIES_VX_GRIDSTAT_06h="1"
MAXTRIES_VX_GRIDSTAT_24h="1"
MAXTRIES_VX_POINTSTAT="1"
+MAXTRIES_VX_ENSGRID="1"
+MAXTRIES_VX_ENSGRID_REFC="1"
+MAXTRIES_VX_ENSGRID_RETOP="1"
+MAXTRIES_VX_ENSGRID_03h="1"
+MAXTRIES_VX_ENSGRID_06h="1"
+MAXTRIES_VX_ENSGRID_24h="1"
+MAXTRIES_VX_ENSGRID_MEAN="1"
+MAXTRIES_VX_ENSGRID_PROB="1"
+MAXTRIES_VX_ENSGRID_MEAN_03h="1"
+MAXTRIES_VX_ENSGRID_PROB_03h="1"
+MAXTRIES_VX_ENSGRID_MEAN_06h="1"
+MAXTRIES_VX_ENSGRID_PROB_06h="1"
+MAXTRIES_VX_ENSGRID_MEAN_24h="1"
+MAXTRIES_VX_ENSGRID_PROB_24h="1"
+MAXTRIES_VX_ENSGRID_PROB_REFC="1"
+MAXTRIES_VX_ENSGRID_PROB_RETOP="1"
+MAXTRIES_VX_ENSPOINT="1"
+MAXTRIES_VX_ENSPOINT_MEAN="1"
+MAXTRIES_VX_ENSPOINT_PROB="1"
#
#-----------------------------------------------------------------------
#
diff --git a/ush/generate_FV3LAM_wflow.sh b/ush/generate_FV3LAM_wflow.sh
index 07aee40365..e5d2f496ed 100755
--- a/ush/generate_FV3LAM_wflow.sh
+++ b/ush/generate_FV3LAM_wflow.sh
@@ -193,6 +193,25 @@ settings="\
'vx_gridstat_06h_tn': ${VX_GRIDSTAT_06h_TN}
'vx_gridstat_24h_tn': ${VX_GRIDSTAT_24h_TN}
'vx_pointstat_tn': ${VX_POINTSTAT_TN}
+ 'vx_ensgrid_tn': ${VX_ENSGRID_TN}
+ 'vx_ensgrid_refc_tn': ${VX_ENSGRID_REFC_TN}
+ 'vx_ensgrid_retop_tn': ${VX_ENSGRID_RETOP_TN}
+ 'vx_ensgrid_03h_tn': ${VX_ENSGRID_03h_TN}
+ 'vx_ensgrid_06h_tn': ${VX_ENSGRID_06h_TN}
+ 'vx_ensgrid_24h_tn': ${VX_ENSGRID_24h_TN}
+ 'vx_ensgrid_mean_tn': ${VX_ENSGRID_MEAN_TN}
+ 'vx_ensgrid_prob_tn': ${VX_ENSGRID_PROB_TN}
+ 'vx_ensgrid_mean_03h_tn': ${VX_ENSGRID_MEAN_03h_TN}
+ 'vx_ensgrid_prob_03h_tn': ${VX_ENSGRID_PROB_03h_TN}
+ 'vx_ensgrid_mean_06h_tn': ${VX_ENSGRID_MEAN_06h_TN}
+ 'vx_ensgrid_prob_06h_tn': ${VX_ENSGRID_PROB_06h_TN}
+ 'vx_ensgrid_mean_24h_tn': ${VX_ENSGRID_MEAN_24h_TN}
+ 'vx_ensgrid_prob_24h_tn': ${VX_ENSGRID_PROB_24h_TN}
+ 'vx_ensgrid_prob_refc_tn': ${VX_ENSGRID_PROB_REFC_TN}
+ 'vx_ensgrid_prob_retop_tn': ${VX_ENSGRID_PROB_RETOP_TN}
+ 'vx_enspoint_tn': ${VX_ENSPOINT_TN}
+ 'vx_enspoint_mean_tn': ${VX_ENSPOINT_MEAN_TN}
+ 'vx_enspoint_prob_tn': ${VX_ENSPOINT_PROB_TN}
#
# Entity used to load the module file for each GET_OBS_* task.
#
@@ -214,6 +233,12 @@ settings="\
'nnodes_get_obs_ndas': ${NNODES_GET_OBS_NDAS}
'nnodes_vx_gridstat': ${NNODES_VX_GRIDSTAT}
'nnodes_vx_pointstat': ${NNODES_VX_POINTSTAT}
+ 'nnodes_vx_ensgrid': ${NNODES_VX_ENSGRID}
+ 'nnodes_vx_ensgrid_mean': ${NNODES_VX_ENSGRID_MEAN}
+ 'nnodes_vx_ensgrid_prob': ${NNODES_VX_ENSGRID_PROB}
+ 'nnodes_vx_enspoint': ${NNODES_VX_ENSPOINT}
+ 'nnodes_vx_enspoint_mean': ${NNODES_VX_ENSPOINT_MEAN}
+ 'nnodes_vx_enspoint_prob': ${NNODES_VX_ENSPOINT_PROB}
#
# Number of cores used for a task
#
@@ -237,6 +262,12 @@ settings="\
'ppn_get_obs_ndas': ${PPN_GET_OBS_NDAS}
'ppn_vx_gridstat': ${PPN_VX_GRIDSTAT}
'ppn_vx_pointstat': ${PPN_VX_POINTSTAT}
+ 'ppn_vx_ensgrid': ${PPN_VX_ENSGRID}
+ 'ppn_vx_ensgrid_mean': ${PPN_VX_ENSGRID_MEAN}
+ 'ppn_vx_ensgrid_prob': ${PPN_VX_ENSGRID_PROB}
+ 'ppn_vx_enspoint': ${PPN_VX_ENSPOINT}
+ 'ppn_vx_enspoint_mean': ${PPN_VX_ENSPOINT_MEAN}
+ 'ppn_vx_enspoint_prob': ${PPN_VX_ENSPOINT_PROB}
#
# Maximum wallclock time for each task.
#
@@ -254,6 +285,12 @@ settings="\
'wtime_get_obs_ndas': ${WTIME_GET_OBS_NDAS}
'wtime_vx_gridstat': ${WTIME_VX_GRIDSTAT}
'wtime_vx_pointstat': ${WTIME_VX_POINTSTAT}
+ 'wtime_vx_ensgrid': ${WTIME_VX_ENSGRID}
+ 'wtime_vx_ensgrid_mean': ${WTIME_VX_ENSGRID_MEAN}
+ 'wtime_vx_ensgrid_prob': ${WTIME_VX_ENSGRID_PROB}
+ 'wtime_vx_enspoint': ${WTIME_VX_ENSPOINT}
+ 'wtime_vx_enspoint_mean': ${WTIME_VX_ENSPOINT_MEAN}
+ 'wtime_vx_enspoint_prob': ${WTIME_VX_ENSPOINT_PROB}
#
# Maximum number of tries for each task.
#
@@ -276,6 +313,25 @@ settings="\
'maxtries_vx_gridstat_06h': ${MAXTRIES_VX_GRIDSTAT_06h}
'maxtries_vx_gridstat_24h': ${MAXTRIES_VX_GRIDSTAT_24h}
'maxtries_vx_pointstat': ${MAXTRIES_VX_POINTSTAT}
+ 'maxtries_vx_ensgrid': ${MAXTRIES_VX_ENSGRID}
+ 'maxtries_vx_ensgrid_refc': ${MAXTRIES_VX_ENSGRID_REFC}
+ 'maxtries_vx_ensgrid_retop': ${MAXTRIES_VX_ENSGRID_RETOP}
+ 'maxtries_vx_ensgrid_03h': ${MAXTRIES_VX_ENSGRID_03h}
+ 'maxtries_vx_ensgrid_06h': ${MAXTRIES_VX_ENSGRID_06h}
+ 'maxtries_vx_ensgrid_24h': ${MAXTRIES_VX_ENSGRID_24h}
+ 'maxtries_vx_ensgrid_mean': ${MAXTRIES_VX_ENSGRID_MEAN}
+ 'maxtries_vx_ensgrid_prob': ${MAXTRIES_VX_ENSGRID_PROB}
+ 'maxtries_vx_ensgrid_mean_03h': ${MAXTRIES_VX_ENSGRID_MEAN_03h}
+ 'maxtries_vx_ensgrid_prob_03h': ${MAXTRIES_VX_ENSGRID_PROB_03h}
+ 'maxtries_vx_ensgrid_mean_06h': ${MAXTRIES_VX_ENSGRID_MEAN_06h}
+ 'maxtries_vx_ensgrid_prob_06h': ${MAXTRIES_VX_ENSGRID_PROB_06h}
+ 'maxtries_vx_ensgrid_mean_24h': ${MAXTRIES_VX_ENSGRID_MEAN_24h}
+ 'maxtries_vx_ensgrid_prob_24h': ${MAXTRIES_VX_ENSGRID_PROB_24h}
+ 'maxtries_vx_ensgrid_prob_refc': ${MAXTRIES_VX_ENSGRID_PROB_REFC}
+ 'maxtries_vx_ensgrid_prob_retop': ${MAXTRIES_VX_ENSGRID_PROB_RETOP}
+ 'maxtries_vx_enspoint': ${MAXTRIES_VX_ENSPOINT}
+ 'maxtries_vx_enspoint_mean': ${MAXTRIES_VX_ENSPOINT_MEAN}
+ 'maxtries_vx_enspoint_prob': ${MAXTRIES_VX_ENSPOINT_PROB}
#
# Flags that specify whether to run the preprocessing or
# verification-related tasks.
@@ -289,6 +345,8 @@ settings="\
'run_task_get_obs_ndas': ${RUN_TASK_GET_OBS_NDAS}
'run_task_vx_gridstat': ${RUN_TASK_VX_GRIDSTAT}
'run_task_vx_pointstat': ${RUN_TASK_VX_POINTSTAT}
+ 'run_task_vx_ensgrid': ${RUN_TASK_VX_ENSGRID}
+ 'run_task_vx_enspoint': ${RUN_TASK_VX_ENSPOINT}
#
# Number of physical cores per node for the current machine.
#
diff --git a/ush/setup.sh b/ush/setup.sh
index ce2dacc61b..bc11c67b40 100755
--- a/ush/setup.sh
+++ b/ush/setup.sh
@@ -290,6 +290,49 @@ elif [ "${RUN_TASK_VX_POINTSTAT}" = "FALSE" ] || \
[ "${RUN_TASK_VX_POINTSTAT}" = "NO" ]; then
RUN_TASK_VX_POINTSTAT="FALSE"
fi
+
+#
+#-----------------------------------------------------------------------
+#
+# Make sure that RUN_TASK_VX_ENSGRID is set to a valid value.
+#
+#-----------------------------------------------------------------------
+#
+check_var_valid_value "RUN_TASK_VX_ENSGRID" "valid_vals_RUN_TASK_VX_ENSGRID"
+#
+# Set RUN_TASK_VX_ENSGRID to either "TRUE" or "FALSE" so we don't have to
+# consider other valid values later on.
+#
+RUN_TASK_VX_ENSGRID=${RUN_TASK_VX_ENSGRID^^}
+if [ "${RUN_TASK_VX_ENSGRID}" = "TRUE" ] || \
+ [ "${RUN_TASK_VX_ENSGRID}" = "YES" ]; then
+ RUN_TASK_VX_ENSGRID="TRUE"
+elif [ "${RUN_TASK_VX_ENSGRID}" = "FALSE" ] || \
+ [ "${RUN_TASK_VX_ENSGRID}" = "NO" ]; then
+ RUN_TASK_VX_ENSGRID="FALSE"
+fi
+
+#
+#
+#-----------------------------------------------------------------------
+#
+# Make sure that RUN_TASK_VX_ENSPOINT is set to a valid value.
+#
+#-----------------------------------------------------------------------
+#
+check_var_valid_value "RUN_TASK_VX_ENSPOINT" "valid_vals_RUN_TASK_VX_ENSPOINT"
+#
+# Set RUN_TASK_VX_ENSPOINT to either "TRUE" or "FALSE" so we don't have to
+# consider other valid values later on.
+#
+RUN_TASK_VX_ENSPOINT=${RUN_TASK_VX_ENSPOINT^^}
+if [ "${RUN_TASK_VX_ENSPOINT}" = "TRUE" ] || \
+ [ "${RUN_TASK_VX_ENSPOINT}" = "YES" ]; then
+ RUN_TASK_VX_ENSPOINT="TRUE"
+elif [ "${RUN_TASK_VX_ENSPOINT}" = "FALSE" ] || \
+ [ "${RUN_TASK_VX_ENSPOINT}" = "NO" ]; then
+ RUN_TASK_VX_ENSPOINT="FALSE"
+fi
#
#-----------------------------------------------------------------------
#
@@ -1723,7 +1766,6 @@ Reset values are:
msg="
When RUN_ENVIR is set to \"nco\", the workflow assumes that pregenerated
orography files already exist in the directory
-
\${FIXLAM_NCO_BASEDIR}/\${PREDEF_GRID_NAME}
where
@@ -1834,6 +1876,26 @@ Reset value is:"
fi
+ if [ "${RUN_TASK_VX_ENSGRID}" = "TRUE" ] || \
+ [ "${RUN_TASK_VX_ENSGRID}" = "FALSE" ]; then
+
+ msg="
+When RUN_ENVIR is set to \"nco\", it is assumed that the verification
+will not be run.
+ RUN_TASK_VX_ENSGRID = \"${RUN_TASK_VX_ENSGRID}\"
+Resetting RUN_TASK_VX_ENSGRID to \"FALSE\"
+Reset value is:"
+
+ RUN_TASK_VX_ENSGRID="FALSE"
+
+ msg="$msg""
+ RUN_TASK_VX_ENSGRID = \"${RUN_TASK_VX_ENSGRID}\"
+"
+
+ print_info_msg "$msg"
+
+ fi
+
#
#-----------------------------------------------------------------------
#
diff --git a/ush/templates/FV3LAM_wflow.xml b/ush/templates/FV3LAM_wflow.xml
index 5198552665..f7e7b94715 100644
--- a/ush/templates/FV3LAM_wflow.xml
+++ b/ush/templates/FV3LAM_wflow.xml
@@ -22,26 +22,45 @@ Parameters needed by the job scheduler.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -666,7 +685,6 @@ the tag to be identical to the ones above for other output times.
************************************************************************
************************************************************************
-->
-
&RSRV_HPSS;
@@ -692,14 +710,6 @@ the tag to be identical to the ones above for other output times.
FHR {% for h in range(0, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
ACCUM01
-
- {%- if write_dopost %}
-
- {%- else %}
-
- {%- endif %}
-
-
{%- endif %}
@@ -708,7 +718,6 @@ the tag to be identical to the ones above for other output times.
************************************************************************
************************************************************************
-->
-
&RSRV_HPSS;
@@ -735,14 +744,6 @@ the tag to be identical to the ones above for other output times.
SCRIPTSDIR&SCRIPTSDIR;
VARREFC RETOP
-
- {%- if write_dopost %}
-
- {%- else %}
-
- {%- endif %}
-
-
{%- endif %}
@@ -751,7 +752,6 @@ the tag to be identical to the ones above for other output times.
************************************************************************
************************************************************************
-->
-
&RSRV_HPSS;
@@ -776,14 +776,6 @@ the tag to be identical to the ones above for other output times.
cyc@H
FHR {% for h in range(0, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
-
- {%- if write_dopost %}
-
- {%- else %}
-
- {%- endif %}
-
-
{%- endif %}
@@ -792,8 +784,7 @@ the tag to be identical to the ones above for other output times.
************************************************************************
************************************************************************
-->
-
-
+
&RSRV_DEFAULT;
&LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_GRIDSTAT"
@@ -801,7 +792,7 @@ the tag to be identical to the ones above for other output times.
{{ wtime_vx_gridstat }}
&NCORES_PER_NODE;
&VX_GRIDSTAT_TN;
- &LOGDIR;/&VX_GRIDSTAT_TN;_@Y@m@d@H.log
+ &LOGDIR;/&VX_GRIDSTAT_TN;{{ uscore_ensmem_name }}_@Y@m@d@H.log
GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
OBS_DIR&CCPA_OBS_DIR;
@@ -812,10 +803,20 @@ the tag to be identical to the ones above for other output times.
FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
VARAPCP
ACCUM01
+ {%- if do_ensemble %}
+ SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
+ {%- endif %}
{%- if run_task_get_obs_ccpa %}
-
+
+
+ {%- if write_dopost %}
+
+ {%- else %}
+
+ {%- endif %}
+
{%- else %}
{%- if write_dopost %}
@@ -833,7 +834,7 @@ the tag to be identical to the ones above for other output times.
************************************************************************
************************************************************************
-->
-
+
&RSRV_DEFAULT;
&LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_GRIDSTAT"
@@ -841,7 +842,7 @@ the tag to be identical to the ones above for other output times.
{{ wtime_vx_gridstat }}
&NCORES_PER_NODE;
&VX_GRIDSTAT_REFC_TN;
- &LOGDIR;/&VX_GRIDSTAT_REFC_TN;_@Y@m@d@H.log
+ &LOGDIR;/&VX_GRIDSTAT_REFC_TN;{{ uscore_ensmem_name }}_@Y@m@d@H.log
GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
OBS_DIR&MRMS_OBS_DIR;
@@ -851,10 +852,20 @@ the tag to be identical to the ones above for other output times.
cyc@H
FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
VARREFC
+ {%- if do_ensemble %}
+ SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
+ {%- endif %}
{%- if run_task_get_obs_mrms %}
-
+
+
+ {%- if write_dopost %}
+
+ {%- else %}
+
+ {%- endif %}
+
{%- else %}
{%- if write_dopost %}
@@ -872,7 +883,7 @@ the tag to be identical to the ones above for other output times.
************************************************************************
************************************************************************
-->
-
+
&RSRV_DEFAULT;
&LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_GRIDSTAT"
@@ -880,7 +891,7 @@ the tag to be identical to the ones above for other output times.
{{ wtime_vx_gridstat }}
&NCORES_PER_NODE;
&VX_GRIDSTAT_RETOP_TN;
- &LOGDIR;/&VX_GRIDSTAT_RETOP_TN;_@Y@m@d@H.log
+ &LOGDIR;/&VX_GRIDSTAT_RETOP_TN;{{ uscore_ensmem_name }}_@Y@m@d@H.log
GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
OBS_DIR&MRMS_OBS_DIR;
@@ -890,10 +901,20 @@ the tag to be identical to the ones above for other output times.
cyc@H
FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
VARRETOP
+ {%- if do_ensemble %}
+ SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
+ {%- endif %}
{%- if run_task_get_obs_mrms %}
-
+
+
+ {%- if write_dopost %}
+
+ {%- else %}
+
+ {%- endif %}
+
{%- else %}
{%- if write_dopost %}
@@ -906,12 +927,12 @@ the tag to be identical to the ones above for other output times.
{%- endif %}
-{%- if run_task_vx_gridstat %}
+{%- if run_task_vx_gridstat and fcst_len_hrs >= 3 %}
-
+
&RSRV_DEFAULT;
&LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_GRIDSTAT"
@@ -919,7 +940,7 @@ the tag to be identical to the ones above for other output times.
{{ wtime_vx_gridstat }}
&NCORES_PER_NODE;
&VX_GRIDSTAT_03h_TN;
- &LOGDIR;/&VX_GRIDSTAT_03h_TN;_@Y@m@d@H.log
+ &LOGDIR;/&VX_GRIDSTAT_03h_TN;{{ uscore_ensmem_name }}_@Y@m@d@H.log
GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
OBS_DIR&CCPA_OBS_DIR;
@@ -930,20 +951,23 @@ the tag to be identical to the ones above for other output times.
FHR {% for h in range(3, fcst_len_hrs+1, 3) %}{{ " %02d" % h }}{% endfor %}
VARAPCP
ACCUM03
+ {%- if do_ensemble %}
+ SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
+ {%- endif %}
-
+
{%- endif %}
-{%- if run_task_vx_gridstat %}
+{%- if run_task_vx_gridstat and fcst_len_hrs >= 6 %}
-
+
&RSRV_DEFAULT;
&LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_GRIDSTAT"
@@ -951,7 +975,7 @@ the tag to be identical to the ones above for other output times.
{{ wtime_vx_gridstat }}
&NCORES_PER_NODE;
&VX_GRIDSTAT_06h_TN;
- &LOGDIR;/&VX_GRIDSTAT_06h_TN;_@Y@m@d@H.log
+ &LOGDIR;/&VX_GRIDSTAT_06h_TN;{{ uscore_ensmem_name }}_@Y@m@d@H.log
GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
OBS_DIR&CCPA_OBS_DIR;
@@ -962,20 +986,23 @@ the tag to be identical to the ones above for other output times.
FHR {% for h in range(6, fcst_len_hrs+1, 6) %}{{ " %02d" % h }}{% endfor %}
VARAPCP
ACCUM06
+ {%- if do_ensemble %}
+ SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
+ {%- endif %}
-
+
{%- endif %}
-{%- if run_task_vx_gridstat %}
+{%- if run_task_vx_gridstat and fcst_len_hrs >= 24 %}
-
+
&RSRV_DEFAULT;
&LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_GRIDSTAT"
@@ -983,7 +1010,7 @@ the tag to be identical to the ones above for other output times.
{{ wtime_vx_gridstat }}
&NCORES_PER_NODE;
&VX_GRIDSTAT_24h_TN;
- &LOGDIR;/&VX_GRIDSTAT_24h_TN;_@Y@m@d@H.log
+ &LOGDIR;/&VX_GRIDSTAT_24h_TN;{{ uscore_ensmem_name }}_@Y@m@d@H.log
GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
OBS_DIR&CCPA_OBS_DIR;
@@ -994,9 +1021,12 @@ the tag to be identical to the ones above for other output times.
FHR {% for h in range(24, fcst_len_hrs+1, 24) %}{{ " %02d" % h }}{% endfor %}
VARAPCP
ACCUM24
+ {%- if do_ensemble %}
+ SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
+ {%- endif %}
-
+
@@ -1007,15 +1037,15 @@ the tag to be identical to the ones above for other output times.
************************************************************************
************************************************************************
-->
-
-
+
&RSRV_DEFAULT;
+
&LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_POINTSTAT"
{{ nnodes_vx_pointstat }}:ppn={{ ppn_vx_pointstat }}
{{ wtime_vx_pointstat }}
&NCORES_PER_NODE;
&VX_POINTSTAT_TN;
- &LOGDIR;/&VX_POINTSTAT_TN;_@Y@m@d@H.log
+ &LOGDIR;/&VX_POINTSTAT_TN;{{ uscore_ensmem_name }}_@Y@m@d@H.log
GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
OBS_DIR&NDAS_OBS_DIR;
@@ -1023,11 +1053,21 @@ the tag to be identical to the ones above for other output times.
CDATE@Y@m@d@H
PDY@Y@m@d
cyc@H
- FHR {%- for h in range(0, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ FHR {% for h in range(0, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ {%- if do_ensemble %}
+ SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
+ {%- endif %}
{%- if run_task_get_obs_ndas %}
-
+
+
+ {%- if write_dopost %}
+
+ {%- else %}
+
+ {%- endif %}
+
{%- else %}
{%- if write_dopost %}
@@ -1038,9 +1078,593 @@ the tag to be identical to the ones above for other output times.
-
{%- endif %}
+
{%- if do_ensemble %}
{%- endif %}
+
+{%- if run_task_vx_ensgrid %}
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID"
+ {{ nnodes_vx_ensgrid }}:ppn={{ ppn_vx_ensgrid }}
+ {{ wtime_vx_ensgrid }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_TN;
+ &LOGDIR;/&VX_ENSGRID_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM01
+
+
+
+
+
+
+
+{%- if fcst_len_hrs >= 3 %}
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID"
+ {{ nnodes_vx_ensgrid }}:ppn={{ ppn_vx_ensgrid }}
+ {{ wtime_vx_ensgrid }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_03h_TN;
+ &LOGDIR;/&VX_ENSGRID_03h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(3, fcst_len_hrs+1, 3) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM03
+
+
+
+
+
+
+{%- endif %}
+{%- if fcst_len_hrs >= 6 %}
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID"
+ {{ nnodes_vx_ensgrid }}:ppn={{ ppn_vx_ensgrid }}
+ {{ wtime_vx_ensgrid }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_06h_TN;
+ &LOGDIR;/&VX_ENSGRID_06h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(6, fcst_len_hrs+1, 6) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM06
+
+
+
+
+
+
+{%- endif %}
+{%- if fcst_len_hrs >= 24 %}
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID"
+ {{ nnodes_vx_ensgrid }}:ppn={{ ppn_vx_ensgrid }}
+ {{ wtime_vx_ensgrid }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_24h_TN;
+ &LOGDIR;/&VX_ENSGRID_24h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(24, fcst_len_hrs+1, 24) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM24
+
+
+
+
+
+
+{%- endif %}
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID"
+ {{ nnodes_vx_ensgrid }}:ppn={{ ppn_vx_ensgrid }}
+ {{ wtime_vx_ensgrid }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_REFC_TN;
+ &LOGDIR;/&VX_ENSGRID_REFC_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&MRMS_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ VARREFC
+
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID"
+ {{ nnodes_vx_ensgrid }}:ppn={{ ppn_vx_ensgrid }}
+ {{ wtime_vx_ensgrid }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_RETOP_TN;
+ &LOGDIR;/&VX_ENSGRID_RETOP_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&MRMS_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ VARRETOP
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_MEAN"
+ {{ nnodes_vx_ensgrid_mean }}:ppn={{ ppn_vx_ensgrid_mean }}
+ {{ wtime_vx_ensgrid_mean }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_MEAN_TN;
+ &LOGDIR;/&VX_ENSGRID_MEAN_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM01
+
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_PROB"
+ {{ nnodes_vx_ensgrid_prob }}:ppn={{ ppn_vx_ensgrid_prob }}
+ {{ wtime_vx_ensgrid_prob }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_PROB_TN;
+ &LOGDIR;/&VX_ENSGRID_PROB_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM01
+
+
+
+
+
+
+{%- if fcst_len_hrs >= 3 %}
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_MEAN"
+ {{ nnodes_vx_ensgrid_mean }}:ppn={{ ppn_vx_ensgrid_mean }}
+ {{ wtime_vx_ensgrid_mean }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_MEAN_03h_TN;
+ &LOGDIR;/&VX_ENSGRID_MEAN_03h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(3, fcst_len_hrs+1, 3) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM03
+
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_PROB"
+ {{ nnodes_vx_ensgrid_prob }}:ppn={{ ppn_vx_ensgrid_prob }}
+ {{ wtime_vx_ensgrid_prob }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_PROB_03h_TN;
+ &LOGDIR;/&VX_ENSGRID_PROB_03h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(3, fcst_len_hrs+1, 3) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM03
+
+
+
+
+
+
+{%- endif %}
+{%- if fcst_len_hrs >= 6 %}
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_MEAN"
+ {{ nnodes_vx_ensgrid_mean }}:ppn={{ ppn_vx_ensgrid_mean }}
+ {{ wtime_vx_ensgrid_mean }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_MEAN_06h_TN;
+ &LOGDIR;/&VX_ENSGRID_MEAN_06h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(6, fcst_len_hrs+1, 6) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM06
+
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_PROB"
+ {{ nnodes_vx_ensgrid_prob }}:ppn={{ ppn_vx_ensgrid_prob }}
+ {{ wtime_vx_ensgrid_prob }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_PROB_06h_TN;
+ &LOGDIR;/&VX_ENSGRID_PROB_06h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(6, fcst_len_hrs+1, 6) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM06
+
+
+
+
+
+
+{%- endif %}
+{%- if fcst_len_hrs >= 24 %}
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_MEAN"
+ {{ nnodes_vx_ensgrid_mean }}:ppn={{ ppn_vx_ensgrid_mean }}
+ {{ wtime_vx_ensgrid_mean }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_MEAN_24h_TN;
+ &LOGDIR;/&VX_ENSGRID_MEAN_24h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(24, fcst_len_hrs+1, 24) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM24
+
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_PROB"
+ {{ nnodes_vx_ensgrid_prob }}:ppn={{ ppn_vx_ensgrid_prob }}
+ {{ wtime_vx_ensgrid_prob }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_PROB_24h_TN;
+ &LOGDIR;/&VX_ENSGRID_PROB_24h_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&CCPA_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(24, fcst_len_hrs+1, 24) %}{{ " %02d" % h }}{% endfor %}
+ VARAPCP
+ ACCUM24
+
+
+
+
+
+
+{%- endif %}
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_PROB"
+ {{ nnodes_vx_ensgrid_prob }}:ppn={{ ppn_vx_ensgrid_prob }}
+ {{ wtime_vx_ensgrid_prob }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_PROB_REFC_TN;
+ &LOGDIR;/&VX_ENSGRID_PROB_REFC_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&MRMS_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ VARREFC
+
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSGRID_PROB"
+ {{ nnodes_vx_ensgrid_prob }}:ppn={{ ppn_vx_ensgrid_prob }}
+ {{ wtime_vx_ensgrid_prob }}
+ &NCORES_PER_NODE;
+ &VX_ENSGRID_PROB_RETOP_TN;
+ &LOGDIR;/&VX_ENSGRID_PROB_RETOP_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&MRMS_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(1, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+ VARRETOP
+
+
+
+
+
+
+{%- endif %}
+
+{%- if run_task_vx_enspoint %}
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSPOINT"
+ {{ nnodes_vx_enspoint }}:ppn={{ ppn_vx_enspoint }}
+ {{ wtime_vx_enspoint }}
+ &NCORES_PER_NODE;
+ &VX_ENSPOINT_TN;
+ &LOGDIR;/&VX_ENSPOINT_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&NDAS_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(0, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSPOINT_MEAN"
+ {{ nnodes_vx_enspoint_mean }}:ppn={{ ppn_vx_enspoint_mean }}
+ {{ wtime_vx_enspoint_mean }}
+ &NCORES_PER_NODE;
+ &VX_ENSPOINT_MEAN_TN;
+ &LOGDIR;/&VX_ENSPOINT_MEAN_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&NDAS_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(0, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+
+
+
+
+
+
+
+
+
+
+ &RSRV_DEFAULT;
+ &LOAD_MODULES_RUN_TASK_FP; "&VX_TN;" "&JOBSDIR;/JREGIONAL_RUN_VX_ENSPOINT_PROB"
+ {{ nnodes_vx_enspoint_prob }}:ppn={{ ppn_vx_enspoint_prob }}
+ {{ wtime_vx_enspoint_prob }}
+ &NCORES_PER_NODE;
+ &VX_ENSPOINT_PROB_TN;
+ &LOGDIR;/&VX_ENSPOINT_PROB_TN;_@Y@m@d@H.log
+
+ GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP;
+ OBS_DIR&NDAS_OBS_DIR;
+ CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H
+ CDATE@Y@m@d@H
+ PDY@Y@m@d
+ cyc@H
+ FHR {% for h in range(0, fcst_len_hrs+1) %}{{ " %02d" % h }}{% endfor %}
+
+
+
+
+
+
+
+{%- endif %}
diff --git a/ush/templates/parm/met/EnsembleStatConfig_APCP b/ush/templates/parm/met/EnsembleStatConfig_APCP
new file mode 100755
index 0000000000..34d560cb6a
--- /dev/null
+++ b/ush/templates/parm/met/EnsembleStatConfig_APCP
@@ -0,0 +1,257 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Ensemble-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+//
+// Output observation type to be written
+//
+obtype = "${OBTYPE}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ method = BUDGET;
+ width = 2;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// May be set separately in each "field" entry
+//
+censor_thresh = [];
+censor_val = [];
+cat_thresh = [];
+nc_var_str = "";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Ensemble product fields to be processed
+//
+ens = {
+ ens_thresh = ${ENS_THRESH};
+ vld_thresh = 1.0;
+
+ field = [ ${ENS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Forecast and observation fields to be verified
+//
+fcst = {
+ field = [ ${FCST_FIELD} ];
+}
+
+obs = {
+ field = [ ${OBS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation filtering options
+// May be set separately in each "obs.field" entry
+//
+message_type = [];
+sid_exc = [];
+obs_thresh = [ NA ];
+obs_quality = [];
+duplicate_flag = UNIQUE;
+obs_summary = NONE;
+obs_perc_value = 50;
+skip_const = TRUE;
+
+//
+// Observation error options
+// Set dist_type to NONE to use the observation error table instead
+// May be set separately in each "obs.field" entry
+//
+obs_error = {
+ flag = FALSE; // TRUE or FALSE
+ dist_type = NONE; // Distribution type
+ dist_parm = []; // Distribution parameters
+ inst_bias_scale = 1.0; // Instrument bias scale adjustment
+ inst_bias_offset = 0.0; // Instrument bias offset adjustment
+ min = NA; // Valid range of data
+ max = NA;
+}
+
+//
+// Mapping of message type group name to comma-separated list of values.
+//
+message_type_group_map = [
+ { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; },
+ { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; },
+ { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; },
+ { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; }
+];
+
+//
+// Ensemble bin sizes
+// May be set separately in each "obs.field" entry
+//
+ens_ssvar_bin_size = 1.0;
+ens_phist_bin_size = 0.05;
+
+//
+// Categorical thresholds to define ensemble probabilities
+// May be set separately in each "fcst.field" entry
+//
+prob_cat_thresh = [];
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ method = NEAREST;
+ width = 1;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+ }
+
+ time_interp_method = DW_MEAN;
+ day_interval = 31;
+ hour_interval = 6;
+}
+
+climo_stdev = climo_mean;
+climo_stdev = {
+ file_name = [];
+}
+
+//
+// May be set separately in each "obs.field" entry
+//
+climo_cdf = {
+ cdf_bins = 1;
+ center_bins = FALSE;
+ write_bins = TRUE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation time window
+//
+obs_window = {
+ beg = ${OBS_WINDOW_BEGIN};
+ end = ${OBS_WINDOW_END};
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+//
+mask = {
+ ${METPLUS_MASK_GRID}
+ ${METPLUS_MASK_POLY}
+ sid = [];
+ llpnt = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+//
+ci_alpha = [ 0.01 ];
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Interpolation methods
+//
+interp = {
+ field = BOTH;
+ vld_thresh = 1.0;
+ type = [ { method = NEAREST; width = 1; } ];
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+//
+output_flag = {
+ ecnt = NONE;
+ rps = NONE;
+ rhist = STAT;
+ phist = STAT;
+ orank = NONE;
+ ssvar = STAT;
+ relp = STAT;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Ensemble product output types
+//
+ensemble_flag = {
+ latlon = TRUE;
+ mean = TRUE;
+ stdev = TRUE;
+ minus = FALSE;
+ plus = FALSE;
+ min = FALSE;
+ max = FALSE;
+ range = FALSE;
+ vld_count = TRUE;
+ frequency = TRUE;
+ nep = FALSE;
+ nmep = FALSE;
+ rank = FALSE;
+ weight = FALSE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Random number generator
+//
+rng = {
+ type = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+grid_weight_flag = NONE;
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/met/EnsembleStatConfig_REFC b/ush/templates/parm/met/EnsembleStatConfig_REFC
new file mode 100755
index 0000000000..5d44356b63
--- /dev/null
+++ b/ush/templates/parm/met/EnsembleStatConfig_REFC
@@ -0,0 +1,265 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Ensemble-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+//
+// Output observation type to be written
+//
+obtype = "${OBTYPE}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ method = BUDGET;
+ width = 2;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// May be set separately in each "field" entry
+//
+censor_thresh = [];
+censor_val = [];
+cat_thresh = [];
+nc_var_str = "";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Ensemble product fields to be processed
+//
+
+M_to_KFT(x) = x * 3.28084 * 0.001;
+KM_to_KFT(x) = x * 3280.84 * 0.001;
+
+ens = {
+ ens_thresh = ${ENS_THRESH};
+ vld_thresh = 1.0;
+
+ field = [ ${ENS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Forecast and observation fields to be verified
+//
+
+M_to_KFT(x) = x * 3.28084 * 0.001;
+KM_to_KFT(x) = x * 3280.84 * 0.001;
+
+fcst = {
+ field = [ ${FCST_FIELD} ];
+}
+
+obs = {
+ field = [ ${OBS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation filtering options
+// May be set separately in each "obs.field" entry
+//
+message_type = [];
+sid_exc = [];
+obs_thresh = [ NA ];
+obs_quality = [];
+duplicate_flag = UNIQUE;
+obs_summary = NONE;
+obs_perc_value = 50;
+skip_const = TRUE;
+
+//
+// Observation error options
+// Set dist_type to NONE to use the observation error table instead
+// May be set separately in each "obs.field" entry
+//
+obs_error = {
+ flag = FALSE; // TRUE or FALSE
+ dist_type = NONE; // Distribution type
+ dist_parm = []; // Distribution parameters
+ inst_bias_scale = 1.0; // Instrument bias scale adjustment
+ inst_bias_offset = 0.0; // Instrument bias offset adjustment
+ min = NA; // Valid range of data
+ max = NA;
+}
+
+//
+// Mapping of message type group name to comma-separated list of values.
+//
+message_type_group_map = [
+ { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; },
+ { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; },
+ { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; },
+ { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; }
+];
+
+//
+// Ensemble bin sizes
+// May be set separately in each "obs.field" entry
+//
+ens_ssvar_bin_size = 1.0;
+ens_phist_bin_size = 0.05;
+
+//
+// Categorical thresholds to define ensemble probabilities
+// May be set separately in each "fcst.field" entry
+//
+prob_cat_thresh = [];
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ method = NEAREST;
+ width = 1;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+ }
+
+ time_interp_method = DW_MEAN;
+ day_interval = 31;
+ hour_interval = 6;
+}
+
+climo_stdev = climo_mean;
+climo_stdev = {
+ file_name = [];
+}
+
+//
+// May be set separately in each "obs.field" entry
+//
+climo_cdf = {
+ cdf_bins = 1;
+ center_bins = FALSE;
+ write_bins = TRUE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation time window
+//
+obs_window = {
+ beg = ${OBS_WINDOW_BEGIN};
+ end = ${OBS_WINDOW_END};
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+//
+mask = {
+ ${METPLUS_MASK_GRID}
+ ${METPLUS_MASK_POLY}
+ sid = [];
+ llpnt = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+//
+ci_alpha = [ 0.01 ];
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Interpolation methods
+//
+interp = {
+ field = BOTH;
+ vld_thresh = 1.0;
+ type = [ { method = NEAREST; width = 1; } ];
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+//
+output_flag = {
+ ecnt = NONE;
+ rps = NONE;
+ rhist = STAT;
+ phist = STAT;
+ orank = NONE;
+ ssvar = STAT;
+ relp = STAT;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Ensemble product output types
+//
+ensemble_flag = {
+ latlon = TRUE;
+ mean = TRUE;
+ stdev = TRUE;
+ minus = FALSE;
+ plus = FALSE;
+ min = FALSE;
+ max = FALSE;
+ range = FALSE;
+ vld_count = TRUE;
+ frequency = TRUE;
+ nep = FALSE;
+ nmep = FALSE;
+ rank = FALSE;
+ weight = FALSE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Random number generator
+//
+rng = {
+ type = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+grid_weight_flag = NONE;
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/met/EnsembleStatConfig_point b/ush/templates/parm/met/EnsembleStatConfig_point
new file mode 100644
index 0000000000..648893e201
--- /dev/null
+++ b/ush/templates/parm/met/EnsembleStatConfig_point
@@ -0,0 +1,290 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Ensemble-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+//
+// Output observation type to be written
+//
+obtype = "${OBTYPE}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+// May be set separately in each "field" entry
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ method = BILIN;
+ width = 2;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// May be set separately in each "field" entry
+//
+censor_thresh = [];
+censor_val = [];
+cat_thresh = [];
+nc_var_str = "";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Ensemble product fields to be processed
+//
+ens = {
+ ens_thresh = 0.05;
+ vld_thresh = 1.0;
+
+ field = [ ${ENS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Neighborhood ensemble probabilities
+//
+nbrhd_prob = {
+ width = [ 5 ];
+ shape = CIRCLE;
+ vld_thresh = 0.0;
+}
+
+//
+// NMEP smoothing methods
+//
+nmep_smooth = {
+ vld_thresh = 0.0;
+ shape = CIRCLE;
+ gaussian_dx = 81.27;
+ gaussian_radius = 120;
+ type = [
+ {
+ method = GAUSSIAN;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Forecast and observation fields to be verified
+//
+fcst = {
+ field = [ ${FCST_FIELD} ];
+}
+obs = {
+ field = [ ${OBS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation filtering options
+// May be set separately in each "obs.field" entry
+//
+${METPLUS_MESSAGE_TYPE}
+sid_inc = [];
+sid_exc = [];
+obs_thresh = [ NA ];
+obs_quality = [];
+duplicate_flag = NONE;
+obs_summary = NONE;
+obs_perc_value = 50;
+skip_const = FALSE;
+
+//
+// Observation error options
+// Set dist_type to NONE to use the observation error table instead
+// May be set separately in each "obs.field" entry
+//
+obs_error = {
+ flag = FALSE; // TRUE or FALSE
+ dist_type = NONE; // Distribution type
+ dist_parm = []; // Distribution parameters
+ inst_bias_scale = 1.0; // Instrument bias scale adjustment
+ inst_bias_offset = 0.0; // Instrument bias offset adjustment
+ min = NA; // Valid range of data
+ max = NA;
+}
+
+//
+// Mapping of message type group name to comma-separated list of values
+//
+message_type_group_map = [
+ { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; },
+ { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; },
+ { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; },
+ { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; }
+];
+
+//
+// Ensemble bin sizes
+// May be set separately in each "obs.field" entry
+//
+ens_ssvar_bin_size = 1.0;
+ens_phist_bin_size = 0.05;
+
+//
+// Categorical thresholds to define ensemble probabilities
+// May be set separately in each "fcst.field" entry
+//
+prob_cat_thresh = [];
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ method = NEAREST;
+ width = 1;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+ }
+
+ time_interp_method = DW_MEAN;
+ day_interval = 31;
+ hour_interval = 6;
+}
+
+climo_stdev = climo_mean;
+climo_stdev = {
+ file_name = [];
+}
+
+//
+// May be set separately in each "obs.field" entry
+//
+climo_cdf = {
+ cdf_bins = 1;
+ center_bins = FALSE;
+ write_bins = TRUE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation time window
+//
+obs_window = {
+ beg = ${OBS_WINDOW_BEGIN};
+ end = ${OBS_WINDOW_END};
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+//
+mask = {
+ ${METPLUS_MASK_GRID}
+ ${METPLUS_MASK_POLY}
+ sid = [];
+ llpnt = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+//
+ci_alpha = [ 0.05 ];
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Interpolation methods
+//
+interp = {
+ field = BOTH;
+ vld_thresh = 1.0;
+ shape = SQUARE;
+
+ type = [
+ {
+ method = NEAREST;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+//
+output_flag = {
+ ecnt = STAT;
+ rps = NONE;
+ rhist = STAT;
+ phist = STAT;
+ orank = STAT;
+ ssvar = STAT;
+ relp = STAT;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Ensemble product output types
+//
+ensemble_flag = {
+ latlon = TRUE;
+ mean = TRUE;
+ stdev = TRUE;
+ minus = FALSE;
+ plus = FALSE;
+ min = FALSE;
+ max = FALSE;
+ range = TRUE;
+ vld_count = TRUE;
+ frequency = TRUE;
+ nep = FALSE;
+ nmep = FALSE;
+ rank = TRUE;
+ weight = FALSE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Random number generator
+//
+rng = {
+ type = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+grid_weight_flag = NONE;
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/met/GridStatConfig_APCP_mean b/ush/templates/parm/met/GridStatConfig_APCP_mean
new file mode 100755
index 0000000000..6aa4c8cc3b
--- /dev/null
+++ b/ush/templates/parm/met/GridStatConfig_APCP_mean
@@ -0,0 +1,178 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Grid-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+//
+// Output observation type to be written
+//
+obtype = "${OBTYPE}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ vld_thresh = 0.5;
+ method = BUDGET;
+ width = 2;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+cat_thresh = [ NA ];
+cnt_thresh = [ NA ];
+cnt_logic = UNION;
+wind_thresh = [ NA ];
+wind_logic = UNION;
+
+//
+// Forecast and observation fields to be verified
+//
+fcst = {
+ field = [ ${FCST_FIELD} ];
+}
+
+obs = {
+ field = [ ${OBS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology mean data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ vld_thresh = 0.5;
+ method = NEAREST;
+ width = 1;
+ }
+
+ time_interp_method = DW_MEAN;
+ match_day = FALSE;
+ time_step = 21600;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+//
+mask = {
+ grid = [];
+ poly = [ ${VERIF_MASK} ];
+ sid = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+//
+ci_alpha = [ 0.05 ];
+
+boot = {
+ interval = PCTILE;
+ rep_prop = 1.0;
+ n_rep = 0;
+ rng = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Data smoothing methods
+//
+interp = {
+ field = BOTH;
+ vld_thresh = 1.0;
+
+ type = [
+ {
+ method = NEAREST;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Neighborhood methods
+//
+nbrhd = {
+ field = BOTH;
+ shape = ${NEIGHBORHOOD_SHAPE};
+ width = [ ${NEIGHBORHOOD_WIDTH} ];
+ cov_thresh = [ >=0.5 ];
+ vld_thresh = 1.0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+//
+output_flag = {
+ fho = STAT;
+ ctc = STAT;
+ cts = STAT;
+ mctc = NONE;
+ mcts = NONE;
+ cnt = STAT;
+ sl1l2 = NONE;
+ sal1l2 = NONE;
+ vl1l2 = NONE;
+ val1l2 = NONE;
+ pct = NONE;
+ pstd = NONE;
+ pjc = NONE;
+ prc = NONE;
+ nbrctc = STAT;
+ nbrcts = STAT;
+ nbrcnt = STAT;
+}
+
+//
+// NetCDF matched pairs output file
+//
+nc_pairs_flag = {
+ latlon = FALSE;
+ raw = FALSE;
+ diff = FALSE;
+ climo = FALSE;
+ weight = FALSE;
+ nbrhd = FALSE;
+ apply_mask = FALSE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+rank_corr_flag = FALSE;
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/met/GridStatConfig_APCP_prob b/ush/templates/parm/met/GridStatConfig_APCP_prob
new file mode 100755
index 0000000000..d6ef8cb0ec
--- /dev/null
+++ b/ush/templates/parm/met/GridStatConfig_APCP_prob
@@ -0,0 +1,178 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Grid-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+//
+// Output observation type to be written
+//
+obtype = "${OBTYPE}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ vld_thresh = 0.5;
+ method = BUDGET;
+ width = 2;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+cat_thresh = [ NA ];
+cnt_thresh = [ NA ];
+cnt_logic = UNION;
+wind_thresh = [ NA ];
+wind_logic = UNION;
+
+//
+// Forecast and observation fields to be verified
+//
+fcst = {
+ field = [ ${FCST_FIELD} ];
+}
+
+obs = {
+ field = [ ${OBS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology mean data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ vld_thresh = 0.5;
+ method = NEAREST;
+ width = 1;
+ }
+
+ time_interp_method = DW_MEAN;
+ match_day = FALSE;
+ time_step = 21600;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+//
+mask = {
+ grid = [];
+ poly = [ ${VERIF_MASK} ];
+ sid = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+//
+ci_alpha = [ 0.05 ];
+
+boot = {
+ interval = PCTILE;
+ rep_prop = 1.0;
+ n_rep = 0;
+ rng = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Data smoothing methods
+//
+interp = {
+ field = BOTH;
+ vld_thresh = 1.0;
+
+ type = [
+ {
+ method = NEAREST;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Neighborhood methods
+//
+nbrhd = {
+ field = BOTH;
+ shape = ${NEIGHBORHOOD_SHAPE};
+ width = [ ${NEIGHBORHOOD_WIDTH} ];
+ cov_thresh = [ >=0.5 ];
+ vld_thresh = 1.0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+//
+output_flag = {
+ fho = NONE;
+ ctc = NONE;
+ cts = NONE;
+ mctc = NONE;
+ mcts = NONE;
+ cnt = NONE;
+ sl1l2 = NONE;
+ sal1l2 = NONE;
+ vl1l2 = NONE;
+ val1l2 = NONE;
+ pct = STAT;
+ pstd = STAT;
+ pjc = STAT;
+ prc = STAT;
+ nbrctc = NONE;
+ nbrcts = NONE;
+ nbrcnt = NONE;
+}
+
+//
+// NetCDF matched pairs output file
+//
+nc_pairs_flag = {
+ latlon = FALSE;
+ raw = FALSE;
+ diff = FALSE;
+ climo = FALSE;
+ weight = FALSE;
+ nbrhd = FALSE;
+ apply_mask = FALSE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+rank_corr_flag = FALSE;
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/met/GridStatConfig_REFL b/ush/templates/parm/met/GridStatConfig_REFC
similarity index 100%
rename from ush/templates/parm/met/GridStatConfig_REFL
rename to ush/templates/parm/met/GridStatConfig_REFC
diff --git a/ush/templates/parm/met/GridStatConfig_REFC_mean b/ush/templates/parm/met/GridStatConfig_REFC_mean
new file mode 100644
index 0000000000..ade839df7a
--- /dev/null
+++ b/ush/templates/parm/met/GridStatConfig_REFC_mean
@@ -0,0 +1,219 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Grid-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+//
+// Output observation type to be written
+//
+obtype = "${OBTYPE}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ vld_thresh = 0.5;
+ method = BUDGET;
+ width = 2;
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+cat_thresh = [];
+cnt_thresh = [ NA ];
+cnt_logic = UNION;
+wind_thresh = [ NA ];
+wind_logic = UNION;
+
+//
+// Forecast and observation fields to be verified
+//
+
+M_to_KFT(x) = x * 3.28084 * 0.001;
+KM_to_KFT(x) = x * 3280.84 * 0.001;
+
+fcst = {
+ field = [ ${FCST_FIELD} ];
+}
+
+obs = {
+ field = [ ${OBS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology mean data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ vld_thresh = 0.5;
+ method = NEAREST;
+ width = 1;
+ }
+
+ time_interp_method = DW_MEAN;
+ match_day = FALSE;
+ time_step = 21600;
+}
+
+climo_stdev = climo_mean;
+climo_stdev = {
+ file_name = [];
+}
+
+climo_cdf_bins = 1;
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+//
+mask = {
+ grid = [];
+ poly = [ ${VERIF_MASK} ];
+ sid = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+//
+ci_alpha = [ 0.05 ];
+
+boot = {
+ interval = PCTILE;
+ rep_prop = 1.0;
+ n_rep = 0;
+ rng = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Data smoothing methods
+//
+interp = {
+ field = NONE;
+ vld_thresh = 1.0;
+ shape = SQUARE;
+
+ type = [
+ {
+ method = NEAREST;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Neighborhood methods
+//
+nbrhd = {
+ field = BOTH;
+ shape = ${NEIGHBORHOOD_SHAPE};
+ width = [ ${NEIGHBORHOOD_WIDTH} ];
+ cov_thresh = [ >=0.5 ];
+ vld_thresh = 1.0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Fourier decomposition
+// May be set separately in each "obs.field" entry
+//
+fourier = {
+ wave_1d_beg = [];
+ wave_1d_end = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Gradient statistics
+// May be set separately in each "obs.field" entry
+//
+gradient = {
+ dx = [ 1 ];
+ dy = [ 1 ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+//
+output_flag = {
+ fho = STAT;
+ ctc = STAT;
+ cts = STAT;
+ mctc = NONE;
+ mcts = NONE;
+ cnt = STAT;
+ sl1l2 = NONE;
+ sal1l2 = NONE;
+ vl1l2 = NONE;
+ val1l2 = NONE;
+ vcnt = NONE;
+ pct = NONE;
+ pstd = NONE;
+ pjc = NONE;
+ prc = NONE;
+ eclv = NONE;
+ nbrctc = STAT;
+ nbrcts = STAT;
+ nbrcnt = STAT;
+ grad = NONE;
+}
+
+//
+// NetCDF matched pairs output file
+//
+nc_pairs_flag = {
+ latlon = FALSE;
+ raw = FALSE;
+ diff = FALSE;
+ climo = FALSE;
+ weight = FALSE;
+ nbrhd = FALSE;
+ fourier = FALSE;
+ gradient = FALSE;
+ apply_mask = FALSE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+grid_weight_flag = NONE;
+rank_corr_flag = FALSE;
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/met/GridStatConfig_REFC_prob b/ush/templates/parm/met/GridStatConfig_REFC_prob
new file mode 100644
index 0000000000..61570c4938
--- /dev/null
+++ b/ush/templates/parm/met/GridStatConfig_REFC_prob
@@ -0,0 +1,219 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Grid-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+//
+// Output observation type to be written
+//
+obtype = "${OBTYPE}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ vld_thresh = 0.5;
+ method = BUDGET;
+ width = 2;
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+cat_thresh = [];
+cnt_thresh = [ NA ];
+cnt_logic = UNION;
+wind_thresh = [ NA ];
+wind_logic = UNION;
+
+//
+// Forecast and observation fields to be verified
+//
+
+M_to_KFT(x) = x * 3.28084 * 0.001;
+KM_to_KFT(x) = x * 3280.84 * 0.001;
+
+fcst = {
+ field = [ ${FCST_FIELD} ];
+}
+
+obs = {
+ field = [ ${OBS_FIELD} ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology mean data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ vld_thresh = 0.5;
+ method = NEAREST;
+ width = 1;
+ }
+
+ time_interp_method = DW_MEAN;
+ match_day = FALSE;
+ time_step = 21600;
+}
+
+climo_stdev = climo_mean;
+climo_stdev = {
+ file_name = [];
+}
+
+climo_cdf_bins = 1;
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+//
+mask = {
+ grid = [];
+ poly = [ ${VERIF_MASK} ];
+ sid = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+//
+ci_alpha = [ 0.05 ];
+
+boot = {
+ interval = PCTILE;
+ rep_prop = 1.0;
+ n_rep = 0;
+ rng = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Data smoothing methods
+//
+interp = {
+ field = NONE;
+ vld_thresh = 1.0;
+ shape = SQUARE;
+
+ type = [
+ {
+ method = NEAREST;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Neighborhood methods
+//
+nbrhd = {
+ field = BOTH;
+ shape = ${NEIGHBORHOOD_SHAPE};
+ width = [ ${NEIGHBORHOOD_WIDTH} ];
+ cov_thresh = [ >=0.5 ];
+ vld_thresh = 1.0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Fourier decomposition
+// May be set separately in each "obs.field" entry
+//
+fourier = {
+ wave_1d_beg = [];
+ wave_1d_end = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Gradient statistics
+// May be set separately in each "obs.field" entry
+//
+gradient = {
+ dx = [ 1 ];
+ dy = [ 1 ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+//
+output_flag = {
+ fho = NONE;
+ ctc = NONE;
+ cts = NONE;
+ mctc = NONE;
+ mcts = NONE;
+ cnt = NONE;
+ sl1l2 = NONE;
+ sal1l2 = NONE;
+ vl1l2 = NONE;
+ val1l2 = NONE;
+ vcnt = NONE;
+ pct = STAT;
+ pstd = STAT;
+ pjc = STAT;
+ prc = STAT;
+ eclv = NONE;
+ nbrctc = NONE;
+ nbrcts = NONE;
+ nbrcnt = NONE;
+ grad = NONE;
+}
+
+//
+// NetCDF matched pairs output file
+//
+nc_pairs_flag = {
+ latlon = FALSE;
+ raw = FALSE;
+ diff = FALSE;
+ climo = FALSE;
+ weight = FALSE;
+ nbrhd = FALSE;
+ fourier = FALSE;
+ gradient = FALSE;
+ apply_mask = FALSE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+grid_weight_flag = NONE;
+rank_corr_flag = FALSE;
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/met/PointStatConfig b/ush/templates/parm/met/PointStatConfig
index 453f10c2eb..384ee83a6f 100644
--- a/ush/templates/parm/met/PointStatConfig
+++ b/ush/templates/parm/met/PointStatConfig
@@ -170,11 +170,6 @@ obs_window = {
//
mask = {
grid = ${POINT_STAT_GRID};
-// poly = [
-// "${FIXverif_global}/vx_mask_files/grid2obs/CONUS.nc",
-// "${FIXverif_global}/vx_mask_files/grid2obs/EAST.nc",
-// "${FIXverif_global}/vx_mask_files/grid2obs/WEST.nc"
-// ];
poly = ${POINT_STAT_POLY};
sid = ${POINT_STAT_STATION_ID};
llpnt = [];
diff --git a/ush/templates/parm/met/PointStatConfig_mean b/ush/templates/parm/met/PointStatConfig_mean
new file mode 100644
index 0000000000..0b935c5786
--- /dev/null
+++ b/ush/templates/parm/met/PointStatConfig_mean
@@ -0,0 +1,254 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Point-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+// May be set separately in each "field" entry
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ method = BILIN;
+ width = 2;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// May be set separately in each "field" entry
+//
+censor_thresh = [];
+censor_val = [];
+cat_thresh = [ NA ];
+cnt_thresh = [ NA ];
+cnt_logic = UNION;
+wind_thresh = [ NA ];
+wind_logic = UNION;
+eclv_points = 0.05;
+rank_corr_flag = FALSE;
+
+//
+// Forecast and observation fields to be verified
+//
+fcst = {
+ field = [ ${FCST_FIELD} ];
+ };
+
+obs = {
+ field = [ ${OBS_FIELD} ];
+ };
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation filtering options
+// May be set separately in each "obs.field" entry
+//
+message_type = ${POINT_STAT_MESSAGE_TYPE};
+sid_exc = [];
+obs_quality = [];
+duplicate_flag = NONE;
+obs_summary = NONE;
+obs_perc_value = 50;
+
+//
+// Mapping of message type group name to comma-separated list of values.
+//
+message_type_group_map = [
+ { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; },
+ { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; },
+ { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; },
+ { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; },
+ { key = "LANDSF"; val = "ADPSFC,MSONET"; },
+ { key = "WATERSF"; val = "SFCSHP"; }
+];
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ method = NEAREST;
+ width = 1;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+ }
+
+ time_interp_method = NEAREST;
+ match_month = TRUE;
+ match_day = TRUE;
+ time_step = 21600;
+}
+
+climo_stdev = climo_mean;
+climo_stdev = {
+ file_name = [];
+}
+
+climo_cdf_bins = 1;
+write_cdf_bins = FALSE;
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Land/Sea mask
+// For LANDSF message types, only use forecast grid points where land = TRUE.
+// For WATERSF message types, only use forecast grid points where land = FALSE.
+// land_mask.flag may be set separately in each "obs.field" entry.
+//
+land_mask = {
+ flag = FALSE;
+ file_name = [];
+ field = { name = "LAND"; level = "L0"; }
+ regrid = { method = NEAREST; width = 1; }
+ thresh = eq1;
+}
+
+//
+// Topography
+// For SURFACE message types, only use observations where the topo - station
+// elevation difference meets the use_obs_thresh threshold.
+// For the observations kept, when interpolating forecast data to the
+// observation location, only use forecast grid points where the topo - station
+// difference meets the interp_fcst_thresh threshold.
+// topo_mask.flag may be set separately in each "obs.field" entry.
+//
+topo_mask = {
+ flag = FALSE;
+ file_name = [];
+ field = { name = "TOPO"; level = "L0"; }
+ regrid = { method = BILIN; width = 2; }
+ use_obs_thresh = ge-100&&le100;
+ interp_fcst_thresh = ge-50&&le50;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation time window
+// May be set separately in each "obs.field" entry
+//
+obs_window = {
+ beg = ${OBS_WINDOW_BEGIN};
+ end = ${OBS_WINDOW_END};
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+// May be set separately in each "obs.field" entry
+//
+mask = {
+ grid = ${POINT_STAT_GRID};
+ poly = ${POINT_STAT_POLY};
+ sid = ${POINT_STAT_STATION_ID};
+ llpnt = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+// May be set separately in each "obs.field" entry
+//
+ci_alpha = [ 0.05 ];
+
+boot = {
+ interval = PCTILE;
+ rep_prop = 1.0;
+ n_rep = 0;
+ rng = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Interpolation methods
+// May be set separately in each "obs.field" entry
+//
+interp = {
+ vld_thresh = 1.0;
+ shape = SQUARE;
+
+ type = [
+ {
+ method = BILIN;
+ width = 2;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// HiRA verification method
+// May be set separately in each "obs.field" entry
+//
+hira = {
+ flag = FALSE;
+ width = [ 2, 3, 4, 5 ];
+ vld_thresh = 1.0;
+ cov_thresh = [ ==0.25 ];
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+// May be set separately in each "obs.field" entry
+//
+output_flag = {
+ fho = NONE;
+ ctc = NONE;
+ cts = NONE;
+ mctc = NONE;
+ mcts = NONE;
+ cnt = STAT;
+ sl1l2 = STAT;
+ sal1l2 = NONE;
+ vl1l2 = STAT;
+ val1l2 = NONE;
+ vcnt = STAT;
+ pct = NONE;
+ pstd = NONE;
+ pjc = NONE;
+ prc = NONE;
+ eclv = NONE;
+ mpr = NONE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/met/PointStatConfig_prob b/ush/templates/parm/met/PointStatConfig_prob
new file mode 100644
index 0000000000..f21ba1aaad
--- /dev/null
+++ b/ush/templates/parm/met/PointStatConfig_prob
@@ -0,0 +1,254 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Point-Stat configuration file.
+//
+// For additional information, see the MET_BASE/config/README file.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "${MODEL}";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "NA";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+// May be set separately in each "field" entry
+//
+regrid = {
+ to_grid = ${REGRID_TO_GRID};
+ method = BILIN;
+ width = 2;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// May be set separately in each "field" entry
+//
+censor_thresh = [];
+censor_val = [];
+cat_thresh = [ NA ];
+cnt_thresh = [ NA ];
+cnt_logic = UNION;
+wind_thresh = [ NA ];
+wind_logic = UNION;
+eclv_points = 0.05;
+rank_corr_flag = FALSE;
+
+//
+// Forecast and observation fields to be verified
+//
+fcst = {
+ field = [ ${FCST_FIELD} ];
+ };
+
+obs = {
+ field = [ ${OBS_FIELD} ];
+ };
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation filtering options
+// May be set separately in each "obs.field" entry
+//
+message_type = ${POINT_STAT_MESSAGE_TYPE};
+sid_exc = [];
+obs_quality = [];
+duplicate_flag = NONE;
+obs_summary = NONE;
+obs_perc_value = 50;
+
+//
+// Mapping of message type group name to comma-separated list of values.
+//
+message_type_group_map = [
+ { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; },
+ { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; },
+ { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; },
+ { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; },
+ { key = "LANDSF"; val = "ADPSFC,MSONET"; },
+ { key = "WATERSF"; val = "SFCSHP"; }
+];
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Climatology data
+//
+climo_mean = {
+
+ file_name = [];
+ field = [];
+
+ regrid = {
+ method = NEAREST;
+ width = 1;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+ }
+
+ time_interp_method = NEAREST;
+ match_month = TRUE;
+ match_day = TRUE;
+ time_step = 21600;
+}
+
+climo_stdev = climo_mean;
+climo_stdev = {
+ file_name = [];
+}
+
+climo_cdf_bins = 1;
+write_cdf_bins = FALSE;
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Land/Sea mask
+// For LANDSF message types, only use forecast grid points where land = TRUE.
+// For WATERSF message types, only use forecast grid points where land = FALSE.
+// land_mask.flag may be set separately in each "obs.field" entry.
+//
+land_mask = {
+ flag = FALSE;
+ file_name = [];
+ field = { name = "LAND"; level = "L0"; }
+ regrid = { method = NEAREST; width = 1; }
+ thresh = eq1;
+}
+
+//
+// Topography
+// For SURFACE message types, only use observations where the topo - station
+// elevation difference meets the use_obs_thresh threshold.
+// For the observations kept, when interpolating forecast data to the
+// observation location, only use forecast grid points where the topo - station
+// difference meets the interp_fcst_thresh threshold.
+// topo_mask.flag may be set separately in each "obs.field" entry.
+//
+topo_mask = {
+ flag = FALSE;
+ file_name = [];
+ field = { name = "TOPO"; level = "L0"; }
+ regrid = { method = BILIN; width = 2; }
+ use_obs_thresh = ge-100&&le100;
+ interp_fcst_thresh = ge-50&&le50;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation time window
+// May be set separately in each "obs.field" entry
+//
+obs_window = {
+ beg = ${OBS_WINDOW_BEGIN};
+ end = ${OBS_WINDOW_END};
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+// May be set separately in each "obs.field" entry
+//
+mask = {
+ grid = ${POINT_STAT_GRID};
+ poly = ${POINT_STAT_POLY};
+ sid = ${POINT_STAT_STATION_ID};
+ llpnt = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+// May be set separately in each "obs.field" entry
+//
+ci_alpha = [ 0.05 ];
+
+boot = {
+ interval = PCTILE;
+ rep_prop = 1.0;
+ n_rep = 0;
+ rng = "mt19937";
+ seed = "";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Interpolation methods
+// May be set separately in each "obs.field" entry
+//
+interp = {
+ vld_thresh = 1.0;
+ shape = SQUARE;
+
+ type = [
+ {
+ method = BILIN;
+ width = 2;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// HiRA verification method
+// May be set separately in each "obs.field" entry
+//
+hira = {
+ flag = FALSE;
+ width = [ 2, 3, 4, 5 ];
+ vld_thresh = 1.0;
+ cov_thresh = [ ==0.25 ];
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+// May be set separately in each "obs.field" entry
+//
+output_flag = {
+ fho = NONE;
+ ctc = NONE;
+ cts = NONE;
+ mctc = NONE;
+ mcts = NONE;
+ cnt = NONE;
+ sl1l2 = NONE;
+ sal1l2 = NONE;
+ vl1l2 = NONE;
+ val1l2 = NONE;
+ vcnt = NONE;
+ pct = STAT;
+ pstd = STAT;
+ pjc = STAT;
+ prc = STAT;
+ eclv = NONE;
+ mpr = NONE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V10.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/ush/templates/parm/metplus/APCP_01h.conf b/ush/templates/parm/metplus/APCP_01h.conf
index 9c23ce1eeb..4f3599d327 100644
--- a/ush/templates/parm/metplus/APCP_01h.conf
+++ b/ush/templates/parm/metplus/APCP_01h.conf
@@ -1,17 +1,19 @@
-# Grid to Grid Precipitation
+# Grid to Grid Precipitation Example
[dir]
# Input and output data directories
-INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}/postprd
+INPUT_BASE = {ENV[INPUT_BASE]}
FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
-OUTPUT_BASE = {ENV[EXPTDIR]}
+OUTPUT_BASE = {ENV[OUTPUT_BASE]}
GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
-LOG_DIR = {OUTPUT_BASE}/log
+LOG_DIR = {ENV[EXPTDIR]}/log
OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h
+
[filename_templates]
# format of filenames
FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
@@ -19,11 +21,17 @@ FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH
# ANLYS
OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2
-GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/grid_stat
+GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat
# Location of MET poly files
GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_01h.conf
+
[config]
# Model to verify
MODEL = {ENV[MODEL]}
diff --git a/ush/templates/parm/metplus/APCP_03h.conf b/ush/templates/parm/metplus/APCP_03h.conf
index d76687a7da..ce3f1f5db9 100644
--- a/ush/templates/parm/metplus/APCP_03h.conf
+++ b/ush/templates/parm/metplus/APCP_03h.conf
@@ -1,21 +1,24 @@
-# Grid to Grid Precipitation
+# Grid to Grid Precipitation Example
[dir]
# Input and output data directories
-INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}/postprd
-OUTPUT_BASE = {ENV[EXPTDIR]}
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[OUTPUT_BASE]}
+# Grid to Grid Precipitation
FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE}
-FCST_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}/metprd/pcp_combine
+FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine
FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR}
OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]}
-OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}/metprd/pcp_combine
+OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR}
GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
-LOG_DIR = {OUTPUT_BASE}/log
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h
[filename_templates]
# format of filenames
@@ -28,11 +31,17 @@ OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hr
OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h
OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE}
-GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/grid_stat
+GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat
# Location of MET poly files
GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_03h.conf
+
[config]
# Model to verify
MODEL = {ENV[MODEL]}
diff --git a/ush/templates/parm/metplus/APCP_06h.conf b/ush/templates/parm/metplus/APCP_06h.conf
index 4150e5eb8a..6773ddba8a 100644
--- a/ush/templates/parm/metplus/APCP_06h.conf
+++ b/ush/templates/parm/metplus/APCP_06h.conf
@@ -1,21 +1,23 @@
-# Grid to Grid Precipitation
+# Grid to Grid Precipitation Example
[dir]
# Input and output data directories
-INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}/postprd
-OUTPUT_BASE = {ENV[EXPTDIR]}
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[OUTPUT_BASE]}
FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE}
-FCST_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}/metprd/pcp_combine
+FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine
FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR}
OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]}
-OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}/metprd/pcp_combine
+OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR}
GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
-LOG_DIR = {OUTPUT_BASE}/log
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h
[filename_templates]
# format of filenames
@@ -28,11 +30,17 @@ OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hr
OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h
OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE}
-GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/grid_stat
+GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat
# Location of MET poly files
GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_06h.conf
+
[config]
# Model to verify
MODEL = {ENV[MODEL]}
diff --git a/ush/templates/parm/metplus/APCP_24h.conf b/ush/templates/parm/metplus/APCP_24h.conf
index acd3fd5a03..8b5a6bb985 100644
--- a/ush/templates/parm/metplus/APCP_24h.conf
+++ b/ush/templates/parm/metplus/APCP_24h.conf
@@ -1,21 +1,23 @@
-# Grid to Grid Precipitation
+# Grid to Grid Precipitation Example
[dir]
# Input and output data directories
-INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}/postprd
-OUTPUT_BASE = {ENV[EXPTDIR]}
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[OUTPUT_BASE]}
FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE}
-FCST_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}/metprd/pcp_combine
+FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine
FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR}
OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]}
-OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}/metprd/pcp_combine
+OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR}
GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
-LOG_DIR = {OUTPUT_BASE}/log
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h
[filename_templates]
# format of filenames
@@ -28,11 +30,17 @@ OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hr
OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h
OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE}
-GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/grid_stat
+GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat
# Location of MET poly files
GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_24h.conf
+
[config]
# Model to verify
MODEL = {ENV[MODEL]}
diff --git a/ush/templates/parm/metplus/EnsembleStat_APCP01h.conf b/ush/templates/parm/metplus/EnsembleStat_APCP01h.conf
new file mode 100644
index 0000000000..46dd14a82e
--- /dev/null
+++ b/ush/templates/parm/metplus/EnsembleStat_APCP01h.conf
@@ -0,0 +1,129 @@
+# Ensemble Stat Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+# Forecast model input directory for ensemble_stat
+FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE}
+
+# Grid observation input dir for ensemble_stat
+OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]}
+
+# output directory for ensemble_stat
+ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h
+
+[filename_templates]
+# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members
+# or a single line, - filename wildcard characters may be used, ? or *.
+FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
+
+# Template to look for grid observations.
+OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2
+
+ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_01h.conf
+
+[config]
+# Configuration-related settings such as the process list, begin and end times, etc.
+PROCESS_LIST = EnsembleStat
+
+# Looping by times: steps through each 'task' in the PROCESS_LIST for each
+# defined time, and repeats until all times have been evaluated.
+LOOP_ORDER = times
+
+# LOOP_BY: Set to INIT to loop over initialization times
+LOOP_BY = INIT
+
+# Format of INIT_BEG and INT_END
+INIT_TIME_FMT = %Y%m%d%H
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+
+# Increment between METplus runs in seconds. Must be >= 60
+INIT_INCREMENT = 3600
+
+# List of forecast leads to process
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Used in the MET config file for: model, output_prefix
+MODEL = {ENV[MODEL]}
+
+# Name to identify observation data in output
+OBTYPE = CCPA
+
+OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0
+OBS_ENSEMBLE_STAT_WINDOW_END = 0
+
+OBS_FILE_WINDOW_BEGIN = 0
+OBS_FILE_WINDOW_END = 0
+
+# number of expected members for ensemble. Should correspond with the
+# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
+ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]}
+
+# ens.ens_thresh value in the MET config file
+# threshold for ratio of valid files to expected files to allow app to run
+ENSEMBLE_STAT_ENS_THRESH = 0.05
+
+# Used in the MET config file for: regrid to_grid field
+ENSEMBLE_STAT_REGRID_TO_GRID = FCST
+
+ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_01h_{OBTYPE}
+
+ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_APCP
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+ENSEMBLE_STAT_MASK_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required.
+# If the variable is not defined, or the value is not set
+# than the MET default is used.
+ENSEMBLE_STAT_MET_OBS_ERR_TABLE =
+
+# 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 = APCP
+ENS_VAR1_LEVELS = A01
+ENS_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54
+
+# Forecast 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
+FCST_VAR1_NAME = APCP
+FCST_VAR1_LEVELS = A01
+
+FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05;
+
+
+# Observation Variables and levels as specified in the obs field dictionary
+# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS,
+# (optional) OBS_VARn_OPTION
+OBS_VAR1_NAME = {FCST_VAR1_NAME}
+OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS}
+
+OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS}
+
diff --git a/ush/templates/parm/metplus/EnsembleStat_APCP03h.conf b/ush/templates/parm/metplus/EnsembleStat_APCP03h.conf
new file mode 100644
index 0000000000..cf7c95a23f
--- /dev/null
+++ b/ush/templates/parm/metplus/EnsembleStat_APCP03h.conf
@@ -0,0 +1,172 @@
+# Ensemble Stat Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE}
+FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE}
+
+OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]}
+OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+# Forecast model input directory for ensemble_stat
+FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR}
+
+# Grid observation input dir for ensemble_stat
+OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR}
+
+# Output directory for ensemble_stat
+ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h
+
+[filename_templates]
+# Need to have PCPCombine output data to individual member directories.
+FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
+FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a03h
+
+OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2
+OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h
+
+# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members
+# or a single line, - filename wildcard characters may be used, ? or *.
+FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a03h
+
+# Template to look for grid observations.
+OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE}
+
+ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_03h.conf
+
+[config]
+# Configuration-related settings such as the process list, begin and end times, etc.
+PROCESS_LIST = PcpCombine, EnsembleStat
+
+# Looping by times: steps through each 'task' in the PROCESS_LIST for each
+# defined time, and repeats until all times have been evaluated.
+LOOP_ORDER = times
+
+PCP_COMBINE_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})
+
+# LOOP_BY: Set to INIT to loop over initialization times
+LOOP_BY = INIT
+
+# Format of INIT_BEG and INT_END
+INIT_TIME_FMT = %Y%m%d%H
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+
+# Increment between METplus runs in seconds. Must be >= 60
+INIT_INCREMENT = 3600
+
+# List of forecast leads to process
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Used in the MET config file for: model, output_prefix
+MODEL = {ENV[MODEL]}
+FCST_NATIVE_DATA_TYPE = GRIB
+
+# Name to identify observation data in output
+OBTYPE = CCPA
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# Run pcp_combine on forecast/obs data?
+FCST_PCP_COMBINE_RUN = True
+OBS_PCP_COMBINE_RUN = True
+
+# Mode of pcp_combine to use (SUM, ADD, SUBTRACT)
+FCST_PCP_COMBINE_METHOD = ADD
+OBS_PCP_COMBINE_METHOD = ADD
+
+FCST_PCP_COMBINE_CONSTANT_INIT = True
+
+# Accumulation interval available in forecast data
+FCST_PCP_COMBINE_INPUT_ACCUMS = 01
+FCST_PCP_COMBINE_OUTPUT_ACCUM = 03
+
+# Accumulation interval available in observation data
+OBS_PCP_COMBINE_INPUT_ACCUMS = 01
+OBS_PCP_COMBINE_OUTPUT_ACCUM = 03
+
+# If 'bucket' output already exists, skip the PcpCombine step for the data
+PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True
+
+# Forecast data description variables
+FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB
+FCST_IS_PROB = false
+
+OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0
+OBS_ENSEMBLE_STAT_WINDOW_END = 0
+
+OBS_FILE_WINDOW_BEGIN = 0
+OBS_FILE_WINDOW_END = 0
+
+# number of expected members for ensemble. Should correspond with the
+# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
+ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]}
+
+# ens.ens_thresh value in the MET config file
+# threshold for ratio of valid files to expected files to allow app to run
+ENSEMBLE_STAT_ENS_THRESH = 0.05
+
+# Used in the MET config file for: regrid to_grid field
+ENSEMBLE_STAT_REGRID_TO_GRID = FCST
+
+ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_03h_{OBTYPE}
+
+ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_APCP
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+ENSEMBLE_STAT_MASK_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required.
+# If the variable is not defined, or the value is not set
+# than the MET default is used.
+ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt
+
+# 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 = APCP
+ENS_VAR1_LEVELS = A03
+ENS_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350
+
+# Forecast 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
+FCST_VAR1_NAME = APCP
+FCST_VAR1_LEVELS = A03
+
+# FIGURE OUT WHAT BIN SIZE SHOULD BE
+FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05;
+
+
+# Observation Variables and levels as specified in the obs field dictionary
+# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS,
+# (optional) OBS_VARn_OPTION
+OBS_VAR1_NAME = {FCST_VAR1_NAME}
+OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS}
+
+OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS}
+
diff --git a/ush/templates/parm/metplus/EnsembleStat_APCP06h.conf b/ush/templates/parm/metplus/EnsembleStat_APCP06h.conf
new file mode 100644
index 0000000000..9f8ddaafd6
--- /dev/null
+++ b/ush/templates/parm/metplus/EnsembleStat_APCP06h.conf
@@ -0,0 +1,172 @@
+# Ensemble Stat Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE}
+FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE}
+
+OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]}
+OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+# Forecast model input directory for ensemble_stat
+FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR}
+
+# Grid observation input dir for ensemble_stat
+OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR}
+
+# Output directory for ensemble_stat
+ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h
+
+[filename_templates]
+# Need to have PCPCombine output data to individual member directories.
+FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
+FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a06h
+
+OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2
+OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h
+
+# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members
+# or a single line, - filename wildcard characters may be used, ? or *.
+FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a06h
+
+# Template to look for grid observations.
+OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE}
+
+ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_06h.conf
+
+[config]
+# Configuration-related settings such as the process list, begin and end times, etc.
+PROCESS_LIST = PcpCombine, EnsembleStat
+
+# Looping by times: steps through each 'task' in the PROCESS_LIST for each
+# defined time, and repeats until all times have been evaluated.
+LOOP_ORDER = times
+
+PCP_COMBINE_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})
+
+# LOOP_BY: Set to INIT to loop over initialization times
+LOOP_BY = INIT
+
+# Format of INIT_BEG and INT_END
+INIT_TIME_FMT = %Y%m%d%H
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+
+# Increment between METplus runs in seconds. Must be >= 60
+INIT_INCREMENT = 3600
+
+# List of forecast leads to process
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Used in the MET config file for: model, output_prefix
+MODEL = {ENV[MODEL]}
+FCST_NATIVE_DATA_TYPE = GRIB
+
+# Name to identify observation data in output
+OBTYPE = CCPA
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# Run pcp_combine on forecast/obs data?
+FCST_PCP_COMBINE_RUN = True
+OBS_PCP_COMBINE_RUN = True
+
+# Mode of pcp_combine to use (SUM, ADD, SUBTRACT)
+FCST_PCP_COMBINE_METHOD = ADD
+OBS_PCP_COMBINE_METHOD = ADD
+
+FCST_PCP_COMBINE_CONSTANT_INIT = True
+
+# Accumulation interval available in forecast data
+FCST_PCP_COMBINE_INPUT_ACCUMS = 01
+FCST_PCP_COMBINE_OUTPUT_ACCUM = 06
+
+# Accumulation interval available in observation data
+OBS_PCP_COMBINE_INPUT_ACCUMS = 01
+OBS_PCP_COMBINE_OUTPUT_ACCUM = 06
+
+# If 'bucket' output already exists, skip the PcpCombine step for the data
+PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True
+
+# Forecast data description variables
+FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB
+FCST_IS_PROB = false
+
+OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0
+OBS_ENSEMBLE_STAT_WINDOW_END = 0
+
+OBS_FILE_WINDOW_BEGIN = 0
+OBS_FILE_WINDOW_END = 0
+
+# number of expected members for ensemble. Should correspond with the
+# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
+ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]}
+
+# ens.ens_thresh value in the MET config file
+# threshold for ratio of valid files to expected files to allow app to run
+ENSEMBLE_STAT_ENS_THRESH = 0.05
+
+# Used in the MET config file for: regrid to_grid field
+ENSEMBLE_STAT_REGRID_TO_GRID = FCST
+
+ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_06h_{OBTYPE}
+
+ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_APCP
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+ENSEMBLE_STAT_MASK_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required.
+# If the variable is not defined, or the value is not set
+# than the MET default is used.
+ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt
+
+# 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 = APCP
+ENS_VAR1_LEVELS = A06
+ENS_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350
+
+# Forecast 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
+FCST_VAR1_NAME = APCP
+FCST_VAR1_LEVELS = A06
+
+# FIGURE OUT WHAT BIN SIZE SHOULD BE
+FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05;
+
+
+# Observation Variables and levels as specified in the obs field dictionary
+# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS,
+# (optional) OBS_VARn_OPTION
+OBS_VAR1_NAME = {FCST_VAR1_NAME}
+OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS}
+
+OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS}
+
diff --git a/ush/templates/parm/metplus/EnsembleStat_APCP24h.conf b/ush/templates/parm/metplus/EnsembleStat_APCP24h.conf
new file mode 100644
index 0000000000..4ce438fbb9
--- /dev/null
+++ b/ush/templates/parm/metplus/EnsembleStat_APCP24h.conf
@@ -0,0 +1,172 @@
+# Ensemble Stat Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE}
+FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE}
+
+OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]}
+OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+# Forecast model input directory for ensemble_stat
+FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR}
+
+# Grid observation input dir for ensemble_stat
+OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR}
+
+# Output directory for ensemble_stat
+ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h
+
+[filename_templates]
+# Need to have PCPCombine output data to individual member directories.
+FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
+FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a24h
+
+OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2
+OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h
+
+# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members
+# or a single line, - filename wildcard characters may be used, ? or *.
+FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a24h
+
+# Template to look for grid observations.
+OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE}
+
+ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_24h.conf
+
+[config]
+# Configuration-related settings such as the process list, begin and end times, etc.
+PROCESS_LIST = PcpCombine, EnsembleStat
+
+# Looping by times: steps through each 'task' in the PROCESS_LIST for each
+# defined time, and repeats until all times have been evaluated.
+LOOP_ORDER = times
+
+PCP_COMBINE_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})
+
+# LOOP_BY: Set to INIT to loop over initialization times
+LOOP_BY = INIT
+
+# Format of INIT_BEG and INT_END
+INIT_TIME_FMT = %Y%m%d%H
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+
+# Increment between METplus runs in seconds. Must be >= 60
+INIT_INCREMENT = 3600
+
+# List of forecast leads to process
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Used in the MET config file for: model, output_prefix
+MODEL = {ENV[MODEL]}
+FCST_NATIVE_DATA_TYPE = GRIB
+
+# Name to identify observation data in output
+OBTYPE = CCPA
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# Run pcp_combine on forecast/obs data?
+FCST_PCP_COMBINE_RUN = True
+OBS_PCP_COMBINE_RUN = True
+
+# Mode of pcp_combine to use (SUM, ADD, SUBTRACT)
+FCST_PCP_COMBINE_METHOD = ADD
+OBS_PCP_COMBINE_METHOD = ADD
+
+FCST_PCP_COMBINE_CONSTANT_INIT = True
+
+# Accumulation interval available in forecast data
+FCST_PCP_COMBINE_INPUT_ACCUMS = 01
+FCST_PCP_COMBINE_OUTPUT_ACCUM = 24
+
+# Accumulation interval available in observation data
+OBS_PCP_COMBINE_INPUT_ACCUMS = 01
+OBS_PCP_COMBINE_OUTPUT_ACCUM = 24
+
+# If 'bucket' output already exists, skip the PcpCombine step for the data
+PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True
+
+# Forecast data description variables
+FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB
+FCST_IS_PROB = false
+
+OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0
+OBS_ENSEMBLE_STAT_WINDOW_END = 0
+
+OBS_FILE_WINDOW_BEGIN = 0
+OBS_FILE_WINDOW_END = 0
+
+# number of expected members for ensemble. Should correspond with the
+# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
+ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]}
+
+# ens.ens_thresh value in the MET config file
+# threshold for ratio of valid files to expected files to allow app to run
+ENSEMBLE_STAT_ENS_THRESH = 0.05
+
+# Used in the MET config file for: regrid to_grid field
+ENSEMBLE_STAT_REGRID_TO_GRID = FCST
+
+ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_24h_{OBTYPE}
+
+ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_APCP
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+ENSEMBLE_STAT_MASK_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required.
+# If the variable is not defined, or the value is not set
+# than the MET default is used.
+ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt
+
+# 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 = APCP
+ENS_VAR1_LEVELS = A24
+ENS_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350
+
+# Forecast 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
+FCST_VAR1_NAME = APCP
+FCST_VAR1_LEVELS = A24
+
+# FIGURE OUT WHAT BIN SIZE SHOULD BE
+FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05;
+
+
+# Observation Variables and levels as specified in the obs field dictionary
+# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS,
+# (optional) OBS_VARn_OPTION
+OBS_VAR1_NAME = {FCST_VAR1_NAME}
+OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS}
+
+OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS}
+
diff --git a/ush/templates/parm/metplus/EnsembleStat_REFC.conf b/ush/templates/parm/metplus/EnsembleStat_REFC.conf
new file mode 100644
index 0000000000..393f6037bd
--- /dev/null
+++ b/ush/templates/parm/metplus/EnsembleStat_REFC.conf
@@ -0,0 +1,119 @@
+# Ensemble Stat Grid to Grid REFC Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+# Forecast model input directory for ensemble_stat
+FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE}
+
+# Grid observation input dir for ensemble_stat
+OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]}
+
+# output directory for ensemble_stat
+ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/REFC
+
+[filename_templates]
+# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members
+# or a single line, - filename wildcard characters may be used, ? or *.
+FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
+
+# Template to look for grid observations.
+OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2
+
+ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat
+
+ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_REFC.conf
+
+[config]
+
+## Configuration-related settings such as the process list, begin and end times, etc.
+PROCESS_LIST = EnsembleStat
+
+# Looping by times: steps through each 'task' in the PROCESS_LIST for each
+# defined time, and repeats until all times have been evaluated.
+LOOP_ORDER = times
+
+# LOOP_BY: Set to INIT to loop over initialization times
+LOOP_BY = INIT
+
+# Format of INIT_BEG and INT_END
+INIT_TIME_FMT = %Y%m%d%H
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+
+# Increment between METplus runs in seconds. Must be >= 60
+INIT_INCREMENT = 3600
+
+# List of forecast leads to process
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Used in the MET config file for: model, output_prefix
+MODEL = {ENV[MODEL]}
+
+# Name to identify observation data in output
+OBTYPE = MRMS
+
+OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0
+OBS_ENSEMBLE_STAT_WINDOW_END = 0
+
+OBS_FILE_WINDOW_BEGIN = -300
+OBS_FILE_WINDOW_END = 300
+
+# number of expected members for ensemble. Should correspond with the
+# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
+ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]}
+
+# ens.ens_thresh value in the MET config file
+# threshold for ratio of valid files to expected files to allow app to run
+ENSEMBLE_STAT_ENS_THRESH = 0.05
+
+# Used in the MET config file for: regrid to_grid field
+ENSEMBLE_STAT_REGRID_TO_GRID = FCST
+
+ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_REFC_{OBTYPE}
+
+ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_REFC
+
+# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required.
+# If the variable is not defined, or the value is not set
+# than the MET default is used.
+ENSEMBLE_STAT_MET_OBS_ERR_TABLE =
+
+# 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 = REFC
+ENS_VAR1_LEVELS = L0
+ENS_VAR1_THRESH = ge20, ge30, ge40, ge50
+
+# Forecast 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
+FCST_VAR1_NAME = REFC
+FCST_VAR1_LEVELS = L0
+
+FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05;
+
+
+# Observation Variables and levels as specified in the obs field dictionary
+# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS,
+# (optional) OBS_VARn_OPTION
+
+OBS_VAR1_NAME = MergedReflectivityQCComposite
+OBS_VAR1_LEVELS = Z500
+OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05;
+
diff --git a/ush/templates/parm/metplus/EnsembleStat_RETOP.conf b/ush/templates/parm/metplus/EnsembleStat_RETOP.conf
new file mode 100644
index 0000000000..a90a9c7549
--- /dev/null
+++ b/ush/templates/parm/metplus/EnsembleStat_RETOP.conf
@@ -0,0 +1,118 @@
+# Ensemble Stat Grid to Grid RETOP Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+# Forecast model input directory for ensemble_stat
+FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE}
+
+# Grid observation input dir for ensemble_stat
+OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]}
+
+# output directory for ensemble_stat
+ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/RETOP
+
+[filename_templates]
+# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members
+# or a single line, - filename wildcard characters may be used, ? or *.
+FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
+
+# Template to look for grid observations.
+OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2
+
+ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat
+
+ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_RETOP.conf
+
+[config]
+
+## Configuration-related settings such as the process list, begin and end times, etc.
+PROCESS_LIST = EnsembleStat
+
+# Looping by times: steps through each 'task' in the PROCESS_LIST for each
+# defined time, and repeats until all times have been evaluated.
+LOOP_ORDER = times
+
+# LOOP_BY: Set to INIT to loop over initialization times
+LOOP_BY = INIT
+
+# Format of INIT_BEG and INT_END
+INIT_TIME_FMT = %Y%m%d%H
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+
+# Increment between METplus runs in seconds. Must be >= 60
+INIT_INCREMENT = 3600
+
+# List of forecast leads to process
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Used in the MET config file for: model, output_prefix
+MODEL = {ENV[MODEL]}
+
+# Name to identify observation data in output
+OBTYPE = MRMS
+
+OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0
+OBS_ENSEMBLE_STAT_WINDOW_END = 0
+
+OBS_FILE_WINDOW_BEGIN = -300
+OBS_FILE_WINDOW_END = 300
+
+# number of expected members for ensemble. Should correspond with the
+# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
+ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]}
+
+# ens.ens_thresh value in the MET config file
+# threshold for ratio of valid files to expected files to allow app to run
+ENSEMBLE_STAT_ENS_THRESH = 0.05
+
+# Used in the MET config file for: regrid to_grid field
+ENSEMBLE_STAT_REGRID_TO_GRID = FCST
+
+ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_RETOP_{OBTYPE}
+
+ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_REFC
+
+# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required.
+# If the variable is not defined, or the value is not set
+# than the MET default is used.
+ENSEMBLE_STAT_MET_OBS_ERR_TABLE =
+
+# 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 = RETOP
+ENS_VAR1_LEVELS = L0
+ENS_VAR1_THRESH = ge20, ge30, ge40, ge50
+ENS_VAR1_OPTIONS = convert(x) = M_to_KFT(x);
+
+# Forecast 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
+FCST_VAR1_NAME = RETOP
+FCST_VAR1_LEVELS = L0
+FCST_VAR1_OPTIONS = convert(x) = M_to_KFT(x); ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05;
+
+# Observation Variables and levels as specified in the obs field dictionary
+# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS,
+# (optional) OBS_VARn_OPTION
+
+OBS_VAR1_NAME = EchoTop18
+OBS_VAR1_LEVELS = Z500
+OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x); ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05;
+
diff --git a/ush/templates/parm/metplus/EnsembleStat_conus_sfc.conf b/ush/templates/parm/metplus/EnsembleStat_conus_sfc.conf
new file mode 100644
index 0000000000..09d2572d72
--- /dev/null
+++ b/ush/templates/parm/metplus/EnsembleStat_conus_sfc.conf
@@ -0,0 +1,170 @@
+# Ensemble Stat Grid to Point Precipitation Example
+
+[dir]
+# Input and output directories for pb2nc
+PB2NC_INPUT_DIR = {ENV[OBS_DIR]}
+PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc
+
+# Input directory for ensemble_stat
+FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}
+
+# Point observation input dir for ensemble_stat (can also set grid obs)
+OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
+
+# Output directory for ensemble_stat
+OUTPUT_BASE = {ENV[EXPTDIR]}
+ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc
+
+[filename_templates]
+
+# Input and output templates for pb2nc
+PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}
+PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+# Input template for EnsembleStat can also be defined using a single
+# member with wildcard characters to find multiple files
+FCST_ENSEMBLE_STAT_INPUT_TEMPLATE =
+ mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
+
+OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {PB2NC_OUTPUT_TEMPLATE}
+
+ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.conus_surface.conf
+
+# Location of MET poly files
+#ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+[config]
+# Configuration-related settings such as the process list, begin and end times, etc.
+PROCESS_LIST = PB2NC, EnsembleStat
+
+# Time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# List of forecast leads to process.
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Order of loops to process data - Options are times, processes
+LOOP_ORDER = times
+
+# The MET ensemble_stat logging level
+LOG_ENSEMBLE_STAT_VERBOSITY = 3
+
+# MET Configuration files for pb2nc
+PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig
+
+# if True, pb2nc will skip processing a file if the output already exists
+# used to speed up runs and reduce redundancy
+PB2NC_SKIP_IF_OUTPUT_EXISTS = True
+
+# Values to pass to pb2nc config file using environment variables of the same name.
+PB2NC_GRID =
+PB2NC_POLY =
+PB2NC_STATION_ID =
+PB2NC_MESSAGE_TYPE =
+
+# Leave empty to process all
+# PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL
+PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND
+
+# False for no time summary, True otherwise
+PB2NC_TIME_SUMMARY_FLAG = False
+PB2NC_TIME_SUMMARY_BEG = 000000 ;; start time of time summary in HHMMSS format
+PB2NC_TIME_SUMMARY_END = 235959 ;; end time of time summary in HHMMSS format
+PB2NC_TIME_SUMMARY_VAR_NAMES = PMO,TOB,TDO,UOB,VOB,PWO,TOCC
+PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 ;; a list of the statistics to summarize
+
+# For both PB2NC and ensemble_stat
+OBS_WINDOW_BEGIN = -1799
+OBS_WINDOW_END = 1800
+
+PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN}
+PB2NC_WINDOW_END = {OBS_WINDOW_END}
+
+OBS_ENSEMBLE_STAT_WINDOW_BEGIN = {OBS_WINDOW_BEGIN}
+OBS_ENSEMBLE_STAT_WINDOW_END = {OBS_WINDOW_END}
+
+# number of expected members for ensemble. Should correspond with the
+# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
+ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]}
+
+# ens.ens_thresh value in the MET config file
+# threshold for ratio of valid files to expected files to allow app to run
+ENSEMBLE_STAT_ENS_THRESH = 0.05
+
+# Used in the MET config file for: regrid to_grid field
+ENSEMBLE_STAT_REGRID_TO_GRID = NONE
+
+ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_point
+
+# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc.
+MODEL = {ENV[MODEL]}
+OBTYPE = NDAS
+
+# Used in the MET config file
+ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+ENSEMBLE_STAT_MASK_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# MET_OBS_ERR_TABLE is not required.
+# If the variable is not defined, or the value is not set
+# than the MET default is used.
+ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt
+
+# Variables and levels as specified in the field dictionary of the MET
+# configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS,
+# (optional) FCST_VARn_OPTION
+
+ENS_VAR1_NAME = TMP
+ENS_VAR1_LEVELS = Z02
+ENS_VAR1_THRESH = >=293, >=298, >=303
+
+ENS_VAR2_NAME = DPT
+ENS_VAR2_LEVELS = Z2
+ENS_VAR2_THRESH = >=288, >=293, >=298
+
+ENS_VAR3_NAME = WIND
+ENS_VAR3_LEVELS = Z10
+ENS_VAR3_THRESH = >=5, >=10
+ENS_VAR3_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind
+
+BOTH_VAR1_NAME = TMP
+BOTH_VAR1_LEVELS = Z2
+BOTH_VAR1_THRESH = >=293, >=298, >=303
+
+BOTH_VAR2_NAME = DPT
+BOTH_VAR2_LEVELS = Z2
+BOTH_VAR2_THRESH = >=288, >=293, >=298
+
+BOTH_VAR3_NAME = WIND
+BOTH_VAR3_LEVELS = Z10
+BOTH_VAR3_THRESH = >=5, >=10
+BOTH_VAR3_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind
+
+ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADPSFC_{OBTYPE}
diff --git a/ush/templates/parm/metplus/EnsembleStat_upper_air.conf b/ush/templates/parm/metplus/EnsembleStat_upper_air.conf
new file mode 100644
index 0000000000..19d982ecd4
--- /dev/null
+++ b/ush/templates/parm/metplus/EnsembleStat_upper_air.conf
@@ -0,0 +1,173 @@
+# Ensemble Stat Grid to Point Precipitation Example
+
+[dir]
+# Input and output directories for pb2nc
+PB2NC_INPUT_DIR = {ENV[OBS_DIR]}
+PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc
+
+# Input directory for ensemble_stat
+FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}
+
+# Point observation input dir for ensemble_stat (can also set grid obs)
+OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
+
+# Output directory for ensemble_stat
+OUTPUT_BASE = {ENV[EXPTDIR]}
+ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/upper_air
+
+[filename_templates]
+
+# Input and output templates for pb2nc
+PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}
+PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+# Input ensemble template - comma separated list of ensemble members
+#FCST_ENSEMBLE_STAT_INPUT_TEMPLATE =
+# mem01/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2,
+# mem02/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2,
+
+# Input template for EnsembleStat can also be defined using a single
+# member with wildcard characters to find multiple files
+FCST_ENSEMBLE_STAT_INPUT_TEMPLATE =
+ mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
+
+OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {PB2NC_OUTPUT_TEMPLATE}
+
+ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.upper_air.conf
+
+# Location of MET poly files
+#ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+[config]
+# Configuration-related settings such as the process list, begin and end times, etc.
+PROCESS_LIST = PB2NC, EnsembleStat
+
+# Time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# List of forecast leads to process.
+LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6)
+
+# Order of loops to process data - Options are times, processes
+LOOP_ORDER = times
+
+# The MET ensemble_stat logging level
+LOG_ENSEMBLE_STAT_VERBOSITY = 3
+
+# MET Configuration files for pb2nc
+PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig
+
+# if True, pb2nc will skip processing a file if the output already exists
+# used to speed up runs and reduce redundancy
+PB2NC_SKIP_IF_OUTPUT_EXISTS = True
+
+# Values to pass to pb2nc config file using environment variables of the same name.
+PB2NC_GRID =
+PB2NC_POLY =
+PB2NC_STATION_ID =
+PB2NC_MESSAGE_TYPE =
+
+# Leave empty to process all
+# PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL
+PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND
+
+# False for no time summary, True otherwise
+PB2NC_TIME_SUMMARY_FLAG = False
+PB2NC_TIME_SUMMARY_BEG = 000000 ;; start time of time summary in HHMMSS format
+PB2NC_TIME_SUMMARY_END = 235959 ;; end time of time summary in HHMMSS format
+PB2NC_TIME_SUMMARY_VAR_NAMES = PMO,TOB,TDO,UOB,VOB,PWO,TOCC
+PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 ;; a list of the statistics to summarize
+
+# For both PB2NC and ensemble_stat
+OBS_WINDOW_BEGIN = -1799
+OBS_WINDOW_END = 1800
+
+PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN}
+PB2NC_WINDOW_END = {OBS_WINDOW_END}
+
+OBS_ENSEMBLE_STAT_WINDOW_BEGIN = {OBS_WINDOW_BEGIN}
+OBS_ENSEMBLE_STAT_WINDOW_END = {OBS_WINDOW_END}
+
+# number of expected members for ensemble. Should correspond with the
+# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
+ENSEMBLE_STAT_N_MEMBERS = 10
+
+# ens.ens_thresh value in the MET config file
+# threshold for ratio of valid files to expected files to allow app to run
+ENSEMBLE_STAT_ENS_THRESH = 0.05
+
+# Used in the MET config file for: regrid to_grid field
+ENSEMBLE_STAT_REGRID_TO_GRID = NONE
+
+ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_point
+
+# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc.
+MODEL = {ENV[MODEL]}
+OBTYPE = NDAS
+
+# Used in the MET config file
+ENSEMBLE_STAT_MESSAGE_TYPE = ADPUPA
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+ENSEMBLE_STAT_MASK_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# MET_OBS_ERR_TABLE is not required.
+# If the variable is not defined, or the value is not set
+# than the MET default is used.
+ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt
+
+# Variables and levels as specified in the field dictionary of the MET
+# configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS,
+# (optional) FCST_VARn_OPTION
+
+ENS_VAR1_NAME = TMP
+ENS_VAR1_LEVELS = P850
+ENS_VAR1_THRESH = >=288, >=293, >=298
+
+ENS_VAR2_NAME = DPT
+ENS_VAR2_LEVELS = P850
+ENS_VAR2_THRESH = >=283, >=288, >=293
+
+ENS_VAR3_NAME = WIND
+ENS_VAR3_LEVELS = P850
+ENS_VAR3_THRESH = >=5, >=10
+
+BOTH_VAR1_NAME = TMP
+BOTH_VAR1_LEVELS = P850
+BOTH_VAR1_THRESH = >=288, >=293, >=298
+
+BOTH_VAR2_NAME = DPT
+BOTH_VAR2_LEVELS = P850
+BOTH_VAR2_THRESH = >=283, >=288, >=293
+
+BOTH_VAR3_NAME = WIND
+BOTH_VAR3_LEVELS = P850
+BOTH_VAR3_THRESH = >=5, >=10
+
+ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADPUPA_{OBTYPE}
diff --git a/ush/templates/parm/metplus/GridStat_APCP01h_mean.conf b/ush/templates/parm/metplus/GridStat_APCP01h_mean.conf
new file mode 100644
index 0000000000..16cd58e7fb
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_APCP01h_mean.conf
@@ -0,0 +1,95 @@
+# Ensemble Mean Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h_mean
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.APCP01.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_mean
+FCST_NATIVE_DATA_TYPE = GRIB
+
+# Set obtype to vx
+OBTYPE = CCPA
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_mean
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_01h_{OBTYPE}_mean
+
+# run pcp_combine on forecast/obs data?
+FCST_PCP_COMBINE_RUN = False
+OBS_PCP_COMBINE_RUN = False
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0"
+FCST_VAR1_NAME = APCP_01_A01_ENS_MEAN
+FCST_VAR1_LEVELS = A01
+
+BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54
+
+OBS_VAR1_NAME = APCP
+OBS_VAR1_LEVELS = A01
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = False
+
diff --git a/ush/templates/parm/metplus/GridStat_APCP01h_prob.conf b/ush/templates/parm/metplus/GridStat_APCP01h_prob.conf
new file mode 100644
index 0000000000..81b3d9a6d6
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_APCP01h_prob.conf
@@ -0,0 +1,129 @@
+# Ensemble Prob Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h_prob
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.APCP01.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_prob
+FCST_NATIVE_DATA_TYPE = GRIB
+
+# Set obtype to vx
+OBTYPE = CCPA
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_prob
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_01h_{OBTYPE}_prob
+
+# run pcp_combine on forecast/obs data?
+FCST_PCP_COMBINE_RUN = False
+OBS_PCP_COMBINE_RUN = False
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0"
+#
+FCST_VAR1_NAME = APCP_01_A01_ENS_FREQ_gt0.0
+FCST_VAR1_LEVELS = A01
+FCST_VAR1_THRESH = ==0.1
+
+OBS_VAR1_NAME = APCP
+OBS_VAR1_LEVELS = A01
+OBS_VAR1_THRESH = >0.0
+
+FCST_VAR2_NAME = APCP_01_A01_ENS_FREQ_ge0.254
+FCST_VAR2_LEVELS = A01
+FCST_VAR2_THRESH = ==0.1
+
+OBS_VAR2_NAME = APCP
+OBS_VAR2_LEVELS = A01
+OBS_VAR2_THRESH = >=0.254
+
+FCST_VAR3_NAME = APCP_01_A01_ENS_FREQ_ge0.508
+FCST_VAR3_LEVELS = A01
+FCST_VAR3_THRESH = ==0.1
+
+OBS_VAR3_NAME = APCP
+OBS_VAR3_LEVELS = A01
+OBS_VAR3_THRESH = >=0.508
+
+FCST_VAR4_NAME = APCP_01_A01_ENS_FREQ_ge1.27
+FCST_VAR4_LEVELS = A01
+FCST_VAR4_THRESH = ==0.1
+
+OBS_VAR4_NAME = APCP
+OBS_VAR4_LEVELS = A01
+OBS_VAR4_THRESH = >=1.27
+
+FCST_VAR5_NAME = APCP_01_A01_ENS_FREQ_ge2.54
+FCST_VAR5_LEVELS = A01
+FCST_VAR5_THRESH = ==0.1
+
+OBS_VAR5_NAME = APCP
+OBS_VAR5_LEVELS = A01
+OBS_VAR5_THRESH = >=2.54
+
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = True
+FCST_PROB_IN_GRIB_PDS = False
diff --git a/ush/templates/parm/metplus/GridStat_APCP03h_mean.conf b/ush/templates/parm/metplus/GridStat_APCP03h_mean.conf
new file mode 100644
index 0000000000..536ce241f4
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_APCP03h_mean.conf
@@ -0,0 +1,89 @@
+# Ensemble Mean Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h_mean
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.APCP03.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_mean
+
+# Set obtype to vx
+OBTYPE = CCPA
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_mean
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_03h_{OBTYPE}_mean
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0"
+FCST_VAR1_NAME = APCP_A3_ENS_MEAN
+FCST_VAR1_LEVELS = A3
+
+BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350
+
+OBS_VAR1_NAME = APCP
+OBS_VAR1_LEVELS = A3
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = False
+
diff --git a/ush/templates/parm/metplus/GridStat_APCP03h_prob.conf b/ush/templates/parm/metplus/GridStat_APCP03h_prob.conf
new file mode 100644
index 0000000000..984eba7f01
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_APCP03h_prob.conf
@@ -0,0 +1,138 @@
+# Ensemble Prob Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h_prob
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.APCP03.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_prob
+
+# Set obtype to vx
+OBTYPE = CCPA
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_prob
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_03h_{OBTYPE}_prob
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0"
+FCST_VAR1_NAME = APCP_A3_ENS_FREQ_gt0.0
+FCST_VAR1_LEVELS = A03
+FCST_VAR1_THRESH = ==0.1
+
+OBS_VAR1_NAME = APCP
+OBS_VAR1_LEVELS = A03
+OBS_VAR1_THRESH = >0.0
+
+FCST_VAR2_NAME = APCP_A3_ENS_FREQ_ge0.254
+FCST_VAR2_LEVELS = A03
+FCST_VAR2_THRESH = ==0.1
+
+OBS_VAR2_NAME = APCP
+OBS_VAR2_LEVELS = A03
+OBS_VAR2_THRESH = >=0.254
+
+FCST_VAR3_NAME = APCP_A3_ENS_FREQ_ge0.508
+FCST_VAR3_LEVELS = A03
+FCST_VAR3_THRESH = ==0.1
+
+OBS_VAR3_NAME = APCP
+OBS_VAR3_LEVELS = A03
+OBS_VAR3_THRESH = >=0.508
+
+FCST_VAR4_NAME = APCP_A3_ENS_FREQ_ge1.27
+FCST_VAR4_LEVELS = A03
+FCST_VAR4_THRESH = ==0.1
+
+OBS_VAR4_NAME = APCP
+OBS_VAR4_LEVELS = A03
+OBS_VAR4_THRESH = >=1.27
+
+FCST_VAR5_NAME = APCP_A3_ENS_FREQ_ge2.54
+FCST_VAR5_LEVELS = A03
+FCST_VAR5_THRESH = ==0.1
+
+OBS_VAR5_NAME = APCP
+OBS_VAR5_LEVELS = A03
+OBS_VAR5_THRESH = >=2.54
+
+FCST_VAR6_NAME = APCP_A3_ENS_FREQ_ge3.810
+FCST_VAR6_LEVELS = A03
+FCST_VAR6_THRESH = ==0.1
+
+OBS_VAR6_NAME = APCP
+OBS_VAR6_LEVELS = A03
+OBS_VAR6_THRESH = >=3.810
+
+FCST_VAR7_NAME = APCP_A3_ENS_FREQ_ge6.350
+FCST_VAR7_LEVELS = A03
+FCST_VAR7_THRESH = ==0.1
+
+OBS_VAR7_NAME = APCP
+OBS_VAR7_LEVELS = A03
+OBS_VAR7_THRESH = >=6.350
+
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = True
+FCST_PROB_IN_GRIB_PDS = False
diff --git a/ush/templates/parm/metplus/GridStat_APCP06h_mean.conf b/ush/templates/parm/metplus/GridStat_APCP06h_mean.conf
new file mode 100644
index 0000000000..b10707f0fa
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_APCP06h_mean.conf
@@ -0,0 +1,89 @@
+# Ensemble Mean Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h_mean
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.APCP06.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_mean
+
+# Set obtype to vx
+OBTYPE = CCPA
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_mean
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_06h_{OBTYPE}_mean
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0"
+FCST_VAR1_NAME = APCP_A6_ENS_MEAN
+FCST_VAR1_LEVELS = A06
+
+BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350
+
+OBS_VAR1_NAME = APCP
+OBS_VAR1_LEVELS = A06
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = False
+
diff --git a/ush/templates/parm/metplus/GridStat_APCP06h_prob.conf b/ush/templates/parm/metplus/GridStat_APCP06h_prob.conf
new file mode 100644
index 0000000000..7c5e086721
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_APCP06h_prob.conf
@@ -0,0 +1,138 @@
+# Ensemble Prob Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h_prob
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.APCP06.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_prob
+
+# Set obtype to vx
+OBTYPE = CCPA
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_prob
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_06h_{OBTYPE}_prob
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0"
+FCST_VAR1_NAME = APCP_A6_ENS_FREQ_gt0.0
+FCST_VAR1_LEVELS = A06
+FCST_VAR1_THRESH = ==0.1
+
+OBS_VAR1_NAME = APCP
+OBS_VAR1_LEVELS = A06
+OBS_VAR1_THRESH = >0.0
+
+FCST_VAR2_NAME = APCP_A6_ENS_FREQ_ge0.254
+FCST_VAR2_LEVELS = A06
+FCST_VAR2_THRESH = ==0.1
+
+OBS_VAR2_NAME = APCP
+OBS_VAR2_LEVELS = A06
+OBS_VAR2_THRESH = >=0.254
+
+FCST_VAR3_NAME = APCP_A6_ENS_FREQ_ge0.508
+FCST_VAR3_LEVELS = A06
+FCST_VAR3_THRESH = ==0.1
+
+OBS_VAR3_NAME = APCP
+OBS_VAR3_LEVELS = A06
+OBS_VAR3_THRESH = >=0.508
+
+FCST_VAR4_NAME = APCP_A6_ENS_FREQ_ge1.27
+FCST_VAR4_LEVELS = A06
+FCST_VAR4_THRESH = ==0.1
+
+OBS_VAR4_NAME = APCP
+OBS_VAR4_LEVELS = A06
+OBS_VAR4_THRESH = >=1.27
+
+FCST_VAR5_NAME = APCP_A6_ENS_FREQ_ge2.54
+FCST_VAR5_LEVELS = A06
+FCST_VAR5_THRESH = ==0.1
+
+OBS_VAR5_NAME = APCP
+OBS_VAR5_LEVELS = A06
+OBS_VAR5_THRESH = >=2.54
+
+FCST_VAR6_NAME = APCP_A6_ENS_FREQ_ge3.810
+FCST_VAR6_LEVELS = A06
+FCST_VAR6_THRESH = ==0.1
+
+OBS_VAR6_NAME = APCP
+OBS_VAR6_LEVELS = A06
+OBS_VAR6_THRESH = >=3.810
+
+FCST_VAR7_NAME = APCP_A6_ENS_FREQ_ge6.350
+FCST_VAR7_LEVELS = A06
+FCST_VAR7_THRESH = ==0.1
+
+OBS_VAR7_NAME = APCP
+OBS_VAR7_LEVELS = A06
+OBS_VAR7_THRESH = >=6.350
+
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = True
+FCST_PROB_IN_GRIB_PDS = False
diff --git a/ush/templates/parm/metplus/GridStat_APCP24h_mean.conf b/ush/templates/parm/metplus/GridStat_APCP24h_mean.conf
new file mode 100644
index 0000000000..aa0c53e210
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_APCP24h_mean.conf
@@ -0,0 +1,89 @@
+# Ensemble Mean Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h_mean
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.APCP24.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_mean
+
+# Set obtype to vx
+OBTYPE = CCPA
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_mean
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_24h_{OBTYPE}_mean
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0"
+FCST_VAR1_NAME = APCP_A24_ENS_MEAN
+FCST_VAR1_LEVELS = A24
+
+BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350
+
+OBS_VAR1_NAME = APCP
+OBS_VAR1_LEVELS = A24
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = False
+
diff --git a/ush/templates/parm/metplus/GridStat_APCP24h_prob.conf b/ush/templates/parm/metplus/GridStat_APCP24h_prob.conf
new file mode 100644
index 0000000000..26d6e6368b
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_APCP24h_prob.conf
@@ -0,0 +1,138 @@
+# Ensemble Prob Grid to Grid Precipitation Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h_prob
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.APCP24.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_prob
+
+# Set obtype to vx
+OBTYPE = CCPA
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_prob
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_24h_{OBTYPE}_prob
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0"
+FCST_VAR1_NAME = APCP_A24_ENS_FREQ_gt0.0
+FCST_VAR1_LEVELS = A24
+FCST_VAR1_THRESH = ==0.1
+
+OBS_VAR1_NAME = APCP
+OBS_VAR1_LEVELS = A24
+OBS_VAR1_THRESH = >0.0
+
+FCST_VAR2_NAME = APCP_A24_ENS_FREQ_ge0.254
+FCST_VAR2_LEVELS = A24
+FCST_VAR2_THRESH = ==0.1
+
+OBS_VAR2_NAME = APCP
+OBS_VAR2_LEVELS = A24
+OBS_VAR2_THRESH = >=0.254
+
+FCST_VAR3_NAME = APCP_A24_ENS_FREQ_ge0.508
+FCST_VAR3_LEVELS = A24
+FCST_VAR3_THRESH = ==0.1
+
+OBS_VAR3_NAME = APCP
+OBS_VAR3_LEVELS = A24
+OBS_VAR3_THRESH = >=0.508
+
+FCST_VAR4_NAME = APCP_A24_ENS_FREQ_ge1.27
+FCST_VAR4_LEVELS = A24
+FCST_VAR4_THRESH = ==0.1
+
+OBS_VAR4_NAME = APCP
+OBS_VAR4_LEVELS = A24
+OBS_VAR4_THRESH = >=1.27
+
+FCST_VAR5_NAME = APCP_A24_ENS_FREQ_ge2.54
+FCST_VAR5_LEVELS = A24
+FCST_VAR5_THRESH = ==0.1
+
+OBS_VAR5_NAME = APCP
+OBS_VAR5_LEVELS = A24
+OBS_VAR5_THRESH = >=2.54
+
+FCST_VAR6_NAME = APCP_A24_ENS_FREQ_ge3.810
+FCST_VAR6_LEVELS = A24
+FCST_VAR6_THRESH = ==0.1
+
+OBS_VAR6_NAME = APCP
+OBS_VAR6_LEVELS = A24
+OBS_VAR6_THRESH = >=3.810
+
+FCST_VAR7_NAME = APCP_A24_ENS_FREQ_ge6.350
+FCST_VAR7_LEVELS = A24
+FCST_VAR7_THRESH = ==0.1
+
+OBS_VAR7_NAME = APCP
+OBS_VAR7_LEVELS = A24
+OBS_VAR7_THRESH = >=6.350
+
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = True
+FCST_PROB_IN_GRIB_PDS = False
diff --git a/ush/templates/parm/metplus/GridStat_REFC_mean.conf b/ush/templates/parm/metplus/GridStat_REFC_mean.conf
new file mode 100644
index 0000000000..098e2c0102
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_REFC_mean.conf
@@ -0,0 +1,94 @@
+# Ensemble Mean Composite Reflectivity Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/REFC_mean
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_REFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+# ANLYS
+OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.REFC.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+#LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_mean
+
+# Set obtype to vx
+OBTYPE = MRMS
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC_mean
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_REFC_{OBTYPE}_mean
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# Forecast/Observation variable Information
+FCST_VAR1_NAME = REFC_L0_ENS_MEAN
+FCST_VAR1_LEVELS = L0
+
+BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50
+
+OBS_VAR1_NAME = MergedReflectivityQCComposite
+OBS_VAR1_LEVELS = Z500
+OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION;
+
+OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300
+OBS_GRID_STAT_FILE_WINDOW_END = 300
+
+# Neighborhood shape and width
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7
+
+# Forecast data description variables
+FCST_IS_PROB = False
+
diff --git a/ush/templates/parm/metplus/GridStat_REFC_prob.conf b/ush/templates/parm/metplus/GridStat_REFC_prob.conf
new file mode 100644
index 0000000000..d6ad7452a2
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_REFC_prob.conf
@@ -0,0 +1,122 @@
+# Ensemble Prob Grid to Grid Composite Reflectivity Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/REFC_prob
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_REFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.REFC.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_prob
+FCST_NATIVE_DATA_TYPE = GRIB
+
+# Set obtype to vx
+OBTYPE = MRMS
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC_prob
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_REFC_{OBTYPE}_prob
+
+# run pcp_combine on forecast/obs data?
+FCST_PCP_COMBINE_RUN = False
+OBS_PCP_COMBINE_RUN = False
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+FCST_VAR1_NAME = REFC_L0_ENS_FREQ_ge20
+FCST_VAR1_LEVELS = L0
+FCST_VAR1_THRESH = ==0.1
+
+OBS_VAR1_NAME = MergedReflectivityQCComposite
+OBS_VAR1_LEVELS = Z500
+OBS_VAR1_THRESH = >=20.0
+OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION;
+
+FCST_VAR2_NAME = REFC_L0_ENS_FREQ_ge30
+FCST_VAR2_LEVELS = L0
+FCST_VAR2_THRESH = ==0.1
+
+OBS_VAR2_NAME = MergedReflectivityQCComposite
+OBS_VAR2_LEVELS = Z500
+OBS_VAR2_THRESH = >=30.0
+OBS_VAR2_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION;
+
+FCST_VAR3_NAME = REFC_L0_ENS_FREQ_ge40
+FCST_VAR3_LEVELS = L0
+FCST_VAR3_THRESH = ==0.1
+
+OBS_VAR3_NAME = MergedReflectivityQCComposite
+OBS_VAR3_LEVELS = Z500
+OBS_VAR3_THRESH = >=40.0
+OBS_VAR3_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION;
+
+FCST_VAR4_NAME = REFC_L0_ENS_FREQ_ge50
+FCST_VAR4_LEVELS = L0
+FCST_VAR4_THRESH = ==0.1
+
+OBS_VAR4_NAME = MergedReflectivityQCComposite
+OBS_VAR4_LEVELS = Z500
+OBS_VAR4_THRESH = >=50.0
+OBS_VAR4_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION;
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = True
+FCST_PROB_IN_GRIB_PDS = False
diff --git a/ush/templates/parm/metplus/GridStat_RETOP_mean.conf b/ush/templates/parm/metplus/GridStat_RETOP_mean.conf
new file mode 100644
index 0000000000..6755ff2ee6
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_RETOP_mean.conf
@@ -0,0 +1,95 @@
+# Ensemble Mean Composite RETOP Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/RETOP_mean
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_RETOP_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+# ANLYS
+OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.RETOP.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+#LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_mean
+
+# Set obtype to vx
+OBTYPE = MRMS
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC_mean
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_RETOP_{OBTYPE}_mean
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# Forecast/Observation variable Information
+FCST_VAR1_NAME = RETOP_L0_ENS_MEAN
+FCST_VAR1_LEVELS = L0
+FCST_VAR1_OPTIONS = convert(x) = M_to_KFT(x);
+
+BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50
+
+OBS_VAR1_NAME = EchoTop18
+OBS_VAR1_LEVELS = Z500
+OBS_VAR1_OPTIONS = censor_thresh = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x);
+
+OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300
+OBS_GRID_STAT_FILE_WINDOW_END = 300
+
+# Neighborhood shape and width
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7
+
+# Forecast data description variables
+FCST_IS_PROB = False
+
diff --git a/ush/templates/parm/metplus/GridStat_RETOP_prob.conf b/ush/templates/parm/metplus/GridStat_RETOP_prob.conf
new file mode 100644
index 0000000000..41741a067b
--- /dev/null
+++ b/ush/templates/parm/metplus/GridStat_RETOP_prob.conf
@@ -0,0 +1,122 @@
+# Ensemble Prob Grid to Grid Composite RETOP Example
+
+[dir]
+# Input and output data directories
+INPUT_BASE = {ENV[INPUT_BASE]}
+OUTPUT_BASE = {ENV[EXPTDIR]}
+
+FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
+OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+
+GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {OUTPUT_BASE}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/RETOP_prob
+
+[filename_templates]
+# format of filenames
+FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_RETOP_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+
+OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2
+
+GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob
+
+# Location of MET poly files
+GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.RETOP.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = GridStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+# LEAD_SEQ = begin_end_incr(1,24,1)
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Options are times, processes
+# times = run all items in the PROCESS_LIST for a single initialization
+# time, then repeat until all times have been evaluated.
+# processes = run each item in the PROCESS_LIST for all times
+# specified, then repeat for the next item in the PROCESS_LIST.
+LOOP_ORDER = times
+
+# Model to verify
+MODEL = {ENV[MODEL]}_prob
+FCST_NATIVE_DATA_TYPE = GRIB
+
+# Set obtype to vx
+OBTYPE = MRMS
+OBS_NATIVE_DATA_TYPE = GRIB
+
+# location of grid_stat MET config file
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC_prob
+GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_RETOP_{OBTYPE}_prob
+
+# run pcp_combine on forecast/obs data?
+FCST_PCP_COMBINE_RUN = False
+OBS_PCP_COMBINE_RUN = False
+
+# Set grid to verify on
+GRID_STAT_REGRID_TO_GRID = FCST
+
+# list of variables to compare
+FCST_VAR1_NAME = RETOP_L0_ENS_FREQ_ge20
+FCST_VAR1_LEVELS = L0
+FCST_VAR1_THRESH = ==0.1
+
+OBS_VAR1_NAME = EchoTop18
+OBS_VAR1_LEVELS = Z500
+OBS_VAR1_THRESH = >=20.0
+OBS_VAR1_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x);
+
+FCST_VAR2_NAME = RETOP_L0_ENS_FREQ_ge30
+FCST_VAR2_LEVELS = L0
+FCST_VAR2_THRESH = ==0.1
+
+OBS_VAR2_NAME = EchoTop18
+OBS_VAR2_LEVELS = Z500
+OBS_VAR2_THRESH = >=30.0
+OBS_VAR2_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x);
+
+FCST_VAR3_NAME = RETOP_L0_ENS_FREQ_ge40
+FCST_VAR3_LEVELS = L0
+FCST_VAR3_THRESH = ==0.1
+
+OBS_VAR3_NAME = EchoTop18
+OBS_VAR3_LEVELS = Z500
+OBS_VAR3_THRESH = >=40.0
+OBS_VAR3_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x);
+
+FCST_VAR4_NAME = RETOP_L0_ENS_FREQ_ge50
+FCST_VAR4_LEVELS = L0
+FCST_VAR4_THRESH = ==0.1
+
+OBS_VAR4_NAME = EchoTop18
+OBS_VAR4_LEVELS = Z500
+OBS_VAR4_THRESH = >=50.0
+OBS_VAR4_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x);
+
+# Neighborhood shape and widths
+GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE
+GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7
+
+# Forecast data description variables
+FCST_IS_PROB = True
+FCST_PROB_IN_GRIB_PDS = False
diff --git a/ush/templates/parm/metplus/PointStat_conus_sfc.conf b/ush/templates/parm/metplus/PointStat_conus_sfc.conf
index 1f9e3554f9..5fd3f58c9b 100644
--- a/ush/templates/parm/metplus/PointStat_conus_sfc.conf
+++ b/ush/templates/parm/metplus/PointStat_conus_sfc.conf
@@ -1,17 +1,21 @@
+# Grid to Point Example
+
[dir]
# Input and output data directories
PB2NC_INPUT_DIR = {ENV[OBS_DIR]}
-PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}/metprd/pb2nc
+PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc
-INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}/postprd
+INPUT_BASE = {ENV[INPUT_BASE]}
FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE}
OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
-OUTPUT_BASE = {ENV[EXPTDIR]}
+OUTPUT_BASE = {ENV[OUTPUT_BASE]}
POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE}
-LOG_DIR = {OUTPUT_BASE}/log
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc
[filename_templates]
# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR
@@ -23,7 +27,13 @@ PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
-POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/point_stat
+POINT_STAT_OUTPUT_TEMPLATE = metprd/point_stat
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/metprd/point_stat/metplus_final.conus_surface.conf
[config]
@@ -73,7 +83,7 @@ PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA
# Leave empty to process all
# PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL
-PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS
+PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND
# For defining the time periods for summarization
# False for no time summary, True otherwise
@@ -135,26 +145,31 @@ BOTH_VAR5_NAME = VGRD
BOTH_VAR5_LEVELS = Z10
BOTH_VAR5_THRESH = >=2.572 ;; m/s or 5kts
-BOTH_VAR6_NAME = PRMSL
-BOTH_VAR6_LEVELS = Z0
+BOTH_VAR6_NAME = WIND
+BOTH_VAR6_LEVELS = Z10
+BOTH_VAR6_THRESH = >=2.572 ;; m/s or 5kts
+BOTH_VAR6_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind
-BOTH_VAR7_NAME = TCDC
-BOTH_VAR7_LEVELS = L0
-BOTH_VAR7_OPTIONS = GRIB_lvl_typ = 200; interp = { type = [ { method = NEAREST; width = 1; } ]; }
+BOTH_VAR7_NAME = PRMSL
+BOTH_VAR7_LEVELS = Z0
-BOTH_VAR8_NAME = VIS
+BOTH_VAR8_NAME = TCDC
BOTH_VAR8_LEVELS = L0
-BOTH_VAR8_THRESH = <805, <1609, <4828, <8045 ,>=8045, <16090
-BOTH_VAR8_OPTIONS = interp = { type = [ { method = NEAREST; width = 1; } ]; }
-
-BOTH_VAR9_NAME = GUST
-BOTH_VAR9_LEVELS = Z0
-
-FCST_VAR10_NAME = HGT
-FCST_VAR10_LEVELS = L0
-FCST_VAR10_OPTIONS = GRIB_lvl_typ = 215; desc = "CEILING";
-FCST_VAR10_THRESH = <152, <305, <914, <1520, <3040, >=914
-OBS_VAR10_NAME = CEILING
-OBS_VAR10_LEVELS = L0
-OBS_VAR10_OPTIONS = GRIB_lvl_typ = 215; interp = { type = [ { method = NEAREST; width = 1; } ]; }
-OBS_VAR10_THRESH = <152, <305, <914, <1520, <3040, >=914
+BOTH_VAR8_OPTIONS = GRIB_lvl_typ = 200; interp = { type = [ { method = NEAREST; width = 1; } ]; }
+
+BOTH_VAR9_NAME = VIS
+BOTH_VAR9_LEVELS = L0
+BOTH_VAR9_THRESH = <805, <1609, <4828, <8045 ,>=8045, <16090
+BOTH_VAR9_OPTIONS = interp = { type = [ { method = NEAREST; width = 1; } ]; }
+
+BOTH_VAR10_NAME = GUST
+BOTH_VAR10_LEVELS = Z0
+
+FCST_VAR11_NAME = HGT
+FCST_VAR11_LEVELS = L0
+FCST_VAR11_OPTIONS = GRIB_lvl_typ = 215; desc = "CEILING";
+FCST_VAR11_THRESH = <152, <305, <914, <1520, <3040, >=914
+OBS_VAR11_NAME = CEILING
+OBS_VAR11_LEVELS = L0
+OBS_VAR11_OPTIONS = GRIB_lvl_typ = 215; interp = { type = [ { method = NEAREST; width = 1; } ]; }
+OBS_VAR11_THRESH = <152, <305, <914, <1520, <3040, >=914
diff --git a/ush/templates/parm/metplus/PointStat_conus_sfc_mean.conf b/ush/templates/parm/metplus/PointStat_conus_sfc_mean.conf
new file mode 100644
index 0000000000..c5adc81df5
--- /dev/null
+++ b/ush/templates/parm/metplus/PointStat_conus_sfc_mean.conf
@@ -0,0 +1,151 @@
+# Ensemble Mean Grid to Point Example
+
+[dir]
+# Input and output data directories
+PB2NC_INPUT_DIR = {ENV[OBS_DIR]}
+PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc
+
+INPUT_BASE = {ENV[INPUT_BASE]}
+FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE}
+
+OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
+
+OUTPUT_BASE = {ENV[EXPTDIR]}
+POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc_mean
+
+[filename_templates]
+# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR
+PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}
+# Template to use to write output from PB2NC
+PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR
+FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPSFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.conus_surface.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = PB2NC, PointStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Order of loops to process data - Options are times, processes
+LOOP_ORDER = times
+
+# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only
+LOG_POINT_STAT_VERBOSITY = 2
+
+# For both PB2NC and point_stat
+OBS_WINDOW_BEGIN = -1799
+OBS_WINDOW_END = 1800
+
+PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN}
+PB2NC_WINDOW_END = {OBS_WINDOW_END}
+
+# Location of MET config file to pass to PB2NC
+PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig
+
+# If set to True, skip run if the output file determined by the output directory and
+# filename template already exists
+PB2NC_SKIP_IF_OUTPUT_EXISTS = True
+
+# Values to pass to pb2nc config file using environment variables of the same name.
+PB2NC_GRID =
+PB2NC_POLY =
+PB2NC_STATION_ID =
+PB2NC_MESSAGE_TYPE =
+
+# Leave empty to process all
+# PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL
+PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND
+
+# For defining the time periods for summarization
+# False for no time summary, True otherwise
+# The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False
+PB2NC_TIME_SUMMARY_FLAG = False
+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
+
+# Location of MET config file to pass to GridStat
+# References PARM_BASE which is the location of the parm directory corresponding
+# to the ush directory of the master_metplus.py script that is called
+# or the value of the environment variable METPLUS_PARM_BASE if set
+POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig_mean
+
+# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc.
+MODEL = {ENV[MODEL]}_mean
+OBTYPE = NDAS
+
+# Regrid to specified grid. Indicate NONE if no regridding, or the grid id
+POINT_STAT_REGRID_TO_GRID = NONE
+
+POINT_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_ADPSFC_{OBTYPE}_mean
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+POINT_STAT_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+POINT_STAT_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+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 = ADPSFC
+
+# Variables and levels as specified in the field dictionary of the MET
+# point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS,
+# (optional) FCST_VARn_OPTION
+FCST_VAR1_NAME = TMP_Z2_ENS_MEAN
+FCST_VAR1_LEVELS = Z2
+FCST_VAR1_THRESH = >=293, >=298, >=303
+
+OBS_VAR1_NAME = TMP
+OBS_VAR1_LEVELS = Z2
+OBS_VAR1_THRESH = >=293, >=298, >=303
+
+FCST_VAR2_NAME = DPT_Z2_ENS_MEAN
+FCST_VAR2_LEVELS = Z2
+FCST_VAR2_THRESH = >=288, >=293, >=298
+
+OBS_VAR2_NAME = DPT
+OBS_VAR2_LEVELS = Z2
+OBS_VAR2_THRESH = >=288, >=293, >=298
+
+FCST_VAR3_NAME = WIND_Z10_ENS_MEAN
+FCST_VAR3_LEVELS = Z10
+FCST_VAR3_THRESH = >=5, >=10
+
+OBS_VAR3_NAME = WIND
+OBS_VAR3_LEVELS = Z10
+OBS_VAR3_THRESH = >=5, >=10
diff --git a/ush/templates/parm/metplus/PointStat_conus_sfc_prob.conf b/ush/templates/parm/metplus/PointStat_conus_sfc_prob.conf
new file mode 100644
index 0000000000..f7ef100f77
--- /dev/null
+++ b/ush/templates/parm/metplus/PointStat_conus_sfc_prob.conf
@@ -0,0 +1,195 @@
+# Ensemble Prob Grid to Point Example
+
+[dir]
+# Input and output data directories
+PB2NC_INPUT_DIR = {ENV[OBS_DIR]}
+PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc
+
+INPUT_BASE = {ENV[INPUT_BASE]}
+FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE}
+
+OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
+
+OUTPUT_BASE = {ENV[EXPTDIR]}
+POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc_prob
+
+[filename_templates]
+# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR
+PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}
+# Template to use to write output from PB2NC
+PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR
+FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPSFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.conus_surface.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = PB2NC, PointStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+LEAD_SEQ = {ENV[fhr_list]}
+
+# Order of loops to process data - Options are times, processes
+LOOP_ORDER = times
+
+# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only
+LOG_POINT_STAT_VERBOSITY = 2
+
+# For both PB2NC and point_stat
+OBS_WINDOW_BEGIN = -1799
+OBS_WINDOW_END = 1800
+
+PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN}
+PB2NC_WINDOW_END = {OBS_WINDOW_END}
+
+# Location of MET config file to pass to PB2NC
+PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig
+
+# If set to True, skip run if the output file determined by the output directory and
+# filename template already exists
+PB2NC_SKIP_IF_OUTPUT_EXISTS = True
+
+# Values to pass to pb2nc config file using environment variables of the same name.
+PB2NC_GRID =
+PB2NC_POLY =
+PB2NC_STATION_ID =
+PB2NC_MESSAGE_TYPE =
+
+# Leave empty to process all
+# PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL
+PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND
+
+# For defining the time periods for summarization
+# False for no time summary, True otherwise
+# The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False
+PB2NC_TIME_SUMMARY_FLAG = False
+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
+
+# Location of MET config file to pass to GridStat
+# References PARM_BASE which is the location of the parm directory corresponding
+# to the ush directory of the master_metplus.py script that is called
+# or the value of the environment variable METPLUS_PARM_BASE if set
+POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig_prob
+
+# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc.
+MODEL = {ENV[MODEL]}_prob
+OBTYPE = NDAS
+
+# Regrid to specified grid. Indicate NONE if no regridding, or the grid id
+POINT_STAT_REGRID_TO_GRID = NONE
+
+POINT_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_ADPSFC_{OBTYPE}_prob
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+POINT_STAT_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+POINT_STAT_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+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 = ADPSFC
+
+# Variables and levels as specified in the field dictionary of the MET
+# point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS,
+# (optional) FCST_VARn_OPTION
+FCST_VAR1_NAME = TMP_Z2_ENS_FREQ_ge293
+FCST_VAR1_LEVELS = (*,*)
+FCST_VAR1_THRESH = ==0.1
+
+OBS_VAR1_NAME = TMP
+OBS_VAR1_LEVELS = Z2
+OBS_VAR1_THRESH = >=293
+
+FCST_VAR2_NAME = TMP_Z2_ENS_FREQ_ge298
+FCST_VAR2_LEVELS = (*,*)
+FCST_VAR2_THRESH = ==0.1
+
+OBS_VAR2_NAME = TMP
+OBS_VAR2_LEVELS = Z2
+OBS_VAR2_THRESH = >=298
+
+FCST_VAR3_NAME = TMP_Z2_ENS_FREQ_ge303
+FCST_VAR3_LEVELS = (*,*)
+FCST_VAR3_THRESH = ==0.1
+
+OBS_VAR3_NAME = TMP
+OBS_VAR3_LEVELS = Z2
+OBS_VAR3_THRESH = >=303
+
+FCST_VAR4_NAME = DPT_Z2_ENS_FREQ_ge288
+FCST_VAR4_LEVELS = (*,*)
+FCST_VAR4_THRESH = ==0.1
+
+OBS_VAR4_NAME = DPT
+OBS_VAR4_LEVELS = Z2
+OBS_VAR4_THRESH = >=288
+
+FCST_VAR5_NAME = DPT_Z2_ENS_FREQ_ge293
+FCST_VAR5_LEVELS = (*,*)
+FCST_VAR5_THRESH = ==0.1
+
+OBS_VAR5_NAME = DPT
+OBS_VAR5_LEVELS = Z2
+OBS_VAR5_THRESH = >=293
+
+FCST_VAR6_NAME = DPT_Z2_ENS_FREQ_ge298
+FCST_VAR6_LEVELS = (*,*)
+FCST_VAR6_THRESH = ==0.1
+
+OBS_VAR6_NAME = DPT
+OBS_VAR6_LEVELS = Z2
+OBS_VAR6_THRESH = >=298
+
+FCST_VAR7_NAME = WIND_Z10_ENS_FREQ_ge5
+FCST_VAR7_LEVELS = Z10
+FCST_VAR7_THRESH = ==0.1
+
+OBS_VAR7_NAME = WIND
+OBS_VAR7_LEVELS = Z10
+OBS_VAR7_THRESH = >=5
+
+FCST_VAR8_NAME = WIND_Z10_ENS_FREQ_ge10
+FCST_VAR8_LEVELS = Z10
+FCST_VAR8_THRESH = ==0.1
+
+OBS_VAR8_NAME = WIND
+OBS_VAR8_LEVELS = Z10
+OBS_VAR8_THRESH = >=10
+
+# Forecast data description variables
+FCST_IS_PROB = True
+FCST_PROB_IN_GRIB_PDS = False
diff --git a/ush/templates/parm/metplus/PointStat_upper_air.conf b/ush/templates/parm/metplus/PointStat_upper_air.conf
index f9d3083caf..cd05d930b2 100644
--- a/ush/templates/parm/metplus/PointStat_upper_air.conf
+++ b/ush/templates/parm/metplus/PointStat_upper_air.conf
@@ -1,21 +1,26 @@
+# Grid to Point Example
+
[dir]
# Input and output data directories
PB2NC_INPUT_DIR = {ENV[OBS_DIR]}
-PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]}/metprd/pb2nc
+PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc
-INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}/postprd
+INPUT_BASE = {ENV[INPUT_BASE]}
FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE}
OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
-OUTPUT_BASE = {ENV[EXPTDIR]}
+OUTPUT_BASE = {ENV[OUTPUT_BASE]}
POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE}
-LOG_DIR = {OUTPUT_BASE}/log
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/upper_air
[filename_templates]
# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR
-PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}
+PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}
+
# Template to use to write output from PB2NC
PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
@@ -23,10 +28,15 @@ PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
-POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/point_stat
+POINT_STAT_OUTPUT_TEMPLATE = metprd/point_stat
-[config]
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/metprd/point_stat/metplus_final.upper_air.conf
+[config]
# List of applications to run
PROCESS_LIST = PB2NC, PointStat
@@ -73,7 +83,7 @@ PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA
# Leave empty to process all
# PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL
-PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS
+PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND
# For defining the time periods for summarization
# False for no time summary, True otherwise
@@ -135,30 +145,34 @@ BOTH_VAR5_NAME = VGRD
BOTH_VAR5_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10
BOTH_VAR5_THRESH = >=2.572 ;; m/s or 5kts
-BOTH_VAR6_NAME = HGT
-BOTH_VAR6_LEVELS = P1000, P950, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10
-
-BOTH_VAR7_NAME = SPFH
-BOTH_VAR7_LEVELS = P1000, P850, P700, P500, P400, P300
-
-FCST_VAR8_NAME = CAPE
-FCST_VAR8_LEVELS = L0
-FCST_VAR8_OPTIONS = cnt_thresh = [ >0 ];
-FCST_VAR8_THRESH = >500, >1000, >1500, >2000, >3000, >4000
-OBS_VAR8_NAME = CAPE
-OBS_VAR8_LEVELS = L0-100000
-OBS_VAR8_OPTIONS = cnt_thresh = [ >0 ]; cnt_logic = UNION;
-OBS_VAR8_THRESH = >500, >1000, >1500, >2000, >3000, >4000
-
-FCST_VAR9_NAME = HPBL
-FCST_VAR9_LEVELS = Z0
-OBS_VAR9_NAME = PBL
-OBS_VAR9_LEVELS = L0
-OBS_VAR9_OPTIONS = desc = "TKE";
-
-FCST_VAR10_NAME = HGT
-FCST_VAR10_LEVELS = L0
-FCST_VAR10_OPTIONS = GRIB_lvl_typ = 220;
+BOTH_VAR6_NAME = WIND
+BOTH_VAR6_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10
+BOTH_VAR6_THRESH = >=2.572 ;; m/s or 5kts
+
+BOTH_VAR7_NAME = HGT
+BOTH_VAR7_LEVELS = P1000, P950, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10
+
+BOTH_VAR8_NAME = SPFH
+BOTH_VAR8_LEVELS = P1000, P850, P700, P500, P400, P300
+
+FCST_VAR9_NAME = CAPE
+FCST_VAR9_LEVELS = L0
+FCST_VAR9_OPTIONS = cnt_thresh = [ >0 ];
+FCST_VAR9_THRESH = >500, >1000, >1500, >2000, >3000, >4000
+OBS_VAR9_NAME = CAPE
+OBS_VAR9_LEVELS = L0-100000
+OBS_VAR9_OPTIONS = cnt_thresh = [ >0 ]; cnt_logic = UNION;
+OBS_VAR9_THRESH = >500, >1000, >1500, >2000, >3000, >4000
+
+FCST_VAR10_NAME = HPBL
+FCST_VAR10_LEVELS = Z0
OBS_VAR10_NAME = PBL
OBS_VAR10_LEVELS = L0
-OBS_VAR10_OPTIONS = desc = "RI";
+OBS_VAR10_OPTIONS = desc = "TKE";
+
+FCST_VAR11_NAME = HGT
+FCST_VAR11_LEVELS = L0
+FCST_VAR11_OPTIONS = GRIB_lvl_typ = 220;
+OBS_VAR11_NAME = PBL
+OBS_VAR11_LEVELS = L0
+OBS_VAR11_OPTIONS = desc = "RI";
diff --git a/ush/templates/parm/metplus/PointStat_upper_air_mean.conf b/ush/templates/parm/metplus/PointStat_upper_air_mean.conf
new file mode 100644
index 0000000000..e6a1a062ad
--- /dev/null
+++ b/ush/templates/parm/metplus/PointStat_upper_air_mean.conf
@@ -0,0 +1,152 @@
+# Ensemble Mean Grid to Point Example
+
+[dir]
+# Input and output data directories
+PB2NC_INPUT_DIR = {ENV[OBS_DIR]}
+PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc
+
+INPUT_BASE = {ENV[INPUT_BASE]}
+FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE}
+
+OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
+
+OUTPUT_BASE = {ENV[EXPTDIR]}
+POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/upper_air_mean
+
+[filename_templates]
+# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR
+PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}
+# Template to use to write output from PB2NC
+PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR
+FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPUPA_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.upper_air.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = PB2NC, PointStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6)
+#LEAD_SEQ = {ENV[fhr_list]}
+
+# Order of loops to process data - Options are times, processes
+LOOP_ORDER = times
+
+# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only
+LOG_POINT_STAT_VERBOSITY = 2
+
+# For both PB2NC and point_stat
+OBS_WINDOW_BEGIN = -1799
+OBS_WINDOW_END = 1800
+
+PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN}
+PB2NC_WINDOW_END = {OBS_WINDOW_END}
+
+# Location of MET config file to pass to PB2NC
+PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig
+
+# If set to True, skip run if the output file determined by the output directory and
+# filename template already exists
+PB2NC_SKIP_IF_OUTPUT_EXISTS = True
+
+# Values to pass to pb2nc config file using environment variables of the same name.
+PB2NC_GRID =
+PB2NC_POLY =
+PB2NC_STATION_ID =
+PB2NC_MESSAGE_TYPE =
+
+# Leave empty to process all
+# PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL
+PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND
+
+# For defining the time periods for summarization
+# False for no time summary, True otherwise
+# The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False
+PB2NC_TIME_SUMMARY_FLAG = False
+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
+
+# Location of MET config file to pass to GridStat
+# References PARM_BASE which is the location of the parm directory corresponding
+# to the ush directory of the master_metplus.py script that is called
+# or the value of the environment variable METPLUS_PARM_BASE if set
+POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig_mean
+
+# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc.
+MODEL = {ENV[MODEL]}_mean
+OBTYPE = NDAS
+
+# Regrid to specified grid. Indicate NONE if no regridding, or the grid id
+POINT_STAT_REGRID_TO_GRID = NONE
+
+POINT_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_ADPUPA_{OBTYPE}_mean
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+POINT_STAT_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+POINT_STAT_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+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 = ADPUPA
+
+# Variables and levels as specified in the field dictionary of the MET
+# point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS,
+# (optional) FCST_VARn_OPTION
+FCST_VAR1_NAME = TMP_P850_ENS_MEAN
+FCST_VAR1_LEVELS = P850
+FCST_VAR1_THRESH = >=288, >=293, >=298
+
+OBS_VAR1_NAME = TMP
+OBS_VAR1_LEVELS = P850
+OBS_VAR1_THRESH = >=288, >=293, >=298
+
+FCST_VAR2_NAME = DPT_P850_ENS_MEAN
+FCST_VAR2_LEVELS = P850
+FCST_VAR2_THRESH = >=283, >=288, >=293
+
+OBS_VAR2_NAME = DPT
+OBS_VAR2_LEVELS = P850
+OBS_VAR2_THRESH = >=283, >=288, >=293
+
+FCST_VAR3_NAME = WIND_P850_ENS_MEAN
+FCST_VAR3_LEVELS = P850
+FCST_VAR3_THRESH = >=5, >=10
+
+OBS_VAR3_NAME = WIND
+OBS_VAR3_LEVELS = P850
+OBS_VAR3_THRESH = >=5, >=10
diff --git a/ush/templates/parm/metplus/PointStat_upper_air_prob.conf b/ush/templates/parm/metplus/PointStat_upper_air_prob.conf
new file mode 100644
index 0000000000..bb3790689d
--- /dev/null
+++ b/ush/templates/parm/metplus/PointStat_upper_air_prob.conf
@@ -0,0 +1,196 @@
+# Ensemble Prob Grid to Point Example
+
+[dir]
+# Input and output data directories
+PB2NC_INPUT_DIR = {ENV[OBS_DIR]}
+PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc
+
+INPUT_BASE = {ENV[INPUT_BASE]}
+FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE}
+
+OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
+
+OUTPUT_BASE = {ENV[EXPTDIR]}
+POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE}
+
+LOG_DIR = {ENV[EXPTDIR]}/log
+
+STAGING_DIR = {OUTPUT_BASE}/stage/upper_air_prob
+
+[filename_templates]
+# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR
+PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}
+# Template to use to write output from PB2NC
+PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR
+FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPUPA_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc
+OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc
+
+POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob
+
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.upper_air.conf
+
+[config]
+# List of applications to run
+PROCESS_LIST = PB2NC, PointStat
+
+# time looping - options are INIT, VALID, RETRO, and REALTIME
+LOOP_BY = INIT
+
+# Start time for METplus run
+INIT_BEG = {ENV[CDATE]}
+# End time for METplus run
+INIT_END = {ENV[CDATE]}
+# Increment between METplus runs in seconds. Must be > 60
+INIT_INCREMENT = 3600
+INIT_TIME_FMT = %Y%m%d%H
+
+# list of forecast leads to process.
+LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6)
+#LEAD_SEQ = {ENV[fhr_list]}
+
+# Order of loops to process data - Options are times, processes
+LOOP_ORDER = times
+
+# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only
+LOG_POINT_STAT_VERBOSITY = 2
+
+# For both PB2NC and point_stat
+OBS_WINDOW_BEGIN = -1799
+OBS_WINDOW_END = 1800
+
+PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN}
+PB2NC_WINDOW_END = {OBS_WINDOW_END}
+
+# Location of MET config file to pass to PB2NC
+PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig
+
+# If set to True, skip run if the output file determined by the output directory and
+# filename template already exists
+PB2NC_SKIP_IF_OUTPUT_EXISTS = True
+
+# Values to pass to pb2nc config file using environment variables of the same name.
+PB2NC_GRID =
+PB2NC_POLY =
+PB2NC_STATION_ID =
+PB2NC_MESSAGE_TYPE =
+
+# Leave empty to process all
+# PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL
+PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND
+
+# For defining the time periods for summarization
+# False for no time summary, True otherwise
+# The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False
+PB2NC_TIME_SUMMARY_FLAG = False
+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
+
+# Location of MET config file to pass to GridStat
+# References PARM_BASE which is the location of the parm directory corresponding
+# to the ush directory of the master_metplus.py script that is called
+# or the value of the environment variable METPLUS_PARM_BASE if set
+POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig_prob
+
+# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc.
+MODEL = {ENV[MODEL]}_prob
+OBTYPE = NDAS
+
+# Regrid to specified grid. Indicate NONE if no regridding, or the grid id
+POINT_STAT_REGRID_TO_GRID = NONE
+
+POINT_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_ADPUPA_{OBTYPE}_prob
+
+# Verification Masking regions
+# Indicate which grid and polygon masking region, if applicable
+POINT_STAT_GRID =
+
+# List of full path to poly masking files. NOTE: Only short lists of poly
+# files work (those that fit on one line), a long list will result in an
+# environment variable that is too long, resulting in an error. For long
+# lists of poly masking files (i.e. all the mask files in the NCEP_mask
+# directory), define these in the MET point_stat configuration file.
+POINT_STAT_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+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 = ADPUPA
+
+# Variables and levels as specified in the field dictionary of the MET
+# point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS,
+# (optional) FCST_VARn_OPTION
+FCST_VAR1_NAME = TMP_P850_ENS_FREQ_ge288
+FCST_VAR1_LEVELS = (*,*)
+FCST_VAR1_THRESH = ==0.1
+
+OBS_VAR1_NAME = TMP
+OBS_VAR1_LEVELS = P850
+OBS_VAR1_THRESH = >=288
+
+FCST_VAR2_NAME = TMP_P850_ENS_FREQ_ge293
+FCST_VAR2_LEVELS = (*,*)
+FCST_VAR2_THRESH = ==0.1
+
+OBS_VAR2_NAME = TMP
+OBS_VAR2_LEVELS = P850
+OBS_VAR2_THRESH = >=293
+
+FCST_VAR3_NAME = TMP_P850_ENS_FREQ_ge298
+FCST_VAR3_LEVELS = (*,*)
+FCST_VAR3_THRESH = ==0.1
+
+OBS_VAR3_NAME = TMP
+OBS_VAR3_LEVELS = P850
+OBS_VAR3_THRESH = >=298
+
+FCST_VAR4_NAME = DPT_P850_ENS_FREQ_ge283
+FCST_VAR4_LEVELS = (*,*)
+FCST_VAR4_THRESH = ==0.1
+
+OBS_VAR4_NAME = DPT
+OBS_VAR4_LEVELS = P850
+OBS_VAR4_THRESH = >=283
+
+FCST_VAR5_NAME = DPT_P850_ENS_FREQ_ge288
+FCST_VAR5_LEVELS = (*,*)
+FCST_VAR5_THRESH = ==0.1
+
+OBS_VAR5_NAME = DPT
+OBS_VAR5_LEVELS = P850
+OBS_VAR5_THRESH = >=288
+
+FCST_VAR6_NAME = DPT_P850_ENS_FREQ_ge293
+FCST_VAR6_LEVELS = (*,*)
+FCST_VAR6_THRESH = ==0.1
+
+OBS_VAR6_NAME = DPT
+OBS_VAR6_LEVELS = P850
+OBS_VAR6_THRESH = >=293
+
+FCST_VAR7_NAME = WIND_P850_ENS_FREQ_ge5
+FCST_VAR7_LEVELS = (*,*)
+FCST_VAR7_THRESH = ==0.1
+
+OBS_VAR7_NAME = WIND
+OBS_VAR7_LEVELS = P850
+OBS_VAR7_THRESH = >=5
+
+FCST_VAR8_NAME = WIND_P850_ENS_FREQ_ge10
+FCST_VAR8_LEVELS = (*,*)
+FCST_VAR8_THRESH = ==0.1
+
+OBS_VAR8_NAME = WIND
+OBS_VAR8_LEVELS = P850
+OBS_VAR8_THRESH = >=10
+
+# Forecast data description variables
+FCST_IS_PROB = True
+FCST_PROB_IN_GRIB_PDS = False
diff --git a/ush/templates/parm/metplus/REFC.conf b/ush/templates/parm/metplus/REFC.conf
index 6aa8d198f3..9a3fdb2d1c 100644
--- a/ush/templates/parm/metplus/REFC.conf
+++ b/ush/templates/parm/metplus/REFC.conf
@@ -1,17 +1,19 @@
-# Composite Reflectivity Verification
+# Composite Reflectivity Verification Options
[dir]
# Input and output data directories
-INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}/postprd
+INPUT_BASE = {ENV[INPUT_BASE]}
FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
-OUTPUT_BASE = {ENV[EXPTDIR]}
+OUTPUT_BASE = {ENV[OUTPUT_BASE]}
GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
-LOG_DIR = {OUTPUT_BASE}/log
+LOG_DIR = {ENV[EXPTDIR]}/log
OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+STAGING_DIR = {OUTPUT_BASE}/stage/REFC
+
[filename_templates]
# format of filenames
FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
@@ -19,11 +21,17 @@ FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH
# ANLYS
OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2
-GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/grid_stat
+GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat
# Location of MET poly files
GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.REFC.conf
+
[config]
# Model to verify
MODEL = {ENV[MODEL]}
@@ -37,7 +45,7 @@ OBS_NATIVE_DATA_TYPE = GRIB
PROCESS_LIST = GridStat
# location of grid_stat MET config file
-GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFL
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC
GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{OBTYPE}
# time looping - options are INIT, VALID, RETRO, and REALTIME
diff --git a/ush/templates/parm/metplus/RETOP.conf b/ush/templates/parm/metplus/RETOP.conf
index 5b57d3c34c..5508bd600c 100644
--- a/ush/templates/parm/metplus/RETOP.conf
+++ b/ush/templates/parm/metplus/RETOP.conf
@@ -1,17 +1,19 @@
-# Composite Reflectivity Verification
+# Echo Top Verification Options
[dir]
# Input and output data directories
-INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]}/postprd
+INPUT_BASE = {ENV[INPUT_BASE]}
FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE}
-OUTPUT_BASE = {ENV[EXPTDIR]}
+OUTPUT_BASE = {ENV[OUTPUT_BASE]}
GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}
-LOG_DIR = {OUTPUT_BASE}/log
+LOG_DIR = {ENV[EXPTDIR]}/log
OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]}
+STAGING_DIR = {OUTPUT_BASE}/stage/RETOP
+
[filename_templates]
# format of filenames
FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2
@@ -19,11 +21,17 @@ FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH
# ANLYS
OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H%M%S}.grib2
-GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/grid_stat
+GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat
# Location of MET poly files
GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly
+# Specify the name of the metplus.log file
+LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}
+
+# Specify where the location and name of the final metplus_final.conf
+METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.RETOP.conf
+
[config]
# Model to verify
MODEL = {ENV[MODEL]}
@@ -37,7 +45,7 @@ OBS_NATIVE_DATA_TYPE = GRIB
PROCESS_LIST = GridStat
# location of grid_stat MET config file
-GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFL
+GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC
GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{OBTYPE}
# time looping - options are INIT, VALID, RETRO, and REALTIME
diff --git a/ush/valid_param_vals.sh b/ush/valid_param_vals.sh
index 96998bc50b..d5eb39b9b7 100644
--- a/ush/valid_param_vals.sh
+++ b/ush/valid_param_vals.sh
@@ -52,9 +52,11 @@ valid_vals_RUN_TASK_MAKE_GRID=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "n
valid_vals_RUN_TASK_MAKE_OROG=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
valid_vals_RUN_TASK_MAKE_SFC_CLIMO=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
valid_vals_RUN_TASK_RUN_POST=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
+valid_vals_WRITE_DOPOST=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
valid_vals_RUN_TASK_VX_GRIDSTAT=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
valid_vals_RUN_TASK_VX_POINTSTAT=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
-valid_vals_WRITE_DOPOST=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
+valid_vals_RUN_TASK_VX_ENSGRID=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
+valid_vals_RUN_TASK_VX_ENSPOINT=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
valid_vals_QUILTING=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
valid_vals_PRINT_ESMF=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")
valid_vals_USE_CRON_TO_RELAUNCH=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")