Esempio n. 1
0
void emulator_wrapper(double ombh2, double ommh2, double ns, double H0, double w,
                      double sigma8, double z, int use_cmbh, double *ystar) {

    int type=2;
    double xstar[7], stuff[4], xstarcmb[6];
    int cmbh=use_cmbh;

    // the cosmo params
    xstar[0] = ombh2;
    xstar[1] = ommh2;
    xstar[2] = ns;
    if (cmbh == 0) xstar[3] = H0;
    xstar[4] = w;
    xstar[5] = sigma8;
    xstar[6] = z;

    if(cmbh == 1) {
        xstarcmb[0] = xstar[0];
        xstarcmb[1] = xstar[1];
        xstarcmb[2] = xstar[2];
        xstarcmb[3] = xstar[4];
        xstarcmb[4] = xstar[5];
        xstarcmb[5] = xstar[6];
        emu_noh(xstarcmb, ystar, &type);
        getH0fromCMB(xstarcmb, stuff);
        xstar[3] = 100.*stuff[3];
    } else {
        emu(xstar, ystar, &type);
    }
}
Esempio n. 2
0
main(int argc, char **argv) {
    int i,j,type=1, writeout=0;
    double xstar[6], ystar[2*1995], stuff[4];
    FILE *fp;

    char fname[256];

    // xstar contains the 5 emulator parameters plus the red shift.

    // M000 
    /*h_CMB
    if ((fp = fopen("xstar.dat","r"))==NULL) {
        printf("Cannot find inputs.\n");
        exit(1);
    }
    for(j=0; j<5; j++) {
        fscanf(fp, "%lf", &xstar[j]);
    }
    fclose(fp);
    */


    xstar[0] = 1.344000e-01;
    xstar[1] = 2.246000e-02;
    xstar[2] = 9.610000e-01;
    xstar[3] = 8.070000e-01;
    xstar[4] = -1.000;
    xstar[5] = 0.0;

  sprintf(fname,"pdelta_11");

//     printf("Enter filename for output: ");
//     scanf("%s",fname);
//     printf("output will be written to: %s\n",fname);
// 
//     printf("Enter (Omega_m)*h^2: ");
//     scanf("%lf",&xstar[0]);
//     printf("%g\n",xstar[0]);
//     printf("Enter (Omega_b)*h^2: ");
//     scanf("%lf",&xstar[1]);
//     printf("%g\n",xstar[1]);
//     printf("Enter n_s: ");
//     scanf("%lf",&xstar[2]);
//     printf("%g\n",xstar[2]);
//     printf("Enter sigma_8: ");
//     scanf("%lf",&xstar[3]);
//     printf("%g\n",xstar[3]);
//     printf("Enter w: ");
//     scanf("%lf",&xstar[4]);
//     printf("%g\n",xstar[4]);
//     printf("Enter z: ");
//     scanf("%lf",&xstar[5]);
//     printf("%g\n",xstar[5]);
//     
//     printf("Enter output type (0: Delta^2/k^1.5; 1: Delta^2; 2: P(k)): ");
//     scanf("%li",&type);
//     printf("%i\n", type);
//     
type=1;
    getH0fromCMB(xstar, stuff);
    emu(xstar, ystar, &type);

    if ((fp = fopen(fname,"w"))==NULL) {
        printf("cannot open %s \n",fname);
        exit(1);
    }
    
    fprintf(fp, "# Parameters:\n");
    fprintf(fp, "# (Omega_m)*h^2 = %f, (Omega_b)*h^2 = %f, n_s = %f, sigma_8 = %f, w = %f\n", xstar[0], xstar[1], xstar[2], xstar[3], xstar[4]);
    fprintf(fp, "# z = %f\n", xstar[5]);
    fprintf(fp, "#\n");
    fprintf(fp, "# sound horizon: %g Mpc\n", stuff[0]);
    fprintf(fp, "# z_lss: %g\n", stuff[1]);
    fprintf(fp, "# d_lss from CMB: %g Mpc\n", stuff[2]);
    fprintf(fp, "# dimensionless Hubble parameter derived from CMB constraint: %1.3f\n",stuff[3]);
        
    switch(type) {
        default:
            fprintf(fp, "#\n# k[1/Mpc] Delta^2 / k^1.5:\n");
            break;
        case 1:
            fprintf(fp, "#\n# k[1/Mpc] Delta^2:\n");
            break;
        case 2:
            fprintf(fp, "#\n# k[1/Mpc] P(k):\n");
            break;
    }
    for(j=0; j<1995; j++) {
        for(i=0; i<=1; i++) {
            fprintf(fp, "%f ", ystar[i*1995+j]);
        }
        fprintf(fp,"\n");
    }
    fclose(fp);
}