{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "# Lemaître-Tolman solutions\n", "\n", "This Jupyter/SageMath worksheet is relative to the lectures\n", "[Introduction to black hole physics](http://luth.obspm.fr/~luthier/gourgoulhon/bh16/louvain)\n", " \n", "These computations are based on [SageManifolds](http://sagemanifolds.obspm.fr) (version 1.0, as included in SageMath 7.5) \n", "\n", "Click [here](https://raw.githubusercontent.com/egourgoulhon/BHLectures/master/sage/Lemaitre_Tolman.ipynb) to download the worksheet file (ipynb format). To run it, you must start SageMath with the Jupyter notebook, with the command `sage -n jupyter`" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "*NB:* a version of SageMath at least equal to 7.5 is required to run this worksheet:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "'SageMath version 8.0.beta6, Release Date: 2017-05-12'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "version()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "First we set up the notebook to display mathematical objects using LaTeX rendering:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "%display latex" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Spacetime\n", "\n", "We declare the spacetime manifold $M$:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4-dimensional differentiable manifold M\n" ] } ], "source": [ "M = Manifold(4, 'M')\n", "print(M)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "and declare the chart of **Lemaître synchronous coordinates** on it:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Chart (M, (t, x, th, ph))" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X. = M.chart(r't:\\tau x:(0,+oo):\\chi th:(0,pi):\\theta ph:(0,2*pi):\\phi')\n", "X" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The most general metric tensor, assuming spherical symmetry and synchronous coordinates:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "g = -dt*dt + a(t, x)^2 dx*dx + r(t, x)^2 dth*dth + r(t, x)^2*sin(th)^2 dph*dph" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = M.lorentzian_metric('g')\n", "a = function('a')\n", "r = function('r')\n", "g[0,0] = -1\n", "g[1,1] = a(t,x)^2\n", "g[2,2] = r(t,x)^2\n", "g[3,3] = (r(t,x)*sin(th))^2\n", "g.display()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Einstein equation" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The cosmological constant:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Lamb" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('Lamb', latex_name='\\Lambda')" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The Ricci tensor:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field of symmetric bilinear forms Ric(g) on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "Ric = g.ricci()\n", "print(Ric)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Ric(g) = -(r(t, x)*d^2(a)/dt^2 + 2*a(t, x)*d^2(r)/dt^2)/(a(t, x)*r(t, x)) dt*dt - 2*(a(t, x)*d^2(r)/dtdx - d(a)/dt*d(r)/dx)/(a(t, x)*r(t, x)) dt*dx - 2*(a(t, x)*d^2(r)/dtdx - d(a)/dt*d(r)/dx)/(a(t, x)*r(t, x)) dx*dt + (a(t, x)^2*r(t, x)*d^2(a)/dt^2 + 2*a(t, x)^2*d(a)/dt*d(r)/dt + 2*d(a)/dx*d(r)/dx - 2*a(t, x)*d^2(r)/dx^2)/(a(t, x)*r(t, x)) dx*dx + (a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt + a(t, x)^3*d(r)/dt^2 + a(t, x)^3*r(t, x)*d^2(r)/dt^2 + a(t, x)^3 + r(t, x)*d(a)/dx*d(r)/dx - a(t, x)*d(r)/dx^2 - a(t, x)*r(t, x)*d^2(r)/dx^2)/a(t, x)^3 dth*dth + (a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt + a(t, x)^3*d(r)/dt^2 + a(t, x)^3*r(t, x)*d^2(r)/dt^2 + a(t, x)^3 + r(t, x)*d(a)/dx*d(r)/dx - a(t, x)*d(r)/dx^2 - a(t, x)*r(t, x)*d^2(r)/dx^2)*sin(th)^2/a(t, x)^3 dph*dph" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ric.display()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The Einstein tensor:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field of symmetric bilinear forms G on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "G = Ric - 1/2*g.ricci_scalar() * g\n", "G.set_name('G')\n", "print(G)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "G_t,t = (2*a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt + a(t, x)^3*d(r)/dt^2 + a(t, x)^3 + 2*r(t, x)*d(a)/dx*d(r)/dx - a(t, x)*d(r)/dx^2 - 2*a(t, x)*r(t, x)*d^2(r)/dx^2)/(a(t, x)^3*r(t, x)^2) \n", "G_t,x = -2*(a(t, x)*d^2(r)/dtdx - d(a)/dt*d(r)/dx)/(a(t, x)*r(t, x)) \n", "G_x,t = -2*(a(t, x)*d^2(r)/dtdx - d(a)/dt*d(r)/dx)/(a(t, x)*r(t, x)) \n", "G_x,x = -(a(t, x)^2*(d(r)/dt)^2 + 2*a(t, x)^2*r(t, x)*d^2(r)/dt^2 + a(t, x)^2 - (d(r)/dx)^2)/r(t, x)^2 \n", "G_th,th = -(a(t, x)^2*r(t, x)^2*d^2(a)/dt^2 + a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt + a(t, x)^3*r(t, x)*d^2(r)/dt^2 + r(t, x)*d(a)/dx*d(r)/dx - a(t, x)*r(t, x)*d^2(r)/dx^2)/a(t, x)^3 \n", "G_ph,ph = -(a(t, x)^2*r(t, x)^2*d^2(a)/dt^2 + a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt + a(t, x)^3*r(t, x)*d^2(r)/dt^2 + r(t, x)*d(a)/dx*d(r)/dx - a(t, x)*r(t, x)*d^2(r)/dx^2)*sin(th)^2/a(t, x)^3 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G.display_comp()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Dust matter model\n", "\n", "Let us consider a pressureless fluid (\"dust\"). Moreover, we assume that the coordinates $(\\tau,\\chi,\\theta,\\phi)$ are **comoving**, i.e. that the fluid 4-velocity is equal to $\\partial_\\tau$:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "u = d/dt" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u = M.vector_field('u')\n", "u[0] = 1\n", "u.display()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Since $(\\tau,\\chi,\\theta,\\chi)$ are synchronous, the above does define a unit timelike vector:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "g(u,u): M --> R\n", " (t, x, th, ph) |--> -1" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g(u,u).display()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The 1-form associated to the fluid 4-velocity by metric duality:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1-form on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "u_form = u.down(g)\n", "print(u_form)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-dt" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u_form.display()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The pressureless energy-momentum tensor:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field of symmetric bilinear forms T on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "rho = function('rho')\n", "T = rho(t,x)*(u_form * u_form)\n", "T.set_name('T')\n", "print(T)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "T = rho(t, x) dt*dt" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "T.display()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The Einstein equation:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field of symmetric bilinear forms E on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "E = G + Lamb*g - 8*pi*T \n", "E.set_name('E')\n", "print(E)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "E_t,t = -(8*pi*a(t, x)^3*r(t, x)^2*rho(t, x) + Lamb*a(t, x)^3*r(t, x)^2 - 2*a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt - a(t, x)^3*d(r)/dt^2 - a(t, x)^3 - 2*r(t, x)*d(a)/dx*d(r)/dx + a(t, x)*d(r)/dx^2 + 2*a(t, x)*r(t, x)*d^2(r)/dx^2)/(a(t, x)^3*r(t, x)^2) \n", "E_t,x = -2*(a(t, x)*d^2(r)/dtdx - d(a)/dt*d(r)/dx)/(a(t, x)*r(t, x)) \n", "E_x,t = -2*(a(t, x)*d^2(r)/dtdx - d(a)/dt*d(r)/dx)/(a(t, x)*r(t, x)) \n", "E_x,x = (Lamb*a(t, x)^2*r(t, x)^2 - a(t, x)^2*(d(r)/dt)^2 - 2*a(t, x)^2*r(t, x)*d^2(r)/dt^2 - a(t, x)^2 + (d(r)/dx)^2)/r(t, x)^2 \n", "E_th,th = (Lamb*a(t, x)^3*r(t, x)^2 - a(t, x)^2*r(t, x)^2*d^2(a)/dt^2 - a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt - a(t, x)^3*r(t, x)*d^2(r)/dt^2 - r(t, x)*d(a)/dx*d(r)/dx + a(t, x)*r(t, x)*d^2(r)/dx^2)/a(t, x)^3 \n", "E_ph,ph = (Lamb*a(t, x)^3*r(t, x)^2 - a(t, x)^2*r(t, x)^2*d^2(a)/dt^2 - a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt - a(t, x)^3*r(t, x)*d^2(r)/dt^2 - r(t, x)*d(a)/dx*d(r)/dx + a(t, x)*r(t, x)*d^2(r)/dx^2)*sin(th)^2/a(t, x)^3 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E.display_comp()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Solving the Einstein equation" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### $\\tau\\chi$ component" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Let us first consider the $01 = \\tau\\chi$ component of the Einstein equation:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-2*(a(t, x)*d^2(r)/dtdx - d(a)/dt*d(r)/dx)/(a(t, x)*r(t, x))" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E[0,1]" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "A slight rearrangement of the equation:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "(a(t, x)*d^2(r)/dtdx - d(a)/dt*d(r)/dx)/a(t, x)^2" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq = E[0,1]*r(t,x)/(-2*a(t,x)) \n", "eq" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that this equation is equivalent to \n", "$$ \\frac{\\partial}{\\partial\\tau} \\left( \\frac{1}{a}\\frac{\\partial r}{\\partial\\chi} \\right) = 0 $$\n", "since" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "drdx = diff(r(t,x), x)\n", "eq - diff(drdx/a(t,x), t)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Hence there exists a function of $\\chi$ only, $f(\\chi)$ say, such that\n", "$\\frac{1}{a}\\frac{\\partial r}{\\partial\\chi} = f(\\chi)$.\n", "We disregard the case $f(\\chi)=0$, which would imply $\\frac{\\partial r}{\\partial\\chi}=0$ \n", "and would lead to the so-called *Datt model* (1938). Accordingly, we may write\n", "$$\n", " a(\\tau,\\chi) = \\frac{1}{f(\\chi)}\\frac{\\partial r}{\\partial\\chi} \n", "$$\n", "Let us call `af` this expression of $a$:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "diff(r(t, x), x)/f(x)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = function('f')\n", "af(t,x) = drdx / f(x)\n", "af(t,x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We check that if we substitute $a$ by `af` in the $\\tau\\chi$ component of the Einstein equation, we get identically zero:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E[0,1].expr().substitute_function(a, af)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*NB:* `expr()` returns a Sage symbolic expression from the coordinate function `E[0,1]`, so that we may apply `substitute_function`" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Hence the first Lemaitre-Tolman equation is" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "a(t, x) == diff(r(t, x), x)/f(x)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LT1 = a(t,x) == af(t,x)\n", "LT1" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### $\\chi\\chi$ component\n", "\n", "The $11 = \\chi\\chi$ component of Einstein equation is" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "(Lamb*a(t, x)^2*r(t, x)^2 - a(t, x)^2*(d(r)/dt)^2 - 2*a(t, x)^2*r(t, x)*d^2(r)/dt^2 - a(t, x)^2 + (d(r)/dx)^2)/r(t, x)^2" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E[1,1]" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "It is equivalent to" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-Lamb*a(t, x)^2*r(t, x)^2 + a(t, x)^2*diff(r(t, x), t)^2 + 2*a(t, x)^2*r(t, x)*diff(r(t, x), t, t) + a(t, x)^2 - diff(r(t, x), x)^2 == 0" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq = (- E[1,1] * r(t,x)^2).expr() == 0\n", "eq" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Let us substitute for $a(\\tau,\\chi)$ the value found above when solving the $\\tau\\chi$ component:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-Lamb*r(t, x)^2*diff(r(t, x), x)^2/f(x)^2 + diff(r(t, x), t)^2*diff(r(t, x), x)^2/f(x)^2 + 2*r(t, x)*diff(r(t, x), t, t)*diff(r(t, x), x)^2/f(x)^2 - diff(r(t, x), x)^2 + diff(r(t, x), x)^2/f(x)^2 == 0" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq1 = eq.substitute_function(a, af)\n", "eq1" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Some slight rearrangement and simplification:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-Lamb*r(t, x)^2 - f(x)^2 + diff(r(t, x), t)^2 + 2*r(t, x)*diff(r(t, x), t, t) + 1 == 0" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq2 = (eq1 * f(x)^2 / diff(r(t,x), x)^2).simplify_full()\n", "eq2" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-f(x)^2*diff(r(t, x), t) + diff(r(t, x), t)^3 + 2*r(t, x)*diff(r(t, x), t)*diff(r(t, x), t, t) - (Lamb*r(t, x)^2 - 1)*diff(r(t, x), t) == 0" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3 = (eq2 * diff(r(t,x),t)).simplify_full()\n", "eq3" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We notice that the left-hand side of this equation is nothing but the partial derivative w.r.t. $\\tau$ of the following quantity:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/3*(Lamb*r(t, x)^2 + 3*f(x)^2 - 3*diff(r(t, x), t)^2 - 3)*r(t, x)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = (diff(r(t,x),t)^2 + 1 - f(x)^2 - (Lamb/3)*r(t,x)^2) * r(t,x) \n", "A" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bool(eq3.lhs() == diff(A, t))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Hence `eq3` tells that $A$ is independent of $\\tau$, i.e. is a function of $\\chi$ only, which we call $2 m(\\chi)$:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/3*(Lamb*r(t, x)^2 + 3*f(x)^2 - 3*diff(r(t, x), t)^2 - 3)*r(t, x) - 2*m(x) == 0" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = function('m')\n", "eq4 = A - 2*m(x) == 0\n", "eq4" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Let us solve extract $(\\partial r/\\partial\\tau)^2$ from this equation:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[diff(r(t, x), t)^2 == 1/3*(Lamb*r(t, x)^3 + 3*f(x)^2*r(t, x) + 6*m(x) - 3*r(t, x))/r(t, x)]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "drdt2_sol = solve(eq4, diff(r(t,x),t)^2)\n", "drdt2_sol" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We thus obtain the second Lemaitre-Tolman equation:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "diff(r(t, x), t)^2 == 1/3*Lamb*r(t, x)^2 + f(x)^2 + 2*m(x)/r(t, x) - 1" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LT2 = drdt2_sol[0].expand()\n", "LT2" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "1/3*Lamb*r(t, x)^2 + f(x)^2 + 2*m(x)/r(t, x) - 1" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "drdt2 = LT2.rhs()\n", "drdt2" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### $\\tau\\tau$ component\n", "\n", "The $00 = \\tau\\tau$ component of Einstein equation is" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-(8*pi*a(t, x)^3*r(t, x)^2*rho(t, x) + Lamb*a(t, x)^3*r(t, x)^2 - 2*a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt - a(t, x)^3*d(r)/dt^2 - a(t, x)^3 - 2*r(t, x)*d(a)/dx*d(r)/dx + a(t, x)*d(r)/dx^2 + 2*a(t, x)*r(t, x)*d^2(r)/dx^2)/(a(t, x)^3*r(t, x)^2)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E[0,0]" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "It is equivalent to" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "8*pi*a(t, x)^3*r(t, x)^2*rho(t, x) + Lamb*a(t, x)^3*r(t, x)^2 - 2*a(t, x)^2*r(t, x)*diff(a(t, x), t)*diff(r(t, x), t) - a(t, x)^3*diff(r(t, x), t)^2 - a(t, x)^3 - 2*r(t, x)*diff(a(t, x), x)*diff(r(t, x), x) + a(t, x)*diff(r(t, x), x)^2 + 2*a(t, x)*r(t, x)*diff(r(t, x), x, x) == 0" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq = (- E[0,0] * a(t,x)^3 * r(t,x)^2).expr() == 0\n", "eq" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "As above, we substitute for $a(\\tau,\\chi)$ the value found when solving the $\\tau\\chi$ component:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "8*pi*r(t, x)^2*rho(t, x)*diff(r(t, x), x)^3/f(x)^3 + 2*(diff(f(x), x)*diff(r(t, x), x)/f(x)^2 - diff(r(t, x), x, x)/f(x))*r(t, x)*diff(r(t, x), x) + Lamb*r(t, x)^2*diff(r(t, x), x)^3/f(x)^3 - 2*r(t, x)*diff(r(t, x), t)*diff(r(t, x), t, x)*diff(r(t, x), x)^2/f(x)^3 + diff(r(t, x), x)^3/f(x) - diff(r(t, x), t)^2*diff(r(t, x), x)^3/f(x)^3 + 2*r(t, x)*diff(r(t, x), x)*diff(r(t, x), x, x)/f(x) - diff(r(t, x), x)^3/f(x)^3 == 0" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq1 = eq.substitute_function(a, af)\n", "eq1" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "2*f(x)*r(t, x)*diff(f(x), x)*diff(r(t, x), x)^2 - 2*r(t, x)*diff(r(t, x), t)*diff(r(t, x), t, x)*diff(r(t, x), x)^2 + f(x)^2*diff(r(t, x), x)^3 + (8*pi*r(t, x)^2*rho(t, x) + Lamb*r(t, x)^2 - diff(r(t, x), t)^2 - 1)*diff(r(t, x), x)^3 == 0" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq2 = (eq1 * f(x)^3).simplify_full()\n", "eq2" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Let us substitute for $\\partial r/\\partial \\tau$ the positive square root of the value of $(\\partial r/\\partial \\tau)^2$ found when solving the $\\chi\\chi$ component:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "sqrt(1/3*Lamb*r(t, x)^2 + f(x)^2 + 2*m(x)/r(t, x) - 1)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "drdt = sqrt(drdt2)\n", "drdt" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "8*pi*r(t, x)^2*rho(t, x)*diff(r(t, x), x)^3 - 2*diff(m(x), x)*diff(r(t, x), x)^2 == 0" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3 = eq2.subs({diff(r(t,x),t): drdt, diff(r(t,x),t,x): diff(drdt, x)}).simplify_full()\n", "eq3" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "If we use the negative square root of $(\\partial r/\\partial \\tau)^2$ instead, we get the same result:" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-sqrt(1/3*Lamb*r(t, x)^2 + f(x)^2 + 2*m(x)/r(t, x) - 1)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "drdt = - sqrt(drdt2)\n", "drdt" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "8*pi*r(t, x)^2*rho(t, x)*diff(r(t, x), x)^3 - 2*diff(m(x), x)*diff(r(t, x), x)^2 == 0" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3_minus = eq2.subs({diff(r(t,x),t): drdt, diff(r(t,x),t,x): diff(drdt, x)}).simplify_full()\n", "eq3_minus" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3_minus == eq3" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Thus we continue with `eq3` and rearrange it to get the third Lemaitre-Tolman equation:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "4*pi*r(t, x)^2*rho(t, x)*diff(r(t, x), x) - diff(m(x), x) == 0" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq4 = (eq3 / (2*diff(r(t,x),x)^2)).simplify_full()\n", "eq4" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[diff(m(x), x) == 4*pi*r(t, x)^2*rho(t, x)*diff(r(t, x), x)]" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dmdx_sol = solve(eq4, diff(m(x),x))\n", "dmdx_sol" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "diff(m(x), x) == 4*pi*r(t, x)^2*rho(t, x)*diff(r(t, x), x)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LT3 = dmdx_sol[0]\n", "LT3" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### $\\theta\\theta$ and $\\phi\\phi$ components\n", "\n", "First we notice that the $\\theta\\theta$ and $\\phi\\phi$ components of the Einstein equation are equivalent:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E[3,3] == E[2,2] * sin(th)^2" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Let us thus consider only the $22 = \\theta\\theta$ component:" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "(Lamb*a(t, x)^3*r(t, x)^2 - a(t, x)^2*r(t, x)^2*d^2(a)/dt^2 - a(t, x)^2*r(t, x)*d(a)/dt*d(r)/dt - a(t, x)^3*r(t, x)*d^2(r)/dt^2 - r(t, x)*d(a)/dx*d(r)/dx + a(t, x)*r(t, x)*d^2(r)/dx^2)/a(t, x)^3" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E[2,2]" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "It is equivalent to" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-Lamb*a(t, x)^3*r(t, x)^2 + a(t, x)^2*r(t, x)^2*diff(a(t, x), t, t) + a(t, x)^2*r(t, x)*diff(a(t, x), t)*diff(r(t, x), t) + a(t, x)^3*r(t, x)*diff(r(t, x), t, t) + r(t, x)*diff(a(t, x), x)*diff(r(t, x), x) - a(t, x)*r(t, x)*diff(r(t, x), x, x) == 0" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq = (- E[2,2] * a(t,x)^3).expr() == 0\n", "eq" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We substitute for $a(\\tau,\\chi)$ the value found when solving the $\\tau\\chi$ component:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-(f(x)*r(t, x)*diff(f(x), x)*diff(r(t, x), x)^2 + (Lamb*r(t, x)^2 - r(t, x)*diff(r(t, x), t, t))*diff(r(t, x), x)^3 - (r(t, x)^2*diff(r(t, x), t, t, x) + r(t, x)*diff(r(t, x), t)*diff(r(t, x), t, x))*diff(r(t, x), x)^2)/f(x)^3 == 0" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq1 = eq.substitute_function(a, af).simplify_full()\n", "eq1" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-f(x)*r(t, x)*diff(f(x), x)*diff(r(t, x), x)^2 - (Lamb*r(t, x)^2 - r(t, x)*diff(r(t, x), t, t))*diff(r(t, x), x)^3 + (r(t, x)^2*diff(r(t, x), t, t, x) + r(t, x)*diff(r(t, x), t)*diff(r(t, x), t, x))*diff(r(t, x), x)^2 == 0" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq2 = (eq1 * f(x)^3).simplify_full()\n", "eq2" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Then we substitute for $\\partial r/\\partial\\tau$ the value obtained when solving the $\\tau\\tau$ component:" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0 == 0" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3 = eq2.subs({diff(r(t,x),t,t,x): diff(drdt,t,x), diff(r(t,x),t,t): diff(drdt,t)}).simplify_full()\n", "eq4 = eq3.subs({diff(r(t,x),t): drdt, diff(r(t,x),t,x): diff(drdt,x)}).simplify_full()\n", "eq4" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "deletable": true, "editable": true }, "source": [ "We conclude that the $\\theta\\theta$ component of Einstein equation does add any independent equation. " ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Summary\n", "\n", "Let us collect the three independent equations obtained from the Einstein equation, constituting the **Lemaître-Tolman system**:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "a(t, x) == diff(r(t, x), x)/f(x)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "diff(r(t, x), t)^2 == 1/3*Lamb*r(t, x)^2 + f(x)^2 + 2*m(x)/r(t, x) - 1" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "diff(m(x), x) == 4*pi*r(t, x)^2*rho(t, x)*diff(r(t, x), x)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for eq in [LT1, LT2, LT3]:\n", " show(eq)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The first equation is the unnumbered one just above Eq. (8.1) in Lemaître's article *L'univers en expansion*, Annales de la Société Scientifique de Bruxelles A **53**, 51 (1933), translated in English in [Gen. Relativ. Gravit. **29**, 641](http://dx.doi.org/10.1023/A:1018855621348) (1997). The second equation is Eq. (8.2) in Lemaître's article, while the third one is Eq. (8.3)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 8.0.beta6", "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.13" } }, "nbformat": 4, "nbformat_minor": 0 }