Stop pressurizer pumping a cold loop

This commit is contained in:
Codex Agent
2025-11-23 19:51:36 +01:00
parent 70608efdc8
commit 3a030031fa
2 changed files with 7 additions and 5 deletions

View File

@@ -309,8 +309,7 @@ class Reactor:
state.primary_loop.mass_flow_rate = self._ramp_value( 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.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(0.5, saturation_pressure(state.primary_loop.temperature_out))
target_pressure = max(pressurizer_floor, saturation_pressure(state.primary_loop.temperature_out))
state.primary_loop.pressure = self._ramp_value( state.primary_loop.pressure = self._ramp_value(
state.primary_loop.pressure, target_pressure, dt, self.primary_pump.spool_time 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)) return max(0.0, min(1.0, available / constants.NPSH_REQUIRED_MPA))
def _apply_pressurizer(self, primary: CoolantLoopState, dt: float) -> None: 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 target = constants.PRIMARY_PRESSURIZER_SETPOINT_MPA
band = constants.PRIMARY_PRESSURIZER_DEADBAND_MPA band = constants.PRIMARY_PRESSURIZER_DEADBAND_MPA
heat_rate = constants.PRIMARY_PRESSURIZER_HEAT_RATE_MPA_PER_S heat_rate = constants.PRIMARY_PRESSURIZER_HEAT_RATE_MPA_PER_S

View File

@@ -5,14 +5,15 @@ from reactor_sim.commands import ReactorCommand
def test_pressurizer_raises_pressure_with_level(): def test_pressurizer_raises_pressure_with_level():
reactor = Reactor.default() reactor = Reactor.default()
state = reactor.initial_state() state = reactor.initial_state()
state.primary_loop.pressure = 5.0 state.primary_loop.pressure = 0.5
reactor.pressurizer_level = 0.8 reactor.pressurizer_level = 0.8
reactor.primary_pump_active = False reactor.primary_pump_active = False
reactor.secondary_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 assert reactor.pressurizer_level < 0.8