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
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
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.)
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
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.
Asked: 2019-05-18 15:14:37 +0100
Seen: 1,170 times
Last updated: May 21 '19
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.