double PlaquetteMonster::MeanPlaquette(int m,int n) { double plaq(0.0); Matrix P; P.Diagonal(1.0); if (m<1) return 1; if (n<1) return 1; if (m>len) return 0; if (n>len) return 0; int s[4]; for ( s[0]=0; s[0]<sites[0]; ++s[0] ) for ( s[1]=0; s[1]<sites[1]; ++s[1] ) for ( s[2]=0; s[2]<sites[2]; ++s[2] ) for ( s[3]=0; s[3]<sites[3]; ++s[3] ) for (int mu=0; mu<4; ++mu) for (int nu=0; nu<mu; ++nu) { P = lats[m-1]->GaugeField(mu,s); s[mu]+=m; P *= lats[n-1]->GaugeField(nu,s); s[nu]+=n; s[mu]-=m; P *= lats[m-1]->GaugeField(mu,s).Dagger(); s[nu]-=n; P *= lats[n-1]->GaugeField(nu,s).Dagger(); plaq += P.Tr(); } int volume(1); for (int mu=0; mu<4; ++mu) volume *= sites[mu]; return plaq / double(2*6*volume); }
int main(void) { if (1) { Matrix u; u.Diagonal(3.2); u.PrintProperties(); } if (1) { Matrix u; u.Initialize(1.0,2.0,3.0,4.0); u.PrintProperties(); } if (1) { double alpha, theta, phi; alpha = 2*PI*rng.genrand_res53(); theta = PI*rng.genrand_res53(); phi = 2*PI*rng.genrand_res53(); Matrix u; u.EulerSU2(alpha,theta,phi); u.PrintProperties(); } if (1) { Matrix u; u.RandomSU2(); u.PrintProperties(); } if (1) { Matrix u; for (double x=0.0; x<1.0; x+=0.05) { cout << x << endl; u.RandomSU2(x); u.PrintProperties(); } } exit(EXIT_SUCCESS); }