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;
88  int has_k_max_for_primordial_pk;
93  /* - parameters describing the case primordial_spec_type = analytic_Pk : amplitudes, tilts, runnings, cross-correlations, ... */
94 
95  double A_s;
96  double n_s;
97  double alpha_s;
98  double beta_s;
100  double r;
101  double n_t;
102  double alpha_t;
104  double f_bi;
105  double n_bi;
106  double alpha_bi;
108  double f_cdi;
109  double n_cdi;
110  double alpha_cdi;
112  double f_nid;
113  double n_nid;
114  double alpha_nid;
116  double f_niv;
117  double n_niv;
118  double alpha_niv;
120  double c_ad_bi;
121  double n_ad_bi;
122  double alpha_ad_bi;
124  double c_ad_cdi;
125  double n_ad_cdi;
126  double alpha_ad_cdi;
128  double c_ad_nid;
129  double n_ad_nid;
130  double alpha_ad_nid;
132  double c_ad_niv;
133  double n_ad_niv;
134  double alpha_ad_niv;
136  double c_bi_cdi;
137  double n_bi_cdi;
138  double alpha_bi_cdi;
140  double c_bi_nid;
141  double n_bi_nid;
142  double alpha_bi_nid;
144  double c_bi_niv;
145  double n_bi_niv;
146  double alpha_bi_niv;
148  double c_cdi_nid;
149  double n_cdi_nid;
150  double alpha_cdi_nid;
152  double c_cdi_niv;
153  double n_cdi_niv;
154  double alpha_cdi_niv;
156  double c_nid_niv;
157  double n_nid_niv;
158  double alpha_nid_niv;
163 
164  double V0;
165  double V1;
166  double V2;
167  double V3;
168  double V4;
170  /* parameters describing the case primordial_spec_type = inflation_H */
171 
172  double H0;
173  double H1;
174  double H2;
175  double H3;
176  double H4;
178  /* parameters describing inflation_V_end */
179 
180  double phi_end;
184  /* behavior of the inflation module */
189  char* command;
190  double custom1;
191  double custom2;
192  double custom3;
193  double custom4;
194  double custom5;
195  double custom6;
196  double custom7;
197  double custom8;
198  double custom9;
199  double custom10;
202 
206 
207  int md_size;
209  int * ic_size;
211  int * ic_ic_size;
213  int lnk_size;
215  double * lnk;
217  double ** lnpk;
231  double ** ddlnpk;
241  short ** is_non_zero;
247 
249 
252  double ** amplitude;
253  double ** tilt;
254  double ** running;
257 
259 
275  int in_size;
278 
282 
283  double phi_pivot;
287  double phi_min;
288  double phi_max;
289  double phi_stop;
292 
296 
300 
301  ErrorMsg error_message;
303  short is_allocated;
305 };
306 
307 struct primordial_inflation_parameters_and_workspace {
308 
309  struct primordial * ppm;
310  double N;
311  double a2;
312 
313  double V;
314  double dV;
315  double ddV;
316  double aH;
317 
318  double H;
319  double dH;
320  double ddH;
321  double dddH;
322 
323  double zpp_over_z;
324  double app_over_a;
325 
326  double k;
327 
328  enum integration_direction integrate;
329  enum time_definition time;
330 
331 };
332 
333 
334 /*************************************************************************************************************/
335 /* @cond INCLUDE_WITH_DOXYGEN */
336 /*
337  * Boilerplate for C++
338  */
339 #ifdef __cplusplus
340 extern "C" {
341 #endif
342 
344  struct primordial * ppm,
345  int index_md,
346  enum linear_or_logarithmic mode,
347  double k,
348  double * pk
349  );
350 
351  int primordial_init(
352  struct precision * ppr,
353  struct perturbations * ppt,
354  struct primordial * ppm
355  );
356 
357  int primordial_free(
358  struct primordial * ppm
359  );
360 
361  int primordial_indices(
362  struct perturbations * ppt,
363  struct primordial * ppm
364  );
365 
367  struct primordial * ppm,
368  double kmin,
369  double kmax,
370  double k_per_decade
371  );
372 
374  struct perturbations * ppt,
375  struct primordial * ppm
376  );
377 
379  struct primordial * ppm,
380  int index_md,
381  int index_ic1_ic2,
382  double k,
383  double * pk
384  );
385 
387  struct primordial * ppm,
388  double phi,
389  double * V,
390  double * dV,
391  double * ddV
392  );
393 
395  struct primordial * ppm,
396  double phi,
397  double * H,
398  double * dH,
399  double * ddH,
400  double * dddH
401  );
402 
404  struct primordial * ppm
405  );
406 
408  struct perturbations * ppt,
409  struct primordial * ppm,
410  struct precision * ppr
411  );
412 
414  struct perturbations * ppt,
415  struct primordial * ppm,
416  struct precision * ppr,
417  double * y_ini
418  );
419 
421  struct perturbations * ppt,
422  struct primordial * ppm,
423  struct precision * ppr,
424  double * y_ini
425  );
426 
428  struct perturbations * ppt,
429  struct primordial * ppm,
430  struct precision * ppr,
431  double * y_ini,
432  int index_k
433  );
434 
436  struct primordial * ppm,
437  struct precision * ppr,
438  double k,
439  double * y,
440  double * dy,
441  double * curvature,
442  double * tensor
443  );
444 
446  struct primordial * ppm,
447  struct precision * ppr,
448  double phi_0,
449  double precision,
450  double * y,
451  double * dy,
452  double * H_0,
453  double * dphidt_0
454  );
455 
457  struct primordial * ppm,
458  struct precision * ppr,
459  double * y,
460  double * dy,
461  enum target_quantity target,
462  double stop,
463  short check_epsilon,
464  enum integration_direction direction,
465  enum time_definition time
466  );
467 
469  struct primordial * ppm,
470  double phi,
471  double * V,
472  double * dV,
473  double * ddV
474  );
475 
477  struct primordial * ppm,
478  double phi,
479  double *H,
480  double * dH,
481  double * ddH,
482  double * dddH
483  );
484 
486  struct primordial * ppm,
487  double phi,
488  double * epsilon
489  );
490 
492  struct primordial * ppm,
493  struct precision * ppr,
494  double * y,
495  double * dy
496  );
497 
499  double tau,
500  double * y,
501  double * dy,
502  void * parameters_and_workspace,
503  ErrorMsg error_message
504  );
505 
507  struct perturbations * ppt,
508  struct primordial * ppm
509  );
510 
511  int primordial_output_titles(struct perturbations * ppt,
512  struct primordial * ppm,
513  char titles[_MAXTITLESTRINGLENGTH_]
514  );
515 
516  int primordial_output_data(struct perturbations * ppt,
517  struct primordial * ppm,
518  int number_of_titles,
519  double *data);
520 #ifdef __cplusplus
521 }
522 #endif
523 
524 /**************************************************************/
525 
531 
532 #define _K_PER_DECADE_PRIMORDIAL_MIN_ 1.
533 
535 
536 #endif
537 /* @endcond */
Definition: common.h:406
Definition: perturbations.h:98
int primordial_inflation_solve_inflation(struct perturbations *ppt, struct primordial *ppm, struct precision *ppr)
Definition: primordial.c:1139
int primordial_indices(struct perturbations *ppt, struct primordial *ppm)
Definition: primordial.c:610
int primordial_free(struct primordial *ppm)
Definition: primordial.c:559
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:1894
int primordial_analytic_spectrum_init(struct perturbations *ppt, struct primordial *ppm)
Definition: primordial.c:700
int primordial_inflation_one_k(struct primordial *ppm, struct precision *ppr, double k, double *y, double *dy, double *curvature, double *tensor)
Definition: primordial.c:1731
int primordial_inflation_check_potential(struct primordial *ppm, double phi, double *V, double *dV, double *ddV)
Definition: primordial.c:2358
int primordial_inflation_check_hubble(struct primordial *ppm, double phi, double *H, double *dH, double *ddH, double *dddH)
Definition: primordial.c:2400
int primordial_get_lnk_list(struct primordial *ppm, double kmin, double kmax, double k_per_decade)
Definition: primordial.c:665
int primordial_inflation_find_phi_pivot(struct primordial *ppm, struct precision *ppr, double *y, double *dy)
Definition: primordial.c:2491
int primordial_inflation_one_wavenumber(struct perturbations *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini, int index_k)
Definition: primordial.c:1642
int primordial_inflation_hubble(struct primordial *ppm, double phi, double *H, double *dH, double *ddH, double *dddH)
Definition: primordial.c:1058
int primordial_spectrum_at_k(struct primordial *ppm, int index_md, enum linear_or_logarithmic mode, double input, double *output)
Definition: primordial.c:53
int primordial_external_spectrum_init(struct perturbations *ppt, struct primordial *ppm)
Definition: primordial.c:3223
int primordial_inflation_indices(struct primordial *ppm)
Definition: primordial.c:1082
int primordial_inflation_analytic_spectra(struct perturbations *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini)
Definition: primordial.c:1522
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:2031
int primordial_analytic_spectrum(struct primordial *ppm, int index_md, int index_ic1_ic2, double k, double *pk)
Definition: primordial.c:940
int primordial_inflation_get_epsilon(struct primordial *ppm, double phi, double *epsilon)
Definition: primordial.c:2438
int primordial_inflation_spectra(struct perturbations *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini)
Definition: primordial.c:1598
int primordial_init(struct precision *ppr, struct perturbations *ppt, struct primordial *ppm)
Definition: primordial.c:187
int primordial_inflation_potential(struct primordial *ppm, double phi, double *V, double *dV, double *ddV)
Definition: primordial.c:973
int primordial_inflation_derivs(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: primordial.c:3017
target_quantity
Definition: primordial.h:36
int * ic_ic_size
Definition: primordial.h:211
double n_bi
Definition: primordial.h:105
enum primordial_spectrum_type primordial_spec_type
Definition: primordial.h:91
double ** ddlnpk
Definition: primordial.h:231
double alpha_cdi
Definition: primordial.h:110
double custom2
Definition: primordial.h:191
enum phi_pivot_methods phi_pivot_method
Definition: primordial.h:181
double alpha_bi
Definition: primordial.h:106
int in_size
Definition: primordial.h:275
double ** tilt
Definition: primordial.h:253
double c_ad_niv
Definition: primordial.h:132
int index_in_ksi_re
Definition: primordial.h:266
double custom9
Definition: primordial.h:198
double alpha_bi_cdi
Definition: primordial.h:138
double phi_pivot
Definition: primordial.h:283
double alpha_nid_niv
Definition: primordial.h:158
int index_in_dksi_re
Definition: primordial.h:268
double f_nid
Definition: primordial.h:112
double custom7
Definition: primordial.h:196
double c_ad_bi
Definition: primordial.h:120
double n_s
Definition: primordial.h:96
double alpha_t
Definition: primordial.h:102
double alpha_s
Definition: primordial.h:97
double f_bi
Definition: primordial.h:104
int index_in_a
Definition: primordial.h:263
double H3
Definition: primordial.h:175
double alpha_ad_niv
Definition: primordial.h:134
char * command
Definition: primordial.h:189
double c_nid_niv
Definition: primordial.h:156
double n_ad_cdi
Definition: primordial.h:125
double f_niv
Definition: primordial.h:116
double c_cdi_nid
Definition: primordial.h:148
double H1
Definition: primordial.h:173
enum potential_shape potential
Definition: primordial.h:162
double V3
Definition: primordial.h:167
double custom8
Definition: primordial.h:197
int index_in_ksi_im
Definition: primordial.h:267
double n_ad_nid
Definition: primordial.h:129
double alpha_ad_cdi
Definition: primordial.h:126
double n_nid_niv
Definition: primordial.h:157
double c_bi_nid
Definition: primordial.h:140
int in_bg_size
Definition: primordial.h:274
double phi_stop
Definition: primordial.h:289
inflation_module_behavior
Definition: primordial.h:67
int index_in_dah_im
Definition: primordial.h:273
double custom4
Definition: primordial.h:193
double H4
Definition: primordial.h:176
int index_in_dksi_im
Definition: primordial.h:269
time_definition
Definition: primordial.h:52
double n_ad_niv
Definition: primordial.h:133
double n_cdi
Definition: primordial.h:109
primordial_spectrum_type
Definition: primordial.h:10
int index_in_phi
Definition: primordial.h:264
double c_ad_nid
Definition: primordial.h:128
int index_in_dah_re
Definition: primordial.h:272
double n_bi_nid
Definition: primordial.h:141
short is_allocated
Definition: primordial.h:303
double ** amplitude
Definition: primordial.h:252
double k_max_for_primordial_pk
Definition: primordial.h:89
double V0
Definition: primordial.h:164
double k_pivot
Definition: primordial.h:87
short ** is_non_zero
Definition: primordial.h:241
double A_s
Definition: primordial.h:95
double alpha_nid
Definition: primordial.h:114
double c_ad_cdi
Definition: primordial.h:124
double n_ad_bi
Definition: primordial.h:121
double n_cdi_niv
Definition: primordial.h:153
double phi_max
Definition: primordial.h:288
double f_cdi
Definition: primordial.h:108
double custom1
Definition: primordial.h:190
int index_in_dphi
Definition: primordial.h:265
double V1
Definition: primordial.h:165
int * ic_size
Definition: primordial.h:209
double V2
Definition: primordial.h:166
double n_t
Definition: primordial.h:101
enum inflation_module_behavior behavior
Definition: primordial.h:185
double H0
Definition: primordial.h:172
double c_cdi_niv
Definition: primordial.h:152
ErrorMsg error_message
Definition: primordial.h:301
int index_in_ah_re
Definition: primordial.h:270
potential_shape
Definition: primordial.h:28
double ** lnpk
Definition: primordial.h:217
double alpha_cdi_niv
Definition: primordial.h:154
short primordial_verbose
Definition: primordial.h:297
double c_bi_niv
Definition: primordial.h:144
double phi_min
Definition: primordial.h:287
double beta_s
Definition: primordial.h:98
double custom3
Definition: primordial.h:192
double r
Definition: primordial.h:100
double c_bi_cdi
Definition: primordial.h:136
double alpha_cdi_nid
Definition: primordial.h:150
int index_in_ah_im
Definition: primordial.h:271
phi_pivot_methods
Definition: primordial.h:59
double ** running
Definition: primordial.h:254
double alpha_niv
Definition: primordial.h:118
double alpha_ad_bi
Definition: primordial.h:122
double n_bi_niv
Definition: primordial.h:145
int md_size
Definition: primordial.h:207
double phi_pivot_target
Definition: primordial.h:182
double n_cdi_nid
Definition: primordial.h:149
double alpha_bi_niv
Definition: primordial.h:146
double V4
Definition: primordial.h:168
double phi_end
Definition: primordial.h:180
double custom5
Definition: primordial.h:194
double n_bi_cdi
Definition: primordial.h:137
double alpha_ad_nid
Definition: primordial.h:130
double * lnk
Definition: primordial.h:215
double n_nid
Definition: primordial.h:113
linear_or_logarithmic
Definition: primordial.h:21
double custom10
Definition: primordial.h:199
int lnk_size
Definition: primordial.h:213
integration_direction
Definition: primordial.h:45
double alpha_bi_nid
Definition: primordial.h:142
double custom6
Definition: primordial.h:195
double H2
Definition: primordial.h:174
double n_niv
Definition: primordial.h:117
Definition: primordial.h:79