I define a 3+1-dimensional manifold M:
n = 3
M = Manifold(1+n, 'M', structure='Lorentzian')
and a chart X with spherical coordinates t, r, th and ph.
X.<t,r,th,ph> = M.chart('t r:(0,+oo) th:(0,pi) ph:(0,2*pi)')
I define the following symbolic function Ne, which depends on r and a new variable, eps:
eps = var('eps')
Ne = function('Ne')(r,eps)
Now, I define a vector field, u, as:
u = M.vector_field('u')
u[0] = 2*Ne; u[1] = Ne; u[2] = 0; u[3] = 0
At this point, I want to differentiate each term of u with respect to eps. However, when I write:
diff(u[0],eps)
I get:
ValueError: tuple.index(x): x not in tuple
However, I would expect to obtain:
2*diff(Ne(r, eps), eps)
I guess this is because I am differentiating a vector field from the manifold with respect to a variable (eps) which is not on the chart. In fact, if I differentiate with respect to $r$, then everything goes right. Is there a way I can fix this?