PWR-HYBRID-3/fret-pipeline/diagrams/PWR_HYBRID_3_DRC_states.dot
Dane Sabo cebf8c167a Initial umbrella repo: thesis + FRET pipeline + plant model with first controllers
Folds three previously-separate pieces into one preliminary-example repo
for the HAHACS thesis:

- thesis/ (submodule) → gitea Thesis.git — the PhD proposal
- fret-pipeline/ — FRET requirements to AIGER controller (was
  ~/Documents/fret_processing/; prior single-commit history abandoned
  per user decision)
- plant-model/ — 10-state PKE + lumped T/H PWR model (was
  ~/Documents/PKE_Playground/; never version-controlled before)
- presentations/2026DICE/ (submodule) → gitea 2026DICE.git
- reachability/, hardware/ — empty placeholders for Thrust 3 and HIL
- docs/architecture.md — how the discrete and continuous layers compose
- claude_memory/ — session notes and scratch knowledge pattern

Plant model refactored to thesis naming (x, plant, u, ref); pke_th_rhs
now takes u as an explicit arg instead of reading rho_ext from the
params struct. First two controllers built to the contract
u = ctrl_<mode>(t, x, plant, ref): ctrl_null (baseline) and
ctrl_operation (stabilizing, proportional on T_avg). Validated under a
100% -> 80% Q_sg step: ctrl_operation reduces steady-state T_avg drift
~47% vs. the unforced plant.

Root CLAUDE.md emphasizes that CLAUDE.md files are living documents and
that any knowledge not captured before a session ends is lost forever;
claude_memory/ holds the session-level notes that haven't stabilized
enough to graduate into a CLAUDE.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 16:24:11 -04:00

24 lines
1.4 KiB
Plaintext

digraph Controller {
rankdir=LR;
bgcolor="white";
node [shape=Mrecord, style="filled,rounded", fontname="Helvetica-Bold", fontsize=12, penwidth=1.5];
edge [fontname="Helvetica", fontsize=9];
s00 [label="MODE_SHUTDOWN", fillcolor="#A8D8EA"];
s01 [label="MODE_OPERATION", fillcolor="#77DD77"];
s10 [label="MODE_HEATUP", fillcolor="#FFFACD"];
s11 [label="MODE_SCRAM", fillcolor="#FF6B6B"];
init [shape=point, width=0.25, color="black"];
init -> s00 [penwidth=2.0];
s00 -> s00 [label="!t_avg_above_min", penwidth=1.2, color="#4A90D9", fontcolor="#4A90D9", style="bold"];
s00 -> s10 [label="t_avg_above_min", penwidth=1.2, color="#228B22", fontcolor="#228B22"];
s01 -> s01 [label="inv2_holds", penwidth=1.2, color="#4A90D9", fontcolor="#4A90D9", style="bold"];
s01 -> s11 [label="!inv2_holds", penwidth=1.2, color="#CC0000", fontcolor="#CC0000", style="bold"];
s10 -> s01 [label="inv1_holds & p_above_crit & t_avg_in_range", penwidth=1.2, color="#228B22", fontcolor="#228B22"];
s10 -> s10 [label="(inv1_holds & !t_avg_in_range) | (inv1_holds & !p_above_crit)", penwidth=1.2, color="#4A90D9", fontcolor="#4A90D9", style="bold"];
s10 -> s11 [label="!inv1_holds", penwidth=1.2, color="#CC0000", fontcolor="#CC0000", style="bold"];
s11 -> s00 [label="manual_reset", penwidth=1.2, color="#228B22", fontcolor="#228B22"];
s11 -> s11 [label="!manual_reset", penwidth=1.2, color="#4A90D9", fontcolor="#4A90D9", style="bold"];
}