mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-21 14:35:27 -04:00
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
import openmc
|
|
|
|
|
|
def test_periodic_surface_roundtrip(run_in_tmpdir):
|
|
# Create a simple model with periodic surfaces
|
|
mat = openmc.Material()
|
|
mat.add_nuclide('H1', 1.0)
|
|
mat.set_density('g/cm3', 1.0)
|
|
cyl = openmc.ZCylinder(r=1.0)
|
|
x0 = openmc.XPlane(-5.0, boundary_type='periodic')
|
|
y0 = openmc.YPlane(-5.0, boundary_type='periodic')
|
|
z0 = openmc.ZPlane(-5.0, boundary_type='periodic')
|
|
x1 = openmc.XPlane(5.0, boundary_type='periodic')
|
|
y1 = openmc.YPlane(5.0, boundary_type='periodic')
|
|
z1 = openmc.ZPlane(5.0, boundary_type='periodic')
|
|
x0.periodic_surface = x1
|
|
y0.periodic_surface = y1
|
|
z0.periodic_surface = z1
|
|
cell1 = openmc.Cell(fill=mat, region=-cyl)
|
|
cell2 = openmc.Cell(fill=mat, region=+cyl & +x0 & -x1 & +y0 & -y1 & +z0 & -z1)
|
|
model = openmc.Model()
|
|
model.geometry = openmc.Geometry([cell1, cell2])
|
|
model.settings.particles = 100
|
|
model.settings.batches = 1
|
|
model.settings.run_mode = 'fixed source'
|
|
model.settings.source = openmc.IndependentSource(
|
|
energy=openmc.stats.delta_function(1.0e4)
|
|
)
|
|
|
|
# Run model
|
|
model.run()
|
|
|
|
# Load summary data and check periodic surfaces
|
|
summary = openmc.Summary('summary.h5')
|
|
surfs = summary.geometry.get_all_surfaces()
|
|
for s in [x0, y0, z0, x1, y1, z1]:
|
|
assert surfs[s.id].boundary_type == 'periodic'
|
|
pairs = [(x0, x1), (y0, y1), (z0, z1)]
|
|
for s0, s1 in pairs:
|
|
assert surfs[s0.id].periodic_surface == surfs[s1.id]
|
|
assert surfs[s1.id].periodic_surface == surfs[s0.id]
|