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
This commit is contained in:
Andrew Johnson 2019-06-21 09:47:36 -05:00
parent 2ecca7bff6
commit e291725b6b
No known key found for this signature in database
GPG key ID: 253418E91B7F6FEB
2 changed files with 11 additions and 4 deletions

View file

@ -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)

View file

@ -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)