{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Computation of the surface gravity of the Schwarzschild black hole\n",
"\n",
"We compute $\\kappa$ by the formula\n",
"$$\\kappa^2 = - \\frac{1}{2} \\nabla_a k_b \\nabla^a k^b $$\n",
"where $k^a$ is the Killing vector $\\frac{\\partial}{\\partial t}$, which coincides on the horizon with the horizon null generator. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%display latex"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"M = Manifold(4, 'M', structure='Lorentzian')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Chart (M, (t, r, th, phi))"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X. = M.chart(r\"t r:(0,+oo) th:(0,pi):\\theta phi:(0,2*pi):\\phi\")\n",
"X"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"m = var('m')\n",
"assume(m>0)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"g = (2*m/r - 1) dt*dt - 1/(2*m/r - 1) dr*dr + r^2 dth*dth + r^2*sin(th)^2 dphi*dphi"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g = M.metric()\n",
"g[0,0] = - (1-2*m/r)\n",
"g[1,1] = 1/(1-2*m/r)\n",
"g[2,2] = r^2\n",
"g[3,3] = r^2*sin(th)^2\n",
"g.display()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"k = d/dt"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k = M.vector_field(name='k')\n",
"k[0] = 1\n",
"k.display()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"nabla = g.connection()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"nabla_g(k) = -m/(2*m*r - r^2) d/dt*dr - (2*m^2 - m*r)/r^3 d/dr*dt"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Dk = nabla(k)\n",
"Dk.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The tensor $\\nabla_a k_b$:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"-m/r^2 dt*dr + m/r^2 dr*dt"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Dk_down = Dk.down(g)\n",
"Dk_down.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us check in passing Killing equation:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Dk_down.symmetrize().display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The tensor $\\nabla^a k^b$:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"m/r^2 d/dt*d/dr - m/r^2 d/dr*d/dt"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Dk_up = Dk.up(g)\n",
"Dk_up.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are ready now to evaluate the formula \n",
"$$\\kappa^2 = - \\frac{1}{2} \\nabla_a k_b \\nabla^a k^b $$\n",
"We contract both over index no. 0 (first index) and index no. 1 (second index):"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"kappa2 = -1/2 * Dk_down.contract(0, 1, Dk_up, 0, 1)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"M --> R\n",
"(t, r, th, phi) |--> m^2/r^4"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kappa2.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If one wishes, LaTeX notations can be used to perform the contraction instead of using the method `contract`:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"M --> R\n",
"(t, r, th, phi) |--> m^2/r^4"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kappa2 = -1/2 * Dk_down['_{ab}']*Dk_up['^{ab}']\n",
"kappa2.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The symbolic expression representing the scalar field $\\kappa^2$:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"m^2/r^4"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kappa2.expr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The final result:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"1/4/m"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kappa = sqrt(kappa2.expr().subs(r=2*m))\n",
"kappa"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "SageMath 8.2",
"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.14"
}
},
"nbformat": 4,
"nbformat_minor": 2
}