Bridge++  Ver. 2.0.2
afopr_Wilson_eo-tmpl.h
Go to the documentation of this file.
1 
11 
12 template<typename AFIELD>
13 const std::string AFopr_Wilson_eo<AFIELD>::class_name = "AFopr_Wilson_eo";
14 
15 //====================================================================
16 template<typename AFIELD>
18 {
20 
21  // switch of coomunication
22  int req_comm = 1; // set 1 if communication forced any time
23  //int req_comm = 0; // set 0 if communication called in necessary
24 
25  std::string vlevel;
26  if (!params.fetch_string("verbose_level", vlevel)) {
27  m_vl = vout.set_verbose_level(vlevel);
28  } else {
29  m_vl = CommonParameters::Vlevel();
30  }
31 
32  vout.general(m_vl, "%s: construction\n", class_name.c_str());
33 
34  m_repr = "Dirac"; // now only the Dirac repr is available.
35 
36  std::string repr;
37  if (!params.fetch_string("gamma_matrix_type", repr)) {
38  if (repr != "Dirac") {
39  vout.crucial(" Error at %s: unsupported gamma-matrix type: %s\n",
40  class_name.c_str(), repr.c_str());
41  exit(EXIT_FAILURE);
42  }
43  }
44 
45  m_Nc = CommonParameters::Nc();
46  if (m_Nc != 3) {
47  vout.crucial("%s: only applicable to Nc = 3\n",
48  class_name.c_str());
49  exit(EXIT_FAILURE);
50  }
51 
52  m_Nd = CommonParameters::Nd();
53  m_vl = CommonParameters::Vlevel();
54 
55  m_Ndf = 2 * m_Nc * m_Nc;
56  m_Nvc = m_Nc * 2;
57  m_Ndim = CommonParameters::Ndim();
58  m_Nx = CommonParameters::Nx();
59  m_Ny = CommonParameters::Ny();
60  m_Nz = CommonParameters::Nz();
61  m_Nt = CommonParameters::Nt();
62  m_Nst = CommonParameters::Nvol();
63 
64  m_Nx2 = m_Nx / 2;
65  m_Nst2 = m_Nst / 2;
66  m_Nx2v = m_Nx2 / VLENX;
67  m_Nyv = m_Ny / VLENY;
68  m_Nst2v = m_Nst2 / VLEN;
69 
70  // condition check
71  if (m_Nx % 2 != 0) {
72  vout.crucial(m_vl, "%s: Nx must be even.\n",
73  class_name.c_str());
74  exit(EXIT_FAILURE);
75  }
76  if (m_Nx % (2 * VLENX) != 0) {
77  vout.crucial(m_vl, "%s: Nx must be mulriple of 2*VLENX.\n",
78  class_name.c_str());
79  exit(EXIT_FAILURE);
80  }
81  if (m_Ny % (VLENY) != 0) {
82  vout.crucial(m_vl, "%s: Ny must be multiple of VLENY.\n",
83  class_name.c_str());
84  exit(EXIT_FAILURE);
85  }
86 
87  vout.general(m_vl, " VLENX = %2d Nx2v = %d\n", VLENX, m_Nx2v);
88  vout.general(m_vl, " VLENY = %2d Nyv = %d\n", VLENY, m_Nyv);
89  vout.general(m_vl, " VLEN = %2d Nst2v = %d\n", VLEN, m_Nst2v);
90 
91  m_Leo.resize(m_Ny * m_Nz * m_Nt);
92 
93  int ipe3 = Communicator::ipe(3);
94  int ipe2 = Communicator::ipe(2);
95  int ipe1 = Communicator::ipe(1);
96  for (int t = 0; t < m_Nt; ++t) {
97  for (int z = 0; z < m_Nz; ++z) {
98  for (int y = 0; y < m_Ny; ++y) {
99  int t2 = ipe3 * m_Nt + t;
100  int z2 = ipe2 * m_Nz + z;
101  int y2 = ipe1 * m_Ny + y;
102  m_Leo[y + m_Ny * (z + m_Nz * t)] = (y2 + z2 + t2) % 2;
103  }
104  }
105  }
106 
107  m_Nsize[0] = m_Nx2v;
108  m_Nsize[1] = m_Nyv;
109  m_Nsize[2] = m_Nz;
110  m_Nsize[3] = m_Nt;
111 
112  do_comm_any = 0;
113  for (int mu = 0; mu < m_Ndim; ++mu) {
114  do_comm[mu] = 1;
115  if ((req_comm == 0) && (Communicator::npe(mu) == 1)) do_comm[mu] = 0;
116  do_comm_any += do_comm[mu];
117  vout.general(" do_comm[%d] = %d\n", mu, do_comm[mu]);
118  }
119 
120  // setup of communication buffers
121  m_bdsize.resize(m_Ndim);
122  int Nd2 = m_Nd / 2;
123  m_bdsize[0] = m_Nvc * Nd2 * ((m_Ny * m_Nz * m_Nt + 1) / 2);
124  m_bdsize[1] = m_Nvc * Nd2 * m_Nx2 * m_Nz * m_Nt;
125  m_bdsize[2] = m_Nvc * Nd2 * m_Nx2 * m_Ny * m_Nt;
126  m_bdsize[3] = m_Nvc * Nd2 * m_Nx2 * m_Ny * m_Nz;
127 
128  setup_channels();
129 
130  // gauge configuration.
131  m_Ulex.reset(m_Ndf, m_Nst, m_Ndim);
132  m_Ueo.reset(m_Ndf, m_Nst, m_Ndim);
133 
134  // working vectors.
135  int NinF = 2 * m_Nc * m_Nd;
136  m_v1.reset(NinF, m_Nst2, 1);
137  m_v2.reset(NinF, m_Nst2, 1);
138 
139  m_z1.reset(NinF, m_Nst, 1); // used in convert/revese.
140 
142 
143  set_parameters(params);
144 
146 
147  vout.general(m_vl, "%s: construction finished.\n",
148  class_name.c_str());
149 }
150 
151 
152 //====================================================================
153 template<typename AFIELD>
155 {
156  chsend_up.resize(m_Ndim);
157  chrecv_up.resize(m_Ndim);
158  chsend_dn.resize(m_Ndim);
159  chrecv_dn.resize(m_Ndim);
160 
161  for (int mu = 0; mu < m_Ndim; ++mu) {
162  size_t Nvsize = m_bdsize[mu] * sizeof(real_t);
163 
164  chsend_dn[mu].send_init(Nvsize, mu, -1);
165  chsend_up[mu].send_init(Nvsize, mu, 1);
166 #ifdef USE_MPI
167  chrecv_up[mu].recv_init(Nvsize, mu, 1);
168  chrecv_dn[mu].recv_init(Nvsize, mu, -1);
169 #else
170  void *buf_up = (void *)chsend_dn[mu].ptr();
171  chrecv_up[mu].recv_init(Nvsize, mu, 1, buf_up);
172  void *buf_dn = (void *)chsend_up[mu].ptr();
173  chrecv_dn[mu].recv_init(Nvsize, mu, -1, buf_dn);
174 #endif
175 
176  if (do_comm[mu] == 1) {
177  chset_send.append(chsend_up[mu]);
178  chset_send.append(chsend_dn[mu]);
179  chset_recv.append(chrecv_up[mu]);
180  chset_recv.append(chrecv_dn[mu]);
181  }
182  }
183 }
184 
185 
186 //====================================================================
187 template<typename AFIELD>
189 {
191 
192  // nothing to do at present.
193 }
194 
195 
196 //====================================================================
197 template<typename AFIELD>
199 {
200  const string str_vlevel = params.get_string("verbose_level");
201  m_vl = vout.set_verbose_level(str_vlevel);
202 
203  //- fetch and check input parameters
204  double kappa;
205  std::vector<int> bc;
206 
207  int err = 0;
208  err += params.fetch_double("hopping_parameter", kappa);
209  err += params.fetch_int_vector("boundary_condition", bc);
210  if (err) {
211  vout.crucial(m_vl, "Error at %s: input parameter not found.\n",
212  class_name.c_str());
213  exit(EXIT_FAILURE);
214  }
215 
216  set_parameters(real_t(kappa), bc);
217 }
218 
219 
220 //====================================================================
221 template<typename AFIELD>
223  const std::vector<int> bc)
224 {
225  assert(bc.size() == m_Ndim);
226 
227 #pragma omp barrier
228 
229  int ith = ThreadManager::get_thread_id();
230 
231  if (ith == 0) {
232  m_CKs = CKs;
233  m_boundary.resize(m_Ndim);
234  for (int mu = 0; mu < m_Ndim; ++mu) {
235  m_boundary[mu] = bc[mu];
236  }
237  }
238 
239  vout.general(m_vl, "%s: set parameters\n", class_name.c_str());
240  vout.general(m_vl, " gamma-matrix type = %s\n", m_repr.c_str());
241  vout.general(m_vl, " kappa = %8.4f\n", m_CKs);
242  for (int mu = 0; mu < m_Ndim; ++mu) {
243  vout.general(m_vl, " boundary[%d] = %2d\n", mu, m_boundary[mu]);
244  }
245 
246 #pragma omp barrier
247 }
248 
249 
250 //====================================================================
251 template<typename AFIELD>
253 {
254  params.set_double("hopping_parameter", double(m_CKs));
255  params.set_int_vector("boundary_condition", m_boundary);
256  params.set_string("gamma_matrix_type", m_repr);
257 
258  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
259 }
260 
261 
262 //====================================================================
263 template<typename AFIELD>
265 {
266  int nth = ThreadManager::get_num_threads();
267 
268  vout.detailed(m_vl, "%s: set_config is called: num_threads = %d\n",
269  class_name.c_str(), nth);
270 
271  if (nth > 1) {
272  set_config_impl(u);
273  } else {
274  set_config_omp(u);
275  }
276 
277  vout.detailed(m_vl, "%s: set_config finished\n", class_name.c_str());
278 }
279 
280 
281 //====================================================================
282 template<typename AFIELD>
284 {
285  vout.detailed(m_vl, " set_config_omp is called.\n");
286 
287 #pragma omp parallel
288  {
289  set_config_impl(u);
290  }
291 }
292 
293 
294 //====================================================================
295 template<typename AFIELD>
297 {
298 #pragma omp barrier
299 
300  int ith, nth, is, ns;
302 
303  if (ith == 0) m_conf = u;
304 
305  AIndex_lex<real_t, QXS> index_lex;
306 
307  convert_gauge(index_lex, m_Ulex, *u);
308 
309  QXS_Gauge::set_boundary(m_Ulex, m_boundary);
310 
311  AIndex_lex<real_t, QXS> index_lex2;
312  AIndex_eo<real_t, QXS> index_eo;
313 
314  set_threadtask_mult(ith, nth, is, ns, m_Nst);
315 
316  for (int ex = 0; ex < m_Ndim; ++ex) {
317  for (int site = is; site < ns; ++site) {
318  for (int in = 0; in < m_Ndf; ++in) {
319  int iv1 = index_lex2.idx(in, m_Ndf, site, ex);
320  int iv2 = index_eo.idx(in, m_Ndf, site, ex);
321  m_Ueo.e(iv2) = m_Ulex.cmp(iv1);
322  }
323  }
324  }
325 
326 #pragma omp barrier
327 }
328 
329 
330 //====================================================================
331 template<typename AFIELD>
333 {
335  convert_spinor(index_lex, m_z1, w);
336 
337  mult_gm4(v, m_z1);
338 }
339 
340 
341 //====================================================================
342 template<typename AFIELD>
344 {
345  mult_gm4(m_z1, w);
346 
348  reverse_spinor(index_lex, v, m_z1);
349 }
350 
351 
352 //====================================================================
353 template<typename AFIELD>
354 void AFopr_Wilson_eo<AFIELD>::set_mode(std::string mode)
355 {
356 #pragma omp barrier
357 
358  int ith = ThreadManager::get_thread_id();
359  if (ith == 0) m_mode = mode;
360 
361 #pragma omp barrier
362 }
363 
364 
365 //====================================================================
366 template<typename AFIELD>
368 {
369  if (m_mode == "D") {
370  return D(v, w);
371  } else if (m_mode == "DdagD") {
372  return DdagD(v, w);
373  } else if (m_mode == "Ddag") {
374  return Ddag(v, w);
375  } else {
376  vout.crucial(m_vl, "%s: mode undefined.\n", class_name.c_str());
377  exit(EXIT_FAILURE);
378  }
379 }
380 
381 
382 //====================================================================
383 template<typename AFIELD>
385  const AFIELD& w)
386 {
387  if (m_mode == "D") {
388  return Ddag(v, w);
389  } else if (m_mode == "DdagD") {
390  return DdagD(v, w);
391  } else if (m_mode == "Ddag") {
392  return D(v, w);
393  } else {
394  vout.crucial(m_vl, "%s: mode undefined.\n", class_name.c_str());
395  exit(EXIT_FAILURE);
396  }
397 }
398 
399 
400 //====================================================================
401 template<typename AFIELD>
403 {
404  real_t *vp = v.ptr(0);
405  real_t *wp = const_cast<AFIELD *>(&w)->ptr(0);
406 
407 #pragma omp barrier
408 
409  BridgeQXS::mult_wilson_gm5_dirac(vp, wp, m_Nsize);
410 
411 #pragma omp barrier
412 }
413 
414 
415 //====================================================================
416 template<typename AFIELD>
418 {
419  int Nst = w.nvol();
420  if (Nst != v.nvol()) {
421  vout.crucial(m_vl, "%s: sizes of fields inconsisutent in mult_gm4.\n",
422  class_name.c_str());
423  exit(EXIT_FAILURE);
424  }
425 
426  real_t *vp = v.ptr(0);
427  real_t *wp = const_cast<AFIELD *>(&w)->ptr(0);
428 
429  int ith, nth, is, ns;
430  set_threadtask_mult(ith, nth, is, ns, m_Nst);
431 
432 #pragma omp barrier
433 
434  // Dirac representation.
435  for (int site = is; site < ns; ++site) {
436  for (int ic = 0; ic < NC; ++ic) {
437  vp[m_index.idxh_SPr(ic, 0, site, 0)] = wp[m_index.idxh_SPr(ic, 0, site, 0)];
438  vp[m_index.idxh_SPi(ic, 0, site, 0)] = wp[m_index.idxh_SPi(ic, 0, site, 0)];
439  vp[m_index.idxh_SPr(ic, 1, site, 0)] = wp[m_index.idxh_SPr(ic, 1, site, 0)];
440  vp[m_index.idxh_SPi(ic, 1, site, 0)] = wp[m_index.idxh_SPi(ic, 1, site, 0)];
441  vp[m_index.idxh_SPr(ic, 2, site, 0)] = -wp[m_index.idxh_SPr(ic, 2, site, 0)];
442  vp[m_index.idxh_SPi(ic, 2, site, 0)] = -wp[m_index.idxh_SPi(ic, 2, site, 0)];
443  vp[m_index.idxh_SPr(ic, 3, site, 0)] = -wp[m_index.idxh_SPr(ic, 3, site, 0)];
444  vp[m_index.idxh_SPi(ic, 3, site, 0)] = -wp[m_index.idxh_SPi(ic, 3, site, 0)];
445  }
446  }
447 
448 #pragma omp barrier
449 }
450 
451 
452 //====================================================================
453 template<typename AFIELD>
455  const std::string mode)
456 {
457  if (mode == "Dee") {
458  copy(v, w);
459  } else if (mode == "Doo") {
460  copy(v, w);
461  } else if (mode == "Dee_inv") {
462  copy(v, w);
463  } else if (mode == "Doo_inv") {
464  copy(v, w);
465  } else if (mode == "Deo") {
466  Meo(v, w, 0);
467  } else if (mode == "Doe") {
468  Meo(v, w, 1);
469  } else {
470  vout.crucial(m_vl, "%s: illegal mode is given to mult with mode\n",
471  class_name.c_str());
472  exit(EXIT_FAILURE);
473  }
474 }
475 
476 
477 //====================================================================
478 template<typename AFIELD>
480 {
481  D(m_v2, w);
482  mult_gm5(v, m_v2);
483  D(m_v2, v);
484  mult_gm5(v, m_v2);
485 }
486 
487 
488 //====================================================================
489 template<typename AFIELD>
491 {
492 #pragma omp barrier
493 
494  mult_gm5(v, w);
495  D(m_v2, v);
496  mult_gm5(v, m_v2);
497 }
498 
499 
500 //====================================================================
501 template<typename AFIELD>
503 {
504  Meo(m_v1, w, 1);
505  Meo(v, m_v1, w, 0, 1);
506 }
507 
508 
509 //====================================================================
510 template<typename AFIELD>
512 {
513  real_t *vp = v.ptr(0);
514  real_t *wp = const_cast<AFIELD *>(&w)->ptr(0);
515 
516 #pragma omp barrier
517 
518  aypx(a, vp, wp);
519 }
520 
521 
522 //====================================================================
523 template<typename AFIELD>
525  const int ieo)
526 {
527  mult_Meo_qxs(v, w, w, ieo, 0);
528 }
529 
530 
531 //====================================================================
532 template<typename AFIELD>
534  const AFIELD& w, const AFIELD& x,
535  const int ieo, const int iflag)
536 {
537  mult_Meo_qxs(v, w, x, ieo, iflag);
538 }
539 
540 
541 //====================================================================
542 template<typename AFIELD>
544  const AFIELD& w, const AFIELD& x,
545  const int ieo, const int iflag)
546 {
547  real_t *v2 = v.ptr(0);
548  real_t *v1 = const_cast<AFIELD *>(&w)->ptr(0);
549  real_t *xp = const_cast<AFIELD *>(&x)->ptr(0);
550 
551  real_t *up = m_Ueo.ptr(0);
552 
553  int ith = ThreadManager::get_thread_id();
554 
555 #pragma omp barrier
556 
557  if (do_comm_any > 0) {
558  if (ith == 0) chset_recv.start();
559 
560  real_t *buf1_xp = (real_t *)chsend_dn[0].ptr();
561  real_t *buf1_xm = (real_t *)chsend_up[0].ptr();
562  real_t *buf1_yp = (real_t *)chsend_dn[1].ptr();
563  real_t *buf1_ym = (real_t *)chsend_up[1].ptr();
564  real_t *buf1_zp = (real_t *)chsend_dn[2].ptr();
565  real_t *buf1_zm = (real_t *)chsend_up[2].ptr();
566  real_t *buf1_tp = (real_t *)chsend_dn[3].ptr();
567  real_t *buf1_tm = (real_t *)chsend_up[3].ptr();
568 
569  BridgeQXS::mult_wilson_eo_1_dirac(buf1_xp, buf1_xm, buf1_yp, buf1_ym,
570  buf1_zp, buf1_zm, buf1_tp, buf1_tm,
571  up, v1, &m_boundary[0],
572  m_Nsize, do_comm, &m_Leo[0], ieo, iflag);
573 
574 #pragma omp barrier
575 
576  if (ith == 0) chset_send.start();
577  }
578 
579  BridgeQXS::mult_wilson_eo_bulk_dirac(v2, up, v1, xp, m_CKs, &m_boundary[0],
580  m_Nsize, do_comm, &m_Leo[0], ieo, iflag);
581 
582  if (do_comm_any > 0) {
583  if (ith == 0) chset_recv.wait();
584 
585 #pragma omp barrier
586 
587  real_t *buf2_xp = (real_t *)chrecv_up[0].ptr();
588  real_t *buf2_xm = (real_t *)chrecv_dn[0].ptr();
589  real_t *buf2_yp = (real_t *)chrecv_up[1].ptr();
590  real_t *buf2_ym = (real_t *)chrecv_dn[1].ptr();
591  real_t *buf2_zp = (real_t *)chrecv_up[2].ptr();
592  real_t *buf2_zm = (real_t *)chrecv_dn[2].ptr();
593  real_t *buf2_tp = (real_t *)chrecv_up[3].ptr();
594  real_t *buf2_tm = (real_t *)chrecv_dn[3].ptr();
595 
596  BridgeQXS::mult_wilson_eo_2_dirac(v2, up, v1, xp,
597  buf2_xp, buf2_xm, buf2_yp, buf2_ym,
598  buf2_zp, buf2_zm, buf2_tp, buf2_tm,
599  m_CKs, &m_boundary[0],
600  m_Nsize, do_comm, &m_Leo[0], ieo, iflag);
601 
602  if (ith == 0) chset_send.wait();
603  }
604 
605 #pragma omp barrier
606 }
607 
608 
609 //====================================================================
610 template<typename AFIELD>
612 {
613  int ith, nth, is, ns;
614  set_threadtask_mult(ith, nth, is, ns, m_Nst2);
615 
616  int Ncd = m_Nvc * m_Nd;
617 
618  for (int i = is; i < ns; ++i) {
619  for (int icd = 0; icd < Ncd; ++icd) {
620  int i2 = icd + Ncd * i;
621  v[i2] = a * v[i2] + w[i2];
622  }
623  }
624 #pragma omp barrier
625 }
626 
627 
628 //====================================================================
629 template<typename AFIELD>
631 {
632  int ith, nth, is, ns;
633  set_threadtask_mult(ith, nth, is, ns, m_Nst2);
634 
635  real_t zero = 0.0;
636  int Ncd = m_Nvc * m_Nd;
637 
638  for (int i = is; i < ns; ++i) {
639  for (int icd = 0; icd < Ncd; ++icd) {
640  v[icd + Ncd * i] = zero;
641  }
642  }
643 
644 #pragma omp barrier
645 }
646 
647 
648 //====================================================================
649 template<typename AFIELD>
651 {
652  int ith, nth, is, ns;
653  set_threadtask_mult(ith, nth, is, ns, m_Nst2);
654 
655  int Ncd = m_Nvc * m_Nd;
656 
657  for (int i = is; i < ns; ++i) {
658  for (int icd = 0; icd < Ncd; ++icd) {
659  v[icd + Ncd * i] *= a;
660  }
661  }
662 
663 #pragma omp barrier
664 }
665 
666 
667 //====================================================================
668 template<typename AFIELD>
669 double AFopr_Wilson_eo<AFIELD>::flop_count(const std::string mode)
670 {
671  // The following counting explicitly depends on the implementation.
672  // It will be recalculated when the code is modified.
673 
674  int Lvol = CommonParameters::Lvol();
675  double flop_site, flop;
676 
677  if (m_repr == "Dirac") {
678  flop_site = static_cast<double>(
679  m_Nc * m_Nd * (4 + 6 * (4 * m_Nc + 2) + 2 * (4 * m_Nc + 1)));
680  } else if (m_repr == "Chiral") {
681  flop_site = static_cast<double>(
682  m_Nc * m_Nd * (4 + 8 * (4 * m_Nc + 2)));
683  } else {
684  vout.crucial(m_vl, "%s: input repr is undefined.\n");
685  exit(EXIT_FAILURE);
686  }
687 
688  if (mode == "Deo" || "Doe") {
689  flop_site = 0.5 * flop_site;
690  }
691 
692  flop = flop_site * static_cast<double>(Lvol);
693  if ((mode == "DdagD") || (mode == "DDdag")) flop *= 2.0;
694 
695  return flop;
696 }
697 
698 
699 //============================================================END=====
CommonParameters::Ny
static int Ny()
Definition: commonParameters.h:106
CommonParameters::Nz
static int Nz()
Definition: commonParameters.h:107
BridgeQXS::mult_wilson_gm5_dirac
void mult_wilson_gm5_dirac(double *v2, double *v1, int *Nsize)
Definition: mult_Wilson_qxs-inc.h:411
AFopr_Wilson_eo::D
void D(AFIELD &, const AFIELD &)
Definition: afopr_Wilson_eo-tmpl.h:502
CommonParameters::Lvol
static long_t Lvol()
Definition: commonParameters.h:95
AFopr_Wilson_eo::setup_channels
void setup_channels()
setup channels for communication.
Definition: afopr_Wilson_eo-tmpl.h:154
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
AFopr_Wilson_eo::aypx
void aypx(real_t, AFIELD &, const AFIELD &)
Definition: afopr_Wilson_eo-tmpl.h:511
AFopr_Wilson_eo::clear
void clear(real_t *)
Definition: afopr_Wilson_eo-tmpl.h:630
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
Parameters
Class for parameters.
Definition: parameters.h:46
AFopr_Wilson_eo::init
void init(const Parameters &params)
initial setup.
Definition: afopr_Wilson_eo-tmpl.h:17
AIndex_lex
Definition: aindex_lex_base.h:17
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
AFopr_Wilson_eo::mult
void mult(AFIELD &, const AFIELD &)
multiplies fermion operator to a given field.
Definition: afopr_Wilson_eo-tmpl.h:367
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.h:85
VLEN
#define VLEN
Definition: bridgeQXS_Clover_coarse_double.cpp:12
Bridge::BridgeIO::detailed
void detailed(const char *format,...)
Definition: bridgeIO.cpp:219
AFopr_Wilson_eo::DdagD
void DdagD(AFIELD &, const AFIELD &)
Definition: afopr_Wilson_eo-tmpl.h:479
AFopr_Wilson_eo::Ddag
void Ddag(AFIELD &, const AFIELD &)
Definition: afopr_Wilson_eo-tmpl.h:490
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
convert_gauge
void convert_gauge(INDEX &index, FIELD &v, const Field &w)
Definition: afield-inc.h:224
aypx
void aypx(const double a, Field &y, const Field &x)
aypx(y, a, x): y := a * y + x
Definition: field.cpp:509
AFopr_Wilson_eo::scal
void scal(real_t *, const real_t)
Definition: afopr_Wilson_eo-tmpl.h:650
real_t
double real_t
Definition: bridgeQXS_Clover_coarse_double.cpp:16
AFopr_Wilson_eo::set_mode
void set_mode(std::string mode)
setting mult mode.
Definition: afopr_Wilson_eo-tmpl.h:354
copy
void copy(Field &y, const Field &x)
copy(y, x): y = x
Definition: field.cpp:212
AFopr_Wilson_eo::real_t
AFIELD::real_t real_t
Definition: afopr_Wilson_eo.h:41
AFopr_Wilson_eo::set_config
void set_config(Field *u)
setting gauge configuration (common interface).
Definition: afopr_Wilson_eo-tmpl.h:264
AFopr_Wilson_eo::set_parameters
void set_parameters(const Parameters &params)
setting parameters by a Parameter object.
Definition: afopr_Wilson_eo-tmpl.h:198
CommonParameters::Nx
static int Nx()
Definition: commonParameters.h:105
AFopr_Wilson_eo::mult_Meo_qxs
void mult_Meo_qxs(AFIELD &, const AFIELD &, const AFIELD &, const int ieo, const int iflag)
Meo implementation: using qxs library.
Definition: afopr_Wilson_eo-tmpl.h:543
AFopr_Wilson_eo::Meo
void Meo(AFIELD &, const AFIELD &, const int ieo)
Fermion matrix with ieo = 0: even <– odd, 1: odd <– even.
Definition: afopr_Wilson_eo-tmpl.h:524
CommonParameters::Nc
static int Nc()
Definition: commonParameters.h:115
NC
#define NC
Definition: field_F_imp_SU2-inc.h:2
QXS_Gauge::set_boundary
void set_boundary(AField< REALTYPE, QXS > &ulex, const std::vector< int > &boundary)
Definition: afield_Gauge-inc.h:24
reverse_spinor
void reverse_spinor(INDEX &index, Field &v, FIELD &w)
Definition: afield-inc.h:380
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
Communicator::npe
static int npe(const int dir)
logical grid extent
Definition: communicator.cpp:112
BridgeQXS::mult_wilson_eo_bulk_dirac
void mult_wilson_eo_bulk_dirac(double *v2, double *up, double *v1, double *xp, double kappa, int *bc, int *Nsize, int *do_comm, int *Leo, const int ieo, const int iflag)
Definition: mult_Wilson_eo_qxs-inc.h:20
threadManager.h
AFopr_Wilson_eo::convert
void convert(AFIELD &, const Field &)
convert Field to AField for this class.
Definition: afopr_Wilson_eo-tmpl.h:332
Field::nvol
int nvol() const
Definition: field.h:127
Parameters::set_int_vector
void set_int_vector(const string &key, const vector< int > &value)
Definition: parameters.cpp:45
BridgeQXS::mult_wilson_eo_2_dirac
void mult_wilson_eo_2_dirac(double *v2, double *up, double *v1, double *xp, double *buf_xp, double *buf_xm, double *buf_yp, double *buf_ym, double *buf_zp, double *buf_zm, double *buf_tp, double *buf_tm, double kappa, int *bc, int *Nsize, int *do_comm, int *Leo, const int ieo, const int iflag)
Definition: mult_Wilson_eo_qxs-inc.h:429
AFopr_Wilson_eo::mult_gm4
void mult_gm4(AFIELD &, const AFIELD &)
Definition: afopr_Wilson_eo-tmpl.h:417
AFopr_Wilson_eo::mult_dag
void mult_dag(AFIELD &, const AFIELD &)
hermitian conjugate of mult.
Definition: afopr_Wilson_eo-tmpl.h:384
VLENY
#define VLENY
Definition: bridgeQXS_Clover_coarse_double.cpp:14
Field::ptr
const double * ptr(const int jin, const int site, const int jex) const
Definition: field.h:153
CommonParameters::Nd
static int Nd()
Definition: commonParameters.h:116
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:133
AFopr_Wilson_eo::tidyup
void tidyup()
final tidy-up.
Definition: afopr_Wilson_eo-tmpl.h:188
VLENX
#define VLENX
Definition: bridgeQXS_Clover_coarse_double.cpp:13
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
Parameters::get_string
string get_string(const string &key) const
Definition: parameters.cpp:221
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:180
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
AFopr_Wilson_eo::set_config_impl
void set_config_impl(Field *u)
setting gauge configuration (implementation).
Definition: afopr_Wilson_eo-tmpl.h:296
AFopr_Wilson_eo::flop_count
double flop_count()
returns floating operation counts.
Definition: afopr_Wilson_eo.h:157
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:200
AFopr_Wilson_eo::reverse
void reverse(Field &, const AFIELD &)
reverse AField to Field.
Definition: afopr_Wilson_eo-tmpl.h:343
AFopr_Wilson_eo::set_config_omp
void set_config_omp(Field *u)
setting gauge configuration (setting omp parallel).
Definition: afopr_Wilson_eo-tmpl.h:283
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
AFopr_Wilson_eo
Definition: afopr_Wilson_eo.h:38
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:154
AFopr_Wilson_eo::mult_gm5
void mult_gm5(AFIELD &, const AFIELD &)
multiplies gamma_5 matrix.
Definition: afopr_Wilson_eo-tmpl.h:402
AIndex_eo
Definition: aindex_eo_base.h:17
convert_spinor
void convert_spinor(INDEX &index, FIELD &v, const Field &w)
Definition: afield-inc.h:187
BridgeQXS::mult_wilson_eo_1_dirac
void mult_wilson_eo_1_dirac(double *buf_xp, double *buf_xm, double *buf_yp, double *buf_ym, double *buf_zp, double *buf_zm, double *buf_tp, double *buf_tm, double *up, double *v1, int *bc, int *Nsize, int *do_comm, int *Leo, const int ieo, const int iflag)
Definition: mult_Wilson_eo_qxs-inc.h:238
AFopr_Wilson_eo::get_parameters
void get_parameters(Parameters &params) const
get parameters via a Parameter object
Definition: afopr_Wilson_eo-tmpl.h:252