Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
common.c
Go to the documentation of this file.
1 #include "common.h"
2 
3 void *dam_malloc(size_t size)
4 {
5  void *outptr=malloc(size);
6  if(outptr==NULL) dam_report_error(1,"Out of memory\n");
7 
8  return outptr;
9 }
10 
11 void *dam_calloc(size_t nmemb,size_t size)
12 {
13  void *outptr=calloc(nmemb,size);
14  if(outptr==NULL)
15  dam_report_error(1,"Out of memory\n");
16 
17  return outptr;
18 }
19 
20 FILE *dam_fopen(const char *path,const char *mode)
21 {
22  FILE *fout=fopen(path,mode);
23  if(fout==NULL)
24  dam_report_error(1,"Couldn't open file %s\n",path);
25 
26  return fout;
27 }
28 
29 int dam_linecount(FILE *f)
30 {
31  int i0=0;
32  char ch[1024];
33  while((fgets(ch,sizeof(ch),f))!=NULL) {
34  i0++;
35  }
36  return i0;
37 }
38 
39 void dam_report_error(int level,char *fmt,...)
40 {
41  va_list args;
42  char msg[256];
43 
44  va_start(args,fmt);
45  vsprintf(msg,fmt,args);
46  va_end(args);
47 
48  if(level) {
49  fprintf(stderr,"Fatal: %s",msg);
50  exit(level);
51  }
52  else {
53  fprintf(stderr,"Warning: %s",msg);
54  }
55 }
56 
57 SplPar *spline_init(int n,double *x,double *y,double y0,double yf)
58 {
59  SplPar *spl=(SplPar *)dam_malloc(sizeof(SplPar));
60  spl->intacc=gsl_interp_accel_alloc();
61  spl->spline=gsl_spline_alloc(gsl_interp_cspline,n);
62  gsl_spline_init(spl->spline,x,y,n);
63  spl->x0=x[0];
64  spl->xf=x[n-1];
65  spl->y0=y0;
66  spl->yf=yf;
67 
68  return spl;
69 }
70 
71 double spline_eval(double x,SplPar *spl)
72 {
73  if(x<=spl->x0)
74  return spl->y0;
75  else if(x>=spl->xf)
76  return spl->yf;
77  else
78  return gsl_spline_eval(spl->spline,x,spl->intacc);
79 }
80 
81 void spline_free(SplPar *spl)
82 {
83  gsl_spline_free(spl->spline);
84  gsl_interp_accel_free(spl->intacc);
85  free(spl);
86 }
87 
89 {
90  RunParams *par=(RunParams *)dam_malloc(sizeof(RunParams));
91  par->om=0.3;
92  par->ol=0.7;
93  par->ob=0.05;
94  par->w0=-1.;
95  par->wa=0.;
96  par->ns=0.96;
97  par->s8=0.8;
98  par->fname_window=dam_malloc(2*sizeof(char *));
99  par->fname_window[0]=dam_malloc(256*sizeof(char));
100  par->fname_window[1]=dam_malloc(256*sizeof(char));
101  sprintf(par->fname_window[0],"default");
102  sprintf(par->fname_window[1],"default");
103  sprintf(par->fname_bias,"default");
104  sprintf(par->fname_sbias,"default");
105  sprintf(par->fname_pk,"default");
106  sprintf(par->prefix_out,"default");
107  par->lmax=100;
108  par->cpar=NULL;
109  par->chi_horizon=-1.;
110  par->chi_LSS=-1.;
111  par->prefac_lensing=-1.;
112  par->dchi=-1.;
113  par->aofchi=NULL;
114  par->zofchi=NULL;
115  par->hofchi=NULL;
116  par->gfofchi=NULL;
117  par->fgofchi=NULL;
118  par->wind_0=NULL;
119  par->wind_M=NULL;
120  par->wind_L=NULL;
121  par->bias=NULL;
122  par->sbias=NULL;
123  par->do_nc=0;
124  par->do_shear=0;
125  par->do_cmblens=0;
126  par->do_isw=0;
127  par->has_bg=0;
128  par->has_dens=0;
129  par->has_rsd=0;
130  par->has_lensing=0;
131  par->cl_dd=NULL;
132  par->cl_d1l2=NULL;
133  par->cl_d2l1=NULL;
134  par->cl_dc=NULL;
135  par->cl_di=NULL;
136  par->cl_ll=NULL;
137  par->cl_lc=NULL;
138  par->cl_li=NULL;
139  par->cl_cc=NULL;
140  par->cl_ci=NULL;
141  par->cl_ii=NULL;
142  par->do_w_theta=0;
143  par->th_min=0;
144  par->th_max=10.;
145  par->n_th=15;
146  par->n_th_logint=5;
147  par->wt_dd=NULL;
148  par->wt_d1l2=NULL;
149  par->wt_d2l1=NULL;
150  par->wt_dc=NULL;
151  par->wt_di=NULL;
152  par->wt_ll_pp=NULL;
153  par->wt_ll_mm=NULL;
154  par->wt_lc=NULL;
155  par->wt_li=NULL;
156  par->wt_cc=NULL;
157  par->wt_ci=NULL;
158  par->wt_ii=NULL;
159  return par;
160 }
161 
163 {
164  csm_params_free(par->cpar);
165  if(par->has_bg) {
166  spline_free(par->aofchi);
167  spline_free(par->zofchi);
168  spline_free(par->hofchi);
169  spline_free(par->gfofchi);
170  spline_free(par->fgofchi);
171  }
172  if(par->do_nc || par->do_shear) {
173  spline_free(par->wind_0[0]);
174  spline_free(par->wind_0[1]);
175  free(par->wind_0);
176  }
177  if(par->do_nc) {
178  free(par->cl_dd);
179  if(par->do_w_theta)
180  free(par->wt_dd);
181  if(par->do_shear) {
182  free(par->cl_d1l2);
183  free(par->cl_d2l1);
184  if(par->do_w_theta) {
185  free(par->wt_d1l2);
186  free(par->wt_d2l1);
187  }
188  }
189  if(par->do_cmblens) {
190  free(par->cl_dc);
191  if(par->do_w_theta)
192  free(par->wt_dc);
193  }
194  if(par->do_isw) {
195  free(par->cl_di);
196  if(par->do_w_theta)
197  free(par->wt_di);
198  }
199  if(par->has_dens)
200  spline_free(par->bias);
201  if(par->has_lensing) {
202  spline_free(par->sbias);
203  spline_free(par->wind_M[0]);
204  spline_free(par->wind_M[1]);
205  free(par->wind_M);
206  }
207  }
208  if(par->do_shear) {
209  spline_free(par->wind_L[0]);
210  spline_free(par->wind_L[1]);
211  free(par->wind_L);
212  free(par->cl_ll);
213  if(par->do_w_theta) {
214  free(par->wt_ll_pp);
215  free(par->wt_ll_mm);
216  }
217  if(par->do_cmblens) {
218  free(par->cl_lc);
219  if(par->do_w_theta)
220  free(par->wt_lc);
221  }
222  if(par->do_isw) {
223  free(par->cl_li);
224  if(par->do_w_theta)
225  free(par->wt_li);
226  }
227  }
228  if(par->do_cmblens) {
229  free(par->cl_cc);
230  if(par->do_isw) {
231  free(par->cl_ci);
232  if(par->do_w_theta)
233  free(par->wt_ci);
234  }
235  }
236  if(par->do_isw)
237  free(par->cl_ii);
238 
239  free(par);
240 }
double * cl_ci
Definition: common.h:65
double * wt_d1l2
Definition: common.h:74
SplPar * sbias
Definition: common.h:55
double chi_horizon
Definition: common.h:34
double yf
Definition: ccl_utils.h:53
double * wt_di
Definition: common.h:77
double * wt_li
Definition: common.h:81
double prefac_lensing
Definition: common.h:36
void dam_report_error(int level, char *fmt,...)
Definition: common.c:39
double * cl_d1l2
Definition: common.h:57
double x0
Definition: ccl_utils.h:52
int do_isw
Definition: common.h:41
double ns
Definition: common.h:26
double chi_LSS
Definition: common.h:35
double * wt_dc
Definition: common.h:76
SplPar * hofchi
Definition: common.h:48
Csm_params * cpar
Definition: common.h:33
SplPar * zofchi
Definition: common.h:47
int lmax
Definition: common.h:32
double * wt_lc
Definition: common.h:80
double w0
Definition: common.h:25
gsl_spline * spline
Definition: ccl_utils.h:51
double * wt_ll_pp
Definition: common.h:78
SplPar * spline_init(int n, double *x, double *y, double y0, double yf)
Definition: common.c:57
int do_cmblens
Definition: common.h:40
double th_max
Definition: common.h:70
FILE * dam_fopen(const char *path, const char *mode)
Definition: common.c:20
SplPar * gfofchi
Definition: common.h:49
double y0
Definition: ccl_utils.h:53
void * dam_calloc(size_t nmemb, size_t size)
Definition: common.c:11
double om
Definition: common.h:24
char fname_bias[256]
Definition: common.h:28
double * cl_cc
Definition: common.h:64
SplPar ** wind_0
Definition: common.h:51
RunParams * param_new(void)
Definition: common.c:88
int n_th
Definition: common.h:71
double * cl_di
Definition: common.h:60
int n_th_logint
Definition: common.h:72
char fname_pk[256]
Definition: common.h:30
static CCL_BEGIN_DECLS double x[111][8]
gsl_interp_accel * intacc
Definition: ccl_utils.h:50
char prefix_out[256]
Definition: common.h:31
double ob
Definition: common.h:24
SplPar * aofchi
Definition: common.h:46
double * cl_d2l1
Definition: common.h:58
double dchi
Definition: common.h:37
double * cl_ll
Definition: common.h:61
double spline_eval(double x, SplPar *spl)
Definition: common.c:71
char fname_sbias[256]
Definition: common.h:29
void * dam_malloc(size_t size)
Definition: common.c:3
SplPar * bias
Definition: common.h:54
int do_shear
Definition: common.h:39
int do_nc
Definition: common.h:38
double * cl_dd
Definition: common.h:56
int has_rsd
Definition: common.h:44
void spline_free(SplPar *spl)
Definition: common.c:81
double * wt_cc
Definition: common.h:82
SplPar ** wind_M
Definition: common.h:52
int has_dens
Definition: common.h:43
double th_min
Definition: common.h:69
double * cl_li
Definition: common.h:63
double wa
Definition: common.h:25
double * wt_d2l1
Definition: common.h:75
int has_bg
Definition: common.h:42
char ** fname_window
Definition: common.h:27
SplPar ** wind_L
Definition: common.h:53
SplPar * fgofchi
Definition: common.h:50
double * cl_ii
Definition: common.h:66
static double mode[351]
double * wt_ii
Definition: common.h:84
int has_lensing
Definition: common.h:45
double * wt_ll_mm
Definition: common.h:79
double * cl_dc
Definition: common.h:59
double * wt_dd
Definition: common.h:73
double s8
Definition: common.h:26
double ol
Definition: common.h:24
int do_w_theta
Definition: common.h:67
double xf
Definition: ccl_utils.h:52
double * wt_ci
Definition: common.h:83
void param_free(RunParams *par)
Definition: common.c:162
double * cl_lc
Definition: common.h:62
int dam_linecount(FILE *f)
Definition: common.c:29