From cf278af2810a0c99053ab4cb38c3370ba3fc9297 Mon Sep 17 00:00:00 2001 From: Gavin Ridley Date: Wed, 21 Sep 2022 12:07:42 -0400 Subject: [PATCH] helpful error message for excessive energy spectrum rejection rate --- src/source.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/source.cpp b/src/source.cpp index 3716720df..efc9e4598 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -201,14 +201,12 @@ SourceSite IndependentSource::sample(uint64_t* seed) const if (n_reject >= EXTSRC_REJECT_THRESHOLD && static_cast(n_accept) / n_reject <= EXTSRC_REJECT_FRACTION) { fatal_error("More than 95% of external source sites sampled were " - "rejected. Please check your external source definition."); + "rejected. Please check your external source's spatial " + "definition."); } } } - // Increment number of accepted samples - ++n_accept; - // Sample angle site.u = angle_->sample(seed); @@ -233,11 +231,22 @@ SourceSite IndependentSource::sample(uint64_t* seed) const // Resample if energy falls outside minimum or maximum particle energy if (site.E < data::energy_max[p] && site.E > data::energy_min[p]) break; + + n_reject++; + if (n_reject >= EXTSRC_REJECT_THRESHOLD && + static_cast(n_accept) / n_reject <= EXTSRC_REJECT_FRACTION) { + fatal_error("More than 95% of external source sites sampled were " + "rejected. Please check your external source energy spectrum " + "definition."); + } } // Sample particle creation time site.time = time_->sample(seed); + // Increment number of accepted samples + ++n_accept; + return site; }