Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
io.c File Reference
#include "common.h"
Include dependency graph for io.c:

Go to the source code of this file.

Functions

static void write_wt_single (int n_th, int n_th_logint, int th_min, int th_max, int do_logbin, double *wt, char *prefix, char *suffix)
 
static void write_cl_single (int lmax, double *cl, char *prefix, char *suffix)
 
void write_output (RunParams *par)
 
int read_parameter_file (char *fname, RunParams *par)
 

Function Documentation

int read_parameter_file ( char *  fname,
RunParams par 
)

Definition at line 112 of file io.c.

References dam_fopen(), dam_linecount(), dam_report_error(), RunParams::dchi, RunParams::do_cmblens, RunParams::do_isw, RunParams::do_nc, RunParams::do_shear, RunParams::do_w_theta, RunParams::do_w_theta_logbin, RunParams::fname_bias, RunParams::fname_pk, RunParams::fname_sbias, RunParams::fname_window, RunParams::h0, RunParams::has_bg, RunParams::has_dens, RunParams::has_lensing, RunParams::has_rsd, RunParams::lmax, RunParams::n_th, RunParams::n_th_logint, RunParams::ns, RunParams::ob, RunParams::ol, RunParams::om, RunParams::prefix_out, RunParams::s8, RunParams::th_max, RunParams::th_min, RunParams::w0, and RunParams::wa.

Referenced by init_params().

113 {
114  FILE *fi;
115  int n_lin,ii;
116 
117  //Read parameters from file
118  fi=dam_fopen(fname,"r");
119  n_lin=dam_linecount(fi); rewind(fi);
120  for(ii=0;ii<n_lin;ii++) {
121  char s0[512],s1[64],s2[256];
122  if(fgets(s0,sizeof(s0),fi)==NULL)
123  dam_report_error(1,"Error reading line %d, file %s\n",ii+1,fname);
124  if((s0[0]=='#')||(s0[0]=='\n')||(s0[0]==' ')) continue;
125  int sr=sscanf(s0,"%s %s",s1,s2);
126  if(sr!=2)
127  dam_report_error(1,"Error reading line %d, file %s\n",ii+1,fname);
128 
129  if(!strcmp(s1,"omega_m="))
130  par->om=atof(s2);
131  else if(!strcmp(s1,"omega_l="))
132  par->ol=atof(s2);
133  else if(!strcmp(s1,"omega_b="))
134  par->ob=atof(s2);
135  else if(!strcmp(s1,"w0="))
136  par->w0=atof(s2);
137  else if(!strcmp(s1,"wa="))
138  par->wa=atof(s2);
139  else if(!strcmp(s1,"h="))
140  par->h0=atof(s2);
141  else if(!strcmp(s1,"ns="))
142  par->ns=atof(s2);
143  else if(!strcmp(s1,"s8="))
144  par->s8=atof(s2);
145  else if(!strcmp(s1,"d_chi="))
146  par->dchi=atof(s2);
147  else if(!strcmp(s1,"l_max="))
148  par->lmax=atoi(s2);
149  else if(!strcmp(s1,"do_nc="))
150  par->do_nc=atoi(s2);
151  else if(!strcmp(s1,"has_nc_dens="))
152  par->has_dens=atoi(s2);
153  else if(!strcmp(s1,"has_nc_rsd="))
154  par->has_rsd=atoi(s2);
155  else if(!strcmp(s1,"has_nc_lensing="))
156  par->has_lensing=atoi(s2);
157  else if(!strcmp(s1,"do_shear="))
158  par->do_shear=atoi(s2);
159  else if(!strcmp(s1,"do_cmblens="))
160  par->do_cmblens=atoi(s2);
161  else if(!strcmp(s1,"do_isw="))
162  par->do_isw=atoi(s2);
163  else if(!strcmp(s1,"do_w_theta="))
164  par->do_w_theta=atoi(s2);
165  else if(!strcmp(s1,"use_logbin="))
166  par->do_w_theta_logbin=atoi(s2);
167  else if(!strcmp(s1,"theta_min="))
168  par->th_min=atof(s2);
169  else if(!strcmp(s1,"theta_max="))
170  par->th_max=atof(s2);
171  else if(!strcmp(s1,"n_bins_theta="))
172  par->n_th=atof(s2);
173  else if(!strcmp(s1,"n_bins_decade="))
174  par->n_th_logint=atof(s2);
175  else if(!strcmp(s1,"window_1_fname="))
176  sprintf(par->fname_window[0],"%s",s2);
177  else if(!strcmp(s1,"window_2_fname="))
178  sprintf(par->fname_window[1],"%s",s2);
179  else if(!strcmp(s1,"bias_fname="))
180  sprintf(par->fname_bias,"%s",s2);
181  else if(!strcmp(s1,"sbias_fname="))
182  sprintf(par->fname_sbias,"%s",s2);
183  else if(!strcmp(s1,"pk_fname="))
184  sprintf(par->fname_pk,"%s",s2);
185  else if(!strcmp(s1,"prefix_out="))
186  sprintf(par->prefix_out,"%s",s2);
187  else
188  dam_report_error(0,"Unknown parameter %s\n",s1);
189  }
190  fclose(fi);
191 
192  if(par->do_w_theta==0)
193  par->do_w_theta_logbin=0;
194 
195  par->has_bg=1;
196 
197  return 0;
198 }
void dam_report_error(int level, char *fmt,...)
Definition: common.c:39
int do_isw
Definition: common.h:41
double ns
Definition: common.h:26
int lmax
Definition: common.h:32
double w0
Definition: common.h:25
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
double om
Definition: common.h:24
char fname_bias[256]
Definition: common.h:28
int n_th
Definition: common.h:71
int n_th_logint
Definition: common.h:72
char fname_pk[256]
Definition: common.h:30
char prefix_out[256]
Definition: common.h:31
double ob
Definition: common.h:24
double dchi
Definition: common.h:37
char fname_sbias[256]
Definition: common.h:29
double h0
Definition: common.h:25
int do_shear
Definition: common.h:39
int do_nc
Definition: common.h:38
int has_rsd
Definition: common.h:44
int has_dens
Definition: common.h:43
double th_min
Definition: common.h:69
double wa
Definition: common.h:25
int has_bg
Definition: common.h:42
char ** fname_window
Definition: common.h:27
int has_lensing
Definition: common.h:45
double s8
Definition: common.h:26
double ol
Definition: common.h:24
int do_w_theta
Definition: common.h:67
int do_w_theta_logbin
Definition: common.h:68
int dam_linecount(FILE *f)
Definition: common.c:29
static void write_cl_single ( int  lmax,
double cl,
char *  prefix,
char *  suffix 
)
static

