Ejemplo n.º 1
0
int main(int argc, char *argv[]) {
    SID_Init(&argc, &argv, NULL);

    // Parse arguments and initialize
    double z;
    if(argc < 2 || argc > 3) {
        fprintf(stderr, "\n Syntax: %s z [gbpCosmo_file.txt]\n", argv[0]);
        fprintf(stderr, " ------\n\n");
        return (SID_ERROR_SYNTAX);
    } else
        z = (double)atof(argv[1]);
    SID_log("Computing cosmology information for z=%.2lf...", SID_LOG_OPEN, z);

    // Initialize cosmology
    ADaPS *cosmo = NULL;
    if(argc == 2)
        init_cosmo_default(&cosmo);
    else if(argc == 3)
        read_gbpCosmo_file(&cosmo, argv[2]);

    // Output results
    double h_Hubble = ((double *)ADaPS_fetch(cosmo, "h_Hubble"))[0];
    SID_log("R_NL(z)      = %10.3lf Mpc", SID_LOG_COMMENT, R_NL_z(z, &cosmo) / M_PER_MPC);
    SID_log("rho_crit     = %13.6le Msol/(Mpc^3)", SID_LOG_COMMENT, rho_crit_z(z, cosmo) * (M_PER_MPC / M_SOL) * M_PER_MPC * M_PER_MPC);
    SID_log("D_angular    = %10.3lf Mpc", SID_LOG_COMMENT, D_angular(z, cosmo) / M_PER_MPC);
    SID_log("D_luminosity = %10.3lf Mpc", SID_LOG_COMMENT, D_luminosity(z, cosmo) / M_PER_MPC);
    SID_log("D_comoving   = %10.3lf Mpc", SID_LOG_COMMENT, D_comove(z, cosmo) / M_PER_MPC);
    SID_log("D_horizon    = %10.3lf Mpc", SID_LOG_COMMENT, C_VACUUM * deltat_a(&cosmo, 0., a_of_z(z)) / M_PER_MPC);
    SID_log("D_V          = %10.3lf Mpc",
            SID_LOG_COMMENT,
            pow((1 + z) * D_angular(z, cosmo) * (1 + z) * D_angular(z, cosmo) * z * C_VACUUM / H_convert(H_z(z, cosmo)), ONE_THIRD) / M_PER_MPC);
    SID_log("H(z)         = %10.3lf km/s/Mpc", SID_LOG_COMMENT, H_z(z, cosmo));
    SID_log("t_age(z)     = %10.3le years", SID_LOG_COMMENT, t_age_z(z, &cosmo) / S_PER_YEAR);
    SID_log("t_Hubble(z)  = %10.3le years", SID_LOG_COMMENT, t_Hubble_z(z, cosmo) / S_PER_YEAR);
    SID_log("t_dyn(z)     = %10.3le years", SID_LOG_COMMENT, t_dyn_z(z, cosmo) / S_PER_YEAR);
    SID_log("n_dyn(<z)    = %10.3le", SID_LOG_COMMENT, n_dyn_ztoz(0., z, cosmo));

    SID_log("Done.", SID_LOG_CLOSE);

    // Clean-up
    free_cosmo(&cosmo);
    SID_Finalize();
}
Ejemplo n.º 2
0
void init_cfunc(cfunc_info *cfunc,const char *filename_cosmology,int    n_data,  int    n_random,int    n_bits_PHK,
                double redshift,  double box_size,int    n_jack,
                double r_min_l1D, double r_max_1D,double dr_1D,
                double r_min_2D,  double r_max_2D,double dr_2D){
  SID_log("Initializing correlation function...",SID_LOG_OPEN);

  // Initialize flags
  cfunc->initialized    =TRUE;
  cfunc->flag_compute_RR=TRUE;

  // Initialize constants
  cfunc->n_data    =n_data;
  cfunc->n_random  =n_random;
  cfunc->F_random  =(double)n_random/(double)n_data;
  cfunc->redshift  =redshift;
  cfunc->box_size  =box_size;
  cfunc->n_jack    =n_jack;
  cfunc->r_min_l1D =r_min_l1D;
  cfunc->lr_min_l1D=take_log10(r_min_l1D);
  cfunc->r_max_1D  =r_max_1D;
  cfunc->r_min_2D  =r_min_2D;
  cfunc->r_max_2D  =r_max_2D;
  cfunc->r_max     =MAX(cfunc->r_max_1D,cfunc->r_max_2D);
  cfunc->dr_1D     =dr_1D;
  cfunc->dr_2D     =dr_2D;

  // Decide on PHK boundary widths
  cfunc->n_bits_PHK=n_bits_PHK;
  for(cfunc->PHK_width=1;cfunc->PHK_width<20 && (double)cfunc->PHK_width*(cfunc->box_size/pow(2.,(double)(cfunc->n_bits_PHK)))<cfunc->r_max;) 
     cfunc->PHK_width++;

  // Initialize the number of bins
  cfunc->n_1D        =(int)(0.5+(cfunc->r_max_1D)/cfunc->dr_1D);
  cfunc->n_2D        =(int)(0.5+(cfunc->r_max_2D-cfunc->r_min_2D)/cfunc->dr_2D);
  cfunc->n_2D_total  =cfunc->n_2D*cfunc->n_2D;
  cfunc->n_jack_total=cfunc->n_jack*cfunc->n_jack*cfunc->n_jack;
  SID_log("keys        =%d-bit", SID_LOG_COMMENT,cfunc->n_bits_PHK);
  SID_log("boundries   =%d keys",SID_LOG_COMMENT,cfunc->PHK_width);
  SID_log("# of 1D bins=%d",     SID_LOG_COMMENT,cfunc->n_1D);
  SID_log("# of 2D bins=%d",     SID_LOG_COMMENT,cfunc->n_2D);

  // Initialize logarythmic bin sizes
  cfunc->dr_l1D=(take_log10(cfunc->r_max_1D)-cfunc->lr_min_l1D)/(double)cfunc->n_1D;

  // Initialize arrays
  cfunc->CFUNC_l1D =(double **)SID_malloc(sizeof(double *)*4);
  cfunc->dCFUNC_l1D=(double **)SID_malloc(sizeof(double *)*4);
  cfunc->COVMTX_l1D=(double **)SID_malloc(sizeof(double *)*4);
  cfunc->CFUNC_1D  =(double **)SID_malloc(sizeof(double *)*4);
  cfunc->dCFUNC_1D =(double **)SID_malloc(sizeof(double *)*4);
  cfunc->COVMTX_1D =(double **)SID_malloc(sizeof(double *)*4);
  cfunc->CFUNC_2D  =(double **)SID_malloc(sizeof(double *)*4);
  cfunc->dCFUNC_2D =(double **)SID_malloc(sizeof(double *)*4);
  cfunc->COVMTX_2D =(double **)SID_malloc(sizeof(double *)*4);
  int i_run;
  for(i_run=0;i_run<4;i_run++){
     cfunc->CFUNC_l1D[i_run] =(double *)SID_malloc(sizeof(double)*(cfunc->n_1D));
     cfunc->dCFUNC_l1D[i_run]=(double *)SID_malloc(sizeof(double)*(cfunc->n_1D));
     cfunc->COVMTX_l1D[i_run]=(double *)SID_malloc(sizeof(double)*(cfunc->n_1D*cfunc->n_1D));
     cfunc->CFUNC_1D[i_run]  =(double *)SID_malloc(sizeof(double)*(cfunc->n_1D));
     cfunc->dCFUNC_1D[i_run] =(double *)SID_malloc(sizeof(double)*(cfunc->n_1D));
     cfunc->COVMTX_1D[i_run] =(double *)SID_malloc(sizeof(double)*(cfunc->n_1D*cfunc->n_1D));
     cfunc->CFUNC_2D[i_run]  =(double *)SID_malloc(sizeof(double)*(cfunc->n_2D)*(cfunc->n_2D));
     cfunc->dCFUNC_2D[i_run] =(double *)SID_malloc(sizeof(double)*(cfunc->n_2D)*(cfunc->n_2D));
     cfunc->COVMTX_2D[i_run] =(double *)SID_malloc(sizeof(double)*(cfunc->n_2D_total*cfunc->n_2D_total));
  }

  cfunc->DD_l1D    =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  cfunc->DR_l1D    =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  cfunc->RR_l1D    =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  cfunc->DD_1D     =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  cfunc->DR_1D     =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  cfunc->RR_1D     =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  cfunc->DD_2D     =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  cfunc->DR_2D     =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  cfunc->RR_2D     =(long long **)SID_malloc(sizeof(long long *)*(cfunc->n_jack_total+1));
  int i_jack;
  for(i_jack=0;i_jack<=cfunc->n_jack_total;i_jack++){
    cfunc->DD_l1D[i_jack]=(long long *)SID_calloc(sizeof(long long)*cfunc->n_1D);
    cfunc->DR_l1D[i_jack]=(long long *)SID_calloc(sizeof(long long)*cfunc->n_1D);
    cfunc->RR_l1D[i_jack]=(long long *)SID_calloc(sizeof(long long)*cfunc->n_1D);
    cfunc->DD_1D[i_jack] =(long long *)SID_calloc(sizeof(long long)*cfunc->n_1D);
    cfunc->DR_1D[i_jack] =(long long *)SID_calloc(sizeof(long long)*cfunc->n_1D);
    cfunc->RR_1D[i_jack] =(long long *)SID_calloc(sizeof(long long)*cfunc->n_1D);
    cfunc->DD_2D[i_jack] =(long long *)SID_calloc(sizeof(long long)*cfunc->n_2D*cfunc->n_2D);
    cfunc->DR_2D[i_jack] =(long long *)SID_calloc(sizeof(long long)*cfunc->n_2D*cfunc->n_2D);
    cfunc->RR_2D[i_jack] =(long long *)SID_calloc(sizeof(long long)*cfunc->n_2D*cfunc->n_2D);
  }

  // Initialize the cosmology
  if(filename_cosmology==NULL)
     init_cosmo_default(&(cfunc->cosmo));
  else
     read_gbpCosmo_file(&(cfunc->cosmo),filename_cosmology);

  SID_log("Done.",SID_LOG_CLOSE);
}
Ejemplo n.º 3
0
int main(int argc, char *argv[]){

  SID_init(&argc,&argv,NULL,NULL);

  // Parse arguments and initialize
  double z;
  if(argc<2 || argc>3){
    fprintf(stderr,"\n Syntax: %s z [gbpCosmo_file.txt]\n",argv[0]);
    fprintf(stderr," ------\n\n");
    return(ERROR_SYNTAX);
  }
  else
    z=(double)atof(argv[1]);

  SID_log("Computing clustering information for z=%.2lf...",SID_LOG_OPEN,z);

  // Initialize cosmology
  cosmo_info *cosmo=NULL;
  if(argc==2)
     init_cosmo_default(&cosmo);
  else if(argc==3)
     read_gbpCosmo_file(&cosmo,argv[2]);

  // Initialize
  int     mode     =PSPEC_LINEAR_TF;
  int     component=PSPEC_ALL_MATTER;
  init_sigma_M(&cosmo,z,mode,component);
  int     n_k     =((int    *)ADaPS_fetch(cosmo,"n_k"))[0];
  double *lk_P    = (double *)ADaPS_fetch(cosmo,"lk_P");
  double  h_Hubble=((double *)ADaPS_fetch(cosmo,"h_Hubble"))[0];
  SID_log("Done.",SID_LOG_CLOSE);

  // Generate file
  SID_log("Writing table to stdout...",SID_LOG_OPEN);
  double delta_c    =1.686;
  double m_per_mpc_h=M_PER_MPC/h_Hubble;
  printf("# Column (01): k [h Mpc^-1]\n");
  printf("#        (02): R [h^-1 Mpc] \n");
  printf("#        (03): M [h^-1 M_sol]\n");
  printf("#        (04): V_max [km/s] \n");
  printf("#        (05): P_k [(h^-1 Mpc)^3]\n");
  printf("#        (06): sigma\n");
  printf("#        (07): nu (peak height)\n");
  printf("#        (08): b_BPR\n");
  printf("#        (09): b_TRK\n");
  printf("#        (10): z-space boost Kaiser '87 (applied to b_TRK)\n");
  printf("#        (11): b_TRK total (w/ Kaiser boost)\n");
  printf("#        (12): b_halo_Poole \n");
  printf("#        (13): z-space boost Poole \n");
  printf("#        (14): b_total_Poole \n");
  printf("#        (15): b_halo_Poole        (substructure)\n");
  printf("#        (16): z-space boost Poole (substructure)\n");
  printf("#        (17): b_total_Poole       (substructure)\n");
  for(int i_k=0;i_k<n_k;i_k++){
     double k_P  =take_alog10(lk_P[i_k]);
     double R_P  =R_of_k(k_P);
     double M_R  =M_of_k(k_P,z,cosmo);
     double P_k  =power_spectrum(k_P,z,&cosmo,mode,component);
     double sigma=sqrt(power_spectrum_variance(k_P,z,&cosmo,mode,component));
     double V_max=V_max_NFW(M_R,z,NFW_MODE_DEFAULT,&cosmo);
     double nu   =delta_c/sigma;
     double bias =1.;
     if(M_R<1e16*M_SOL){
        printf("%10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le %10.5le\n",
               k_P*m_per_mpc_h,
               R_P/m_per_mpc_h,
               M_R/(M_SOL/h_Hubble),
               V_max*1e-3,
               P_k/pow(m_per_mpc_h,3.),
               sigma,
               nu,
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_BPR),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_TRK),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_TRK|BIAS_MODEL_KAISER_BOOST),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_TRK|BIAS_MODEL_KAISER),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_POOLE_HALO),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_POOLE_ZSPACE),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_POOLE_TOTAL),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_POOLE_SUBSTRUCTURE|BIAS_MODEL_POOLE_HALO),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_POOLE_SUBSTRUCTURE|BIAS_MODEL_POOLE_ZSPACE),
               bias_model(M_R,delta_c,z,&cosmo,BIAS_MODEL_POOLE_SUBSTRUCTURE|BIAS_MODEL_POOLE_TOTAL));
     }
  }
  SID_log("Done.",SID_LOG_CLOSE);

  // Clean-up
  free_cosmo(&cosmo);

  SID_log("Done.",SID_LOG_CLOSE);
  SID_exit(ERROR_NONE);
}