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

seems like both k-space and new real space work well now, fixed a bug for k-space grid offsets

This commit is contained in:
Oliver Hahn 2013-10-29 13:23:47 +01:00
parent 3129083718
commit aa829134e2
2 changed files with 29 additions and 9 deletions

View file

@ -24,20 +24,37 @@ void fft_interpolate( m1& V, m2& v, bool from_basegrid=false )
//int oxc = V.offset(0), oyc = V.offset(1), ozc = V.offset(2);
int oxf = v.offset(0), oyf = v.offset(1), ozf = v.offset(2);
size_t nxf = v.size(0), nyf = v.size(1), nzf = v.size(2), nzfp = nzf+2;
size_t nxF = V.size(0), nyF = V.size(1), nzF = V.size(2);
LOGINFO("FFT interpolate: original subgrid offset=%d,%d,%d",oxf,oyf,ozf);
LOGINFO("FFT interpolate: nxf=%d,%d,%d nxF=%d,%d,%d",nxf,nyf,nzf,nxF,nyF,nzF);
if( !from_basegrid )
{
oxf *= 2;
/*oxf *= 2;
oyf *= 2;
ozf *= 2;
oxf += nxf/8;
oyf += nyf/8;
ozf += nzf/8;
ozf += nzf/8;*/
/*oxf += nxF/4;
oyf += nyF/4;
ozf += nzF/4;
oxf -= nxf/8;
oyf -= nyf/8;
ozf -= nzf/8;*/
oxf += nxF/4;
oyf += nyF/4;
ozf += nzF/4;
}
LOGUSER("FFT interpolate: offset=%d,%d,%d size=%d,%d,%d",oxf,oyf,ozf,nxf,nyf,nzf);
LOGINFO("FFT interpolate: offset=%d,%d,%d size=%d,%d,%d",oxf,oyf,ozf,nxf,nyf,nzf);
// cut out piece of coarse grid that overlaps the fine:
assert( nxf%2==0 && nyf%2==0 && nzf%2==0 );
@ -70,7 +87,7 @@ void fft_interpolate( m1& V, m2& v, bool from_basegrid=false )
for( int k=0; k<(int)nzf; ++k )
{
size_t q = ((size_t)i*nyf+(size_t)j)*nzfp+(size_t)k;
rfine[q] = v(i,j,k);
rfine[q] = v(i,j,k);
}
@ -110,6 +127,9 @@ void fft_interpolate( m1& V, m2& v, bool from_basegrid=false )
double fftnorm = 1.0/((double)nxf*(double)nyf*(double)nzf);
double sqrt8 = 8.0;//sqrt(8.0);
double phasefac = -0.5;
//if( !from_basegrid )
// phasefac = 1.0;
// 0 0
#pragma omp parallel for
@ -757,8 +777,8 @@ void coarsen_density( const refinement_hierarchy& rh, GridHierarchy<real_t>& u )
}
}
for( int i=rh.levelmax(); i>0; --i )
mg_straight().restrict( *(u.get_grid(i)), *(u.get_grid(i-1)) );
//for( int i=rh.levelmax(); i>0; --i )
//mg_straight().restrict( *(u.get_grid(i)), *(u.get_grid(i-1)) );
}

View file

@ -816,7 +816,7 @@ random_numbers<T>::random_numbers( random_numbers<T>& rc, unsigned cubesize, lon
double fftnorm = 1.0/((double)nx*(double)ny*(double)nz);
double sqrt8 = sqrt(8.0);
double phasefac = -0.5;//-1.0;//-0.125;
double phasefac = -0.5;//-1.0;//-0.125;
//if( isolated ) phasefac *= 1.5;