mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-23 19:45:34 -04:00
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
import os
|
|
|
|
import openmc
|
|
from openmc.examples import random_ray_three_region_cube
|
|
from openmc.utility_funcs import change_directory
|
|
import pytest
|
|
|
|
from tests.testing_harness import TolerantPyAPITestHarness
|
|
|
|
|
|
class MGXSTestHarness(TolerantPyAPITestHarness):
|
|
def _cleanup(self):
|
|
super()._cleanup()
|
|
f = 'mgxs.h5'
|
|
if os.path.exists(f):
|
|
os.remove(f)
|
|
|
|
|
|
def make_mesh(dim):
|
|
width = 30.0
|
|
mesh = openmc.RegularMesh()
|
|
mesh.dimension = (dim, dim, dim)
|
|
mesh.lower_left = (0.0, 0.0, 0.0)
|
|
mesh.upper_right = (width, width, width)
|
|
return mesh
|
|
|
|
|
|
@pytest.mark.parametrize("shape", ["flat", "linear"])
|
|
def test_random_ray_fixed_source_mesh(shape):
|
|
with change_directory(shape):
|
|
openmc.reset_auto_ids()
|
|
model = random_ray_three_region_cube()
|
|
|
|
# We will apply three different mesh resolutions to three different domain types
|
|
source_universe = model.geometry.get_universes_by_name('source universe')[0]
|
|
void_cell = model.geometry.get_cells_by_name('infinite void region')[0]
|
|
absorber_mat = model.geometry.get_materials_by_name('absorber')[0]
|
|
|
|
model.settings.random_ray['source_region_meshes'] = [
|
|
(make_mesh(24), [source_universe]),
|
|
(make_mesh(36), [void_cell]),
|
|
(make_mesh(30), [absorber_mat])
|
|
]
|
|
|
|
# We also test flat/linear source shapes to ensure they are both
|
|
# working correctly with the mesh overlay logic
|
|
model.settings.random_ray['source_shape'] = shape
|
|
|
|
model.settings.inactive = 15
|
|
model.settings.batches = 30
|
|
|
|
harness = MGXSTestHarness('statepoint.30.h5', model)
|
|
harness.main()
|