System-dynamics model · pure-Python propagation engine
One delay at one hub, and the whole day unravels. This is not a forecast — it's a mechanistic model of why delays spread: aircraft waiting on aircraft, crews timing out, gates gridlocking. Pick a shock and watch it cascade across the real European network in real time.
System-wide disruption caused by the same +90 min morning ground stop, injected at each airport in turn. Leverage is defined by the dynamics — what a delay here actually does — not by size alone.
Total system delay through the day for the selected scenario. Buffers soak up the shock and the network heals — the playhead tracks the map.
Delay does not grow in proportion to the shock. Small shocks are absorbed by schedule buffers; past a threshold the excess propagates and multiplies. Push far enough and crews hit their FAR-117 duty limit — the network stops delaying flights and starts cancelling them. That knee is the cliff.
Arrival-delay distribution across all 1220 flights in the selected scenario.
Directed routes carrying the most reactionary delay, aggregated across every hub-seeded scenario — the network's fragile arteries.
A flight leg cannot leave until every operational predecessor is satisfied — so a delay is the longest path through a dependency graph of the day's flights. Three real coupling channels create the edges; the non-linearity is inherent.
A jet flies a string of legs. The next leg can't push back until the aircraft lands and completes minimum turnaround. Late in → late out, minus any schedule buffer.
Crews fly trips that hop between aircraft at hubs, so crew delay spreads on a different graph than the metal. Exceed the FAR-117 duty limit and the crew times out — the trip cancels.
Gates are finite. An arriving aircraft can't dock until the previous occupant pushes back, so a stretched turnaround gridlocks the next flight through a shared resource.
Data & method. The network is real — 70 European airports and their real routes from the public OpenFlights dataset (coordinates, connectivity). The daily schedule is synthesized (deterministic, seeded): fleet rotations, crew pairings and gate occupancy layered on the real topology, because tail-level schedules aren't openly available. The propagation engine is pure Python — no graph libraries: a from-scratch directed graph, Kahn topological sort, and a longest-path relaxation with buffer absorption, enroute recovery, and a crew-duty cancellation fixed point.