diff --git a/src/reactor_sim/reactor.py b/src/reactor_sim/reactor.py index c7cc23d..161f474 100644 --- a/src/reactor_sim/reactor.py +++ b/src/reactor_sim/reactor.py @@ -309,8 +309,7 @@ class Reactor: state.primary_loop.mass_flow_rate = self._ramp_value( state.primary_loop.mass_flow_rate, 0.0, dt, self.primary_pump.spool_time ) - pressurizer_floor = constants.PRIMARY_PRESSURIZER_SETPOINT_MPA - 0.5 if self.pressurizer_level > 0.05 else 0.5 - target_pressure = max(pressurizer_floor, saturation_pressure(state.primary_loop.temperature_out)) + target_pressure = max(0.5, saturation_pressure(state.primary_loop.temperature_out)) state.primary_loop.pressure = self._ramp_value( state.primary_loop.pressure, target_pressure, dt, self.primary_pump.spool_time ) @@ -551,6 +550,8 @@ class Reactor: return max(0.0, min(1.0, available / constants.NPSH_REQUIRED_MPA)) def _apply_pressurizer(self, primary: CoolantLoopState, dt: float) -> None: + if self.shutdown and primary.mass_flow_rate <= 100.0: + return target = constants.PRIMARY_PRESSURIZER_SETPOINT_MPA band = constants.PRIMARY_PRESSURIZER_DEADBAND_MPA heat_rate = constants.PRIMARY_PRESSURIZER_HEAT_RATE_MPA_PER_S diff --git a/tests/test_pressurizer.py b/tests/test_pressurizer.py index 96950ca..b32b86d 100644 --- a/tests/test_pressurizer.py +++ b/tests/test_pressurizer.py @@ -5,14 +5,15 @@ from reactor_sim.commands import ReactorCommand def test_pressurizer_raises_pressure_with_level(): reactor = Reactor.default() state = reactor.initial_state() - state.primary_loop.pressure = 5.0 + state.primary_loop.pressure = 0.5 reactor.pressurizer_level = 0.8 reactor.primary_pump_active = False reactor.secondary_pump_active = False + reactor.shutdown = False - reactor.step(state, dt=1.0, command=ReactorCommand.scram_all()) + reactor.step(state, dt=1.0, command=ReactorCommand()) - assert state.primary_loop.pressure > 5.0 + assert state.primary_loop.pressure > 0.5 assert reactor.pressurizer_level < 0.8