Show generator battery output and slow idle drain

This commit is contained in:
Codex Agent
2025-11-22 23:23:06 +01:00
parent 5d62ea29b6
commit 92857a27a0
2 changed files with 6 additions and 3 deletions

View File

@@ -18,6 +18,7 @@ class GeneratorState:
power_output_mw: float
battery_charge: float
status: str = "OFF"
battery_output_mw: float = 0.0
@dataclass
@@ -48,9 +49,11 @@ class DieselGenerator:
def step(self, state: GeneratorState, load_demand_mw: float, dt: float) -> float:
"""Advance generator dynamics and return delivered power."""
state.battery_output_mw = 0.0
if state.starting:
state.spool_remaining = max(0.0, state.spool_remaining - dt)
state.power_output_mw = self.rated_output_mw * (1.0 - state.spool_remaining / max(self.spool_time, 1e-6))
state.battery_output_mw = min(0.5, load_demand_mw)
if state.spool_remaining <= 0.0:
state.starting = False
state.running = True
@@ -67,8 +70,8 @@ class DieselGenerator:
if state.running:
state.battery_charge = min(1.0, state.battery_charge + 0.02 * dt)
elif state.starting:
state.battery_charge = max(0.0, state.battery_charge - 0.01 * dt)
state.battery_charge = max(0.0, state.battery_charge - 0.003 * dt)
else:
state.battery_charge = max(0.0, state.battery_charge - 0.001 * dt)
state.battery_charge = max(0.0, state.battery_charge - 0.00005 * dt)
return state.power_output_mw