From e291725b6b54bb670f9859f619b5e7782f61e17e Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 21 Jun 2019 09:47:36 -0500 Subject: [PATCH] Modify deplete.integrator.predictor to store, write process time Use new timed_deplete wrapper func to obtain process time. Pass process time to modifed openmc.deplete.Results.save to be reduced and written to depletion file. test_deplete_predictor is modified to ensure that the shape of the resulting "depletion time" vector is correct --- openmc/deplete/integrator/predictor.py | 11 +++++++---- tests/unit_tests/test_deplete_predictor.py | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/openmc/deplete/integrator/predictor.py b/openmc/deplete/integrator/predictor.py index 6872ae6ef6..b30484c695 100644 --- a/openmc/deplete/integrator/predictor.py +++ b/openmc/deplete/integrator/predictor.py @@ -3,7 +3,7 @@ import copy from collections.abc import Iterable -from .cram import deplete +from .cram import timed_deplete from ..results import Results @@ -53,6 +53,8 @@ def predictor(operator, timesteps, power=None, power_density=None, if not isinstance(power, Iterable): power = [power]*len(timesteps) + proc_time = None + # Generate initial conditions with operator as vec: # Initialize time and starting index @@ -74,7 +76,7 @@ def predictor(operator, timesteps, power=None, power_density=None, op_results = [operator(x[0], p)] # Create results, write to disk - Results.save(operator, x, op_results, [t, t + dt], p, i_res + i) + Results.save(operator, x, op_results, [t, t + dt], p, i_res + i, proc_time) else: # Get initial concentration x = [operator.prev_res[-1].data[0]] @@ -89,7 +91,8 @@ def predictor(operator, timesteps, power=None, power_density=None, op_results[0].rates *= ratio_power[0] # Deplete for full timestep - x_end = deplete(chain, x[0], op_results[0].rates, dt, print_out) + proc_time, x_end = timed_deplete( + chain, x[0], op_results[0].rates, dt, print_out) # Advance time, update vector t += dt @@ -100,4 +103,4 @@ def predictor(operator, timesteps, power=None, power_density=None, op_results = [operator(x[0], power[-1])] # Create results, write to disk - Results.save(operator, x, op_results, [t, t], p, i_res + len(timesteps)) + Results.save(operator, x, op_results, [t, t], p, i_res + len(timesteps), proc_time) diff --git a/tests/unit_tests/test_deplete_predictor.py b/tests/unit_tests/test_deplete_predictor.py index b39cc7dcac..0af320eb96 100644 --- a/tests/unit_tests/test_deplete_predictor.py +++ b/tests/unit_tests/test_deplete_predictor.py @@ -35,3 +35,7 @@ def test_predictor(run_in_tmpdir): assert y1[2] == approx(s2[0]) assert y2[2] == approx(s2[1]) + + # Test structure of depletion time dataset + + assert res.get_depletion_time().shape == (len(dt), 1)