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;
53  double w0_fld;
54  double wa_fld;
56  double cs2_fld;
61  short use_ppf;
69  double Omega0_ur;
71  double Omega0_dcdmdr;
73  double Gamma_dcdm;
75  double Omega_ini_dcdm;
77  double Omega0_scf;
79  double phi_ini_scf;
81  double * scf_parameters;
84  //double scf_lambda; /**< \f$ \lambda \f$ : scalar field exponential potential slope */
85  //double scf_alpha; /**< \f$ \alpha \f$ : Albrecht-Skordis polynomial slope */
86  //double scf_B; /**< \f$ \alpha \f$ : Albrecht-Skordis field shift */
87  //double scf_A; /**< \f$ \alpha \f$ : Albrecht-Skordis offset */
88 
89  double Omega0_k;
91  int N_ncdm;
92  double * M_ncdm;
94  double * Omega0_ncdm, Omega0_ncdm_tot;
95  double * deg_ncdm, deg_ncdm_default;
101  /* the following parameters help to define the analytical ncdm phase space distributions (p-s-d) */
102  double * T_ncdm,T_ncdm_default;
107  double * ksi_ncdm, ksi_ncdm_default;
115  /* end of parameters for analytical ncdm p-s-d */
116 
117  /* the following parameters help to define tabulated ncdm p-s-d passed in file */
118  int * got_files;
120  char * ncdm_psd_files;
121  /* end of parameters for tabulated ncdm p-s-d */
122 
124 
128 
129  double h;
130  double age;
131  double conformal_age;
132  double K;
133  int sgnK;
134  double * m_ncdm_in_eV;
135  double Neff;
136  double Omega0_dcdm;
137  double Omega0_dr;
141 
145 
146  double a_today;
149 
153 
158  /* end of vector in short format, now quantities in normal format */
159 
184  /* end of vector in normal format, now quantities in long format */
185 
199  int bg_size;
202 
206 
207  int bt_size;
208  double * tau_table;
209  double * z_table;
210  double * background_table;
213 
217 
218  double * d2tau_dz2_table;
222 
223 
236 
250  int bi_B_size;
251  int bi_size;
254 
264 
265  short has_cdm;
266  short has_dcdm;
267  short has_dr;
268  short has_scf;
269  short has_ncdm;
270  short has_lambda;
271  short has_fld;
272  short has_ur;
276 
283 
284  double ** q_ncdm_bg;
285  double ** w_ncdm_bg;
286  double ** q_ncdm;
287  double ** w_ncdm;
288  double ** dlnf0_dlnq_ncdm;
290  int * q_size_ncdm;
291  double * factor_ncdm;
294 
300 
301  short short_info;
302  short normal_info;
303  short long_info;
305  short inter_normal;
309 
313 
316  ErrorMsg shooting_error;
320  ErrorMsg error_message;
323 };
324 
330 
331  /* structures containing fixed input parameters (indices, ...) */
332  struct background * pba;
333 
334  /* workspace */
335  double * pvecback;
336 
337 };
338 
344 
345  /* structures containing fixed input parameters (indices, ...) */
346  struct background * pba;
347 
348  /* Additional parameters */
349 
350  /* Index of current distribution function */
351  int n_ncdm;
352 
353  /* Used for interpolating in file of tabulated p-s-d: */
354  int tablesize;
355  double *q;
356  double *f0;
357  double *d2f0;
358  int last_index;
359 
360 };
361 
362 /**************************************************************/
363 /* @cond INCLUDE_WITH_DOXYGEN */
364 /*
365  * Boilerplate for C++
366  */
367 #ifdef __cplusplus
368 extern "C" {
369 #endif
370 
371  int background_at_tau(
372  struct background *pba,
373  double tau,
374  short return_format,
375  short inter_mode,
376  int * last_index,
377  double * pvecback
378  );
379 
381  struct background *pba,
382  double z,
383  double * tau
384  );
385 
387  struct background *pba,
388  double * pvecback_B,
389  short return_format,
390  double * pvecback
391  );
392 
393  int background_w_fld(
394  struct background * pba,
395  double a,
396  double * w_fld,
397  double * dw_over_da_fld,
398  double * integral_fld);
399 
400  int background_init(
401  struct precision *ppr,
402  struct background *pba
403  );
404 
405  int background_free(
406  struct background *pba
407  );
408 
410  struct background *pba
411  );
412 
413  int background_indices(
414  struct background *pba
415  );
416 
418  void *pba,
419  double q,
420  double * f0
421  );
422 
424  void *pba,
425  double q,
426  double * test
427  );
428 
430  struct precision *ppr,
431  struct background *pba
432  );
433 
434 
436  double * qvec,
437  double * wvec,
438  int qsize,
439  double M,
440  double factor,
441  double z,
442  double * n,
443  double * rho,
444  double * p,
445  double * drho_dM,
446  double * pseudo_p
447  );
448 
450  struct precision *ppr,
451  struct background *pba,
452  int species
453  );
454 
455  int background_solve(
456  struct precision *ppr,
457  struct background *pba
458  );
459 
461  struct precision *ppr,
462  struct background *pba,
463  double * pvecback,
464  double * pvecback_integration
465  );
466 
467  int background_output_titles(struct background * pba,
468  char titles[_MAXTITLESTRINGLENGTH_]
469  );
470 
472  struct background *pba,
473  int number_of_titles,
474  double *data);
475 
476  int background_derivs(
477  double z,
478  double * y,
479  double * dy,
480  void * parameters_and_workspace,
481  ErrorMsg error_message
482  );
483 
485  double V_scf(
486  struct background *pba,
487  double phi
488  );
489 
490  double dV_scf(
491  struct background *pba,
492  double phi
493  );
494 
495  double ddV_scf(
496  struct background *pba,
497  double phi
498  );
499 
501  double Q_scf(
502  struct background *pba,
503  double phi,
504  double phi_prime
505  );
506 
507 #ifdef __cplusplus
508 }
509 #endif
510 
511 /**************************************************************/
512 
518 
519 #define _Mpc_over_m_ 3.085677581282e22
520 /* remark: CAMB uses 3.085678e22: good to know if you want to compare with high accuracy */
521 
522 #define _Gyr_over_Mpc_ 3.06601394e2
524 #define _c_ 2.99792458e8
525 #define _G_ 6.67428e-11
526 #define _eV_ 1.602176487e-19
528 /* parameters entering in Stefan-Boltzmann constant sigma_B */
529 #define _k_B_ 1.3806504e-23
530 #define _h_P_ 6.62606896e-34
531 /* remark: sigma_B = 2 pi^5 k_B^4 / (15h^3c^2) = 5.670400e-8
532  = Stefan-Boltzmann constant in W/m^2/K^4 = Kg/K^4/s^3 */
533 
535 
542 
543 #define _H0_BIG_ 1./2997.9
544 #define _H0_SMALL_ 0.3/2997.9
545 #define _TCMB_BIG_ 2.8
546 #define _TCMB_SMALL_ 2.7
547 #define _TOLERANCE_ON_CURVATURE_ 1.e-5
548 #define _OMEGAK_BIG_ 0.5
549 #define _OMEGAK_SMALL_ -0.5
552 
553 
558 
559 #define _SCALE_BACK_ 0.1
563 #define _PSD_DERIVATIVE_EXP_MIN_ -30
564 #define _PSD_DERIVATIVE_EXP_MAX_ 2
566 #define _zeta3_ 1.2020569031595942853997381615114499907649862923404988817922
567 #define _zeta5_ 1.0369277551433699263313654864570341680570809195019128119741
570 
571 
572 #endif
573 /* @endcond */
short attractor_ic_scf
Definition: background.h:78
Definition: background.h:25
int background_free_input(struct background *pba)
Definition: background.c:695
double Neff
Definition: background.h:135
int * q_size_ncdm
Definition: background.h:290
short use_ppf
Definition: background.h:61
int index_bg_a
Definition: background.h:154
int index_bg_rho_b
Definition: background.h:161
short inter_normal
Definition: background.h:305
double Omega0_cdm
Definition: background.h:48
short background_verbose
Definition: background.h:318
int index_bi_rho_dr
Definition: background.h:239
int index_bg_time
Definition: background.h:191
int scf_tuning_index
Definition: background.h:83
short inter_closeby
Definition: background.h:306
double Omega0_fld
Definition: background.h:52
int background_ncdm_test_function(void *pbadist, double q, double *test)
Definition: background.c:1105
double Omega0_dcdm
Definition: background.h:136
short has_cdm
Definition: background.h:265
double Omega0_scf
Definition: background.h:77
Definition: background.h:343
int index_bg_conf_distance
Definition: background.h:188
int index_bg_rho_ncdm1
Definition: background.h:178
double Omega0_g
Definition: background.h:42
int index_bi_tau
Definition: background.h:246
short has_ur
Definition: background.h:272
int background_w_fld(struct background *pba, double a, double *w_fld, double *dw_over_da_fld, double *integral_fld)
Definition: background.c:469
int index_bg_rho_fld
Definition: background.h:164
double Gamma_dcdm
Definition: background.h:73
int index_bg_phi_prime_scf
Definition: background.h:171
int index_bg_rho_dr
Definition: background.h:168
int background_ncdm_M_from_Omega(struct precision *ppr, struct background *pba, int n_ncdm)
Definition: background.c:1395
int index_bg_ang_distance
Definition: background.h:189
short has_curvature
Definition: background.h:273
int index_bg_dV_scf
Definition: background.h:173
double phi_ini_scf
Definition: background.h:79
double Omega0_dr
Definition: background.h:137
int index_bi_D
Definition: background.h:247
double c_gamma_over_c_fld
Definition: background.h:67
int background_initial_conditions(struct precision *ppr, struct background *pba, double *pvecback, double *pvecback_integration)
Definition: background.c:1769
double * z_table
Definition: background.h:209
double deg_ncdm_default
Definition: background.h:95
double T_ncdm_default
Definition: background.h:102
double ** q_ncdm_bg
Definition: background.h:284
int background_tau_of_z(struct background *pba, double z, double *tau)
Definition: background.c:187
int index_bg_D
Definition: background.h:194
int index_bg_V_scf
Definition: background.h:172
double ** q_ncdm
Definition: background.h:286
short has_lambda
Definition: background.h:270
double Omega_ini_dcdm
Definition: background.h:75
double Omega0_ncdm_tot
Definition: background.h:94
double V_scf(struct background *pba, double phi)
Definition: background.c:2286
short normal_info
Definition: background.h:302
ErrorMsg error_message
Definition: background.h:320
int background_ncdm_distribution(void *pbadist, double q, double *f0)
Definition: background.c:968
double H0
Definition: background.h:40
ErrorMsg shooting_error
Definition: background.h:316
double * m_ncdm_in_eV
Definition: background.h:134
short long_info
Definition: background.h:303
double * M_ncdm
Definition: background.h:92
int index_bg_w_fld
Definition: background.h:165
int scf_parameters_size
Definition: background.h:82
double * ncdm_psd_parameters
Definition: background.h:112
int index_bi_a
Definition: background.h:237
int background_indices(struct background *pba)
Definition: background.c:745
int N_ncdm
Definition: background.h:91
double * scf_parameters
Definition: background.h:81
int background_init(struct precision *ppr, struct background *pba)
Definition: background.c:515
int index_bg_ddV_scf
Definition: background.h:174
int sgnK
Definition: background.h:133
double Omega0_ur
Definition: background.h:69
char * ncdm_psd_files
Definition: background.h:120
double phi_prime_ini_scf
Definition: background.h:80
int index_bg_rho_dcdm
Definition: background.h:167
int index_bg_rs
Definition: background.h:192
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:1328
int index_bg_rho_crit
Definition: background.h:186
int bi_B_size
Definition: background.h:250
double * tau_table
Definition: background.h:208
double ** w_ncdm
Definition: background.h:287
int index_bg_rho_scf
Definition: background.h:175
int index_bg_pseudo_p_ncdm1
Definition: background.h:180
int index_bi_rho_dcdm
Definition: background.h:238
int index_bi_time
Definition: background.h:244
double * d2background_dtau2_table
Definition: background.h:219
double * factor_ncdm
Definition: background.h:291
double Omega0_b
Definition: background.h:46
int bg_size
Definition: background.h:199
int bi_size
Definition: background.h:251
int index_bg_lum_distance
Definition: background.h:190
Definition: background.h:329
int background_ncdm_init(struct precision *ppr, struct background *pba)
Definition: background.c:1130
short has_dcdm
Definition: background.h:266
int index_bg_Omega_r
Definition: background.h:182
int bg_size_normal
Definition: background.h:198
double w0_fld
Definition: background.h:53
double wa_fld
Definition: background.h:54
double ** w_ncdm_bg
Definition: background.h:285
int bt_size
Definition: background.h:207
int background_derivs(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: background.c:2098
double a_today
Definition: background.h:146
double cs2_fld
Definition: background.h:56
int index_bg_p_ncdm1
Definition: background.h:179
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:197
short has_scf
Definition: background.h:268
double T_cmb
Definition: background.h:44
int index_bg_rho_ur
Definition: background.h:166
int * q_size_ncdm_bg
Definition: background.h:289
int index_bg_rho_g
Definition: background.h:160
int index_bg_rho_cdm
Definition: background.h:162
short has_ncdm
Definition: background.h:269
int * got_files
Definition: background.h:118
int index_bi_D_prime
Definition: background.h:248
double h
Definition: background.h:129
double Omega0_dcdmdr
Definition: background.h:71
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:163
int index_bg_f
Definition: background.h:195
double * background_table
Definition: background.h:210
int index_bi_phi_prime_scf
Definition: background.h:242
Definition: common.h:345
int background_output_data(struct background *pba, int number_of_titles, double *data)
Definition: background.c:2020
double Omega0_lambda
Definition: background.h:50
double * d2tau_dz2_table
Definition: background.h:218
int index_bg_Omega_m
Definition: background.h:187
int index_bi_rs
Definition: background.h:245
short short_info
Definition: background.h:301
double ** dlnf0_dlnq_ncdm
Definition: background.h:288
int index_bi_phi_scf
Definition: background.h:241
int index_bg_H_prime
Definition: background.h:156
int index_bg_H
Definition: background.h:155
int index_bg_phi_scf
Definition: background.h:170
int background_output_titles(struct background *pba, char titles[_MAXTITLESTRINGLENGTH_])
Definition: background.c:1970
short shooting_failed
Definition: background.h:314
double conformal_age
Definition: background.h:131
double age
Definition: background.h:130
int index_bi_rho_fld
Definition: background.h:240
double K
Definition: background.h:132
int background_solve(struct precision *ppr, struct background *pba)
Definition: background.c:1462
int index_bg_p_scf
Definition: background.h:176
short has_fld
Definition: background.h:271
double Omega0_k
Definition: background.h:89
double ksi_ncdm_default
Definition: background.h:107
int background_free(struct background *pba)
Definition: background.c:671
short has_dr
Definition: background.h:267