fat-entry scram: n decays 0.047→0.009 over 60s from fat X_entry

Scram PJ reach from the bounding-box union of:
  - hot-standby box (mode_boundaries.q_shutdown)
  - heatup-tight reach envelope (results/reach_heatup_pj_tight.mat)
  - operation-LQR reach envelope (results/reach_operation_result.mat)
  - LOCA operation envelope (results/reach_loca_operation.mat, 3s)

with precursor + temperature outliers clamped to physical bounds.

Results at probe horizons:
  T=10s: 10890 sets in 480s wall — n ∈ [-8e-4, 0.047]   T_c [231, 362]
  T=30s: 16925 sets in 2892s wall — n ∈ [-4e-4, 0.021]  T_c [229, 361]
  T=60s: 23919 sets in 705s wall  — n ∈ [-2e-4, 0.009]  T_c [226, 359]

Monotone n decay, factor-of-5-per-minute even from the wide union.
This is the defensible scram-obligation version: starts from anywhere
the plant could plausibly be (including LOCA-perturbed operation
state), proves n decays. X_exit(scram)=n≤1e-4 still not reached in
60s — same T_max-vs-plant-decay mismatch previously flagged.

Fixed: missing Printf import that had failed the summary block on the
first run (results still computed correctly, just the final print
errored; the matwrite is after the print so the mat file wasn't
saved on that run).

Journal entry for 2026-04-21 extended with the fat-entry result +
the LOCA-reach 3s-horizon numerical-looseness apass. 38 pages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dane Sabo 2026-04-21 21:40:04 -04:00
parent ef7ae06ffc
commit 5050b9e71e
2 changed files with 28 additions and 4 deletions

View File

@ -18,6 +18,7 @@ using Pkg
Pkg.activate(joinpath(@__DIR__, "..", ".."))
using LinearAlgebra
using Printf
using ReachabilityAnalysis, LazySets
using JSON
using MAT

View File

@ -181,10 +181,33 @@ One-session task.
\subsection*{Other odds and ends}
\apass{Scram entry-set expansion (user's morning point 2) queued; not
done this session. The LOCA-driven scenario is a separate reach run
that needs to complete first, then its final-state bounding box feeds
into the scram \textit{X\_entry}.}
\textbf{Scram entry-set expansion (user's morning point 2) ---
landed later this session.} Built
\texttt{code/scripts/reach/reach\_loca\_operation.jl} (LQR reach under
$Q_{\mathrm{sg}} \in [0,\ 1.5 P_0]$, the steam-line-break envelope,
for 3~\unit{\second} horizon) and
\texttt{code/scripts/reach/reach\_scram\_pj\_fat.jl} (bounding-box
union of hot-standby + heatup-tight envelope + operation-LQR envelope
+ LOCA envelope, clamps LOCA's numerical outliers on precursors to
physically plausible bounds, reruns PJ scram reach).
Result: $n$ decays monotonically
\textbf{$0.047 \to 0.021 \to 0.0094$ over $\{10, 30, 60\}$~\unit{\second}},
factor-of-five per minute even starting from the fat entry (which
includes the LOCA-perturbed post-operation state). Temperatures
fall from $[226,\ 361]\,^\circ\mathrm{C}$ (clamp-saturated initially)
toward the decay-heat equilibrium. No step-budget truncation;
23{,}919 reach-sets over 60~\unit{\second}. $X_{\mathrm{exit}}$
threshold of $n \leq 10^{-4}$ still not reached in 60~\unit{\second};
same $T_{\max}$-vs-plant-decay mismatch flagged in the earlier scram
entry. \emph{But}: this is now a defensible obligation because the
entry set represents ``anywhere the plant could realistically be,''
not the narrow 1~K box around $x_{\mathrm{op}}$ of the earlier run.
\apass{The LOCA reach itself is numerically loose (box-hull propagation
amplifies slow precursor modes under large disturbance, so horizons
$> 3$~\unit{\second} blow up). A proper zonotope-generator
propagator would fix this; deferred.}
\apass{Heatup with steam-dump $Q_{\mathrm{sg}}$ demand (user's point 3)
queued; a one-line change to \texttt{main\_mode\_sweep.jl}'s