ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Thu, 06 Jun 2019 02:35:00 +0200Bel decompositionhttps://ask.sagemath.org/question/46576/bel-decomposition/Hi All,
Is there any way to obtain the Bel decomposition (https://en.wikipedia.org/wiki/Bel_decomposition)
into the electrogravitic, magnetogravitic and topogravitic tensors given the metric?
Thanks,
Daniel
Sat, 18 May 2019 15:14:37 +0200https://ask.sagemath.org/question/46576/bel-decomposition/Answer by my_screen_name for <p>Hi All,</p>
<p>Is there any way to obtain the Bel decomposition (<a href="https://en.wikipedia.org/wiki/Bel_decomposition">https://en.wikipedia.org/wiki/Bel_dec...</a>)
into the electrogravitic, magnetogravitic and topogravitic tensors given the metric?</p>
<p>Thanks,</p>
<p>Daniel</p>
https://ask.sagemath.org/question/46576/bel-decomposition/?answer=46611#post-id-46611The 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.)Tue, 21 May 2019 20:56:03 +0200https://ask.sagemath.org/question/46576/bel-decomposition/?answer=46611#post-id-46611Comment by my_screen_name for <p>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)</p>
<pre><code>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']
</code></pre>
<p>I have probably mangled some signs in the choice of order of raising and contracting indices on the volume form. </p>
<p>(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.)</p>
https://ask.sagemath.org/question/46576/bel-decomposition/?comment=46775#post-id-46775I 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.Mon, 03 Jun 2019 13:44:40 +0200https://ask.sagemath.org/question/46576/bel-decomposition/?comment=46775#post-id-46775Comment by danielvolinski for <p>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)</p>
<pre><code>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']
</code></pre>
<p>I have probably mangled some signs in the choice of order of raising and contracting indices on the volume form. </p>
<p>(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.)</p>
https://ask.sagemath.org/question/46576/bel-decomposition/?comment=46817#post-id-46817Thanks, I understand.Thu, 06 Jun 2019 02:35:00 +0200https://ask.sagemath.org/question/46576/bel-decomposition/?comment=46817#post-id-46817Comment by danielvolinski for <p>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)</p>
<pre><code>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']
</code></pre>
<p>I have probably mangled some signs in the choice of order of raising and contracting indices on the volume form. </p>
<p>(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.)</p>
https://ask.sagemath.org/question/46576/bel-decomposition/?comment=46628#post-id-46628Thank 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,
DanielWed, 22 May 2019 20:44:30 +0200https://ask.sagemath.org/question/46576/bel-decomposition/?comment=46628#post-id-46628