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:
parent
3129083718
commit
aa829134e2
2 changed files with 29 additions and 9 deletions
36
densities.cc
36
densities.cc
|
@ -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)) );
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue