Gravitational radiation by a blob of matter

Gravitational radiation by a blob of matter on a circular orbit around a Kerr black hole

This module implements the following functions:

kerrgeodesic_gw.gw_blob.blob_mass(a, surf_dens, param_surf_dens, integ_range, epsabs=1e-08, epsrel=1e-08)

Compute the mass of a blob of matter by integrating its surface density.

INPUT:

  • a – BH angular momentum parameter (in units of \(M\))

  • surf_dens – surface density function \(\Sigma\); must take three arguments: (r_bar, phi_bar, param_surf_dens), where

    • r_bar is the Boyer-Lindquist radial coordinate \(\bar{r}\) in the matter blob

    • phi_bar is the Boyer-Lindquist azimuthal coordinate \(\bar{\phi}\) in the matter blob

    • param_surf_dens are parameters defining the function \(\Sigma(\bar{r},\bar{\phi})\)

  • param_surf_dens – parameters to be passed as the third argument to the function surf_dens (see above)

  • integ_range – tuple \((\bar{r}_1, \bar{r}_2, \bar{\phi}_1, \bar{\phi}_2)\) defining the integration range

  • epsabs – (default: 1e-8) absolute tolerance of the inner 1-D quadrature integration

  • epsrel – (default: 1e-8) relative tolerance of the inner 1-D integrals

OUTPUT:

  • a pair (mu, err), where mu is the mass of the matter blob and err is an estimate of the absolute error in the computation of the integral

EXAMPLES:

sage: from kerrgeodesic_gw import blob_mass, surface_density_gaussian
sage: param = [6.5, 0., 0.3]
sage: integ_range = [6, 7, -0.1, 0.1]
sage: blob_mass(0., surface_density_gaussian, param, integ_range)  # tol 1.0e-13
(0.3328779622200767, 5.671806593829388e-10)
sage: blob_mass(0., surface_density_gaussian, param, integ_range,  # tol 1.0e-13
....:           epsabs=1.e-3)
(0.33287796222007715, 1.109366597806814e-06)
kerrgeodesic_gw.gw_blob.h_blob(u, theta, phi, a, surf_dens, param_surf_dens, integ_range, mode='+', l_max=10, m_min=1, epsabs=1e-06, epsrel=1e-06)

Return the rescaled value of \(h_+\) or \(h_\times\) (depending on the parameter mode) for the gravitational radiation emitted by a matter blob in circular orbit around a Kerr black hole.

INPUT:

  • u – retarded time coordinate of the observer (in units of \(M\), the BH mass): \(u = t - r_*\), where \(t\) is the Boyer-Lindquist time coordinate and \(r_*\) is the tortoise coordinate

  • theta – Boyer-Lindquist colatitute \(\theta\) of the observer

  • phi – Boyer-Lindquist azimuthal coordinate \(\phi\) of the observer

  • a – BH angular momentum parameter (in units of \(M\))

  • surf_dens – surface density function \(\Sigma\); must take three arguments: (r_bar, phi_bar, param_surf_dens), where

    • r_bar is the Boyer-Lindquist radial coordinate \(\bar{r}\) in the matter blob

    • phi_bar is the Boyer-Lindquist azimuthal coordinate \(\bar{\phi}\) in the matter blob

    • param_surf_dens are parameters defining the function \(\Sigma(\bar{r},\bar{\phi})\)

  • param_surf_dens – parameters to be passed as the third argument to the function surf_dens (see above)

  • integ_range – tuple \((\bar{r}_1, \bar{r}_2, \bar{\phi}_1, \bar{\phi}_2)\) defining the integration range

  • mode – (default: '+') string determining which GW polarization mode is considered; allowed values are '+' and 'x', for respectively \(h_+\) and \(h_\times\)

  • l_max – (default: 10) upper bound in the summation over the harmonic degree \(\ell\)

  • m_min – (default: 1) lower bound in the summation over the Fourier mode \(m\)

  • epsabs – (default: 1e-6) absolute tolerance passed directly to the inner 1-D quadrature integration

  • epsrel – (default: 1e-6) relative tolerance of the inner 1-D integrals

OUTPUT:

  • a pair (rh, err), where rh is the rescaled waveform \(r h_+\) (resp. \(r h_\times\)) if mode = '+' (resp. 'x') , \(r\) being the Boyer-Lindquist radial coordinate of the observer, and err is an estimate of the absolute error in the computation of the integral

EXAMPLES:

