mirror of
https://github.com/cosmo-sims/MUSIC.git
synced 2024-09-19 17:03:46 +02:00
restored compatibility with old realspace transfer function scheme
This commit is contained in:
parent
f14552e106
commit
c8619e13e3
3 changed files with 43 additions and 33 deletions
|
@ -490,7 +490,7 @@ namespace convolution{
|
|||
return eval_split_recurse( tfr, xmid, dx, prevval, nsplit );
|
||||
}
|
||||
|
||||
#define OLD_KERNEL_SAMPLING
|
||||
#define OLD_KERNEL_SAMPLING
|
||||
|
||||
template< typename real_t >
|
||||
void kernel_real_cached<real_t>::precompute_kernel( transfer_function* ptf, tf_type type, const refinement_hierarchy& refh )
|
||||
|
@ -1095,7 +1095,9 @@ namespace convolution{
|
|||
}
|
||||
}
|
||||
|
||||
/* LOGUSER("Averaging fine kernel to coarse kernel...");
|
||||
|
||||
#ifdef OLD_KERNEL_SAMPLING
|
||||
LOGUSER("Averaging fine kernel to coarse kernel...");
|
||||
|
||||
//... copy averaged and convolved fine kernel to coarse kernel
|
||||
#pragma omp parallel for
|
||||
|
@ -1132,7 +1134,8 @@ namespace convolution{
|
|||
|
||||
}
|
||||
|
||||
*/
|
||||
#endif // OLD_KERNEL_SAMPLING
|
||||
|
||||
sprintf(cachefname,"temp_kernel_level%03d.tmp",ilevel);
|
||||
LOGUSER("Storing kernel in temp file \'%s\'.",cachefname);
|
||||
fp = fopen(cachefname,"w+");
|
||||
|
|
14
densities.cc
14
densities.cc
|
@ -17,9 +17,11 @@
|
|||
//TODO: this should be a larger number by default, just to maintain consistency with old default
|
||||
#define DEF_RAN_CUBE_SIZE 32
|
||||
|
||||
double blend_sharpness = 0.333;
|
||||
|
||||
double Blend_Function( double k, double kmax )
|
||||
{
|
||||
double const eps = 0.333;
|
||||
double const eps = blend_sharpness; // this is a global variable
|
||||
return -0.5*(tanh((fabs(k)-kmax)/eps)-1.0f);
|
||||
}
|
||||
|
||||
|
@ -427,6 +429,8 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
|
|||
levelmin = cf.getValueSafe<unsigned>("setup","levelmin_TF",levelminPoisson);
|
||||
levelmax = cf.getValue<unsigned>("setup","levelmax");
|
||||
kspaceTF = cf.getValueSafe<bool>("setup", "kspace_TF", false);
|
||||
|
||||
blend_sharpness = cf.getValueSafe<double>("setup","kspace_filter",0.333);
|
||||
|
||||
unsigned nbase = 1<<levelmin;
|
||||
|
||||
|
@ -679,8 +683,8 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
|
|||
*coarse = coarse_save;
|
||||
coarse->subtract_oct_mean();
|
||||
convolution::perform<real_t>( the_tf_kernel, reinterpret_cast<void*> (coarse->get_data_ptr()), shift );
|
||||
//coarse->subtract_mean();
|
||||
//coarse->upload_bnd_add( *delta.get_grid(levelmin+i-1) );
|
||||
coarse->subtract_mean();
|
||||
coarse->upload_bnd_add( *delta.get_grid(levelmin+i-1) );
|
||||
|
||||
//... clean up
|
||||
the_tf_kernel->deallocate();
|
||||
|
@ -729,10 +733,10 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
|
|||
|
||||
the_tf_kernel->deallocate();
|
||||
|
||||
//coarse->subtract_mean();
|
||||
coarse->subtract_mean();
|
||||
|
||||
//... upload data to coarser grid
|
||||
//coarse->upload_bnd_add( *delta.get_grid(levelmax-1) );
|
||||
coarse->upload_bnd_add( *delta.get_grid(levelmax-1) );
|
||||
|
||||
delete coarse;
|
||||
}
|
||||
|
|
53
random.cc
53
random.cc
|
@ -1563,7 +1563,8 @@ template< typename rng, typename T >
|
|||
void random_number_generator<rng,T>::compute_random_numbers( void )
|
||||
{
|
||||
bool kavg = pcf_->getValueSafe<bool>("random","kaveraging",true);
|
||||
bool rndsign = pcf_->getValueSafe<bool>("random","grafic_sign",false);
|
||||
bool rndsign = pcf_->getValueSafe<bool>("random","grafic_sign",false);
|
||||
bool brealspace_tf = !pcf_->getValue<bool>("setup","kspace_tf");
|
||||
|
||||
std::vector< rng* > randc(std::max(levelmax_,levelmin_seed_)+1,(rng*)NULL);
|
||||
|
||||
|
@ -1595,28 +1596,27 @@ void random_number_generator<rng,T>::compute_random_numbers( void )
|
|||
//... seeds are given for a level finer than levelmin, obtain by averaging
|
||||
if( levelmin_seed_ > levelmin_ )
|
||||
{
|
||||
if( rngfnames_[levelmin_seed_].size() > 0 )
|
||||
if( rngfnames_[levelmin_seed_].size() > 0 )
|
||||
randc[levelmin_seed_] = new rng( 1<<levelmin_seed_, rngfnames_[levelmin_seed_], rndsign );
|
||||
else
|
||||
else
|
||||
randc[levelmin_seed_] = new rng( 1<<levelmin_seed_, ran_cube_size_, rngseeds_[levelmin_seed_], true );//, x0, lx );
|
||||
|
||||
for( int ilevel = levelmin_seed_-1; ilevel >= (int)levelmin_; --ilevel ){
|
||||
if( rngseeds_[ilevel-levelmin_] > 0 )
|
||||
LOGINFO("Warning: random seed for level %d will be ignored.\n" \
|
||||
" consistency requires that it is obtained by restriction from level %d", ilevel, levelmin_seed_ );
|
||||
|
||||
|
||||
if( ilevel >= levelmax_ )
|
||||
randc[ilevel] = new rng( *randc[ilevel+1], kavg );
|
||||
else
|
||||
randc[ilevel] = new rng( *randc[ilevel+1], kavg );
|
||||
|
||||
if( ilevel+1 > levelmax_ )
|
||||
{
|
||||
delete randc[ilevel+1];
|
||||
randc[ilevel+1] = NULL;
|
||||
}
|
||||
}
|
||||
for( int ilevel = levelmin_seed_-1; ilevel >= (int)levelmin_; --ilevel ){
|
||||
if( rngseeds_[ilevel-levelmin_] > 0 )
|
||||
LOGINFO("Warning: random seed for level %d will be ignored.\n" \
|
||||
" consistency requires that it is obtained by restriction from level %d", ilevel, levelmin_seed_ );
|
||||
|
||||
if( brealspace_tf && ilevel < levelmax_ )
|
||||
randc[ilevel] = new rng( *randc[ilevel+1], false );
|
||||
else // do k-space averaging
|
||||
randc[ilevel] = new rng( *randc[ilevel+1], kavg );
|
||||
|
||||
if( ilevel+1 > levelmax_ )
|
||||
{
|
||||
delete randc[ilevel+1];
|
||||
randc[ilevel+1] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1682,11 +1682,14 @@ void random_number_generator<rng,T>::compute_random_numbers( void )
|
|||
delete randc[levelmax_];
|
||||
randc[levelmax_] = NULL;
|
||||
|
||||
//... make sure that the coarse grid contains oct averages where it overlaps with a fine grid
|
||||
//... this also ensures that constraints enforced on fine grids are carried to the coarser grids
|
||||
//for( int ilevel=levelmax_; ilevel>levelmin_; --ilevel )
|
||||
// correct_avg( ilevel-1, ilevel );
|
||||
|
||||
//... make sure that the coarse grid contains oct averages where it overlaps with a fine grid
|
||||
//... this also ensures that constraints enforced on fine grids are carried to the coarser grids
|
||||
if( brealspace_tf )
|
||||
{
|
||||
for( int ilevel=levelmax_; ilevel>levelmin_; --ilevel )
|
||||
correct_avg( ilevel-1, ilevel );
|
||||
}
|
||||
|
||||
//.. we do not have random numbers for a coarse level, generate them
|
||||
/*if( levelmax_rand_ >= (int)levelmin_ )
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue