Show xenon/iodine inventories on dashboard
This commit is contained in:
@@ -548,15 +548,14 @@ class ReactorDashboard:
|
|||||||
inventory = state.core.fission_product_inventory or {}
|
inventory = state.core.fission_product_inventory or {}
|
||||||
particles = state.core.emitted_particles or {}
|
particles = state.core.emitted_particles or {}
|
||||||
lines: list[tuple[str, str]] = []
|
lines: list[tuple[str, str]] = []
|
||||||
def fmt(symbol: str, label: str) -> tuple[str, str]:
|
def fmt(symbol: str, label: str, qty: float) -> tuple[str, str]:
|
||||||
qty = inventory.get(symbol, 0.0)
|
|
||||||
threshold = constants.KEY_POISON_THRESHOLDS.get(symbol)
|
threshold = constants.KEY_POISON_THRESHOLDS.get(symbol)
|
||||||
flag = " !" if threshold is not None and qty >= threshold else ""
|
flag = " !" if threshold is not None and qty >= threshold else ""
|
||||||
return (f"{label}{flag}", f"{qty:9.2e}")
|
return (f"{label}{flag}", f"{qty:9.2e}")
|
||||||
|
|
||||||
lines.append(fmt("Xe", "Xe (xenon)"))
|
lines.append(fmt("Xe", "Xe (xenon)", getattr(state.core, "xenon_inventory", 0.0)))
|
||||||
lines.append(fmt("Sm", "Sm (samarium)"))
|
lines.append(fmt("Sm", "Sm (samarium)", inventory.get("Sm", 0.0)))
|
||||||
lines.append(fmt("I", "I (iodine)"))
|
lines.append(fmt("I", "I (iodine)", getattr(state.core, "iodine_inventory", 0.0)))
|
||||||
lines.append(("Neutrons (src)", f"{particles.get('n', 0.0):9.2e}"))
|
lines.append(("Neutrons (src)", f"{particles.get('n', 0.0):9.2e}"))
|
||||||
lines.append(("Gammas", f"{particles.get('gamma', 0.0):9.2e}"))
|
lines.append(("Gammas", f"{particles.get('gamma', 0.0):9.2e}"))
|
||||||
lines.append(("Alphas", f"{particles.get('alpha', 0.0):9.2e}"))
|
lines.append(("Alphas", f"{particles.get('alpha', 0.0):9.2e}"))
|
||||||
|
|||||||
@@ -23,3 +23,12 @@ def test_reactivity_increases_with_rod_withdrawal():
|
|||||||
rho_full_out = dynamics.reactivity(state, control_fraction=0.0)
|
rho_full_out = dynamics.reactivity(state, control_fraction=0.0)
|
||||||
rho_half = dynamics.reactivity(state, control_fraction=0.5)
|
rho_half = dynamics.reactivity(state, control_fraction=0.5)
|
||||||
assert rho_full_out > rho_half
|
assert rho_full_out > rho_half
|
||||||
|
|
||||||
|
|
||||||
|
def test_poisons_accumulate_under_power():
|
||||||
|
dynamics = NeutronDynamics()
|
||||||
|
state = _core_state(power=800.0, flux=1e6)
|
||||||
|
dynamics.update_poisons(state, dt=100.0)
|
||||||
|
dynamics.update_poisons(state, dt=100.0)
|
||||||
|
assert state.iodine_inventory > 0.0
|
||||||
|
assert state.xenon_inventory > 0.0
|
||||||
|
|||||||
Reference in New Issue
Block a user