CLASS MANUAL
background.h
Go to the documentation of this file.
1 
3 #ifndef __BACKGROUND__
4 #define __BACKGROUND__
5 
6 #include "common.h"
7 #include "quadrature.h"
8 #include "growTable.h"
9 #include "arrays.h"
10 #include "dei_rkck.h"
11 #include "parser.h"
12 
13 enum spatial_curvature {flat,open,closed};
14 
25 struct background
26 {
39 
40  double H0;
42  double Omega0_g;
44  double T_cmb;
46  double Omega0_b;
48  double Omega0_cdm;
50  double Omega0_lambda;
52  double Omega0_fld;
54  double w0_fld;
55  double wa_fld;
57  double cs2_fld;
62  double Omega0_ur;
64  double Omega0_dcdmdr;
66  double Gamma_dcdm;
68  double Omega_ini_dcdm;
70  double Omega0_scf;
72  double phi_ini_scf;
74  double * scf_parameters;
77  //double scf_lambda; /**< \f$ \lambda \f$ : scalar field exponential potential slope */
78  //double scf_alpha; /**< \f$ \alpha \f$ : Albrecht-Skordis polynomial slope */
79  //double scf_B; /**< \f$ \alpha \f$ : Albrecht-Skordis field shift */
80  //double scf_A; /**< \f$ \alpha \f$ : Albrecht-Skordis offset */
81 
82  double Omega0_k;
84  int N_ncdm;
85  double * M_ncdm;
87  double * Omega0_ncdm, Omega0_ncdm_tot;
88  double * deg_ncdm, deg_ncdm_default;
94  /* the following parameters help to define the analytical ncdm phase space distributions (p-s-d) */
95  double * T_ncdm,T_ncdm_default;
100  double * ksi_ncdm, ksi_ncdm_default;
108  /* end of parameters for analytical ncdm p-s-d */
109 
110  /* the following parameters help to define tabulated ncdm p-s-d passed in file */
111  int * got_files;
113  char * ncdm_psd_files;
114  /* end of parameters for tabulated ncdm p-s-d */
115 
117 
121 
122  double h;
123  double age;
124  double conformal_age;
125  double K;
126  int sgnK;
127  double * m_ncdm_in_eV;
128  double Neff;
129  double Omega0_dcdm;
130  double Omega0_dr;
134 
138 
139  double a_today;
142 
146 
151  /* end of vector in short format, now quantities in normal format */
152 
176  /* end of vector in normal format, now quantities in long format */
177 
191  int bg_size;
194 
198 
199  int bt_size;
200  double * tau_table;
201  double * z_table;
202  double * background_table;
205 
209 
210  double * d2tau_dz2_table;
214 
215 
228 
240  int bi_B_size;
241  int bi_size;
244 
254 
255  short has_cdm;
256  short has_dcdm;
257  short has_dr;
258  short has_scf;
259  short has_ncdm;
260  short has_lambda;
261  short has_fld;
262  short has_ur;
266 
273 
274  double ** q_ncdm_bg;
275  double ** w_ncdm_bg;
276  double ** q_ncdm;
277  double ** w_ncdm;
278  double ** dlnf0_dlnq_ncdm;
280  int * q_size_ncdm;
281  double * factor_ncdm;
284 
290 
291  short short_info;
292  short normal_info;
293  short long_info;
295  short inter_normal;
299 
303 
306  ErrorMsg shooting_error;
310  ErrorMsg error_message;
313 };
314 
320 
321  /* structures containing fixed input parameters (indices, ...) */
322  struct background * pba;
323 
324  /* workspace */
325  double * pvecback;
326 
327 };
328 
334 
335  /* structures containing fixed input parameters (indices, ...) */
336  struct background * pba;
337 
338  /* Additional parameters */
339 
340  /* Index of current distribution function */
341  int n_ncdm;
342 
343  /* Used for interpolating in file of tabulated p-s-d: */
344  int tablesize;
345  double *q;
346  double *f0;
347  double *d2f0;
348  int last_index;
349 
350 };
351 
352 /**************************************************************/
353 /* @cond INCLUDE_WITH_DOXYGEN */
354 /*
355  * Boilerplate for C++
356  */
357 #ifdef __cplusplus
358 extern "C" {
359 #endif
360 
361  int background_at_tau(
362  struct background *pba,
363  double tau,
364  short return_format,
365  short inter_mode,
366  int * last_index,
367  double * pvecback
368  );
369 
371  struct background *pba,
372  double * pvecback_B,
373  short return_format,
374  double * pvecback
375  );
376 
378  struct background *pba,
379  double z,
380  double * tau
381  );
382 
383  int background_init(
384  struct precision *ppr,
385  struct background *pba
386  );
387 
388  int background_free(
389  struct background *pba
390  );
391 
393  struct background *pba
394  );
395 
396  int background_indices(
397  struct background *pba
398  );
399 
401  void *pba,
402  double q,
403  double * f0
404  );
405 
407  void *pba,
408  double q,
409  double * test
410  );
411 
413  struct precision *ppr,
414  struct background *pba
415  );
416 
417 
419  double * qvec,
420  double * wvec,
421  int qsize,
422  double M,
423  double factor,
424  double z,
425  double * n,
426  double * rho,
427  double * p,
428  double * drho_dM,
429  double * pseudo_p
430  );
431 
433  struct precision *ppr,
434  struct background *pba,
435  int species
436  );
437 
438  int background_solve(
439  struct precision *ppr,
440  struct background *pba
441  );
442 
444  struct precision *ppr,
445  struct background *pba,
446  double * pvecback,
447  double * pvecback_integration
448  );
449 
450  int background_output_titles(struct background * pba,
451  char titles[_MAXTITLESTRINGLENGTH_]
452  );
453 
455  struct background *pba,
456  int number_of_titles,
457  double *data);
458 
459  int background_derivs(
460  double z,
461  double * y,
462  double * dy,
463  void * parameters_and_workspace,
464  ErrorMsg error_message
465  );
466 
468  double V_scf(
469  struct background *pba,
470  double phi
471  );
472 
473  double dV_scf(
474  struct background *pba,
475  double phi
476  );
477 
478  double ddV_scf(
479  struct background *pba,
480  double phi
481  );
482 
484  double Q_scf(
485  struct background *pba,
486  double phi,
487  double phi_prime
488  );
489 
490 #ifdef __cplusplus
491 }
492 #endif
493 
494 /**************************************************************/
495 
501 
502 #define _Mpc_over_m_ 3.085677581282e22
503 /* remark: CAMB uses 3.085678e22: good to know if you want to compare with high accuracy */
504 
505 #define _Gyr_over_Mpc_ 3.06601394e2
507 #define _c_ 2.99792458e8
508 #define _G_ 6.67428e-11
509 #define _eV_ 1.602176487e-19
511 /* parameters entering in Stefan-Boltzmann constant sigma_B */
512 #define _k_B_ 1.3806504e-23
513 #define _h_P_ 6.62606896e-34
514 /* remark: sigma_B = 2 pi^5 k_B^4 / (15h^3c^2) = 5.670400e-8
515  = Stefan-Boltzmann constant in W/m^2/K^4 = Kg/K^4/s^3 */
516 
518 
525 
526 #define _H0_BIG_ 1./2997.9
527 #define _H0_SMALL_ 0.3/2997.9
528 #define _TCMB_BIG_ 2.8
529 #define _TCMB_SMALL_ 2.7
530 #define _TOLERANCE_ON_CURVATURE_ 1.e-5
531 #define _OMEGAK_BIG_ 0.5
532 #define _OMEGAK_SMALL_ -0.5
535 
536 
541 
542 #define _SCALE_BACK_ 0.1
546 #define _PSD_DERIVATIVE_EXP_MIN_ -30
547 #define _PSD_DERIVATIVE_EXP_MAX_ 2
549 #define _zeta3_ 1.2020569031595942853997381615114499907649862923404988817922
550 #define _zeta5_ 1.0369277551433699263313654864570341680570809195019128119741
553 
554 
555 #endif
556 /* @endcond */
short attractor_ic_scf
Definition: background.h:71
Definition: background.h:25
int background_free_input(struct background *pba)
Definition: background.c:626
double Neff
Definition: background.h:128
int * q_size_ncdm
Definition: background.h:280
int index_bg_a
Definition: background.h:147
int index_bg_rho_b
Definition: background.h:154
short inter_normal
Definition: background.h:295
double Omega0_cdm
Definition: background.h:48
short background_verbose
Definition: background.h:308
int index_bi_rho_dr
Definition: background.h:231
int index_bg_time
Definition: background.h:183
int scf_tuning_index
Definition: background.h:76
short inter_closeby
Definition: background.h:296
double Omega0_fld
Definition: background.h:52
int background_ncdm_test_function(void *pbadist, double q, double *test)
Definition: background.c:1031
double Omega0_dcdm
Definition: background.h:129
short has_cdm
Definition: background.h:255
double Omega0_scf
Definition: background.h:70
Definition: background.h:333
int index_bg_conf_distance
Definition: background.h:180
int index_bg_rho_ncdm1
Definition: background.h:170
double Omega0_g
Definition: background.h:42
int index_bi_tau
Definition: background.h:237
short has_ur
Definition: background.h:262
int index_bg_rho_fld
Definition: background.h:157
double Gamma_dcdm
Definition: background.h:66
int index_bg_phi_prime_scf
Definition: background.h:163
int index_bg_rho_dr
Definition: background.h:160
int background_ncdm_M_from_Omega(struct precision *ppr, struct background *pba, int n_ncdm)
Definition: background.c:1321
int index_bg_ang_distance
Definition: background.h:181
short has_curvature
Definition: background.h:263
int index_bg_dV_scf
Definition: background.h:165
double phi_ini_scf
Definition: background.h:72
double Omega0_dr
Definition: background.h:130
int background_initial_conditions(struct precision *ppr, struct background *pba, double *pvecback, double *pvecback_integration)
Definition: background.c:1696
double * z_table
Definition: background.h:201
double deg_ncdm_default
Definition: background.h:88
double T_ncdm_default
Definition: background.h:95
double ** q_ncdm_bg
Definition: background.h:274
int background_tau_of_z(struct background *pba, double z, double *tau)
Definition: background.c:187
int index_bg_D
Definition: background.h:186
int index_bg_V_scf
Definition: background.h:164
double ** q_ncdm
Definition: background.h:276
int index_bi_growth
Definition: background.h:238
short has_lambda
Definition: background.h:260
double Omega_ini_dcdm
Definition: background.h:68
double Omega0_ncdm_tot
Definition: background.h:87
double V_scf(struct background *pba, double phi)
Definition: background.c:2178
short normal_info
Definition: background.h:292
ErrorMsg error_message
Definition: background.h:310
int background_ncdm_distribution(void *pbadist, double q, double *f0)
Definition: background.c:894
double H0
Definition: background.h:40
ErrorMsg shooting_error
Definition: background.h:306
double * m_ncdm_in_eV
Definition: background.h:127
short long_info
Definition: background.h:293
double * M_ncdm
Definition: background.h:85
int scf_parameters_size
Definition: background.h:75
double * ncdm_psd_parameters
Definition: background.h:105
int index_bi_a
Definition: background.h:229
int background_indices(struct background *pba)
Definition: background.c:676
int N_ncdm
Definition: background.h:84
double * scf_parameters
Definition: background.h:74
int background_init(struct precision *ppr, struct background *pba)
Definition: background.c:453
int index_bg_ddV_scf
Definition: background.h:166
int sgnK
Definition: background.h:126
double Omega0_ur
Definition: background.h:62
char * ncdm_psd_files
Definition: background.h:113
double phi_prime_ini_scf
Definition: background.h:73
int index_bg_rho_dcdm
Definition: background.h:159
int index_bg_rs
Definition: background.h:184
int background_ncdm_momenta(double *qvec, double *wvec, int qsize, double M, double factor, double z, double *n, double *rho, double *p, double *drho_dM, double *pseudo_p)
Definition: background.c:1254
int index_bg_rho_crit
Definition: background.h:178
int bi_B_size
Definition: background.h:240
double * tau_table
Definition: background.h:200
double ** w_ncdm
Definition: background.h:277
int index_bg_rho_scf
Definition: background.h:167
int index_bg_pseudo_p_ncdm1
Definition: background.h:172
int index_bi_rho_dcdm
Definition: background.h:230
int index_bi_time
Definition: background.h:235
double * d2background_dtau2_table
Definition: background.h:211
double * factor_ncdm
Definition: background.h:281
double Omega0_b
Definition: background.h:46
int bg_size
Definition: background.h:191
int bi_size
Definition: background.h:241
int index_bg_lum_distance
Definition: background.h:182
Definition: background.h:319
int background_ncdm_init(struct precision *ppr, struct background *pba)
Definition: background.c:1056
short has_dcdm
Definition: background.h:256
int index_bg_Omega_r
Definition: background.h:174
int bg_size_normal
Definition: background.h:190
double w0_fld
Definition: background.h:54
double wa_fld
Definition: background.h:55
double ** w_ncdm_bg
Definition: background.h:275
int bt_size
Definition: background.h:199
int background_derivs(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: background.c:2003
double a_today
Definition: background.h:139
double cs2_fld
Definition: background.h:57
int index_bg_p_ncdm1
Definition: background.h:171
int background_functions(struct background *pba, double *pvecback_B, short return_format, double *pvecback)
Definition: background.c:244
int bg_size_short
Definition: background.h:189
short has_scf
Definition: background.h:258
double T_cmb
Definition: background.h:44
int index_bg_rho_ur
Definition: background.h:158
int * q_size_ncdm_bg
Definition: background.h:279
int index_bg_rho_g
Definition: background.h:153
int index_bg_rho_cdm
Definition: background.h:155
short has_ncdm
Definition: background.h:259
int * got_files
Definition: background.h:111
double h
Definition: background.h:122
double Omega0_dcdmdr
Definition: background.h:64
int background_at_tau(struct background *pba, double tau, short return_format, short intermode, int *last_index, double *pvecback)
Definition: background.c:98
int index_bg_rho_lambda
Definition: background.h:156
int index_bg_f
Definition: background.h:187
double * background_table
Definition: background.h:202
int index_bi_phi_prime_scf
Definition: background.h:233
Definition: common.h:345
int background_output_data(struct background *pba, int number_of_titles, double *data)
Definition: background.c:1926
double Omega0_lambda
Definition: background.h:50
double * d2tau_dz2_table
Definition: background.h:210
int index_bg_Omega_m
Definition: background.h:179
int index_bi_rs
Definition: background.h:236
short short_info
Definition: background.h:291
double ** dlnf0_dlnq_ncdm
Definition: background.h:278
int index_bi_phi_scf
Definition: background.h:232
int index_bg_H_prime
Definition: background.h:149
int index_bg_H
Definition: background.h:148
int index_bg_phi_scf
Definition: background.h:162
int background_output_titles(struct background *pba, char titles[_MAXTITLESTRINGLENGTH_])
Definition: background.c:1877
short shooting_failed
Definition: background.h:304
double conformal_age
Definition: background.h:124
double age
Definition: background.h:123
double K
Definition: background.h:125
int background_solve(struct precision *ppr, struct background *pba)
Definition: background.c:1388
int index_bg_p_scf
Definition: background.h:168
short has_fld
Definition: background.h:261
double Omega0_k
Definition: background.h:82
double ksi_ncdm_default
Definition: background.h:100
int background_free(struct background *pba)
Definition: background.c:602
short has_dr
Definition: background.h:257