A 4 hour design storm plays over a drainage network. The surface is the free surface itself: every node broadcasts ripples in proportion to its inflow, and where hydrographs overlap the waves interfere, just like influence overlaps in a real system. Above each node an egg reports its state at a glance.
Drive it: drag to orbit, wheel or pinch to zoom, right-drag to pan, click an egg for its numbers. Scrub or play the event from the bar below. Load a SWMM5 .inp and the field rebuilds on your geometry and topology with a synthetic event (the badge reads SYNTHETIC: a visual grammar demo, not a solver). Drop the matching .out with it and the badge flips to RESULTS: depth, total inflow, and flooding rate then come straight from the engine's binary output, linearly resampled between reporting steps, with rim depths and the clock taken from the file. In ICM terms, read the sheet as a 2D mesh depth surface and the eggs as manhole flood flags.
One pick or one drop carries the whole set. The .inp builds geometry and topology. Add the matching .out and the eggs ride real engine results: depth, total inflow, and flooding rate per reporting step, with the clock on the model's own calendar. The .rpt is optional and attaches its continuity errors. Without a .out, a synthetic event animates the network. You can also drop files or a whole folder anywhere on the page; folders with several .inp files queue up. Networks over 400 nodes are trimmed.