From: Alexander Schmidt Date: Thu, 28 Nov 2013 09:40:06 +0000 (+0100) Subject: Made phip2 measurement much faster and much less stupid. X-Git-Url: http://git.treefish.org/~alex/phys/heatbath.git/commitdiff_plain/fbcd6adfcebeddc61aec5d95be85d8fb63226599?hp=e6bdf191ec43615a0e5d05a5095336150a15417b Made phip2 measurement much faster and much less stupid. --- diff --git a/obs_phip2_hist.hpp b/obs_phip2_hist.hpp index 60c86b8..0f2ef32 100644 --- a/obs_phip2_hist.hpp +++ b/obs_phip2_hist.hpp @@ -41,17 +41,14 @@ void obs_phip2_hist::_meas(bool loadedobs, const int& nthmeas) { const double ppx = 2.*M_PI/O815->comargs.lsize[1] * ( 0 + int( kpimode/4. * O815->comargs.lsize[1] ) ); if (!loadedobs) { - OM->phip2[ kpimode ] = 0; - - for (int ixt = 0; ixt < O815->comargs.lsize[0]; ixt++) - for (int ixx = 0; ixx < O815->comargs.lsize[1]; ixx++) - for (int ixpt = 0; ixpt < O815->comargs.lsize[0]; ixpt++) - for (int ixpx = 0; ixpx < O815->comargs.lsize[1]; ixpx++) - OM->phip2[ kpimode ] += real( conj( Sim->conf[ ixt*O815->comargs.lsize[1] + ixx ].phi ) - * Sim->conf[ ixpt*O815->comargs.lsize[1] + ixpx ].phi - * exp ( _i_*(double)ppx*(double)(ixx-ixpx) + _i_*(double)ppt*(double)(ixt-ixpt) ) ); - - OM->phip2[ kpimode ] /= Sim->LSIZE2; + complex phitildepp = 0; + + for (int ixpt = 0; ixpt < O815->comargs.lsize[0]; ixpt++) + for (int ixpx = 0; ixpx < O815->comargs.lsize[1]; ixpx++) + phitildepp += Sim->conf[ ixpt*O815->comargs.lsize[1] + ixpx ].phi + * exp ( - _i_*(double)ppx*(double)ixpx - _i_*(double)ppt*(double)ixpt ); + + OM->phip2[ kpimode ] = norm( phitildepp) / Sim->LSIZE2; } *out << O815->paraQ->getParaVals();