{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 5-dimensional Lifshitz spacetimes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This worksheet illustrates some features of [SageManifolds](http://sagemanifolds.obspm.fr) (v0.8) on computations regarding Lifshitz spacetimes. \n", "\n", "It is based on the following articles:\n", "- I. Ya. Aref'eva & A. A. Golubtsova,\n", " [JHEP 2015(04), 011 (2015)](http://link.springer.com/article/10.1007/JHEP04%282015%29011)\n", "- I. Ya. Aref'eva, A. A. Golubtsova & E. Gourgoulhon, in preparation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we set up the notebook to display mathematical objects using LaTeX formatting:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%display latex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Spacetime and metric tensor\n", "\n", "Let us declare the spacetime $M$ as a 5-dimensional manifold:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5-dimensional manifold 'M'\n" ] } ], "source": [ "M = Manifold(5, 'M')\n", "print M" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We introduce a first coordinate system on $M$:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "chart (M, (t, x, y1, y2, R))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X0. = M.chart('t x y1:y_1 y2:y_2 R:(0,+oo)')\n", "X0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us consider the following Lifshitz-symmetric metric, parametrized by some real number $\\nu$:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "g = -R^(2*nu) dt*dt + R^(2*nu) dx*dx + R^2 dy1*dy1 + R^2 dy2*dy2 + R^(-2) dR*dR" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = M.lorentz_metric('g')\n", "var('nu', latex_name=r'\\nu', domain='real')\n", "g[0,0] = -R^(2*nu)\n", "g[1,1] = R^(2*nu)\n", "g[2,2] = R^2\n", "g[3,3] = R^2\n", "g[4,4] = 1/R^2\n", "g.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A matrix view of the metric components:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[-R^(2*nu) 0 0 0 0]\n", "[ 0 R^(2*nu) 0 0 0]\n", "[ 0 0 R^2 0 0]\n", "[ 0 0 0 R^2 0]\n", "[ 0 0 0 0 R^(-2)]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This metric is invariant under the *Lifshitz scaling*\n", "$$ (t,x,y_1,y_2,R) \\longmapsto \\left(\\lambda^\\nu t, \\lambda^\\nu x, \\lambda y_1, \\lambda y_2, \\frac{R}{\\lambda} \\right)$$\n", "- If $\\nu=1$ the scaling is isotropic and we recognize the metric \n", " of $\\mathrm{AdS}_5$ in Poincaré coordinates\n", "- If $\\nu\\not=1$, the scaling is anisotropic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us introduce a second coordinate system on $M$:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "chart (M, (t, x, y1, y2, r))" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X. = M.chart('t x y1:y_1 y2:y_2 r:(0,+oo)')\n", "X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and relate it to the previous one by the transformation $r=\\ln R$:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "t = t\n", "x = x\n", "y1 = y1\n", "y2 = y2\n", "r = log(R)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X0_to_X = X0.transition_map(X, [t, x, y1, y2, ln(R)])\n", "X0_to_X.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The inverse coordinate transition is computed by means of the method `inverse()`:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "t = t\n", "x = x\n", "y1 = y1\n", "y2 = y2\n", "R = e^r" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_to_X0 = X0_to_X.inverse()\n", "X_to_X0.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At this stage, the manifold's atlas defined by the user is" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[chart (M, (t, x, y1, y2, R)), chart (M, (t, x, y1, y2, r))]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M.atlas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and the list of defined vector frames defined is" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[coordinate frame (M, (d/dt,d/dx,d/dy1,d/dy2,d/dR)),\n", " coordinate frame (M, (d/dt,d/dx,d/dy1,d/dy2,d/dr))]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M.frames()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The expression of the metric in terms of the new coordinates is" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "g = -e^(2*nu*r) dt*dt + e^(2*nu*r) dx*dx + e^(2*r) dy1*dy1 + e^(2*r) dy2*dy2 + dr*dr" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.display(X.frame(), X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "or, in matrix view:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[-e^(2*nu*r) 0 0 0 0]\n", "[ 0 e^(2*nu*r) 0 0 0]\n", "[ 0 0 e^(2*r) 0 0]\n", "[ 0 0 0 e^(2*r) 0]\n", "[ 0 0 0 0 1]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[X.frame(),:,X]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To access to a particular component, we have to specify (i) the frame w.r.t. which it is defined and (ii) the coordinates in which the component is expressed:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-e^(2*nu*r)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[X.frame(),0,0,X]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-R^(2*nu)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[X.frame(),0,0] # the default chart is used" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From now on, let us consider the coordinates $X = (t,x,y_1,y_2,r)$ as the default ones on the manifold $M$:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "M.set_default_chart(X)\n", "M.set_default_frame(X.frame())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "g = -e^(2*nu*r) dt*dt + e^(2*nu*r) dx*dx + e^(2*r) dy1*dy1 + e^(2*r) dy2*dy2 + dr*dr" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.display()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[-e^(2*nu*r) 0 0 0 0]\n", "[ 0 e^(2*nu*r) 0 0 0]\n", "[ 0 0 e^(2*r) 0 0]\n", "[ 0 0 0 e^(2*r) 0]\n", "[ 0 0 0 0 1]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[:]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-e^(2*nu*r)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[0,0]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "g_t,t = -e^(2*nu*r) \n", "g_x,x = e^(2*nu*r) \n", "g_y1,y1 = e^(2*r) \n", "g_y2,y2 = e^(2*r) \n", "g_r,r = 1 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.display_comp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Curvature\n", "\n", "The Riemann tensor is" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor field 'Riem(g)' of type (1,3) on the 5-dimensional manifold 'M'\n" ] } ], "source": [ "Riem = g.riemann()\n", "print Riem" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Riem(g)^t_x,t,x = -nu^2*e^(2*nu*r) \n", "Riem(g)^t_y1,t,y1 = -nu*e^(2*r) \n", "Riem(g)^t_y2,t,y2 = -nu*e^(2*r) \n", "Riem(g)^t_r,t,r = -nu^2 \n", "Riem(g)^x_t,t,x = -nu^2*e^(2*nu*r) \n", "Riem(g)^x_y1,x,y1 = -nu*e^(2*r) \n", "Riem(g)^x_y2,x,y2 = -nu*e^(2*r) \n", "Riem(g)^x_r,x,r = -nu^2 \n", "Riem(g)^y1_t,t,y1 = -nu*e^(2*nu*r) \n", "Riem(g)^y1_x,x,y1 = nu*e^(2*nu*r) \n", "Riem(g)^y1_y2,y1,y2 = -e^(2*r) \n", "Riem(g)^y1_r,y1,r = -1 \n", "Riem(g)^y2_t,t,y2 = -nu*e^(2*nu*r) \n", "Riem(g)^y2_x,x,y2 = nu*e^(2*nu*r) \n", "Riem(g)^y2_y1,y1,y2 = e^(2*r) \n", "Riem(g)^y2_r,y2,r = -1 \n", "Riem(g)^r_t,t,r = -nu^2*e^(2*nu*r) \n", "Riem(g)^r_x,x,r = nu^2*e^(2*nu*r) \n", "Riem(g)^r_y1,y1,r = e^(2*r) \n", "Riem(g)^r_y2,y2,r = e^(2*r) " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Riem.display_comp(only_nonredundant=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Ricci tensor:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "field of symmetric bilinear forms 'Ric(g)' on the 5-dimensional manifold 'M'\n" ] } ], "source": [ "Ric = g.ricci()\n", "print Ric" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Ric(g) = 2*(nu^2 + nu)*e^(2*nu*r) dt*dt - 2*(nu^2 + nu)*e^(2*nu*r) dx*dx - 2*(nu + 1)*e^(2*r) dy1*dy1 - 2*(nu + 1)*e^(2*r) dy2*dy2 + (-2*nu^2 - 2) dr*dr" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ric.display()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Ric(g)_t,t = 2*(nu^2 + nu)*e^(2*nu*r) \n", "Ric(g)_x,x = -2*(nu^2 + nu)*e^(2*nu*r) \n", "Ric(g)_y1,y1 = -2*(nu + 1)*e^(2*r) \n", "Ric(g)_y2,y2 = -2*(nu + 1)*e^(2*r) \n", "Ric(g)_r,r = -2*nu^2 - 2 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ric.display_comp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Ricci scalar:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scalar field 'r(g)' on the 5-dimensional manifold 'M'\n" ] } ], "source": [ "Rscal = g.ricci_scalar()\n", "print Rscal" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "r(g): M --> R\n", " (t, x, y1, y2, R) |--> -6*nu^2 - 8*nu - 6\n", " (t, x, y1, y2, r) |--> -6*nu^2 - 8*nu - 6" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Rscal.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We note that the Ricci scalar is constant." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Source model\n", "Let us consider a model based on the following action, involving a dilaton scalar field $\\phi$ and a Maxwell 2-form $F$:\n", "\n", "$$ 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} \\right) \\sqrt{-g} \\, \\mathrm{d}^5 x \\qquad\\qquad \\mbox{(1)}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The dilaton scalar field\n", "\n", "We consider the following ansatz for the dilaton scalar field $\\phi$:\n", "$$ \\phi = \\frac{1}{\\lambda} \\left( 4 r + \\ln\\mu \\right),$$\n", "where $\\lambda$ and $\\mu$ are two constants. " ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "phi: M --> R\n", " (t, x, y1, y2, R) |--> (4*log(R) + log(mu))/lamb\n", " (t, x, y1, y2, r) |--> (4*r + log(mu))/lamb" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('mu', latex_name=r'\\mu')\n", "var('lamb', latex_name=r'\\lambda')\n", "phi = M.scalar_field({X: (4*r + ln(mu))/lamb}, \n", " name='phi', latex_name=r'\\phi')\n", "phi.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 1-form $\\mathrm{d}\\phi$ is" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1-form 'dphi' on the 5-dimensional manifold 'M'\n" ] } ], "source": [ "dphi = phi.differential()\n", "print dphi" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "dphi = 4/lamb dr" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dphi.display()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[0, 0, 0, 0, 4/lamb]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dphi[:] # all the components in the default frame" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The 2-form field\n", "\n", "We consider the following ansatz for $F$:\n", "$$ F = \\frac{1}{2} q \\, \\mathrm{d}y_1\\wedge \\mathrm{d}y_2, $$\n", "where $q$ is a constant. \n", "\n", "Let us first get the 1-forms $\\mathrm{d}y_1$ and $\\mathrm{d}y_2$:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "coordinate coframe (M, (dt,dx,dy1,dy2,dr))" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.coframe()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1-form 'dy1' on the 5-dimensional manifold 'M'\n", "1-form 'dy2' on the 5-dimensional manifold 'M'\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1-form 'dy1' on the 5-dimensional manifold 'M',\n", " 1-form 'dy2' on the 5-dimensional manifold 'M')" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dy1 = X.coframe()[2]\n", "dy2 = X.coframe()[3]\n", "print dy1\n", "print dy2\n", "dy1, dy2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then form $F$ according to the above ansatz:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2-form 'F' on the 5-dimensional manifold 'M'\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "F = 1/2*q dy1/\\dy2" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('q')\n", "F = q/2 * dy1.wedge(dy2)\n", "F.set_name('F')\n", "print F\n", "F.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By construction, the 2-form $F$ is closed (since $q$ is constant):" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3-form 'dF' on the 5-dimensional manifold 'M'\n" ] } ], "source": [ "print xder(F)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "dF = 0" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xder(F).display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us evaluate the square $F_{mn} F^{mn}$ of $F$:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor field of type (2,0) on the 5-dimensional manifold 'M'\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "1/2*q*e^(-4*r) d/dy1*d/dy2 - 1/2*q*e^(-4*r) d/dy2*d/dy1" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Fu = F.up(g)\n", "print Fu\n", "Fu.display()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scalar field on the 5-dimensional manifold 'M'\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "M --> R\n", "(t, x, y1, y2, R) |--> 1/2*q^2/R^4\n", "(t, x, y1, y2, r) |--> 1/2*q^2*e^(-4*r)" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F2 = F['_{mn}']*Fu['^{mn}'] # using LaTeX notations to denote contraction\n", "print F2\n", "F2.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We shall also need the tensor $\\mathcal{F}_{mn} = F_{mp} F_n^{\\ \\, p}$:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor field of type (0,2) on the 5-dimensional manifold 'M'\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "1/4*q^2*e^(-2*r) dy1*dy1 + 1/4*q^2*e^(-2*r) dy2*dy2" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "FF = F['_mp'] * F.up(g,1)['^p_n']\n", "print FF\n", "FF.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The tensor field $\\mathcal{F}$ is symmetric:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "FF == FF.symmetrize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Therefore, from now on, we set" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": true }, "outputs": [], "source": [ "FF = FF.symmetrize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Field equations\n", "\n", "### Einstein equation\n", "\n", "Let us first introduce the cosmological constant:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Lamb" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('Lamb', latex_name=r'\\Lambda')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the action (1), the field equation for the metric $g$ is\n", "$$\n", " R_{mn} + \\frac{\\Lambda}{3} \\, g \n", " - \\frac{1}{2}\\partial_m\\phi \\partial_n\\phi\n", " -\\frac{1}{2} e^{\\lambda\\phi} F_{mp} F^{\\ \\, p}_n + \n", " \\frac{1}{12} e^{\\lambda\\phi} F_{rs} F^{rs} \\, g_{mn} = 0 \n", "$$\n", "We write it as\n", "\n", " EE == 0\n", "\n", "with `EE` defined by" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "field of symmetric bilinear forms 'E' on the 5-dimensional manifold 'M'\n" ] } ], "source": [ "EE = Ric + Lamb/3*g - 1/2* (dphi*dphi) - 1/2*exp(lamb*phi)*FF \\\n", " + 1/12*exp(lamb*phi)*F2*g\n", "EE.set_name('E')\n", "print EE" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "E_t,t = -1/24*(mu*q^2 - 48*nu^2 + 8*Lamb - 48*nu)*e^(2*nu*r) \n", "E_x,x = 1/24*(mu*q^2 - 48*nu^2 + 8*Lamb - 48*nu)*e^(2*nu*r) \n", "E_y1,y1 = -1/12*(mu*q^2 - 4*Lamb + 24*nu + 24)*e^(2*r) \n", "E_y2,y2 = -1/12*(mu*q^2 - 4*Lamb + 24*nu + 24)*e^(2*r) \n", "E_r,r = 1/24*(lamb^2*mu*q^2 - 48*lamb^2*nu^2 + 8*(Lamb - 6)*lamb^2 - 192)/lamb^2 " ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EE.display_comp(only_nonredundant=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We note that `EE==0` leads to only 3 independent equations:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/24*mu*q^2 + 2*nu^2 - 1/3*Lamb + 2*nu" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq1 = (EE[0,0]/exp(2*nu*r)).expr()\n", "eq1" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/12*mu*q^2 + 1/3*Lamb - 2*nu - 2" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq2 = (EE[2,2]/exp(2*r)).expr()\n", "eq2" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "1/24*mu*q^2 - 2*nu^2 + 1/3*Lamb - 8/lamb^2 - 2" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3 = EE[4,4].expr().expand()\n", "eq3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dilaton field equation\n", "\n", "First we evaluate $\\nabla_m \\nabla^m \\phi$:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Levi-Civita connection 'nabla_g' associated with the Lorentzian metric 'g' on the 5-dimensional manifold 'M'\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "Levi-Civita connection 'nabla_g' associated with the Lorentzian metric 'g' on the 5-dimensional manifold 'M'" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nab = g.connection()\n", "print nab\n", "nab" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scalar field on the 5-dimensional manifold 'M'\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "M --> R\n", "(t, x, y1, y2, R) |--> 8*(nu + 1)/lamb\n", "(t, x, y1, y2, r) |--> 8*(nu + 1)/lamb" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "box_phi = nab(nab(phi).up(g)).trace()\n", "print box_phi\n", "box_phi.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the action (1), the field equation for $\\phi$ is \n", "$$ \\nabla_m \\nabla^m \\phi = \\frac{\\lambda}{4} e^{\\lambda\\phi} F_{mn} F^{mn}$$\n", "We write it as\n", "\n", " DE == 0\n", " \n", "with `DE` defined by" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scalar field on the 5-dimensional manifold 'M'\n" ] } ], "source": [ "DE = box_phi - lamb/4*exp(lamb*phi) * F2\n", "print DE" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "M --> R\n", "(t, x, y1, y2, R) |--> -1/8*(lamb^2*mu*q^2 - 64*nu - 64)/lamb\n", "(t, x, y1, y2, r) |--> -1/8*(lamb^2*mu*q^2 - 64*nu - 64)/lamb" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DE.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hence the dilaton field equation provides a fourth equation:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/8*lamb*mu*q^2 + 8*nu/lamb + 8/lamb" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq4 = DE.expr().expand()\n", "eq4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Maxwell equation\n", "\n", "From the action (1), the field equation for $F$ is \n", "$$ \\nabla_m \\left( e^{\\lambda\\phi} F^{mn} \\right)= 0 $$\n", "We write it as\n", "\n", " ME == 0\n", " \n", "with `ME` defined by" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "vector field on the 5-dimensional manifold 'M'\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "0" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ME = nab(exp(lamb*phi)*Fu).trace(0,2)\n", "print ME\n", "ME.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get identically zero; indeed the tensor $\\nabla_p (e^{\\lambda\\phi} F^{mn})$ has a vanishing trace, as we can check:" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "mu*q d/dy1*d/dy2*dr - 1/2*mu*q*e^(2*r) d/dy1*d/dr*dy2 - mu*q d/dy2*d/dy1*dr + 1/2*mu*q*e^(2*r) d/dy2*d/dr*dy1 + 1/2*mu*q*e^(2*r) d/dr*d/dy1*dy2 - 1/2*mu*q*e^(2*r) d/dr*d/dy2*dy1" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nab(exp(lamb*phi)*Fu).display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Summary\n", "\n", "We have 4 equations involving the constants $\\lambda$, $\\mu$, $\\nu$, $q$ and $\\Lambda$:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/24*mu*q^2 + 2*nu^2 - 1/3*Lamb + 2*nu == 0" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq1 == 0" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/12*mu*q^2 + 1/3*Lamb - 2*nu - 2 == 0" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq2 == 0" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "1/24*mu*q^2 - 2*nu^2 + 1/3*Lamb - 8/lamb^2 - 2 == 0" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3 == 0" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/8*lamb*mu*q^2 + 8*nu/lamb + 8/lamb == 0" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq4 == 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solution for $\\nu=1$ ($\\mathrm{AdS}_5$)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": true }, "outputs": [], "source": [ "eqs = [eq1, eq2, eq3, eq4]\n", "neqs = [eq.subs(nu=1) for eq in eqs]" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[-1/24*mu*q^2 - 1/3*Lamb + 4 == 0,\n", " -1/12*mu*q^2 + 1/3*Lamb - 4 == 0,\n", " 1/24*mu*q^2 + 1/3*Lamb - 8/lamb^2 - 4 == 0,\n", " -1/8*lamb*mu*q^2 + 16/lamb == 0]" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[eq == 0 for eq in neqs]" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[]" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve([eq == 0 for eq in neqs], lamb, mu, Lamb, q)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hence there is no solution for $\\mathrm{AdS}_5$ with the above ansatz. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solution for $\\nu = 2$" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[-1/24*mu*q^2 - 1/3*Lamb + 12 == 0,\n", " -1/12*mu*q^2 + 1/3*Lamb - 6 == 0,\n", " 1/24*mu*q^2 + 1/3*Lamb - 8/lamb^2 - 10 == 0,\n", " -1/8*lamb*mu*q^2 + 24/lamb == 0]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "neqs = [eq.subs(nu=2) for eq in eqs]\n", "[eq == 0 for eq in neqs]" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[[lamb == 2, mu == 48/r1^2, Lamb == 30, q == r1], [lamb == -2, mu == 48/r2^2, Lamb == 30, q == r2]]" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve([eq == 0 for eq in neqs], lamb, mu, Lamb, q)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hence there are two families of solutions, each famility being parametrized by e.g. $q$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solution for $\\nu = 4$" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[-1/24*mu*q^2 - 1/3*Lamb + 40 == 0,\n", " -1/12*mu*q^2 + 1/3*Lamb - 10 == 0,\n", " 1/24*mu*q^2 + 1/3*Lamb - 8/lamb^2 - 34 == 0,\n", " -1/8*lamb*mu*q^2 + 40/lamb == 0]" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "neqs = [eq.subs(nu=4) for eq in eqs]\n", "[eq == 0 for eq in neqs]" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[[lamb == 2/3*sqrt(3), mu == 240/r3^2, Lamb == 90, q == r3], [lamb == -2/3*sqrt(3), mu == 240/r4^2, Lamb == 90, q == r4]]" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve([eq == 0 for eq in neqs], lamb, mu, Lamb, q)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hence there are two families of solutions, each family being parametrized by e.g. $q$. " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Sage 6.7", "language": "", "name": "sage_6_7" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.8" } }, "nbformat": 4, "nbformat_minor": 0 }