Bridge++  Ver. 2.0.2
gaugeFixing_Landau.cpp
Go to the documentation of this file.
1 
14 #include "gaugeFixing_Landau.h"
15 
16 #include "staple_lex.h"
17 
18 #ifdef USE_FACTORY_AUTOREGISTER
19 namespace {
20  bool init = GaugeFixing_Landau::register_factory();
21 }
22 #endif
23 
24 const std::string GaugeFixing_Landau::class_name = "GaugeFixing_Landau";
25 
26 //====================================================================
28 {
29  std::string vlevel;
30  if (!params.fetch_string("verbose_level", vlevel)) {
31  m_vl = vout.set_verbose_level(vlevel);
32  }
33 
34  //- fetch and check input parameters
35  int Niter, Nnaive, Nmeas, Nreset;
36  double Enorm, wp;
37 
38  int err = 0;
39  err += params.fetch_int("maximum_number_of_iteration", Niter);
40  err += params.fetch_int("number_of_naive_iteration", Nnaive);
41  err += params.fetch_int("interval_of_measurement", Nmeas);
42  err += params.fetch_int("iteration_to_reset", Nreset);
43  err += params.fetch_double("convergence_criterion_squared", Enorm);
44  err += params.fetch_double("overrelaxation_parameter", wp);
45 
46  if (err) {
47  vout.crucial(m_vl, "Error at %s: input parameter not found.\n", class_name.c_str());
48  exit(EXIT_FAILURE);
49  }
50 
51  set_parameters(Niter, Nnaive, Nmeas, Nreset, Enorm, wp);
52 }
53 
54 
55 //====================================================================
57 {
58  params.set_int("maximum_number_of_iteration", m_Niter);
59  params.set_int("number_of_naive_iteration", m_Nnaive);
60  params.set_int("interval_of_measurement", m_Nmeas);
61  params.set_int("iteration_to_reset", m_Nreset);
62  params.set_double("convergence_criterion_squared", m_Enorm);
63  params.set_double("overrelaxation_parameter", m_wp);
64 
65  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
66 }
67 
68 
69 //====================================================================
70 void GaugeFixing_Landau::set_parameters(const int Niter, const int Nnaive,
71  const int Nmeas, const int Nreset,
72  const double Enorm, const double wp)
73 {
74  //- print input parameters
75  vout.general(m_vl, "%s:\n", class_name.c_str());
76  vout.general(m_vl, " Niter = %d\n", Niter);
77  vout.general(m_vl, " Nnaive = %d\n", Nnaive);
78  vout.general(m_vl, " Nmeas = %d\n", Nmeas);
79  vout.general(m_vl, " Nreset = %d\n", Nreset);
80  vout.general(m_vl, " Enorm = %12.4e\n", Enorm);
81  vout.general(m_vl, " wp = %8.4f\n", wp);
82 
83  //- range check
84  int err = 0;
85  err += ParameterCheck::non_negative(Niter);
86  err += ParameterCheck::non_negative(Nnaive);
87  err += ParameterCheck::non_negative(Nmeas);
88  err += ParameterCheck::non_negative(Nreset);
89  err += ParameterCheck::square_non_zero(Enorm);
90  err += ParameterCheck::non_zero(wp);
91 
92  if (err) {
93  vout.crucial(m_vl, "Error at %s: parameter range check failed.\n", class_name.c_str());
94  exit(EXIT_FAILURE);
95  }
96 
97  //- store values
98  m_Niter = Niter;
99  m_Nnaive = Nnaive;
100  m_Nmeas = Nmeas;
101  m_Nreset = Nreset;
102  m_Enorm = Enorm;
103  m_wp = wp;
104 }
105 
106 
107 //====================================================================
108 void GaugeFixing_Landau::fix(Field_G& Ufix, const Field_G& Uorg)
109 {
110  const int Nvol = Uorg.nvol();
111  const int Nex = Uorg.nex();
112 
113  const int Nvol2 = Nvol / 2;
114 
115  Field_G Ue(Nvol2, Nex);
116 
117  m_index.convertField(Ue, Uorg, 0);
118 
119  Field_G Uo(Nvol2, Nex);
120  m_index.convertField(Uo, Uorg, 1);
121 
122  int Nconv = -1;
123 
124  Staple_lex staple;
125  const double plaq = staple.plaquette(Uorg);
126 
127  vout.general(m_vl, "plaq(original) = %18.14f\n", plaq);
128 
129 
130  //- gauge fixing iteration
131  for (int iter = 0; iter < m_Niter; ++iter) {
132  if ((iter % m_Nmeas) == 0) {
133  double sg, Fval;
134  calc_SG(sg, Fval, Ue, Uo);
135 
136  vout.detailed(m_vl, " iter = %6d sg = %16.8e Fval = %16.8e\n",
137  iter, sg, Fval);
138 
139  if (sg < m_Enorm) {
140  Nconv = iter;
141  vout.general(m_vl, "converged at iter = %d\n", Nconv);
142  break;
143  }
144  }
145 
146  double wp2 = m_wp;
147  if ((iter % m_Nreset) < m_Nnaive) wp2 = 1.0;
148 
149  gfix_step(Ue, Uo, wp2);
150 
151  if (((iter % m_Nreset) == 0) && (iter > 0)) {
152  vout.detailed(m_vl, " random gauge transformation performed.\n");
153 
154  Field_G Ge(Nvol2, 1);
156  gauge_trans_eo(Ue, Uo, Ge, 0);
157 
158  Field_G Go(Nvol2, 1);
160  gauge_trans_eo(Ue, Uo, Go, 1);
161  }
162  }
163 
164  if (Nconv < 0) {
165  vout.crucial(m_vl, "Error at %s: not converged.\n", class_name.c_str());
166  exit(EXIT_FAILURE);
167  }
168 
169  m_index.reverseField(Ufix, Ue, 0);
170  m_index.reverseField(Ufix, Uo, 1);
171 
172 
173  const double plaq2 = staple.plaquette(Ufix);
174  const double plaq_diff = fabs(plaq - plaq2);
175 
176  vout.general(m_vl, "plaq(fixed) = %18.14f\n", plaq2);
177  vout.general(m_vl, "plaq(diff) = %18.10e\n", plaq_diff);
178 
179  if (plaq_diff > sqrt(m_Enorm)) {
180  vout.crucial(m_vl, "Error at %s: too large plaq(diff) = %20.14e\n",
181  class_name.c_str(), plaq_diff);
182  exit(EXIT_FAILURE);
183  }
184 }
185 
186 
187 //====================================================================
189  const double wp)
190 {
191  const int Nc = CommonParameters::Nc();
192  const int Nvol2 = Ue.nvol();
193 
194  Mat_SU_N uwp(Nc);
195 
196  uwp.unit();
197  uwp *= (1.0 - wp);
198 
199  for (int ieo = 0; ieo < 2; ++ieo) {
200  Field_G Weo(Nvol2, 1);
201  calc_W(Weo, Ue, Uo, ieo);
202 
203  Field_G Geo(Nvol2, 1);
204  maxTr(Geo, Weo);
205  scal(Geo, wp);
206 
207  // double wp_sbt = 1.0 - wp;
208  for (int site = 0; site < Nvol2; ++site) {
209  Mat_SU_N ut(Nc);
210  ut = Geo.mat(site, 0);
211  ut += uwp;
212  ut.reunit();
213  Geo.set_mat(site, 0, ut);
214  }
215 
216  gauge_trans_eo(Ue, Uo, Geo, ieo);
217  }
218 }
219 
220 
221 //====================================================================
223 {
224  const int Nvol = Geo.nvol();
225  const int Nex = Geo.nex();
226 
227  const int Nc = CommonParameters::Nc();
228 
229  for (int ex = 0; ex < Nex; ++ex) {
230  for (int site = 0; site < Nvol; ++site) {
231  Mat_SU_N gt(Nc);
232  gt.set_random(m_rand);
233  Geo.set_mat(site, ex, gt);
234  }
235  }
236 }
237 
238 
239 //====================================================================
241  const Field_G& Geo, const int Ieo)
242 {
243  // Ieo = 0: gauge transformation on even sites.
244  // Ieo = 1: on odd sites.
245 
246  const int Nvol2 = Geo.nvol();
247  const int Ndim = CommonParameters::Ndim();
248 
249  // ShiftField_eo shift;
250 
251  if (Ieo == 0) {
252  for (int mu = 0; mu < Ndim; ++mu) {
253  Field_G Ut(Nvol2, 1);
254  mult_Field_Gnn(Ut, 0, Geo, 0, Ue, mu);
255  Ue.setpart_ex(mu, Ut, 0);
256 
257  Field_G Gt(Nvol2, 1);
258  m_shift.backward_h(Gt, Geo, mu, 1);
259  mult_Field_Gnd(Ut, 0, Uo, mu, Gt, 0);
260  Uo.setpart_ex(mu, Ut, 0);
261  }
262  } else {
263  for (int mu = 0; mu < Ndim; ++mu) {
264  Field_G Ut(Nvol2, 1);
265  mult_Field_Gnn(Ut, 0, Geo, 0, Uo, mu);
266  Uo.setpart_ex(mu, Ut, 0);
267 
268  Field_G Gt(Nvol2, 1);
269  m_shift.backward_h(Gt, Geo, mu, 0);
270  mult_Field_Gnd(Ut, 0, Ue, mu, Gt, 0);
271  Ue.setpart_ex(mu, Ut, 0);
272  }
273  }
274 }
275 
276 
277 //====================================================================
278 void GaugeFixing_Landau::calc_SG(double& sg, double& Fval,
279  const Field_G& Ue, const Field_G& Uo)
280 {
281  const int Nc = CommonParameters::Nc();
282  const int NPE = CommonParameters::NPE();
283  const int Nvol2 = Ue.nvol();
284  const int Nex = Ue.nex();
285 
286  sg = 0.0;
287  Fval = 0.0;
288 
289  for (int ieo = 0; ieo < 2; ++ieo) {
290  Field_G DLT(Nvol2, 1);
291  calc_DLT(DLT, Ue, Uo, ieo);
292  double tsg = DLT.norm2();
293  sg += tsg;
294  }
295  sg = sg / (Nex * Nc * 2 * Nvol2 * NPE);
296 
297  for (int mu = 0; mu < Nex; ++mu) {
298  for (int site = 0; site < Nvol2; ++site) {
299  Mat_SU_N ut(Nc);
300  ut = Ue.mat(site, mu);
301  Fval += ReTr(ut);
302 
303  ut = Uo.mat(site, mu);
304  Fval += ReTr(ut);
305  }
306  }
307  Fval = Communicator::reduce_sum(Fval);
308  Fval = Fval / (Nex * 2 * Nvol2 * NPE);
309 }
310 
311 
312 //====================================================================
314  const Field_G& Ue, const Field_G& Uo,
315  const int Ieo)
316 {
317  const int Nvol2 = Ue.nvol();
318  const int Nc = CommonParameters::Nc();
319  const int Ndim = CommonParameters::Ndim();
320 
321  // ShiftField_eo shift;
322 
323  DLT.set(0.0);
324 
325  if (Ieo == 0) { // on even sites
326  for (int mu = 0; mu < Ndim; ++mu) {
327  DLT.addpart_ex(0, Ue, mu, -1.0);
328 
329  Field_G Ut1(Nvol2, 1);
330  Ut1.setpart_ex(0, Uo, mu);
331 
332  Field_G Ut2(Nvol2, 1);
333  m_shift.forward_h(Ut2, Ut1, mu, 0);
334  DLT.addpart_ex(0, Ut2, 0);
335  }
336  } else { // on odd sites
337  for (int mu = 0; mu < Ndim; ++mu) {
338  DLT.addpart_ex(0, Uo, mu, -1.0);
339 
340  Field_G Ut1(Nvol2, 1);
341  Ut1.setpart_ex(0, Ue, mu);
342 
343  Field_G Ut2(Nvol2, 1);
344  m_shift.forward_h(Ut2, Ut1, mu, 1);
345  DLT.addpart_ex(0, Ut2, 0);
346  }
347  }
348 
349  for (int site = 0; site < Nvol2; ++site) {
350  Mat_SU_N u_tmp(Nc);
351  u_tmp = DLT.mat(site, 0);
352  u_tmp.at();
353  u_tmp *= 2.0;
354  DLT.set_mat(site, 0, u_tmp);
355  }
356 }
357 
358 
359 //====================================================================
361  const Field_G& Ue, const Field_G& Uo,
362  const int Ieo)
363 {
364  const int Nvol2 = Ue.nvol();
365  const int Nc = CommonParameters::Nc();
366  const int Ndim = CommonParameters::Ndim();
367 
368  assert(Weo.nex() == 1);
369 
370  // ShiftField_eo shift;
371 
372  Weo.set(0.0);
373 
374  if (Ieo == 0) { // on even sites
375  for (int mu = 0; mu < Ndim; ++mu) {
376  Weo.addpart_ex(0, Ue, mu);
377 
378  Field_G Ut1(Nvol2, 1);
379  Ut1.setpart_ex(0, Uo, mu);
380 
381  Field_G Ut2(Nvol2, 1);
382  m_shift.forward_h(Ut2, Ut1, mu, 0);
383  for (int site = 0; site < Nvol2; ++site) {
384  Mat_SU_N u_tmp(Nc);
385  u_tmp = Ut2.mat_dag(site, 0);
386  Weo.add_mat(site, 0, u_tmp);
387  }
388  }
389  } else if (Ieo == 1) { // on odd sites
390  for (int mu = 0; mu < Ndim; ++mu) {
391  Weo.addpart_ex(0, Uo, mu);
392 
393  Field_G Ut1(Nvol2, 1);
394  Ut1.setpart_ex(0, Ue, mu);
395 
396  Field_G Ut2(Nvol2, 1);
397  m_shift.forward_h(Ut2, Ut1, mu, 1);
398  for (int site = 0; site < Nvol2; ++site) {
399  Mat_SU_N u_tmp(Nc);
400  u_tmp = Ut2.mat_dag(site, 0);
401  Weo.add_mat(site, 0, u_tmp);
402  }
403  }
404  } else {
405  vout.crucial(m_vl, "Error at %s: Wrong ieo=%d.\n", class_name.c_str(), Ieo);
406  exit(EXIT_FAILURE);
407  }
408 }
409 
410 
411 //====================================================================
413 {
414  // Present implementation only applys to SU(3) case.
415  const int Nc = CommonParameters::Nc();
416  const int Nvol2 = G0.nvol();
417 
418  const int Nmt = 1;
419 
420  Mat_SU_N unity(Nc);
421 
422  unity.unit();
423 
424  for (int site = 0; site < Nvol2; ++site) {
425  G0.set_mat(site, 0, unity);
426  }
427 
428  for (int imt = 0; imt < Nmt; ++imt) {
429  maxTr1(G0, W);
430  maxTr2(G0, W);
431  maxTr3(G0, W);
432  }
433 }
434 
435 
436 //====================================================================
438 {
439  const int Nc = CommonParameters::Nc();
440  const int Nvol2 = W.nvol();
441 
442  for (int site = 0; site < Nvol2; ++site) {
443  Mat_SU_N wt(Nc);
444  wt = W.mat(site, 0);
445 
446  Mat_SU_N gt(Nc);
447  gt.set(2, 0.0, 0.0);
448  gt.set(5, 0.0, 0.0);
449  gt.set(6, 0.0, 0.0);
450  gt.set(7, 0.0, 0.0);
451  gt.set(8, 1.0, 0.0);
452 
453  double fn1 = (wt.r(0) + wt.r(4)) * (wt.r(0) + wt.r(4))
454  + (wt.i(0) - wt.i(4)) * (wt.i(0) - wt.i(4));
455  double fn2 = (wt.r(1) - wt.r(3)) * (wt.r(1) - wt.r(3))
456  + (wt.i(1) + wt.i(3)) * (wt.i(1) + wt.i(3));
457  double fn = 1.0 / sqrt(fn1 + fn2);
458 
459  gt.set(0, fn * (wt.r(0) + wt.r(4)), fn * (-wt.i(0) + wt.i(4)));
460  gt.set(1, fn * (-wt.r(1) + wt.r(3)), fn * (-wt.i(1) - wt.i(3)));
461  gt.set(3, fn * (wt.r(1) - wt.r(3)), fn * (-wt.i(1) - wt.i(3)));
462  gt.set(4, fn * (wt.r(0) + wt.r(4)), fn * (wt.i(0) - wt.i(4)));
463 
464  Mat_SU_N wt2(Nc);
465  wt2 = gt * wt;
466  W.set_mat(site, 0, wt2);
467 
468  Mat_SU_N gt2(Nc);
469  gt2 = G.mat(site, 0);
470  wt2 = gt * gt2;
471  G.set_mat(site, 0, wt2);
472  }
473 }
474 
475 
476 //====================================================================
478 {
479  const int Nc = CommonParameters::Nc();
480  const int Nvol2 = W.nvol();
481 
482  for (int site = 0; site < Nvol2; ++site) {
483  Mat_SU_N wt(Nc);
484  wt = W.mat(site, 0);
485 
486  Mat_SU_N gt(Nc);
487  gt.set(1, 0.0, 0.0);
488  gt.set(3, 0.0, 0.0);
489  gt.set(4, 1.0, 0.0);
490  gt.set(5, 0.0, 0.0);
491  gt.set(7, 0.0, 0.0);
492 
493  double fn1 = (wt.r(8) + wt.r(0)) * (wt.r(8) + wt.r(0))
494  + (wt.i(8) - wt.i(0)) * (wt.i(8) - wt.i(0));
495  double fn2 = (wt.r(2) - wt.r(6)) * (wt.r(2) - wt.r(6))
496  + (wt.i(2) + wt.i(6)) * (wt.i(2) + wt.i(6));
497  double fn = 1.0 / sqrt(fn1 + fn2);
498 
499  gt.set(0, fn * (wt.r(8) + wt.r(0)), fn * (wt.i(8) - wt.i(0)));
500  gt.set(2, fn * (wt.r(6) - wt.r(2)), fn * (-wt.i(6) - wt.i(2)));
501  gt.set(6, fn * (-wt.r(6) + wt.r(2)), fn * (-wt.i(6) - wt.i(2)));
502  gt.set(8, fn * (wt.r(8) + wt.r(0)), fn * (-wt.i(8) + wt.i(0)));
503 
504  Mat_SU_N wt2(Nc);
505  wt2 = gt * wt;
506  W.set_mat(site, 0, wt2);
507 
508  Mat_SU_N gt2(Nc);
509  gt2 = G.mat(site, 0);
510  wt2 = gt * gt2;
511  G.set_mat(site, 0, wt2);
512  }
513 }
514 
515 
516 //====================================================================
518 {
519  const int Nc = CommonParameters::Nc();
520  const int Nvol2 = W.nvol();
521 
522  Mat_SU_N gt2(Nc), wt2(Nc);
523 
524  for (int site = 0; site < Nvol2; ++site) {
525  Mat_SU_N wt(Nc);
526  wt = W.mat(site, 0);
527 
528  Mat_SU_N gt(Nc);
529  gt.set(0, 1.0, 0.0);
530  gt.set(1, 0.0, 0.0);
531  gt.set(2, 0.0, 0.0);
532  gt.set(3, 0.0, 0.0);
533  gt.set(6, 0.0, 0.0);
534 
535  double fn1 = (wt.r(4) + wt.r(8)) * (wt.r(4) + wt.r(8))
536  + (wt.i(4) - wt.i(8)) * (wt.i(4) - wt.i(8));
537  double fn2 = (wt.r(7) - wt.r(5)) * (wt.r(7) - wt.r(5))
538  + (wt.i(7) + wt.i(5)) * (wt.i(7) + wt.i(5));
539  double fn = 1.0 / sqrt(fn1 + fn2);
540 
541  gt.set(4, fn * (wt.r(4) + wt.r(8)), fn * (-wt.i(4) + wt.i(8)));
542  gt.set(5, fn * (-wt.r(5) + wt.r(7)), fn * (-wt.i(5) - wt.i(7)));
543  gt.set(7, fn * (wt.r(5) - wt.r(7)), fn * (-wt.i(5) - wt.i(7)));
544  gt.set(8, fn * (wt.r(4) + wt.r(8)), fn * (wt.i(4) - wt.i(8)));
545 
546  Mat_SU_N wt2(Nc);
547  wt2 = gt * wt;
548  W.set_mat(site, 0, wt2);
549 
550  Mat_SU_N gt2(Nc);
551  gt2 = G.mat(site, 0);
552  wt2 = gt * gt2;
553  G.set_mat(site, 0, wt2);
554  }
555 }
556 
557 
558 //====================================================================
559 //============================================================END=====
GaugeFixing_Landau::fix
void fix(Field_G &Ufix, const Field_G &Uorg)
Definition: gaugeFixing_Landau.cpp:108
GaugeFixing_Landau::calc_SG
void calc_SG(double &sg, double &Fval, const Field_G &Ue, const Field_G &Uo)
Definition: gaugeFixing_Landau.cpp:278
gaugeFixing_Landau.h
GaugeFixing_Landau::gfix_step
void gfix_step(Field_G &Ue, Field_G &Uo, const double wp)
one step of gauge fixing with overrelaxation parameter wp.
Definition: gaugeFixing_Landau.cpp:188
ShiftField_eo::forward_h
void forward_h(Field &, const Field &, const int mu, const int ieo)
Definition: shiftField_eo.cpp:109
GaugeFixing_Landau::gauge_trans_eo
void gauge_trans_eo(Field_G &Ue, Field_G &Uo, const Field_G &Geo, const int Ieo)
Definition: gaugeFixing_Landau.cpp:240
Field::setpart_ex
void setpart_ex(int ex, const Field &w, int exw)
Definition: field.h:201
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
GaugeFixing_Landau::m_Nmeas
int m_Nmeas
Definition: gaugeFixing_Landau.h:74
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
Parameters
Class for parameters.
Definition: parameters.h:46
GaugeFixing_Landau::m_Nreset
int m_Nreset
Definition: gaugeFixing_Landau.h:75
Field_G::mat_dag
Mat_SU_N mat_dag(const int site, const int mn=0) const
Definition: field_G.h:127
Staple_lex::plaquette
double plaquette(const Field_G &)
calculates plaquette value.
Definition: staple_lex.cpp:89
GaugeFixing_Landau::maxTr2
void maxTr2(Field_G &, Field_G &)
Definition: gaugeFixing_Landau.cpp:477
Parameters::set_double
void set_double(const string &key, const double value)
Definition: parameters.cpp:33
GaugeFixing_Landau::m_Niter
int m_Niter
Definition: gaugeFixing_Landau.h:72
GaugeFixing_Landau::maxTr
void maxTr(Field_G &, Field_G &)
Definition: gaugeFixing_Landau.cpp:412
Bridge::BridgeIO::detailed
void detailed(const char *format,...)
Definition: bridgeIO.cpp:219
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
GaugeFixing_Landau::m_index
Index_eo m_index
Definition: gaugeFixing_Landau.h:80
SU_N::Mat_SU_N::reunit
Mat_SU_N & reunit()
Definition: mat_SU_N.h:72
Field_G::add_mat
void add_mat(const int site, const int mn, const Mat_SU_N &U)
Definition: field_G.h:168
GaugeFixing_Landau::m_shift
ShiftField_eo m_shift
Definition: gaugeFixing_Landau.h:82
GaugeFixing_Landau::class_name
static const std::string class_name
Definition: gaugeFixing_Landau.h:67
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
GaugeFixing_Landau::maxTr1
void maxTr1(Field_G &, Field_G &)
Definition: gaugeFixing_Landau.cpp:437
GaugeFixing_Landau::m_wp
double m_wp
Definition: gaugeFixing_Landau.h:77
Index_eo::reverseField
void reverseField(Field &lex, const Field &eo)
Definition: index_eo.cpp:197
SU_N::Mat_SU_N::set
void set(int c, const double &re, const double &im)
Definition: mat_SU_N.h:137
Field::norm2
double norm2() const
Definition: field.cpp:113
GaugeFixing_Landau::maxTr3
void maxTr3(Field_G &, Field_G &)
Definition: gaugeFixing_Landau.cpp:517
GaugeFixing_Landau::calc_DLT
void calc_DLT(Field_G &Weo, const Field_G &Ue, const Field_G &Uo, const int Ieo)
Definition: gaugeFixing_Landau.cpp:313
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
CommonParameters::Nc
static int Nc()
Definition: commonParameters.h:115
Field::addpart_ex
void addpart_ex(int ex, const Field &w, int exw)
Definition: field.h:208
Index_eo::convertField
void convertField(Field &eo, const Field &lex)
Definition: index_eo.cpp:90
GaugeFixing_Landau::m_Enorm
double m_Enorm
Definition: gaugeFixing_Landau.h:76
SU_N::Mat_SU_N
Definition: mat_SU_N.h:36
staple_lex.h
ShiftField_eo::backward_h
void backward_h(Field &, const Field &, const int mu, const int ieo)
Definition: shiftField_eo.cpp:88
ParameterCheck::square_non_zero
int square_non_zero(const double v)
Definition: parameterCheck.cpp:43
GaugeFixing_Landau::get_parameters
void get_parameters(Parameters &params) const
Definition: gaugeFixing_Landau.cpp:56
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
GaugeFixing_Landau::set_parameters
void set_parameters(const Parameters &params)
Definition: gaugeFixing_Landau.cpp:27
Field::nvol
int nvol() const
Definition: field.h:127
CommonParameters::NPE
static int NPE()
Definition: commonParameters.h:101
GaugeFixing_Landau::m_rand
RandomNumbers * m_rand
Definition: gaugeFixing_Landau.h:79
GaugeFixing_Landau::m_vl
Bridge::VerboseLevel m_vl
Definition: gaugeFixing_Landau.h:70
SU_N::Mat_SU_N::set_random
Mat_SU_N & set_random(RandomNumbers *rand)
Definition: mat_SU_N.h:77
Staple_lex
Staple construction.
Definition: staple_lex.h:39
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:133
mult_Field_Gnn
void mult_Field_Gnn(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
Definition: field_G_imp.cpp:95
ParameterCheck::non_zero
int non_zero(const double v)
Definition: parameterCheck.cpp:32
GaugeFixing_Landau::m_Nnaive
int m_Nnaive
Definition: gaugeFixing_Landau.h:73
SU_N::Mat_SU_N::i
double i(int c) const
Definition: mat_SU_N.h:116
Parameters::set_int
void set_int(const string &key, const int value)
Definition: parameters.cpp:36
scal
void scal(Field &x, const double a)
scal(x, a): x = a * x
Definition: field.cpp:261
Parameters::fetch_string
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:378
Parameters::fetch_double
int fetch_double(const string &key, double &value) const
Definition: parameters.cpp:327
GaugeFixing_Landau::set_randomGaugeTrans
void set_randomGaugeTrans(Field_G &Geo)
Definition: gaugeFixing_Landau.cpp:222
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:180
SU_N::ReTr
double ReTr(const Mat_SU_N &m)
Definition: mat_SU_N.h:534
Field_G::mat
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:114
Field_G
SU(N) gauge field.
Definition: field_G.h:38
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
GaugeFixing_Landau::calc_W
void calc_W(Field_G &Weo, const Field_G &Ue, const Field_G &Uo, const int Ieo)
Definition: gaugeFixing_Landau.cpp:360
mult_Field_Gnd
void mult_Field_Gnd(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
Definition: field_G_imp.cpp:173
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:512
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:154