Add pressure relief valve controls and indicators
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user