SCPN Fusion Core v2.0.0
First production release with honest, externally-defensible metrics.
What Changed from v1.0.2
| Area |
v1.0.2 |
v2.0.0 |
Impact |
| Equilibrium solver |
SOR only |
Multigrid V-cycle (default) |
3-5x faster convergence |
| Transport model |
Constant chi_base=0.5 |
Gyro-Bohm + EPED pedestal |
Physics-based, calibrated |
| H-infinity controller |
Fake (fixed gains) |
Riccati ARE synthesis |
Proven robust stability |
| Disruption predictor |
500 synthetic shots |
10,000 synthetic + 16 reference shots |
Higher recall |
| Disruption prevention |
0% |
>60% (SNN on reference data) |
First nonzero rate |
| Real-shot validation |
None |
18-file equilibrium + 20-shot ITPA + 16-shot disruption |
Externally defensible |
| GEQDSK dataset |
8 SPARC only |
8 SPARC + 100 multi-machine |
Broader coverage |
| IPB98 uncertainty |
None |
Log-linear error propagation |
95% CI quantified |
| HIL demo |
None |
Register map + TMR simulation |
FPGA-ready path |
| Petri net verification |
Informal |
Constructive boundedness + liveness |
Documented proofs |
Heating & Neutronics
| Metric |
Value |
Unit |
| Best Q (ITER-like scan) |
98.07 |
— |
| Q >= 10 achieved |
Yes |
— |
| P_fus at best Q |
1785.9 |
MW |
| ECRH absorption |
99.0 |
% |
| Tritium Breeding Ratio |
1.6684 |
— |
Disruption & Control — Fault Injection (50-run ensemble)
| Metric |
Value |
Unit |
| Mean halo current peak |
2.242 |
MA |
| P95 halo current peak |
3.328 |
MA |
| Mean RE current peak |
13.726 |
MA |
| P95 RE current peak |
15.495 |
MA |
| Passes ITER limits |
No |
— |
| HIL control-loop P50 latency |
23.0 |
us |
| HIL control-loop P95 latency |
97.9 |
us |
| HIL control-loop P99 latency |
269.7 |
us |
| Sub-ms achieved |
Yes |
— |
| Total loop latency |
38.8 |
us |
| HIL FPGA latency (simulated) |
380 |
ns |
| TMR bit-flip recovery |
<16 |
ns |
H-Infinity Controller
| Metric |
Value |
| Synthesis |
Doyle-Glover-Khargonekar ARE |
| Guaranteed robustness |
<=20% multiplicative uncertainty |
| Outperforms PID on VDE |
Yes |
| Verification |
Riccati residual + stability regression lock |
Controller Comparison (100-episode campaign)
| Controller |
Mean Reward |
P95 Latency (us) |
Disruption Rate |
| PID |
-0.052 |
145 |
2.0% |
| H-infinity |
-0.038 |
162 |
1.0% |
| MPC |
-0.029 |
890 |
0.5% |
| SNN |
-0.045 |
78 |
3.0% |
No single controller wins across all objectives: SNN is fastest (78 us), MPC has the best disruption rate (0.5%), H-infinity is the strongest robust middle ground.
Transport Metrics (Disambiguated)
| Lane |
Metric |
Value |
| Physics transport (Gyro-Bohm + EPED) |
tau_E RMSE |
0.1287 s |
| Physics transport (Gyro-Bohm + EPED) |
tau_E relative RMSE |
28.6% |
| Physics transport (Gyro-Bohm + EPED) |
tau_E mean abs. relative error |
32.5% |
| Neural transport MLP surrogate |
tau_E RMSE % |
13.5% |
The 13.5% value belongs to the neural surrogate fit. The 28.6%/32.5% are full physics-transport validation. They are not interchangeable.
Confinement Scaling (IPB98(y,2))
| Metric |
Value |
| ITER design-point relative error |
-0.96% |
| ITPA 20-shot mean abs. relative error |
32.5% |
| tau_E 2-sigma coverage |
>=80% |
External Validation
| Metric |
Our Value |
Published |
Agreement |
| ITER beta_N (0-D) |
0.070 |
1.8 |
-96% (miscalibrated) |
| SPARC beta_N (0-D) |
0.583 |
1.0 |
-42% (miscalibrated) |
| ITER q95 |
3.0 |
3.0 |
Exact |
| JET DTE2 Pfus |
58 MW |
59 MW |
1.7% |
| Bootstrap fraction |
0.34 |
0.30-0.40 |
Within range |
| Spitzer eta at 1keV |
1.65e-8 |
1.65e-8 |
Exact |
Disruption Predictor — Real-Shot Replay (16 DIII-D profiles)
| Metric |
Value |
| Recall |
>= 60% |
| False positive rate |
90% |
| Validation status |
PARTIAL_PASS |
Synthetic-test FPR (0.08) does NOT transfer to real shots. Threshold tuning planned for v2.1.
Surrogates
| Model |
Metric |
Value |
| MLP (ITPA H-mode) |
RMSE |
0.0607 s (13.5%) |
| FNO turbulence |
Relative L2 |
0.79 (EXPERIMENTAL) |
Solver Performance (Rust vs Python)
| Solver |
Grid |
Python |
Rust |
Speedup |
| Vacuum field |
129x129 |
178.5 ms |
7.8 ms |
22.9x |
| GS Picard (10 iter) |
65x65 |
312.0 ms |
14.5 ms |
21.5x |
| Multigrid V-cycle |
129x129 |
~800 ms |
~35 ms |
~23x |
Test Coverage
| Suite |
Count |
| Python (pytest) |
1136 passing |
| Rust (cargo test) |
200+ passing |
Known Limitations (v2.0.0)
| Issue |
Severity |
Fix Target |
| beta_N: ITER -96%, SPARC -42% |
Critical |
v2.1 |
| Disruption FPR = 90% on real shots |
High |
v2.1 |
| tau_E ITPA RMSE = 32.5% |
Medium |
v2.1 |
| FNO L2 = 0.79 (experimental) |
Medium |
v3.0 |
| GS-Transport: no outer loop |
Medium |
v2.1 |
| Rust SNN not exposed via PyO3 |
Low |
v3.0 |
Full details: see RESULTS.md in repo root.