diff --git a/met/src/libcode/vx_statistics/ens_stats.cc b/met/src/libcode/vx_statistics/ens_stats.cc index e1cf37d681..4748b186ac 100644 --- a/met/src/libcode/vx_statistics/ens_stats.cc +++ b/met/src/libcode/vx_statistics/ens_stats.cc @@ -228,10 +228,26 @@ void ECNTInfo::set(const PairDataEnsemble &pd) { // Store the number of ensemble members n_ens = pd.n_ens; - // Get the average empirical and Gaussian CRPS and - // components values - crps_emp = pd.crps_emp_na.wmean(pd.wgt_na); - crps_gaus = pd.crps_gaus_na.wmean(pd.wgt_na); + // Compute empirical CRPS scores + crps_emp = pd.crps_emp_na.wmean(pd.wgt_na); + crpscl_emp = pd.crpscl_emp_na.wmean(pd.wgt_na); + crpss_emp = (is_bad_data(crps_emp) || + is_bad_data(crpscl_emp) || + is_eq(crpscl_emp, 0.0) ? + bad_data_double : + (crpscl_emp - crps_emp) / crpscl_emp); + + // Compute Gaussian CRPS scores + crps_gaus = pd.crps_gaus_na.wmean(pd.wgt_na); + crpscl_gaus = pd.crpscl_gaus_na.wmean(pd.wgt_na); + crpss_gaus = (is_bad_data(crps_gaus) || + is_bad_data(crpscl_gaus) || + is_eq(crpscl_gaus, 0.0) ? + bad_data_double : + (crpscl_gaus - crps_gaus) / crpscl_gaus); + + // Compute the average IGN value + ign = pd.ign_na.wmean(pd.wgt_na); // Get the sum of the weights for(i=0, n_pair=0, w_sum=0.0; i