mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 06:05:58 -04:00
Scale fission photon production by (EGP + EGD)/EGP
This commit is contained in:
parent
cf788db82f
commit
8894696db1
3 changed files with 35 additions and 16 deletions
|
|
@ -97,7 +97,7 @@ public:
|
|||
std::vector<int> index_inelastic_scatter_;
|
||||
|
||||
private:
|
||||
void create_derived();
|
||||
void create_derived(const Function1D* prompt_photons, const Function1D* delayed_photons);
|
||||
|
||||
static int XS_TOTAL;
|
||||
static int XS_ABSORPTION;
|
||||
|
|
|
|||
|
|
@ -259,17 +259,24 @@ Nuclide::Nuclide(hid_t group, const std::vector<double>& temperature, int i_nucl
|
|||
}
|
||||
|
||||
// Read fission energy release data if present
|
||||
std::unique_ptr<Function1D> prompt_photons;
|
||||
std::unique_ptr<Function1D> delayed_photons;
|
||||
if (object_exists(group, "fission_energy_release")) {
|
||||
hid_t fer_group = open_group(group, "fission_energy_release");
|
||||
fission_q_prompt_ = read_function(fer_group, "q_prompt");
|
||||
fission_q_recov_ = read_function(fer_group, "q_recoverable");
|
||||
|
||||
// We need prompt/delayed photon energy release for scaling fission photon
|
||||
// production
|
||||
prompt_photons = read_function(fer_group, "prompt_photons");
|
||||
delayed_photons = read_function(fer_group, "delayed_photons");
|
||||
close_group(fer_group);
|
||||
}
|
||||
|
||||
this->create_derived();
|
||||
this->create_derived(prompt_photons.get(), delayed_photons.get());
|
||||
}
|
||||
|
||||
void Nuclide::create_derived()
|
||||
void Nuclide::create_derived(const Function1D* prompt_photons, const Function1D* delayed_photons)
|
||||
{
|
||||
for (const auto& grid : grid_) {
|
||||
// Allocate and initialize cross section
|
||||
|
|
@ -294,7 +301,19 @@ void Nuclide::create_derived()
|
|||
auto pprod = xt::view(xs_[t], xt::range(j, j+n), XS_PHOTON_PROD);
|
||||
for (int k = 0; k < n; ++k) {
|
||||
double E = grid_[t].energy[k+j];
|
||||
pprod[k] += xs[k] * (*p.yield_)(E);
|
||||
|
||||
// For fission, artificially increase the photon yield to account
|
||||
// for delayed photons
|
||||
double f = 1.0;
|
||||
if (is_fission(rx->mt_)) {
|
||||
if (prompt_photons && delayed_photons) {
|
||||
double energy_prompt = (*prompt_photons)(E);
|
||||
double energy_delayed = (*delayed_photons)(E);
|
||||
f = (energy_prompt + energy_delayed)/(energy_prompt);
|
||||
}
|
||||
}
|
||||
|
||||
pprod[k] += f * xs[k] * (*p.yield_)(E);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,14 +15,14 @@ tally 1:
|
|||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
2.491697E+07
|
||||
2.070245E+14
|
||||
4.764667E+07
|
||||
7.568912E+14
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
2.491697E+07
|
||||
2.070245E+14
|
||||
4.764667E+07
|
||||
7.568912E+14
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
tally 2:
|
||||
|
|
@ -40,14 +40,14 @@ tally 2:
|
|||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
2.508579E+07
|
||||
2.098299E+14
|
||||
4.749088E+07
|
||||
7.519602E+14
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
2.508579E+07
|
||||
2.098299E+14
|
||||
4.749088E+07
|
||||
7.519602E+14
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
tally 3:
|
||||
|
|
@ -65,13 +65,13 @@ tally 3:
|
|||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
2.495967E+07
|
||||
2.077339E+14
|
||||
4.729796E+07
|
||||
7.458273E+14
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
2.504536E+07
|
||||
2.091625E+14
|
||||
4.743827E+07
|
||||
7.502589E+14
|
||||
0.000000E+00
|
||||
0.000000E+00
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue