BaseGrowthFactor

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

General class for a growth factor calculation.

Sub-classes must implement _d_plus_unnormalized(), which should take a single argument – the redshift, z – and return an array or float (depending on the input type) of the un-normalized growth factor, \(D^+(a)\). Most typically, the normalization of this function is such that \(D^+(a) \approx a\) at early times, but this is not enforced, and does not affect the user-facing methods of the class.

Sub-classes may also implement growth_rate(), which takes the same argument and returns the growth rate:

\[f(a) = d\ln D^+ / d\ln a.\]

If this is not implemented, then the growth rate will be calculated by taking the derivative of a spline fitted to the growth factor numerically, and in which the growth factor is evaluated on a logarithmic grid of the scale factor from amin to 1 in steps of dlna.

Attributes

Or0[source]

The fractional radiation density at redshift zero.

references: ClassVar[tuple[str, ...]] = ()

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)[source]

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)[source]

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[source]

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)[source]

The fractional radiation density as a function of redshift.