1
0
Fork 0
mirror of https://github.com/cosmo-sims/MUSIC.git synced 2024-09-19 17:03:46 +02:00

minor fix to noise interpolation

This commit is contained in:
Oliver Hahn 2013-11-26 19:55:56 +01:00
parent 7723c9b2a7
commit cf9df8e6b7

View file

@ -820,6 +820,51 @@ random_numbers<T>::random_numbers( random_numbers<T>& rc, unsigned cubesize, lon
//if( isolated ) phasefac *= 1.5;
// embedding of coarse white noise by fourier interpolation
#if 1
#pragma omp parallel for
for( int i=0; i<(int)nxc; i++ )
for( int j=0; j<(int)nyc; j++ )
for( int k=0; k<(int)nzc/2+1; k++ )
{
int ii(i),jj(j),kk(k);
//if( i==(int)nxc/2 ) continue;
//if( j==(int)nyc/2 ) continue;
if( i > (int)nxc/2 ) ii += (int)nx/2;
if( j > (int)nyc/2 ) jj += (int)ny/2;
size_t qc,qf;
double kx = (i <= (int)nxc/2)? (double)i : (double)(i-(int)nxc);
double ky = (j <= (int)nyc/2)? (double)j : (double)(j-(int)nyc);
double kz = (k <= (int)nzc/2)? (double)k : (double)(k-(int)nzc);
qc = ((size_t)i*nyc+(size_t)j)*(nzc/2+1)+(size_t)k;
qf = ((size_t)ii*ny+(size_t)jj)*(nz/2+1)+(size_t)kk;
std::complex<double> val(RE(ccoarse[qc]),IM(ccoarse[qc]));
double phase = (kx/nxc + ky/nyc + kz/nzc) * phasefac * M_PI;
std::complex<double> val_phas( cos(phase), sin(phase) );
val *= val_phas * sqrt8;
if( i!=(int)nxc/2 && j!=(int)nyc/2 && k!=(int)nzc/2 )
{
RE(cfine[qf]) = val.real();
IM(cfine[qf]) = val.imag();
}
else
{
//RE(cfine[qf]) = val.real();
//IM(cfine[qf]) = 0.0;
}
}
#else
// 0 0
#pragma omp parallel for
@ -927,6 +972,7 @@ random_numbers<T>::random_numbers( random_numbers<T>& rc, unsigned cubesize, lon
RE(cfine[qf]) = val.real();
IM(cfine[qf]) = val.imag();
}
#endif
delete[] rcoarse;