From 52fc93e6e038df2455b80adf268fa5f3af60b173 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 18 Mar 2019 09:18:54 -0500 Subject: [PATCH] Rename cross section caches --- include/openmc/particle.h | 11 ++- src/material.cpp | 38 ++++---- src/nuclide.cpp | 8 +- src/particle.cpp | 26 +++--- src/photon.cpp | 2 +- src/physics.cpp | 62 ++++++------- src/physics_mg.cpp | 18 ++-- src/tallies/derivative.cpp | 142 ++++++++++++++-------------- src/tallies/tally_scoring.cpp | 170 +++++++++++++++++----------------- 9 files changed, 239 insertions(+), 238 deletions(-) diff --git a/include/openmc/particle.h b/include/openmc/particle.h index e971c30da3..2130b6454a 100644 --- a/include/openmc/particle.h +++ b/include/openmc/particle.h @@ -111,11 +111,11 @@ struct ElementMicroXS { }; //============================================================================== -// MATERIALMACROXS contains cached macroscopic cross sections for the material a +// MACROXS contains cached macroscopic cross sections for the material a // particle is traveling through //============================================================================== -struct MaterialMacroXS { +struct MacroXS { double total; //!< macroscopic total xs double absorption; //!< macroscopic absorption xs double fission; //!< macroscopic fission xs @@ -219,9 +219,10 @@ public: //========================================================================== // Data members - std::vector micro_xs_; - std::vector micro_photon_xs_; - MaterialMacroXS material_xs_; + // Cross section caches + std::vector neutron_xs_; //!< Microscopic neutron cross sections + std::vector photon_xs_; //!< Microscopic photon cross sections + MacroXS macro_xs_; //!< Macroscopic cross sections int64_t id_; //!< Unique ID Type type_ {Type::neutron}; //!< Particle type (n, p, e, etc.) diff --git a/src/material.cpp b/src/material.cpp index 0d2fe4bbc3..94a6214836 100644 --- a/src/material.cpp +++ b/src/material.cpp @@ -732,10 +732,10 @@ void Material::init_nuclide_index() void Material::calculate_xs(Particle& p) const { // Set all material macroscopic cross sections to zero - p.material_xs_.total = 0.0; - p.material_xs_.absorption = 0.0; - p.material_xs_.fission = 0.0; - p.material_xs_.nu_fission = 0.0; + p.macro_xs_.total = 0.0; + p.macro_xs_.absorption = 0.0; + p.macro_xs_.fission = 0.0; + p.macro_xs_.nu_fission = 0.0; if (p.type_ == Particle::Type::neutron) { this->calculate_neutron_xs(p); @@ -792,7 +792,7 @@ void Material::calculate_neutron_xs(Particle& p) const int i_nuclide = nuclide_[i]; // Calculate microscopic cross section for this nuclide - const auto& micro {p.micro_xs_[i_nuclide]}; + const auto& micro {p.neutron_xs_[i_nuclide]}; if (p.E_ != micro.last_E || p.sqrtkT_ != micro.last_sqrtkT || i_sab != micro.index_sab @@ -807,19 +807,19 @@ void Material::calculate_neutron_xs(Particle& p) const double atom_density = atom_density_(i); // Add contributions to cross sections - p.material_xs_.total += atom_density * micro.total; - p.material_xs_.absorption += atom_density * micro.absorption; - p.material_xs_.fission += atom_density * micro.fission; - p.material_xs_.nu_fission += atom_density * micro.nu_fission; + p.macro_xs_.total += atom_density * micro.total; + p.macro_xs_.absorption += atom_density * micro.absorption; + p.macro_xs_.fission += atom_density * micro.fission; + p.macro_xs_.nu_fission += atom_density * micro.nu_fission; } } void Material::calculate_photon_xs(Particle& p) const { - p.material_xs_.coherent = 0.0; - p.material_xs_.incoherent = 0.0; - p.material_xs_.photoelectric = 0.0; - p.material_xs_.pair_production = 0.0; + p.macro_xs_.coherent = 0.0; + p.macro_xs_.incoherent = 0.0; + p.macro_xs_.photoelectric = 0.0; + p.macro_xs_.pair_production = 0.0; // Add contribution from each nuclide in material for (int i = 0; i < nuclide_.size(); ++i) { @@ -830,7 +830,7 @@ void Material::calculate_photon_xs(Particle& p) const int i_element = element_[i]; // Calculate microscopic cross section for this nuclide - const auto& micro {p.micro_photon_xs_[i_element]}; + const auto& micro {p.photon_xs_[i_element]}; if (p.E_ != micro.last_E) { data::elements[i_element].calculate_xs(p); } @@ -842,11 +842,11 @@ void Material::calculate_photon_xs(Particle& p) const double atom_density = atom_density_(i); // Add contributions to material macroscopic cross sections - p.material_xs_.total += atom_density * micro.total; - p.material_xs_.coherent += atom_density * micro.coherent; - p.material_xs_.incoherent += atom_density * micro.incoherent; - p.material_xs_.photoelectric += atom_density * micro.photoelectric; - p.material_xs_.pair_production += atom_density * micro.pair_production; + p.macro_xs_.total += atom_density * micro.total; + p.macro_xs_.coherent += atom_density * micro.coherent; + p.macro_xs_.incoherent += atom_density * micro.incoherent; + p.macro_xs_.photoelectric += atom_density * micro.photoelectric; + p.macro_xs_.pair_production += atom_density * micro.pair_production; } } diff --git a/src/nuclide.cpp b/src/nuclide.cpp index 87965dfc3e..cfb5a669f2 100644 --- a/src/nuclide.cpp +++ b/src/nuclide.cpp @@ -459,7 +459,7 @@ double Nuclide::nu(double E, EmissionMode mode, int group) const void Nuclide::calculate_elastic_xs(Particle& p) const { // Get temperature index, grid index, and interpolation factor - auto& micro {p.micro_xs_[i_nuclide_]}; + auto& micro {p.neutron_xs_[i_nuclide_]}; int i_temp = micro.index_temp; int i_grid = micro.index_grid; double f = micro.interp_factor; @@ -495,7 +495,7 @@ double Nuclide::elastic_xs_0K(double E) const void Nuclide::calculate_xs(int i_sab, int i_log_union, double sab_frac, Particle& p) { - auto& micro {p.micro_xs_[i_nuclide_]}; + auto& micro {p.neutron_xs_[i_nuclide_]}; // Initialize cached cross sections to zero micro.elastic = CACHE_INVALID; @@ -702,7 +702,7 @@ void Nuclide::calculate_xs(int i_sab, int i_log_union, double sab_frac, Particle void Nuclide::calculate_sab_xs(int i_sab, double sab_frac, Particle& p) { - auto& micro {p.micro_xs_[i_nuclide_]}; + auto& micro {p.neutron_xs_[i_nuclide_]}; // Set flag that S(a,b) treatment should be used for scattering micro.index_sab = i_sab; @@ -731,7 +731,7 @@ void Nuclide::calculate_sab_xs(int i_sab, double sab_frac, Particle& p) void Nuclide::calculate_urr_xs(int i_temp, Particle& p) const { - auto& micro = p.micro_xs_[i_nuclide_]; + auto& micro = p.neutron_xs_[i_nuclide_]; micro.use_ptable = true; // Create a shorthand for the URR data diff --git a/src/particle.cpp b/src/particle.cpp index f5084cd1c2..88ff251dd5 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -58,8 +58,8 @@ Particle::Particle() } // Create microscopic cross section caches - micro_xs_.resize(data::nuclides.size()); - micro_photon_xs_.resize(data::elements.size()); + neutron_xs_.resize(data::nuclides.size()); + photon_xs_.resize(data::elements.size()); } void @@ -135,7 +135,7 @@ Particle::transport() // Force calculation of cross-sections by setting last energy to zero if (settings::run_CE) { - for (auto& micro : micro_xs_) micro.last_E = 0.0; + for (auto& micro : neutron_xs_) micro.last_E = 0.0; } // Prepare to write out particle track. @@ -189,17 +189,17 @@ Particle::transport() } else { // Get the MG data calculate_xs_c(material_, g_, sqrtkT_, this->u_local(), - material_xs_.total, material_xs_.absorption, material_xs_.nu_fission); + macro_xs_.total, macro_xs_.absorption, macro_xs_.nu_fission); // Finally, update the particle group while we have already checked // for if multi-group g_last_ = g_; } } else { - material_xs_.total = 0.0; - material_xs_.absorption = 0.0; - material_xs_.fission = 0.0; - material_xs_.nu_fission = 0.0; + macro_xs_.total = 0.0; + macro_xs_.absorption = 0.0; + macro_xs_.fission = 0.0; + macro_xs_.nu_fission = 0.0; } // Find the distance to the nearest boundary @@ -215,10 +215,10 @@ Particle::transport() if (type_ == Particle::Type::electron || type_ == Particle::Type::positron) { d_collision = 0.0; - } else if (material_xs_.total == 0.0) { + } else if (macro_xs_.total == 0.0) { d_collision = INFINITY; } else { - d_collision = -std::log(prn()) / material_xs_.total; + d_collision = -std::log(prn()) / macro_xs_.total; } // Select smaller of the two distances @@ -237,7 +237,7 @@ Particle::transport() // Score track-length estimate of k-eff if (settings::run_mode == RUN_MODE_EIGENVALUE && type_ == Particle::Type::neutron) { - global_tally_tracklength += wgt_ * distance * material_xs_.nu_fission; + global_tally_tracklength += wgt_ * distance * macro_xs_.nu_fission; } // Score flux derivative accumulators for differential tallies. @@ -280,8 +280,8 @@ Particle::transport() // Score collision estimate of keff if (settings::run_mode == RUN_MODE_EIGENVALUE && type_ == Particle::Type::neutron) { - global_tally_collision += wgt_ * material_xs_.nu_fission - / material_xs_.total; + global_tally_collision += wgt_ * macro_xs_.nu_fission + / macro_xs_.total; } // Score surface current tallies -- this has to be done before the collision diff --git a/src/photon.cpp b/src/photon.cpp index 9841e9e3bf..79345b90e0 100644 --- a/src/photon.cpp +++ b/src/photon.cpp @@ -452,7 +452,7 @@ void PhotonInteraction::calculate_xs(Particle& p) const // calculate interpolation factor double f = (log_E - energy_(i_grid)) / (energy_(i_grid+1) - energy_(i_grid)); - auto& xs {p.micro_photon_xs_[i_element_]}; + auto& xs {p.photon_xs_[i_element_]}; xs.index_grid = i_grid; xs.interp_factor = f; diff --git a/src/physics.cpp b/src/physics.cpp index 029ab18c86..4cc9b12a03 100644 --- a/src/physics.cpp +++ b/src/physics.cpp @@ -110,7 +110,7 @@ void sample_neutron_reaction(Particle* p) // If survival biasing is being used, the following subroutine adjusts the // weight of the particle. Otherwise, it checks to see if absorption occurs - if (p->micro_xs_[i_nuclide].absorption > 0.0) { + if (p->neutron_xs_[i_nuclide].absorption > 0.0) { absorption(p, i_nuclide); } else { p->wgt_absorb_ = 0.0; @@ -146,8 +146,8 @@ create_fission_sites(Particle* p, int i_nuclide, const Reaction* rx, double weight = settings::ufs_on ? ufs_get_weight(p) : 1.0; // Determine the expected number of neutrons produced - double nu_t = p->wgt_ / simulation::keff * weight * p->micro_xs_[ - i_nuclide].nu_fission / p->micro_xs_[i_nuclide].total; + double nu_t = p->wgt_ / simulation::keff * weight * p->neutron_xs_[ + i_nuclide].nu_fission / p->neutron_xs_[i_nuclide].total; // Sample the number of neutrons produced int nu = static_cast(nu_t); @@ -227,7 +227,7 @@ void sample_photon_reaction(Particle* p) // Sample element within material int i_element = sample_element(p); p->event_nuclide_ = i_element; - const auto& micro {p->micro_photon_xs_[i_element]}; + const auto& micro {p->photon_xs_[i_element]}; const auto& element {data::elements[i_element]}; // Calculate photon energy over electron rest mass equivalent @@ -408,7 +408,7 @@ void sample_positron_reaction(Particle* p) int sample_nuclide(const Particle* p) { // Sample cumulative distribution function - double cutoff = prn() * p->material_xs_.total; + double cutoff = prn() * p->macro_xs_.total; // Get pointers to nuclide/density arrays const auto& mat {model::materials[p->material_]}; @@ -421,7 +421,7 @@ int sample_nuclide(const Particle* p) double atom_density = mat->atom_density_[i]; // Increment probability to compare to cutoff - prob += atom_density * p->micro_xs_[i_nuclide].total; + prob += atom_density * p->neutron_xs_[i_nuclide].total; if (prob >= cutoff) return i_nuclide; } @@ -433,7 +433,7 @@ int sample_nuclide(const Particle* p) int sample_element(Particle* p) { // Sample cumulative distribution function - double cutoff = prn() * p->material_xs_.total; + double cutoff = prn() * p->macro_xs_.total; // Get pointers to elements, densities const auto& mat {model::materials[p->material_]}; @@ -454,7 +454,7 @@ int sample_element(Particle* p) double atom_density = mat->atom_density_[i]; // Determine microscopic cross section - double sigma = atom_density * p->micro_photon_xs_[i_element].total; + double sigma = atom_density * p->photon_xs_[i_element].total; // Increment probability to compare to cutoff prob += sigma; @@ -472,7 +472,7 @@ Reaction* sample_fission(int i_nuclide, const Particle* p) // If we're in the URR, by default use the first fission reaction. We also // default to the first reaction if we know that there are no partial fission // reactions - if (p->micro_xs_[i_nuclide].use_ptable || !nuc->has_partial_fission_) { + if (p->neutron_xs_[i_nuclide].use_ptable || !nuc->has_partial_fission_) { return nuc->fission_rx_[0]; } @@ -485,10 +485,10 @@ Reaction* sample_fission(int i_nuclide, const Particle* p) } // Get grid index and interpolatoin factor and sample fission cdf - int i_temp = p->micro_xs_[i_nuclide].index_temp; - int i_grid = p->micro_xs_[i_nuclide].index_grid; - double f = p->micro_xs_[i_nuclide].interp_factor; - double cutoff = prn() * p->micro_xs_[i_nuclide].fission; + int i_temp = p->neutron_xs_[i_nuclide].index_temp; + int i_grid = p->neutron_xs_[i_nuclide].index_grid; + double f = p->neutron_xs_[i_nuclide].interp_factor; + double cutoff = prn() * p->neutron_xs_[i_nuclide].fission; double prob = 0.0; // Loop through each partial fission reaction type @@ -512,10 +512,10 @@ Reaction* sample_fission(int i_nuclide, const Particle* p) void sample_photon_product(int i_nuclide, const Particle* p, int* i_rx, int* i_product) { // Get grid index and interpolation factor and sample photon production cdf - int i_temp = p->micro_xs_[i_nuclide].index_temp; - int i_grid = p->micro_xs_[i_nuclide].index_grid; - double f = p->micro_xs_[i_nuclide].interp_factor; - double cutoff = prn() * p->micro_xs_[i_nuclide].photon_prod; + int i_temp = p->neutron_xs_[i_nuclide].index_temp; + int i_grid = p->neutron_xs_[i_nuclide].index_grid; + double f = p->neutron_xs_[i_nuclide].interp_factor; + double cutoff = prn() * p->neutron_xs_[i_nuclide].photon_prod; double prob = 0.0; // Loop through each reaction type @@ -548,8 +548,8 @@ void absorption(Particle* p, int i_nuclide) { if (settings::survival_biasing) { // Determine weight absorbed in survival biasing - p->wgt_absorb_ = p->wgt_ * p->micro_xs_[i_nuclide].absorption / - p->micro_xs_[i_nuclide].total; + p->wgt_absorb_ = p->wgt_ * p->neutron_xs_[i_nuclide].absorption / + p->neutron_xs_[i_nuclide].total; // Adjust weight of particle by probability of absorption p->wgt_ -= p->wgt_absorb_; @@ -557,17 +557,17 @@ void absorption(Particle* p, int i_nuclide) // Score implicit absorption estimate of keff if (settings::run_mode == RUN_MODE_EIGENVALUE) { - global_tally_absorption += p->wgt_absorb_ * p->micro_xs_[ - i_nuclide].nu_fission / p->micro_xs_[i_nuclide].absorption; + global_tally_absorption += p->wgt_absorb_ * p->neutron_xs_[ + i_nuclide].nu_fission / p->neutron_xs_[i_nuclide].absorption; } } else { // See if disappearance reaction happens - if (p->micro_xs_[i_nuclide].absorption > - prn() * p->micro_xs_[i_nuclide].total) { + if (p->neutron_xs_[i_nuclide].absorption > + prn() * p->neutron_xs_[i_nuclide].total) { // Score absorption estimate of keff if (settings::run_mode == RUN_MODE_EIGENVALUE) { - global_tally_absorption += p->wgt_ * p->micro_xs_[ - i_nuclide].nu_fission / p->micro_xs_[i_nuclide].absorption; + global_tally_absorption += p->wgt_ * p->neutron_xs_[ + i_nuclide].nu_fission / p->neutron_xs_[i_nuclide].absorption; } p->alive_ = false; @@ -584,7 +584,7 @@ void scatter(Particle* p, int i_nuclide) // Get pointer to nuclide and grid index/interpolation factor const auto& nuc {data::nuclides[i_nuclide]}; - const auto& micro {p->micro_xs_[i_nuclide]}; + const auto& micro {p->neutron_xs_[i_nuclide]}; int i_temp = micro.index_temp; int i_grid = micro.index_grid; double f = micro.interp_factor; @@ -691,9 +691,9 @@ void elastic_scatter(int i_nuclide, const Reaction& rx, double kT, // Sample velocity of target nucleus Direction v_t {}; - if (!p->micro_xs_[i_nuclide].use_ptable) { + if (!p->neutron_xs_[i_nuclide].use_ptable) { v_t = sample_target_velocity(nuc.get(), p->E_, p->u(), v_n, - p->micro_xs_[i_nuclide].elastic, kT); + p->neutron_xs_[i_nuclide].elastic, kT); } // Velocity of center-of-mass @@ -746,7 +746,7 @@ void elastic_scatter(int i_nuclide, const Reaction& rx, double kT, void sab_scatter(int i_nuclide, int i_sab, Particle* p) { // Determine temperature index - const auto& micro {p->micro_xs_[i_nuclide]}; + const auto& micro {p->neutron_xs_[i_nuclide]}; int i_temp = micro.index_temp_sab; // Sample energy and angle @@ -1104,8 +1104,8 @@ void inelastic_scatter(const Nuclide* nuc, const Reaction* rx, Particle* p) void sample_secondary_photons(Particle* p, int i_nuclide) { // Sample the number of photons produced - double y_t = p->wgt_ * p->micro_xs_[i_nuclide].photon_prod / - p->micro_xs_[i_nuclide].total; + double y_t = p->wgt_ * p->neutron_xs_[i_nuclide].photon_prod / + p->neutron_xs_[i_nuclide].total; int y = static_cast(y_t); if (prn() <= y_t - y) ++y; diff --git a/src/physics_mg.cpp b/src/physics_mg.cpp index 9565a627c6..affe0ec197 100644 --- a/src/physics_mg.cpp +++ b/src/physics_mg.cpp @@ -60,7 +60,7 @@ sample_reaction(Particle* p) // If survival biasing is being used, the following subroutine adjusts the // weight of the particle. Otherwise, it checks to see if absorption occurs. - if (p->material_xs_.absorption > 0.) { + if (p->macro_xs_.absorption > 0.) { absorption(p); } else { p->wgt_absorb_ = 0.; @@ -113,7 +113,7 @@ create_fission_sites(Particle* p, Particle::Bank* bank_array, int64_t* size_bank // Determine the expected number of neutrons produced double nu_t = p->wgt_ / simulation::keff * weight * - p->material_xs_.nu_fission / p->material_xs_.total; + p->macro_xs_.nu_fission / p->macro_xs_.total; // Sample the number of neutrons produced int nu = static_cast(nu_t); @@ -204,7 +204,7 @@ absorption(Particle* p) if (settings::survival_biasing) { // Determine weight absorbed in survival biasing p->wgt_absorb_ = p->wgt_ * - p->material_xs_.absorption / p->material_xs_.total; + p->macro_xs_.absorption / p->macro_xs_.total; // Adjust weight of particle by the probability of absorption p->wgt_ -= p->wgt_absorb_; @@ -213,14 +213,14 @@ absorption(Particle* p) // Score implicit absorpion estimate of keff #pragma omp atomic global_tally_absorption += p->wgt_absorb_ * - p->material_xs_.nu_fission / - p->material_xs_.absorption; + p->macro_xs_.nu_fission / + p->macro_xs_.absorption; } else { - if (p->material_xs_.absorption > - prn() * p->material_xs_.total) { + if (p->macro_xs_.absorption > + prn() * p->macro_xs_.total) { #pragma omp atomic - global_tally_absorption += p->wgt_ * p->material_xs_.nu_fission / - p->material_xs_.absorption; + global_tally_absorption += p->wgt_ * p->macro_xs_.nu_fission / + p->macro_xs_.absorption; p->alive_ = false; p->event_ = EVENT_ABSORB; } diff --git a/src/tallies/derivative.cpp b/src/tallies/derivative.cpp index 411995fd78..290d093843 100644 --- a/src/tallies/derivative.cpp +++ b/src/tallies/derivative.cpp @@ -221,12 +221,12 @@ apply_derivative_to_score(const Particle* p, int i_tally, int i_nuclide, switch (score_bin) { case SCORE_TOTAL: - if (i_nuclide == -1 && p->material_xs_.total > 0.0) { + if (i_nuclide == -1 && p->macro_xs_.total > 0.0) { score *= flux_deriv - + p->micro_xs_[deriv.diff_nuclide].total - / p->material_xs_.total; + + p->neutron_xs_[deriv.diff_nuclide].total + / p->macro_xs_.total; } else if (i_nuclide == deriv.diff_nuclide - && p->micro_xs_[i_nuclide].total) { + && p->neutron_xs_[i_nuclide].total) { score *= flux_deriv + 1. / atom_density; } else { score *= flux_deriv; @@ -234,13 +234,13 @@ apply_derivative_to_score(const Particle* p, int i_tally, int i_nuclide, break; case SCORE_SCATTER: - if (i_nuclide == -1 && (p->material_xs_.total - - p->material_xs_.absorption) > 0.0) { + if (i_nuclide == -1 && (p->macro_xs_.total + - p->macro_xs_.absorption) > 0.0) { score *= flux_deriv - + (p->micro_xs_[deriv.diff_nuclide].total - - p->micro_xs_[deriv.diff_nuclide].absorption) - / (p->material_xs_.total - - p->material_xs_.absorption); + + (p->neutron_xs_[deriv.diff_nuclide].total + - p->neutron_xs_[deriv.diff_nuclide].absorption) + / (p->macro_xs_.total + - p->macro_xs_.absorption); } else if (i_nuclide == deriv.diff_nuclide) { score *= flux_deriv + 1. / atom_density; } else { @@ -249,12 +249,12 @@ apply_derivative_to_score(const Particle* p, int i_tally, int i_nuclide, break; case SCORE_ABSORPTION: - if (i_nuclide == -1 && p->material_xs_.absorption > 0.0) { + if (i_nuclide == -1 && p->macro_xs_.absorption > 0.0) { score *= flux_deriv - + p->micro_xs_[deriv.diff_nuclide].absorption - / p->material_xs_.absorption; + + p->neutron_xs_[deriv.diff_nuclide].absorption + / p->macro_xs_.absorption; } else if (i_nuclide == deriv.diff_nuclide - && p->micro_xs_[i_nuclide].absorption) { + && p->neutron_xs_[i_nuclide].absorption) { score *= flux_deriv + 1. / atom_density; } else { score *= flux_deriv; @@ -262,12 +262,12 @@ apply_derivative_to_score(const Particle* p, int i_tally, int i_nuclide, break; case SCORE_FISSION: - if (i_nuclide == -1 && p->material_xs_.fission > 0.0) { + if (i_nuclide == -1 && p->macro_xs_.fission > 0.0) { score *= flux_deriv - + p->micro_xs_[deriv.diff_nuclide].fission - / p->material_xs_.fission; + + p->neutron_xs_[deriv.diff_nuclide].fission + / p->macro_xs_.fission; } else if (i_nuclide == deriv.diff_nuclide - && p->micro_xs_[i_nuclide].fission) { + && p->neutron_xs_[i_nuclide].fission) { score *= flux_deriv + 1. / atom_density; } else { score *= flux_deriv; @@ -275,12 +275,12 @@ apply_derivative_to_score(const Particle* p, int i_tally, int i_nuclide, break; case SCORE_NU_FISSION: - if (i_nuclide == -1 && p->material_xs_.nu_fission > 0.0) { + if (i_nuclide == -1 && p->macro_xs_.nu_fission > 0.0) { score *= flux_deriv - + p->micro_xs_[deriv.diff_nuclide].nu_fission - / p->material_xs_.nu_fission; + + p->neutron_xs_[deriv.diff_nuclide].nu_fission + / p->macro_xs_.nu_fission; } else if (i_nuclide == deriv.diff_nuclide - && p->micro_xs_[i_nuclide].nu_fission) { + && p->neutron_xs_[i_nuclide].nu_fission) { score *= flux_deriv + 1. / atom_density; } else { score *= flux_deriv; @@ -331,64 +331,64 @@ apply_derivative_to_score(const Particle* p, int i_tally, int i_nuclide, switch (score_bin) { case SCORE_TOTAL: - if (p->micro_xs_[p->event_nuclide_].total) { + if (p->neutron_xs_[p->event_nuclide_].total) { double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv + (dsig_s + dsig_a) * material.atom_density_(i) - / p->material_xs_.total; + / p->macro_xs_.total; } else { score *= flux_deriv; } break; case SCORE_SCATTER: - if (p->micro_xs_[p->event_nuclide_].total - - p->micro_xs_[p->event_nuclide_].absorption) { + if (p->neutron_xs_[p->event_nuclide_].total + - p->neutron_xs_[p->event_nuclide_].absorption) { double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv + dsig_s * material.atom_density_(i) - / (p->material_xs_.total - - p->material_xs_.absorption); + / (p->macro_xs_.total + - p->macro_xs_.absorption); } else { score *= flux_deriv; } break; case SCORE_ABSORPTION: - if (p->micro_xs_[p->event_nuclide_].absorption) { + if (p->neutron_xs_[p->event_nuclide_].absorption) { double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv + dsig_a * material.atom_density_(i) - / p->material_xs_.absorption; + / p->macro_xs_.absorption; } else { score *= flux_deriv; } break; case SCORE_FISSION: - if (p->micro_xs_[p->event_nuclide_].fission) { + if (p->neutron_xs_[p->event_nuclide_].fission) { double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv + dsig_f * material.atom_density_(i) - / p->material_xs_.fission; + / p->macro_xs_.fission; } else { score *= flux_deriv; } break; case SCORE_NU_FISSION: - if (p->micro_xs_[p->event_nuclide_].fission) { - double nu = p->micro_xs_[p->event_nuclide_].nu_fission - / p->micro_xs_[p->event_nuclide_].fission; + if (p->neutron_xs_[p->event_nuclide_].fission) { + double nu = p->neutron_xs_[p->event_nuclide_].nu_fission + / p->neutron_xs_[p->event_nuclide_].fission; double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv + nu * dsig_f * material.atom_density_(i) - / p->material_xs_.nu_fission; + / p->macro_xs_.nu_fission; } else { score *= flux_deriv; } @@ -413,141 +413,141 @@ apply_derivative_to_score(const Particle* p, int i_tally, int i_nuclide, switch (score_bin) { case SCORE_TOTAL: - if (i_nuclide == -1 && p->material_xs_.total > 0.0) { + if (i_nuclide == -1 && p->macro_xs_.total > 0.0) { double cum_dsig = 0; for (auto i = 0; i < material.nuclide_.size(); ++i) { auto i_nuc = material.nuclide_[i]; const auto& nuc {*data::nuclides[i_nuc]}; if (multipole_in_range(&nuc, p->E_last_) - && p->micro_xs_[i_nuc].total) { + && p->neutron_xs_[i_nuc].total) { double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); cum_dsig += (dsig_s + dsig_a) * material.atom_density_(i); } } - score *= flux_deriv + cum_dsig / p->material_xs_.total; - } else if (p->micro_xs_[i_nuclide].total) { + score *= flux_deriv + cum_dsig / p->macro_xs_.total; + } else if (p->neutron_xs_[i_nuclide].total) { const auto& nuc {*data::nuclides[i_nuclide]}; double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv - + (dsig_s + dsig_a) / p->micro_xs_[i_nuclide].total; + + (dsig_s + dsig_a) / p->neutron_xs_[i_nuclide].total; } else { score *= flux_deriv; } break; case SCORE_SCATTER: - if (i_nuclide == -1 && (p->material_xs_.total - - p->material_xs_.absorption)) { + if (i_nuclide == -1 && (p->macro_xs_.total + - p->macro_xs_.absorption)) { double cum_dsig = 0; for (auto i = 0; i < material.nuclide_.size(); ++i) { auto i_nuc = material.nuclide_[i]; const auto& nuc {*data::nuclides[i_nuc]}; if (multipole_in_range(&nuc, p->E_last_) - && (p->micro_xs_[i_nuc].total - - p->micro_xs_[i_nuc].absorption)) { + && (p->neutron_xs_[i_nuc].total + - p->neutron_xs_[i_nuc].absorption)) { double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); cum_dsig += dsig_s * material.atom_density_(i); } } - score *= flux_deriv + cum_dsig / (p->material_xs_.total - - p->material_xs_.absorption); - } else if (p->micro_xs_[i_nuclide].total - - p->micro_xs_[i_nuclide].absorption) { + score *= flux_deriv + cum_dsig / (p->macro_xs_.total + - p->macro_xs_.absorption); + } else if (p->neutron_xs_[i_nuclide].total + - p->neutron_xs_[i_nuclide].absorption) { const auto& nuc {*data::nuclides[i_nuclide]}; double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); - score *= flux_deriv + dsig_s / (p->micro_xs_[i_nuclide].total - - p->micro_xs_[i_nuclide].absorption); + score *= flux_deriv + dsig_s / (p->neutron_xs_[i_nuclide].total + - p->neutron_xs_[i_nuclide].absorption); } else { score *= flux_deriv; } break; case SCORE_ABSORPTION: - if (i_nuclide == -1 && p->material_xs_.absorption > 0.0) { + if (i_nuclide == -1 && p->macro_xs_.absorption > 0.0) { double cum_dsig = 0; for (auto i = 0; i < material.nuclide_.size(); ++i) { auto i_nuc = material.nuclide_[i]; const auto& nuc {*data::nuclides[i_nuc]}; if (multipole_in_range(&nuc, p->E_last_) - && p->micro_xs_[i_nuc].absorption) { + && p->neutron_xs_[i_nuc].absorption) { double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); cum_dsig += dsig_a * material.atom_density_(i); } } - score *= flux_deriv + cum_dsig / p->material_xs_.absorption; - } else if (p->micro_xs_[i_nuclide].absorption) { + score *= flux_deriv + cum_dsig / p->macro_xs_.absorption; + } else if (p->neutron_xs_[i_nuclide].absorption) { const auto& nuc {*data::nuclides[i_nuclide]}; double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv - + dsig_a / p->micro_xs_[i_nuclide].absorption; + + dsig_a / p->neutron_xs_[i_nuclide].absorption; } else { score *= flux_deriv; } break; case SCORE_FISSION: - if (i_nuclide == -1 && p->material_xs_.fission > 0.0) { + if (i_nuclide == -1 && p->macro_xs_.fission > 0.0) { double cum_dsig = 0; for (auto i = 0; i < material.nuclide_.size(); ++i) { auto i_nuc = material.nuclide_[i]; const auto& nuc {*data::nuclides[i_nuc]}; if (multipole_in_range(&nuc, p->E_last_) - && p->micro_xs_[i_nuc].fission) { + && p->neutron_xs_[i_nuc].fission) { double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); cum_dsig += dsig_f * material.atom_density_(i); } } - score *= flux_deriv + cum_dsig / p->material_xs_.fission; - } else if (p->micro_xs_[i_nuclide].fission) { + score *= flux_deriv + cum_dsig / p->macro_xs_.fission; + } else if (p->neutron_xs_[i_nuclide].fission) { const auto& nuc {*data::nuclides[i_nuclide]}; double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv - + dsig_f / p->micro_xs_[i_nuclide].fission; + + dsig_f / p->neutron_xs_[i_nuclide].fission; } else { score *= flux_deriv; } break; case SCORE_NU_FISSION: - if (i_nuclide == -1 && p->material_xs_.nu_fission > 0.0) { + if (i_nuclide == -1 && p->macro_xs_.nu_fission > 0.0) { double cum_dsig = 0; for (auto i = 0; i < material.nuclide_.size(); ++i) { auto i_nuc = material.nuclide_[i]; const auto& nuc {*data::nuclides[i_nuc]}; if (multipole_in_range(&nuc, p->E_last_) - && p->micro_xs_[i_nuc].fission) { - double nu = p->micro_xs_[i_nuc].nu_fission - / p->micro_xs_[i_nuc].fission; + && p->neutron_xs_[i_nuc].fission) { + double nu = p->neutron_xs_[i_nuc].nu_fission + / p->neutron_xs_[i_nuc].fission; double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); cum_dsig += nu * dsig_f * material.atom_density_(i); } } - score *= flux_deriv + cum_dsig / p->material_xs_.nu_fission; - } else if (p->micro_xs_[i_nuclide].fission) { + score *= flux_deriv + cum_dsig / p->macro_xs_.nu_fission; + } else if (p->neutron_xs_[i_nuclide].fission) { const auto& nuc {*data::nuclides[i_nuclide]}; double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); score *= flux_deriv - + dsig_f / p->micro_xs_[i_nuclide].fission; + + dsig_f / p->neutron_xs_[i_nuclide].fission; } else { score *= flux_deriv; } @@ -582,7 +582,7 @@ score_track_derivative(const Particle* p, double distance) // phi is proportional to e^(-Sigma_tot * dist) // (1 / phi) * (d_phi / d_rho) = - (d_Sigma_tot / d_rho) * dist // (1 / phi) * (d_phi / d_rho) = - Sigma_tot / rho * dist - deriv.flux_deriv -= distance * p->material_xs_.total + deriv.flux_deriv -= distance * p->macro_xs_.total / material.density_gpcc_; break; @@ -591,7 +591,7 @@ score_track_derivative(const Particle* p, double distance) // (1 / phi) * (d_phi / d_N) = - (d_Sigma_tot / d_N) * dist // (1 / phi) * (d_phi / d_N) = - sigma_tot * dist deriv.flux_deriv -= distance - * p->micro_xs_[deriv.diff_nuclide].total; + * p->neutron_xs_[deriv.diff_nuclide].total; break; case DIFF_TEMPERATURE: @@ -660,7 +660,7 @@ void score_collision_derivative(const Particle* p) // phi is proportional to Sigma_s // (1 / phi) * (d_phi / d_T) = (d_Sigma_s / d_T) / Sigma_s // (1 / phi) * (d_phi / d_T) = (d_sigma_s / d_T) / sigma_s - const auto& micro_xs {p->micro_xs_[i_nuc]}; + const auto& micro_xs {p->neutron_xs_[i_nuc]}; double dsig_s, dsig_a, dsig_f; std::tie(dsig_s, dsig_a, dsig_f) = nuc.multipole_->evaluate_deriv(p->E_last_, p->sqrtkT_); diff --git a/src/tallies/tally_scoring.cpp b/src/tallies/tally_scoring.cpp index 57e810dfd2..de851ea3cb 100644 --- a/src/tallies/tally_scoring.cpp +++ b/src/tallies/tally_scoring.cpp @@ -349,7 +349,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, if (p->type_ == Particle::Type::neutron || p->type_ == Particle::Type::photon) { - score *= flux / p->material_xs_.total; + score *= flux / p->macro_xs_.total; } else { score = 0.; } @@ -373,9 +373,9 @@ score_general_ce(Particle* p, int i_tally, int start_index, } else { if (i_nuclide >= 0) { - score = p->micro_xs_[i_nuclide].total * atom_density * flux; + score = p->neutron_xs_[i_nuclide].total * atom_density * flux; } else { - score = p->material_xs_.total * flux; + score = p->macro_xs_.total * flux; } } break; @@ -393,7 +393,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, } else { score = p->wgt_last_; } - score *= flux / p->material_xs_.total; + score *= flux / p->macro_xs_.total; } else { score = flux; } @@ -411,11 +411,11 @@ score_general_ce(Particle* p, int i_tally, int start_index, score = p->wgt_last_ * flux; } else { if (i_nuclide >= 0) { - score = (p->micro_xs_[i_nuclide].total - - p->micro_xs_[i_nuclide].absorption) * atom_density * flux; + score = (p->neutron_xs_[i_nuclide].total + - p->neutron_xs_[i_nuclide].absorption) * atom_density * flux; } else { - score = (p->material_xs_.total - - p->material_xs_.absorption) * flux; + score = (p->macro_xs_.total + - p->macro_xs_.absorption) * flux; } } break; @@ -458,26 +458,26 @@ score_general_ce(Particle* p, int i_tally, int start_index, } } else { if (i_nuclide >= 0) { - score = p->micro_xs_[i_nuclide].absorption * atom_density + score = p->neutron_xs_[i_nuclide].absorption * atom_density * flux; } else { - score = p->material_xs_.absorption * flux; + score = p->macro_xs_.absorption * flux; } } break; case SCORE_FISSION: - if (p->material_xs_.absorption == 0) continue; + if (p->macro_xs_.absorption == 0) continue; if (tally.estimator_ == ESTIMATOR_ANALOG) { if (settings::survival_biasing) { // No fission events occur if survival biasing is on -- need to // calculate fraction of absorptions that would have resulted in // fission - if (p->micro_xs_[p->event_nuclide_].absorption > 0) { + if (p->neutron_xs_[p->event_nuclide_].absorption > 0) { score = p->wgt_absorb_ - * p->micro_xs_[p->event_nuclide_].fission - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].fission + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } else { score = 0.; } @@ -488,21 +488,21 @@ score_general_ce(Particle* p, int i_tally, int start_index, // weight entering the collision as the estimate for the fission // reaction rate score = p->wgt_last_ - * p->micro_xs_[p->event_nuclide_].fission - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].fission + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } } else { if (i_nuclide >= 0) { - score = p->micro_xs_[i_nuclide].fission * atom_density * flux; + score = p->neutron_xs_[i_nuclide].fission * atom_density * flux; } else { - score = p->material_xs_.fission * flux; + score = p->macro_xs_.fission * flux; } } break; case SCORE_NU_FISSION: - if (p->material_xs_.absorption == 0) continue; + if (p->macro_xs_.absorption == 0) continue; if (tally.estimator_ == ESTIMATOR_ANALOG) { if (settings::survival_biasing || p->fission_) { if (tally.energyout_filter_ != C_NONE) { @@ -516,10 +516,10 @@ score_general_ce(Particle* p, int i_tally, int start_index, // No fission events occur if survival biasing is on -- need to // calculate fraction of absorptions that would have resulted in // nu-fission - if (p->micro_xs_[p->event_nuclide_].absorption > 0) { + if (p->neutron_xs_[p->event_nuclide_].absorption > 0) { score = p->wgt_absorb_ - * p->micro_xs_[p->event_nuclide_].nu_fission - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].nu_fission + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } else { score = 0.; } @@ -535,17 +535,17 @@ score_general_ce(Particle* p, int i_tally, int start_index, } } else { if (i_nuclide >= 0) { - score = p->micro_xs_[i_nuclide].nu_fission * atom_density + score = p->neutron_xs_[i_nuclide].nu_fission * atom_density * flux; } else { - score = p->material_xs_.nu_fission * flux; + score = p->macro_xs_.nu_fission * flux; } } break; case SCORE_PROMPT_NU_FISSION: - if (p->material_xs_.absorption == 0) continue; + if (p->macro_xs_.absorption == 0) continue; if (tally.estimator_ == ESTIMATOR_ANALOG) { if (settings::survival_biasing || p->fission_) { if (tally.energyout_filter_ != C_NONE) { @@ -559,12 +559,12 @@ score_general_ce(Particle* p, int i_tally, int start_index, // No fission events occur if survival biasing is on -- need to // calculate fraction of absorptions that would have resulted in // prompt-nu-fission - if (p->micro_xs_[p->event_nuclide_].absorption > 0) { + if (p->neutron_xs_[p->event_nuclide_].absorption > 0) { score = p->wgt_absorb_ - * p->micro_xs_[p->event_nuclide_].fission + * p->neutron_xs_[p->event_nuclide_].fission * data::nuclides[p->event_nuclide_] ->nu(E, ReactionProduct::EmissionMode::prompt) - / p->micro_xs_[p->event_nuclide_].absorption * flux; + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } else { score = 0.; } @@ -583,7 +583,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, } } else { if (i_nuclide >= 0) { - score = p->micro_xs_[i_nuclide].fission + score = p->neutron_xs_[i_nuclide].fission * data::nuclides[i_nuclide] ->nu(E, ReactionProduct::EmissionMode::prompt) * atom_density * flux; @@ -595,7 +595,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, for (auto i = 0; i < material.nuclide_.size(); ++i) { auto j_nuclide = material.nuclide_[i]; auto atom_density = material.atom_density_(i); - score += p->micro_xs_[j_nuclide].fission + score += p->neutron_xs_[j_nuclide].fission * data::nuclides[j_nuclide] ->nu(E, ReactionProduct::EmissionMode::prompt) * atom_density * flux; @@ -607,7 +607,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, case SCORE_DELAYED_NU_FISSION: - if (p->material_xs_.absorption == 0) continue; + if (p->macro_xs_.absorption == 0) continue; if (tally.estimator_ == ESTIMATOR_ANALOG) { if (settings::survival_biasing || p->fission_) { if (tally.energyout_filter_ != C_NONE) { @@ -621,7 +621,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, // No fission events occur if survival biasing is on -- need to // calculate fraction of absorptions that would have resulted in // delayed-nu-fission - if (p->micro_xs_[p->event_nuclide_].absorption > 0 + if (p->neutron_xs_[p->event_nuclide_].absorption > 0 && data::nuclides[p->event_nuclide_]->fissionable_) { if (tally.delayedgroup_filter_ != C_NONE) { auto i_dg_filt = tally.filters()[tally.delayedgroup_filter_]; @@ -634,8 +634,8 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto yield = data::nuclides[p->event_nuclide_] ->nu(E, ReactionProduct::EmissionMode::delayed, d); score = p->wgt_absorb_ * yield - * p->micro_xs_[p->event_nuclide_].fission - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].fission + / p->neutron_xs_[p->event_nuclide_].absorption * flux; score_fission_delayed_dg(i_tally, d_bin, score, score_index); } @@ -645,10 +645,10 @@ score_general_ce(Particle* p, int i_tally, int start_index, // by multiplying the absorbed weight by the fraction of the // delayed-nu-fission xs to the absorption xs score = p->wgt_absorb_ - * p->micro_xs_[p->event_nuclide_].fission + * p->neutron_xs_[p->event_nuclide_].fission * data::nuclides[p->event_nuclide_] ->nu(E, ReactionProduct::EmissionMode::delayed) - / p->micro_xs_[p->event_nuclide_].absorption *flux; + / p->neutron_xs_[p->event_nuclide_].absorption *flux; } } } else { @@ -694,7 +694,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto d = filt.groups_[d_bin]; auto yield = data::nuclides[i_nuclide] ->nu(E, ReactionProduct::EmissionMode::delayed, d); - score = p->micro_xs_[i_nuclide].fission * yield + score = p->neutron_xs_[i_nuclide].fission * yield * atom_density * flux; score_fission_delayed_dg(i_tally, d_bin, score, score_index); } @@ -702,7 +702,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, } else { // If the delayed group filter is not present, compute the score // by multiplying the delayed-nu-fission macro xs by the flux - score = p->micro_xs_[i_nuclide].fission + score = p->neutron_xs_[i_nuclide].fission * data::nuclides[i_nuclide] ->nu(E, ReactionProduct::EmissionMode::delayed) * atom_density * flux; @@ -723,7 +723,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto d = filt.groups_[d_bin]; auto yield = data::nuclides[j_nuclide] ->nu(E, ReactionProduct::EmissionMode::delayed, d); - score = p->micro_xs_[j_nuclide].fission * yield + score = p->neutron_xs_[j_nuclide].fission * yield * atom_density * flux; score_fission_delayed_dg(i_tally, d_bin, score, score_index); @@ -738,7 +738,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, for (auto i = 0; i < material.nuclide_.size(); ++i) { auto j_nuclide = material.nuclide_[i]; auto atom_density = material.atom_density_(i); - score += p->micro_xs_[j_nuclide].fission + score += p->neutron_xs_[j_nuclide].fission * data::nuclides[j_nuclide] ->nu(E, ReactionProduct::EmissionMode::delayed) * atom_density * flux; @@ -751,14 +751,14 @@ score_general_ce(Particle* p, int i_tally, int start_index, case SCORE_DECAY_RATE: - if (p->material_xs_.absorption == 0) continue; + if (p->macro_xs_.absorption == 0) continue; if (tally.estimator_ == ESTIMATOR_ANALOG) { if (settings::survival_biasing) { // No fission events occur if survival biasing is on -- need to // calculate fraction of absorptions that would have resulted in // delayed-nu-fission const auto& nuc {*data::nuclides[p->event_nuclide_]}; - if (p->micro_xs_[p->event_nuclide_].absorption > 0 + if (p->neutron_xs_[p->event_nuclide_].absorption > 0 && nuc.fissionable_) { const auto& rxn {*nuc.fission_rx_[0]}; if (tally.delayedgroup_filter_ != C_NONE) { @@ -773,8 +773,8 @@ score_general_ce(Particle* p, int i_tally, int start_index, = nuc.nu(E, ReactionProduct::EmissionMode::delayed, d); auto rate = rxn.products_[d].decay_rate_; score = p->wgt_absorb_ * yield - * p->micro_xs_[p->event_nuclide_].fission - / p->micro_xs_[p->event_nuclide_].absorption + * p->neutron_xs_[p->event_nuclide_].fission + / p->neutron_xs_[p->event_nuclide_].absorption * rate * flux; score_fission_delayed_dg(i_tally, d_bin, score, score_index); @@ -796,8 +796,8 @@ score_general_ce(Particle* p, int i_tally, int start_index, = nuc.nu(E, ReactionProduct::EmissionMode::delayed, d+1); auto rate = rxn.products_[d+1].decay_rate_; score += rate * p->wgt_absorb_ - * p->micro_xs_[p->event_nuclide_].fission * yield - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].fission * yield + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } } } @@ -854,7 +854,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto yield = nuc.nu(E, ReactionProduct::EmissionMode::delayed, d); auto rate = rxn.products_[d].decay_rate_; - score = p->micro_xs_[i_nuclide].fission * yield * flux + score = p->neutron_xs_[i_nuclide].fission * yield * flux * atom_density * rate; score_fission_delayed_dg(i_tally, d_bin, score, score_index); } @@ -870,7 +870,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto yield = nuc.nu(E, ReactionProduct::EmissionMode::delayed, d+1); auto rate = rxn.products_[d+1].decay_rate_; - score += p->micro_xs_[i_nuclide].fission * flux + score += p->neutron_xs_[i_nuclide].fission * flux * yield * atom_density * rate; } } @@ -894,7 +894,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto yield = nuc.nu(E, ReactionProduct::EmissionMode::delayed, d); auto rate = rxn.products_[d].decay_rate_; - score = p->micro_xs_[j_nuclide].fission * yield + score = p->neutron_xs_[j_nuclide].fission * yield * flux * atom_density * rate; score_fission_delayed_dg(i_tally, d_bin, score, score_index); @@ -922,7 +922,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto yield = nuc.nu(E, ReactionProduct::EmissionMode::delayed, d+1); auto rate = rxn.products_[d+1].decay_rate_; - score += p->micro_xs_[j_nuclide].fission + score += p->neutron_xs_[j_nuclide].fission * yield * atom_density * flux * rate; } } @@ -935,7 +935,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, case SCORE_KAPPA_FISSION: - if (p->material_xs_.absorption == 0.) continue; + if (p->macro_xs_.absorption == 0.) continue; score = 0.; // Kappa-fission values are determined from the Q-value listed for the // fission cross section. @@ -945,12 +945,12 @@ score_general_ce(Particle* p, int i_tally, int start_index, // calculate fraction of absorptions that would have resulted in // fission scaled by the Q-value const auto& nuc {*data::nuclides[p->event_nuclide_]}; - if (p->micro_xs_[p->event_nuclide_].absorption > 0 + if (p->neutron_xs_[p->event_nuclide_].absorption > 0 && nuc.fissionable_) { const auto& rxn {*nuc.fission_rx_[0]}; score = p->wgt_absorb_ * rxn.q_value_ - * p->micro_xs_[p->event_nuclide_].fission - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].fission + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } } else { // Skip any non-absorption events @@ -959,12 +959,12 @@ score_general_ce(Particle* p, int i_tally, int start_index, // weight entering the collision as the estimate for the fission // reaction rate const auto& nuc {*data::nuclides[p->event_nuclide_]}; - if (p->micro_xs_[p->event_nuclide_].absorption > 0 + if (p->neutron_xs_[p->event_nuclide_].absorption > 0 && nuc.fissionable_) { const auto& rxn {*nuc.fission_rx_[0]}; score = p->wgt_last_ * rxn.q_value_ - * p->micro_xs_[p->event_nuclide_].fission - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].fission + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } } } else { @@ -972,7 +972,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, const auto& nuc {*data::nuclides[i_nuclide]}; if (nuc.fissionable_) { const auto& rxn {*nuc.fission_rx_[0]}; - score = rxn.q_value_ * p->micro_xs_[i_nuclide].fission + score = rxn.q_value_ * p->neutron_xs_[i_nuclide].fission * atom_density * flux; } } else { @@ -984,7 +984,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, const auto& nuc {*data::nuclides[j_nuclide]}; if (nuc.fissionable_) { const auto& rxn {*nuc.fission_rx_[0]}; - score += rxn.q_value_ * p->micro_xs_[j_nuclide].fission + score += rxn.q_value_ * p->neutron_xs_[j_nuclide].fission * atom_density * flux; } } @@ -1007,9 +1007,9 @@ score_general_ce(Particle* p, int i_tally, int start_index, score = p->wgt_last_ * flux; } else { if (i_nuclide >= 0) { - if (p->micro_xs_[i_nuclide].elastic == CACHE_INVALID) + if (p->neutron_xs_[i_nuclide].elastic == CACHE_INVALID) data::nuclides[i_nuclide]->calculate_elastic_xs(*p); - score = p->micro_xs_[i_nuclide].elastic * atom_density * flux; + score = p->neutron_xs_[i_nuclide].elastic * atom_density * flux; } else { score = 0.; if (p->material_ != MATERIAL_VOID) { @@ -1017,9 +1017,9 @@ score_general_ce(Particle* p, int i_tally, int start_index, for (auto i = 0; i < material.nuclide_.size(); ++i) { auto j_nuclide = material.nuclide_[i]; auto atom_density = material.atom_density_(i); - if (p->micro_xs_[j_nuclide].elastic == CACHE_INVALID) + if (p->neutron_xs_[j_nuclide].elastic == CACHE_INVALID) data::nuclides[j_nuclide]->calculate_elastic_xs(*p); - score += p->micro_xs_[j_nuclide].elastic * atom_density + score += p->neutron_xs_[j_nuclide].elastic * atom_density * flux; } } @@ -1030,7 +1030,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, case SCORE_FISS_Q_PROMPT: case SCORE_FISS_Q_RECOV: //continue; - if (p->material_xs_.absorption == 0.) continue; + if (p->macro_xs_.absorption == 0.) continue; score = 0.; if (tally.estimator_ == ESTIMATOR_ANALOG) { if (settings::survival_biasing) { @@ -1038,7 +1038,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, // calculate fraction of absorptions that would have resulted in // fission scaled by the Q-value const auto& nuc {*data::nuclides[p->event_nuclide_]}; - if (p->micro_xs_[p->event_nuclide_].absorption > 0) { + if (p->neutron_xs_[p->event_nuclide_].absorption > 0) { double q_value = 0.; if (score_bin == SCORE_FISS_Q_PROMPT) { if (nuc.fission_q_prompt_) @@ -1048,8 +1048,8 @@ score_general_ce(Particle* p, int i_tally, int start_index, q_value = (*nuc.fission_q_recov_)(p->E_last_); } score = p->wgt_absorb_ * q_value - * p->micro_xs_[p->event_nuclide_].fission - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].fission + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } } else { // Skip any non-absorption events @@ -1058,7 +1058,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, // weight entering the collision as the estimate for the fission // reaction rate const auto& nuc {*data::nuclides[p->event_nuclide_]}; - if (p->micro_xs_[p->event_nuclide_].absorption > 0) { + if (p->neutron_xs_[p->event_nuclide_].absorption > 0) { double q_value = 0.; if (score_bin == SCORE_FISS_Q_PROMPT) { if (nuc.fission_q_prompt_) @@ -1068,8 +1068,8 @@ score_general_ce(Particle* p, int i_tally, int start_index, q_value = (*nuc.fission_q_recov_)(p->E_last_); } score = p->wgt_last_ * q_value - * p->micro_xs_[p->event_nuclide_].fission - / p->micro_xs_[p->event_nuclide_].absorption * flux; + * p->neutron_xs_[p->event_nuclide_].fission + / p->neutron_xs_[p->event_nuclide_].absorption * flux; } } } else { @@ -1083,7 +1083,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, if (nuc.fission_q_recov_) q_value = (*nuc.fission_q_recov_)(p->E_last_); } - score = q_value * p->micro_xs_[i_nuclide].fission + score = q_value * p->neutron_xs_[i_nuclide].fission * atom_density * flux; } else { if (p->material_ != MATERIAL_VOID) { @@ -1100,7 +1100,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, if (nuc.fission_q_recov_) q_value = (*nuc.fission_q_recov_)(p->E_last_); } - score += q_value * p->micro_xs_[j_nuclide].fission + score += q_value * p->neutron_xs_[j_nuclide].fission * atom_density * flux; } } @@ -1130,7 +1130,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, case N_4N: m = 5; break; } if (i_nuclide >= 0) { - score = p->micro_xs_[i_nuclide].reaction[m] * atom_density + score = p->neutron_xs_[i_nuclide].reaction[m] * atom_density * flux; } else { score = 0.; @@ -1139,7 +1139,7 @@ score_general_ce(Particle* p, int i_tally, int start_index, for (auto i = 0; i < material.nuclide_.size(); ++i) { auto j_nuclide = material.nuclide_[i]; auto atom_density = material.atom_density_(i); - score += p->micro_xs_[j_nuclide].reaction[m] + score += p->neutron_xs_[j_nuclide].reaction[m] * atom_density * flux; } } @@ -1164,10 +1164,10 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto m = nuc.reaction_index_[score_bin]; if (m == C_NONE) continue; const auto& rxn {*nuc.reactions_[m]}; - auto i_temp = p->micro_xs_[i_nuclide].index_temp; + auto i_temp = p->neutron_xs_[i_nuclide].index_temp; if (i_temp >= 0) { // Can be false due to multipole - auto i_grid = p->micro_xs_[i_nuclide].index_grid; - auto f = p->micro_xs_[i_nuclide].interp_factor; + auto i_grid = p->neutron_xs_[i_nuclide].index_grid; + auto f = p->neutron_xs_[i_nuclide].interp_factor; const auto& xs {rxn.xs_[i_temp]}; if (i_grid >= xs.threshold) { score = ((1.0 - f) * xs.value[i_grid-xs.threshold] @@ -1184,10 +1184,10 @@ score_general_ce(Particle* p, int i_tally, int start_index, auto m = nuc.reaction_index_[score_bin]; if (m == C_NONE) continue; const auto& rxn {*nuc.reactions_[m]}; - auto i_temp = p->micro_xs_[j_nuclide].index_temp; + auto i_temp = p->neutron_xs_[j_nuclide].index_temp; if (i_temp >= 0) { // Can be false due to multipole - auto i_grid = p->micro_xs_[j_nuclide].index_grid; - auto f = p->micro_xs_[j_nuclide].interp_factor; + auto i_grid = p->neutron_xs_[j_nuclide].index_grid; + auto f = p->neutron_xs_[j_nuclide].interp_factor; const auto& xs {rxn.xs_[i_temp]}; if (i_grid >= xs.threshold) { score += ((1.0 - f) * xs.value[i_grid-xs.threshold] @@ -1291,7 +1291,7 @@ score_general_mg(const Particle* p, int i_tally, int start_index, } else { score = p->wgt_last_; } - score *= flux / p->material_xs_.total; + score *= flux / p->macro_xs_.total; } else { score = flux; } @@ -1320,7 +1320,7 @@ score_general_mg(const Particle* p, int i_tally, int start_index, score = get_nuclide_xs(i_nuclide, MG_GET_XS_TOTAL, p_g) * atom_density * flux; } else { - score = p->material_xs_.total * flux; + score = p->macro_xs_.total * flux; } } break; @@ -1438,7 +1438,7 @@ score_general_mg(const Particle* p, int i_tally, int start_index, score = atom_density * flux * get_nuclide_xs(i_nuclide, MG_GET_XS_ABSORPTION, p_g); } else { - score = p->material_xs_.absorption * flux; + score = p->macro_xs_.absorption * flux; } } break; @@ -2127,9 +2127,9 @@ void score_collision_tally(Particle* p) // Determine the collision estimate of the flux double flux; if (!settings::survival_biasing) { - flux = p->wgt_last_ / p->material_xs_.total; + flux = p->wgt_last_ / p->macro_xs_.total; } else { - flux = (p->wgt_last_ + p->wgt_absorb_) / p->material_xs_.total; + flux = (p->wgt_last_ + p->wgt_absorb_) / p->macro_xs_.total; } for (auto i_tally : model::active_collision_tallies) {