Remnant models: final mass, spin, and kick

  • HLZ kick (precessing) : precessing kick velocity from Gonzalez et al. (2007), Campanelli et al. (2007), Lousto & Zlochower (2008, 2013)

  • HLZ kick (aligned-spin) : aligned-spin kick from arXiv:1406.7295

  • HBR final mass : Barausse, Morozova & Rezzolla (2012), ApJ 758, 63

  • HBR final spin : Hofmann, Barausse & Rezzolla (2016), ApJL 825, L19

  • UIB2016 final mass & spin : Jimenez Forteza, Keitel, Husa et al. [arXiv:1611.00332]

[1]:
import sys
!{sys.executable} -m pip install -e ../ --no-deps --quiet

import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore", "Wswiglal-redir-stdio")

import gwModels
gwModels.utils.set_rcparams()
lal.MSUN_SI != Msun

1. HLZ precessing kick velocity

[2]:
# Equal mass, anti-aligned spins
q = 0.8
chi1, chi2 = 0.7, 0.7
theta1, theta2 = np.pi/4, 3*np.pi/4
deltaphi = np.pi

vk = gwModels.remnants.bbh_final_kick_precessing_CLZM2007(
    q, chi1, chi2, theta1, theta2, deltaphi, Theta=0.0)
print(f'Kick velocity: {vk:.2f} km/s')
Kick velocity: 2000.46 km/s
[3]:
# Kick vs mass ratio for fixed spin configuration
q_arr = np.linspace(0.1, 1.0, 500)
chi1, chi2 = 0.7, 0.7
theta1, theta2 = np.pi/3, 2*np.pi/3
deltaphi = np.pi

vk_arr = np.array([gwModels.remnants.bbh_final_kick_precessing_CLZM2007(
    qq, chi1, chi2, theta1, theta2, deltaphi, Theta=0.0) for qq in q_arr])

plt.figure(figsize=(7, 4))
plt.plot(q_arr, vk_arr, lw=2)
plt.xlabel('$q = m_2/m_1$')
plt.ylabel(r'$v_{\rm kick}$ [km/s]')
plt.title(r'HLZ kick: $\chi_1=\chi_2=0.7$, $\theta_1=\pi/3$, $\theta_2=2\pi/3$, $\Delta\phi=\pi$')
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
../_images/notebooks_5_2_other_remnant_models_4_0.png

2. HLZ aligned-spin kick (arXiv:1406.7295)

[4]:
q_arr = np.linspace(1, 50, 500)

plt.figure(figsize=(7, 4))
for s1z, s2z, label in [
    (0.9, -0.9, r'$[\chi_1,\chi_2]=[0.9,-0.9]$'),
    (0.0, 0.5,  r'$[\chi_1,\chi_2]=[0.0,0.5]$'),
    (0.5, 0.0,  r'$[\chi_1,\chi_2]=[0.5,0.0]$'),
    (-0.9, 0.5, r'$[\chi_1,\chi_2]=[-0.9,0.5]$'),
]:
    vk = gwModels.remnants.HLZ_2014_aligned_spin(q_arr, s1z, s2z)
    plt.plot(q_arr, vk, lw=2, alpha=0.8, label=label)

plt.xlabel('$q = m_1/m_2$')
plt.ylabel(r'$v_{\rm kick}$ [km/s]')
plt.title('HLZ 2014 aligned-spin kick')
plt.legend(frameon=False)
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
../_images/notebooks_5_2_other_remnant_models_6_0.png

3. HBR final mass (Barausse, Morozova & Rezzolla 2012)

[5]:
q_arr = np.linspace(0.1, 1.0, 500)

plt.figure(figsize=(7, 4))
for chi1, chi2, label in [
    (0.0, 0.0, r'$\chi_1=\chi_2=0$'),
    (0.5, 0.5, r'$\chi_1=\chi_2=0.5$'),
    (0.9, 0.9, r'$\chi_1=\chi_2=0.9$'),
    (0.5, -0.5, r'$\chi_1=0.5, \chi_2=-0.5$'),
]:
    mf = gwModels.remnants.bbh_final_mass_precessing_BMR2012(
        theta1=0.0, theta2=0.0, q=q_arr, chi1=chi1, chi2=chi2)
    plt.plot(q_arr, mf, lw=2, label=label)

plt.xlabel('$q = m_2/m_1$')
plt.ylabel('$M_f / M$')
plt.title('BMR2012 final mass (aligned spins)')
plt.legend(frameon=False)
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
../_images/notebooks_5_2_other_remnant_models_8_0.png

4. HBR final spin (Hofmann, Barausse & Rezzolla 2016)

[6]:
q_arr = np.linspace(0.1, 1.0, 500)

plt.figure(figsize=(7, 4))
for chi1, chi2, label in [
    (0.0, 0.0, r'$\chi_1=\chi_2=0$'),
    (0.5, 0.5, r'$\chi_1=\chi_2=0.5$'),
    (0.9, 0.9, r'$\chi_1=\chi_2=0.9$'),
    (0.5, -0.5, r'$\chi_1=0.5, \chi_2=-0.5$'),
]:
    sf = gwModels.remnants.bbh_final_spin_precessing_HBR2016(
        theta1=0.0, theta2=0.0, deltaphi=0.0, q=q_arr, chi1=chi1, chi2=chi2)
    plt.plot(q_arr, sf, lw=2, label=label)

plt.xlabel('$q = m_2/m_1$')
plt.ylabel('$\\chi_f$')
plt.title('HBR2016 final spin (aligned spins)')
plt.legend(frameon=False)
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
../_images/notebooks_5_2_other_remnant_models_10_0.png

5. UIB2016 final mass and spin (aligned-spin, Jimenez Forteza et al.)

[7]:
m1 = 30.0
m2_arr = np.linspace(3, 30, 500)

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

for chi1, chi2, label in [
    (0.0, 0.0, r'$\chi_1=\chi_2=0$'),
    (0.5, 0.5, r'$\chi_1=\chi_2=0.5$'),
    (0.9, 0.9, r'$\chi_1=\chi_2=0.9$'),
    (0.5, -0.5, r'$\chi_1=0.5, \chi_2=-0.5$'),
]:
    mf = gwModels.remnants.bbh_final_mass_non_precessing_UIB2016(m1, m2_arr, chi1, chi2)
    sf = gwModels.remnants.bbh_final_spin_non_precessing_UIB2016(m1, m2_arr, chi1, chi2)
    axes[0].plot(m2_arr/m1, mf/(m1+m2_arr), lw=2, label=label)
    axes[1].plot(m2_arr/m1, sf, lw=2, label=label)

axes[0].set_xlabel('$q = m_2/m_1$')
axes[0].set_ylabel('$M_f / M$')
axes[0].set_title('UIB2016 final mass')
axes[0].legend(frameon=False)
axes[0].grid(alpha=0.3)

axes[1].set_xlabel('$q = m_2/m_1$')
axes[1].set_ylabel('$\\chi_f$')
axes[1].set_title('UIB2016 final spin')
axes[1].legend(frameon=False)
axes[1].grid(alpha=0.3)

plt.tight_layout()
plt.show()
../_images/notebooks_5_2_other_remnant_models_12_0.png
[ ]: