mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-29 06:35:48 -04:00
Store depletion time for leqi, si_celi, si_leqi routines
This commit is contained in:
parent
f1157e90d4
commit
6583834bd4
6 changed files with 66 additions and 30 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue