Bridge++  Ver. 2.0.2
fopr_Wilson_eo_impl.cpp
Go to the documentation of this file.
1 
15 
16 #include "Field/field_thread-inc.h"
17 
18 namespace Org {
19 #ifdef USE_FACTORY_AUTOREGISTER
20  namespace {
21  bool init = Fopr_Wilson_eo::register_factory();
22  }
23 #endif
24 
25  const std::string Fopr_Wilson_eo::class_name = "Org::Fopr_Wilson_eo";
26 
27 //====================================================================
28  void Fopr_Wilson_eo::init(const Parameters& params)
29  {
31 
33 
34  vout.general(m_vl, "%s: construction\n", class_name.c_str());
36 
37  std::string repr;
38  if (!params.fetch_string("gamma_matrix_type", repr)) {
39  m_repr = repr;
40  } else {
41  m_repr = "Dirac"; // default gamma-matrix type
42  vout.general(m_vl, "gamma_matrix_type is not given: defalt = %s\n",
43  m_repr.c_str());
44  }
45 
46  if ((m_repr != "Dirac") && (m_repr != "Chiral")) {
47  vout.crucial("Error at %s: unsupported gamma-matrix type: %s\n",
48  class_name.c_str(), m_repr.c_str());
49  exit(EXIT_FAILURE);
50  }
51 
52  setup();
53 
54  set_parameters(params);
55 
57  vout.general(m_vl, "%s: construction finished.\n",
58  class_name.c_str());
59  }
60 
61 
62 //====================================================================
63  void Fopr_Wilson_eo::init(const std::string repr)
64  {
66 
68 
69  vout.general(m_vl, "%s: construction (obsolete)\n",
70  class_name.c_str());
72 
73  m_repr = repr;
74  if ((m_repr != "Dirac") && (m_repr != "Chiral")) {
75  vout.crucial(m_vl, "Error at %s: input repr is undefined.\n",
76  class_name.c_str());
77  exit(EXIT_FAILURE);
78  }
79 
80  vout.general(m_vl, "gamma-matrix type is set to %s\n",
81  m_repr.c_str());
82 
84  vout.general(m_vl, "%s: construction finished.\n",
85  class_name.c_str());
86 
87  setup();
88  }
89 
90 
91 //====================================================================
93  {
97  m_Nvol2 = m_Nvol / 2;
99 
100  m_boundary.resize(m_Ndim);
101  m_GM.resize(m_Ndim + 1);
102 
103  GammaMatrixSet *gmset = GammaMatrixSet::New(m_repr);
104 
105  m_GM[0] = gmset->get_GM(gmset->GAMMA1);
106  m_GM[1] = gmset->get_GM(gmset->GAMMA2);
107  m_GM[2] = gmset->get_GM(gmset->GAMMA3);
108  m_GM[3] = gmset->get_GM(gmset->GAMMA4);
109  m_GM[4] = gmset->get_GM(gmset->GAMMA5);
110 
111  delete gmset;
112 
113  int NinF = 2 * m_Nc * m_Nd;
114  m_shift = new ShiftField_eo(NinF);
115 
117 
118  m_t1.reset(m_Nvol2, 1);
119  m_t2.reset(m_Nvol2, 1);
120  m_w1.reset(m_Nvol2, 1);
121  m_w2.reset(m_Nvol2, 1);
122  m_v1.reset(m_Nvol2, 1);
123  m_v2.reset(m_Nvol2, 1);
124  m_v3.reset(m_Nvol2, 1);
125  }
126 
127 
128 //====================================================================
130  {
131  delete m_shift;
132  }
133 
134 
135 //====================================================================
137  {
138 #pragma omp barrier
139  int ith = ThreadManager::get_thread_id();
140  std::string vlevel;
141  if (!params.fetch_string("verbose_level", vlevel)) {
142  if (ith == 0) m_vl = vout.set_verbose_level(vlevel);
143  }
144 #pragma omp barrier
145 
146  //- fetch and check input parameters
147  double kappa;
148  std::vector<int> bc;
149 
150  int err = 0;
151  err += params.fetch_double("hopping_parameter", kappa);
152  err += params.fetch_int_vector("boundary_condition", bc);
153 
154  if (err) {
155  vout.crucial(m_vl, "Error at %s: input parameter not found.\n",
156  class_name.c_str());
157  exit(EXIT_FAILURE);
158  }
159 
160  set_parameters(kappa, bc);
161  }
162 
163 
164 //====================================================================
165  void Fopr_Wilson_eo::set_parameters(const double kappa,
166  const std::vector<int> bc)
167  {
168  assert(bc.size() == m_Ndim);
169 
170 #pragma omp barrier
171 
172  int ith = ThreadManager::get_thread_id();
173  if (ith == 0) {
174  m_kappa = kappa;
175  m_boundary = bc;
176  }
177 
178 #pragma omp barrier
179 
180  //- print input parameters
181  vout.general(m_vl, "%s: input parameters\n", class_name.c_str());
182  vout.general(m_vl, " gamma matrix type = %s\n", m_repr.c_str());
183  vout.general(m_vl, " kappa = %12.8f\n", m_kappa);
184  for (int mu = 0; mu < m_Ndim; ++mu) {
185  vout.general(m_vl, " boundary[%d] = %2d\n", mu, m_boundary[mu]);
186  }
187  }
188 
189 
190 //====================================================================
192  {
193  params.set_double("hopping_parameter", m_kappa);
194  params.set_int_vector("boundary_condition", m_boundary);
195  params.set_string("gamma_matrix_type", m_repr);
196 
197  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
198  }
199 
200 
201 //====================================================================
203  {
204 #pragma omp barrier
205 
207 
208 #pragma omp barrier
209  }
210 
211 
212 //====================================================================
213  void Fopr_Wilson_eo::set_mode(const std::string mode)
214  {
215 #pragma omp barrier
216 
217  int ith = ThreadManager::get_thread_id();
218  if (ith == 0) m_mode = mode;
219 
220 #pragma omp barrier
221  }
222 
223 
224 //====================================================================
225  void Fopr_Wilson_eo::mult(Field& v, const Field& w)
226  {
227  if (m_mode == "D") {
228  D(v, w);
229  } else if (m_mode == "Ddag") {
230  Ddag(v, w);
231  } else if (m_mode == "DdagD") {
232  DdagD(v, w);
233  } else if (m_mode == "DDdag") {
234  DDdag(v, w);
235  } else {
236  vout.crucial("Error at %s: irrelevant mult mode = %s.\n",
237  class_name.c_str(), m_mode.c_str());
238  exit(EXIT_FAILURE);
239  }
240  }
241 
242 
243 //====================================================================
245  {
246  if (m_mode == "D") {
247  Ddag(v, w);
248  } else if (m_mode == "Ddag") {
249  D(v, w);
250  } else if (m_mode == "DdagD") {
251  DdagD(v, w);
252  } else if (m_mode == "DDdag") {
253  DDdag(v, w);
254  } else {
255  vout.crucial("Error at %s: irrelevant mult mode = %s.\n",
256  class_name.c_str(), m_mode.c_str());
257  exit(EXIT_FAILURE);
258  }
259  }
260 
261 
262 //=====================================================================
263  void Fopr_Wilson_eo::mult(Field& v, const Field& w,
264  const std::string mode)
265  {
266  if (mode == "Deo") {
267  Meo(v, w, 0);
268  } else if (mode == "Doe") {
269  Meo(v, w, 1);
270  } else {
271  vout.crucial("Error at %s: irrelevant mult mode = %s.\n",
272  class_name.c_str(), mode.c_str());
273  exit(EXIT_FAILURE);
274  }
275  }
276 
277 
278 //=====================================================================
280  const std::string mode)
281  {
282  if (mode == "Deo") {
283  Meo(v, w, 1); // "Doe" for mult
284  } else if (mode == "Doe") {
285  Meo(v, w, 0); // "Deo" for mult
286  } else {
287  vout.crucial("Error at %s: irrelevant mult mode = %s.\n",
288  class_name.c_str(), mode.c_str());
289  exit(EXIT_FAILURE);
290  }
291  }
292 
293 
294 //=====================================================================
296  {
297 #pragma omp barrier
298 
299  copy(m_w1, w);
300  mult_GM(m_w2, m_GM[4], m_w1);
301  copy(v, m_w2);
302 
303 #pragma omp barrier
304  }
305 
306 
307 //====================================================================
308  void Fopr_Wilson_eo::preProp(Field& Be, Field& bo, const Field& b)
309  {
310  int Nin = 2 * m_Nc * m_Nd;
311  assert(Be.check_size(Nin, m_Nvol2, 1));
312  assert(bo.check_size(Nin, m_Nvol2, 1));
313  assert(b.check_size(Nin, m_Nvol, 1));
314 
315 #pragma omp barrier
316 
317  m_index.convertField(m_v1, b, 0);
318  m_index.convertField(bo, b, 1);
319 
320  copy(Be, m_v1);
321 
322  if (m_mode == "D") {
323  Meo(m_v1, bo, 0);
324  } else if (m_mode == "Ddag") {
325  Mdageo(m_v1, bo, 0);
326  } else {
327  vout.crucial("Error at %s: irrelevant preProp mode = %s.\n",
328  class_name.c_str(), m_mode.c_str());
329  exit(EXIT_FAILURE);
330  }
331 
332  axpy(Be, -1.0, m_v1);
333 
334 #pragma omp barrier
335  }
336 
337 
338 //====================================================================
339  void Fopr_Wilson_eo::postProp(Field& x, const Field& xe, const Field& bo)
340  {
341  int Nin = 2 * m_Nc * m_Nd;
342  assert(bo.check_size(Nin, m_Nvol2, 1));
343  assert(xe.check_size(Nin, m_Nvol2, 1));
344  assert(x.check_size(Nin, m_Nvol, 1));
345 
346 #pragma omp barrier
347 
348  copy(m_v2, bo);
349 
350  if (m_mode == "D") {
351  Meo(m_v1, xe, 1);
352  } else if (m_mode == "Ddag") {
353  Mdageo(m_v1, xe, 1);
354  } else {
355  vout.crucial("Error at %s: irrelevant postProp mode = %s.\n",
356  class_name.c_str(), m_mode.c_str());
357  exit(EXIT_FAILURE);
358  }
359 
360  axpy(m_v2, -1.0, m_v1);
361 
362  m_index.reverseField(x, xe, 0);
363  m_index.reverseField(x, m_v2, 1);
364 
365 #pragma omp barrier
366  }
367 
368 
369 //====================================================================
370  void Fopr_Wilson_eo::DdagD(Field& v, const Field& w)
371  {
372  D(m_v3, w);
373  Ddag(v, m_v3);
374  }
375 
376 
377 //====================================================================
378  void Fopr_Wilson_eo::DDdag(Field& v, const Field& w)
379  {
380  Ddag(m_v3, w);
381  D(v, m_v3);
382  }
383 
384 
385 //====================================================================
386  void Fopr_Wilson_eo::H(Field& v, const Field& w)
387  {
388  D(m_v3, w);
389  mult_gm5(v, m_v3);
390  }
391 
392 
393 //====================================================================
394  void Fopr_Wilson_eo::Ddag(Field& v, const Field& w)
395  {
396  assert(w.check_size(2 * m_Nc * m_Nd, m_Nvol2, 1));
397  assert(v.check_size(2 * m_Nc * m_Nd, m_Nvol2, 1));
398 
399 #pragma omp barrier
400 
401  copy(v, w);
402 
403  Mdageo(m_v1, w, 1);
404 
405  Mdageo(m_v2, m_v1, 0);
406 
407  axpy(v, -1.0, m_v2);
408 
409 #pragma omp barrier
410  }
411 
412 
413 //====================================================================
414  void Fopr_Wilson_eo::D(Field& v, const Field& w)
415  {
416  assert(w.check_size(2 * m_Nc * m_Nd, m_Nvol2, 1));
417  assert(v.check_size(2 * m_Nc * m_Nd, m_Nvol2, 1));
418 
419 #pragma omp barrier
420 
421  copy(v, w);
422 
423  Meo(m_v1, w, 1);
424 
425  Meo(m_v2, m_v1, 0);
426 
427  axpy(v, -1.0, m_v2);
428 
429 #pragma omp barrier
430  }
431 
432 
433 //====================================================================
434  void Fopr_Wilson_eo::Meo(Field& v, const Field& w, const int ieo)
435  {
436 #pragma omp barrier
437 
438  copy(m_w1, w);
439  m_w2.set(0.0);
440 
441  for (int mu = 0; mu < m_Ndim; ++mu) {
442  mult_up(mu, m_w2, m_w1, ieo);
443  mult_dn(mu, m_w2, m_w1, ieo);
444  }
445 
446  scal(m_w2, -m_kappa);
447 
448  copy(v, m_w2);
449 
450 #pragma omp barrier
451  }
452 
453 
454 //====================================================================
455  void Fopr_Wilson_eo::Mdageo(Field& v, const Field& w, const int ieo)
456  {
457 #pragma omp barrier
458 
459  copy(m_w2, w);
460  mult_GM(m_w1, m_GM[4], m_w2);
461 
462  m_w2.set(0.0);
463 
464  for (int mu = 0; mu < m_Ndim; ++mu) {
465  mult_up(mu, m_w2, m_w1, ieo);
466  mult_dn(mu, m_w2, m_w1, ieo);
467  }
468 
469  scal(m_w2, -m_kappa);
470 
471  mult_GM(m_w1, m_GM[4], m_w2);
472 
473  copy(v, m_w1);
474 
475 #pragma omp barrier
476  }
477 
478 
479 //=====================================================================
480  void Fopr_Wilson_eo::gm5p(const int mu, Field& v, const Field& w)
481  {
482  vout.crucial(m_vl, "Error at %s: gm5p is undefined.\n",
483  class_name.c_str());
484  exit(EXIT_FAILURE);
485  }
486 
487 
488 //=====================================================================
489  void Fopr_Wilson_eo::mult_up(const int mu, Field_F& v, const Field_F& w,
490  const int ieo)
491  {
492  int ith, nth, is, ns;
493  set_threadtask(ith, nth, is, ns, m_Nvol2);
494 
495  int Nex = w.nex();
496  for (int ex = 0; ex < Nex; ++ex) {
497  copy(m_t2, 0, w, ex);
498 
499  m_shift->backward_h(m_t1, m_t2, m_boundary[mu], mu, ieo);
500 
501  for (int site = is; site < ns; ++site) {
502  for (int id = 0; id < m_Nd; ++id) {
503  Vec_SU_N vec(m_Nc);
504  vec = m_Ueo.mat(site + ieo * m_Nvol2, mu) * m_t1.vec(id, site, 0);
505  m_t2.set_vec(id, site, 0, vec);
506  }
507  }
508 
509  mult_GMproj2(m_t1, -1, m_GM[mu], m_t2);
510 
511  axpy(v, ex, 1.0, m_t1, 0);
512  }
513  }
514 
515 
516 //=====================================================================
517  void Fopr_Wilson_eo::mult_dn(const int mu, Field_F& v, const Field_F& w,
518  const int ieo)
519  {
520  int jeo = 1 - ieo;
521 
522  int ith, nth, is, ns;
523  set_threadtask(ith, nth, is, ns, m_Nvol2);
524 
525  int Nex = w.nex();
526  for (int ex = 0; ex < Nex; ++ex) {
527  for (int site = is; site < ns; ++site) {
528  for (int id = 0; id < m_Nd; ++id) {
529  Vec_SU_N vec(m_Nc);
530  vec = m_Ueo.mat_dag(site + jeo * m_Nvol2, mu)
531  * w.vec(id, site, ex);
532  m_t1.set_vec(id, site, 0, vec);
533  }
534  }
535  m_shift->forward_h(m_t2, m_t1, m_boundary[mu], mu, ieo);
536  mult_GMproj2(m_t1, 1, m_GM[mu], m_t2);
537  axpy(v, ex, 1.0, m_t1, 0);
538  }
539  }
540 
541 
542 //====================================================================
544  {
545  // Counting of floating point operations in giga unit.
546  // this counting is based on the Org-implementation of ver.1.2.0.
547  // Flop count of mult_GMproj2 is different for upward and downward
548  // directions due to the implemetation in Field_F.cpp.
549  // Present counting is based on rev.1130. [10 Sep 2014 H.Matsufuru]
550 
551  const int Nvol = CommonParameters::Nvol();
552  const int NPE = CommonParameters::NPE();
553 
554  const int Nc = m_Nc;
555  const int Nd = m_Nd;
556 
557  int flop_Meo = Nc * Nd * 2 * 8 * (4 * Nc - 1); // #(mult_Field_Gn/d)
558 
559  flop_Meo += Nc * Nd * 2 * (4 * 3 + 4 * 2); // #(mult_GMproj2)
560  flop_Meo += Nc * Nd * 2 * 8; // #(addpart_ex)
561  flop_Meo += Nc * Nd * 2; // #(scal(kappa))
562 
563  const int flop_per_site = 2 * flop_Meo + Nc * Nd * 2 * 2;
564  // #(2*Meo + axpy)
565 
566  double gflop = flop_per_site * ((Nvol / 2) * (NPE / 1.0e+9));
567 
568  if ((m_mode == "DdagD") || (m_mode == "DDdag")) {
569  gflop *= 2;
570  }
571 
572  return gflop;
573  }
574 
575 
576 //====================================================================
577 } // namespace Org
578 //============================================================END=====
GammaMatrixSet
Set of Gamma Matrices: basis class.
Definition: gammaMatrixSet.h:37
Org::Fopr_Wilson_eo::mult_dn
void mult_dn(const int mu, Field_F &, const Field_F &, const int ieo)
Definition: fopr_Wilson_eo_impl.cpp:517
ShiftField_eo::forward_h
void forward_h(Field &, const Field &, const int mu, const int ieo)
Definition: shiftField_eo.cpp:109
Org::Fopr_Wilson_eo::m_v3
Field_F m_v3
working field (used in DdagD, DDdag, H)
Definition: fopr_Wilson_eo_impl.h:66
GammaMatrixSet::GAMMA5
@ GAMMA5
Definition: gammaMatrixSet.h:48
ShiftField_eo
Methods to shift the even-odd field.
Definition: shiftField_eo.h:49
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
Field_F::set_vec
void set_vec(const int s, const int site, const int e, const Vec_SU_N &F)
Definition: field_F.h:134
GammaMatrixSet::GAMMA1
@ GAMMA1
Definition: gammaMatrixSet.h:48
Org::Fopr_Wilson_eo::mult_dag
void mult_dag(Field &, const Field &)
hermitian conjugate of mult(Field&, const Field&).
Definition: fopr_Wilson_eo_impl.cpp:244
CommonParameters::Ndim
static int Ndim()
Definition: commonParameters.h:117
Org::Fopr_Wilson_eo::m_v2
Field_F m_v2
working field (used in D, Ddag)
Definition: fopr_Wilson_eo_impl.h:65
mult_GM
void mult_GM(Field_F &y, const GammaMatrix &gm, const Field_F &x)
gamma matrix multiplication
Definition: field_F_imp.cpp:198
Field_F::vec
Vec_SU_N vec(const int s, const int site, const int e=0) const
Definition: field_F.h:122
Org::Fopr_Wilson_eo::m_Nvol2
int m_Nvol2
Definition: fopr_Wilson_eo_impl.h:54
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
Field_G::mat_dag
Mat_SU_N mat_dag(const int site, const int mn=0) const
Definition: field_G.h:127
Parameters::set_double
void set_double(const string &key, const double value)
Definition: parameters.cpp:33
Org::Fopr_Wilson_eo::flop_count
double flop_count()
this returns the number of floating point operations of Meo.
Definition: fopr_Wilson_eo_impl.cpp:543
Bridge::BridgeIO::decrease_indent
void decrease_indent()
Definition: bridgeIO.h:86
Org::Fopr_Wilson_eo::init
void init(const Parameters &)
initial setup (standard)
Definition: fopr_Wilson_eo_impl.cpp:28
Org::Fopr_Wilson_eo::postProp
void postProp(Field &x, const Field &xe, const Field &bo)
Definition: fopr_Wilson_eo_impl.cpp:339
Org::Fopr_Wilson_eo::DDdag
void DDdag(Field &, const Field &)
Definition: fopr_Wilson_eo_impl.cpp:378
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.h:85
Field::nex
int nex() const
Definition: field.h:128
Field::check_size
bool check_size(const int nin, const int nvol, const int nex) const
checking size parameters. [23 May 2016 H.Matsufuru]
Definition: field.h:135
Org::Fopr_Wilson_eo::class_name
static const std::string class_name
Definition: fopr_Wilson_eo_impl.h:42
Org::Fopr_Wilson_eo::m_boundary
std::vector< int > m_boundary
boundary condition
Definition: fopr_Wilson_eo_impl.h:47
Org::Fopr_Wilson_eo::m_Nd
int m_Nd
Definition: fopr_Wilson_eo_impl.h:55
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
Org::Fopr_Wilson_eo::m_GM
std::vector< GammaMatrix > m_GM
Definition: fopr_Wilson_eo_impl.h:61
Org::Fopr_Wilson_eo::m_repr
std::string m_repr
gamma matrix representation
Definition: fopr_Wilson_eo_impl.h:48
axpy
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
Definition: field.cpp:380
Org::Fopr_Wilson_eo::m_w1
Field_F m_w1
Definition: fopr_Wilson_eo_impl.h:69
Org::Fopr_Wilson_eo::Ddag
void Ddag(Field &, const Field &)
Definition: fopr_Wilson_eo_impl.cpp:394
GammaMatrixSet::GAMMA3
@ GAMMA3
Definition: gammaMatrixSet.h:48
mult_GMproj2
void mult_GMproj2(Field_F &y, const int pm, const GammaMatrix &gm, const Field_F &x)
projection with gamma matrix: (1 \pm gamma)
Definition: field_F_imp.cpp:324
fopr_Wilson_eo_impl.h
Org::Fopr_Wilson_eo::m_t1
Field_F m_t1
Definition: fopr_Wilson_eo_impl.h:68
copy
void copy(Field &y, const Field &x)
copy(y, x): y = x
Definition: field.cpp:212
Org::Fopr_Wilson_eo::tidyup
void tidyup()
final clean-up
Definition: fopr_Wilson_eo_impl.cpp:129
Org::Fopr_Wilson_eo::DdagD
void DdagD(Field &, const Field &)
Definition: fopr_Wilson_eo_impl.cpp:370
GammaMatrixSet::GAMMA4
@ GAMMA4
Definition: gammaMatrixSet.h:48
Index_eo::reverseField
void reverseField(Field &lex, const Field &eo)
Definition: index_eo.cpp:197
CommonParameters::Nc
static int Nc()
Definition: commonParameters.h:115
Org::Fopr_Wilson_eo::H
void H(Field &, const Field &)
Definition: fopr_Wilson_eo_impl.cpp:386
Org::Fopr_Wilson_eo::mult_up
void mult_up(const int mu, Field_F &, const Field_F &, const int ieo)
Definition: fopr_Wilson_eo_impl.cpp:489
Org::Fopr_Wilson_eo::setup
void setup()
common setup in initialization.
Definition: fopr_Wilson_eo_impl.cpp:92
Org::Fopr_Wilson_eo::m_shift
ShiftField_eo * m_shift
even-odd field shifter
Definition: fopr_Wilson_eo_impl.h:59
Index_eo::convertField
void convertField(Field &eo, const Field &lex)
Definition: index_eo.cpp:90
Parameters::fetch_int_vector
int fetch_int_vector(const string &key, vector< int > &value) const
Definition: parameters.cpp:429
ShiftField_eo::backward_h
void backward_h(Field &, const Field &, const int mu, const int ieo)
Definition: shiftField_eo.cpp:88
Org::Fopr_Wilson_eo::get_parameters
void get_parameters(Parameters &params) const
gets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Wilson_eo_impl.cpp:191
Org::Fopr_Wilson_eo::m_index
Index_eo m_index
Definition: fopr_Wilson_eo_impl.h:63
Field_G::reset
void reset(const int Nvol, const int Nex)
Definition: field_G.h:79
Org::Fopr_Wilson_eo::m_mode
std::string m_mode
multiplication mode
Definition: fopr_Wilson_eo_impl.h:51
Org::Fopr_Wilson_eo::m_t2
Field_F m_t2
working field (used in mult_up/dn)
Definition: fopr_Wilson_eo_impl.h:68
Org
Clover term operator.
Definition: fopr_CloverTerm_eo_impl.cpp:23
CommonParameters::NPE
static int NPE()
Definition: commonParameters.h:101
Org::Fopr_Wilson_eo::m_Nvol
int m_Nvol
Definition: fopr_Wilson_eo_impl.h:54
SU_N::Vec_SU_N
Definition: vec_SU_N.h:24
Org::Fopr_Wilson_eo::m_kappa
double m_kappa
hopping parameter
Definition: fopr_Wilson_eo_impl.h:46
Parameters::set_int_vector
void set_int_vector(const string &key, const vector< int > &value)
Definition: parameters.cpp:45
Org::Fopr_Wilson_eo::m_Ndim
int m_Ndim
Definition: fopr_Wilson_eo_impl.h:54
Org::Fopr_Wilson_eo::preProp
void preProp(Field &Be, Field &bo, const Field &b)
Definition: fopr_Wilson_eo_impl.cpp:308
Org::Fopr_Wilson_eo::m_vl
Bridge::VerboseLevel m_vl
verbose level
Definition: fopr_Wilson_eo_impl.h:49
Org::Fopr_Wilson_eo::D
void D(Field &, const Field &)
Definition: fopr_Wilson_eo_impl.cpp:414
Org::Fopr_Wilson_eo::set_parameters
void set_parameters(const Parameters &params)
sets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Wilson_eo_impl.cpp:136
CommonParameters::Nd
static int Nd()
Definition: commonParameters.h:116
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
Org::Fopr_Wilson_eo::Mdageo
void Mdageo(Field &, const Field &, const int ieo)
Definition: fopr_Wilson_eo_impl.cpp:455
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:133
Org::Fopr_Wilson_eo::gm5p
void gm5p(const int mu, Field &, const Field &v)
gamma_5 (1 - gamma_mu) v(x + mu)
Definition: fopr_Wilson_eo_impl.cpp:480
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
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
Org::Fopr_Wilson_eo::Meo
void Meo(Field &, const Field &, const int ieo)
Definition: fopr_Wilson_eo_impl.cpp:434
field_thread-inc.h
GammaMatrixSet::get_GM
GammaMatrix get_GM(GMspecies spec)
Definition: gammaMatrixSet.h:76
GammaMatrixSet::GAMMA2
@ GAMMA2
Definition: gammaMatrixSet.h:48
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:180
Field
Container of Field-type object.
Definition: field.h:46
Org::Fopr_Wilson_eo::m_v1
Field_F m_v1
Definition: fopr_Wilson_eo_impl.h:65
Org::Fopr_Wilson_eo::mult
void mult(Field &, const Field &)
multiplies fermion operator to a given field (2nd argument)
Definition: fopr_Wilson_eo_impl.cpp:225
ThreadManager::get_thread_id
static int get_thread_id()
returns thread id.
Definition: threadManager.cpp:253
Field_G::mat
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:114
Org::Fopr_Wilson_eo::m_Nc
int m_Nc
Definition: fopr_Wilson_eo_impl.h:55
Org::Fopr_Wilson_eo::mult_gm5
void mult_gm5(Field &, const Field &)
multiplies gamma_5 matrix.
Definition: fopr_Wilson_eo_impl.cpp:295
Org::Fopr_Wilson_eo::set_mode
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Definition: fopr_Wilson_eo_impl.cpp:213
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:200
Field_F::reset
void reset(int Nvol, int Nex)
Definition: field_F.h:80
Org::Fopr_Wilson_eo::set_config
void set_config(Field *U)
setting pointer to the gauge configuration.
Definition: fopr_Wilson_eo_impl.cpp:202
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:512
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:154
Org::Fopr_Wilson_eo::m_Ueo
Field_G m_Ueo
even-odd configuration
Definition: fopr_Wilson_eo_impl.h:57
Org::Fopr_Wilson_eo::m_w2
Field_F m_w2
working field (used in Meo, Mdageo, mult_gm5)
Definition: fopr_Wilson_eo_impl.h:69