Prevent turbine output when steam quality or flow is negligible
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user