Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_CloverTerm_eo.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_CLOVERTERM_EO_INCLUDED
15 #define FOPR_CLOVERTERM_EO_INCLUDED
16 
17 #include <vector>
18 
19 #include "fopr_Wilson_eo.h"
20 #include "staples_eo.h"
21 
22 #include "gammaMatrixSet.h"
23 
24 #include "mat_SU_N.h"
25 #include "vec_SU_N.h"
26 
27 #include "bridgeIO.h"
28 using Bridge::vout;
29 
31 
53 //- parameters class
55 {
56  public:
58 };
59 //- end
60 
61 class Fopr_CloverTerm_eo : public Fopr
62 {
63  public:
64  static const std::string class_name;
65 
66 // This class return D_ee = 1-f_ee or D_oo = 1-f_oo
67  private:
68  double m_kappa;
69  double m_cSW;
70  std::valarray<int> m_boundary;
71  std::string m_repr;
72  std::string m_mode;
73 
75  int m_Ndim;
76  int m_Nc, m_Nd, m_Ndm2;
77  int m_NinF;
78 
80  std::valarray<GammaMatrix> m_GM, m_SG;
81 
82  void (Fopr_CloverTerm_eo::*m_mult)(Field &, const Field &);
83 
85 
86  const Field_G *m_Ueo;
87 
90 
95 
98 
100  valarray<Field_G> m_T2;
101 
102  public:
103  Fopr_CloverTerm_eo(std::string repr)
104  : m_Nvol(CommonParameters::Nvol()),
105  m_Nvol2(m_Nvol / 2),
106  m_Ndim(CommonParameters::Ndim()),
107  m_Nc(CommonParameters::Nc()),
108  m_Nd(CommonParameters::Nd()),
109  m_Ndm2(m_Nd * m_Nd / 2),
110  m_T(m_Nvol, m_Ndm2)
111  {
112  init(repr);
113  }
114 
116 
117  void set_parameters(const Parameters& params);
118  void set_parameters(const double kappa, const double cSW,
119  const std::valarray<int> bc);
120  void set_config(Field *Ueo);
121 
122  void set_mode(std::string mode)
123  {
124  m_mode = mode;
125  }
126 
127  std::string get_mode() const
128  {
129  return m_mode;
130  }
131 
133  const Field mult(const Field& f)
134  {
135  Field v(f.nin(), f.nvol(), f.nex());
136 
137  mult(v, f);
138  return v;
139  }
140 
141  const Field mult_dag(const Field& f)
142  {
143  Field v(f.nin(), f.nvol(), f.nex());
144 
145  mult_dag(v, f);
146  return v;
147  }
148 
149  void mult(Field& v, const Field& f)
150  {
151  if (m_mode == "even") {
152  D(v, f, 0);
153  } else if (m_mode == "odd") {
154  D(v, f, 1);
155  } else {
156  vout.crucial("%s: undefined mode = %s\n", class_name.c_str(), m_mode.c_str());
157  abort();
158  }
159  }
160 
161  void mult_dag(Field& v, const Field& f)
162  {
163  mult(v, f);
164  }
165 
166  void mult_isigma(Field_F&, const Field_F&,
167  const int mu, const int nu);
168 
169  const Field D(const Field& f, const int ieo)
170  {
171  Field v(f.nin(), f.nvol(), f.nex());
172 
173  D(v, f, ieo);
174  return v;
175  }
176 
177  void D(Field& v, const Field& f, const int ieo);
178 
180  void D_dirac(Field& v, const Field& f, const int ieo);
181 
183  void D_chiral(Field& v, const Field& f, const int ieo);
184 
185  const Field_F mult_csw_inv(const Field_F&, const int ieo);
186 
187  const Field_G trSigmaInv(const int mu, const int nu);
188 
189  void mult_csw_inv(Field&, const Field&, const int ieo);
190 
191  void mult_csw_inv_dirac(Field&, const Field&, const int ieo);
192 
193  void mult_csw_inv_chiral(Field&, const Field&, const int ieo);
194 
195  std::vector<double> csmatrix(const int&);
196 
197  int field_nvol() { return m_Nvol2; }
198  int field_nin() { return 2 * m_Nc * m_Nd; }
199  int field_nex() { return 1; }
200 
202  double flop_count();
203 
204  private:
205  void init(std::string repr);
206  void tidyup();
207 
208  void solve_csw_inv();
209 
210  void set_csw();
211 
213  void set_csw_dirac();
214 
216  void set_csw_chiral();
217 
218  void mult_csw(Field_F&, const Field_F&, const int ieo);
219  void set_fieldstrength(Field_G&, const int, const int);
220 
221  int sg_index(int mu, int nu) { return mu * m_Ndim + nu; }
222 };
223 #endif
void D_chiral(Field &v, const Field &f, const int ieo)
explicit implementation for Chiral representation (for Imp-version).
BridgeIO vout
Definition: bridgeIO.cpp:207
void init(std::string repr)
Container of Field-type object.
Definition: field.h:37
void D_dirac(Field &v, const Field &f, const int ieo)
explicit implementation for Dirac representation (for Imp-version).
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&amp;, const Field&amp;).
int nvol() const
Definition: field.h:101
Field_G m_T
m_T = 1 - kappa c_SW sigma F / 2
void set_csw_dirac()
explicit implementation for Dirac representation (for Imp-version).
std::valarray< GammaMatrix > m_SG
const Field_G * m_Ueo
Class for parameters.
Definition: parameters.h:40
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
int field_nvol()
returns the volume for which the fermion operator is defined.
Even-odd site index.
Definition: index_eo.h:39
void mult_csw_inv_chiral(Field &, const Field &, const int ieo)
void set_parameters(const Parameters &params)
Wilson-type fermion field.
Definition: field_F.h:37
int nin() const
Definition: field.h:100
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
SU(N) gauge field.
Definition: field_G.h:36
static const std::string class_name
const Field_F mult_csw_inv(const Field_F &, const int ieo)
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
const Field D(const Field &f, const int ieo)
void(Fopr_CloverTerm_eo::* m_mult)(Field &, const Field &)
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
int nex() const
Definition: field.h:102
Common parameter class: provides parameters as singleton.
void set_fieldstrength(Field_G &, const int, const int)
void mult_csw(Field_F &, const Field_F &, const int ieo)
Fopr_CloverTerm_eo(std::string repr)
Methods to shift the even-odd field.
Definition: shiftField_eo.h:45
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
const Field mult(const Field &f)
return D = D^dag = 1-f_ee or 1-f_oo
std::string get_mode() const
const Field_G trSigmaInv(const int mu, const int nu)
const Field mult_dag(const Field &f)
hermitian conjugate of mult(const Field&amp;).
std::valarray< int > m_boundary
Base class of fermion operator family.
Definition: fopr.h:39
void set_csw_chiral()
explicit implementation for Chiral representation (for Imp-version).
void mult_csw_inv_dirac(Field &, const Field &, const int ieo)
std::valarray< GammaMatrix > m_GM
Gamma Matrix and Sigma_{mu,nu} = -i [Gamma_mu, Gamma_nu] /2.
double flop_count()
retuns number of floating point number operations.
std::vector< double > csmatrix(const int &)
valarray< Field_G > m_T2
m_T2 is used in Org-version.
int sg_index(int mu, int nu)
ShiftField_eo m_shift_eo
void set_config(Field *Ueo)
setting pointer to the gauge configuration.