openmc.deplete.CECMIntegrator

class openmc.deplete.CECMIntegrator(operator, timesteps, power=None, power_density=None, source_rates=None, timestep_units='s', solver='cram48')[source]

Deplete using the CE/CM algorithm.

Implements the second order CE/CM predictor-corrector algorithm.

“CE/CM” stands for constant extrapolation on predictor and constant midpoint on corrector. This algorithm is mathematically defined as:

\[\begin{aligned} y' &= A(y, t) y(t) \\ A_p &= A(y_n, t_n) \\ y_m &= \text{expm}(A_p h/2) y_n \\ A_c &= A(y_m, t_n + h/2) \\ y_{n+1} &= \text{expm}(A_c h) y_n \end{aligned} \]
Parameters
  • operator (openmc.deplete.TransportOperator) – Operator to perform transport simulations

  • timesteps (iterable of float or iterable of tuple) – Array of timesteps. Note that values are not cumulative. The units are specified by the timestep_units argument when timesteps is an iterable of float. Alternatively, units can be specified for each step by passing an iterable of (value, unit) tuples.

  • 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, power_density, or source_rates 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.

  • source_rates (float or iterable of float, optional) –

    Source rate in [neutron/sec] for each interval in timesteps

    New in version 0.12.1.

  • timestep_units ({'s', 'min', 'h', 'd', 'MWd/kg'}) – Units for values specified in the timesteps argument. ‘s’ means seconds, ‘min’ means minutes, ‘h’ means hours, and ‘MWd/kg’ indicates that the values are given in burnup (MW-d of energy deposited per kilogram of initial heavy metal).

  • solver (str or callable, optional) –

    If a string, must be the name of the solver responsible for solving the Bateman equations. Current options are:

    • cram16 - 16th order IPF CRAM

    • cram48 - 48th order IPF CRAM [default]

    If a function or other callable, must adhere to the requirements in solver.

    New in version 0.12.

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

  • source_rates (iterable of float) – Source rate in [W] or [neutron/sec] for each interval in timesteps

  • solver (callable) –

    Function that will solve the Bateman equations \(\frac{\partial}{\partial t}\vec{n} = A_i\vec{n}_i\) with a step size \(t_i\). Can be configured using the solver argument. User-supplied functions are expected to have the following signature: solver(A, n0, t) -> n1 where

    • A is a scipy.sparse.csr_matrix making up the depletion matrix

    • n0 is a 1-D numpy.ndarray of initial compositions for a given material in atoms/cm3

    • t is a float of the time step size in seconds, and

    • n1 is a numpy.ndarray of compositions at the next time step. Expected to be of the same shape as n0

    New in version 0.12.

__call__(conc, rates, dt, source_rate, _i=None)[source]

Integrate using CE/CM

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

  • source_rate (float) – Power in [W] or source rate in [neutron/sec]

  • _i (int, optional) – Current iteration count. Not used

Returns

  • 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 transport simulations

__iter__()

Return pair of time step in [s] and source rate in [W] or [neutron/sec]

__len__()

Return integer number of depletion intervals

integrate(final_step=True)

Perform the entire depletion process across all steps

Parameters

final_step (bool, optional) –

Indicate whether or not a transport solve should be run at the end of the last timestep.

New in version 0.12.1.