mcfacts.physics.binary.merge
Module for calculating the final variables of a merging binary.
- mcfacts.physics.binary.merge.chi_effective(masses_1, masses_2, spins_1, spins_2, spin_angles_1, spin_angles_2, bin_ang_mom)
Calculates the effective spin \(\chi_{\rm eff}\) associated with a merger.
The measured effective spin of a merger is calculated as
\[\chi_{\rm eff}=\frac{m_1\chi_1\cos(\theta_1) + m_2\chi_2\cos(\theta_2)}{m_{\rm bin}} L_{\rm bin}\]- Parameters:
masses_1 (numpy.ndarray) – Mass [M_sun] of object 1 with
floattypemasses_2 (numpy.ndarray) – Mass [M_sun] of object 2 with
floattypespins_1 (numpy.ndarray) – Spin magnitude [unitless] of object 1 with
floattypespins_2 (numpy.ndarray) – Spin magnitude [unitless] of object 2 with
floattypespin_angles_1 (numpy.ndarray) – Spin angle [radian] of object 1 with
floattypespin_angles_2 (numpy.ndarray) – Spin angle [radian] of object 2 with
floattypebin_ang_mom (int/ndarray) – Magnitude of the binary’s mutual angular momentum. If 1, the binary is prograde (aligned with disk angular momentum). If -1, the binary is retrograde (anti-aligned with disk angular momentum).
- Returns:
chi_eff – The effective spin value [unitless] for these object(s) with
floattype- Return type:
- mcfacts.physics.binary.merge.chi_p(masses_1, masses_2, spins_1, spins_2, spin_angles_1, spin_angles_2, bin_orbs_inc)
Calculates the precessing spin component \(\chi_p\) associated with a merger.
chi_p = max[spin_1_perp, (q(4q+3)/(4+3q)) * spin_2_perp]wherespin_1_perp = spin_1 * sin(spin_angle_1)andspin_2_perp = spin_2 * sin(spin_angle_2)are perpendicular to
spin_1andspin_2, respectively,and
q = mass_2 / mass_1wheremass_2 < mass_1.- Parameters:
masses_1 (numpy.ndarray) – Mass [M_sun] of object 1 with
floattypemasses_2 (numpy.ndarray) – Mass [M_sun] of object 2 with
floattypespins_1 (numpy.ndarray) – Spin magnitude [unitless] of object 1 with
floattypespins_2 (numpy.ndarray) – Spin magnitude [unitless] of object 2 with
floattypespin_angles_1 (numpy.ndarray) – Spin angle [radian] of object 1 with
floattypespin_angles_2 (numpy.ndarray) – Spin angle [radian] of object 2 with
floattypebin_orbs_inc (numpy.ndarray) – Angle of inclination [radian] of the binary with respect to the disk.
- Returns:
chi_p – Precessing spin component for these objects
- Return type:
- mcfacts.physics.binary.merge.generate_truncated_normal(mean=0, std=1, lower=0.75, upper=0.85, size=10)
Random Guassian distribution generator
- Parameters:
- Returns:
spin_dist – Random distribution of the spins within a set range
- Return type:
- mcfacts.physics.binary.merge.merge_blackholes(blackholes_binary, blackholes_pro, blackholes_merged, bh_binary_id_num_merger, smbh_mass, flag_use_surrogate, flag_use_spin_check, disk_aspect_ratio, disk_density, disk_sound_speed, time_passed, galaxy)
Calculates parameters for merged BHs and adds them to
blackholes_proandblackholes_mergedThis function calculates the new parameters for merged BHs and adds them to the
blackholes_proandblackholes_mergedobjects. It does NOT delete them fromblackholes_binaryor update thefiling_cabinetwith the new information.- Parameters:
blackholes_binary (AGNBinaryBlackHole) – Binary black hole parameters
blackholes_pro (AGNBlackHole) – Prograde black holes
blackholes_merged (AGNMergedBlackHole) – Merged black holes
bh_binary_id_num_merger (np.ndarray) – Array of BH ID numbers to be merged
smbh_mass (float) – Mass [Msun] of SMBH
flag_use_surrogate (int) – Flag to use surrogate model for kick calculations
flag_use_spin_check (int) – Flag to apply spin_check filter to spin results
disk_aspect_ratio (function) – Disk aspect ratio at specified rg
disk_density (function) – Disk density at specified rg
time_passed (float) – Current timestep [yr] in disk
galaxy (int) – Current galaxy iteration
- mcfacts.physics.binary.merge.merge_blackholes_precession(mass_1, mass_2, chi_1, chi_2, theta1, theta2, bin_sep_r_g, bin_ecc, smbh_mass)
Use Davide Gerosa’s precession package to calculate merged properties
https://pure-oai.bham.ac.uk/ws/files/61360327/1605.01067.pdf
- Parameters:
mass_1 (numpy.ndarray) – Mass [M_sun] of object 1 with
floattypemass_2 (numpy.ndarray) – Mass [M_sun] of object 2 with
floattypechi_1 (numpy.ndarray) – Spin magnitude [unitless] of object 1 with
floattypechi_2 (numpy.ndarray) – Spin magnitude [unitless] of object 2 with
floattypetheta1 (numpy.ndarray) – Spin angle [radian] of object 1 with
floattypetheta2 (numpy.ndarray) – Spin angle [radian] of object 2 with
floattypebin_sep (numpy.ndarray) – Binary separation (R_g) with
floattypebin_ecc (numpy.ndarray) – Binary eccentricity with
floattypesmbh_mass (float) – Mass of supermassive black hole (solMass)
- Returns:
bh_mass_merged (np.ndarray) – Merged mass of remnant
bh_spin_merged (np.ndarray) – spin magnitudes of merged remnant
bh_v_kick (np.ndarray) – Kick velocity of merged remnant (km/s)
- mcfacts.physics.binary.merge.merged_mass(masses_1, masses_2, spins_1, spins_2, spin_angles_1, spin_angles_2)
Calculates the final mass of a merged binary.
Using approximations from Tichy & Maronetti (2008) where
\[m_{\rm final}=(M_1+M_2)[1.0-0.2\nu-0.208\nu^2(a_1+a_2)]\]where \(\nu\) is the symmetric mass ratio or \(\nu=q/((1+q)^2)\) and \(q=M_2/M_1\) with \(M_2<M_1\)
- Parameters:
masses_1 (numpy.ndarray) – Mass [M_sun] of object 1 with
floattypemasses_2 (numpy.ndarray) – Mass [M_sun] of object 2 with
floattypespins_1 (numpy.ndarray) – Spin magnitude [unitless] of object 1 with
floattypespins_2 (numpy.ndarray) – Spin magnitude [unitless] of object 2 with
floattypespin_angles_1 (numpy.ndarray) – spin angle of m1 (wrt disk angular momentum) in radians
spin_angles_2 (numpy.ndarray) – spin angle of m2 (wrt disk angular momentum) in radians
- Returns:
merged_masses – Final mass [M_sun] of merger remnant with
floattype- Return type:
- mcfacts.physics.binary.merge.merged_orb_ecc(bin_orbs_a, v_kicks, smbh_mass)
Calculates orbital eccentricity of a merged binary.
- Parameters:
bin_orbs_a (numpy.ndarray) – Location of binary [r_{g,SMBH}] wrt to the SMBH with
floattypev_kicks (numpy.ndarray) – Kick velocity [km/s] with
floattypesmbh_mass (float) – Mass [Msun] of the SMBH
- Returns:
merged_ecc – Orbital eccentricity of merged binary with
floattype- Return type:
- mcfacts.physics.binary.merge.merged_spin(masses_1, masses_2, spins_1, spins_2, spin_angles_1, spin_angles_2)
Calculates the spin magnitude of a merged binary.
Only depends on \(M_1,M_2,a_1,a_2\) and the binary ang mom around its center of mass. Using approximations from Tichy & Maronetti (2008)
\[a_{\rm final}=0.686(5.04\nu-4.16\nu^2) +0.4[a_1/(0.632+1/q)^2+ a_2/(0.632+q)^2]\]where \(q=M_2/M_1\) and \(nu=q/((1+q)^2)\).
- Parameters:
masses_1 (numpy.ndarray) – Mass [M_sun] of object 1 with
floattypemasses_2 (numpy.ndarray) – Mass [M_sun] of object 2 with
floattypespins_1 (numpy.ndarray) – Spin magnitude [unitless] of object 1 with
floattypespins_2 (numpy.ndarray) – Spin magnitude [unitless] of object 2 with
floattypespin_angles_1 (numpy.ndarray) – Spin angle of m1 (wrt disk angular momentum) in radians with
floattypespin_angles_2 (numpy.nbdarray) – Spin angle of m2 (wrt disk angular momentum) in radians with
floattype
- Returns:
merged_spins – Final spin magnitude [unitless] of merger remnant with
floattype- Return type:
numpy array
- mcfacts.physics.binary.merge.normalize_tgw(smbh_mass, inner_disk_outer_radius)
Normalizes Gravitational wave timescale.
Calculate the normalization for timescale of a merger (in s) due to GW emission. From Peters (1964):
\[t_{\rm gw} \approx \frac{5}{256} \frac{c^5}{G^3} \frac{a_b^4}{M_b^2\mu_b}\]assuming eccentricity \(e=0.0\).
For \(a_b\) in units of \(r_g=GM_{\rm SMBH}/c^2\) we find
\[t_{\rm gw}=\frac{5}{256} \frac{G}{c^3} \left(\frac{a_b}{r_g}\right)^{4} \frac{M_s^4}{M_b^2\mu_b}\]Put
bin_mass_refin units of \(10\,M_\odot\) (is a reference mass).reduced_massin units of \(2.5\,M_\odot\).
- mcfacts.physics.binary.merge.spin_check(gen_1, gen_2, spin_merged)
Since the Tichy and Marronetti ‘08 perscription generates spin values outside of the expected range for higher mass ratio objects this file checks spin values after merger and if the magnitude is too low, this function resets it to a random distribution between a set range in order to generate results similiar to that of the NRsurrogate model.
- Parameters:
gen_1 (numpy.ndarray) – generation of m1 (before merger) (1=natal BH that has never been in a prior merger)
gen_2 (numpy.darray) – generation of m2 (before merger) (1=natal BH that has never been in a prior merger)
spin_merged (numpy.darray) – Final spin magnitude [unitless] of merger remnant with
floattype
- Returns:
merged_spins – Final spin magnitude [unitless] of merger remnant with
floattype- Return type:
numpy array