Black branes in Lifshitz-like spacetimes

This SageMath notebook implements some computations of the article

These computations are making use of differential geometry tools developed through the SageManifolds project.

NB: a version of SageMath at least equal to 8.2 is required to run this notebook:

In [1]:
version()
Out[1]:
'SageMath version 9.0.beta6, Release Date: 2019-11-18'

First we set up the notebook to display mathematical objects using LaTeX formatting:

In [2]:
%display latex

Five-dimensional Lifshitz-like spacetime

Let us declare the spacetime $M$ as a 5-dimensional manifold:

In [3]:
M = Manifold(5, 'M', structure='Lorentzian')
print(M)
5-dimensional Lorentzian manifold M

We introduce a first coordinate system on $M$:

In [4]:
X.<t,x,y1,y2,r> = M.chart('t x y1:y_1 y2:y_2 r')
X
Out[4]:
In [5]:
g = M.metric()
ff = function('f')(r)
var('nu', latex_name=r'\nu', domain='real')
g[0,0] = -ff*exp(2*nu*r)
g[1,1] = exp(2*nu*r)
g[2,2] = exp(2*r)
g[3,3] = exp(2*r)
g[4,4] = 1/ff
g.display()
Out[5]:

A matrix view of the metric components:

In [6]:
g[:]
Out[6]:

A view component by component (by default, only the nonzero ones are displayed):

In [7]:
g.display_comp()
Out[7]:

Access to a particular component:

In [8]:
g[0,0]
Out[8]:

If $f(r)=1$, this metric is invariant under the Lifshitz scaling $$ (t,x,y_1,y_2,e^r) \longmapsto \left(\lambda^\nu t, \lambda^\nu x, \lambda y_1, \lambda y_2, \frac{e^r}{\lambda} \right)$$

  • If $\nu=1$ the scaling is isotropic and we recognize the metric of $\mathrm{AdS}_5$ in PoincarĂ© coordinates ($M$ is then the PoincarĂ© patch of $\mathrm{AdS}_5$)
  • If $\nu\not=1$, the scaling is anisotropic

Curvature

The Riemann tensor is

In [9]:
Riem = g.riemann()
print(Riem)
Tensor field Riem(g) of type (1,3) on the 5-dimensional Lorentzian manifold M
In [10]:
Riem.display_comp(only_nonredundant=True)
Out[10]:

The Ricci tensor:

In [11]:
Ric = g.ricci()
print(Ric)
Field of symmetric bilinear forms Ric(g) on the 5-dimensional Lorentzian manifold M
In [12]:
Ric.display()
Out[12]:
In [13]:
Ric.display_comp()
Out[13]:

The Ricci scalar:

In [14]:
Rscal = g.ricci_scalar()
print(Rscal)
Scalar field r(g) on the 5-dimensional Lorentzian manifold M
In [15]:
Rscal.display()
Out[15]:

Source model

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) - 2 \Lambda - \frac{1}{2} \nabla_m \phi \nabla^m \phi - \frac{1}{4} e^{\lambda\phi} F_{mn} F^{mn} \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 and $\lambda$ is the dilatonic coupling constant.

The dilaton scalar field

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.

In [16]:
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()
Out[16]:

The 1-form $\mathrm{d}\phi$ is

In [17]:
dphi = phi.differential()
print(dphi)
1-form dphi on the 5-dimensional Lorentzian manifold M
In [18]:
dphi.display()
Out[18]:
In [19]:
dphi[:]  # all the components in the default frame
Out[19]:

The 2-form field

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$:

In [20]:
X.coframe()
Out[20]:
In [21]:
dy1 = X.coframe()[2]
dy2 = X.coframe()[3]
print(dy1)
print(dy2)
dy1, dy2
1-form dy1 on the 5-dimensional Lorentzian manifold M
1-form dy2 on the 5-dimensional Lorentzian manifold M
Out[21]:

Then we can form $F$ according to the above ansatz:

In [22]:
var('q', domain='real')
F = q/2 * dy1.wedge(dy2)
F.set_name('F')
print(F)
F.display()
2-form F on the 5-dimensional Lorentzian manifold M
Out[22]:

By construction, the 2-form $F$ is closed (since $q$ is constant):

In [23]:
print(F.exterior_derivative())
3-form dF on the 5-dimensional Lorentzian manifold M
In [24]:
F.exterior_derivative().display()
Out[24]:

Let us evaluate the square $F_{mn} F^{mn}$ of $F$:

In [25]:
Fu = F.up(g)
print(Fu)
Fu.display()
Tensor field of type (2,0) on the 5-dimensional Lorentzian manifold M
Out[25]:
In [26]:
F2 = F['_{mn}']*Fu['^{mn}']  # using LaTeX notations to denote contraction
print(F2)
F2.display()
Scalar field on the 5-dimensional Lorentzian manifold M
Out[26]:

We shall also need the tensor $\mathcal{F}_{mn} := F_{mp} F_n^{\ \, p}$:

In [27]:
FF = F['_mp'] * F.up(g,1)['^p_n']
print(FF)
FF.display()
Tensor field of type (0,2) on the 5-dimensional Lorentzian manifold M
Out[27]:

