Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_Clover.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_CLOVER_INCLUDED
15 #define FOPR_CLOVER_INCLUDED
16 
17 #include "fopr_Wilson.h"
18 #include "fopr_CloverTerm.h"
19 
20 #include "bridgeIO.h"
21 using Bridge::vout;
22 
24 
39 //- parameters class
40 class Parameters_Fopr_Clover : virtual public Parameters
41 {
42  public:
44 };
45 //- end
46 
47 class Fopr_Clover : public Fopr
48 {
49  public:
50  static const std::string class_name;
51 
52  private:
53  double m_kappa;
54  double m_cSW;
55  std::valarray<int> m_boundary;
56  std::string m_repr;
57  std::string m_mode;
58 
60 
63  const Field_G *m_U;
64 
65  // Fopr_Clover_imp* m_imp; //!< pimple prescription
67 
68  public:
69 
71  : Fopr()
72  {
73  init("Dirac");
74  }
75 
76  Fopr_Clover(std::string repr)
77  : Fopr()
78  {
79  init(repr);
80  }
81 
83  {
84  tidyup();
85  }
86 
87  void set_parameters(const Parameters& params);
88  void set_parameters(double kappa, double cSW, std::valarray<int> bc);
89 
90  void set_config(Field *U)
91  {
92  m_U = (Field_G *)U;
93  m_fopr_w->set_config(U);
95  }
96 
97  void set_mode(std::string mode)
98  {
99  m_mode = mode;
100  }
101 
102  std::string get_mode() const
103  {
104  return m_mode;
105  }
106 
107  const Field mult(const Field& f)
108  {
109  Field v(f.nin(), f.nvol(), f.nex());
110 
111  mult(v, f);
112  return v;
113  }
114 
115  const Field mult_dag(const Field& f)
116  {
117  Field v(f.nin(), f.nvol(), f.nex());
118 
119  mult_dag(v, f);
120  return v;
121  }
122 
123  void mult(Field& v, const Field& f)
124  {
125  if (m_mode == "D") {
126  D(v, f);
127  } else if (m_mode == "Ddag") {
128  Ddag(v, f);
129  } else if (m_mode == "DdagD") {
130  DdagD(v, f);
131  } else if (m_mode == "DDdag") {
132  DDdag(v, f);
133  } else if (m_mode == "H") {
134  H(v, f);
135  } else {
136  vout.crucial(m_vl, "%s: undefined mode = %s.\n", class_name.c_str(), m_mode.c_str());
137  abort();
138  }
139  }
140 
141  void mult_dag(Field& v, const Field& f)
142  {
143  if (m_mode == "D") {
144  Ddag(v, f);
145  } else if (m_mode == "DdagD") {
146  DdagD(v, f);
147  } else if (m_mode == "Ddag") {
148  D(v, f);
149  } else if (m_mode == "H") {
150  H(v, f);
151  } else {
152  vout.crucial(m_vl, "%s: undefined mode = %s.\n", class_name.c_str(), m_mode.c_str());
153  abort();
154  }
155  }
156 
157  void D(Field&, const Field&);
158  void Ddag(Field&, const Field&);
159  void DdagD(Field&, const Field&);
160  void DDdag(Field&, const Field&);
161  void H(Field&, const Field&);
162 
163  void mult_gm5(Field& v, const Field& w)
164  {
165  m_fopr_w->mult_gm5(v, w);
166  }
167 
168  const Field mult_gm5(const Field& w)
169  {
170  return m_fopr_w->mult_gm5(w);
171  }
172 
173  void mult_up(int mu, Field& v, const Field& w)
174  {
175  m_fopr_w->mult_up(mu, v, w);
176  }
177 
178  void mult_dn(int mu, Field& v, const Field& w)
179  {
180  m_fopr_w->mult_dn(mu, v, w);
181  }
182 
183  void mult_isigma(Field_F&, const Field_F&,
184  const int mu, const int nu);
185 
186  int field_nvol() { return m_Nvol; }
187  int field_nin() { return 2 * m_Nc * m_Nd; }
188  int field_nex() { return 1; }
189 
191  double flop_count();
192 
193  private:
194 
195  void init(std::string repr);
196  void tidyup();
197 };
198 #endif
Fopr_Clover(std::string repr)
Definition: fopr_Clover.h:76
void DDdag(Field &, const Field &)
void set_config(Field *U)
setting pointer to the gauge configuration.
BridgeIO vout
Definition: bridgeIO.cpp:207
const Field_G * m_U
gauge configuration (pointer)
Definition: fopr_Clover.h:63
void mult_dn(int mu, Field &v, const Field &w)
Definition: fopr_Clover.h:178
void tidyup()
Definition: fopr_Clover.cpp:73
std::valarray< int > m_boundary
boundary conditions
Definition: fopr_Clover.h:55
const Field mult(const Field &f)
multiplies fermion operator to a given field and returns the resultant field.
Definition: fopr_Clover.h:107
Container of Field-type object.
Definition: field.h:37
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
Definition: fopr_Clover.h:123
int nvol() const
Definition: field.h:101
const Field mult_dag(const Field &f)
hermitian conjugate of mult(const Field&amp;).
Definition: fopr_Clover.h:115
void mult_up(int mu, Field &w, const Field &v)
adding the hopping to nearest neighbor site in mu-th direction.
void DdagD(Field &, const Field &)
Class for parameters.
Definition: parameters.h:40
void H(Field &, const Field &)
std::string m_mode
mode of multiplication
Definition: fopr_Clover.h:57
Clover fermion operator.
Definition: fopr_Clover.h:40
Wilson-type fermion field.
Definition: field_F.h:37
std::string m_repr
gamma matrix representation
Definition: fopr_Clover.h:56
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
int nin() const
Definition: field.h:100
void set_config(Field *U)
setting pointer to the gauge configuration.
Definition: fopr_Clover.h:90
SU(N) gauge field.
Definition: field_G.h:36
void set_config(Field *U)
setting pointer to the gauge configuration.
Definition: fopr_Wilson.cpp:87
double m_cSW
clover coefficient
Definition: fopr_Clover.h:54
double m_kappa
hopping parameter
Definition: fopr_Clover.h:53
Bridge::VerboseLevel m_vl
Definition: fopr.h:99
Fopr_Wilson * m_fopr_w
Wilson fermion kernel.
Definition: fopr_Clover.h:61
void mult_dn(int mu, Field &w, const Field &v)
static const std::string class_name
Definition: fopr_Clover.h:50
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
Definition: fopr_Clover.h:188
int nex() const
Definition: field.h:102
void mult_gm5(Field &v, const Field &w)
Definition: fopr_Clover.h:163
void D(Field &, const Field &)
Field m_v1
Definition: fopr_Clover.h:66
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
Definition: fopr_Clover.h:187
void mult_up(int mu, Field &v, const Field &w)
nearest neighbor hopping term: temporary entry [H.Matsufuru]
Definition: fopr_Clover.h:173
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
Fopr_CloverTerm * m_fopr_csw
Clover term operator.
Definition: fopr_Clover.h:62
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&amp;, const Field&amp;).
Definition: fopr_Clover.h:141
int m_NinF
internal parameters
Definition: fopr_Clover.h:59
void Ddag(Field &, const Field &)
int field_nvol()
returns the volume for which the fermion operator is defined.
Definition: fopr_Clover.h:186
Field m_v2
working field.
Definition: fopr_Clover.h:66
Base class of fermion operator family.
Definition: fopr.h:39
double flop_count()
this returns the number of floating point operations.
const Field mult_gm5(const Field &w)
Definition: fopr_Clover.h:168
std::string get_mode() const
Definition: fopr_Clover.h:102
void init(std::string repr)
Definition: fopr_Clover.cpp:50
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Definition: fopr_Clover.h:97
void set_parameters(const Parameters &params)
Definition: fopr_Clover.cpp:81
const Field mult_gm5(const Field &f)
Definition: fopr_Wilson.h:91