NcGrowthFunc

NcGrowthFunc — Growth function of linear perturbations.

Stability Level

Stable, unless otherwise indicated

Functions

Properties

double abstol Read / Write / Construct
double reltol Read / Write / Construct
double x-i Read / Write / Construct

Object Hierarchy

    GObject
    ╰── NcGrowthFunc

Includes

#include <numcosmo/lss/nc_growth_func.h>

Description

This object implements the integration of second order differential equation (ODE) for the matter (baryons + cold dark matter: $\Omega_m$, see nc_hicosmo_E2Omega_m() and nc_hicosmo_E2()) density contrast, $\delta$, in the linear regime of perturbations, see for instance Matínez and Saar (2002). The equation is given by \begin{equation*} \ddot{ \delta } + 2 \frac{\dot{a}}{a} \dot{ \delta } - 4\pi G \bar{\rho}(a)\delta = 0, \end{equation*} where, $a$ is the scale factor of the universe, $G$ is the universal gravitational constant, $\bar{\rho}$ is the mean matter density at $a$, and the derivatives are taken with respect to the cosmic time, $t$. By changing the variable from cosmic time to $x=(1+z)$, the ODE becomes, \begin{equation}\label{eq:mov} \delta'' + \left( \frac{E'(x)}{E(x)} - \frac{1}{x} \right) \delta' - \frac{3}{2} \frac{\Omega_{m}(x)}{x^2}\delta = 0. \end{equation} Where $'$ denote derivatives with respect to $x$ and $\Omega_{m}(x)$ is the matter density as a function of the redshift $z$, \begin{equation*} \Omega_{m}(z) = \frac{(1+z)^3}{E(z)^{2}} \Omega_{m,0} \,\, , \end{equation*} and $E$ is the normalized Hubble function [nc_hicosmo_E()].

The ODE initial conditions are defined at $a_i / a_0 = 10^{-12}$ (“x-i”), where the universe is well approximated by a radiation and matter model. Therefore, within this assumption the growing mode is simply \begin{equation*} \delta(a) \propto 1 + \frac{3\Omega_{m,0}}{2\Omega_{r,0}}\frac{a}{a_0}, \end{equation*} Note that it was chosen a large enough redshift ($z \approx 10^{12}$) such that it is safe to assume that the dark energy component and curvature are negligible.

As usual, the growth function is set to unit at the present time, $D(a_0) = 1$.

Functions

nc_growth_func_new ()

NcGrowthFunc *
nc_growth_func_new (void);

This function allocates memory for a new NcGrowthFunc object.

Returns

A new NcGrowthFunc.


nc_growth_func_ref ()

NcGrowthFunc *
nc_growth_func_ref (NcGrowthFunc *gf);

Increases the reference count of gf atomically.

Parameters

gf

a NcGrowthFunc

 

Returns

gf .

[transfer full]


nc_growth_func_free ()

void
nc_growth_func_free (NcGrowthFunc *gf);

Atomically decrements the reference count of gf by one. If the reference count drops to 0, all memory allocated by gf is released.

Parameters

gf

a NcGrowthFunc

 

nc_growth_func_clear ()

void
nc_growth_func_clear (NcGrowthFunc **gf);

Atomically decrements the reference count of gf by one. If the reference count drops to 0, all memory allocated by gf is released. Set pointer to NULL.

Parameters

gf

a NcGrowthFunc

 

nc_growth_func_set_reltol ()

void
nc_growth_func_set_reltol (NcGrowthFunc *gf,
                           const gdouble reltol);

Sets the relative tolerance (“reltol”) used when integrating Eq. \eqref{eq:mov}.

Parameters

gf

a NcGrowthFunc

 

reltol

relative tolerance

 

nc_growth_func_set_abstol ()

void
nc_growth_func_set_abstol (NcGrowthFunc *gf,
                           const gdouble abstol);

Sets the absolute tolerance (“abstol”) used when integrating Eq. \eqref{eq:mov}.

Parameters

gf

a NcGrowthFunc

 

abstol

absolute tolerance

 

nc_growth_func_set_x_i ()

void
nc_growth_func_set_x_i (NcGrowthFunc *gf,
                        const gdouble x_i);

Sets the initial redshift variable $x_i = 1 + z_i$ where the integration begins.

Parameters

gf

a NcGrowthFunc

 

x_i

initial scale $x_i = a_0 / a_i$

 

nc_growth_func_get_reltol ()

gdouble
nc_growth_func_get_reltol (NcGrowthFunc *gf);

Parameters

gf

a NcGrowthFunc

 

Returns

the current value of “reltol”.


nc_growth_func_get_abstol ()

gdouble
nc_growth_func_get_abstol (NcGrowthFunc *gf);

Parameters

gf

a NcGrowthFunc

 

Returns

the current value of “abstol”.


nc_growth_func_get_x_i ()

gdouble
nc_growth_func_get_x_i (NcGrowthFunc *gf);

Parameters

gf

a NcGrowthFunc

 

Returns

the current value of “x_i”.


nc_growth_func_prepare ()

void
nc_growth_func_prepare (NcGrowthFunc *gf,
                        NcHICosmo *cosmo);

This function prepares the object gf using cosmo , such that all the available NcGrowthFunc functions can be evaluated, e.g. nc_growth_func_eval() and nc_growth_func_eval_deriv().

Parameters

gf

a NcGrowthFunc

 

cosmo

a NcHICosmo

 

nc_growth_func_prepare_if_needed ()

void
nc_growth_func_prepare_if_needed (NcGrowthFunc *gf,
                                  NcHICosmo *cosmo);

This function prepares the object gf using cosmo if it was changed since last preparation.

Parameters

gf

a NcGrowthFunc

 

cosmo

a NcHICosmo

 

nc_growth_func_eval ()

gdouble
nc_growth_func_eval (NcGrowthFunc *gf,
                     NcHICosmo *cosmo,
                     gdouble z);

This function evaluates the normalized growth function at redshift $z$, $D(z)$.

Parameters

gf

a NcGrowthFunc

 

cosmo

a NcHICosmo

 

z

redshift $z$

 

Returns

the normalized growth function $D(z)$.


nc_growth_func_eval_deriv ()

gdouble
nc_growth_func_eval_deriv (NcGrowthFunc *gf,
                           NcHICosmo *cosmo,
                           gdouble z);

This function evaluates the derivative of the normalized growth function $\mathrm{d}D/\mathrm{d}a$ at redshift $z$, also called as linear growth rate. Where $a$ is the scale factor.

Note that this definition is different from the one normally applied in redshift-space distortion studies. These studies use the parameter given by, \begin{equation*} f(z) = \left. \frac{\mathrm{d}\ln D}{\mathrm{d} \ln a} \right|_{z} = -\frac{(1 + z)}{D(z)} \left. \frac{\mathrm{d} D}{\mathrm{d} a} \right|_{z} \,\, . \end{equation*} For more details see e.g. Zarrouk et al. (2018) [arXiv].

Parameters

gf

a NcGrowthFunc

 

cosmo

a NcHICosmo

 

z

redshift $z$

 

Returns

the derivative of the normalized growth function $\left. \frac{\mathrm{d} D}{\mathrm{d} a} \right|_z$.


nc_growth_func_eval_both ()

void
nc_growth_func_eval_both (NcGrowthFunc *gf,
                          NcHICosmo *cosmo,
                          gdouble z,
                          gdouble *d,
                          gdouble *f);

This function evaluates the normalized growth function $D$ and its derivative $\mathrm{d}D/\mathrm{d}a$ at redshift $z$.

Parameters

gf

a NcGrowthFunc

 

cosmo

a NcHICosmo

 

z

redshift $z$

 

d

Growth function $D(z)$.

[out]

f

Growth function derivative $\left. \mathrm{d}D/\mathrm{d}a \right|_{z}$.

[out]

nc_growth_func_get_dust_norma_Da0 ()

gdouble
nc_growth_func_get_dust_norma_Da0 (NcGrowthFunc *gf);

This function returns today's growth function true value, $D(a_0)$, without imposing the normalization.

Parameters

gf

a NcGrowthFunc

 

Returns

the growth function true value today $D(a_0)$.

Property Details

The “abstol” property

  “abstol”                   double

Absolute tolerance used when integrating the ODE \eqref{eq:mov}. Default value: $0$.

Owner: NcGrowthFunc

Flags: Read / Write / Construct

Allowed values: >= 0

Default value: 0


The “reltol” property

  “reltol”                   double

Relative tolerance used when integrating the ODE \eqref{eq:mov}. Default value: $10^{-13}$.

Owner: NcGrowthFunc

Flags: Read / Write / Construct

Allowed values: [2.22045e-16,1]

Default value: 1e-13


The “x-i” property

  “x-i”                      double

Initial redshift variable $x_i = 1 + z_i = a_0 / a_i$ where to begin the integration of Eq. \eqref{eq:mov}, it must be large enough such that radiation plus matter is a good description of the background energy content. Default value: $10^{12}$.

Owner: NcGrowthFunc

Flags: Read / Write / Construct

Allowed values: >= 0

Default value: 1e+12