Prevent turbine output when steam quality or flow is negligible

This commit is contained in:
Codex Agent
2025-11-23 00:04:42 +01:00
parent 521f5c9186
commit c67322a1d2

View File

@@ -35,7 +35,8 @@ class Turbine:
steam_power_mw: float = 0.0, steam_power_mw: float = 0.0,
dt: float = 1.0, dt: float = 1.0,
) -> None: ) -> 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. # No steam available; turbine should idle.
state.shaft_power_mw = 0.0 state.shaft_power_mw = 0.0
state.electrical_output_mw = 0.0 state.electrical_output_mw = 0.0
@@ -46,8 +47,9 @@ class Turbine:
return return
enthalpy = 2_700.0 + loop.steam_quality * 600.0 enthalpy = 2_700.0 + loop.steam_quality * 600.0
mass_flow = loop.mass_flow_rate * 0.6 mass_flow = effective_mass_flow * 0.6
available_power = max(steam_power_mw, (enthalpy * mass_flow / 1_000.0) / 1_000.0) 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 shaft_power_mw = available_power * self.mechanical_efficiency
electrical = shaft_power_mw * self.generator_efficiency electrical = shaft_power_mw * self.generator_efficiency
if electrical > self.rated_output_mw: if electrical > self.rated_output_mw: