The wires are the simulation. Every frame the grid store solves a DC power flow for each energized island, and the largest online unit in the island balances whatever the other units do not cover. Line loading heats the conductor, with the thermal time constant compressed from minutes to seconds. A hotter conductor loses tension and sags deeper, following the parabolic approximation used for real spans. Sag grows with the square of span length, so a longer span hangs lower, but its tree line moves with it. Dragging stations rearranges the picture; only temperature closes the margin.
Each span has a clearance limit, drawn as the small tree below it. The pill on a wire rides its lowest point, and the dotted gap under the pill is the margin left. A conductor that reaches its tree causes a ground fault and the breaker opens at once. A line above 120% of rating for three seconds trips on its overload relay. An island that runs more than 1.4 Hz off nominal for ten seconds collapses and its units trip. Restoration closes every breaker and restarts every unit, and if the cause remains, protection acts again.
The heat wave scenario is the classic sequence. High ambient temperature and light wind leave the conductors hot, and air conditioning demand keeps climbing through the afternoon. Start the peaker, raise Riverside, or trim demand to get ahead of it, then watch the Oldtown line.
Under the hood, stations and breaker pills are two data-pool collections that mirror plain store objects each frame. The canvas underneath reads the same objects. The alarm log is an ordinary data-list, and every readout binds straight to store state.