# 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]:

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)$.