Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
ccl_sample_angpow.cc File Reference
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <ccl.h>
#include <time.h>
Include dependency graph for ccl_sample_angpow.cc:

Go to the source code of this file.

Macros

#define OC   0.25
 
#define OB   0.05
 
#define OK   0.00
 
#define ON   0.00
 
#define HH   0.70
 
#define W0   -1.0
 
#define WA   0.00
 
#define NS   0.96
 
#define NORMPS   2.215e-9
 
#define ZD   0.5
 
#define NZ   1024
 
#define Z1_GC   1.0
 
#define SZ1_GC   0.02
 
#define Z0_GC   1.0
 
#define SZ_GC   0.02
 
#define Z0_SH   0.65
 
#define SZ_SH   0.05
 
#define NL   499
 
#define PS   0.1
 
#define NEFF   3.046
 

Functions

void print_params (int l_limber, const char *fname_params, const char *prefix_out)
 
int main (int argc, char **argv)
 

Macro Definition Documentation

#define HH   0.70

Definition at line 11 of file ccl_sample_angpow.cc.

Referenced by main(), and print_params().

#define NEFF   3.046

Definition at line 27 of file ccl_sample_angpow.cc.

Referenced by main().

#define NL   499

Definition at line 25 of file ccl_sample_angpow.cc.

Referenced by main(), and print_params().

#define NORMPS   2.215e-9

Definition at line 16 of file ccl_sample_angpow.cc.

Referenced by main(), and print_params().

#define NS   0.96

Definition at line 14 of file ccl_sample_angpow.cc.

Referenced by main(), and print_params().

#define NZ   1024

Definition at line 18 of file ccl_sample_angpow.cc.

Referenced by main().

#define OB   0.05

Definition at line 8 of file ccl_sample_angpow.cc.

Referenced by main(), and print_params().

#define OC   0.25

Definition at line 7 of file ccl_sample_angpow.cc.

Referenced by main(), and print_params().

#define OK   0.00

Definition at line 9 of file ccl_sample_angpow.cc.

Referenced by main().

#define ON   0.00

Definition at line 10 of file ccl_sample_angpow.cc.

#define PS   0.1

Definition at line 26 of file ccl_sample_angpow.cc.

#define SZ1_GC   0.02

Definition at line 20 of file ccl_sample_angpow.cc.

Referenced by main().

#define SZ_GC   0.02

Definition at line 22 of file ccl_sample_angpow.cc.

Referenced by main().

#define SZ_SH   0.05

Definition at line 24 of file ccl_sample_angpow.cc.

#define W0   -1.0

Definition at line 12 of file ccl_sample_angpow.cc.

Referenced by main(), and print_params().

#define WA   0.00

Definition at line 13 of file ccl_sample_angpow.cc.

Referenced by main(), and print_params().

#define Z0_GC   1.0

Definition at line 21 of file ccl_sample_angpow.cc.

Referenced by main().

#define Z0_SH   0.65

Definition at line 23 of file ccl_sample_angpow.cc.

#define Z1_GC   1.0

Definition at line 19 of file ccl_sample_angpow.cc.

Referenced by main().

#define ZD   0.5

Definition at line 17 of file ccl_sample_angpow.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 70 of file ccl_sample_angpow.cc.

References ccl_angular_cls(), ccl_boltzmann_class, ccl_cl_tracer_free(), ccl_cl_tracer_number_counts(), ccl_cl_workspace_free(), ccl_cosmology_create(), ccl_cosmology_free(), ccl_linear, ccl_mnu_sum, ccl_nonlin_matter_power(), ccl_parameters_create(), CCL_ClTracer::chimax, CCL_ClTracer::chimin, cl_cmbl_bm::cosmo, default_config, Catch::end, HH, ccl_configuration::matter_power_spectrum_method, MNU, NEFF, NL, NORMPS, NS, NZ, OB, OC, OK, halomod_bm::params, pow(), print_params(), sqrt(), SZ1_GC, SZ_GC, ccl_configuration::transfer_function_method, W0, WA, Z0_GC, and Z1_GC.

