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;
137  short is_allocated;
140 };
141 
142 /*************************************************************************************************************/
143 /* @cond INCLUDE_WITH_DOXYGEN */
144 /*
145  * Boilerplate for C++
146  */
147 #ifdef __cplusplus
148 extern "C" {
149 #endif
150 
151  /* external functions (meant to be called from other modules) */
152 
153  int harmonic_cl_at_l(
154  struct harmonic * phr,
155  double l,
156  double * cl,
157  double ** cl_md,
158  double ** cl_md_ic
159  );
160 
161  /* internal functions */
162 
163  int harmonic_init(
164  struct precision * ppr,
165  struct background * pba,
166  struct perturbations * ppt,
167  struct primordial * ppm,
168  struct fourier *pfo,
169  struct transfer * ptr,
170  struct harmonic * phr
171  );
172 
173  int harmonic_free(
174  struct harmonic * phr
175  );
176 
177  int harmonic_indices(
178  struct background * pba,
179  struct perturbations * ppt,
180  struct transfer * ptr,
181  struct primordial * ppm,
182  struct harmonic * phr
183  );
184 
185  int harmonic_cls(
186  struct precision * ppr,
187  struct background * pba,
188  struct perturbations * ppt,
189  struct transfer * ptr,
190  struct primordial * ppm,
191  struct harmonic * phr
192  );
193 
195  struct precision * ppr,
196  struct background * pba,
197  struct perturbations * ppt,
198  struct transfer * ptr,
199  struct primordial * ppm,
200  struct harmonic * phr,
201  int index_md,
202  int index_ic1,
203  int index_ic2,
204  int index_l,
205  int cl_integrand_num_columns,
206  double * cl_integrand,
207  double * cl_integrand_limber,
208  double * primordial_pk,
209  double * transfer_ic1,
210  double * transfer_ic2
211  );
212 
213  int harmonic_k_and_tau(
214  struct background * pba,
215  struct perturbations * ppt,
216  struct fourier *pfo,
217  struct harmonic * phr
218  );
219 
220  /* deprecated functions (since v2.8) */
221 
222  int harmonic_pk_at_z(
223  struct background * pba,
224  struct harmonic * phr,
225  enum linear_or_logarithmic mode,
226  double z,
227  double * output_tot,
228  double * output_ic,
229  double * output_cb_tot,
230  double * output_cb_ic
231  );
232 
234  struct background * pba,
235  struct primordial * ppm,
236  struct harmonic * phr,
237  double k,
238  double z,
239  double * pk,
240  double * pk_ic,
241  double * pk_cb,
242  double * pk_cb_ic
243  );
244 
246  struct background * pba,
247  struct harmonic * phr,
248  enum linear_or_logarithmic mode,
249  double z,
250  double * output_tot,
251  double * output_cb_tot
252  );
253 
255  struct background * pba,
256  struct primordial * ppm,
257  struct harmonic * phr,
258  double k,
259  double z,
260  double * pk_tot,
261  double * pk_cb_tot
262  );
263 
265  struct background * pba,
266  struct harmonic * phr,
267  double * kvec,
268  int kvec_size,
269  double * zvec,
270  int zvec_size,
271  double * pk_tot_out,
272  double * pk_cb_tot_out,
273  int nonlinear);
274 
275  int harmonic_sigma(
276  struct background * pba,
277  struct primordial * ppm,
278  struct harmonic * phr,
279  double R,
280  double z,
281  double *sigma
282  );
283 
284  int harmonic_sigma_cb(
285  struct background * pba,
286  struct primordial * ppm,
287  struct harmonic * phr,
288  double R,
289  double z,
290  double *sigma_cb
291  );
292 
293  /* deprecated functions (since v2.1) */
294 
295  int harmonic_tk_at_z(
296  struct background * pba,
297  struct harmonic * phr,
298  double z,
299  double * output
300  );
301 
303  struct background * pba,
304  struct harmonic * phr,
305  double k,
306  double z,
307  double * output
308  );
309 
310  /* end deprecated functions */
311 
312 #ifdef __cplusplus
313 }
314 #endif
315 
316 #endif
317 /* @endcond */
Definition: common.h:406
double * k
Definition: fourier.h:118
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_compute_cl(struct precision *ppr, 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 *cl_integrand_limber, double *primordial_pk, double *transfer_ic1, double *transfer_ic2)
Definition: harmonic.c:854
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:1416
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:1461
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:1553
int harmonic_sigma(struct background *pba, struct primordial *ppm, struct harmonic *phr, double R, double z, double *sigma)
Definition: harmonic.c:1606
int harmonic_tk_at_k_and_z(struct background *pba, struct harmonic *phr, double k, double z, double *output)
Definition: harmonic.c:1716
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:1504
int harmonic_cls(struct precision *ppr, struct background *pba, struct perturbations *ppt, struct transfer *ptr, struct primordial *ppm, struct harmonic *phr)
Definition: harmonic.c:665
int harmonic_tk_at_z(struct background *pba, struct harmonic *phr, double z, double *output)
Definition: harmonic.c:1689
int harmonic_sigma_cb(struct background *pba, struct primordial *ppm, struct harmonic *phr, double R, double z, double *sigma_cb)
Definition: harmonic.c:1649
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:1368
int harmonic_indices(struct background *pba, struct perturbations *ppt, struct transfer *ptr, struct primordial *ppm, struct harmonic *phr)
Definition: harmonic.c:378
int harmonic_free(struct harmonic *phr)
Definition: harmonic.c:331
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
short is_allocated
Definition: harmonic.h:137
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: background.h:44
Definition: transfer.h:74