32 void wilslp(
const multi1d<LatticeColorMatrix>&
u,
33 int j_decay,
int t_dir,
int kind,
38 multi1d<int> nrow(
Nd);
39 nrow = Layout::lattSize();
41 multi1d<LatticeColorMatrix> ug(
Nd);
42 multi1d<int> space_dir(
Nd);
43 LatticeColorMatrix u_t;
44 LatticeColorMatrix u_tmp;
45 LatticeColorMatrix u_diag;
46 LatticeColorMatrix u_space;
47 LatticeColorMatrix
tmp_2;
48 LatticeColorMatrix
tmp_3;
50 LatticeInteger t_coord;
90 nspace = space_dir[0];
117 QDPIO::cout <<
"nspace = " << nspace
119 << space_dir[0] <<
" "
120 << space_dir[1] <<
" "
121 << space_dir[2] <<
" "
122 << space_dir[3] << std::endl;
124 if( nr != (nspace-1) )
126 QDPIO::cerr << __func__
127 <<
": Trouble with space dimensions for Wilson loops: nr = " << nr
128 <<
" nspace = " << nspace
129 <<
" nu = " <<
nu << std::endl;
137 if ( (kind & 1) != 0 )
141 QDP_error_exit(
"Wrong lattice size for space-like Wilson loops: ",
144 multi2d<Double> wils_loop1(lengthr, lengthr);
147 for(
j = 1;
j < ( nspace); ++
j )
156 t_coord = Layout::latticeCoordinate(
nu);
158 for(
i = 0;
i < (
j); ++
i )
162 for(
r = 0;
r < ( lengthr); ++
r )
181 for(
t = 0;
t < ( lengthr); ++
t )
202 wl_trace = real(trace(
tmp_2));
203 wils_loop1[
r][
t] +=
sum(wl_trace);
209 dummy = 2.0 / double (Layout::vol()*Nc*nspace*(nspace-1)) ;
211 push(xml,
"wils_loop1");
212 write(xml,
"lengthr", lengthr);
215 multi1d<Double> wloop1(lengthr);
217 for(
r = 0;
r < lengthr; ++
r)
219 for(
t = 0;
t < lengthr; ++
t)
221 wils_loop1[
t][
r] = wils_loop1[
t][
r] *
dummy;
222 wloop1[
t] = wils_loop1[
t][
r];
226 write(xml,
"loop", wloop1);
232 QDPIO::cout <<
"wils_loop1 data written to .xml file " << std::endl;
239 t_coord = Layout::latticeCoordinate(
j_decay);
242 if ( (kind & 2) != 0 )
244 multi2d<Double> wils_loop2(lengtht, lengthr);
247 QDPIO::cout <<
"computing time-like Wilson loops" << std::endl;
249 for(
i = 0;
i < ( nspace); ++
i )
252 for(
r = 0;
r < ( lengthr); ++
r )
272 for(
t = 0;
t < ( lengtht); ++
t )
292 wl_trace = real(trace(
tmp_2));
293 wils_loop2[
t][
r] +=
sum(wl_trace);
299 dummy = 1.0 / double (Layout::vol()*Nc*nspace) ;
301 push(xml,
"wils_loop2");
302 write(xml,
"lengthr", lengthr);
303 write(xml,
"lengtht", lengtht);
306 multi1d<Double> wloop2(lengtht);
308 for(
r = 0;
r < lengthr; ++
r)
310 for(
t = 0;
t < lengtht; ++
t)
313 wloop2[
t] = wils_loop2[
t][
r];
317 write(xml,
"loop", wloop2);
323 QDPIO::cout <<
"wils_loop2 data written to .xml file " << std::endl;
327 if ( (kind & 4) != 0 )
336 else if ( nspace == 2 )
338 length = lengthr + lengthr/2;
341 length = 2 * lengthr + lengthr/2;
343 QDPIO::cout <<
"wils_loop3: lengtht=" << lengtht <<
" length=" << length
344 <<
" nspace=" << nspace <<
" j_decay=" <<
j_decay
345 <<
" t_dir=" << t_dir << std::endl;
346 multi2d<Double> wils_loop3(lengtht, length);
349 for(
j = 1;
j < ( nspace); ++
j )
353 for(
i = 0;
i < (
j); ++
i )
367 u_diag = u_diag * ftmp;
369 for(
r = 0;
r < ( lengthr); ++
r )
386 u_space = u_diag *
tmp_3;
389 for(
t = 0;
t < ( lengtht); ++
t )
408 wl_trace = real(trace(
tmp_2));
409 wils_loop3[
t][
r] +=
sum(wl_trace);
424 u_diag = u_diag * ftmp;
426 for(
r = 0;
r < ( lengthr); ++
r )
443 u_space = u_diag *
tmp_3;
446 for(
t = 0;
t < ( lengtht); ++
t )
465 wl_trace = real(trace(
tmp_2));
466 wils_loop3[
t][
r] +=
sum(wl_trace);
489 u_diag = u_diag * ftmp;
491 for(
r = 0;
r < ( lengthr/2); ++
r )
513 u_tmp = u_diag *
tmp_2;
517 for(
t = 0;
t < ( lengtht); ++
t )
536 wl_trace = real(trace(
tmp_2));
537 wils_loop3[
t][r_off+
r] +=
sum(wl_trace);
560 u_diag = u_diag * ftmp;
562 for(
r = 0;
r < ( lengthr/2); ++
r )
584 u_tmp = u_diag *
tmp_2;
588 for(
t = 0;
t < ( lengtht); ++
t )
609 wl_trace = real(trace(
tmp_2));
610 wils_loop3[
t][r_off+
r] +=
sum(wl_trace);
632 u_diag = u_diag * ftmp;
634 for(
r = 0;
r < ( lengthr/2); ++
r )
656 u_tmp = u_diag *
tmp_2;
660 for(
t = 0;
t < ( lengtht); ++
t )
680 wl_trace = real(trace(
tmp_2));
681 wils_loop3[
t][r_off+
r] +=
sum(wl_trace);
703 u_diag = u_diag * ftmp;
705 for(
r = 0;
r < ( lengthr/2); ++
r )
727 u_tmp = u_diag *
tmp_2;
731 for(
t = 0;
t < ( lengtht); ++
t )
751 wl_trace = real(trace(
tmp_2));
752 wils_loop3[
t][r_off+
r] +=
sum(wl_trace);
759 dummy = 1.0 / double (Layout::vol()*Nc*nspace*(nspace-1)) ;
760 for(
t = 0;
t < ( lengtht); ++
t )
761 for(
r = 0;
r < ( lengthr); ++
r )
762 wils_loop3[
t][
r] = wils_loop3[
t][
r] *
dummy;
764 dummy = 1.0 / double (Layout::vol()*Nc*2*nspace*(nspace-1)) ;
765 for(
t = 0;
t < ( lengtht); ++
t )
766 for(
r = r_off;
r < ( r_off+lengthr/2); ++
r )
767 wils_loop3[
t][
r] = wils_loop3[
t][
r] *
dummy;
775 r_off = lengthr + lengthr/2;
777 for(
k = 2;
k < ( nspace); ++
k )
781 for(
j = 1;
j < (
k); ++
j )
785 for(
i = 0;
i < (
j); ++
i )
799 u_tmp += ug[rho] *
tmp_2;
808 u_tmp += ug[rho] *
tmp_2;
820 u_diag += ug[rho] *
tmp_2;
822 u_diag = u_diag * ftmp;
824 for(
r = 0;
r < ( lengthr); ++
r )
847 u_tmp = u_diag *
tmp_2;
851 for(
t = 0;
t < ( lengtht); ++
t )
871 wl_trace = real(trace(
tmp_2));
872 wils_loop3[
t][r_off+
r] +=
sum(wl_trace);
888 tmp_2 = adj(ug[rho]) * u_tmp;
911 u_diag = u_diag * ftmp;
913 for(
r = 0;
r < ( lengthr); ++
r )
935 u_tmp = u_diag *
tmp_2;
939 for(
t = 0;
t < ( lengtht); ++
t )
959 wl_trace = real(trace(
tmp_2));
960 wils_loop3[
t][r_off+
r] +=
sum(wl_trace);
975 u_tmp += ug[rho] *
tmp_2;
985 u_tmp += ug[rho] * adj(
tmp_3);
998 u_diag += ug[rho] *
tmp_2;
1000 u_diag = u_diag * ftmp;
1002 for(
r = 0;
r < ( lengthr); ++
r )
1024 u_tmp = u_diag *
tmp_2;
1028 for(
t = 0;
t < ( lengtht); ++
t )
1041 tt = lsizet -
t - 1;
1042 btmp = t_coord < tt;
1048 wl_trace = real(trace(
tmp_2));
1049 wils_loop3[
t][r_off+
r] +=
sum(wl_trace);
1068 tmp_2 = adj(ug[rho]) * u_tmp;
1071 tmp_2 = adj(ug[rho]) * ug[
mu];
1094 u_diag = u_diag * ftmp;
1096 for(
r = 0;
r < ( lengthr); ++
r )
1118 u_tmp = u_diag *
tmp_2;
1122 for(
t = 0;
t < ( lengtht); ++
t )
1135 tt = lsizet -
t - 1;
1136 btmp = t_coord < tt;
1142 wl_trace = real(trace(
tmp_2));
1143 wils_loop3[
t][r_off+
r] +=
sum(wl_trace);
1154 dummy = 3.0 / double (Layout::vol()*Nc*2*nspace*(nspace-1)*(nspace-2)) ;
1155 for(
t = 0;
t < ( lengtht); ++
t )
1156 for(
r = r_off;
r < ( r_off+lengthr); ++
r )
1157 wils_loop3[
t][
r] = wils_loop3[
t][
r] *
dummy;
1161 push(xml,
"wils_loop3");
1162 write(xml,
"lengthr", lengthr);
1163 write(xml,
"lengtht", lengtht);
1164 write(xml,
"length", length);
1165 push(xml,
"wloop3");
1167 multi1d<Double> wloop3(wils_loop3.size2());
1169 for(
r = 0;
r < wils_loop3.size1(); ++
r)
1171 for(
t = 0;
t < wils_loop3.size2(); ++
t)
1173 wloop3[
t] = wils_loop3[
t][
r];
1177 write(xml,
"loop", wloop3);
1183 QDPIO::cout <<
"wils_loop3 data written to .xml file " << std::endl;
1186 QDPIO::cout <<
"All wils_loop data written to .xml file " << std::endl;
Primary include file for CHROMA library code.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams ¶m)
Writer parameters.
void axGauge(multi1d< LatticeColorMatrix > &ug, int decay_dir)
Axial gauge fixing.
void wilslp(const multi1d< LatticeColorMatrix > &u, int j_decay, int t_dir, int kind, XMLWriter &xml, const std::string &xml_group)
Calculate Wilson loops.
Asqtad Staggered-Dirac operator.
QDP_error_exit("too many BiCG iterations", n_count, rsd_sq, cp, c, re_rvr, im_rvr, re_a, im_a, re_b, im_b)
static multi1d< LatticeColorMatrix > u
push(xml_out,"Condensates")
FloatingPoint< double > Double
copymask(lcoord, lbit, ltmp_1, REPLACE)