Bridge++  Ver. 2.0.2
fopr_Staggered_eo.cpp
Go to the documentation of this file.
1 
14 #include "fopr_Staggered_eo.h"
15 
16 #include "Fopr/fopr_thread-inc.h"
17 
18 #if defined USE_GROUP_SU3
20 #elif defined USE_GROUP_SU2
22 #elif defined USE_GROUP_SU_N
24 #endif
25 
26 
27 #ifdef USE_FACTORY_AUTOREGISTER
28 namespace {
29  bool init = Fopr_Staggered_eo::register_factory();
30 }
31 #endif
32 
33 const std::string Fopr_Staggered_eo::class_name = "Fopr_Staggered_eo";
34 
35 //====================================================================
37 {
39 
41  vout.general(m_vl, "%s: construction\n", class_name.c_str());
43 
44  setup();
45 
46  set_parameters(params);
47 
49  vout.general(m_vl, "%s: construction finished.\n",
50  class_name.c_str());
51 }
52 
53 
54 //====================================================================
56 {
58 
60  vout.general(m_vl, "%s: construction (obsolete)\n",
61  class_name.c_str());
63 
64  setup();
65 
67  vout.general(m_vl, "%s: construction finished.\n",
68  class_name.c_str());
69 }
70 
71 
72 //====================================================================
74 {
76  m_Nvc = 2 * m_Nc;
78  m_Nvol2 = m_Nvol / 2;
80 
81  m_boundary.resize(m_Ndim);
82 
84 
87 
89 
90  m_t1.reset(m_Nvc, m_Nvol2, 1);
91  m_t2.reset(m_Nvc, m_Nvol2, 1);
92 
93  m_v1.reset(m_Nvc, m_Nvol2, 1);
94  m_v2.reset(m_Nvc, m_Nvol2, 1);
95 }
96 
97 
98 //====================================================================
100 {
101  delete m_shift_eo;
102 }
103 
104 
105 //====================================================================
107 {
108 #pragma omp barrier
109  int ith = ThreadManager::get_thread_id();
110  std::string vlevel;
111  if (!params.fetch_string("verbose_level", vlevel)) {
112  if (ith == 0) m_vl = vout.set_verbose_level(vlevel);
113  }
114 #pragma omp barrier
115 
116  //- fetch and check input parameters
117  double mq;
118  std::vector<int> bc;
119 
120  int err = 0;
121  err += params.fetch_double("quark_mass", mq);
122  err += params.fetch_int_vector("boundary_condition", bc);
123 
124  if (err) {
125  vout.crucial(m_vl, "Error at %s: input parameter not found.\n",
126  class_name.c_str());
127  exit(EXIT_FAILURE);
128  }
129 
130  set_parameters(mq, bc);
131 }
132 
133 
134 //====================================================================
136  const std::vector<int> bc)
137 {
138  assert(bc.size() == m_Ndim);
139 
140  int err = 0;
141  // currently no error check is needed.
142  if (err) {
143  vout.crucial(m_vl, "Error at %s: parameter range check failed.\n",
144  class_name.c_str());
145  exit(EXIT_FAILURE);
146  }
147 
148 #pragma omp barrier
149  int ith = ThreadManager::get_thread_id();
150  if (ith == 0) {
151  m_mq = mq;
152  m_boundary = bc;
153  }
154 #pragma omp barrier
155 
156  vout.general(m_vl, "%s: input parameters\n", class_name.c_str());
157  vout.general(m_vl, " mq = %12.8f\n", m_mq);
158  for (int mu = 0; mu < m_Ndim; ++mu) {
159  vout.general(m_vl, " boundary[%d] = %2d\n", mu, m_boundary[mu]);
160  }
161 }
162 
163 
164 //====================================================================
166 {
167  params.set_double("quark_mass", m_mq);
168  params.set_int_vector("boundary_condition", m_boundary);
169 
170  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
171 }
172 
173 
174 //====================================================================
176 {
177  const int Nt = CommonParameters::Nt();
178  const int Nz = CommonParameters::Nz();
179  const int Ny = CommonParameters::Ny();
180  const int Nx = CommonParameters::Nx();
181  const int Nvol = CommonParameters::Nvol();
182 
183  Field phase_lex(1, Nvol, m_Ndim, Element_type::REAL);
184  Index_lex idx_lex;
185 
186  const int ipex = Communicator::ipe(0);
187  const int ipey = Communicator::ipe(1);
188  const int ipez = Communicator::ipe(2);
189  const int ipet = Communicator::ipe(3);
190 
191  for (int it = 0; it < Nt; ++it) {
192  int kt = it + ipet * Nt;
193  for (int iz = 0; iz < Nz; ++iz) {
194  int kz = iz + ipez * Nz;
195  for (int iy = 0; iy < Ny; ++iy) {
196  int ky = iy + ipey * Ny;
197  for (int ix = 0; ix < Nx; ++ix) {
198  int kx = ix + ipex * Nx;
199 
200  int is = idx_lex.site(ix, iy, iz, it);
201 
202  phase_lex.set(0, is, 0, 1.0);
203  phase_lex.set(0, is, 1, 1.0);
204  phase_lex.set(0, is, 2, 1.0);
205  phase_lex.set(0, is, 3, 1.0);
206 
207  if (kx % 2 == 1) phase_lex.set(0, is, 1, -1.0);
208  if ((kx + ky) % 2 == 1) phase_lex.set(0, is, 2, -1.0);
209  if ((kx + ky + kz) % 2 == 1) phase_lex.set(0, is, 3, -1.0);
210 
211  /*
212  // the following setting is for check with Fortran
213  if (((kx + 1) % 2) == 1) phase_lex.set(0, is, 1, -1.0);
214  if (((kx + ky + 2) % 2) == 1) phase_lex.set(0, is, 2, -1.0);
215  if (((kx + ky + kz + 3) % 2) == 1) phase_lex.set(0, is, 3, -1.0);
216  */
217  }
218  }
219  }
220  }
221 
223 }
224 
225 
226 //====================================================================
228  const int mu, const int ieo)
229 {
230  const int Nvol = CommonParameters::Nvol();
231  const int Nvol2 = Nvol / 2;
232 
233  const int Nin = v.nin();
234  const int Nex = v.nex();
235 
236  assert(v.nvol() == Nvol2);
237 
238  int ith, nth, is, ns;
239  set_threadtask(ith, nth, is, ns, m_Nvol2);
240 
241 #pragma omp barrier
242  for (int ex = 0; ex < Nex; ++ex) {
243  for (int site = is; site < ns; ++site) {
244  int site2 = m_index_eo.site(site, ieo);
245  double ph = m_staggered_phase.cmp(0, site2, mu);
246  for (int in = 0; in < Nin; ++in) {
247  double vt = ph * v.cmp(in, site, ex);
248  v.set(in, site, ex, vt);
249  }
250  }
251  }
252 #pragma omp barrier
253 }
254 
255 
256 //====================================================================
258 {
259  if (m_mode == "D") {
260  MeoMoe(v, w);
261  } else if (m_mode == "Deo") {
262  Meo(v, w, 0, 1);
263  } else if (m_mode == "Doe") {
264  Meo(v, w, 1, 1);
265  } else if (m_mode == "Ddag") {
266  MeoMoe(v, w);
267  } else if (m_mode == "DdagD") {
268  MeoMoe(m_v1, w);
269  MeoMoe(v, m_v1);
270  } else {
271  vout.crucial(m_vl, "Error at %s: mode undeifined.\n",
272  class_name.c_str());
273  exit(EXIT_FAILURE);
274  }
275 }
276 
277 
278 //====================================================================
280 {
281  if (m_mode == "D") {
282  MeoMoe(v, w);
283  } else if (m_mode == "Deo") {
284  Meo(v, w, 0, -1);
285  } else if (m_mode == "Doe") {
286  Meo(v, w, 1, -1);
287  } else if (m_mode == "Ddag") {
288  MeoMoe(v, w);
289  } else if (m_mode == "DdagD") {
290  MeoMoe(m_v1, w);
291  MeoMoe(v, m_v1);
292  } else {
293  vout.crucial(m_vl, "Error at %s: mode undeifined.\n",
294  class_name.c_str());
295  exit(EXIT_FAILURE);
296  }
297 }
298 
299 
300 //====================================================================
301 void Fopr_Staggered_eo::set_mode(std::string mode)
302 {
303 #pragma omp barrier
304  int ith = ThreadManager::get_thread_id();
305  if (ith == 0) m_mode = mode;
306 #pragma omp barrier
307 }
308 
309 
310 //====================================================================
312  const std::string mode)
313 {
314  if (mode == "D") {
315  MeoMoe(v, w);
316  } else if (mode == "Deo") {
317  Meo(v, w, 0, 1);
318  } else if (mode == "Doe") {
319  Meo(v, w, 1, 1);
320  } else if ((mode == "Dee") || (mode == "Doo")) {
321 #pragma omp barrier
322  copy(v, w);
323  scal(v, m_mq);
324 #pragma omp barrier
325  } else {
326  vout.crucial(m_vl, "Error at %s: mode undeifined.\n",
327  class_name.c_str());
328  exit(EXIT_FAILURE);
329  }
330 }
331 
332 
333 //====================================================================
335  const std::string mode)
336 {
337  if (mode == "D") {
338  MeoMoe(v, w);
339  } else if (mode == "Deo") {
340  Meo(v, w, 0, -1);
341  } else if (mode == "Doe") {
342  Meo(v, w, 1, -1);
343  } else if ((mode == "Dee") || (mode == "Doo")) {
344 #pragma omp barrier
345  copy(v, w);
346  scal(v, m_mq);
347 #pragma omp barrier
348  } else {
349  vout.crucial(m_vl, "Error at %s: mode undeifined.\n",
350  class_name.c_str());
351  exit(EXIT_FAILURE);
352  }
353 }
354 
355 
356 //====================================================================
358 {
359  int nth = ThreadManager::get_num_threads();
360  int ith = ThreadManager::get_thread_id();
361 
362  vout.detailed(m_vl, "%s: set_config is called: num_threads = %d\n",
363  class_name.c_str(), nth);
364 
365  if (nth > 1) {
366  set_config_impl(U);
367  } else {
368  set_config_omp(U);
369  }
370 
371  vout.detailed(m_vl, "%s: set_config finished.\n", class_name.c_str());
372 }
373 
374 
375 //====================================================================
377 {
378  vout.detailed(m_vl, " set_config_omp is called.\n");
379 
380 #pragma omp parallel
381  {
382  set_config_impl(U);
383  }
384 }
385 
386 
387 //====================================================================
389 {
390  int Ncc = m_Nc * m_Nc;
391 
393 
394  int ith, nth, is, ns;
395  set_threadtask(ith, nth, is, ns, m_Nvol);
396  vout.detailed(m_vl, " set_config_impl is called: num_threads = %d\n",
397  nth);
398 
399  for (int mu = 0; mu < m_Ndim; ++mu) {
400  for (int site = is; site < ns; ++site) {
401  double ph = m_staggered_phase.cmp(0, site, mu);
402  for (int cc = 0; cc < Ncc; ++cc) {
403  double ur = ph * m_Ueo.cmp_r(cc, site, mu);
404  double ui = ph * m_Ueo.cmp_i(cc, site, mu);
405  m_Ueo.set_ri(cc, site, mu, ur, ui);
406  }
407  }
408  }
409 #pragma omp barrier
410 }
411 
412 
413 //====================================================================
414 void Fopr_Staggered_eo::preProp(Field& Be, Field& Bo, const Field& b)
415 {
416  // assuming Be(Nin, Nvol/2, 1), bo(Nin, Nvol/2, 1), b(Nin, Nvol, 1).
417 
418  vout.detailed(m_vl, "%s: preProp starts.\n", class_name.c_str());
419 
420  m_index_eo.convertField(Be, b, 0); // even component field
421  m_index_eo.convertField(Bo, b, 1); // odd component field
422 
423  Meo(m_v1, Bo, 0, 1);
424 
425  // axpy(m_xe, -1.0, vt); // hopping normalization
426  scal(Be, m_mq); // mass normalization
427  axpy(Be, -1.0, m_v1); // mass normalization
428 
429 #pragma omp barrier
430 
431  vout.detailed(m_vl, "%s: preProp finished.\n", class_name.c_str());
432 }
433 
434 
435 //====================================================================
437  const Field& xe, const Field& bo)
438 {
439  vout.detailed(m_vl, "%s: postProp starts.\n", class_name.c_str());
440 
441  copy(m_v1, bo);
442 
443 #pragma omp barrier
444 
445  Meo(m_v2, xe, 1, 1);
446 
447  axpy(m_v1, -1.0, m_v2);
448 
449  scal(m_v1, 1.0 / m_mq); // needed for mass normalization
450 
451 #pragma omp barrier
452 
453  m_index_eo.reverseField(xq, xe, 0); // even component
454  m_index_eo.reverseField(xq, m_v1, 1); // odd component
455 
456  vout.detailed(m_vl, "%s: postProp finished.\n", class_name.c_str());
457 }
458 
459 
460 //====================================================================
462 {
463  assert(v.check_size(m_Nvc, m_Nvol2, 1));
464  assert(w.check_size(m_Nvc, m_Nvol2, 1));
465 
466  Meo(m_v2, w, 1, 1);
467  Meo(v, m_v2, 0, -1);
468 
469  axpy(v, m_mq * m_mq, w); // mass normalization
470 
471 #pragma omp barrier
472 }
473 
474 
475 //====================================================================
477  const int ieo, const int jd)
478 {
479  assert(w.check_size(m_Nvc, m_Nvol2, 1));
480  assert(v.check_size(m_Nvc, m_Nvol2, 1));
481 
482 #pragma omp barrier
483 
484  v.set(0.0);
485 
486  mult_up(v, w, 0, ieo);
487  mult_dn(v, w, 0, ieo);
488  mult_up(v, w, 1, ieo);
489  mult_dn(v, w, 1, ieo);
490  mult_up(v, w, 2, ieo);
491  mult_dn(v, w, 2, ieo);
492  mult_up(v, w, 3, ieo);
493  mult_dn(v, w, 3, ieo);
494 
495  double fac = double(jd) * 0.5; // mass normalization
496  // double fac = double(jd) * 0.5/m_mq; // hopping normalization
497  scal(v, fac);
498 
499 #pragma omp barrier
500 }
501 
502 
503 //====================================================================
505  const int mu, const int ieo)
506 {
507  m_shift_eo->backward_h(m_t1, w, m_boundary[mu], mu, ieo);
508 
509  int Ndf = m_Nvc * m_Nc;
510  double *vp = v.ptr(0);
511  const double *wp = m_t1.ptr(0);
512  const double *up = m_Ueo.ptr(Ndf * m_Nvol * mu);
513 
514  int ith, nth, is, ns;
515  set_threadtask(ith, nth, is, ns, m_Nvol2);
516 
517  for (int site = is; site < ns; ++site) {
518  int site2 = m_index_eo.site(site, ieo);
519  for (int ic = 0; ic < m_Nc; ++ic) {
520  int ic2 = ic * m_Nvc;
521  double wtr, wti;
522  wtr = mult_uv_r(&up[ic2 + Ndf * site2], &wp[m_Nvc * site], m_Nc);
523  wti = mult_uv_i(&up[ic2 + Ndf * site2], &wp[m_Nvc * site], m_Nc);
524  vp[2 * ic + m_Nvc * site] += wtr;
525  vp[2 * ic + 1 + m_Nvc * site] += wti;
526  }
527  }
528 
529 #pragma omp barrier
530 }
531 
532 
533 //====================================================================
535  const int mu, const int ieo)
536 {
537  int Ndf = m_Nvc * m_Nc;
538  double *vp = m_t1.ptr(0);
539  const double *wp = w.ptr(0);
540  const double *up = m_Ueo.ptr(Ndf * m_Nvol * mu);
541 
542  int ith, nth, is, ns;
543  set_threadtask(ith, nth, is, ns, m_Nvol2);
544 
545 #pragma omp barrier
546 
547  for (int site = is; site < ns; ++site) {
548  int site2 = m_index_eo.site(site, 1 - ieo);
549  for (int ic = 0; ic < m_Nc; ++ic) {
550  int ic2 = ic * 2;
551  double wtr, wti;
552  wtr = mult_udagv_r(&up[ic2 + Ndf * site2], &wp[m_Nvc * site], m_Nc);
553  wti = mult_udagv_i(&up[ic2 + Ndf * site2], &wp[m_Nvc * site], m_Nc);
554  vp[2 * ic + m_Nvc * site] = wtr;
555  vp[2 * ic + 1 + m_Nvc * site] = wti;
556  }
557  }
558 
559 #pragma omp barrier
560 
561  m_shift_eo->forward_h(m_t2, m_t1, m_boundary[mu], mu, ieo);
562 
563  axpy(v, -1.0, m_t2);
564 
565 #pragma omp barrier
566 }
567 
568 
569 //====================================================================
570 double Fopr_Staggered_eo::flop_count(const std::string mode)
571 {
572  // the following flop counting assumes mass normalization.
573 
574  int Nvol2 = m_Nvol2;
575  int NPE = CommonParameters::NPE();
576 
577  int flop_site_Meo = m_Nvc * (1 + 2 * m_Ndim * 2 * m_Nvc);
578 
579  int flop_site;
580 
581  if ((mode == "Deo") || (mode == "Doe")) {
582  flop_site = flop_site_Meo;
583  } else if (mode == "D") {
584  flop_site = m_Nvc * 2 + 2 * flop_site_Meo;
585  } else {
586  vout.crucial(m_vl, "%s: unsupported mode in flop_count.\n",
587  class_name.c_str());
588  flop_site = 0;
589  }
590 
591  double flop_vol = double(Nvol2) * double(NPE);
592 
593  double gflop = double(flop_site) * flop_vol * 1.0e-9;
594 
595  return gflop;
596 }
597 
598 
599 //============================================================END=====
CommonParameters::Ny
static int Ny()
Definition: commonParameters.h:106
ShiftField_eo::forward_h
void forward_h(Field &, const Field &, const int mu, const int ieo)
Definition: shiftField_eo.cpp:109
CommonParameters::Nz
static int Nz()
Definition: commonParameters.h:107
fopr_thread-inc.h
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
Index_lex
Lexical site index.
Definition: index_lex.h:34
fopr_Wilson_impl_SU_N-inc.h
fopr_Wilson_impl_SU3-inc.h
ThreadManager::get_num_threads
static int get_num_threads()
returns available number of threads.
Definition: threadManager.cpp:246
CommonParameters::Ndim
static int Ndim()
Definition: commonParameters.h:117
Fopr_Staggered_eo::mult
void mult(Field &w, const Field &f)
multiplies fermion operator to a given field (2nd argument)
Definition: fopr_Staggered_eo.cpp:257
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
Fopr_Staggered_eo::get_parameters
void get_parameters(Parameters &params) const
gets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Staggered_eo.cpp:165
Fopr_Staggered_eo::m_t1
Field m_t1
Definition: fopr_Staggered_eo.h:58
Fopr_Staggered_eo::MeoMoe
void MeoMoe(Field &v, const Field &f)
D = m^2 - Deo * Doe.
Definition: fopr_Staggered_eo.cpp:461
Parameters::set_double
void set_double(const string &key, const double value)
Definition: parameters.cpp:33
Bridge::BridgeIO::decrease_indent
void decrease_indent()
Definition: bridgeIO.h:86
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
Fopr_Staggered_eo::set_config_omp
void set_config_omp(Field *U)
Definition: fopr_Staggered_eo.cpp:376
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.h:85
Bridge::BridgeIO::detailed
void detailed(const char *format,...)
Definition: bridgeIO.cpp:219
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
Fopr_Staggered_eo::m_mode
std::string m_mode
mult mode
Definition: fopr_Staggered_eo.h:45
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
Fopr_Staggered_eo::Meo
void Meo(Field &, const Field &, const int ieo, const int jd)
hopping term: ieo = 0: even <– odd, 1: odd <– even
Definition: fopr_Staggered_eo.cpp:476
axpy
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
Definition: field.cpp:380
Fopr_Staggered_eo::tidyup
void tidyup()
final clean-up.
Definition: fopr_Staggered_eo.cpp:99
Fopr_Staggered_eo::preProp
void preProp(Field &, Field &, const Field &)
for even-odd solver: called before linear solver.
Definition: fopr_Staggered_eo.cpp:414
Field::nin
int nin() const
Definition: field.h:126
Fopr_Staggered_eo::m_vl
Bridge::VerboseLevel m_vl
verbose level
Definition: fopr_Staggered_eo.h:43
copy
void copy(Field &y, const Field &x)
copy(y, x): y = x
Definition: field.cpp:212
Index_eo::reverseField
void reverseField(Field &lex, const Field &eo)
Definition: index_eo.cpp:197
Fopr_Staggered_eo::init
void init()
initial setup.
Definition: fopr_Staggered_eo.cpp:55
CommonParameters::Nx
static int Nx()
Definition: commonParameters.h:105
Fopr_Staggered_eo::m_v1
Field m_v1
Definition: fopr_Staggered_eo.h:59
Fopr_Staggered_eo::m_Nvol
int m_Nvol
Definition: fopr_Staggered_eo.h:49
Index_eo::site
int site(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:68
Fopr_Staggered_eo::setup
void setup()
Definition: fopr_Staggered_eo.cpp:73
CommonParameters::Nc
static int Nc()
Definition: commonParameters.h:115
Fopr_Staggered_eo::m_v2
Field m_v2
working vectors
Definition: fopr_Staggered_eo.h:59
Fopr_Staggered_eo::m_staggered_phase
Field m_staggered_phase
staggered phase
Definition: fopr_Staggered_eo.h:52
Index_eo::convertField
void convertField(Field &eo, const Field &lex)
Definition: index_eo.cpp:90
CommonParameters::Nt
static int Nt()
Definition: commonParameters.h:108
Parameters::fetch_int_vector
int fetch_int_vector(const string &key, vector< int > &value) const
Definition: parameters.cpp:429
Fopr_Staggered_eo::m_Nvc
int m_Nvc
Definition: fopr_Staggered_eo.h:48
ShiftField_eo::backward_h
void backward_h(Field &, const Field &, const int mu, const int ieo)
Definition: shiftField_eo.cpp:88
Field_G::reset
void reset(const int Nvol, const int Nex)
Definition: field_G.h:79
Element_type::REAL
@ REAL
Definition: bridge_defs.h:43
Field::nvol
int nvol() const
Definition: field.h:127
Fopr_Staggered_eo::m_index_eo
Index_eo m_index_eo
Definition: fopr_Staggered_eo.h:54
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::reset
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=Element_type::COMPLEX)
Definition: field.h:95
Parameters::set_int_vector
void set_int_vector(const string &key, const vector< int > &value)
Definition: parameters.cpp:45
Fopr_Staggered_eo::set_config
void set_config(Field *U)
setting pointer to the gauge configuration.
Definition: fopr_Staggered_eo.cpp:357
Fopr_Staggered_eo::class_name
static const std::string class_name
Definition: fopr_Staggered_eo.h:37
fopr_Staggered_eo.h
Field::cmp
double cmp(const int jin, const int site, const int jex) const
Definition: field.h:143
Fopr_Staggered_eo::m_Ueo
Field_G m_Ueo
even-odd gauge configuration
Definition: fopr_Staggered_eo.h:51
Field::ptr
const double * ptr(const int jin, const int site, const int jex) const
Definition: field.h:153
Fopr_Staggered_eo::mult_dag
void mult_dag(Field &w, const Field &f)
hermitian conjugate of mult(Field&, const Field&).
Definition: fopr_Staggered_eo.cpp:279
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
Field_G::cmp_r
double cmp_r(const int cc, const int site, const int mn=0) const
Definition: field_G.h:87
fopr_Wilson_impl_SU2-inc.h
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:133
Fopr_Staggered_eo::flop_count
double flop_count()
returns the number of floating point operations.
Definition: fopr_Staggered_eo.h:118
Fopr_Staggered_eo::mult_dn
void mult_dn(Field &, const Field &, const int mu, const int ieo)
Definition: fopr_Staggered_eo.cpp:534
Field_G::cmp_i
double cmp_i(const int cc, const int site, const int mn=0) const
Definition: field_G.h:92
Fopr_Staggered_eo::m_Nc
int m_Nc
Definition: fopr_Staggered_eo.h:48
scal
void scal(Field &x, const double a)
scal(x, a): x = a * x
Definition: field.cpp:261
Communicator::ipe
static int ipe(const int dir)
logical coordinate of current proc.
Definition: communicator.cpp:105
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
Fopr_Staggered_eo::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_Staggered_eo.cpp:301
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:180
Fopr_Staggered_eo::m_Ndim
int m_Ndim
Definition: fopr_Staggered_eo.h:49
Fopr_Staggered_eo::mult_up
void mult_up(Field &, const Field &, const int mu, const int ieo)
Definition: fopr_Staggered_eo.cpp:504
Field
Container of Field-type object.
Definition: field.h:46
ThreadManager::get_thread_id
static int get_thread_id()
returns thread id.
Definition: threadManager.cpp:253
Fopr_Staggered_eo::m_boundary
std::vector< int > m_boundary
boundary conditions
Definition: fopr_Staggered_eo.h:42
Fopr_Staggered_eo::set_config_impl
void set_config_impl(Field *U)
Definition: fopr_Staggered_eo.cpp:388
Fopr_Staggered_eo::set_parameters
void set_parameters(const Parameters &params)
sets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Staggered_eo.cpp:106
Fopr_Staggered_eo::m_mq
double m_mq
fermion mass
Definition: fopr_Staggered_eo.h:41
Fopr_Staggered_eo::m_Nvol2
int m_Nvol2
Definition: fopr_Staggered_eo.h:49
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:200
Fopr_Staggered_eo::postProp
void postProp(Field &, const Field &, const Field &)
for even-odd solver: called after linear solver.
Definition: fopr_Staggered_eo.cpp:436
Fopr_Staggered_eo::set_staggered_phase
void set_staggered_phase()
Definition: fopr_Staggered_eo.cpp:175
ThreadManager::assert_single_thread
static void assert_single_thread(const std::string &class_name)
assert currently running on single thread.
Definition: threadManager.cpp:372
Fopr_Staggered_eo::mult_staggered_phase
void mult_staggered_phase(Field &, const int mu, const int ieo)
multiplied staggered phase with a given vector.
Definition: fopr_Staggered_eo.cpp:227
Fopr_Staggered_eo::m_t2
Field m_t2
working vectors
Definition: fopr_Staggered_eo.h:58
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:512
Fopr_Staggered_eo::m_shift_eo
ShiftField_eo * m_shift_eo
Definition: fopr_Staggered_eo.h:56
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:154