Bridge++  Version 1.4.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 
16 
17 
36 const std::string Staple_SF::class_name = "Staple_SF";
37 
38 //********************************************************************
40 {
41  const string str_vlevel = params.get_string("verbose_level");
42 
43  m_vl = vout.set_verbose_level(str_vlevel);
44 
45  //- fetch and check input parameters
46  std::vector<double> phi, phipr, pomega;
47 
48  int err = 0;
49  err += params.fetch_double_vector("phi", phi);
50  err += params.fetch_double_vector("phipr", phipr);
51  err += params.fetch_double_vector("pomega", pomega);
52 
53  if (err) {
54  vout.crucial(m_vl, "Error at %s: input parameter not found.\n", class_name.c_str());
55  exit(EXIT_FAILURE);
56  }
57 
58 
59  set_parameters(phi, phipr, pomega); // call std::vector version
60 }
61 
62 
63 //====================================================================
64 void Staple_SF::set_parameters(std::vector<double>& phi, std::vector<double>& phipr,
65  std::vector<double>& pomega)
66 {
67  //- print input parameters
68  vout.general(m_vl, "%s:\n", class_name.c_str());
69  vout.general(m_vl, " phi1 = %12.6f\n", phi[0]);
70  vout.general(m_vl, " phi2 = %12.6f\n", phi[1]);
71  vout.general(m_vl, " phi3 = %12.6f\n", phi[2]);
72  vout.general(m_vl, " phipr1 = %12.6f\n", phipr[0]);
73  vout.general(m_vl, " phipr2 = %12.6f\n", phipr[1]);
74  vout.general(m_vl, " phipr3 = %12.6f\n", phipr[2]);
75  vout.general(m_vl, " pomega1 = %12.6f\n", pomega[0]);
76  vout.general(m_vl, " pomega2 = %12.6f\n", pomega[1]);
77  vout.general(m_vl, " pomega3 = %12.6f\n", pomega[2]);
78 
79  //- range check
80  // NB. phi,phipr,pomega == 0 is allowed.
81  assert(phi.size() == 3);
82  assert(phipr.size() == 3);
83  assert(pomega.size() == 3);
84 
85  //- store values
86  set_parameters(&phi[0], &phipr[0], &pomega[0]); // call double[] version
87 }
88 
89 
90 //====================================================================
91 void Staple_SF::set_parameters(double *phi, double *phipr)
92 {
93  double c0r, c0i, c1r, c1i, c2r, c2i;
94 
95  c0r = cos(phi[0] / Lx);
96  c0i = sin(phi[0] / Lx);
97  c1r = cos(phi[1] / Lx);
98  c1i = sin(phi[1] / Lx);
99  c2r = cos(phi[2] / Lx);
100  c2i = sin(phi[2] / Lx);
101 
102  wk.zero();
103  wk.set(0, 0, c0r, c0i);
104  wk.set(1, 1, c1r, c1i);
105  wk.set(2, 2, c2r, c2i);
106 
107  c0r = cos(phipr[0] / Lx);
108  c0i = sin(phipr[0] / Lx);
109  c1r = cos(phipr[1] / Lx);
110  c1i = sin(phipr[1] / Lx);
111  c2r = cos(phipr[2] / Lx);
112  c2i = sin(phipr[2] / Lx);
113 
114  wkpr.zero();
115  wkpr.set(0, 0, c0r, c0i);
116  wkpr.set(1, 1, c1r, c1i);
117  wkpr.set(2, 2, c2r, c2i);
118 
119  iomega0.zero();
120  iomega0.set(0, 0, 0.0, 1.0);
121  iomega0.set(1, 1, 0.0, -0.5);
122  iomega0.set(2, 2, 0.0, -0.5);
123 
124  initialized = 1;
125 }
126 
127 
128 //====================================================================
129 
145 void Staple_SF::set_parameters(const double *phi, const double *phipr, const double *pomega)
146 {
147  double c0r, c0i, c1r, c1i, c2r, c2i;
148 
149  c0r = cos(phi[0] / Lx);
150  c0i = sin(phi[0] / Lx);
151  c1r = cos(phi[1] / Lx);
152  c1i = sin(phi[1] / Lx);
153  c2r = cos(phi[2] / Lx);
154  c2i = sin(phi[2] / Lx);
155  wk.zero();
156  wk.set(0, 0, c0r, c0i);
157  wk.set(1, 1, c1r, c1i);
158  wk.set(2, 2, c2r, c2i);
159 
160  c0r = cos(phipr[0] / Lx);
161  c0i = sin(phipr[0] / Lx);
162  c1r = cos(phipr[1] / Lx);
163  c1i = sin(phipr[1] / Lx);
164  c2r = cos(phipr[2] / Lx);
165  c2i = sin(phipr[2] / Lx);
166  wkpr.zero();
167  wkpr.set(0, 0, c0r, c0i);
168  wkpr.set(1, 1, c1r, c1i);
169  wkpr.set(2, 2, c2r, c2i);
170 
171  iomega0.zero();
172  iomega0.set(0, 0, 0.0, pomega[0]);
173  iomega0.set(1, 1, 0.0, pomega[1]);
174  iomega0.set(2, 2, 0.0, pomega[2]);
175 
176  initialized = 1;
177 }
178 
179 
180 //====================================================================
181 
225 double Staple_SF::sf_coupling_plaq(const Field_G& U, double ct)
226 {
227  if (!initialized) {
228  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
229  exit(EXIT_FAILURE);
230  }
231 
232  double plaq = 0.0;
233  double plaqt0 = 0.0;
234  double plaqtT = 0.0;
235  double scr;
236  Mat_SU_N up(Nc);
237  static Field_G_SF staple;
238 
239  int site;
240  for (int nu = 0; nu < Ndim - 1; nu++) {
241  upper(staple, U, 3, nu);
242 
243  for (int z = 0; z < Nz; z++) {
244  for (int y = 0; y < Ny; y++) {
245  for (int x = 0; x < Nx; x++) {
246  int t;
247  // boundary
248  if (Communicator::ipe(3) == 0) {
249  t = 0;
250  site = index.site(x, y, z, t);
251  up = staple.mat(site) * U.mat_dag(site, 3);
252  scr = ReTr(iomega0 * up);
253 
254  /*
255  up.unit();
256  up *= staple.mat(site);
257  up *= U->mat_dag(site,3);
258  up *= iomega0;
259  scr = ReTr( up );
260  */
261  plaq -= scr;
262  plaqt0 += scr;
263  }
264  // boundary
265  if (Communicator::ipe(3) == NPEt - 1) {
266  t = Nt - 1;
267  site = index.site(x, y, z, t);
268  up = staple.mat_dag(site) * U.mat(site, 3);
269  scr = ReTr(iomega0 * up);
270 
271  /*
272  up.unit();
273  up *= staple.mat_dag(site);
274  up *= U->mat(site,3);
275  up *= iomega0;
276  scr = ReTr( up );
277  */
278  plaq += scr;
279  plaqtT += scr;
280  }
281  }
282  }
283  }
284  }
285 
286  plaq = Communicator::reduce_sum(plaq);
287  plaqt0 = Communicator::reduce_sum(plaqt0);
288  plaqtT = Communicator::reduce_sum(plaqtT);
289  plaq *= ct / Lx;
290  plaqt0 *= ct / Lx;
291  plaqtT *= ct / Lx;
292 
293  vout.general(m_vl, "SF_delSg_plaq, from 0, from T = %.8f %.8f %.8f\n", plaq, plaqt0, plaqtT);
294 
295  return plaq;
296 }
297 
298 
299 //====================================================================
300 
399 double Staple_SF::sf_coupling_rect(const Field_G& m_U, double ctr)
400 {
401  if (!initialized) {
402  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
403  exit(EXIT_FAILURE);
404  }
405 
406  double rect;
407  double rect01 = 0.0;
408  double rect02 = 0.0;
409  double rect03 = 0.0;
410  double rectt1 = 0.0;
411  double rectt2 = 0.0;
412  double rectt3 = 0.0;
413  // double scr;
414 
415  Field_G_SF Cup1(Nvol, 1), Cup2(Nvol, 1);
416  Field_G_SF Cdn1(Nvol, 1), Cdn2(Nvol, 1);
417  Field_G Umu(Nvol, 1), Unu(Nvol, 1);
418  Field_G v(Nvol, 1), c(Nvol, 1);
419 
420  Mat_SU_N wmat(Nc), cmat(Nc);
421 
422  int site;
423  int nu = 3;
424  for (int mu = 0; mu < Ndim - 1; mu++) {
425  // rect01
426  // <---<---+
427  // | |
428  // t=0 x--->---+
429  // omega0
430 
431  // rect02
432  // <---<---+
433  // | |
434  // t=0 +---x---+
435  // omega0
436 
437  // rectt1
438  // omega0
439  // t=Nt x--->---+
440  // | |
441  // +---<---+
442 
443  // rectt2
444  // omega0
445  // t=Nt +---x---+
446  // | |
447  // <---<---+
448  upper(Cup2, m_U, nu, mu);
449 
450  Umu.setpart_ex(0, m_U, mu);
451  Unu.setpart_ex(0, m_U, nu);
452  shift.backward(v, Cup2, mu);
453  shift.backward(c, Umu, nu);
454  for (int z = 0; z < Nz; z++) {
455  for (int y = 0; y < Ny; y++) {
456  for (int x = 0; x < Nx; x++) {
457  int t;
458  t = 0;
459  if (Communicator::ipe(3) == 0) {
460  site = index.site(x, y, z, t);
461  wmat = wk * v.mat(site);
462  cmat = wmat * c.mat_dag(site);
463  wmat = cmat * Unu.mat_dag(site);
464  rect01 += ReTr(iomega0 * wmat);
465  wmat = iomega0 * v.mat(site);
466  cmat = wmat * c.mat_dag(site);
467  wmat = cmat * Unu.mat_dag(site);
468  rect02 += ReTr(wk * wmat);
469  }
470  t = Nt - 1;
471  if (Communicator::ipe(3) == NPEt - 1) {
472  site = index.site(x, y, z, t);
473  cmat = iomega0 * wkpr;
474  wmat = cmat * v.mat_dag(site);
475  cmat = Unu.mat(site) * wmat;
476  rectt1 += ReTr(cmat * m_U.mat_dag(site, mu));
477  cmat = iomega0 * v.mat_dag(site);
478  wmat = wkpr * cmat;
479  cmat = Unu.mat(site) * wmat;
480  rectt2 += ReTr(cmat * m_U.mat_dag(site, mu));
481  }
482  }
483  }
484  }
485 
486  // rect03
487  // +---+
488  // | |
489  // v ^
490  // | |
491  // t=0 x--->
492  // omega0
493  upper(Cup1, m_U, mu, nu);
494 
495  shift.backward(v, Unu, mu);
496  shift.backward(c, Cup1, nu);
497  for (int z = 0; z < Nz; z++) {
498  for (int y = 0; y < Ny; y++) {
499  for (int x = 0; x < Nx; x++) {
500  int t = 0;
501 
502  if (Communicator::ipe(3) == 0) {
503  site = index.site(x, y, z, t);
504  wmat = c.mat(site) * v.mat_dag(site);
505  cmat = Unu.mat(site) * wmat;
506  wmat = wk * cmat.dag();
507  rect03 += ReTr(iomega0 * wmat);
508  }
509  }
510  }
511  }
512 
513  // rectt3
514  // omega0
515  // t=Nt x--->
516  // | |
517  // ^ v
518  // | |
519  // +---+
520  lower(Cdn1, m_U, mu, nu);
521 
522  shift.backward(v, Unu, mu);
523  for (int z = 0; z < Nz; z++) {
524  for (int y = 0; y < Ny; y++) {
525  for (int x = 0; x < Nx; x++) {
526  int t = Nt - 1;
527 
528  if (Communicator::ipe(3) == NPEt - 1) {
529  site = index.site(x, y, z, t);
530  wmat = iomega0 * wkpr;
531  cmat = wmat * v.mat_dag(site);
532  wmat = cmat * Cdn1.mat_dag(site);
533  rectt3 += ReTr(Unu.mat(site) * wmat);
534  }
535  }
536  }
537  }
538  }
539 
540  rect01 = Communicator::reduce_sum(rect01);
541  rect02 = Communicator::reduce_sum(rect02);
542  rect03 = Communicator::reduce_sum(rect03);
543  rectt1 = Communicator::reduce_sum(rectt1);
544  rectt2 = Communicator::reduce_sum(rectt2);
545  rectt3 = Communicator::reduce_sum(rectt3);
546  rect01 *= ctr / Lx;
547  rect02 *= ctr / Lx;
548  rect03 /= Lx;
549  rectt1 *= ctr / Lx;
550  rectt2 *= ctr / Lx;
551  rectt3 /= Lx;
552  rect = -rect01 - rect02 - rect03 + rectt1 + rectt2 + rectt3;
553 
554  vout.general(m_vl, "SF_delSg_rect, at 01, 02, 03, at T1, T2, T3 = %.8f %.8f %.8f %.8f %.8f %.8f %.8f\n",
555  rect, rect01, rect02, rect03, rectt1, rectt2, rectt3);
556 
557  return rect;
558 }
559 
560 
561 //====================================================================
562 
571 {
572  if (!initialized) {
573  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
574  exit(EXIT_FAILURE);
575  }
576  // return (plaq_s(U) +plaq_t(U))/2;
577  return(plaq_s(U) + plaq_t(U));
578 }
579 
580 
581 //====================================================================
582 
596 double Staple_SF::plaquette_ct(const Field_G& U, double ct)
597 {
598  if (!initialized) {
599  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
600  exit(EXIT_FAILURE);
601  }
602  return(plaq_s(U) + plaq_t_ct(U, ct));
603 }
604 
605 
606 //====================================================================
607 
616 double Staple_SF::plaq_s(const Field_G& U)
617 {
618  double plaq = 0.0;
619  static Field_G_SF staple;
620 
621  upper(staple, U, 0, 1);
622  for (int site = 0; site < Nvol; site++) {
623  plaq += ReTr(U.mat(site, 0) * staple.mat_dag(site)); // P_xy
624  }
625 
626  upper(staple, U, 1, 2);
627  for (int site = 0; site < Nvol; site++) {
628  plaq += ReTr(U.mat(site, 1) * staple.mat_dag(site)); // P_yz
629  }
630 
631  upper(staple, U, 2, 0);
632  for (int site = 0; site < Nvol; site++) {
633  plaq += ReTr(U.mat(site, 2) * staple.mat_dag(site)); // P_zx
634  }
635 
636  plaq = Communicator::reduce_sum(plaq);
637 
638  return plaq;
639 }
640 
641 
642 //====================================================================
643 
652 double Staple_SF::plaq_t(const Field_G& U)
653 {
654  if (!initialized) {
655  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
656  exit(EXIT_FAILURE);
657  }
658 
659  double plaq = 0.0;
660  static Field_G_SF staple;
661 
662  for (int nu = 0; nu < Ndim - 1; nu++) {
663  lower(staple, U, 3, nu);
664  // staple = upper(U,3,nu);
665  for (int site = 0; site < Nvol; site++) {
666  plaq += ReTr(U.mat(site, 3) * staple.mat_dag(site)); // P_tk
667  }
668  }
669 
670  plaq = Communicator::reduce_sum(plaq);
671 
672  return plaq;
673 }
674 
675 
676 //====================================================================
677 
692 double Staple_SF::plaq_t_ct(const Field_G& U, double ct)
693 {
694  if (!initialized) {
695  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
696  exit(EXIT_FAILURE);
697  }
698 
699  double plaq = 0.0;
700  static Field_G_SF staple;
701 
702  for (int nu = 0; nu < Ndim - 1; nu++) {
703  lower(staple, U, 3, nu);
704  // If the node is at the boundary the temporal plaquette is multiplied with ct.
705  if (Communicator::ipe(3) == 0) {
706  staple.mult_ct_boundary(0, ct);
707  }
708  if (Communicator::ipe(3) == NPEt - 1) {
709  staple.mult_ct_boundary(Nt - 1, ct);
710  }
711  for (int site = 0; site < Nvol; site++) {
712  plaq += ReTr(U.mat(site, 3) * staple.mat_dag(site)); // P_tk
713  }
714  }
715 
716  plaq = Communicator::reduce_sum(plaq);
717 
718  return plaq;
719 }
720 
721 
722 //====================================================================
723 
742 void Staple_SF::staple(Field_G& W, const Field_G& U, const int mu)
743 {
744  if (!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  W.set(0.0);
750  Field_G_SF c_tmp;
751  for (int nu = 0; nu < Ndim; nu++) {
752  if (nu != mu) {
753  upper(c_tmp, U, mu, nu);
754  axpy(W, 1.0, c_tmp);
755  lower(c_tmp, U, mu, nu);
756  axpy(W, 1.0, c_tmp);
757  }
758  }
759 }
760 
761 
762 //====================================================================
763 
782 void Staple_SF::staple_ct(Field_G& W, const Field_G& U, const int mu, double ct)
783 {
784  W.set(0.0);
785  Field_G_SF staple_upper;
786  Field_G_SF staple_lower;
787 
788  for (int nu = 0; nu < Ndim; nu++) {
789  if (nu != mu) {
790  upper(staple_upper, U, mu, nu);
791  lower(staple_lower, U, mu, nu);
792  if (Communicator::ipe(3) == 0) {
793  if (mu == 3) {
794  staple_upper.mult_ct_boundary(0, ct);
795  staple_lower.mult_ct_boundary(0, ct);
796  }
797  if (nu == 3) {
798  staple_lower.mult_ct_boundary(1, ct);
799  }
800  }
801  if (Communicator::ipe(3) == NPEt - 1) {
802  if (mu == 3) {
803  staple_upper.mult_ct_boundary(Nt - 1, ct);
804  staple_lower.mult_ct_boundary(Nt - 1, ct);
805  }
806  if (nu == 3) {
807  staple_upper.mult_ct_boundary(Nt - 1, ct);
808  }
809  }
810  axpy(W, 1.0, staple_upper);
811  axpy(W, 1.0, staple_lower);
812  }
813  }
814 }
815 
816 
817 //====================================================================
818 void Staple_SF::upper(Field_G_SF& c, const Field_G& U, const int mu, const int nu)
819 {
820  if (!initialized) {
821  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
822  exit(EXIT_FAILURE);
823  }
824  // (1) mu (2)
825  // +-->--+
826  // nu | |
827  // i+ +
828 
829  Umu.setpart_ex(0, U, mu);
830  Unu.setpart_ex(0, U, nu);
831  if (mu != 3) Umu.set_boundary_wk(wk);
832  if (nu != 3) Unu.set_boundary_wk(wk);
833 
834  shift.backward(v, Unu, mu);
835  shift.backward(c, Umu, nu);
836  if (mu == 3) v.set_boundary_wkpr(wkpr);
837  if (nu == 3) c.set_boundary_wkpr(wkpr);
838 
839  mult_Field_Gnd(w, 0, c, 0, v, 0);
840  mult_Field_Gnn(c, 0, Unu, 0, w, 0);
841  if (mu != 3) c.set_boundary_zero();
842 }
843 
844 
845 //====================================================================
846 void Staple_SF::lower(Field_G_SF& c, const Field_G& U, const int mu, const int nu)
847 {
848  if (!initialized) {
849  vout.crucial(m_vl, "Error at %s: Parameter is not initialized.\n", class_name.c_str());
850  exit(EXIT_FAILURE);
851  }
852  // + +
853  // nu | |
854  // i+-->--+
855  // (1) mu (2)
856 
857  Umu.setpart_ex(0, U, mu);
858  Unu.setpart_ex(0, U, nu);
859  if (mu != 3) Umu.set_boundary_wk(wk);
860  if (nu != 3) Unu.set_boundary_wk(wk);
861 
862  shift.backward(w, Unu, mu);
863  if (mu == 3) w.set_boundary_wkpr(wkpr);
864 
865  mult_Field_Gnn(v, 0, Umu, 0, w, 0);
866  mult_Field_Gdn(w, 0, Unu, 0, v, 0);
867 
868  shift.forward(c, w, nu);
869  if (mu != 3) c.set_boundary_zero();
870 }
871 
872 
873 //====================================================================
874 
893 {
894  double plaq = plaquette(U);
895  double plaq2 = plaq + 3 * 3 * Lx * Ly * Lz;
896 
897  vout.general(m_vl, "plaq_SF without boundary spatial plaq = %.8f\n",
898  plaq / (3 * Lx * Ly * Lz * (6 * Lt - 3)));
899  vout.general(m_vl, "plaq_SF with boundary spatial plaq = %.8f\n",
900  plaq2 / (3 * 6 * Lx * Ly * Lz * Lt));
901 }
902 
903 
904 //============================================================END=====
SU(N) gauge field class in which a few functions are added for the SF.
Definition: field_G_SF.h:33
static const std::string class_name
Definition: staple_SF.h:41
void set_boundary_zero()
Set the boundary matrix to 0 for SF bc.
Definition: field_G_SF.cpp:80
BridgeIO vout
Definition: bridgeIO.cpp:495
int Lz
Definition: staple_SF.h:55
double plaquette_ct(const Field_G &, double ct)
Definition: staple_SF.cpp:596
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:55
void print_plaquette(const Field_G &)
Definition: staple_SF.cpp:892
int fetch_double_vector(const string &key, vector< double > &value) const
Definition: parameters.cpp:275
void set(const int jin, const int site, const int jex, double v)
Definition: field.h:164
int Nx
Definition: staple_SF.h:54
int site(const int &x, const int &y, const int &z, const int &t) const
Definition: index_lex.h:53
int Lx
Definition: staple_SF.h:55
int initialized
Definition: staple_SF.h:58
void general(const char *format,...)
Definition: bridgeIO.cpp:195
Field_G_SF w
Definition: staple_SF.h:50
Bridge::VerboseLevel m_vl
Definition: staple_SF.h:44
double sf_coupling_plaq(const Field_G &, double ct)
Definition: staple_SF.cpp:225
Mat_SU_N & zero()
Definition: mat_SU_N.h:383
Mat_SU_N & dag()
Definition: mat_SU_N.h:283
void staple_ct(Field_G &, const Field_G &, const int, double ct)
Definition: staple_SF.cpp:782
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 index
Definition: staple_SF.h:51
Class for parameters.
Definition: parameters.h:46
static int ipe(const int dir)
logical coordinate of current proc.
int Ny
Definition: staple_SF.h:54
double plaq_s(const Field_G &)
Definition: staple_SF.cpp:616
void set_parameters(const Parameters &params)
Definition: staple_SF.cpp:39
int Ly
Definition: staple_SF.h:55
Mat_SU_N wk
Definition: staple_SF.h:57
void mult_ct_boundary(int t, 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:130
Field_G_SF Umu
Definition: staple_SF.h:50
Field_G_SF v
Definition: staple_SF.h:50
void upper(Field_G_SF &, const Field_G &, const int, const int)
Definition: staple_SF.cpp:818
SU(N) gauge field.
Definition: field_G.h:38
int Nt
Definition: staple_SF.h:54
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:29
void backward(Field &, const Field &, const int mu)
ShiftField_lex shift
Definition: staple_SF.h:52
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
Definition: field.cpp:168
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
int Nc
Definition: staple_SF.h:47
double plaq_t(const Field_G &)
Definition: staple_SF.cpp:652
int NPEt
Definition: staple_SF.h:56
double sf_coupling_rect(const Field_G &, double ctr)
Definition: staple_SF.cpp:399
void staple(Field_G &, const Field_G &, const int)
Definition: staple_SF.cpp:742
Mat_SU_N iomega0
Definition: staple_SF.h:57
Mat_SU_N mat_dag(const int site, const int mn=0) const
Definition: field_G.h:126
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...
int Nvol
Definition: staple_SF.h:49
int Nz
Definition: staple_SF.h:54
Mat_SU_N wkpr
Definition: staple_SF.h:57
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:846
void setpart_ex(int ex, const Field &w, int exw)
Definition: field.h:186
string get_string(const string &key) const
Definition: parameters.cpp:116
Field_G_SF Unu
Definition: staple_SF.h:50
int Ndim
Definition: staple_SF.h:48
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:113
int Lt
Definition: staple_SF.h:55
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 plaq_t_ct(const Field_G &, double ct)
Definition: staple_SF.cpp:692
double plaquette(const Field_G &)
Definition: staple_SF.cpp:570