The tensor field $\mathcal{F}$ is symmetric:

In [28]:
FF == FF.symmetrize()
Out[28]:

Therefore, from now on, we set

In [29]:
FF = FF.symmetrize()

Einstein equation

Let us first introduce the cosmological constant:

In [30]:
var('Lamb', latex_name=r'\Lambda', domain='real')
Out[30]:

From the action (1), the field equation for the metric $g$ is $$ R_{mn} - \frac{2}{3}\Lambda \, 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} = 0 $$ We write it as

EE == 0

with EE defined by

In [31]:
EE = Ric - 2*Lamb/3*g - 1/2* (dphi*dphi) -  1/2*exp(lamb*phi)*FF \
     + 1/12*exp(lamb*phi)*F2*g
EE.set_name('E')
print(EE)
Field of symmetric bilinear forms E on the 5-dimensional Lorentzian manifold M
In [32]:
EE.display_comp(only_nonredundant=True)
Out[32]:

We note that EE==0 leads to only 4 independent equations because

In [33]:
EE[2,2] == EE[3,3]
Out[33]:

The 4 independent equations are chosen to be

In [34]:
eq0 = EE[0,0]/exp(2*nu*r)
eq0
Out[34]:
In [35]:
eq1 = EE[1,1]/exp(2*nu*r)
eq1
Out[35]:
In [36]:
eq2 = EE[2,2]/exp(2*r)
eq2
Out[36]:
In [37]:
eq3 = EE[4,4]*lamb^2*f(r)
eq3
Out[37]:

Dilaton field equation

First we evaluate $\nabla_m \nabla^m \phi$:

In [38]:
box_phi = phi.dalembertian()
print(box_phi)
box_phi.display()
Scalar field Box(phi) on the 5-dimensional Lorentzian manifold M
Out[38]:

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

In [39]:
DE = box_phi - lamb/4*exp(lamb*phi) * F2
print(DE)
Scalar field on the 5-dimensional Lorentzian manifold M
In [40]:
DE.display()
Out[40]:

Hence the dilaton field equation provides a fith equation:

In [41]:
eq4 = DE.coord_function()*lamb
eq4
Out[41]:

Maxwell equation

From the action (1), the field equation for $F$ is $$ \nabla_m \left( e^{\lambda\phi} F^{mn} \right)= 0 $$ To form it, we need the Levi-Civita connection $\nabla$ associated to $g$:

In [42]:
nabla = g.connection()
print(nabla)
nabla
Levi-Civita connection nabla_g associated with the Lorentzian metric g on the 5-dimensional Lorentzian manifold M
Out[42]:

We write then the field equation for $F$ as

ME == 0

with ME defined by

In [43]:
ME = nabla(exp(lamb*phi)*Fu).trace(0,2)
print(ME)
ME.display()
Vector field on the 5-dimensional Lorentzian manifold M
Out[43]:

We get identically zero.

The solution

The Einstein equation + the dilaton field equation yields a system of 5 equations (eq0, eq1, eq2, eq3, eq4).

Let us show that a solution is obtained for $\nu=2$ and $\nu=4$ with the following specific form of the blackening function:

$$ f(r) = 1 - m e^{-(2\nu +2)r}, $$

where $m$ is a constant.

To this aim, we declare

In [44]:
var('m', domain='real')
fm(r) = 1 - m*exp(-(2*nu+2)*r)
fm
Out[44]:

and substitute this function for $f(r)$ in all the equations:

In [45]:
eq0m = eq0.expr().substitute_function(f, fm).simplify_full()
eq0m
Out[45]:
In [46]:
eq0m = (eq0m * exp(2*nu*r+2*r)).simplify_full()
eq0m
Out[46]:
In [47]:
eq1m = eq1.expr().substitute_function(f, fm).simplify_full()
eq1m
Out[47]:
In [48]:
eq2m = eq2.expr().substitute_function(f, fm).simplify_full()
eq2m
Out[48]:
In [49]:
eq3m = eq3.expr().substitute_function(f, fm).simplify_full()
eq3m
Out[49]:
In [50]:
eq3m = (eq3m * exp(2*nu*r+2*r)).simplify_full()
eq3m
Out[50]:
In [51]:
eq4m = eq4.expr().substitute_function(f, fm).simplify_full()
eq4m
Out[51]:
In [52]:
eqs = [eq0m, eq1m, eq2m, eq3m, eq4m]

Solution for $\nu = 2$

In [53]:
neqs = [eq.subs(nu=2).simplify_full() for eq in eqs]
[eq == 0 for eq in neqs]
Out[53]:
In [54]:
solve([eq == 0 for eq in neqs], lamb, mu, Lamb)
Out[54]:

Hence there are two families of solutions, each family being parametrized by e.g. $(q, m)$.

Solution for $\nu=4$

In [55]:
neqs = [eq.subs(nu=4).simplify_full() for eq in eqs]
[eq == 0 for eq in neqs]
Out[55]:
In [56]:
solve([eq == 0 for eq in neqs], lamb, mu, Lamb)
Out[56]:

Again we get two families of solutions, each of them being parametrized by $(q, m)$.