Show per-pump status and per-turbine output

This commit is contained in:
Codex Agent
2025-11-22 18:43:53 +01:00
parent 5bd9992ed0
commit f626c99f44
3 changed files with 73 additions and 6 deletions

View File

@@ -54,12 +54,21 @@ class TurbineState:
load_supplied_mw: float = 0.0
@dataclass
class PumpState:
active: bool
flow_rate: float
pressure: float
@dataclass
class PlantState:
core: CoreState
primary_loop: CoolantLoopState
secondary_loop: CoolantLoopState
turbines: list[TurbineState]
primary_pumps: list[PumpState] = field(default_factory=list)
secondary_pumps: list[PumpState] = field(default_factory=list)
time_elapsed: float = field(default=0.0)
def snapshot(self) -> dict[str, float]:
@@ -73,6 +82,8 @@ class PlantState:
"turbine_electric": self.total_electrical_output(),
"products": self.core.fission_product_inventory,
"particles": self.core.emitted_particles,
"primary_pumps": [pump.active for pump in self.primary_pumps],
"secondary_pumps": [pump.active for pump in self.secondary_pumps],
}
def total_electrical_output(self) -> float:
@@ -92,10 +103,14 @@ class PlantState:
old_turbine = data.get("turbine")
turbines_blob = [old_turbine] if old_turbine else []
turbines = [TurbineState(**t) for t in turbines_blob]
prim_pumps_blob = data.get("primary_pumps", [])
sec_pumps_blob = data.get("secondary_pumps", [])
return cls(
core=CoreState(**core_blob, fission_product_inventory=inventory, emitted_particles=particles),
primary_loop=CoolantLoopState(**data["primary_loop"]),
secondary_loop=CoolantLoopState(**data["secondary_loop"]),
turbines=turbines,
primary_pumps=[PumpState(**p) for p in prim_pumps_blob],
secondary_pumps=[PumpState(**p) for p in sec_pumps_blob],
time_elapsed=data.get("time_elapsed", 0.0),
)