NcRecombSeager

NcRecombSeager — Cosmic recombination implementing Seager (1999).

Functions

Properties

NcRecombSeagerOpt options Read / Write / Construct

Types and Values

Object Hierarchy

    GFlags
    ╰── NcRecombSeagerOpt
    GObject
    ╰── NcRecomb
        ╰── NcRecombSeager

Includes

#include <numcosmo/nc_recomb_seager.h>

Description

Cosmic recobination as initally describe in Seager (1999) and Seager (2000). The code includes now all modifications as in recfast 1.5.2, which includes the modifications discussed in Wong (2008). Nonetheless, we do not include the modification for the matter temperature evolution as describe in Scott (2009). Since we use a more robust integration method such modification for the temperature evolution is simply unnecessary.

See NcRecomb for symbol definitions.

$ \newcommand{\He}{\text{He}} \newcommand{\HeI}{\text{HeI}} \newcommand{\HeII}{\text{HeII}} \newcommand{\HeIII}{\text{HeIII}} \newcommand{\Hy}{\text{H}} \newcommand{\HyI}{\text{HI}} \newcommand{\HyII}{\text{HII}} \newcommand{\e}{{\text{e}^-}} $

This code solves the system of equations for the singly ionized hydrogen $X_\HyII$ and helium $X_\HeII$ as well as for the baryon temperature $T_m$.

The equations are: \begin{align} \frac{\mathrm{d}X_\HyII}{\mathrm{d}x} &= \frac{X_\HyII X_\e n_\Hy - X_\HyI B_{\HyI, 1s\,{}^2\!S_{1/2}}(T_m)}{H x}\left[\alpha_\Hy(T_m)\frac{n_\Hy K_{\HyI} X_\HyI \Lambda_\Hy + 1}{n_\Hy K_{\HyI} X_\HyI \left[\Lambda_\Hy + B_{\HyI, 2s\,{}^2\!S_{1/2}}(T_m) \alpha_\Hy(T_m)\right] + 1}\right], \\ \frac{\mathrm{d}T_m}{\mathrm{d}x} &= \frac{c}{Hx}\frac{8\sigma_\mathrm{T}a_\mathrm{R} T^4_r}{3m_\mathrm{e}c^2} \frac{X_\e(T_m - T_r)}{1 + X_\He + X_\e} + \frac{2T_m}{x}, \\ \frac{\mathrm{d}X_\HeII}{\mathrm{d}x} &= \frac{X_\HeII X_\e n_\Hy - X_\HeI B_{\HeI, 1s\,{}^1\!S_{0}}(T_m)}{H x}\Bigg\{\left[\alpha_\He(T_m)\frac{n_\Hy K_{\HeI} X_\HeI \Lambda_\He + B^{\HeI, 2s\,{}^1\!S_{0}}_{\HeI, 2p\,{}^1\!P_{1}}(T_m)}{n_H K_{\HeI} X_\HeI \left[\Lambda_\He + B_{\HeI, 2s\,{}^1\!S_{0}}(T_m) \alpha_\He(T_m)\right] + B^{\HeI, 2s\,{}^1\!S_{0}}_{\HeI, 2p\,{}^1\!P_{1}}(T_m)}\right] \nonumber\\ &+ \alpha_\He^\mathrm{t}(T_m)\frac{1}{n_H K_{\HeI}^\mathrm{t} X_\HeI B_{\HeI, 2p\,{}^3\!P_\mathrm{mean}}(T_m) \alpha_\He^\mathrm{t}(T_m) + 1} \Bigg\}, \end{align}

The Boltzmann factor for hydrogen levels are given by $$B_{\HyI, l}(T_m) = k_\mathrm{e}^3(T_m)\,\exp\left[-E_{\HyI, l} / (k_\mathrm{B}T_m)\right],$$ for $l = 1s\,{}^2\!S_{1/2}, 2s\,{}^2\!S_{1/2}$, see ncm_c_boltzmann_factor_HI_1s_2S0_5(), ncm_c_boltzmann_factor_HI_2s_2S0_5() and ncm_c_thermal_wn_e() for the definition of the electron thermal wavenumber $k_\mathrm{e}$.

