A nanorobot swims where viscous drag utterly dominates inertia: the Reynolds number Re = ρUL/μ is far below 1. In this Stokes-flow limit the fluid has no memory — reversing an actuator's motion exactly reverses the flow it produces.
Purcell's scallop theorem:
any stroke that retraces its own path
(reciprocal motion) gives ZERO net
displacement per cycle at Re ≈ 0.
A single hinge flapping back and forth is exactly such a reciprocal stroke. Purcell's fix is a body with two independently driven hinges (three rigid links, shown here as tail–mid–head). Driving them out of phase traces a genuine loop — not a line — through the shape space of hinge angles (φ₁, φ₂), drawn live in the phase-portrait panel:
φ1(t) = A·sin(ωt)
φ2(t) = A·sin(ωt + Δφ)
To leading order in small stroke amplitude, the net displacement per cycle is proportional to the area enclosed by this (φ₁, φ₂) loop — the geometric-phase result for Stokesian locomotion (Shapere & Wilczek). This sim integrates that area rule live every frame:
v(t) = k · ( φ1·dφ2/dt − φ2·dφ1/dt )
x(t) = ∫ v(t) dt
- Δφ slider — at 0° or 180° the loop collapses to a line (zero area), the flag turns red and the velocity strip flattens to zero: exactly the scallop theorem.
- Amplitude A — the loop scales as A², so displacement per cycle grows quadratically with stroke size (verified numerically: net-per-cycle/A² stays constant across A).
- Frequency f — more cycles per second at the same per-cycle displacement gives proportionally higher swim speed.
- Viscosity μ — higher drag divides the propulsion constant, slowing the swimmer without changing the shape of its stroke loop (the geometry of the scallop theorem is drag-independent).
Drag the main view to pan the fluid tank; scroll/pinch to zoom. This is the same principle behind real magnetically- and chemically-actuated nanorobots and the flagella of swimming bacteria: overcoming zero-Re drag requires a non-reciprocal, multi-degree-of-freedom stroke, not a simple back-and-forth motor.