Store depletion time for leqi, si_celi, si_leqi routines

This commit is contained in:
Andrew Johnson 2019-06-21 13:06:54 -05:00
parent f1157e90d4
commit 6583834bd4
No known key found for this signature in database
GPG key ID: 253418E91B7F6FEB
6 changed files with 66 additions and 30 deletions

View file

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

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
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]

View file

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

View file

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

View file

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

View file

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