{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Carter 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.beta14, Release Date: 2020-09-30'" ] }, "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": [ "## Carter 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 4-velocity of the Carter obsever 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}}\\varepsilon_0 = \\left( \\frac{a^{2} + r^{2}}{\\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{a}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "eps0 = (a^2 + r^2)/(sqrt(a^2*cos(th)^2 + r^2)*sqrt(a^2 - 2*m*r + r^2)) d/dt + a/(sqrt(a^2*cos(th)^2 + r^2)*sqrt(a^2 - 2*m*r + r^2)) d/dph" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rho = sqrt(rho2)\n", "e0 = M.vector_field([(r^2 + a^2)/(rho*sqrt(Delta)), 0, 0, a/(rho*sqrt(Delta))],\n", " name='eps0', latex_name=r'\\varepsilon_0')\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}}}{\\sqrt{a^{2} - 2 \\, m r + r^{2}}}\n", "\\end{math}" ], "text/plain": [ "-sqrt(a^2*cos(th)^2 + r^2)/sqrt(a^2 - 2*m*r + r^2)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g(k, e0).expr()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The spacelike vectors of the Carter frame:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\varepsilon_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": [ "eps1 = 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='eps1', latex_name=r'\\varepsilon_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}}\\varepsilon_2 = \\left( \\frac{1}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "eps2 = 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='eps2', latex_name=r'\\varepsilon_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}}\\varepsilon_3 = \\left( \\frac{a \\sin\\left({\\theta}\\right)}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\frac{\\partial}{\\partial t } + \\left( \\frac{1}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sin\\left({\\theta}\\right)} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "eps3 = a*sin(th)/sqrt(a^2*cos(th)^2 + r^2) d/dt + 1/(sqrt(a^2*cos(th)^2 + r^2)*sin(th)) d/dph" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e3 = M.vector_field([a*sin(th)/rho, 0, 0, 1/(rho*sin(th))],\n", " name='eps3', latex_name=r'\\varepsilon_3')\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(\\varepsilon_{0},\\varepsilon_{1},\\varepsilon_{2},\\varepsilon_{3}\\right)\\right)\n", "\\end{math}" ], "text/plain": [ "Vector frame (M, (eps_0,eps_1,eps_2,eps_3))" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "CF = M.vector_frame('eps', [e0, e1, e2, e3], latex_symbol=r'\\varepsilon')\n", "CF" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\varepsilon_{0} = \\left( \\frac{a^{2} + r^{2}}{\\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{a}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "eps_0 = (a^2 + r^2)/(sqrt(a^2*cos(th)^2 + r^2)*sqrt(a^2 - 2*m*r + r^2)) d/dt + a/(sqrt(a^2*cos(th)^2 + r^2)*sqrt(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}}\\varepsilon_{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": [ "eps_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}}\\varepsilon_{2} = \\left( \\frac{1}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "eps_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}}\\varepsilon_{3} = \\left( \\frac{a \\sin\\left({\\theta}\\right)}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\frac{\\partial}{\\partial t } + \\left( \\frac{1}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\sin\\left({\\theta}\\right)} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "eps_3 = a*sin(th)/sqrt(a^2*cos(th)^2 + r^2) d/dt + 1/(sqrt(a^2*cos(th)^2 + r^2)*sin(th)) d/dph" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for v in CF:\n", " show(v.display())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check that the Carter 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 CF] for u in CF]) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Carter coframe" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\varepsilon^{0} = \\left( \\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}}}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\mathrm{d} t + \\left( -\\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}} a \\sin\\left({\\theta}\\right)^{2}}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\mathrm{d} {\\phi}\n", "\\end{math}" ], "text/plain": [ "eps^0 = sqrt(a^2 - 2*m*r + r^2)/sqrt(a^2*cos(th)^2 + r^2) dt - sqrt(a^2 - 2*m*r + r^2)*a*sin(th)^2/sqrt(a^2*cos(th)^2 + r^2) dph" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\varepsilon^{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": [ "eps^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}}\\varepsilon^{2} = \\left( \\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}} \\right) \\mathrm{d} {\\theta}\n", "\\end{math}" ], "text/plain": [ "eps^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}}\\varepsilon^{3} = \\left( -\\frac{a \\sin\\left({\\theta}\\right)}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\mathrm{d} t + \\left( \\frac{{\\left(a^{2} + r^{2}\\right)} \\sin\\left({\\theta}\\right)}{\\sqrt{a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}}} \\right) \\mathrm{d} {\\phi}\n", "\\end{math}" ], "text/plain": [ "eps^3 = -a*sin(th)/sqrt(a^2*cos(th)^2 + r^2) dt + (a^2 + r^2)*sin(th)/sqrt(a^2*cos(th)^2 + r^2) dph" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for f in CF.coframe():\n", " show(f.display())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4-acceleration of the Carter 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 = \\left( \\frac{a^{2} m \\sin\\left({\\theta}\\right)^{2} - a^{2} r \\sin\\left({\\theta}\\right)^{2} - a^{2} m + m r^{2}}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\right) \\frac{\\partial}{\\partial r } -\\frac{a^{2} \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "a = (a^2*m*sin(th)^2 - a^2*r*sin(th)^2 - a^2*m + m*r^2)/(a^2*cos(th)^2 + r^2)^2 d/dr - a^2*cos(th)*sin(th)/(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": [ "As a check, we note that the above formula agrees with that given by Eqs. (90)-(91) of \n", "[O. Semerak, Gen. Relat. Grav. **25**, 1041 (1993)](https://doi.org/10.1007/BF00763554)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Display in the Carter 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{a^{2} m \\sin\\left({\\theta}\\right)^{2} - a^{2} r \\sin\\left({\\theta}\\right)^{2} - a^{2} m + m r^{2}}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}} \\sqrt{a^{2} - 2 \\, m r + r^{2}}} \\right) \\varepsilon_{1} -\\frac{a^{2} \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\varepsilon_{2}\n", "\\end{math}" ], "text/plain": [ "a = (a^2*m*sin(th)^2 - a^2*r*sin(th)^2 - a^2*m + m*r^2)/((a^2*cos(th)^2 + r^2)^(3/2)*sqrt(a^2 - 2*m*r + r^2)) eps_1 - a^2*cos(th)*sin(th)/(a^2*cos(th)^2 + r^2)^(3/2) eps_2" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.apply_map(factor, frame=CF, keep_other_components=True)\n", "A.display(CF)" ] }, { "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_{\\varepsilon_0} v - \\Omega_{\\rm FW}(v)$$\n", "where\n", "$$\\Omega_{\\rm FW}(v) := (a\\cdot v) \\varepsilon_0 - (\\varepsilon_0\\cdot v) a$$\n", "is the Fermi-Walker operator:" ] }, { "cell_type": "code", "execution_count": 29, "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": [ "Some check:" ] }, { "cell_type": "code", "execution_count": 30, "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": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rotation_operator(e0) == 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us evaluate $\\Omega_{\\rm rot}(\\varepsilon_1)$:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{a^{2} r \\sin\\left({\\theta}\\right)^{2}}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial t } + \\frac{a r}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "a^2*r*sin(th)^2/(a^2*cos(th)^2 + r^2)^2 d/dt + a*r/(a^2*cos(th)^2 + r^2)^2 d/dph" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De1 = rotation_operator(e1)\n", "De1.apply_map(factor)\n", "De1.display()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{a r \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\varepsilon_{3}\n", "\\end{math}" ], "text/plain": [ "a*r*sin(th)/(a^2*cos(th)^2 + r^2)^(3/2) eps_3" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De1.apply_map(factor, frame=CF, keep_other_components=True)\n", "De1.display(CF)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now evaluate $\\Omega_{\\rm rot}(\\varepsilon_2)$:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left( \\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}} a^{2} \\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\right) \\frac{\\partial}{\\partial t } + \\left( \\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}} a \\cos\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2} \\sin\\left({\\theta}\\right)} \\right) \\frac{\\partial}{\\partial {\\phi} }\n", "\\end{math}" ], "text/plain": [ "sqrt(a^2 - 2*m*r + r^2)*a^2*cos(th)*sin(th)/(a^2*cos(th)^2 + r^2)^2 d/dt + sqrt(a^2 - 2*m*r + r^2)*a*cos(th)/((a^2*cos(th)^2 + r^2)^2*sin(th)) d/dph" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De2 = rotation_operator(e2)\n", "De2.apply_map(factor)\n", "De2.display()" ] }, { "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^{2} \\sin\\left({\\theta}\\right)^{2} - a^{2} - r^{2}\\right)} \\sqrt{a^{2} - 2 \\, m r + r^{2}} a \\cos\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{5}{2}}} \\right) \\varepsilon_{3}\n", "\\end{math}" ], "text/plain": [ "-(a^2*sin(th)^2 - a^2 - r^2)*sqrt(a^2 - 2*m*r + r^2)*a*cos(th)/(a^2*cos(th)^2 + r^2)^(5/2) eps_3" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De2.apply_map(factor, frame=CF, keep_other_components=True)\n", "De2.display(CF)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and finally $\\Omega_{\\rm rot}(e_3)$:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left( -\\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}} a r \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\right) \\frac{\\partial}{\\partial r } + \\left( \\frac{{\\left(a^{2} \\sin\\left({\\theta}\\right)^{2} - a^{2} - r^{2}\\right)} \\sqrt{a^{2} - 2 \\, m r + r^{2}} a \\cos\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{3}} \\right) \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "-sqrt(a^2 - 2*m*r + r^2)*a*r*sin(th)/(a^2*cos(th)^2 + r^2)^2 d/dr + (a^2*sin(th)^2 - a^2 - r^2)*sqrt(a^2 - 2*m*r + r^2)*a*cos(th)/(a^2*cos(th)^2 + r^2)^3 d/dth" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De3 = rotation_operator(e3)\n", "De3.apply_map(factor)\n", "De3.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us enforce further trigonometric simplification: " ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left( -\\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}} a r \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\right) \\frac{\\partial}{\\partial r } + \\left( -\\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}} a \\cos\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\right) \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "-sqrt(a^2 - 2*m*r + r^2)*a*r*sin(th)/(a^2*cos(th)^2 + r^2)^2 d/dr - sqrt(a^2 - 2*m*r + r^2)*a*cos(th)/(a^2*cos(th)^2 + r^2)^2 d/dth" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De3.apply_map(lambda x: x.trig_reduce())\n", "De3.apply_map(lambda x: x.simplify_trig())\n", "De3.apply_map(factor)\n", "De3.display()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\frac{a r \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\varepsilon_{1} + \\left( -\\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}} a \\cos\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\right) \\varepsilon_{2}\n", "\\end{math}" ], "text/plain": [ "-a*r*sin(th)/(a^2*cos(th)^2 + r^2)^(3/2) eps_1 - sqrt(a^2 - 2*m*r + r^2)*a*cos(th)/(a^2*cos(th)^2 + r^2)^(3/2) eps_2" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De3.apply_map(factor, frame=CF, keep_other_components=True)\n", "De3.display(CF)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the orthonormal frame $(\\varepsilon_1, \\varepsilon_2, \\varepsilon_3)$ of the Carter observer'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^3 \\\\\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 \\varepsilon_i\n", "$$\n", "\n", "From the above expressions of the $\\Omega_{\\rm rot}(\\varepsilon_i)$'s, we get immediately $\\omega^3 = 0$ and we check that" ] }, { "cell_type": "code", "execution_count": 38, "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": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "De1[CF, 3] == - De3[CF, 1]" ] }, { "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": [ "De2[CF, 3] == - De3[CF, 2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Therefore, we get the 4-rotation vector $\\omega$ as" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\omega = \\left( \\frac{\\sqrt{a^{2} - 2 \\, m r + r^{2}} a \\cos\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\right) \\varepsilon_{1} -\\frac{a r \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{\\frac{3}{2}}} \\varepsilon_{2}\n", "\\end{math}" ], "text/plain": [ "omega = sqrt(a^2 - 2*m*r + r^2)*a*cos(th)/(a^2*cos(th)^2 + r^2)^(3/2) eps_1 - a*r*sin(th)/(a^2*cos(th)^2 + r^2)^(3/2) eps_2" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "omega = - De3[CF, 2]*e1 + De3[CF, 1]*e2\n", "omega.set_name('omega', latex_name=r'\\omega')\n", "omega.apply_map(factor)\n", "omega.apply_map(factor, frame=CF, keep_other_components=True)\n", "omega.display(CF)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "\\begin{math}\n", "\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\omega = \\frac{{\\left(a^{2} - 2 \\, m r + r^{2}\\right)} a \\cos\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial r } -\\frac{a r \\sin\\left({\\theta}\\right)}{{\\left(a^{2} \\cos\\left({\\theta}\\right)^{2} + r^{2}\\right)}^{2}} \\frac{\\partial}{\\partial {\\theta} }\n", "\\end{math}" ], "text/plain": [ "omega = (a^2 - 2*m*r + r^2)*a*cos(th)/(a^2*cos(th)^2 + r^2)^2 d/dr - a*r*sin(th)/(a^2*cos(th)^2 + r^2)^2 d/dth" ] }, "execution_count": 41, "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 Eq. (93) 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 }