CLASS MANUAL
|
#include "thermodynamics.h"
Go to the source code of this file.
Data Structures | |
struct | perturbations |
struct | perturbations_vector |
struct | perturbations_workspace |
struct | perturbations_parameters_and_workspace |
Macros | |
#define | _SELECTION_NUM_MAX_ 100 |
#define | _MAX_NUMBER_OF_K_FILES_ 30 |
Enumerations | |
enum | tca_flags |
enum | tca_method |
enum | possible_gauges { newtonian , synchronous } |
Documented includes for perturbation module
struct perturbations |
Structure containing everything about perturbations that other modules need to know, in particular tabled values of the source functions for all requested modes (scalar/vector/tensor), initial conditions, types (temperature, E-polarization, B-polarization, lensing potential, etc), multipole l and wavenumber k.
Data Fields | ||
---|---|---|
short | has_perturbations |
do we need to compute perturbations at all ? |
short | has_cls |
do we need any harmonic space spectrum (and hence Bessel functions, transfer functions, ...)? |
short | has_scalars |
do we need scalars? |
short | has_vectors |
do we need vectors? |
short | has_tensors |
do we need tensors? |
short | has_ad |
do we need adiabatic mode? |
short | has_bi |
do we need isocurvature bi mode? |
short | has_cdi |
do we need isocurvature cdi mode? |
short | has_nid |
do we need isocurvature nid mode? |
short | has_niv |
do we need isocurvature niv mode? |
short | has_perturbed_recombination |
Do we want to consider perturbed temperature and ionization fraction? |
enum tensor_methods | tensor_method |
Neutrino contribution to tensors way to treat neutrinos in tensor perturbations(neglect, approximate as massless, take exact equations) |
short | evolve_tensor_ur |
will we evolve ur tensor perturbations (either because we have ur species, or we have ncdm species with massless approximation) ? |
short | evolve_tensor_ncdm |
will we evolve ncdm tensor perturbations (if we have ncdm species and we use the exact method) ? |
short | has_cl_cmb_temperature |
do we need 's for CMB temperature? |
short | has_cl_cmb_polarization |
do we need 's for CMB polarization? |
short | has_cl_cmb_lensing_potential |
do we need 's for CMB lensing potential? |
short | has_cl_lensing_potential |
do we need 's for galaxy lensing potential? |
short | has_cl_number_count |
do we need 's for density number count? |
short | has_pk_matter |
do we need matter Fourier spectrum? |
short | has_density_transfers |
do we need to output individual matter density transfer functions? |
short | has_velocity_transfers |
do we need to output individual matter velocity transfer functions? |
short | has_metricpotential_transfers |
do we need to output individual transfer functions for scalar metric perturbations? |
short | has_Nbody_gauge_transfers |
should we convert density and velocity transfer functions to Nbody gauge? |
short | has_nl_corrections_based_on_delta_m |
do we want to compute non-linear corrections with an algorithm relying on delta_m (like halofit)? |
short | has_nc_density |
in dCl, do we want density terms ? |
short | has_nc_rsd |
in dCl, do we want redshift space distortion terms ? |
short | has_nc_lens |
in dCl, do we want lensing terms ? |
short | has_nc_gr |
in dCl, do we want gravity terms ? |
int | l_scalar_max |
maximum l value for CMB scalars 's |
int | l_vector_max |
maximum l value for CMB vectors 's |
int | l_tensor_max |
maximum l value for CMB tensors 's |
int | l_lss_max |
maximum l value for LSS 's (density and lensing potential in bins) |
double | k_max_for_pk |
maximum value of k in 1/Mpc required for the output of P(k,z) and T(k,z) |
int | selection_num |
number of selection functions (i.e. bins) for matter density 's |
enum selection_type | selection |
type of selection functions |
double | selection_mean[_SELECTION_NUM_MAX_] |
centers of selection functions |
double | selection_width[_SELECTION_NUM_MAX_] |
widths of selection functions |
int | switch_sw |
in temperature calculation, do we want to include the intrinsic temperature + Sachs Wolfe term? |
int | switch_eisw |
in temperature calculation, do we want to include the early integrated Sachs Wolfe term? |
int | switch_lisw |
in temperature calculation, do we want to include the late integrated Sachs Wolfe term? |
int | switch_dop |
in temperature calculation, do we want to include the Doppler term? |
int | switch_pol |
in temperature calculation, do we want to include the polarization-related term? |
double | eisw_lisw_split_z |
at which redshift do we define the cut between eisw and lisw ? |
int | store_perturbations |
Do we want to store perturbations? |
int | k_output_values_num |
Number of perturbation outputs (default=0) |
double | k_output_values[_MAX_NUMBER_OF_K_FILES_] |
List of k values where perturbation output is requested. |
double | three_ceff2_ur |
3 x effective squared sound speed for the ultrarelativistic perturbations |
double | three_cvis2_ur |
3 x effective viscosity parameter for the ultrarelativistic perturbations |
double | z_max_pk |
when we compute only the matter spectrum / transfer functions, but not the CMB, we are sometimes interested to sample source functions at very high redshift, way before recombination. This z_max_pk will then fix the initial sampling time of the sources. |
double * | alpha_idm_dr |
Angular contribution to collisional term at l>=2 for idm_fr-idr |
double * | beta_idr |
Angular contribution to collisional term at l>=2 for idr-idr |
int | idr_nature |
Nature of the interacting dark radiation (free streaming or fluid) |
short | has_cmb |
do we need CMB-related sources (temperature, polarization) ? |
short | has_lss |
do we need LSS-related sources (lensing potential, ...) ? |
short | has_idm_dr |
do we have idm-dr interactions? |
short | has_idm_soundspeed |
do we need to consider the dark matter sound speed in interaction models? |
enum possible_gauges | gauge |
gauge in which to perform this calculation |
int | index_md_scalars |
index value for scalars |
int | index_md_tensors |
index value for tensors |
int | index_md_vectors |
index value for vectors |
int | md_size |
number of modes included in computation |
int | index_ic_ad |
index value for adiabatic |
int | index_ic_cdi |
index value for CDM isocurvature |
int | index_ic_bi |
index value for baryon isocurvature |
int | index_ic_nid |
index value for neutrino density isocurvature |
int | index_ic_niv |
index value for neutrino velocity isocurvature |
int | index_ic_ten |
index value for unique possibility for tensors |
int * | ic_size |
for a given mode, ic_size[index_md] = number of initial conditions included in computation |
short | has_source_t |
do we need source for CMB temperature? |
short | has_source_p |
do we need source for CMB polarization? |
short | has_source_delta_m |
do we need source for delta of total matter? |
short | has_source_delta_cb |
do we ALSO need source for delta of ONLY cdm and baryon? |
short | has_source_delta_tot |
do we need source for delta total? |
short | has_source_delta_g |
do we need source for delta of gammas? |
short | has_source_delta_b |
do we need source for delta of baryons? |
short | has_source_delta_cdm |
do we need source for delta of cold dark matter? |
short | has_source_delta_idm |
do we need source for delta of interacting dark matter |
short | has_source_delta_idr |
do we need source for delta of interacting dark radiation? |
short | has_source_delta_dcdm |
do we need source for delta of DCDM? |
short | has_source_delta_fld |
do we need source for delta of dark energy? |
short | has_source_delta_scf |
do we need source for delta from scalar field? |
short | has_source_delta_dr |
do we need source for delta of decay radiation? |
short | has_source_delta_ur |
do we need source for delta of ultra-relativistic neutrinos/relics? |
short | has_source_delta_ncdm |
do we need source for delta of all non-cold dark matter species (e.g. massive neutrinos)? |
short | has_source_theta_m |
do we need source for theta of total matter? |
short | has_source_theta_cb |
do we ALSO need source for theta of ONLY cdm and baryon? |
short | has_source_theta_tot |
do we need source for theta total? |
short | has_source_theta_g |
do we need source for theta of gammas? |
short | has_source_theta_b |
do we need source for theta of baryons? |
short | has_source_theta_cdm |
do we need source for theta of cold dark matter? |
short | has_source_theta_idm |
do we need source for theta of interacting dark matter |
short | has_source_theta_idr |
do we need source for theta of interacting dark radiation? |
short | has_source_theta_dcdm |
do we need source for theta of DCDM? |
short | has_source_theta_fld |
do we need source for theta of dark energy? |
short | has_source_theta_scf |
do we need source for theta of scalar field? |
short | has_source_theta_dr |
do we need source for theta of ultra-relativistic neutrinos/relics? |
short | has_source_theta_ur |
do we need source for theta of ultra-relativistic neutrinos/relics? |
short | has_source_theta_ncdm |
do we need source for theta of all non-cold dark matter species (e.g. massive neutrinos)? |
short | has_source_phi |
do we need source for metric fluctuation phi? |
short | has_source_phi_prime |
do we need source for metric fluctuation phi'? |
short | has_source_phi_plus_psi |
do we need source for metric fluctuation (phi+psi)? |
short | has_source_psi |
do we need source for metric fluctuation psi? |
short | has_source_h |
do we need source for metric fluctuation h? |
short | has_source_h_prime |
do we need source for metric fluctuation h'? |
short | has_source_eta |
do we need source for metric fluctuation eta? |
short | has_source_eta_prime |
do we need source for metric fluctuation eta'? |
short | has_source_H_T_Nb_prime |
do we need source for metric fluctuation H_T_Nb'? |
short | has_source_k2gamma_Nb |
do we need source for metric fluctuation gamma in Nbody gauge? |
int | index_tp_t0 |
index value for temperature (j=0 term) |
int | index_tp_t1 |
index value for temperature (j=1 term) |
int | index_tp_t2 |
index value for temperature (j=2 term) |
int | index_tp_p |
index value for polarization |
int | index_tp_delta_m |
index value for matter density fluctuation |
int | index_tp_delta_cb |
index value for delta cb |
int | index_tp_delta_tot |
index value for total density fluctuation |
int | index_tp_delta_g |
index value for delta of gammas |
int | index_tp_delta_b |
index value for delta of baryons |
int | index_tp_delta_cdm |
index value for delta of cold dark matter |
int | index_tp_delta_idm |
index value for delta of interacting dark matter |
int | index_tp_delta_dcdm |
index value for delta of DCDM |
int | index_tp_delta_fld |
index value for delta of dark energy |
int | index_tp_delta_scf |
index value for delta of scalar field |
int | index_tp_delta_dr |
index value for delta of decay radiation |
int | index_tp_delta_ur |
index value for delta of ultra-relativistic neutrinos/relics |
int | index_tp_delta_idr |
index value for delta of interacting dark radiation |
int | index_tp_delta_ncdm1 |
index value for delta of first non-cold dark matter species (e.g. massive neutrinos) |
int | index_tp_perturbed_recombination_delta_temp |
Gas temperature perturbation |
int | index_tp_perturbed_recombination_delta_chi |
Inionization fraction perturbation |
int | index_tp_theta_m |
index value for matter velocity fluctuation |
int | index_tp_theta_cb |
index value for theta cb |
int | index_tp_theta_tot |
index value for total velocity fluctuation |
int | index_tp_theta_g |
index value for theta of gammas |
int | index_tp_theta_b |
index value for theta of baryons |
int | index_tp_theta_cdm |
index value for theta of cold dark matter |
int | index_tp_theta_dcdm |
index value for theta of DCDM |
int | index_tp_theta_fld |
index value for theta of dark energy |
int | index_tp_theta_scf |
index value for theta of scalar field |
int | index_tp_theta_ur |
index value for theta of ultra-relativistic neutrinos/relics |
int | index_tp_theta_idr |
index value for theta of interacting dark radiation |
int | index_tp_theta_idm |
index value for theta of interacting dark matter |
int | index_tp_theta_dr |
index value for F1 of decay radiation |
int | index_tp_theta_ncdm1 |
index value for theta of first non-cold dark matter species (e.g. massive neutrinos) |
int | index_tp_phi |
index value for metric fluctuation phi |
int | index_tp_phi_prime |
index value for metric fluctuation phi' |
int | index_tp_phi_plus_psi |
index value for metric fluctuation phi+psi |
int | index_tp_psi |
index value for metric fluctuation psi |
int | index_tp_h |
index value for metric fluctuation h |
int | index_tp_h_prime |
index value for metric fluctuation h' |
int | index_tp_eta |
index value for metric fluctuation eta |
int | index_tp_eta_prime |
index value for metric fluctuation eta' |
int | index_tp_H_T_Nb_prime |
index value for metric fluctuation H_T_Nb' |
int | index_tp_k2gamma_Nb |
index value for metric fluctuation gamma times k^2 in Nbody gauge |
int * | tp_size |
number of types tp_size[index_md] included in computation for each mode |
int * | k_size_cmb |
k_size_cmb[index_md] number of k values used for CMB calculations, requiring a fine sampling in k-space |
int * | k_size_cl |
k_size_cl[index_md] number of k values used for non-CMB calculations, requiring a coarse sampling in k-space. |
int | k_size_pk |
number of k values for the P(k,z) and T(k,z) output, not including possible additional values for non-linear corrections |
int * | k_size |
k_size[index_md] = total number of k values, including those needed for all C_l, P(k), nonlinear corrections |
double ** | k |
k[index_md][index_k] = list of values |
double | k_min |
minimum value (over all modes) |
double | k_max |
maximum value (over all modes) |
double * | tau_sampling |
array of tau values |
int | tau_size |
number of values in this array |
double | selection_min_of_tau_min |
used in presence of selection functions (for matter density, cosmic shear...) |
double | selection_max_of_tau_max |
used in presence of selection functions (for matter density, cosmic shear...) |
double | selection_delta_tau |
used in presence of selection functions (for matter density, cosmic shear...) |
double * | selection_tau_min |
value of conformal time below which W(tau) is considered to vanish for each bin |
double * | selection_tau_max |
value of conformal time above which W(tau) is considered to vanish for each bin |
double * | selection_tau |
value of conformal time at the center of each bin |
double * | selection_function |
selection function W(tau), normalized to , stored in selection_function[bin*ppt->tau_size+index_tau] |
double *** | sources |
Pointer towards the source interpolation table sources[index_md] [index_ic * ppt->tp_size[index_md] + index_tp] [index_tau * ppt->k_size + index_k] |
double * | ln_tau |
log of the arrau tau_sampling, covering only the final time range required for the output of Fourier transfer functions (used for interpolations) |
int | ln_tau_size |
total number of values in this array |
int | index_ln_tau_pk |
first index relevant for output of P(k,z) and T(k,z) |
double *** | late_sources |
Pointer towards the source interpolation table late_sources[index_md] [index_ic * ppt->tp_size[index_md] + index_tp] [index_tau * ppt->k_size + index_k] Note that this is not a replication of part of the sources table, it is just poiting towards the same memory zone, at the place where the late_sources actually start |
double *** | ddlate_sources |
Pointer towards the splined source interpolation table with second derivatives with respect to time ddlate_sources[index_md] [index_ic * ppt->tp_size[index_md] + index_tp] [index_tau * ppt->k_size + index_k] |
int * | index_k_output_values |
List of indices corresponding to k-values close to k_output_values for each mode. index_k_output_values[index_md*k_output_values_num+ik] |
char | scalar_titles[_MAXTITLESTRINGLENGTH_] |
DELIMITER separated string of titles for scalar perturbation output files. |
char | vector_titles[_MAXTITLESTRINGLENGTH_] |
DELIMITER separated string of titles for vector perturbation output files. |
char | tensor_titles[_MAXTITLESTRINGLENGTH_] |
DELIMITER separated string of titles for tensor perturbation output files. |
int | number_of_scalar_titles |
number of titles/columns in scalar perturbation output files |
int | number_of_vector_titles |
number of titles/columns in vector perturbation output files |
int | number_of_tensor_titles |
number of titles/columns in tensor perturbation output files |
double * | scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_] |
Array of double pointers to perturbation output for scalars |
double * | vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_] |
Array of double pointers to perturbation output for vectors |
double * | tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_] |
Array of double pointers to perturbation output for tensors |
int | size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_] |
Array of sizes of scalar double pointers |
int | size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_] |
Array of sizes of vector double pointers |
int | size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_] |
Array of sizes of tensor double pointers |
short | perturbations_verbose |
flag regulating the amount of information sent to standard output (none if set to zero) |
ErrorMsg | error_message |
zone for writing error messages |
struct perturbations_vector |
Structure containing the indices and the values of the perturbation variables which are integrated over time (as well as their time-derivatives). For a given wavenumber, the size of these vectors changes when the approximation scheme changes.
struct perturbations_workspace |
Workspace containing, among other things, the value at a given time of all background/perturbed quantities, as well as their indices. There will be one such structure created for each mode (scalar/.../tensor) and each thread (in case of parallel computing)
Data Fields | ||
---|---|---|
int | index_mt_psi |
psi in longitudinal gauge |
int | index_mt_phi_prime |
(d phi/d conf.time) in longitudinal gauge |
int | index_mt_h_prime |
h' (wrt conf. time) in synchronous gauge |
int | index_mt_h_prime_prime |
h'' (wrt conf. time) in synchronous gauge |
int | index_mt_eta_prime |
eta' (wrt conf. time) in synchronous gauge |
int | index_mt_alpha |
in synchronous gauge |
int | index_mt_alpha_prime |
wrt conf. time) in synchronous gauge |
int | index_mt_gw_prime_prime |
second derivative wrt conformal time of gravitational wave field, often called h |
int | index_mt_V_prime |
derivative of Newtonian gauge vector metric perturbation V |
int | index_mt_hv_prime_prime |
Second derivative of Synchronous gauge vector metric perturbation |
int | mt_size |
size of metric perturbation vector |
double * | pvecback |
background quantities |
double * | pvecthermo |
thermodynamics quantities |
double * | pvecmetric |
metric quantities |
struct perturbations_vector * | pv |
pointer to vector of integrated perturbations and their time-derivatives |
double | delta_rho |
total density perturbation (gives delta Too) |
double | rho_plus_p_theta |
total (rho+p)*theta perturbation (gives delta Toi) |
double | rho_plus_p_shear |
total (rho+p)*shear (gives delta Tij) |
double | delta_p |
total pressure perturbation (gives Tii) |
double | rho_plus_p_tot |
total (rho+p) (used to infer theta_tot from rho_plus_p_theta) |
double | gw_source |
stress-energy source term in Einstein's tensor equations (gives Tij[tensor]) |
double | vector_source_pi |
first stress-energy source term in Einstein's vector equations |
double | vector_source_v |
second stress-energy source term in Einstein's vector equations |
double | tca_shear_g |
photon shear in tight-coupling approximation |
double | tca_slip |
photon-baryon slip in tight-coupling approximation |
double | tca_shear_idm_dr |
interacting dark radiation shear in tight coupling appproximation |
double | rsa_delta_g |
photon density in radiation streaming approximation |
double | rsa_theta_g |
photon velocity in radiation streaming approximation |
double | rsa_delta_ur |
photon density in radiation streaming approximation |
double | rsa_theta_ur |
photon velocity in radiation streaming approximation |
double | rsa_delta_idr |
interacting dark radiation density in dark radiation streaming approximation |
double | rsa_theta_idr |
interacting dark radiation velocity in dark radiation streaming approximation |
double | theta_idm |
interacting dark matter velocity |
double | theta_idm_prime |
derivative of interacting dark matter velocity in regard to conformal time |
double * | delta_ncdm |
relative density perturbation of each ncdm species |
double * | theta_ncdm |
velocity divergence theta of each ncdm species |
double * | shear_ncdm |
shear for each ncdm species |
double | delta_m |
relative density perturbation of all non-relativistic species |
double | theta_m |
velocity divergence theta of all non-relativistic species |
double | delta_cb |
relative density perturbation of only cdm and baryon |
double | theta_cb |
velocity divergence theta of only cdm and baryon |
double | delta_rho_fld |
density perturbation of fluid, not so trivial in PPF scheme |
double | delta_p_fld |
pressure perturbation of fluid, very non-trivial in PPF scheme |
double | rho_plus_p_theta_fld |
velocity divergence of fluid, not so trivial in PPF scheme |
double | S_fld |
S quantity sourcing Gamma_prime evolution in PPF scheme (equivalent to eq. 15 in 0808.3125) |
double | Gamma_prime_fld |
Gamma_prime in PPF scheme (equivalent to eq. 14 in 0808.3125) |
FILE * | perturbations_output_file |
filepointer to output file |
int | index_ikout |
index for output k value (when k_output_values is set) |
short | inter_mode |
flag defining the method used for interpolation background/thermo quantities tables |
int | last_index_back |
the background interpolation function background_at_tau() keeps memory of the last point called through this index |
int | last_index_thermo |
the thermodynamics interpolation function thermodynamics_at_z() keeps memory of the last point called through this index |
int | index_ap_tca |
index for tight-coupling approximation |
int | index_ap_rsa |
index for radiation streaming approximation |
int | index_ap_tca_idm_dr |
index for dark tight-coupling approximation (idm-idr) |
int | index_ap_rsa_idr |
index for dark radiation streaming approximation |
int | index_ap_ufa |
index for ur fluid approximation |
int | index_ap_ncdmfa |
index for ncdm fluid approximation |
int | ap_size |
number of relevant approximations for a given mode |
int * | approx |
array of approximation flags holding at a given time: approx[index_ap] |
int | max_l_max |
maximum l_max for any multipole |
double * | s_l |
array of freestreaming coefficients |
struct perturbations_parameters_and_workspace |
Structure pointing towards all what the function that perturbations_derivs needs to know: fixed input parameters and indices contained in the various structures, workspace, etc.
Data Fields | ||
---|---|---|
struct precision * | ppr |
pointer to the precision structure |
struct background * | pba |
pointer to the background structure |
struct thermodynamics * | pth |
pointer to the thermodynamics structure |
struct perturbations * | ppt |
pointer to the precision structure |
int | index_md |
index of mode (scalar/.../vector/tensor) |
int | index_ic |
index of initial condition (adiabatic/isocurvature(s)/...) |
int | index_k |
index of wavenumber |
double | k |
current value of wavenumber in 1/Mpc |
struct perturbations_workspace * | ppw |
workspace defined above |
#define _SELECTION_NUM_MAX_ 100 |
maximum number and types of selection function (for bins of matter density or cosmic shear)
#define _MAX_NUMBER_OF_K_FILES_ 30 |
maximum number of k-values for perturbation output
enum tca_flags |
flags for various approximation schemes (tca = tight-coupling approximation, rsa = radiation streaming approximation, ufa = massless neutrinos / ultra-relativistic relics fluid approximation)
CAUTION: must be listed below in chronological order, and cannot be reversible. When integrating equations for a given mode, it is only possible to switch from left to right in the lists below.
enum tca_method |
labels for the way in which each approximation scheme is implemented
enum possible_gauges |