CLASS MANUAL
primordial.h
Go to the documentation of this file.
1 
3 #ifndef __PRIMORDIAL__
4 #define __PRIMORDIAL__
5 
6 #include "perturbations.h"
7 
11  analytic_Pk,
12  two_scales,
13  inflation_V,
14  inflation_H,
15  inflation_V_end,
16  external_Pk
17 };
18 
22  linear,
23  logarithmic
24 };
25 
29  polynomial,
30  natural,
31  higgs_inflation
32 };
33 
37  _aH_,
38  _phi_,
39  _end_inflation_,
40  _a_
41 };
42 
46  backward,
47  forward
48 };
49 
53  conformal,
54  proper
55 };
56 
60  N_star,
61  ln_aH_ratio,
62  ln_aH_ratio_auto
63 };
64 
68  numerical,
69  analytical
70 };
71 
79 struct primordial {
80 
86 
87  double k_pivot;
91  /* - parameters describing the case primordial_spec_type = analytic_Pk : amplitudes, tilts, runnings, cross-correlations, ... */
92 
93  double A_s;
94  double n_s;
95  double alpha_s;
96  double beta_s;
98  double r;
99  double n_t;
100  double alpha_t;
102  double f_bi;
103  double n_bi;
104  double alpha_bi;
106  double f_cdi;
107  double n_cdi;
108  double alpha_cdi;
110  double f_nid;
111  double n_nid;
112  double alpha_nid;
114  double f_niv;
115  double n_niv;
116  double alpha_niv;
118  double c_ad_bi;
119  double n_ad_bi;
120  double alpha_ad_bi;
122  double c_ad_cdi;
123  double n_ad_cdi;
124  double alpha_ad_cdi;
126  double c_ad_nid;
127  double n_ad_nid;
128  double alpha_ad_nid;
130  double c_ad_niv;
131  double n_ad_niv;
132  double alpha_ad_niv;
134  double c_bi_cdi;
135  double n_bi_cdi;
136  double alpha_bi_cdi;
138  double c_bi_nid;
139  double n_bi_nid;
140  double alpha_bi_nid;
142  double c_bi_niv;
143  double n_bi_niv;
144  double alpha_bi_niv;
146  double c_cdi_nid;
147  double n_cdi_nid;
148  double alpha_cdi_nid;
150  double c_cdi_niv;
151  double n_cdi_niv;
152  double alpha_cdi_niv;
154  double c_nid_niv;
155  double n_nid_niv;
156  double alpha_nid_niv;
161 
162  double V0;
163  double V1;
164  double V2;
165  double V3;
166  double V4;
168  /* parameters describing the case primordial_spec_type = inflation_H */
169 
170  double H0;
171  double H1;
172  double H2;
173  double H3;
174  double H4;
176  /* parameters describing inflation_V_end */
177 
178  double phi_end;
182  /* behavior of the inflation module */
187  char* command;
188  double custom1;
189  double custom2;
190  double custom3;
191  double custom4;
192  double custom5;
193  double custom6;
194  double custom7;
195  double custom8;
196  double custom9;
197  double custom10;
200 
204 
205  int md_size;
207  int * ic_size;
209  int * ic_ic_size;
211  int lnk_size;
213  double * lnk;
215  double ** lnpk;
229  double ** ddlnpk;
239  short ** is_non_zero;
245 
247 
250  double ** amplitude;
251  double ** tilt;
252  double ** running;
255 
257 
273  int in_size;
276 
280 
281  double phi_pivot;
285  double phi_min;
286  double phi_max;
287  double phi_stop;
290 
294 
298 
299  ErrorMsg error_message;
301 };
302 
303 struct primordial_inflation_parameters_and_workspace {
304 
305  struct primordial * ppm;
306  double N;
307  double a2;
308 
309  double V;
310  double dV;
311  double ddV;
312  double aH;
313 
314  double H;
315  double dH;
316  double ddH;
317  double dddH;
318 
319  double zpp_over_z;
320  double app_over_a;
321 
322  double k;
323 
324  enum integration_direction integrate;
325  enum time_definition time;
326 
327 };
328 
329 
330 /*************************************************************************************************************/
331 /* @cond INCLUDE_WITH_DOXYGEN */
332 /*
333  * Boilerplate for C++
334  */
335 #ifdef __cplusplus
336 extern "C" {
337 #endif
338 
340  struct primordial * ppm,
341  int index_md,
342  enum linear_or_logarithmic mode,
343  double k,
344  double * pk
345  );
346 
347  int primordial_init(
348  struct precision * ppr,
349  struct perturbs * ppt,
350  struct primordial * ppm
351  );
352 
353  int primordial_free(
354  struct primordial * ppm
355  );
356 
357  int primordial_indices(
358  struct perturbs * ppt,
359  struct primordial * ppm
360  );
361 
363  struct primordial * ppm,
364  double kmin,
365  double kmax,
366  double k_per_decade
367  );
368 
370  struct perturbs * ppt,
371  struct primordial * ppm
372  );
373 
375  struct primordial * ppm,
376  int index_md,
377  int index_ic1_ic2,
378  double k,
379  double * pk
380  );
381 
383  struct primordial * ppm,
384  double phi,
385  double * V,
386  double * dV,
387  double * ddV
388  );
389 
391  struct primordial * ppm,
392  double phi,
393  double * H,
394  double * dH,
395  double * ddH,
396  double * dddH
397  );
398 
400  struct primordial * ppm
401  );
402 
404  struct perturbs * ppt,
405  struct primordial * ppm,
406  struct precision * ppr
407  );
408 
410  struct perturbs * ppt,
411  struct primordial * ppm,
412  struct precision * ppr,
413  double * y_ini
414  );
415 
417  struct perturbs * ppt,
418  struct primordial * ppm,
419  struct precision * ppr,
420  double * y_ini
421  );
422 
424  struct perturbs * ppt,
425  struct primordial * ppm,
426  struct precision * ppr,
427  double * y_ini,
428  int index_k
429  );
430 
432  struct primordial * ppm,
433  struct precision * ppr,
434  double k,
435  double * y,
436  double * dy,
437  double * curvature,
438  double * tensor
439  );
440 
442  struct primordial * ppm,
443  struct precision * ppr,
444  double phi_0,
445  double precision,
446  double * y,
447  double * dy,
448  double * H_0,
449  double * dphidt_0
450  );
451 
453  struct primordial * ppm,
454  struct precision * ppr,
455  double * y,
456  double * dy,
457  enum target_quantity target,
458  double stop,
459  short check_epsilon,
460  enum integration_direction direction,
461  enum time_definition time
462  );
463 
465  struct primordial * ppm,
466  double phi,
467  double * V,
468  double * dV,
469  double * ddV
470  );
471 
473  struct primordial * ppm,
474  double phi,
475  double *H,
476  double * dH,
477  double * ddH,
478  double * dddH
479  );
480 
482  struct primordial * ppm,
483  double phi,
484  double * epsilon
485  );
486 
488  struct primordial * ppm,
489  struct precision * ppr,
490  double * y,
491  double * dy
492  );
493 
495  double tau,
496  double * y,
497  double * dy,
498  void * parameters_and_workspace,
499  ErrorMsg error_message
500  );
501 
503  struct perturbs * ppt,
504  struct primordial * ppm
505  );
506 
507  int primordial_output_titles(struct perturbs * ppt,
508  struct primordial * ppm,
509  char titles[_MAXTITLESTRINGLENGTH_]
510  );
511 
512  int primordial_output_data(struct perturbs * ppt,
513  struct primordial * ppm,
514  int number_of_titles,
515  double *data);
516 #ifdef __cplusplus
517 }
518 #endif
519 
520 /**************************************************************/
521 
527 
528 #define _K_PER_DECADE_PRIMORDIAL_MIN_ 1.
529 
531 
532 #endif
533 /* @endcond */
double phi_end
Definition: primordial.h:178
int primordial_inflation_indices(struct primordial *ppm)
Definition: primordial.c:1072
double alpha_bi
Definition: primordial.h:104
int * ic_size
Definition: primordial.h:207
double H1
Definition: primordial.h:171
int index_in_dah_im
Definition: primordial.h:271
double c_cdi_nid
Definition: primordial.h:146
double n_bi_nid
Definition: primordial.h:139
int lnk_size
Definition: primordial.h:211
int primordial_external_spectrum_init(struct perturbs *ppt, struct primordial *ppm)
Definition: primordial.c:3266
double alpha_ad_bi
Definition: primordial.h:120
double c_bi_niv
Definition: primordial.h:142
double c_bi_cdi
Definition: primordial.h:134
double c_ad_cdi
Definition: primordial.h:122
int primordial_spectrum_at_k(struct primordial *ppm, int index_md, enum linear_or_logarithmic mode, double input, double *output)
Definition: primordial.c:52
int primordial_free(struct primordial *ppm)
Definition: primordial.c:551
double H4
Definition: primordial.h:174
inflation_module_behavior
Definition: primordial.h:67
enum inflation_module_behavior behavior
Definition: primordial.h:183
Definition: perturbations.h:95
time_definition
Definition: primordial.h:52
double H0
Definition: primordial.h:170
enum potential_shape potential
Definition: primordial.h:160
int primordial_inflation_one_wavenumber(struct perturbs *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini, int index_k)
Definition: primordial.c:1685
double ** ddlnpk
Definition: primordial.h:229
double alpha_t
Definition: primordial.h:100
enum primordial_spectrum_type primordial_spec_type
Definition: primordial.h:89
int primordial_get_lnk_list(struct primordial *ppm, double kmin, double kmax, double k_per_decade)
Definition: primordial.c:655
double V1
Definition: primordial.h:163
double custom5
Definition: primordial.h:192
double A_s
Definition: primordial.h:93
double n_nid_niv
Definition: primordial.h:155
double ** tilt
Definition: primordial.h:251
double f_niv
Definition: primordial.h:114
double custom4
Definition: primordial.h:191
int index_in_ah_re
Definition: primordial.h:268
int index_in_ksi_re
Definition: primordial.h:264
int primordial_inflation_check_potential(struct primordial *ppm, double phi, double *V, double *dV, double *ddV)
Definition: primordial.c:2401
double alpha_s
Definition: primordial.h:95
double n_ad_bi
Definition: primordial.h:119
double alpha_niv
Definition: primordial.h:116
integration_direction
Definition: primordial.h:45
double n_t
Definition: primordial.h:99
double alpha_ad_cdi
Definition: primordial.h:124
int primordial_inflation_analytic_spectra(struct perturbs *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini)
Definition: primordial.c:1512
double V2
Definition: primordial.h:164
double phi_stop
Definition: primordial.h:287
double c_bi_nid
Definition: primordial.h:138
int index_in_ksi_im
Definition: primordial.h:265
int primordial_inflation_evolve_background(struct primordial *ppm, struct precision *ppr, double *y, double *dy, enum target_quantity target, double stop, short check_epsilon, enum integration_direction direction, enum time_definition time)
Definition: primordial.c:2074
double phi_max
Definition: primordial.h:286
target_quantity
Definition: primordial.h:36
double ** amplitude
Definition: primordial.h:250
int primordial_inflation_potential(struct primordial *ppm, double phi, double *V, double *dV, double *ddV)
Definition: primordial.c:963
ErrorMsg error_message
Definition: primordial.h:299
double n_cdi_nid
Definition: primordial.h:147
int primordial_inflation_hubble(struct primordial *ppm, double phi, double *H, double *dH, double *ddH, double *dddH)
Definition: primordial.c:1048
double c_ad_niv
Definition: primordial.h:130
double n_bi
Definition: primordial.h:103
double custom7
Definition: primordial.h:194
enum phi_pivot_methods phi_pivot_method
Definition: primordial.h:179
double f_nid
Definition: primordial.h:110
double custom6
Definition: primordial.h:193
double custom3
Definition: primordial.h:190
double ** running
Definition: primordial.h:252
double n_ad_niv
Definition: primordial.h:131
double alpha_nid
Definition: primordial.h:112
double phi_pivot
Definition: primordial.h:281
int primordial_inflation_find_phi_pivot(struct primordial *ppm, struct precision *ppr, double *y, double *dy)
Definition: primordial.c:2534
double n_ad_cdi
Definition: primordial.h:123
double V3
Definition: primordial.h:165
double H2
Definition: primordial.h:172
potential_shape
Definition: primordial.h:28
double * lnk
Definition: primordial.h:213
double c_cdi_niv
Definition: primordial.h:150
int primordial_inflation_one_k(struct primordial *ppm, struct precision *ppr, double k, double *y, double *dy, double *curvature, double *tensor)
Definition: primordial.c:1774
double alpha_bi_nid
Definition: primordial.h:140
double custom9
Definition: primordial.h:196
double V4
Definition: primordial.h:166
double n_s
Definition: primordial.h:94
double H3
Definition: primordial.h:173
double n_cdi_niv
Definition: primordial.h:151
double alpha_ad_niv
Definition: primordial.h:132
double n_ad_nid
Definition: primordial.h:127
double alpha_ad_nid
Definition: primordial.h:128
int primordial_analytic_spectrum_init(struct perturbs *ppt, struct primordial *ppm)
Definition: primordial.c:690
int primordial_indices(struct perturbs *ppt, struct primordial *ppm)
Definition: primordial.c:600
double c_nid_niv
Definition: primordial.h:154
double k_pivot
Definition: primordial.h:87
primordial_spectrum_type
Definition: primordial.h:10
int index_in_dksi_im
Definition: primordial.h:267
double custom8
Definition: primordial.h:195
int primordial_inflation_derivs(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: primordial.c:3060
double n_nid
Definition: primordial.h:111
int index_in_dksi_re
Definition: primordial.h:266
double custom1
Definition: primordial.h:188
int primordial_inflation_spectra(struct perturbs *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini)
Definition: primordial.c:1588
int primordial_inflation_check_hubble(struct primordial *ppm, double phi, double *H, double *dH, double *ddH, double *dddH)
Definition: primordial.c:2443
int primordial_inflation_get_epsilon(struct primordial *ppm, double phi, double *epsilon)
Definition: primordial.c:2481
double f_bi
Definition: primordial.h:102
double n_niv
Definition: primordial.h:115
int primordial_analytic_spectrum(struct primordial *ppm, int index_md, int index_ic1_ic2, double k, double *pk)
Definition: primordial.c:930
double c_ad_nid
Definition: primordial.h:126
short primordial_verbose
Definition: primordial.h:295
double c_ad_bi
Definition: primordial.h:118
double ** lnpk
Definition: primordial.h:215
double r
Definition: primordial.h:98
double phi_pivot_target
Definition: primordial.h:180
int index_in_a
Definition: primordial.h:261
short ** is_non_zero
Definition: primordial.h:239
double alpha_nid_niv
Definition: primordial.h:156
double alpha_cdi
Definition: primordial.h:108
phi_pivot_methods
Definition: primordial.h:59
double custom10
Definition: primordial.h:197
linear_or_logarithmic
Definition: primordial.h:21
double V0
Definition: primordial.h:162
double f_cdi
Definition: primordial.h:106
double alpha_cdi_niv
Definition: primordial.h:152
int index_in_dah_re
Definition: primordial.h:270
Definition: common.h:345
Definition: primordial.h:79
int primordial_init(struct precision *ppr, struct perturbs *ppt, struct primordial *ppm)
Definition: primordial.c:186
double custom2
Definition: primordial.h:189
int index_in_dphi
Definition: primordial.h:263
int primordial_inflation_find_attractor(struct primordial *ppm, struct precision *ppr, double phi_0, double precision, double *y, double *dy, double *H_0, double *dphidt_0)
Definition: primordial.c:1937
int md_size
Definition: primordial.h:205
double phi_min
Definition: primordial.h:285
int in_bg_size
Definition: primordial.h:272
double alpha_cdi_nid
Definition: primordial.h:148
int primordial_inflation_solve_inflation(struct perturbs *ppt, struct primordial *ppm, struct precision *ppr)
Definition: primordial.c:1129
int * ic_ic_size
Definition: primordial.h:209
double alpha_bi_niv
Definition: primordial.h:144
double n_bi_cdi
Definition: primordial.h:135
double alpha_bi_cdi
Definition: primordial.h:136
double n_cdi
Definition: primordial.h:107
double n_bi_niv
Definition: primordial.h:143
char * command
Definition: primordial.h:187
int in_size
Definition: primordial.h:273
int index_in_phi
Definition: primordial.h:262
int index_in_ah_im
Definition: primordial.h:269
double beta_s
Definition: primordial.h:96