Files
Reactor-Sim/tests/test_control.py
2025-11-23 23:12:13 +01:00

41 lines
1.0 KiB
Python

import pytest
from reactor_sim.control import ControlSystem
from reactor_sim import constants
from reactor_sim.state import CoreState
def _core_state() -> CoreState:
return CoreState(
fuel_temperature=300.0,
neutron_flux=1e5,
reactivity_margin=0.0,
power_output_mw=0.0,
burnup=0.0,
)
def test_manual_rods_quantized_to_step():
control = ControlSystem()
control.manual_control = True
core = _core_state()
control.set_rods(0.333)
assert control.rod_target == 0.325
control.update_rods(core, dt=100.0)
assert control.rod_fraction == pytest.approx(0.325, rel=1e-6)
control.increment_rods(0.014)
assert control.rod_target == pytest.approx(0.35)
control.update_rods(core, dt=100.0)
assert control.rod_fraction == pytest.approx(0.35, rel=1e-6)
# Clamp upper bound
control.set_rods(1.0)
control.update_rods(core, dt=100.0)
assert control.rod_fraction == 0.95
def test_dashboard_step_constant_exposed():
assert constants.ROD_MANUAL_STEP == 0.025