The flow is a Rankine combined vortex: solid-body rotation inside the core radius a, and an irrotational free vortex outside it, matched so tangential speed is continuous at r = a:
Ω = Γ / (2π a²) (core angular rate)
v_θ(r) = Ω·r for r ≤ a
v_θ(r) = Γ / (2π r) for r > a
Assuming the surface is in local cyclostrophic balance (radial pressure gradient balances centrifugal acceleration, dh/dr = v_θ²/(g·r)), integrating from the far field gives a closed-form dip that never diverges at the center — the solid-body core caps it:
dip = h(∞) − h(0) = Γ² / (4π²·g·a²)
The drain opening acts as an orifice: outflow follows Torricelli's law, Q = C_d·A_drain·√(2g·h₀), where h₀ is the surface height right at the plughole. Mass conservation through each cylindrical shell then gives the radial inflow speed, v_r(r) = −Q / (2π·r·h(r)), which combines with v_θ(r) to move every tracer particle along a real inward spiral (dr/dt = v_r, r·dθ/dt = v_θ) — not a scripted spiral path.
- Circulation Γ — total vortex strength; raising it deepens the dip quadratically and speeds up rotation everywhere.
- Core radius a — where solid-body rotation hands off to the potential-flow tail; a smaller core makes a tighter, deeper funnel for the same Γ.
- Drain radius — sets the orifice area, hence Q, hence how fast fluid is actually pulled inward (independent of the rotation itself).
- Viscous decay ν — circulation relaxes as dΓ/dt = −ν·Γ, mimicking real angular-momentum loss to viscosity; the "Stir" button re-injects it.