Bridge++  Ver. 1.3.x
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 
55 class Fopr_Wilson_eo : public Fopr_eo
56 {
57  public:
58  static const std::string class_name;
59 
60  private:
61  int m_Nc, m_Nd, m_Ndim;
63 
64  double m_kappa;
65  std::vector<int> m_boundary;
68 
72 
73  std::vector<GammaMatrix> m_GM;
74 
75  std::string m_mode;
76  std::string m_repr;
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  Fopr_Wilson_eo(std::string repr);
89 
91 
92  void set_parameters(const Parameters& params);
93  void set_parameters(const double kappa, const std::vector<int> bc);
94 
95  void set_config(Field *U);
96 
98  {
99  set_config(U.get());
100  }
101 
102  // method for even odd fermion operator
103  void preProp(Field& Be, Field& bo, const Field& b)
104  { (this->*m_preProp)(Be, bo, b); }
105 
106  void postProp(Field& x, const Field& xe, const Field& bo)
107  { (this->*m_postProp)(x, xe, bo); }
108 
109  void prePropD(Field&, Field&, const Field&);
110  void postPropD(Field&, const Field&, const Field&);
111  void prePropDag(Field&, Field&, const Field&);
112  void postPropDag(Field&, const Field&, const Field&);
113 
114 
115  void mult(Field& v, const Field& f)
116  { (this->*m_mult)(v, f); }
117 
118  void mult_dag(Field& v, const Field& f)
119  { (this->*m_mult_dag)(v, f); }
120 
121  void set_mode(std::string mode)
122  {
123  m_mode = mode;
124 
125  if (m_mode == "D") {
130  } else if (m_mode == "Ddag") {
135  } else if (m_mode == "DdagD") {
138  } else if (m_mode == "DDdag") {
141  } else if (m_mode == "H") {
144  } else {
145  vout.crucial("%s: input mode is undefined.\n", class_name.c_str());
146  exit(EXIT_FAILURE);
147  }
148  }
149 
150  std::string get_mode() const
151  { return m_mode; }
152 
154  double flop_count();
155 
156  void mult_undef(Field&, const Field&);
157  void MeoMoe(Field&, const Field&);
158  void D(Field& v, const Field& f);
159  void Ddag(Field& v, const Field& f);
160  void DdagD(Field& v, const Field& f);
161  void DDdag(Field& v, const Field& f);
162  void H(Field& v, const Field& f);
163  void mult_gm5(Field& v, const Field& f);
164 
166  void Meo(Field&, const Field&, const int ieo);
167  void Mdageo(Field&, const Field&, const int ieo);
168  void Meo_gm5(Field&, const Field&, const int ieo);
169 
171  void gm5p(const int mu, Field& w, const Field& v);
172 
173  int field_nvol() { return m_Nvol2; }
174  int field_nin() { return 2 * m_Nc * m_Nd; }
175  int field_nex() { return 1; }
176 
177  private:
178  // void init(const std::string);
179  void mult_p(int mu, Field_F&, const Field_F&, const int ieo);
180  void mult_m(int mu, Field_F&, const Field_F&, const int ieo);
181 
184 
186 };
187 #endif
void(Fopr_Wilson_eo::* m_mult)(Field &, const Field &)
BridgeIO vout
Definition: bridgeIO.cpp:278
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument) and set the resultant field to the 1st ar...
Index_eo m_index
void H(Field &v, const Field &f)
void mult_gm5(Field &v, const Field &f)
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:39
void set_parameters(const Parameters &params)
void(Fopr_Wilson_eo::* m_preProp)(Field &, Field &, const Field &)
int field_nvol()
returns the volume for which the fermion operator is defined.
Fopr_Wilson_eo_impl * m_impl
void(Fopr_Wilson_eo::* m_mult_dag)(Field &, const Field &)
Class for parameters.
Definition: parameters.h:38
Even-odd site index.
Definition: index_eo.h:38
void postProp(Field &x, const Field &xe, const Field &bo)
void(Fopr_Wilson_eo::* m_D)(Field &, const Field &)
std::string m_mode
void(Fopr_Wilson_eo::* m_gm5)(Field &, const Field &)
Wilson-type fermion field.
Definition: field_F.h:37
void mult_m(int mu, Field_F &, const Field_F &, const int ieo)
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.
std::vector< int > m_boundary
void DdagD(Field &v, const Field &f)
SU(N) gauge field.
Definition: field_G.h:38
std::string m_repr
void gm5p(const int mu, Field &w, const Field &v)
gamma_5 (1 - gamma_mu) v(x + mu)
void set_config(Field *U)
setting pointer to the gauge configuration.
void Ddag(Field &v, const Field &f)
void Meo_gm5(Field &, const Field &, const int ieo)
void postPropDag(Field &, const Field &, const Field &)
pointer get() const
Base class of fermion operator family.
Definition: fopr_eo.h:34
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
void DDdag(Field &v, const Field &f)
void(Fopr_Wilson_eo::* m_postProp)(Field &, const Field &, const Field &)
Methods to shift the even-odd field.
Definition: shiftField_eo.h:45
void crucial(const char *format,...)
Definition: bridgeIO.cpp:48
Even-odd Wilson fermion operator.
void set_config(unique_ptr< Field_G > &U)
void Meo(Field &, const Field &, const int ieo)
even-odd operatior: ieo=0: even <– odd, ieo=1: odd <– even
void mult_undef(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
only for Fopr_Overlap
void postPropD(Field &, const Field &, const Field &)
void Mdageo(Field &, const Field &, const int ieo)
static const std::string class_name
void prePropD(Field &, Field &, const Field &)
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&, const Field&).
void prePropDag(Field &, Field &, const Field &)
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
void MeoMoe(Field &, const Field &)
std::vector< GammaMatrix > m_GM
ShiftField_eo shift