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

minor fixes

This commit is contained in:
Oliver Hahn 2010-07-02 16:17:14 -07:00
parent c48c73488a
commit 288749aea9
7 changed files with 30 additions and 32 deletions

View file

@ -45,7 +45,7 @@ endif
CFLAGS += $(OPT)
TARGET = MUSIC
OBJS = output.o transfer_function.o Numerics.o \
convolution_kernel.o densities.o cosmology.o main.o \
convolution_kernel.o densities.o cosmology.o poisson.o main.o \
$(patsubst plugins/%.cc,plugins/%.o,$(wildcard plugins/*.cc))
##############################################################################

View file

@ -264,12 +264,8 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
#endif
convolution::parameters conv_param;
//conv_param.boxlength = boxlength;
conv_param.ptf = ptf;
conv_param.pcf = &cf;
//conv_param.cosmo = cosmo;
//... compute absolute grid offsets
@ -314,9 +310,6 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
//... if random numbers are not given for lower levels, obtain them by averaging
if( lmingiven >= (int)levelmin )
{
//double x0[3] = { 0.0, 0.0, 0.0 };
//double lx[3] = { 1.0, 1.0, 1.0 };
randc[lmingiven] = new random_numbers<real_t>( (unsigned)pow(2,lmingiven), 32, rngseeds[lmingiven], true );//, x0, lx );
for( int ilevel = lmingiven-1; ilevel >= (int)levelmin; --ilevel ){
@ -332,8 +325,6 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
if( lmingiven < (int)levelmin )
{
throw std::runtime_error("You provided a seed for a level below levelmin, this is not supported yet.");
//double x0[3] = { 0.0, 0.0, 0.0 };
//double lx[3] = { 1.0, 1.0, 1.0 };
randc[lmingiven] = new random_numbers<real_t>( (unsigned)pow(2,lmingiven), 32, rngseeds[lmingiven], true );//, x0, lx );
@ -382,7 +373,7 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
random_numbers<real_t> *rc;
if( randc[levelmin] == NULL )
rc = new random_numbers<real_t>( nbase, 32, rngseeds[levelmin], true );//, x0, lx );
rc = new random_numbers<real_t>( nbase, 32, rngseeds[levelmin], true );
else
rc = randc[levelmin];
@ -760,7 +751,7 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
double sum;
#if 0
#if 1
//... subtract the box mean.... this will otherwise add
//... a constant curvature term to the potential
sum = 0.0;
@ -779,7 +770,7 @@ void GenerateDensityHierarchy( config_file& cf, transfer_function *ptf, tf_type
sum /= (nx*ny*nz);
}
std::cout << " - Top grid mean density is off by " << sum << ", correcting..." << std::endl;
//std::cout << " - Top grid mean density is off by " << sum << ", correcting..." << std::endl;
for( unsigned i=levelmin; i<=levelmax; ++i )
{

16
main.cc
View file

@ -48,7 +48,7 @@
#include "transfer_function.hh"
#define THE_CODE_NAME "music!"
#define THE_CODE_VERSION "0.2a"
#define THE_CODE_VERSION "0.3a"
namespace music
@ -86,15 +86,17 @@ void splash(void)
void modify_grid_for_TF( const refinement_hierarchy& rh_full, refinement_hierarchy& rh_TF, config_file& cf )
{
unsigned lbase, lbaseTF, lmax;
unsigned lbase, lbaseTF, lmax, overlap;
lbase = cf.getValue<unsigned>( "setup", "levelmin" );
lbaseTF = cf.getValueSafe<unsigned>( "setup", "levelminTF", lbase );
lmax = cf.getValue<unsigned>( "setup", "levelmax" );
// TODO: add documentation about setup/overlap to manual
overlap = cf.getValueSafe<unsigned>( "setup", "overlap", 4 );
rh_TF = rh_full;
unsigned pad = 4;
unsigned pad = overlap;
for( unsigned i=lbase+1; i<=lmax; ++i )
{
@ -287,6 +289,9 @@ int main (int argc, const char * argv[])
cosmo.nspect = cf.getValue<double>( "cosmology", "nspec" );
cosmo.WDMg_x = cf.getValueSafe<double>( "cosmology", "WDMg_x", 1.5 );
cosmo.WDMmass = cf.getValueSafe<double>( "cosmology", "WDMmass", 0.0 );
cosmo.dplus = 0.0;
cosmo.pnorm = 0.0;
cosmo.vfact = 0.0;
//cosmo.Gamma = cf.getValueSafe<double>( "cosmology", "Gamma", -1.0 );
@ -567,10 +572,11 @@ int main (int argc, const char * argv[])
}
the_output_plugin->finalize();
}catch(...)
}catch(std::runtime_error& excp)
{
std::cerr << " - " << excp.what() << std::endl;
std::cerr << " - A fatal error occured. We need to exit...\n";
bfatal;
bfatal = true;
}
//... clean up

View file

@ -692,7 +692,7 @@ struct interp_O5_fluxcorr
ustar[q+2] = interp4( (*utop)(ixtop+p-1,iytop-2,iztop+q), (*utop)(ixtop+p-1,iytop-1,iztop+q),
(*utop)(ixtop+p-1,iytop,iztop+q), (*utop)(ixtop+p-1,iytop+1,iztop+q),
(*utop)(ixtop+p-1,iytop+2,iztop+q), fac*((double)j-0.5) );
uhat[p] = interp4( ustar, fac*((double)k-0.5)-1.5 );
uhat[p] = interp4( ustar, fac*((double)k-0.5) );//-1.5 );
}
(*u)(ix,iy+j,iz+k) = interp4left( uhat[0], uhat[1], (*u)(ix+1,iy+j,iz+k),
@ -733,7 +733,7 @@ struct interp_O5_fluxcorr
ustar[q+2] = interp4( (*utop)(ixtop+p,iytop-2,iztop+q), (*utop)(ixtop+p,iytop-1,iztop+q),
(*utop)(ixtop+p,iytop,iztop+q), (*utop)(ixtop+p,iytop+1,iztop+q),
(*utop)(ixtop+p,iytop+2,iztop+q), fac*((double)j-0.5) );
uhat[p] = interp4( ustar, fac*((double)k-0.5)-1.5 );
uhat[p] = interp4( ustar, fac*((double)k-0.5));//-1.5 );
}
(*u)(ix,iy+j,iz+k) = interp4right( (*u)(ix-3,iy+j,iz+k), (*u)(ix-2,iy+j,iz+k),
@ -773,7 +773,7 @@ struct interp_O5_fluxcorr
ustar[q+2] = interp4( (*utop)(ixtop-2,iytop+p-1,iztop+q), (*utop)(ixtop-1,iytop+p-1,iztop+q),
(*utop)(ixtop,iytop+p-1,iztop+q), (*utop)(ixtop+1,iytop+p-1,iztop+q),
(*utop)(ixtop+2,iytop+p-1,iztop+q), fac*((double)j-0.5) );
uhat[p] = interp4( ustar, fac*((double)k-0.5)-1.5 );
uhat[p] = interp4( ustar, fac*((double)k-0.5));//-1.5 );
}
(*u)(ix+j,iy,iz+k) = interp4left( uhat[0], uhat[1], (*u)(ix+j,iy+1,iz+k),
@ -813,7 +813,7 @@ struct interp_O5_fluxcorr
ustar[q+2] = interp4( (*utop)(ixtop-2,iytop+p,iztop+q), (*utop)(ixtop-1,iytop+p,iztop+q),
(*utop)(ixtop,iytop+p,iztop+q), (*utop)(ixtop+1,iytop+p,iztop+q),
(*utop)(ixtop+2,iytop+p,iztop+q), fac*((double)j-0.5) );
uhat[p] = interp4( ustar, fac*((double)k-0.5)+1.5 );
uhat[p] = interp4( ustar, fac*((double)k-0.5));//+1.5 );
}
(*u)(ix+j,iy,iz+k) = interp4right( (*u)(ix+j,iy-3,iz+k), (*u)(ix+j,iy-2,iz+k),
@ -854,7 +854,7 @@ struct interp_O5_fluxcorr
ustar[q+2] = interp4( (*utop)(ixtop-2,iytop+q,iztop+p-1), (*utop)(ixtop-1,iytop+q,iztop+p-1),
(*utop)(ixtop,iytop+q,iztop+p-1), (*utop)(ixtop+1,iytop+q,iztop+p-1),
(*utop)(ixtop+2,iytop+q,iztop+p-1), fac*((double)j-0.5) );
uhat[p] = interp4( ustar, fac*((double)k-0.5)-1.5 );
uhat[p] = interp4( ustar, fac*((double)k-0.5));//-1.5 );
}
(*u)(ix+j,iy+k,iz) = interp4left( uhat[0], uhat[1], (*u)(ix+j,iy+k,iz+1),
@ -895,7 +895,7 @@ struct interp_O5_fluxcorr
ustar[q+2] = interp4( (*utop)(ixtop-2,iytop+q,iztop+p), (*utop)(ixtop-1,iytop+q,iztop+p),
(*utop)(ixtop,iytop+q,iztop+p), (*utop)(ixtop+1,iytop+q,iztop+p),
(*utop)(ixtop+2,iytop+q,iztop+p), fac*((double)j-0.5) );
uhat[p] = interp4( ustar, fac*((double)k-0.5)+1.5 );
uhat[p] = interp4( ustar, fac*((double)k-0.5));//+1.5 );
}
(*u)(ix+j,iy+k,iz) = interp4right( (*u)(ix+j,iy+k,iz-3), (*u)(ix+j,iy+k,iz-2),
@ -1000,7 +1000,7 @@ struct interp_O7_fluxcorr
(*utop)(ixtop+p-2,iytop-1,iztop+q), (*utop)(ixtop+p-2,iytop,iztop+q),
(*utop)(ixtop+p-2,iytop+1,iztop+q), (*utop)(ixtop+p-2,iytop+2,iztop+q),
(*utop)(ixtop+p-2,iytop+3,iztop+q), fac*((double)j-0.5) );
uhat[p] = interp6( ustar, fac*((double)k-0.5)-1.5 );
uhat[p] = interp6( ustar, fac*((double)k-0.5));//-1.5 );
}
(*u)(ix,iy+j,iz+k) = interp6left( uhat[0], uhat[1], uhat[2], (*u)(ix+1,iy+j,iz+k),
@ -1045,7 +1045,7 @@ struct interp_O7_fluxcorr
(*utop)(ixtop+p,iytop-1,iztop+q), (*utop)(ixtop+p,iytop,iztop+q),
(*utop)(ixtop+p,iytop+1,iztop+q), (*utop)(ixtop+p,iytop+2,iztop+q),
(*utop)(ixtop+p,iytop+3,iztop+q), fac*((double)j-0.5) );
uhat[p] = interp6( ustar, fac*((double)k-0.5)-1.5 );
uhat[p] = interp6( ustar, fac*((double)k-0.5) );//-1.5 );
}
(*u)(ix,iy+j,iz+k) = interp6right( (*u)(ix-4,iy+j,iz+k), (*u)(ix-3,iy+j,iz+k), (*u)(ix-2,iy+j,iz+k),
@ -1091,7 +1091,7 @@ struct interp_O7_fluxcorr
(*utop)(ixtop-1,iytop+p-2,iztop+q), (*utop)(ixtop,iytop+p-2,iztop+q),
(*utop)(ixtop+1,iytop+p-2,iztop+q), (*utop)(ixtop+2,iytop+p-2,iztop+q),
(*utop)(ixtop+3,iytop+p-2,iztop+q), fac*((double)j-0.5) );
uhat[p] = interp6( ustar, fac*((double)k-0.5)-1.5 );
uhat[p] = interp6( ustar, fac*((double)k-0.5));//-1.5 );
}
(*u)(ix+j,iy,iz+k) = interp6left( uhat[0], uhat[1], uhat[2], (*u)(ix+j,iy+1,iz+k),
@ -1136,7 +1136,7 @@ struct interp_O7_fluxcorr
(*utop)(ixtop-1,iytop+p,iztop+q), (*utop)(ixtop,iytop+p,iztop+q),
(*utop)(ixtop+1,iytop+p,iztop+q), (*utop)(ixtop+2,iytop+p,iztop+q),
(*utop)(ixtop+3,iytop+p,iztop+q), fac*((double)j-0.5) );
uhat[p] = interp6( ustar, fac*((double)k-0.5)+1.5 );
uhat[p] = interp6( ustar, fac*((double)k-0.5));//+1.5 );
}
(*u)(ix+j,iy,iz+k) = interp6right( (*u)(ix+j,iy-4,iz+k), (*u)(ix+j,iy-3,iz+k), (*u)(ix+j,iy-2,iz+k),
@ -1182,7 +1182,7 @@ struct interp_O7_fluxcorr
(*utop)(ixtop-1,iytop+q,iztop+p-2), (*utop)(ixtop,iytop+q,iztop+p-2),
(*utop)(ixtop+1,iytop+q,iztop+p-2), (*utop)(ixtop+2,iytop+q,iztop+p-2),
(*utop)(ixtop+3,iytop+q,iztop+p-2), fac*((double)j-0.5) );
uhat[p] = interp6( ustar, fac*((double)k-0.5)-1.5 );
uhat[p] = interp6( ustar, fac*((double)k-0.5));//-1.5 );
}
(*u)(ix+j,iy+k,iz) = interp6left( uhat[0], uhat[1], uhat[2], (*u)(ix+j,iy+k,iz+1),
@ -1227,7 +1227,7 @@ struct interp_O7_fluxcorr
(*utop)(ixtop-1,iytop+q,iztop+p), (*utop)(ixtop,iytop+q,iztop+p),
(*utop)(ixtop+1,iytop+q,iztop+p), (*utop)(ixtop+2,iytop+q,iztop+p),
(*utop)(ixtop+3,iytop+q,iztop+p), fac*((double)j-0.5) );
uhat[p] = interp6( ustar, fac*((double)k-0.5)+1.5 );
uhat[p] = interp6( ustar, fac*((double)k-0.5));//+1.5 );
}
(*u)(ix+j,iy+k,iz) = interp6right( (*u)(ix+j,iy+k,iz-4), (*u)(ix+j,iy+k,iz-3), (*u)(ix+j,iy+k,iz-2),

View file

@ -114,7 +114,7 @@ template< class S, class I, class O, typename T >
solver<S,I,O,T>::solver( GridHierarchy<T>& f, //const MeshvarBnd<T>& ubnd,
opt::smtype smoother, unsigned npresmooth, unsigned npostsmooth )
: m_scheme(), m_gridop(), m_npresmooth( npresmooth ), m_npostsmooth( npostsmooth ),
m_smoother( smoother ), m_ilevelmin( f.levelmin() ), m_pf( &f ), m_is_ini( true )
m_smoother( smoother ), m_ilevelmin( f.levelmin() ), m_is_ini( true ), m_pf( &f )
{
m_is_ini = true;

View file

@ -85,7 +85,7 @@ double multigrid_poisson_plugin::solve( grid_hierarchy& f, grid_hierarchy& u )
ps_presmooth = cf_.getValueSafe<unsigned>("poisson","pre_smooth",3);
ps_postsmooth = cf_.getValueSafe<unsigned>("poisson","post_smooth",3);
ps_smoother_name = cf_.getValueSafe<std::string>("poisson","smoother","gs");
order = cf_.getValueSafe<unsigned>( "setup", "laplace_order", 4 );
order = cf_.getValueSafe<unsigned>( "poisson", "laplace_order", 4 );
multigrid::opt::smtype ps_smtype = multigrid::opt::sm_gauss_seidel;

View file

@ -113,6 +113,7 @@ protected:
{
double solve_O2( grid_hierarchy& f, grid_hierarchy& u );
double solve_O4( grid_hierarchy& f, grid_hierarchy& u );
double solve_O6( grid_hierarchy& f, grid_hierarchy& u );
void gradient_O2( int dir, grid_hierarchy& u, grid_hierarchy& Du );
void gradient_O4( int dir, grid_hierarchy& u, grid_hierarchy& Du );
void gradient_O6( int dir, grid_hierarchy& u, grid_hierarchy& Du );