From a5c52b76520825f994babc34a6856f35fb0e29af Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Sun, 23 Nov 2025 00:39:50 +0100 Subject: [PATCH] Ramp pressure/flow down over spool time when pumps stop --- src/reactor_sim/reactor.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/reactor_sim/reactor.py b/src/reactor_sim/reactor.py index b5ba99f..0f2980d 100644 --- a/src/reactor_sim/reactor.py +++ b/src/reactor_sim/reactor.py @@ -275,11 +275,17 @@ class Reactor: state.primary_loop.pressure, 0.5, dt, self.primary_pump.spool_time ) else: - state.primary_loop.mass_flow_rate = 0.0 - state.primary_loop.pressure = max(0.1, saturation_pressure(state.primary_loop.temperature_out)) + state.primary_loop.mass_flow_rate = self._ramp_value( + state.primary_loop.mass_flow_rate, 0.0, dt, self.primary_pump.spool_time + ) + state.primary_loop.pressure = self._ramp_value( + state.primary_loop.pressure, max(0.1, saturation_pressure(state.primary_loop.temperature_out)), dt, self.primary_pump.spool_time + ) for pump_state in state.primary_pumps: pump_state.active = False - pump_state.flow_rate = 0.0 + pump_state.flow_rate = self._ramp_value( + pump_state.flow_rate, 0.0, dt, self.primary_pump.spool_time + ) pump_state.pressure = state.primary_loop.pressure pump_state.status = "STOPPING" if pump_state.flow_rate > 1.0 else "OFF" if self.secondary_pump_active: @@ -319,11 +325,17 @@ class Reactor: state.secondary_loop.pressure, 0.5, dt, self.secondary_pump.spool_time ) else: - state.secondary_loop.mass_flow_rate = 0.0 - state.secondary_loop.pressure = max(0.1, saturation_pressure(state.secondary_loop.temperature_out)) + state.secondary_loop.mass_flow_rate = self._ramp_value( + state.secondary_loop.mass_flow_rate, 0.0, dt, self.secondary_pump.spool_time + ) + state.secondary_loop.pressure = self._ramp_value( + state.secondary_loop.pressure, max(0.1, saturation_pressure(state.secondary_loop.temperature_out)), dt, self.secondary_pump.spool_time + ) for pump_state in state.secondary_pumps: pump_state.active = False - pump_state.flow_rate = 0.0 + pump_state.flow_rate = self._ramp_value( + pump_state.flow_rate, 0.0, dt, self.secondary_pump.spool_time + ) pump_state.pressure = state.secondary_loop.pressure pump_state.status = "STOPPING" if pump_state.flow_rate > 1.0 else "OFF"