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