SCPN Fusion Core v3.1.0 — Phase 0 Physics Hardening
Summary
Phase 0 of the v3.1.0 roadmap: kill remaining physics blockers identified in team review.
P0.1 — TBR Realism
- Port-coverage factor (0.80), streaming factor (0.85), blanket-fill factor applied to volumetric and 3-group blanket TBR
- Corrected TBR now in Fischer/DEMO range [1.0, 1.4] (was ideal 1.67)
tbr_idealfield preserved for reference
P0.2 — Q-Scan Greenwald & Temperature Limits
- Greenwald density limit:
n_GW = I_p / (pi * a^2)— points above 1.2x n_GW skipped - Temperature hard cap at 25 keV with warning emission
- Q ceiling at 15 (was unbounded, producing Q=98 artifacts)
P0.6 — Energy Conservation Enforcement
- Per-timestep conservation diagnostic after Crank-Nicolson solve
_last_conservation_errorattribute for inspection- Optional
enforce_conservation=TrueraisesPhysicsErrorif error > 1%
P0.3 — Dashboard Auto-Flagging + Plots
THRESHOLDSdict inrmse_dashboard.pywith PASS/WARN/FAIL auto-flags- Summary table at top of rendered markdown
- Matplotlib scatter plots (tau_E, beta_N) and bar charts (axis error)
P0.4 — CI Gate Hardening
- Disruption FPR promoted from soft warn to hard fail (threshold 0.15)
- TBR gate: fail if outside [1.0, 1.4]
- Q gate: fail if Q_peak > 15
P0.5 — Issue Templates
feature_request.mdandbug_report.mdconverted to YAML form format- Mandatory "Physics Reference" field (
required: true) with DOI/arXiv + equation number
Test Results
- 24 new tests across 3 test classes (TBR correction, Q-scan limits, energy conservation)
- 1141 total tests passing (57 skipped, 1 pre-existing stochastic failure unrelated)
Files Changed
src/scpn_fusion/nuclear/blanket_neutronics.py— correction factorssrc/scpn_fusion/core/fusion_ignition_sim.py— Greenwald, T cap, Q ceilingsrc/scpn_fusion/core/integrated_transport_solver.py— conservation checksvalidation/rmse_dashboard.py— auto-flagging + plotstools/ci_rmse_gate.py— hard FPR/TBR/Q gates.github/ISSUE_TEMPLATE/*.yml— YAML formstests/test_phase0_physics_fixes.py— 24 new tests