Top |
NcGrowthFunc * | nc_growth_func_new () |
NcGrowthFunc * | nc_growth_func_ref () |
void | nc_growth_func_free () |
void | nc_growth_func_clear () |
void | nc_growth_func_set_reltol () |
void | nc_growth_func_set_abstol () |
void | nc_growth_func_set_x_i () |
gdouble | nc_growth_func_get_reltol () |
gdouble | nc_growth_func_get_abstol () |
gdouble | nc_growth_func_get_x_i () |
void | nc_growth_func_prepare () |
void | nc_growth_func_prepare_if_needed () |
gdouble | nc_growth_func_eval () |
gdouble | nc_growth_func_eval_deriv () |
void | nc_growth_func_eval_both () |
gdouble | nc_growth_func_get_dust_norma_Da0 () |
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$.
NcGrowthFunc *
nc_growth_func_new (void
);
This function allocates memory for a new NcGrowthFunc object.
NcGrowthFunc *
nc_growth_func_ref (NcGrowthFunc *gf
);
Increases the reference count of gf
atomically.
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.
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.
void nc_growth_func_set_reltol (NcGrowthFunc *gf
,const gdouble reltol
);
Sets the relative tolerance (“reltol”) used when integrating Eq. \eqref{eq:mov}.
void nc_growth_func_set_abstol (NcGrowthFunc *gf
,const gdouble abstol
);
Sets the absolute tolerance (“abstol”) used when integrating Eq. \eqref{eq:mov}.
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.
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()
.
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.
gdouble nc_growth_func_eval (NcGrowthFunc *gf
,NcHICosmo *cosmo
,gdouble z
);
This function evaluates the normalized growth function at redshift $z$, $D(z)$.
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].
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$.
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.
“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
“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
“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