stuff in computeStats

This commit is contained in:
Max Lübke 2025-09-02 13:05:47 +02:00
parent 48b6b992bf
commit e58423ff0b

View File

@ -182,36 +182,48 @@ void poet::ChemistryModule::computeStats(const std::vector<double> &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);
}
}