mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-21 06:25:30 -04:00
59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
import numpy as np
|
|
import pytest
|
|
import openmc
|
|
|
|
|
|
@pytest.fixture
|
|
def model():
|
|
openmc.reset_auto_ids()
|
|
model = openmc.Model()
|
|
|
|
# Define materials
|
|
NaI = openmc.Material()
|
|
NaI.set_density('g/cm3', 3.7)
|
|
NaI.add_element('Na', 1.0)
|
|
NaI.add_element('I', 1.0)
|
|
|
|
# Define geometry: two spheres in each other
|
|
s1 = openmc.Sphere(r=1)
|
|
s2 = openmc.Sphere(r=2, boundary_type='vacuum')
|
|
inner_sphere = openmc.Cell(name='inner sphere', fill=NaI, region=-s1)
|
|
outer_sphere = openmc.Cell(name='outer sphere', fill=NaI, region=+s1 & -s2)
|
|
model.geometry = openmc.Geometry([inner_sphere, outer_sphere])
|
|
|
|
# Define settings
|
|
model.settings.run_mode = 'fixed source'
|
|
model.settings.batches = 1
|
|
model.settings.particles = 10000
|
|
model.settings.photon_transport = True
|
|
model.settings.source = openmc.IndependentSource(
|
|
energy=openmc.stats.delta_function(1e6),
|
|
particle='photon'
|
|
)
|
|
|
|
# Define tallies
|
|
energy_filter = openmc.EnergyFilter([1e3, 1e7])
|
|
|
|
tally1 = openmc.Tally()
|
|
tally1.scores = ['pulse-height']
|
|
cell_filter1 = openmc.CellFilter([inner_sphere, outer_sphere])
|
|
tally1.filters = [cell_filter1, energy_filter]
|
|
|
|
tally2 = openmc.Tally()
|
|
tally2.scores = ['pulse-height']
|
|
cell_filter2 = openmc.CellFilter([outer_sphere, inner_sphere])
|
|
tally2.filters = [cell_filter2, energy_filter]
|
|
|
|
model.tallies = [tally1, tally2]
|
|
return model
|
|
|
|
|
|
def test_pulse_height(model, run_in_tmpdir):
|
|
sp_path = model.run()
|
|
sp = openmc.StatePoint(sp_path)
|
|
t1 = sp.tallies[1].mean.squeeze()
|
|
t2 = sp.tallies[2].mean.squeeze()
|
|
|
|
np.testing.assert_array_equal(t1, t2[::-1])
|
|
|
|
|