For the helium-I levels the Boltzmann factors are $$B_{\HeI, l}(T_m) = 4 k_\mathrm{e}^3(T_m)\,\exp\left[-E_{\HeI, l} / (k_\mathrm{B}T_m)\right],$$ where the levels $l$ used are $1s\,{}^1\!S_{0}$, $2s\,{}^1\!S_{0}$ and $2p\,{}^1\!P_{1}$, see ncm_c_HeI_ion_wn_1s_1S0(), ncm_c_HeI_ion_wn_2s_1S0(), ncm_c_HeI_ion_wn_2p_1P1(). The symbol $B^{\HeI, 2s\,{}^1\!S_{0}}_{\HeI, 2p\,{}^1\!P_{1}}(T_m)$ represents the ratio of two Boltzmann factors, i.e., $$B^{\HeI, 2s\,{}^1\!S_{0}}_{\HeI, 2p\,{}^1\!P_{1}}(T_m) = \exp\left[-(E_{\HeI, 2s\,{}^1\!S_{0}} - E_{\HeI, 2p\,{}^1\!P_{1}})/ (k_\mathrm{B}T_m)\right].$$

The two photon decaying rates for $\Hy$ is $\Lambda_\Hy$ and is given by ncm_c_decay_H_rate_2s_1s(), and for helium-I is $\Lambda_\He$ given by ncm_c_decay_He_rate_2s_1s().

The Case B coefficient for $\Hy$, $\alpha_\Hy$ is calculated by nc_recomb_seager_pequignot_HI_case_B(), while the Case B coefficient for $\He$, $\alpha_\He$ and $\alpha_\He^\mathrm{t}$ are given respectively by nc_recomb_seager_hummer_HeI_case_B() and nc_recomb_seager_hummer_HeI_case_B_trip().

The flags in NcRecombSeagerOpt define which are the $K$ factors to be used and whether to include triplets factors in the $\He$ rate.

The code uses nc_recomb_HeII_ion_saha_x_by_HeIII_He() to obtain the value of $\lambda$ where the numerical integration will start. The integration is performed considering all components without any switching or approximation.

Functions

NcRecombSeagerKHI2p2Pmean ()

gdouble
(*NcRecombSeagerKHI2p2Pmean) (NcRecombSeager *recomb_seager,
                              NcHICosmo *cosmo,
                              const gdouble x,
                              const gdouble H);

NcRecombSeagerKHeI2p ()

gdouble
(*NcRecombSeagerKHeI2p) (NcRecombSeager *recomb_seager,
                         NcHICosmo *cosmo,
                         const gdouble x,
                         const gdouble XHI,
                         const gdouble T,
                         const gdouble XHeI,
                         const gdouble H,
                         const gdouble n_H);

NcRecombSeagerKHeI2pGrad ()

void
(*NcRecombSeagerKHeI2pGrad) (NcRecombSeager *recomb_seager,
                             NcHICosmo *cosmo,
                             const gdouble x,
                             const gdouble XHI,
                             const gdouble T,
                             const gdouble XHeI,
                             const gdouble H,
                             const gdouble n_H,
                             gdouble grad[3]);

nc_recomb_seager_new ()

NcRecombSeager *
nc_recomb_seager_new (void);

Creates a new NcRecombSeager using default properties.

Returns

a new NcRecombSeager.

[transfer full]


nc_recomb_seager_new_full ()

NcRecombSeager *
nc_recomb_seager_new_full (gdouble init_frac,
                           gdouble zi,
                           gdouble prec);

Creates a new NcRecombSeager using init_frac , zi and prec .

Parameters

init_frac

inital fraction of $X_{\HeIII}/X_{\He}$ where to start numerical integration

 

zi

inital redshift

 

prec

integration precision

 

Returns

a new NcRecombSeager.

[transfer full]


nc_recomb_seager_ref ()

NcRecombSeager *
nc_recomb_seager_ref (NcRecombSeager *recomb_seager);

Increases the reference count of recomb_seager .

Parameters

recomb_seager

a NcRecombSeager

 

