From d3bcfeda0f667650c2e6d5fdb948f5b0db8f26af Mon Sep 17 00:00:00 2001 From: Patrick Shriwise Date: Sat, 5 Oct 2019 01:41:07 -0500 Subject: [PATCH] Cleaning up while loop. --- src/volume_calc.cpp | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/volume_calc.cpp b/src/volume_calc.cpp index bd6ada96a7..40b5f08dde 100644 --- a/src/volume_calc.cpp +++ b/src/volume_calc.cpp @@ -73,32 +73,24 @@ VolumeCalculation::VolumeCalculation(pugi::xml_node node) std::vector VolumeCalculation::execute() const { - std::vector results; - size_t offset = 0; - - results = _execute(offset); - offset += n_samples_; - - double max_err = -INFTY; - for (int i = 0; i < results.size(); i++) { - max_err = std::max(max_err, results[i].volume[1]); - } - + std::vector results = _execute(); + size_t offset = n_samples_; double error_limit = 1E-05; - int iters = 1; - while (max_err > error_limit) { - std::cout << "Iter " << iters++ << std::endl; - std::vector tmp = _execute(offset); + double max_err; + + while (true) { + // check maximum error value for all domains max_err = -INFTY; - for (int i = 0; i < results.size(); i++) { - auto& result = results[i]; - result += tmp[i]; - max_err = std::max(max_err, result.volume[1]); - } - + for (const auto& result : results) { max_err = std::max(max_err, result.volume[1]); } + + // exit once we're below our error limit + if (max_err <= error_limit) { break; } + + std::vector tmp = _execute(offset); offset += n_samples_; - std::cout << "Max error: " << max_err << std::endl; + // update current results + for (int i = 0; i < results.size(); i++) { results[i] += tmp[i]; } } return results;