From 009e1548d538cc85dbcfec497cde139d02261052 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Wed, 31 Oct 2018 10:20:29 -0400 Subject: [PATCH] Make energy_bins/rev_energy_bins match F90 impl. --- src/mgxs_interface.cpp | 8 ++++---- src/source.cpp | 9 ++------- src/tallies/filter_energy.cpp | 6 ++---- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/mgxs_interface.cpp b/src/mgxs_interface.cpp index 5cec8811f..0729e466c 100644 --- a/src/mgxs_interface.cpp +++ b/src/mgxs_interface.cpp @@ -99,11 +99,11 @@ void read_mg_cross_sections_header_c(hid_t file_id) read_attribute(file_id, "energy_groups", num_energy_groups); ensure_exists(file_id, "group structure", true); - read_attribute(file_id, "group structure", energy_bins); + read_attribute(file_id, "group structure", rev_energy_bins); - // Create reverse energy bins - std::copy(energy_bins.crbegin(), energy_bins.crend(), - std::back_inserter(rev_energy_bins)); + // Reverse energy bins + std::copy(rev_energy_bins.crbegin(), rev_energy_bins.crend(), + std::back_inserter(energy_bins)); // Create average energies for (int i = 0; i < energy_bins.size() - 1; ++i) { diff --git a/src/source.cpp b/src/source.cpp index bfed41b6a..315ff2cdd 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -292,8 +292,6 @@ void initialize_source() } } -extern "C" double* rev_energy_bins_ptr(); - Bank sample_external_source() { // Set the random number generator to the source stream. @@ -320,11 +318,8 @@ Bank sample_external_source() // If running in MG, convert site % E to group if (!settings::run_CE) { - // Get pointer to rev_energy_bins array on Fortran side - double* rev_energy_bins = rev_energy_bins_ptr(); - - int n = num_energy_groups + 1; - site.E = lower_bound_index(rev_energy_bins, rev_energy_bins + n, site.E); + site.E = lower_bound_index(rev_energy_bins.begin(), rev_energy_bins.end(), + site.E); site.E = num_energy_groups - site.E; } diff --git a/src/tallies/filter_energy.cpp b/src/tallies/filter_energy.cpp index 779681b84..d6dd8b9ac 100644 --- a/src/tallies/filter_energy.cpp +++ b/src/tallies/filter_energy.cpp @@ -13,9 +13,6 @@ namespace openmc { // EnergyFilter implementation //============================================================================== -// Used to grab the rev_energy_bins array defined in Fortran. -extern "C" double* rev_energy_bins_ptr(); - void EnergyFilter::from_xml(pugi::xml_node node) { @@ -30,7 +27,6 @@ EnergyFilter::from_xml(pugi::xml_node node) if (!settings::run_CE) { if (n_bins_ == num_energy_groups) { matches_transport_groups_ = true; - double* rev_energy_bins = rev_energy_bins_ptr(); for (auto i = 0; i < n_bins_ + 1; i++) { if (rev_energy_bins[i] != bins_[i]) { matches_transport_groups_ = false; @@ -80,6 +76,7 @@ std::string EnergyFilter::text_label(int bin) const { std::stringstream out; + //TODO: off-by-one out << "Incoming Energy [" << bins_[bin-1] << ", " << bins_[bin] << ")"; return out.str(); } @@ -110,6 +107,7 @@ std::string EnergyoutFilter::text_label(int bin) const { std::stringstream out; + //TODO: off-by-one out << "Outgoing Energy [" << bins_[bin-1] << ", " << bins_[bin] << ")"; return out.str(); }