Add pressure relief valve controls and indicators

This commit is contained in:
Codex Agent
2025-11-23 00:00:18 +01:00
parent aaff08745d
commit 521f5c9186
3 changed files with 26 additions and 0 deletions

View File

@@ -45,6 +45,8 @@ class Reactor:
shutdown: bool = False
meltdown: bool = False
generator_auto: bool = False
primary_relief_open: bool = False
secondary_relief_open: bool = False
poison_alerts: set[str] = field(default_factory=set)
maintenance_active: set[str] = field(default_factory=set)
@@ -96,6 +98,8 @@ class Reactor:
self.shutdown = True
self.meltdown = False
self.generator_auto = False
self.primary_relief_open = False
self.secondary_relief_open = False
self.primary_pump_active = False
self.secondary_pump_active = False
self.primary_pump_units = [False] * len(self.primary_pump_units)
@@ -321,6 +325,11 @@ class Reactor:
pump_state.pressure = state.secondary_loop.pressure
pump_state.status = "STOPPING" if pump_state.flow_rate > 1.0 else "OFF"
if self.primary_relief_open:
state.primary_loop.pressure = max(0.1, saturation_pressure(state.primary_loop.temperature_out))
if self.secondary_relief_open:
state.secondary_loop.pressure = max(0.1, saturation_pressure(state.secondary_loop.temperature_out))
self.thermal.step_core(state.core, state.primary_loop, total_power, dt)
if not self.secondary_pump_active or state.secondary_loop.mass_flow_rate <= 1.0:
transferred = 0.0
@@ -459,6 +468,10 @@ class Reactor:
self._set_turbine_state(False)
if command.generator_auto is not None:
self.generator_auto = command.generator_auto
if command.primary_relief is not None:
self.primary_relief_open = command.primary_relief
if command.secondary_relief is not None:
self.secondary_relief_open = command.secondary_relief
if command.power_setpoint is not None:
self.control.set_power_setpoint(command.power_setpoint)
if command.rod_manual is not None:
@@ -699,6 +712,8 @@ class Reactor:
"shutdown": self.shutdown,
"meltdown": self.meltdown,
"generator_auto": self.generator_auto,
"primary_relief_open": self.primary_relief_open,
"secondary_relief_open": self.secondary_relief_open,
"maintenance_active": list(self.maintenance_active),
"generators": [
{
@@ -732,6 +747,8 @@ class Reactor:
self.shutdown = metadata.get("shutdown", self.shutdown)
self.meltdown = metadata.get("meltdown", self.meltdown)
self.generator_auto = metadata.get("generator_auto", self.generator_auto)
self.primary_relief_open = metadata.get("primary_relief_open", self.primary_relief_open)
self.secondary_relief_open = metadata.get("secondary_relief_open", self.secondary_relief_open)
maint = metadata.get("maintenance_active")
if maint is not None:
self.maintenance_active = set(maint)