{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simon-Mars tensor and Kerr spacetime\n", "\n", "This worksheet demonstrates a few capabilities of [SageManifolds](http://sagemanifolds.obspm.fr) (version 1.0, as included in SageMath 7.5) regarding the computation of the Simon-Mars tensor.\n", "\n", "Click [here](https://raw.githubusercontent.com/sagemanifolds/SageManifolds/master/Worksheets/v1.0/SM_Simon-Mars_Kerr.ipynb) to download the worksheet 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 7.5 is required to run this worksheet:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'SageMath version 7.5.1, Release Date: 2017-01-15'" ] }, "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": { "collapsed": true }, "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": { "collapsed": true }, "outputs": [], "source": [ "Parallelism().set(nproc=8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Spacetime manifold\n", "\n", "We declare the Kerr spacetime (or more precisely the part of the Kerr spacetime covered by Boyer-Lindquist coordinates) as a 4-dimensional manifold $\\mathcal{M}$:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4-dimensional differentiable manifold M\n" ] } ], "source": [ "M = Manifold(4, 'M', latex_name=r'\\mathcal{M}')\n", "print(M)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The standard **Boyer-Lindquist coordinates** $(t,r,\\theta,\\phi)$ are introduced by declaring a chart $X$ 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": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Chart (M, (t, r, th, ph))\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "Chart (M, (t, r, th, ph))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X. = M.chart(r't r:(0,+oo) th:(0,pi):\\theta ph:(0,2*pi):\\phi') \n", "print(X) ; X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Metric tensor

\n", "\n", "

The 2 parameters $m$ and $a$ of the Kerr spacetime are declared as symbolic variables:

" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "(m, a)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('m, a', domain='real')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Let us introduce the spacetime metric $g$ and set its components in the coordinate frame associated with Boyer-Lindquist coordinates, which is the current manifold's default frame:

" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "g = (2*m*r/(a^2*cos(th)^2 + r^2) - 1) dt*dt - 2*a*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) dt*dph + (a^2*cos(th)^2 + r^2)/(a^2 - 2*m*r + r^2) dr*dr + (a^2*cos(th)^2 + r^2) dth*dth - 2*a*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) dph*dt + (2*a^2*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) + a^2 + r^2)*sin(th)^2 dph*dph" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = M.lorentzian_metric('g')\n", "rho2 = r^2 + (a*cos(th))^2\n", "Delta = r^2 -2*m*r + a^2\n", "g[0,0] = -(1-2*m*r/rho2)\n", "g[0,3] = -2*a*m*r*sin(th)^2/rho2\n", "g[1,1], g[2,2] = rho2/Delta, rho2\n", "g[3,3] = (r^2+a^2+2*m*r*(a*sin(th))^2/rho2)*sin(th)^2\n", "g.display()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[ 2*m*r/(a^2*cos(th)^2 + r^2) - 1 0 0 -2*a*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2)]\n", "[ 0 (a^2*cos(th)^2 + r^2)/(a^2 - 2*m*r + r^2) 0 0]\n", "[ 0 0 a^2*cos(th)^2 + r^2 0]\n", "[ -2*a*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) 0 0 (2*a^2*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) + a^2 + r^2)*sin(th)^2]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The Levi-Civita connection $\\nabla$ associated with $g$:

" ] }, { "cell_type": "code", "execution_count": 9, "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": [ "nabla = g.connection() ; print(nabla)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

As a check, we verify that the covariant derivative of $g$ with respect to $\\nabla$ vanishes identically:

" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "nabla_g(g) = 0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nabla(g).display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Killing vector

\n", "

The default vector frame on the spacetime manifold is the coordinate basis associated with Boyer-Lindquist coordinates:

" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M.default_frame() is X.frame()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Coordinate frame (M, (d/dt,d/dr,d/dth,d/dph))" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.frame()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Let us consider the first vector field of this frame:

" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Vector field d/dt on the 4-dimensional differentiable manifold M" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xi = X.frame()[0] ; xi" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Vector field d/dt on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "print(xi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The 1-form associated to it by metric duality is

" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1-form xi_form on the 4-dimensional differentiable manifold M\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "xi_form = -(a^2*cos(th)^2 - 2*m*r + r^2)/(a^2*cos(th)^2 + r^2) dt - 2*a*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) dph" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xi_form = xi.down(g)\n", "xi_form.set_name('xi_form', r'\\underline{\\xi}')\n", "print(xi_form) ; xi_form.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Its covariant derivative is

" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field nabla_g(xi_form) of type (0,2) on the 4-dimensional differentiable manifold M\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "nabla_g(xi_form) = (a^2*m*cos(th)^2 - m*r^2)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dt*dr + 2*a^2*m*r*cos(th)*sin(th)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dt*dth - (a^2*m*cos(th)^2 - m*r^2)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dr*dt + (a^3*m*cos(th)^2 - a*m*r^2)*sin(th)^2/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dr*dph - 2*a^2*m*r*cos(th)*sin(th)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dth*dt + 2*(a^3*m*r + a*m*r^3)*cos(th)*sin(th)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dth*dph - (a^3*m*cos(th)^2 - a*m*r^2)*sin(th)^2/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dph*dr - 2*(a^3*m*r + a*m*r^3)*cos(th)*sin(th)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dph*dth" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nab_xi = nabla(xi_form)\n", "print(nab_xi) ; nab_xi.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Let us check that the Killing equation is satisfied:

" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nab_xi.symmetrize().display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Equivalently, we check that the Lie derivative of the metric along $\\xi$ vanishes:

" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.lie_der(xi).display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Thank to Killing equation, $\\nabla_g \\underline{\\xi}$ is antisymmetric. We may therefore define a 2-form by $F := - \\nabla_g \\xi$. Here we enforce the antisymmetry by calling the function antisymmetrize() on nab_xi:

" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2-form F on the 4-dimensional differentiable manifold M\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "F = -(a^2*m*cos(th)^2 - m*r^2)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dt/\\dr - 2*a^2*m*r*cos(th)*sin(th)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dt/\\dth - (a^3*m*cos(th)^2 - a*m*r^2)*sin(th)^2/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dr/\\dph - 2*(a^3*m*r + a*m*r^3)*cos(th)*sin(th)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dth/\\dph" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F = - nab_xi.antisymmetrize()\n", "F.set_name('F')\n", "print(F)\n", "F.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

We check that

" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F == - nab_xi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The squared norm of the Killing vector is:

" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Scalar field lambda on the 4-dimensional differentiable manifold M\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "lambda: M --> R\n", " (t, r, th, ph) |--> (a^2*cos(th)^2 - 2*m*r + r^2)/(a^2*cos(th)^2 + r^2)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lamb = - g(xi,xi)\n", "lamb.set_name('lambda', r'\\lambda')\n", "print(lamb)\n", "lamb.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Instead of invoking $g(\\xi,\\xi)$, we could have evaluated $\\lambda$ by means of the 1-form $\\underline{\\xi}$ acting on the vector field $\\xi$:

" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lamb == - xi_form(xi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

or, using index notation as $\\lambda = - \\xi_a \\xi^a$:

" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lamb == - ( xi_form['_a']*xi['^a'] )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Curvature

\n", "

The Riemann curvature tensor associated with $g$ is