Gravitational emission \(h_+\) from a constant density blob close to the ISCO of a Schwarzschild black hole:

sage: from kerrgeodesic_gw import h_blob, surface_density_toy_model
sage: a = 0
sage: param_surf_dens = [6.5, 0, 0.6, 0.1]
sage: integ_range = [6.3, 6.7, -0.04, 0.04]
sage: h_blob(0., pi/2, 0., a, surface_density_toy_model,  # tol 1.0e-13
....:        param_surf_dens, integ_range)
(0.03688373245628765, 9.872900827148663e-10)
sage: h_blob(0., pi/2, 0., a, surface_density_toy_model,  # tol 1.0e-13
....:        param_surf_dens, integ_range, l_max=5)
(0.037532424224875585, 1.3788099591183387e-09)

The \(h_\times\) part at \(\theta=\pi/4\):

sage: h_blob(0., pi/4, 0., a, surface_density_toy_model,  # tol 1.0e-13
....:        param_surf_dens, integ_range, mode='x')
(0.06203815455135455, 1.972915290337975e-09)
sage: h_blob(0., pi/4, 0., a, surface_density_toy_model,  # tol 1.0e-13
....:        param_surf_dens, integ_range, mode='x', l_max=5)
(0.06121422594295032, 1.924590678064715e-09)
kerrgeodesic_gw.gw_blob.h_blob_signal(u_min, u_max, theta, phi, a, surf_dens, param_surf_dens, integ_range, mode='+', nb_points=100, l_max=10, m_min=1, epsabs=1e-06, epsrel=1e-06, store=None, verbose=True)

Return a time sequence of \(h_+\) or \(h_\times\) (depending on the parameter mode) describing the gravitational radiation from a matter blob orbiting a Kerr black hole.

INPUT:

  • u_min – lower bound of the retarded time coordinate of the observer (in units of \(M\), the BH mass): \(u = t - r_*\), where \(t\) is the Boyer-Lindquist time coordinate and \(r_*\) is the tortoise coordinate

  • u_max – upper bound of the retarded time coordinate of the observer (in units of \(M\))

  • theta – Boyer-Lindquist colatitute \(\theta\) of the observer

  • phi – Boyer-Lindquist azimuthal coordinate \(\phi\) of the observer

  • a – BH angular momentum parameter (in units of \(M\))

  • surf_dens – surface density function \(\Sigma\); must take three arguments: (r_bar, phi_bar, param_surf_dens), where

    • r_bar is the Boyer-Lindquist radial coordinate \(\bar{r}\) in the matter blob

    • phi_bar is the Boyer-Lindquist azimuthal coordinate \(\bar{\phi}\) in the matter blob

    • param_surf_dens are parameters defining the function \(\Sigma(\bar{r},\bar{\phi})\)

  • param_surf_dens – parameters to be passed as the third argument to the function surf_dens (see above)

  • integ_range – tuple \((\bar{r}_1, \bar{r}_2, \bar{\phi}_1, \bar{\phi}_2)\) defining the integration range

  • mode – (default: '+') string determining which GW polarization mode is considered; allowed values are '+' and 'x', for respectively \(h_+\) and \(h_\times\)

  • nb_points – (default: 100) number of points in the interval (u_min, u_max)

  • l_max – (default: 10) upper bound in the summation over the harmonic degree \(\ell\)

  • m_min – (default: 1) lower bound in the summation over the Fourier mode \(m\)

  • epsabs – (default: 1e-6) absolute tolerance passed directly to the inner 1-D quadrature integration

  • epsrel – (default: 1e-6) relative tolerance of the inner 1-D integrals

  • store – (default: None) string containing a file name for storing the time sequence; if None, no storage is attempted

  • verbose – (default: True) boolean determining whether to monitor the progress of the sequence computation

OUTPUT:

  • a list of nb_points pairs \((u, r h_+/\mu)\) or \((u, r h_\times/\mu)\) (depending on mode), where \(\mu\) is the blob’s mass and \(r\) is the Boyer-Lindquist radial coordinate of the observer

EXAMPLES:

\(h_+\) sequence for a Gaussian-density matter blob around a Schwarzschild black hole:

sage: from kerrgeodesic_gw import h_blob_signal, surface_density_gaussian
sage: param_surf_dens = [6.5, 0., 0.3]
sage: integ_range = [6, 7, -0.1, 0.1]
sage: a = 0
sage: h_blob_signal(0., 100., pi/4, 0., a, surface_density_gaussian,  # tol 1.0e-13
....:               param_surf_dens, integ_range, nb_points=5,
....:               epsrel=1e-4, verbose=False)
[(0.000000000000000, 0.2988585811681569),
 (25.0000000000000, -0.3902717353505495),
 (50.0000000000000, 0.4196374371978159),
 (75.0000000000000, -0.4729306367862637),
 (100.000000000000, 0.3464193312741741)]

