Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Differentiate vector field w.r.t a variable not defining the manifold

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?

Differentiate vector field w.r.t a variable not defining the manifold

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?