Bridge++  Ver.2.1.3
force_F_Clover_SF.cpp
Go to the documentation of this file.
1 
13 
14 const std::string Force_F_Clover_SF::class_name = "Force_F_Clover_SF";
15 
16 //====================================================================
18 {
20 
21  std::string vlevel;
22  if (!params.fetch_string("verbose_level", vlevel)) {
23  m_vl = vout.set_verbose_level(vlevel);
24  } else {
26  }
27 
28  vout.general(m_vl, "%s: construction\n", class_name.c_str());
30 
31  std::string repr;
32  if (!params.fetch_string("gamma_matrix_type", repr)) {
33  m_repr = repr;
34  } else {
35  m_repr = "Dirac"; // default gamma-matrix type
36  vout.general(m_vl, "gamma_matrix_type is not given: defalt = %s\n",
37  m_repr.c_str());
38  }
39 
40  if ((m_repr != "Dirac") && (m_repr != "Chiral")) {
41  vout.crucial("Error at %s: unsupported gamma-matrix type: %s\n",
42  class_name.c_str(), m_repr.c_str());
43  exit(EXIT_FAILURE);
44  }
45 
46  const int Nvol = CommonParameters::Nvol();
48 
49  m_boundary.resize(m_Ndim);
50 
51  set_parameters_impl(params);
52 
53  m_fopr_c = new Fopr_Clover_SF(params);
54 
55  m_force_w = new Force_F_Wilson_SF(params);
56 
57  m_staple = new Staple_SF();
59 
60  m_shift = new ShiftField_lex();
61 
62  m_eta = new Field_F(Nvol, 1);
63  m_zeta = new Field_F(Nvol, 1);
64 
65  m_eta2 = new Field_F(Nvol, 1);
66  m_eta3 = new Field_F(Nvol, 1);
67  m_zeta1 = new Field_F(Nvol, 1);
68  m_zeta2 = new Field_F(Nvol, 1);
69 
70  m_Cud = new Field_G(Nvol, m_Ndim * m_Ndim);
71 
72  m_force2 = new Field_G(Nvol, m_Ndim);
73 
74  m_force1 = new Field_G(Nvol, 1);
75 
76  m_Ut1 = new Field_G(Nvol, 1);
77  m_Ut2 = new Field_G(Nvol, 1);
78  m_Umu = new Field_G(Nvol, 1);
79  m_Unu = new Field_G(Nvol, 1);
80 
81  m_vt1 = new Field_F(Nvol, 1);
82  m_vt2 = new Field_F(Nvol, 1);
83  m_vt3 = new Field_F(Nvol, 1);
84  m_vt4 = new Field_F(Nvol, 1);
85 
87  vout.general(m_vl, "%s: construction finished.\n",
88  class_name.c_str());
89 
90 }
91 
92 //====================================================================
94 {
96 
98 
99  vout.general(m_vl, "%s: construction (obsolete)\n",
100  class_name.c_str());
102 
103  m_repr = "Dirac"; // default gamma-matrix type
104 
105  const int Nvol = CommonParameters::Nvol();
107 
108  m_boundary.resize(m_Ndim);
109 
110  m_fopr_c = new Fopr_Clover_SF;
111 
113 
114  m_staple = new Staple_SF();
116 
117  m_shift = new ShiftField_lex();
118 
119  m_eta = new Field_F(Nvol, 1);
120  m_zeta = new Field_F(Nvol, 1);
121 
122  m_eta2 = new Field_F(Nvol, 1);
123  m_eta3 = new Field_F(Nvol, 1);
124  m_zeta1 = new Field_F(Nvol, 1);
125  m_zeta2 = new Field_F(Nvol, 1);
126 
127  m_Cud = new Field_G(Nvol, m_Ndim * m_Ndim);
128 
129  m_force2 = new Field_G(Nvol, m_Ndim);
130 
131  m_force1 = new Field_G(Nvol, 1);
132 
133  m_Ut1 = new Field_G(Nvol, 1);
134  m_Ut2 = new Field_G(Nvol, 1);
135  m_Umu = new Field_G(Nvol, 1);
136  m_Unu = new Field_G(Nvol, 1);
137 
138  m_vt1 = new Field_F(Nvol, 1);
139  m_vt2 = new Field_F(Nvol, 1);
140  m_vt3 = new Field_F(Nvol, 1);
141  m_vt4 = new Field_F(Nvol, 1);
142 
144  vout.general(m_vl, "%s: construction finished.\n",
145  class_name.c_str());
146 
147 }
148 
149 //====================================================================
151 {
152  delete m_force_w;
153  delete m_fopr_c;
154 
155  delete m_staple;
156  delete m_shift;
157 
158  delete m_eta;
159  delete m_zeta;
160 
161  delete m_eta2;
162  delete m_eta3;
163  delete m_zeta1;
164  delete m_zeta2;
165 
166  delete m_Cud;
167  delete m_force1;
168  delete m_force2;
169 
170  delete m_Ut1;
171  delete m_Ut2;
172  delete m_Umu;
173  delete m_Unu;
174 
175  delete m_vt1;
176  delete m_vt2;
177  delete m_vt3;
178  delete m_vt4;
179 }
180 
181 //====================================================================
183 {
184  set_parameters_impl(params);
185 
186  //- propagate parameters
187  m_fopr_c->set_parameters(params);
188  m_force_w->set_parameters(params);
189 }
190 
191 //====================================================================
193 {
194  std::string vlevel;
195  if (!params.fetch_string("verbose_level", vlevel)) {
196  m_vl = vout.set_verbose_level(vlevel);
197  }
198 
199  //- fetch and check input parameters
200  double kappa, cSW;
201  std::vector<int> bc;
202  std::vector<double> phi, phipr;
203 
204  int err = 0;
205  err += params.fetch_double("hopping_parameter", kappa);
206  err += params.fetch_double("clover_coefficient", cSW);
207  err += params.fetch_int_vector("boundary_condition", bc);
208  err += params.fetch_double_vector("phi", phi);
209  err += params.fetch_double_vector("phipr", phipr);
210 
211  if (err) {
212  vout.crucial(m_vl, "Error at %s: input parameter not found.\n",
213  class_name.c_str());
214  exit(EXIT_FAILURE);
215  }
216 
217  set_parameters_impl(kappa, cSW, bc, phi, phipr);
218 
219 }
220 
221 
222 //====================================================================
223 void Force_F_Clover_SF::set_parameters(const double kappa,
224  const double cSW,
225  const std::vector<int> bc,
226  const std::vector<double> phi,
227  const std::vector<double> phipr)
228 {
229  set_parameters_impl(kappa, cSW, bc, phi, phipr);
230 
231  //- propagate parameters
234 
235 }
236 
237 //====================================================================
239  const double kappa,
240  const double cSW,
241  const std::vector<int> bc,
242  const std::vector<double> phi,
243  const std::vector<double> phipr)
244 {
245 #pragma omp barrier
246 
247  assert(bc.size() == m_Ndim);
248 
249  int ith = ThreadManager::get_thread_id();
250  if (ith == 0) {
251  m_kappa = kappa;
252  m_cSW = cSW;
253  m_boundary = bc;
254 
255  m_phi.resize(3);
256  m_phipr.resize(3);
257  for (int i = 0; i < 3; ++i) {
258  m_phi[i] = phi[i];
259  m_phipr[i] = phipr[i];
260  }
261 #pragma omp barrier
262 
263  const int Lx = CommonParameters::Lx();
264  double Lx_inv = 1.0 / double(Lx);
265  double c0r = cos(phi[0] * Lx_inv);
266  double c0i = sin(phi[0] * Lx_inv);
267  double c1r = cos(phi[1] * Lx_inv);
268  double c1i = sin(phi[1] * Lx_inv);
269  double c2r = cos(phi[2] * Lx_inv);
270  double c2i = sin(phi[2] * Lx_inv);
271  m_wk.zero();
272  m_wk.set(0, 0, c0r, c0i);
273  m_wk.set(1, 1, c1r, c1i);
274  m_wk.set(2, 2, c2r, c2i);
275 
276  c0r = cos(phipr[0] * Lx_inv);
277  c0i = sin(phipr[0] * Lx_inv);
278  c1r = cos(phipr[1] * Lx_inv);
279  c1i = sin(phipr[1] * Lx_inv);
280  c2r = cos(phipr[2] * Lx_inv);
281  c2i = sin(phipr[2] * Lx_inv);
282 
283  m_wkpr.zero();
284  m_wkpr.set(0, 0, c0r, c0i);
285  m_wkpr.set(1, 1, c1r, c1i);
286  m_wkpr.set(2, 2, c2r, c2i);
287  }
288 #pragma omp barrier
289 
290  vout.general(m_vl, "%s: parameters\n", class_name.c_str());
291  vout.general(m_vl, " kappa = %12.8f\n", m_kappa);
292  vout.general(m_vl, " cSW = %12.8f\n", m_cSW);
293  for (int mu = 0; mu < m_Ndim; ++mu) {
294  vout.general(m_vl, " boundary[%d] = %2d\n", mu, m_boundary[mu]);
295  }
296 
297  vout.general(m_vl, " phi1 = %12.6f\n", m_phi[0]);
298  vout.general(m_vl, " phi2 = %12.6f\n", m_phi[1]);
299  vout.general(m_vl, " phi3 = %12.6f\n", m_phi[2]);
300  vout.general(m_vl, " phipr1= %12.6f\n", m_phipr[0]);
301  vout.general(m_vl, " phipr2= %12.6f\n", m_phipr[1]);
302  vout.general(m_vl, " phipr3= %12.6f\n", m_phipr[2]);
303 
304 }
305 
306 //====================================================================
308 {
309  params.set_double("hopping_parameter", m_kappa);
310  params.set_double("clover_coefficient", m_cSW);
311  params.set_int_vector("boundary_condition", m_boundary);
312  params.set_double_vector("phi", m_phi);
313  params.set_double_vector("phipr", m_phipr);
314  params.set_string("gamma_matrix_type", m_repr);
315 
316  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
317 }
318 
319 
320 //====================================================================
322 {
323  int ith = ThreadManager::get_thread_id();
324  if (ith == 0) m_U = (Field_G *)U;
325 #pragma omp barrier
326 
328  m_force_w->set_config(U);
329  set_component();
330 
331 }
332 
333 //====================================================================
334 void Force_F_Clover_SF::force_udiv(Field& force_, const Field& eta_)
335 {
336 #pragma omp barrier
337 
338  copy(*m_eta, eta_);
339 #pragma omp barrier
340 
341  m_fopr_c->set_mode("H");
342  m_fopr_c->mult(*m_zeta, *m_eta);
343 
345 
347 #pragma omp barrier
348 
349  copy(force_, *m_force2);
350 #pragma omp barrier
351 
353 
355 #pragma omp barrier
356 
357  axpy(force_, 1.0, *m_force2);
358 #pragma omp barrier
359 
360 }
361 
362 
363 //====================================================================
364 void Force_F_Clover_SF::force_udiv1(Field& force_, const Field& zeta_, const Field& eta_)
365 {
366 #pragma omp barrier
367 
368  copy(*m_zeta, zeta_);
369  copy(*m_eta, eta_);
370 #pragma omp barrier
371 
373 
374  copy(force_, *m_force2);
375 #pragma omp barrier
376 }
377 
378 
379 //====================================================================
381  const Field_F& zeta,
382  const Field_F& eta)
383 {
384 #pragma omp barrier
385 
386  const int Nc = CommonParameters::Nc();
387  const int Nd = CommonParameters::Nd();
388  const int Nvol = CommonParameters::Nvol();
389  const int Ndim = CommonParameters::Ndim();
390 
391  force.set(0.0);
392 #pragma omp barrier
393 
394  copy(*m_zeta1, zeta);
395 #pragma omp barrier
396 
398 #pragma omp barrier
399 
400  m_force_w->force_udiv1(force, zeta, eta);
401 
402  m_fopr_c->mult_gm5(*m_eta2, eta);
404 #pragma omp barrier
405 
406  double fac = -m_kappa * m_cSW / 8.0;
407 
408  for (int mu = 0; mu < Ndim; ++mu) {
409  for (int nu = 0; nu < Ndim; ++nu) {
410  if (nu == mu) continue;
411 
412  m_fopr_c->mult_isigma(*m_eta3, *m_eta2, mu, nu);
413 
414  copy(*m_Umu, 0, *m_U, mu);
415  copy(*m_Unu, 0, *m_U, nu);
416 #pragma omp barrier
417 
418  if (mu != 3) Field_SF::set_boundary_wk(*m_Umu, m_wk);
419  if (nu != 3) Field_SF::set_boundary_wk(*m_Unu, m_wk);
420 #pragma omp barrier
421 
422  // R(1) and R(5)
423  mult_Field_Gd(*m_vt1, 0, *m_Cud, index_dir(mu, nu), *m_eta3, 0);
425  axpy(force, mu, fac, *m_force1, 0);
426 #pragma omp barrier
427 
428  // R(2)
429  mult_Field_Gd(*m_vt3, 0, *m_Umu, 0, *m_eta3, 0);
430 
431  m_shift->backward(*m_vt1, *m_vt3, nu);
432 
433  m_shift->backward(*m_vt2, *m_zeta1, nu);
434 
435  m_shift->backward(*m_Ut1, *m_Unu, mu);
436 
437  if (mu == 3){
439 #pragma omp barrier
440  }
441 
442  mult_Field_Gn(*m_vt3, 0, *m_Ut1, 0, *m_vt1, 0);
443  mult_Field_Gn(*m_vt4, 0, *m_Unu, 0, *m_vt2, 0);
445  axpy(force, mu, fac, *m_force1, 0);
446 #pragma omp barrier
447 
448  // R(4) and R(8)
449  m_shift->backward(*m_vt1, *m_eta3, mu);
450  m_shift->backward(*m_zeta2, *m_zeta1, mu);
451  mult_Field_Gn(*m_vt4, 0, *m_Cud, index_dir(mu, nu), *m_zeta2, 0);
453  axpy(force, mu, fac, *m_force1, 0);
454 #pragma omp barrier
455 
456  // R(3)
457  m_shift->backward(*m_vt1, *m_eta3, nu);
458  mult_Field_Gn(*m_vt3, 0, *m_Unu, 0, *m_vt1, 0);
459  mult_Field_Gn(*m_vt4, 0, *m_Umu, 0, *m_zeta2, 0);
460  m_shift->backward(*m_vt1, *m_vt3, mu);
461  m_shift->backward(*m_vt2, *m_vt4, nu);
462  mult_Field_Gn(*m_vt4, 0, *m_Unu, 0, *m_vt2, 0);
464  axpy(force, mu, fac, *m_force1, 0);
465 #pragma omp barrier
466 
467  // R(6)
468  m_shift->backward(*m_Ut1, *m_Unu, mu);
469  if (mu == 3){
471 #pragma omp barrier
472  }
473  mult_Field_Gdd(*m_Ut2, 0, *m_Ut1, 0, *m_Umu, 0);
474  mult_Field_Gn(*m_vt1, 0, *m_Ut2, 0, *m_eta3, 0);
475  mult_Field_Gd(*m_vt2, 0, *m_Unu, 0, *m_zeta1, 0);
476  m_shift->forward(*m_vt3, *m_vt1, nu);
477  m_shift->forward(*m_vt4, *m_vt2, nu);
479  axpy(force, mu, -fac, *m_force1, 0);
480 #pragma omp barrier
481 
482  // R(7)
483  mult_Field_Gd(*m_vt1, 0, *m_Unu, 0, *m_eta3, 0);
484  mult_Field_Gn(*m_vt2, 0, *m_Umu, 0, *m_zeta2, 0);
485  m_shift->backward(*m_vt3, *m_vt1, mu);
486  m_shift->forward(*m_vt1, *m_vt3, nu);
487  mult_Field_Gd(*m_vt4, 0, *m_Unu, 0, *m_vt2, 0);
488  m_shift->forward(*m_vt2, *m_vt4, nu);
490  axpy(force, mu, -fac, *m_force1, 0);
491 #pragma omp barrier
492  }
493  }
494 }
495 
496 
497 //====================================================================
499 {
500 #pragma omp barrier
501 
502  for (int mu = 0; mu < m_Ndim; ++mu) {
503  for (int nu = 0; nu < m_Ndim; ++nu) {
504  if (nu == mu) continue;
505 
506  m_staple->upper(*m_Ut1, *m_U, mu, nu);
507  copy(*m_Cud, index_dir(mu, nu), *m_Ut1, 0);
508 #pragma omp barrier
509 
510  m_staple->lower(*m_Ut1, *m_U, mu, nu);
511  axpy(*m_Cud, index_dir(mu, nu), -1.0, *m_Ut1, 0);
512 #pragma omp barrier
513  }
514  }
515 
516 }
517 
518 //====================================================================
520 {
521 #pragma omp barrier
522 
523  int Nc = CommonParameters::Nc();
524  int Nd = CommonParameters::Nd();
525  int Nvol = CommonParameters::Nvol();
526  int Svol = Nvol / CommonParameters::Nt();
527  int Nc2 = 2 * Nc;
528 
529  int ith, nth, is, ns;
530  set_threadtask(ith, nth, is, ns, Svol);
531 
532  if (Communicator::ipe(3) == 0) {
533  for (int site = is; site < ns; ++site) {
534  for (int s = 0; s < Nd; ++s) {
535  for (int cc = 0; cc < Nc2; ++cc) {
536  f.set(cc + Nc2 * s, site, 0, 0.0);
537  }
538  }
539  }
540  }
541 
542 #pragma omp barrier
543 }
544 
545 
546 //============================================================END=====
Force_F_Clover_SF::m_eta3
Field_F * m_eta3
Definition: force_F_Clover_SF.h:64
Force_F_Clover_SF::m_Ut2
Field_G * m_Ut2
Definition: force_F_Clover_SF.h:74
Fopr_Clover_SF::set_parameters
void set_parameters(const Parameters &params)
sets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Clover_SF.cpp:202
Field_SF::set_boundary_wkpr
void set_boundary_wkpr(Field_G &u, const Mat_SU_N &wkpr)
Definition: field_SF.cpp:63
Force_F_Clover_SF::force_udiv
void force_udiv(Field &force, const Field &eta)
For recursive calculation of smeared force.
Definition: force_F_Clover_SF.cpp:334
Force_F_Clover_SF::m_cSW
double m_cSW
clover coefficient
Definition: force_F_Clover_SF.h:42
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
Staple_SF::set_parameters
void set_parameters(const Parameters &params)
Definition: staple_SF.cpp:112
ShiftField_lex::forward
void forward(Field &, const Field &, const int mu)
Definition: shiftField_lex.cpp:79
Force_F_Clover_SF::m_zeta2
Field_F * m_zeta2
Definition: force_F_Clover_SF.h:66
Force_F_Clover_SF::force_udiv1
void force_udiv1(Field &force, const Field &zeta, const Field &eta)
For recursive calculation of smeared force.
Definition: force_F_Clover_SF.cpp:364
Force_F_Clover_SF::set_config
void set_config(Field *U)
Setting gauge configuration.
Definition: force_F_Clover_SF.cpp:321
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
Parameters::set_double
void set_double(const string &key, const double value)
Definition: parameters.cpp:33
Force_F_Clover_SF::m_eta2
Field_F * m_eta2
Definition: force_F_Clover_SF.h:63
Bridge::BridgeIO::decrease_indent
void decrease_indent()
Definition: bridgeIO.cpp:518
Force_F_Clover_SF::m_force2
Field_G * m_force2
Definition: force_F_Clover_SF.h:68
Force_F_Clover_SF::m_shift
ShiftField_lex * m_shift
Definition: force_F_Clover_SF.h:52
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.cpp:508
Force_F_Clover_SF::m_repr
std::string m_repr
gamma matrix representation
Definition: force_F_Clover_SF.h:44
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
Field_SF::set_boundary_wk
void set_boundary_wk(Field_G &u, const Mat_SU_N &wk)
Definition: field_SF.cpp:32
Force_F_Clover_SF::m_Unu
Field_G * m_Unu
Definition: force_F_Clover_SF.h:76
Fopr_Clover_SF::mult_isigma
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
Definition: fopr_Clover_SF.cpp:489
Force_F_Clover_SF::m_Umu
Field_G * m_Umu
Definition: force_F_Clover_SF.h:75
axpy
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
Definition: field.cpp:381
Fopr_Clover_SF::set_config
void set_config(Field *U)
setup configuration (Note that this method is not multi-threaded).
Definition: fopr_Clover_SF.cpp:329
mult_Field_Gd
void mult_Field_Gd(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2)
Definition: field_F_imp.cpp:76
Staple_SF
Staple construction.
Definition: staple_SF.h:32
Parameters::set_double_vector
void set_double_vector(const string &key, const vector< double > &value)
Definition: parameters.cpp:42
Force_F_Clover_SF::index_dir
int index_dir(const int mu, const int nu)
Definition: force_F_Clover_SF.h:142
Force_F_Clover_SF::m_staple
Staple_SF * m_staple
Definition: force_F_Clover_SF.h:50
Force_F_Clover_SF::m_wkpr
Mat_SU_N m_wkpr
SF boundary condition at t=Nt.
Definition: force_F_Clover_SF.h:58
Force_F_Clover_SF::init
void init()
initializer.
Definition: force_F_Clover_SF.cpp:93
Staple_SF::upper
void upper(Field_G &, const Field_G &, const int, const int)
Definition: staple_SF.cpp:1039
Fopr_Clover_SF
Clover fermion operator.
Definition: fopr_Clover_SF.h:43
copy
void copy(Field &y, const Field &x)
copy(y, x): y = x
Definition: field.cpp:213
tensorProd_Field_F
void tensorProd_Field_F(Field_G &u, const Field_F &v1, const Field_F &v2)
Definition: tensorProd.cpp:35
Force_F_Clover_SF::m_fopr_c
Fopr_Clover_SF * m_fopr_c
Definition: force_F_Clover_SF.h:47
Force_F_Clover_SF::m_eta
Field_F * m_eta
Definition: force_F_Clover_SF.h:60
Force_F_Clover_SF::m_zeta1
Field_F * m_zeta1
Definition: force_F_Clover_SF.h:65
SU_N::Mat_SU_N::set
void set(int c, const double &re, const double &im)
Definition: mat_SU_N.h:137
Force_F_Clover_SF::m_force1
Field_G * m_force1
Definition: force_F_Clover_SF.h:71
Force_F_Wilson_SF::force_udiv1
void force_udiv1(Field &force, const Field &zeta, const Field &eta)
Definition: force_F_Wilson_SF.cpp:236
Force_F_Wilson_SF::set_config
void set_config(Field *U)
sets verbose level.
Definition: force_F_Wilson_SF.cpp:196
CommonParameters::Lx
static int Lx()
Definition: commonParameters.h:91
CommonParameters::Nc
static int Nc()
Definition: commonParameters.h:115
Force_F_Clover_SF::m_zeta
Field_F * m_zeta
Definition: force_F_Clover_SF.h:61
SU_N::Mat_SU_N::zero
Mat_SU_N & zero()
Definition: mat_SU_N.h:429
Fopr_Clover_SF::mult_gm5
void mult_gm5(Field &v, const Field &w)
multiplies gamma_5 matrix.
Definition: fopr_Clover_SF.h:120
Force_F_Wilson_SF::set_parameters
void set_parameters(const Parameters &params)
sets parameters by a Parameter object: to be implemented in a subclass.
Definition: force_F_Wilson_SF.cpp:116
CommonParameters::Nt
static int Nt()
Definition: commonParameters.h:108
Force_F_Clover_SF::m_vt4
Field_F * m_vt4
Definition: force_F_Clover_SF.h:81
Parameters::fetch_int_vector
int fetch_int_vector(const string &key, vector< int > &value) const
Definition: parameters.cpp:429
Fopr_Clover_SF::set_mode
void set_mode(const std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Definition: fopr_Clover_SF.cpp:348
Force_F_Clover_SF::m_Ut1
Field_G * m_Ut1
Definition: force_F_Clover_SF.h:73
Force_F_Clover_SF::m_vt3
Field_F * m_vt3
Definition: force_F_Clover_SF.h:80
Force_F_Clover_SF::tidyup
void tidyup()
finalizer.
Definition: force_F_Clover_SF.cpp:150
Force_F_Clover_SF::class_name
static const std::string class_name
Definition: force_F_Clover_SF.h:37
threadManager.h
Fopr_Clover_SF::mult
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field.
Definition: fopr_Clover_SF.cpp:360
Parameters::set_int_vector
void set_int_vector(const string &key, const vector< int > &value)
Definition: parameters.cpp:45
Force_F_Clover_SF::m_Cud
Field_G * m_Cud
for force calculation
Definition: force_F_Clover_SF.h:70
ShiftField_lex
Methods to shift a field in the lexical site index.
Definition: shiftField_lex.h:39
Force_F_Clover_SF::set_parameters
void set_parameters(const Parameters &params)
sets parameters by a Parameter object: to be implemented in a subclass.
Definition: force_F_Clover_SF.cpp:182
Field_SF::set_boundary_spatial_link_zero
void set_boundary_spatial_link_zero(Field_G &u)
Definition: field_SF.cpp:151
Force_F_Clover_SF::m_kappa
double m_kappa
hopping parameter
Definition: force_F_Clover_SF.h:41
Force_F_Clover_SF::set_boundary_zero
void set_boundary_zero(Field_F &f)
Definition: force_F_Clover_SF.cpp:519
CommonParameters::Nd
static int Nd()
Definition: commonParameters.h:116
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
Staple_SF::lower
void lower(Field_G &, const Field_G &, const int, const int)
Definition: staple_SF.cpp:1081
AForce_F< Field >::m_U
Field_G * m_U
Gauge configuration.
Definition: aforce_F.h:42
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:195
ShiftField_lex::backward
void backward(Field &, const Field &, const int mu)
Definition: shiftField_lex.cpp:59
Force_F_Clover_SF::m_vt1
Field_F * m_vt1
Definition: force_F_Clover_SF.h:78
mult_Field_Gn
void mult_Field_Gn(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2)
Definition: field_F_imp.cpp:36
mult_Field_Gdd
void mult_Field_Gdd(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:212
Communicator::ipe
static int ipe(const int dir)
logical coordinate of current proc.
Definition: communicator.cpp:105
Force_F_Clover_SF::m_vt2
Field_F * m_vt2
Definition: force_F_Clover_SF.h:79
Parameters::fetch_string
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:378
Field_F
Wilson-type fermion field.
Definition: field_F.h:37
Parameters::fetch_double
int fetch_double(const string &key, double &value) const
Definition: parameters.cpp:327
Force_F_Clover_SF::m_force_w
Force_F_Wilson_SF * m_force_w
Definition: force_F_Clover_SF.h:48
field_thread-inc.h
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:242
Force_F_Clover_SF::get_parameters
void get_parameters(Parameters &params) const
Definition: force_F_Clover_SF.cpp:307
Force_F_Clover_SF::m_wk
Mat_SU_N m_wk
SF boundary condition at t=0.
Definition: force_F_Clover_SF.h:57
force_F_Clover_SF.h
Force_F_Clover_SF::m_phi
std::vector< double > m_phi
SF boundary condition at t=0.
Definition: force_F_Clover_SF.h:54
Field
Container of Field-type object.
Definition: field.h:46
Force_F_Clover_SF::force_udiv1_impl
void force_udiv1_impl(Field_G &force, const Field_F &zeta, const Field_F &eta)
Core implemetation of clover force calculation.
Definition: force_F_Clover_SF.cpp:380
ThreadManager::get_thread_id
static int get_thread_id()
returns thread id.
Definition: threadManager.cpp:253
Field_G
SU(N) gauge field.
Definition: field_G.h:38
Force_F_Clover_SF::set_component
void set_component()
Set building components for force calculation.
Definition: force_F_Clover_SF.cpp:498
Parameters::fetch_double_vector
int fetch_double_vector(const string &key, vector< double > &value) const
Definition: parameters.cpp:410
Force_F_Clover_SF::m_phipr
std::vector< double > m_phipr
SF boundary condition at t=Nt.
Definition: force_F_Clover_SF.h:55
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
Force_F_Clover_SF::m_boundary
std::vector< int > m_boundary
boundary conditions
Definition: force_F_Clover_SF.h:43
Force_F_Wilson_SF
Force for the Wilson quark action with SF BC.
Definition: force_F_Wilson_SF.h:30
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
Force_F_Clover_SF::m_Ndim
int m_Ndim
Definition: force_F_Clover_SF.h:40
Force_F_Clover_SF::set_parameters_impl
void set_parameters_impl(const Parameters &params)
Definition: force_F_Clover_SF.cpp:192
Force_F_Clover_SF::m_vl
Bridge::VerboseLevel m_vl
verbose level
Definition: force_F_Clover_SF.h:45