Returns

recomb_seager .

[transfer full]


nc_recomb_seager_free ()

void
nc_recomb_seager_free (NcRecombSeager *recomb_seager);

Decreases the reference count of recomb_seager .

Parameters

recomb_seager

a NcRecombSeager.

 

nc_recomb_seager_clear ()

void
nc_recomb_seager_clear (NcRecombSeager **recomb_seager);

Decreases the reference count of *recomb_seager if *recomb_seager is not NULL, then sets *recomb_seager to NULL.

Parameters

recomb_seager

a NcRecombSeager.

 

nc_recomb_seager_set_options ()

void
nc_recomb_seager_set_options (NcRecombSeager *recomb_seager,
                              NcRecombSeagerOpt opts);

Sets integration options NcRecombSeagerOpt. To set the integration options using the recfast compatible flags use nc_recomb_seager_set_switch().

Parameters

recomb_seager

a NcRecombSeager

 

opts

a NcRecombSeagerOpt

 

nc_recomb_seager_set_switch ()

void
nc_recomb_seager_set_switch (NcRecombSeager *recomb_seager,
                             guint H_switch,
                             guint He_switch);

Sets integration options NcRecombSeagerOpt using the following map:

Parameters

recomb_seager

a NcRecombSeager

 

H_switch

an integer between 0 and 1

 

He_switch

an integer between 0 and 6

 

nc_recomb_seager_get_options ()

NcRecombSeagerOpt
nc_recomb_seager_get_options (NcRecombSeager *recomb_seager);

Gets integration options.

Parameters

recomb_seager

a NcRecombSeager

 

Returns

currently used integration options.


nc_recomb_seager_pequignot_HI_case_B ()

gdouble
nc_recomb_seager_pequignot_HI_case_B (NcRecombSeager *recomb_seager,
                                      NcHICosmo *cosmo,
                                      const gdouble Tm);

The case B $\HyII$ recombination coefficient.

The fitting formula of the case B recombination coefficient for $\HyII$ as in Pequignot (1991).

Parameters

recomb_seager

a NcRecombSeager

 

cosmo

a NcHICosmo

 

Tm

the matter (baryons) temperature $T_m$

 

Returns

the value of the case B recombination coefficient for $\HyII$, $\alpha_H$ .


nc_recomb_seager_pequignot_HI_case_B_dTm ()

gdouble
nc_recomb_seager_pequignot_HI_case_B_dTm
                               (NcRecombSeager *recomb_seager,
                                NcHICosmo *cosmo,
                                const gdouble Tm);

The case B $\HyII$ recombination coefficient derivative with respect to $T_m$.

The derivative of the fitting formula of the case B recombination coefficient for $\HyII$ nc_recomb_seager_pequignot_HI_case_B().

Parameters

recomb_seager

a NcRecombSeager

 

cosmo

a NcHICosmo

 

Tm

the matter (baryons) temperature $T_m$

 

Returns

the value of the case B recombination coefficient for $\HyII$, $d\alpha_H/dT_m$.


nc_recomb_seager_hummer_HeI_case_B ()

gdouble
nc_recomb_seager_hummer_HeI_case_B (NcRecombSeager *recomb_seager,
                                    NcHICosmo *cosmo,
                                    const gdouble Tm);

The case B $\HeII$ recombination coefficient.

The fitting formula of the case B recombination coefficient for $\HeII$ as in Hummer (1998).

Parameters

recomb_seager

a NcRecombSeager

 

cosmo

a NcHICosmo

 

Tm

the matter (baryons) temperature $T_m$

 

Returns

the value of the case B recombination coefficient for $\HeII$, $\alpha_H$ .


nc_recomb_seager_hummer_HeI_case_B_dTm ()

gdouble
nc_recomb_seager_hummer_HeI_case_B_dTm
                               (NcRecombSeager *recomb_seager,
                                NcHICosmo *cosmo,
                                const gdouble Tm);

The case B $\HeII$ recombination coefficient derivative with respect to Tm.

The derivative of the fitting formula of the case B recombination coefficient for $\HeII$ nc_recomb_seager_hummer_HeI_case_B().

