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


Ignore:
Timestamp:
Dec 21, 2006, 4:45:09 PM (19 years ago)
Author:
cmv
Message:

Suite de la mise dans la base cvs cmv 21/12/2006

File:
1 edited

Legend:

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

    r3115 r3120  
    344344void GeneFluct3D::FilterByPixel(void)
    345345// Filtrage par la fonction fenetre du pixel (parallelepipede)
    346 // TF = 1/(dx*dy*dz)*Int[{0,dx},{0,dy},{0,dz}]
     346// TF = 1/(dx*dy*dz)*Int[{-dx/2,dx/2},{-dy/2,dy/2},{-dz/2,dz/2}]
    347347//                   e^(ik_x*x) e^(ik_y*y) e^(ik_z*z) dxdydz
    348 // |TF|^2 = 2*(1-cos(k_x*dx)/dx^2/k_x^2 * (idem dy) * (idem dz)
    349 // et on traite la divergence en K_x = 0:
    350 // 2*(1-cos(k*d)/d^2/k^2 ~= 1 - (k*d)^2/12 *[1 - (k*d)^2/30]
     348//    = 2/(k_x*dx) * sin(k_x*dx/2)  * (idem y) * (idem z)
     349// Gestion divergence en 0: sin(y)/y = 1 - y^2/6*(1-y^2/20)
     350//                          avec y = k_x*dx/2
    351351{
    352352 int lp=2;
     
    355355 for(int i=0;i<Nx_;i++) {
    356356   int ii = (i>Nx_/2) ? Nx_-i : i;
    357    double kx = ii*Dkx_ *Dx_;
    358    double pkx2 = pixelfilter(kx);
     357   double kx = ii*Dkx_ *Dx_/2;
     358   double pkx = pixelfilter(kx);
    359359   for(int j=0;j<Ny_;j++) {
    360360     int jj = (j>Ny_/2) ? Ny_-j : j;
    361      double ky = jj*Dky_ *Dy_;
    362      double pky2 =  pixelfilter(ky);
     361     double ky = jj*Dky_ *Dy_/2;
     362     double pky =  pixelfilter(ky);
    363363     for(int l=0;l<NCz_;l++) {
    364        double kz = l*Dkz_ *Dz_;
    365        double pkz2 =  pixelfilter(kz);
    366        T_(l,j,i) *= pkx2*pky2*pkz2;
     364       double kz = l*Dkz_ *Dz_/2;
     365       double pkz =  pixelfilter(kz);
     366       T_(l,j,i) *= pkx*pky*pkz;
    367367     }
    368368   }
Note: See TracChangeset for help on using the changeset viewer.