mcfacts.setup.setupdiskblackholes
Defines functions to set up initial conditions for black holes in the AGN disk.
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_arg_periapse(disk_bh_num)
Generates disk BH initial orb arg periapse [radian]
Assumes a orb arg. periapse either 0 or pi/2 radians. TO DO: Set between [0,2pi] uniformly. But issue with calculating retrograde capture when uniform to be fixed.
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_circularized(disk_bh_num, disk_bh_pro_orb_ecc_crit)
Generates disk BH initial orbital eccentricities assuming circularized distribution [unitless]
Assumes a circularized distribution in orb_ecc. Right now set to orb_ecc=0.0
- Parameters:
- Returns:
disk_bh_orb_ecc_init – Initial BH orb eccentricity [unitless] with
floattype. Assumed circularized.- Return type:
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_eccentricity_thermal(disk_bh_num)
Generates disk BH initial orbital eccentricities with a thermal distribution [unitless]
Assumes a thermal distribution (uniform in e^2, i.e. e^2=[0,1] so median(e^2)=0.5 and so median(e)~0.7. This might be appropriate for e.g. a galactic nucleus that is very relaxed and has not had any nuclear activity for a long time.
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_eccentricity_uniform(disk_bh_num, disk_bh_orb_ecc_max_init)
Generates disk BH initial orbital eccentrities with a uniform distribution [unitless]
Assumes a uniform distribution in orb_ecc, up to disk_bh_orb_ecc_max_init i.e. e=[0,disk_bh_orb_ecc_max_init] so median(e)=disk_bh_orb_ecc_max_init/2. This might be appropriate for e.g. a galactic nucleus that is recently post-AGN so not had much time to relax. Most real clusters/binaries lie between thermal & uniform (e.g. Geller et al. 2019, ApJ, 872, 165) Cap of max_initial_eccentricity allows for previous recent episode of AGN where the population is relaxating from previously circularized.
- Parameters:
- Returns:
disk_bh_initial_orb_ecc – Initial BH orb eccentricity [unitless] with
floattype- Return type:
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_incl(disk_bh_num, disk_bh_locations, disk_bh_orb_ang_mom, disk_aspect_ratio)
Generates disk BH initial orbital inclinations [radian]
Initializes inclinations with random draw with i < disk_aspect_ratio and then damp inclination. To do: calculate v_kick for each merger and then the (i,e) orbital elements for the newly merged BH. Then damp (i,e) as appropriate. Return an initial distribution of inclination angles that are 0 deg.
- Parameters:
disk_bh_num (int) – Integer number of BH initially embedded in disk
disk_bh_locations (numpy.ndarray) – BH semi-major axes in disk [r_{g,SMBH}] with
floattypedisk_bh_orb_ang_mom (numpy.ndarray) – BH orb ang mom in the disk [unitless] with
floattypedisk_aspect_ratio (numpy.ndarray) – Disk height as a function of disk radius [r_{g,SMBH}] with
floattype
- Returns:
disk_bh_orb_inc_init – Array of initial BH orb eccentricity [unitless] with
floattype- Return type:
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_location_NSC_powerlaw(disk_bh_num, disk_radius_outer, disk_inner_stable_circ_orb, smbh_mass, nsc_radius_crit, nsc_density_index_inner, nsc_density_index_outer, volume_scaling=True)
Draw initial single black hole orbital semi-major axes \(r_{g,SMBH}\) from a nuclear star cluster with a broken powerlaw density distribution (i.e. two slopes).
Algorithm: 1. convert all parsec units to gravitational radii 2. create a radius array r with the bounds
minimum = disk_inner_stable_circ_orb maximum = disk_radius_outer
- create y = f(r) using power law indices
for r < nsc_radius_crit for r > nsc_radius_crit
Optional: scale y by each radial shell’s volume
calculate pdf: p(r) = y / sum(y)
- draw locations from the pdf:
rng.choice(r, size=disk_bh_num, p=y_pdf)
- Parameters:
disk_bh_num (int) – Integer number of black holes in the disk that need locations
disk_radius_outer (float) – Outer radius of disk \(r_{g,SMBH}\) in gravitational radii
disk_inner_stable_circ_orb – Inner radius of disk \(r_{g,SMBH}\) in gravitational radii
smbh_mass (float) – Mass of the supermassive black hole in solar masses
nsc_radius_crit (float) – Radius at which the powerlaw index changes in parsecs
nsc_density_index_inner (int) – Powerlaw index of the nuclear star cluster interior to nsc_radius_crit
nsc_density_index_outer (ing) – Powerlaw index of the nuclear star cluster exterior to nsc_radius_crit
volume_scaling=True (bool) – A switch to normalize by each radial shell’s volume such that the total probability over the range is 1. When :obj`True`, each radial bin of the powerlaw function is multiplied by \(\pi r^2 dr\). Default
True.
- Returns:
bh_initial_locations – Initial BH locations in disk \(r_{g,SMBH}\) with
floattype- Return type:
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_location_uniform(disk_bh_num, disk_outer_radius, disk_inner_stable_circ_orb)
Generates initial single BH orbital semi-major axes :math:`r_{g,SMBH}’
BH semi-major axes are distributed randomly uniformly through disk of radial size
disk_outer_radius- Parameters:
- Returns:
bh_initial_locations – Initial BH locations in disk \(r_{g,SMBH}\) with
floattype- Return type:
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_masses(disk_bh_num, nsc_bh_imf_mode, nsc_bh_imf_max_mass, nsc_bh_imf_powerlaw_index, mass_pile_up, nsc_imf_bh_method)
Generates disk BH initial masses [M_sun] of size disk_bh_num for user defined inputs.
- Parameters:
disk_bh_num (int) – Integer number of BH initially embedded in disk
nsc_bh_imf_mode (float) – Mode of nuclear star cluster BH initial mass function [M_sun]. User set (default = 10).
nsc_bh_inf_max_mass (float) – Max mass of nuclear star cluster BH IMF [M_sun]. User set (default = 40).
nsc_bh_imf_powerlaw_index (float) – Powerlaw index of nuclear star cluster BH IMF (e.g. M^-2) [unitless]. User set (default = 2).
mass_pile_up (float) – Mass pile up term < nsc_bh_inf_max_mass [M_sun]. User set (default = 35.). Used to make a uniform pile up in mass between [mass_pile_up, nsc_bh_inf_max_mass] for masses selected from nsc_bh_imf_powerlaw_index beyond nsc_bh_inf_max_mass. E.g default [35,40] pile up of masses.
nsc_imf_bh_method (str) – Method for IMF population
- Returns:
- numpy.ndarray
Disk BH initial masses with
floattype
- Return type:
disk_bh_initial_masses
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_orb_ang_mom(disk_bh_num)
Generates disk BH initial orbital angular momenta [unitless]
Assume either initially fully prograde (+1) or retrograde (-1)
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_spin_angles(disk_bh_num, disk_bh_initial_spins)
Generates disk BH initial spin angles [radian]
Spin angles are drawn from random uniform distribution. Positive (negative) spin magnitudes have spin angles [0,1.57]([1.5701,3.14])rads All BH spin angles are initially drawn from a uniform distribution of [0,1.57]rads. For BH with negative spins, we add +1.57rads.
- Parameters:
disk_bh_num (int) – Integer number of BH initially embedded in disk
disk_bh_initial_spins (numpy.ndarray) – Initial BH spins [unitless] with
floattype
- Returns:
disk_bh_initial_spin_angles – Initial BH spin angles [radian] with
floattype- Return type:
- mcfacts.setup.setupdiskblackholes.setup_disk_blackholes_spins(disk_bh_num, nsc_bh_spin_dist_mu, nsc_bh_spin_dist_sigma)
Generates disk BH initial spins [unitless]
Spins are calculated with user defined Gaussian spin distribution centered on mu (default = 0) and variance sigma(default = 0.2).
- Parameters:
- Returns:
disk_bh_initial_spins – Initial BH spins with
floattype- Return type:
- mcfacts.setup.setupdiskblackholes.setup_disk_nbh(nsc_mass, nsc_ratio_bh_num_star_num, nsc_ratio_mbh_mass_star_mass, nsc_radius_outer, nsc_density_index_outer, smbh_mass, disk_radius_outer, disk_aspect_ratio_avg, nsc_radius_crit, nsc_density_index_inner)
Calculates integer number of BH in the AGN disk as calculated from user inputs for NSC and disk
- Parameters:
nsc_mass (float) – Mass of Nuclear Star Cluster [M_sun]. Set by user. Default is mass of Milky Way NSC = 3e7M_sun.
nsc_ratio_bh_num_star_num (float) – Ratio of number of BH in NSC to number of stars [unitless]. Set by user. Default is 1.e-3.
nsc_ratio_mbh_mass_star_mass (float) – Ratio of mass of typical BH in NSC to typical star in NSC [unitless]. Set by user. Default is 10 (BH=10M_sun,star=1M_sun)
nsc_radius_outer (float) – Outer radius of NSC [pc]. Set by user. Default is 5pc.
nsc_density_index_outer (float) – NSC density powerlaw index in outer regions. Set by user. NSC density n(r) is assumed to consist of a broken powerlaw distribution, with one powerlaw in inner regions (Bahcall-Wolf, r^{-7/4} usually) and one in the outer regions. This is the outer region NSC powerlaw density index. Default is \(n(r) \propto r^{-5/2}\)
smbh_mass (float) – Mass of the SMBH [M_sun]. Set by user. Default is 1.e8M_sun.
disk_radius_outer (float) – Outer radius of disk [r_{g,SMBH}]. Set by user. Default is 5.e4r_g (or 0.25pc around a 10^8M_sun)
disk_aspect_ratio_avg (float) – Average disk aspect ratio [unitless]. Set by user. Default is h=0.03.
nsc_radius_crit (float) – NSC critical radius [pc]. Set by user. Radius at which NSC density changes from inner powerlaw index to outer powerlaw index.
nsc_density_index_inner (float) – NSC density powerlaw index in inner regions [unitless]. Set by user. Default is \(n(r) \propto r^{-7/4}\) (Bahcall-Wolf)
- Returns:
disk_bh_num – Number of BH in the AGN disk
- Return type:
- mcfacts.setup.setupdiskblackholes.setup_prior_blackholes_indices(prograde_n_bh, prior_bh_locations)
Generates indices which allow us to read prior BH properties & replace prograde BH with these.
- Parameters:
prograde_n_bh (int) – Integer number of prograde BHs
prior_bh_locations (numpy.ndarray) – Locations of BH in disk [r_{g,SMBH}] with
floattype
- Returns:
bh_indices – BH indices with
floattype- Return type:
np.ndarray