{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 5D Kerr-AdS spacetime: general solution with 2 angular momenta\n", "\n", "This notebook demonstrates a few capabilities of SageMath in computations regarding the 5-dimensional Kerr-AdS spacetime. The corresponding tools have been developed within the [SageManifolds](https://sagemanifolds.obspm.fr) project (version 1.3, as included in SageMath 8.3).\n", "\n", "Click [here](https://raw.githubusercontent.com/sagemanifolds/SageManifolds/master/Worksheets/v1.3/SM_Kerr-AdS_5D.ipynb) to download the notebook file (ipynb format). To run it, you must start SageMath within the Jupyter notebook, via the command sage -n jupyter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*NB:* a version of SageMath at least equal to 8.2 is required to run this notebook:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'SageMath version 8.3, Release Date: 2018-08-03'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "version()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we set up the notebook to display mathematical objects using LaTeX rendering:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%display latex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since some computations are quite long, we ask for running them in parallel on 8 cores:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "Parallelism().set(nproc=8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Spacetime manifold\n", "\n", "We declare the Kerr-AdS spacetime as a 5-dimensional Lorentzian manifold:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5-dimensional Lorentzian manifold M\n" ] } ], "source": [ "M = Manifold(5, 'M', latex_name=r'\\mathcal{M}', structure='Lorentzian')\n", "print(M)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us define **Boyer-Lindquist-type coordinates (rational polynomial version)** on $\\mathcal{M}$, via the method chart(), the argument of which is a string expressing the coordinates names, their ranges (the default is $(-\\infty,+\\infty)$) and their LaTeX symbols:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Chart (M, (t, r, mu, ph, ps))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BL. = M.chart(r't r:(0,+oo) mu:(-1,1):\\mu ph:(0,2*pi):\\phi ps:(0,2*pi):\\psi')\n", "BL" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that $\\mu$ is related to the standard Boyer-Lindquist coordinate $\\theta$ by\n", "$$\\mu = \\cos\\theta$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Metric tensor\n", "\n", "The 4 parameters $m$, $a$, $b$ and $\\ell$ of the Kerr-AdS spacetime are declared as symbolic variables, $a$ and $b$ being the two angular momentum parameters and $\\ell$ being related to the cosmological constant by $\\Lambda = - 6 \\ell^2$:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "(m, a, b)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('m a b', domain='real')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "l" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('l', domain='real', latex_name=r'\\ell')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Particular cases\n", "# a = 0\n", "# m = 0\n", "# b = a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some auxiliary functions:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "sig = (1+r^2*l^2)/r^2\n", "Delta = (r^2+a^2)*(r^2+b^2)*sig - 2*m\n", "sinth2 = 1-mu^2\n", "Delta_th = 1 - a^2*l^2*mu^2 - b^2*l^2*sinth2\n", "rho2 = r^2 + a^2*mu^2 + b^2*sinth2\n", "Xi_a = 1 - a^2*l^2\n", "Xi_b = 1 - b^2*l^2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The metric is set by its components in the coordinate frame associated with the Boyer-Lindquist-type coordinates, which is the current manifold's default frame. These components are given by \n", "Eq. (5.22) of the article [S.W. Hawking, C.J. Hunter & M.M. Taylor-Robinson, Phys. Rev. D **59**, 064005 (1999)](https://doi.org/10.1103/PhysRevD.59.064005):" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "g = M.metric()\n", "tmp = 1/rho2*( -Delta + Delta_th*(a^2*sinth2 + b^2*mu^2) + a^2*b^2*sig )\n", "g[0,0] = tmp.simplify_full()\n", "tmp = a*sinth2/(rho2*Xi_a)*( Delta - (r^2+a^2)*(Delta_th + b^2*sig) )\n", "g[0,3] = tmp.simplify_full()\n", "tmp = b*mu^2/(rho2*Xi_b)*( Delta - (r^2+b^2)*(Delta_th + a^2*sig) )\n", "g[0,4] = tmp.simplify_full()\n", "g[1,1] = (rho2/Delta).simplify_full()\n", "g[2,2] = (rho2/Delta_th/(1-mu^2)).simplify_full()\n", "tmp = sinth2/(rho2*Xi_a^2)*( - Delta*a^2*sinth2 + (r^2+a^2)^2*(Delta_th + sig*b^2*sinth2) ) \n", "g[3,3] = tmp.simplify_full()\n", "tmp = a*b*sinth2*mu^2/(rho2*Xi_a*Xi_b)*( - Delta + sig*(r^2+a^2)*(r^2+b^2) )\n", "g[3,4] = tmp.simplify_full()\n", "tmp = mu^2/(rho2*Xi_b^2)*( - Delta*b^2*mu^2 + (r^2+b^2)^2*(Delta_th + sig*a^2*mu^2) )\n", "g[4,4] = tmp.simplify_full()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "g_t,t = ((a^4 - 2*a^2*b^2 + b^4)*l^2*mu^4 - a^2*b^2*l^2 - l^2*r^4 - ((a^4 - 2*a^2*b^2 + b^4)*l^2 + a^2 - b^2)*mu^2 - ((a^2 + b^2)*l^2 + 1)*r^2 - b^2 + 2*m)/((a^2 - b^2)*mu^2 + b^2 + r^2) \n", "g_t,ph = -(a^3*b^2*l^2 - (a^5 - a^3*b^2)*l^2*mu^4 - (a*l^2*mu^2 - a*l^2)*r^4 + ((a^5 - 2*a^3*b^2)*l^2 + 2*a*m)*mu^2 - (2*a*b^2*l^2*mu^2 + (a^3 - a*b^2)*l^2*mu^4 - (a^3 + a*b^2)*l^2)*r^2 - 2*a*m)/(a^2*b^2*l^2 + ((a^4 - a^2*b^2)*l^2 - a^2 + b^2)*mu^2 + (a^2*l^2 - 1)*r^2 - b^2) \n", "g_t,ps = -(b*l^2*mu^2*r^4 + (a^2*b^3 - b^5)*l^2*mu^4 + (b^5*l^2 - 2*b*m)*mu^2 + (2*b^3*l^2*mu^2 + (a^2*b - b^3)*l^2*mu^4)*r^2)/(b^4*l^2 + ((a^2*b^2 - b^4)*l^2 - a^2 + b^2)*mu^2 + (b^2*l^2 - 1)*r^2 - b^2) \n", "g_r,r = (r^4 + ((a^2 - b^2)*mu^2 + b^2)*r^2)/(l^2*r^6 + ((a^2 + b^2)*l^2 + 1)*r^4 + a^2*b^2 + (a^2*b^2*l^2 + a^2 + b^2 - 2*m)*r^2) \n", "g_mu,mu = ((a^2 - b^2)*mu^2 + b^2 + r^2)/((a^2 - b^2)*l^2*mu^4 - b^2*l^2 - ((a^2 - 2*b^2)*l^2 + 1)*mu^2 + 1) \n", "g_ph,ph = -(a^4*b^2*l^2 + (a^4 - a^2*b^2 - (a^6 - a^4*b^2)*l^2 - 2*a^2*m)*mu^4 + (a^2*l^2 - (a^2*l^2 - 1)*mu^2 - 1)*r^4 - a^2*b^2 - 2*a^2*m - (a^4 - 2*a^2*b^2 - (a^6 - 2*a^4*b^2)*l^2 - 4*a^2*m)*mu^2 - (((a^4 - a^2*b^2)*l^2 - a^2 + b^2)*mu^4 - (a^4 + a^2*b^2)*l^2 + 2*(a^2*b^2*l^2 - b^2)*mu^2 + a^2 + b^2)*r^2)/(a^4*b^2*l^4 - 2*a^2*b^2*l^2 + ((a^6 - a^4*b^2)*l^4 - 2*(a^4 - a^2*b^2)*l^2 + a^2 - b^2)*mu^2 + (a^4*l^4 - 2*a^2*l^2 + 1)*r^2 + b^2) \n", "g_ph,ps = -2*(a*b*m*mu^4 - a*b*m*mu^2)/(a^2*b^4*l^4 - (a^2*b^2 + b^4)*l^2 + ((a^4*b^2 - a^2*b^4)*l^4 - (a^4 - b^4)*l^2 + a^2 - b^2)*mu^2 + (a^2*b^2*l^4 - (a^2 + b^2)*l^2 + 1)*r^2 + b^2) \n", "g_ps,ps = -((b^2*l^2 - 1)*mu^2*r^4 - (a^2*b^2 - b^4 - (a^2*b^4 - b^6)*l^2 + 2*b^2*m)*mu^4 + (b^6*l^2 - b^4)*mu^2 + (((a^2*b^2 - b^4)*l^2 - a^2 + b^2)*mu^4 + 2*(b^4*l^2 - b^2)*mu^2)*r^2)/(b^6*l^4 - 2*b^4*l^2 + ((a^2*b^4 - b^6)*l^4 - 2*(a^2*b^2 - b^4)*l^2 + a^2 - b^2)*mu^2 + (b^4*l^4 - 2*b^2*l^2 + 1)*r^2 + b^2) " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.display_comp(only_nonredundant=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Einstein equation\n", "\n", "The Ricci tensor of $g$ is" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field of symmetric bilinear forms Ric(g) on the 5-dimensional Lorentzian manifold M\n" ] } ], "source": [ "Ric = g.ricci()\n", "print(Ric)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Ric(g)_t,t = -4*((a^4 - 2*a^2*b^2 + b^4)*l^4*mu^4 - a^2*b^2*l^4 - l^4*r^4 - b^2*l^2 + 2*l^2*m - ((a^4 - 2*a^2*b^2 + b^4)*l^4 + (a^2 - b^2)*l^2)*mu^2 - ((a^2 + b^2)*l^4 + l^2)*r^2)/((a^2 - b^2)*mu^2 + b^2 + r^2) \n", "Ric(g)_t,ph = 4*(a^3*b^2*l^4 - (a^5 - a^3*b^2)*l^4*mu^4 - (a*l^4*mu^2 - a*l^4)*r^4 - 2*a*l^2*m + ((a^5 - 2*a^3*b^2)*l^4 + 2*a*l^2*m)*mu^2 - (2*a*b^2*l^4*mu^2 + (a^3 - a*b^2)*l^4*mu^4 - (a^3 + a*b^2)*l^4)*r^2)/(a^2*b^2*l^2 + ((a^4 - a^2*b^2)*l^2 - a^2 + b^2)*mu^2 + (a^2*l^2 - 1)*r^2 - b^2) \n", "Ric(g)_t,ps = 4*(b*l^4*mu^2*r^4 + (a^2*b^3 - b^5)*l^4*mu^4 + (b^5*l^4 - 2*b*l^2*m)*mu^2 + (2*b^3*l^4*mu^2 + (a^2*b - b^3)*l^4*mu^4)*r^2)/(b^4*l^2 + ((a^2*b^2 - b^4)*l^2 - a^2 + b^2)*mu^2 + (b^2*l^2 - 1)*r^2 - b^2) \n", "Ric(g)_r,r = -4*(l^2*r^4 + ((a^2 - b^2)*l^2*mu^2 + b^2*l^2)*r^2)/(l^2*r^6 + ((a^2 + b^2)*l^2 + 1)*r^4 + a^2*b^2 + (a^2*b^2*l^2 + a^2 + b^2 - 2*m)*r^2) \n", "Ric(g)_mu,mu = -4*((a^2 - b^2)*l^2*mu^2 + b^2*l^2 + l^2*r^2)/((a^2 - b^2)*l^2*mu^4 - b^2*l^2 - ((a^2 - 2*b^2)*l^2 + 1)*mu^2 + 1) \n", "Ric(g)_ph,ph = 4*(a^4*b^2*l^4 - a^2*b^2*l^2 - 2*a^2*l^2*m - ((a^6 - a^4*b^2)*l^4 + 2*a^2*l^2*m - (a^4 - a^2*b^2)*l^2)*mu^4 + (a^2*l^4 - (a^2*l^4 - l^2)*mu^2 - l^2)*r^4 + ((a^6 - 2*a^4*b^2)*l^4 + 4*a^2*l^2*m - (a^4 - 2*a^2*b^2)*l^2)*mu^2 + ((a^4 + a^2*b^2)*l^4 - ((a^4 - a^2*b^2)*l^4 - (a^2 - b^2)*l^2)*mu^4 - (a^2 + b^2)*l^2 - 2*(a^2*b^2*l^4 - b^2*l^2)*mu^2)*r^2)/(a^4*b^2*l^4 - 2*a^2*b^2*l^2 + ((a^6 - a^4*b^2)*l^4 - 2*(a^4 - a^2*b^2)*l^2 + a^2 - b^2)*mu^2 + (a^4*l^4 - 2*a^2*l^2 + 1)*r^2 + b^2) \n", "Ric(g)_ph,ps = 8*(a*b*l^2*m*mu^4 - a*b*l^2*m*mu^2)/(a^2*b^4*l^4 - (a^2*b^2 + b^4)*l^2 + ((a^4*b^2 - a^2*b^4)*l^4 - (a^4 - b^4)*l^2 + a^2 - b^2)*mu^2 + (a^2*b^2*l^4 - (a^2 + b^2)*l^2 + 1)*r^2 + b^2) \n", "Ric(g)_ps,ps = 4*((b^2*l^4 - l^2)*mu^2*r^4 + ((a^2*b^4 - b^6)*l^4 - 2*b^2*l^2*m - (a^2*b^2 - b^4)*l^2)*mu^4 + (b^6*l^4 - b^4*l^2)*mu^2 + (((a^2*b^2 - b^4)*l^4 - (a^2 - b^2)*l^2)*mu^4 + 2*(b^4*l^4 - b^2*l^2)*mu^2)*r^2)/(b^6*l^4 - 2*b^4*l^2 + ((a^2*b^4 - b^6)*l^4 - 2*(a^2*b^2 - b^4)*l^2 + a^2 - b^2)*mu^2 + (b^4*l^4 - 2*b^2*l^2 + 1)*r^2 + b^2) " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ric.display_comp(only_nonredundant=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us check that $g$ is a solution of the vacuum Einstein equation with the cosmological constant $\\Lambda = - 6 \\ell^2$:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Lambda = -6*l^2\n", "Ric == 2/3*Lambda*g" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 8.3", "language": "", "name": "sagemath" }, "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.15" } }, "nbformat": 4, "nbformat_minor": 1 }