mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-21 22:45:33 -04:00
124 lines
3.6 KiB
Python
124 lines
3.6 KiB
Python
import openmc
|
|
import pytest
|
|
|
|
from tests.regression_tests import config
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def mpi_intracomm():
|
|
if config['mpi']:
|
|
from mpi4py import MPI
|
|
return MPI.COMM_WORLD
|
|
else:
|
|
return None
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def uo2():
|
|
m = openmc.Material(material_id=100, name='UO2')
|
|
m.add_nuclide('U235', 1.0)
|
|
m.add_nuclide('O16', 2.0)
|
|
m.set_density('g/cm3', 10.0)
|
|
m.depletable = True
|
|
return m
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def water():
|
|
m = openmc.Material(name='light water')
|
|
m.add_nuclide('H1', 2.0)
|
|
m.add_nuclide('O16', 1.0)
|
|
m.set_density('g/cm3', 1.0)
|
|
m.add_s_alpha_beta('c_H_in_H2O')
|
|
return m
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def sphere_model():
|
|
model = openmc.model.Model()
|
|
m = openmc.Material()
|
|
m.add_nuclide('U235', 1.0)
|
|
m.set_density('g/cm3', 1.0)
|
|
model.materials.append(m)
|
|
|
|
sph = openmc.Sphere(boundary_type='vacuum')
|
|
c = openmc.Cell(fill=m, region=-sph)
|
|
model.geometry.root_universe = openmc.Universe(cells=[c])
|
|
|
|
model.settings.particles = 100
|
|
model.settings.batches = 10
|
|
model.settings.run_mode = 'fixed source'
|
|
model.settings.source = openmc.IndependentSource(space=openmc.stats.Point())
|
|
return model
|
|
|
|
|
|
@pytest.fixture
|
|
def cell_with_lattice():
|
|
m_inside = [openmc.Material(), openmc.Material(), None, openmc.Material()]
|
|
m_outside = openmc.Material()
|
|
|
|
cyl = openmc.ZCylinder(r=1.0)
|
|
inside_cyl = openmc.Cell(fill=m_inside, region=-cyl)
|
|
outside_cyl = openmc.Cell(fill=m_outside, region=+cyl)
|
|
univ = openmc.Universe(cells=[inside_cyl, outside_cyl])
|
|
|
|
lattice = openmc.RectLattice(name='My Lattice')
|
|
lattice.lower_left = (-4.0, -4.0)
|
|
lattice.pitch = (4.0, 4.0)
|
|
lattice.universes = [[univ, univ], [univ, univ]]
|
|
main_cell = openmc.Cell(fill=lattice)
|
|
|
|
return ([inside_cyl, outside_cyl, main_cell],
|
|
[m_inside[0], m_inside[1], m_inside[3], m_outside],
|
|
univ, lattice)
|
|
|
|
@pytest.fixture
|
|
def mixed_lattice_model(uo2, water):
|
|
cyl = openmc.ZCylinder(r=0.4)
|
|
c1 = openmc.Cell(fill=uo2, region=-cyl)
|
|
c1.temperature = 600.0
|
|
c2 = openmc.Cell(fill=water, region=+cyl)
|
|
pin = openmc.Universe(cells=[c1, c2])
|
|
|
|
empty = openmc.Cell()
|
|
empty_univ = openmc.Universe(cells=[empty])
|
|
|
|
hex_lattice = openmc.HexLattice()
|
|
hex_lattice.center = (0.0, 0.0)
|
|
hex_lattice.pitch = (1.2, 10.0)
|
|
outer_ring = [pin]*6
|
|
inner_ring = [empty_univ]
|
|
axial_level = [outer_ring, inner_ring]
|
|
hex_lattice.universes = [axial_level]*3
|
|
hex_lattice.outer = empty_univ
|
|
|
|
cell_hex = openmc.Cell(fill=hex_lattice)
|
|
u = openmc.Universe(cells=[cell_hex])
|
|
rotated_cell_hex = openmc.Cell(fill=u)
|
|
rotated_cell_hex.rotation = (0., 0., 30.)
|
|
ur = openmc.Universe(cells=[rotated_cell_hex])
|
|
|
|
d = 6.0
|
|
rect_lattice = openmc.RectLattice()
|
|
rect_lattice.lower_left = (-d, -d)
|
|
rect_lattice.pitch = (d, d)
|
|
rect_lattice.outer = empty_univ
|
|
rect_lattice.universes = [
|
|
[ur, empty_univ],
|
|
[empty_univ, u]
|
|
]
|
|
|
|
xmin = openmc.XPlane(-d, boundary_type='periodic')
|
|
xmax = openmc.XPlane(d, boundary_type='periodic')
|
|
xmin.periodic_surface = xmax
|
|
ymin = openmc.YPlane(-d, boundary_type='periodic')
|
|
ymax = openmc.YPlane(d, boundary_type='periodic')
|
|
main_cell = openmc.Cell(fill=rect_lattice,
|
|
region=+xmin & -xmax & +ymin & -ymax)
|
|
|
|
# Create geometry and use unique material in each fuel cell
|
|
geometry = openmc.Geometry([main_cell])
|
|
geometry.determine_paths()
|
|
c1.fill = [water.clone() for i in range(c1.num_instances)]
|
|
|
|
return openmc.model.Model(geometry)
|