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>
27 lines
648 B
Matlab
27 lines
648 B
Matlab
function f = load_profile(t)
|
|
% LOAD_PROFILE Returns fractional SG heat demand at time t.
|
|
%
|
|
% Output is in [0, 1] where 1.0 = 100% of nominal power P0.
|
|
% Multiply by P0 to get Q_sg in watts: Q_sg = @(t) P0 * load_profile(t)
|
|
%
|
|
% Default profile (load-following):
|
|
% 0 - 30s: hold at 100%
|
|
% 30 - 130s: ramp 100% -> 80%
|
|
% 130 - 350s: hold at 80%
|
|
% 350 - 450s: ramp 80% -> 100%
|
|
% 450+: hold at 100%
|
|
|
|
if t < 30
|
|
f = 1.0;
|
|
elseif t < 130
|
|
f = 1.0 - 0.2 * (t - 30) / 100;
|
|
elseif t < 350
|
|
f = 0.8;
|
|
elseif t < 450
|
|
f = 0.8 + 0.2 * (t - 350) / 100;
|
|
else
|
|
f = 1.0;
|
|
end
|
|
|
|
end
|