CLASS MANUAL
harmonic.h
Go to the documentation of this file.
1 
3 #ifndef __HARMONIC__
4 #define __HARMONIC__
5 
6 #include "transfer.h"
7 
17 struct harmonic {
18 
25 
26  int non_diag;
33 
37 
38  int md_size;
41  int * ic_size;
42  int * ic_ic_size;
43  short ** is_non_zero;
46 
50 
51  int has_tt;
52  int has_ee;
53  int has_te;
54  int has_bb;
55  int has_pp;
56  int has_tp;
57  int has_ep;
58  int has_dd;
59  int has_td;
60  int has_pd;
61  int has_ll;
62  int has_tl;
63  int has_dl;
79  int d_size;
81  int ct_size;
84 
88 
89  int * l_size;
91  int l_size_max;
93  double * l;
96  int ** l_max_ct;
102  int * l_max;
108  int l_max_tot;
114  double ** cl;
115  double ** ddcl;
118 
122 
123  struct fourier * pfo;
135  ErrorMsg error_message;
138 };
139 
140 /*************************************************************************************************************/
141 /* @cond INCLUDE_WITH_DOXYGEN */
142 /*
143  * Boilerplate for C++
144  */
145 #ifdef __cplusplus
146 extern "C" {
147 #endif
148 
149  /* external functions (meant to be called from other modules) */
150 
151  int harmonic_cl_at_l(
152  struct harmonic * phr,
153  double l,
154  double * cl,
155  double ** cl_md,
156  double ** cl_md_ic
157  );
158 
159  /* internal functions */
160 
161  int harmonic_init(
162  struct precision * ppr,
163  struct background * pba,
164  struct perturbations * ppt,
165  struct primordial * ppm,
166  struct fourier *pfo,
167  struct transfer * ptr,
168  struct harmonic * phr
169  );
170 
171  int harmonic_free(
172  struct harmonic * phr
173  );
174 
175  int harmonic_indices(
176  struct background * pba,
177  struct perturbations * ppt,
178  struct transfer * ptr,
179  struct primordial * ppm,
180  struct harmonic * phr
181  );
182 
183  int harmonic_cls(
184  struct background * pba,
185  struct perturbations * ppt,
186  struct transfer * ptr,
187  struct primordial * ppm,
188  struct harmonic * phr
189  );
190 
192  struct background * pba,
193  struct perturbations * ppt,
194  struct transfer * ptr,
195  struct primordial * ppm,
196  struct harmonic * phr,
197  int index_md,
198  int index_ic1,
199  int index_ic2,
200  int index_l,
201  int cl_integrand_num_columns,
202  double * cl_integrand,
203  double * primordial_pk,
204  double * transfer_ic1,
205  double * transfer_ic2
206  );
207 
208  int harmonic_k_and_tau(
209  struct background * pba,
210  struct perturbations * ppt,
211  struct fourier *pfo,
212  struct harmonic * phr
213  );
214 
215  /* deprecated functions (since v2.8) */
216 
217  int harmonic_pk_at_z(
218  struct background * pba,
219  struct harmonic * phr,
220  enum linear_or_logarithmic mode,
221  double z,
222  double * output_tot,
223  double * output_ic,
224  double * output_cb_tot,
225  double * output_cb_ic
226  );
227 
229  struct background * pba,
230  struct primordial * ppm,
231  struct harmonic * phr,
232  double k,
233  double z,
234  double * pk,
235  double * pk_ic,
236  double * pk_cb,
237  double * pk_cb_ic
238  );
239 
241  struct background * pba,
242  struct harmonic * phr,
243  enum linear_or_logarithmic mode,
244  double z,
245  double * output_tot,
246  double * output_cb_tot
247  );
248 
250  struct background * pba,
251  struct primordial * ppm,
252  struct harmonic * phr,
253  double k,
254  double z,
255  double * pk_tot,
256  double * pk_cb_tot
257  );
258 
260  struct background * pba,
261  struct harmonic * phr,
262  double * kvec,
263  int kvec_size,
264  double * zvec,
265  int zvec_size,
266  double * pk_tot_out,
267  double * pk_cb_tot_out,
268  int nonlinear);
269 
270  int harmonic_sigma(
271  struct background * pba,
272  struct primordial * ppm,
273  struct harmonic * phr,
274  double R,
275  double z,
276  double *sigma
277  );
278 
279  int harmonic_sigma_cb(
280  struct background * pba,
281  struct primordial * ppm,
282  struct harmonic * phr,
283  double R,
284  double z,
285  double *sigma_cb
286  );
287 
288  /* deprecated functions (since v2.1) */
289 
290  int harmonic_tk_at_z(
291  struct background * pba,
292  struct harmonic * phr,
293  double z,
294  double * output
295  );
296 
298  struct background * pba,
299  struct harmonic * phr,
300  double k,
301  double z,
302  double * output
303  );
304 
305  /* end deprecated functions */
306 
307 #ifdef __cplusplus
308 }
309 #endif
310 
311 #endif
312 /* @endcond */
Definition: background.h:48
Definition: common.h:378
double * k
Definition: fourier.h:98
Definition: fourier.h:33
int harmonic_cl_at_l(struct harmonic *phr, double l, double *cl_tot, double **cl_md, double **cl_md_ic)
Definition: harmonic.c:37
int harmonic_init(struct precision *ppr, struct background *pba, struct perturbations *ppt, struct primordial *ppm, struct fourier *pfo, struct transfer *ptr, struct harmonic *phr)
Definition: harmonic.c:262
int harmonic_cls(struct background *pba, struct perturbations *ppt, struct transfer *ptr, struct primordial *ppm, struct harmonic *phr)
Definition: harmonic.c:662
int harmonic_pk_at_k_and_z(struct background *pba, struct primordial *ppm, struct harmonic *phr, double k, double z, double *pk_tot, double *pk_ic, double *pk_cb_tot, double *pk_cb_ic)
Definition: harmonic.c:1345
int harmonic_pk_nl_at_z(struct background *pba, struct harmonic *phr, enum linear_or_logarithmic mode, double z, double *output_tot, double *output_cb_tot)
Definition: harmonic.c:1390
int harmonic_fast_pk_at_kvec_and_zvec(struct background *pba, struct harmonic *phr, double *kvec, int kvec_size, double *zvec, int zvec_size, double *pk_tot_out, double *pk_cb_tot_out, int nonlinear)
Definition: harmonic.c:1482
int harmonic_compute_cl(struct background *pba, struct perturbations *ppt, struct transfer *ptr, struct primordial *ppm, struct harmonic *phr, int index_md, int index_ic1, int index_ic2, int index_l, int cl_integrand_num_columns, double *cl_integrand, double *primordial_pk, double *transfer_ic1, double *transfer_ic2)
Definition: harmonic.c:870
int harmonic_sigma(struct background *pba, struct primordial *ppm, struct harmonic *phr, double R, double z, double *sigma)
Definition: harmonic.c:1535
int harmonic_tk_at_k_and_z(struct background *pba, struct harmonic *phr, double k, double z, double *output)
Definition: harmonic.c:1645
int harmonic_pk_nl_at_k_and_z(struct background *pba, struct primordial *ppm, struct harmonic *phr, double k, double z, double *pk_tot, double *pk_cb_tot)
Definition: harmonic.c:1433
int harmonic_tk_at_z(struct background *pba, struct harmonic *phr, double z, double *output)
Definition: harmonic.c:1618
int harmonic_sigma_cb(struct background *pba, struct primordial *ppm, struct harmonic *phr, double R, double z, double *sigma_cb)
Definition: harmonic.c:1578
int harmonic_pk_at_z(struct background *pba, struct harmonic *phr, enum linear_or_logarithmic mode, double z, double *output_tot, double *output_ic, double *output_cb_tot, double *output_cb_ic)
Definition: harmonic.c:1297
int harmonic_indices(struct background *pba, struct perturbations *ppt, struct transfer *ptr, struct primordial *ppm, struct harmonic *phr)
Definition: harmonic.c:376
int harmonic_free(struct harmonic *phr)
Definition: harmonic.c:330
int index_ct_ep
Definition: harmonic.h:71
int * l_max
Definition: harmonic.h:102
int index_ct_ll
Definition: harmonic.h:75
short ** is_non_zero
Definition: harmonic.h:43
int * ic_size
Definition: harmonic.h:41
double * l
Definition: harmonic.h:93
int index_ct_dl
Definition: harmonic.h:77
double ** ddcl
Definition: harmonic.h:115
int ct_size
Definition: harmonic.h:81
int index_ct_tl
Definition: harmonic.h:76
int has_ep
Definition: harmonic.h:57
int index_ct_bb
Definition: harmonic.h:68
int index_ct_pp
Definition: harmonic.h:69
int has_pd
Definition: harmonic.h:60
int index_ct_td
Definition: harmonic.h:73
short harmonic_verbose
Definition: harmonic.h:133
int has_te
Definition: harmonic.h:53
int has_pp
Definition: harmonic.h:55
int has_tp
Definition: harmonic.h:56
int d_size
Definition: harmonic.h:79
int non_diag
Definition: harmonic.h:26
int has_bb
Definition: harmonic.h:54
struct fourier * pfo
Definition: harmonic.h:123
int l_max_tot
Definition: harmonic.h:108
int ** l_max_ct
Definition: harmonic.h:96
double ** cl
Definition: harmonic.h:114
int index_ct_pd
Definition: harmonic.h:74
int index_ct_dd
Definition: harmonic.h:72
int index_md_scalars
Definition: harmonic.h:39
int index_ct_te
Definition: harmonic.h:67
int has_td
Definition: harmonic.h:59
int index_ct_tp
Definition: harmonic.h:70
int index_ct_tt
Definition: harmonic.h:65
ErrorMsg error_message
Definition: harmonic.h:135
int has_dl
Definition: harmonic.h:63
int l_size_max
Definition: harmonic.h:91
int has_dd
Definition: harmonic.h:58
int * l_size
Definition: harmonic.h:89
int has_ll
Definition: harmonic.h:61
int has_tt
Definition: harmonic.h:51
int md_size
Definition: harmonic.h:38
int index_ct_ee
Definition: harmonic.h:66
int has_tl
Definition: harmonic.h:62
int * ic_ic_size
Definition: harmonic.h:42
int has_ee
Definition: harmonic.h:52
Definition: harmonic.h:17
Definition: output.h:23
Definition: perturbations.h:98
linear_or_logarithmic
Definition: primordial.h:21
Definition: primordial.h:79
Definition: transfer.h:76