41 lines
1.0 KiB
Python
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
|