# code Plant model, controllers, and reach-analysis toolchain for the HAHACS preliminary example. All Julia. ## What this is A 10-state coupled neutronics + thermal-hydraulics model (point kinetic equations + lumped thermal loop) with continuous-mode controllers for each of the DRC modes (shutdown, heatup, operation, scram), plus a hand-rolled linear reach-tube propagator, a Lyapunov-ellipsoid barrier attempt, and scaffolding for TMJets-based nonlinear reach. Ported from MATLAB on 2026-04-20 once the reach experiments made it clear that Julia's stack (`OrdinaryDiffEq`, `MatrixEquations`, `ReachabilityAnalysis`, `LazySets`, `@taylorize`) was the right tool for everything we need going forward. The MATLAB originals are in the git history. ## Running First time: ```bash cd code julia --project=. -e 'using Pkg; Pkg.instantiate()' ``` Subsequent: ```bash julia --project=. scripts/main_mode_sweep.jl # all 5 DRC modes, figures julia --project=. scripts/reach_operation.jl # operation-mode linear reach julia --project=. scripts/barrier_lyapunov.jl # Lyapunov barrier attempt julia --project=. scripts/barrier_compare_OL_CL.jl # OL vs CL barrier julia --project=. scripts/reach_heatup_nonlinear.jl # nonlinear heatup (10s cap) ``` Figures save to `../docs/figures/`. Reach results save to `../reachability/*.mat` (gitignored). ## Structure See `CLAUDE.md` for the architectural overview and `../journal/` for the invention-log-style narrative of how this code got written. ## Dependencies From `Project.toml`: - `OrdinaryDiffEq` — ODE solver, Rodas5 for stiff systems. - `MatrixEquations` — `arec` for LQR Riccati, `lyapc` for Lyapunov. - `ReachabilityAnalysis` + `LazySets` — reach sets and set operations. - `Plots` — figures (GR backend by default). - `JSON` — read `../reachability/predicates.json`. - `MAT` — save results. `Manifest.toml` is gitignored; regenerate locally on first `Pkg.instantiate()`.