Add rod safety backoff and staged ramp test

This commit is contained in:
Codex Agent
2025-11-25 20:34:57 +01:00
parent 327fca7096
commit b06246b1ff
3 changed files with 36 additions and 10 deletions

View File

@@ -68,7 +68,23 @@ class ControlSystem:
def set_manual_mode(self, manual: bool) -> None:
if self.manual_control != manual:
self.manual_control = manual
LOGGER.info("Rod control %s", "manual" if manual else "automatic")
LOGGER.info("Rod control %s", "manual" if manual else "automatic")
def safety_backoff(self, subcooling_margin: float | None, dnb_margin: float | None, dt: float) -> None:
"""Insert rods proactively when thermal margins are thin."""
if self.manual_control:
return
severity = 0.0
if subcooling_margin is not None:
severity = max(severity, max(0.0, 5.0 - subcooling_margin) / 5.0)
if dnb_margin is not None:
severity = max(severity, max(0.0, 1.5 - dnb_margin) / 1.5)
if severity <= 0.0:
return
backoff = (0.01 + 0.04 * severity) * dt
self.rod_target = clamp(self.rod_target + backoff, 0.0, 0.95)
self._advance_banks(self.rod_target, dt)
LOGGER.debug("Safety backoff applied: target=%.3f severity=%.2f", self.rod_target, severity)
def coolant_demand(
self,