Bridge++  Ver.2.1.3
projection_Stout_SU3.cpp
Go to the documentation of this file.
1 
12 #include "lib/Tools/timer.h"
13 
14 // The following implementation only valid for Nc = 3 case.
15 #define NC 3
16 
17 #ifdef USE_FACTORY_AUTOREGISTER
18 namespace {
19  bool init = Projection_Stout_SU3::register_factory();
20 }
21 #endif
22 
23 const std::string Projection_Stout_SU3::class_name = "Projection_Stout_SU3";
24 
25 //====================================================================
27 {
29 
30  std::string vlevel;
31  if (!params.fetch_string("verbose_level", vlevel)) {
32  m_vl = vout.set_verbose_level(vlevel);
33  } else {
35  }
36 
37  vout.general(m_vl, "%s: construction\n", class_name.c_str());
39 
40  // strict check
41  if (CommonParameters::Nc() != NC) {
42  vout.crucial(m_vl, "Error at %s: Nc = 3 is needed, but Nc = %d\n",
43  class_name.c_str(), CommonParameters::Nc());
44  exit(EXIT_FAILURE);
45  }
46 
47  set_parameters(params);
48 
50  vout.general(m_vl, "%s: construction finished.\n",
51  class_name.c_str());
52 }
53 
54 
55 //====================================================================
57 {
59 
61 
62  vout.general(m_vl, "%s: construction (obsolete)\n", class_name.c_str());
64 
65  // strict check
66  if (CommonParameters::Nc() != NC) {
67  vout.crucial(m_vl, "Error at %s: Nc = 3 is needed, but Nc = %d\n",
68  class_name.c_str(), CommonParameters::Nc());
69  exit(EXIT_FAILURE);
70  }
71 
73  vout.general(m_vl, "%s: construction finished.\n",
74  class_name.c_str());
75 }
76 
77 
78 //====================================================================
80 {
81  std::string vlevel;
82  if (!params.fetch_string("verbose_level", vlevel)) {
83  m_vl = vout.set_verbose_level(vlevel);
84  }
85 }
86 
87 
88 //====================================================================
90 {
91  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
92 }
93 
94 
95 //====================================================================
97  const double alpha,
98  const Field_G& Cst,
99  const Field_G& Uorg)
100 {
101 #pragma omp barrier
102 
103  vout.detailed(m_vl, "%s::project() start\n", class_name.c_str());
104 
105  //Timer timer;
106  //timer.start();
107 
108  // in stout projection, parameter alpha is dummy.
109 
110  const int Nex = Uorg.nex();
111  const int Nvol = Uorg.nvol();
112  const int NinG = Uorg.nin();
113 
114  assert(Cst.nex() == Nex);
115  assert(Cst.nvol() == Nvol);
116  assert(U.nex() == Nex);
117  assert(U.nvol() == Nvol);
118 
119  Mat_SU_N iQ0(NC);
120  iQ0.unit();
121 
122  int ith, nth, is, ns;
123  set_threadtask(ith, nth, is, ns, Nvol);
124 
125  for (int mu = 0; mu < Nex; ++mu) {
126  for (int site = is; site < ns; ++site) {
127  Mat_SU_N ut(NC);
128  Uorg.mat(ut, site, mu);
129 
130  Mat_SU_N ct(NC);
131  Cst.mat(ct, site, mu);
132 
133  Mat_SU_N iQ1(NC);
134  iQ1.mult_nd(ct, ut);
135  iQ1.at();
136 
137  Mat_SU_N iQ2(NC);
138  iQ2.mult_nn(iQ1, iQ1);
139 
140  Mat_SU_N iQ3(NC);
141  iQ3.mult_nn(iQ1, iQ2);
142 
143  Mat_SU_N e_iQ(NC);
144 
145  double norm = iQ1.norm2();
146  if (norm > 1.0e-10) {
147  double u, w;
148  set_uw(u, w, iQ2, iQ3);
149 
150  dcomplex f0, f1, f2;
151  set_fj(f0, f1, f2, u, w);
152 
153  for (int cc = 0; cc < NC * NC; ++cc) {
154  dcomplex qt = f0 * cmplx(iQ0.r(cc), iQ0.i(cc))
155  + f1 * cmplx(iQ1.i(cc), -iQ1.r(cc))
156  - f2 * cmplx(iQ2.r(cc), iQ2.i(cc));
157  e_iQ.set_r(cc, real(qt));
158  e_iQ.set_i(cc, imag(qt));
159  }
160  } else {
161  // vout.general(m_vl,"|iQ1|^2 too small: %lf. Set e_iQ=1.\n",norm);
162  e_iQ.unit();
163  }
164 
165  Mat_SU_N ut2(NC);
166  ut2.mult_nn(e_iQ, ut);
167  U.set_mat(site, mu, ut2);
168  }
169  }
170 
171  //timer.stop();
172  //double elapsed_time = timer.elapsed_sec();
173  //vout.detailed(m_vl, " Elapsed time = %14.6f sec\n", elapsed_time);
174 
175 #pragma omp barrier
176 }
177 
178 
179 //====================================================================
181 {
182 #pragma omp barrier
183 
184  const int Nvol = iQ.nvol();
185  const int Nex = iQ.nex();
186 
187  Mat_SU_N iQ0(NC);
188 
189  iQ0.unit();
190 
191  int ith, nth, is, ns;
192  set_threadtask(ith, nth, is, ns, Nvol);
193 
194  for (int mu = 0; mu < Nex; ++mu) {
195  for (int site = is; site < ns; ++site) {
196  Mat_SU_N iQ1 = iQ.mat(site, mu);
197  Mat_SU_N iQ2 = iQ1 * iQ1;
198  Mat_SU_N iQ3 = iQ1 * iQ2;
199 
200  double norm = iQ1.norm2();
201  if (norm > 1.0e-10) {
202  double u, w;
203  set_uw(u, w, iQ2, iQ3);
204 
205  dcomplex f0, f1, f2;
206  set_fj(f0, f1, f2, u, w);
207 
208  for (int cc = 0; cc < NC * NC; ++cc) {
209  dcomplex qt = f0 * cmplx(iQ0.r(cc), iQ0.i(cc))
210  + f1 * cmplx(iQ1.i(cc), -iQ1.r(cc))
211  - f2 * cmplx(iQ2.r(cc), iQ2.i(cc));
212  e_iQ.set_ri(cc, site, mu, real(qt), imag(qt));
213  }
214  } else {
215  // vout.general(m_vl,"exp_iQ: |iQ1|^2 too small: %lf. Set e_iQ=1.\n",norm);
216  e_iQ.set_mat(site, mu, iQ0);
217  }
218  }
219  }
220 
221 #pragma omp barrier
222 }
223 
224 //====================================================================
225 
238 //====================================================================
240  Field_G& iTheta,
241  const double alpha,
242  const Field_G& Sigmap,
243  const Field_G& Cst,
244  const Field_G& Uorg)
245 {
246 #pragma omp barrier
247  // in stout projection, parameter alpha is dummy.
248 
249  //Timer timer;
250  //timer.start();
251 
252  const int Nvol = CommonParameters::Nvol();
253  const int Nex = Xi.nex();
254 
255  assert(Xi.nvol() == Nvol);
256  assert(iTheta.nvol() == Nvol);
257  assert(Sigmap.nvol() == Nvol);
258  assert(Cst.nvol() == Nvol);
259  assert(Uorg.nvol() == Nvol);
260  assert(iTheta.nex() == Nex);
261  assert(Sigmap.nex() == Nex);
262  assert(Cst.nex() == Nex);
263  assert(Uorg.nex() == Nex);
264 
265  Mat_SU_N iQ0(NC);
266  iQ0.unit();
267 
268  int ith, nth, is, ns;
269  set_threadtask(ith, nth, is, ns, Nvol);
270 
271  for (int mu = 0; mu < Nex; ++mu) {
272  for (int site = is; site < ns; ++site) {
274  Mat_SU_N C_tmp(NC);
275  Cst.mat(C_tmp, site, mu);
276 
278  Mat_SU_N U_tmp(NC);
279  Uorg.mat(U_tmp, site, mu);
280 
281  // Sigmap_tmp \f$=\Sigma_\mu'(x)\f$
282  Mat_SU_N Sigmap_tmp(NC);
283  Sigmap.mat(Sigmap_tmp, site, mu);
284 
286  Mat_SU_N iQ1(NC);
287  iQ1.mult_nd(C_tmp, U_tmp);
288  iQ1.at();
289 
290  Mat_SU_N iQ2(NC);
291  iQ2.mult_nn(iQ1, iQ1);
292 
293  Mat_SU_N iQ3(NC);
294  iQ3.mult_nn(iQ1, iQ2);
295 
296  // In order to aviod 1Q1=0
297  Mat_SU_N e_iQ(NC), iGamma(NC);
298 
299  double norm = iQ1.norm2();
300  if (norm > 1.0e-10) {
301  double u, w;
302  set_uw(u, w, iQ2, iQ3);
303 
304  dcomplex f0, f1, f2;
305  set_fj(f0, f1, f2, u, w);
306 
307  for (int cc = 0; cc < NC * NC; ++cc) {
308  dcomplex qt = f0 * cmplx(iQ0.r(cc), iQ0.i(cc))
309  + f1 * cmplx(iQ1.i(cc), -iQ1.r(cc))
310  - f2 * cmplx(iQ2.r(cc), iQ2.i(cc));
311  e_iQ.set(cc, real(qt), imag(qt));
312  }
313 
314  double xi0 = func_xi0(w);
315  double xi1 = func_xi1(w);
316  double u2 = u * u;
317  double w2 = w * w;
318  double cos_w = cos(w);
319 
320  dcomplex emiu = cmplx(cos(u), -sin(u));
321  dcomplex e2iu = cmplx(cos(2.0 * u), sin(2.0 * u));
322 
323  dcomplex r01 = cmplx(2.0 * u, 2.0 * (u2 - w2)) * e2iu
324  + emiu * cmplx(16.0 * u * cos_w + 2.0 * u * (3.0 * u2 + w2) * xi0,
325  -8.0 * u2 * cos_w + 2.0 * (9.0 * u2 + w2) * xi0);
326 
327  dcomplex r11 = cmplx(2.0, 4.0 * u) * e2iu
328  + emiu * cmplx(-2.0 * cos_w + (3.0 * u2 - w2) * xi0,
329  2.0 * u * cos_w + 6.0 * u * xi0);
330 
331  dcomplex r21 = cmplx(0.0, 2.0) * e2iu
332  + emiu * cmplx(-3.0 * u * xi0, cos_w - 3.0 * xi0);
333 
334  dcomplex r02 = cmplx(-2.0, 0.0) * e2iu
335  + emiu * cmplx(-8.0 * u2 * xi0,
336  2.0 * u * (cos_w + xi0 + 3.0 * u2 * xi1));
337 
338  dcomplex r12 = emiu * cmplx(2.0 * u * xi0,
339  -cos_w - xi0 + 3.0 * u2 * xi1);
340 
341  dcomplex r22 = emiu * cmplx(xi0, -3.0 * u * xi1);
342 
343  double fden = 1.0 / (2 * (9.0 * u2 - w2) * (9.0 * u2 - w2));
344 
345  dcomplex b10 = cmplx(2.0 * u, 0.0) * r01 + cmplx(3.0 * u2 - w2, 0.0) * r02
346  - cmplx(30.0 * u2 + 2.0 * w2, 0.0) * f0;
347  dcomplex b11 = cmplx(2.0 * u, 0.0) * r11 + cmplx(3.0 * u2 - w2, 0.0) * r12
348  - cmplx(30.0 * u2 + 2.0 * w2, 0.0) * f1;
349  dcomplex b12 = cmplx(2.0 * u, 0.0) * r21 + cmplx(3.0 * u2 - w2, 0.0) * r22
350  - cmplx(30.0 * u2 + 2.0 * w2, 0.0) * f2;
351 
352  dcomplex b20 = r01 - cmplx(3.0 * u, 0.0) * r02 - cmplx(24.0 * u, 0.0) * f0;
353  dcomplex b21 = r11 - cmplx(3.0 * u, 0.0) * r12 - cmplx(24.0 * u, 0.0) * f1;
354  dcomplex b22 = r21 - cmplx(3.0 * u, 0.0) * r22 - cmplx(24.0 * u, 0.0) * f2;
355 
356  b10 *= cmplx(fden, 0.0);
357  b11 *= cmplx(fden, 0.0);
358  b12 *= cmplx(fden, 0.0);
359  b20 *= cmplx(fden, 0.0);
360  b21 *= cmplx(fden, 0.0);
361  b22 *= cmplx(fden, 0.0);
362 
363  Mat_SU_N B1(NC), B2(NC);
364  for (int cc = 0; cc < NC * NC; ++cc) {
365  dcomplex qt1 = b10 * cmplx(iQ0.r(cc), iQ0.i(cc))
366  + b11 * cmplx(iQ1.i(cc), -iQ1.r(cc))
367  - b12 * cmplx(iQ2.r(cc), iQ2.i(cc));
368  B1.set(cc, real(qt1), imag(qt1));
369 
370  dcomplex qt2 = b20 * cmplx(iQ0.r(cc), iQ0.i(cc))
371  + b21 * cmplx(iQ1.i(cc), -iQ1.r(cc))
372  - b22 * cmplx(iQ2.r(cc), iQ2.i(cc));
373  B2.set(cc, real(qt2), imag(qt2));
374  }
375 
376  Mat_SU_N USigmap(NC);
377  USigmap.mult_nn(U_tmp, Sigmap_tmp);
378 
379  Mat_SU_N tmp1(NC);
380  tmp1.mult_nn(USigmap, B1);
381 
382  Mat_SU_N tmp2(NC);
383  tmp2.mult_nn(USigmap, B2);
384 
385  dcomplex tr1 = cmplx(tmp1.r(0) + tmp1.r(4) + tmp1.r(8),
386  tmp1.i(0) + tmp1.i(4) + tmp1.i(8));
387  dcomplex tr2 = cmplx(tmp2.r(0) + tmp2.r(4) + tmp2.r(8),
388  tmp2.i(0) + tmp2.i(4) + tmp2.i(8));
389 
390  Mat_SU_N iQUS(NC);
391  iQUS.mult_nn(iQ1, USigmap);
392 
393  Mat_SU_N iUSQ(NC);
394  iUSQ.mult_nn(USigmap, iQ1);
395 
396  for (int cc = 0; cc < NC * NC; ++cc) {
397  dcomplex qt = tr1 * cmplx(iQ1.i(cc), -iQ1.r(cc))
398  - tr2 * cmplx(iQ2.r(cc), iQ2.i(cc))
399  + f1 * cmplx(USigmap.r(cc), USigmap.i(cc))
400  + f2 * cmplx(iQUS.i(cc), -iQUS.r(cc))
401  + f2 * cmplx(iUSQ.i(cc), -iUSQ.r(cc));
402  iGamma.set(cc, -imag(qt), real(qt));
403  }
404  } else {
405  // vout.general(m_vl,"force_recursive: |iQ1|^2 too small: %lf. Set e_iQ=1.\n",norm);
406  iGamma.zero();
407  e_iQ.unit();
408  }
409 
411  iGamma.at();
412 
413  Mat_SU_N iTheta_tmp(NC);
414  iTheta_tmp.mult_nn(iGamma, U_tmp);
415 
417  iTheta.set_mat(site, mu, iTheta_tmp);
418 
419  Mat_SU_N Xi_tmp(NC);
420  Xi_tmp.mult_nn(Sigmap_tmp, e_iQ);
421  Xi_tmp.multadd_dn(C_tmp, iGamma);
422 
424  Xi.set_mat(site, mu, Xi_tmp);
425  }
426  }
427 
428 #pragma omp barrier
429 
430  //timer.stop();
431  //double elapsed_time = timer.elapsed_sec();
432  //vout.detailed(m_vl, " Elapsed time = %14.6f sec\n", elapsed_time);
433 
434 }
435 
436 
437 //====================================================================
438 void Projection_Stout_SU3::set_fj(dcomplex& f0, dcomplex& f1, dcomplex& f2,
439  const double& u, const double& w)
440 {
441  const double xi0 = func_xi0(w);
442  const double u2 = u * u;
443  const double w2 = w * w;
444  const double cos_w = cos(w);
445 
446  const double cos_u = cos(u);
447  const double sin_u = sin(u);
448 
449  const dcomplex emiu = cmplx(cos_u, -sin_u);
450  const dcomplex e2iu = cmplx(cos_u * cos_u - sin_u * sin_u,
451  2.0 * sin_u * cos_u);
452 
453  const dcomplex h0 = e2iu * cmplx(u2 - w2, 0.0)
454  + emiu * cmplx(8.0 * u2 * cos_w,
455  2.0 * u * (3.0 * u2 + w2) * xi0);
456  const dcomplex h1 = e2iu * cmplx(2 * u, 0.0)
457  - emiu * cmplx(2.0 * u * cos_w,
458  -(3.0 * u2 - w2) * xi0);
459  const dcomplex h2 = e2iu - emiu * cmplx(cos_w, 3.0 * u * xi0);
460 
461  const double fden = 1.0 / (9.0 * u2 - w2);
462 
463  f0 = h0 * fden;
464  f1 = h1 * fden;
465  f2 = h2 * fden;
466 
467 }
468 
469 //====================================================================
470 void Projection_Stout_SU3::set_uw(double& u, double& w,
471  const Mat_SU_N& iQ2, const Mat_SU_N& iQ3)
472 {
473  const double c0 = -(iQ3.i(0, 0) + iQ3.i(1, 1) + iQ3.i(2, 2)) / 3.0;
474  const double c1 = -0.5 * (iQ2.r(0, 0) + iQ2.r(1, 1) + iQ2.r(2, 2));
475  const double c13r = sqrt(c1 / 3.0);
476  const double c0max = 2.0 * c13r * c13r * c13r;
477 
478  const double theta = acos(c0 / c0max);
479 
480  //- output
481  u = c13r * cos(theta / 3.0);
482  w = sqrt(c1) * sin(theta / 3.0);
483 }
484 
485 
486 //====================================================================
487 double Projection_Stout_SU3::func_xi0(const double w)
488 {
489  if (w == 0.0) {
490  return 1.0;
491  } else {
492  return sin(w) / w;
493  }
494 }
495 
496 
497 //====================================================================
498 double Projection_Stout_SU3::func_xi1(const double w)
499 {
500  if (w < 0.25) {
501  const double w2 = w * w;
502  const static double c0 = -1.0 / 3.0;
503  const static double c1 = 1.0 / 30.0;
504  const static double c2 = -1.0 / 840.0;
505  const static double c3 = 1.0 / 45360.0;
506  const static double c4 = -1.0 / 3991680.0;
507 
508  return c0 + w2 * (c1 + w2 * (c2 + w2 * (c3 + w2 * c4)));
509  } else {
510  return (w * cos(w) - sin(w)) / (w * w * w);
511  }
512 }
513 
514 
515 //====================================================================
517 {
518 #pragma omp barrier
519  // brute force version of exponentiation: for check
520 
521  //const static int Nprec = 32;
522  const int Nprec = 32;
523 
524  const int Nvol = iQ.nvol();
525  const int Nex = iQ.nex();
526 
527  int ith, nth, is, ns;
528  set_threadtask(ith, nth, is, ns, Nvol);
529 
530  for (int ex = 0; ex < Nex; ++ex) {
531  for (int site = is; site < ns; ++site) {
532  Mat_SU_N u0(NC);
533  u0.unit();
534 
535  Mat_SU_N u1(NC);
536  u1.unit();
537 
538  Mat_SU_N h1 = iQ.mat(site, ex);
539 
540  for (int iprec = 0; iprec < Nprec; ++iprec) {
541  double exf = 1.0 / (Nprec - iprec);
542  Mat_SU_N u2 = h1 * u1;
543 
544  u2 *= exf;
545  u1 = u2;
546  u1 += u0;
547  }
548 
549  u1.reunit();
550  e_iQ.set_mat(site, ex, u1);
551  }
552  }
553 
554 #pragma omp barrier
555 }
556 
557 //============================================================END=====
Projection_Stout_SU3::get_parameters
void get_parameters(Parameters &param) const
Definition: projection_Stout_SU3.cpp:89
SU_N::Mat_SU_N::multadd_dn
void multadd_dn(const Mat_SU_N &u1, const Mat_SU_N &u2)
Definition: mat_SU_N.h:275
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
Projection_Stout_SU3::m_vl
Bridge::VerboseLevel m_vl
Definition: projection_Stout_SU3.h:34
Parameters
Class for parameters.
Definition: parameters.h:46
Projection_Stout_SU3::exp_iQ
void exp_iQ(Field_G &e_iQ, const Field_G &iQ)
Definition: projection_Stout_SU3.cpp:180
Projection_Stout_SU3::init
void init()
Definition: projection_Stout_SU3.cpp:56
Bridge::BridgeIO::decrease_indent
void decrease_indent()
Definition: bridgeIO.cpp:518
Field_G::set_ri
void set_ri(const int cc, const int site, const int mn, const double re, const double im)
Definition: field_G.h:107
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.cpp:508
Bridge::BridgeIO::detailed
void detailed(const char *format,...)
Definition: bridgeIO.cpp:281
Field::nex
int nex() const
Definition: field.h:128
Field_G::set_mat
void set_mat(const int site, const int mn, const Mat_SU_N &U)
Definition: field_G.h:160
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
SU_N::Mat_SU_N::reunit
Mat_SU_N & reunit()
Definition: mat_SU_N.h:72
SU_N::Mat_SU_N::unit
Mat_SU_N & unit()
Definition: mat_SU_N.h:419
Field::nin
int nin() const
Definition: field.h:126
Projection_Stout_SU3::force_recursive
void force_recursive(Field_G &Xi, Field_G &iTheta, const double alpha, const Field_G &Sigmap, const Field_G &C, const Field_G &U)
determination of fields for force calculation
Definition: projection_Stout_SU3.cpp:239
SU_N::Mat_SU_N::set
void set(int c, const double &re, const double &im)
Definition: mat_SU_N.h:137
Projection_Stout_SU3::set_parameters
void set_parameters(const Parameters &param)
Definition: projection_Stout_SU3.cpp:79
CommonParameters::Nc
static int Nc()
Definition: commonParameters.h:115
timer.h
Projection_Stout_SU3::exp_iQ_bf
void exp_iQ_bf(Field_G &e_iQ, const Field_G &iQ)
Definition: projection_Stout_SU3.cpp:516
Projection_Stout_SU3::class_name
static const std::string class_name
Definition: projection_Stout_SU3.h:31
SU_N::Mat_SU_N::zero
Mat_SU_N & zero()
Definition: mat_SU_N.h:429
Projection_Stout_SU3::set_fj
void set_fj(dcomplex &f0, dcomplex &f1, dcomplex &f2, const double &u, const double &w)
Definition: projection_Stout_SU3.cpp:438
Projection_Stout_SU3::set_uw
void set_uw(double &u, double &w, const Mat_SU_N &iQ2, const Mat_SU_N &iQ3)
Definition: projection_Stout_SU3.cpp:470
SU_N::Mat_SU_N
Definition: mat_SU_N.h:36
SU_N::Mat_SU_N::at
Mat_SU_N & at()
antihermitian traceless
Definition: mat_SU_N.h:375
SU_N::Mat_SU_N::r
double r(int c) const
Definition: mat_SU_N.h:115
SU_N::Mat_SU_N::mult_nn
void mult_nn(const Mat_SU_N &u1, const Mat_SU_N &u2)
Definition: mat_SU_N.h:189
Field::nvol
int nvol() const
Definition: field.h:127
Projection_Stout_SU3::func_xi1
double func_xi1(const double w)
Definition: projection_Stout_SU3.cpp:498
SU_N::Mat_SU_N::set_i
void set_i(int c, const double &im)
Definition: mat_SU_N.h:124
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
SU_N::Mat_SU_N::set_r
void set_r(int c, const double &re)
Definition: mat_SU_N.h:123
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:195
Projection_Stout_SU3::project
void project(Field_G &U, const double alpha, const Field_G &C, const Field_G &Uorg)
projection U = P[alpha, C, Uorg]
Definition: projection_Stout_SU3.cpp:96
SU_N::Mat_SU_N::i
double i(int c) const
Definition: mat_SU_N.h:116
Parameters::fetch_string
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:378
field_thread-inc.h
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:242
ut2
real_t ut2
Definition: mult_Staggered_uvdn1_openacc-inc.h:9
NC
#define NC
Definition: projection_Stout_SU3.cpp:15
Projection_Stout_SU3::func_xi0
double func_xi0(const double w)
Definition: projection_Stout_SU3.cpp:487
SU_N::Mat_SU_N::mult_nd
void mult_nd(const Mat_SU_N &u1, const Mat_SU_N &u2)
Definition: mat_SU_N.h:223
Field_G::mat
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:114
projection_Stout_SU3.h
Field_G
SU(N) gauge field.
Definition: field_G.h:38
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
ThreadManager::assert_single_thread
static void assert_single_thread(const std::string &class_name)
assert currently running on single thread.
Definition: threadManager.cpp:372
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:216
SU_N::Mat_SU_N::norm2
double norm2()
Definition: mat_SU_N.h:181