.. _physics-darkMatterHaloMassAccretionHistory: Dark Matter Halo Mass Accretion Histories ========================================= Class providing dark matter halo mass accretion histories (MAHs), i.e. the mass of a halo's main progenitor as a function of time or redshift. The MAH encodes how rapidly a halo assembled its mass and is used to set the structural properties of halos via concentration models, to compute merger rates, and to track the formation redshift of halos. **Default implementation:** ``darkMatterHaloMassAccretionHistoryWechsler2002`` Methods ------- ``time`` → ``double precision`` Returns the cosmological time (in Gyr) at which the main progenitor of the halo in ``node`` first reached the specified halo mass, found by root-finding on the mass accretion history. * ``type (treeNode), intent(inout), target :: node`` * ``double precision , intent(in ) :: mass`` ``mass`` → ``double precision`` Returns the halo mass (in :math:`\mathrm{M}_\odot`) of the main progenitor of the halo in ``node`` at the specified cosmological time, evaluated from the parametric mass accretion history model. * ``type (treeNode), intent(inout), target :: node`` * ``double precision , intent(in ) :: time`` ``massAccretionRate`` → ``double precision`` Returns the halo mass accretion rate (in :math:`\mathrm{M}_\odot` Gyr\ :math:`^{-1}`) of the main progenitor of the halo in ``node`` at the specified cosmological time, computed as the time derivative of the mass accretion history. * ``type (treeNode), intent(inout) :: node`` * ``double precision , intent(in ) :: time`` .. _physics-darkMatterHaloMassAccretionHistoryCorrea2015: ``darkMatterHaloMassAccretionHistoryCorrea2015`` ------------------------------------------------ Dark matter halo mass accretion histories using the :cite:t:`correa_accretion_2015` algorithm. **Parameters** * ``[A]`` (default ``887.0d0``) — The parameter :math:`A` appearing in eqn. (17) of :cite:t:`correa_accretion_2015`. .. _physics-darkMatterHaloMassAccretionHistoryDiemer2020: ``darkMatterHaloMassAccretionHistoryDiemer2020`` ------------------------------------------------ Dark matter halo mass accretion histories computed using the fitting function of :cite:t:`diemer_splashback_2020`. .. _physics-darkMatterHaloMassAccretionHistoryHearin2021: ``darkMatterHaloMassAccretionHistoryHearin2021`` ------------------------------------------------ Computes dark matter halo mass accretion histories using the differentiable rolling power-law model of :cite:t:`hearin_differentiable_2021`, in which the mass growth rate transitions smoothly between early- and late-time power laws. The early- and late-time indices are set by ``[powerLawIndexEarly]`` and ``[powerLawIndexLate]``, the transition rate by ``[rateRollOver]``, and the time of peak mass by ``[timeMaximum]``. **Methods** * ``powerLawIndex`` — Return the power law index at the given time. * ``powerLawIndexDerivative`` — Return the derivative of the power law index with respect to time. * ``timeZeroLogarithmic`` — Return the :math:`\log_{10}(t_0)` parameter. * ``massMaximum`` — Return the maximum mass in the mass accretion history. * ``sigmoid`` — The sigmoid interpolation function. * ``powerLawIndexEarly_`` — Return the early-time power law index. * ``powerLawIndexLate_`` — Return the late-time power law index. * ``rateRollOver_`` — Return the roll-over rate. * ``timeMaximum_`` — Return the time of maximum mass. **Parameters** * ``[powerLawIndexEarly]`` — The power law index governing halo mass growth at early times in the :cite:t:`hearin_differentiable_2021` rolling power-law MAH model; positive values correspond to a rapidly assembling halo at high redshift. * ``[powerLawIndexLate]`` — The power law index governing halo mass growth at late times in the :cite:t:`hearin_differentiable_2021` rolling power-law MAH model; negative values correspond to halos that have ceased mass growth or are losing mass via tidal stripping. * ``[rateRollOver]`` — The roll-over rate parameter :math:`k` in the :cite:t:`hearin_differentiable_2021` MAH model, controlling how rapidly the power law index transitions from its early-time to late-time value; larger :math:`k` gives a sharper transition. * ``[timeMaximum]`` — The cosmological time (in Gyr) at which the halo reaches its peak mass in the :cite:t:`hearin_differentiable_2021` MAH model, marking the transition between mass assembly and mass loss regimes. .. _physics-darkMatterHaloMassAccretionHistoryHearin2021Stochastic: ``darkMatterHaloMassAccretionHistoryHearin2021Stochastic`` ---------------------------------------------------------- Computes dark matter halo mass accretion histories using the rolling power-law model of :cite:t:`hearin_differentiable_2021` with stochastic sampling of the early- and late-time power-law indices from population distributions. The fraction of late-forming halos at low and high halo mass is set by ``[fractionLateLow]`` and ``[fractionLateHigh]``, and the roll-over rate by ``[rateRollOver]``. **Methods** * ``sample`` — Sample parameters for the given node from the distribution function. * ``fractionLate`` — Return the fraction of late-forming halos. **Parameters** * ``[fractionLateLow]`` (default ``0.35d0``) — The fraction of late-forming halos in the low halo mass limit. * ``[fractionLateHigh]`` (default ``0.45d0``) — The fraction of late-forming halos in the high halo mass limit. * ``[rateRollOver]`` (default ``3.5d0``) — The roll-over rate parameter :math:`k` in the stochastic :cite:t:`hearin_differentiable_2021` MAH model, controlling how rapidly the power law index transitions from its early-time to late-time value across the population. * ``[meanUEarlyLowEarlyForming]`` (default ``meanDefault(massLow%ID,formationEarly%ID,parameterUEarly%ID)``) — The mean low-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[meanUEarlyHighEarlyForming]`` (default ``meanDefault(massHigh%ID,formationEarly%ID,parameterUEarly%ID)``) — The mean high-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[meanUEarlyLowLateForming]`` (default ``meanDefault(massLow%ID,formationLate%ID,parameterUEarly%ID)``) — The mean low-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[meanUEarlyHighLateForming]`` (default ``meanDefault(massHigh%ID,formationLate%ID,parameterUEarly%ID)``) — The mean high-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[meanULateLowEarlyForming]`` (default ``meanDefault(massLow%ID,formationEarly%ID,parameterULate%ID)``) — The mean low-mass limit of :math:`\log_{10}` late-time power law index for early-forming halos. * ``[meanULateHighEarlyForming]`` (default ``meanDefault(massHigh%ID,formationEarly%ID,parameterULate%ID)``) — The mean high-mass limit of :math:`\log_{10}` late-time power law index for early-forming halos. * ``[meanULateLowLateForming]`` (default ``meanDefault(massLow%ID,formationLate%ID,parameterULate%ID)``) — The mean low-mass limit of :math:`\log_{10}` late-time power law index for late-forming halos. * ``[meanULateHighLateForming]`` (default ``meanDefault(massHigh%ID,formationLate%ID,parameterULate%ID)``) — The mean high-mass limit of :math:`\log_{10}` late-time power law index for late-forming halos. * ``[meanLog10TimeZeroLowEarlyForming]`` (default ``meanDefault(massLow%ID,formationEarly%ID,parameterLog10TimeZero%ID)``) — The mean low-mass limit of :math:`\log_{10}` :math:`t_0` for early-forming halos. * ``[meanLog10TimeZeroHighEarlyForming]`` (default ``meanDefault(massHigh%ID,formationEarly%ID,parameterLog10TimeZero%ID)``) — The mean high-mass limit of :math:`\log_{10}` :math:`t_0` for early-forming halos. * ``[meanLog10TimeZeroLowLateForming]`` (default ``meanDefault(massLow%ID,formationLate%ID,parameterLog10TimeZero%ID)``) — The mean low-mass limit of :math:`\log_{10}` :math:`t_0` for late-forming halos. * ``[meanLog10TimeZeroHighLateForming]`` (default ``meanDefault(massHigh%ID,formationLate%ID,parameterLog10TimeZero%ID)``) — The mean high-mass limit of :math:`\log_{10}` :math:`t_0` for late-forming halos. * ``[choleskyUEarlyUEarlyLowEarlyForming]`` (default ``choleskyDefault(massLow%ID,formationEarly%ID,parameterUEarly%ID,parameterUEarly%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyUEarlyUEarlyHighEarlyForming]`` (default ``choleskyDefault(massHigh%ID,formationEarly%ID,parameterUEarly%ID,parameterUEarly%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyUEarlyUEarlyLowLateForming]`` (default ``choleskyDefault(massLow%ID,formationLate%ID,parameterUEarly%ID,parameterUEarly%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyUEarlyUEarlyHighLateForming]`` (default ``choleskyDefault(massHigh%ID,formationLate%ID,parameterUEarly%ID,parameterUEarly%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyUEarlyULateLowEarlyForming]`` (default ``choleskyDefault(massLow%ID,formationEarly%ID,parameterUEarly%ID,parameterULate%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyUEarlyULateHighEarlyForming]`` (default ``choleskyDefault(massHigh%ID,formationEarly%ID,parameterUEarly%ID,parameterULate%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyUEarlyULateLowLateForming]`` (default ``choleskyDefault(massLow%ID,formationLate%ID,parameterUEarly%ID,parameterULate%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyUEarlyULateHighLateForming]`` (default ``choleskyDefault(massHigh%ID,formationLate%ID,parameterUEarly%ID,parameterULate%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyUEarlyLog10TimeZeroLowEarlyForming]`` (default ``choleskyDefault(massLow%ID,formationEarly%ID,parameterUEarly%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyUEarlyLog10TimeZeroHighEarlyForming]`` (default ``choleskyDefault(massHigh%ID,formationEarly%ID,parameterUEarly%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyUEarlyLog10TimeZeroLowLateForming]`` (default ``choleskyDefault(massLow%ID,formationLate%ID,parameterUEarly%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyUEarlyLog10TimeZeroHighLateForming]`` (default ``choleskyDefault(massHigh%ID,formationLate%ID,parameterUEarly%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyULateULateLowEarlyForming]`` (default ``choleskyDefault(massLow%ID,formationEarly%ID,parameterULate%ID,parameterULate%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyULateULateHighEarlyForming]`` (default ``choleskyDefault(massHigh%ID,formationEarly%ID,parameterULate%ID,parameterULate%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyULateULateLowLateForming]`` (default ``choleskyDefault(massLow%ID,formationLate%ID,parameterULate%ID,parameterULate%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyULateULateHighLateForming]`` (default ``choleskyDefault(massHigh%ID,formationLate%ID,parameterULate%ID,parameterULate%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyULateLog10TimeZeroLowEarlyForming]`` (default ``choleskyDefault(massLow%ID,formationEarly%ID,parameterULate%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyULateLog10TimeZeroHighEarlyForming]`` (default ``choleskyDefault(massHigh%ID,formationEarly%ID,parameterULate%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyULateLog10TimeZeroLowLateForming]`` (default ``choleskyDefault(massLow%ID,formationLate%ID,parameterULate%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyULateLog10TimeZeroHighLateForming]`` (default ``choleskyDefault(massHigh%ID,formationLate%ID,parameterULate%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyLog10TimeZeroLog10TimeZeroLowEarlyForming]`` (default ``choleskyDefault(massLow%ID,formationEarly%ID,parameterLog10TimeZero%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyLog10TimeZeroLog10TimeZeroHighEarlyForming]`` (default ``choleskyDefault(massHigh%ID,formationEarly%ID,parameterLog10TimeZero%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for early-forming halos. * ``[choleskyLog10TimeZeroLog10TimeZeroLowLateForming]`` (default ``choleskyDefault(massLow%ID,formationLate%ID,parameterLog10TimeZero%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element low-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. * ``[choleskyLog10TimeZeroLog10TimeZeroHighLateForming]`` (default ``choleskyDefault(massHigh%ID,formationLate%ID,parameterLog10TimeZero%ID,parameterLog10TimeZero%ID)``) — The Cholesky matrix element high-mass limit of :math:`\log_{10}` early-time power law index for late-forming halos. .. _physics-darkMatterHaloMassAccretionHistoryMergerTreeBranching: ``darkMatterHaloMassAccretionHistoryMergerTreeBranching`` --------------------------------------------------------- Dark matter halo mass accretion histories computed from merger tree branching rates. .. _physics-darkMatterHaloMassAccretionHistoryWechsler2002: ``darkMatterHaloMassAccretionHistoryWechsler2002`` -------------------------------------------------- A dark matter halo mass accretion history class in which the mass accretion history is given by :cite:p:`wechsler_concentrations_2002`: .. math:: M(t) = M(t_0) \exp \left( - 2 a_\mathrm{c} \left[ {a(t_0)\over a(t)}-1 \right] \right), where :math:`t_0` is some reference time and :math:`a_\mathrm{c}` is a characteristic expansion factor defined by :cite:t:`wechsler_concentrations_2002` to correspond to the formation time of the halo (using the formation time definition of :cite:author:`bullock_profiles_2001` :cite:year:`bullock_profiles_2001`). **(Default implementation)** **Methods** * ``calculationReset`` — Reset memoized calculations. * ``expansionFactorAtFormation`` — Compute the formation expansion factor. **Parameters** * ``[formationRedshiftCompute]`` (default ``.true.``) — If true, compute formation redshift automatically for :cite:t:`wechsler_concentrations_2002` halo mass accretion histories. * ``[formationRedshift]`` — The formation redshift to use in :cite:t:`wechsler_concentrations_2002` halo mass accretion histories. .. _physics-darkMatterHaloMassAccretionHistoryZhao2009: ``darkMatterHaloMassAccretionHistoryZhao2009`` ---------------------------------------------- A dark matter halo mass accretion history class which uses the algorithm given by :cite:t:`zhao_accurate_2009` to compute mass accretion histories. In particular, :cite:t:`zhao_accurate_2009` give a fitting function for the quantity :math:`\mathrm{d} \ln \sigma(M)/\mathrm{d} \ln \delta_\mathrm{c}(t)` for the dimensionless growth rate in a mass accretion history at time :math:`t` and halo mass :math:`M`. This is converted to a dimensionful growth rate using .. math:: {\mathrm{d} M \over \mathrm{d} t} = \left({\mathrm{d} \ln \sigma(M) \over \mathrm{d} \ln M}\right)^{-1} \left({\mathrm{d} \delta_c(t) \over \mathrm{d} t}\right) \left( {M \over \delta_\mathrm{c}(t)} \right) \left({\mathrm{d} \ln \sigma(M) \over \mathrm{d} \ln \delta_\mathrm{c}(t)}\right). This differential equation is then solved numerically to find the mass accretion history.