Bridge++  Version 1.5.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
staple_SF.cpp
Go to the documentation of this file.
1 
14 #include "staple_SF.h"
15 
32 const std::string Staple_SF::class_name = "Staple_SF";
33 
34 //====================================================================
36 {
37  const string str_vlevel = params.get_string("verbose_level");
38 
39  m_vl = vout.set_verbose_level(str_vlevel);
40 
41  //- fetch and check input parameters
42  std::vector<double> phi, phipr, p_omega;
43 
44  int err = 0;
45  err += params.fetch_double_vector("phi", phi);
46  err += params.fetch_double_vector("phipr", phipr);
47  err += params.fetch_double_vector("p_omega", p_omega);
48 
49  if (err) {
50  vout.crucial(m_vl, "Error at %s: input parameter not found.\n", class_name.c_str());
51  exit(EXIT_FAILURE);
52  }
53 
54 
55  set_parameters(phi, phipr, p_omega); // call std::vector version
56 }
57 
58 
59 //====================================================================
60 void Staple_SF::set_parameters(const std::vector<double>& phi, const std::vector<double>& phipr,
61  const std::vector<double>& p_omega)
62 {
63  //- print input parameters
64  vout.general(m_vl, "%s:\n", class_name.c_str());
65  vout.general(m_vl, " phi1 = %12.6f\n", phi[0]);
66  vout.general(m_vl, " phi2 = %12.6f\n", phi[1]);
67  vout.general(m_vl, " phi3 = %12.6f\n", phi[2]);
68  vout.general(m_vl, " phipr1 = %12.6f\n", phipr[0]);
69  vout.general(m_vl, " phipr2 = %12.6f\n", phipr[1]);
70  vout.general(m_vl, " phipr3 = %12.6f\n", phipr[2]);
71  vout.general(m_vl, " p_omega1 = %12.6f\n", p_omega[0]);
72  vout.general(m_vl, " p_omega2 = %12.6f\n", p_omega[1]);
73  vout.general(m_vl, " p_omega3 = %12.6f\n", p_omega[2]);
74 
75  //- range check
76  // NB. phi,phipr,p_omega == 0 is allowed.
77  assert(phi.size() == 3);
78  assert(phipr.size() == 3);
79  assert(p_omega.size() == 3);
80 
81  //- store values
82  set_parameters(&phi[0], &phipr[0], &p_omega[0]); // call double[] version
83 }
84 
85 
86 //====================================================================
87 void Staple_SF::set_parameters(const double *phi, const double *phipr)
88 {
89  const int Lx = CommonParameters::Lx();
90 
91  double c0r = cos(phi[0] / Lx);
92  double c0i = sin(phi[0] / Lx);
93  double c1r = cos(phi[1] / Lx);
94  double c1i = sin(phi[1] / Lx);
95  double c2r = cos(phi[2] / Lx);
96  double c2i = sin(phi[2] / Lx);
97 
98  m_wk.zero();
99  m_wk.set(0, 0, c0r, c0i);
100  m_wk.set(1, 1, c1r, c1i);
101  m_wk.set(2, 2, c2r, c2i);
102 
103  c0r = cos(phipr[0] / Lx);
104  c0i = sin(phipr[0] / Lx);
105  c1r = cos(phipr[1] / Lx);
106  c1i = sin(phipr[1] / Lx);
107  c2r = cos(phipr[2] / Lx);
108  c2i = sin(phipr[2] / Lx);
109 
110  m_wkpr.zero();
111  m_wkpr.set(0, 0, c0r, c0i);
112  m_wkpr.set(1, 1, c1r, c1i);
113  m_wkpr.set(2, 2, c2r, c2i);
114 
115  m_i_omega0.zero();
116  m_i_omega0.set(0, 0, 0.0, 1.0);
117  m_i_omega0.set(1, 1, 0.0, -0.5);
118  m_i_omega0.set(2, 2, 0.0, -0.5);
119 
120  m_initialized = 1;
121 }
122 
123 
124 //====================================================================
125 
141 void Staple_SF::set_parameters(const double *phi, const double *phipr, const double *p_omega)
142 {
143  const int Lx = CommonParameters::Lx();
144 
145  double c0r = cos(phi[0] / Lx);
146  double c0i = sin(phi[0] / Lx);
147  double c1r = cos(phi[1] / Lx);
148  double c1i = sin(phi[1] / Lx);
149  double c2r = cos(phi[2] / Lx);
150  double c2i = sin(phi[2] / Lx);
151 
152  m_wk.zero();
153  m_wk.set(0, 0, c0r, c0i);
154  m_wk.set(1, 1, c1r, c1i);
155  m_wk.set(2, 2, c2r, c2i);
156 
157  c0r = cos(phipr[0] / Lx);
158  c0i = sin(phipr[0] / Lx);
159  c1r = cos(phipr[1] / Lx);
160  c1i = sin(phipr[1] / Lx);
161  c2r = cos(phipr[2] / Lx);
162  c2i = sin(phipr[2] / Lx);
163  m_wkpr.zero();
164  m_wkpr.set(0, 0, c0r, c0i);
165  m_wkpr.set(1, 1, c1r, c1i);
166  m_wkpr.set(2, 2, c2r, c2i);
167 
168  m_i_omega0.zero();
169  m_i_omega0.set(0, 0, 0.0, p_omega[0]);
170  m_i_omega0.set(1, 1, 0.0, p_omega[1]);
171  m_i_omega0.set(2, 2, 0.0, p_omega[2]);
172 
173  m_initialized = 1;
174 }
175 
176 
177 //====================================================================
178 
222 double Staple_SF::sf_coupling_plaq(const Field_G& U, const double ct)
223 {
224  if (!m_initialized) {
225  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
226  exit(EXIT_FAILURE);
227  }
228 
229  const int Nc = CommonParameters::Nc();
230  const int Ndim = CommonParameters::Ndim();
231 
232  const int Nx = CommonParameters::Nx();
233  const int Ny = CommonParameters::Ny();
234  const int Nz = CommonParameters::Nz();
235  const int Nt = CommonParameters::Nt();
236  const int NPEt = CommonParameters::NPEt();
237 
238  const int Lx = CommonParameters::Lx();
239 
240  double plaq = 0.0;
241  double plaqt0 = 0.0;
242  double plaqtT = 0.0;
243 
244  for (int nu = 0; nu < Ndim - 1; nu++) {
246  upper(staple, U, 3, nu);
247 
248  for (int z = 0; z < Nz; z++) {
249  for (int y = 0; y < Ny; y++) {
250  for (int x = 0; x < Nx; x++) {
251  // boundary
252  if (Communicator::ipe(3) == 0) {
253  int t = 0;
254  int site = m_index.site(x, y, z, t);
255 
256  Mat_SU_N up(Nc);
257  up = staple.mat(site) * U.mat_dag(site, 3);
258  double scr = ReTr(m_i_omega0 * up);
259 
260  /*
261  up.unit();
262  up *= staple.mat(site);
263  up *= U->mat_dag(site,3);
264  up *= m_i_omega0;
265  scr = ReTr( up );
266  */
267  plaq -= scr;
268  plaqt0 += scr;
269  }
270  // boundary
271  if (Communicator::ipe(3) == NPEt - 1) {
272  int t = Nt - 1;
273  int site = m_index.site(x, y, z, t);
274 
275  Mat_SU_N up(Nc);
276  up = staple.mat_dag(site) * U.mat(site, 3);
277  double scr = ReTr(m_i_omega0 * up);
278 
279  /*
280  up.unit();
281  up *= staple.mat_dag(site);
282  up *= U->mat(site,3);
283  up *= m_i_omega0;
284  scr = ReTr( up );
285  */
286  plaq += scr;
287  plaqtT += scr;
288  }
289  }
290  }
291  }
292  }
293  plaq = Communicator::reduce_sum(plaq);
294  plaqt0 = Communicator::reduce_sum(plaqt0);
295  plaqtT = Communicator::reduce_sum(plaqtT);
296 
297  plaq *= ct / Lx;
298  plaqt0 *= ct / Lx;
299  plaqtT *= ct / Lx;
300 
301  vout.general(m_vl, "SF_delSg_plaq, from 0, from T = %.8f %.8f %.8f\n", plaq, plaqt0, plaqtT);
302 
303  return plaq;
304 }
305 
306 
307 //====================================================================
308 
407 double Staple_SF::sf_coupling_rect(const Field_G& U, const double ctr)
408 {
409  if (!m_initialized) {
410  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
411  exit(EXIT_FAILURE);
412  }
413 
414  const int Nc = CommonParameters::Nc();
415  const int Ndim = CommonParameters::Ndim();
416  const int Nvol = CommonParameters::Nvol();
417 
418  const int Nx = CommonParameters::Nx();
419  const int Ny = CommonParameters::Ny();
420  const int Nz = CommonParameters::Nz();
421  const int Nt = CommonParameters::Nt();
422  const int NPEt = CommonParameters::NPEt();
423 
424  const int Lx = CommonParameters::Lx();
425 
426  const int nu = 3;
427 
428  double rect01 = 0.0;
429  double rect02 = 0.0;
430  double rect03 = 0.0;
431  double rectt1 = 0.0;
432  double rectt2 = 0.0;
433  double rectt3 = 0.0;
434 
435  for (int mu = 0; mu < Ndim - 1; mu++) {
436  // rect01
437  // <---<---+
438  // | |
439  // t=0 x--->---+
440  // omega0
441 
442  // rect02
443  // <---<---+
444  // | |
445  // t=0 +---x---+
446  // omega0
447 
448  // rectt1
449  // omega0
450  // t=Nt x--->---+
451  // | |
452  // +---<---+
453 
454  // rectt2
455  // omega0
456  // t=Nt +---x---+
457  // | |
458  // <---<---+
459  Field_G_SF Cup2;
460  upper(Cup2, U, nu, mu);
461 
462  Field_G Umu;
463  Umu.setpart_ex(0, U, mu);
464 
465  Field_G Unu;
466  Unu.setpart_ex(0, U, nu);
467 
468  Field_G v;
469  m_shift.backward(v, Cup2, mu);
470 
471  Field_G c;
472  m_shift.backward(c, Umu, nu);
473 
474  for (int z = 0; z < Nz; z++) {
475  for (int y = 0; y < Ny; y++) {
476  for (int x = 0; x < Nx; x++) {
477  int t = 0;
478  if (Communicator::ipe(3) == 0) {
479  int site = m_index.site(x, y, z, t);
480 
481  Mat_SU_N wmat(Nc);
482  wmat = m_wk * v.mat(site);
483 
484  Mat_SU_N cmat(Nc);
485  cmat = wmat * c.mat_dag(site);
486 
487  wmat = cmat * Unu.mat_dag(site);
488  rect01 += ReTr(m_i_omega0 * wmat);
489 
490  wmat = m_i_omega0 * v.mat(site);
491  cmat = wmat * c.mat_dag(site);
492  wmat = cmat * Unu.mat_dag(site);
493  rect02 += ReTr(m_wk * wmat);
494  }
495 
496  t = Nt - 1;
497  if (Communicator::ipe(3) == NPEt - 1) {
498  int site = m_index.site(x, y, z, t);
499 
500  Mat_SU_N cmat(Nc);
501  cmat = m_i_omega0 * m_wkpr;
502 
503  Mat_SU_N wmat(Nc);
504  wmat = cmat * v.mat_dag(site);
505 
506  cmat = Unu.mat(site) * wmat;
507  rectt1 += ReTr(cmat * U.mat_dag(site, mu));
508 
509  cmat = m_i_omega0 * v.mat_dag(site);
510  wmat = m_wkpr * cmat;
511  cmat = Unu.mat(site) * wmat;
512  rectt2 += ReTr(cmat * U.mat_dag(site, mu));
513  }
514  }
515  }
516  }
517 
518  // rect03
519  // +---+
520  // | |
521  // v ^
522  // | |
523  // t=0 x--->
524  // omega0
525  Field_G_SF Cup1;
526  upper(Cup1, U, mu, nu);
527 
528  m_shift.backward(v, Unu, mu);
529  m_shift.backward(c, Cup1, nu);
530 
531  for (int z = 0; z < Nz; z++) {
532  for (int y = 0; y < Ny; y++) {
533  for (int x = 0; x < Nx; x++) {
534  int t = 0;
535  if (Communicator::ipe(3) == 0) {
536  int site = m_index.site(x, y, z, t);
537 
538  Mat_SU_N wmat(Nc);
539  wmat = c.mat(site) * v.mat_dag(site);
540 
541  Mat_SU_N cmat(Nc);
542  cmat = Unu.mat(site) * wmat;
543 
544  wmat = m_wk * cmat.dag();
545  rect03 += ReTr(m_i_omega0 * wmat);
546  }
547  }
548  }
549  }
550 
551  // rectt3
552  // omega0
553  // t=Nt x--->
554  // | |
555  // ^ v
556  // | |
557  // +---+
558  Field_G_SF Cdn1;
559  lower(Cdn1, U, mu, nu);
560 
561  m_shift.backward(v, Unu, mu);
562 
563  for (int z = 0; z < Nz; z++) {
564  for (int y = 0; y < Ny; y++) {
565  for (int x = 0; x < Nx; x++) {
566  int t = Nt - 1;
567  if (Communicator::ipe(3) == NPEt - 1) {
568  int site = m_index.site(x, y, z, t);
569 
570  Mat_SU_N wmat(Nc);
571  wmat = m_i_omega0 * m_wkpr;
572 
573  Mat_SU_N cmat(Nc);
574  cmat = wmat * v.mat_dag(site);
575 
576  wmat = cmat * Cdn1.mat_dag(site);
577  rectt3 += ReTr(Unu.mat(site) * wmat);
578  }
579  }
580  }
581  }
582  }
583  rect01 = Communicator::reduce_sum(rect01);
584  rect02 = Communicator::reduce_sum(rect02);
585  rect03 = Communicator::reduce_sum(rect03);
586  rectt1 = Communicator::reduce_sum(rectt1);
587  rectt2 = Communicator::reduce_sum(rectt2);
588  rectt3 = Communicator::reduce_sum(rectt3);
589 
590  rect01 *= ctr / Lx;
591  rect02 *= ctr / Lx;
592  rect03 /= Lx;
593  rectt1 *= ctr / Lx;
594  rectt2 *= ctr / Lx;
595  rectt3 /= Lx;
596 
597  double rect = -rect01 - rect02 - rect03 + rectt1 + rectt2 + rectt3;
598 
599  vout.general(m_vl, "SF_delSg_rect, at 01, 02, 03, at T1, T2, T3 = %.8f %.8f %.8f %.8f %.8f %.8f %.8f\n",
600  rect, rect01, rect02, rect03, rectt1, rectt2, rectt3);
601 
602  return rect;
603 }
604 
605 
606 //====================================================================
607 
616 {
617  if (!m_initialized) {
618  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
619  exit(EXIT_FAILURE);
620  }
621  // return (plaq_s(U) +plaq_t(U))/2;
622  return(plaq_s(U) + plaq_t(U));
623 }
624 
625 
626 //====================================================================
627 
641 double Staple_SF::plaquette_ct(const Field_G& U, const double ct)
642 {
643  if (!m_initialized) {
644  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
645  exit(EXIT_FAILURE);
646  }
647  return(plaq_s(U) + plaq_t_ct(U, ct));
648 }
649 
650 
651 //====================================================================
652 
661 double Staple_SF::plaq_s(const Field_G& U)
662 {
663  const int Nvol = CommonParameters::Nvol();
664 
666  double plaq = 0.0;
667 
668  upper(staple, U, 0, 1);
669  for (int site = 0; site < Nvol; site++) {
670  plaq += ReTr(U.mat(site, 0) * staple.mat_dag(site)); // P_xy
671  }
672 
673  upper(staple, U, 1, 2);
674  for (int site = 0; site < Nvol; site++) {
675  plaq += ReTr(U.mat(site, 1) * staple.mat_dag(site)); // P_yz
676  }
677 
678  upper(staple, U, 2, 0);
679  for (int site = 0; site < Nvol; site++) {
680  plaq += ReTr(U.mat(site, 2) * staple.mat_dag(site)); // P_zx
681  }
682 
683  plaq = Communicator::reduce_sum(plaq);
684 
685  return plaq;
686 }
687 
688 
689 //====================================================================
690 
699 double Staple_SF::plaq_t(const Field_G& U)
700 {
701  if (!m_initialized) {
702  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
703  exit(EXIT_FAILURE);
704  }
705 
706  const int Ndim = CommonParameters::Ndim();
707  const int Nvol = CommonParameters::Nvol();
708 
710  double plaq = 0.0;
711 
712  for (int nu = 0; nu < Ndim - 1; nu++) {
713  lower(staple, U, 3, nu);
714  // staple = upper(U,3,nu);
715  for (int site = 0; site < Nvol; site++) {
716  plaq += ReTr(U.mat(site, 3) * staple.mat_dag(site)); // P_tk
717  }
718  }
719 
720  plaq = Communicator::reduce_sum(plaq);
721 
722  return plaq;
723 }
724 
725 
726 //====================================================================
727 
742 double Staple_SF::plaq_t_ct(const Field_G& U, const double ct)
743 {
744  if (!m_initialized) {
745  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
746  exit(EXIT_FAILURE);
747  }
748 
749  const int Ndim = CommonParameters::Ndim();
750  const int Nt = CommonParameters::Nt();
751  const int Nvol = CommonParameters::Nvol();
752  const int NPEt = CommonParameters::NPEt();
753 
755  double plaq = 0.0;
756 
757  for (int nu = 0; nu < Ndim - 1; nu++) {
758  lower(staple, U, 3, nu);
759  // If the node is at the boundary the temporal plaquette is multiplied with ct.
760  if (Communicator::ipe(3) == 0) {
761  staple.mult_ct_boundary(0, ct);
762  }
763  if (Communicator::ipe(3) == NPEt - 1) {
764  staple.mult_ct_boundary(Nt - 1, ct);
765  }
766  for (int site = 0; site < Nvol; site++) {
767  plaq += ReTr(U.mat(site, 3) * staple.mat_dag(site)); // P_tk
768  }
769  }
770 
771  plaq = Communicator::reduce_sum(plaq);
772 
773  return plaq;
774 }
775 
776 
777 //====================================================================
778 
797 void Staple_SF::staple(Field_G& W, const Field_G& U, const int mu)
798 {
799  if (!m_initialized) {
800  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
801  exit(EXIT_FAILURE);
802  }
803 
804  const int Ndim = CommonParameters::Ndim();
805 
806  W.set(0.0);
807 
808  for (int nu = 0; nu < Ndim; nu++) {
809  if (nu != mu) {
810  Field_G_SF c_tmp;
811 
812  upper(c_tmp, U, mu, nu);
813  axpy(W, 1.0, c_tmp);
814 
815  lower(c_tmp, U, mu, nu);
816  axpy(W, 1.0, c_tmp);
817  }
818  }
819 }
820 
821 
822 //====================================================================
823 
842 void Staple_SF::staple_ct(Field_G& W, const Field_G& U, const int mu, const double ct)
843 {
844  const int Ndim = CommonParameters::Ndim();
845  const int Nt = CommonParameters::Nt();
846  const int NPEt = CommonParameters::NPEt();
847 
848  W.set(0.0);
849 
850  for (int nu = 0; nu < Ndim; nu++) {
851  if (nu != mu) {
852  Field_G_SF staple_upper;
853  Field_G_SF staple_lower;
854 
855  upper(staple_upper, U, mu, nu);
856  lower(staple_lower, U, mu, nu);
857 
858  if (Communicator::ipe(3) == 0) {
859  if (mu == 3) {
860  staple_upper.mult_ct_boundary(0, ct);
861  staple_lower.mult_ct_boundary(0, ct);
862  }
863  if (nu == 3) {
864  staple_lower.mult_ct_boundary(1, ct);
865  }
866  }
867 
868  if (Communicator::ipe(3) == NPEt - 1) {
869  if (mu == 3) {
870  staple_upper.mult_ct_boundary(Nt - 1, ct);
871  staple_lower.mult_ct_boundary(Nt - 1, ct);
872  }
873  if (nu == 3) {
874  staple_upper.mult_ct_boundary(Nt - 1, ct);
875  }
876  }
877 
878  axpy(W, 1.0, staple_upper);
879  axpy(W, 1.0, staple_lower);
880  }
881  }
882 }
883 
884 
885 //====================================================================
886 void Staple_SF::upper(Field_G_SF& c, const Field_G& U, const int mu, const int nu)
887 {
888  if (!m_initialized) {
889  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
890  exit(EXIT_FAILURE);
891  }
892 
893  const int Nvol = CommonParameters::Nvol();
894 
895  // (1) mu (2)
896  // +-->--+
897  // nu | |
898  // i+ +
899  Field_G_SF Umu;
900  Umu.setpart_ex(0, U, mu);
901 
902  Field_G_SF Unu;
903  Unu.setpart_ex(0, U, nu);
904  if (mu != 3) Umu.set_boundary_wk(m_wk);
905  if (nu != 3) Unu.set_boundary_wk(m_wk);
906 
907  Field_G_SF v;
908  m_shift.backward(v, Unu, mu);
909  m_shift.backward(c, Umu, nu);
910  if (mu == 3) v.set_boundary_wkpr(m_wkpr);
911  if (nu == 3) c.set_boundary_wkpr(m_wkpr);
912 
913  Field_G_SF w;
914  mult_Field_Gnd(w, 0, c, 0, v, 0);
915  mult_Field_Gnn(c, 0, Unu, 0, w, 0);
916  if (mu != 3) c.set_boundary_zero();
917 }
918 
919 
920 //====================================================================
921 void Staple_SF::lower(Field_G_SF& c, const Field_G& U, const int mu, const int nu)
922 {
923  if (!m_initialized) {
924  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
925  exit(EXIT_FAILURE);
926  }
927 
928  const int Nvol = CommonParameters::Nvol();
929 
930  // + +
931  // nu | |
932  // i+-->--+
933  // (1) mu (2)
934  Field_G_SF Umu;
935  Umu.setpart_ex(0, U, mu);
936 
937  Field_G_SF Unu;
938  Unu.setpart_ex(0, U, nu);
939  if (mu != 3) Umu.set_boundary_wk(m_wk);
940  if (nu != 3) Unu.set_boundary_wk(m_wk);
941 
942  Field_G_SF w;
943  m_shift.backward(w, Unu, mu);
944  if (mu == 3) w.set_boundary_wkpr(m_wkpr);
945 
946  Field_G_SF v;
947  mult_Field_Gnn(v, 0, Umu, 0, w, 0);
948  mult_Field_Gdn(w, 0, Unu, 0, v, 0);
949 
950  m_shift.forward(c, w, nu);
951  if (mu != 3) c.set_boundary_zero();
952 }
953 
954 
955 //====================================================================
956 
975 {
976  const int Lx = CommonParameters::Lx();
977  const int Ly = CommonParameters::Ly();
978  const int Lz = CommonParameters::Lz();
979  const int Lt = CommonParameters::Lt();
980 
981  const double plaq = plaquette(U);
982  const double plaq2 = plaq + 3 * 3 * Lx * Ly * Lz;
983 
984  vout.general(m_vl, "plaq_SF without boundary spatial plaq = %.8f\n",
985  plaq / (3 * Lx * Ly * Lz * (6 * Lt - 3)));
986  vout.general(m_vl, "plaq_SF with boundary spatial plaq = %.8f\n",
987  plaq2 / (3 * 6 * Lx * Ly * Lz * Lt));
988 }
989 
990 
991 //============================================================END=====
SU(N) gauge field class in which a few functions are added for the SF.
Definition: field_G_SF.h:33
double sf_coupling_rect(const Field_G &, const double ctr)
Definition: staple_SF.cpp:407
Mat_SU_N m_wkpr
Definition: staple_SF.h:48
static const std::string class_name
Definition: staple_SF.h:39
void set_boundary_zero()
Set the boundary matrix to 0 for SF bc.
Definition: field_G_SF.cpp:78
BridgeIO vout
Definition: bridgeIO.cpp:503
void set_boundary_wkpr(const Mat_SU_N &U)
Set the boundary spatial link at t=Nt-1 for SF bc.
Definition: field_G_SF.cpp:53
void print_plaquette(const Field_G &)
Definition: staple_SF.cpp:974
int fetch_double_vector(const string &key, vector< double > &value) const
Definition: parameters.cpp:410
void set(const int jin, const int site, const int jex, double v)
Definition: field.h:175
Mat_SU_N m_wk
Definition: staple_SF.h:48
int site(const int &x, const int &y, const int &z, const int &t) const
Definition: index_lex.h:53
double plaquette_ct(const Field_G &, const double ct)
Definition: staple_SF.cpp:641
void general(const char *format,...)
Definition: bridgeIO.cpp:197
Bridge::VerboseLevel m_vl
Definition: staple_SF.h:42
Mat_SU_N & zero()
Definition: mat_SU_N.h:383
Mat_SU_N & dag()
Definition: mat_SU_N.h:283
int m_initialized
Definition: staple_SF.h:49
void mult_Field_Gdn(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
Index_lex m_index
Definition: staple_SF.h:45
Class for parameters.
Definition: parameters.h:46
static int ipe(const int dir)
logical coordinate of current proc.
double plaq_t_ct(const Field_G &, const double ct)
Definition: staple_SF.cpp:742
double plaq_s(const Field_G &)
Definition: staple_SF.cpp:661
void set_parameters(const Parameters &params)
Definition: staple_SF.cpp:35
void upper(Field_G_SF &, const Field_G &, const int, const int)
Definition: staple_SF.cpp:886
SU(N) gauge field.
Definition: field_G.h:38
void mult_ct_boundary(const int t, const double ct)
Multiply the boundary improvement factor ct or ctr to an SU(N) matrix object which belongs to a site ...
Definition: field_G_SF.cpp:128
void set_boundary_wk(const Mat_SU_N &U)
Set the boundary spatial link at t=0 for SF bc.
Definition: field_G_SF.cpp:27
void backward(Field &, const Field &, const int mu)
ShiftField_lex m_shift
Definition: staple_SF.h:46
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
Definition: field.cpp:319
void mult_Field_Gnn(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
void crucial(const char *format,...)
Definition: bridgeIO.cpp:178
Mat_SU_N m_i_omega0
Definition: staple_SF.h:48
double plaq_t(const Field_G &)
Definition: staple_SF.cpp:699
void staple(Field_G &, const Field_G &, const int)
Definition: staple_SF.cpp:797
double sf_coupling_plaq(const Field_G &, const double ct)
Definition: staple_SF.cpp:222
Mat_SU_N mat_dag(const int site, const int mn=0) const
Definition: field_G.h:127
static int reduce_sum(int count, double *recv_buf, double *send_buf, int pattern=0)
make a global sum of an array of double over the communicator. pattern specifies the dimensions to be...
void staple_ct(Field_G &, const Field_G &, const int, const double ct)
Definition: staple_SF.cpp:842
void set(int c, double re, const double &im)
Definition: mat_SU_N.h:133
void lower(Field_G_SF &, const Field_G &, const int, const int)
Definition: staple_SF.cpp:921
void setpart_ex(int ex, const Field &w, int exw)
Definition: field.h:197
string get_string(const string &key) const
Definition: parameters.cpp:221
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:114
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:131
double ReTr(const Mat_SU_N &m)
Definition: mat_SU_N.h:488
void forward(Field &, const Field &, const int mu)
void mult_Field_Gnd(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
double plaquette(const Field_G &)
Definition: staple_SF.cpp:615