This 2D model integrates the flagellar motor's own equation of motion frame by frame — it does not just look up a steady-state answer. The rotor has an effective inertia/damping timescale I, and every animation frame advances
I · dω/dt = T(ω) − τ_load(ω)
T(ω) = τ₀ , ω ≤ ω_knee (flat, proton-flux-limited torque)
T(ω) = τ₀ · (ω_max − ω) / (ω_max − ω_knee) , ω_knee < ω < ω_max
T(ω) = 0 , ω ≥ ω_max
τ₀ ∝ N_stators · pmfEngageFrac (stall torque: more engaged stators, more proton flux)
ω_max, ω_knee ∝ PMF (both speed limits scale with the driving proton flux)
τ_load(ω) = γ·ω (viscous drag — the real flagellar bundle)
τ_load(ω) = constant (fixed bead-assay load, independent of speed)
using a 4th-order Runge–Kutta step each frame, so you can watch the rotor visibly spin up from rest toward wherever its torque curve crosses the load line — that crossing, T(ωss) = τ_load(ωss), is the motor's steady-state operating point, and it's marked live on the torque-speed plot below the stage. This matches the qualitative torque-speed behaviour reported for tethered-cell and bead-assay measurements (Berry & Berg 1997; Chen & Berg 2000; Yuan & Berg 2008) — the constants are illustrative/order-of-magnitude, and the inertia is deliberately exaggerated so the spin-up transient (really microseconds in a live cell) stays watchable.
- Stator units — up to 11 MotA/MotB complexes can dock around the rotor; each adds roughly equal stall torque, so τ₀ scales with how many are engaged.
- PMF — the proton-motive force powering flux through each stator; both the stall torque and the top speed scale with it.
- Load model — toggle between a viscous drag proportional to speed (the real filament bundle dragging through fluid) and a fixed bead-assay load (a tethered load of constant resisting torque, independent of how fast the rotor turns) — the two pull the operating point to very different places on the curve.
- Switch — a CheY-P pulse flips the rotor from CCW running to CW tumbling and back, exactly as in the 3D model.