Stellar

gwGenealogy.stellar.stellar_evolution.IMF_kroupa(m, alpha3=-2.3)[source]

Kroupa (2002) initial mass function (broken power law).

Parameters:
  • m (float or array) – Stellar mass in solar masses

  • alpha3 (float) – High-mass spectral index (default: -2.3)

Returns:

dN/dm in units of 1/Msun

Return type:

float or array

References

Kroupa (2002): https://arxiv.org/abs/astro-ph/0201098

gwGenealogy.stellar.stellar_evolution.sample_kroupa_masses(n_samples, m_min=0.08, m_max=150.0, alpha3=-2.3, seed=None)[source]

Sample masses from the Kroupa (2002) IMF via inverse CDF on a fine grid.

Parameters:
  • n_samples (int) – Number of masses to draw

  • m_min (float) – Minimum mass in solar masses (default: 0.08)

  • m_max (float) – Maximum mass in solar masses (default: 150.0)

  • alpha3 (float) – High-mass spectral index (default: -2.3)

  • seed (int or None) – Random seed for reproducibility

Returns:

Sampled masses in solar masses

Return type:

array

gwGenealogy.stellar.stellar_evolution.sample_zams_masses(n_samples, m_zams_min=10.0, m_zams_max=150.0, imf='salpeter', imf_alpha=-2.35, seed=None)[source]

Sample zero-age main sequence (ZAMS) masses from an initial mass function.

Parameters:

n_samplesint

Number of ZAMS masses to sample

m_zams_minfloat

Minimum ZAMS mass in solar masses (default: 10.0)

m_zams_maxfloat

Maximum ZAMS mass in solar masses (default: 150.0)

imfstr

Initial mass function: ‘salpeter’, ‘kroupa’, or ‘uniform’ (default: ‘salpeter’)

imf_alphafloat

Power-law index for Salpeter IMF (default: -2.35), or high-mass slope alpha3 for Kroupa IMF (default: -2.3 if not specified)

seedint or None

Random seed for reproducibility

Returns:

M_ZAMSarray

Array of ZAMS masses in solar masses

gwGenealogy.stellar.stellar_evolution.evolve_stars(M_ZAMS, Z, model='Fryer12_delayed', **kwargs)[source]

Evolve ZAMS masses to remnant masses using a stellar evolution model.

Parameters:

M_ZAMSfloat or array

ZAMS masses in solar masses

Zfloat

Absolute metallicity

modelstr

Stellar evolution model: ‘Fryer12_delayed’ or ‘SEVN_delayed’ (default: ‘Fryer12_delayed’)

**kwargs

Additional keyword arguments passed to the underlying model (e.g., mass_gap_low, mass_gap_high)

Returns:

M_remfloat or array

Remnant masses in solar masses. Returns 0 for objects in the pair-instability mass gap.

gwGenealogy.stellar.stellar_evolution.sample_1g_bh_masses_from_stellar_collapse(n_samples, Z=0.0002, model='Fryer12_delayed', m_zams_min=10.0, m_zams_max=150.0, imf='salpeter', imf_alpha=-2.35, seed=None, **kwargs)[source]

Generate a population of 1st-generation black holes from stellar evolution.

Convenience function that chains sample_zams_masses -> evolve_stars -> filter mass-gap zeros.

Parameters:

n_samplesint

Number of ZAMS masses to sample (actual BH count will be smaller after filtering mass-gap zeros)

Zfloat

Metallicity (default: 0.0002)

modelstr

Stellar evolution model: ‘Fryer12_delayed’ or ‘SEVN_delayed’ (default: ‘Fryer12_delayed’)

m_zams_minfloat

Minimum ZAMS mass in solar masses (default: 10.0)

m_zams_maxfloat

Maximum ZAMS mass in solar masses (default: 150.0)

imfstr

Initial mass function: ‘salpeter’, ‘kroupa’, or ‘uniform’ (default: ‘salpeter’)

imf_alphafloat

Power-law index for Salpeter IMF (default: -2.35)

seedint or None

Random seed for reproducibility

**kwargs

Additional keyword arguments passed to evolve_stars (e.g., mass_gap_low, mass_gap_high)

Returns:

m_bharray

Array of BH masses in solar masses (mass-gap zeros removed)

gwGenealogy.stellar.collapse.compute_Mrem_Fryer12_delayed_rapster(M, Z, mass_gap_low=45.0, mass_gap_high=120.0)[source]

Fryer et al. (2012) delayed remnant mass prescription model.

Uses RAPSTER stellar evolution data interpolated on a regular grid.

Parameters:

Mfloat or array

ZAMS mass in solar masses (valid range: [10, 340])

Zfloat or array

Absolute metallicity (valid range: [1e-4, 2e-2])

mass_gap_lowfloat

Lower edge of the upper mass gap in solar masses (default: 45.0)

mass_gap_highfloat

Upper edge of the upper mass gap in solar masses (default: 120.0)

Returns:

float or array

Remnant mass in solar masses. Returns 0 for BHs in the mass gap.

References:

Fryer et al. (2012): https://arxiv.org/abs/1110.1726

gwGenealogy.stellar.collapse.compute_Mrem_SEVN_delayed_rapster(M, Z, mass_gap_low=55.0, mass_gap_high=120.0)[source]

SEVN delayed SN engine remnant mass prescription.

Uses RAPSTER SEVN data interpolated on a regular grid across 12 metallicity values.

Parameters:

Mfloat or array

ZAMS mass in solar masses (valid range: [15, 340])

Zfloat or array

Absolute metallicity (valid range: [1e-4, 2e-2])

mass_gap_lowfloat

Lower edge of the upper mass gap in solar masses (default: 55.0)

mass_gap_highfloat

Upper edge of the upper mass gap in solar masses (default: 120.0)

Returns:

float or array

Remnant mass in solar masses. Returns 0 for BHs in the mass gap.

References:

Spera & Mapelli (2017) — SEVN code

gwGenealogy.stellar.natal_kick.sample_maxwellian_kick(sigma, n_samples=1, seed=None)[source]

Sample natal kick velocities from a Maxwellian velocity distribution.

Based on Equation 5 of Giacobbo & Mapelli (2018):

f(v) ∝ (1/sigma^3) * v^2 * exp(-v^2 / (2 * sigma^2))

where sigma is the one-dimensional root-mean-square (1D rms) velocity and v is the modulus of the 3D velocity.

The default sigma = 265 km/s was derived by Hobbs et al. (2005) from the proper motions of 233 young isolated Galactic pulsars, corresponding to an average natal kick speed <v> = sigma * sqrt(8/pi) ~ 420 km/s.

Parameters:

sigmafloat

1D rms velocity dispersion in km/s (default for CCSNe: 265 km/s)

n_samplesint

Number of kick velocities to draw (default: 1)

seedint or None

Random seed for reproducibility

Returns:

v_kickfloat or array

Kick velocity(ies) in km/s

References:

Giacobbo & Mapelli (2018), Eq. 5: https://arxiv.org/abs/1805.11100 Hobbs et al. (2005): https://arxiv.org/abs/astro-ph/0507584