Depletion
Burnup matrices, the Bateman equation, and the CRAM solver used by Nucleide.
Nucleide solves nuclide transmutation over a single time step using a burnup matrix formulation and the Chebyshev Rational Approximation Method (CRAM) for the matrix exponential.
Overview
For a vector of nuclide atom densities , the linearized depletion equation is
where is the burnup matrix. Each column of describes how a parent nuclide is lost and what it produces; each row describes how a daughter nuclide is gained.
Matrix construction is in crates/depletion/src/matrix.rs and the CRAM solver
is in crates/depletion/src/cram.rs. The public driver is deplete in
crates/depletion/src/lib.rs.
Building the burnup matrix
Nucleide builds from a Chain and a set of
one-group reaction rates.
Decay
For nuclide with half-life , the decay constant is
The diagonal entry loses atoms at rate :
Each decay mode with branching ratio adds production to the off-diagonal:
Reactions
For a one-group reaction rate of type on nuclide :
- Loss: once per reaction type, even if the chain lists multiple branched entries for that type.
- Production: each reaction entry with branching ratio and target contributes
- Light-particle secondaries: reactions such as , , and emit light nuclides that are tracked when they appear in the chain (e.g. ).
- Fission: if fission yields are present, production is distributed over all fission products:
The final matrix has units of and is sparse, with one diagonal entry per chain nuclide even if it is stable.
CRAM: matrix exponential by partial fractions
CRAM evaluates the action of the matrix exponential on in incomplete partial fraction (IPF) product form:
where for order-16 and for order-48. The coefficients , , and are pre-computed complex numbers published by Pusa. Each pole is applied sequentially to the running solution vector; these IPF coefficients are not interchangeable with the residues of the classic partial-fraction sum form.
Each step is a
sparse linear solve rather than a full matrix exponential. Nucleide uses a
sparse LU factorization from the linalg facade, and the symbolic pattern is
reused across all poles.
Coefficients
Nucleide ships the CRAM-16 and CRAM-48 coefficient sets verbatim. CRAM-16 is cheaper; CRAM-48 is the production default.
| k | Re(θ) | Im(θ) | Re(α) | Im(α) |
|---|---|---|---|---|
| 1 | 3.509103608414918 | 8.436198985884374 | 5464.93057687021 | -37979.83575308356 |
| 2 | 5.948152268951177 | 3.587457362018322 | 90.45112476907548 | -1115.537522430261 |
| 3 | -5.264971343442647 | 16.22022147316793 | 234.4818070467641 | -422.8020157070496 |
| 4 | 1.419375897185666 | 10.92536348449672 | 94.53304067358312 | -295.1294291446048 |
| 5 | 6.416177699099435 | 1.194122393370139 | 728.3792954673409 | -120564.6080220011 |
| 6 | 4.993174737717997 | 5.996881713603942 | 36.48229059594851 | -115.5509621409682 |
| 7 | -1.413928462488886 | 13.49772569889275 | 25.47321630156819 | -26.39500283021502 |
| 8 | -10.84391707869699 | 19.27744616718165 | 23.94538338734709 | -5.650522971778156 |
The CRAM-16 scaling constant is .
Algorithm flow
Worked example: sequential decay chain
Consider a three-nuclide chain:
with , , and stable. The burnup matrix is
Starting from atoms and , the analytic solution after is
.
.
.
Nucleide’s CRAM-48 result matches this analytic solution to better than one part
in for and one part in for . This exact chain is
exercised in crates/depletion/src/lib.rs as analytic_two_step_decay_cram48.
Assumptions and limitations
- One-group reaction rates: CRAM in Nucleide uses a single scalar rate per reaction channel. Multigroup fluxes must be collapsed externally.
- Fixed cross sections over the step: is treated as constant during .
- Fission yields are single-energy: the yield set at the lowest incident neutron energy is used, matching OpenMC’s default.
- Decay branching ratios: chains read from XML keep the file values verbatim; only programmatically built chains are renormalized (the largest branch is adjusted so the modes sum to exactly 1.0).
- Stable nuclides have zero diagonal: they act as sinks in the chain.
- CRAM order: order-16 is adequate for short, simple chains; order-48 is recommended for production burnup matrices.
Related work beyond Nucleide
Adjacent capabilities found in PyNE, OpenMC, and the literature that Nucleide does not implement:
- Multi-step time integration: OpenMC ships predictor-corrector integrators (CECM, CELI, CF4, EPCRK4, and their SI variants) that recompute reaction rates between steps; Nucleide exposes a single constant-rate step.
- Substepping: OpenMC’s CRAM solver can subdivide a step while reusing the LU factorizations; Nucleide has no substep parameter.
- Transport-coupled depletion: OpenMC normalizes tally reaction rates to absolute rates from a power or source normalization; Nucleide assumes rates are already given in .
- Energy-dependent fission yields: OpenMC selects between constant, thermal, and thermal+fast yield modes; Nucleide uses the lowest-energy yield set.
- Feed and removal terms: OpenMC adds transfer rates and external source vectors to the burnup matrix for MSR-style continuous processing.
- Chain truncation: PyNE’s transmutagen-generated solver truncates the transmutation tree by density tolerance; Nucleide uses a fixed chain.
- Krylov subspace methods: an alternative to CRAM for the Bateman equations; see Josey et al. (2017)josey-2017.