{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%display latex"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Spacetime: black hole extension"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4-dimensional differentiable manifold M\n"
]
}
],
"source": [
"M = Manifold(4, 'M', r'\\mathcal{M}')\n",
"print M"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 3,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"X. = M.chart(R' v:(-oo,+oo) t:(0,+oo) th:(0,pi):\\theta ph:(0,2*pi):\\phi')\n",
"X"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"We introduce the new coordinate $v$ such that $dv=dr+\\frac{dt}{F}$. The metric thus takes the following form:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 4,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"F=function('F')(t)\n",
"g = M.lorentzian_metric('g')\n",
"g[0,0] = F\n",
"g[1,1] = 0\n",
"g[1,0] = -1\n",
"g[2,2] = t^2\n",
"g[3,3] = (t*sin(th))^2\n",
"g.display()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 5,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"gm1=g.inverse();\n",
"gm1.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"No coordinate singularity appears for $F(t)=0$ in the metric and inverse metric. It allows to cross both the outer and inner horizons, if they exist."
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Radial null vectors"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"Outgoing null vector"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 6,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"k = M.vector_field(name='k')\n",
"k[0] = 1\n",
"k[1] = F/2 # outgoing since F/2>0 at infinity\n",
"k.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"Ingoing null vector"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 7,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"l = M.vector_field(name='l')\n",
"l[1] = -2\n",
"l.display()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"kd=k.down(g)\n",
"ld=l.down(g)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"Check that $k$ is a null vector"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 9,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"kk=kd['_a']*k['^a']\n",
"kk.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"Check that $l$ is a null vector"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 10,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"ll=ld['_a']*l['^a']\n",
"ll.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"Normalization"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 11,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"lk=ld['_a']*k['^a']\n",
"lk.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Induced metric"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"h=g-1/2*(kd*ld+ld*kd)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"hu=h.up(g)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 14,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"h.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Expansion of a congruence of null geodesics"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Levi-Civita connection nabla_g associated with the Lorentzian metric g on the 4-dimensional differentiable manifold M\n"
]
}
],
"source": [
"nab = g.connection() ; print nab"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"Check that the covariant derivative does not act on the metric: "
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 16,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"nab(g).display()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Scalar field on the 4-dimensional differentiable manifold M\n"
]
}
],
"source": [
"theta_outgoing=hu['^{ab}']*nab(kd)['_{ab}']\n",
"print theta_outgoing"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 18,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"theta_outgoing.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"The zeros of $\\theta_{outgoing}$, hence of $F$, correspond to the presence of horizons. The region with $F(t)<0$, where the expansion of outgoing null rays becomes negative, is a (future) trapped region. "
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Scalar field on the 4-dimensional differentiable manifold M\n"
]
}
],
"source": [
"theta_ingoing=theta=hu['^{ab}']*nab(ld)['_{ab}']\n",
"print theta_ingoing"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 20,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"theta_ingoing.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"The expansion of ingoing radial null rays is strictly negative, which is expected in the presence of a $\\textbf{black hole}$. "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Ricci's scalar"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 21,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"Rscal = g.ricci_scalar().expr()\n",
"Rscal.factor()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Kretschmann's scalar"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tensor field Riem(g) of type (1,3) on the 4-dimensional differentiable manifold M\n"
]
}
],
"source": [
"R = g.riemann() ; print(R)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"uR=R.up(g)\n",
"dR=R.down(g)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 24,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"Kr_scalar = uR['^{abcd}']*dR['_{abcd}']\n",
"K=Kr_scalar.expr().factor()\n",
"K"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "SageMath 8.0",
"name": "sage-8.0"
},
"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.13"
}
},
"nbformat": 4,
"nbformat_minor": 0
}