Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_Wilson_eo.h
Go to the documentation of this file.
1 
15 #ifndef FOPR_WILSON_EO_INCLUDED
16 #define FOPR_WILSON_EO_INCLUDED
17 
18 #include "fopr_Wilson.h"
19 
20 #include "fopr_eo.h"
21 #include "shiftField_eo.h"
22 
23 #include "gammaMatrixSet.h"
24 
25 #include "bridgeIO.h"
26 using Bridge::vout;
27 
28 //- parameters class
29 class Parameters_Fopr_Wilson_eo : virtual public Parameters
30 {
31  public:
33 };
34 //- end
35 
37 
53 class Fopr_Wilson_eo : public Fopr_eo
54 {
55  public:
56  static const std::string class_name;
57 
58  private:
59  int m_Nc, m_Nd, m_Ndim;
61 
62  double m_kappa;
63  std::valarray<int> m_boundary;
66 
70 
71  std::valarray<GammaMatrix> m_GM;
72 
73  std::string m_mode;
74  std::string m_repr;
75 
76  // Field_F m_vF1; //!< working field.
77 
78  void (Fopr_Wilson_eo::*m_mult)(Field &, const Field &);
79  void (Fopr_Wilson_eo::*m_mult_dag)(Field &, const Field &);
80  void (Fopr_Wilson_eo::*m_D)(Field &, const Field &);
81  void (Fopr_Wilson_eo::*m_gm5)(Field &, const Field &);
82  void (Fopr_Wilson_eo::*m_preProp)(Field &, Field &, const Field &);
83  void (Fopr_Wilson_eo::*m_postProp)(Field &, const Field &, const Field &);
84 
85  public:
86 
88 
89  Fopr_Wilson_eo(std::string repr);
90 
92 
93  void set_parameters(const Parameters& params);
94  void set_parameters(const double kappa, const std::valarray<int> bc);
95 
96  void set_config(Field *U);
97 
98  // method for even odd fermion operator
99  void preProp(Field& Be, Field& bo, const Field& b)
100  { (this->*m_preProp)(Be, bo, b); }
101 
102  void postProp(Field& x, const Field& xe, const Field& bo)
103  { (this->*m_postProp)(x, xe, bo); }
104 
105  void prePropD(Field&, Field&, const Field&);
106  void postPropD(Field&, const Field&, const Field&);
107  void prePropDag(Field&, Field&, const Field&);
108  void postPropDag(Field&, const Field&, const Field&);
109 
110  const Field mult(const Field& f)
111  {
113  Field v(f.nin(), f.nvol(), f.nex());
114  mult(v, f);
115  return v;
116  }
117 
118  const Field mult_dag(const Field& f)
119  {
121  Field v(f.nin(), f.nvol(), f.nex());
122  mult_dag(v, f);
123  return v;
124  }
125 
126  void mult(Field& v, const Field& f)
127  { (this->*m_mult)(v, f); }
128 
129  void mult_dag(Field& v, const Field& f)
130  { (this->*m_mult_dag)(v, f); }
131 
132  void set_mode(std::string mode)
133  {
134  m_mode = mode;
135 
136  if (m_mode == "D") {
141  } else if (m_mode == "Ddag") {
146  } else if (m_mode == "DdagD") {
149  } else if (m_mode == "DDdag") {
152  } else if (m_mode == "H") {
155  } else {
156  vout.crucial("%s: input mode is undefined.\n", class_name.c_str());
157  abort();
158  }
159  }
160 
161  std::string get_mode() const
162  { return m_mode; }
163 
165  void assert_single_thread();
166 
168  double flop_count();
169 
170  void mult_undef(Field&, const Field&);
171  void D(Field& v, const Field& f);
172  void Ddag(Field& v, const Field& f);
173  void DdagD(Field& v, const Field& f);
174  void DDdag(Field& v, const Field& f);
175  void H(Field& v, const Field& f);
176  void mult_gm5(Field& v, const Field& f);
177 
178  const Field MeoMoe(const Field& f);
179  const Field D(const Field& f);
180  const Field Ddag(const Field& f);
181  const Field DdagD(const Field& f);
182  const Field DDdag(const Field& f);
183  const Field H(const Field& f);
184  const Field mult_gm5(const Field&);
185 
186  const Field_F Meo(const Field_F&, const int ieo);
187  const Field_F Mdageo(const Field_F&, const int ieo);
188 
190  // void Meo(Field_F&, const Field_F&, const int ieo);
191  void Meo(Field&, const Field&, const int ieo);
192 
193  const Field_F Meo_gm5(const Field_F&, const int ieo);
194 
196  const Field gm5p(const int mu, const Field& v);
197 
198  int field_nvol() { return m_Nvol2; }
199  int field_nin() { return 2 * m_Nc * m_Nd; }
200  int field_nex() { return 1; }
201 
202  private:
203  // void init(const std::string);
204  void mult_p(int mu, Field_F&, const Field_F&, const int ieo);
205  void mult_m(int mu, Field_F&, const Field_F&, const int ieo);
206 
209 
211 };
212 #endif
const Field_F Meo(const Field_F &, const int ieo)
void(Fopr_Wilson_eo::* m_postProp)(Field &, const Field &, const Field &)
BridgeIO vout
Definition: bridgeIO.cpp:207
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
Index_eo m_index
void H(Field &v, const Field &f)
void mult_gm5(Field &v, const Field &f)
const Field_F Mdageo(const Field_F &, const int ieo)
void D(Field &v, const Field &f)
Implementation of even-odd Wilson fermion operator.
Field_G * m_Ueo
Container of Field-type object.
Definition: field.h:37
const Field MeoMoe(const Field &f)
const Field mult_dag(const Field &f)
hermitian conjugate of mult(const Field&amp;).
void set_parameters(const Parameters &params)
int nvol() const
Definition: field.h:101
int field_nvol()
returns the volume for which the fermion operator is defined.
Fopr_Wilson_eo_impl * m_impl
Class for parameters.
Definition: parameters.h:40
const Field mult(const Field &f)
multiplies fermion operator to a given field and returns the resultant field.
Even-odd site index.
Definition: index_eo.h:39
void postProp(Field &x, const Field &xe, const Field &bo)
std::string m_mode
Wilson-type fermion field.
Definition: field_F.h:37
void mult_m(int mu, Field_F &, const Field_F &, const int ieo)
void(Fopr_Wilson_eo::* m_mult)(Field &, const Field &)
void mult_p(int mu, Field_F &, const Field_F &, const int ieo)
double flop_count()
this returns the number of floating point number operations.
int nin() const
Definition: field.h:100
void DdagD(Field &v, const Field &f)
SU(N) gauge field.
Definition: field_G.h:36
std::string m_repr
void set_config(Field *U)
setting pointer to the gauge configuration.
void Ddag(Field &v, const Field &f)
void(Fopr_Wilson_eo::* m_gm5)(Field &, const Field &)
void postPropDag(Field &, const Field &, const Field &)
Base class of fermion operator family.
Definition: fopr_eo.h:33
int nex() const
Definition: field.h:102
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
void(Fopr_Wilson_eo::* m_mult_dag)(Field &, const Field &)
void DDdag(Field &v, const Field &f)
Methods to shift the even-odd field.
Definition: shiftField_eo.h:45
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
const Field gm5p(const int mu, const Field &v)
gamma_5 (1 - gamma_mu) v(x + mu)
Even-odd Wilson fermion operator.
void mult_undef(Field &, const Field &)
void(Fopr_Wilson_eo::* m_D)(Field &, const Field &)
void preProp(Field &Be, Field &bo, const Field &b)
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
std::string get_mode() const
void postPropD(Field &, const Field &, const Field &)
static const std::string class_name
void(Fopr_Wilson_eo::* m_preProp)(Field &, Field &, const Field &)
void prePropD(Field &, Field &, const Field &)
void assert_single_thread()
function returning Field instance must be called from single thread.
std::valarray< GammaMatrix > m_GM
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&amp;, const Field&amp;).
void prePropDag(Field &, Field &, const Field &)
const Field_F Meo_gm5(const Field_F &, const int ieo)
std::valarray< int > m_boundary
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
ShiftField_eo shift