Enrichment cascades
Matched-abundance-ratio cascade model, separation factors, and SWU used by Nucleide.
Nucleide solves matched-abundance-ratio cascades (MARCs) for multicomponent isotope mixtures. The model separates a feed stream into an enriched product stream and a depleted tails stream using a train of ideal stages.
Overview
A cascade is specified by:
- An overall stage separation factor .
- A mass separation factor between the masses of the enriching key and the stripping key .
- Numbers of enriching stages and stripping stages .
- Target assays of the key nuclide in the feed (), product (), and tails ().
The implementation is in crates/enrichment/src/cascade.rs. The public API is
Cascade::default_uranium() and Cascade::solve() in Python.
Per-nuclide stage separation factor
For a nuclide of atomic mass , the effective stage separation factor is
- when .
- for nuclides lighter than (enriched toward the product).
- for nuclides heavier than (enriched toward the tails).
The enriching key is the nuclide desired in the product (e.g. U-235). The stripping key is the nuclide desired in the tails (e.g. U-238). must lie strictly between and .
Stream mass ratios
For the key nuclide , the product-to-feed, tails-to-feed, and tails-to-product ratios follow directly from assay conservation:
Stage-count equations
For the key nuclide , the cascade geometry must satisfy two abundance-ratio product relations:
Nucleide solves these two equations for and with a fixed-point iteration. If the stage counts collapse, the solver restarts from a slightly larger seed and continues.
Full product and tails compositions
Once and are known, the composition of every component in the product and tails is
Solving the cascade
The outer secant loop adjusts and until the computed key assays match and within tolerance. Near convergence, floating-point noise can stall the secant updates; Nucleide keeps the best iterate and accepts it when improvement stops inside a bounded noise floor.
Optimizing
For a multicomponent feed, is chosen to minimize the total inter-stage flow rate per unit feed:
Nucleide performs a sign-tracking descent on , followed by a golden-section polish, re-solving the cascade at each trial value. Probes that fail to converge are treated as having an infinitely large flow rate, so the optimizer moves away from them rather than using unconverged values. The optimal is typically close to, but not exactly at, the midpoint of the two key masses.
Separative work (SWU)
The separative work per unit feed is computed from the value function
or, in the multicomponent form used by Nucleide, from the per-component separative-power ratio
The total SWU per unit feed is built from the key-nuclide abundance ratio of each stream, :
and the SWU per unit product is
Stream masses and SWU values are normalized to a 1 kg feed when using the default uranium cascade. Scale by the actual feed or product mass as needed.
Worked example: default uranium cascade
| Parameter | Value |
|---|---|
| Stage separation factor α | 1.05 |
| Mass separation factor M* | 236.5 |
| Enriching key j | U-235 |
| Stripping key k | U-238 |
| Initial enriching stages N | 30 |
| Initial stripping stages M | 10 |
| Feed assay x_F | 0.0072 |
| Product assay x_P | 0.05 |
| Tails assay x_T | 0.0025 |
Compute stream mass ratios:
Solve the stage-count equations for and using .
Compute full product and tails isotopics for U-234, U-235, and U-238 from the stage-count solution.
Evaluate and SWU, then SWU.
Running Cascade.default_uranium().solve() performs all of these steps and
returns the converged cascade object.
Assumptions and limitations
- Ideal stages: each stage achieves the same separation factor .
- Matched abundance ratios: the cascade is a symmetric MARC; non-ideal mixing losses are not modeled.
- M between key masses*:
solve_numericrejects a user-supplied that lies outside the open interval between the two key masses;multicomponentresets an out-of-range initial guess to the midpoint of the key masses. - Numeric solver only: symbolic cascade solvers are out of scope.
- Materials-free: enrichment math operates on mass fractions, independent
of the
materialcrate.
Related work beyond Nucleide
Adjacent capabilities found in PyNE and the literature that Nucleide does not implement:
- Symbolic cascade solver: PyNE’s default
multicomponentpath uses an auto-generated closed-form solver (enrichment_symbolic20); Nucleide only implements the numeric secant/fixed-point path. - Flow-minimization criterion: the idea of minimizing total inter-stage flow per unit feed originates with A. de la Garza, AECOP-330 (1969), cited in PyNE’s documentation.
- Q-cascade optimization: recent work generalizes MARC analysis and optimizes cascade tapering; see Zeng et al. (zeng-2014, zeng-2018).
- Non-uranium isotopes: the same mathematics applies to stable-isotope cascades (e.g. isotopically modified molybdenum, Borisevich et al. 2017, Chemical Engineering Research and Design 128, 257–264), though Nucleide’s defaults target uranium.