コード例 #1
0
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()

    # restart
    prev_res = openmc.deplete.ResultsList.from_hdf5(
        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.ResultsList.from_hdf5(
        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)
コード例 #2
0
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()

    # Load the files
    prev_res = openmc.deplete.ResultsList.from_hdf5(
        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

    # check ValueError is raised, indicating previous and current stages
    with pytest.raises(ValueError, match="incompatible.* 2.*1"):
        openmc.deplete.PredictorIntegrator(op, dt, power)
コード例 #3
0
def test_transfer_volumes(run_in_tmpdir):
    """Unit test of volume transfer in restart calculations."""

    op = dummy_operator.DummyOperator()
    op.output_dir = "test_transfer_volumes"

    # Perform simulation using the predictor algorithm
    dt = [0.75]
    power = 1.0
    PredictorIntegrator(op, dt, power).integrate()

    # Load the files
    res = openmc.deplete.ResultsList.from_hdf5(op.output_dir /
                                               "depletion_results.h5")

    # Create a dictionary of volumes to transfer
    res[0].volume['1'] = 1.5
    res[0].volume['2'] = 2.5

    # Create dummy geometry
    mat1 = openmc.Material(material_id=1)
    mat1.depletable = True
    mat2 = openmc.Material(material_id=2)

    cell = openmc.Cell()
    cell.fill = [mat1, mat2]
    root = openmc.Universe()
    root.add_cell(cell)
    geometry = openmc.Geometry(root)

    # Transfer volumes
    res[0].transfer_volumes(openmc.Model(geometry))

    assert mat1.volume == 1.5
    assert mat2.volume is None
コード例 #4
0
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()

    # Load the files
    prev_res = openmc.deplete.ResultsList.from_hdf5(
        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

    # check ValueError is raised, indicating previous and current stages
    with pytest.raises(ValueError, match="incompatible.* 1.*2"):
        openmc.deplete.CECMIntegrator(op, dt, power)
コード例 #5
0
def test_integrator(run_in_tmpdir, scheme):
    """Test the integrators against their expected values"""

    bundle = dummy_operator.SCHEMES[scheme]
    operator = dummy_operator.DummyOperator()
    bundle.solver(operator, [0.75, 0.75], 1.0).integrate()

    # get expected results

    res = ResultsList.from_hdf5(
        operator.output_dir / "depletion_results.h5")

    t1, y1 = res.get_atoms("1", "1")
    t2, y2 = res.get_atoms("1", "2")

    assert (t1 == [0.0, 0.75, 1.5]).all()
    assert y1 == pytest.approx(bundle.atoms_1)
    assert (t2 == [0.0, 0.75, 1.5]).all()
    assert y2 == pytest.approx(bundle.atoms_2)

    # test structure of depletion time dataset
    dep_time = res.get_depletion_time()
    assert dep_time.shape == (2, )
    assert all(dep_time > 0)

    integrator = bundle.solver(operator, [0.75], 1, solver=cram.CRAM48)
    assert integrator.solver is cram.CRAM48

    integrator = bundle.solver(operator, [0.75], 1, solver="cram16")
    assert integrator.solver is cram.CRAM16

    integrator.solver = mock_good_solver
    assert integrator.solver is mock_good_solver

    lfunc = lambda A, n, t: mock_good_solver(A, n, t)
    integrator.solver = lfunc
    assert integrator.solver is lfunc