X-Git-Url: http://git.treefish.org/~alex/phys/heatbath.git/blobdiff_plain/4b4dcf9a4b5a913c1574a9cc1aa479f1aa35a003..dca762861c66d8782be31811822812d347ee4577:/obs_phip2_hist.hpp diff --git a/obs_phip2_hist.hpp b/obs_phip2_hist.hpp index a239d0e..60c86b8 100644 --- a/obs_phip2_hist.hpp +++ b/obs_phip2_hist.hpp @@ -15,7 +15,7 @@ class obs_phip2_hist : public o815::obs { public: struct obsmem { - double phip2[2]; + double phip2[4]; }; obs_phip2_hist(o815 *_O815); @@ -28,7 +28,7 @@ private: }; obs_phip2_hist::obs_phip2_hist(o815 *_O815) : o815::obs("phip2", - _O815->paraQ->getParaNames() + "nthstep:iruv:phip2absdiffequi", _O815, + _O815->paraQ->getParaNames() + "nthstep:imode:kt:kx:phip2absdiffequi", _O815, sizeof(obsmem), "_hist") { OM = (obsmem*)obsMem; @@ -36,33 +36,30 @@ obs_phip2_hist::obs_phip2_hist(o815 *_O815) : o815::obs("phip2", } void obs_phip2_hist::_meas(bool loadedobs, const int& nthmeas) { - if (!loadedobs) { - for (int kpiruv=0; kpiruv<2; kpiruv++) { - double ppt = 2.*M_PI/O815->comargs.lsize[0] * ( 0 + kpiruv * O815->comargs.lsize[0]/2 ) ; - double ppx = 2.*M_PI/O815->comargs.lsize[1] * ( 0 + kpiruv * O815->comargs.lsize[1]/2 ); + for (int kpimode=0; kpimode<4; kpimode++) { + const double ppt = 2.*M_PI/O815->comargs.lsize[0] * ( 0 + int( kpimode/4. * O815->comargs.lsize[0] ) ) ; + const double ppx = 2.*M_PI/O815->comargs.lsize[1] * ( 0 + int( kpimode/4. * O815->comargs.lsize[1] ) ); - OM->phip2[ kpiruv ] = 0; + 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[ kpiruv ] += 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 ] += 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[ kpiruv ] /= Sim->LSIZE2; + OM->phip2[ kpimode ] /= Sim->LSIZE2; } - } - - for (int kpiruv=0; kpiruv<2; kpiruv++) { - double ppt = 2.*M_PI/O815->comargs.lsize[0] * ( 0 + kpiruv * O815->comargs.lsize[0]/2 ) ; - double ppx = 2.*M_PI/O815->comargs.lsize[1] * ( 0 + kpiruv * O815->comargs.lsize[1]/2 ); - + *out << O815->paraQ->getParaVals(); *out << "\t" << ( Sim->nequi + (nthmeas+1)*Sim->nskip ); - *out << "\t" << kpiruv; - *out << "\t" << abs( OM->phip2[ kpiruv ] - 1./(ppt*ppt + ppx*ppx + Sim->m*Sim->m) ) << endl; + *out << "\t" << kpimode; + *out << "\t" << 0 + int( kpimode/4. * O815->comargs.lsize[0] ); + *out << "\t" << 0 + int( kpimode/4. * O815->comargs.lsize[1] ); + *out << "\t" << abs( OM->phip2[ kpimode ] - 1./(ppt*ppt + ppx*ppx + Sim->m*Sim->m) ) << endl; } };