OpenMC/tests/unit_tests/test_complex_cell_bb.py
Patrick Shriwise eda39ad9ca
Python source class refactor (#2524)
Co-authored-by: Paul Romano <paul.k.romano@gmail.com>
2023-06-20 21:27:55 -05:00

98 lines
2.9 KiB
Python

import numpy as np
import openmc.lib
import pytest
@pytest.fixture(autouse=True)
def complex_cell(run_in_tmpdir, mpi_intracomm):
openmc.reset_auto_ids()
model = openmc.model.Model()
u235 = openmc.Material()
u235.set_density('g/cc', 4.5)
u235.add_nuclide("U235", 1.0)
u238 = openmc.Material()
u238.set_density('g/cc', 4.5)
u238.add_nuclide("U238", 1.0)
zr90 = openmc.Material()
zr90.set_density('g/cc', 2.0)
zr90.add_nuclide("Zr90", 1.0)
n14 = openmc.Material()
n14.set_density('g/cc', 0.1)
n14.add_nuclide("N14", 1.0)
model.materials = (u235, u238, zr90, n14)
s1 = openmc.XPlane(-10.0, boundary_type='vacuum')
s2 = openmc.XPlane(-7.0)
s3 = openmc.XPlane(-4.0)
s4 = openmc.XPlane(4.0)
s5 = openmc.XPlane(7.0)
s6 = openmc.XPlane(10.0, boundary_type='vacuum')
s7 = openmc.XPlane(0.0)
s11 = openmc.YPlane(-10.0, boundary_type='vacuum')
s12 = openmc.YPlane(-7.0)
s13 = openmc.YPlane(-4.0)
s14 = openmc.YPlane(4.0)
s15 = openmc.YPlane(7.0)
s16 = openmc.YPlane(10.0, boundary_type='vacuum')
s17 = openmc.YPlane(0.0)
c1 = openmc.Cell(fill=u235)
c1.region = ~(-s3 | +s4 | ~(+s13 & -s14))
c2 = openmc.Cell(fill=u238)
c2.region = ~(+s3 & -s4 & +s13 & -s14) & +s2 & -s5 & +s12 & -s15
c3 = openmc.Cell(fill=zr90)
c3.region = ((+s1 & -s7 & +s17 & -s16) | (+s7 & -s6 & +s11 & -s17)) \
& (-s2 | +s5 | -s12 | +s15)
c4 = openmc.Cell(fill=n14)
c4.region = ((+s1 & -s7 & +s11 & -s17) | (+s7 & -s6 & +s17 & -s16)) & \
~(+s2 & -s5 & +s12 & -s15)
c5 = openmc.Cell(fill=n14)
c5.region = ~(+s1 & -s6 & +s11 & -s16)
model.geometry.root_universe = openmc.Universe()
model.geometry.root_universe.add_cells([c1, c2, c3, c4, c5])
model.settings.batches = 10
model.settings.inactive = 5
model.settings.particles = 100
model.settings.source = openmc.IndependentSource(space=openmc.stats.Box(
[-10., -10., -1.], [10., 10., 1.]))
model.settings.verbosity = 1
model.export_to_xml()
openmc.lib.finalize()
openmc.lib.init(intracomm=mpi_intracomm)
yield
openmc.lib.finalize()
expected_results = ( (1, (( -4., -4., -np.inf),
( 4., 4., np.inf))),
(2, (( -7., -7., -np.inf),
( 7., 7., np.inf))),
(3, ((-10., -10., -np.inf),
( 10., 10., np.inf))),
(4, ((-10., -10., -np.inf),
( 10., 10., np.inf))),
(5, ((-np.inf, -np.inf, -np.inf),
( np.inf, np.inf, np.inf))) )
@pytest.mark.parametrize("cell_id,expected_box", expected_results)
def test_cell_box(cell_id, expected_box):
cell_box = openmc.lib.cells[cell_id].bounding_box
assert tuple(cell_box[0]) == expected_box[0]
assert tuple(cell_box[1]) == expected_box[1]