5 #include <gsl/gsl_integration.h> 6 #include <gsl/gsl_interp.h> 7 #include <gsl/gsl_spline.h> 8 #include <gsl/gsl_errno.h> 22 struct background *ba,
26 struct primordial *pm,
34 if(init_arr[i_init--]) {
35 if (spectra_free(sp) == _FAILURE_) {
42 if(init_arr[i_init--]) {
43 if (transfer_free(tr) == _FAILURE_) {
50 if(init_arr[i_init--]) {
51 if (nonlinear_free(nl) == _FAILURE_) {
58 if(init_arr[i_init--]) {
59 if (primordial_free(pm) == _FAILURE_) {
66 if(init_arr[i_init--]) {
67 if (perturb_free(pt) == _FAILURE_) {
74 if(init_arr[i_init--]) {
75 if (thermodynamics_free(th) == _FAILURE_) {
82 if(init_arr[i_init--]) {
83 if (background_free(ba) == _FAILURE_) {
97 struct primordial *pm,
106 ba->tau_table = NULL;
108 ba->d2tau_dz2_table = NULL;
109 ba->background_table = NULL;
110 ba->d2background_dtau2_table = NULL;
114 th->thermodynamics_table = NULL;
115 th->d2thermodynamics_dz2_table = NULL;
118 pt->tau_sampling = NULL;
122 pt->k_size_cmb = NULL;
123 pt->k_size_cl = NULL;
128 pm->amplitude = NULL;
133 pm->is_non_zero = NULL;
135 pm->ic_ic_size = NULL;
141 nl->nl_corr_density = NULL;
146 tr->l_size_tt = NULL;
155 sp->is_non_zero = NULL;
157 sp->ic_ic_size = NULL;
161 struct file_content *fc,
163 struct background* ba,
166 struct transfers* tr,
167 struct primordial* pm,
179 if(input_init(fc,pr,ba,th,pt,tr,pm,sp,nl,le,op,errmsg) == _FAILURE_) {
184 if (background_init(pr,ba) == _FAILURE_) {
189 init_arr[i_init++]=1;
190 if (thermodynamics_init(pr,ba,th) == _FAILURE_) {
195 init_arr[i_init++]=1;
196 if (perturb_init(pr,ba,th,pt) == _FAILURE_) {
201 init_arr[i_init++]=1;
202 if (primordial_init(pr,pt,pm) == _FAILURE_) {
207 init_arr[i_init++]=1;
208 if (nonlinear_init(pr,ba,th,pt,pm,nl) == _FAILURE_) {
213 init_arr[i_init++]=1;
214 if (transfer_init(pr,ba,th,pt,nl,tr) == _FAILURE_) {
219 init_arr[i_init++]=1;
220 if (spectra_init(pr,ba,pt,pm,nl,tr,sp) == _FAILURE_) {
225 init_arr[i_init++]=1;
229 double sigma8,
int * status)
233 struct background ba;
237 struct primordial pm;
244 double k_max_old = 0.;
245 int position_kmax =2;
247 int init_arr[7]={0,0,0,0,0,0,0};
249 if (strcmp(fc->name[position_kmax],
"P_k_max_1/Mpc")) {
250 k_max_old = strtof(fc->value[position_kmax],NULL);
251 sprintf(fc->value[position_kmax],
"%.15e",10.);
253 A_s_guess = 2.43e-9/0.87659*
sigma8;
254 sprintf(fc->value[position_As],
"%.15e",A_s_guess);
256 ccl_run_class(cosmo, fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,init_arr,status);
258 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
261 sprintf(fc->value[position_kmax],
"%.15e",k_max_old);
267 int parser_length,
int * status)
273 for (
int i = 0; i< parser_length; i++){
274 strcpy(fc->name[i],
" ");
275 strcpy(fc->value[i],
" ");
278 strcpy(fc->name[0],
"output");
279 strcpy(fc->value[0],
"mPk");
281 strcpy(fc->name[1],
"non linear");
283 strcpy(fc->value[1],
"Halofit");
285 strcpy(fc->value[1],
"none");
287 strcpy(fc->name[2],
"P_k_max_1/Mpc");
290 strcpy(fc->name[3],
"z_max_pk");
293 strcpy(fc->name[4],
"modes");
294 strcpy(fc->value[4],
"s");
296 strcpy(fc->name[5],
"lensing");
297 strcpy(fc->value[5],
"no");
300 strcpy(fc->name[6],
"h");
301 sprintf(fc->value[6],
"%.15e",cosmo->
params.
h);
303 strcpy(fc->name[7],
"Omega_cdm");
306 strcpy(fc->name[8],
"Omega_b");
309 strcpy(fc->name[9],
"Omega_k");
312 strcpy(fc->name[10],
"n_s");
313 sprintf(fc->value[10],
"%.15e",cosmo->
params.
n_s);
319 strcpy(fc->name[11],
"Omega_Lambda");
320 sprintf(fc->value[11],
"%.15e",0.0);
322 strcpy(fc->name[12],
"w0_fld");
323 sprintf(fc->value[12],
"%.15e",cosmo->
params.
w0);
325 strcpy(fc->name[13],
"wa_fld");
326 sprintf(fc->value[13],
"%.15e",cosmo->
params.
wa);
331 strcpy(fc->name[14],
"N_ur");
335 strcpy(fc->name[14],
"N_ur");
336 sprintf(fc->value[14],
"%.15e", 0.);
339 strcpy(fc->name[15],
"N_ncdm");
341 strcpy(fc->name[16],
"m_ncdm");
342 sprintf(fc->value[16],
"%f", (cosmo->
params.
mnu)[0]);
346 sprintf(tmp,
", %f",(cosmo->
params.
mnu)[i]);
347 strcat(fc->value[16],tmp);
353 strcpy(fc->name[17],
"T_cmb");
354 sprintf(fc->value[17],
"%.15e",cosmo->
params.
T_CMB);
363 strcpy(fc->name[parser_length-1],
"A_s");
367 strcpy(fc->name[parser_length-1],
"A_s");
368 sprintf(fc->value[parser_length-1],
"%.15e",cosmo->
params.
A_s);
381 struct background ba;
385 struct primordial pm;
390 struct file_content fc;
396 int parser_length = 20;
397 int init_arr[7]={0,0,0,0,0,0,0};
398 if (parser_init(&fc,parser_length,
"none",errmsg) == _FAILURE_) {
407 ccl_run_class(cosmo, &fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,init_arr,status);
411 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
415 if (parser_free(&fc)== _FAILURE_) {
418 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
430 double ndecades = log10(kmax) - log10(kmin);
440 double * y2d_lin = malloc(nk * na *
sizeof(
double));
441 double * y2d_nl = malloc(nk * na *
sizeof(
double));
445 if (a==NULL|| x==NULL || y2d_lin==NULL || y2d_nl==NULL) {
460 for (
int i=0; i<nk; i++) {
461 for (
int j = 0; j < na; j++) {
465 newstatus |= spectra_pk_at_k_and_z(&ba, &pm, &sp,x[i],1./a[j]-1., &psout_l,&ic);
466 y2d_lin[j*nk+i] = log(psout_l);
486 pwstatus = gsl_spline2d_init(log_power, x, a, y2d_lin,nk,na);
492 gsl_spline2d_free(log_power);
504 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
512 if (kmin<(exp(sp.ln_k[0]))) {
514 ccl_cosmology_set_status_message(cosmo,
"ccl_power.c: ccl_cosmology_compute_power_class(): K_MIN is less than CLASS's kmin. Not yet supported for nonlinear P(k).\n");
527 for (
int i=0; i<nk; i++) {
528 for (
int j = 0; j < na; j++) {
529 newstatus |= spectra_pk_nl_at_k_and_z(&ba, &pm, &sp,exp(x[i]),1./a[j]-1.,&psout_nl);
530 y2d_nl[j*nk+i] = log(psout_nl);
544 gsl_spline2d * log_power_nl = gsl_spline2d_alloc(
PNL_SPLINE_TYPE, nk,na);
545 pwstatus = gsl_spline2d_init(log_power_nl, x, a, y2d_nl,nk,na);
550 gsl_spline2d_free(log_power_nl);
557 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
578 double bfunc, bfunc4;
587 bfunc = b0/(1.+
pow(z/2.3,2.5));
588 bfunc4 = (1-bfunc)*(1-bfunc)*(1-bfunc)*(1-bfunc);
590 gf = bfunc/(1+
pow(kh/kg,3.))+1.-bfunc;
599 struct background ba;
603 struct primordial pm;
608 struct file_content fc;
614 int parser_length = 20;
615 int init_arr[7]={0,0,0,0,0,0,0};
616 if (parser_init(&fc,parser_length,
"none",errmsg) == _FAILURE_) {
625 ccl_run_class(cosmo, &fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,init_arr,status);
629 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
632 if (parser_free(&fc)== _FAILURE_) {
635 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
639 f = fopen(filename,
"w");
643 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
649 for (
int i=0; i<sp.ln_k_size; i++) {
650 s |= spectra_pk_at_k_and_z(&ba, &pm, &sp,exp(sp.ln_k[i]),z, &psout_l,&ic);
651 fprintf(f,
"%e %e\n",exp(sp.ln_k[i]),psout_l);
659 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
690 OMh2=params->
Omega_m*params->
h*params->
h;
691 OBh2=params->
Omega_b*params->
h*params->
h;
692 th2p7=params->
T_CMB/2.7;
694 eh->
zeq=2.5E4*OMh2/
pow(th2p7,4);
695 eh->
keq=0.0746*OMh2/(params->
h*th2p7*th2p7);
699 b1=0.313*
pow(OMh2,-0.419)*(1+0.607*
pow(OMh2,0.674));
700 b2=0.238*
pow(OMh2,0.223);
701 eh->
zdrag=1291*
pow(OMh2,0.251)*(1+b1*
pow(OBh2,b2))/(1+0.659*
pow(OMh2,0.828));
707 Req=31.5*OBh2*1000./(eh->
zeq*
pow(th2p7,4));
708 Rd=31.5*OBh2*1000./((1+eh->
zdrag)*
pow(th2p7,4));
713 eh->
kSilk=1.6*
pow(OBh2,0.52)*
pow(OMh2,0.73)*(1+
pow(10.4*OMh2,-0.95))/params->
h;
717 a1=
pow(46.9*OMh2,0.670)*(1+
pow(32.1*OMh2,-0.532));
718 a2=
pow(12.0*OMh2,0.424)*(1+
pow(45.0*OMh2,-0.582));
720 eh->
alphac=
pow(a1,-b_frac)*
pow(a2,-b_frac*b_frac*b_frac);
724 bb1=0.944/(1+
pow(458*OMh2,-0.708));
725 bb2=
pow(0.395*OMh2,-0.0266);
726 eh->
betac=1/(1+bb1*(
pow(1-b_frac,bb2)-1));
729 double sqy=
sqrt(1+y);
730 double gy=y*(-6*sqy+(2+3*y)*log((sqy+1)/(sqy-1)));
735 eh->
betab=0.5+b_frac+(3-2*b_frac)*
sqrt(
pow(17.2*OMh2,2)+1);
747 static double tkEH_0(
double keq,
double k,
double a,
double b)
752 double q=k/(13.41*keq);
753 double c=14.2/a+386./(1+69.9*
pow(q,1.08));
754 double l=log(M_E+1.8*b*q);
773 if(ax2<1e-4) jl=1-ax2*(1-ax2/20.)/6.;
784 double x_bessel,part1,part2,jbes;
801 return jbes0(x_bessel)*(part1+part2);
819 double OMh2=params->
Omega_m*params->
h*params->
h;
821 double alpha_gamma=1-0.328*log(431*OMh2)*b_frac+0.38*log(22.3*OMh2)*b_frac*b_frac;
823 double gamma_eff=params->
Omega_m*params->
h*(alpha_gamma+(1-alpha_gamma)/
828 double l0=log(2*M_E+1.8*q);
829 double c0=14.2+731/(1+62.5*q);
839 double kinvh=k/params->
h;
853 double ndecades = log10(kmax) - log10(kmin);
879 double * y = malloc(
sizeof(
double)*nk);
883 double * y2d = malloc(nk * na *
sizeof(
double));
884 if (a==NULL || y==NULL || x==NULL || y2d==NULL) {
885 free(eh);free(x);free(y);
897 for (
int i=0; i<nk; i++) {
905 for (
int j = 0; j < na; j++) {
908 for (
int i=0; i<nk; i++) {
909 y2d[j*nk+i] = y[i]+g2;
915 free(eh); free(x); free(y); free(a); free(y2d);
916 gsl_spline2d_free(log_power_lin);
921 int splinstatus = gsl_spline2d_init(log_power_lin, x, a, y2d,nk,na);
923 free(eh); free(x); free(y); free(a); free(y2d);
924 gsl_spline2d_free(log_power_lin);
939 free(eh); free(x); free(y); free(a); free(y2d);
940 gsl_spline2d_free(log_power_lin);
946 double log_normalization_factor = 2*(log(cosmo->
params.
sigma8) - log(sigma8));
947 for (
int i=0; i < nk; i++) {
948 y[i] += log_normalization_factor;
950 for (
int j = 0; j < na; j++) {
953 for (
int i=0; i<nk; i++) {
954 y2d[j*nk+i] = y[i]+g2;
958 splinstatus = gsl_spline2d_init(log_power_lin, x, a, y2d, nk, na);
960 free(eh); free(x); free(y); free(a); free(y2d);
961 gsl_spline2d_free(log_power_lin);
971 gsl_spline2d * log_power_nl = gsl_spline2d_alloc(
PNL_SPLINE_TYPE, nk, na);
972 splinstatus = gsl_spline2d_init(log_power_nl, x, a, y2d, nk, na);
975 free(eh); free(x); free(y); free(a); free(y2d);
976 gsl_spline2d_free(log_power_lin);
977 gsl_spline2d_free(log_power_nl);
986 free(eh); free(x); free(y); free(a); free(y2d);
998 return pow(log(1.+2.34*q)/(2.34*q),2.0)/
pow(1.+3.89*q+
pow(16.1*q,2.0)+
pow(5.46*q,3.0)+
pow(6.71*q,4.0),0.5);
1027 double ndecades = log10(kmax) - log10(kmin);
1043 double * y = malloc(
sizeof(
double)*nk);
1045 double * y2d = malloc(nk * na *
sizeof(
double));
1048 if (a==NULL||y==NULL|| x==NULL || y2d==0) {
1059 for (
int i=0; i<nk; i++) {
1064 for (
int j = 0; j < na; j++) {
1066 double g2 = 2.*log(gfac);
1067 for (
int i=0; i<nk; i++) {
1068 y2d[j*nk+i] = y[i]+g2;
1076 gsl_spline2d * log_power_lin_unnorm = gsl_spline2d_alloc(
PLIN_SPLINE_TYPE, nk,na);
1077 splinstatus = gsl_spline2d_init(log_power_lin_unnorm, x, a, y2d,nk,na);
1084 gsl_spline2d_free(log_power_lin_unnorm);
1091 free(x); free(y); free(a); free(y2d);
1105 double log_normalization_factor = 2*(log(cosmo->
params.
sigma8) - log(sigma8));
1106 for (
int i=0; i<nk; i++) {
1107 y[i] += log_normalization_factor;
1109 for (
int j = 0; j < na; j++) {
1111 double g2 = 2.*log(gfac);
1112 for (
int i=0; i<nk; i++) {
1113 y2d[j*nk+i] = y[i]+g2;
1121 gsl_spline2d * log_power_lin = gsl_spline2d_alloc(
PLIN_SPLINE_TYPE, nk,na);
1122 splinstatus = gsl_spline2d_init(log_power_lin, x, a, y2d,nk,na);
1127 gsl_spline2d_free(log_power_lin);
1136 gsl_spline2d * log_power_nl = gsl_spline2d_alloc(
PNL_SPLINE_TYPE, nk,na);
1137 splinstatus = gsl_spline2d_init(log_power_nl, x, a, y2d,nk,na);
1141 gsl_spline2d_free(log_power_nl);
1147 free(x); free(y); free(a); free(y2d);
1162 struct background ba;
1165 struct transfers tr;
1166 struct primordial pm;
1171 struct file_content fc;
1173 double Omeganuh2_eq;
1180 int parser_length = 20;
1181 int init_arr[7]={0,0,0,0,0,0,0};
1184 if (parser_init(&fc,parser_length,
"none",errmsg) == _FAILURE_) {
1194 if(w0wacomb<8.1e-3){
1223 ccl_cosmology_set_status_message(cosmo,
"ccl_power.c: ccl_cosmology_compute_power_emu(): In the default configuration, you must pass a list of 3 equal neutrino masses or pass a sum and set mnu_type = ccl_mnu_sum_equal. If you wish to over-ride this, set config->emulator_neutrinos_method = 'ccl_emu_equalize'. This will force the neutrinos to be of equal mass but will result in internal inconsistencies.\n");
1227 ccl_cosmology_set_status_message(cosmo,
"ccl_power.c: ccl_cosmology_compute_power_emu(): In the default configuration, you must pass a list of 3 equal neutrino masses or pass a sum and set mnu_type = ccl_mnu_sum_equal. If you wish to over-ride this, set config->emulator_neutrinos_method = 'ccl_emu_equalize'. This will force the neutrinos to be of equal mass but will result in internal inconsistencies.\n");
1237 ccl_cosmology_set_status_message(cosmo,
"ccl_power.c: ccl_cosmology_compute_power_emu(): Set Neff = 3.04 for cosmic emulator predictions in absence of massive neutrinos.\n");
1247 ccl_run_class(cosmo, &fc,&pr,&ba,&th,&pt,&tr,&pm,&sp,&nl,&le,&op,init_arr,status);
1251 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
1252 if (parser_free(&fc)== _FAILURE_) {
1266 double ndecades = log10(kmax) - log10(kmin);
1276 double * y2d_lin = malloc(nk * na *
sizeof(
double));
1277 if (a==NULL|| x==NULL || y2d_lin==NULL) {
1287 for (
int i=0; i<nk; i++) {
1288 for (
int j = 0; j < na; j++) {
1292 s |= spectra_pk_at_k_and_z(&ba, &pm, &sp,x[i],1./a[j]-1., &psout_l,&ic);
1293 y2d_lin[j*nk+i] = log(psout_l);
1306 int pwstatus = gsl_spline2d_init(log_power, x, a, y2d_lin,nk,na);
1310 gsl_spline2d_free(log_power);
1320 ccl_free_class_structs(cosmo, &ba,&th,&pt,&tr,&pm,&sp,&nl,&le,init_arr,status);
1333 double * logx= malloc(
NK_EMU*
sizeof(
double));
1335 double * xstar = malloc(9 *
sizeof(
double));
1337 double * y2d = malloc(
NK_EMU * na *
sizeof(
double));
1338 if (aemu==NULL || y2d==NULL || logx==NULL || xstar==NULL){
1346 for (
int j = 0; j < na; j++){
1357 xstar[7] = Omeganuh2_eq;
1361 xstar[8] = 1./aemu[j]-1;
1370 for (
int i=0; i<
NK_EMU; i++){
1371 logx[i] = log(
mode[i]);
1372 y2d[j*NK_EMU+i] = log(y[i]);
1380 int splinstatus = gsl_spline2d_init(log_power_nl, logx, aemu, y2d,
NK_EMU,na);
1386 gsl_spline2d_free(log_power_nl);
1392 free(x); free(a); free(y);
1393 free(xstar); free(logx); free(aemu);
1394 free(y2d_lin); free(y2d);
1438 gsl_spline2d * powerspl,
double kmax_spline,
int * status)
1442 double deriv_pk_kmid,deriv2_pk_kmid;
1446 lkmid = log(kmax_spline)-2*deltak;
1448 int gslstatus = gsl_spline2d_eval_e(powerspl, lkmid,a,NULL ,NULL ,&lpk_kmid);
1449 if(gslstatus != GSL_SUCCESS) {
1456 gslstatus = gsl_spline2d_eval_deriv_x_e (powerspl, lkmid, a, NULL,NULL,&deriv_pk_kmid);
1457 if(gslstatus != GSL_SUCCESS) {
1463 gslstatus = gsl_spline2d_eval_deriv_xx_e (powerspl, lkmid, a, NULL,NULL,&deriv2_pk_kmid);
1464 if(gslstatus != GSL_SUCCESS) {
1470 log_p_1=lpk_kmid+deriv_pk_kmid*(log(k)-lkmid)+deriv2_pk_kmid/2.*(log(k)-lkmid)*(log(k)-lkmid);
1481 gsl_spline2d * powerspl,
double kmin_spline,
int * status)
1485 double lkmin=log(kmin_spline)+deltak;
1487 int gslstatus = gsl_spline2d_eval_e(powerspl,lkmin,a,NULL,NULL,&lpk_kmin);
1489 if(gslstatus != GSL_SUCCESS) {
1496 return lpk_kmin+cosmo->
params.
n_s*(log(k)-lkmin);
1523 if(a<ccl_splines->A_SPLINE_MINLOG_PK) {
1530 if(k<=cosmo->data.k_min_lin) {
1533 return exp(log_p_1);
1535 else if(k<cosmo->data.k_max_lin){
1536 gslstatus = gsl_spline2d_eval_e(cosmo->
data.
p_lin, log(k), a,NULL,NULL,&log_p_1);
1537 if(gslstatus != GSL_SUCCESS) {
1544 return exp(log_p_1);
1549 return exp(log_p_1);
1553 return exp(log_p_1);
1575 if (cosmo->
data.
p_nl == NULL)
return NAN;
1577 if(a<ccl_splines->A_SPLINE_MINLOG_PK) {
1595 if (cosmo->
data.
p_nl == NULL)
return NAN;
1601 "config.matter_power_spectrum_method = %d not yet supported " 1609 if (k <= cosmo->data.k_min_nl) {
1612 return exp(log_p_1);
1615 if (k < cosmo->data.k_max_nl) {
1616 int gslstatus = gsl_spline2d_eval_e(cosmo->
data.
p_nl, log(k), a, NULL ,NULL, &log_p_1);
1617 if (gslstatus != GSL_SUCCESS) {
1671 w = 1. + kR2*(-0.1 +
1674 kR2*(7.51563e-7))));
1680 w = 3.*(sin(kR) - kR*cos(kR))/(kR2*kR);
1689 double k=
pow(10.,lk);
1694 return pk*k*k*k*w*
w;
1702 double k=
pow(10.,lk);
1707 return pk*k*w*w/3.0;
1722 gsl_integration_cquad_workspace *workspace=gsl_integration_cquad_workspace_alloc(
ccl_gsl->
N_ITERATION);
1729 workspace,&sigma_R,NULL,NULL);
1730 if(gslstatus != GSL_SUCCESS) {
1732 *status |= gslstatus;
1735 gsl_integration_cquad_workspace_free(workspace);
1753 gsl_integration_cquad_workspace *workspace=gsl_integration_cquad_workspace_alloc(
ccl_gsl->
N_ITERATION);
1760 workspace,&sigma_V,NULL,NULL);
1762 if(gslstatus != GSL_SUCCESS) {
1764 *status |= gslstatus;
1767 gsl_integration_cquad_workspace_free(workspace);
double ccl_nonlin_matter_power(ccl_cosmology *cosmo, double k, double a, int *status)
double INTEGRATION_SIGMAR_EPSREL
static double bbks_power(ccl_parameters *params, double k)
static double tsqr_BBKS(ccl_parameters *params, double k)
void ccl_raise_gsl_warning(int gslstatus, const char *msg,...)
#define CCL_ERROR_NOT_IMPLEMENTED
static double sigmaR_integrand(double lk, void *params)
matter_power_spectrum_t matter_power_spectrum_method
double ccl_growth_factor(ccl_cosmology *cosmo, double a, int *status)
static void ccl_cosmology_compute_power_eh(ccl_cosmology *cosmo, int *status)
static double ccl_power_extrapol_lowk(ccl_cosmology *cosmo, double k, double a, gsl_spline2d *powerspl, double kmin_spline, int *status)
double * ccl_log_spacing(double xmin, double xmax, int N)
void ccl_check_status(ccl_cosmology *cosmo, int *status)
static double ccl_power_extrapol_highk(ccl_cosmology *cosmo, double k, double a, gsl_spline2d *powerspl, double kmax_spline, int *status)
double * ccl_linlog_spacing(double xminlog, double xmin, double xmax, int Nlin, int Nlog)
static double w_tophat(double kR)
static double tkEH_0(double keq, double k, double a, double b)
#define CCL_ERROR_SPLINE_EV
static double ccl_get_class_As(ccl_cosmology *cosmo, struct file_content *fc, int position_As, double sigma8, int *status)
ccl_spline_params * ccl_splines
static void ccl_free_class_structs(ccl_cosmology *cosmo, struct background *ba, struct thermo *th, struct perturbs *pt, struct transfers *tr, struct primordial *pm, struct spectra *sp, struct nonlinear *nl, struct lensing *le, int *init_arr, int *status)
void ccl_cosmology_compute_power(ccl_cosmology *cosmo, int *status)
CCL_BEGIN_DECLS double * ccl_linear_spacing(double xmin, double xmax, int N)
CCL_BEGIN_DECLS void ccl_pkemu(double *xstarin, double **Pkemu, int *status, ccl_cosmology *cosmo)
static double spectra(char *tr1, char *tr2, int l, RunParams *par)
double ccl_bcm_model_fka(ccl_cosmology *cosmo, double k, double a, int *status)
static void ccl_class_preinit(struct background *ba, struct thermo *th, struct perturbs *pt, struct transfers *tr, struct primordial *pm, struct spectra *sp, struct nonlinear *nl, struct lensing *le)
transfer_function_t transfer_function_method
double ccl_sigmaR(ccl_cosmology *cosmo, double R, double a, int *status)
if(pnl->method==nl_baryon)
static void ccl_cosmology_compute_power_emu(ccl_cosmology *cosmo, int *status)
void ccl_cosmology_set_status_message(ccl_cosmology *cosmo, const char *status_message,...)
Grid< NDIM, T > sqrt(Grid< NDIM, T > lhs)
static eh_struct * eh_struct_new(ccl_parameters *params)
double ccl_sigmaV(ccl_cosmology *cosmo, double R, double a, int *status)
static CCL_BEGIN_DECLS double x[111][8]
static void ccl_fill_class_parameters(ccl_cosmology *cosmo, struct file_content *fc, int parser_length, int *status)
static double tkEH_b(eh_struct *eh, double k)
static double sigmaV_integrand(double lk, void *params)
void ccl_raise_warning(int err, const char *msg,...)
#define CCL_ERROR_EMULATOR_BOUND
gsl_interp_accel * accelerator
baryons_power_spectrum_t baryons_power_spectrum_method
double ccl_Omeganuh2(double a, int N_nu_mass, double *mnu, double T_CMB, gsl_interp_accel *accel, int *status)
static double eh_power(ccl_parameters *params, eh_struct *eh, double k, int wiggled)
#define CCL_ERROR_INCONSISTENT
double ccl_sigma8(ccl_cosmology *cosmo, int *status)
static double tsqr_EH(ccl_parameters *params, eh_struct *eh, double k, int wiggled)
float pow(float base, unsigned long int exp)
void ccl_cosmology_write_power_class_z(char *filename, ccl_cosmology *cosmo, double z, int *status)
double ccl_linear_matter_power(ccl_cosmology *cosmo, double k, double a, int *status)
static double jbes0(double x)
double A_SPLINE_MINLOG_PK
static void ccl_run_class(ccl_cosmology *cosmo, struct file_content *fc, struct precision *pr, struct background *ba, struct thermo *th, struct perturbs *pt, struct transfers *tr, struct primordial *pm, struct spectra *sp, struct nonlinear *nl, struct lensing *le, struct output *op, int *init_arr, int *status)
emulator_neutrinos_t emulator_neutrinos_method
static double w[2][28][111]
static double tkEH_c(eh_struct *eh, double k)
static void ccl_cosmology_compute_power_class(ccl_cosmology *cosmo, int *status)
static void ccl_cosmology_compute_power_bbks(ccl_cosmology *cosmo, int *status)