Bridge++  Ver. 1.3.x
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 
41 //- parameters class
42 class Parameters_Fopr_Clover : virtual public Parameters
43 {
44  public:
46 };
47 //- end
48 
49 class Fopr_Clover : public Fopr
50 {
51  public:
52  static const std::string class_name;
53 
54  private:
55  double m_kappa;
56  double m_cSW;
57  std::vector<int> m_boundary;
58  std::string m_repr;
59  std::string m_mode;
60 
62 
65  const Field_G *m_U;
66 
67  // Fopr_Clover_imp* m_imp; //!< pimple prescription
69 
70  public:
71 
73  : Fopr()
74  {
75  init("Dirac");
76  }
77 
78  Fopr_Clover(std::string repr)
79  : Fopr()
80  {
81  init(repr);
82  }
83 
85  {
86  tidyup();
87  }
88 
89  void set_parameters(const Parameters& params);
90  void set_parameters(double kappa, double cSW, std::vector<int> bc);
91 
92  void set_config(Field *U)
93  {
94  m_U = (Field_G *)U;
95  m_fopr_w->set_config(U);
96  m_fopr_csw->set_config(U);
97  }
98 
100  {
101  m_U = U.get();
102  m_fopr_w->set_config(U.get());
103  m_fopr_csw->set_config(U.get());
104  }
105 
106  void set_mode(std::string mode)
107  {
108  m_mode = mode;
109  }
110 
111  std::string get_mode() const
112  {
113  return m_mode;
114  }
115 
116  void mult(Field& v, const Field& f)
117  {
118  if (m_mode == "D") {
119  D(v, f);
120  } else if (m_mode == "Ddag") {
121  Ddag(v, f);
122  } else if (m_mode == "DdagD") {
123  DdagD(v, f);
124  } else if (m_mode == "DDdag") {
125  DDdag(v, f);
126  } else if (m_mode == "H") {
127  H(v, f);
128  } else {
129  vout.crucial(m_vl, "%s: undefined mode = %s.\n", class_name.c_str(), m_mode.c_str());
130  exit(EXIT_FAILURE);
131  }
132  }
133 
134  void mult_dag(Field& v, const Field& f)
135  {
136  if (m_mode == "D") {
137  Ddag(v, f);
138  } else if (m_mode == "DdagD") {
139  DdagD(v, f);
140  } else if (m_mode == "Ddag") {
141  D(v, f);
142  } else if (m_mode == "H") {
143  H(v, f);
144  } else {
145  vout.crucial(m_vl, "%s: undefined mode = %s.\n", class_name.c_str(), m_mode.c_str());
146  exit(EXIT_FAILURE);
147  }
148  }
149 
150  void D(Field&, const Field&);
151  void Ddag(Field&, const Field&);
152  void DdagD(Field&, const Field&);
153  void DDdag(Field&, const Field&);
154  void H(Field&, const Field&);
155 
156  void mult_gm5(Field& v, const Field& w)
157  {
158  m_fopr_w->mult_gm5(v, w);
159  }
160 
161  void mult_up(int mu, Field& v, const Field& w)
162  {
163  m_fopr_w->mult_up(mu, v, w);
164  }
165 
166  void mult_dn(int mu, Field& v, const Field& w)
167  {
168  m_fopr_w->mult_dn(mu, v, w);
169  }
170 
171  void mult_isigma(Field_F&, const Field_F&,
172  const int mu, const int nu);
173 
174  int field_nvol() { return m_Nvol; }
175  int field_nin() { return 2 * m_Nc * m_Nd; }
176  int field_nex() { return 1; }
177 
179  double flop_count();
180 
181  private:
182 
183  void init(std::string repr);
184  void tidyup();
185 };
186 #endif
Fopr_Clover(std::string repr)
Definition: fopr_Clover.h:78
void DDdag(Field &, const Field &)
void set_config(Field *U)
setting pointer to the gauge configuration.
BridgeIO vout
Definition: bridgeIO.cpp:278
void set_config(unique_ptr< Field_G > &U)
Definition: fopr_Clover.h:99
const Field_G * m_U
gauge configuration (pointer)
Definition: fopr_Clover.h:65
void mult_dn(int mu, Field &v, const Field &w)
Definition: fopr_Clover.h:166
void tidyup()
Definition: fopr_Clover.cpp:91
Container of Field-type object.
Definition: field.h:39
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
Definition: fopr_Clover.h:116
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:38
std::vector< int > m_boundary
boundary conditions
Definition: fopr_Clover.h:57
void H(Field &, const Field &)
std::string m_mode
mode of multiplication
Definition: fopr_Clover.h:59
Clover fermion operator.
Definition: fopr_Clover.h:42
Wilson-type fermion field.
Definition: field_F.h:37
std::string m_repr
gamma matrix representation
Definition: fopr_Clover.h:58
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
void set_config(Field *U)
setting pointer to the gauge configuration.
Definition: fopr_Clover.h:92
SU(N) gauge field.
Definition: field_G.h:38
void set_config(Field *U)
setting pointer to the gauge configuration.
double m_cSW
clover coefficient
Definition: fopr_Clover.h:56
double m_kappa
hopping parameter
Definition: fopr_Clover.h:55
Bridge::VerboseLevel m_vl
Definition: fopr.h:113
Fopr_Wilson * m_fopr_w
Wilson fermion kernel.
Definition: fopr_Clover.h:63
void mult_dn(int mu, Field &w, const Field &v)
static const std::string class_name
Definition: fopr_Clover.h:52
pointer get() const
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
Definition: fopr_Clover.h:176
void mult_gm5(Field &v, const Field &w)
Definition: fopr_Clover.h:156
void D(Field &, const Field &)
Field m_v1
Definition: fopr_Clover.h:68
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
Definition: fopr_Clover.h:175
void mult_up(int mu, Field &v, const Field &w)
nearest neighbor hopping term: temporary entry [H.Matsufuru]
Definition: fopr_Clover.h:161
void crucial(const char *format,...)
Definition: bridgeIO.cpp:48
Fopr_CloverTerm * m_fopr_csw
Clover term operator.
Definition: fopr_Clover.h:64
void mult_gm5(Field &w, const Field &v)
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&, const Field&).
Definition: fopr_Clover.h:134
int m_NinF
internal parameters
Definition: fopr_Clover.h:61
void Ddag(Field &, const Field &)
int field_nvol()
returns the volume for which the fermion operator is defined.
Definition: fopr_Clover.h:174
Field m_v2
working field.
Definition: fopr_Clover.h:68
Base class of fermion operator family.
Definition: fopr.h:49
double flop_count()
this returns the number of floating point operations.
std::string get_mode() const
only for Fopr_Overlap
Definition: fopr_Clover.h:111
void init(std::string repr)
Definition: fopr_Clover.cpp:68
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:106
void set_parameters(const Parameters &params)
Definition: fopr_Clover.cpp:99