{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ZAMO frame in Kerr spacetime\n", "\n", "This Jupyter/SageMath notebook is relative to the lectures\n", "[Geometry and physics of black holes](https://relativite.obspm.fr/blackholes/).\n", "\n", "The corresponding tools have been developed within the [SageManifolds](https://sagemanifolds.obspm.fr) project." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*NB:* a version of [SageMath](https://www.sagemath.org/) at least equal to 9.1 is required to run this notebook:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'SageMath version 9.2.beta13, Release Date: 2020-09-21'" ] }, "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": {}, "outputs": [], "source": [ "%display latex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We ask for running tensor computations in parallel on 8 threads:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "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 it covered by Boyer-Lindquist coordinates) as a 4-dimensional Lorentzian manifold $\\mathcal{M}$:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4-dimensional Lorentzian manifold M\n" ] } ], "source": [ "M = Manifold(4, 'M', latex_name=r'\\mathcal{M}', structure='Lorentzian')\n", "print(M)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then introduce the standard Boyer-Lindquist coordinates as a chart `BL` (for *Boyer-Lindquist*) on $\\mathcal{M}$, via the method `chart()`, the argument of which is a string\n", "(delimited by `r\"...\"` because of the backslash symbols) expressing the coordinates names, their ranges (the default is $(-\\infty,+\\infty)$) and their LaTeX symbols:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Chart (M, (t, r, th, ph))\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\mathcal{M},(t, r, {\\theta}, {\\phi})\\right)\n", "\\end{math}" ], "text/plain": [ "Chart (M, (t, r, th, ph))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BL. = M.chart(r\"t r th:(0,pi):\\theta ph:(0,2*pi):\\phi\") \n", "print(BL); BL" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(t, r\\right)\n", "\\end{math}" ], "text/plain": [ "(t, r)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BL[0], BL[1]" ] }, { "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": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(m, a\\right)\n", "\\end{math}" ], "text/plain": [ "(m, a)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('m, a', domain='real')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get the (yet undefined) spacetime metric:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "g = M.metric()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The metric is set by its components in the coordinate frame associated with Boyer-Lindquist coordinates, which is the current manifold's default frame:

" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}g = \\left( \\frac{2 \\, m r}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} - 1 \\right) \\mathrm{d} t\\otimes \\mathrm{d} t + \\left( -\\frac{2 \\, a m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\right) \\mathrm{d} t\\otimes \\mathrm{d} {\\phi} + \\left( \\frac{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}{a^{2} - 2 \\, m r + r^{2}} \\right) \\mathrm{d} r\\otimes \\mathrm{d} r + \\left( a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2} \\right) \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + \\left( -\\frac{2 \\, a m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\right) \\mathrm{d} {\\phi}\\otimes \\mathrm{d} t + {\\left(\\frac{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} + a^{2} + r^{2}\\right)} \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\n", "\\end{math}" ], "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": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "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": "markdown", "metadata": {}, "source": [ "

A matrix view of the components with respect to the manifold's default vector frame:

" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "\\frac{2 \\, m r}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} - 1 & 0 & 0 & -\\frac{2 \\, a m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\\\\n", "0 & \\frac{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}{a^{2} - 2 \\, m r + r^{2}} & 0 & 0 \\\\\n", "0 & 0 & a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2} & 0 \\\\\n", "-\\frac{2 \\, a m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} & 0 & 0 & {\\left(\\frac{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} + a^{2} + r^{2}\\right)} \\sin\\left({\\theta}\\right)^{2}\n", "\\end{array}\\right)\n", "\\end{math}" ], "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": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

The list of the non-vanishing components:

" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} g_{ \\, t \\, t }^{ \\phantom{\\, t}\\phantom{\\, t} } & = & \\frac{2 \\, m r}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} - 1 \\\\ g_{ \\, t \\, {\\phi} }^{ \\phantom{\\, t}\\phantom{\\, {\\phi}} } & = & -\\frac{2 \\, a m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\\\ g_{ \\, r \\, r }^{ \\phantom{\\, r}\\phantom{\\, r} } & = & \\frac{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}{a^{2} - 2 \\, m r + r^{2}} \\\\ g_{ \\, {\\theta} \\, {\\theta} }^{ \\phantom{\\, {\\theta}}\\phantom{\\, {\\theta}} } & = & a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2} \\\\ g_{ \\, {\\phi} \\, t }^{ \\phantom{\\, {\\phi}}\\phantom{\\, t} } & = & -\\frac{2 \\, a m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\\\ g_{ \\, {\\phi} \\, {\\phi} }^{ \\phantom{\\, {\\phi}}\\phantom{\\, {\\phi}} } & = & {\\left(\\frac{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2}}{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} + a^{2} + r^{2}\\right)} \\sin\\left({\\theta}\\right)^{2} \\end{array}\n", "\\end{math}" ], "text/plain": [ "g_t,t = 2*m*r/(a^2*cos(th)^2 + r^2) - 1 \n", "g_t,ph = -2*a*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) \n", "g_r,r = (a^2*cos(th)^2 + r^2)/(a^2 - 2*m*r + r^2) \n", "g_th,th = a^2*cos(th)^2 + r^2 \n", "g_ph,t = -2*a*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) \n", "g_ph,ph = (2*a^2*m*r*sin(th)^2/(a^2*cos(th)^2 + r^2) + a^2 + r^2)*sin(th)^2 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.display_comp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ZAMO frame\n", "The default vector frame on the spacetime manifold is the coordinate basis associated with Boyer-Lindquist coordinates:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}\n", "\\end{math}" ], "text/plain": [ "True" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M.default_frame() is BL.frame()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\mathcal{M}, \\left(\\frac{\\partial}{\\partial t },\\frac{\\partial}{\\partial r },\\frac{\\partial}{\\partial {\\theta} },\\frac{\\partial}{\\partial {\\phi} }\\right)\\right)\n", "\\end{math}" ], "text/plain": [ "Coordinate frame (M, (d/dt,d/dr,d/dth,d/dph))" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BL.frame()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ZAMO 4-velocity is defined by its components w.r.t. the Boyer-Lindquist frame:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e_0 = \\left( \\frac{\\sqrt{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)} {\\left(a^{2} + r^{2}\\right)}}}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}} \\right) \\frac{\\partial}{\\partial t } + \\left( \\frac{2 \\, a m r}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sqrt{{\\left(2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)} {\\left(a^{2} + r^{2}\\right)}\\right)} {\\left(a^{2} - 2 \\, m r + r^{2}\\right)}}} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "e0 = sqrt(2*a^2*m*r*sin(th)^2 + (a^2*cos(th)^2 + r^2)*(a^2 + r^2))/(sqrt(a^2*cos(th)^2 + r^2)*sqrt(a^2 - 2*m*r + r^2)) d/dt + 2*a*m*r/(sqrt(a^2*cos(th)^2 + r^2)*sqrt((2*a^2*m*r*sin(th)^2 + (a^2*cos(th)^2 + r^2)*(a^2 + r^2))*(a^2 - 2*m*r + r^2))) d/dph" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e0 = M.vector_field(name='e0', latex_name=r'e_0')\n", "rho = sqrt(rho2)\n", "e0[0] = sqrt(rho2*(r^2 + a^2) + 2*a^2*m*r*sin(th)^2)/(rho*sqrt(Delta))\n", "e0[3] = 2*a*m*r/(rho*sqrt(Delta*(rho2*(r^2 + a^2) + 2*a^2*m*r*sin(th)^2)))\n", "e0.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We check that is a unit timelike vector:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}-1\n", "\\end{math}" ], "text/plain": [ "-1" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g(e0, e0).expr()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and that it is future-directed, by computing its scalar product with the global null vector $k$, which generates the ingoing principal null geodesics:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}k = \\left( \\frac{a^{2} + r^{2}}{a^{2} - 2 \\, m r + r^{2}} \\right) \\frac{\\partial}{\\partial t } -\\frac{\\partial}{\\partial r } + \\left( \\frac{a}{a^{2} - 2 \\, m r + r^{2}} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "k = (a^2 + r^2)/(a^2 - 2*m*r + r^2) d/dt - d/dr + a/(a^2 - 2*m*r + r^2) d/dph" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "k = M.vector_field([(r^2 + a^2)/Delta, -1, 0, a/Delta],\n", " name='k')\n", "k.display()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\frac{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} {\\left(a^{2} + r^{2}\\right)}}{\\sqrt{2 \\, a^{2} m r + a^{2} r^{2} + r^{4} + {\\left(a^{4} - 2 \\, a^{2} m r + a^{2} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}}\n", "\\end{math}" ], "text/plain": [ "-sqrt(a^2*cos(th)^2 + r^2)*(a^2 + r^2)/(sqrt(2*a^2*m*r + a^2*r^2 + r^4 + (a^4 - 2*a^2*m*r + a^2*r^2)*cos(th)^2)*sqrt(a^2 - 2*m*r + r^2))" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g(k, e0).expr().factor()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The spacelike vectors of the ZAMO frame:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e_1 = \\left( \\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}}}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\frac{\\partial}{\\partial r }\n", "\\end{math}" ], "text/plain": [ "e1 = sqrt(a^2 - 2*m*r + r^2)/sqrt(a^2*cos(th)^2 + r^2) d/dr" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e1 = M.vector_field([0, sqrt(Delta)/rho, 0, 0],\n", " name='e1', latex_name=r'e_1')\n", "e1.display()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e_2 = \\left( \\frac{1}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "e2 = 1/sqrt(a^2*cos(th)^2 + r^2) d/dth" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e2 = M.vector_field([0, 0, 1/rho, 0],\n", " name='e2', latex_name=r'e_2')\n", "e2.display()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e_3 = \\left( \\frac{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}}{\\sqrt{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)} {\\left(a^{2} + r^{2}\\right)}} \\sin\\left({\\theta}\\right)} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "e3 = sqrt(a^2*cos(th)^2 + r^2)/(sqrt(2*a^2*m*r*sin(th)^2 + (a^2*cos(th)^2 + r^2)*(a^2 + r^2))*sin(th)) d/dph" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e3 = M.vector_field(name='e3', latex_name=r'e_3')\n", "e3[3] = rho/(sin(th)*sqrt(rho^2*(r^2 + a^2) + 2*a^2*m*r*sin(th)^2))\n", "e3.display()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\mathcal{M}, \\left(e_{0},e_{1},e_{2},e_{3}\\right)\\right)\n", "\\end{math}" ], "text/plain": [ "Vector frame (M, (e_0,e_1,e_2,e_3))" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ZF = M.vector_frame('e', [e0, e1, e2, e3])\n", "ZF" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e_{0} = \\left( \\frac{\\sqrt{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)} {\\left(a^{2} + r^{2}\\right)}}}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}} \\right) \\frac{\\partial}{\\partial t } + \\left( \\frac{2 \\, a m r}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sqrt{{\\left(2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)} {\\left(a^{2} + r^{2}\\right)}\\right)} {\\left(a^{2} - 2 \\, m r + r^{2}\\right)}}} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "e_0 = sqrt(2*a^2*m*r*sin(th)^2 + (a^2*cos(th)^2 + r^2)*(a^2 + r^2))/(sqrt(a^2*cos(th)^2 + r^2)*sqrt(a^2 - 2*m*r + r^2)) d/dt + 2*a*m*r/(sqrt(a^2*cos(th)^2 + r^2)*sqrt((2*a^2*m*r*sin(th)^2 + (a^2*cos(th)^2 + r^2)*(a^2 + r^2))*(a^2 - 2*m*r + r^2))) d/dph" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e_{1} = \\left( \\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}}}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\frac{\\partial}{\\partial r }\n", "\\end{math}" ], "text/plain": [ "e_1 = sqrt(a^2 - 2*m*r + r^2)/sqrt(a^2*cos(th)^2 + r^2) d/dr" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e_{2} = \\left( \\frac{1}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "e_2 = 1/sqrt(a^2*cos(th)^2 + r^2) d/dth" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e_{3} = \\left( \\frac{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}}{\\sqrt{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)} {\\left(a^{2} + r^{2}\\right)}} \\sin\\left({\\theta}\\right)} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "e_3 = sqrt(a^2*cos(th)^2 + r^2)/(sqrt(2*a^2*m*r*sin(th)^2 + (a^2*cos(th)^2 + r^2)*(a^2 + r^2))*sin(th)) d/dph" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for v in ZF:\n", " show(v.display())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check that the ZAMO frame is orthonormal:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "-1 & 0 & 0 & 0 \\\\\n", "0 & 1 & 0 & 0 \\\\\n", "0 & 0 & 1 & 0 \\\\\n", "0 & 0 & 0 & 1\n", "\\end{array}\\right)\n", "\\end{math}" ], "text/plain": [ "[-1 0 0 0]\n", "[ 0 1 0 0]\n", "[ 0 0 1 0]\n", "[ 0 0 0 1]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix([[g(u, v).expr() for v in ZF] for u in ZF]) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The ZAMO coframe" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e^{0} = \\left( \\frac{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}}{\\sqrt{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + a^{2} r^{2} + r^{4} + {\\left(a^{4} + a^{2} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}}} \\right) \\mathrm{d} t\n", "\\end{math}" ], "text/plain": [ "e^0 = sqrt(a^2*cos(th)^2 + r^2)*sqrt(a^2 - 2*m*r + r^2)/sqrt(2*a^2*m*r*sin(th)^2 + a^2*r^2 + r^4 + (a^4 + a^2*r^2)*cos(th)^2) dt" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e^{1} = \\left( \\frac{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}}{\\sqrt{a^{2} - 2 \\, m r + r^{2}}} \\right) \\mathrm{d} r\n", "\\end{math}" ], "text/plain": [ "e^1 = sqrt(a^2*cos(th)^2 + r^2)/sqrt(a^2 - 2*m*r + r^2) dr" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e^{2} = \\left( \\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\right) \\mathrm{d} {\\theta}\n", "\\end{math}" ], "text/plain": [ "e^2 = sqrt(a^2*cos(th)^2 + r^2) dth" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}e^{3} = \\left( -\\frac{2 \\, a m r \\sin\\left({\\theta}\\right)}{\\sqrt{2 \\, a^{2} m r + a^{2} r^{2} + r^{4} + {\\left(a^{4} - 2 \\, a^{2} m r + a^{2} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}} \\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\mathrm{d} t + \\left( \\frac{\\sqrt{2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + a^{2} r^{2} + r^{4} + {\\left(a^{4} + a^{2} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}} \\sin\\left({\\theta}\\right)}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\mathrm{d} {\\phi}\n", "\\end{math}" ], "text/plain": [ "e^3 = -2*a*m*r*sin(th)/(sqrt(2*a^2*m*r + a^2*r^2 + r^4 + (a^4 - 2*a^2*m*r + a^2*r^2)*cos(th)^2)*sqrt(a^2*cos(th)^2 + r^2)) dt + sqrt(2*a^2*m*r*sin(th)^2 + a^2*r^2 + r^4 + (a^4 + a^2*r^2)*cos(th)^2)*sin(th)/sqrt(a^2*cos(th)^2 + r^2) dph" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for f in ZF.coframe():\n", " show(f.display())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " ## 4-acceleration of the ZAMO observer" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Levi-Civita connection nabla_g associated with the Lorentzian metric g on the 4-dimensional Lorentzian manifold M\n" ] } ], "source": [ "nabla = g.connection()\n", "print(nabla)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Vector field a on the 4-dimensional Lorentzian manifold M\n" ] } ], "source": [ "A = nabla(e0).contract(e0) # use A to avoid any confusion with the Kerr parameter a\n", "A.set_name('a')\n", "print(A)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}a = -\\frac{{\\left(a^{6} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{4} r^{2} \\cos\\left({\\theta}\\right)^{2} - 4 \\, a^{2} m r^{3} \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{4} \\cos\\left({\\theta}\\right)^{2} - a^{4} r^{2} + 4 \\, a^{2} m r^{3} - 2 \\, a^{2} r^{4} - r^{6}\\right)} m}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial r } -\\frac{2 \\, {\\left(a^{2} + r^{2}\\right)} a^{2} m r \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "a = -(a^6*cos(th)^2 + 2*a^4*r^2*cos(th)^2 - 4*a^2*m*r^3*cos(th)^2 + a^2*r^4*cos(th)^2 - a^4*r^2 + 4*a^2*m*r^3 - 2*a^2*r^4 - r^6)*m/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^2) d/dr - 2*(a^2 + r^2)*a^2*m*r*cos(th)*sin(th)/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^2) d/dth" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.apply_map(factor) # factor the components for a better display\n", "A.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Display in the ZAMO frame:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}a = \\left( -\\frac{{\\left(a^{6} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{4} r^{2} \\cos\\left({\\theta}\\right)^{2} - 4 \\, a^{2} m r^{3} \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{4} \\cos\\left({\\theta}\\right)^{2} - a^{4} r^{2} + 4 \\, a^{2} m r^{3} - 2 \\, a^{2} r^{4} - r^{6}\\right)} m}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}} \\right) e_{1} -\\frac{2 \\, {\\left(a^{2} + r^{2}\\right)} a^{2} m r \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} e_{2}\n", "\\end{math}" ], "text/plain": [ "a = -(a^6*cos(th)^2 + 2*a^4*r^2*cos(th)^2 - 4*a^2*m*r^3*cos(th)^2 + a^2*r^4*cos(th)^2 - a^4*r^2 + 4*a^2*m*r^3 - 2*a^2*r^4 - r^6)*m/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)*sqrt(a^2 - 2*m*r + r^2)) e_1 - 2*(a^2 + r^2)*a^2*m*r*cos(th)*sin(th)/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)) e_2" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.apply_map(factor, frame=ZF, keep_other_components=True)\n", "A.display(ZF)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} a_{\\phantom{\\, 0}}^{\\,0} & = & 0 \\\\ a_{\\phantom{\\, 1}}^{\\,1} & = & -\\frac{{\\left(a^{6} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{4} r^{2} \\cos\\left({\\theta}\\right)^{2} - 4 \\, a^{2} m r^{3} \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{4} \\cos\\left({\\theta}\\right)^{2} - a^{4} r^{2} + 4 \\, a^{2} m r^{3} - 2 \\, a^{2} r^{4} - r^{6}\\right)} m}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}} \\\\ a_{\\phantom{\\, 2}}^{\\,2} & = & -\\frac{2 \\, {\\left(a^{2} + r^{2}\\right)} a^{2} m r \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\\\ a_{\\phantom{\\, 3}}^{\\,3} & = & 0 \\end{array}\n", "\\end{math}" ], "text/plain": [ "a^0 = 0 \n", "a^1 = -(a^6*cos(th)^2 + 2*a^4*r^2*cos(th)^2 - 4*a^2*m*r^3*cos(th)^2 + a^2*r^4*cos(th)^2 - a^4*r^2 + 4*a^2*m*r^3 - 2*a^2*r^4 - r^6)*m/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)*sqrt(a^2 - 2*m*r + r^2)) \n", "a^2 = -2*(a^2 + r^2)*a^2*m*r*cos(th)*sin(th)/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)) \n", "a^3 = 0 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.display_comp(ZF, only_nonzero=False)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}-{\\left(a^{6} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{4} r^{2} \\cos\\left({\\theta}\\right)^{2} - 4 \\, a^{2} m r^{3} \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{4} \\cos\\left({\\theta}\\right)^{2} - a^{4} r^{2} + 4 \\, a^{2} m r^{3} - 2 \\, a^{2} r^{4} - r^{6}\\right)} m\n", "\\end{math}" ], "text/plain": [ "-(a^6*cos(th)^2 + 2*a^4*r^2*cos(th)^2 - 4*a^2*m*r^3*cos(th)^2 + a^2*r^4*cos(th)^2 - a^4*r^2 + 4*a^2*m*r^3 - 2*a^2*r^4 - r^6)*m" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a1_num = A[ZF, 1].expr().numerator()\n", "a1_num" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We check the agreement with Eq. (70) of \n", "[O. Semerak, Gen. Relat. Grav. **25**, 1041 (1993)](https://doi.org/10.1007/BF00763554):" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}\n", "\\end{math}" ], "text/plain": [ "True" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bool(a1_num == m*(rho2*(r^4 - a^4) + 2*Delta*(r*a*sin(th))^2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4-rotation of the ZAMO frame" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the rotation operator as\n", "$$ \\Omega_{\\rm rot}(v) = \\nabla_{e_0} v - \\Omega_{\\rm FW}(v)$$\n", "where\n", "$$\\Omega_{\\rm FW}(v) := (a\\cdot v) e_0 - (e_0\\cdot v) a$$\n", "is the Fermi-Walker operator:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "def rotation_operator(v):\n", " return nabla(v).contract(e0) - g(A, v)*e0 + g(e0, v)*A" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us evaluate $\\Omega_{\\rm rot}(e_1)$:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left( \\frac{2 \\, a^{6} m^{2} r^{3} + 3 \\, a^{4} m r^{6} - 2 \\, a^{2} m^{2} r^{7} + 3 \\, a^{2} m r^{8} + m r^{10} + {\\left(a^{6} m - 8 \\, a^{4} m^{3}\\right)} r^{4} - {\\left(a^{10} m - 2 \\, a^{8} m^{2} r + 3 \\, a^{8} m r^{2} - 8 \\, a^{6} m^{2} r^{3} - 6 \\, a^{4} m^{2} r^{5} + a^{4} m r^{6} + {\\left(3 \\, a^{6} m + 8 \\, a^{4} m^{3}\\right)} r^{4}\\right)} \\cos\\left({\\theta}\\right)^{4} - 2 \\, {\\left(a^{8} m^{2} r + 5 \\, a^{6} m^{2} r^{3} - 8 \\, a^{4} m^{3} r^{4} + 3 \\, a^{4} m^{2} r^{5} - a^{2} m^{2} r^{7}\\right)} \\cos\\left({\\theta}\\right)^{2} + {\\left(a^{6} m + a^{4} m r^{2} - a^{2} m r^{4} - m r^{6} - {\\left(a^{6} m + 2 \\, a^{4} m r^{2} - 4 \\, a^{2} m^{2} r^{3} + a^{2} m r^{4}\\right)} \\sin\\left({\\theta}\\right)^{2}\\right)} \\sqrt{a^{4} + 2 \\, a^{2} r^{2} + r^{4} - {\\left(a^{4} - 2 \\, a^{2} m r + a^{2} r^{2}\\right)} \\sin\\left({\\theta}\\right)^{2}} \\sqrt{2 \\, a^{2} m r + a^{2} r^{2} + r^{4} + {\\left(a^{4} - 2 \\, a^{2} m r + a^{2} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}}}{{\\left(2 \\, a^{4} m r^{5} + 2 \\, a^{2} r^{8} - 2 \\, m r^{9} + r^{10} + {\\left(a^{4} - 4 \\, a^{2} m^{2}\\right)} r^{6} + {\\left(a^{10} - 4 \\, a^{8} m r - 4 \\, a^{6} m r^{3} + a^{6} r^{4} + 2 \\, {\\left(a^{8} + 2 \\, a^{6} m^{2}\\right)} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{6} + {\\left(2 \\, a^{8} m r - 8 \\, a^{6} m r^{3} - 10 \\, a^{4} m r^{5} + 3 \\, a^{4} r^{6} + 2 \\, {\\left(3 \\, a^{6} + 4 \\, a^{4} m^{2}\\right)} r^{4} + {\\left(3 \\, a^{8} - 4 \\, a^{6} m^{2}\\right)} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{4} + {\\left(4 \\, a^{6} m r^{3} - 4 \\, a^{4} m r^{5} - 8 \\, a^{2} m r^{7} + 3 \\, a^{2} r^{8} + 2 \\, {\\left(3 \\, a^{4} + 2 \\, a^{2} m^{2}\\right)} r^{6} + {\\left(3 \\, a^{6} - 8 \\, a^{4} m^{2}\\right)} r^{4}\\right)} \\cos\\left({\\theta}\\right)^{2}\\right)} \\sqrt{2 \\, a^{2} m r + a^{2} r^{2} + r^{4} + {\\left(a^{4} - 2 \\, a^{2} m r + a^{2} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}}} \\right) \\frac{\\partial}{\\partial t } + \\left( \\frac{{\\left(a^{3} m r^{2} + 3 \\, a m r^{4} - {\\left(a^{5} m - a^{3} m r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}\\right)} \\sqrt{2 \\, a^{2} m r + a^{2} r^{2} + r^{4} + {\\left(a^{4} - 2 \\, a^{2} m r + a^{2} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}}}{4 \\, a^{4} m^{2} r^{4} + 4 \\, a^{4} m r^{5} + a^{4} r^{6} + 4 \\, a^{2} m r^{7} + 2 \\, a^{2} r^{8} + r^{10} + {\\left(a^{10} - 4 \\, a^{8} m r - 4 \\, a^{6} m r^{3} + a^{6} r^{4} + 2 \\, {\\left(a^{8} + 2 \\, a^{6} m^{2}\\right)} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{6} + {\\left(4 \\, a^{8} m r - 4 \\, a^{6} m r^{3} - 8 \\, a^{4} m r^{5} + 3 \\, a^{4} r^{6} + 2 \\, {\\left(3 \\, a^{6} + 2 \\, a^{4} m^{2}\\right)} r^{4} + {\\left(3 \\, a^{8} - 8 \\, a^{6} m^{2}\\right)} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{4} + {\\left(4 \\, a^{6} m^{2} r^{2} + 8 \\, a^{6} m r^{3} + 4 \\, a^{4} m r^{5} + 6 \\, a^{4} r^{6} - 4 \\, a^{2} m r^{7} + 3 \\, a^{2} r^{8} + {\\left(3 \\, a^{6} - 8 \\, a^{4} m^{2}\\right)} r^{4}\\right)} \\cos\\left({\\theta}\\right)^{2}} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "(2*a^6*m^2*r^3 + 3*a^4*m*r^6 - 2*a^2*m^2*r^7 + 3*a^2*m*r^8 + m*r^10 + (a^6*m - 8*a^4*m^3)*r^4 - (a^10*m - 2*a^8*m^2*r + 3*a^8*m*r^2 - 8*a^6*m^2*r^3 - 6*a^4*m^2*r^5 + a^4*m*r^6 + (3*a^6*m + 8*a^4*m^3)*r^4)*cos(th)^4 - 2*(a^8*m^2*r + 5*a^6*m^2*r^3 - 8*a^4*m^3*r^4 + 3*a^4*m^2*r^5 - a^2*m^2*r^7)*cos(th)^2 + (a^6*m + a^4*m*r^2 - a^2*m*r^4 - m*r^6 - (a^6*m + 2*a^4*m*r^2 - 4*a^2*m^2*r^3 + a^2*m*r^4)*sin(th)^2)*sqrt(a^4 + 2*a^2*r^2 + r^4 - (a^4 - 2*a^2*m*r + a^2*r^2)*sin(th)^2)*sqrt(2*a^2*m*r + a^2*r^2 + r^4 + (a^4 - 2*a^2*m*r + a^2*r^2)*cos(th)^2))/((2*a^4*m*r^5 + 2*a^2*r^8 - 2*m*r^9 + r^10 + (a^4 - 4*a^2*m^2)*r^6 + (a^10 - 4*a^8*m*r - 4*a^6*m*r^3 + a^6*r^4 + 2*(a^8 + 2*a^6*m^2)*r^2)*cos(th)^6 + (2*a^8*m*r - 8*a^6*m*r^3 - 10*a^4*m*r^5 + 3*a^4*r^6 + 2*(3*a^6 + 4*a^4*m^2)*r^4 + (3*a^8 - 4*a^6*m^2)*r^2)*cos(th)^4 + (4*a^6*m*r^3 - 4*a^4*m*r^5 - 8*a^2*m*r^7 + 3*a^2*r^8 + 2*(3*a^4 + 2*a^2*m^2)*r^6 + (3*a^6 - 8*a^4*m^2)*r^4)*cos(th)^2)*sqrt(2*a^2*m*r + a^2*r^2 + r^4 + (a^4 - 2*a^2*m*r + a^2*r^2)*cos(th)^2)) d/dt + (a^3*m*r^2 + 3*a*m*r^4 - (a^5*m - a^3*m*r^2)*cos(th)^2)*sqrt(2*a^2*m*r + a^2*r^2 + r^4 + (a^4 - 2*a^2*m*r + a^2*r^2)*cos(th)^2)/(4*a^4*m^2*r^4 + 4*a^4*m*r^5 + a^4*r^6 + 4*a^2*m*r^7 + 2*a^2*r^8 + r^10 + (a^10 - 4*a^8*m*r - 4*a^6*m*r^3 + a^6*r^4 + 2*(a^8 + 2*a^6*m^2)*r^2)*cos(th)^6 + (4*a^8*m*r - 4*a^6*m*r^3 - 8*a^4*m*r^5 + 3*a^4*r^6 + 2*(3*a^6 + 2*a^4*m^2)*r^4 + (3*a^8 - 8*a^6*m^2)*r^2)*cos(th)^4 + (4*a^6*m^2*r^2 + 8*a^6*m*r^3 + 4*a^4*m*r^5 + 6*a^4*r^6 - 4*a^2*m*r^7 + 3*a^2*r^8 + (3*a^6 - 8*a^4*m^2)*r^4)*cos(th)^2) d/dph" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De1 = rotation_operator(e1)\n", "De1.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The output clearly requires some simplification. In particular, the component along $\\partial/\\partial t$ should be zero. We perform some trigonometric simplication on the components thanks to the method `apply_map`:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left( \\frac{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} - 3 \\, r^{4}\\right)} \\sqrt{2 \\, a^{2} m r + a^{2} r^{2} + r^{4} + {\\left(a^{4} - 2 \\, a^{2} m r + a^{2} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}} a m}{{\\left(a^{4} \\sin\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\sin\\left({\\theta}\\right)^{2} - a^{4} - 2 \\, a^{2} r^{2} - r^{4}\\right)}^{2} {\\left(a^{2} \\sin\\left({\\theta}\\right)^{2} - a^{2} - r^{2}\\right)}} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "(a^4*cos(th)^2 - a^2*r^2*cos(th)^2 - a^2*r^2 - 3*r^4)*sqrt(2*a^2*m*r + a^2*r^2 + r^4 + (a^4 - 2*a^2*m*r + a^2*r^2)*cos(th)^2)*a*m/((a^4*sin(th)^2 - 2*a^2*m*r*sin(th)^2 + a^2*r^2*sin(th)^2 - a^4 - 2*a^2*r^2 - r^4)^2*(a^2*sin(th)^2 - a^2 - r^2)) d/dph" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De1.apply_map(lambda x: x.trig_reduce())\n", "De1.apply_map(lambda x: x.simplify_trig())\n", "De1.apply_map(factor)\n", "De1.display()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left( \\frac{{\\left(a^{3} m r^{2} + 3 \\, a m r^{4} - {\\left(a^{5} m - a^{3} m r^{2}\\right)} \\cos\\left({\\theta}\\right)^{2}\\right)} \\sin\\left({\\theta}\\right)}{{\\left(2 \\, a^{2} m r^{3} + a^{2} r^{4} + r^{6} + {\\left(a^{6} - 2 \\, a^{4} m r + a^{4} r^{2}\\right)} \\cos\\left({\\theta}\\right)^{4} + 2 \\, {\\left(a^{4} m r + a^{4} r^{2} - a^{2} m r^{3} + a^{2} r^{4}\\right)} \\cos\\left({\\theta}\\right)^{2}\\right)} \\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) e_{3}\n", "\\end{math}" ], "text/plain": [ "(a^3*m*r^2 + 3*a*m*r^4 - (a^5*m - a^3*m*r^2)*cos(th)^2)*sin(th)/((2*a^2*m*r^3 + a^2*r^4 + r^6 + (a^6 - 2*a^4*m*r + a^4*r^2)*cos(th)^4 + 2*(a^4*m*r + a^4*r^2 - a^2*m*r^3 + a^2*r^4)*cos(th)^2)*sqrt(a^2*cos(th)^2 + r^2)) e_3" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De1.display(ZF)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\frac{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} - 3 \\, r^{4}\\right)} a m \\sin\\left({\\theta}\\right)}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} e_{3}\n", "\\end{math}" ], "text/plain": [ "-(a^4*cos(th)^2 - a^2*r^2*cos(th)^2 - a^2*r^2 - 3*r^4)*a*m*sin(th)/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)) e_3" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De1.apply_map(factor, frame=ZF, keep_other_components=True)\n", "De1.display(ZF)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now evaluate $\\Omega_{\\rm rot}(e_2)$:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left( -\\frac{2 \\, \\sqrt{a^{2} - 2 \\, m r + r^{2}} a^{3} m r \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)^{2}}{{\\left(a^{4} \\sin\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\sin\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\sin\\left({\\theta}\\right)^{2} - a^{4} - 2 \\, a^{2} r^{2} - r^{4}\\right)} {\\left(a^{2} \\sin\\left({\\theta}\\right)^{2} - a^{2} - r^{2}\\right)} \\sqrt{-a^{2} \\sin\\left({\\theta}\\right)^{2} + a^{2} + r^{2}}} \\right) e_{3}\n", "\\end{math}" ], "text/plain": [ "-2*sqrt(a^2 - 2*m*r + r^2)*a^3*m*r*cos(th)*sin(th)^2/((a^4*sin(th)^2 - 2*a^2*m*r*sin(th)^2 + a^2*r^2*sin(th)^2 - a^4 - 2*a^2*r^2 - r^4)*(a^2*sin(th)^2 - a^2 - r^2)*sqrt(-a^2*sin(th)^2 + a^2 + r^2)) e_3" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De2 = rotation_operator(e2)\n", "De2.apply_map(lambda x: x.trig_reduce())\n", "De2.apply_map(lambda x: x.simplify_trig())\n", "De2.apply_map(factor)\n", "De2.apply_map(lambda x: x.trig_reduce(), frame=ZF, keep_other_components=True)\n", "De2.apply_map(lambda x: x.simplify_trig(), frame=ZF, keep_other_components=True)\n", "De2.apply_map(factor, frame=ZF, keep_other_components=True)\n", "De2.display(ZF)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and finally $\\Omega_{\\rm rot}(e_3)$:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} - 3 \\, r^{4}\\right)} a m \\sin\\left({\\theta}\\right)}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} e_{1} + \\left( \\frac{2 \\, \\sqrt{a^{2} - 2 \\, m r + r^{2}} a^{3} m r \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)^{2}}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\right) e_{2}\n", "\\end{math}" ], "text/plain": [ "(a^4*cos(th)^2 - a^2*r^2*cos(th)^2 - a^2*r^2 - 3*r^4)*a*m*sin(th)/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)) e_1 + 2*sqrt(a^2 - 2*m*r + r^2)*a^3*m*r*cos(th)*sin(th)^2/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)) e_2" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De3 = rotation_operator(e3)\n", "De3.apply_map(factor, frame=ZF, keep_other_components=True)\n", "De3.display(ZF)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the orthonormal frame $(e_1, e_2, e_3)$ of the ZAMO's rest space, the matrix of the operator $\\Omega_{\\rm rot}$ must be of the type \n", "$$\n", " \\left( \\begin{array}{ccc}\n", " 0 & - \\omega^3 & \\omega^2 \\\\\n", " \\omega^3 & 0 & -\\omega^1 \\\\\n", " - \\omega^2 & \\omega^1 & 0\n", " \\end{array} \\right), \n", "$$\n", "where the $\\omega^i$'s are the components on the 4-rotation vector:\n", "$$\n", " \\omega = \\omega^i e_i\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the above expressions of the $\\Omega_{\\rm rot}(e_i)$'s, we get immediately $\\omega^3 = 0$ and we check that" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}\n", "\\end{math}" ], "text/plain": [ "True" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De1[ZF, 3] == - De3[ZF, 1]" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}\n", "\\end{math}" ], "text/plain": [ "True" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De2[ZF, 3] == - De3[ZF, 2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Therefore, we get the 4-rotation vector $\\omega$ as" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\omega = \\left( -\\frac{2 \\, \\sqrt{a^{2} - 2 \\, m r + r^{2}} a^{3} m r \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)^{2}}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\right) e_{1} + \\frac{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} - 3 \\, r^{4}\\right)} a m \\sin\\left({\\theta}\\right)}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} e_{2}\n", "\\end{math}" ], "text/plain": [ "omega = -2*sqrt(a^2 - 2*m*r + r^2)*a^3*m*r*cos(th)*sin(th)^2/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)) e_1 + (a^4*cos(th)^2 - a^2*r^2*cos(th)^2 - a^2*r^2 - 3*r^4)*a*m*sin(th)/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^(3/2)) e_2" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "omega = - De3[ZF, 2]*e1 + De3[ZF, 1]*e2\n", "omega.set_name('omega', latex_name=r'\\omega')\n", "omega.apply_map(factor)\n", "omega.apply_map(factor, frame=ZF, keep_other_components=True)\n", "omega.display(ZF)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\omega = -\\frac{2 \\, {\\left(a^{2} - 2 \\, m r + r^{2}\\right)} a^{3} m r \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)^{2}}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial r } + \\frac{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} - a^{2} r^{2} - 3 \\, r^{4}\\right)} a m \\sin\\left({\\theta}\\right)}{{\\left(a^{4} \\cos\\left({\\theta}\\right)^{2} - 2 \\, a^{2} m r \\cos\\left({\\theta}\\right)^{2} + a^{2} r^{2} \\cos\\left({\\theta}\\right)^{2} + 2 \\, a^{2} m r + a^{2} r^{2} + r^{4}\\right)} {\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "omega = -2*(a^2 - 2*m*r + r^2)*a^3*m*r*cos(th)*sin(th)^2/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^2) d/dr + (a^4*cos(th)^2 - a^2*r^2*cos(th)^2 - a^2*r^2 - 3*r^4)*a*m*sin(th)/((a^4*cos(th)^2 - 2*a^2*m*r*cos(th)^2 + a^2*r^2*cos(th)^2 + 2*a^2*m*r + a^2*r^2 + r^4)*(a^2*cos(th)^2 + r^2)^2) d/dth" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "omega.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a check, we note that the above formula agrees with that given by Eqs. (73)-(74) of \n", "[O. Semerak, Gen. Relat. Grav. **25**, 1041 (1993)](https://doi.org/10.1007/BF00763554)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.2.beta14", "language": "sage", "name": "sagemath" }, "language": "python", "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.2" } }, "nbformat": 4, "nbformat_minor": 1 }