The corresponding \(h_\times\) sequence:

sage: h_blob_signal(0., 100., pi/4, 0., a, surface_density_gaussian,  # tol 1.0e-13
....:               param_surf_dens, integ_range, mode='x',
....:               nb_points=5, epsrel=1e-4, verbose=False)
[(0.000000000000000, 0.24810446643240472),
 (25.0000000000000, -0.060862007486422516),
 (50.0000000000000, -0.12309577666126706),
 (75.0000000000000, -0.0017707729883368948),
 (100.000000000000, 0.08100026787377135)]
kerrgeodesic_gw.gw_blob.h_toy_model_semi_analytic(u, theta, phi, a, r0, phi0, lam, Dphi, l_max=10)

Return the gravitational wave emitted by a matter blob orbiting a Kerr black hole (semi-analytic computation based on a toy model surface density).

The surface density of the matter blob is that given by surface_density_toy_model().

The gravitational wave is computed according to the formula

\[h = \frac{2\mu}{r} \, \sum_{\ell=2}^{\infty} \sum_{m=-\ell}^\ell \frac{Z^\infty_{\ell m}(r_0)}{(m\omega_0)^2} \; \text{sinc}\left( \frac{m}{2} \Delta\varphi \right) \, \text{sinc}\left( \frac{3}{4} \varepsilon \, m \omega_0 (1-a\omega_0)u \right) e^{- i m (\omega_0 u + \phi_0)} \, _{-2}S_{\ell m}^{a m \omega_0}(\theta,\varphi)\]

INPUT:

  • u – retarded time coordinate of the observer (in units of \(M\), the BH mass): \(u = t - r_*\), where \(t\) is the Boyer-Lindquist time coordinate and \(r_*\) is the tortoise coordinate

  • theta – Boyer-Lindquist colatitute \(\theta\) of the observer

  • phi – Boyer-Lindquist azimuthal coordinate \(\phi\) of the observer

  • a – BH angular momentum parameter (in units of \(M\))

  • r0 – mean radius \(r_0\) of the matter blob (Boyer-Lindquist coordinate)

  • phi0 – mean azimuthal angle \(\phi_0\) of the matter blob (Boyer-Lindquist coordinate)

  • lam – radial extent \(\lambda\) of the matter blob

  • Dphi– opening angle \(\Delta\phi\) of the matter blob

  • l_max – (default: 10) upper bound in the summation over the harmonic degree \(\ell\)

OUTPUT:

  • a pair (hp, hc), where hp (resp. hc) is \((r / \mu) h_+\) (resp. \((r / \mu) h_\times\)), \(\mu\) being the blob’s mass and \(r\) is the Boyer-Lindquist radial coordinate of the observer

EXAMPLES:

Schwarzschild black hole:

sage: from kerrgeodesic_gw import h_toy_model_semi_analytic
sage: a = 0
sage: r0, phi0, lam, Dphi = 6.5, 0, 0.6, 0.1
sage: u = 60.
sage: h_toy_model_semi_analytic(u, pi/4, 0., a, r0, phi0, lam, Dphi)  # tol 1.0e-13
(0.2999183296797872, 0.36916647790743246)
sage: hp, hc = _

Comparison with the exact value:

sage: from kerrgeodesic_gw import (h_blob, blob_mass,
....:                              surface_density_toy_model)
sage: param_surf_dens = [r0, phi0, lam, Dphi]
sage: integ_range = [6.2, 6.8, -0.05, 0.05]
sage: mu = blob_mass(a, surface_density_toy_model, param_surf_dens,
....:                integ_range)[0]
sage: hp0 = h_blob(u, pi/4, 0., a, surface_density_toy_model,
....:              param_surf_dens, integ_range)[0] / mu
sage: hc0 = h_blob(u, pi/4, 0., a, surface_density_toy_model,
....:              param_surf_dens, integ_range, mode='x')[0] / mu
sage: hp0, hc0  # tol 1.0e-13
(0.2951163078053617, 0.3743683023327848)
sage: (hp - hp0) / hp0  # tol 1.0e-13
0.01627162494047128
sage: (hc - hc0) / hc0  # tol 1.0e-13
-0.013894938201066784
kerrgeodesic_gw.gw_blob.surface_density_gaussian(r, phi, param)

