Changeset 3806 in Sophya for trunk/Cosmo/SimLSS/pkspectrum.cc


Ignore:
Timestamp:
Jul 24, 2010, 6:15:07 PM (15 years ago)
Author:
cmv
Message:

suite de la mise au point pour lecture fichiers CAMB, cmv 24/07/2010

File:
1 edited

Legend:

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

    r3805 r3806  
    390390double GrowthFactor::DsDz(double z, double)
    391391{
    392   cout<<"Error: GrowthFactor::DsDz not implemented"<<endl;
    393   throw AllocationError("Error: GrowthFactor::DsDz not implemented");
     392  cout<<"GrowthFactor::DsDz_Error not implemented"<<endl;
     393  throw AllocationError(" GrowthFactor::DsDz_Error not implemented");
    394394}
    395395
     
    404404{
    405405  if(OmegaMatter0==0.) {
    406     cout<<"GrowthEisenstein::GrowthEisenstein: Error bad OmegaMatter0  value : "<<OmegaMatter0<<endl;
    407     throw ParmError("GrowthEisenstein::GrowthEisenstein: Error badOmegaMatter0  value");
     406    cout<<"GrowthEisenstein::GrowthEisenstein_Error: bad OmegaMatter0  value : "<<OmegaMatter0<<endl;
     407    throw ParmError("GrowthEisenstein::GrowthEisenstein_Error:  bad OmegaMatter0  value");
    408408  }
    409409}
     
    446446{
    447447 if(z<0. || dzinc<=0.) {
    448    cout<<"GrowthEisenstein::DsDz: z<0 or dzinc<=0. !"<<endl;
    449    throw ParmError("GrowthEisenstein::DsDz: z<0 or dzinc<=0. !");
     448   cout<<"GrowthEisenstein::DsDz_Error: z<0 or dzinc<=0. !"<<endl;
     449   throw ParmError("GrowthEisenstein::DsDz_Error: z<0 or dzinc<=0. !");
    450450 }
    451451
     
    543543
    544544PkTabulate::PkTabulate(void)
    545 : kmin_(1.) , kmax_(-1.) , interptyp_(0)
     545  : kmin_(1.) , kmax_(-1.) , interptyp_(0), d1_(NULL)
    546546{
    547547  k_.resize(0);
     
    550550
    551551PkTabulate::PkTabulate(PkTabulate& pkz)
    552  : kmin_(pkz.kmin_) , kmax_(pkz.kmax_) , interptyp_(pkz.interptyp_) , k_(pkz.k_) , pk_(pkz.pk_)
    553 {
    554 }
    555 
     552 : kmin_(pkz.kmin_) , kmax_(pkz.kmax_) , interptyp_(pkz.interptyp_)
     553 , k_(pkz.k_) , pk_(pkz.pk_)
     554 , d1_(pkz.d1_)
     555{
     556}
    556557
    557558PkTabulate::~PkTabulate(void)
     
    575576double PkTabulate::operator() (double k,double z)
    576577{
    577   cout<<"Error: PkTabulate::operator(double k,double z) not implemented"<<endl;
    578   throw AllocationError("Error: PkTabulate::operator(double k,double z) not implemented");
    579 }
    580 
    581 int PkTabulate::ReadCAMB(string filename, double h100, double zreftab)
     578  cout<<"PkTabulate::operator(double k,double z)_Error: not implemented"<<endl;
     579  throw AllocationError("PkTabulate::operator(double k,double z)_Error: not implemented");
     580}
     581
     582void PkTabulate::SetZ(double z)
     583{
     584  if(d1_ == NULL) {
     585    cout<<"PkTabulate::SetZ_Error: d1==NULL, no possible redshift change for tabulated Pk"<<endl;
     586    throw ParmError("PkTabulate::SetZ_Error: d1==NULL, no possible redshift change for tabulated Pk");
     587  }
     588  if(pk_.size() == 0) {
     589    cout<<"PkTabulate::SetZ_Error: pk_.size()==0, no possible redshift change for tabulated Pk"<<endl;
     590    throw ParmError("PkTabulate::SetZ_Error: pk_.size()==0, no possible redshift change for tabulated Pk");
     591  }
     592
     593  double zold = zref_;
     594  if(fabs(z-zold)<1.e-4) return;
     595
     596  zref_ = z;
     597  double d0 = (*d1_)(zold);
     598  double d1 = (*d1_)(zref_);
     599  double conv = d1*d1 / (d0*d0);
     600  cout<<"PkTabulate::SetZ: change redshift from "<<zold<<" (d="<<d0
     601      <<") to "<<zref_<<" (d="<<d1<<") conv="<<conv<<endl;
     602  for(unsigned int i=0;i<pk_.size();i++) pk_[i] *= conv;
     603}
     604
     605int PkTabulate::ReadCAMB(string filename, double h100tab, double zreftab)
    582606{
    583607 FILE *file = fopen(filename.c_str(),"r");
    584608 if(file==NULL) return -1;
    585  cout<<"PkTabulate::ReadCAMB: fn="<<filename<<" h100="<<h100<<" zreftab = "<<zreftab<<endl;
     609 cout<<"PkTabulate::ReadCAMB: fn="<<filename<<" h100="<<h100tab<<" zreftab = "<<zreftab<<endl;
    586610
    587611 const int lenline = 512;
    588612 char *line = new char[lenline];
     613 double h = h100tab, h3 = pow(h100tab,3.);
    589614
    590615 k_.resize(0); pk_.resize(0);
     616 double kmax = 0., pkmax = 0.;
    591617 while ( fgets(line,lenline,file) != NULL ) {
    592618   double k, pk;
    593619   sscanf(line,"%lf %lf",&k,&pk);
    594    k *= h100;             // convert h    Mpc^-1  ->  Mpc^-1
    595    pk /= h100*h100*h100;  // convert h^-3 Mpc^3   ->  Mpc^3
     620   k *= h;      // convert h    Mpc^-1  ->  Mpc^-1
     621   pk /= h3;    // convert h^-3 Mpc^3   ->  Mpc^3
     622   if(pk>pkmax) {pkmax = pk; kmax = k;}
    596623   k_.push_back(k);
    597624   pk_.push_back(pk);
    598625 }
    599626
    600  SetZ(zreftab);
    601  cout<<"PkTabulate::ReadCAMB nread="<<pk_.size()<<"zref="<<GetZ()<<endl;
     627 zref_ = zreftab;
     628 cout<<"  nread="<<pk_.size()<<" zref="<<GetZ()<<" , k,pk: max="<<kmax<<","<<pkmax;
     629 if(pk_.size()>0) cout<<" [0]="<<k_[0]<<","<<pk_[0]
     630                      <<" [n]="<<k_[pk_.size()-1]<<","<<pk_[pk_.size()-1];
     631 cout<<endl;
     632
    602633 delete [] line;
    603634
     
    667698{
    668699 if(R<=0.) {
    669     cout<<"VarianceSpectrum::SetRadius: Error R<=0"<<endl;
    670     throw ParmError("VarianceSpectrum::SetRadius: Error R<=0");
     700    cout<<"VarianceSpectrum::SetRadius_Error: R<=0"<<endl;
     701    throw ParmError("VarianceSpectrum::SetRadius_Error: R<=0");
    671702  }
    672703  R_ = R;
     
    737768{
    738769  if(kmin<=0 || kmax<=0. || kmin>=kmax) {
    739     cout<<"VarianceSpectrum::Variance: Error kmin<=0 or kmax<=0 or kmin>=kmax"<<endl;
    740     throw ParmError("VarianceSpectrum::Variance: Error kmin<=0 or kmax<=0 or kmin>=kmax");
     770    cout<<"VarianceSpectrum::Variance_Error: kmin<=0 or kmax<=0 or kmin>=kmax"<<endl;
     771    throw ParmError("VarianceSpectrum::Variance_Error: kmin<=0 or kmax<=0 or kmin>=kmax");
    741772  }
    742773
     
    759790{
    760791  if(kmin<=0 || kmax<=0. || kmin>=kmax) {
    761     cout<<"VarianceSpectrum::FindMaximum: Error kmin<=0 or kmax<=0 or kmin>=kmax || eps<=0"<<endl;
    762     throw ParmError("VarianceSpectrum::FindMaximum: Error kmin<=0 or kmax<=0 or kmin>=kmax || eps<=0");
     792    cout<<"VarianceSpectrum::FindMaximum_Error: kmin<=0 or kmax<=0 or kmin>=kmax || eps<=0"<<endl;
     793    throw ParmError("VarianceSpectrum::FindMaximum_Error: kmin<=0 or kmax<=0 or kmin>=kmax || eps<=0");
    763794  }
    764795
     
    802833{
    803834  if(kmin<=0 || kmax<=0. || kmin>=kmax  || eps<=0.) {
    804     cout<<"VarianceSpectrum::FindLimits: Error kmin<=0 or kmax<=0 or kmin>=kmax or eps<=0"<<endl;
    805     throw ParmError("VarianceSpectrum::FindLimits: Error kmin<=0 or kmax<=0 or kmin>=kmax || eps<=0");
     835    cout<<"VarianceSpectrum::FindLimits_Error: kmin<=0 or kmax<=0 or kmin>=kmax or eps<=0"<<endl;
     836    throw ParmError("VarianceSpectrum::FindLimits_Error: kmin<=0 or kmax<=0 or kmin>=kmax || eps<=0");
    806837  }
    807838
Note: See TracChangeset for help on using the changeset viewer.