Definition at line 23 of file io.c.

References dam_fopen(), and cl_cmbl_bm::l.

Referenced by write_output().

24 {
25  int l;
26  FILE *fo;
27  char fname[256];
28 
29  sprintf(fname,"%s_cl_%s.txt",prefix,suffix);
30  fo=dam_fopen(fname,"w");
31  for(l=0;l<=lmax;l++)
32  fprintf(fo,"%d %lE\n",l,cl[l]);
33  fclose(fo);
34 }
FILE * dam_fopen(const char *path, const char *mode)
Definition: common.c:20
void write_output ( RunParams par)

Definition at line 36 of file io.c.

References RunParams::cl_cc, RunParams::cl_ci, RunParams::cl_d1l2, RunParams::cl_d2l1, RunParams::cl_dc, RunParams::cl_dd, RunParams::cl_di, RunParams::cl_ii, RunParams::cl_lc, RunParams::cl_li, RunParams::cl_ll, RunParams::do_cmblens, RunParams::do_isw, RunParams::do_nc, RunParams::do_shear, RunParams::do_w_theta, RunParams::do_w_theta_logbin, RunParams::lmax, RunParams::n_th, RunParams::n_th_logint, RunParams::prefix_out, RunParams::th_max, RunParams::th_min, write_cl_single(), write_wt_single(), RunParams::wt_cc, RunParams::wt_ci, RunParams::wt_d1l2, RunParams::wt_d2l1, RunParams::wt_dc, RunParams::wt_dd, RunParams::wt_di, RunParams::wt_ii, RunParams::wt_lc, RunParams::wt_li, RunParams::wt_ll_mm, and RunParams::wt_ll_pp.

Referenced by main().

