I have been hitting my head against the same perplexing problem for ages now and no matter what approach I adopt, I always end up with the wrong result. The problem relates to calculating curl and coordinates transformations. Okay, so here goes... it is best illustrated with an example.

Suppose that you have two coordinate systems. Let's keep it simple, so the basis vectors in the two systems are

ex = [1 0 0] ey = [0 1 0] ez = [0 0 1] (first)
Ex = [3 0 0] Ey = [0 2 0] Ez = [0 0 1] (second)

so that the transformation involves some scaling only in the x-y plane. I am aware that the second set of vectors are not "unit" vectors: they are simply basis vectors. There is no requirement that they need to be normalised. The corresponding components are then related as

X = x / 3
Y = y / 2
Z = z.

The corresponding scale factors are hx = 3, hy = 2 and hz = 1. So, for example, if a point has coordinates (6, 12, 3) in the first system then it is (2, 6, 3) in the second system. This is pretty easy to verify.

Now, suppose that you have a vector valued function defined in the first system, like

f(x, y, z) = (y, -2x, 0).

Evaluated at (x, y, z) = (6, 12, 3) gives (12, -12, 0). It is a simple matter to see that the curl of this vector field is (0, 0, -3). Now, transforming this function into the second system one gets

F(X, Y, Z) = (2/3Y, -3X, 0).

Evaluating this function at (X, Y, Z) = (2, 6, 3) gives (4, -6, 0) in the second system, which transforms to (12, -12, 0) in the first system. As required (see just above). So this all looks good.

Now to evaluate the curl, one can the general expression in terms of scale factors which is given in a number of places. One possible source is here, where it appears as equation (10). It is easy to show that both the X and Y components of curl(F) are zero. The Z component is given as

(d/dX(hy FY) - d/dY(hx FY)) / (hx hy)

where derivatives are obviously partial derivatives. Looking at each term within the brackets:

d/dX(hy FY) = d/dX(2 . -3X) = -6
d/dY(hx FX) = d/dY(3 . 2/3Y) = 2

so that the Z component of curl(F) is (-6 - 2) / (3 . 2) = -8/3. In the second coordinate system the curl is then (0, 0, -8/3). Now, transforming this back to the first system is still (0, 0, -8/3) since these axes are identical. This is close to, but different from the result (0, 0, -3) obtained directly in the first coordinate system. And I have NO idea why. It has been driving me crazy. I have found many other ways of getting the required answer but I have never been able to reconcile them with the "official" expression for the curl. I have also tried a variety of other vectors fields and, apart from trivial simple cases, end up in the same position.

Can anybody help me out of this mess?

Thanks a lot!

Best regards,
Andrew Collier.