Bel decomposition

Hi All,

Is there any way to obtain the Bel decomposition (https://en.wikipedia.org/wiki/Bel_dec...) into the electrogravitic, magnetogravitic and topogravitic tensors given the metric?

Thanks,

Daniel

edit retag close merge delete

Sort by » oldest newest most voted

The Bel decomposition does not appear in the sagemanifolds reference document, so I assume it is a default command. Nonetheless, it is fairly easy to implement. Assuming that one already has a metric g and a 1-form e0 (perhaps from the 0th element of the coordinate coframe)

theVolumeForm = g.volume_form()
theStarForTwoForms = theVolumeForm.up(g,0).up(g,1)

theRiemann = g.riemann()
theRiemannAllDown = theRiemann.down(g,0)
theStarRiemann = theStarForTwoForms['^{ef}_{ab}']*theRiemannAllDown['_{efcd}']
theStarRiemannStar = theStarForTwoForms['^{ef}_{cd}']*theStarRiemann['_{abef}']

theElectrograviticTensor = (theRiemannAllDown['_{abcd}']*(e0.up(g))['^d'])['_{abc}']*(e0.up(g))['^b']
theMagnetograviticTensor = (theStarRiemann['_{abcd}']*(e0.up(g))['^d'])['_{abc}']*(e0.up(g))['^b']
theTopograviticTensor = (theStarRiemannStar['_{abcd}']*(e0.up(g))['^d'])['_{abc}']*(e0.up(g))['^b']


I have probably mangled some signs in the choice of order of raising and contracting indices on the volume form.

(Some tricks to be aware of: When using up and down, since sagemanifolds stores all contravariant indices first, for a fully contravariant tensor, raising index 1 and then lowering index 1 gives an error since the raised index is automatically moved to index 0. The * operation on tensor only works on a pair of tensors. The latex notation for indices (e.g. ['^{ab}']) can be used to take products and contract tensors, but the latex indexing is lost once the * operation is complete. Thus for a product of three indices, one needs to open a parenthesis, apply the indices to get the correct contraction and product for the first two tensors, close the parenthesis, apply a new set of indices, and then multiply by the third tensor.)

more

Thank you very much!

I've put BEFORE you code the following (Schwarzschild metric):

M = Manifold(4, 'M')
print M

X.<t,r,th,ph> = M.chart(r't r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):\varphi')
X

var('m', domain='real')
assume(m>=0)

g = M.lorentzian_metric('g')
g[0,0] = (2*m-r)/r
g[1,1] = r/(r-2*m)
g[2,2] = r^2
g[3,3] = (r*sin(th))^2
g.display()


I do not understand what is e0 in you code, so I do not know how to proceed.

Thanks,

Daniel

( 2019-05-22 20:44:30 +0200 )edit

I think what you want is

e0 = M.one_form()
e0[0] = sqrt(1-2*m/r)


This gives a unit timelike one-form. Of course, relativity being relativity, there are infinitely many other choices of unit timelike vector. This becomes a more serious issue when working in Kerr.

( 2019-06-03 13:44:40 +0200 )edit

Thanks, I understand.

( 2019-06-06 02:35:00 +0200 )edit