Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_Wilson_SF.h
Go to the documentation of this file.
1 
15 #ifndef FOPR_WILSON_SF_INCLUDED
16 #define FOPR_WILSON_SF_INCLUDED
17 
18 #include "fopr_Wilson.h"
19 
20 #include "field_F_SF.h"
21 
22 //#include "index_lex.h"
23 //#include "shiftField_lex.h"
24 
25 #include "bridgeIO.h"
26 using Bridge::vout;
27 
28 //- parameters class
29 class Parameters_Fopr_Wilson_SF : virtual public Parameters
30 {
31  public:
33 };
34 
36 
58 class Fopr_Wilson_SF : public Fopr
59 {
60  public:
61  static const std::string class_name;
62 
63  private:
65  double m_kappa;
66  std::valarray<int> m_boundary;
67  std::string m_mode;
68 
70  const Field_G *m_U;
71 
72  // Index_lex m_idx;
73  // ShiftField_lex m_shift;
74 
75  /*
77  Communicator* comm;
79  int Svol;
81  int m_Nc2;
82  */
83 
86 
87  public:
88 
90  {
95  m_NinF = 2 * m_Nc * m_Nd;
96 
97  m_boundary.resize(m_Ndim);
98  m_U = 0;
99  m_fopr_w = new Fopr_Wilson;
100 
101  /*
102  comm = Communicator::init();
103  m_Nc2 = 2*m_Nc;
104  int Nt = CommonParameters::Nt();
105  Svol=m_Nvol/Nt;
106  */
107  }
108 
109  void set_parameters(const Parameters& params);
110  void set_parameters(const double kappa, const std::valarray<int> bc);
111 
112  void set_config(Field *U)
113  {
114  m_U = (Field_G *)U;
115  m_fopr_w->set_config(U);
116  }
117 
119  {
120  delete m_fopr_w;
121  }
122 
123  const Field mult(const Field& f)
124  {
125  Field v(f.nin(), f.nvol(), f.nex());
126 
127  mult(v, f);
128  return v;
129  }
130 
131  const Field mult_dag(const Field& f)
132  {
133  Field v(f.nin(), f.nvol(), f.nex());
134 
135  mult_dag(v, f);
136  return v;
137  }
138 
139  void mult(Field& v, const Field& f)
140  {
141  if (m_mode == "D") {
142  D(v, f);
143  } else if (m_mode == "DdagD") {
144  DdagD(v, f);
145  } else if (m_mode == "Ddag") {
146  Ddag(v, f);
147  } else if (m_mode == "H") {
148  H(v, f);
149  } else {
150  vout.crucial(m_vl, "%s: mode undefined.\n", class_name.c_str());
151  abort();
152  }
153  }
154 
155  void mult_dag(Field& v, const Field& f)
156  {
157  if (m_mode == "D") {
158  Ddag(v, f);
159  } else if (m_mode == "DdagD") {
160  DdagD(v, f);
161  } else if (m_mode == "Ddag") {
162  D(v, f);
163  } else if (m_mode == "H") {
164  H(v, f);
165  } else {
166  vout.crucial(m_vl, "%s: mode undefined.\n", class_name.c_str());
167  abort();
168  }
169  }
170 
171  void set_mode(std::string mode)
172  {
173  m_mode = mode;
174  }
175 
176  std::string get_mode() const
177  {
178  return m_mode;
179  }
180 
181  const Field_F DdagD(const Field_F&);
182  const Field_F D(const Field_F&);
183  const Field_F Ddag(const Field_F&);
184  const Field_F H(const Field_F&);
185 
186  const Field mult_gm5(const Field& w)
187  {
188  return m_fopr_w->mult_gm5(w);
189  }
190 
191  void DdagD(Field&, const Field&);
192  void D(Field&, const Field&);
193  void Ddag(Field&, const Field&);
194  void H(Field&, const Field&);
195 
196  void mult_gm5(Field& v, const Field& w)
197  {
198  m_fopr_w->mult_gm5(v, w);
199  }
200 
201  const Field_F mult_gm5p(int mu, const Field_F& w);
202 
203  int field_nvol() { return CommonParameters::Nvol(); }
204  int field_nin()
205  {
207  }
208 
209  int field_nex() { return 1; }
210 
211  private:
212 
213  // A function to set the fermion field to zero at the t=0 boundary.
214  // void set_boundary_zero(Field&);
215 };
216 #endif
BridgeIO vout
Definition: bridgeIO.cpp:207
const Field_F D(const Field_F &)
const Field_F H(const Field_F &)
Fopr_Wilson * m_fopr_w
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Container of Field-type object.
Definition: field.h:37
const Field mult_gm5(const Field &w)
int nvol() const
Definition: field.h:101
Class for parameters.
Definition: parameters.h:40
Wilson fermion operator with SF BC.
Wilson-type fermion field.
Definition: field_F.h:37
std::valarray< int > m_boundary
const Field mult(const Field &f)
multiplies fermion operator to a given field and returns the resultant field.
void set_config(Field *U)
setting pointer to the gauge configuration.
static const std::string class_name
const Field_F DdagD(const Field_F &)
int nin() const
Definition: field.h:100
std::string m_mode
const Field_G * m_U
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
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
Bridge::VerboseLevel m_vl
Definition: fopr.h:99
int nex() const
Definition: field.h:102
const Field mult_dag(const Field &f)
hermitian conjugate of mult(const Field&amp;).
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
int field_nvol()
returns the volume for which the fermion operator is defined.
const Field_F Ddag(const Field_F &)
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
Field_F_SF set_zero
In order to set the boundary field to zero.
Base class of fermion operator family.
Definition: fopr.h:39
const Field_F mult_gm5p(int mu, const Field_F &w)
void mult_gm5(Field &v, const Field &w)
A class generated to add a function for the SF.
Definition: field_F_SF.h:33
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&amp;, const Field&amp;).
std::string get_mode() const
const Field mult_gm5(const Field &f)
Definition: fopr_Wilson.h:91
void set_parameters(const Parameters &params)