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