This example is interactive. Click the play button on any cell to execute it, or run all cells in sequence.

Reactor Point Kinetics

Simulating the transient neutron population in a nuclear reactor using the point kinetics equations (PKE) with six delayed neutron precursor groups.

The point kinetics model couples the neutron density MATHINLINE2ENDMATH with MATHINLINE3ENDMATH delayed neutron precursor groups MATHINLINE4ENDMATH:

MATHDISPLAY0ENDMATH

MATHDISPLAY1ENDMATH

where MATHINLINE5ENDMATH is the total delayed neutron fraction, MATHINLINE6ENDMATH is the prompt neutron generation time, and MATHINLINE7ENDMATH is the reactivity.

Python
Loading...

The point kinetics system is very stiff — the prompt neutron generation time MATHINLINE0ENDMATH creates eigenvalues on the order of MATHINLINE1ENDMATH. The variable-order BDF solver GEAR52A is ideal here: it requires only one implicit solve per step and adapts both step size and order to the smooth exponential dynamics. The default fixed-point tolerance (1e-9) is unnecessarily tight for this problem; relaxing it to 1e-6 gives a ~70x speedup with negligible loss in accuracy.

1. Delayed Supercritical Step

Insert a step reactivity of MATHINLINE2ENDMATH (about MATHINLINE3ENDMATH). Since MATHINLINE4ENDMATH, the reactor is delayed supercritical — the power rises on a slow time scale governed by the delayed neutrons.

Python
Loading...
18:18:22 - INFO - LOGGING (log: True)
18:18:22 - INFO - BLOCKS (total: 4, dynamic: 1, static: 3, eventful: 0)
18:18:22 - INFO - GRAPH (nodes: 4, edges: 3, alg. depth: 1, loop depth: 0, runtime: 0.165ms)
18:18:22 - INFO - STARTING -> TRANSIENT (Duration: 100.00s)
18:18:22 - INFO - --------------------   1% | 0.1s<1.0s | 806.6 it/s
18:18:22 - INFO - ####----------------  21% | 0.1s<0.1s | 873.4 it/s
18:18:22 - INFO - ########------------  41% | 0.1s<0.0s | 877.7 it/s
18:18:22 - INFO - ############--------  61% | 0.2s<0.0s | 809.8 it/s
18:18:22 - INFO - ################----  81% | 0.2s<0.0s | 1503.5 it/s
18:18:22 - INFO - #################### 100% | 0.2s<--:-- | 943.1 it/s
18:18:22 - INFO - FINISHED -> TRANSIENT (total steps: 127, successful: 114, runtime: 179.45 ms)
Python
Loading...

The neutron density rises exponentially on a time scale of seconds — much slower than the prompt neutron lifetime (MATHINLINE0ENDMATH s) because the delayed neutrons control the dynamics when MATHINLINE1ENDMATH.

2. Prompt Supercritical

Insert MATHINLINE0ENDMATH. Now the reactor is prompt supercritical — the power rises on the prompt neutron time scale, producing a rapid excursion.

Python
Loading...
18:18:22 - INFO - LOGGING (log: True)
18:18:22 - INFO - BLOCKS (total: 4, dynamic: 1, static: 3, eventful: 0)
18:18:22 - INFO - GRAPH (nodes: 4, edges: 3, alg. depth: 1, loop depth: 0, runtime: 0.134ms)
18:18:22 - INFO - STARTING -> TRANSIENT (Duration: 0.50s)
18:18:22 - INFO - --------------------   1% | 0.1s<0.7s | 783.0 it/s
18:18:22 - INFO - ####----------------  20% | 0.1s<0.3s | 829.2 it/s
18:18:22 - INFO - ########------------  40% | 0.2s<0.3s | 699.8 it/s
18:18:22 - INFO - ############--------  60% | 0.3s<0.2s | 732.3 it/s
18:18:23 - INFO - ################----  80% | 0.4s<0.1s | 783.7 it/s
18:18:23 - INFO - #################### 100% | 0.5s<--:-- | 783.2 it/s
18:18:23 - INFO - FINISHED -> TRANSIENT (total steps: 313, successful: 302, runtime: 481.11 ms)
Python
Loading...

The power rises orders of magnitude within milliseconds. This is why prompt criticality must be avoided in reactor design — the delayed neutrons are the key safety mechanism that keeps power transients manageable.

3. Subcritical with External Source

A subcritical assembly (MATHINLINE1ENDMATH) with a constant external neutron source. The system reaches an equilibrium where the source multiplication produces a steady neutron population:

MATHDISPLAY0ENDMATH

Python
Loading...
18:18:23 - INFO - LOGGING (log: True)
18:18:23 - INFO - BLOCKS (total: 4, dynamic: 1, static: 3, eventful: 0)
18:18:23 - INFO - GRAPH (nodes: 4, edges: 3, alg. depth: 1, loop depth: 0, runtime: 0.119ms)
18:18:23 - INFO - STARTING -> TRANSIENT (Duration: 50.00s)
18:18:23 - INFO - --------------------   1% | 0.1s<0.9s | 840.4 it/s
18:18:23 - INFO - ####----------------  20% | 0.1s<0.1s | 834.8 it/s
18:18:23 - INFO - ########------------  42% | 0.2s<0.0s | 770.8 it/s
18:18:23 - INFO - ############--------  64% | 0.2s<0.0s | 747.1 it/s
18:18:23 - INFO - #################---  88% | 0.2s<0.0s | 746.2 it/s
18:18:23 - INFO - #################### 100% | 0.2s<--:-- | 675.4 it/s
18:18:23 - INFO - FINISHED -> TRANSIENT (total steps: 113, successful: 97, runtime: 173.87 ms)
Python
Loading...

The neutron density converges to the expected source-multiplied equilibrium value, confirming the subcritical multiplication physics.