Energy model — hourly simulation
7-day hourly loop (ADR-0002: Python, not OpenModelica): solar half-sine by
peak-sun-hours, battery SoC with 20 % reserve floor, drone-pack charge queue through the
4-slot rack, genset dispatch. 6 gates in
tests/energy/.Throughput & cost (identical both scenarios — throughput is drone-limited, not energy-limited)
180 ha/day
spray throughput
floor 150 · target band 150–250
72 swaps/day
battery swaps (6 drones × 12)
spec §5.1 cycle math
0.73 kWh/ha
energy per hectare
104 + 28 kWh/day
charge + aux demand
Worst month (PSH 4.6)
7.83 h/day
genset runtime
37.3 L/day
0.21 L/ha
genset fuel per hectare
bound ≤ 0.5 L/ha · PASS
cleared daily
charge queue
no overnight backlog
| day | spray h | min SoC kWh | end SoC kWh | genset h | queue end |
|---|---|---|---|---|---|
| 0 | 6 | 38.3 | 38.3 | 0.0 | 0 (cleared) |
| 1 | 6 | 21.8 | 25.6 | 7.0 | 0 (cleared) |
| 2 | 6 | 21.8 | 24.4 | 8.0 | 0 (cleared) |
| 3 | 6 | 22.2 | 24.2 | 8.0 | 0 (cleared) |
| 4 | 6 | 21.9 | 23.9 | 8.0 | 0 (cleared) |
| 5 | 6 | 21.7 | 23.7 | 8.0 | 0 (cleared) |
| 6 | 6 | 21.7 | 23.4 | 8.0 | 0 (cleared) |
Best month (PSH 6.4)
4.5 h/day
genset runtime
21.4 L/day
0.12 L/ha
genset fuel per hectare
cleared daily
charge queue
| day | spray h | min SoC kWh | end SoC kWh | genset h | queue end |
|---|---|---|---|---|---|
| 0 | 6 | 65.3 | 65.3 | 0.0 | 0 (cleared) |
| 1 | 6 | 22.7 | 22.7 | 0.0 | 0 (cleared) |
| 2 | 6 | 21.9 | 23.9 | 5.0 | 0 (cleared) |
| 3 | 6 | 21.7 | 26.6 | 6.0 | 0 (cleared) |
| 4 | 6 | 22.1 | 25.9 | 5.0 | 0 (cleared) |
| 5 | 6 | 21.9 | 23.8 | 5.0 | 0 (cleared) |
| 6 | 6 | 22.3 | 26.5 | 6.0 | 0 (cleared) |
Design finding — genset is co-primary
The original "solar primary, genset backup" framing is false on campaign
days: 18 kWp (≈ the physical area cap for roof + wings) yields ~66 kWh worst-month day vs
~132 kWh demand at 180 ha/day. The genset was resized 12→14 kW to cover the 12.2 kW peak
concurrent load, and the acceptance bound switched from runtime-hours to fuel per hectare
(≤ 0.5 L/ha; actual 0.21). Solar fully
carries standby/aux days. Recorded in ADR-0002 amendment.
source: simulation/energy/energy_report.json · parameters/energy.yaml