Bridge++  Ver. 2.0.2
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  std::ostream& log_file_previous = vout.getStream();
220  std::ofstream log_file;
221 
222  if (m_filename_output != "stdout") {
223  log_file.open(m_filename_output.c_str(), std::ios::app);
224  vout.init(log_file);
225  }
226 
227  for (int i_type = 0; i_type < m_Ntype; ++i_type) {
228  int Nmax = m_Nmax[i_type];
229  for (int x_sep = 0; x_sep < Nmax; ++x_sep) {
230  for (int t_sep = 0; t_sep < m_Ntmp_size; ++t_sep) {
231  vout.general(m_vl, " %d %d %d %20.14e\n",
232  i_type + 1, x_sep + 1, t_sep + 1, wloop[index_wloop(x_sep, t_sep, i_type)]);
233  }
234  }
235  }
236 
237  if (m_filename_output != "stdout") {
238  log_file.close();
239  vout.init(log_file_previous);
240  }
241 
242  vout.paranoiac(m_vl, "%s: measurement finished.\n", class_name.c_str());
243 
244  //- return maximum loop with type=0.
245  return wloop[index_wloop(m_Nmax[0] - 1, m_Ntmp_size - 1, 0)];
246 }
247 
248 
249 //====================================================================
250 double WilsonLoop::calc_wloop(const Field_G& Uspc, const int t_sep)
251 {
252  const int Nx = CommonParameters::Nx();
253  const int Ny = CommonParameters::Ny();
254  const int Nz = CommonParameters::Nz();
255  const int Nt = CommonParameters::Nt();
256  const int Nc = CommonParameters::Nc();
257 
258  const int Nvol = CommonParameters::Nvol();
259  const int NPE = CommonParameters::NPE();
260 
262 
263  double wloop_r = 0.0;
264  double wloop_i = 0.0;
265 
266  for (int t = 0; t < Nt; ++t) {
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 site1 = index_ext.site(x, y, z, t);
271  int site2 = index_ext.site(x, y, z, t + t_sep);
272 
273  Mat_SU_N Utmp1(Nc);
274  Utmp1 = Uspc.mat(site1, 0);
275 
276  Mat_SU_N Utmp2(Nc);
277  Utmp2 = Uspc.mat_dag(site2, 0);
278 
279  Mat_SU_N Utmp3(Nc);
280  Utmp3 = Utmp1 * Utmp2;
281 
282  wloop_r += ReTr(Utmp3);
283  wloop_i += ImTr(Utmp3);
284  }
285  }
286  }
287  }
288 
289  wloop_r = Communicator::reduce_sum(wloop_r);
290  wloop_i = Communicator::reduce_sum(wloop_i);
291 
292  wloop_r = wloop_r / Nc / Nvol / NPE;
293  wloop_i = wloop_i / Nc / Nvol / NPE;
294 
295  return wloop_r;
296 }
297 
298 
299 //====================================================================
300 void WilsonLoop::redef_Uspc(Field_G& Uspc, const Field_G& Uext,
301  const int j, const int nu, const std::vector<int>& unit_v)
302 {
303  const int Nx = CommonParameters::Nx();
304  const int Ny = CommonParameters::Ny();
305  const int Nz = CommonParameters::Nz();
306  const int Nc = CommonParameters::Nc();
307 
309 
310  int unit_v_max = unit_v[0];
311 
312  if (unit_v_max < unit_v[1]) unit_v_max = unit_v[1];
313  if (unit_v_max < unit_v[2]) unit_v_max = unit_v[2];
314 
315 
316  int imx = 0;
317  int imy = 0;
318  int imz = 0;
319 
321  for (int k = 0; k < 3 * unit_v_max; ++k) {
322  int kmod = (k + 3 - nu) % 3;
323 
324  if ((kmod == 0) && (imx < unit_v[0])) {
325  for (int t = 0; t < m_Nt_ext; ++t) {
326  for (int z = 0; z < Nz; ++z) {
327  for (int y = 0; y < Ny; ++y) {
328  for (int x = 0; x < Nx; ++x) {
329  int x2 = x + unit_v[0] * j + imx;
330  int y2 = y + unit_v[1] * j + imy;
331  int z2 = z + unit_v[2] * j + imz;
332 
333  int site1 = index_ext.site(x, y, z, t);
334  int site2 = index_ext.site(x2, y2, z2, t);
335 
336  Mat_SU_N Utmp1(Nc);
337  Utmp1 = Uspc.mat(site1, 0);
338 
339  Mat_SU_N Utmp2(Nc);
340  Utmp2 = Uext.mat(site2, 0);
341 
342  Mat_SU_N Utmp3(Nc);
343  Utmp3 = Utmp1 * Utmp2;
344 
345  Uspc.set_mat(site1, 0, Utmp3);
346  }
347  }
348  }
349  }
350  ++imx;
351  }
352 
353  if ((kmod == 1) && (imy < unit_v[1])) {
354  for (int t = 0; t < m_Nt_ext; ++t) {
355  for (int z = 0; z < Nz; ++z) {
356  for (int y = 0; y < Ny; ++y) {
357  for (int x = 0; x < Nx; ++x) {
358  int x2 = x + unit_v[0] * j + imx;
359  int y2 = y + unit_v[1] * j + imy;
360  int z2 = z + unit_v[2] * j + imz;
361 
362  int site1 = index_ext.site(x, y, z, t);
363  int site2 = index_ext.site(x2, y2, z2, t);
364 
365  Mat_SU_N Utmp1(Nc);
366  Utmp1 = Uspc.mat(site1, 0);
367 
368  Mat_SU_N Utmp2(Nc);
369  Utmp2 = Uext.mat(site2, 1);
370 
371  Mat_SU_N Utmp3(Nc);
372  Utmp3 = Utmp1 * Utmp2;
373 
374  Uspc.set_mat(site1, 0, Utmp3);
375  }
376  }
377  }
378  }
379  ++imy;
380  }
381 
382  if ((kmod == 2) && (imz < unit_v[2])) {
383  for (int t = 0; t < m_Nt_ext; ++t) {
384  for (int z = 0; z < Nz; ++z) {
385  for (int y = 0; y < Ny; ++y) {
386  for (int x = 0; x < Nx; ++x) {
387  int x2 = x + unit_v[0] * j + imx;
388  int y2 = y + unit_v[1] * j + imy;
389  int z2 = z + unit_v[2] * j + imz;
390 
391  int site1 = index_ext.site(x, y, z, t);
392  int site2 = index_ext.site(x2, y2, z2, t);
393 
394  Mat_SU_N Utmp1(Nc);
395  Utmp1 = Uspc.mat(site1, 0);
396 
397  Mat_SU_N Utmp2(Nc);
398  Utmp2 = Uext.mat(site2, 2);
399 
400  Mat_SU_N Utmp3(Nc);
401  Utmp3 = Utmp1 * Utmp2;
402 
403  Uspc.set_mat(site1, 0, Utmp3);
404  }
405  }
406  }
407  }
408  ++imz;
409  }
410  }
411 }
412 
413 
414 //====================================================================
415 void WilsonLoop::set_extfield(Field_G& Uext, const Field_G& Uorg)
416 {
417  const int Ndim = CommonParameters::Ndim();
418  const int Nx = CommonParameters::Nx();
419  const int Ny = CommonParameters::Ny();
420  const int Nz = CommonParameters::Nz();
421  const int Nt = CommonParameters::Nt();
422  const int NinG = Uorg.nin();
423 
424  Index_lex index_lex;
426 
427  Uext.set(0.0);
428 
429  //- bulk part of extended field same to the original field.
430  for (int it = 0; it < Nt; ++it) {
431  for (int iz = 0; iz < Nz; ++iz) {
432  for (int iy = 0; iy < Ny; ++iy) {
433  for (int ix = 0; ix < Nx; ++ix) {
434  int site1 = index_lex.site(ix, iy, iz, it);
435  int site2 = index_ext.site(ix, iy, iz, it);
436 
437  for (int ex = 0; ex < Ndim; ++ex) {
438  Uext.set_mat(site2, ex, Uorg.mat(site1, ex));
439  }
440  }
441  }
442  }
443  }
444 
445  //- setting maximum size of volume for buffer field.
446  int Nmin_ext = m_Nx_ext;
447  if (m_Ny_ext < Nmin_ext) Nmin_ext = m_Ny_ext;
448  if (m_Nz_ext < Nmin_ext) Nmin_ext = m_Nz_ext;
449  if (m_Nt_ext < Nmin_ext) Nmin_ext = m_Nt_ext;
450 
451  const int Nvol_cp = m_Nvol_ext / Nmin_ext;
452 
453  //- buffer field for copy.
454  Field_G Ucp1(Nvol_cp, Ndim);
455  Field_G Ucp2(Nvol_cp, Ndim);
456 
457  const int size_ex = NinG * Nvol_cp * Ndim;
458 
459 
460  //- exchange in t-direction
461  for (int it_off = 0; it_off < m_Ntmp_size + 1; ++it_off) {
462  for (int iz = 0; iz < m_Nz_ext; ++iz) {
463  for (int iy = 0; iy < m_Ny_ext; ++iy) {
464  for (int ix = 0; ix < m_Nx_ext; ++ix) {
465  int site1 = index_ext.site(ix, iy, iz, it_off);
466  int site2 = ix + m_Nx_ext * (iy + m_Ny_ext * iz);
467 
468  for (int ex = 0; ex < Ndim; ++ex) {
469  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
470  }
471  }
472  }
473  }
474 
475  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 3, 1, 0);
476 
477  for (int iz = 0; iz < m_Nz_ext; ++iz) {
478  for (int iy = 0; iy < m_Ny_ext; ++iy) {
479  for (int ix = 0; ix < m_Nx_ext; ++ix) {
480  int site1 = ix + m_Nx_ext * (iy + m_Ny_ext * iz);
481  int site2 = index_ext.site(ix, iy, iz, Nt + it_off);
482 
483  for (int ex = 0; ex < Ndim; ++ex) {
484  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
485  }
486  }
487  }
488  }
489  } // end of it_off loop.
490 
491  //- exchange in z-direction
492  for (int iz_off = 0; iz_off < m_Nspc_size + 1; ++iz_off) {
493  for (int it = 0; it < m_Nt_ext; ++it) {
494  for (int iy = 0; iy < m_Ny_ext; ++iy) {
495  for (int ix = 0; ix < m_Nx_ext; ++ix) {
496  int site1 = index_ext.site(ix, iy, iz_off, it);
497  int site2 = ix + m_Nx_ext * (iy + m_Ny_ext * it);
498 
499  for (int ex = 0; ex < Ndim; ++ex) {
500  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
501  }
502  }
503  }
504  }
505 
506  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 2, 1, 0);
507 
508  for (int it = 0; it < m_Nt_ext; ++it) {
509  for (int iy = 0; iy < m_Ny_ext; ++iy) {
510  for (int ix = 0; ix < m_Nx_ext; ++ix) {
511  int site1 = ix + m_Nx_ext * (iy + m_Ny_ext * it);
512  int site2 = index_ext.site(ix, iy, Nz + iz_off, it);
513 
514  for (int ex = 0; ex < Ndim; ++ex) {
515  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
516  }
517  }
518  }
519  }
520  } // end of iz_off loop.
521 
522  //- exchange in y-direction
523  for (int iy_off = 0; iy_off < m_Nspc_size + 1; ++iy_off) {
524  for (int it = 0; it < m_Nt_ext; ++it) {
525  for (int iz = 0; iz < m_Nz_ext; ++iz) {
526  for (int ix = 0; ix < m_Nx_ext; ++ix) {
527  int site1 = index_ext.site(ix, iy_off, iz, it);
528  int site2 = ix + m_Nx_ext * (iz + m_Nz_ext * it);
529 
530  for (int ex = 0; ex < Ndim; ++ex) {
531  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
532  }
533  }
534  }
535  }
536 
537  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 1, 1, 0);
538 
539  for (int it = 0; it < m_Nt_ext; ++it) {
540  for (int iz = 0; iz < m_Nz_ext; ++iz) {
541  for (int ix = 0; ix < m_Nx_ext; ++ix) {
542  int site1 = ix + m_Nx_ext * (iz + m_Nz_ext * it);
543  int site2 = index_ext.site(ix, Ny + iy_off, iz, it);
544 
545  for (int ex = 0; ex < Ndim; ++ex) {
546  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
547  }
548  }
549  }
550  }
551  } // end of iy_off loop.
552 
553  //- exchange in x-direction
554  for (int ix_off = 0; ix_off < m_Nspc_size + 1; ++ix_off) {
555  for (int it = 0; it < m_Nt_ext; ++it) {
556  for (int iz = 0; iz < m_Nz_ext; ++iz) {
557  for (int iy = 0; iy < m_Ny_ext; ++iy) {
558  int site1 = index_ext.site(ix_off, iy, iz, it);
559  int site2 = iy + m_Ny_ext * (iz + m_Nz_ext * it);
560 
561  for (int ex = 0; ex < Ndim; ++ex) {
562  Ucp1.set_mat(site2, ex, Uext.mat(site1, ex));
563  }
564  }
565  }
566  }
567 
568  Communicator::exchange(size_ex, Ucp2.ptr(0), Ucp1.ptr(0), 0, 1, 0);
569 
570  for (int it = 0; it < m_Nt_ext; ++it) {
571  for (int iz = 0; iz < m_Nz_ext; ++iz) {
572  for (int iy = 0; iy < m_Ny_ext; ++iy) {
573  int site1 = iy + m_Ny_ext * (iz + m_Nz_ext * it);
574  int site2 = index_ext.site(Nx + ix_off, iy, iz, it);
575 
576  for (int ex = 0; ex < Ndim; ++ex) {
577  Uext.set_mat(site2, ex, Ucp2.mat(site1, ex));
578  }
579  }
580  }
581  }
582  } // end of ix_off loop.
583 }
584 
585 
586 //====================================================================
588 {
589  const int Ndim = CommonParameters::Ndim();
590  const int Nc = CommonParameters::Nc();
591 
592  const int dir_t = Ndim - 1;
593 
595 
596  for (int it = 1; it < m_Nt_ext; ++it) {
597  for (int iz = 0; iz < m_Nz_ext; ++iz) {
598  for (int iy = 0; iy < m_Ny_ext; ++iy) {
599  for (int ix = 0; ix < m_Nx_ext; ++ix) {
600  int site0 = index_ext.site(ix, iy, iz, it - 1);
601 
602  Mat_SU_N Utrf1(Nc);
603  Utrf1 = Uext.mat(site0, dir_t);
604 
605  Mat_SU_N Utrf2(Nc);
606  Utrf2 = Uext.mat_dag(site0, dir_t);
607 
608  Mat_SU_N Utmp2(Nc);
609  Utmp2 = Utrf1 * Utrf2;
610 
611  Uext.set_mat(site0, 3, Utmp2);
612 
613  int site1 = index_ext.site(ix, iy, iz, it);
614 
615  for (int ex = 0; ex < Ndim; ++ex) {
616  Mat_SU_N Utmp(Nc);
617  Utmp = Uext.mat(site1, ex);
618  Utmp2 = Utrf1 * Utmp;
619  Uext.set_mat(site1, ex, Utmp2);
620  }
621 
622  if (ix > 0) {
623  int site2 = index_ext.site(ix - 1, iy, iz, it);
624 
625  Mat_SU_N Utmp(Nc);
626  Utmp = Uext.mat(site2, 0);
627  Utmp2 = Utmp * Utrf2;
628  Uext.set_mat(site2, 0, Utmp2);
629  }
630 
631  if (iy > 0) {
632  int site2 = index_ext.site(ix, iy - 1, iz, it);
633 
634  Mat_SU_N Utmp(Nc);
635  Utmp = Uext.mat(site2, 1);
636  Utmp2 = Utmp * Utrf2;
637  Uext.set_mat(site2, 1, Utmp2);
638  }
639 
640  if (iz > 0) {
641  int site2 = index_ext.site(ix, iy, iz - 1, it);
642 
643  Mat_SU_N Utmp(Nc);
644  Utmp = Uext.mat(site2, 2);
645  Utmp2 = Utmp * Utrf2;
646  Uext.set_mat(site2, 2, Utmp2);
647  }
648  }
649  }
650  }
651  }
652 }
653 
654 
655 //====================================================================
656 //============================================================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:53
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:219
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
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:587
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:238
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:300
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:250
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:133
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:180
WilsonLoop::set_extfield
void set_extfield(Field_G &Uext, const Field_G &Uorg)
setup of extended gauge field.
Definition: wilsonLoop.cpp:415
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
Bridge::BridgeIO::getStream
std::ostream & getStream()
Definition: bridgeIO.cpp:396
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:200
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:512
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:154