" ] }, { "cell_type": "code", "execution_count": 24, "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": [ "Riem = g.riemann()\n", "print(Riem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The component $R^0_{\\ \\, 123} = R^t_{\\ \\, r\\theta\\phi}$ is

" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-((a^7*m - 2*a^5*m^2*r + a^5*m*r^2)*cos(th)*sin(th)^5 + (a^7*m + 2*a^5*m^2*r + 6*a^5*m*r^2 - 6*a^3*m^2*r^3 + 5*a^3*m*r^4)*cos(th)*sin(th)^3 - 2*(a^7*m - a^5*m*r^2 - 5*a^3*m*r^4 - 3*a*m*r^6)*cos(th)*sin(th))/(a^2*r^6 - 2*m*r^7 + r^8 + (a^8 - 2*a^6*m*r + a^6*r^2)*cos(th)^6 + 3*(a^6*r^2 - 2*a^4*m*r^3 + a^4*r^4)*cos(th)^4 + 3*(a^4*r^4 - 2*a^2*m*r^5 + a^2*r^6)*cos(th)^2)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Riem[0,1,2,3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The Ricci tensor:

" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "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": "markdown", "metadata": {}, "source": [ "

Let us check that the Kerr metric is a vacuum solution of Einstein equation, i.e. that the Ricci tensor vanishes identically:

" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Ric(g) = 0" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ric.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The Weyl conformal curvature tensor is

" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field C(g) of type (1,3) on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "C = g.weyl()\n", "print(C)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Let us exhibit two of its components $C^0_{\\ \\, 123}$ and $C^0_{\\ \\, 101}$:

" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-((a^7*m - 2*a^5*m^2*r + a^5*m*r^2)*cos(th)*sin(th)^5 + (a^7*m + 2*a^5*m^2*r + 6*a^5*m*r^2 - 6*a^3*m^2*r^3 + 5*a^3*m*r^4)*cos(th)*sin(th)^3 - 2*(a^7*m - a^5*m*r^2 - 5*a^3*m*r^4 - 3*a*m*r^6)*cos(th)*sin(th))/(a^2*r^6 - 2*m*r^7 + r^8 + (a^8 - 2*a^6*m*r + a^6*r^2)*cos(th)^6 + 3*(a^6*r^2 - 2*a^4*m*r^3 + a^4*r^4)*cos(th)^4 + 3*(a^4*r^4 - 2*a^2*m*r^5 + a^2*r^6)*cos(th)^2)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "C[0,1,2,3]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "(3*a^4*m*r*cos(th)^4 + 3*a^2*m*r^3 + 2*m*r^5 - (9*a^4*m*r + 7*a^2*m*r^3)*cos(th)^2)/(a^2*r^6 - 2*m*r^7 + r^8 + (a^8 - 2*a^6*m*r + a^6*r^2)*cos(th)^6 + 3*(a^6*r^2 - 2*a^4*m*r^3 + a^4*r^4)*cos(th)^4 + 3*(a^4*r^4 - 2*a^2*m*r^5 + a^2*r^6)*cos(th)^2)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "C[0,1,0,1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

To form the Simon-Mars tensor, we need the fully covariant (type-(0,4) tensor) form of the Weyl tensor (i.e. $C_{\\alpha\\beta\\mu\\nu} = g_{\\alpha\\sigma} C^\\sigma_{\\ \\, \\beta\\mu\\nu}$); we get it by lowering the first index with the metric:

" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field of type (0,4) on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "Cd = C.down(g)\n", "print(Cd)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The (monoterm) symmetries of this tensor are those inherited from the Weyl tensor, i.e. the antisymmetry on the last two indices (position 2 and 3, the first index being at position 0):

" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "no symmetry; antisymmetry: (2, 3)\n" ] } ], "source": [ "Cd.symmetries()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Actually, Cd is also antisymmetric with respect to the first two indices (positions 0 and 1), as we can check:

" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Cd == Cd.antisymmetrize(0,1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

To take this symmetry into account explicitely, we set

" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ "Cd = Cd.antisymmetrize(0,1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Hence we have now

" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "no symmetry; antisymmetries: [(0, 1), (2, 3)]\n" ] } ], "source": [ "Cd.symmetries()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Simon-Mars tensor

\n", "

The Simon-Mars tensor with respect to the Killing vector $\\xi$ is a rank-3 tensor introduced by Marc Mars in 1999 (Class. Quantum Grav. 16, 2507). It has the remarkable property to vanish identically if, and only if, the spacetime $(\\mathcal{M},g)$ is locally isometric to a Kerr spacetime.

\n", "

Let us evaluate the Simon-Mars tensor by following the formulas given in Mars' article. The starting point is the self-dual complex 2-form associated with the Killing 2-form $F$, i.e. the object $\\mathcal{F} := F + i \\, {}^* F$, where ${}^*F$ is the Hodge dual of $F$:

" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2-form FF on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "FF = F + I * F.hodge_dual(g)\n", "FF.set_name('FF', r'\\mathcal{F}') ; print(FF)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "FF = -(a^2*m*cos(th)^2 + 2*I*a*m*r*cos(th) - m*r^2)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dt/\\dr + (I*a^3*m*cos(th)^2 - 2*a^2*m*r*cos(th) - I*a*m*r^2)*sin(th)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dt/\\dth + (-4*I*a^4*m^2*r^2*cos(th)*sin(th)^4 + (a^3*m*r^4 - 2*a*m^2*r^5 + a*m*r^6 - (a^7*m - 2*a^5*m^2*r + a^5*m*r^2)*cos(th)^4 - (2*I*a^6*m*r + 2*I*a^4*m*r^3)*cos(th)^3 - (-4*I*a^4*m^2*r^2 + 2*I*a^4*m*r^3 - 4*I*a^2*m^2*r^4 + 2*I*a^2*m*r^5)*cos(th))*sin(th)^2)/(a^2*r^6 - 2*m*r^7 + r^8 + (a^8 - 2*a^6*m*r + a^6*r^2)*cos(th)^6 + 3*(a^6*r^2 - 2*a^4*m*r^3 + a^4*r^4)*cos(th)^4 + 3*(a^4*r^4 - 2*a^2*m*r^5 + a^2*r^6)*cos(th)^2) dr/\\dph - ((I*a^4*m + I*a^2*m*r^2)*sin(th)^3 + (-I*a^4*m + I*m*r^4 + 2*(a^3*m*r + a*m*r^3)*cos(th))*sin(th))/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dth/\\dph" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "FF.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Let us check that $\\mathcal{F}$ is self-dual, i.e. that it obeys ${}^* \\mathcal{F} = -i \\mathcal{F}$:

" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "FF.hodge_dual(g) == - I * FF" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us form the right self-dual of the Weyl tensor as follows\n", "$$\\mathcal{C}_{\\alpha\\beta\\mu\\nu} = C_{\\alpha\\beta\\mu\\nu} + \\frac{i}{2} \\epsilon^{\\rho\\sigma}_{\\ \\ \\ \\mu\\nu} \\, C_{\\alpha\\beta\\rho\\sigma},$$\n", "where $\\epsilon^{\\rho\\sigma}_{\\ \\ \\ \\mu\\nu}$ is associated to the Levi-Civita tensor $\\epsilon_{\\rho\\sigma\\mu\\nu}$ and is obtained by" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field of type (2,2) on the 4-dimensional differentiable manifold M\n", "no symmetry; antisymmetries: [(0, 1), (2, 3)]\n" ] } ], "source": [ "eps = g.volume_form(2) # 2 = the first 2 indices are contravariant\n", "print(eps)\n", "eps.symmetries()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The right self-dual Weyl tensor is then

" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field CC of type (0,4) on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "CC = Cd + I/2*( eps['^rs_..']*Cd['_..rs'] )\n", "CC.set_name('CC', r'\\mathcal{C}') ; print(CC)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "no symmetry; antisymmetries: [(0, 1), (2, 3)]\n" ] } ], "source": [ "CC.symmetries()" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "(a^5*m*cos(th)^5 + 3*I*a^4*m*r*cos(th)^4 + 3*I*a^2*m*r^3 + 2*I*m*r^5 - (3*a^5*m + 5*a^3*m*r^2)*cos(th)^3 + (-9*I*a^4*m*r - 7*I*a^2*m*r^3)*cos(th)^2 + 3*(3*a^3*m*r^2 + 2*a*m*r^4)*cos(th))*sin(th)/(a^6*cos(th)^6 + 3*a^4*r^2*cos(th)^4 + 3*a^2*r^4*cos(th)^2 + r^6)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "CC[0,1,2,3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The Ernst 1-form $\\sigma_\\alpha = 2 \\mathcal{F}_{\\mu\\alpha} \\, \\xi^\\mu$ (0 = contraction on the first index of $\\mathcal{F}$):

" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [], "source": [ "sigma = 2*FF.contract(0, xi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Instead of invoking the function contract(), we could have used the index notation to denote the contraction:

" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "True" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigma == 2*( FF['_ma']*xi['^m'] )" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1-form sigma on the 4-dimensional differentiable manifold M\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "sigma = -(2*a^2*m*cos(th)^2 + 4*I*a*m*r*cos(th) - 2*m*r^2)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dr + (2*I*a^3*m*cos(th)^2 - 4*a^2*m*r*cos(th) - 2*I*a*m*r^2)*sin(th)/(a^4*cos(th)^4 + 2*a^2*r^2*cos(th)^2 + r^4) dth" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigma.set_name('sigma', r'\\sigma') ; print(sigma)\n", "sigma.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The symmetric bilinear form $\\gamma = \\lambda \\, g + \\underline{\\xi}\\otimes\\underline{\\xi}$:

" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field of symmetric bilinear forms gamma on the 4-dimensional differentiable manifold M\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "gamma = (a^2*cos(th)^2 - 2*m*r + r^2)/(a^2 - 2*m*r + r^2) dr*dr + (a^2*cos(th)^2 - 2*m*r + r^2) dth*dth + (2*a^2*m*r*sin(th)^4 - (2*a^2*m*r - a^2*r^2 + 2*m*r^3 - r^4 - (a^4 + a^2*r^2)*cos(th)^2)*sin(th)^2)/(a^2*cos(th)^2 + r^2) dph*dph" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gamma = lamb*g + xi_form * xi_form\n", "gamma.set_name('gamma', r'\\gamma') ; print(gamma)\n", "gamma.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Final computation leading to the Simon-Mars tensor:\n", "\n", "First we evaluate\n", "$$ S^{(1)}_{\\alpha\\beta\\gamma} = 4 \\mathcal{C}_{\\mu\\alpha\\nu\\beta} \\, \\xi^\\mu \\, \\xi^\\nu \\, \\sigma_\\gamma $$" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field of type (0,3) on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "S1 = 4*( CC.contract(0,xi).contract(1,xi) ) * sigma\n", "print(S1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we form the tensor\n", "$$ S^{(2)}_{\\alpha\\beta\\gamma} = - \\gamma_{\\alpha\\beta} \\, \\mathcal{C}_{\\rho\\gamma\\mu\\nu} \\, \\xi^\\rho \\, \\mathcal{F}^{\\mu\\nu} $$\n", "by first computing $\\mathcal{C}_{\\rho\\gamma\\mu\\nu} \\, \\xi^\\rho$:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field of type (0,3) on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "xiCC = CC['_.r..']*xi['^r']\n", "print(xiCC)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

We use the index notation to perform the double contraction $\\mathcal{C}_{\\gamma\\rho\\mu\\nu} \\mathcal{F}^{\\mu\\nu}$:

" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [], "source": [ "FFuu = FF.up(g)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field of type (0,3) on the 4-dimensional differentiable manifold M\n", "symmetry: (0, 1); no antisymmetry\n" ] } ], "source": [ "S2 = gamma * ( xiCC['_.mn']*FFuu['^mn'] )\n", "print(S2)\n", "S2.symmetries()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Simon-Mars tensor with respect to $\\xi$ is obtained by antisymmetrizing $S^{(1)}$ and $S^{(2)}$ on their last two indices and adding them:\n", "$$ S_{\\alpha\\beta\\gamma} = S^{(1)}_{\\alpha[\\beta\\gamma]} + S^{(2)}_{\\alpha[\\beta\\gamma]} $$\n", "We use the index notation for the antisymmetrization:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [], "source": [ "S1A = S1['_a[bc]']\n", "S2A = S2['_a[bc]']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

An equivalent writing would have been (the last two indices being in position 1 and 2):

" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# S1A = S1.antisymmetrize(1,2)\n", "# S2A = S2.antisymmetrize(1,2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The Simon-Mars tensor is

" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor field S of type (0,3) on the 4-dimensional differentiable manifold M\n", "no symmetry; antisymmetry: (1, 2)\n" ] } ], "source": [ "S = S1A + S2A\n", "S.set_name('S') ; print(S)\n", "S.symmetries()" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "S = 0" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**We thus recover the fact that the Simon-Mars tensor vanishes identically in Kerr spacetime.**\n", "\n", "To check that the above computation was not trival, here is the component 112=$rr\\theta$ for each of the two parts of the Simon-Mars tensor:" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "-1/2*(8*a^8*m^2*cos(th)^7 + 40*I*a^7*m^2*r*cos(th)^6 - 16*I*a*m^3*r^6 + 8*I*a*m^2*r^7 - 8*(2*a^6*m^3*r + 9*a^6*m^2*r^2)*cos(th)^5 + (-80*I*a^5*m^3*r^2 - 40*I*a^5*m^2*r^3)*cos(th)^4 + 40*(4*a^4*m^3*r^3 - a^4*m^2*r^4)*cos(th)^3 + (160*I*a^3*m^3*r^4 - 72*I*a^3*m^2*r^5)*cos(th)^2 - 40*(2*a^2*m^3*r^5 - a^2*m^2*r^6)*cos(th))*sin(th)/(a^2*r^10 - 2*m*r^11 + r^12 + (a^12 - 2*a^10*m*r + a^10*r^2)*cos(th)^10 + 5*(a^10*r^2 - 2*a^8*m*r^3 + a^8*r^4)*cos(th)^8 + 10*(a^8*r^4 - 2*a^6*m*r^5 + a^6*r^6)*cos(th)^6 + 10*(a^6*r^6 - 2*a^4*m*r^7 + a^4*r^8)*cos(th)^4 + 5*(a^4*r^8 - 2*a^2*m*r^9 + a^2*r^10)*cos(th)^2)" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S1A[1,1,2]" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "1/2*(8*a^8*m^2*cos(th)^7 + 40*I*a^7*m^2*r*cos(th)^6 - 16*I*a*m^3*r^6 + 8*I*a*m^2*r^7 - 8*(2*a^6*m^3*r + 9*a^6*m^2*r^2)*cos(th)^5 + (-80*I*a^5*m^3*r^2 - 40*I*a^5*m^2*r^3)*cos(th)^4 + 40*(4*a^4*m^3*r^3 - a^4*m^2*r^4)*cos(th)^3 + (160*I*a^3*m^3*r^4 - 72*I*a^3*m^2*r^5)*cos(th)^2 - 40*(2*a^2*m^3*r^5 - a^2*m^2*r^6)*cos(th))*sin(th)/(a^2*r^10 - 2*m*r^11 + r^12 + (a^12 - 2*a^10*m*r + a^10*r^2)*cos(th)^10 + 5*(a^10*r^2 - 2*a^8*m*r^3 + a^8*r^4)*cos(th)^8 + 10*(a^8*r^4 - 2*a^6*m*r^5 + a^6*r^6)*cos(th)^6 + 10*(a^6*r^6 - 2*a^4*m*r^7 + a^4*r^8)*cos(th)^4 + 5*(a^4*r^8 - 2*a^2*m*r^9 + a^2*r^10)*cos(th)^2)" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S2A[1,1,2]" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "0" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S1A[1,1,2] + S2A[1,1,2]" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 7.5.1", "language": "", "name": "sagemath" }, "language": "python", "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 }