71 {
72  //status flag
73  int status =0;
74  // Initialize cosmological parameters
78 
79  // Set neutrino masses
80  double* MNU;
81  double mnuval = 0.;
82  MNU = &mnuval;
84  ccl_parameters params = ccl_parameters_create(OC, OB, OK, NEFF, MNU, MNUTYPE, W0, WA, HH, NORMPS, NS,-1,-1,-1,-1,NULL,NULL, &status);
85 
86  // Initialize cosmology object given cosmo params
88 
89  //Create tracers for angular power spectra
90  FILE *fn=fopen("nz.txt","w");
91  FILE *fb=fopen("bz.txt","w");
92  double z_arr_gc[NZ],nz_arr_gc[NZ],bz_arr[NZ];
93  double z1_arr_gc[NZ],nz1_arr_gc[NZ],bz1_arr[NZ];
94  for(int i=0;i<NZ;i++) {
95  z_arr_gc[i]=Z0_GC-5*SZ_GC+10*SZ_GC*(i+0.5)/NZ;
96  nz_arr_gc[i]=exp(-0.5*pow((z_arr_gc[i]-Z0_GC)/SZ_GC,2))/sqrt(2*3.1415926536*SZ_GC*SZ_GC);
97  z1_arr_gc[i]=Z1_GC-5*SZ1_GC+10*SZ1_GC*(i+0.5)/NZ;
98  nz1_arr_gc[i]=exp(-0.5*pow((z1_arr_gc[i]-Z1_GC)/SZ1_GC,2))/sqrt(2*3.1415926536*SZ1_GC*SZ1_GC);
99  bz_arr[i]=1.;//+z_arr_gc[i];
100  fprintf(fn,"%lE %lE\n",z_arr_gc[i],nz_arr_gc[i]);
101  fprintf(fb,"%lE %lE\n",z_arr_gc[i],bz_arr[i]);
102  }
103  fclose(fn);
104  fclose(fb);
105 
106  FILE *fp=fopen("pk.txt","w");
107  for(int i=0;i<1024;i++) {
108  double lk=-4.+5*(i+0.5)/1024.;
109  double kk=pow(10.,lk);
110  double pk=ccl_nonlin_matter_power(cosmo,kk,1.,&status);
111  fprintf(fp,"%lE %lE\n",kk,pk);
112  }
113  fclose(fp);
114 
115  print_params(-1,"params_lj_limber.ini","out_lj_limber");
116  print_params(NL,"params_lj_nonlimber.ini","out_lj_nonlimber");
117 
118  //Galaxy clustering tracer
119  CCL_ClTracer *ct_gc_A=ccl_cl_tracer_number_counts(cosmo,1,0,NZ,z_arr_gc,nz_arr_gc,
120  NZ,z_arr_gc,bz_arr,-1,NULL,NULL,&status);
121  CCL_ClTracer *ct_gc_B=ccl_cl_tracer_number_counts(cosmo,1,0,NZ,z_arr_gc,nz_arr_gc,
122  NZ,z_arr_gc,bz_arr,-1,NULL,NULL,&status);
123  int ells[NL];
124  double cells_gg_angpow[NL];
125  double cells_gg_native[NL];
126  double cells_gg_limber[NL];
127  for(int ii=0;ii<NL;ii++)
128  ells[ii]=ii;
129 
130  double linstep = 40;
131  double logstep = 1.3;
132  double dchi = (ct_gc_A->chimax-ct_gc_A->chimin)/500.; // must be below 3 to converge toward limber computation at high ell
133  double dlk = 0.003;
134  double zmin = 0.05;
135  CCL_ClWorkspace *wyl=ccl_cl_workspace_default(NL+1,-1 ,CCL_NONLIMBER_METHOD_ANGPOW,logstep,linstep,dchi,dlk,zmin,&status);
136  CCL_ClWorkspace *wnl=ccl_cl_workspace_default(NL+1,2*ells[NL-1],CCL_NONLIMBER_METHOD_NATIVE,logstep,linstep,dchi,dlk,zmin,&status);
137  CCL_ClWorkspace *wap=ccl_cl_workspace_default(NL+1,2*ells[NL-1],CCL_NONLIMBER_METHOD_ANGPOW,logstep,linstep,dchi,dlk,zmin,&status);
138  double start = clock();
139  ccl_angular_cls(cosmo,wyl,ct_gc_A,ct_gc_A,NL,ells,cells_gg_limber,&status);
140  double end = clock();
141  printf("Limber: %.6f seconds\n", (end-start)/CLOCKS_PER_SEC);
142  start = clock();
143  ccl_angular_cls(cosmo,wnl,ct_gc_B,ct_gc_B,NL,ells,cells_gg_native,&status);
144  end = clock();
145  printf("Native: %.6f seconds\n", (end-start)/CLOCKS_PER_SEC);
146  start = clock();
147  ccl_angular_cls(cosmo,wap,ct_gc_A,ct_gc_A,NL,ells,cells_gg_angpow,&status);
148  end = clock();
149  printf("Angpow: %.6f seconds\n", (end-start)/CLOCKS_PER_SEC);
150  printf("Done\n");
151 
152  FILE *fo=fopen("cls_val.txt","w");
153  for(int ii=0;ii<NL;ii++) {
154  double cl_gg_yl=cells_gg_limber[ii];
155  double cl_gg_nl=cells_gg_native[ii];
156  double cl_gg_ap=cells_gg_angpow[ii];
157  fprintf(fo,"%d %lE %lE %lE\n",ells[ii],cl_gg_yl,cl_gg_nl,cl_gg_ap);
158  }
159  fclose(fo);
160 
161  //Free up tracers
162  ccl_cl_tracer_free(ct_gc_A);
163  ccl_cl_tracer_free(ct_gc_B);
167 
168  //Always clean up!!
169  ccl_cosmology_free(cosmo);
170 
171  return 0;
172 }
#define HH
not_this_one end(...)
#define Z0_GC
matter_power_spectrum_t matter_power_spectrum_method
Definition: ccl_config.h:112
double ccl_nonlin_matter_power(ccl_cosmology *cosmo, double k, double a, int *status)
Definition: ccl_power.c:1562
#define NORMPS
#define WA
void ccl_cl_tracer_free(CCL_ClTracer *clt)
Definition: ccl_cls.c:592
transfer_function_t transfer_function_method
Definition: ccl_config.h:111
#define OK
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
#define NS
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
#define NL
ccl_mnu_convention
Definition: ccl_core.h:142
#define NZ
void ccl_cosmology_free(ccl_cosmology *cosmo)
Definition: ccl_core.c:829
void print_params(int l_limber, const char *fname_params, const char *prefix_out)
dictionary params
Definition: halomod_bm.py:27
#define NEFF
#define OC
#define W0
CCL_ClTracer * ccl_cl_tracer_number_counts(ccl_cosmology *cosmo, int has_rsd, int has_magnification, int nz_n, double *z_n, double *n, int nz_b, double *z_b, double *b, int nz_s, double *z_s, double *s, int *status)
Definition: ccl_cls.c:622
const ccl_configuration default_config
Definition: ccl_core.c:21
float pow(float base, unsigned long int exp)
Definition: precision.hpp:39
void ccl_cl_workspace_free(CCL_ClWorkspace *w)
Definition: ccl_cls.c:59
#define SZ_GC
#define Z1_GC
double chimax
Definition: ccl_cls.h:34
double chimin
Definition: ccl_cls.h:35
ccl_parameters ccl_parameters_create(double Omega_c, double Omega_b, double Omega_k, double Neff, double *mnu, ccl_mnu_convention mnu_type, double w0, double wa, double h, double norm_pk, double n_s, double bcm_log10Mc, double bcm_etab, double bcm_ks, int nz_mgrowth, double *zarr_mgrowth, double *dfarr_mgrowth, int *status)
Definition: ccl_core.c:294
#define SZ1_GC
#define MNU
#define OB
void print_params ( int  l_limber,
const char *  fname_params,
const char *  prefix_out 
)

