diff --git a/src/reactor_sim/reactor.py b/src/reactor_sim/reactor.py index f4f7cf1..ca1d6f1 100644 --- a/src/reactor_sim/reactor.py +++ b/src/reactor_sim/reactor.py @@ -371,14 +371,22 @@ class Reactor: state.time_elapsed += dt # Update inlet temperatures based on heat removed/added for next iteration. + env = constants.ENVIRONMENT_TEMPERATURE primary_cooling = temperature_rise(transferred, state.primary_loop.mass_flow_rate) - state.primary_loop.temperature_in = max( - constants.ENVIRONMENT_TEMPERATURE, state.primary_loop.temperature_out - primary_cooling - ) - secondary_cooling = max(0.0, state.secondary_loop.temperature_out - constants.ENVIRONMENT_TEMPERATURE - 40.0) - state.secondary_loop.temperature_in = max( - constants.ENVIRONMENT_TEMPERATURE, state.secondary_loop.temperature_out - max(20.0, secondary_cooling) - ) + if transferred <= 0.0 or state.secondary_loop.mass_flow_rate <= 1.0: + passive = 0.02 * max(0.0, state.primary_loop.temperature_out - env) * dt + primary_cooling = max(primary_cooling, passive) + state.primary_loop.temperature_in = max(env, state.primary_loop.temperature_out - primary_cooling) + + if state.secondary_loop.mass_flow_rate <= 1.0: + target_temp = env + state.secondary_loop.temperature_out = self._ramp_value( + state.secondary_loop.temperature_out, target_temp, dt, self.secondary_pump.spool_time + ) + state.secondary_loop.temperature_in = state.secondary_loop.temperature_out + else: + secondary_cooling = max(0.0, state.secondary_loop.temperature_out - env - 40.0) + state.secondary_loop.temperature_in = max(env, state.secondary_loop.temperature_out - max(20.0, secondary_cooling)) LOGGER.info( (