This Jupyter/SageMath worksheet implements some computations of the article
These computations are based on SageManifolds (v0.9).
The worksheet file (ipynb format) can be downloaded from here.
First we set up the notebook to display mathematical objects using LaTeX formatting:
%display latex
Let us declare the spacetime $M$ as a 5-dimensional manifold:
M = Manifold(5, 'M')
print M
We introduce coordinates of Eddington-Finkelstein type:
X.<v,x,y1,y2,r> = M.chart('v x y1:y_1 y2:y_2 r')
X
The metric tensor:
g = M.lorentzian_metric('g')
nu = var('nu', latex_name=r'\nu', domain='real')
ff = function('f')(v, r)
g[0,0] = -exp(2*nu*r)*ff
g[0,4] = exp(nu*r)
g[1,1] = exp(2*nu*r)
g[2,2] = exp(2*r)
g[3,3] = exp(2*r)
g.display()
The non-vanishing components of $g$:
g.display_comp()
A matrix view of the components:
g[:]
The Riemann tensor is
Riem = g.riemann()
print Riem
Some component, e.g. $\mathrm{Riem}^0_{\ \, 004}$:
Riem[0,0,0,4]
The Ricci tensor:
Ric = g.ricci()
print Ric
Ric.display()
Ric.display_comp()
The Ricci scalar:
Rscal = g.ricci_scalar()
print Rscal
Rscal.display()
Let us consider a model based on the following action, involving a dilaton scalar field $\phi$ and a Maxwell 2-form $F$:
$$ S = \int \left( R(g) + \Lambda - \frac{1}{2} \nabla_m \phi \nabla^m \phi - \frac{1}{4} e^{\lambda\phi} F_{mn} F^{mn} + 8\pi \mathcal{L}_{\rm shell} \right) \sqrt{-g} \, \mathrm{d}^5 x \qquad\qquad \mbox{(1)}$$where $R(g)$ is the Ricci scalar of metric $g$, $\Lambda$ is the cosmological constant, $\lambda$ is the dilatonic coupling constant and $\mathcal{L}_{\rm shell}$ is the Lagrangian of some infalling shell of massless matter.
We consider the following ansatz for the dilaton scalar field $\phi$: $$ \phi = \frac{1}{\lambda} \left( 4 r + \ln\mu \right),$$ where $\mu$ is a constant.
var('mu', latex_name=r'\mu', domain='real')
var('lamb', latex_name=r'\lambda', domain='real')
phi = M.scalar_field({X: (4*r + ln(mu))/lamb},
name='phi', latex_name=r'\phi')
phi.display()
The 1-form $\mathrm{d}\phi$ is
dphi = phi.differential()
print dphi
dphi.display()
The components of $\mathrm{d}\phi$ is the default frame of $M$ are
dphi[:]
We consider the following ansatz for $F$: $$ F = \frac{1}{2} q \, \mathrm{d}y_1\wedge \mathrm{d}y_2, $$ where $q$ is a constant.
Let us first get the 1-forms $\mathrm{d}y_1$ and $\mathrm{d}y_2$:
X.coframe()
dy1 = X.coframe()[2]
dy2 = X.coframe()[3]
print dy1
print dy2
dy1, dy2
Then we can form $F$ according to the above ansatz:
var('q', domain='real')
F = q/2 * dy1.wedge(dy2)
F.set_name('F')
print F
F.display()
By construction, the 2-form $F$ is closed (since $q$ is constant):
xder(F).display()
Let us evaluate the square $F_{mn} F^{mn}$ of $F$:
Fu = F.up(g)
F2 = F['_{mn}']*Fu['^{mn}'] # using LaTeX notations to denote contraction
print F2
F2.display()
We shall also need the tensor $\mathcal{F}_{mn} := F_{mp} F_n^{\ \, p}$:
FF = F['_mp'] * F.up(g,1)['^p_n']
print FF
FF.display()
The tensor field $\mathcal{F}$ is symmetric:
FF == FF.symmetrize()
Therefore, from now on, we set
FF = FF.symmetrize()
Energy-momentum tensor of the infalling shell:
dv = X.coframe()[0]
T = function('T00', latex_name='T_{00}')(v,r)*dv*dv
T.set_name('T')
T.display()
Let us first introduce (minus twice) the cosmological constant:
var('Lamb', latex_name=r'\Lambda', domain='real')
From the action (1), the field equation for the metric $g$ is $$ R_{mn} + \frac{\Lambda}{3} \, g - \frac{1}{2}\partial_m\phi \partial_n\phi -\frac{1}{2} e^{\lambda\phi} F_{mp} F^{\ \, p}_n + \frac{1}{12} e^{\lambda\phi} F_{rs} F^{rs} \, g_{mn} - 8\pi T_{mn} = 0 $$ We write it as
EE == 0
with EE
defined by
EE = Ric + Lamb/3*g - 1/2* (dphi*dphi) - 1/2*exp(lamb*phi)*FF \
+ 1/12*exp(lamb*phi)*F2*g -8*pi*T
EE.set_name('E')
print EE
EE.display_comp(only_nonredundant=True)
We note that EE==0
leads to 5 independent equations:
eq1 = EE[0,0]
eq1
eq2 = EE[0,4]/exp(nu*r)
eq2
eq3 = EE[1,1]/exp(2*nu*r)
eq3
eq4 = EE[2,2]/exp(2*r)
eq4
eq5 = EE[4,4]*lamb^2/2
eq5
First we evaluate $\nabla_m \nabla^m \phi$:
nab = g.connection()
print nab
nab
box_phi = nab(nab(phi).up(g)).trace()
print box_phi
box_phi.display()
From the action (1), the field equation for $\phi$ is $$ \nabla_m \nabla^m \phi = \frac{\lambda}{4} e^{\lambda\phi} F_{mn} F^{mn}$$ We write it as
DE == 0
with DE
defined by
DE = box_phi - lamb/4*exp(lamb*phi) * F2
print DE
DE.display()
Hence the dilaton field equation provides a 6th equation:
eq6 = DE.coord_function()*8*lamb
eq6
From the action (1), the field equation for $F$ is $$ \nabla_m \left( e^{\lambda\phi} F^{mn} \right)= 0 $$ We write it as
ME == 0
with ME
defined by
ME = nab(exp(lamb*phi)*Fu).trace(0,2)
print ME
ME.display()
We get identically zero. Hence the Maxwell equation does not bring another equation to be solved.
We have 6 equations to solve:
eqs = [eq1, eq2, eq3, eq4, eq5, eq6]
for eq in eqs:
pretty_print(eq)
Let us show that solutions exists for $\nu=2$ and $\nu=4$ with the following specific form of the blackening function:
$$ f(v,r) = 1 - m(v) e^{-(2\nu +2)r} $$To this aim, we declare
fm(v,r) = 1 - function('m')(v)*exp(-(2*nu+2)*r)
fm
and substitute this function for $f(v,r)$ in all the equations:
eq1m = eq1.expr().substitute_function(f, fm).simplify_full()
eq1m
eq1m = (eq1m * exp(nu*r+2*r)).simplify_full()
eq1m
Note that in this expression $D[0](m)(v)$ stands for $\mathrm{d}m/\mathrm{d}v$.
eq2m = eq2.expr().substitute_function(f, fm).simplify_full()
eq2m
eq3m = eq3.expr().substitute_function(f, fm).simplify_full()
eq3m
eq4m = eq4.expr().substitute_function(f, fm).simplify_full()
eq4m
eq5m = eq5.expr().substitute_function(f, fm).simplify_full()
eq5m
eq6m = eq6.expr().substitute_function(f, fm).simplify_full()
eq6m
eqs = [eq1m, eq2m, eq3m, eq4m, eq5m, eq6m]
neqs = [eq.subs(nu=2).simplify_full() for eq in eqs]
[eq == 0 for eq in neqs]
Let us first search for a solution of all the equations but the first one:
eqs2 = eqs[1:] # we skip eq1m
neqs = [eq.subs(nu=2).simplify_full() for eq in eqs2]
[eq == 0 for eq in neqs]
solve([eq == 0 for eq in neqs], lamb, mu, Lamb, q)
Then, we substitute the found solution in the first equation:
eq = eq1m.subs({nu:2, Lamb:30, lamb:2, mu:48/q^2})
eq
Hence, for any choice of $m(v)$, we get a solution with $$ \Lambda=30,\quad \lambda = \pm 2, \quad\mu = \frac{48}{q^2} $$ and $$ T_{00}(\nu,r) = \frac{1}{4\pi e^{4 r}} \frac{\mathrm{d}m}{\mathrm{d}v} $$
neqs = [eq.subs(nu=4).simplify_full() for eq in eqs]
[eq == 0 for eq in neqs]
Let us first search for a solution of all the equations but the first one:
eqs2 = eqs[1:] # we skip eq1m
neqs = [eq.subs(nu=4).simplify_full() for eq in eqs2]
[eq == 0 for eq in neqs]
solve([eq == 0 for eq in neqs], lamb, mu, Lamb, q)
Then, we substitute the found solution in the first equation:
eq = eq1m.subs({nu:4, Lamb:90, lamb:2/sqrt(3), mu:240/q^2})
eq
Hence, for any choice of $m(v)$, we get a solution with $$ \Lambda=90,\quad \lambda = \pm \frac{2}{\sqrt{3}}, \quad\mu = \frac{240}{q^2} $$ and $$ T_{00}(\nu,r) = \frac{3}{8\pi e^{6 r}} \frac{\mathrm{d}m}{\mathrm{d}v} $$