Skip to content

Commit a949e0e

Browse files
committed
support total nuclide
1 parent 07ac632 commit a949e0e

File tree

6 files changed

+26
-12
lines changed

6 files changed

+26
-12
lines changed

openmc/model/model.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ def _get_all_materials(self) -> dict[int, openmc.Material]:
235235

236236
return materials
237237

238-
def add_kinetics_parameters_tallies(self, num_groups: int | None = None, nuclides: Sequence[str] | None = None):
238+
def add_kinetics_parameters_tallies(self, num_groups: int | None = None, nuclides: Sequence[str] = ["total"]):
239239
"""Add tallies for calculating kinetics parameters using the IFP method.
240240
241241
This method adds tallies to the model for calculating two kinetics
@@ -249,9 +249,9 @@ def add_kinetics_parameters_tallies(self, num_groups: int | None = None, nuclide
249249
Number of precursor groups to filter the delayed neutron fraction.
250250
If None, only the total effective delayed neutron fraction is
251251
tallied.
252-
nuclides : int, optional
252+
nuclides : Sequence[str]
253253
Nuclides to calculate separate kinetic parameters for.
254-
If None, do not separate kinetic parameters per nuclide.
254+
Defaults to ["total"].
255255
256256
"""
257257
if not any('ifp-time-numerator' in t.scores for t in self.tallies):
@@ -261,10 +261,9 @@ def add_kinetics_parameters_tallies(self, num_groups: int | None = None, nuclide
261261
if not any('ifp-beta-numerator' in t.scores for t in self.tallies):
262262
beta_tally = openmc.Tally(name='IFP beta numerator')
263263
beta_tally.scores = ['ifp-beta-numerator']
264+
beta_tally.nuclides = list(nuclides)
264265
if num_groups is not None:
265266
beta_tally.filters = [openmc.DelayedGroupFilter(list(range(1, num_groups + 1)))]
266-
if nuclides:
267-
beta_tally.nuclides = list(nuclides)
268267
self.tallies.append(beta_tally)
269268
if not any('ifp-denominator' in t.scores for t in self.tallies):
270269
denom_tally = openmc.Tally(name='IFP denominator')

src/tallies/tally.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,12 @@ Tally::Tally(pugi::xml_node node)
235235
}
236236
break;
237237
case SCORE_IFP_BETA_NUM:
238-
// This bool indicates if the ancestor_nuclide vector has to be filled
239-
if (nuclides_[0] > -1) {
240-
settings::ifp_beta_nuclide = true;
238+
for (int i_nuc : nuclides_) {
239+
if (i_nuc > -1) {
240+
// This bool indicates if the ancestor_nuclide vector has to be
241+
// filled
242+
settings::ifp_beta_nuclide = true;
243+
}
241244
}
242245
case SCORE_IFP_DENOM:
243246
if (settings::ifp_parameter == IFPParameter::None) {

src/tallies/tally_scoring.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -963,9 +963,9 @@ void score_general_ce_nonanalog(Particle& p, int i_tally, int start_index,
963963
simulation::ifp_source_delayed_group_bank[p.current_work() - 1];
964964
if (delayed_groups.size() == settings::ifp_n_generation) {
965965
int j = -1;
966-
if (delayed_groups[0] > 0 && tally.nuclides_[0] == -1)
966+
if (delayed_groups[0] > 0 && i_nuclide == -1)
967967
j = 0;
968-
if (delayed_groups[1] > 0 && tally.nuclides_[0] > -1) {
968+
if (delayed_groups[1] > 0 && i_nuclide > -1) {
969969
const auto& ancestor_event_nuclide = simulation::
970970
ifp_source_ancestor_nuclide_bank[p.current_work() - 1];
971971
if (ancestor_event_nuclide[0] == i_nuclide)

tests/regression_tests/ifp/nuclidewise/inputs_true.dat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
</tally>
3636
<tally id="2" name="IFP beta numerator">
3737
<filters>1</filters>
38-
<nuclides>U235 Pu239</nuclides>
38+
<nuclides>U235 Pu239 total</nuclides>
3939
<scores>ifp-beta-numerator</scores>
4040
</tally>
4141
<tally id="3" name="IFP denominator">

tests/regression_tests/ifp/nuclidewise/results_true.dat

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,38 @@ tally 2:
88
4.295000E-07
99
9.400000E-04
1010
1.794000E-07
11+
2.780000E-03
12+
8.896000E-07
1113
5.970000E-03
1214
2.607900E-06
1315
4.550000E-03
1416
1.625100E-06
17+
9.460000E-03
18+
7.239800E-06
1519
5.070000E-03
1620
2.047900E-06
1721
2.600000E-03
1822
5.692000E-07
23+
7.420000E-03
24+
4.387800E-06
1925
1.236000E-02
2026
1.062980E-05
2127
4.020000E-03
2228
1.379200E-06
29+
1.506000E-02
30+
1.709240E-05
2331
5.690000E-03
2432
3.302300E-06
2533
3.180000E-03
2634
8.316000E-07
35+
7.230000E-03
36+
4.155100E-06
2737
2.100000E-03
2838
4.486000E-07
2939
1.300000E-03
3040
2.008000E-07
41+
3.040000E-03
42+
9.300000E-07
3143
tally 3:
3244
1.495260E+01
3345
1.490559E+01

tests/regression_tests/ifp/nuclidewise/test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def ifp_model():
3232
space = openmc.stats.Box(*cell.bounding_box)
3333
model.settings.source = openmc.IndependentSource(
3434
space=space, constraints={'fissionable': True})
35-
model.add_kinetics_parameters_tallies(num_groups=6, nuclides = ["U235", "Pu239"])
35+
model.add_kinetics_parameters_tallies(num_groups=6, nuclides = ["U235", "Pu239", "total"])
3636
return model
3737

3838

0 commit comments

Comments
 (0)