Make energy_bins/rev_energy_bins match F90 impl.

This commit is contained in:
Sterling Harper 2018-10-31 10:20:29 -04:00
parent f7c45a3fd1
commit 009e1548d5
3 changed files with 8 additions and 15 deletions

View file

@ -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) {

View file

@ -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;
}

View file

@ -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();
}