Definition at line 29 of file ccl_sample_angpow.cc.

References HH, NL, NORMPS, NS, OB, OC, W0, and WA.

Referenced by main().

30 {
31  FILE *fl=fopen(fname_params,"w");
32  fprintf(fl,"omega_m= %lf\n",OC+OB);
33  fprintf(fl,"omega_l= %lf\n",1-OC-OB);
34  fprintf(fl,"omega_b= %lf\n",OB);
35  fprintf(fl,"w0= %lf\n",W0);
36  fprintf(fl,"wa= %lf\n",WA);
37  fprintf(fl,"h= %lf\n",HH);
38  fprintf(fl,"ns= %lf\n",NS);
39  fprintf(fl,"s8= %lf\n",NORMPS);
40  fprintf(fl,"l_limber_min= %d\n",l_limber);
41  fprintf(fl,"d_chi= 3.\n");
42  fprintf(fl,"z_kappa= 20.\n");
43  fprintf(fl,"z_isw= 20.\n");
44  fprintf(fl,"l_max= %d\n",NL);
45  fprintf(fl,"do_nc= 1\n");
46  fprintf(fl,"has_nc_dens= 1\n");
47  fprintf(fl,"has_nc_rsd= 0\n");
48  fprintf(fl,"has_nc_lensing= 0\n");
49  fprintf(fl,"do_shear= 0\n");
50  fprintf(fl,"has_sh_intrinsic= 0\n");
51  fprintf(fl,"do_cmblens= 0\n");
52  fprintf(fl,"do_isw= 0\n");
53  fprintf(fl,"do_w_theta= 0\n");
54  fprintf(fl,"use_logbin= 0\n");
55  fprintf(fl,"theta_min= 0\n");
56  fprintf(fl,"theta_max= 0\n");
57  fprintf(fl,"n_bins_theta= 0\n");
58  fprintf(fl,"n_bins_decade= 0\n");
59  fprintf(fl,"window_1_fname= nz.txt\n");
60  fprintf(fl,"window_2_fname= nz.txt\n");
61  fprintf(fl,"bias_fname= bz.txt\n");
62  fprintf(fl,"sbias_fname= nothing\n");
63  fprintf(fl,"abias_fname= nothing\n");
64  fprintf(fl,"pk_fname= pk.txt\n");
65  fprintf(fl,"prefix_out= %s\n",prefix_out);
66  fclose(fl);
67 }
#define HH
#define NORMPS
#define WA
#define NS
#define NL
#define OC
#define W0
#define OB