Definition (Circulation)
For incompressible fluids, we can define the circulation of the fluid. Imagine drawing a closed loop C 0 in the fluid and connecting a specific set of fluid particles. As the fluid flows, those specific particles move and deform into a new loop, denoted by C t = ϕ t ( C 0 ) where ϕ t is the flow map (ϕ t ˙ = u t ∘ ϕ t ).
The circulation of the velocity along the curve is the line integral of the velocity field u t around that moving loop:
Γ C t := ∮ C t u t ⋅ d ℓ = ∮ C t u t ♭
where ♭ is the metric dual operator that creates the covector from the original vector field.
"\\usepackage{tikz}\n\n\\begin{document}\n\\begin{tikzpicture}\n\n% --- Color Theme (Tweak RGB values here) ---\n% Surface Gradient (Dark Slate)\n\\definecolor{surfTop}{RGB}{70, 80, 95}\n\\definecolor{surfMid}{RGB}{35, 45, 55}\n\\definecolor{surfBot}{RGB}{15, 20, 30}\n\n% Vector Flow Lines (Neon Cyan)\n\\definecolor{flowColor}{RGB}{0, 255, 255}\n\n% Foreground Loops (Vibrant Orange)\n\\definecolor{loopFront}{RGB}{255, 140, 0}\n% Background Loops (Darker Orange for depth)\n\\definecolor{loopBack}{RGB}{150, 70, 0}\n\n% Text Labels\n\\definecolor{textColor}{RGB}{240, 240, 240}\n\n\n% --- Surface (Manifold) ---\n\\draw[thick, draw=surfTop, top color=surfTop, bottom color=surfBot, middle color=surfMid]\n plot [smooth cycle, tension=0.75] coordinates {\n (-4.5, 0)\n (-3.5, 2.5)\n (0, 1.8)\n (3.5, 2.5)\n (4.5, 0)\n (3.5, -2.5)\n (0, -1.8)\n (-3.5, -2.5)\n };\n\n% --- Background Loops (Right Arcs) ---\n% Loop C (left)\n\\begin{scope}[shift={(-2, 0.2)}, rotate=-10]\n \\draw[thick, loopBack] (0, -1.5) arc (-90:90:0.5 and 1.5);\n \\draw[thick, loopBack, ->] (0, -1.5) arc (-90:0:0.5 and 1.5); \n\\end{scope}\n\n% Loop Ct (right)\n\\begin{scope}[shift={(2, -0.1)}, rotate=-10]\n \\draw[thick, loopBack] (0, -2) arc (-90:90:0.7 and 2);\n \\draw[thick, loopBack, ->] (0, -2) arc (-90:20:0.7 and 2); \n\\end{scope}\n\n% --- Vector Field Flow Lines ---\n% Line 1 (Top)\n\\draw[thick, flowColor, ->] (-3.2, 1.2) to[out=-15, in=185] (-0.2, 0.9);\n\\draw[thick, flowColor, ->] (-0.2, 0.9) to[out=5, in=195] (2.4, 1.3);\n\n% Line 2 (Mid-Top)\n\\draw[thick, flowColor, ->] (-3.0, 0.5) to[out=-10, in=180] (-0.2, 0.3);\n\\draw[thick, flowColor, ->] (-0.2, 0.3) to[out=0, in=190] (2.5, 0.5);\n\n% Line 3 (Mid-Bottom)\n\\draw[thick, flowColor, ->] (-3.0, -0.2) to[out=-20, in=170] (-0.2, -0.5);\n\\draw[thick, flowColor, ->] (-0.2, -0.5) to[out=-10, in=160] (2.6, -0.8);\n\n% Line 4 (Bottom)\n\\draw[thick, flowColor, ->] (-3.2, -0.8) to[out=-10, in=175] (-0.2, -0.9);\n\\draw[thick, flowColor, ->] (-0.2, -0.9) to[out=-5, in=155] (2.3, -1.5);\n\n% --- Foreground Loops (Left Arcs) ---\n% Loop C (left)\n\\begin{scope}[shift={(-2, 0.2)}, rotate=-10]\n \\draw[thick, loopFront] (0, 1.5) arc (90:270:0.5 and 1.5);\n \\draw[thick, loopFront, ->] (0, 1.5) arc (90:160:0.5 and 1.5); \n\\end{scope}\n\\node[font=\\large, text=textColor] at (-2.3, -1.6) {$C$};\n\n% Loop Ct (right)\n\\begin{scope}[shift={(2, -0.1)}, rotate=-10]\n \\draw[thick, loopFront] (0, 2) arc (90:270:0.7 and 2);\n \\draw[thick, loopFront, ->] (0, 2) arc (90:160:0.7 and 2); \n\\end{scope}\n\\node[font=\\large, text=textColor] at (2.7, -1.5) {$C_t$};\n\n\\end{tikzpicture}\n\\end{document}" C C t source code
Theorem (Kelvin’s Circulation Theorem)
Suppose the flow velocity u t satisfies the Euler equation :
∂ t ∂ u t + ∇ u t u t = − ∇ p t
Kelvin’s Circulation theorem states that if you follow a closed loop of fluid particles as they flow, the circulation around that specific loop will remain perfectly constant over time. That is,
∂ t ∂ Γ C t = d t d ∮ C t u t ⋅ d ℓ = 0
We can further abstract this. By converting the velocity vector field into a covector field via u ⋅ d l = u ♭ , we can take the pullback on the domain and get:
d t d ∮ C t u ⋅ d l = d t d ∮ C t u ♭ = d t d ∮ C 0 ( ϕ t ∗ u ♭ ) = ∮ C 0 d t d ( ϕ t ∗ u ♭ ) = 0
for all closed curves C 0 .
Proof :
We compute the integrand.
d t d ( ϕ t ∗ u ♭ ) = d t d [ ( d ϕ ) ⊤ u ] = d ( u ∘ ϕ ) ( d ϕ ˙ ) u + ( d ϕ ) ⊤ u ˙ = [ ( ∇ u ) d ϕ ] ⊤ u − ( d ϕ ) ⊤ ( ∇ u u + ∇ p ) = ( d ϕ ) ⊤ [ ( ∇ u ) ⊤ u − ∇ u u + ∇ p ]
via
product rule
substitution with the flow map and the Euler Equation .
factorization and simplification
Then, let
− ∇ p ~ = ( ∇ u ) ⊤ u − ∇ u u − ∇ p
be a new spatial gradient to absorb those inner terms. Thus,
d t d ( ϕ t ∗ u ♭ ) = ( d ϕ ) ⊤ [ − ∇ p ~ ] = − ϕ t ∗ ( d p ~ )
Therefore
d t d ∮ C t u ⋅ d l = ∮ C 0 d t d ( ϕ t ∗ u ♭ ) = ∮ C 0 − ϕ t ∗ ( d p ~ ) = ∮ C t d p ~ = 0
where the last line is via Stokes Theorem , since the curl of a gradient field is 0 .