IntegralGrowthFactor

class hmf.cosmology.growth_factor.IntegralGrowthFactor(cosmo: FLRW, **model_parameters)[source]

Growth factor computed using the integral of Heath 1977.

This growth factor is only applicable when the radiation density is negligible, and so is only accurate at “low” redshifts in cosmologies with radiation.

The integral formula is:

\[D^+(a) = \frac{5}{2} \Omega_{m,0} E(a) \int_0^a \frac{da'}{(a'^3 E(a')^3)}.\]

In this class, if a cosmology is given that has non-zero radiation density, the radiation density will be included in the calculation of E(a), even though the assumptions of the formula are not valid in this case. If the growth factor is being computed at high redshifts, a warning will be raised due to the inaccuracy of the method, but otherwise the calculation will continue. The ability to run the calculation in this case is provided to allow for comparison.

The growth rate has a particularly simple form under the assumptions of the integral formula, and so is calculated using this form, which is consistent with the growth factor calculation, and is also faster to compute than taking the derivative of the growth factor spline. It is:

\[\frac{d\ln D^+}{d\ln a} = dlnH/dln(a) + 2.5 \frac{\Omega_m(a)}{a^2 H^2(a) D^+(a)}.\]

Attributes

Or0

The fractional radiation density at redshift zero.

references: ClassVar[tuple[str, ...]] = ('Heath, D. J., 1977. MNRAS 179, 351. https://ui.adsabs.harvard.edu/abs/1977MNRAS.179..351H',)

References to cite when this model is used, each a formatted citation string. Subclasses inherit their parent’s references unless they set their own.

Methods

dlne_dlna(z)

Compute the derivative of ln(E(a)) with respect to ln(a).

This is useful for the growth factor, which has terms \(E'(a)/E(a) \equiv (1/a)*dlnE/dlna\) in its definition.

This implementation simply uses the exact definition from astropy of E(a) and writes down the derivative analytically. The dark-energy density scales as \(\rho_{\rm DE}(a) \propto \exp(-3\int (1+w)\, d\ln a)\), so its logarithmic derivative is \(-3(1+w(a))\), which vanishes only for a cosmological constant. With massive neutrinos, the radiation term is \(\Omega_\gamma (1 + N(z)) a^{-4}\), where \(N(z)\) is astropy’s nu_relative_density. \(N\) varies with time as the neutrinos become non-relativistic, so its derivative is included, computed by central finite difference in \(\ln(1+z)\).

classmethod get_models() → Mapping[str, type]

Get a read-only mapping of all implemented models for this component.

The mapping is a live view of the registry, so it shows models registered later, but it can not be used to add or remove models.

growth_factor(z)

Compute the normalized growth factor, \(D(a) = D^+(a)/D^+(a=1)\).

Parameters:

z (array_like) – Redshift.

Returns:

gf – The growth factor at z.

Return type:

array_like

growth_rate(z) → float | ndarray

Compute the growth rate, \(f(a) = d\ln D^+ / d\ln a\).

Parameters:

z (array_like) – Redshift.

Returns:

gr – The growth rate at z.

Return type:

array_like

radiation_density(z)

The fractional radiation density as a function of redshift.