holodeck.sams.components

Semi-Analytic Model - Components

This module provides the key building blocks for the holodeck SAMs. In particular, the:

  • Galaxy Stellar-Mass Function (GSMF) : number-density of galaxies as a function of stellar mass;

  • Galaxy Merger Rate (GMR) : rate of galaxy mergers per galaxy;

  • Galaxy Pair Fraction (GPF) : fraction of galaxy pairs, relative to all galaxies;

  • Galaxy Merger Time (GMT) : duration over which galaxy pairs are observable as pairs.

For more information see the holodeck.sams module, or the SAMs getting-started guide.

References

class holodeck.sams.components._Galaxy_Stellar_Mass_Function(*args, **kwargs)[source]

Bases: ABC

Galaxy Stellar-Mass Function base-class. Used to calculate number-density of galaxies.

mbh_mass_func(mbh, redz, mmbulge, scatter=None)[source]

Convert from the GSMF to a MBH mass function (number density), using a given Mbh-Mbulge relation.

Parameters:
  • mbh (array_like) – Blackhole masses at which to evaluate the mass function.

  • redz (array_like) – Redshift(s) at which to evaluate the mass function.

  • mmbulge (relations._MMBulge_Relation subclass instance) – Scaling relation between galaxy and MBH masses.

  • scatter (None, bool, or float) – Introduce scatter in masses. * None or True : use the value from mmbulge._scatter_dex * False : do not introduce scatter * float : introduce scatter with this amplitude (in dex)

Returns:

ndens – Number density of MBHs, in units of [Mpc^-3]

Return type:

array_like

_abc_impl = <_abc._abc_data object>
class holodeck.sams.components.GSMF_Schechter(phi0=-2.77, phiz=-0.27, mchar0_log10=11.24, mchar0=None, mcharz=0.0, alpha0=-1.24, alphaz=-0.03)[source]

Bases: _Galaxy_Stellar_Mass_Function

Single Schechter Function - Galaxy Stellar Mass Function.

This is density per unit log10-interval of stellar mass, i.e. \(\Phi = dn / d\log_{10}(M)\)

See: [Chen2019] Eq.9 and enclosing section.

_phi_func(redz)[source]

See: [Chen2019] Eq.9

_mchar_func(redz)[source]

See: [Chen2019] Eq.10 - NOTE: added redz term

_alpha_func(redz)[source]

See: [Chen2019] Eq.11

_abc_impl = <_abc._abc_data object>
class holodeck.sams.components._GSMF_Single_Schechter(log10_phi_terms, log10_mstar_terms, alpha)[source]

Bases: _Galaxy_Stellar_Mass_Function

Schechter function, with parameters as quadratics with respect to redshift.

Parameterization follows [Leja2020] and is primarily for use in the GSMF_Double_Schechter class. From [Leja2020] Eq.14:

\[\frac{\partial n}{\partial \log_{10} \! M} = \ln(10) \phi \left(\frac{M}{M_\star}\right)^{\alpha+1} \exp[-M/M_\star].\]

The power-law index \(\alpha\) is a scalar value, while the reference mass \(M_\star\), and the normalization \(\phi\) are defined as quadratics with respect to redshift:

\[\begin{split}\log_{10}(\phi) & = a_0 + a_1 z + a_2 z^2, \\ \log_{10}(M_\star) & = b_0 + b_1 z + b_2 z^2.\end{split}\]

Class instances are callable, see __call__(), and return galaxy number densities in units of \([\mathrm{Mpc}^{-3} \, \mathrm{dex}^{-1}]\).

_log10_phi_terms

these are the \(a_i\) terms in the defintion.

_log10_mstar_terms

these are the \(b_i\) terms.

_alpha

power-law index

_phi_func(redz)[source]

Evaluate the GSMF normalization (phi) at the given redshift(s).

Parameters:

redz (array_like of float,) – Redshift(s) at which to calculate the GSMF normalization.

Returns:

phi – Number density normalization.

Return type:

array_like of float, [Mpc^-3 dex^-1]

_mstar_func(redz)[source]

Evaluate the GSMF characteristic mass (\(M_\star\)) at the given redshift(s).

_abc_impl = <_abc._abc_data object>
class holodeck.sams.components.GSMF_Double_Schechter(log10_phi1=[-2.383, -0.264, -0.107], log10_phi2=[-2.818, -0.368, 0.046], log10_mstar=[10.767, 0.124, -0.033], alpha1=-0.28, alpha2=-1.48)[source]

