From 6583834bd4a8460d708be6492025ca65500e9323 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 21 Jun 2019 13:06:54 -0500 Subject: [PATCH] Store depletion time for leqi, si_celi, si_leqi routines --- openmc/deplete/integrator/leqi.py | 25 +++++++++++---------- openmc/deplete/integrator/si_celi.py | 19 +++++++++------- openmc/deplete/integrator/si_leqi.py | 28 ++++++++++++++---------- tests/unit_tests/test_deplete_leqi.py | 6 +++++ tests/unit_tests/test_deplete_si_celi.py | 12 ++++++++++ tests/unit_tests/test_deplete_si_leqi.py | 6 +++++ 6 files changed, 66 insertions(+), 30 deletions(-) diff --git a/openmc/deplete/integrator/leqi.py b/openmc/deplete/integrator/leqi.py index 66b0c253ad..9e1ed56a4e 100644 --- a/openmc/deplete/integrator/leqi.py +++ b/openmc/deplete/integrator/leqi.py @@ -5,7 +5,7 @@ from collections.abc import Iterable from itertools import repeat from .celi import celi_inner -from .cram import deplete +from .cram import timed_deplete from ..results import Results @@ -137,22 +137,24 @@ def leqi(operator, timesteps, power=None, power_density=None, print_out=True): inputs = list(zip(op_res_last.rates, op_results[0].rates, repeat(dt_l), repeat(dt))) - x_new = deplete(chain, x[0], inputs, dt, print_out, - matrix_func=_leqi_f1) - x_new = deplete(chain, x_new, inputs, dt, print_out, - matrix_func=_leqi_f2) + time_1, x_new = timed_deplete( + chain, x[0], inputs, dt, print_out, matrix_func=_leqi_f1) + time_2, x_new = timed_deplete( + chain, x_new, inputs, dt, print_out, matrix_func=_leqi_f2) x.append(x_new) op_results.append(operator(x[1], p)) inputs = list(zip(op_res_last.rates, op_results[0].rates, op_results[1].rates, repeat(dt_l), repeat(dt))) - x_new = deplete(chain, x[0], inputs, dt, print_out, - matrix_func=_leqi_f3) - x_new = deplete(chain, x_new, inputs, dt, print_out, - matrix_func=_leqi_f4) + time_3, x_new = timed_deplete( + chain, x[0], inputs, dt, print_out, matrix_func=_leqi_f3) + time_4, x_new = timed_deplete( + chain, x_new, inputs, dt, print_out, matrix_func=_leqi_f4) # 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, + sum((time_1, time_2, time_3, time_4))) # update results op_res_last = copy.deepcopy(op_results[0]) @@ -164,4 +166,5 @@ def leqi(operator, timesteps, power=None, power_density=None, print_out=True): 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), None) diff --git a/openmc/deplete/integrator/si_celi.py b/openmc/deplete/integrator/si_celi.py index 4f34bace6d..dcddf5ea39 100644 --- a/openmc/deplete/integrator/si_celi.py +++ b/openmc/deplete/integrator/si_celi.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 from ..abc import OperatorResult from .celi import _celi_f1, _celi_f2 @@ -94,7 +94,8 @@ def si_celi(operator, timesteps, power=None, power_density=None, i, i_res, t, dt, print_out, m) # Create results for last point, 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), None) def si_celi_inner(operator, x, op_results, p, i, i_res, t, dt, print_out, m=10): @@ -136,7 +137,8 @@ def si_celi_inner(operator, x, op_results, p, i, i_res, t, dt, print_out, m=10): chain = operator.chain # Deplete to end - x_new = deplete(chain, x[0], op_results[0].rates, dt, print_out) + proc_time, x_new = timed_deplete( + chain, x[0], op_results[0].rates, dt, print_out) x.append(x_new) for j in range(m + 1): @@ -150,14 +152,15 @@ def si_celi_inner(operator, x, op_results, p, i, i_res, t, dt, print_out, m=10): op_res_bar = OperatorResult(k, rates) rates = list(zip(op_results[0].rates, op_res_bar.rates)) - x_new = deplete(chain, x[0], rates, dt, print_out, - matrix_func=_celi_f1) - x_new = deplete(chain, x_new, rates, dt, print_out, - matrix_func=_celi_f2) + time_1, x_new = timed_deplete( + chain, x[0], rates, dt, print_out, matrix_func=_celi_f1) + time_2, x_new = timed_deplete( + chain, x_new, rates, dt, print_out, matrix_func=_celi_f2) + proc_time += time_1 + time_2 # Create results, write to disk op_results.append(op_res_bar) - 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) # return updated time and vectors return [x_new], t + dt, [op_res_bar] diff --git a/openmc/deplete/integrator/si_leqi.py b/openmc/deplete/integrator/si_leqi.py index 05002880a1..b4b586feed 100644 --- a/openmc/deplete/integrator/si_leqi.py +++ b/openmc/deplete/integrator/si_leqi.py @@ -6,7 +6,7 @@ from itertools import repeat from .si_celi import si_celi_inner from .leqi import _leqi_f1, _leqi_f2, _leqi_f3, _leqi_f4 -from .cram import deplete +from .cram import timed_deplete from ..results import Results from ..abc import OperatorResult @@ -112,12 +112,14 @@ def si_leqi(operator, timesteps, power=None, power_density=None, # Perform remaining LE/QI inputs = list(zip(op_res_last.rates, op_results[0].rates, repeat(dt_l), repeat(dt))) - x_new = deplete(chain, x[0], inputs, dt, print_out, - matrix_func=_leqi_f1) - x_new = deplete(chain, x_new, inputs, dt, print_out, - matrix_func=_leqi_f2) + proc_time, x_new = timed_deplete( + chain, x[0], inputs, dt, print_out, matrix_func=_leqi_f1) + time_1, x_new = timed_deplete( + chain, x_new, inputs, dt, print_out, matrix_func=_leqi_f2) x.append(x_new) + proc_time += time_1 + # Loop on inner for j in range(m + 1): op_res = operator(x_new, p) @@ -131,14 +133,17 @@ def si_leqi(operator, timesteps, power=None, power_density=None, inputs = list(zip(op_res_last.rates, op_results[0].rates, op_res_bar.rates, repeat(dt_l), repeat(dt))) - x_new = deplete(chain, x[0], inputs, dt, print_out, - matrix_func=_leqi_f3) - x_new = deplete(chain, x_new, inputs, dt, print_out, - matrix_func=_leqi_f4) + time_1, x_new = timed_deplete( + chain, x[0], inputs, dt, print_out, matrix_func=_leqi_f3) + time_2, x_new = timed_deplete( + chain, x_new, inputs, dt, print_out, matrix_func=_leqi_f4) + + proc_time += time_1 + time_2 # Create results, write to disk op_results.append(op_res_bar) - 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) # update results x = [x_new] @@ -148,4 +153,5 @@ def si_leqi(operator, timesteps, power=None, power_density=None, dt_l = dt # Create results for last point, 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), None) diff --git a/tests/unit_tests/test_deplete_leqi.py b/tests/unit_tests/test_deplete_leqi.py index a1a32e092c..97a841f6ce 100644 --- a/tests/unit_tests/test_deplete_leqi.py +++ b/tests/unit_tests/test_deplete_leqi.py @@ -35,3 +35,9 @@ def test_leqi(run_in_tmpdir): assert y1[2] == approx(s2[0]) assert y2[2] == approx(s2[1]) + + # Test structure of depletion time dataset + + dep_time = res.get_depletion_time() + assert dep_time.shape == (len(dt), 1) + assert all(dep_time > 0) diff --git a/tests/unit_tests/test_deplete_si_celi.py b/tests/unit_tests/test_deplete_si_celi.py index 8e84bcba8a..c064172976 100644 --- a/tests/unit_tests/test_deplete_si_celi.py +++ b/tests/unit_tests/test_deplete_si_celi.py @@ -35,3 +35,15 @@ def test_si_celi(run_in_tmpdir): assert y1[2] == approx(s2[0]) assert y2[2] == approx(s2[1]) + + # Test structure of depletion time dataset + + dep_time = res.get_depletion_time() + assert dep_time.shape == (len(dt), 1) + assert all(dep_time > 0) + + # Test structure of depletion time dataset + + dep_time = res.get_depletion_time() + assert dep_time.shape == (len(dt), 1) + assert all(dep_time > 0) diff --git a/tests/unit_tests/test_deplete_si_leqi.py b/tests/unit_tests/test_deplete_si_leqi.py index 4814d8ab86..1003a73161 100644 --- a/tests/unit_tests/test_deplete_si_leqi.py +++ b/tests/unit_tests/test_deplete_si_leqi.py @@ -35,3 +35,9 @@ def test_si_leqi(run_in_tmpdir): assert y1[2] == approx(s2[0]) assert y2[2] == approx(s2[1]) + + # Test structure of depletion time dataset + + dep_time = res.get_depletion_time() + assert dep_time.shape == (len(dt), 1) + assert all(dep_time > 0)