mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-25 12:35:29 -04:00
75 lines
2.1 KiB
Python
75 lines
2.1 KiB
Python
|
|
import openmc
|
|
|
|
def test_tally_trigger(run_in_tmpdir):
|
|
pincell = openmc.examples.pwr_pin_cell()
|
|
|
|
# create a tally filter on the materials
|
|
mat_filter = openmc.MaterialFilter(pincell.materials)
|
|
|
|
# create a tally with triggers applied
|
|
tally = openmc.Tally()
|
|
tally.filters = [mat_filter]
|
|
tally.scores = ['scatter']
|
|
|
|
trigger = openmc.Trigger('rel_err', 0.05)
|
|
trigger.scores = ['scatter']
|
|
|
|
tally.triggers = [trigger]
|
|
|
|
pincell.tallies = [tally]
|
|
|
|
pincell.settings.trigger_active = True
|
|
pincell.settings.trigger_max_batches = 100
|
|
pincell.settings.trigger_batch_interval = 5
|
|
|
|
sp_file = pincell.run()
|
|
with openmc.StatePoint(sp_file) as sp:
|
|
expected_realizations = sp.n_realizations
|
|
|
|
# adding other scores to the tally should not change the
|
|
# number of batches required to satisfy the trigger
|
|
tally.scores = ['total', 'absorption', 'scatter']
|
|
|
|
sp_file = pincell.run()
|
|
|
|
with openmc.StatePoint(sp_file) as sp:
|
|
realizations = sp.n_realizations
|
|
|
|
assert realizations == expected_realizations
|
|
|
|
|
|
def test_tally_trigger_null_score(run_in_tmpdir):
|
|
pincell = openmc.examples.pwr_pin_cell()
|
|
|
|
# create a tally filter on the materials
|
|
mat_filter = openmc.MaterialFilter(pincell.materials)
|
|
|
|
# apply a tally with a score that be tallied in this model
|
|
tally = openmc.Tally()
|
|
tally.filters = [mat_filter]
|
|
tally.scores = ['pair-production']
|
|
|
|
trigger = openmc.Trigger('rel_err', 0.05)
|
|
trigger.scores = ['pair-production']
|
|
|
|
tally.triggers = [trigger]
|
|
|
|
pincell.tallies = [tally]
|
|
|
|
pincell.settings.trigger_active = True
|
|
pincell.settings.trigger_max_batches = 50
|
|
pincell.settings.trigger_batch_interval = 5
|
|
|
|
sp_file = pincell.run()
|
|
|
|
with openmc.StatePoint(sp_file) as sp:
|
|
# verify that the tally mean is zero
|
|
tally_out = sp.get_tally(id=tally.id)
|
|
assert all(tally_out.mean == 0.0)
|
|
|
|
# we expect that this simulation will run
|
|
# up to the max allowed batches
|
|
total_batches = sp.n_realizations + sp.n_inactive
|
|
assert total_batches == pincell.settings.trigger_max_batches
|
|
|