mirror of
https://github.com/cosmo-sims/MUSIC.git
synced 2024-09-19 17:03:46 +02:00
density coarsening is done using spectral sampling if spectral sampling of the transfer function is used, otherwise block averaging is used
This commit is contained in:
parent
0b4d49ec06
commit
7723c9b2a7
4 changed files with 27 additions and 20 deletions
19
densities.cc
19
densities.cc
|
@ -942,19 +942,24 @@ 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, bool kspace )
|
||||
{
|
||||
unsigned levelmin_TF = u.levelmin();//rh.levelmin();
|
||||
unsigned levelmin_TF = u.levelmin();
|
||||
|
||||
/*for( int i=rh.levelmax(); i>0; --i )
|
||||
mg_straight().restrict( *(u.get_grid(i)), *(u.get_grid(i-1)) );*/
|
||||
|
||||
for( int i=levelmin_TF; i>0; --i )
|
||||
fft_coarsen( *(u.get_grid(i)), *(u.get_grid(i-1)) );
|
||||
//mg_straight().restrict( *(u.get_grid(i)), *(u.get_grid(i-1)) );
|
||||
|
||||
if( kspace )
|
||||
{
|
||||
for( int i=levelmin_TF; i>=(int)rh.levelmin(); --i )
|
||||
fft_coarsen( *(u.get_grid(i)), *(u.get_grid(i-1)) );
|
||||
}
|
||||
else
|
||||
{
|
||||
for( int i=levelmin_TF; i>=(int)rh.levelmin(); --i )
|
||||
mg_straight().restrict( *(u.get_grid(i)), *(u.get_grid(i-1)) );
|
||||
}
|
||||
|
||||
//for( unsigned i=levelmin_TF+1; i<=rh.levelmax(); ++i )
|
||||
for( unsigned i=1; i<=rh.levelmax(); ++i )
|
||||
{
|
||||
if( rh.offset(i,0) != u.get_grid(i)->offset(0)
|
||||
|
|
|
@ -1077,7 +1077,7 @@ inline void enforce_mean( M& v, M& V )
|
|||
|
||||
|
||||
|
||||
void coarsen_density( const refinement_hierarchy& rh, GridHierarchy<real_t>& u );
|
||||
void coarsen_density( const refinement_hierarchy& rh, GridHierarchy<real_t>& u, bool kspace );
|
||||
|
||||
|
||||
#endif
|
||||
|
|
24
main.cc
24
main.cc
|
@ -359,7 +359,9 @@ int main (int argc, const char * argv[])
|
|||
cf.insertValue("setup","levelmin_TF",cf.getValue<std::string>("setup","levelmin"));
|
||||
}
|
||||
|
||||
if( cf.getValueSafe<bool>( "setup", "kspace_TF", true ) )
|
||||
bool bspectral_sampling;
|
||||
|
||||
if( bspectral_sampling = cf.getValueSafe<bool>( "setup", "kspace_TF", true ) )
|
||||
LOGINFO("Using k-space sampled transfer functions...");
|
||||
else
|
||||
LOGINFO("Using real space sampled transfer functions...");
|
||||
|
@ -598,7 +600,7 @@ int main (int argc, const char * argv[])
|
|||
|
||||
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, my_tf_type , rh_TF, rand, f, false, false );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
|
||||
normalize_density(f);
|
||||
|
@ -657,7 +659,7 @@ int main (int argc, const char * argv[])
|
|||
std::cout << "-------------------------------------------------------------\n";
|
||||
LOGUSER("Computing baryon density...");
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, baryon , rh_TF, rand, f, false, bbshift );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
@ -730,7 +732,7 @@ int main (int argc, const char * argv[])
|
|||
if( do_baryons )
|
||||
{
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, total , rh_TF, rand, f, false, false );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
@ -806,7 +808,7 @@ int main (int argc, const char * argv[])
|
|||
//... we do baryons and have velocity transfer functions, or we do SPH and not to shift
|
||||
//... do DM first
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, vcdm , rh_TF, rand, f, false, false );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
@ -869,7 +871,7 @@ int main (int argc, const char * argv[])
|
|||
LOGUSER("Computing baryon velocitites...");
|
||||
//... do baryons
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, vbaryon , rh_TF, rand, f, false, bbshift );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
@ -943,7 +945,7 @@ int main (int argc, const char * argv[])
|
|||
|
||||
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, my_tf_type , rh_TF, rand, f, false, false );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
@ -1077,7 +1079,7 @@ int main (int argc, const char * argv[])
|
|||
LOGUSER("Computing baryon displacements...");
|
||||
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, vbaryon , rh_TF, rand, f, false, bbshift );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
@ -1165,7 +1167,7 @@ int main (int argc, const char * argv[])
|
|||
my_tf_type = total;
|
||||
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, my_tf_type , rh_TF, rand, f, false, false );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
@ -1252,7 +1254,7 @@ int main (int argc, const char * argv[])
|
|||
LOGUSER("Computing baryon density...");
|
||||
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, baryon , rh_TF, rand, f, true, false );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
@ -1293,7 +1295,7 @@ int main (int argc, const char * argv[])
|
|||
LOGUSER("Computing baryon displacements...");
|
||||
|
||||
GenerateDensityHierarchy( cf, the_transfer_function_plugin, baryon , rh_TF, rand, f, false, bbshift );
|
||||
coarsen_density(rh_Poisson, f);
|
||||
coarsen_density(rh_Poisson, f, bspectral_sampling);
|
||||
f.add_refinement_mask( rh_Poisson.get_coord_shift() );
|
||||
normalize_density(f);
|
||||
|
||||
|
|
|
@ -469,7 +469,7 @@ public:
|
|||
LOGUSER("computing ellipsoid axes.....");
|
||||
compute_axes();
|
||||
}
|
||||
float muold[3] = {mu[0],mu[1],mu[2]};
|
||||
//float muold[3] = {mu[0],mu[1],mu[2]};
|
||||
float munew[3];
|
||||
for( int i=0; i<3; ++i )
|
||||
munew[i] = sgn(mu[i])/sqr(1.0/sqrt(fabs(mu[i]))+dr);
|
||||
|
|
Loading…
Reference in a new issue