Changeset 3518 in Sophya


Ignore:
Timestamp:
Sep 11, 2008, 12:37:39 PM (17 years ago)
Author:
cmv
Message:

possibilite de travailler en float cmv 11/09/2008

Location:
trunk/Cosmo/SimLSS
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cosmo/SimLSS/Makefile

    r3501 r3518  
    1212MYEXTINC = ${EXTLIBDIR}/Include
    1313#MYLIB = $(SOPHYAEXTSLBLIST) -L$(LIB) -lcmvsimbao -lfftw3 -lm
    14 MYLIB = $(SOPHYAEXTSLBLIST) -L$(LIB) -lcmvsimbao -lfftw3_threads -lfftw3 -lm
     14MYLIB = $(SOPHYAEXTSLBLIST) -L$(LIB) -lcmvsimbao -lfftw3_threads -lfftw3f_threads -lfftw3 -lfftw3f -lm
    1515
    1616#--------------------------------------------------------------------------
  • trunk/Cosmo/SimLSS/cmvobserv3d.cc

    r3516 r3518  
    379379 fluct3d.SetGrowthFactor(growth);
    380380 fluct3d.LosComRedshift(0.001,-1);
    381  TArray< complex<r_8> >& pkgen = fluct3d.GetComplexArray();
    382  TArray<r_8>& rgen = fluct3d.GetRealArray();
     381 TArray< complex<GEN3D_TYPE> >& pkgen = fluct3d.GetComplexArray();
     382 TArray<GEN3D_TYPE>& rgen = fluct3d.GetRealArray();
    383383 cout<<endl; fluct3d.Print();
    384384 cout<<"\nMean number of galaxies per pixel = "<<ngal_by_mpc3*fluct3d.GetDVol()<<endl;
  • trunk/Cosmo/SimLSS/genefluct3d.cc

    r3516 r3518  
    2424#include "genefluct3d.h"
    2525
    26 #define WITH_FFTW_THREAD
     26#if defined(GEN3D_FLOAT)
     27#define GEN3D_FFTW_INIT_THREADS       fftwf_init_threads
     28#define GEN3D_FFTW_CLEANUP_THREADS    fftwf_cleanup_threads
     29#define GEN3D_FFTW_PLAN_WITH_NTHREADS fftwf_plan_with_nthreads
     30#define GEN3D_FFTW_PLAN_DFT_R2C_3D    fftwf_plan_dft_r2c_3d
     31#define GEN3D_FFTW_PLAN_DFT_C2R_3D    fftwf_plan_dft_c2r_3d
     32#define GEN3D_FFTW_DESTROY_PLAN       fftwf_destroy_plan
     33#define GEN3D_FFTW_EXECUTE            fftwf_execute
     34#else
     35#define GEN3D_FFTW_INIT_THREADS       fftw_init_threads
     36#define GEN3D_FFTW_CLEANUP_THREADS    fftw_cleanup_threads
     37#define GEN3D_FFTW_PLAN_WITH_NTHREADS fftw_plan_with_nthreads
     38#define GEN3D_FFTW_PLAN_DFT_R2C_3D    fftw_plan_dft_r2c_3d
     39#define GEN3D_FFTW_PLAN_DFT_C2R_3D    fftw_plan_dft_c2r_3d
     40#define GEN3D_FFTW_DESTROY_PLAN       fftw_destroy_plan
     41#define GEN3D_FFTW_EXECUTE            fftw_execute
     42#endif
    2743
    2844#define MODULE2(_x_) ((double)((_x_).real()*(_x_).real() + (_x_).imag()*(_x_).imag()))
     
    6480{
    6581 Nx_ = Ny_ = Nz_ = 0;
    66  is_set_fftw_plan = false;
     82 is_set_fft_plan = false;
    6783 nthread_ = 0;
    6884 lp_ = 0;
     
    134150   T_.ReSize(3,SzK_);
    135151   array_allocated_ = true;
    136    if(lp_>1) cout<<"  allocating: "<<T_.Size()*sizeof(complex<r_8>)/1.e6<<" Mo"<<endl;
     152   if(lp_>1) cout<<"  allocating: "<<T_.Size()*sizeof(complex<GEN3D_TYPE>)/1.e6<<" Mo"<<endl;
    137153 } catch (...) {
    138154   cout<<"GeneFluct3D::setalloc_Error: Problem allocating T_"<<endl;
     
    147163   else        R_ = ArrCastC2R(T_);
    148164 // On remplit les pointeurs
    149  fdata_ = (fftw_complex *) (&T_(0,0,0));
    150  data_ = (double *) (&R_(0,0,0));
     165 fdata_ = (GEN3D_FFTW_COMPLEX *) (&T_(0,0,0));
     166 data_ = (GEN3D_TYPE *) (&R_(0,0,0));
    151167}
    152168
    153169void GeneFluct3D::init_fftw(void)
    154170{
    155  if( is_set_fftw_plan ) delete_fftw();
     171 if( is_set_fft_plan ) delete_fftw();
    156172
    157173 // --- Initialisation de fftw3 (attention data est sur-ecrit a l'init)
     
    160176 if(nthread_>0) {
    161177   cout<<"...Computing with "<<nthread_<<" threads"<<endl;
    162    fftw_init_threads();
    163    fftw_plan_with_nthreads(nthread_);
     178   GEN3D_FFTW_INIT_THREADS();
     179   GEN3D_FFTW_PLAN_WITH_NTHREADS(nthread_);
    164180 }
    165181#endif
    166182 if(lp_>1) cout<<"...forward plan"<<endl;
    167  pf_ = fftw_plan_dft_r2c_3d(Nx_,Ny_,Nz_,data_,fdata_,FFTW_ESTIMATE);
     183 pf_ = GEN3D_FFTW_PLAN_DFT_R2C_3D(Nx_,Ny_,Nz_,data_,fdata_,FFTW_ESTIMATE);
    168184 if(lp_>1) cout<<"...backward plan"<<endl;
    169  pb_ = fftw_plan_dft_c2r_3d(Nx_,Ny_,Nz_,fdata_,data_,FFTW_ESTIMATE);
    170  is_set_fftw_plan = true;
     185 pb_ = GEN3D_FFTW_PLAN_DFT_C2R_3D(Nx_,Ny_,Nz_,fdata_,data_,FFTW_ESTIMATE);
     186 is_set_fft_plan = true;
    171187}
    172188
    173189void GeneFluct3D::delete_fftw(void)
    174190{
    175  if( !is_set_fftw_plan ) return;
    176  fftw_destroy_plan(pf_);
    177  fftw_destroy_plan(pb_);
     191 if( !is_set_fft_plan ) return;
     192 GEN3D_FFTW_DESTROY_PLAN(pf_);
     193 GEN3D_FFTW_DESTROY_PLAN(pb_);
    178194#ifdef WITH_FFTW_THREAD
    179  if(nthread_>0) fftw_cleanup_threads();
     195 if(nthread_>0) GEN3D_FFTW_CLEANUP_THREADS();
    180196#endif
    181  is_set_fftw_plan = false;
     197 is_set_fft_plan = false;
    182198}
    183199
     
    566582 // --- realisation d'un tableau de tirage gaussiens
    567583 if(lp_>0) cout<<"...before fft real ---"<<endl;
    568  fftw_execute(pf_);
     584 GEN3D_FFTW_EXECUTE(pf_);
    569585
    570586 // --- On remplit avec une realisation
    571587 if(lp_>0) cout<<"...before Fourier realization filling"<<endl;
    572  T_(0,0,0) = complex<r_8>(0.);  // on coupe le continue et on l'initialise
     588 T_(0,0,0) = complex<GEN3D_TYPE>(0.);  // on coupe le continue et on l'initialise
    573589 long lmod = Nx_/10; if(lmod<1) lmod=1;
    574590 for(long i=0;i<Nx_;i++) {
     
    609625{
    610626 // --- RaZ du tableau
    611  T_ = complex<r_8>(0.);
     627 T_ = complex<GEN3D_TYPE>(0.);
    612628
    613629 // --- On remplit avec une realisation
     
    830846
    831847 // On fait la FFT
    832  fftw_execute(pb_);
     848 GEN3D_FFTW_EXECUTE(pb_);
    833849}
    834850
     
    840856
    841857 // On fait la FFT
    842  fftw_execute(pf_);
     858 GEN3D_FFTW_EXECUTE(pf_);
    843859 // On corrige du pb de la normalisation de FFTW3
    844860 double v = (double)NRtot_;
  • trunk/Cosmo/SimLSS/genefluct3d.h

    r3358 r3518  
    1818#include "pkspectrum.h"
    1919
     20#define WITH_FFTW_THREAD
     21//#define GEN3D_FLOAT
     22
     23#if defined(GEN3D_FLOAT)
     24#define GEN3D_TYPE r_4
     25#define GEN3D_FFTW_PLAN fftwf_plan
     26#define GEN3D_FFTW_COMPLEX fftwf_complex
     27#else
     28#define GEN3D_TYPE r_8
     29#define GEN3D_FFTW_PLAN fftw_plan
     30#define GEN3D_FFTW_COMPLEX fftw_complex
     31#endif
    2032
    2133namespace SOPHYA {
     
    4153  long LosComRedshift(double zinc=0.001,long npoints=-1);
    4254
    43   TArray< complex<r_8> >& GetComplexArray(void) {return T_;}
    44   fftw_complex* GetComplexPointer(void) {return fdata_;}
    45   TArray<r_8>& GetRealArray(void) {return R_;}
    46   r_8* GetRealPointer(void) {return data_;}
     55  TArray< complex<GEN3D_TYPE> >& GetComplexArray(void) {return T_;}
     56  GEN3D_FFTW_COMPLEX * GetComplexPointer(void) {return fdata_;}
     57  TArray<GEN3D_TYPE>& GetRealArray(void) {return R_;}
     58  GEN3D_TYPE* GetRealPointer(void) {return data_;}
    4759
    4860  // Pour adressage data_[ip]
     
    157169
    158170  // la gestion de la FFT
    159   bool is_set_fftw_plan;
    160   fftw_plan pf_,pb_;
     171  bool is_set_fft_plan;
     172  GEN3D_FFTW_PLAN pf_,pb_;
    161173  unsigned short nthread_;
    162174  int lp_;
     
    164176  // le stockage du Cube de donnees et les pointeurs
    165177  bool array_allocated_;  // true if array has been allocated
    166   TArray< complex<r_8> > T_;
    167   fftw_complex *fdata_;
    168   TArray<r_8> R_;
    169   double *data_;
     178  TArray< complex<GEN3D_TYPE> > T_;
     179  GEN3D_FFTW_COMPLEX *fdata_;
     180  TArray<GEN3D_TYPE> R_;
     181  GEN3D_TYPE *data_;
    170182
    171183  // l'observateur
Note: See TracChangeset for help on using the changeset viewer.