Extrinsic curvature of Riemannian submanifold: no basis found for computing the components

I'm trying to compute the extrinsic curvature of a constant r slice of the following manifold:

M = Manifold(3, 'M', structure='Lorentzian')
X.<r,xplus,xminus> = M.chart('r:(0,+oo):r xplus:(-oo,+oo):x_+ xminus:(-oo,+oo):x_-')
g = M.riemannian_metric('g')

function('Lplus',latex_name='L_+',)(xplus)
function('Lminus',latex_name='L_-')(xminus)
var('l',domain='real')

g[0,0] = l^2/r^2
g[1,1] = l^2*Lplus(xplus)
g[2,2] = l^2*Lminus(xminus)
g[1,2] = 1/2*(-r^2-l^4*Lplus(xplus)*Lminus(xminus)/r^2)


I'm defining the submanifold using the following commands:

N = Manifold(2, 'N', ambient=M, structure='Lorentzian', start_index=1)
Y.<Xplus,Xminus> = N.chart('Xplus:(-oo,+oo):X_+ Xminus:(-oo,+oo):X_-')
var('r0',domain='real')
assume(r0>0)
phi = N.diff_map(M, {(Y,X): [r0,Xplus,Xminus]})
phi_inv = M.diff_map(N, {(X,Y): [xplus,xminus]})
phi_inv_t = M.scalar_field({X: r})
N.set_embedding(phi, inverse=phi_inv, var=r0, t_inverse = {r0: phi_inv_t})


But when computing the extrinsic curvature, I get an error:

N.extrinsic_curvature()

ValueError: no basis could be found for computing the components in the Coordinate frame (M, (d/dr,d/dxplus,d/dxminus))


Computing the normal vector leads to a similar error:

N.normal()
ValueError: no common basis for the contraction


What am I doing wrong? The examples at (https:// doc.sagemath.org/html/en/reference/manifolds/sage/manifolds/differentiable/pseudo_riemannian_submanifold.html) work fine for me.

edit retag close merge delete

Sort by » oldest newest most voted

Replace g = M.riemannian_metric('g') by

g = M.metric()


and , after N.set_embedding(...), add

N.adapted_chart()


Then everything works fine.

more

That solved it. Thanks!

( 2020-10-27 18:32:46 +0200 )edit

@Marius Gerbershagen -- you can accept the answer to mark the question as solved. Click the tick mark at the top left of the answer, below the answer's score and the "upvote" and "downvote" buttons.

( 2021-01-27 13:38:55 +0200 )edit