Sync or Swing: The Phase-Lag Kuramoto Playground

N coupled rotors with inertia, each nudged by its neighbors' average phase — but with a twist: the coupling carries a built-in phase lag α. In the classic (massless) Kuramoto model, lag always hurts synchronization. Add inertia, and something strange happens.

grounded in arXiv 2606.07002 — "Phase lag enhances synchronization in coupled oscillators with inertia"
👉 Try this: leave the sliders at their defaults and just watch the ring for ~10 seconds — it never settles. Then drag α (phase lag) up toward the green tick mark (≈ 0.25 rad). With inertia in the mix, watch r climb from a restless ~0.5 up to a rock-solid ~0.96. Ordinary Kuramoto intuition says lag should make things worse. Here it's the opposite. m·θ̈ᵢ + θ̇ᵢ  =  ωᵢ  +  (K/N) Σⱼ sin(θⱼ − θᵢ − α)
order parameter r
0.000
state
—
model time
0.0s
Each dot is one oscillator, placed evenly around the ring and colored by its current phase (0 → 2π/3 → 4π/3). The whole ring flashing one color = synchronized. A rainbow scramble = incoherent. The white arrow from the center is the order-parameter vector itself: length = r, direction = mean phase. The population is split into two clusters with opposite natural frequencies (like two families of clocks running at different speeds) — the paper's inertial phase-lag effect is easiest to see when two such clusters are fighting to lock together.
Waiting for data… run the sim for a few seconds and try moving the sliders.

Controls

6.00
1.50
0.00 rad (0°)
sweet spot

Order parameter r(t)

r = |mean of eiθ| over all oscillators. r → 1 means every rotor shares the same phase (locked). r → 0 means phases are scattered uniformly (incoherent). Watch this line jump when α crosses the sweet spot.

Hysteresis sweep (nice-to-have)

Ramps K from 0 up to 9 and back down while the sim keeps running (α and m stay wherever you left them). Because these rotors carry inertia, the synchronized state can persist on the way down at K values where it never would have formed on the way up — the up-sweep (blue) and down-sweep (pink) trace different paths, a loop. Try comparing the loop at α = 0 vs. α ≈ 0.25.