Gravity-only test-particle and ensemble dynamics in composite Milky Way potentials. Velocity units are percent of escape speed at the origin of the active model.
| Enter | Launch / recompute | Space | Pause / resume |
| 1–4 | Switch views | R | Reset camera |
| P | Pin / unpin compare run | ? | This help |
Drag a value sideways to scrub it · click to type · −/+ hold to repeat · arrows step, PageUp/Down step ×10.
Ensemble → Fountain launches a continuous-injection population: particles leave the source over an extended window instead of all at once. The transport bar then scrubs the observation time — while the source is on the plume stays sharp; after shutoff you watch it phase-mix. The rate profile (steady / decaying) and age fade reweight/restyle live, without re-integrating. Copy run link includes the fountain: opening the link re-runs it automatically and — when a t_obs was set — lands there paused. The captured repulsion field never rides a URL; links carry the coupling and tell the opener to recapture.
Model → Particle–particle repulsion captures the current population's density and rebuilds it as a repulsive mean-field component (the self-gravity ring machinery with a negative coupling): every particle repels every other through their collective smoothed density. The field is frozen at capture time — relaunch to iterate toward self-consistency. Not URL-shareable (the captured field is data, not parameters).
Drag the divider between the sidebar and the viewport to resize the sidebar; the width is remembered. Keyboard (with the divider focused): ←/→ adjust, Home/End jump to min/max, Enter or double-click resets.
Periods are labeled by how they were measured ("<1 oscillation" when unmeasured, "irregular" when interval scatter exceeds 25%). Truncated integrations carry a badge. Ensemble occupancy fractions divide by total integrated time. Fountain snapshots are quadratures over a uniform age resample (the Δ shown in panel subtitles), not raw integrator steps. Exports embed full provenance.