Streamlined URR PRNG stream selection to avoid unneeded store/load ops (#2689)

This commit is contained in:
John Tramm 2023-09-11 12:26:46 -05:00 committed by GitHub
parent 7505f61b22
commit f46d3ee37c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 6 deletions

View file

@ -857,9 +857,8 @@ void Nuclide::calculate_urr_xs(int i_temp, Particle& p) const
// This guarantees the randomness and, at the same time, makes sure we
// reuse random numbers for the same nuclide at different temperatures,
// therefore preserving correlation of temperature in probability tables.
p.stream() = STREAM_URR_PTABLE;
double r = future_prn(static_cast<int64_t>(index_), *p.current_seed());
p.stream() = STREAM_TRACKING;
double r =
future_prn(static_cast<int64_t>(index_), p.seeds(STREAM_URR_PTABLE));
// Warning: this assumes row-major order of cdf_values_
int i_low = upper_bound_index(&urr.cdf_values_(i_energy, 0),

View file

@ -150,9 +150,7 @@ void sample_neutron_reaction(Particle& p)
// Advance URR seed stream 'N' times after energy changes
if (p.E() != p.E_last()) {
p.stream() = STREAM_URR_PTABLE;
advance_prn_seed(data::nuclides.size(), p.current_seed());
p.stream() = STREAM_TRACKING;
advance_prn_seed(data::nuclides.size(), &p.seeds(STREAM_URR_PTABLE));
}
// Play russian roulette if survival biasing is turned on