Surface density of a matter blob with a Gaussian profile

INPUT:

  • r – Boyer-Lindquist radial coordinate \(\bar{r}\) in the matter blob

  • phi – Boyer-Lindquist azimuthal coordinate \(\bar{\phi}\) in the matter blob

  • param – list of parameters defining the position and width of matter blob:

    • param[0]: mean radius \(r_0\) (Boyer-Lindquist coordinate)

    • param[1]: mean azimuthal angle \(\phi_0\) (Boyer-Lindquist coordinate)

    • param[2]: width \(\lambda\) of the Gaussian profile

    • param[3] (optional): amplitude \(\Sigma_0\); if not provided, then \(\Sigma_0=1\) is used

OUTPUT:

  • surface density \(\Sigma(\bar{r}, \bar{\phi})\)

EXAMPLES:

sage: from kerrgeodesic_gw import surface_density_gaussian
sage: param = [6.5, 0., 0.3]
sage: surface_density_gaussian(6.5, 0, param)
1.0
sage: surface_density_gaussian(8., 0, param)  # tol 1.0e-13
1.3887943864964021e-11
sage: surface_density_gaussian(6.5, pi/16, param)  # tol 1.0e-13
1.4901161193847656e-08

3D representation: \(z=\Sigma(\bar{r}, \bar{\phi})\) in terms of \(x:=\bar{r}\cos\bar\phi\) and \(y:=\bar{r}\sin\bar\phi\):

sage: s_plot = lambda r, phi: surface_density_gaussian(r, phi, param)
sage: r, phi, z = var('r phi z')
sage: plot3d(s_plot, (r, 6, 8), (phi, -0.4, 0.4),
....:        transformation=(r*cos(phi), r*sin(phi), z))
Graphics3d Object
_images/gw_blob-1.png

Use with a non-default amplitude (\(\Sigma_0=10^{-5}\)):

sage: sigma0 = 1.e-5
sage: param = [6.5, 0., 0.3, sigma0]
sage: surface_density_gaussian(6.5, 0, param)
1e-05
kerrgeodesic_gw.gw_blob.surface_density_toy_model(r, phi, param)

Surface density of the toy model matter blob.

INPUT:

  • r – Boyer-Lindquist radial coordinate \(\bar{r}\) in the matter blob

  • phi – Boyer-Lindquist azimuthal coordinate \(\bar{\phi}\) in the matter blob

  • param – list of parameters defining the position and extent of the matter blob:

    • param[0]: mean radius \(r_0\) (Boyer-Lindquist coordinate)

    • param[1]: mean azimuthal angle \(\phi_0\) (Boyer-Lindquist coordinate)

    • param[2]: radial extent \(\lambda\)

    • param[3]: opening angle \(\Delta\phi\)

    • param[4] (optional): amplitude \(\Sigma_0\); if not provided, then \(\Sigma_0=1\) is used

OUTPUT:

  • surface density \(\Sigma(\bar{r}, \bar{\phi})\)

EXAMPLES:

Use with the default amplitude (\(\Sigma_0=1\)):

sage: from kerrgeodesic_gw import surface_density_toy_model
sage: param = [6.5, 0, 0.6, 0.1]
sage: surface_density_toy_model(6.5, 0, param)
1.0
sage: surface_density_toy_model(6.7, -0.04, param)
1.0
sage: surface_density_toy_model(6.3, 0.04, param)
1.0
sage: surface_density_toy_model(7, -0.06, param)
0.0
sage: surface_density_toy_model(5., 0.06, param)
0.0

3D representation: \(z=\Sigma(\bar{r}, \bar{\phi})\) in terms of \(x:=\bar{r}\cos\bar\phi\) and \(y:=\bar{r}\sin\bar\phi\):

sage: s_plot = lambda r, phi: surface_density_toy_model(r, phi, param)
sage: r, phi, z = var('r phi z')
sage: plot3d(s_plot, (r, 6, 8), (phi, -0.4, 0.4),
....:        transformation=(r*cos(phi), r*sin(phi), z))
Graphics3d Object
_images/gw_blob-2.png

Use with a non-default amplitude (\(\Sigma_0=2\)):

sage: sigma0 = 2.
sage: param = [6.5, 0, 0.6, 0.1, sigma0]
sage: surface_density_toy_model(6.5, 0, param)
2.0