OpenMC/tests/unit_tests/test_deplete_restart.py

84 lines
2.4 KiB
Python

"""Regression tests for openmc.deplete restart capability.
These tests run in two steps, a first run then a restart run, a simple test
problem described in dummy_geometry.py.
"""
import pytest
import openmc.deplete
from tests import dummy_operator
def test_restart_predictor_cecm(run_in_tmpdir):
"""Test to ensure that schemes with different stages are not compatible"""
op = dummy_operator.DummyOperator()
output_dir = "test_restart_predictor_cecm"
op.output_dir = output_dir
# Perform simulation using the predictor algorithm
dt = [0.75]
power = 1.0
openmc.deplete.PredictorIntegrator(op, dt, power).integrate(write_rates=True)
# Load the files
prev_res = openmc.deplete.Results(op.output_dir / "depletion_results.h5")
# Re-create depletion operator and load previous results
op = dummy_operator.DummyOperator(prev_res)
op.output_dir = output_dir
def test_restart_cecm_predictor(run_in_tmpdir):
"""Integral regression test of integrator algorithm using CE/CM for the
first run then predictor for the restart run."""
op = dummy_operator.DummyOperator()
output_dir = "test_restart_cecm_predictor"
op.output_dir = output_dir
# Perform simulation using the MCNPX/MCNP6 algorithm
dt = [0.75]
power = 1.0
cecm = openmc.deplete.CECMIntegrator(op, dt, power)
cecm.integrate(write_rates=True)
# Load the files
prev_res = openmc.deplete.Results(op.output_dir / "depletion_results.h5")
# Re-create depletion operator and load previous results
op = dummy_operator.DummyOperator(prev_res)
op.output_dir = output_dir
@pytest.mark.parametrize("scheme", dummy_operator.SCHEMES)
def test_restart(run_in_tmpdir, scheme):
# set up the problem
bundle = dummy_operator.SCHEMES[scheme]
operator = dummy_operator.DummyOperator()
# take first step
bundle.solver(operator, [0.75], 1.0).integrate(write_rates=True)
# restart
prev_res = openmc.deplete.Results(
operator.output_dir / "depletion_results.h5")
operator = dummy_operator.DummyOperator(prev_res)
# take second step
bundle.solver(operator, [0.75], 1.0).integrate()
# compare results
results = openmc.deplete.Results(
operator.output_dir / "depletion_results.h5")
_t, y1 = results.get_atoms("1", "1")
_t, y2 = results.get_atoms("1", "2")
assert y1 == pytest.approx(bundle.atoms_1)
assert y2 == pytest.approx(bundle.atoms_2)