Parameters

recomb_seager

a NcRecombSeager

 

cosmo

a NcHICosmo

 

Tm

the matter (baryons) temperature $T_m$

 

Returns

the value of the case B recombination coefficient for $\HeII$, $d\alpha_H/dT_m$.


nc_recomb_seager_hummer_HeI_case_B_trip ()

gdouble
nc_recomb_seager_hummer_HeI_case_B_trip
                               (NcRecombSeager *recomb_seager,
                                NcHICosmo *cosmo,
                                const gdouble Tm);

The case B via triplets $\HeII$ recombination coefficient.

The fitting formula of the case B via triplets recombination coefficient for $\HeII$ as in Hummer (1998).

Parameters

recomb_seager

a NcRecombSeager

 

cosmo

a NcHICosmo

 

Tm

the matter (baryons) temperature $T_m$

 

Returns

the value of the case B via triplets recombination coefficient for $\HeII$, $\alpha_H$ .


nc_recomb_seager_hummer_HeI_case_B_trip_dTm ()

gdouble
nc_recomb_seager_hummer_HeI_case_B_trip_dTm
                               (NcRecombSeager *recomb_seager,
                                NcHICosmo *cosmo,
                                const gdouble Tm);

The case B via triplets $\HeII$ recombination coefficient derivative with respect to Tm.

The derivative of the fitting formula of the case B via triplets recombination coefficient for $\HeII$ nc_recomb_seager_hummer_HeI_case_B_trip().

Parameters

recomb_seager

a NcRecombSeager

 

cosmo

a NcHICosmo

 

Tm

the matter (baryons) temperature $T_m$

 

Returns

the value of the case B via triplets recombination coefficient for $\HeII$, $d\alpha_H/dT_m$.

Types and Values

enum NcRecombSeagerOpt

FIXME

Members

NC_RECOM_SEAGER_OPT_HII_FUDGE

Includes fudge factor in the case_B recombination fitting formulas.

 

NC_RECOM_SEAGER_OPT_HII_FUDGE_GAUSS_COR

Includes gaussian correction in the case_B recombination fitting formulas.

 

NC_RECOM_SEAGER_OPT_HEII_SOBOLEV_1P1

Includes Sobolev scape probability for the $2p\,{}^1\!P_{1} \to 1s\,{}^1\!S_{0}$.

 

NC_RECOM_SEAGER_OPT_HEII_SOBOLEV_1P1_CO

Also includes the continum opacity effect due to H.

 

NC_RECOM_SEAGER_OPT_HEII_SOBOLEV_3P012

Includes Sobolev scape probability for the $2p\,{}^3\!P_{0,1,2} \to 1s\,{}^1\!S_{0}$.

 

NC_RECOM_SEAGER_OPT_HEII_SOBOLEV_3P012_CO

Also includes the continum opacity effect due to H.

 

NC_RECOM_SEAGER_OPT_ALL

All options.

 

NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_T1

#define NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_T1 (pow (10.0, 5.114))

NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_T2

#define NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_T2 (pow (10.0, 0.477121))

NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_P

#define NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_P (0.711)

NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_Q

#define NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_Q (pow (10.0, -16.744))

NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_P_TRIP

#define NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_P_TRIP (0.761)

NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_Q_TRIP

#define NC_RECOMB_SEAGER_HUMMER_HEI_CASE_B_Q_TRIP (pow (10.0, -16.306))

Property Details

The “options” property

  “options”                  NcRecombSeagerOpt

Integration options.

Owner: NcRecombSeager

Flags: Read / Write / Construct

Default value: NC_RECOM_SEAGER_OPT_HII_FUDGE | NC_RECOM_SEAGER_OPT_HII_FUDGE_GAUSS_COR | NC_RECOM_SEAGER_OPT_HEII_SOBOLEV_1P1 | NC_RECOM_SEAGER_OPT_HEII_SOBOLEV_1P1_CO | NC_RECOM_SEAGER_OPT_HEII_SOBOLEV_3P012 | NC_RECOM_SEAGER_OPT_HEII_SOBOLEV_3P012_CO