Show per-pump status and per-turbine output
This commit is contained in:
@@ -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),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user