mirror of
https://github.com/cosmo-sims/MUSIC.git
synced 2024-09-19 17:03:46 +02:00
fixed missing coarsening when levelmin_TF is set
This commit is contained in:
parent
b4af40ed57
commit
97ba38177b
2 changed files with 13 additions and 16 deletions
15
densities.cc
15
densities.cc
|
@ -23,7 +23,6 @@ void fft_interpolate( m1& V, m2& v, bool fourier_splice = false, bool ispadded=f
|
||||||
int oxf = v.offset(0), oyf = v.offset(1), ozf = 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), nzfp = nzf+2;
|
||||||
|
|
||||||
fourier_splice = false;
|
|
||||||
|
|
||||||
if( ispadded )
|
if( ispadded )
|
||||||
{
|
{
|
||||||
|
@ -450,8 +449,7 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
|
||||||
|
|
||||||
for( int i=1; i<nlevels; ++i )
|
for( int i=1; i<nlevels; ++i )
|
||||||
{
|
{
|
||||||
std::cout << " - Performing noise convolution on level " << std::setw(2) << levelmin+i << " ..." << std::endl;
|
LOGINFO("Performing noise convolution on level %3d...",levelmin+i);
|
||||||
LOGINFO("Performing noise convolution on level %3d",levelmin+i);
|
|
||||||
|
|
||||||
//... add new refinement patch
|
//... add new refinement patch
|
||||||
LOGINFO("Allocating refinement patch");
|
LOGINFO("Allocating refinement patch");
|
||||||
|
@ -467,8 +465,9 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
|
||||||
|
|
||||||
rand.load(*fine,levelmin+i);
|
rand.load(*fine,levelmin+i);
|
||||||
|
|
||||||
//std::cerr << "check 1" << std::endl;
|
|
||||||
//fine->zero_boundary();
|
//fine->zero_boundary();
|
||||||
|
//std::cerr << "check 1" << std::endl;
|
||||||
|
//
|
||||||
|
|
||||||
convolution::perform<real_t>( the_tf_kernel->fetch_kernel( levelmin+i, true ), reinterpret_cast<void*>( fine->get_data_ptr() ), shift );
|
convolution::perform<real_t>( the_tf_kernel->fetch_kernel( levelmin+i, true ), reinterpret_cast<void*>( fine->get_data_ptr() ), shift );
|
||||||
|
|
||||||
|
@ -480,7 +479,6 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
|
||||||
fft_interpolate( *coarse, *fine, true, false, true );//bool fourier_splice = false )
|
fft_interpolate( *coarse, *fine, true, false, true );//bool fourier_splice = false )
|
||||||
|
|
||||||
|
|
||||||
//std::cerr << "check 3" << std::endl;
|
|
||||||
|
|
||||||
/*if( i==1 )
|
/*if( i==1 )
|
||||||
enforce_coarse_mean_for_overlap( *fine, *top );
|
enforce_coarse_mean_for_overlap( *fine, *top );
|
||||||
|
@ -492,10 +490,9 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
|
||||||
delta.add_patch( refh.offset(levelmin+i,0), refh.offset(levelmin+i,1), refh.offset(levelmin+i,2),
|
delta.add_patch( refh.offset(levelmin+i,0), refh.offset(levelmin+i,1), refh.offset(levelmin+i,2),
|
||||||
refh.size(levelmin+i,0), refh.size(levelmin+i,1), refh.size(levelmin+i,2) );
|
refh.size(levelmin+i,0), refh.size(levelmin+i,1), refh.size(levelmin+i,2) );
|
||||||
|
|
||||||
|
|
||||||
//delta.get_grid(levelmin+i)->zero();
|
//delta.get_grid(levelmin+i)->zero();
|
||||||
// fine->upload_bnd_add( *delta.get_grid(levelmin+i-1) );
|
// fine->upload_bnd_add( *delta.get_grid(levelmin+i-1) );
|
||||||
//fine->upload_bnd( *delta.get_grid(levelmin+i-1) );
|
//fine->upload_bnd_add( *delta.get_grid(levelmin+i-1) );
|
||||||
fine->copy_unpad( *delta.get_grid(levelmin+i) );
|
fine->copy_unpad( *delta.get_grid(levelmin+i) );
|
||||||
|
|
||||||
//fine->subtract_oct_mean();
|
//fine->subtract_oct_mean();
|
||||||
|
@ -791,9 +788,9 @@ void normalize_density( grid_hierarchy& delta )
|
||||||
void coarsen_density( const refinement_hierarchy& rh, GridHierarchy<real_t>& u )
|
void coarsen_density( const refinement_hierarchy& rh, GridHierarchy<real_t>& u )
|
||||||
{
|
{
|
||||||
|
|
||||||
/* for( int i=rh.levelmax(); i>0; --i )
|
for( int i=rh.levelmax(); i>0; --i )
|
||||||
mg_straight().restrict( *(u.get_grid(i)), *(u.get_grid(i-1)) );
|
mg_straight().restrict( *(u.get_grid(i)), *(u.get_grid(i-1)) );
|
||||||
*/
|
|
||||||
for( unsigned i=1; i<=rh.levelmax(); ++i )
|
for( unsigned i=1; i<=rh.levelmax(); ++i )
|
||||||
{
|
{
|
||||||
if( rh.offset(i,0) != u.get_grid(i)->offset(0)
|
if( rh.offset(i,0) != u.get_grid(i)->offset(0)
|
||||||
|
|
Loading…
Reference in a new issue