openmc.deplete.LEQIIntegrator¶

class openmc.deplete.LEQIIntegrator(operator, timesteps, power=None, power_density=None)[source]

Deplete using the LE/QI CFQ4 algorithm.

Implements the LE/QI Predictor-Corrector algorithm using the fourth order commutator-free integrator.

“LE/QI” stands for linear extrapolation on predictor and quadratic interpolation on corrector. This algorithm is mathematically defined as:

\begin{aligned} y' &= A(y, t) y(t) \\ A_{last} &= A(y_{n-1}, t_n - h_1) \\ A_0 &= A(y_n, t_n) \\ F_1 &= \frac{-h_2^2}{12h_1} A_{last} + \frac{h_2(6h_1+h_2)}{12h_1} A_0 \\ F_2 &= \frac{-5h_2^2}{12h_1} A_{last} + \frac{h_2(6h_1+5h_2)}{12h_1} A_0 \\ y_p &= \text{expm}(F_2) \text{expm}(F_1) y_n \\ A_1 &= A(y_p, t_n + h_2) \\ F_3 &= \frac{-h_2^3}{12 h_1 (h_1 + h_2)} A_{last} + \frac{h_2 (5 h_1^2 + 6 h_2 h_1 + h_2^2)}{12 h_1 (h_1 + h_2)} A_0 + \frac{h_2 h_1)}{12 (h_1 + h_2)} A_1 \\ F_4 &= \frac{-h_2^3}{12 h_1 (h_1 + h_2)} A_{last} + \frac{h_2 (h_1^2 + 2 h_2 h_1 + h_2^2)}{12 h_1 (h_1 + h_2)} A_0 + \frac{h_2 (5 h_1^2 + 4 h_2 h_1)}{12 h_1 (h_1 + h_2)} A_1 \\ y_{n+1} &= \text{expm}(F_4) \text{expm}(F_3) y_n \end{aligned}

It is initialized using the CE/LI algorithm.

Parameters: operator (openmc.deplete.TransportOperator) – Operator to perform transport simulations timesteps (iterable of float) – Array of timesteps in units of [s]. Note that values are not cumulative. power (float or iterable of float, optional) – Power of the reactor in [W]. A single value indicates that the power is constant over all timesteps. An iterable indicates potentially different power levels for each timestep. For a 2D problem, the power can be given in [W/cm] as long as the “volume” assigned to a depletion material is actually an area in [cm^2]. Either power or power_density must be specified. power_density (float or iterable of float, optional) – Power density of the reactor in [W/gHM]. It is multiplied by initial heavy metal inventory to get total power if power is not speficied. operator (openmc.deplete.TransportOperator) – Operator to perform transport simulations chain (openmc.deplete.Chain) – Depletion chain timesteps (iterable of float) – Size of each depletion interval in [s] power (iterable of float) – Power of the reactor in [W] for each interval in timesteps
__call__(bos_conc, bos_rates, dt, power, i)[source]

Perform the integration across one time step

Parameters: conc (numpy.ndarray) – Initial concentrations for all nuclides in [atom] rates (openmc.deplete.ReactionRates) – Reaction rates from operator dt (float) – Time in [s] for the entire depletion interval power (float) – Power of the system in [W] i (int) – Current depletion step index proc_time (float) – Time spent in CRAM routines for all materials in [s] conc_list (list of numpy.ndarray) – Concentrations at each of the intermediate points with the final concentration as the last element op_results (list of openmc.deplete.OperatorResult) – Eigenvalue and reaction rates from intermediate transport simulation
__iter__()

Return pairs of time steps in [s] and powers in [W]

__len__()

Return integer number of depletion intervals

integrate()

Perform the entire depletion process across all steps