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 };
304 
305 struct primordial_inflation_parameters_and_workspace {
306 
307  struct primordial * ppm;
308  double N;
309  double a2;
310 
311  double V;
312  double dV;
313  double ddV;
314  double aH;
315 
316  double H;
317  double dH;
318  double ddH;
319  double dddH;
320 
321  double zpp_over_z;
322  double app_over_a;
323 
324  double k;
325 
326  enum integration_direction integrate;
327  enum time_definition time;
328 
329 };
330 
331 
332 /*************************************************************************************************************/
333 /* @cond INCLUDE_WITH_DOXYGEN */
334 /*
335  * Boilerplate for C++
336  */
337 #ifdef __cplusplus
338 extern "C" {
339 #endif
340 
342  struct primordial * ppm,
343  int index_md,
344  enum linear_or_logarithmic mode,
345  double k,
346  double * pk
347  );
348 
349  int primordial_init(
350  struct precision * ppr,
351  struct perturbations * ppt,
352  struct primordial * ppm
353  );
354 
355  int primordial_free(
356  struct primordial * ppm
357  );
358 
359  int primordial_indices(
360  struct perturbations * ppt,
361  struct primordial * ppm
362  );
363 
365  struct primordial * ppm,
366  double kmin,
367  double kmax,
368  double k_per_decade
369  );
370 
372  struct perturbations * ppt,
373  struct primordial * ppm
374  );
375 
377  struct primordial * ppm,
378  int index_md,
379  int index_ic1_ic2,
380  double k,
381  double * pk
382  );
383 
385  struct primordial * ppm,
386  double phi,
387  double * V,
388  double * dV,
389  double * ddV
390  );
391 
393  struct primordial * ppm,
394  double phi,
395  double * H,
396  double * dH,
397  double * ddH,
398  double * dddH
399  );
400 
402  struct primordial * ppm
403  );
404 
406  struct perturbations * ppt,
407  struct primordial * ppm,
408  struct precision * ppr
409  );
410 
412  struct perturbations * ppt,
413  struct primordial * ppm,
414  struct precision * ppr,
415  double * y_ini
416  );
417 
419  struct perturbations * ppt,
420  struct primordial * ppm,
421  struct precision * ppr,
422  double * y_ini
423  );
424 
426  struct perturbations * ppt,
427  struct primordial * ppm,
428  struct precision * ppr,
429  double * y_ini,
430  int index_k
431  );
432 
434  struct primordial * ppm,
435  struct precision * ppr,
436  double k,
437  double * y,
438  double * dy,
439  double * curvature,
440  double * tensor
441  );
442 
444  struct primordial * ppm,
445  struct precision * ppr,
446  double phi_0,
447  double precision,
448  double * y,
449  double * dy,
450  double * H_0,
451  double * dphidt_0
452  );
453 
455  struct primordial * ppm,
456  struct precision * ppr,
457  double * y,
458  double * dy,
459  enum target_quantity target,
460  double stop,
461  short check_epsilon,
462  enum integration_direction direction,
463  enum time_definition time
464  );
465 
467  struct primordial * ppm,
468  double phi,
469  double * V,
470  double * dV,
471  double * ddV
472  );
473 
475  struct primordial * ppm,
476  double phi,
477  double *H,
478  double * dH,
479  double * ddH,
480  double * dddH
481  );
482 
484  struct primordial * ppm,
485  double phi,
486  double * epsilon
487  );
488 
490  struct primordial * ppm,
491  struct precision * ppr,
492  double * y,
493  double * dy
494  );
495 
497  double tau,
498  double * y,
499  double * dy,
500  void * parameters_and_workspace,
501  ErrorMsg error_message
502  );
503 
505  struct perturbations * ppt,
506  struct primordial * ppm
507  );
508 
509  int primordial_output_titles(struct perturbations * ppt,
510  struct primordial * ppm,
511  char titles[_MAXTITLESTRINGLENGTH_]
512  );
513 
514  int primordial_output_data(struct perturbations * ppt,
515  struct primordial * ppm,
516  int number_of_titles,
517  double *data);
518 #ifdef __cplusplus
519 }
520 #endif
521 
522 /**************************************************************/
523 
529 
530 #define _K_PER_DECADE_PRIMORDIAL_MIN_ 1.
531 
533 
534 #endif
535 /* @endcond */
Definition: common.h:378
Definition: perturbations.h:98
int primordial_inflation_solve_inflation(struct perturbations *ppt, struct primordial *ppm, struct precision *ppr)
Definition: primordial.c:1134
int primordial_indices(struct perturbations *ppt, struct primordial *ppm)
Definition: primordial.c:605
int primordial_free(struct primordial *ppm)
Definition: primordial.c:556
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:1942
int primordial_analytic_spectrum_init(struct perturbations *ppt, struct primordial *ppm)
Definition: primordial.c:695
int primordial_inflation_one_k(struct primordial *ppm, struct precision *ppr, double k, double *y, double *dy, double *curvature, double *tensor)
Definition: primordial.c:1779
int primordial_inflation_check_potential(struct primordial *ppm, double phi, double *V, double *dV, double *ddV)
Definition: primordial.c:2406
int primordial_inflation_check_hubble(struct primordial *ppm, double phi, double *H, double *dH, double *ddH, double *dddH)
Definition: primordial.c:2448
int primordial_get_lnk_list(struct primordial *ppm, double kmin, double kmax, double k_per_decade)
Definition: primordial.c:660
int primordial_inflation_find_phi_pivot(struct primordial *ppm, struct precision *ppr, double *y, double *dy)
Definition: primordial.c:2539
int primordial_inflation_one_wavenumber(struct perturbations *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini, int index_k)
Definition: primordial.c:1690
int primordial_inflation_hubble(struct primordial *ppm, double phi, double *H, double *dH, double *ddH, double *dddH)
Definition: primordial.c:1053
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_external_spectrum_init(struct perturbations *ppt, struct primordial *ppm)
Definition: primordial.c:3271
int primordial_inflation_indices(struct primordial *ppm)
Definition: primordial.c:1077
int primordial_inflation_analytic_spectra(struct perturbations *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini)
Definition: primordial.c:1517
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:2079
int primordial_analytic_spectrum(struct primordial *ppm, int index_md, int index_ic1_ic2, double k, double *pk)
Definition: primordial.c:935
int primordial_inflation_get_epsilon(struct primordial *ppm, double phi, double *epsilon)
Definition: primordial.c:2486
int primordial_inflation_spectra(struct perturbations *ppt, struct primordial *ppm, struct precision *ppr, double *y_ini)
Definition: primordial.c:1593
int primordial_init(struct precision *ppr, struct perturbations *ppt, struct primordial *ppm)
Definition: primordial.c:186
int primordial_inflation_potential(struct primordial *ppm, double phi, double *V, double *dV, double *ddV)
Definition: primordial.c:968
int primordial_inflation_derivs(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: primordial.c:3065
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
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