Curl

Multivariable Calculus, Math 211, Carleton College, Fall 2023, Joshua R. Davis, jdavis@carleton.edu

Basic curl examples

vecF = {-y, x};
VectorPlot[vecF, {x, -Pi, Pi}, {y, -Pi, Pi}]
vecF = Join[vecF, {0}]
VectorPlot3D[vecF, {x, -Pi, Pi}, {y, -Pi, Pi}, {z, -Pi, Pi}]
curlVecF = Curl[vecF, {x, y, z}]

vecF = {Sin[y], Cos[y]};
VectorPlot[vecF, {x, -Pi, Pi}, {y, -Pi, Pi}]
vecF = Join[vecF, {0}]
VectorPlot3D[vecF, {x, -Pi, Pi}, {y, -Pi, Pi}, {z, -Pi, Pi}]
curlVecF = Curl[vecF, {x, y, z}]

Harder curl examples

This example should look familiar.

vecF = {-y / (x^2 + y^2), x / (x^2 + y^2)};
VectorPlot[vecF, {x, -Pi, Pi}, {y, -Pi, Pi}]
vecF = Join[vecF, {0}]
VectorPlot3D[vecF, {x, -Pi, Pi}, {y, -Pi, Pi}, {z, -Pi, Pi}]
curlVecF = Simplify[Curl[vecF, {x, y, z}]]

Here’s a geologically inspired example that we’ve seen repeatedly. It describes the velocity field inside a shear zone. Somewhat surprisingly, the curl is constant. That’s a special feature of this shear zone velocity model.

l11 = 2;
l12 = 3;
l21 = 0;
l = {{l11, l12}, {l21, -l11}};
eig = Eigensystem[l];
If[eig[[1, 1]] < eig[[1, 2]],
	u = eig[[2, 1]],
	u = eig[[2, 2]]];
u = l.{u[[1]] / u[[2]], 1};
vecF = l.{x, y};
VectorPlot[vecF, {x, -2, 2}, {y, -2, 2}]
curlVecF = Curl[{vecF[[1]], vecF[[2]], 0}, {x, y, z}]
VectorPlot3D[curlVecF, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]

Here’s the predator-prey example that we’ve seen repeatedly.

a = 1.5;
b = 1.0;
c = 3.0;
d = 1.0;
vecF = {a x - b x y, d x y - c y}
VectorPlot[vecF, {x, 0, 10}, {y,0, 10}, VectorPoints->20]
curlVecF = Curl[{vecF[[1]], vecF[[2]], 0}, {x, y, z}]

A genuinely 3D example

This next example is the first time that we’re looking at the curl of a truly 3D vector field (rather than a 2D field that we promoted to 3D). It’s really hard to understand, and the curl is a complicated expression in x, y, z.

vecF = {x^2 y, x Sin[z], y z};
VectorPlot3D[vecF, {x, -Pi, Pi}, {y, -Pi, Pi}, {z, -Pi, Pi}]
curlVecF = Simplify[Curl[vecF, {x, y, z}]]

To make some sense of that example, let’s pick a specific point --- say, (1, 1, 1). Here’s the curl and an equation for the plane through that point perpendicular to the curl.

n = curlVecF /. {x -> 1, y -> 1, z -> 1}
N[n]
Simplify[n.{x, y, z} == n.{1, 1, 1}]

If we rewrite that plane in the form z = a x + b, restrict the vector field to that plane, and view the restricted vector field from above as a 2D vector field, then this is what we get.

a = (1 - Cos[1]) / (1 - Sin[1]);
b = (Cos[1] - Sin[1]) / (1 - Sin[1]);
vecG = Simplify[vecF /. {z -> a x + b}]
VectorPlot[vecG[[1;;2]], {x, -Pi, Pi}, {y, -Pi, Pi}]

It’s hard to see, but here’s what’s happening. Curl measures vorticity or rotation of a vector field. Of all possible planes through (1, 1, 1), the one that exhibits the greatest vorticity is the one perpendicular to the curl vector. The fact that the curl vector points down-ish corresponds to the fact that the flow is clockwise at (1, 1) in this picture.

Divergence of curl

Here is a “random” three-dimensional vector field. We compute its curl and then the divergence of that curl. We get 0.

Clear[x, y, z];
vecF = {x^2 y, x Sin[z], y z};
curlVecF = Curl[vecF, {x, y, z}]
Simplify[Div[curlVecF, {x, y, z}]]

It’s no accident that the divergence of the curl was 0. Go ahead and alter the definition of the vector field. As long as you restrict yourself to decently nice functions, you should get 0 every time. If G is a curl, then div G = 0.

It is natural to ask whether the converse is true: If div G = 0, then is there an F such that G = curl F? The answer depends on whether there are holes in the domain of G. Here’s the crucial example. It is a scalar multiple of the Newtonian gravitational force field.

vecF = {x, y, z} / (x^2 + y^2 + z^2)^(3 / 2)
Simplify[Div[vecF, {x, y, z}]]
VectorPlot3D[vecF, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]

However, one can prove that there is no F, whose curl is this G.

Curl of gradient

Here is another “random” three-dimensional scalar field. We compute its gradient and then the curl of that gradient. We get 0.

Clear[x, y, z];
f = x^2 y + Cos[2 y^3 z];
vecF = Grad[f, {x, y, z}]
Simplify[Curl[vecF, {x, y, z}]]

It’s no accident that the curl of the gradient was 0. Go ahead and alter the definition of the scalar field. As long as you restrict yourself to decently nice functions, you should get 0 every time. If F is a gradient, then curl F = 0.

It is natural to ask whether the converse is true: If curl F = 0, then is there an f such that F = grad f? The answer depends on whether there are holes in the domain of F.

Here’s the crucial example. We build it by extruding a certain two-dimensional vector field, that we have studied in our homework, into the third dimension. Its curl is 0.

vecF = {-y / (x^2 + y^2), x / (x^2 + y^2), 0};
Simplify[Curl[vecF, {x, y, z}]]
VectorPlot3D[vecF, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]

However, one can prove that there is no potential function for this f. (Here’s how. Show that if the three-dimensional vector field had a potential function, then the two-dimensional version would necessarily have a potential function too --- contrary to what we proved in our homework.)