32 double c_plaq, c_rect;
38 err += params.
fetch_int(
"max_momentum", max_mom);
90 static const double l_c_rect = 1.0 / 8.0;
103 double O2_plaq = 0.0;
104 for (
int mu = 0; mu < 6; ++mu) {
109 O2_1x1 *= 4.0 / Nvol / NPE;
111 O2_1x2 *= 8.0 / Nvol / NPE;
114 const double O2_rect = l_c_rect * O2_1x2;
116 O2_plaq *= 4.0 / Nvol / NPE;
119 for (
int mu = 0; mu < Ndim; ++mu) {
120 for (
int nu = 0; nu < Ndim; ++nu) {
123 double O1_plaq = 0.0;
124 for (
int rho = 0; rho < Ndim; rho++) {
125 if ((mu != rho) && (nu != rho)) {
128 int fac1 =
factor(mu, rho);
129 int fac2 =
factor(nu, rho);
144 O1_1x1 *= 2.0 / Nvol / NPE;
145 O1_1x2 *= 4.0 / Nvol / NPE;
146 O1_plaq *= 2.0 / Nvol / NPE;
147 vout.
general(
m_vl,
" O1_clover_plaq = %d %d %.8f %.16e\n", mu, nu, t_flow, O1_1x1);
148 double O1_rect = l_c_rect * O1_1x2;
149 vout.
general(
m_vl,
" O1_clover_1x2 = %d %d %.8f %.16e\n", mu, nu, t_flow, O1_1x2);
150 vout.
general(
m_vl,
" O1_clover_rect = %d %d %.8f %.16e\n", mu, nu, t_flow, O1_rect);
152 vout.
general(
m_vl,
" O1_clover_imp = %d %d %.8f %.16e\n", mu, nu, t_flow, O1_imp);
153 vout.
general(
m_vl,
" O1_plaq = %d %d %.8f %.16e\n", mu, nu, t_flow, O1_plaq);
157 if (use_outputfile) {
176 const double normalization = double(Lt) / Nvol / NPE;
179 static const double l_c_rect = 1.0 / 8.0;
185 if (use_outputfile) {
190 for (
int mu = 0; mu < Ndim; ++mu) {
191 for (
int nu = 0; nu < Ndim; ++nu) {
192 std::vector<double> corr_plaq(Lt, 0);
193 std::vector<double> corr_1x1(Lt, 0);
194 std::vector<double> corr_1x2(Lt, 0);
195 std::vector<double> corr_scr(Lt);
196 for (
int rho = 0; rho < Ndim; rho++) {
197 if ((mu != rho) && (nu != rho)) {
200 int fac1 =
factor(mu, rho);
201 int fac2 =
factor(nu, rho);
203 for (
int t = 0; t < Lt; ++t) {
204 corr_plaq[t] += (fac1 * fac2 * corr_scr[t]);
207 for (
int t = 0; t < Lt; ++t) {
208 corr_1x1[t] += (fac1 * fac2 * corr_scr[t]);
211 for (
int t = 0; t < Lt; ++t) {
212 corr_1x2[t] += (fac1 * fac2 * corr_scr[t]);
219 for (
int t = 0; t < Lt; ++t) {
220 corr_plaq[t] *= 2 * normalization;
222 corr_1x1[t] *= 2 * normalization;
224 corr_1x2[t] *= 4 * normalization;
227 vout.
general(
m_vl,
" O1_clover_plaq_t = %d %d %.8f %d %.16e\n", mu, nu, t_flow, t, corr_1x1[t]);
228 double O1_rect = l_c_rect * corr_1x2[t];
229 vout.
general(
m_vl,
" O1_clover_rect_t = %d %d %.8f %d %.16e\n", mu, nu, t_flow, t, O1_rect);
231 vout.
general(
m_vl,
" O1_clover_imp_t = %d %d %.8f %d %.16e\n", mu, nu, t_flow, t, O1_imp);
233 vout.
general(
m_vl,
" O1_plaq_t = %d %d %.8f %d %.16e\n", mu, nu, t_flow, t, corr_plaq[t]);
248 if (use_outputfile) {
268 const double normalization = double(Lt) / Nvol / NPE;
271 static const double l_c_rect = 1.0 / 8.0;
276 vector<int> source_position(4, 0);
277 vector<int> momentum_sink(3);
281 if (use_outputfile) {
286 for (
int ipx = 0; ipx <
m_max_mom + 1; ipx++) {
287 for (
int ipy = 0; ipy < Np; ipy++) {
288 for (
int ipz = 0; ipz < Np; ipz++) {
289 momentum_sink[0] = ipx;
292 for (
int mu = 0; mu < Ndim; ++mu) {
293 for (
int nu = 0; nu < Ndim; ++nu) {
294 std::vector<double> corr_plaq(Lt, 0);
295 std::vector<double> corr_1x1(Lt, 0);
296 std::vector<double> corr_1x2(Lt, 0);
297 std::vector<double> corr_scr(Lt);
298 for (
int rho = 0; rho < Ndim; rho++) {
299 if ((mu != rho) && (nu != rho)) {
302 int fac1 =
factor(mu, rho);
303 int fac2 =
factor(nu, rho);
305 for (
int t = 0; t < Lt; ++t) {
306 corr_plaq[t] += (fac1 * fac2 * corr_scr[t]);
309 for (
int t = 0; t < Lt; ++t) {
310 corr_1x1[t] += (fac1 * fac2 * corr_scr[t]);
313 for (
int t = 0; t < Lt; ++t) {
314 corr_1x2[t] += (fac1 * fac2 * corr_scr[t]);
321 for (
int t = 0; t < Lt; ++t) {
322 corr_plaq[t] *= 2 * normalization;
324 corr_1x1[t] *= 2 * normalization;
326 corr_1x2[t] *= 4 * normalization;
328 vout.
general(
m_vl,
" O1_clover_plaq_t_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, corr_1x1[t]);
329 double O1_rect = l_c_rect * corr_1x2[t];
330 vout.
general(
m_vl,
" O1_clover_rect_t_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, O1_rect);
332 vout.
general(
m_vl,
" O1_clover_imp_t_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, O1_imp);
334 vout.
general(
m_vl,
" O1_plaq_t_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, corr_plaq[t]);
352 if (use_outputfile) {
371 const double normalization = double(Lx) / Nvol / NPE;
374 static const double l_c_rect = 1.0 / 8.0;
379 if (use_outputfile) {
384 for (
int mu = 0; mu < Ndim; ++mu) {
385 for (
int nu = 0; nu < Ndim; ++nu) {
386 std::vector<double> corr_plaq(Lx, 0);
387 std::vector<double> corr_1x1(Lx, 0);
388 std::vector<double> corr_1x2(Lx, 0);
389 std::vector<double> corr_scr(Lx);
390 for (
int rho = 0; rho < Ndim; rho++) {
391 if ((mu != rho) && (nu != rho)) {
394 int fac1 =
factor(mu, rho);
395 int fac2 =
factor(nu, rho);
397 for (
int x = 0; x < Lx; ++x) {
398 corr_plaq[x] += (fac1 * fac2 * corr_scr[x]);
401 for (
int x = 0; x < Lx; ++x) {
402 corr_1x1[x] += (fac1 * fac2 * corr_scr[x]);
405 for (
int x = 0; x < Lx; ++x) {
406 corr_1x2[x] += (fac1 * fac2 * corr_scr[x]);
413 for (
int x = 0; x < Lx; ++x) {
414 corr_plaq[x] *= 2 * normalization;
416 corr_1x1[x] *= 2 * normalization;
418 corr_1x2[x] *= 4 * normalization;
421 vout.
general(
m_vl,
" O1_clover_plaq_x = %d %d %.8f %d %.16e\n", mu, nu, t_flow, x, corr_1x1[x]);
422 double O1_rect = l_c_rect * corr_1x2[x];
423 vout.
general(
m_vl,
" O1_clover_rect_x = %d %d %.8f %d %.16e\n", mu, nu, t_flow, x, O1_rect);
425 vout.
general(
m_vl,
" O1_clover_imp_x = %d %d %.8f %d %.16e\n", mu, nu, t_flow, x, O1_imp);
427 vout.
general(
m_vl,
" O1_plaq_x = %d %d %.8f %d %.16e\n", mu, nu, t_flow, x, corr_plaq[x]);
441 if (use_outputfile) {
461 const double normalization = double(Lx) / Nvol / NPE;
464 static const double l_c_rect = 1.0 / 8.0;
469 vector<int> source_position(4, 0);
470 vector<int> momentum_sink(3);
474 if (use_outputfile) {
479 for (
int ipx = 0; ipx <
m_max_mom + 1; ipx++) {
480 for (
int ipy = 0; ipy < Np; ipy++) {
481 for (
int ipz = 0; ipz < Np; ipz++) {
482 momentum_sink[0] = ipx;
485 for (
int mu = 0; mu < Ndim; ++mu) {
486 for (
int nu = 0; nu < Ndim; ++nu) {
487 std::vector<double> corr_plaq(Lx, 0);
488 std::vector<double> corr_1x1(Lx, 0);
489 std::vector<double> corr_1x2(Lx, 0);
490 std::vector<double> corr_scr(Lx);
491 for (
int rho = 0; rho < Ndim; rho++) {
492 if ((mu != rho) && (nu != rho)) {
495 int fac1 =
factor(mu, rho);
496 int fac2 =
factor(nu, rho);
498 for (
int t = 0; t < Lx; ++t) {
499 corr_plaq[t] += (fac1 * fac2 * corr_scr[t]);
502 for (
int t = 0; t < Lx; ++t) {
503 corr_1x1[t] += (fac1 * fac2 * corr_scr[t]);
506 for (
int t = 0; t < Lx; ++t) {
507 corr_1x2[t] += (fac1 * fac2 * corr_scr[t]);
514 for (
int t = 0; t < Lx; ++t) {
515 corr_plaq[t] *= 2 * normalization;
517 corr_1x1[t] *= 2 * normalization;
519 corr_1x2[t] *= 4 * normalization;
521 vout.
general(
m_vl,
" O1_clover_plaq_x_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, corr_1x1[t]);
522 double O1_rect = l_c_rect * corr_1x2[t];
523 vout.
general(
m_vl,
" O1_clover_rect_x_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, O1_rect);
525 vout.
general(
m_vl,
" O1_clover_imp_x_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, O1_imp);
527 vout.
general(
m_vl,
" O1_plaq_x_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, corr_plaq[t]);
545 if (use_outputfile) {
564 const double normalization = double(Ly) / Nvol / NPE;
567 static const double l_c_rect = 1.0 / 8.0;
573 if (use_outputfile) {
578 for (
int mu = 0; mu < Ndim; ++mu) {
579 for (
int nu = 0; nu < Ndim; ++nu) {
580 std::vector<double> corr_plaq(Ly, 0);
581 std::vector<double> corr_1x1(Ly, 0);
582 std::vector<double> corr_1x2(Ly, 0);
583 std::vector<double> corr_scr(Ly);
584 for (
int rho = 0; rho < Ndim; rho++) {
585 if ((mu != rho) && (nu != rho)) {
588 int fac1 =
factor(mu, rho);
589 int fac2 =
factor(nu, rho);
591 for (
int y = 0; y < Ly; ++y) {
592 corr_plaq[y] += (fac1 * fac2 * corr_scr[y]);
595 for (
int y = 0; y < Ly; ++y) {
596 corr_1x1[y] += (fac1 * fac2 * corr_scr[y]);
599 for (
int y = 0; y < Ly; ++y) {
600 corr_1x2[y] += (fac1 * fac2 * corr_scr[y]);
607 for (
int y = 0; y < Ly; ++y) {
608 corr_plaq[y] *= 2 * normalization;
610 corr_1x1[y] *= 2 * normalization;
612 corr_1x2[y] *= 4 * normalization;
615 vout.
general(
m_vl,
" O1_clover_plaq_y = %d %d %.8f %d %.16e\n", mu, nu, t_flow, y, corr_1x1[y]);
616 double O1_rect = l_c_rect * corr_1x2[y];
617 vout.
general(
m_vl,
" O1_clover_rect_y = %d %d %.8f %d %.16e\n", mu, nu, t_flow, y, O1_rect);
619 vout.
general(
m_vl,
" O1_clover_imp_y = %d %d %.8f %d %.16e\n", mu, nu, t_flow, y, O1_imp);
621 vout.
general(
m_vl,
" O1_plaq_y = %d %d %.8f %d %.16e\n", mu, nu, t_flow, y, corr_plaq[y]);
635 if (use_outputfile) {
654 const double normalization = double(Ly) / Nvol / NPE;
657 static const double l_c_rect = 1.0 / 8.0;
662 vector<int> source_position(4, 0);
663 vector<int> momentum_sink(3);
667 if (use_outputfile) {
672 for (
int ipx = 0; ipx <
m_max_mom + 1; ipx++) {
673 for (
int ipy = 0; ipy < Np; ipy++) {
674 for (
int ipz = 0; ipz < Np; ipz++) {
675 momentum_sink[0] = ipx;
678 for (
int mu = 0; mu < Ndim; ++mu) {
679 for (
int nu = 0; nu < Ndim; ++nu) {
680 std::vector<double> corr_plaq(Ly, 0);
681 std::vector<double> corr_1x1(Ly, 0);
682 std::vector<double> corr_1x2(Ly, 0);
683 std::vector<double> corr_scr(Ly);
684 for (
int rho = 0; rho < Ndim; rho++) {
685 if ((mu != rho) && (nu != rho)) {
688 int fac1 =
factor(mu, rho);
689 int fac2 =
factor(nu, rho);
691 for (
int t = 0; t < Ly; ++t) {
692 corr_plaq[t] += (fac1 * fac2 * corr_scr[t]);
695 for (
int t = 0; t < Ly; ++t) {
696 corr_1x1[t] += (fac1 * fac2 * corr_scr[t]);
699 for (
int t = 0; t < Ly; ++t) {
700 corr_1x2[t] += (fac1 * fac2 * corr_scr[t]);
707 for (
int t = 0; t < Ly; ++t) {
708 corr_plaq[t] *= 2 * normalization;
710 corr_1x1[t] *= 2 * normalization;
712 corr_1x2[t] *= 4 * normalization;
714 vout.
general(
m_vl,
" O1_clover_plaq_y_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, corr_1x1[t]);
715 double O1_rect = l_c_rect * corr_1x2[t];
716 vout.
general(
m_vl,
" O1_clover_rect_y_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, O1_rect);
718 vout.
general(
m_vl,
" O1_clover_imp_y_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, O1_imp);
720 vout.
general(
m_vl,
" O1_plaq_y_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, corr_plaq[t]);
738 if (use_outputfile) {
757 const double normalization = double(Lz) / Nvol / NPE;
760 static const double l_c_rect = 1.0 / 8.0;
766 if (use_outputfile) {
771 for (
int mu = 0; mu < Ndim; ++mu) {
772 for (
int nu = 0; nu < Ndim; ++nu) {
773 std::vector<double> corr_plaq(Lz, 0);
774 std::vector<double> corr_1x1(Lz, 0);
775 std::vector<double> corr_1x2(Lz, 0);
776 std::vector<double> corr_scr(Lz);
777 for (
int rho = 0; rho < Ndim; rho++) {
778 if ((mu != rho) && (nu != rho)) {
781 int fac1 =
factor(mu, rho);
782 int fac2 =
factor(nu, rho);
784 for (
int z = 0; z < Lz; ++z) {
785 corr_plaq[z] += (fac1 * fac2 * corr_scr[z]);
788 for (
int z = 0; z < Lz; ++z) {
789 corr_1x1[z] += (fac1 * fac2 * corr_scr[z]);
792 for (
int z = 0; z < Lz; ++z) {
793 corr_1x2[z] += (fac1 * fac2 * corr_scr[z]);
800 for (
int z = 0; z < Lz; ++z) {
801 corr_plaq[z] *= 2 * normalization;
803 corr_1x1[z] *= 2 * normalization;
805 corr_1x2[z] *= 4 * normalization;
808 vout.
general(
m_vl,
" O1_clover_plaq_z = %d %d %.8f %d %.16e\n", mu, nu, t_flow, z, corr_1x1[z]);
809 double O1_rect = l_c_rect * corr_1x2[z];
810 vout.
general(
m_vl,
" O1_clover_rect_z = %d %d %.8f %d %.16e\n", mu, nu, t_flow, z, O1_rect);
812 vout.
general(
m_vl,
" O1_clover_imp_z = %d %d %.8f %d %.16e\n", mu, nu, t_flow, z, O1_imp);
814 vout.
general(
m_vl,
" O1_plaq_z = %d %d %.8f %d %.16e\n", mu, nu, t_flow, z, corr_plaq[z]);
828 if (use_outputfile) {
847 const double normalization = double(Lz) / Nvol / NPE;
850 static const double l_c_rect = 1.0 / 8.0;
855 vector<int> source_position(4, 0);
856 vector<int> momentum_sink(3);
860 if (use_outputfile) {
865 for (
int ipx = 0; ipx <
m_max_mom + 1; ipx++) {
866 for (
int ipy = 0; ipy < Np; ipy++) {
867 for (
int ipz = 0; ipz < Np; ipz++) {
868 momentum_sink[0] = ipx;
871 for (
int mu = 0; mu < Ndim; ++mu) {
872 for (
int nu = 0; nu < Ndim; ++nu) {
873 std::vector<double> corr_plaq(Lz, 0);
874 std::vector<double> corr_1x1(Lz, 0);
875 std::vector<double> corr_1x2(Lz, 0);
876 std::vector<double> corr_scr(Lz);
877 for (
int rho = 0; rho < Ndim; rho++) {
878 if ((mu != rho) && (nu != rho)) {
881 int fac1 =
factor(mu, rho);
882 int fac2 =
factor(nu, rho);
884 for (
int t = 0; t < Lz; ++t) {
885 corr_plaq[t] += (fac1 * fac2 * corr_scr[t]);
888 for (
int t = 0; t < Lz; ++t) {
889 corr_1x1[t] += (fac1 * fac2 * corr_scr[t]);
892 for (
int t = 0; t < Lz; ++t) {
893 corr_1x2[t] += (fac1 * fac2 * corr_scr[t]);
900 for (
int t = 0; t < Lz; ++t) {
901 corr_plaq[t] *= 2 * normalization;
903 corr_1x1[t] *= 2 * normalization;
905 corr_1x2[t] *= 4 * normalization;
907 vout.
general(
m_vl,
" O1_clover_plaq_z_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, corr_1x1[t]);
908 double O1_rect = l_c_rect * corr_1x2[t];
909 vout.
general(
m_vl,
" O1_clover_rect_z_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, O1_rect);
911 vout.
general(
m_vl,
" O1_clover_imp_z_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, O1_imp);
913 vout.
general(
m_vl,
" O1_plaq_z_FT = %d %d %d %d %d %.8f %d %.16e\n", momentum_sink[0], momentum_sink[1], momentum_sink[2], mu, nu, t_flow, t, corr_plaq[t]);
931 if (use_outputfile) {
948 for (
int mu = 0; mu < Ndim; ++mu) {
949 for (
int nu = mu + 1; nu < Ndim; ++nu) {
965 }
else if (mu > nu) {
987 if ((mu == 0) && (nu == 1))
return 0;
988 else if ((mu == 0) && (nu == 2))
return 1;
989 else if ((mu == 0) && (nu == 3))
return 2;
990 else if ((mu == 1) && (nu == 2))
return 3;
991 else if ((mu == 1) && (nu == 3))
return 4;
992 else if ((mu == 2) && (nu == 3))
return 5;