From a9d08506255d834208101d6d61368fab61b19c1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20L=C3=BCbke?= Date: Tue, 2 Sep 2025 13:05:47 +0200 Subject: [PATCH] stuff in computeStats --- src/Chemistry/MasterFunctions.cpp | 48 +++++++++++++++++++------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/Chemistry/MasterFunctions.cpp b/src/Chemistry/MasterFunctions.cpp index 59f2e660c..d452c4d7a 100644 --- a/src/Chemistry/MasterFunctions.cpp +++ b/src/Chemistry/MasterFunctions.cpp @@ -182,36 +182,48 @@ void poet::ChemistryModule::computeStats(const std::vector &pqc_vector, { double err_sum = 0.0; double sqr_err_sum = 0.0; - int count = 0; for (uint32_t j = 0; j < size_per_prop; j++) { - double pqc_value = pqc_vector[i * size_per_prop + j]; - double sur_value = sur_vector[i * size_per_prop + j]; + const double &pqc_value = pqc_vector[i * size_per_prop + j]; + const double &sur_value = sur_vector[i * size_per_prop + j]; - if (pqc_value != 0) - { - double rel_err = (pqc_value - sur_value) / pqc_value; - err_sum += std::abs(rel_err); - sqr_err_sum += rel_err * rel_err; - count++; - } - if (pqc_value == 0 && sur_value != 0) - { - err_sum += 1.0; - sqr_err_sum += 1.0; - count++; + if (pqc_value == 0 && sur_value == 0) { + // + } else if (pqc_value == 0 && sur_value != 0) { + std::cout << "NOOOO! pqc = " << pqc_value << ", sur = " << sur_value << "\n"; + err_sum += 1.; + sqr_err_sum += 1.; + } else { + const double alpha = 1 - (sur_value/pqc_value); + err_sum += std::abs(alpha); + sqr_err_sum += alpha * alpha; } + + // if (pqc_value != 0) + // { + // double rel_err = (pqc_value - sur_value) / pqc_value; + // err_sum += std::abs(rel_err); + // sqr_err_sum += rel_err * rel_err; + // } + // if (pqc_value == 0 && sur_value != 0) + // { + // err_sum += 1.0; + // sqr_err_sum += 1.0; + // } // else: both cases are zero, skip (no error) + if (i == 6 && (j % 1000 == 0)) { + std::cout << "pqc = " << pqc_value << ", sur = " << sur_value << "\n"; + } } if (i == 0) { std::cout << "computeStats, i==0, err_sum: " << err_sum << std::endl; std::cout << "computeStats, i==0, sqr_err_sum: " << sqr_err_sum << std::endl; } - stats.mape[i] = (count > 0) ? (100.0 / count) * err_sum : 0.0; - stats.rrsme[i] = (count > 0) ? std::sqrt(sqr_err_sum / count) : 0.0; + stats.mape[i] = 100.0 * (err_sum / size_per_prop); + stats.rrsme[i] = (size_per_prop > 0) ? std::sqrt(sqr_err_sum / size_per_prop) : 0.0; } } @@ -636,4 +648,4 @@ void poet::ChemistryModule::masterSetField(Field field) PropagateFunctionType(ftype); ChemBCast(&this->prop_count, 1, MPI_UINT32_T); -} \ No newline at end of file +}