Namespace energy_min and energy_max

This commit is contained in:
Paul Romano 2018-11-08 15:04:24 -06:00
parent c301612ca2
commit c9bd707f04
4 changed files with 15 additions and 7 deletions

View file

@ -14,11 +14,15 @@ namespace openmc {
// Global variables
//==============================================================================
namespace data {
// Minimum/maximum transport energy for each particle type. Order corresponds to
// that of the ParticleType enum
extern std::array<double, 2> energy_min;
extern std::array<double, 2> energy_max;
} // namespace data
//===============================================================================
//! Cached microscopic cross sections for a particular nuclide at the current
//! energy

View file

@ -75,8 +75,8 @@ int openmc_finalize()
simulation::satisfy_triggers = false;
simulation::total_gen = 0;
energy_max = {INFTY, INFTY};
energy_min = {0.0, 0.0};
data::energy_max = {INFTY, INFTY};
data::energy_min = {0.0, 0.0};
n_tallies = 0;
model::root_universe = -1;
openmc_set_seed(DEFAULT_SEED);

View file

@ -6,9 +6,13 @@ namespace openmc {
// Global variables
//==============================================================================
namespace data {
std::array<double, 2> energy_min {0.0, 0.0};
std::array<double, 2> energy_max {INFTY, INFTY};
} // namespace data
//==============================================================================
// Fortran compatibility functions
//==============================================================================
@ -16,8 +20,8 @@ std::array<double, 2> energy_max {INFTY, INFTY};
extern "C" void
set_particle_energy_bounds(int particle, double E_min, double E_max)
{
energy_min[particle - 1] = E_min;
energy_max[particle - 1] = E_max;
data::energy_min[particle - 1] = E_min;
data::energy_max[particle - 1] = E_max;
}
} // namespace openmc

View file

@ -207,10 +207,10 @@ Bank SourceDistribution::sample() const
auto energy_ptr = dynamic_cast<Discrete*>(energy_.get());
if (energy_ptr) {
auto energies = xt::adapt(energy_ptr->x());
if (xt::any(energies > energy_max[p-1])) {
if (xt::any(energies > data::energy_max[p-1])) {
fatal_error("Source energy above range of energies of at least "
"one cross section table");
} else if (xt::any(energies < energy_min[p-1])) {
} else if (xt::any(energies < data::energy_min[p-1])) {
fatal_error("Source energy below range of energies of at least "
"one cross section table");
}
@ -221,7 +221,7 @@ Bank SourceDistribution::sample() const
site.E = energy_->sample();
// Resample if energy falls outside minimum or maximum particle energy
if (site.E < energy_max[p-1] && site.E > energy_min[p-1]) break;
if (site.E < data::energy_max[p-1] && site.E > data::energy_min[p-1]) break;
}
// Set delayed group