mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-29 06:35:48 -04:00
Merge pull request #1156 from smharper/precursor_tally_bugfix
Bug fixes for precursor decay rate tallies
This commit is contained in:
commit
b4d26e2c34
4 changed files with 44 additions and 47 deletions
|
|
@ -736,6 +736,9 @@ contains
|
|||
! Check if tally is on a single nuclide
|
||||
if (i_nuclide > 0) then
|
||||
|
||||
! Ignore non-fissionable nuclides
|
||||
if (.not. nuclides(i_nuclide) % fissionable) cycle SCORE_LOOP
|
||||
|
||||
! Check if the delayed group filter is present
|
||||
if (dg_filter > 0) then
|
||||
select type(filt => filters(t % filter(dg_filter)) % obj)
|
||||
|
|
@ -772,8 +775,8 @@ contains
|
|||
! for all delayed groups.
|
||||
score = ZERO
|
||||
|
||||
associate (rxn => nuclides(p % event_nuclide) % &
|
||||
reactions(nuclides(p % event_nuclide) % index_fission(1)))
|
||||
associate (rxn => nuclides(i_nuclide) % &
|
||||
reactions(nuclides(i_nuclide) % index_fission(1)))
|
||||
|
||||
! We need to be careful not to overshoot the number of delayed
|
||||
! groups since this could cause the range of the rxn % products
|
||||
|
|
@ -781,7 +784,7 @@ contains
|
|||
! and not the MAX_DELAYED_GROUPS constant for this loop.
|
||||
do d = 1, rxn % products_size() - 2
|
||||
score = score + micro_xs(i_nuclide) % fission * flux * &
|
||||
nuclides(i_nuclide) % nu(E, EMISSION_DELAYED) * &
|
||||
nuclides(i_nuclide) % nu(E, EMISSION_DELAYED, d) * &
|
||||
atom_density * rxn % product_decay_rate(1 + d)
|
||||
end do
|
||||
end associate
|
||||
|
|
@ -864,7 +867,7 @@ contains
|
|||
|
||||
! Accumulate the contribution from each nuclide
|
||||
score = score + micro_xs(i_nuc) % fission &
|
||||
* nuclides(i_nuc) % nu(E, EMISSION_DELAYED) &
|
||||
* nuclides(i_nuc) % nu(E, EMISSION_DELAYED, d) &
|
||||
* atom_density_ * flux &
|
||||
* rxn % product_decay_rate(1 + d)
|
||||
end do
|
||||
|
|
|
|||
|
|
@ -377,7 +377,8 @@
|
|||
</tally>
|
||||
<tally id="5">
|
||||
<filters>4</filters>
|
||||
<scores>delayed-nu-fission</scores>
|
||||
<nuclides>U235 O16 total</nuclides>
|
||||
<scores>delayed-nu-fission decay-rate</scores>
|
||||
</tally>
|
||||
<tally id="6">
|
||||
<filters>5</filters>
|
||||
|
|
@ -440,50 +441,50 @@
|
|||
</tally>
|
||||
<tally id="20">
|
||||
<filters>13</filters>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable</scores>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="21">
|
||||
<filters>13</filters>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable</scores>
|
||||
<estimator>analog</estimator>
|
||||
<nuclides>U235 O16 total</nuclides>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable decay-rate</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="22">
|
||||
<filters>13</filters>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable</scores>
|
||||
<estimator>collision</estimator>
|
||||
</tally>
|
||||
<tally id="23">
|
||||
<filters>14</filters>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="24">
|
||||
<filters>14</filters>
|
||||
<scores>flux</scores>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="23">
|
||||
<filters>13</filters>
|
||||
<nuclides>U235 O16 total</nuclides>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable decay-rate</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="24">
|
||||
<filters>13</filters>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable decay-rate</scores>
|
||||
<estimator>collision</estimator>
|
||||
</tally>
|
||||
<tally id="25">
|
||||
<filters>14</filters>
|
||||
<scores>flux</scores>
|
||||
<filters>13</filters>
|
||||
<nuclides>U235 O16 total</nuclides>
|
||||
<scores>absorption delayed-nu-fission events fission inverse-velocity kappa-fission (n,2n) (n,n1) (n,gamma) nu-fission scatter elastic total prompt-nu-fission fission-q-prompt fission-q-recoverable decay-rate</scores>
|
||||
<estimator>collision</estimator>
|
||||
</tally>
|
||||
<tally id="26">
|
||||
<filters>13</filters>
|
||||
<nuclides>U235 total</nuclides>
|
||||
<scores>total</scores>
|
||||
<filters>14</filters>
|
||||
<scores>flux</scores>
|
||||
<estimator>tracklength</estimator>
|
||||
</tally>
|
||||
<tally id="27">
|
||||
<filters>13</filters>
|
||||
<nuclides>U235 total</nuclides>
|
||||
<scores>total</scores>
|
||||
<filters>14</filters>
|
||||
<scores>flux</scores>
|
||||
<estimator>analog</estimator>
|
||||
</tally>
|
||||
<tally id="28">
|
||||
<filters>13</filters>
|
||||
<nuclides>U235 total</nuclides>
|
||||
<scores>total</scores>
|
||||
<filters>14</filters>
|
||||
<scores>flux</scores>
|
||||
<estimator>collision</estimator>
|
||||
</tally>
|
||||
<tally id="29">
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
aa7f79718620c122e3a13bfa0e200a41b642b09a5d10a6e43e1584181b0314fbeb73c165fe55ddd34c1e9546e381019dd8e3889ca7d99bfe1ab489631bec15d1
|
||||
b5edf87cb58db29aa1c38203141df2f055b88aca675aee9673879b579391412abd232cb3d404f60840ac86b936384050576cccb1e3a1fc5c8290b6e890dda74c
|
||||
|
|
@ -47,7 +47,8 @@ def test_tallies():
|
|||
|
||||
dg_tally = Tally()
|
||||
dg_tally.filters = [DelayedGroupFilter((1, 2, 3, 4, 5, 6))]
|
||||
dg_tally.scores = ['delayed-nu-fission']
|
||||
dg_tally.scores = ['delayed-nu-fission', 'decay-rate']
|
||||
dg_tally.nuclides = ['U235', 'O16', 'total']
|
||||
|
||||
four_groups = (0.0, 0.253, 1.0e3, 1.0e6, 20.0e6)
|
||||
energy_filter = EnergyFilter(four_groups)
|
||||
|
|
@ -130,17 +131,19 @@ def test_tallies():
|
|||
cell_filter = CellFilter((model.geometry.get_all_cells()[10],
|
||||
model.geometry.get_all_cells()[21],
|
||||
22, 23, 60)) # Test both Cell objects and ids
|
||||
score_tallies = [Tally(), Tally(), Tally()]
|
||||
score_tallies = [Tally() for i in range(6)]
|
||||
for t in score_tallies:
|
||||
t.filters = [cell_filter]
|
||||
t.scores = ['absorption', 'delayed-nu-fission', 'events', 'fission',
|
||||
'inverse-velocity', 'kappa-fission', '(n,2n)', '(n,n1)',
|
||||
'(n,gamma)', 'nu-fission', 'scatter', 'elastic',
|
||||
'total', 'prompt-nu-fission', 'fission-q-prompt',
|
||||
'fission-q-recoverable']
|
||||
score_tallies[0].estimator = 'tracklength'
|
||||
score_tallies[1].estimator = 'analog'
|
||||
score_tallies[2].estimator = 'collision'
|
||||
'fission-q-recoverable', 'decay-rate']
|
||||
for t in score_tallies[0:2]: t.estimator = 'tracklength'
|
||||
for t in score_tallies[2:4]: t.estimator = 'analog'
|
||||
for t in score_tallies[4:6]: t.estimator = 'collision'
|
||||
for t in score_tallies[1::2]:
|
||||
t.nuclides = ['U235', 'O16', 'total']
|
||||
|
||||
cell_filter2 = CellFilter((21, 22, 23, 27, 28, 29, 60))
|
||||
flux_tallies = [Tally() for i in range(3)]
|
||||
|
|
@ -151,15 +154,6 @@ def test_tallies():
|
|||
flux_tallies[1].estimator = 'analog'
|
||||
flux_tallies[2].estimator = 'collision'
|
||||
|
||||
total_tallies = [Tally() for i in range(3)]
|
||||
for t in total_tallies:
|
||||
t.filters = [cell_filter]
|
||||
t.scores = ['total']
|
||||
t.nuclides = ['U235', 'total']
|
||||
total_tallies[0].estimator = 'tracklength'
|
||||
total_tallies[1].estimator = 'analog'
|
||||
total_tallies[2].estimator = 'collision'
|
||||
|
||||
all_nuclide_tallies = [Tally() for i in range(4)]
|
||||
for t in all_nuclide_tallies:
|
||||
t.filters = [cell_filter]
|
||||
|
|
@ -179,7 +173,6 @@ def test_tallies():
|
|||
harmonics_tally, harmonics_tally2, harmonics_tally3, universe_tally]
|
||||
model.tallies += score_tallies
|
||||
model.tallies += flux_tallies
|
||||
model.tallies += total_tallies
|
||||
model.tallies += all_nuclide_tallies
|
||||
|
||||
harness.main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue