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);
53  void set_parameters(const double kappa, const std::valarray<int> bc);
54 
55  void set_config(Field *U)
56  { m_U = (Field_G *)U; }
57 
58  void set_mode(std::string mode);
59 
60  std::string get_mode() const;
61 
62  inline void mult(Field& v, const Field& f)
63  { (this->*m_mult)(v, f); }
64 
65  inline void mult_dag(Field& v, const Field& f)
66  { (this->*m_mult_dag)(v, f); }
67 
68  void mult_gm5(Field& v, const Field& f);
69 
70  void D(Field& v, const Field& f);
71 
72  inline void Ddag(Field& w, const Field& f)
73  {
74  Field w2(f.nin(), f.nvol(), f.nex());
75 
76  mult_gm5(w, f);
77  D(w2, w);
78  mult_gm5(w, w2);
79  }
80 
81  inline void DdagD(Field& w, const Field& f)
82  {
83  Field w2(f.nin(), f.nvol(), f.nex());
84 
85  D(w2, f);
86  mult_gm5(w, w2);
87  D(w2, w);
88  mult_gm5(w, w2);
89  }
90 
91  inline void H(Field& w, const Field& f)
92  {
93  Field w2(f.nin(), f.nvol(), f.nex());
94 
95  D(w2, f);
96  mult_gm5(w, w2);
97  }
98 
99  inline void mult_undef(Field&, const Field& f)
100  {
101  vout.crucial(m_vl, "Fopr_Wilson: mode undefined.\n");
102  abort();
103  }
104 
105  const Field_F mult_gm5p(int mu, const Field_F& w);
106 
107  void mult_up(int mu, Field& w, const Field& f);
108  void mult_dn(int mu, Field& w, const Field& f);
109 
110  inline void fprop_normalize(Field& v)
111  { v *= (2.0 * m_kappa); }
112 
113  inline void fopr_normalize(Field& v)
114  { v *= 1.0 / (2.0 * m_kappa); }
115 
116 
117  private:
118  //- prohibit copy
121 
122 
124 
125  int m_Nvol;
126  int m_Ndim;
127 
128  double m_kappa;
129  std::valarray<int> m_boundary;
130 
131  std::string m_mode;
132  std::string m_repr;
133 
134  void (Fopr_Wilson::Fopr_Wilson_impl::*m_mult) (Field&, const Field&);
136 
137  const Field_G *m_U;
138 
139  std::valarray<GammaMatrix> m_GM;
140 
143 
144 // void mult_p (int mu, Field_F&, const Field_F&);
145 // void mult_m (int mu, Field_F&, const Field_F&);
146 };
147 #endif