mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-26 05:05:30 -04:00
116 lines
3.3 KiB
Python
116 lines
3.3 KiB
Python
import numpy as np
|
|
import openmc
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def pincell1(uo2, water):
|
|
cyl = openmc.ZCylinder(r=0.35)
|
|
fuel = openmc.Cell(fill=uo2, region=-cyl)
|
|
moderator = openmc.Cell(fill=water, region=+cyl)
|
|
|
|
univ = openmc.Universe(cells=[fuel, moderator])
|
|
univ.fuel = fuel
|
|
univ.moderator = moderator
|
|
return univ
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def pincell2(uo2, water):
|
|
cyl = openmc.ZCylinder(r=0.4)
|
|
fuel = openmc.Cell(fill=uo2, region=-cyl)
|
|
moderator = openmc.Cell(fill=water, region=+cyl)
|
|
|
|
univ = openmc.Universe(cells=[fuel, moderator])
|
|
univ.fuel = fuel
|
|
univ.moderator = moderator
|
|
return univ
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def zr():
|
|
zr = openmc.Material()
|
|
zr.add_element('Zr', 1.0)
|
|
zr.set_density('g/cm3', 1.0)
|
|
return zr
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def rlat2(pincell1, pincell2, uo2, water, zr):
|
|
"""2D Rectangular lattice for testing."""
|
|
all_zr = openmc.Cell(fill=zr)
|
|
pitch = 1.2
|
|
n = 3
|
|
u1, u2 = pincell1, pincell2
|
|
lattice = openmc.RectLattice()
|
|
lattice.lower_left = (-pitch*n/2, -pitch*n/2)
|
|
lattice.pitch = (pitch, pitch)
|
|
lattice.outer = openmc.Universe(cells=[all_zr])
|
|
lattice.universes = [
|
|
[u1, u2, u1],
|
|
[u2, u1, u2],
|
|
[u2, u1, u1]
|
|
]
|
|
|
|
return lattice
|
|
|
|
|
|
@pytest.fixture(scope='module')
|
|
def rlat3(pincell1, pincell2, uo2, water, zr):
|
|
"""3D Rectangular lattice for testing."""
|
|
|
|
# Create another universe for top layer
|
|
hydrogen = openmc.Material()
|
|
hydrogen.add_element('H', 1.0)
|
|
hydrogen.set_density('g/cm3', 0.09)
|
|
h_cell = openmc.Cell(fill=hydrogen)
|
|
u3 = openmc.Universe(cells=[h_cell])
|
|
|
|
all_zr = openmc.Cell(fill=zr)
|
|
pitch = 1.2
|
|
n = 3
|
|
u1, u2 = pincell1, pincell2
|
|
lattice = openmc.RectLattice()
|
|
lattice.lower_left = (-pitch*n/2, -pitch*n/2, -10.0)
|
|
lattice.pitch = (pitch, pitch, 10.0)
|
|
lattice.outer = openmc.Universe(cells=[all_zr])
|
|
lattice.universes = [
|
|
[[u1, u2, u1],
|
|
[u2, u1, u2],
|
|
[u2, u1, u1]],
|
|
[[u3, u1, u2],
|
|
[u1, u3, u2],
|
|
[u2, u1, u1]]
|
|
]
|
|
|
|
return lattice
|
|
|
|
|
|
def test_mesh2d(rlat2):
|
|
shape = np.array(rlat2.shape)
|
|
width = shape*rlat2.pitch
|
|
|
|
mesh1 = openmc.RegularMesh.from_rect_lattice(rlat2)
|
|
assert np.array_equal(mesh1.dimension, (3, 3))
|
|
assert np.array_equal(mesh1.lower_left, rlat2.lower_left)
|
|
assert np.array_equal(mesh1.upper_right, rlat2.lower_left + width)
|
|
|
|
mesh2 = openmc.RegularMesh.from_rect_lattice(rlat2, division=3)
|
|
assert np.array_equal(mesh2.dimension, (9, 9))
|
|
assert np.array_equal(mesh2.lower_left, rlat2.lower_left)
|
|
assert np.array_equal(mesh2.upper_right, rlat2.lower_left + width)
|
|
|
|
|
|
def test_mesh3d(rlat3):
|
|
shape = np.array(rlat3.shape)
|
|
width = shape*rlat3.pitch
|
|
|
|
mesh1 = openmc.RegularMesh.from_rect_lattice(rlat3)
|
|
assert np.array_equal(mesh1.dimension, (3, 3, 2))
|
|
assert np.array_equal(mesh1.lower_left, rlat3.lower_left)
|
|
assert np.array_equal(mesh1.upper_right, rlat3.lower_left + width)
|
|
|
|
mesh2 = openmc.RegularMesh.from_rect_lattice(rlat3, division=3)
|
|
assert np.array_equal(mesh2.dimension, (9, 9, 6))
|
|
assert np.array_equal(mesh2.lower_left, rlat3.lower_left)
|
|
assert np.array_equal(mesh2.upper_right, rlat3.lower_left + width)
|