mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 06:05:58 -04:00
Add test for heating by nuclide
This commit is contained in:
parent
fe230168fb
commit
ce035884ac
1 changed files with 57 additions and 0 deletions
57
tests/unit_tests/test_heating_by_nuclide.py
Normal file
57
tests/unit_tests/test_heating_by_nuclide.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
import openmc
|
||||
import pytest
|
||||
|
||||
from tests.testing_harness import config
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def model():
|
||||
# Create simple sphere model
|
||||
model = openmc.Model()
|
||||
mat = openmc.Material()
|
||||
mat.add_nuclide('U235', 1.0)
|
||||
mat.add_nuclide('H1', 1.0)
|
||||
mat.set_density('g/cm3', 5.0)
|
||||
sph = openmc.Sphere(r=10.0, boundary_type='vacuum')
|
||||
cell = openmc.Cell(fill=mat, region=-sph)
|
||||
model.geometry = openmc.Geometry([cell])
|
||||
model.settings.particles = 1000
|
||||
model.settings.inactive = 0
|
||||
model.settings.batches = 5
|
||||
model.settings.photon_transport = True
|
||||
|
||||
# Add two tallies, one with heating by nuclide and one with total heating
|
||||
particle_filter = openmc.ParticleFilter(['neutron', 'photon'])
|
||||
heating_by_nuclide = openmc.Tally()
|
||||
heating_by_nuclide.filters = [particle_filter]
|
||||
heating_by_nuclide.nuclides = ['U235', 'H1']
|
||||
heating_by_nuclide.scores = ['heating']
|
||||
|
||||
heating_total = openmc.Tally()
|
||||
heating_total.filters = [particle_filter]
|
||||
heating_total.scores = ['heating']
|
||||
model.tallies.extend([heating_by_nuclide, heating_total])
|
||||
|
||||
return model
|
||||
|
||||
|
||||
def test_heating_by_nuclide(model, run_in_tmpdir):
|
||||
# If running in MPI mode, setup proper keyword arguments for run()
|
||||
kwargs = {'openmc_exec': config['exe']}
|
||||
if config['mpi']:
|
||||
kwargs['mpi_args'] = [config['mpiexec'], '-n', config['mpi_np']]
|
||||
sp_path = model.run(**kwargs)
|
||||
|
||||
# Get tallies from resulting statepoint
|
||||
with openmc.StatePoint(sp_path) as sp:
|
||||
heating_by_nuclide = sp.tallies[model.tallies[0].id]
|
||||
heating_total = sp.tallies[model.tallies[1].id]
|
||||
|
||||
for particle in heating_by_nuclide.filters[0].bins:
|
||||
# Get slice of each tally corresponding to a single particle
|
||||
kwargs = {'filters': [openmc.ParticleFilter], 'filter_bins': [(particle,)]}
|
||||
particle_slice_by_nuclide = heating_by_nuclide.get_values(**kwargs)
|
||||
particle_slice_total = heating_total.get_values(**kwargs)
|
||||
|
||||
# Summing over nuclides should equal total
|
||||
assert particle_slice_by_nuclide.sum() == pytest.approx(particle_slice_total.sum())
|
||||
Loading…
Add table
Add a link
Reference in a new issue