{
"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
}