37 {
38  if(par->do_nc) {
39  write_cl_single(par->lmax,par->cl_dd,par->prefix_out,"dd");
40  if(par->do_shear) {
41  write_cl_single(par->lmax,par->cl_d1l2,par->prefix_out,"d1l2");
42  write_cl_single(par->lmax,par->cl_d2l1,par->prefix_out,"d2l1");
43  }
44  if(par->do_cmblens)
45  write_cl_single(par->lmax,par->cl_dc,par->prefix_out,"dc");
46  if(par->do_isw)
47  write_cl_single(par->lmax,par->cl_di,par->prefix_out,"di");
48  }
49  if(par->do_shear) {
50  write_cl_single(par->lmax,par->cl_ll,par->prefix_out,"ll");
51  if(par->do_cmblens)
52  write_cl_single(par->lmax,par->cl_lc,par->prefix_out,"lc");
53  if(par->do_isw)
54  write_cl_single(par->lmax,par->cl_li,par->prefix_out,"li");
55  }
56  if(par->do_cmblens) {
57  write_cl_single(par->lmax,par->cl_cc,par->prefix_out,"cc");
58  if(par->do_isw)
59  write_cl_single(par->lmax,par->cl_ci,par->prefix_out,"ci");
60  }
61  if(par->do_isw)
62  write_cl_single(par->lmax,par->cl_ii,par->prefix_out,"ii");
63 
64  if(par->do_w_theta) {
65  if(par->do_nc) {
66  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
67  par->do_w_theta_logbin,par->wt_dd,par->prefix_out,"dd");
68  if(par->do_shear) {
69  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
70  par->do_w_theta_logbin,par->wt_d1l2,par->prefix_out,"d1l2");
71  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
72  par->do_w_theta_logbin,par->wt_d2l1,par->prefix_out,"d2l1");
73  }
74  if(par->do_cmblens) {
75  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
76  par->do_w_theta_logbin,par->wt_dc,par->prefix_out,"dc");
77  }
78  if(par->do_isw) {
79  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
80  par->do_w_theta_logbin,par->wt_di,par->prefix_out,"di");
81  }
82  }
83  if(par->do_shear) {
84  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
85  par->do_w_theta_logbin,par->wt_ll_pp,par->prefix_out,"ll_pp");
86  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
87  par->do_w_theta_logbin,par->wt_ll_mm,par->prefix_out,"ll_mm");
88  if(par->do_cmblens) {
89  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
90  par->do_w_theta_logbin,par->wt_lc,par->prefix_out,"lc");
91  }
92  if(par->do_isw) {
93  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
94  par->do_w_theta_logbin,par->wt_li,par->prefix_out,"li");
95  }
96  }
97  if(par->do_cmblens) {
98  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
99  par->do_w_theta_logbin,par->wt_cc,par->prefix_out,"cc");
100  if(par->do_isw) {
101  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
102  par->do_w_theta_logbin,par->wt_ci,par->prefix_out,"ci");
103  }
104  }
105  if(par->do_isw) {
106  write_wt_single(par->n_th,par->n_th_logint,par->th_min,par->th_max,
107  par->do_w_theta_logbin,par->wt_ii,par->prefix_out,"ii");
108  }
109  }
110 }
double * cl_ci
Definition: common.h:65
double * wt_d1l2
Definition: common.h:74
double * wt_di
Definition: common.h:77
double * wt_li
Definition: common.h:81
double * cl_d1l2
Definition: common.h:57
int do_isw
Definition: common.h:41
double * wt_dc
Definition: common.h:76
int lmax
Definition: common.h:32
double * wt_lc
Definition: common.h:80
double * wt_ll_pp
Definition: common.h:78
int do_cmblens
Definition: common.h:40
double th_max
Definition: common.h:70
double * cl_cc
Definition: common.h:64
int n_th
Definition: common.h:71
double * cl_di
Definition: common.h:60
int n_th_logint
Definition: common.h:72
static void write_wt_single(int n_th, int n_th_logint, int th_min, int th_max, int do_logbin, double *wt, char *prefix, char *suffix)
Definition: io.c:3
char prefix_out[256]
Definition: common.h:31
double * cl_d2l1
Definition: common.h:58
double * cl_ll
Definition: common.h:61
int do_shear
Definition: common.h:39
int do_nc
Definition: common.h:38
double * cl_dd
Definition: common.h:56
double * wt_cc
Definition: common.h:82
double th_min
Definition: common.h:69
double * cl_li
Definition: common.h:63
double * wt_d2l1
Definition: common.h:75
double * cl_ii
Definition: common.h:66
double * wt_ii
Definition: common.h:84
double * wt_ll_mm
Definition: common.h:79
double * cl_dc
Definition: common.h:59
double * wt_dd
Definition: common.h:73
int do_w_theta
Definition: common.h:67
static void write_cl_single(int lmax, double *cl, char *prefix, char *suffix)
Definition: io.c:23
int do_w_theta_logbin
Definition: common.h:68
double * wt_ci
Definition: common.h:83
double * cl_lc
Definition: common.h:62
static void write_wt_single ( int  n_th,
int  n_th_logint,
int  th_min,
int  th_max,
int  do_logbin,
double wt,
char *  prefix,
char *  suffix 
)
static

Definition at line 3 of file io.c.

References dam_fopen(), and pow().

Referenced by write_output().

5 {
6  int ith;
7  FILE *fo;
8  char fname[256];
9 
10  sprintf(fname,"%s_wt_%s.txt",prefix,suffix);
11  fo=dam_fopen(fname,"w");
12  for(ith=0;ith<n_th;ith++) {
13  double th;
14  if(do_logbin)
15  th=th_max*pow(10.,(ith+0.5-n_th)/n_th_logint);
16  else
17  th=th_min+(th_max-th_min)*(ith+0.5)/n_th;
18  fprintf(fo,"%lE %lE\n",th,wt[ith]);
19  }
20  fclose(fo);
21 }
FILE * dam_fopen(const char *path, const char *mode)
Definition: common.c:20
float pow(float base, unsigned long int exp)
Definition: precision.hpp:39