Changeset 3924 in Sophya for trunk/Cosmo/SimLSS/genefluct3d.cc


Ignore:
Timestamp:
Dec 10, 2010, 4:38:23 PM (15 years ago)
Author:
cmv
Message:

intro choix dabs calcul de beta pour les redshift-distorsions, cmv 10/12/2010

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cosmo/SimLSS/genefluct3d.cc

    r3908 r3924  
    904904
    905905//-------------------------------------------------------------------
    906 void GeneFluct3D::ToRedshiftSpace(void)
     906void GeneFluct3D::ToRedshiftSpace(int type_beta,double fixed_beta)
    907907// Apply redshift distortion corrections
    908 // ---- ATTENTION: Le spectre Pk doit etre (dRho/Rho)(k)
     908// P(k)_z = P(k) * ( 1 + beta * mu^2 )^2
     909// type_beta: =0 compute factor automatically with beta=-(1+z)/D*dD/z
     910//            >0 compute factor with fix beta=Omega^fixed_beta
     911//            <0 compute factor with fix beta=fixed_beta
     912// ---- ATTENTION:
     913// 1- Le spectre Pk doit etre (dRho/Rho)(k)
     914// 2- pas d'evolution en redhsuft possible,
     915//    le spectre doit etre calcule au redshift final de la boite
    909916{
    910917 double zpk = compute_pk_redsh_ref_;
    911  double beta = -(1.+zpk) * growth_->DsDz(zpk,good_dzinc_) / (*growth_)(zpk);
    912  if(lp_>0) cout<<"--- ToRedshiftSpace --- at z="<<zpk<<", Beta="<<beta
    913                <<" (comp. for dz="<<good_dzinc_<<")"<<endl;
     918 if(lp_>0) cout<<"--- ToRedshiftSpace --- at z="<<zpk<<", type_beta="<<type_beta<<endl;
     919
     920 double beta = 0.;
     921 if(type_beta>0) {
     922   double omegam = cosmo_->Omatter(zpk); beta = pow(omegam,fixed_beta);
     923   if(lp_>0) cout<<"...beta = OmegaM^expo = "<<omegam<<"^"<<fixed_beta<<" = "<<beta<<endl;
     924 } else if(type_beta<0) {
     925   beta = fixed_beta;
     926   if(lp_>0) cout<<"...beta = "<<beta<<endl;
     927 } else {
     928   beta = -(1.+zpk) * growth_->DsDz(zpk,good_dzinc_) / (*growth_)(zpk);
     929   if(lp_>0) cout<<"...beta = -(1+z)*D'/D = "<<beta<<endl;
     930 }
     931
    914932 check_array_alloc();
    915933
     
    929947
    930948//-------------------------------------------------------------------
    931 void GeneFluct3D::ToVelLoS(void)
     949void GeneFluct3D::ToVelLoS(int type_beta,double fixed_beta)
    932950/*
     951// P(k)_z = P(k) * ( 1 + beta * mu^2 )^2
     952// type_beta: =0 compute factor automatically with beta=-(1+z)/D*dD/z
     953//            >0 compute factor with fix beta=Omega^fixed_beta
     954//            <0 compute factor with fix beta=fixed_beta
    933955---- Vitesse particuliere
    934956Un atome au redshift "z" emet a la longueur d'onde "Le" si il est au repos
     
    948970{
    949971 double zpk = compute_pk_redsh_ref_;
    950  double dpsd = -cosmo_->H(zpk) * (1.+zpk) * growth_->DsDz(zpk,good_dzinc_) / (*growth_)(zpk);
    951  if(lp_>0) cout<<"--- ToVelLoS --- at z="<<zpk<<", -H*(1+z)*D'/D="<<dpsd
    952                <<" (km/s)/Mpc (comp. for dz="<<good_dzinc_<<")"<<endl;
     972 if(lp_>0) cout<<"--- ToVelLoS --- at z="<<zpk<<", type_beta="<<type_beta<<endl;
     973
     974 double beta = 0;
     975 if(type_beta>0) {
     976   double omegam = cosmo_->Omatter(zpk);
     977   beta = pow(omegam,fixed_beta);
     978   if(lp_>0) cout<<"...beta = OmegaM^expo = "<<omegam<<"^"<<fixed_beta<<"="<<beta<<endl;
     979 } else if(type_beta<0) {
     980   beta = fixed_beta;
     981   if(lp_>0) cout<<"...beta="<<beta<<endl;
     982 } else {
     983   beta = -(1.+zpk) * growth_->DsDz(zpk,good_dzinc_) / (*growth_)(zpk);
     984   if(lp_>0) cout<<"...beta = -(1+z)*D'/D = "<<beta<<endl;
     985 }
     986 double dpsd = cosmo_->H(zpk) * beta;
     987 if(lp_>0) cout<<"......H*beta = "<<dpsd<<" (km/s)/Mpc"<<endl;
     988
    953989 check_array_alloc();
    954990
     
    10191055
    10201056//-------------------------------------------------------------------
    1021 void GeneFluct3D::ApplyVelLosGrowthFactor(int type_evol)
     1057void GeneFluct3D::ApplyVelLosGrowthFactor(int type_evol,int type_beta,double fixed_beta)
    10221058// Apply Growth(z) to transverse velocity real space cube
    1023 {
    1024  if(lp_>0) cout<<"--- ApplyVelLosGrowthFactor: evol="<<type_evol<<endl;
     1059// P(k)_z = P(k) * ( 1 + beta * mu^2 )^2
     1060// type_beta: =0 compute factor automatically with beta=-(1+z)/D*dD/z
     1061//            >0 compute factor with fix beta=Omega^fixed_beta
     1062//            <0 compute factor with fix beta=fixed_beta
     1063{
     1064 if(lp_>0) cout<<"--- ApplyVelLosGrowthFactor: evol="<<type_evol<<", type_beta="<<type_beta<<endl;
     1065
    10251066 check_array_alloc();
    10261067
     
    10361077 double zpk = compute_pk_redsh_ref_;
    10371078 double grw_orig = (*growth_)(zpk);
    1038  double dpsd_orig = - cosmo_->H(zpk) * (1.+zpk) * growth_->DsDz(zpk,good_dzinc_) / grw_orig;
    1039  if(lp_>0) cout<<"    original growth="<<grw_orig<<" dpsd="<<dpsd_orig<<" computed at z="<<zpk<<endl;
     1079 double beta_orig = 0.;
     1080 if(type_beta>0) {double omegam = cosmo_->Omatter(zpk); beta_orig = pow(omegam,fixed_beta);}
     1081 else if(type_beta<0) beta_orig = fixed_beta;
     1082 else beta_orig = -(1.+zpk) * growth_->DsDz(zpk,good_dzinc_) / (*growth_)(zpk);
     1083 double dpsd_orig = cosmo_->H(zpk) * beta_orig;
     1084 if(lp_>0) cout<<"...original at z="<<zpk<<": growth="<<grw_orig<<" beta="<<beta_orig
     1085               <<" H*beta="<<dpsd_orig<<" (km/s)/Mpc"<<endl;
     1086
     1087 if(type_beta<0) cout<<"***WARNING: type_beta<0 , no evolution used for beta !!!"<<endl;
    10401088
    10411089 InterpFunc interpinv(loscom2zred_min_,loscom2zred_max_,loscom2zred_);
     
    10521100       double z = interpinv(dz);   // interpolation par morceau
    10531101       double grw = (*growth_)(z);
    1054        double dpsd = interdpd(z);
     1102       double dpsd = 0;
     1103       if(type_beta>0) {
     1104         dpsd = cosmo_->H(z) * pow(cosmo_->Omatter(z),fixed_beta);
     1105       } else if(type_beta<0) {
     1106         dpsd = cosmo_->H(z) * fixed_beta;
     1107       } else {
     1108         dpsd = interdpd(z); // interpole -H(z)*(1+z)*D'(z)/D(z)
     1109       }
    10551110       int_8 ip = IndexR(i,j,l);
    10561111       // on remet le beta au bon z
Note: See TracChangeset for help on using the changeset viewer.