Bridge++  Ver. 1.3.x
fopr_CloverTerm_General.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_CLOVERTERM_GENERAL_INCLUDED
15 #define FOPR_CLOVERTERM_GENERAL_INCLUDED
16 
17 #include "fopr_Wilson.h"
18 #include "shiftField_lex.h"
19 #include "gammaMatrixSet.h"
20 #include "staples.h"
21 
22 #ifdef USE_PARAMETERS_FACTORY
23 #include "parameters_factory.h"
24 #endif
25 
26 #include "bridgeIO.h"
27 using Bridge::vout;
28 
30 
38 //- parameters class
40 {
41  public:
43 };
44 //- end
45 
47 {
48  public:
49  static const std::string class_name;
50 
51  private:
53  double m_cSW_s, m_cSW_t;
54  std::vector<int> m_boundary;
55  std::string m_repr;
56  std::string m_mode;
59 
61  int m_Nvol;
62 
63  const Field_G *m_U;
64 
69  // Bx = -iF(1,2), By = -iF(2,0), Bz = -iF(0,1)
70  // Ex = -iF(3,0), Ey = -iF(3,1), Ez = -iF(3,2)
71 
72  std::vector<GammaMatrix> m_SG;
74 
75  public:
77  : Fopr()
78  {
79  init("Dirac");
80  }
81 
82  Fopr_CloverTerm_General(std::string repr)
83  : Fopr()
84  {
85  init(repr);
86  }
87 
89  {
90  tidyup();
91  }
92 
93  void set_parameters(const Parameters& params);
94  void set_parameters(double kappa_s, double kappa_t,
95  double cSW_s, double cSW_t,
96  std::vector<int> bc);
97 
98  void set_config(Field *U);
99 
101  {
102  set_config(U.get());
103  }
104 
105  void set_mode(std::string mode)
106  {
107  m_mode = mode;
108  }
109 
110  std::string get_mode() const
111  {
112  return m_mode;
113  }
114 
115  void mult(Field& v, const Field& f)
116  {
117  if (m_mode == "D") {
118  mult_sigmaF(v, f);
119 // } else if(m_mode=="H"){
120 // H(v,f);
121  } else {
122  vout.crucial("%s: undefined mode = %s\n", class_name.c_str(), m_mode.c_str());
123  exit(EXIT_FAILURE);
124  }
125  }
126 
127  void mult_dag(Field& v, const Field& f)
128  {
129  mult(v, f);
130  }
131 
132  void mult_sigmaF(Field&, const Field&);
133 
134  void mult_gm5(Field& v, const Field& w);
135 
136  void mult_isigma(Field_F&, const Field_F&,
137  const int mu, const int nu);
138 
139  int field_nvol() { return m_Nvol; }
140  int field_nin() { return 2 * m_Nc * m_Nd; }
141  int field_nex() { return 1; }
142 
144  double flop_count();
145 
146  private:
147  void init(std::string repr);
148  void tidyup();
149 
150  void set_csw();
151  void set_fieldstrength(Field_G&, const int, const int);
152 
153  void gm5_dirac(Field&, const Field&);
154  void gm5_chiral(Field&, const Field&);
155 
156  void mult_csw(Field&, const Field&);
157  void mult_csw_dirac(Field&, const Field&);
158  void mult_csw_chiral(Field&, const Field&);
159 
160  void mult_csw_dirac(Field_F&, const Field_F&);
161  void mult_csw_chiral(Field_F&, const Field_F&);
162 
163  int sg_index(int mu, int nu) { return mu * m_Ndim + nu; }
164 };
165 #endif
double flop_count()
this returns the number of floating point operations.
BridgeIO vout
Definition: bridgeIO.cpp:278
void set_config(unique_ptr< Field_G > &U)
Staple construction.
Definition: staples.h:40
Container of Field-type object.
Definition: field.h:39
Class for parameters.
Definition: parameters.h:38
void set_fieldstrength(Field_G &, const int, const int)
void gm5_dirac(Field &, const Field &)
Field_G m_v2
for calculation of field strength.
Fopr_CloverTerm_General(std::string repr)
void mult_csw_chiral(Field &, const Field &)
Wilson-type fermion field.
Definition: field_F.h:37
int field_nvol()
returns the volume for which the fermion operator is defined.
std::vector< GammaMatrix > m_SG
Gamma Matrix class.
Definition: gammaMatrix.h:44
SU(N) gauge field.
Definition: field_G.h:38
void mult_csw_dirac(Field &, const Field &)
void mult_gm5(Field &v, const Field &w)
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
void set_config(Field *U)
setting pointer to the gauge configuration.
pointer get() const
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
void mult_csw(Field &, const Field &)
void(Fopr_CloverTerm_General::* m_csw)(Field &, const Field &)
void set_parameters(const Parameters &params)
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&, const Field&).
void gm5_chiral(Field &, const Field &)
void crucial(const char *format,...)
Definition: bridgeIO.cpp:48
const Field_G * m_U
pointer to gauge configuration.
void mult_sigmaF(Field &, const Field &)
Field_G m_Ez
field strength.
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
void(Fopr_CloverTerm_General::* m_gm5)(Field &, const Field &)
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Methods to shift a field in the lexical site index.
std::string get_mode() const
only for Fopr_Overlap
static const std::string class_name
Base class of fermion operator family.
Definition: fopr.h:49
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.