Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
staples_SF.cpp
Go to the documentation of this file.
1 
14 #include "staples_SF.h"
15 
16 #ifdef USE_PARAMETERS_FACTORY
17 #include "parameters_factory.h"
18 #endif
19 
20 using std::valarray;
21 
38 //- parameter entries
39 namespace {
40  void append_entry(Parameters& param)
41  {
42  param.Register_double_vector("phi", std::valarray<double>());
43  param.Register_double_vector("phipr", std::valarray<double>());
44  param.Register_double_vector("pomega", std::valarray<double>());
45 
46  param.Register_string("verbose_level", "NULL");
47  }
48 
49 
50 #ifdef USE_PARAMETERS_FACTORY
51  bool init_param = ParametersFactory::Register("Staples_SF", append_entry);
52 #endif
53 }
54 //- end
55 
56 //- parameters class
58 //- end
59 
60 const std::string Staples_SF::class_name = "Staples_SF";
61 
62 //********************************************************************
64 {
65  const string str_vlevel = params.get_string("verbose_level");
66 
67  m_vl = vout.set_verbose_level(str_vlevel);
68 
69  //- fetch and check input parameters
70  valarray<double> phi, phipr, pomega;
71 
72  int err = 0;
73  err += params.fetch_double_vector("phi", phi);
74  err += params.fetch_double_vector("phipr", phipr);
75  err += params.fetch_double_vector("pomega", pomega);
76 
77  if (err) {
78  vout.crucial(m_vl, "%s: fetch error, input parameter not found.\n", class_name.c_str());
79  abort();
80  }
81 
82 
83  set_parameters(phi, phipr, pomega); // call valarray version
84 }
85 
86 
87 //====================================================================
88 void Staples_SF::set_parameters(valarray<double>& phi, valarray<double>& phipr,
89  valarray<double>& pomega)
90 {
91  //- print input parameters
92  vout.general(m_vl, "Parameters of %s:\n", class_name.c_str());
93  vout.general(m_vl, " phi1 = %12.6f\n", phi[0]);
94  vout.general(m_vl, " phi2 = %12.6f\n", phi[1]);
95  vout.general(m_vl, " phi3 = %12.6f\n", phi[2]);
96  vout.general(m_vl, " phipr1 = %12.6f\n", phipr[0]);
97  vout.general(m_vl, " phipr2 = %12.6f\n", phipr[1]);
98  vout.general(m_vl, " phipr3 = %12.6f\n", phipr[2]);
99  vout.general(m_vl, " pomega1 = %12.6f\n", pomega[0]);
100  vout.general(m_vl, " pomega2 = %12.6f\n", pomega[1]);
101  vout.general(m_vl, " pomega3 = %12.6f\n", pomega[2]);
102 
103  //- range check
104  // NB. phi,phipr,pomega == 0 is allowed.
105  assert(phi.size() == 3);
106  assert(phipr.size() == 3);
107  assert(pomega.size() == 3);
108 
109  //- store values
110  set_parameters(&phi[0], &phipr[0], &pomega[0]); // call double[] version
111 }
112 
113 
114 //====================================================================
115 void Staples_SF::set_parameters(double *phi, double *phipr)
116 {
117  double c0r, c0i, c1r, c1i, c2r, c2i;
118 
119  c0r = cos(phi[0] / Lx);
120  c0i = sin(phi[0] / Lx);
121  c1r = cos(phi[1] / Lx);
122  c1i = sin(phi[1] / Lx);
123  c2r = cos(phi[2] / Lx);
124  c2i = sin(phi[2] / Lx);
125 
126  wk.zero();
127  wk.set(0, 0, c0r, c0i);
128  wk.set(1, 1, c1r, c1i);
129  wk.set(2, 2, c2r, c2i);
130 
131  c0r = cos(phipr[0] / Lx);
132  c0i = sin(phipr[0] / Lx);
133  c1r = cos(phipr[1] / Lx);
134  c1i = sin(phipr[1] / Lx);
135  c2r = cos(phipr[2] / Lx);
136  c2i = sin(phipr[2] / Lx);
137 
138  wkpr.zero();
139  wkpr.set(0, 0, c0r, c0i);
140  wkpr.set(1, 1, c1r, c1i);
141  wkpr.set(2, 2, c2r, c2i);
142 
143  iomega0.zero();
144  iomega0.set(0, 0, 0.0, 1.0);
145  iomega0.set(1, 1, 0.0, -0.5);
146  iomega0.set(2, 2, 0.0, -0.5);
147 
148  initialized = 1;
149 }
150 
151 
152 //====================================================================
153 
169 void Staples_SF::set_parameters(const double *phi, const double *phipr, const double *pomega)
170 {
171  double c0r, c0i, c1r, c1i, c2r, c2i;
172 
173  c0r = cos(phi[0] / Lx);
174  c0i = sin(phi[0] / Lx);
175  c1r = cos(phi[1] / Lx);
176  c1i = sin(phi[1] / Lx);
177  c2r = cos(phi[2] / Lx);
178  c2i = sin(phi[2] / Lx);
179  wk.zero();
180  wk.set(0, 0, c0r, c0i);
181  wk.set(1, 1, c1r, c1i);
182  wk.set(2, 2, c2r, c2i);
183 
184  c0r = cos(phipr[0] / Lx);
185  c0i = sin(phipr[0] / Lx);
186  c1r = cos(phipr[1] / Lx);
187  c1i = sin(phipr[1] / Lx);
188  c2r = cos(phipr[2] / Lx);
189  c2i = sin(phipr[2] / Lx);
190  wkpr.zero();
191  wkpr.set(0, 0, c0r, c0i);
192  wkpr.set(1, 1, c1r, c1i);
193  wkpr.set(2, 2, c2r, c2i);
194 
195  iomega0.zero();
196  iomega0.set(0, 0, 0.0, pomega[0]);
197  iomega0.set(1, 1, 0.0, pomega[1]);
198  iomega0.set(2, 2, 0.0, pomega[2]);
199 
200  initialized = 1;
201 }
202 
203 
204 //====================================================================
205 
249 double Staples_SF::sf_coupling_plaq(const Field_G& U, double ct)
250 {
251  if (!initialized) {
252  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
253  abort();
254  }
255 
256  double plaq = 0.0;
257  double plaqt0 = 0.0;
258  double plaqtT = 0.0;
259  double scr;
260  Mat_SU_N up(Nc);
261  static Field_G staple;
262 
263  int site;
264  for (int nu = 0; nu < Ndim - 1; nu++) {
265  staple = upper(U, 3, nu);
266 
267  for (int z = 0; z < Nz; z++) {
268  for (int y = 0; y < Ny; y++) {
269  for (int x = 0; x < Nx; x++) {
270  int t;
271  // boundary
272  if (Communicator::ipe(3) == 0) {
273  t = 0;
274  site = index.site(x, y, z, t);
275  up = staple.mat(site) * U.mat_dag(site, 3);
276  scr = ReTr(iomega0 * up);
277 
278  /*
279  up.unit();
280  up *= staple.mat(site);
281  up *= U->mat_dag(site,3);
282  up *= iomega0;
283  scr = ReTr( up );
284  */
285  plaq -= scr;
286  plaqt0 += scr;
287  }
288  // boundary
289  if (Communicator::ipe(3) == NPEt - 1) {
290  t = Nt - 1;
291  site = index.site(x, y, z, t);
292  up = staple.mat_dag(site) * U.mat(site, 3);
293  scr = ReTr(iomega0 * up);
294 
295  /*
296  up.unit();
297  up *= staple.mat_dag(site);
298  up *= U->mat(site,3);
299  up *= iomega0;
300  scr = ReTr( up );
301  */
302  plaq += scr;
303  plaqtT += scr;
304  }
305  }
306  }
307  }
308  }
309 
310  plaq = Communicator::reduce_sum(plaq);
311  plaqt0 = Communicator::reduce_sum(plaqt0);
312  plaqtT = Communicator::reduce_sum(plaqtT);
313  plaq *= ct / Lx;
314  plaqt0 *= ct / Lx;
315  plaqtT *= ct / Lx;
316 
317  vout.general(m_vl, "SF_delSg_plaq, from 0, from T = %.8f %.8f %.8f\n", plaq, plaqt0, plaqtT);
318 
319  return plaq;
320 }
321 
322 
323 //====================================================================
324 
423 double Staples_SF::sf_coupling_rect(const Field_G& m_U, double ctr)
424 {
425  if (!initialized) {
426  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
427  abort();
428  }
429 
430  double rect;
431  double rect01 = 0.0;
432  double rect02 = 0.0;
433  double rect03 = 0.0;
434  double rectt1 = 0.0;
435  double rectt2 = 0.0;
436  double rectt3 = 0.0;
437  // double scr;
438 
439  Field_G Cup1(Nvol, 1), Cup2(Nvol, 1);
440  Field_G Cdn1(Nvol, 1), Cdn2(Nvol, 1);
441  Field_G Umu(Nvol, 1), Unu(Nvol, 1);
442  Field_G v(Nvol, 1), c(Nvol, 1);
443 
444  Mat_SU_N wmat(Nc), cmat(Nc);
445 
446  int site;
447  int nu = 3;
448  for (int mu = 0; mu < Ndim - 1; mu++) {
449  // rect01
450  // <---<---+
451  // | |
452  // t=0 x--->---+
453  // omega0
454 
455  // rect02
456  // <---<---+
457  // | |
458  // t=0 +---x---+
459  // omega0
460 
461  // rectt1
462  // omega0
463  // t=Nt x--->---+
464  // | |
465  // +---<---+
466 
467  // rectt2
468  // omega0
469  // t=Nt +---x---+
470  // | |
471  // <---<---+
472  Cup2 = upper(m_U, nu, mu);
473 
474  Umu.setpart_ex(0, m_U, mu);
475  Unu.setpart_ex(0, m_U, nu);
476  shift.backward(v, Cup2, mu);
477  shift.backward(c, Umu, nu);
478  for (int z = 0; z < Nz; z++) {
479  for (int y = 0; y < Ny; y++) {
480  for (int x = 0; x < Nx; x++) {
481  int t;
482  t = 0;
483  if (Communicator::ipe(3) == 0) {
484  site = index.site(x, y, z, t);
485  wmat = wk * v.mat(site);
486  cmat = wmat * c.mat_dag(site);
487  wmat = cmat * Unu.mat_dag(site);
488  rect01 += ReTr(iomega0 * wmat);
489  wmat = iomega0 * v.mat(site);
490  cmat = wmat * c.mat_dag(site);
491  wmat = cmat * Unu.mat_dag(site);
492  rect02 += ReTr(wk * wmat);
493  }
494  t = Nt - 1;
495  if (Communicator::ipe(3) == NPEt - 1) {
496  site = index.site(x, y, z, t);
497  cmat = iomega0 * wkpr;
498  wmat = cmat * v.mat_dag(site);
499  cmat = Unu.mat(site) * wmat;
500  rectt1 += ReTr(cmat * m_U.mat_dag(site, mu));
501  cmat = iomega0 * v.mat_dag(site);
502  wmat = wkpr * cmat;
503  cmat = Unu.mat(site) * wmat;
504  rectt2 += ReTr(cmat * m_U.mat_dag(site, mu));
505  }
506  }
507  }
508  }
509 
510  // rect03
511  // +---+
512  // | |
513  // v ^
514  // | |
515  // t=0 x--->
516  // omega0
517  Cup1 = upper(m_U, mu, nu);
518 
519  shift.backward(v, Unu, mu);
520  shift.backward(c, Cup1, nu);
521  for (int z = 0; z < Nz; z++) {
522  for (int y = 0; y < Ny; y++) {
523  for (int x = 0; x < Nx; x++) {
524  int t;
525  t = 0;
526  if (Communicator::ipe(3) == 0) {
527  site = index.site(x, y, z, t);
528  wmat = c.mat(site) * v.mat_dag(site);
529  cmat = Unu.mat(site) * wmat;
530  wmat = wk * cmat.dag();
531  rect03 += ReTr(iomega0 * wmat);
532  }
533  }
534  }
535  }
536 
537  // rectt3
538  // omega0
539  // t=Nt x--->
540  // | |
541  // ^ v
542  // | |
543  // +---+
544  Cdn1 = lower(m_U, mu, nu);
545 
546  shift.backward(v, Unu, mu);
547  for (int z = 0; z < Nz; z++) {
548  for (int y = 0; y < Ny; y++) {
549  for (int x = 0; x < Nx; x++) {
550  int t;
551  t = Nt - 1;
552  site = index.site(x, y, z, t);
553  if (Communicator::ipe(3) == NPEt - 1) {
554  wmat = iomega0 * wkpr;
555  cmat = wmat * v.mat_dag(site);
556  wmat = cmat * Cdn1.mat_dag(site);
557  rectt3 += ReTr(Unu.mat(site) * wmat);
558  }
559  }
560  }
561  }
562  }
563 
564  rect01 = Communicator::reduce_sum(rect01);
565  rect02 = Communicator::reduce_sum(rect02);
566  rect03 = Communicator::reduce_sum(rect03);
567  rectt1 = Communicator::reduce_sum(rectt1);
568  rectt2 = Communicator::reduce_sum(rectt2);
569  rectt3 = Communicator::reduce_sum(rectt3);
570  rect01 *= ctr / Lx;
571  rect02 *= ctr / Lx;
572  rect03 /= Lx;
573  rectt1 *= ctr / Lx;
574  rectt2 *= ctr / Lx;
575  rectt3 /= Lx;
576  rect = -rect01 - rect02 - rect03 + rectt1 + rectt2 + rectt3;
577 
578  vout.general(m_vl, "SF_delSg_rect, at 01, 02, 03, at T1, T2, T3 = %.8f %.8f %.8f %.8f %.8f %.8f %.8f\n",
579  rect, rect01, rect02, rect03, rectt1, rectt2, rectt3);
580 
581  return rect;
582 }
583 
584 
585 //====================================================================
586 
595 {
596  if (!initialized) {
597  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
598  abort();
599  }
600  // return (plaq_s(U) +plaq_t(U))/2;
601  return(plaq_s(U) + plaq_t(U));
602 }
603 
604 
605 //====================================================================
606 
620 double Staples_SF::plaquette_ct(const Field_G& U, double ct)
621 {
622  if (!initialized) {
623  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
624  abort();
625  }
626  return(plaq_s(U) + plaq_t_ct(U, ct));
627 }
628 
629 
630 //====================================================================
631 
640 double Staples_SF::plaq_s(const Field_G& U)
641 {
642  double plaq = 0.0;
643  static Field_G staple;
644 
645  staple = upper(U, 0, 1);
646  // staple = lower(U,0,1);
647  for (int site = 0; site < Nvol; site++) {
648  plaq += ReTr(U.mat(site, 0) * staple.mat_dag(site)); // P_xy
649  }
650 
651  staple = upper(U, 1, 2);
652  // staple = lower(U,1,2);
653  for (int site = 0; site < Nvol; site++) {
654  plaq += ReTr(U.mat(site, 1) * staple.mat_dag(site)); // P_yz
655  }
656 
657  staple = upper(U, 2, 0);
658  // staple = lower(U,2,0);
659  for (int site = 0; site < Nvol; site++) {
660  plaq += ReTr(U.mat(site, 2) * staple.mat_dag(site)); // P_zx
661  }
662 
663  plaq = Communicator::reduce_sum(plaq);
664 
665  // return plaq/(Lvol*Nc*3.0);
666  return plaq;
667 }
668 
669 
670 //====================================================================
671 
680 double Staples_SF::plaq_t(const Field_G& U)
681 {
682  if (!initialized) {
683  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
684  abort();
685  }
686 
687  double plaq = 0.0;
688  static Field_G staple;
689 
690  for (int nu = 0; nu < Ndim - 1; nu++) {
691  staple = lower(U, 3, nu);
692  // staple = upper(U,3,nu);
693  for (int site = 0; site < Nvol; site++) {
694  plaq += ReTr(U.mat(site, 3) * staple.mat_dag(site)); // P_tk
695  }
696  }
697 
698  plaq = Communicator::reduce_sum(plaq);
699 
700  // return plaq/(Lvol*Nc*3.0);
701  return plaq;
702 }
703 
704 
705 //====================================================================
706 
721 double Staples_SF::plaq_t_ct(const Field_G& U, double ct)
722 {
723  if (!initialized) {
724  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
725  abort();
726  }
727 
728  double plaq = 0.0;
729  static Field_G_SF staple;
730 
731  for (int nu = 0; nu < Ndim - 1; nu++) {
732  staple = lower(U, 3, nu);
733  // If the node is at the boundary the temporal plaquette is multiplied with ct.
734  if (Communicator::ipe(3) == 0) {
735  staple.mult_ct_boundary(0, ct);
736  }
737  if (Communicator::ipe(3) == NPEt - 1) {
738  staple.mult_ct_boundary(Nt - 1, ct);
739  }
740  for (int site = 0; site < Nvol; site++) {
741  plaq += ReTr(U.mat(site, 3) * staple.mat_dag(site)); // P_tk
742  }
743  }
744 
745  plaq = Communicator::reduce_sum(plaq);
746 
747  // return plaq/(Lvol*Nc*3.0);
748  return plaq;
749 }
750 
751 
752 //====================================================================
753 
772 void Staples_SF::staple(Field_G& W, const Field_G& U, const int mu)
773 {
774  if (!initialized) {
775  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
776  abort();
777  }
778 
779  W = 0.0;
780  for (int nu = 0; nu < Ndim; nu++) {
781  if (nu != mu) {
782  W += upper(U, mu, nu);
783  W += lower(U, mu, nu);
784  }
785  }
786 }
787 
788 
789 //====================================================================
790 
809 void Staples_SF::staple_ct(Field_G& W, const Field_G& U, const int mu, double ct)
810 {
811  W = 0.0;
812  Field_G_SF staple_upper;
813  Field_G_SF staple_lower;
814 
815  for (int nu = 0; nu < Ndim; nu++) {
816  if (nu != mu) {
817  staple_upper = upper(U, mu, nu);
818  staple_lower = lower(U, mu, nu);
819  if (Communicator::ipe(3) == 0) {
820  if (mu == 3) {
821  staple_upper.mult_ct_boundary(0, ct);
822  staple_lower.mult_ct_boundary(0, ct);
823  }
824  if (nu == 3) {
825  staple_lower.mult_ct_boundary(1, ct);
826  }
827  }
828  if (Communicator::ipe(3) == NPEt - 1) {
829  if (mu == 3) {
830  staple_upper.mult_ct_boundary(Nt - 1, ct);
831  staple_lower.mult_ct_boundary(Nt - 1, ct);
832  }
833  if (nu == 3) {
834  staple_upper.mult_ct_boundary(Nt - 1, ct);
835  }
836  }
837  W += (Field_G)staple_upper;
838  W += (Field_G)staple_lower;
839  }
840  }
841 }
842 
843 
844 //====================================================================
845 
864 Field_G_SF Staples_SF::upper(const Field_G& U, const int mu, const int nu)
865 {
866  if (!initialized) {
867  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
868  abort();
869  }
870  // (1) mu (2)
871  // +-->--+
872  // nu | |
873  // i+ +
874 
875  Field_G_SF c;
876  Umu.setpart_ex(0, U, mu);
877  Unu.setpart_ex(0, U, nu);
878  if (mu != 3) Umu.set_boundary_wk(wk);
879  if (nu != 3) Unu.set_boundary_wk(wk);
880 
881  shift.backward(v, Unu, mu);
882  shift.backward(c, Umu, nu);
883  if (mu == 3) v.set_boundary_wkpr(wkpr);
884  if (nu == 3) c.set_boundary_wkpr(wkpr);
885 
886  mult_Field_Gnd(w, 0, c, 0, v, 0);
887  mult_Field_Gnn(c, 0, Unu, 0, w, 0);
888  if (mu != 3) c.set_boundary_zero();
889 
890  return c;
891 }
892 
893 
894 //====================================================================
895 
910 Field_G_SF Staples_SF::lower(const Field_G& U, const int mu, const int nu)
911 {
912  if (!initialized) {
913  vout.general(m_vl, "%s: Paramer is not initialized.\n", class_name.c_str());
914  abort();
915  }
916  // + +
917  // nu | |
918  // i+-->--+
919  // (1) mu (2)
920 
921  Field_G_SF c;
922  Umu.setpart_ex(0, U, mu);
923  Unu.setpart_ex(0, U, nu);
924  if (mu != 3) Umu.set_boundary_wk(wk);
925  if (nu != 3) Unu.set_boundary_wk(wk);
926 
927  shift.backward(w, Unu, mu);
928  if (mu == 3) w.set_boundary_wkpr(wkpr);
929 
930  mult_Field_Gnn(v, 0, Umu, 0, w, 0);
931  mult_Field_Gdn(w, 0, Unu, 0, v, 0);
932 
933  shift.forward(c, w, nu);
934  if (mu != 3) c.set_boundary_zero();
935 
936  return c;
937 }
938 
939 
940 //====================================================================
941 
960 {
961  double plaq = plaquette(U);
962  double plaq2 = plaq + 3 * 3 * Lx * Ly * Lz;
963 
964  vout.general(m_vl, "plaq_SF without boundary spatial plaq = %.8f\n",
965  plaq / (3 * Lx * Ly * Lz * (6 * Lt - 3)));
966  vout.general(m_vl, "plaq_SF with boundary spatial plaq = %.8f\n",
967  plaq2 / (3 * 6 * Lx * Ly * Lz * Lt));
968 }
969 
970 
971 //============================================================END=====
int initialized
Definition: staples_SF.h:67
void set_boundary_zero()
Set the boundary matrix to 0 for SF bc.
Definition: field_G_SF.cpp:101
BridgeIO vout
Definition: bridgeIO.cpp:207
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:76
void Register_string(const string &, const string &)
Definition: parameters.cpp:352
double sf_coupling_plaq(const Field_G &, double ct)
Definition: staples_SF.cpp:249
void set_parameters(const Parameters &params)
Definition: staples_SF.cpp:63
int site(const int &x, const int &y, const int &z, const int &t) const
Definition: index_lex.h:53
void mult_Field_Gdn(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
Mat_SU_N wkpr
Definition: staples_SF.h:66
void general(const char *format,...)
Definition: bridgeIO.cpp:38
Mat_SU_N & zero()
Definition: mat_SU_N.h:383
Mat_SU_N & dag()
Definition: mat_SU_N.h:283
double sf_coupling_rect(const Field_G &, double ctr)
Definition: staples_SF.cpp:423
Class for parameters.
Definition: parameters.h:40
static int ipe(const int dir)
logical coordinate of current proc.
double plaq_s(const Field_G &)
Definition: staples_SF.cpp:640
Bridge::VerboseLevel m_vl
Definition: staples_SF.h:53
int fetch_double_vector(const string &key, std::valarray< double > &val) const
Definition: parameters.cpp:158
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:151
void staple_ct(Field_G &, const Field_G &, const int, double ct)
Definition: staples_SF.cpp:809
SU(N) gauge field.
Definition: field_G.h:36
static const std::string class_name
Definition: staples_SF.h:50
void mult_Field_Gnd(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
Mat_SU_N wk
Definition: staples_SF.h:66
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:50
void mult_Field_Gnn(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: staples_SF.cpp:721
void backward(Field &, const Field &, const int mu)
double plaq_t(const Field_G &)
Definition: staples_SF.cpp:680
Index_lex index
Definition: staples_SF.h:60
void print_plaquette(const Field_G &)
Definition: staples_SF.cpp:959
Field_G_SF Umu
Definition: staples_SF.h:59
Mat_SU_N iomega0
Definition: staples_SF.h:66
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
double plaquette(const Field_G &)
Definition: staples_SF.cpp:594
static bool Register(const std::string &realm, const creator_callback &cb)
Mat_SU_N mat_dag(const int site, const int mn=0) const
Definition: field_G.h:123
void Register_double_vector(const string &, const std::valarray< double > &)
Definition: parameters.cpp:338
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...
ShiftField_lex shift
Definition: staples_SF.h:61
Field_G_SF Unu
Definition: staples_SF.h:59
double plaquette_ct(const Field_G &, double ct)
Definition: staples_SF.cpp:620
void set(int c, double re, const double &im)
Definition: mat_SU_N.h:133
Field_G_SF lower(const Field_G &, const int, const int)
Definition: staples_SF.cpp:910
void setpart_ex(int ex, const Field &w, int exw)
Definition: field.h:150
Field_G_SF upper(const Field_G &, const int, const int)
Definition: staples_SF.cpp:864
string get_string(const string &key) const
Definition: parameters.cpp:85
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:110
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:191
Field_G_SF v
Definition: staples_SF.h:59
double ReTr(const Mat_SU_N &m)
Definition: mat_SU_N.h:488
void forward(Field &, const Field &, const int mu)
Field_G_SF w
Definition: staples_SF.h:59
void staple(Field_G &, const Field_G &, const int)
Definition: staples_SF.cpp:772