CHROMA
deriv_quark_displacement_w.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Derivative displacements
3  */
4 
5 #include "chromabase.h"
6 
10 #include "meas/smear/displace.h"
11 
12 #include "util/ferm/symtensor.h"
14 #include "util/ferm/etensor.h"
15 
16 namespace Chroma
17 {
18 
19  // Read parameters
20  void read(XMLReader& xml, const std::string& path, DerivQuarkDisplacementEnv::Params& param)
21  {
23  param = tmp;
24  }
25 
26  // Writer
27  void write(XMLWriter& xml, const std::string& path, const DerivQuarkDisplacementEnv::Params& param)
28  {
29  param.writeXML(xml, path);
30  }
31 
32 
33  // Read parameters
34  void read(XMLReader& xml, const std::string& path, DerivQuarkDisplacementEnv::ParamsDir& param)
35  {
37  param = tmp;
38  }
39 
40  // Writer
41  void write(XMLWriter& xml, const std::string& path, const DerivQuarkDisplacementEnv::ParamsDir& param)
42  {
43  param.writeXML(xml, path);
44  }
45 
46 
47 
48 
49  //! Meson sources
50  /*! \ingroup sources */
51  namespace DerivQuarkDisplacementEnv
52  {
53  //! Anonymous namespace
54  namespace
55  {
56 
57  //! Determine sign of plusminus
58  /*!
59  * \ingroup sources
60  */
61  int plusMinus(enum PlusMinus isign)
62  {
63  int is = 0;
64  switch (isign)
65  {
66  case PLUS:
67  is = +1;
68  break;
69 
70  case MINUS:
71  is = -1;
72  break;
73 
74  default:
75  QDP_error_exit("illegal isign in plusminus");
76  }
77  return is;
78  }
79 
80 
81 
82 
83  //-------------------- callback functions ---------------------------------------
84 
85  //! Construct (right Nabla) source
86  QuarkDisplacement<LatticePropagator>* rightNablaDisplace(XMLReader& xml_in,
87  const std::string& path)
88  {
89  return new RightNablaDisplace<LatticePropagator>(ParamsDir(xml_in, path));
90  }
91 
92  //! Construct (right D) source
93  QuarkDisplacement<LatticePropagator>* rightDDisplace(XMLReader& xml_in,
94  const std::string& path)
95  {
96  return new RightDDisplace<LatticePropagator>(ParamsDir(xml_in, path));
97  }
98 
99  //! Construct (right B) source
100  QuarkDisplacement<LatticePropagator>* rightBDisplace(XMLReader& xml_in,
101  const std::string& path)
102  {
103  return new RightBDisplace<LatticePropagator>(ParamsDir(xml_in, path));
104  }
105 
106  //! Construct (right E) source
107  QuarkDisplacement<LatticePropagator>* rightEDisplace(XMLReader& xml_in,
108  const std::string& path)
109  {
110  return new RightEDisplace<LatticePropagator>(ParamsDir(xml_in, path));
111  }
112 
113  //! Construct (right Laplacian) source
114  QuarkDisplacement<LatticePropagator>* rightLapDisplace(XMLReader& xml_in,
115  const std::string& path)
116  {
117  return new RightLapDisplace<LatticePropagator>(Params(xml_in, path));
118  }
119 
120 
121 
122  //! Construct (PionxNabla_T1) source
123  QuarkDisplacement<LatticePropagator>* mesPionxNablaT1Displace(XMLReader& xml_in,
124  const std::string& path)
125  {
126  return new MesPionxNablaT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
127  }
128 
129  //! Construct (A0xNabla_T1) source
130  QuarkDisplacement<LatticePropagator>* mesA0xNablaT1Displace(XMLReader& xml_in,
131  const std::string& path)
132  {
133  return new MesA0xNablaT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
134  }
135 
136  //! Construct (A0_2xNabla_T1) source
137  QuarkDisplacement<LatticePropagator>* mesA02xNablaT1Displace(XMLReader& xml_in,
138  const std::string& path)
139  {
140  return new MesA02xNablaT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
141  }
142 
143  //! Construct (RhoxNabla_A1) source
144  QuarkDisplacement<LatticePropagator>* mesRhoxNablaA1Displace(XMLReader& xml_in,
145  const std::string& path)
146  {
147  return new MesRhoxNablaA1Displace<LatticePropagator>(Params(xml_in, path));
148  }
149 
150  //! Construct (RhoxNabla_T1) source
151  QuarkDisplacement<LatticePropagator>* mesRhoxNablaT1Displace(XMLReader& xml_in,
152  const std::string& path)
153  {
154  return new MesRhoxNablaT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
155  }
156 
157  //! Construct (RhoxNabla_T2) source
158  QuarkDisplacement<LatticePropagator>* mesRhoxNablaT2Displace(XMLReader& xml_in,
159  const std::string& path)
160  {
161  return new MesRhoxNablaT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
162  }
163 
164  //! Construct (A1xNabla_A1) source
165  QuarkDisplacement<LatticePropagator>* mesA1xNablaA1Displace(XMLReader& xml_in,
166  const std::string& path)
167  {
168  return new MesA1xNablaA1Displace<LatticePropagator>(Params(xml_in, path));
169  }
170 
171  //! Construct (A1xNabla_T2) source
172  QuarkDisplacement<LatticePropagator>* mesA1xNablaT2Displace(XMLReader& xml_in,
173  const std::string& path)
174  {
175  return new MesA1xNablaT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
176  }
177 
178  //! Construct (A1xNabla_E) source
179  QuarkDisplacement<LatticePropagator>* mesA1xNablaEDisplace(XMLReader& xml_in,
180  const std::string& path)
181  {
182  return new MesA1xNablaEDisplace<LatticePropagator>(ParamsDir(xml_in, path));
183  }
184 
185  //! Construct (B1xNabla_T1) source
186  QuarkDisplacement<LatticePropagator>* mesB1xNablaT1Displace(XMLReader& xml_in,
187  const std::string& path)
188  {
189  return new MesB1xNablaT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
190  }
191 
192  //! Construct (A0_2xD_T2) source
193  QuarkDisplacement<LatticePropagator>* mesA02xDT2Displace(XMLReader& xml_in,
194  const std::string& path)
195  {
196  return new MesA02xDT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
197  }
198 
199  //! Construct (A1xD_A2) source
200  QuarkDisplacement<LatticePropagator>* mesA1xDA2Displace(XMLReader& xml_in,
201  const std::string& path)
202  {
203  return new MesA1xDA2Displace<LatticePropagator>(Params(xml_in, path));
204  }
205 
206  //! Construct (A1xD_E) source
207  QuarkDisplacement<LatticePropagator>* mesA1xDEDisplace(XMLReader& xml_in,
208  const std::string& path)
209  {
210  return new MesA1xDEDisplace<LatticePropagator>(ParamsDir(xml_in, path));
211  }
212 
213  //! Construct (A1xD_T1) source
214  QuarkDisplacement<LatticePropagator>* mesA1xDT1Displace(XMLReader& xml_in,
215  const std::string& path)
216  {
217  return new MesA1xDT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
218  }
219 
220  //! Construct (A1xD_T2) source
221  QuarkDisplacement<LatticePropagator>* mesA1xDT2Displace(XMLReader& xml_in,
222  const std::string& path)
223  {
224  return new MesA1xDT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
225  }
226 
227  //! Construct (B1xD_A2) source
228  QuarkDisplacement<LatticePropagator>* mesB1xDA2Displace(XMLReader& xml_in,
229  const std::string& path)
230  {
231  return new MesB1xDA2Displace<LatticePropagator>(Params(xml_in, path));
232  }
233 
234  //! Construct (B1xD_E) source
235  QuarkDisplacement<LatticePropagator>* mesB1xDEDisplace(XMLReader& xml_in,
236  const std::string& path)
237  {
238  return new MesB1xDEDisplace<LatticePropagator>(ParamsDir(xml_in, path));
239  }
240 
241  //! Construct (B1xD_T1) source
242  QuarkDisplacement<LatticePropagator>* mesB1xDT1Displace(XMLReader& xml_in,
243  const std::string& path)
244  {
245  return new MesB1xDT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
246  }
247 
248  //! Construct (B1xD_T2) source
249  QuarkDisplacement<LatticePropagator>* mesB1xDT2Displace(XMLReader& xml_in,
250  const std::string& path)
251  {
252  return new MesB1xDT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
253  }
254 
255  //! Construct (RhoxD_A2) source
256  QuarkDisplacement<LatticePropagator>* mesRhoxDA2Displace(XMLReader& xml_in,
257  const std::string& path)
258  {
259  return new MesRhoxDA2Displace<LatticePropagator>(Params(xml_in, path));
260  }
261 
262  //! Construct (RhoxD_T1) source
263  QuarkDisplacement<LatticePropagator>* mesRhoxDT1Displace(XMLReader& xml_in,
264  const std::string& path)
265  {
266  return new MesRhoxDT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
267  }
268 
269  //! Construct (RhoxD_T2) source
270  QuarkDisplacement<LatticePropagator>* mesRhoxDT2Displace(XMLReader& xml_in,
271  const std::string& path)
272  {
273  return new MesRhoxDT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
274  }
275 
276  //! Construct (PionxD_T2) source
277  QuarkDisplacement<LatticePropagator>* mesPionxDT2Displace(XMLReader& xml_in,
278  const std::string& path)
279  {
280  return new MesPionxDT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
281  }
282 
283  //! Construct (PionxB_T1) source
284  QuarkDisplacement<LatticePropagator>* mesPionxBT1Displace(XMLReader& xml_in,
285  const std::string& path)
286  {
287  return new MesPionxBT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
288  }
289 
290  //! Construct (RhoxB_T1) source
291  QuarkDisplacement<LatticePropagator>* mesRhoxBT1Displace(XMLReader& xml_in,
292  const std::string& path)
293  {
294  return new MesRhoxBT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
295  }
296 
297  //! Construct (RhoxB_T2) source
298  QuarkDisplacement<LatticePropagator>* mesRhoxBT2Displace(XMLReader& xml_in,
299  const std::string& path)
300  {
301  return new MesRhoxBT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
302  }
303 
304  //! Construct (A1xB_A1) source
305  QuarkDisplacement<LatticePropagator>* mesA1xBA1Displace(XMLReader& xml_in,
306  const std::string& path)
307  {
308  return new MesA1xBA1Displace<LatticePropagator>(Params(xml_in, path));
309  }
310 
311  //! Construct (A1xB_T1) source
312  QuarkDisplacement<LatticePropagator>* mesA1xBT1Displace(XMLReader& xml_in,
313  const std::string& path)
314  {
315  return new MesA1xBT1Displace<LatticePropagator>(ParamsDir(xml_in, path));
316  }
317 
318  //! Construct (A1xB_T2) source
319  QuarkDisplacement<LatticePropagator>* mesA1xBT2Displace(XMLReader& xml_in,
320  const std::string& path)
321  {
322  return new MesA1xBT2Displace<LatticePropagator>(ParamsDir(xml_in, path));
323  }
324 
325  } // end anonymous namespace
326 
327 
328  //! Initialize
330  {
331  deriv_length = 0;
332  }
333 
334  //! Read parameters
335  Params::Params(XMLReader& xml, const std::string& path)
336  {
337  XMLReader paramtop(xml, path);
338 
339  int version;
340  read(paramtop, "version", version);
341 
342  switch (version)
343  {
344  case 1:
345  break;
346 
347  default:
348  QDPIO::cerr << __func__ << ": parameter version " << version
349  << " unsupported." << std::endl;
350  QDP_abort(1);
351  }
352 
353  read(paramtop, "DisplacementType", displacement_type);
354  read(paramtop, "deriv_length", deriv_length);
355  }
356 
357  // Writer
358  void Params::writeXML(XMLWriter& xml, const std::string& path) const
359  {
360  push(xml, path);
361 
362  int version = 1;
363  QDP::write(xml, "version", version);
364 
365  write(xml, "DisplacementType", displacement_type);
366  write(xml, "deriv_length", deriv_length);
367 
368  pop(xml);
369  }
370 
371 
372  //! Initialize
374  {
375  deriv_dir = -1;
376  deriv_length = 0;
377  }
378 
379 
380  //! Read parameters
381  ParamsDir::ParamsDir(XMLReader& xml, const std::string& path)
382  {
383  XMLReader paramtop(xml, path);
384 
385  int version;
386  read(paramtop, "version", version);
387 
388  switch (version)
389  {
390  case 1:
391  break;
392 
393  default:
394  QDPIO::cerr << __func__ << ": parameter version " << version
395  << " unsupported." << std::endl;
396  QDP_abort(1);
397  }
398 
399  read(paramtop, "DisplacementType", displacement_type);
400 
401  read(paramtop, "deriv_dir", deriv_dir);
402  read(paramtop, "deriv_length", deriv_length);
403  }
404 
405 
406  // Writer
407  void ParamsDir::writeXML(XMLWriter& xml, const std::string& path) const
408  {
409  push(xml, path);
410 
411  int version = 1;
412  QDP::write(xml, "version", version);
413 
414  write(xml, "DisplacementType", displacement_type);
415  write(xml, "deriv_dir", deriv_dir);
416  write(xml, "deriv_length", deriv_length);
417 
418  pop(xml);
419  }
420 
421 
422  // Construct (right Nabla) source
423  // See corresponding .h file for doxygen comments
424  template<>
425  void
427  const multi1d<LatticeColorMatrix>& u,
428  enum PlusMinus isign) const
429  {
430  START_CODE();
431 
432  LatticePropagator fin;
433  int length = plusMinus(isign) * params.deriv_length;
434 
435  // \f$\Gamma_f \equiv \nabla_i\f$
436  fin = rightNabla(tmp,u,params.deriv_dir,length);
437  tmp = fin;
438 
439  END_CODE();
440  }
441 
442 
443  // Construct (right D) source
444  // See corresponding .h file for doxygen comments
445  template<>
446  void
448  const multi1d<LatticeColorMatrix>& u,
449  enum PlusMinus isign) const
450  {
451  START_CODE();
452 
453  LatticePropagator fin;
454  int length = plusMinus(isign) * params.deriv_length;
455 
456  // \f$\Gamma_f \equiv D_i\f$
457  fin = rightD(tmp,u,params.deriv_dir,length);
458  tmp = fin;
459 
460  END_CODE();
461  }
462 
463 
464  // Construct (right B) source
465  // See corresponding .h file for doxygen comments
466  template<>
467  void
469  const multi1d<LatticeColorMatrix>& u,
470  enum PlusMinus isign) const
471  {
472  START_CODE();
473 
474  LatticePropagator fin;
475  int length = plusMinus(isign) * params.deriv_length;
476 
477  // \f$\Gamma_f \equiv B_i\f$
478  fin = rightB(tmp,u,params.deriv_dir,length);
479  tmp = fin;
480 
481  END_CODE();
482  }
483 
484 
485 
486  // Construct (right E) source
487  // See corresponding .h file for doxygen comments
488  template<>
489  void
491  const multi1d<LatticeColorMatrix>& u,
492  enum PlusMinus isign) const
493  {
494  START_CODE();
495 
496  LatticePropagator fin;
497  int length = plusMinus(isign) * params.deriv_length;
498 
499  // \f$\Gamma_f \equiv E_alpha\f$
500  fin = rightE(tmp,u,params.deriv_dir,length);
501  tmp = fin;
502 
503  END_CODE();
504  }
505 
506 
507 
508  // Construct (right Laplacian) source
509  // See corresponding .h file for doxygen comments
510  template<>
511  void
513  const multi1d<LatticeColorMatrix>& u,
514  enum PlusMinus isign) const
515  {
516  START_CODE();
517 
518  LatticePropagator fin;
519  int length = plusMinus(isign) * params.deriv_length;
520 
521  // \f$\Gamma_f \equiv Laplacian\f$
522  fin = rightLap(tmp,u,length);
523  tmp = fin;
524 
525  END_CODE();
526  }
527 
528 
529 
530 
531 
532  // Construct (PionxNabla_T1) source
533  // See corresponding .h file for doxygen comments
534  template<>
535  void
537  const multi1d<LatticeColorMatrix>& u,
538  enum PlusMinus isign) const
539  {
540  START_CODE();
541 
542  LatticePropagator fin;
543  const int G5 = Ns*Ns-1;
544  int length = plusMinus(isign) * params.deriv_length;
545 
546  // \f$\Gamma_f \equiv \gamma_5\nabla_i\f$
547  fin = Gamma(G5) * rightNabla(tmp,u,params.deriv_dir,length);
548  tmp = fin;
549 
550  END_CODE();
551  }
552 
553 
554  // Construct (A0xNabla_T1) source
555  // See corresponding .h file for doxygen comments
556  template<>
557  void
559  const multi1d<LatticeColorMatrix>& u,
560  enum PlusMinus isign) const
561  {
562  START_CODE();
563 
564  LatticePropagator fin;
565  int length = plusMinus(isign) * params.deriv_length;
566 
567  // \f$\Gamma_f \equiv \nabla_i\f$
568  fin = rightNabla(tmp,u,params.deriv_dir,length);
569  tmp = fin;
570 
571  END_CODE();
572  }
573 
574 
575  // Construct (A0_2xNabla_T1) source
576  // See corresponding .h file for doxygen comments
577  template<>
578  void
580  const multi1d<LatticeColorMatrix>& u,
581  enum PlusMinus isign) const
582  {
583  START_CODE();
584 
585  LatticePropagator fin;
586  int length = plusMinus(isign) * params.deriv_length;
587 
588  // \f$\Gamma_f \equiv \gamma_4 \nabla_i\f$
589  fin = Gamma(1 << 3) * rightNabla(tmp,u,params.deriv_dir,length);
590  tmp = fin;
591 
592  END_CODE();
593  }
594 
595 
596  // Construct (RhoxNabla_A1) source
597  template<>
598  void
600  const multi1d<LatticeColorMatrix>& u,
601  enum PlusMinus isign) const
602  {
603  START_CODE();
604 
605  LatticePropagator fin = zero;
606  int length = plusMinus(isign) * params.deriv_length;
607 
608  // \f$\Gamma_f \equiv \gamma_i\nabla_i\f$
609  for(int k=0; k < 3; ++k)
610  fin += Gamma(1 << k) * rightNabla(tmp,u,k,length);
611 
612  tmp = fin;
613 
614  END_CODE();
615  }
616 
617 
618  // Construct (RhoxNabla_T1) source
619  template<>
620  void
622  const multi1d<LatticeColorMatrix>& u,
623  enum PlusMinus isign) const
624  {
625  START_CODE();
626 
627  LatticePropagator fin = zero;
628  int length = plusMinus(isign) * params.deriv_length;
629 
630  // \f$\Gamma_f \equiv \epsilon_{ijk}\gamma_j \nabla_k\f$
631  for(int j=0; j < 3; ++j)
632  for(int k=0; k < 3; ++k)
633  {
634  if (antiSymTensor3d(params.deriv_dir,j,k) != 0)
635  fin += Real(antiSymTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightNabla(tmp,u,k,length));
636  }
637 
638  tmp = fin;
639 
640  END_CODE();
641  }
642 
643 
644  // Construct (RhoxNabla_T2) source
645  template<>
646  void
648  const multi1d<LatticeColorMatrix>& u,
649  enum PlusMinus isign) const
650  {
651  START_CODE();
652 
653  LatticePropagator fin = zero;
654  int length = plusMinus(isign) * params.deriv_length;
655 
656  // \f$\Gamma_f \equiv s_{ijk}\gamma_j D_k\f$
657  for(int j=0; j < 3; ++j)
658  for(int k=0; k < 3; ++k)
659  {
660  if (symTensor3d(params.deriv_dir,j,k) != 0)
661  fin += Real(symTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightNabla(tmp,u,k,length));
662  }
663 
664  tmp = fin;
665 
666  END_CODE();
667  }
668 
669 
670  // Construct (A1xNabla_A1) source
671  template<>
672  void
674  const multi1d<LatticeColorMatrix>& u,
675  enum PlusMinus isign) const
676  {
677  START_CODE();
678 
679  LatticePropagator fin = zero;
680  int G5 = Ns*Ns-1;
681  int length = plusMinus(isign) * params.deriv_length;
682 
683  // \f$\Gamma_f \equiv \gamma_5\gamma_i \nabla_i\f$
684  for(int k=0; k < 3; ++k)
685  fin += Gamma(1 << k) * rightNabla(tmp,u,k,length);
686 
687  tmp = Gamma(G5) * fin;
688 
689  END_CODE();
690  }
691 
692 
693  // Construct (A1xNabla_T2) source
694  template<>
695  void
697  const multi1d<LatticeColorMatrix>& u,
698  enum PlusMinus isign) const
699  {
700  START_CODE();
701 
702  LatticePropagator fin = zero;
703  int G5 = Ns*Ns-1;
704  int length = plusMinus(isign) * params.deriv_length;
705 
706  // \f$\Gamma_f \equiv \gamma_5 s_{ijk}\gamma_j \nabla_k\f$
707  for(int j=0; j < 3; ++j)
708  for(int k=0; k < 3; ++k)
709  {
710  if (symTensor3d(params.deriv_dir,j,k) != 0)
711  fin += Real(symTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightNabla(tmp,u,k,length));
712  }
713 
714  tmp = Gamma(G5) * fin;
715 
716  END_CODE();
717  }
718 
719 
720  // Construct (A1xNabla_E) source
721  template<>
722  void
724  const multi1d<LatticeColorMatrix>& u,
725  enum PlusMinus isign) const
726  {
727  START_CODE();
728 
729  LatticePropagator fin = zero;
730  int G5 = Ns*Ns-1;
731  int length = plusMinus(isign) * params.deriv_length;
732 
733  // \f$\Gamma_f \equiv \gamma_5 S_{\alpha jk}\gamma_j \nabla_k\f$
734  for(int j=0; j < 3; ++j)
735  for(int k=0; k < 3; ++k)
736  {
737  Real e = ETensor3d(params.deriv_dir,j,k);
738  if (toBool(e != 0.0))
739  fin += e * (Gamma(1 << j) * rightNabla(tmp,u,k,length));
740  }
741 
742  tmp = Gamma(G5) * fin;
743 
744  END_CODE();
745  }
746 
747 
748  // Construct (B1xNabla_T1) source
749  template<>
750  void
752  const multi1d<LatticeColorMatrix>& u,
753  enum PlusMinus isign) const
754  {
755  START_CODE();
756 
757  LatticePropagator fin = zero;
758  int G5 = Ns*Ns-1;
759  int length = plusMinus(isign) * params.deriv_length;
760 
761  // \f$\Gamma_f \equiv \gamma_4\gamma_5\epsilon_{ijk}\gamma_j \nabla_k\f$
762  for(int j=0; j < 3; ++j)
763  for(int k=0; k < 3; ++k)
764  {
765  if (antiSymTensor3d(params.deriv_dir,j,k) != 0)
766  fin += Real(antiSymTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightD(tmp,u,k,length));
767  }
768 
769  tmp = Gamma(1 << 3) * (Gamma(G5) * fin);
770 
771  END_CODE();
772  }
773 
774 
775  // Construct (A0_2xD_T2) source
776  template<>
777  void
779  const multi1d<LatticeColorMatrix>& u,
780  enum PlusMinus isign) const
781  {
782  START_CODE();
783 
784  LatticePropagator fin;
785  int length = plusMinus(isign) * params.deriv_length;
786 
787  // \f$\Gamma_f \equiv \gamma_4 D_i\f$
788  fin = Gamma(1 << 3) * rightD(tmp,u,params.deriv_dir,length);
789 
790  tmp = fin;
791 
792  END_CODE();
793  }
794 
795 
796  // Construct (A1xD_A2) source
797  template<>
798  void
800  const multi1d<LatticeColorMatrix>& u,
801  enum PlusMinus isign) const
802  {
803  START_CODE();
804 
805  LatticePropagator fin = zero;
806  int G5 = Ns*Ns-1;
807  int length = plusMinus(isign) * params.deriv_length;
808 
809  // \f$\Gamma_f \equiv \gamma_5\gamma_i D_i\f$
810  for(int k=0; k < 3; ++k)
811  fin += Gamma(1 << k) * rightD(tmp,u,k,length);
812 
813  tmp = Gamma(G5) * fin;
814 
815  END_CODE();
816  }
817 
818 
819  // Construct (A1xD_E) source
820  template<>
821  void
823  const multi1d<LatticeColorMatrix>& u,
824  enum PlusMinus isign) const
825  {
826  START_CODE();
827 
828  LatticePropagator fin = zero;
829  int G5 = Ns*Ns-1;
830  int length = plusMinus(isign) * params.deriv_length;
831 
832  // \f$\Gamma_f \equiv \gamma_5 S_{\alpha jk}\gamma_j D_k\f$
833  for(int j=0; j < 3; ++j)
834  for(int k=0; k < 3; ++k)
835  {
836  Real e = ETensor3d(params.deriv_dir,j,k);
837  if (toBool(e != 0.0))
838  fin += e * (Gamma(1 << j) * rightD(tmp,u,k,length));
839  }
840 
841  tmp = Gamma(G5) * fin;
842 
843  END_CODE();
844  }
845 
846 
847  // Construct (A1xD_T1) source
848  template<>
849  void
851  const multi1d<LatticeColorMatrix>& u,
852  enum PlusMinus isign) const
853  {
854  START_CODE();
855 
856  LatticePropagator fin = zero;
857  int G5 = Ns*Ns-1;
858  int length = plusMinus(isign) * params.deriv_length;
859 
860  // \f$\Gamma_f \equiv \gamma_5 s_{ijk}\gamma_j D_k\f$
861  for(int j=0; j < 3; ++j)
862  for(int k=0; k < 3; ++k)
863  {
864  if (symTensor3d(params.deriv_dir,j,k) != 0)
865  fin += Real(symTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightD(tmp,u,k,length));
866  }
867 
868  tmp = Gamma(G5) * fin;
869 
870  END_CODE();
871  }
872 
873 
874  // Construct (A1xD_T2) source
875  template<>
876  void
878  const multi1d<LatticeColorMatrix>& u,
879  enum PlusMinus isign) const
880  {
881  START_CODE();
882 
883  LatticePropagator fin = zero;
884  int G5 = Ns*Ns-1;
885  int length = plusMinus(isign) * params.deriv_length;
886 
887  // \f$\Gamma_f \equiv \gamma_5\epsilon_{ijk}\gamma_j D_k\f$
888  for(int j=0; j < 3; ++j)
889  for(int k=0; k < 3; ++k)
890  {
891  if (antiSymTensor3d(params.deriv_dir,j,k) != 0)
892  fin += Real(antiSymTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightD(tmp,u,k,length));
893  }
894 
895  tmp = Gamma(G5) * fin;
896 
897  END_CODE();
898  }
899 
900 
901  // Construct (B1xD_A2) source
902  template<>
903  void
905  const multi1d<LatticeColorMatrix>& u,
906  enum PlusMinus isign) const
907  {
908  START_CODE();
909 
910  LatticePropagator fin = zero;
911  int G5 = Ns*Ns-1;
912  int length = plusMinus(isign) * params.deriv_length;
913 
914  // \f$\Gamma_f \equiv \gamma_4\gamma_5 \gamma_i D_i\f$
915  for(int k=0; k < 3; ++k)
916  fin += Gamma(1 << k) * rightD(tmp,u,k,length);
917 
918  tmp = Gamma(1 << 3) * (Gamma(G5) * fin);
919 
920  END_CODE();
921  }
922 
923 
924  // Construct (B1xD_E) source
925  template<>
926  void
928  const multi1d<LatticeColorMatrix>& u,
929  enum PlusMinus isign) const
930  {
931  START_CODE();
932 
933  LatticePropagator fin = zero;
934  int G5 = Ns*Ns-1;
935  int length = plusMinus(isign) * params.deriv_length;
936 
937  // \f$\Gamma_f \equiv \gamma_4\gamma_5 S_{\alpha jk}\gamma_j D_k\f$
938  for(int j=0; j < 3; ++j)
939  for(int k=0; k < 3; ++k)
940  {
941  Real e = ETensor3d(params.deriv_dir,j,k);
942  if (toBool(e != 0.0))
943  fin += e * (Gamma(1 << j) * rightD(tmp,u,k,length));
944  }
945 
946  tmp = Gamma(1 << 3) * (Gamma(G5) * fin);
947 
948  END_CODE();
949  }
950 
951 
952  // Construct (B1xD_T1) source
953  template<>
954  void
956  const multi1d<LatticeColorMatrix>& u,
957  enum PlusMinus isign) const
958  {
959  START_CODE();
960 
961  LatticePropagator fin = zero;
962  int G5 = Ns*Ns-1;
963  int length = plusMinus(isign) * params.deriv_length;
964 
965  // \f$\Gamma_f \equiv \gamma_4\gamma_5 s_{ijk}\gamma_j D_k\f$
966  for(int j=0; j < 3; ++j)
967  for(int k=0; k < 3; ++k)
968  {
969  if (symTensor3d(params.deriv_dir,j,k) != 0)
970  fin += Real(symTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightD(tmp,u,k,length));
971  }
972 
973  tmp = Gamma(1 << 3) * (Gamma(G5) * fin);
974 
975  END_CODE();
976  }
977 
978 
979  // Construct (B1xD_T2) source
980  template<>
981  void
983  const multi1d<LatticeColorMatrix>& u,
984  enum PlusMinus isign) const
985  {
986  START_CODE();
987 
988  LatticePropagator fin = zero;
989  int G5 = Ns*Ns-1;
990  int length = plusMinus(isign) * params.deriv_length;
991 
992  // \f$\Gamma_f \equiv \gamma_4\gamma_5 \epsilon_{ijk}\gamma_j D_k\f$
993  for(int j=0; j < 3; ++j)
994  for(int k=0; k < 3; ++k)
995  {
996  if (antiSymTensor3d(params.deriv_dir,j,k) != 0)
997  fin += Real(antiSymTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightD(tmp,u,k,length));
998  }
999 
1000  tmp = Gamma(1 << 3) * (Gamma(G5) * fin);
1001 
1002  END_CODE();
1003  }
1004 
1005 
1006  // Construct (RhoxD_A2) source
1007  template<>
1008  void
1010  const multi1d<LatticeColorMatrix>& u,
1011  enum PlusMinus isign) const
1012  {
1013  START_CODE();
1014 
1015  LatticePropagator fin = zero;
1016  int G5 = Ns*Ns-1;
1017  int length = plusMinus(isign) * params.deriv_length;
1018 
1019  // \f$\Gamma_f \equiv \gamma_i D_i\f$
1020  for(int k=0; k < 3; ++k)
1021  fin += Gamma(1 << k) * rightD(tmp,u,k,length);
1022 
1023  tmp = fin;
1024 
1025  END_CODE();
1026  }
1027 
1028 
1029  //! Construct (RhoxD_T1) source
1030  template<>
1031  void
1033  const multi1d<LatticeColorMatrix>& u,
1034  enum PlusMinus isign) const
1035  {
1036  START_CODE();
1037 
1038  LatticePropagator fin = zero;
1039  int G5 = Ns*Ns-1;
1040  int length = plusMinus(isign) * params.deriv_length;
1041 
1042  // \f$\Gamma_f \equiv s_{ijk}\gamma_j D_k\f$
1043  for(int j=0; j < 3; ++j)
1044  for(int k=0; k < 3; ++k)
1045  {
1046  if (symTensor3d(params.deriv_dir,j,k) != 0)
1047  fin += Real(symTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightD(tmp,u,k,length));
1048  }
1049 
1050  tmp = fin;
1051 
1052  END_CODE();
1053  }
1054 
1055 
1056  //! Construct (RhoxD_T2) source
1057  template<>
1058  void
1060  const multi1d<LatticeColorMatrix>& u,
1061  enum PlusMinus isign) const
1062  {
1063  START_CODE();
1064 
1065  LatticePropagator fin = zero;
1066  int G5 = Ns*Ns-1;
1067  int length = plusMinus(isign) * params.deriv_length;
1068 
1069  // \f$\Gamma_f \equiv \epsilon_{ijk}\gamma_j D_k\f$
1070  for(int j=0; j < 3; ++j)
1071  for(int k=0; k < 3; ++k)
1072  {
1073  if (antiSymTensor3d(params.deriv_dir,j,k) != 0)
1074  fin += Real(antiSymTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightD(tmp,u,k,length));
1075  }
1076 
1077  tmp = fin;
1078 
1079  END_CODE();
1080  }
1081 
1082 
1083  // Construct (PionxD_T2) source
1084  template<>
1085  void
1087  const multi1d<LatticeColorMatrix>& u,
1088  enum PlusMinus isign) const
1089  {
1090  START_CODE();
1091 
1092  LatticePropagator fin;
1093  int G5 = Ns*Ns-1;
1094  int length = plusMinus(isign) * params.deriv_length;
1095 
1096  // \f$\Gamma_f \equiv \gamma_4\gamma_5 D_i\f$
1097  fin = Gamma(1 << 3) * (Gamma(G5) * rightD(tmp,u,params.deriv_dir,length));
1098 
1099  tmp = fin;
1100 
1101  END_CODE();
1102  }
1103 
1104 
1105  //! Construct (PionxB_T1) source
1106  template<>
1107  void
1109  const multi1d<LatticeColorMatrix>& u,
1110  enum PlusMinus isign) const
1111  {
1112  START_CODE();
1113 
1114  LatticePropagator fin;
1115  int G5 = Ns*Ns-1;
1116  int length = plusMinus(isign) * params.deriv_length;
1117 
1118  // \f$\Gamma_f \equiv \gamma_5 B_i\f$
1119  fin = Gamma(G5) * rightB(tmp,u,params.deriv_dir,length);
1120 
1121  tmp = fin;
1122 
1123  END_CODE();
1124  }
1125 
1126 
1127  //! Construct (RhoxB_T1) source
1128  template<>
1129  void
1131  const multi1d<LatticeColorMatrix>& u,
1132  enum PlusMinus isign) const
1133  {
1134  START_CODE();
1135 
1136  LatticePropagator fin = zero;
1137  int G5 = Ns*Ns-1;
1138  int length = plusMinus(isign) * params.deriv_length;
1139 
1140  // \f$\Gamma_f \equiv \epsilon_{ijk}\gamma_j B_k\f$
1141  for(int j=0; j < 3; ++j)
1142  for(int k=0; k < 3; ++k)
1143  {
1144  if (antiSymTensor3d(params.deriv_dir,j,k) != 0)
1145  fin += Real(antiSymTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightB(tmp,u,k,length));
1146  }
1147 
1148  tmp = fin;
1149 
1150  END_CODE();
1151  }
1152 
1153 
1154  //! Construct (RhoxB_T2) source
1155  template<>
1156  void
1158  const multi1d<LatticeColorMatrix>& u,
1159  enum PlusMinus isign) const
1160  {
1161  START_CODE();
1162 
1163  LatticePropagator fin = zero;
1164  int G5 = Ns*Ns-1;
1165  int length = plusMinus(isign) * params.deriv_length;
1166 
1167  // \f$\Gamma_f \equiv s_{ijk}\gamma_j B_k\f$
1168  for(int j=0; j < 3; ++j)
1169  for(int k=0; k < 3; ++k)
1170  {
1171  if (symTensor3d(params.deriv_dir,j,k) != 0)
1172  fin += Real(symTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightB(tmp,u,k,length));
1173  }
1174 
1175  tmp = fin;
1176 
1177  END_CODE();
1178  }
1179 
1180 
1181  //! Construct (A1xB_A1) source
1182  template<>
1183  void
1185  const multi1d<LatticeColorMatrix>& u,
1186  enum PlusMinus isign) const
1187  {
1188  START_CODE();
1189 
1190  LatticePropagator fin = zero;
1191  int G5 = Ns*Ns-1;
1192  int length = plusMinus(isign) * params.deriv_length;
1193 
1194  // \f$\Gamma_f \equiv \gamma_5 \gamma_i B_i\f$
1195  for(int k=0; k < 3; ++k)
1196  fin += Gamma(1 << k) * rightB(tmp,u,k,length);
1197 
1198  tmp = Gamma(G5) * fin;
1199 
1200  END_CODE();
1201  }
1202 
1203 
1204  //! Construct (A1xB_T1) source
1205  template<>
1206  void
1208  const multi1d<LatticeColorMatrix>& u,
1209  enum PlusMinus isign) const
1210  {
1211  START_CODE();
1212 
1213  LatticePropagator fin = zero;
1214  int G5 = Ns*Ns-1;
1215  int length = plusMinus(isign) * params.deriv_length;
1216 
1217  // \f$\Gamma_f \equiv \gamma_5 \epsilon_{ijk}\gamma_j B_k\f$
1218  for(int j=0; j < 3; ++j)
1219  for(int k=0; k < 3; ++k)
1220  {
1221  if (antiSymTensor3d(params.deriv_dir,j,k) != 0)
1222  fin += Real(antiSymTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightB(tmp,u,k,length));
1223  }
1224 
1225  tmp = Gamma(G5) * fin;
1226 
1227  END_CODE();
1228  }
1229 
1230 
1231  //! Construct (A1xB_T2) source
1232  template<>
1233  void
1235  const multi1d<LatticeColorMatrix>& u,
1236  enum PlusMinus isign) const
1237  {
1238  START_CODE();
1239 
1240  LatticePropagator fin = zero;
1241  int G5 = Ns*Ns-1;
1242  int length = plusMinus(isign) * params.deriv_length;
1243 
1244  // \f$\Gamma_f \equiv \gamma_5 s_{ijk}\gamma_j B_k\f$
1245  for(int j=0; j < 3; ++j)
1246  for(int k=0; k < 3; ++k)
1247  {
1248  if (symTensor3d(params.deriv_dir,j,k) != 0)
1249  fin += Real(symTensor3d(params.deriv_dir,j,k)) * (Gamma(1 << j) * rightB(tmp,u,k,length));
1250  }
1251 
1252  tmp = Gamma(G5) * fin;
1253 
1254  END_CODE();
1255  }
1256 
1257 
1258  //! Local registration flag
1259  static bool registered = false;
1260 
1261  //! Register all the possible deriv mesons
1262  bool registerAll()
1263  {
1264  bool success = true;
1265  if (! registered)
1266  {
1267  //! Register all the factories
1268  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("NABLA-DERIV"),
1269  rightNablaDisplace);
1270 
1271  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("D-DERIV"),
1272  rightDDisplace);
1273 
1274  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("B-DERIV"),
1275  rightBDisplace);
1276 
1277  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("E-DERIV"),
1278  rightEDisplace);
1279 
1280  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("LAP-DERIV"),
1281  rightLapDisplace);
1282 
1283 
1284  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("PIONxNABLA_T1-DERIV"),
1285  mesPionxNablaT1Displace);
1286 
1287  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A0xNABLA_T1-DERIV"),
1288  mesA0xNablaT1Displace);
1289 
1290  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A0_2xNABLA_T1-DERIV"),
1291  mesA02xNablaT1Displace);
1292 
1293  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("RHOxNABLA_A1-DERIV"),
1294  mesRhoxNablaA1Displace);
1295 
1296  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("RHOxNABLA_T1-DERIV"),
1297  mesRhoxNablaT1Displace);
1298 
1299  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("RHOxNABLA_T2-DERIV"),
1300  mesRhoxNablaT2Displace);
1301 
1302  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xNABLA_A1-DERIV"),
1303  mesA1xNablaA1Displace);
1304 
1305  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xNABLA_T2-DERIV"),
1306  mesA1xNablaT2Displace);
1307 
1308  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xNABLA_E-DERIV"),
1309  mesA1xNablaEDisplace);
1310 
1311  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("B1xNABLA_T1-DERIV"),
1312  mesB1xNablaT1Displace);
1313 
1314  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A0_2xD_T2-DERIV"),
1315  mesA02xDT2Displace);
1316 
1317  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xD_A2-DERIV"),
1318  mesA1xDA2Displace);
1319 
1320  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xD_E-DERIV"),
1321  mesA1xDEDisplace);
1322 
1323  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xD_T1-DERIV"),
1324  mesA1xDT1Displace);
1325 
1326  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xD_T2-DERIV"),
1327  mesA1xDT2Displace);
1328 
1329  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("B1xD_A2-DERIV"),
1330  mesB1xDA2Displace);
1331 
1332  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("B1xD_E-DERIV"),
1333  mesB1xDEDisplace);
1334 
1335  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("B1xD_T1-DERIV"),
1336  mesB1xDT1Displace);
1337 
1338  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("B1xD_T2-DERIV"),
1339  mesB1xDT2Displace);
1340 
1341  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("RHOxD_A2-DERIV"),
1342  mesRhoxDA2Displace);
1343 
1344  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("RHOxD_T1-DERIV"),
1345  mesRhoxDT1Displace);
1346 
1347  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("RHOxD_T2-DERIV"),
1348  mesRhoxDT2Displace);
1349 
1350  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("PIONxD_T2-DERIV"),
1351  mesPionxDT2Displace);
1352 
1353  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("PIONxB_T1-DERIV"),
1354  mesPionxBT1Displace);
1355 
1356  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("RHOxB_T1-DERIV"),
1357  mesRhoxBT1Displace);
1358 
1359  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("RHOxB_T2-DERIV"),
1360  mesRhoxBT2Displace);
1361 
1362  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xB_A1-DERIV"),
1363  mesA1xBA1Displace);
1364 
1365  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xB_T1-DERIV"),
1366  mesA1xBT1Displace);
1367 
1368  success &= Chroma::ThePropDisplacementFactory::Instance().registerObject(std::string("A1xB_T2-DERIV"),
1369  mesA1xBT2Displace);
1370 
1371  registered = true;
1372  }
1373  return success;
1374  }
1375  } // end namespace DerivQuarkDisplacementEnv
1376 
1377 } // end namespace Chroma
1378 
1379 
1380 
1381 
Compute anti-symmetric tensors.
Primary include file for CHROMA library code.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
void operator()(T &quark, const multi1d< LatticeColorMatrix > &u, enum PlusMinus isign) const
Displace the quark.
Base class for quark displacement.
static T & Instance()
Definition: singleton.h:432
Derivative displacements.
Parallel transport a lattice field.
Tensor used for E representations.
int symTensor3d(int i, int j, int k)
Return 3d symmetric tensor.
Definition: symtensor.cc:54
int antiSymTensor3d(int i, int j, int k)
Return 3d symmetric tensor.
Real ETensor3d(int alpha, int j, int k)
Return E antisymmetric tensor.
Definition: etensor.cc:51
void read(XMLReader &xml, const std::string &path, AsqtadFermActParams &param)
Read parameters.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
LatticeColorVector rightNabla(const multi1d< LatticeColorMatrix > &u, const LatticeColorVector &chi, int length, const multi1d< int > &path)
Apply a right nabla path to a lattice field.
LatticePropagator rightLap(const LatticePropagator &F, const multi1d< LatticeColorMatrix > &u, int length)
Apply "E_i" operator to the right onto source.
Definition: displace.cc:614
void write(XMLWriter &xml, const std::string &path, const DerivQuarkDisplacementEnv::ParamsDir &param)
Writer.
LatticePropagator rightB(const LatticePropagator &F, const multi1d< LatticeColorMatrix > &u, int mu, int length)
Apply "D_i" operator to the right onto source.
Definition: displace.cc:549
Params params
unsigned j
Definition: ldumul_w.cc:35
bool registerAll()
Register all the possible deriv mesons.
static bool registered
Local registration flag.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
QDP_error_exit("too many BiCG iterations", n_count, rsd_sq, cp, c, re_rvr, im_rvr, re_a, im_a, re_b, im_b)
int G5
Definition: pbg5p_w.cc:57
static multi1d< LatticeColorMatrix > u
LatticeFermion tmp
Definition: mespbg5p_w.cc:36
push(xml_out,"Condensates")
@ MINUS
Definition: chromabase.h:45
@ PLUS
Definition: chromabase.h:45
pop(xml_out)
START_CODE()
Double zero
Definition: invbicg.cc:106
int k
Definition: invbicg.cc:119
::std::string string
Definition: gtest.h:1979
All quark displacement constructors.
Factory for producing quark displacement objects.
void writeXML(XMLWriter &in, const std::string &path) const
Params for derivative quark displacement.
void writeXML(XMLWriter &in, const std::string &path) const
Compute symmetric tensors.