Bases: _Galaxy_Stellar_Mass_Function

Sum of two Schechter functions, each parameterized as quadratics in redshift.

For each Schechter Function (_GSMF_Single_Schechter), the normalizations (\(\phi\)) and characteristic masses (\(M_\star\)) are parameterized as quadratics with respect to redshift.

Each Schechter function is parameterized as,

\[\begin{split}\frac{\partial n}{\partial \log_{10} \! M} & = \ln(10) \, \phi \cdot \left(\frac{M}{M_\star}\right)^{\alpha+1} \exp[-M/M_\star], \\ \log_{10}(\phi) & = a_0 + a_1 z + a_2 z^2, \\ \log_{10}(M_\star) & = b_0 + b_1 z + b_2 z^2.\end{split}\]

The parameters for \(\phi\) and \(\alpha\) are different for the two functions, while the parameters for \(M_\star\) are shared (i.e. the same characteristic mass is used for both). Default parameters are the best fits from [Leja2020]. With uncertainties, these are:

log10(phi_1):  [ -2.383 ± 0.027,  -0.264 ± 0.071,  -0.107 ± 0.030],
log10(phi_2):  [ -2.818 ± 0.050,  -0.368 ± 0.070,  +0.046 ± 0.020],
log10(M_star): [+10.767 ± 0.026,  +0.124 ± 0.045,  -0.033 ± 0.015].
_abc_impl = <_abc._abc_data object>
class holodeck.sams.components._Galaxy_Merger_Rate(*args, **kwargs)[source]

Bases: ABC

Galaxy Merger Rate base class, used to model merger rates of galaxy pairs.

NOTE: the definition of mass is ambiguous, i.e. whether it is the primary mass, the combined system mass, the descendent mass, etc.

_Galaxy_Merger_Rate instances are callable, returning the specific galaxy merger-rate (i.e. the rate per galaxy), per unit mass-ratio, i.e.

\[R = \frac{\partial N_\mathrm{mergers}(M_\star, q_\star, z)}{\partial q_\star \, \partial t}.\]

Typically the mass \(M_\star\) is taken to be that of the descendent (roughly the combined mass of the two galaxies), and the mass ratio is \(q_\star \equiv M_{2,\star} / M_{1,\star} \leq 1.0\).

_abc_impl = <_abc._abc_data object>
class holodeck.sams.components.GMR_Illustris(norm0_log10=None, normz=None, malpha0=None, malphaz=None, mdelta0=None, mdeltaz=None, qgamma0=None, qgammaz=None, qgammam=None)[source]

Bases: _Galaxy_Merger_Rate

Galaxy Merger Rate - based on multiple power-laws.

See [Rodriguez-Gomez2015], Table 1. “merger rate as a function of descendant stellar mass M_star, progenitor stellar mass ratio mu_star”

_get_norm(redz)[source]
_get_malpha(redz)[source]
_get_mdelta(redz)[source]
_get_qgamma(redz, mtot)[source]
_abc_impl = <_abc._abc_data object>
class holodeck.sams.components._Galaxy_Pair_Fraction(*args, **kwargs)[source]

Bases: ABC

Galaxy Pair Fraction base class, used to describe the fraction of galaxies in mergers/pairs.

_abc_impl = <_abc._abc_data object>
class holodeck.sams.components.GPF_Power_Law(frac_norm_allq=0.025, frac_norm=None, mref=None, mref_log10=11.0, malpha=0.0, zbeta=0.8, qgamma=0.0, obs_conv_qlo=0.25, max_frac=1.0)[source]

Bases: _Galaxy_Pair_Fraction

Galaxy Pair Fraction - Single Power-Law

_abc_impl = <_abc._abc_data object>
class holodeck.sams.components._Galaxy_Merger_Time(*args, **kwargs)[source]

Bases: ABC

Galaxy Merger Time base class, used to model merger timescale of galaxy pairs.

zprime(mass, mrat, redz, **kwargs)[source]

Return the redshift after merger (i.e. input redz delayed by merger time).

_abc_impl = <_abc._abc_data object>
class holodeck.sams.components.GMT_Power_Law(time_norm=1.7356680000000002e+16, mref0=1.9884098706980508e+44, malpha=0.0, zbeta=-0.5, qgamma=0.0)[source]

Bases: _Galaxy_Merger_Time

Galaxy Merger Time - simple power law prescription

_abc_impl = <_abc._abc_data object>