Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_Wilson_impl.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_WILSON_IMPL_INCLUDED
15 #define FOPR_WILSON_IMPL_INCLUDED
16 
17 #include "fopr_Wilson.h"
18 
19 #include "gammaMatrixSet.h"
20 #include "shiftField_lex.h"
21 
22 #include "mat_SU_N.h"
23 #include "vec_SU_N.h"
24 
25 #include "bridgeIO.h"
26 using Bridge::vout;
27 
29 
45 {
46  public:
47 
49 
50  void init(std::string repr);
51 
52  void set_parameters(const double kappa, const std::valarray<int> bc);
53 
54  void set_config(Field *U)
55  { m_U = (Field_G *)U; }
56 
57  void set_mode(std::string mode);
58 
59  std::string get_mode() const;
60 
61  inline void mult(Field& v, const Field& f)
62  { (this->*m_mult)(v, f); }
63 
64  inline void mult_dag(Field& v, const Field& f)
65  { (this->*m_mult_dag)(v, f); }
66 
67  inline void mult_gm5(Field& v, const Field& f)
68  { (this->*m_gm5)(v, f); }
69 
70  inline void D(Field& v, const Field& f)
71  { (this->*m_D)(v, f); }
72 
73  inline void Ddag(Field& w, const Field& f)
74  {
75  Field w2(f.nin(), f.nvol(), f.nex());
76 
77  mult_gm5(w, f);
78  D(w2, w);
79  mult_gm5(w, w2);
80  }
81 
82  inline void DdagD(Field& w, const Field& f)
83  {
84  Field w2(f.nin(), f.nvol(), f.nex());
85 
86  D(w2, f);
87  mult_gm5(w, w2);
88  D(w2, w);
89  mult_gm5(w, w2);
90  }
91 
92  inline void H(Field& w, const Field& f)
93  {
94  Field w2(f.nin(), f.nvol(), f.nex());
95 
96  D(w2, f);
97  mult_gm5(w, w2);
98  }
99 
100  inline void mult_undef(Field&, const Field& f)
101  {
102  vout.crucial(m_vl, "Fopr_Wilson: mode undefined.\n");
103  abort();
104  }
105 
106  const Field_F mult_gm5p(int mu, const Field_F& w);
107 
108  void mult_up(int mu, Field& w, const Field& f);
109  void mult_dn(int mu, Field& w, const Field& f);
110 
111  inline void fprop_normalize(Field& v)
112  { v *= (2.0 * m_kappa); }
113 
114  inline void fopr_normalize(Field& v)
115  { v *= 1.0 / (2.0 * m_kappa); }
116 
117 
118  private:
119 
120  // prohibit copy
123 
124 
126 
127  int m_Nvol;
128  int m_Ndim;
129 
130  double m_kappa;
131  std::valarray<int> m_boundary;
132 
133  std::string m_mode;
134  std::string m_repr;
135 
142 
143  const Field_G *m_U;
144 
145  std::valarray<GammaMatrix> m_GM;
146 
147 // ShiftField_lex shift;
148 // Field_F trf, trf2;
149 
150  void D_chiral(Field&, const Field&);
151  void D_dirac(Field&, const Field&);
152  void gm5_chiral(Field&, const Field&);
153  void gm5_dirac(Field&, const Field&);
154 
155  void mult_p(int mu, Field_F&, const Field_F&);
156  void mult_m(int mu, Field_F&, const Field_F&);
157 
158  void mult_xp(Field&, const Field&);
159  void mult_xm(Field&, const Field&);
160  void mult_yp(Field&, const Field&);
161  void mult_ym(Field&, const Field&);
162  void mult_zp(Field&, const Field&);
163  void mult_zm(Field&, const Field&);
164 
165  void mult_tp_dirac(Field&, const Field&);
166  void mult_tm_dirac(Field&, const Field&);
167  void mult_tp_chiral(Field&, const Field&);
168  void mult_tm_chiral(Field&, const Field&);
169 };
170 #endif