mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-24 03:55:38 -04:00
86 lines
2.6 KiB
Python
86 lines
2.6 KiB
Python
import shutil
|
|
|
|
import numpy as np
|
|
from pathlib import Path
|
|
import pytest
|
|
|
|
import openmc
|
|
import openmc.lib
|
|
|
|
from tests import cdtemp
|
|
|
|
pytestmark = pytest.mark.skipif(
|
|
not openmc.lib._dagmc_enabled(),
|
|
reason="DAGMC CAD geometry is not enabled.")
|
|
|
|
|
|
@pytest.fixture(scope="module", autouse=True)
|
|
def dagmc_model(request):
|
|
|
|
model = openmc.model.Model()
|
|
|
|
# settings
|
|
model.settings.batches = 5
|
|
model.settings.inactive = 0
|
|
model.settings.particles = 100
|
|
model.settings.temperature = {'tolerance': 50.0}
|
|
model.settings.verbosity = 1
|
|
source_box = openmc.stats.Box([ -4, -4, -4 ],
|
|
[ 4, 4, 4 ])
|
|
source = openmc.IndependentSource(space=source_box)
|
|
model.settings.source = source
|
|
|
|
# geometry
|
|
dagmc_file = Path(request.fspath).parent / 'dagmc.h5m'
|
|
dagmc_universe = openmc.DAGMCUniverse(dagmc_file)
|
|
model.geometry = openmc.Geometry(dagmc_universe)
|
|
|
|
# check number of surfaces and volumes for this pincell model there should
|
|
# be 5 volumes: two fuel regions, water, graveyard, implicit complement (the
|
|
# implicit complement cell is created automatically at runtime)
|
|
# and 21 surfaces: 3 cylinders (9 surfaces) and a bounding cubic shell
|
|
# (12 surfaces)
|
|
assert dagmc_universe.n_cells == 5
|
|
assert dagmc_universe.n_surfaces == 21
|
|
|
|
# tally
|
|
tally = openmc.Tally()
|
|
tally.scores = ['total']
|
|
tally.filters = [openmc.CellFilter(1)]
|
|
model.tallies = [tally]
|
|
|
|
# materials
|
|
u235 = openmc.Material(name="no-void fuel")
|
|
u235.add_nuclide('U235', 1.0, 'ao')
|
|
u235.set_density('g/cc', 11)
|
|
u235.id = 40
|
|
u235.temperature = 320
|
|
|
|
water = openmc.Material(name="water")
|
|
water.add_nuclide('H1', 2.0, 'ao')
|
|
water.add_nuclide('O16', 1.0, 'ao')
|
|
water.set_density('g/cc', 1.0)
|
|
water.add_s_alpha_beta('c_H_in_H2O')
|
|
water.id = 41
|
|
|
|
mats = openmc.Materials([u235, water])
|
|
model.materials = mats
|
|
|
|
# location of dagmc file in test directory
|
|
dagmc_file = request.fspath.dirpath() + "/dagmc.h5m"
|
|
# move to a temporary directory
|
|
with cdtemp():
|
|
shutil.copyfile(dagmc_file, "./dagmc.h5m")
|
|
model.export_to_xml()
|
|
openmc.lib.init()
|
|
yield
|
|
|
|
openmc.lib.finalize()
|
|
|
|
|
|
@pytest.mark.parametrize("cell_id,exp_temp", ((1, 320.0), # assigned by material
|
|
(2, 300.0), # assigned in dagmc file
|
|
(3, 293.6))) # assigned by default
|
|
def test_dagmc_temperatures(cell_id, exp_temp):
|
|
cell = openmc.lib.cells[cell_id]
|
|
assert np.isclose(cell.get_temperature(), exp_temp)
|