Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
ccl_test_cls.c
Go to the documentation of this file.
1 #include "ccl.h"
2 #include "../include/ccl_params.h"
3 #include "ctest.h"
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <math.h>
7 #include <string.h>
8 
9 #define SZ_VAL 0.4 //This will cancel the magnification contribution
10 #define CLS_TOLERANCE 1E-3
11 #define ELS_TOLERANCE 0.1
12 #define NELLS 3001
13 
14 CTEST_DATA(cls) {
15  double Omega_c;
16  double Omega_b;
17  double h;
18  double A_s;
19  double n_s;
20  double sigma8;
21 };
22 
24  data->Omega_c = 0.30;
25  data->Omega_b = 0.00;
26  data->h = 0.7;
27  data->A_s = 2.1e-9;
28  data->sigma8=0.8;
29  data->n_s = 0.96;
30 }
31 
32 static int linecount(FILE *f)
33 {
35  // Counts #lines from file
36  int i0=0;
37  char ch[1000];
38  while((fgets(ch,sizeof(ch),f))!=NULL) {
39  i0++;
40  }
41  return i0;
42 }
43 
44 static void compare_cls(char *compare_type,struct cls_data * data)
45 {
46  int status=0;
47  double zlss=1100.;
48 
53  data->A_s,data->n_s, &status);
54  params.Omega_n_rel=0;
55  params.Omega_l = 0.7;
56  params.sigma8=data->sigma8;
57  ccl_cosmology * cosmo = ccl_cosmology_create(params, config);
58  ASSERT_NOT_NULL(cosmo);
59 
60  double epsrel_save;
61  if(!strcmp(compare_type,"histo")) { //This is needed for the histogrammed N(z) in order to pass the IA tests
66  }
67 
68  int nz;
69  double *zarr_1,*pzarr_1,*zarr_2,*pzarr_2,*bzarr,*az1arr,*rz1arr,*az2arr,*rz2arr;
70  if(!strcmp(compare_type,"analytic")) {
71  char str[1024];
72  char* rtn;
73  int stat;
74  FILE *ampz1=fopen("./tests/benchmark/codecomp_step2_outputs/cclamparranalytic1nz512nb.txt","r");
75  ASSERT_NOT_NULL(ampz1);
76  FILE *ampz2=fopen("./tests/benchmark/codecomp_step2_outputs/cclamparranalytic2nz512nb.txt","r");
77  ASSERT_NOT_NULL(ampz2);
78  //Create arrays for N(z)
79  double zmean_1=1.0,sigz_1=0.15;
80  double zmean_2=1.5,sigz_2=0.15;
81  nz=512;
82  zarr_1=malloc(nz*sizeof(double));
83  pzarr_1=malloc(nz*sizeof(double));
84  zarr_2=malloc(nz*sizeof(double));
85  pzarr_2=malloc(nz*sizeof(double));
86  bzarr=malloc(nz*sizeof(double));
87  az1arr=malloc(nz*sizeof(double));
88  rz1arr=malloc(nz*sizeof(double));
89  az2arr=malloc(nz*sizeof(double));
90  rz2arr=malloc(nz*sizeof(double));
91  for(int ii=0;ii<nz;ii++) {
92  double zia1,zia2,aia1,aia2;
93  stat = fscanf(ampz1,"%lf %lf",&zia1,&aia1);
94  stat = fscanf(ampz2,"%lf %lf",&zia2,&aia2);
95  az1arr[ii]=aia1;
96  rz1arr[ii]=1.;
97  az2arr[ii]=aia2;
98  rz2arr[ii]=1.;
99  double z1=zmean_1-5*sigz_1+10*sigz_1*(ii+0.5)/nz;
100  double z2=zmean_2-5*sigz_2+10*sigz_2*(ii+0.5)/nz;
101  double pz1=exp(-0.5*((z1-zmean_1)*(z1-zmean_1)/(sigz_1*sigz_1)));
102  double pz2=exp(-0.5*((z2-zmean_2)*(z2-zmean_2)/(sigz_2*sigz_2)));
103  zarr_1[ii]=z1;
104  zarr_2[ii]=z2;
105  pzarr_1[ii]=pz1;
106  pzarr_2[ii]=pz2;
107  bzarr[ii]=1.;
108  }
109  }
110  else {
111  char str[1024];
112  char* rtn;
113  int stat;
114  FILE *fnz1=fopen("./tests/benchmark/codecomp_step2_outputs/bin1_histo.txt","r");
115  ASSERT_NOT_NULL(fnz1);
116  FILE *fnz2=fopen("./tests/benchmark/codecomp_step2_outputs/bin2_histo.txt","r");
117  ASSERT_NOT_NULL(fnz2);
118  FILE *ampz1=fopen("./tests/benchmark/codecomp_step2_outputs/cclamparrhisto1nznb.txt","r");
119  ASSERT_NOT_NULL(ampz1);
120  FILE *ampz2=fopen("./tests/benchmark/codecomp_step2_outputs/cclamparrhisto2nznb.txt","r");
121  ASSERT_NOT_NULL(ampz2);
122  nz=linecount(fnz1)-1; rewind(fnz1);
123  zarr_1=malloc(nz*sizeof(double));
124  pzarr_1=malloc(nz*sizeof(double));
125  zarr_2=malloc(nz*sizeof(double));
126  pzarr_2=malloc(nz*sizeof(double));
127  bzarr=malloc(nz*sizeof(double));
128  az1arr=malloc(nz*sizeof(double));
129  rz1arr=malloc(nz*sizeof(double));
130  az2arr=malloc(nz*sizeof(double));
131  rz2arr=malloc(nz*sizeof(double));
132  rtn = fgets(str,1024,fnz1);
133  rtn = fgets(str,1024,fnz2);
134  for(int ii=0;ii<nz;ii++) {
135  double z1,z2,nz1,nz2,zia1,zia2,aia1,aia2;
136  stat = fscanf(fnz1,"%lf %lf",&z1,&nz1);
137  stat = fscanf(fnz2,"%lf %lf",&z2,&nz2);
138  stat = fscanf(ampz1,"%lf %lf",&zia1,&aia1);
139  stat = fscanf(ampz2,"%lf %lf",&zia2,&aia2);
140  zarr_1[ii]=z1; zarr_2[ii]=z2;
141  pzarr_1[ii]=nz1; pzarr_2[ii]=nz2;
142  bzarr[ii]=1.;
143  az1arr[ii]=aia1;
144  rz1arr[ii]=1.;
145  az2arr[ii]=aia2;
146  rz2arr[ii]=1.;
147  }
148  }
149 
150  char fname[256];
151  FILE *fi_dd_11,*fi_dd_12,*fi_dd_22;
152  FILE *fi_dl_12,*fi_dl_11,*fi_dl_22,*fi_dl_21;
153  FILE *fi_di_12,*fi_di_11,*fi_di_22,*fi_di_21;
154  FILE *fi_dc_1,*fi_dc_2;
155  FILE *fi_ll_11,*fi_ll_12,*fi_ll_22;
156  FILE *fi_ii_11,*fi_ii_12,*fi_ii_22;
157  FILE *fi_li_11,*fi_li_12,*fi_li_22;
158  FILE *fi_lc_1,*fi_lc_2;
159  FILE *fi_cc;
160  CCL_ClTracer *tr_nc_1=ccl_cl_tracer_number_counts_simple(cosmo,nz,zarr_1,pzarr_1,nz,zarr_1,bzarr,&status);
161  ASSERT_NOT_NULL(tr_nc_1);
162  CCL_ClTracer *tr_nc_2=ccl_cl_tracer_number_counts_simple(cosmo,nz,zarr_2,pzarr_2,nz,zarr_2,bzarr,&status);
163  ASSERT_NOT_NULL(tr_nc_2);
164  CCL_ClTracer *tr_wl_1=ccl_cl_tracer_lensing_simple(cosmo,nz,zarr_1,pzarr_1,&status);
165  ASSERT_NOT_NULL(tr_wl_1);
166  CCL_ClTracer *tr_wl_2=ccl_cl_tracer_lensing_simple(cosmo,nz,zarr_2,pzarr_2,&status);
167  ASSERT_NOT_NULL(tr_wl_2);
168  CCL_ClTracer *tr_wli_1=ccl_cl_tracer_lensing(cosmo,1,nz,zarr_1,pzarr_1,nz,zarr_1,az1arr,nz,zarr_1,rz1arr,&status);
169  ASSERT_NOT_NULL(tr_wli_1);
170  CCL_ClTracer *tr_wli_2=ccl_cl_tracer_lensing(cosmo,1,nz,zarr_2,pzarr_2,nz,zarr_2,az2arr,nz,zarr_2,rz2arr,&status);
171  ASSERT_NOT_NULL(tr_wli_2);
172  CCL_ClTracer *tr_cl=ccl_cl_tracer_cmblens(cosmo,zlss,&status);
173  ASSERT_NOT_NULL(tr_cl);
174 
175  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b1%s_log_cl_dd.txt",compare_type);
176  fi_dd_11=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dd_11);
177  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b2%s_log_cl_dd.txt",compare_type);
178  fi_dd_12=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dd_12);
179  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b2%s_log_cl_dd.txt",compare_type);
180  fi_dd_22=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dd_22);
181  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b1%s_log_cl_dc.txt",compare_type);
182  fi_dc_1=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dc_1);
183  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b2%s_log_cl_dc.txt",compare_type);
184  fi_dc_2=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dc_2);
185  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b1%s_log_cl_ll.txt",compare_type);
186  fi_ll_11=fopen(fname,"r"); ASSERT_NOT_NULL(fi_ll_11);
187  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b2%s_log_cl_ll.txt",compare_type);
188  fi_ll_12=fopen(fname,"r"); ASSERT_NOT_NULL(fi_ll_12);
189  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b2%s_log_cl_ll.txt",compare_type);
190  fi_ll_22=fopen(fname,"r"); ASSERT_NOT_NULL(fi_ll_22);
191  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b1%s_log_cl_ii.txt",compare_type);
192  fi_ii_11=fopen(fname,"r"); ASSERT_NOT_NULL(fi_ii_11);
193  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b2%s_log_cl_ii.txt",compare_type);
194  fi_ii_12=fopen(fname,"r"); ASSERT_NOT_NULL(fi_ii_12);
195  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b2%s_log_cl_ii.txt",compare_type);
196  fi_ii_22=fopen(fname,"r"); ASSERT_NOT_NULL(fi_ii_22);
197  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b1%s_log_cl_li.txt",compare_type);
198  fi_li_11=fopen(fname,"r"); ASSERT_NOT_NULL(fi_li_11);
199  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b2%s_log_cl_li.txt",compare_type);
200  fi_li_12=fopen(fname,"r"); ASSERT_NOT_NULL(fi_li_12);
201  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b2%s_log_cl_li.txt",compare_type);
202  fi_li_22=fopen(fname,"r"); ASSERT_NOT_NULL(fi_li_22);
203  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b1%s_log_cl_dl.txt",compare_type);
204  fi_dl_11=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dl_11);
205  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b2%s_log_cl_dl.txt",compare_type);
206  fi_dl_12=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dl_12);
207  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b1%s_log_cl_dl.txt",compare_type);
208  fi_dl_21=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dl_21);
209  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b2%s_log_cl_dl.txt",compare_type);
210  fi_dl_22=fopen(fname,"r"); ASSERT_NOT_NULL(fi_dl_22);
211  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b1%s_log_cl_di.txt",compare_type);
212  fi_di_11=fopen(fname,"r"); ASSERT_NOT_NULL(fi_di_11);
213  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b2%s_log_cl_di.txt",compare_type);
214  fi_di_12=fopen(fname,"r"); ASSERT_NOT_NULL(fi_di_12);
215  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b1%s_log_cl_di.txt",compare_type);
216  fi_di_21=fopen(fname,"r"); ASSERT_NOT_NULL(fi_di_21);
217  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b2%s_log_cl_di.txt",compare_type);
218  fi_di_22=fopen(fname,"r"); ASSERT_NOT_NULL(fi_di_22);
219  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b1b1%s_log_cl_lc.txt",compare_type);
220  fi_lc_1=fopen(fname,"r"); ASSERT_NOT_NULL(fi_lc_1);
221  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_b2b2%s_log_cl_lc.txt",compare_type);
222  fi_lc_2=fopen(fname,"r"); ASSERT_NOT_NULL(fi_lc_2);
223  sprintf(fname,"tests/benchmark/codecomp_step2_outputs/run_log_cl_cc.txt");
224  fi_cc=fopen(fname,"r"); ASSERT_NOT_NULL(fi_cc);
225 
226  int *ells=malloc(NELLS*sizeof(int));
227  double *cls_dd_11_b=malloc(NELLS*sizeof(double));
228  double *cls_dd_12_b=malloc(NELLS*sizeof(double));
229  double *cls_dd_22_b=malloc(NELLS*sizeof(double));
230  double *cls_dl_11_b=malloc(NELLS*sizeof(double));
231  double *cls_dl_12_b=malloc(NELLS*sizeof(double));
232  double *cls_dl_21_b=malloc(NELLS*sizeof(double));
233  double *cls_dl_22_b=malloc(NELLS*sizeof(double));
234  double *cls_di_11_b=malloc(NELLS*sizeof(double));
235  double *cls_di_12_b=malloc(NELLS*sizeof(double));
236  double *cls_di_21_b=malloc(NELLS*sizeof(double));
237  double *cls_di_22_b=malloc(NELLS*sizeof(double));
238  double *cls_dc_1_b=malloc(NELLS*sizeof(double));
239  double *cls_dc_2_b=malloc(NELLS*sizeof(double));
240  double *cls_ll_11_b=malloc(NELLS*sizeof(double));
241  double *cls_ll_12_b=malloc(NELLS*sizeof(double));
242  double *cls_ll_22_b=malloc(NELLS*sizeof(double));
243  double *cls_li_11_b=malloc(NELLS*sizeof(double));
244  double *cls_li_12_b=malloc(NELLS*sizeof(double));
245  double *cls_li_22_b=malloc(NELLS*sizeof(double));
246  double *cls_ii_11_b=malloc(NELLS*sizeof(double));
247  double *cls_ii_12_b=malloc(NELLS*sizeof(double));
248  double *cls_ii_22_b=malloc(NELLS*sizeof(double));
249  double *cls_lc_1_b=malloc(NELLS*sizeof(double));
250  double *cls_lc_2_b=malloc(NELLS*sizeof(double));
251  double *cls_cc_b=malloc(NELLS*sizeof(double));
252  double *cls_dd_11_h=malloc(NELLS*sizeof(double));
253  double *cls_dd_12_h=malloc(NELLS*sizeof(double));
254  double *cls_dd_22_h=malloc(NELLS*sizeof(double));
255  double *cls_dl_11_h=malloc(NELLS*sizeof(double));
256  double *cls_dl_12_h=malloc(NELLS*sizeof(double));
257  double *cls_dl_21_h=malloc(NELLS*sizeof(double));
258  double *cls_dl_22_h=malloc(NELLS*sizeof(double));
259  double *cls_dltot_11_h=malloc(NELLS*sizeof(double));
260  double *cls_dltot_12_h=malloc(NELLS*sizeof(double));
261  double *cls_dltot_21_h=malloc(NELLS*sizeof(double));
262  double *cls_dltot_22_h=malloc(NELLS*sizeof(double));
263  double *cls_dc_1_h=malloc(NELLS*sizeof(double));
264  double *cls_dc_2_h=malloc(NELLS*sizeof(double));
265  double *cls_ll_11_h=malloc(NELLS*sizeof(double));
266  double *cls_ll_12_h=malloc(NELLS*sizeof(double));
267  double *cls_ll_22_h=malloc(NELLS*sizeof(double));
268  double *cls_lltot_11_h=malloc(NELLS*sizeof(double));
269  double *cls_lltot_12_h=malloc(NELLS*sizeof(double));
270  double *cls_lltot_22_h=malloc(NELLS*sizeof(double));
271  double *cls_lli_11_h=malloc(NELLS*sizeof(double));
272  double *cls_lli_12_h=malloc(NELLS*sizeof(double));
273  double *cls_lli_21_h=malloc(NELLS*sizeof(double));
274  double *cls_lli_22_h=malloc(NELLS*sizeof(double));
275  double *cls_lc_1_h=malloc(NELLS*sizeof(double));
276  double *cls_lc_2_h=malloc(NELLS*sizeof(double));
277  double *cls_cc_h=malloc(NELLS*sizeof(double));
278 
279  for(int ii=0;ii<NELLS;ii++) {
280  int l,stat;
281  stat=fscanf(fi_dd_11,"%d %lf",&l,&(cls_dd_11_b[ii]));
282  if(stat!=2) {
283  fprintf(stderr,"Error reading benchmark file");
284  exit(1);
285  }
286  stat=fscanf(fi_dd_12,"%d %lf",&l,&(cls_dd_12_b[ii]));
287  if(stat!=2) {
288  fprintf(stderr,"Error reading benchmark file");
289  exit(1);
290  }
291  stat=fscanf(fi_dd_22,"%d %lf",&l,&(cls_dd_22_b[ii]));
292  if(stat!=2) {
293  fprintf(stderr,"Error reading benchmark file");
294  exit(1);
295  }
296  stat=fscanf(fi_dl_11,"%d %lf",&l,&(cls_dl_11_b[ii]));
297  if(stat!=2) {
298  fprintf(stderr,"Error reading benchmark file");
299  exit(1);
300  }
301  stat=fscanf(fi_dl_12,"%d %lf",&l,&(cls_dl_12_b[ii]));
302  if(stat!=2) {
303  fprintf(stderr,"Error reading benchmark file");
304  exit(1);
305  }
306  stat=fscanf(fi_dl_22,"%d %lf",&l,&(cls_dl_22_b[ii]));
307  if(stat!=2) {
308  fprintf(stderr,"Error reading benchmark file");
309  exit(1);
310  }
311  stat=fscanf(fi_dl_21,"%d %lf",&l,&(cls_dl_21_b[ii]));
312  if(stat!=2) {
313  fprintf(stderr,"Error reading benchmark file");
314  exit(1);
315  }
316  stat=fscanf(fi_di_11,"%d %lf",&l,&(cls_di_11_b[ii]));
317  if(stat!=2) {
318  fprintf(stderr,"Error reading benchmark file");
319  exit(1);
320  }
321  stat=fscanf(fi_di_12,"%d %lf",&l,&(cls_di_12_b[ii]));
322  if(stat!=2) {
323  fprintf(stderr,"Error reading benchmark file");
324  exit(1);
325  }
326  stat=fscanf(fi_di_22,"%d %lf",&l,&(cls_di_22_b[ii]));
327  if(stat!=2) {
328  fprintf(stderr,"Error reading benchmark file");
329  exit(1);
330  }
331  stat=fscanf(fi_di_21,"%d %lf",&l,&(cls_di_21_b[ii]));
332  if(stat!=2) {
333  fprintf(stderr,"Error reading benchmark file");
334  exit(1);
335  }
336  stat=fscanf(fi_dc_1,"%d %lf",&l,&(cls_dc_1_b[ii]));
337  if(stat!=2) {
338  fprintf(stderr,"Error reading benchmark file");
339  exit(1);
340  }
341  stat=fscanf(fi_dc_2,"%d %lf",&l,&(cls_dc_2_b[ii]));
342  if(stat!=2) {
343  fprintf(stderr,"Error reading benchmark file");
344  exit(1);
345  }
346  stat=fscanf(fi_ll_11,"%d %lf",&l,&(cls_ll_11_b[ii]));
347  if(stat!=2) {
348  fprintf(stderr,"Error reading benchmark file");
349  exit(1);
350  }
351  stat=fscanf(fi_ll_12,"%d %lf",&l,&(cls_ll_12_b[ii]));
352  if(stat!=2) {
353  fprintf(stderr,"Error reading benchmark file");
354  exit(1);
355  }
356  stat=fscanf(fi_ll_22,"%d %lf",&l,&(cls_ll_22_b[ii]));
357  if(stat!=2) {
358  fprintf(stderr,"Error reading benchmark file");
359  exit(1);
360  }
361  stat=fscanf(fi_li_11,"%d %lf",&l,&(cls_li_11_b[ii]));
362  if(stat!=2) {
363  fprintf(stderr,"Error reading benchmark file");
364  exit(1);
365  }
366  stat=fscanf(fi_li_12,"%d %lf",&l,&(cls_li_12_b[ii]));
367  if(stat!=2) {
368  fprintf(stderr,"Error reading benchmark file");
369  exit(1);
370  }
371  stat=fscanf(fi_li_22,"%d %lf",&l,&(cls_li_22_b[ii]));
372  if(stat!=2) {
373  fprintf(stderr,"Error reading benchmark file");
374  exit(1);
375  }
376  stat=fscanf(fi_ii_11,"%d %lf",&l,&(cls_ii_11_b[ii]));
377  if(stat!=2) {
378  fprintf(stderr,"Error reading benchmark file");
379  exit(1);
380  }
381  stat=fscanf(fi_ii_12,"%d %lf",&l,&(cls_ii_12_b[ii]));
382  if(stat!=2) {
383  fprintf(stderr,"Error reading benchmark file");
384  exit(1);
385  }
386  stat=fscanf(fi_ii_22,"%d %lf",&l,&(cls_ii_22_b[ii]));
387  if(stat!=2) {
388  fprintf(stderr,"Error reading benchmark file");
389  exit(1);
390  }
391  stat=fscanf(fi_lc_1,"%d %lf",&l,&(cls_lc_1_b[ii]));
392  if(stat!=2) {
393  fprintf(stderr,"Error reading benchmark file");
394  exit(1);
395  }
396  stat=fscanf(fi_lc_2,"%d %lf",&l,&(cls_lc_2_b[ii]));
397  if(stat!=2) {
398  fprintf(stderr,"Error reading benchmark file");
399  exit(1);
400  }
401  stat=fscanf(fi_cc,"%d %lf",&l,&(cls_cc_b[ii]));
402  if(stat!=2) {
403  fprintf(stderr,"Error reading benchmark file");
404  exit(1);
405  }
406  ells[ii]=l;
407  }
408 
409  fclose(fi_dd_11);
410  fclose(fi_dd_12);
411  fclose(fi_dd_22);
412  fclose(fi_dl_12);
413  fclose(fi_dl_11);
414  fclose(fi_dl_21);
415  fclose(fi_dl_22);
416  fclose(fi_di_12);
417  fclose(fi_di_11);
418  fclose(fi_di_21);
419  fclose(fi_di_22);
420  fclose(fi_dc_1);
421  fclose(fi_dc_2);
422  fclose(fi_ll_11);
423  fclose(fi_ll_12);
424  fclose(fi_ll_22);
425  fclose(fi_li_11);
426  fclose(fi_li_12);
427  fclose(fi_li_22);
428  fclose(fi_ii_11);
429  fclose(fi_ii_12);
430  fclose(fi_ii_22);
431  fclose(fi_lc_1);
432  fclose(fi_lc_2);
433  fclose(fi_cc);
434 
435  double l_logstep = 1.05;
436  double l_linstep = 5.;
437  CCL_ClWorkspace *w=ccl_cl_workspace_new_limber(NELLS,l_logstep,l_linstep,&status);
438 
439  ccl_angular_cls(cosmo,w,tr_nc_1,tr_nc_1,NELLS,ells,cls_dd_11_h,&status);
440  if (status) printf("%s\n",cosmo->status_message);
441  ccl_angular_cls(cosmo,w,tr_nc_1,tr_nc_2,NELLS,ells,cls_dd_12_h,&status);
442  if (status) printf("%s\n",cosmo->status_message);
443  ccl_angular_cls(cosmo,w,tr_nc_2,tr_nc_2,NELLS,ells,cls_dd_22_h,&status);
444  if (status) printf("%s\n",cosmo->status_message);
445  ccl_angular_cls(cosmo,w,tr_nc_1,tr_wl_1,NELLS,ells,cls_dl_11_h,&status);
446  if (status) printf("%s\n",cosmo->status_message);
447  ccl_angular_cls(cosmo,w,tr_nc_1,tr_wl_2,NELLS,ells,cls_dl_12_h,&status);
448  if (status) printf("%s\n",cosmo->status_message);
449  ccl_angular_cls(cosmo,w,tr_nc_2,tr_wl_2,NELLS,ells,cls_dl_22_h,&status);
450  if (status) printf("%s\n",cosmo->status_message);
451  ccl_angular_cls(cosmo,w,tr_nc_2,tr_wl_1,NELLS,ells,cls_dl_21_h,&status);
452  if (status) printf("%s\n",cosmo->status_message);
453  ccl_angular_cls(cosmo,w,tr_nc_1,tr_wli_1,NELLS,ells,cls_dltot_11_h,&status);
454  if (status) printf("%s\n",cosmo->status_message);
455  ccl_angular_cls(cosmo,w,tr_nc_1,tr_wli_2,NELLS,ells,cls_dltot_12_h,&status);
456  if (status) printf("%s\n",cosmo->status_message);
457  ccl_angular_cls(cosmo,w,tr_nc_2,tr_wli_1,NELLS,ells,cls_dltot_21_h,&status);
458  if (status) printf("%s\n",cosmo->status_message);
459  ccl_angular_cls(cosmo,w,tr_nc_2,tr_wli_2,NELLS,ells,cls_dltot_22_h,&status);
460  if (status) printf("%s\n",cosmo->status_message);
461  ccl_angular_cls(cosmo,w,tr_wli_1,tr_wli_1,NELLS,ells,cls_lltot_11_h,&status);
462  if (status) printf("%s\n",cosmo->status_message);
463  ccl_angular_cls(cosmo,w,tr_wli_1,tr_wli_2,NELLS,ells,cls_lltot_12_h,&status);
464  if (status) printf("%s\n",cosmo->status_message);
465  ccl_angular_cls(cosmo,w,tr_wli_2,tr_wli_2,NELLS,ells,cls_lltot_22_h,&status);
466  if (status) printf("%s\n",cosmo->status_message);
467  ccl_angular_cls(cosmo,w,tr_wl_1,tr_wli_1,NELLS,ells,cls_lli_11_h,&status);
468  if (status) printf("%s\n",cosmo->status_message);
469  ccl_angular_cls(cosmo,w,tr_wl_1,tr_wli_2,NELLS,ells,cls_lli_12_h,&status);
470  if (status) printf("%s\n",cosmo->status_message);
471  ccl_angular_cls(cosmo,w,tr_wl_2,tr_wli_1,NELLS,ells,cls_lli_21_h,&status);
472  if (status) printf("%s\n",cosmo->status_message);
473  ccl_angular_cls(cosmo,w,tr_wl_2,tr_wli_2,NELLS,ells,cls_lli_22_h,&status);
474  if (status) printf("%s\n",cosmo->status_message);
475  ccl_angular_cls(cosmo,w,tr_nc_1,tr_cl,NELLS,ells,cls_dc_1_h,&status);
476  if (status) printf("%s\n",cosmo->status_message);
477  ccl_angular_cls(cosmo,w,tr_nc_2,tr_cl,NELLS,ells,cls_dc_2_h,&status);
478  if (status) printf("%s\n",cosmo->status_message);
479  ccl_angular_cls(cosmo,w,tr_wl_1,tr_wl_1,NELLS,ells,cls_ll_11_h,&status);
480  if (status) printf("%s\n",cosmo->status_message);
481  ccl_angular_cls(cosmo,w,tr_wl_1,tr_wl_2,NELLS,ells,cls_ll_12_h,&status);
482  if (status) printf("%s\n",cosmo->status_message);
483  ccl_angular_cls(cosmo,w,tr_wl_2,tr_wl_2,NELLS,ells,cls_ll_22_h,&status);
484  if (status) printf("%s\n",cosmo->status_message);
485  ccl_angular_cls(cosmo,w,tr_wl_1,tr_cl,NELLS,ells,cls_lc_1_h,&status);
486  if (status) printf("%s\n",cosmo->status_message);
487  ccl_angular_cls(cosmo,w,tr_wl_2,tr_cl,NELLS,ells,cls_lc_2_h,&status);
488  if (status) printf("%s\n",cosmo->status_message);
489  ccl_angular_cls(cosmo,w,tr_cl,tr_cl,NELLS,ells,cls_cc_h,&status);
490  if (status) printf("%s\n",cosmo->status_message);
491 
492  double fraction_failed=0;
493  for(int ii=2;ii<w->n_ls-1;ii++) {
494  int l=w->l_arr[ii];
495  double ell_correct,ell_correct2;
496  double el_dd_11,el_dd_12,el_dd_22;
497  double el_dl_11,el_dl_12,el_dl_21,el_dl_22;
498  double el_dltot_11,el_dltot_12,el_dltot_21,el_dltot_22;
499  double el_dc_1,el_dc_2;
500  double el_ll_11,el_ll_12,el_ll_22;
501  double el_li_11,el_li_12,el_li_22;
502  double el_ii_11,el_ii_12,el_ii_22;
503  double el_lltot_11,el_lltot_12,el_lltot_22;
504  double el_lc_1,el_lc_2;
505  double el_cc;
506  double cl_dd_11,cl_dd_12,cl_dd_22;
507  double cl_dl_12,cl_dl_11,cl_dl_21,cl_dl_22;
508  double cl_di_12,cl_di_11,cl_di_21,cl_di_22;
509  double cl_dltot_12,cl_dltot_11,cl_dltot_21,cl_dltot_22;
510  double cl_lltot_11,cl_lltot_12,cl_lltot_22;
511  double cl_dc_1,cl_dc_2;
512  double cl_ll_11,cl_ll_12,cl_ll_22;
513  double cl_li_11,cl_li_12,cl_li_22;
514  double cl_ii_11,cl_ii_12,cl_ii_22;
515  double cl_lc_1,cl_lc_2;
516  double cl_cc;
517  double cl_dd_11_h,cl_dd_12_h,cl_dd_22_h;
518  double cl_dl_12_h,cl_dl_11_h,cl_dl_21_h,cl_dl_22_h;
519  double cl_di_12_h,cl_di_11_h,cl_di_21_h,cl_di_22_h;
520  double cl_dltot_12_h,cl_dltot_11_h,cl_dltot_21_h,cl_dltot_22_h;
521  double cl_dc_1_h,cl_dc_2_h;
522  double cl_ll_11_h,cl_ll_12_h,cl_ll_22_h;
523  double cl_li_11_h,cl_li_12_h,cl_li_22_h;
524  double cl_ii_11_h,cl_ii_12_h,cl_ii_22_h;
525  double cl_lltot_11_h,cl_lltot_12_h,cl_lltot_22_h;
526  double cl_lc_1_h,cl_lc_2_h;
527  double cl_cc_h;
528  if(l<=1)
529  ell_correct=1;
530  else{
531  ell_correct=l*(l+1.)/sqrt((l+2.)*(l+1.)*l*(l-1.));
532  ell_correct2=(l+0.5)*(l+0.5)/sqrt((l+2.)*(l+1.)*l*(l-1.));
533  }
534  cl_dd_11 =cls_dd_11_b[l];
535  cl_dd_12 =cls_dd_12_b[l];
536  cl_dd_22 =cls_dd_22_b[l];
537  cl_dl_12 =cls_dl_12_b[l];
538  cl_dl_11 =cls_dl_11_b[l];
539  cl_dl_21 =cls_dl_21_b[l];
540  cl_dl_22 =cls_dl_22_b[l];
541  cl_di_12 =cls_di_12_b[l];
542  cl_di_11 =cls_di_11_b[l];
543  cl_di_21 =cls_di_21_b[l];
544  cl_di_22 =cls_di_22_b[l];
545  cl_dltot_11=cl_dl_11+cl_di_11;
546  cl_dltot_12=cl_dl_12+cl_di_12;
547  cl_dltot_21=cl_dl_21+cl_di_21;
548  cl_dltot_22=cl_dl_22+cl_di_22;
549  cl_dc_1 =cls_dc_1_b[l];
550  cl_dc_2 =cls_dc_2_b[l];
551  cl_ll_11 =cls_ll_11_b[l];
552  cl_ll_12 =cls_ll_12_b[l];
553  cl_ll_22 =cls_ll_22_b[l];
554  cl_li_11 =cls_li_11_b[l];
555  cl_li_12 =cls_li_12_b[l];
556  cl_li_22 =cls_li_22_b[l];
557  cl_ii_11 =cls_ii_11_b[l];
558  cl_ii_12 =cls_ii_12_b[l];
559  cl_ii_22 =cls_ii_22_b[l];
560  cl_lltot_11=cl_ll_11+cl_li_11+cl_ii_11;
561  cl_lltot_12=cl_ll_12+cl_li_12+cl_ii_12;
562  cl_lltot_22=cl_ll_22+cl_li_22+cl_ii_22;
563  cl_lc_1 =cls_lc_1_b[l];
564  cl_lc_2 =cls_lc_2_b[l];
565  cl_cc =cls_cc_b[l];
566  el_dd_11=ELS_TOLERANCE*sqrt((cl_dd_11*cl_dd_11+cl_dd_11*cl_dd_11)/(2*l+1.));
567  el_dd_12=ELS_TOLERANCE*sqrt((cl_dd_11*cl_dd_22+cl_dd_12*cl_dd_12)/(2*l+1.));
568  el_dd_22=ELS_TOLERANCE*sqrt((cl_dd_22*cl_dd_22+cl_dd_22*cl_dd_22)/(2*l+1.));
569  el_dl_11=ELS_TOLERANCE*sqrt((cl_dd_11*cl_ll_11+cl_dl_11*cl_dl_11)/(2*l+1.));
570  el_dl_12=ELS_TOLERANCE*sqrt((cl_dd_11*cl_ll_22+cl_dl_12*cl_dl_12)/(2*l+1.));
571  el_dl_21=ELS_TOLERANCE*sqrt((cl_dd_22*cl_ll_11+cl_dl_21*cl_dl_21)/(2*l+1.));
572  el_dl_22=ELS_TOLERANCE*sqrt((cl_dd_22*cl_ll_22+cl_dl_22*cl_dl_22)/(2*l+1.));
573  el_dltot_11=ELS_TOLERANCE*sqrt((cl_dd_11*cl_lltot_11+cl_dltot_11*cl_dltot_11)/(2*l+1.));
574  el_dltot_12=ELS_TOLERANCE*sqrt((cl_dd_11*cl_lltot_22+cl_dltot_12*cl_dltot_12)/(2*l+1.));
575  el_dltot_21=ELS_TOLERANCE*sqrt((cl_dd_22*cl_lltot_11+cl_dltot_21*cl_dltot_21)/(2*l+1.));
576  el_dltot_22=ELS_TOLERANCE*sqrt((cl_dd_22*cl_lltot_22+cl_dltot_22*cl_dltot_22)/(2*l+1.));
577  el_dc_1=ELS_TOLERANCE*sqrt((cl_dd_11*cl_cc+cl_dc_1*cl_dc_1)/(2*l+1.));
578  el_dc_2=ELS_TOLERANCE*sqrt((cl_dd_22*cl_cc+cl_dc_2*cl_dc_2)/(2*l+1.));
579  el_ll_11=ELS_TOLERANCE*sqrt((cl_ll_11*cl_ll_11+cl_ll_11*cl_ll_11)/(2*l+1.));
580  el_ll_12=ELS_TOLERANCE*sqrt((cl_ll_11*cl_ll_22+cl_ll_12*cl_ll_12)/(2*l+1.));
581  el_ll_22=ELS_TOLERANCE*sqrt((cl_ll_22*cl_ll_22+cl_ll_22*cl_ll_22)/(2*l+1.));
582  el_li_11=ELS_TOLERANCE*sqrt((cl_li_11*cl_li_11+cl_li_11*cl_li_11)/(2*l+1.));
583  el_li_12=ELS_TOLERANCE*sqrt((cl_li_11*cl_li_22+cl_li_12*cl_li_12)/(2*l+1.));
584  el_li_22=ELS_TOLERANCE*sqrt((cl_li_22*cl_li_22+cl_li_22*cl_li_22)/(2*l+1.));
585  el_ii_11=ELS_TOLERANCE*sqrt((cl_ii_11*cl_ii_11+cl_ii_11*cl_ii_11)/(2*l+1.));
586  el_ii_12=ELS_TOLERANCE*sqrt((cl_ii_11*cl_ii_22+cl_ii_12*cl_ii_12)/(2*l+1.));
587  el_ii_22=ELS_TOLERANCE*sqrt((cl_ii_22*cl_ii_22+cl_ii_22*cl_ii_22)/(2*l+1.));
588  el_lltot_11=ELS_TOLERANCE*sqrt((cl_lltot_11*cl_lltot_11+cl_lltot_11*cl_lltot_11)/(2*l+1.));
589  el_lltot_12=ELS_TOLERANCE*sqrt((cl_lltot_11*cl_lltot_22+cl_lltot_12*cl_lltot_12)/(2*l+1.));
590  el_lltot_22=ELS_TOLERANCE*sqrt((cl_lltot_22*cl_lltot_22+cl_lltot_22*cl_lltot_22)/(2*l+1.));
591  el_lc_1=ELS_TOLERANCE*sqrt((cl_ll_11*cl_cc+cl_lc_1*cl_lc_1)/(2*l+1.));
592  el_lc_2=ELS_TOLERANCE*sqrt((cl_ll_22*cl_cc+cl_lc_2*cl_lc_2)/(2*l+1.));
593  el_cc=ELS_TOLERANCE*sqrt((cl_cc*cl_cc+cl_cc*cl_cc)/(2*l+1.));
594  cl_dd_11_h=cls_dd_11_h[l];
595  cl_dd_12_h=cls_dd_12_h[l];
596  cl_dd_22_h=cls_dd_22_h[l];
597  cl_dl_11_h=cls_dl_11_h[l]*ell_correct2;
598  cl_dl_12_h=cls_dl_12_h[l]*ell_correct2;
599  cl_dl_21_h=cls_dl_21_h[l]*ell_correct2;
600  cl_dl_22_h=cls_dl_22_h[l]*ell_correct2;
601  cl_dltot_11_h=cls_dltot_11_h[l]*ell_correct2;
602  cl_dltot_12_h=cls_dltot_12_h[l]*ell_correct2;
603  cl_dltot_21_h=cls_dltot_21_h[l]*ell_correct2;
604  cl_dltot_22_h=cls_dltot_22_h[l]*ell_correct2;
605  cl_di_11_h=cl_dltot_11_h-cl_dl_11_h;
606  cl_di_12_h=cl_dltot_12_h-cl_dl_12_h;
607  cl_di_21_h=cl_dltot_21_h-cl_dl_21_h;
608  cl_di_22_h=cl_dltot_22_h-cl_dl_22_h;
609  cl_dc_1_h=cls_dc_1_h[l];
610  cl_dc_2_h=cls_dc_2_h[l];
611  cl_ll_11_h=cls_ll_11_h[l]*ell_correct2*ell_correct2;
612  cl_ll_12_h=cls_ll_12_h[l]*ell_correct2*ell_correct2;
613  cl_ll_22_h=cls_ll_22_h[l]*ell_correct2*ell_correct2;
614  cl_li_11_h=2*(cls_lli_11_h[l]-cls_ll_11_h[l])*ell_correct2*ell_correct2;
615  cl_li_12_h=(cls_lli_12_h[l]+cls_lli_21_h[l]-2*cls_ll_12_h[l])*ell_correct2*ell_correct2;
616  cl_li_22_h=2*(cls_lli_22_h[l]-cls_ll_22_h[l])*ell_correct2*ell_correct2;
617  cl_ii_11_h=(cls_lltot_11_h[l]+cls_ll_11_h[l]-2*cls_lli_11_h[l])*ell_correct2*ell_correct2;
618  cl_ii_12_h=(cls_lltot_12_h[l]+cls_ll_12_h[l]-cls_lli_12_h[l]-cls_lli_21_h[l])*ell_correct2*ell_correct2;
619  cl_ii_22_h=(cls_lltot_22_h[l]+cls_ll_22_h[l]-2*cls_lli_22_h[l])*ell_correct2*ell_correct2;
620  cl_lltot_11_h=cls_lltot_11_h[l]*ell_correct2*ell_correct2;
621  cl_lltot_12_h=cls_lltot_12_h[l]*ell_correct2*ell_correct2;
622  cl_lltot_22_h=cls_lltot_22_h[l]*ell_correct2*ell_correct2;
623  cl_lc_1_h=cls_lc_1_h[l]*ell_correct;
624  cl_lc_2_h=cls_lc_2_h[l]*ell_correct;
625  cl_cc_h=cls_cc_h[l];
626 
627  ASSERT_TRUE(fabs(cl_dd_11_h-cl_dd_11)<el_dd_11);
628  ASSERT_TRUE(fabs(cl_dd_12_h-cl_dd_12)<el_dd_12);
629  ASSERT_TRUE(fabs(cl_dd_22_h-cl_dd_22)<el_dd_22);
630  ASSERT_TRUE(fabs(cl_dc_1_h-cl_dc_1)<el_dc_1);
631  ASSERT_TRUE(fabs(cl_dc_2_h-cl_dc_2)<el_dc_2);
632 
633  ASSERT_TRUE(fabs(cl_dl_11_h-cl_dl_11)<el_dl_11);
634  ASSERT_TRUE(fabs(cl_dl_12_h-cl_dl_12)<el_dl_12);
635  ASSERT_TRUE(fabs(cl_dl_21_h-cl_dl_21)<el_dl_21);
636  ASSERT_TRUE(fabs(cl_dl_22_h-cl_dl_22)<el_dl_22);
637  // comparing galaxy-intrinsic wrt full GGL error, CCL needs to be further improved to avoid spikes
638  ASSERT_TRUE(fabs(cl_di_11_h-cl_di_11)<el_dltot_11);
639  ASSERT_TRUE(fabs(cl_di_12_h-cl_di_12)<el_dltot_12);
640  ASSERT_TRUE(fabs(cl_di_21_h-cl_di_21)<el_dltot_21);
641  ASSERT_TRUE(fabs(cl_di_22_h-cl_di_22)<el_dltot_22);
642 
643  ASSERT_TRUE(fabs(cl_ll_11_h-cl_ll_11)<el_ll_11);
644  ASSERT_TRUE(fabs(cl_ll_12_h-cl_ll_12)<el_ll_12);
645  ASSERT_TRUE(fabs(cl_ll_22_h-cl_ll_22)<el_ll_22);
646  // comparing shear-intrinsic and intrinsic-intrinsic wrt full cosmic shear error, CCL needs to be further improved to avoid spikes
647  ASSERT_TRUE(fabs(cl_li_11_h-cl_li_11)<el_lltot_11);
648  ASSERT_TRUE(fabs(cl_li_12_h-cl_li_12)<el_lltot_12);
649  ASSERT_TRUE(fabs(cl_li_22_h-cl_li_22)<el_lltot_22);
650  ASSERT_TRUE(fabs(cl_ii_11_h-cl_ii_11)<el_lltot_11);
651  ASSERT_TRUE(fabs(cl_ii_12_h-cl_ii_12)<el_lltot_12);
652  ASSERT_TRUE(fabs(cl_ii_22_h-cl_ii_22)<el_lltot_22);
653 
654  ASSERT_TRUE(fabs(cl_cc_h-cl_cc)<el_cc);
655  ASSERT_TRUE(fabs(cl_lc_1_h-cl_lc_1)<el_lc_1);
656  ASSERT_TRUE(fabs(cl_lc_2_h-cl_lc_2)<el_lc_2);
657  }
659  if(!strcmp(compare_type,"histo")) {
660  ccl_gsl->INTEGRATION_EPSREL=epsrel_save;
661  ccl_gsl->INTEGRATION_LIMBER_EPSREL=epsrel_save;
663  }
664 
665  free(ells);
666  free(cls_dd_11_b); free(cls_dd_12_b); free(cls_dd_22_b);
667  free(cls_dl_12_b);free(cls_dl_21_b);free(cls_dl_11_b);free(cls_dl_22_b);
668  free(cls_di_12_b);free(cls_di_21_b);free(cls_di_11_b);free(cls_di_22_b);
669  free(cls_dc_1_b); free(cls_dc_2_b);
670  free(cls_ll_11_b); free(cls_ll_12_b); free(cls_ll_22_b);
671  free(cls_li_11_b); free(cls_li_12_b); free(cls_li_22_b);
672  free(cls_ii_11_b); free(cls_ii_12_b); free(cls_ii_22_b);
673  free(cls_lc_1_b); free(cls_lc_2_b);
674  free(cls_cc_b);
675 
676  free(cls_dd_11_h); free(cls_dd_12_h); free(cls_dd_22_h);
677  free(cls_dl_12_h);free(cls_dl_11_h);free(cls_dl_21_h);free(cls_dl_22_h);
678  free(cls_dltot_12_h);free(cls_dltot_11_h);free(cls_dltot_21_h);free(cls_dltot_22_h);
679  free(cls_dc_1_h); free(cls_dc_2_h);
680  free(cls_ll_11_h); free(cls_ll_12_h); free(cls_ll_22_h);
681  free(cls_lltot_11_h); free(cls_lltot_12_h); free(cls_lltot_22_h);
682  free(cls_lli_11_h); free(cls_lli_12_h); free(cls_lli_21_h); free(cls_lli_22_h);
683  free(cls_lc_1_h); free(cls_lc_2_h);
684  free(cls_cc_h);
685 
686  free(zarr_1);
687  free(zarr_2);
688  free(pzarr_1);
689  free(pzarr_2);
690  free(az1arr);
691  free(az2arr);
692  free(rz1arr);
693  free(rz2arr);
694  free(bzarr);
695  ccl_cl_tracer_free(tr_nc_1);
696  ccl_cl_tracer_free(tr_nc_2);
697  ccl_cl_tracer_free(tr_wl_1);
698  ccl_cl_tracer_free(tr_wl_2);
699  ccl_cl_tracer_free(tr_wli_1);
700  ccl_cl_tracer_free(tr_wli_2);
701  ccl_cl_tracer_free(tr_cl);
702  ccl_cosmology_free(cosmo);
703 }
704 
705 CTEST2(cls,analytic) {
706  compare_cls("analytic",data);
707 }
708 
709 CTEST2(cls,histo) {
710  compare_cls("histo",data);
711 }
double Omega_b
Definition: ccl_test_cls.c:16
void ccl_set_debug_policy(CCLDebugModePolicy debug_policy)
Definition: ccl_error.c:29
double sigma8
Definition: ccl_test_cls.c:20
CCL_ClTracer * ccl_cl_tracer_lensing(ccl_cosmology *cosmo, int has_alignment, int nz_n, double *z_n, double *n, int nz_ba, double *z_ba, double *ba, int nz_rf, double *z_rf, double *rf, int *status)
Definition: ccl_cls.c:642
matter_power_spectrum_t matter_power_spectrum_method
Definition: ccl_config.h:112
double h
Definition: ccl_test_cls.c:17
#define ASSERT_TRUE(real)
Definition: ctest.h:142
double n_s
Definition: ccl_test_cls.c:19
#define ELS_TOLERANCE
Definition: ccl_test_cls.c:11
#define CTEST_SETUP(sname)
Definition: ctest.h:73
#define CTEST_DATA(sname)
Definition: ctest.h:71
float z1
Definition: mk_bins.py:9
void ccl_cl_tracer_free(CCL_ClTracer *clt)
Definition: ccl_cls.c:592
double Omega_l
Definition: ccl_core.h:63
transfer_function_t transfer_function_method
Definition: ccl_config.h:111
CCL_ClWorkspace * ccl_cl_workspace_new_limber(int lmax, double l_logstep, int l_linstep, int *status)
Definition: ccl_cls.c:124
void ccl_angular_cls(ccl_cosmology *cosmo, CCL_ClWorkspace *w, CCL_ClTracer *clt1, CCL_ClTracer *clt2, int nl_out, int *l, double *cl, int *status)
Definition: ccl_cls.c:943
static int linecount(FILE *f)
Definition: ccl_test_cls.c:32
ccl_gsl_params * ccl_gsl
Definition: ccl_core.c:48
Grid< NDIM, T > sqrt(Grid< NDIM, T > lhs)
Definition: grid.h:231
ccl_cosmology * ccl_cosmology_create(ccl_parameters params, ccl_configuration config)
Definition: ccl_core.c:173
double INTEGRATION_EPSREL
Definition: ccl_params.h:59
CCL_ClTracer * ccl_cl_tracer_number_counts_simple(ccl_cosmology *cosmo, int nz_n, double *z_n, double *n, int nz_b, double *z_b, double *b, int *status)
Definition: ccl_cls.c:633
double Omega_n_rel
Definition: ccl_core.h:43
void ccl_cosmology_free(ccl_cosmology *cosmo)
Definition: ccl_core.c:829
dictionary params
Definition: halomod_bm.py:27
float z2
Definition: mk_bins.py:10
#define NELLS
Definition: ccl_test_cls.c:12
double sigma8
Definition: ccl_core.h:62
const ccl_configuration default_config
Definition: ccl_core.c:21
void ccl_cl_workspace_free(CCL_ClWorkspace *w)
Definition: ccl_cls.c:59
CCL_ClTracer * ccl_cl_tracer_cmblens(ccl_cosmology *cosmo, double z_source, int *status)
Definition: ccl_cls.c:614
#define ASSERT_NOT_NULL(real)
Definition: ctest.h:139
double A_s
Definition: ccl_test_cls.c:18
ccl_parameters ccl_parameters_create_flat_lcdm(double Omega_c, double Omega_b, double h, double norm_pk, double n_s, int *status)
Definition: ccl_core.c:505
double INTEGRATION_LIMBER_EPSREL
Definition: ccl_params.h:62
static void compare_cls(char *compare_type, struct cls_data *data)
Definition: ccl_test_cls.c:44
double Omega_c
Definition: ccl_test_cls.c:15
static double w[2][28][111]
Definition: ccl_emu17.c:33
#define CTEST2(sname, tname)
Definition: ctest.h:107
char status_message[500]
Definition: ccl_core.h:136
int nz
Definition: mk_bins.py:7
CCL_ClTracer * ccl_cl_tracer_lensing_simple(ccl_cosmology *cosmo, int nz_n, double *z_n, double *n, int *status)
Definition: ccl_cls.c:653