# Curl in 2D Manifolds I'm using SageMath 8.2 on a Windows 10 Native with Jupyter Notebook.

I noticed curl is not defined in a 2D manifold, why is that?

E = Manifold(2, 'E', structure='Riemannian')
cartesian.<x,y> = E.chart()
E.metric()[:] = identity_matrix(2)

v = E.vector_field(name='v')
v[:] = [-x, y^2]
cv = v.curl()
cv.display()


ValueError: the curl is not defined in dimension lower than 3

edit retag close merge delete

Sort by » oldest newest most voted

I am not sure the curl of a vector field is well defined on a 2-dimensional manifold. The reference you mention actually deals with vector fields in $\mathbb{R}^3$. In dimension 2, one could define the curl by taking the Hodge dual of the exterior derivative of the 1-form that is associated to the vector field by metric, i.e. define $\mathrm{curl}\ v = *(\mathrm{d}v^\flat)$; this would lead a scalar field (not a vector field!) and I don't know if this is very useful.

If you really need it, you can define a Python function like this:

def curl(v):
if dim(v.domain()) == 2:
g = v.domain().metric()
return v.down(g).exterior_derivative().hodge_dual(g)
else:
return v.curl()


Then

v = E.vector_field(name='v')
v[:] = [-x, y^2]
cv = curl(v)
print(cv)
cv.expr()


yields

Scalar field on the 2-dimensional Riemannian manifold E
0


A nonzero curl is obtained as follows:

v[:] = -y , x
curl(v).expr()


It results in

2

more