CLASS MANUAL
spectra.h File Reference
#include "transfer.h"
+ Include dependency graph for spectra.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  spectra
 

Detailed Description

Documented includes for spectra module


Data Structure Documentation

struct spectra

Structure containing everything about anisotropy and Fourier power spectra that other modules need to know.

Once initialized by spectra_init(), contains a table of all $ C_l$'s and P(k) as a function of multipole/wavenumber, mode (scalar/tensor...), type (for $ C_l$'s: TT, TE...), and pairs of initial conditions (adiabatic, isocurvatures...).

Data Fields
double z_max_pk

maximum value of z at which matter spectrum P(k,z) will be evaluated; keep fixed to zero if P(k) only needed today

int non_diag

sets the number of cross-correlation spectra that you want to calculate: 0 means only auto-correlation, 1 means only adjacent bins, and number of bins minus one means all correlations

int md_size

number of modes (scalar, tensor, ...) included in computation

int index_md_scalars

index for scalar modes

int * ic_size

for a given mode, ic_size[index_md] = number of initial conditions included in computation

int * ic_ic_size

for a given mode, ic_ic_size[index_md] = number of pairs of (index_ic1, index_ic2) with index_ic2 >= index_ic1; this number is just N(N+1)/2 where N = ic_size[index_md]

short ** is_non_zero

for a given mode, is_non_zero[index_md][index_ic1_ic2] is set to true if the pair of initial conditions (index_ic1, index_ic2) are statistically correlated, or to false if they are uncorrelated

int has_tt

do we want $ C_l^{TT}$? (T = temperature)

int has_ee

do we want $ C_l^{EE}$? (E = E-polarization)

int has_te

do we want $ C_l^{TE}$?

int has_bb

do we want $ C_l^{BB}$? (B = B-polarization)

int has_pp

do we want $ C_l^{\phi\phi}$? ( $ \phi $ = CMB lensing potential)

int has_tp

do we want $ C_l^{T\phi}$?

int has_ep

do we want $ C_l^{E\phi}$?

int has_dd

do we want $ C_l^{dd}$? (d = density)

int has_td

do we want $ C_l^{Td}$?

int has_pd

do we want $ C_l^{\phi d}$?

int has_ll

do we want $ C_l^{ll}$? (l = galaxy lensing potential)

int has_tl

do we want $ C_l^{Tl}$?

int has_dl

do we want $ C_l^{dl}$?

int index_ct_tt

index for type $ C_l^{TT} $

int index_ct_ee

index for type $ C_l^{EE} $

int index_ct_te

index for type $ C_l^{TE} $

int index_ct_bb

index for type $ C_l^{BB} $

int index_ct_pp

index for type $ C_l^{\phi\phi} $

int index_ct_tp

index for type $ C_l^{T\phi} $

int index_ct_ep

index for type $ C_l^{E\phi} $

int index_ct_dd

first index for type $ C_l^{dd} $((d_size*d_size-(d_size-non_diag)*(d_size-non_diag-1)/2) values)

int index_ct_td

first index for type $ C_l^{Td} $(d_size values)

int index_ct_pd

first index for type $ C_l^{pd} $(d_size values)

int index_ct_ll

first index for type $ C_l^{ll} $((d_size*d_size-(d_size-non_diag)*(d_size-non_diag-1)/2) values)

int index_ct_tl

first index for type $ C_l^{Tl} $(d_size values)

int index_ct_dl

first index for type $ C_l^{dl} $(d_size values)

int d_size

number of bins for which density Cl's are computed

int ct_size

number of $ C_l $ types requested

int * l_size

number of multipole values for each requested mode, l_size[index_md]

int l_size_max

greatest of all l_size[index_md]

double * l

list of multipole values l[index_l]

int ** l_max_ct

last multipole (given as an input) at which we want to output $ C_l$'s for a given mode and type; l[index_md][l_size[index_md]-1] can be larger than l_max[index_md], in order to ensure a better interpolation with no boundary effects

int * l_max

last multipole (given as an input) at which we want to output $ C_l$'s for a given mode (maximized over types); l[index_md][l_size[index_md]-1] can be larger than l_max[index_md], in order to ensure a better interpolation with no boundary effects

int l_max_tot

last multipole (given as an input) at which we want to output $ C_l$'s (maximized over modes and types); l[index_md][l_size[index_md]-1] can be larger than l_max[index_md], in order to ensure a better interpolation with no boundary effects

double ** cl

table of anisotropy spectra for each mode, multipole, pair of initial conditions and types, cl[index_md][(index_l * psp->ic_ic_size[index_md] + index_ic1_ic2) * psp->ct_size + index_ct]

double ** ddcl

second derivatives of previous table with respect to l, in view of spline interpolation

double alpha_II_2_20

parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers)

double alpha_RI_2_20

parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers)

double alpha_RR_2_20

parameter describing adiabatic versus isocurvature contribution in mutipole range [2,20] (see Planck parameter papers)

double alpha_II_21_200

parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers)

double alpha_RI_21_200

parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers)

double alpha_RR_21_200

parameter describing adiabatic versus isocurvature contribution in mutipole range [21,200] (see Planck parameter papers)

double alpha_II_201_2500

parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers)

double alpha_RI_201_2500

parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers)

double alpha_RR_201_2500

parameter describing adiabatic versus isocurvature contribution in mutipole range [201,2500] (see Planck parameter papers)

double alpha_II_2_2500

parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers)

double alpha_RI_2_2500

parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers)

double alpha_RR_2_2500

parameter describing adiabatic versus isocurvature contribution in mutipole range [2,2500] (see Planck parameter papers)

double alpha_kp

parameter describing adiabatic versus isocurvature contribution at pivot scale (see Planck parameter papers)

double alpha_k1

parameter describing adiabatic versus isocurvature contribution at scale k1 (see Planck parameter papers)

double alpha_k2

parameter describing adiabatic versus isocurvature contribution at scale k2 (see Planck parameter papers)

int ln_k_size

number ln(k) values

double * ln_k

list of ln(k) values ln_k[index_k]

int ln_tau_size

number ln(tau) values (only one if z_max_pk = 0)

double * ln_tau

list of ln(tau) values ln_tau[index_tau]

double * ln_pk

Matter power spectrum. depends on indices index_md, index_ic1, index_ic2, index_k, index_tau as: ln_pk[(index_tau * psp->k_size + index_k)* psp->ic_ic_size[index_md] + index_ic1_ic2] where index_ic1_ic2 labels ordered pairs (index_ic1, index_ic2) (since the primordial spectrum is symmetric in (index_ic1, index_ic2)).

  • for diagonal elements (index_ic1 = index_ic2) this arrays contains ln[P(k)] where P(k) is positive by construction.
  • for non-diagonal elements this arrays contains the k-dependent cosine of the correlation angle, namely P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] This choice is convenient since the sign of the non-diagonal cross-correlation is arbitrary. For fully correlated or anti-correlated initial conditions, this non-diagonal element is independent on k, and equal to +1 or -1.
double * ddln_pk

second derivative of above array with respect to log(tau), for spline interpolation. So:

  • for index_ic1 = index_ic, we spline ln[P(k)] vs. ln(k), which is good since this function is usually smooth.
  • for non-diagonal coefficients, we spline P(k)_(index_ic1, index_ic2)/sqrt[P(k)_index_ic1 P(k)_index_ic2] vs. ln(k), which is fine since this quantity is often assumed to be constant (e.g for fully correlated/anticorrelated initial conditions) or nearly constant, and with arbitrary sign.
double sigma8

sigma8 parameter

double * ln_pk_nl

Non-linear matter power spectrum. depends on indices index_k, index_tau as: ln_pk_nl[index_tau * psp->k_size + index_k]

double * ddln_pk_nl

second derivative of above array with respect to log(tau), for spline interpolation.

int index_tr_delta_g

index of gamma density transfer function

int index_tr_delta_b

index of baryon density transfer function

int index_tr_delta_cdm

index of cold dark matter density transfer function

int index_tr_delta_dcdm

index of decaying cold dark matter density transfer function

int index_tr_delta_scf

index of scalar field phi transfer function

int index_tr_delta_fld

index of dark energy fluid density transfer function

int index_tr_delta_ur

index of ultra-relativistic neutrinos/relics density transfer function

int index_tr_delta_dr

index of decay radiation density transfer function

int index_tr_delta_ncdm1

index of first species of non-cold dark matter (massive neutrinos, ...) density transfer function

int index_tr_delta_tot

index of total matter density transfer function

int index_tr_theta_g

index of gamma velocity transfer function

int index_tr_theta_b

index of baryon velocity transfer function

int index_tr_theta_cdm

index of cold dark matter velocity transfer function

int index_tr_theta_dcdm

index of decaying cold dark matter velocity transfer function

int index_tr_theta_scf

index of derivative of scalar field phi transfer function

int index_tr_theta_fld

index of dark energy fluid velocity transfer function

int index_tr_theta_ur

index of ultra-relativistic neutrinos/relics velocity transfer function

int index_tr_theta_dr

index of decay radiation velocity transfer function

int index_tr_theta_ncdm1

index of first species of non-cold dark matter (massive neutrinos, ...) velocity transfer function

int index_tr_theta_tot

index of total matter velocity transfer function

int index_tr_phi

index of Bardeen potential phi

int index_tr_psi

index of Bardeen potential psi

int tr_size

total number of species in transfer functions

double * matter_transfer

Matter transfer functions. Depends on indices index_md,index_tau,index_ic,index_k, index_tr as: matter_transfer[((index_tau*psp->ln_k_size + index_k) * psp->ic_size[index_md] + index_ic) * psp->tr_size + index_tr]

double * ddmatter_transfer

second derivative of above array with respect to log(tau), for spline interpolation.

short spectra_verbose

flag regulating the amount of information sent to standard output (none if set to zero)

ErrorMsg error_message

zone for writing error messages