AI authored to showcase ironpad capabilities.
This notebook simulates a 2D cross-section of a nuclear reactor using one-group neutron diffusion theory with six groups of delayed-neutron precursors, live in your browser: a Rust cell compiled to WebAssembly steps a 300x300 flux grid 450 times per second while you drive the control rods.
One-group neutron diffusion equation (Stacey, Nuclear Reactor Physics, §5.1):
\frac{\partial \phi}{\partial t} = v \left[ D \nabla^2 \phi - \Sigma_a \phi + (1 - \beta)\, \nu \Sigma_f \phi + \sum_{i=1}^{6} \lambda_i C_i \right] + S
where:
Read the bracket as a ledger: diffusion spreads neutrons, absorption removes them, prompt fission replaces (1 - \beta) of each generation immediately, and the \lambda_i C_i sum trickles in from precursor decay. That last term looks like a rounding error. It is the entire reason this machine is operable.
Delayed-neutron precursor kinetics (Keepin, Physics of Nuclear Kinetics, Ch. 4):
\frac{\partial C_i}{\partial t} = \beta_i \, \nu \Sigma_f \, \phi - \lambda_i \, C_i \qquad (i = 1 \ldots 6)
where:
The effective multiplication factor is computed from the material balance:
k_\text{eff} = \frac{\nu \Sigma_f \phi}{\Sigma_a \phi + \text{leakage}}
When k_\text{eff} = 1 the reactor is critical (steady-state); k < 1 is subcritical (flux decays); k > 1 is supercritical (flux grows).
Before you drive the reactor below, the next sections explain why it can be driven at all. They collapse the field equation to point kinetics, quantify the delayed-neutron timescale gap, and price reactivity the way operators do, in dollars and cents.
You do not need the full PDE to understand reactor control. Integrate the flux over the whole core and what remains is point kinetics, the workhorse model of reactor dynamics:
\frac{dn}{dt} = \frac{\rho - \beta}{\Lambda}\, n + \sum_{i=1}^{6} \lambda_i c_i \qquad\qquad \frac{dc_i}{dt} = \frac{\beta_i}{\Lambda}\, n - \lambda_i c_i
Narrated plainly:
That (\rho - \beta) grouping is the most load-bearing notation in reactor physics. While \rho < \beta, prompt neutrons alone form a dying chain; the reactor grows only as fast as the precursor shelf restocks, in seconds. The next cell shows the signature two-phase response: a fast prompt jump, then a slow, steerable climb.
Delayed neutrons are the reason a fission reactor is a machine humans can operate. The numbers make the case:
For a mental model: prompt-only at k = 1.001 has an e-folding period of \Lambda / \delta k = 25 milliseconds; power multiplies by e^{40} \approx 10^{17} every second. No mechanical system moves rods on that timescale. With delayed neutrons pacing it, the same k gives a period near 70 seconds: steerable with an electric motor. The prompt-only case is not worth running live, so it stays in a fence:
// Prompt-only at k = 1.001: dn/dt = (0.001 / 25e-6) * n = 40 n.
// n(t) = e^(40 t): about 5e8 by t = 0.5 s, f64 overflow by t = 17.7 s.
let mut n = 1.0_f64;
loop { n *= 1.00004; } // 1 microsecond steps, hopeless within one frame
The next cell computes these numbers straight from Keepin's six-group data. They are directional rather than precise (\Lambda varies by core design), but the ratio is the point.
Reactivity has natural units, and they are money. Define one dollar = \beta: exactly the reactivity at which prompt neutrons alone sustain the chain. A hundredth of a dollar is a cent; small \rho is also quoted in pcm (10^{-5}). The ladder:
Operators quote rod moves in cents because the dollar scale pins the cliff at a fixed place regardless of fuel; \beta is about 0.0065 for U-235 but only 0.0021 for Pu-239, one reason plutonium-heavy cores handle more nervously. The next cell converts k_\text{eff}, the number on the live gauge below, into pcm, dollars, and cents.
A rod's worth is the reactivity change it causes, and it is nowhere near linear in insertion depth. First-order perturbation theory says a small absorber steals reactivity proportional to the square of the flux at its location (flux weights both the neutrons available and the importance of losing them). With a roughly cosine axial flux:
The numbers are lopsided: the first 10% of insertion buys about 0.6% of total worth; the middle 20% buys about 39%. That is why fine power control happens with rods near mid-core. Watch for this below: the k_\text{eff} gauge barely reacts to the first slider increments and swings hardest through mid-range.
A model should state its own error bars. Four simplifications here matter in a real core:
None of this changes the story: \beta is still 0.0065, precursors still take seconds, and the response to your rod moves is qualitatively the real thing.
| Element | Description |
|---|---|
| Plasma core | Fuel region; colour intensity shows neutron flux |
| Teal ring | Water/graphite reflector surrounding the core |
| Silver bars | Control rod blades (7 total); they absorb neutrons |
| Left gauge | k_\text{eff} (white line = criticality at k = 1) |
| Right gauge | Total neutron flux relative to peak |
| Bottom plots | k_\text{eff} and total flux time histories |
Use the sliders to adjust:
Try it: Set k_\text{eff} < 1 by inserting the rods fully, then turn off the neutron source and watch the flux decay exponentially to zero. Then pull the rods out slowly and watch subcritical multiplication stretch the settling time as k creeps toward 1.