diff --git a/src/reactor_sim/turbine.py b/src/reactor_sim/turbine.py index 278690c..7837ec4 100644 --- a/src/reactor_sim/turbine.py +++ b/src/reactor_sim/turbine.py @@ -35,7 +35,8 @@ class Turbine: steam_power_mw: float = 0.0, dt: float = 1.0, ) -> None: - if steam_power_mw <= 0.0 and loop.steam_quality <= 0.01: + effective_mass_flow = loop.mass_flow_rate * max(0.0, loop.steam_quality) + if steam_power_mw <= 0.0 and (loop.steam_quality <= 0.01 or effective_mass_flow <= 10.0): # No steam available; turbine should idle. state.shaft_power_mw = 0.0 state.electrical_output_mw = 0.0 @@ -46,8 +47,9 @@ class Turbine: return enthalpy = 2_700.0 + loop.steam_quality * 600.0 - mass_flow = loop.mass_flow_rate * 0.6 - available_power = max(steam_power_mw, (enthalpy * mass_flow / 1_000.0) / 1_000.0) + mass_flow = effective_mass_flow * 0.6 + computed_power = (enthalpy * mass_flow / 1_000.0) / 1_000.0 + available_power = steam_power_mw if steam_power_mw > 0 else computed_power shaft_power_mw = available_power * self.mechanical_efficiency electrical = shaft_power_mw * self.generator_efficiency if electrical > self.rated_output_mw: