Bridge++  Version 1.5.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(const int Nspc_size, const int Ntmp_size, const 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  const int Ndim = CommonParameters::Ndim();
101 
102  assert(Ndim == 4);
103 
104  m_filename_output = "stdout";
105 
106  m_Ntype_max = 6;
107  const 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 //====================================================================
147 double WilsonLoop::measure(const Field_G& U)
148 {
149  const int Ndim = CommonParameters::Ndim();
150  const int Ndim_spc = Ndim - 1;
151  const int Nc = CommonParameters::Nc();
152 
153  Mat_SU_N Uunit(Nc);
154 
155  Uunit.unit();
156 
158  Field_G Uext(m_Nvol_ext, Ndim);
159  set_extfield(Uext, U);
160 
162  gfix_temporal(Uext);
163 
164  vout.paranoiac(m_vl, "%s: measurement start.\n", class_name.c_str());
165 
166  std::vector<double> wloop(m_Nspc_size * m_Ntmp_size * m_Ntype);
167  for (size_t i = 0, n = wloop.size(); i < n; ++i) {
168  wloop[i] = 0.0;
169  }
170 
172  for (int i_type = 0; i_type < m_Ntype; ++i_type) {
174  for (int nu = 0; nu < Ndim_spc; ++nu) {
175  std::vector<int> unit_v(Ndim_spc);
176  unit_v[0] = m_Nunit[i_type][nu % Ndim_spc];
177  unit_v[1] = m_Nunit[i_type][(1 + nu) % Ndim_spc];
178  unit_v[2] = m_Nunit[i_type][(2 + nu) % Ndim_spc];
179 
180  int unit_v_max = unit_v[0];
181  if (unit_v_max < unit_v[1]) unit_v_max = unit_v[1];
182  if (unit_v_max < unit_v[2]) unit_v_max = unit_v[2];
183 
184  Field_G Uspc(m_Nvol_ext, 1);
185  for (int site = 0; site < m_Nvol_ext; ++site) {
186  Uspc.set_mat(site, 0, Uunit);
187  }
188 
189  int Nmax = m_Nmax[i_type];
190  for (int j = 0; j < Nmax; ++j) {
191  // redef_Uspc(Uspc, Uext, j, unit_v);
192  redef_Uspc(Uspc, Uext, j, nu, unit_v);
193  //- now Uspc is product of linkv in unit_v*j direction.
194 
195  for (int t_sep = 0; t_sep < m_Ntmp_size; ++t_sep) {
196  double wloop1 = calc_wloop(Uspc, t_sep + 1);
197  vout.detailed(m_vl, " %d %d %d %d %f\n",
198  i_type, nu, j + 1, t_sep + 1, wloop1);
199  wloop[index_wloop(j, t_sep, i_type)] += wloop1 / 3.0;
200  }
201  }
202  }
203  }
204 
206  std::ostream& log_file_previous = vout.getStream();
207  std::ofstream log_file;
208 
209  if (m_filename_output != "stdout") {
210  log_file.open(m_filename_output.c_str(), std::ios::app);
211  vout.init(log_file);
212  }
213 
214  for (int i_type = 0; i_type < m_Ntype; ++i_type) {
215  int Nmax = m_Nmax[i_type];
216  for (int x_sep = 0; x_sep < Nmax; ++x_sep) {
217  for (int t_sep = 0; t_sep < m_Ntmp_size; ++t_sep) {
218  vout.general(m_vl, " %d %d %d %20.14e\n",
219  i_type + 1, x_sep + 1, t_sep + 1, wloop[index_wloop(x_sep, t_sep, i_type)]);
220  }
221  }
222  }
223 
224  if (m_filename_output != "stdout") {
225  log_file.close();
226  vout.init(log_file_previous);
227  }
228 
229  vout.paranoiac(m_vl, "%s: measurement finished.\n", class_name.c_str());
230 
231  //- return maximum loop with type=0.
232  return wloop[index_wloop(m_Nmax[0] - 1, m_Ntmp_size - 1, 0)];
233 }
234 
235 
236 //====================================================================
237 double WilsonLoop::calc_wloop(const Field_G& Uspc, const int t_sep)
238 {
239  const int Nx = CommonParameters::Nx();
240  const int Ny = CommonParameters::Ny();
241  const int Nz = CommonParameters::Nz();
242  const int Nt = CommonParameters::Nt();
243  const int Nc = CommonParameters::Nc();
244 
245  const int Nvol = CommonParameters::Nvol();
246  const int NPE = CommonParameters::NPE();
247 
249 
250  double wloop_r = 0.0;
251  double wloop_i = 0.0;
252 
253  for (int t = 0; t < Nt; ++t) {
254  for (int z = 0; z < Nz; ++z) {
255  for (int y = 0; y < Ny; ++y) {
256  for (int x = 0; x < Nx; ++x) {
257  int site1 = index_ext.site(x, y, z, t);
258  int site2 = index_ext.site(x, y, z, t + t_sep);
259 
260  Mat_SU_N Utmp1(Nc);
261  Utmp1 = Uspc.mat(site1, 0);
262 
263  Mat_SU_N Utmp2(Nc);
264  Utmp2 = Uspc.mat_dag(site2, 0);
265 
266  Mat_SU_N Utmp3(Nc);
267  Utmp3 = Utmp1 * Utmp2;
268 
269  wloop_r += ReTr(Utmp3);
270  wloop_i += ImTr(Utmp3);
271  }
272  }
273  }
274  }
275 
276  wloop_r = Communicator::reduce_sum(wloop_r);
277  wloop_i = Communicator::reduce_sum(wloop_i);
278 
279  wloop_r = wloop_r / Nc / Nvol / NPE;
280  wloop_i = wloop_i / Nc / Nvol / NPE;
281 
282  return wloop_r;
283 }
284 
285 
286 //====================================================================
287 void WilsonLoop::redef_Uspc(Field_G& Uspc, const Field_G& Uext,
288  const int j, const int nu, const std::vector<int>& unit_v)
289 {
290  const int Nx = CommonParameters::Nx();
291  const int Ny = CommonParameters::Ny();
292  const int Nz = CommonParameters::Nz();
293  const int Nc = CommonParameters::Nc();
294 
296 
297  int unit_v_max = unit_v[0];
298 
299  if (unit_v_max < unit_v[1]) unit_v_max = unit_v[1];
300  if (unit_v_max < unit_v[2]) unit_v_max = unit_v[2];
301 
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 
320  int site1 = index_ext.site(x, y, z, t);
321  int site2 = index_ext.site(x2, y2, z2, t);
322 
323  Mat_SU_N Utmp1(Nc);
324  Utmp1 = Uspc.mat(site1, 0);
325 
326  Mat_SU_N Utmp2(Nc);
327  Utmp2 = Uext.mat(site2, 0);
328 
329  Mat_SU_N Utmp3(Nc);
330  Utmp3 = Utmp1 * Utmp2;
331 
332  Uspc.set_mat(site1, 0, Utmp3);
333  }
334  }
335  }
336  }
337  ++imx;
338  }
339 
340  if ((kmod == 1) && (imy < unit_v[1])) {
341  for (int t = 0; t < m_Nt_ext; ++t) {
342  for (int z = 0; z < Nz; ++z) {
343  for (int y = 0; y < Ny; ++y) {
344  for (int x = 0; x < Nx; ++x) {
345  int x2 = x + unit_v[0] * j + imx;
346  int y2 = y + unit_v[1] * j + imy;
347  int z2 = z + unit_v[2] * j + imz;
348 
349  int site1 = index_ext.site(x, y, z, t);
350  int site2 = index_ext.site(x2, y2, z2, t);
351 
352  Mat_SU_N Utmp1(Nc);
353  Utmp1 = Uspc.mat(site1, 0);
354 
355  Mat_SU_N Utmp2(Nc);
356  Utmp2 = Uext.mat(site2, 1);
357 
358  Mat_SU_N Utmp3(Nc);
359  Utmp3 = Utmp1 * Utmp2;
360 
361  Uspc.set_mat(site1, 0, Utmp3);
362  }
363  }
364  }
365  }
366  ++imy;
367  }
368 
369  if ((kmod == 2) && (imz < unit_v[2])) {
370  for (int t = 0; t < m_Nt_ext; ++t) {
371  for (int z = 0; z < Nz; ++z) {
372  for (int y = 0; y < Ny; ++y) {
373  for (int x = 0; x < Nx; ++x) {
374  int x2 = x + unit_v[0] * j + imx;
375  int y2 = y + unit_v[1] * j + imy;
376  int z2 = z + unit_v[2] * j + imz;
377 
378  int site1 = index_ext.site(x, y, z, t);
379  int site2 = index_ext.site(x2, y2, z2, t);
380 
381  Mat_SU_N Utmp1(Nc);
382  Utmp1 = Uspc.mat(site1, 0);
383 
384  Mat_SU_N Utmp2(Nc);
385  Utmp2 = Uext.mat(site2, 2);
386 
387  Mat_SU_N Utmp3(Nc);
388  Utmp3 = Utmp1 * Utmp2;
389 
390  Uspc.set_mat(site1, 0, Utmp3);
391  }
392  }
393  }
394  }
395  ++imz;
396  }
397  }
398 }
399 
400 
401 //====================================================================
402 void WilsonLoop::set_extfield(Field_G& Uext, const Field_G& Uorg)
403 {
404  const int Ndim = CommonParameters::Ndim();
405  const int Nx = CommonParameters::Nx();
406  const int Ny = CommonParameters::Ny();
407  const int Nz = CommonParameters::Nz();
408  const int Nt = CommonParameters::Nt();
409  const int NinG = Uorg.nin();
410 
411  Index_lex index_lex;
413 
414  Uext.set(0.0);
415 
416  //- bulk part of extended field same to the original field.
417  for (int it = 0; it < Nt; ++it) {
418  for (int iz = 0; iz < Nz; ++iz) {
419  for (int iy = 0; iy < Ny; ++iy) {
420  for (int ix = 0; ix < Nx; ++ix) {
421  int site1 = index_lex.site(ix, iy, iz, it);
422  int site2 = index_ext.site(ix, iy, iz, it);
423 
424  for (int ex = 0; ex < Ndim; ++ex) {
425  Uext.set_mat(site2, ex, Uorg.mat(site1, ex));
426  }
427  }
428  }
429  }
430  }
431 
432  //- setting maximum size of volume for buffer field.
433  int Nmin_ext = m_Nx_ext;
434  if (m_Ny_ext < Nmin_ext) Nmin_ext = m_Ny_ext;
435  if (m_Nz_ext < Nmin_ext) Nmin_ext = m_Nz_ext;
436  if (m_Nt_ext < Nmin_ext) Nmin_ext = m_Nt_ext;
437 
438  const int Nvol_cp = m_Nvol_ext / Nmin_ext;
439 
440  //- buffer field for copy.
441  Field_G Ucp1(Nvol_cp, Ndim);
442  Field_G Ucp2(Nvol_cp, Ndim);
443 
444  const int size_ex = NinG * Nvol_cp * Ndim;
445 
446 
447  //- exchange in t-direction
448  for (int it_off = 0; it_off < m_Ntmp_size + 1; ++it_off) {
449  for (int iz = 0; iz < m_Nz_ext; ++iz) {
450  for (int iy = 0; iy < m_Ny_ext; ++iy) {
451  for (int ix = 0; ix < m_Nx_ext; ++ix) {
452  int site1 = index_ext.site(ix, iy, iz, it_off);
453  int site2 = ix + m_Nx_ext * (iy + m_Ny_ext * iz);
454 
455  for (int ex = 0; ex < Ndim; ++ex) {
456  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
457  }
458  }
459  }
460  }
461 
462  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 3, 1, 0);
463 
464  for (int iz = 0; iz < m_Nz_ext; ++iz) {
465  for (int iy = 0; iy < m_Ny_ext; ++iy) {
466  for (int ix = 0; ix < m_Nx_ext; ++ix) {
467  int site1 = ix + m_Nx_ext * (iy + m_Ny_ext * iz);
468  int site2 = index_ext.site(ix, iy, iz, Nt + it_off);
469 
470  for (int ex = 0; ex < Ndim; ++ex) {
471  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
472  }
473  }
474  }
475  }
476  } // end of it_off loop.
477 
478  //- exchange in z-direction
479  for (int iz_off = 0; iz_off < m_Nspc_size + 1; ++iz_off) {
480  for (int it = 0; it < m_Nt_ext; ++it) {
481  for (int iy = 0; iy < m_Ny_ext; ++iy) {
482  for (int ix = 0; ix < m_Nx_ext; ++ix) {
483  int site1 = index_ext.site(ix, iy, iz_off, it);
484  int site2 = ix + m_Nx_ext * (iy + m_Ny_ext * it);
485 
486  for (int ex = 0; ex < Ndim; ++ex) {
487  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
488  }
489  }
490  }
491  }
492 
493  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 2, 1, 0);
494 
495  for (int it = 0; it < m_Nt_ext; ++it) {
496  for (int iy = 0; iy < m_Ny_ext; ++iy) {
497  for (int ix = 0; ix < m_Nx_ext; ++ix) {
498  int site1 = ix + m_Nx_ext * (iy + m_Ny_ext * it);
499  int site2 = index_ext.site(ix, iy, Nz + iz_off, it);
500 
501  for (int ex = 0; ex < Ndim; ++ex) {
502  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
503  }
504  }
505  }
506  }
507  } // end of iz_off loop.
508 
509  //- exchange in y-direction
510  for (int iy_off = 0; iy_off < m_Nspc_size + 1; ++iy_off) {
511  for (int it = 0; it < m_Nt_ext; ++it) {
512  for (int iz = 0; iz < m_Nz_ext; ++iz) {
513  for (int ix = 0; ix < m_Nx_ext; ++ix) {
514  int site1 = index_ext.site(ix, iy_off, iz, it);
515  int site2 = ix + m_Nx_ext * (iz + m_Nz_ext * it);
516 
517  for (int ex = 0; ex < Ndim; ++ex) {
518  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
519  }
520  }
521  }
522  }
523 
524  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 1, 1, 0);
525 
526  for (int it = 0; it < m_Nt_ext; ++it) {
527  for (int iz = 0; iz < m_Nz_ext; ++iz) {
528  for (int ix = 0; ix < m_Nx_ext; ++ix) {
529  int site1 = ix + m_Nx_ext * (iz + m_Nz_ext * it);
530  int site2 = index_ext.site(ix, Ny + iy_off, iz, it);
531 
532  for (int ex = 0; ex < Ndim; ++ex) {
533  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
534  }
535  }
536  }
537  }
538  } // end of iy_off loop.
539 
540  //- exchange in x-direction
541  for (int ix_off = 0; ix_off < m_Nspc_size + 1; ++ix_off) {
542  for (int it = 0; it < m_Nt_ext; ++it) {
543  for (int iz = 0; iz < m_Nz_ext; ++iz) {
544  for (int iy = 0; iy < m_Ny_ext; ++iy) {
545  int site1 = index_ext.site(ix_off, iy, iz, it);
546  int site2 = iy + m_Ny_ext * (iz + m_Nz_ext * it);
547 
548  for (int ex = 0; ex < Ndim; ++ex) {
549  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
550  }
551  }
552  }
553  }
554 
555  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 0, 1, 0);
556 
557  for (int it = 0; it < m_Nt_ext; ++it) {
558  for (int iz = 0; iz < m_Nz_ext; ++iz) {
559  for (int iy = 0; iy < m_Ny_ext; ++iy) {
560  int site1 = iy + m_Ny_ext * (iz + m_Nz_ext * it);
561  int site2 = index_ext.site(Nx + ix_off, iy, iz, it);
562 
563  for (int ex = 0; ex < Ndim; ++ex) {
564  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
565  }
566  }
567  }
568  }
569  } // end of ix_off loop.
570 }
571 
572 
573 //====================================================================
575 {
576  const int Ndim = CommonParameters::Ndim();
577  const int Nc = CommonParameters::Nc();
578 
579  const int dir_t = Ndim - 1;
580 
582 
583  for (int it = 1; it < m_Nt_ext; ++it) {
584  for (int iz = 0; iz < m_Nz_ext; ++iz) {
585  for (int iy = 0; iy < m_Ny_ext; ++iy) {
586  for (int ix = 0; ix < m_Nx_ext; ++ix) {
587  int site0 = index_ext.site(ix, iy, iz, it - 1);
588 
589  Mat_SU_N Utrf1(Nc);
590  Utrf1 = Uext.mat(site0, dir_t);
591 
592  Mat_SU_N Utrf2(Nc);
593  Utrf2 = Uext.mat_dag(site0, dir_t);
594 
595  Mat_SU_N Utmp2(Nc);
596  Utmp2 = Utrf1 * Utrf2;
597 
598  Uext.set_mat(site0, 3, Utmp2);
599 
600  int site1 = index_ext.site(ix, iy, iz, it);
601 
602  for (int ex = 0; ex < Ndim; ++ex) {
603  Mat_SU_N Utmp(Nc);
604  Utmp = Uext.mat(site1, ex);
605  Utmp2 = Utrf1 * Utmp;
606  Uext.set_mat(site1, ex, Utmp2);
607  }
608 
609  if (ix > 0) {
610  int site2 = index_ext.site(ix - 1, iy, iz, it);
611 
612  Mat_SU_N Utmp(Nc);
613  Utmp = Uext.mat(site2, 0);
614  Utmp2 = Utmp * Utrf2;
615  Uext.set_mat(site2, 0, Utmp2);
616  }
617 
618  if (iy > 0) {
619  int site2 = index_ext.site(ix, iy - 1, iz, it);
620 
621  Mat_SU_N Utmp(Nc);
622  Utmp = Uext.mat(site2, 1);
623  Utmp2 = Utmp * Utrf2;
624  Uext.set_mat(site2, 1, Utmp2);
625  }
626 
627  if (iz > 0) {
628  int site2 = index_ext.site(ix, iy, iz - 1, it);
629 
630  Mat_SU_N Utmp(Nc);
631  Utmp = Uext.mat(site2, 2);
632  Utmp2 = Utmp * Utrf2;
633  Uext.set_mat(site2, 2, Utmp2);
634  }
635  }
636  }
637  }
638  }
639 }
640 
641 
642 //====================================================================
643 //============================================================END=====
void gfix_temporal(Field_G &Uext)
temporal gauge fixing of extended gauge field.
Definition: wilsonLoop.cpp:574
BridgeIO vout
Definition: bridgeIO.cpp:503
void detailed(const char *format,...)
Definition: bridgeIO.cpp:216
const double * ptr(const int jin, const int site, const int jex) const
Definition: field.h:153
void set(const int jin, const int site, const int jex, double v)
Definition: field.h:175
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:197
int m_Ntype
number of measured loop-type
Definition: wilsonLoop.h:58
int m_Nvol_ext
volume of extended gauge config.
Definition: wilsonLoop.h:66
std::vector< unit_vec > m_Nunit
Definition: wilsonLoop.h:69
int m_Nspc_size
parameters set by user
Definition: wilsonLoop.h:56
int m_Nt_ext
size of extended gauge config.
Definition: wilsonLoop.h:65
void init(const std::string &filename)
Definition: bridgeIO.cpp:51
Class for parameters.
Definition: parameters.h:46
void redef_Uspc(Field_G &Uspc, const Field_G &Uext, const int j, const int nu, const std::vector< int > &unit_v)
redefinition of product of spatial link variables.
Definition: wilsonLoop.cpp:287
double measure(const Field_G &U)
main function to measure Wilson loops.
Definition: wilsonLoop.cpp:147
int m_Ntmp_size
spatial size of loop
Definition: wilsonLoop.h:57
int nin() const
Definition: field.h:126
int m_Ntype_max
internal data members
Definition: wilsonLoop.h:61
SU(N) gauge field.
Definition: field_G.h:38
double calc_wloop(const Field_G &Uspc, const int t_ext)
temporal gauge fixing of extended gauge field.
Definition: wilsonLoop.cpp:237
static const std::string class_name
Definition: wilsonLoop.h:47
std::string m_filename_output
Definition: wilsonLoop.h:53
void set_extfield(Field_G &Uext, const Field_G &Uorg)
setup of extended gauge field.
Definition: wilsonLoop.cpp:402
int fetch_int(const string &key, int &value) const
Definition: parameters.cpp:346
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:70
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:64
Lexical site index.
Definition: index_lex.h:34
void paranoiac(const char *format,...)
Definition: bridgeIO.cpp:235
Bridge::VerboseLevel m_vl
Definition: wilsonLoop.h:50
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:391
int index_wloop(const int i_spc, const int i_tmp, const int i_type)
index for Wilson loop variable.
Definition: wilsonLoop.h:97
Mat_SU_N mat_dag(const int site, const int mn=0) const
Definition: field_G.h:127
int non_negative(const int v)
int m_Ny_ext
size of extended gauge config.
Definition: wilsonLoop.h:63
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:221
void set_mat(const int site, const int mn, const Mat_SU_N &U)
Definition: field_G.h:160
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:114
int m_Nx_ext
size of extended gauge config.
Definition: wilsonLoop.h:62
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