Bridge++  Version 1.4.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
wilsonLoop.cpp
Go to the documentation of this file.
1 
14 #include "wilsonLoop.h"
15 
16 const std::string WilsonLoop::class_name = "WilsonLoop";
17 
18 //====================================================================
20 {
21  m_filename_output = params.get_string("filename_output");
22  if (m_filename_output.empty()) {
23  m_filename_output = "stdout";
24  }
25 
26  const string str_vlevel = params.get_string("verbose_level");
27  m_vl = vout.set_verbose_level(str_vlevel);
28 
29  //- fetch and check input parameters
30  int Nspc_size, Ntmp_size, Ntype;
31 
32  int err = 0;
33  err += params.fetch_int("max_spatial_loop_size", Nspc_size);
34  err += params.fetch_int("max_temporal_loop_size", Ntmp_size);
35  err += params.fetch_int("number_of_loop_type", Ntype);
36 
37  if (err) {
38  vout.crucial(m_vl, "Error at %s: input parameter not found.\n", class_name.c_str());
39  exit(EXIT_FAILURE);
40  }
41 
42 
43  set_parameters(Nspc_size, Ntmp_size, Ntype);
44 }
45 
46 
47 //====================================================================
48 void WilsonLoop::set_parameters(int Nspc_size, int Ntmp_size, int Ntype)
49 {
50  //- print input parameters
51  vout.general(m_vl, "Wilson loop measurement:\n");
52  vout.general(m_vl, " Nspc_size = %d\n", Nspc_size);
53  vout.general(m_vl, " Ntmp_size = %d\n", Ntmp_size);
54  vout.general(m_vl, " Ntype = %d\n", Ntype);
55 
56  //- range check
57  int err = 0;
58  err += ParameterCheck::non_negative(Nspc_size);
59  err += ParameterCheck::non_negative(Ntmp_size);
60  err += ParameterCheck::non_negative(Ntype);
61 
64  if (Ntype > 6) ++err;
65 
66  if (err) {
67  vout.crucial(m_vl, "Error at %s: parameter range check failed.\n", class_name.c_str());
68  exit(EXIT_FAILURE);
69  }
70 
71  //- store values
72  m_Nspc_size = Nspc_size;
73  m_Ntmp_size = Ntmp_size;
74  m_Ntype = Ntype;
75 
76 
77  //- post-process
78 
79  //- set up internal data members
85 
88  m_Nmax[0] = Nspc_size;
89  m_Nmax[1] = Nspc_size;
90  m_Nmax[2] = Nspc_size / 2;
91  m_Nmax[3] = Nspc_size;
92  m_Nmax[4] = Nspc_size / 2;
93  m_Nmax[5] = Nspc_size / 2;
94 }
95 
96 
97 //====================================================================
99 {
100  int Ndim = CommonParameters::Ndim();
101 
102  assert(Ndim == 4);
103 
104  m_filename_output = "stdout";
105 
106  m_Ntype_max = 6;
107  int Ndim_spc = Ndim - 1;
108 
109  m_Nunit.resize(m_Ntype_max);
110  m_Nmax.resize(m_Ntype_max);
111 
112  for (int i = 0; i < m_Ntype_max; ++i) {
113  m_Nunit[i].resize(Ndim_spc);
114  }
115 
116  // The following setting explicitly depends on the definition
117  // of unit vectors.
118  assert(m_Ntype_max >= 6);
119 
120  m_Nunit[0][0] = 1;
121  m_Nunit[0][1] = 0;
122  m_Nunit[0][2] = 0;
123 
124  m_Nunit[1][0] = 1;
125  m_Nunit[1][1] = 1;
126  m_Nunit[1][2] = 0;
127 
128  m_Nunit[2][0] = 2;
129  m_Nunit[2][1] = 1;
130  m_Nunit[2][2] = 0;
131 
132  m_Nunit[3][0] = 1;
133  m_Nunit[3][1] = 1;
134  m_Nunit[3][2] = 1;
135 
136  m_Nunit[4][0] = 2;
137  m_Nunit[4][1] = 1;
138  m_Nunit[4][2] = 1;
139 
140  m_Nunit[5][0] = 2;
141  m_Nunit[5][1] = 2;
142  m_Nunit[5][2] = 1;
143 }
144 
145 
146 //====================================================================
148 {
149  int Ndim = CommonParameters::Ndim();
150  int Ndim_spc = Ndim - 1;
151  int Nc = CommonParameters::Nc();
152 
153  Index_lex index;
155  Field_G Uext(m_Nvol_ext, Ndim);
156 
157  Field_G Uspc(m_Nvol_ext, 1);
158 
159  Mat_SU_N Uunit(Nc);
160 
161  Uunit.unit();
162 
164  set_extfield(Uext, U);
165 
167  gfix_temporal(Uext);
168 
169  std::vector<int> unit_v(Ndim_spc);
170 
171  vout.paranoiac(m_vl, "%s: measurement start.\n", class_name.c_str());
172 
173  std::vector<double> wloop(m_Nspc_size * m_Ntmp_size * m_Ntype);
174  for (size_t i = 0, n = wloop.size(); i < n; ++i) {
175  wloop[i] = 0.0;
176  }
177 
179  for (int i_type = 0; i_type < m_Ntype; ++i_type) {
181  for (int nu = 0; nu < Ndim_spc; ++nu) {
182  unit_v[0] = m_Nunit[i_type][nu % Ndim_spc];
183  unit_v[1] = m_Nunit[i_type][(1 + nu) % Ndim_spc];
184  unit_v[2] = m_Nunit[i_type][(2 + nu) % Ndim_spc];
185  int unit_v_max = unit_v[0];
186  if (unit_v_max < unit_v[1]) unit_v_max = unit_v[1];
187  if (unit_v_max < unit_v[2]) unit_v_max = unit_v[2];
188 
189  for (int site = 0; site < m_Nvol_ext; ++site) {
190  Uspc.set_mat(site, 0, Uunit);
191  }
192 
193  int Nmax = m_Nmax[i_type];
194  for (int j = 0; j < Nmax; ++j) {
195  // redef_Uspc(Uspc, Uext, j, unit_v);
196  redef_Uspc(Uspc, Uext, j, nu, unit_v);
197  //- now Uspc is product of linkv in unit_v*j direction.
198 
199  for (int t_sep = 0; t_sep < m_Ntmp_size; ++t_sep) {
200  double wloop1 = calc_wloop(Uspc, t_sep + 1);
201  vout.detailed(m_vl, " %d %d %d %d %f\n",
202  i_type, nu, j + 1, t_sep + 1, wloop1);
203  wloop[index_wloop(j, t_sep, i_type)] += wloop1 / 3.0;
204  }
205  }
206  }
207  }
208 
210  std::ostream& log_file_previous = vout.getStream();
211  std::ofstream log_file;
212 
213  if (m_filename_output != "stdout") {
214  log_file.open(m_filename_output.c_str(), std::ios::app);
215  vout.init(log_file);
216  }
217 
218  for (int i_type = 0; i_type < m_Ntype; ++i_type) {
219  int Nmax = m_Nmax[i_type];
220  for (int x_sep = 0; x_sep < Nmax; ++x_sep) {
221  for (int t_sep = 0; t_sep < m_Ntmp_size; ++t_sep) {
222  vout.general(m_vl, " %d %d %d %20.14e\n",
223  i_type + 1, x_sep + 1, t_sep + 1, wloop[index_wloop(x_sep, t_sep, i_type)]);
224  }
225  }
226  }
227 
228  if (m_filename_output != "stdout") {
229  log_file.close();
230  vout.init(log_file_previous);
231  }
232 
233  vout.paranoiac(m_vl, "%s: measurement finished.\n", class_name.c_str());
234 
235  //- return maximum loop with type=0.
236  return wloop[index_wloop(m_Nmax[0] - 1, m_Ntmp_size - 1, 0)];
237 }
238 
239 
240 //====================================================================
241 double WilsonLoop::calc_wloop(Field_G& Uspc, int t_sep)
242 {
243  int Nx = CommonParameters::Nx();
244  int Ny = CommonParameters::Ny();
245  int Nz = CommonParameters::Nz();
246  int Nt = CommonParameters::Nt();
247 
249 
250  int Nc = CommonParameters::Nc();
251  Mat_SU_N Utmp1(Nc), Utmp2(Nc), Utmp3(Nc);
252 
253  double wloop_r = 0.0;
254  double wloop_i = 0.0;
255 
256  for (int t = 0; t < Nt; ++t) {
257  for (int z = 0; z < Nz; ++z) {
258  for (int y = 0; y < Ny; ++y) {
259  for (int x = 0; x < Nx; ++x) {
260  int site1 = index_ext.site(x, y, z, t);
261  int site2 = index_ext.site(x, y, z, t + t_sep);
262 
263  Utmp1 = Uspc.mat(site1, 0);
264  Utmp2 = Uspc.mat_dag(site2, 0);
265  Utmp3 = Utmp1 * Utmp2;
266 
267  wloop_r += ReTr(Utmp3);
268  wloop_i += ImTr(Utmp3);
269  }
270  }
271  }
272  }
273 
274  wloop_r = Communicator::reduce_sum(wloop_r);
275  wloop_i = Communicator::reduce_sum(wloop_i);
276 
277  int Lvol = CommonParameters::Lvol();
278  wloop_r = wloop_r / double(Nc * Lvol);
279  wloop_i = wloop_i / double(Nc * Lvol);
280 
281  return wloop_r;
282 }
283 
284 
285 //====================================================================
287  int j, int nu, std::vector<int>& unit_v)
288 {
289  int Nx = CommonParameters::Nx();
290  int Ny = CommonParameters::Ny();
291  int Nz = CommonParameters::Nz();
292 
294 
295  int unit_v_max = unit_v[0];
296 
297  if (unit_v_max < unit_v[1]) unit_v_max = unit_v[1];
298  if (unit_v_max < unit_v[2]) unit_v_max = unit_v[2];
299 
300  int Nc = CommonParameters::Nc();
301  Mat_SU_N Utmp1(Nc), Utmp2(Nc), Utmp3(Nc);
302 
303  int imx = 0;
304  int imy = 0;
305  int imz = 0;
306 
308  for (int k = 0; k < 3 * unit_v_max; ++k) {
309  int kmod = (k + 3 - nu) % 3;
310 
311  if ((kmod == 0) && (imx < unit_v[0])) {
312  for (int t = 0; t < m_Nt_ext; ++t) {
313  for (int z = 0; z < Nz; ++z) {
314  for (int y = 0; y < Ny; ++y) {
315  for (int x = 0; x < Nx; ++x) {
316  int x2 = x + unit_v[0] * j + imx;
317  int y2 = y + unit_v[1] * j + imy;
318  int z2 = z + unit_v[2] * j + imz;
319  int site1 = index_ext.site(x, y, z, t);
320  int site2 = index_ext.site(x2, y2, z2, t);
321 
322  Utmp1 = Uspc.mat(site1, 0);
323  Utmp2 = Uext.mat(site2, 0);
324  Utmp3 = Utmp1 * Utmp2;
325  Uspc.set_mat(site1, 0, Utmp3);
326  }
327  }
328  }
329  }
330  ++imx;
331  }
332 
333  if ((kmod == 1) && (imy < unit_v[1])) {
334  for (int t = 0; t < m_Nt_ext; ++t) {
335  for (int z = 0; z < Nz; ++z) {
336  for (int y = 0; y < Ny; ++y) {
337  for (int x = 0; x < Nx; ++x) {
338  int x2 = x + unit_v[0] * j + imx;
339  int y2 = y + unit_v[1] * j + imy;
340  int z2 = z + unit_v[2] * j + imz;
341  int site1 = index_ext.site(x, y, z, t);
342  int site2 = index_ext.site(x2, y2, z2, t);
343 
344  Utmp1 = Uspc.mat(site1, 0);
345  Utmp2 = Uext.mat(site2, 1);
346  Utmp3 = Utmp1 * Utmp2;
347  Uspc.set_mat(site1, 0, Utmp3);
348  }
349  }
350  }
351  }
352  ++imy;
353  }
354 
355  if ((kmod == 2) && (imz < unit_v[2])) {
356  for (int t = 0; t < m_Nt_ext; ++t) {
357  for (int z = 0; z < Nz; ++z) {
358  for (int y = 0; y < Ny; ++y) {
359  for (int x = 0; x < Nx; ++x) {
360  int x2 = x + unit_v[0] * j + imx;
361  int y2 = y + unit_v[1] * j + imy;
362  int z2 = z + unit_v[2] * j + imz;
363  int site1 = index_ext.site(x, y, z, t);
364  int site2 = index_ext.site(x2, y2, z2, t);
365 
366  Utmp1 = Uspc.mat(site1, 0);
367  Utmp2 = Uext.mat(site2, 2);
368  Utmp3 = Utmp1 * Utmp2;
369  Uspc.set_mat(site1, 0, Utmp3);
370  }
371  }
372  }
373  }
374  ++imz;
375  }
376  }
377 }
378 
379 
380 //====================================================================
382 {
383  int Ndim = CommonParameters::Ndim();
384  int Nx = CommonParameters::Nx();
385  int Ny = CommonParameters::Ny();
386  int Nz = CommonParameters::Nz();
387  int Nt = CommonParameters::Nt();
388  int NinG = Uorg.nin();
389 
390  Index_lex index_lex;
392 
393  Uext.set(0.0);
394 
395  //- bulk part of extended field same to the original field.
396  for (int it = 0; it < Nt; ++it) {
397  for (int iz = 0; iz < Nz; ++iz) {
398  for (int iy = 0; iy < Ny; ++iy) {
399  for (int ix = 0; ix < Nx; ++ix) {
400  int site1 = index_lex.site(ix, iy, iz, it);
401  int site2 = index_ext.site(ix, iy, iz, it);
402 
403  for (int ex = 0; ex < Ndim; ++ex) {
404  Uext.set_mat(site2, ex, Uorg.mat(site1, ex));
405  }
406  }
407  }
408  }
409  }
410 
411  //- setting maximum size of volume for buffer field.
412  int Nmin_ext = m_Nx_ext;
413  if (m_Ny_ext < Nmin_ext) Nmin_ext = m_Ny_ext;
414  if (m_Nz_ext < Nmin_ext) Nmin_ext = m_Nz_ext;
415  if (m_Nt_ext < Nmin_ext) Nmin_ext = m_Nt_ext;
416  int Nvol_cp = m_Nvol_ext / Nmin_ext;
417 
418  //- buffer field for copy.
419  Field_G Ucp1(Nvol_cp, Ndim);
420  Field_G Ucp2(Nvol_cp, Ndim);
421  int size_ex = NinG * Nvol_cp * Ndim;
422 
423 
424  //- exchange in t-direction
425  for (int it_off = 0; it_off < m_Ntmp_size + 1; ++it_off) {
426  for (int iz = 0; iz < m_Nz_ext; ++iz) {
427  for (int iy = 0; iy < m_Ny_ext; ++iy) {
428  for (int ix = 0; ix < m_Nx_ext; ++ix) {
429  int site1 = index_ext.site(ix, iy, iz, it_off);
430  int site2 = ix + m_Nx_ext * (iy + m_Ny_ext * iz);
431 
432  for (int ex = 0; ex < Ndim; ++ex) {
433  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
434  }
435  }
436  }
437  }
438 
439  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 3, 1, 0);
440 
441  for (int iz = 0; iz < m_Nz_ext; ++iz) {
442  for (int iy = 0; iy < m_Ny_ext; ++iy) {
443  for (int ix = 0; ix < m_Nx_ext; ++ix) {
444  int site1 = ix + m_Nx_ext * (iy + m_Ny_ext * iz);
445  int site2 = index_ext.site(ix, iy, iz, Nt + it_off);
446 
447  for (int ex = 0; ex < Ndim; ++ex) {
448  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
449  }
450  }
451  }
452  }
453  } // end of it_off loop.
454 
455  //- exchange in z-direction
456  for (int iz_off = 0; iz_off < m_Nspc_size + 1; ++iz_off) {
457  for (int it = 0; it < m_Nt_ext; ++it) {
458  for (int iy = 0; iy < m_Ny_ext; ++iy) {
459  for (int ix = 0; ix < m_Nx_ext; ++ix) {
460  int site1 = index_ext.site(ix, iy, iz_off, it);
461  int site2 = ix + m_Nx_ext * (iy + m_Ny_ext * it);
462 
463  for (int ex = 0; ex < Ndim; ++ex) {
464  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
465  }
466  }
467  }
468  }
469 
470  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 2, 1, 0);
471 
472  for (int it = 0; it < m_Nt_ext; ++it) {
473  for (int iy = 0; iy < m_Ny_ext; ++iy) {
474  for (int ix = 0; ix < m_Nx_ext; ++ix) {
475  int site1 = ix + m_Nx_ext * (iy + m_Ny_ext * it);
476  int site2 = index_ext.site(ix, iy, Nz + iz_off, it);
477 
478  for (int ex = 0; ex < Ndim; ++ex) {
479  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
480  }
481  }
482  }
483  }
484  } // end of iz_off loop.
485 
486  //- exchange in y-direction
487  for (int iy_off = 0; iy_off < m_Nspc_size + 1; ++iy_off) {
488  for (int it = 0; it < m_Nt_ext; ++it) {
489  for (int iz = 0; iz < m_Nz_ext; ++iz) {
490  for (int ix = 0; ix < m_Nx_ext; ++ix) {
491  int site1 = index_ext.site(ix, iy_off, iz, it);
492  int site2 = ix + m_Nx_ext * (iz + m_Nz_ext * it);
493 
494  for (int ex = 0; ex < Ndim; ++ex) {
495  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
496  }
497  }
498  }
499  }
500 
501  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 1, 1, 0);
502 
503  for (int it = 0; it < m_Nt_ext; ++it) {
504  for (int iz = 0; iz < m_Nz_ext; ++iz) {
505  for (int ix = 0; ix < m_Nx_ext; ++ix) {
506  int site1 = ix + m_Nx_ext * (iz + m_Nz_ext * it);
507  int site2 = index_ext.site(ix, Ny + iy_off, iz, it);
508 
509  for (int ex = 0; ex < Ndim; ++ex) {
510  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
511  }
512  }
513  }
514  }
515  } // end of iy_off loop.
516 
517  //- exchange in x-direction
518  for (int ix_off = 0; ix_off < m_Nspc_size + 1; ++ix_off) {
519  for (int it = 0; it < m_Nt_ext; ++it) {
520  for (int iz = 0; iz < m_Nz_ext; ++iz) {
521  for (int iy = 0; iy < m_Ny_ext; ++iy) {
522  int site1 = index_ext.site(ix_off, iy, iz, it);
523  int site2 = iy + m_Ny_ext * (iz + m_Nz_ext * it);
524 
525  for (int ex = 0; ex < Ndim; ++ex) {
526  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
527  }
528  }
529  }
530  }
531 
532  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 0, 1, 0);
533 
534  for (int it = 0; it < m_Nt_ext; ++it) {
535  for (int iz = 0; iz < m_Nz_ext; ++iz) {
536  for (int iy = 0; iy < m_Ny_ext; ++iy) {
537  int site1 = iy + m_Ny_ext * (iz + m_Nz_ext * it);
538  int site2 = index_ext.site(Nx + ix_off, iy, iz, it);
539 
540  for (int ex = 0; ex < Ndim; ++ex) {
541  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
542  }
543  }
544  }
545  }
546  } // end of ix_off loop.
547 }
548 
549 
550 //====================================================================
552 {
553  int Ndim = CommonParameters::Ndim();
554  int Nc = CommonParameters::Nc();
555 
557  Mat_SU_N Utrf1(Nc), Utrf2(Nc), Utmp(Nc), Utmp2(Nc);
558 
559  int dir_t = Ndim - 1;
560 
561  for (int it = 1; it < m_Nt_ext; ++it) {
562  for (int iz = 0; iz < m_Nz_ext; ++iz) {
563  for (int iy = 0; iy < m_Ny_ext; ++iy) {
564  for (int ix = 0; ix < m_Nx_ext; ++ix) {
565  int site0 = index_ext.site(ix, iy, iz, it - 1);
566 
567  Utrf1 = Uext.mat(site0, dir_t);
568  Utrf2 = Uext.mat_dag(site0, dir_t);
569  Utmp2 = Utrf1 * Utrf2;
570  Uext.set_mat(site0, 3, Utmp2);
571 
572  int site1 = index_ext.site(ix, iy, iz, it);
573 
574  for (int ex = 0; ex < Ndim; ++ex) {
575  Utmp = Uext.mat(site1, ex);
576  Utmp2 = Utrf1 * Utmp;
577  Uext.set_mat(site1, ex, Utmp2);
578  }
579 
580  if (ix > 0) {
581  int site2 = index_ext.site(ix - 1, iy, iz, it);
582 
583  Utmp = Uext.mat(site2, 0);
584  Utmp2 = Utmp * Utrf2;
585  Uext.set_mat(site2, 0, Utmp2);
586  }
587 
588  if (iy > 0) {
589  int site2 = index_ext.site(ix, iy - 1, iz, it);
590 
591  Utmp = Uext.mat(site2, 1);
592  Utmp2 = Utmp * Utrf2;
593  Uext.set_mat(site2, 1, Utmp2);
594  }
595 
596  if (iz > 0) {
597  int site2 = index_ext.site(ix, iy, iz - 1, it);
598 
599  Utmp = Uext.mat(site2, 2);
600  Utmp2 = Utmp * Utrf2;
601  Uext.set_mat(site2, 2, Utmp2);
602  }
603  }
604  }
605  }
606  }
607 }
608 
609 
610 //====================================================================
611 //============================================================END=====
void gfix_temporal(Field_G &Uext)
temporal gauge fixing of extended gauge field.
Definition: wilsonLoop.cpp:551
BridgeIO vout
Definition: bridgeIO.cpp:495
void detailed(const char *format,...)
Definition: bridgeIO.cpp:212
const double * ptr(const int jin, const int site, const int jex) const
Definition: field.h:142
void set(const int jin, const int site, const int jex, double v)
Definition: field.h:164
int site(const int &x, const int &y, const int &z, const int &t) const
Definition: index_lex.h:53
void general(const char *format,...)
Definition: bridgeIO.cpp:195
int m_Ntype
number of measured loop-type
Definition: wilsonLoop.h:57
int m_Nvol_ext
volume of extended gauge config.
Definition: wilsonLoop.h:65
std::vector< unit_vec > m_Nunit
Definition: wilsonLoop.h:68
double calc_wloop(Field_G &Uspc, int t_ext)
temporal gauge fixing of extended gauge field.
Definition: wilsonLoop.cpp:241
int m_Nspc_size
parameters set by user
Definition: wilsonLoop.h:55
int m_Nt_ext
size of extended gauge config.
Definition: wilsonLoop.h:64
void init(const std::string &filename)
Definition: bridgeIO.cpp:51
Class for parameters.
Definition: parameters.h:46
static int Lvol()
void redef_Uspc(Field_G &Uspc, Field_G &Uext, int j, int nu, std::vector< int > &unit_v)
redefinition of product of spatial link variables.
Definition: wilsonLoop.cpp:286
void set_extfield(Field_G &Uext, Field_G &Uorg)
setup of extended gauge field.
Definition: wilsonLoop.cpp:381
int m_Ntmp_size
spatial size of loop
Definition: wilsonLoop.h:56
int nin() const
Definition: field.h:115
int m_Ntype_max
internal data members
Definition: wilsonLoop.h:60
SU(N) gauge field.
Definition: field_G.h:38
static const std::string class_name
Definition: wilsonLoop.h:46
int index_wloop(int i_spc, int i_tmp, int i_type)
index for Wilson loop variable.
Definition: wilsonLoop.h:96
std::string m_filename_output
Definition: wilsonLoop.h:52
int fetch_int(const string &key, int &value) const
Definition: parameters.cpp:230
void init()
initial setup independent of parameters.
Definition: wilsonLoop.cpp:98
double ImTr(const Mat_SU_N &m)
Definition: mat_SU_N.h:500
std::vector< int > m_Nmax
Definition: wilsonLoop.h:69
static int exchange(int count, double *recv_buf, double *send_buf, int idir, int ipm, int tag)
receive array of double from upstream specified by idir and ipm, and send array to downstream...
int m_Nz_ext
size of extended gauge config.
Definition: wilsonLoop.h:63
Lexical site index.
Definition: index_lex.h:34
void paranoiac(const char *format,...)
Definition: bridgeIO.cpp:229
Bridge::VerboseLevel m_vl
Definition: wilsonLoop.h:49
void crucial(const char *format,...)
Definition: bridgeIO.cpp:178
virtual void set_parameters(const Parameters &params)
setting parameters.
Definition: wilsonLoop.cpp:19
std::ostream & getStream()
Definition: bridgeIO.cpp:383
Mat_SU_N mat_dag(const int site, const int mn=0) const
Definition: field_G.h:126
int non_negative(const int v)
Definition: checker.cpp:21
int m_Ny_ext
size of extended gauge config.
Definition: wilsonLoop.h:62
Mat_SU_N & unit()
Definition: mat_SU_N.h:373
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...
string get_string(const string &key) const
Definition: parameters.cpp:116
void set_mat(const int site, const int mn, const Mat_SU_N &U)
Definition: field_G.h:159
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:113
int m_Nx_ext
size of extended gauge config.
Definition: wilsonLoop.h:61
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
double measure(Field_G &U)
main function to measure Wilson loops.
Definition: wilsonLoop.cpp:147