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