56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
import pytest
|
|
|
|
from reactor_sim.state import CoolantLoopState, TurbineState
|
|
from reactor_sim.turbine import Turbine
|
|
|
|
|
|
def test_turbine_spools_toward_target_output():
|
|
turbine = Turbine()
|
|
loop = CoolantLoopState(
|
|
temperature_in=600.0,
|
|
temperature_out=650.0,
|
|
pressure=6.0,
|
|
mass_flow_rate=20_000.0,
|
|
steam_quality=0.9,
|
|
)
|
|
state = TurbineState(
|
|
steam_enthalpy=0.0,
|
|
shaft_power_mw=0.0,
|
|
electrical_output_mw=0.0,
|
|
condenser_temperature=300.0,
|
|
)
|
|
target_electric = min(
|
|
turbine.rated_output_mw, 300.0 * turbine.mechanical_efficiency * turbine.generator_efficiency
|
|
)
|
|
|
|
dt = 5.0
|
|
turbine.step(loop, state, steam_power_mw=300.0, dt=dt)
|
|
assert 0.0 < state.electrical_output_mw < target_electric
|
|
|
|
for _ in range(5):
|
|
turbine.step(loop, state, steam_power_mw=300.0, dt=dt)
|
|
|
|
assert state.electrical_output_mw == pytest.approx(target_electric, rel=0.05)
|
|
|
|
|
|
def test_turbine_produces_no_power_without_steam():
|
|
turbine = Turbine()
|
|
loop = CoolantLoopState(
|
|
temperature_in=295.0,
|
|
temperature_out=295.0,
|
|
pressure=6.0,
|
|
mass_flow_rate=20_000.0,
|
|
steam_quality=0.0,
|
|
)
|
|
state = TurbineState(
|
|
steam_enthalpy=0.0,
|
|
shaft_power_mw=0.0,
|
|
electrical_output_mw=0.0,
|
|
condenser_temperature=300.0,
|
|
)
|
|
|
|
turbine.step(loop, state, steam_power_mw=0.0, dt=1.0)
|
|
|
|
assert state.electrical_output_mw == 0.0
|
|
assert state.shaft_power_mw == 0.0
|