Changeset 3749 in Sophya for trunk/Cosmo/SimLSS/cmvdefsurv.cc


Ignore:
Timestamp:
Mar 2, 2010, 10:49:07 AM (16 years ago)
Author:
cmv
Message:

deplacement de fct utilitaires depuis cmvdefsurv.cc vers cosmocalc.cc, cmv 02/03/2010

File:
1 edited

Legend:

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

    r3557 r3749  
    3434inline double min22sr(double amin) {return amin*pow(min2rad(1.),2.);}
    3535
    36 double LargeurDoppler(double v /* km/s */, double nu);
    37 double DzFrV(double v /* km/s */, double zred);
    38 double DNuFrDz(double dzred,double nu_at_0,double zred);
    39 double DzFrDNu(double dnu_at_0,double nu_at_0,double zred);
    40 double DzFrDNuApprox(double dnu_at_0,double nu_at_0,double zred);
    41 double ZFrLos(double loscom /* Mpc com */,CosmoCalc& univ);
    4236double AngsolEqTelescope(double nu /* GHz */,double telsurf /* m^2 */);
     37
    4338void usage(void);
    4439
     
    258253 for(int i=0;i<3;i++) {
    259254   double l = loscom[i]; if(l<=0.) l = dz/2.;
    260    redshift[i]  = ZFrLos(l,univ);
     255   redshift[i]  = univ.ZFrLos(l);
    261256   unplusz[i]   = 1. + redshift[i];
    262257   growthfac[i] = growth(redshift[i]);
     
    792787
    793788
    794 //-------------------------------------------------------------------------------------------
    795 double LargeurDoppler(double v, double nu)
    796 // largeur doppler pour une vitesse v en km/s et une frequence nu
    797 {
    798  return v / SpeedOfLight_Cst * nu;
    799 }
    800 
    801 double DzFrV(double v, double zred)
    802 // largeur en redshift pour une vitesse v en km/s au redshift zred
    803 {
    804   return v / SpeedOfLight_Cst * (1. + zred);
    805 }
    806 
    807 double DNuFrDz(double dzred,double nu_at_0,double zred)
    808 // Largeur DNu pour une largeur en redshift "dzred" au redshift "zred"
    809 //    pour la frequence "nu_at_0" a z=0
    810 // nu =  NuHi(z=0)/(1.+z0)
    811 // dnu = NuHi(z=0)/(1.+z0-dz/2) - NuHi/(1.+z0+dz/2)
    812 //     = NuHi(z=0)*dz/[ (1+z0)^2 - (dz/2)^2 ]
    813 //     = NuHi(z=0)*dz/(1.+z0)^2 / [ 1 - [dz/(1+z0)/2)]^2 ]
    814 //     = NuHi(z=0)*dz/(1.+z0)^2 / [1 - dz/(1+z0)/2] / [1 + dz/(1+z0)/2]
    815 //    ~= NuHi(z=0)*dz/(1.+z0)^2   (approx. pour dz<<z0 a l'ordre (dz/z0)^2)
    816 {
    817   double zp1 = 1.+zred;
    818   return nu_at_0*dzred/(zp1*zp1)/(1.-dzred/zp1/2.)/(1.+dzred/zp1/2.);
    819 }
    820 
    821 double DzFrDNu(double dnu_at_0,double nu_at_0,double zred)
    822 // Largeur en redshift au redshift "zred" pour une largeur
    823 // en frequence "dnu_at_0" a la frequence "nu_at_0" a z=0
    824 {
    825   if(dnu_at_0<=0.) return 0.;
    826   double zp1 = 1.+zred;
    827   double dnusnu0 = dnu_at_0/nu_at_0;
    828   return 2./dnusnu0 * (sqrt(1.+(dnusnu0*zp1)*(dnusnu0*zp1)) - 1.);
    829 }
    830 double DzFrDNuApprox(double dnu_at_0,double nu_at_0,double zred)
    831 // idem DzFrDNu mais on utilise l'approximation: dnu=NuHi(z=0)*dz/(1.+z0)^2
    832 {
    833   double zp1 = 1.+zred;
    834   return dnu_at_0/nu_at_0 *(zp1*zp1);
    835 }
    836 
    837 double ZFrLos(double loscom,CosmoCalc& univ)
    838 // Recherche du redshift correspondant a une distance comobile
    839 // le long de la ligne de visee egale a "loscom" Mpc
    840 // et pour un univers "univ"
    841 {
    842   double dz = univ.ZMax()/10.; if(dz<=0.) dz = 0.1;
    843   double zmin=0., zmax=0.;
    844   while(univ.Dloscom(zmax)<loscom) zmax += dz;
    845   if(zmax==0.) return 0.;
    846   for(int i=0; i<6; i++) {
    847     zmin=zmax-dz; if(zmin<0.) zmin=0.;
    848     dz /= 10.;
    849     for(double z=zmin; z<zmax+dz; z+=dz) {
    850       double d = univ.Dloscom(z);
    851       if(d<loscom) continue;
    852       zmax = z;
    853       //cout<<"ZFrLos: z="<<zmax<<" d="<<d<<" / "<<loscom<<endl;
    854       break;
    855     }
    856   }
    857   return zmax;
    858 }
    859 
     789//-----------------------------------------------------------------------------------
    860790double AngsolEqTelescope(double nu /* GHz */,double telsurf /* m^2 */)
    861791/*
Note: See TracChangeset for help on using the changeset viewer.