Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_CloverTerm.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_CLOVERTERM_INCLUDED
15 #define FOPR_CLOVERTERM_INCLUDED
16 
17 #include "fopr_Wilson.h"
18 #include "shiftField_lex.h"
19 #include "gammaMatrixSet.h"
20 #include "staples.h"
21 
22 #include "bridgeIO.h"
23 using Bridge::vout;
24 
26 
43 //- parameters class
44 class Parameters_Fopr_CloverTerm : virtual public Parameters
45 {
46  public:
48 };
49 //- end
50 
51 class Fopr_CloverTerm : public Fopr
52 {
53  public:
54  static const std::string class_name;
55 
56  private:
57  double m_kappa;
58  double m_cSW;
59  std::valarray<int> m_boundary;
60  std::string m_repr;
61  std::string m_mode;
62  void (Fopr_CloverTerm::*m_csw)(Field &, const Field &);
63  void (Fopr_CloverTerm::*m_gm5)(Field &, const Field &);
64 
66  int m_Nvol;
67 
68  const Field_G *m_U;
69 
74  // Bx = -iF(1,2), By = -iF(2,0), Bz = -iF(0,1)
75  // Ex = -iF(3,0), Ey = -iF(3,1), Ez = -iF(3,2)
76 
77  std::valarray<GammaMatrix> m_SG;
79 
80  public:
82  : Fopr()
83  {
84  init("Dirac");
85  }
86 
87  Fopr_CloverTerm(std::string repr)
88  : Fopr()
89  {
90  init(repr);
91  }
92 
94  {
95  tidyup();
96  }
97 
98  void set_parameters(const Parameters& params);
99  void set_parameters(double kappa, double cSW, std::valarray<int> bc);
100  void set_config(Field *U);
101 
102  void set_mode(std::string mode)
103  {
104  m_mode = mode;
105  }
106 
107  std::string get_mode() const
108  {
109  return m_mode;
110  }
111 
112  const Field mult(const Field& f)
113  {
114  Field v(f.nin(), f.nvol(), f.nex());
115 
116  mult(v, f);
117  return v;
118  }
119 
120  const Field mult_dag(const Field& f)
121  {
122  Field v(f.nin(), f.nvol(), f.nex());
123 
124  mult_dag(v, f);
125  return v;
126  }
127 
128  void mult(Field& v, const Field& f)
129  {
130  if (m_mode == "D") {
131  mult_sigmaF(v, f);
132 // } else if(m_mode=="H"){
133 // H(v,f);
134  } else {
135  vout.crucial("%s: undefined mode = %s\n", class_name.c_str(), m_mode.c_str());
136  abort();
137  }
138  }
139 
140  void mult_dag(Field& v, const Field& f)
141  {
142  mult(v, f);
143  }
144 
145  void mult_sigmaF(Field&, const Field&);
146 
147  const Field mult_gm5(const Field& f)
148  {
149  Field v(f.nin(), f.nvol(), f.nex());
150 
151  mult_gm5(v, f);
152  return v;
153  }
154 
155  void mult_gm5(Field& v, const Field& w);
156 
157  void mult_isigma(Field_F&, const Field_F&,
158  const int mu, const int nu);
159 
160  int field_nvol() { return m_Nvol; }
161  int field_nin() { return 2 * m_Nc * m_Nd; }
162  int field_nex() { return 1; }
163 
165  double flop_count();
166 
167  private:
168 
169  void init(std::string repr);
170  void tidyup();
171 
172  void set_csw();
173  void set_fieldstrength(Field_G&, const int, const int);
174 
175  void gm5_dirac(Field&, const Field&);
176  void gm5_chiral(Field&, const Field&);
177 
178  void mult_csw(Field&, const Field&);
179  void mult_csw_dirac(Field&, const Field&);
180  void mult_csw_chiral(Field&, const Field&);
181 
182  void mult_csw_dirac(Field_F&, const Field_F&);
183  void mult_csw_chiral(Field_F&, const Field_F&);
184 
185  int sg_index(int mu, int nu) { return mu * m_Ndim + nu; }
186 };
187 #endif
void set_config(Field *U)
setting pointer to the gauge configuration.
void(Fopr_CloverTerm::* m_gm5)(Field &, const Field &)
BridgeIO vout
Definition: bridgeIO.cpp:207
Staple construction.
Definition: staples.h:40
void mult_sigmaF(Field &, const Field &)
Field_G m_Ez
field strength.
GammaMatrix m_GM5
void mult_csw_chiral(Field &, const Field &)
void gm5_chiral(Field &, const Field &)
const Field mult_gm5(const Field &f)
std::string m_mode
Container of Field-type object.
Definition: field.h:37
void set_parameters(const Parameters &params)
int nvol() const
Definition: field.h:101
void set_fieldstrength(Field_G &, const int, const int)
Class for parameters.
Definition: parameters.h:40
Wilson-type fermion field.
Definition: field_F.h:37
int nin() const
Definition: field.h:100
Gamma Matrix class.
Definition: gammaMatrix.h:45
Field_G m_v2
for calculation of field strength.
SU(N) gauge field.
Definition: field_G.h:36
void gm5_dirac(Field &, const Field &)
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&amp;, const Field&amp;).
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
Fopr_CloverTerm(std::string repr)
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
int nex() const
Definition: field.h:102
Clover term operator.
void init(std::string repr)
std::string m_repr
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
double flop_count()
this returns the number of floating point operations.
ShiftField_lex m_shift
void mult_csw(Field &, const Field &)
const Field_G * m_U
pointer to gauge configuration.
static const std::string class_name
const Field mult(const Field &f)
multiplies fermion operator to a given field and returns the resultant field.
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
int sg_index(int mu, int nu)
Methods to shift a field in the lexical site index.
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
std::string get_mode() const
std::valarray< GammaMatrix > m_SG
void mult_csw_dirac(Field &, const Field &)
Base class of fermion operator family.
Definition: fopr.h:39
int field_nvol()
returns the volume for which the fermion operator is defined.
std::valarray< int > m_boundary
void(Fopr_CloverTerm::* m_csw)(Field &, const Field &)
const Field mult_dag(const Field &f)
hermitian conjugate of mult(const Field&amp;).