Bridge++  Version 1.4.4
 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/field_F_SF.h"
21 
22 //#include "Field/index_lex.h"
23 //#include "Field/shiftField_lex.h"
24 
25 #include "IO/bridgeIO.h"
26 using Bridge::vout;
27 
29 
53 class Fopr_Wilson_SF : public Fopr
54 {
55  public:
56  static const std::string class_name;
57 
58  private:
60  double m_kappa;
61  std::vector<int> m_boundary;
62  std::string m_mode;
63 
65  const Field_G *m_U;
66 
67  // Index_lex m_idx;
68  // ShiftField_lex m_shift;
69 
70  /*
72  Communicator* comm;
74  int Svol;
76  int m_Nc2;
77  */
78 
81 
82  public:
83 
85  {
90  m_NinF = 2 * m_Nc * m_Nd;
91 
92  m_boundary.resize(m_Ndim);
93  m_U = 0;
94  m_fopr_w = new Fopr_Wilson;
95 
96  /*
97  comm = Communicator::init();
98  m_Nc2 = 2*m_Nc;
99  int Nt = CommonParameters::Nt();
100  Svol=m_Nvol/Nt;
101  */
102  }
103 
104  void set_parameters(const Parameters& params);
105  void set_parameters(const double kappa, const std::vector<int> bc);
106 
107  void set_config(Field *U)
108  {
109  m_U = (Field_G *)U;
110  m_fopr_w->set_config(U);
111  }
112 
114  {
115  m_U = U.get();
116  m_fopr_w->set_config(U.get());
117  }
118 
120  {
121  delete m_fopr_w;
122  }
123 
124  void mult(Field& v, const Field& f)
125  {
126  if (m_mode == "D") {
127  D(v, f);
128  } else if (m_mode == "DdagD") {
129  DdagD(v, f);
130  } else if (m_mode == "Ddag") {
131  Ddag(v, f);
132  } else if (m_mode == "H") {
133  H(v, f);
134  } else {
135  vout.crucial(m_vl, "Error at %s: mode undefined.\n", class_name.c_str());
136  exit(EXIT_FAILURE);
137  }
138  }
139 
140  void mult_dag(Field& v, const Field& f)
141  {
142  if (m_mode == "D") {
143  Ddag(v, f);
144  } else if (m_mode == "DdagD") {
145  DdagD(v, f);
146  } else if (m_mode == "Ddag") {
147  D(v, f);
148  } else if (m_mode == "H") {
149  H(v, f);
150  } else {
151  vout.crucial(m_vl, "Error at %s: mode undefined.\n", class_name.c_str());
152  exit(EXIT_FAILURE);
153  }
154  }
155 
156  void set_mode(std::string mode)
157  {
158  m_mode = mode;
159  }
160 
161  std::string get_mode() const
162  {
163  return m_mode;
164  }
165 
166  void DdagD(Field&, const Field&);
167  void D(Field&, const Field&);
168  void Ddag(Field&, const Field&);
169  void H(Field&, const Field&);
170 
171  void mult_gm5(Field& v, const Field& w)
172  {
173  m_fopr_w->mult_gm5(v, w);
174  }
175 
176  void mult_gm5p(int mu, Field_F& v, const Field_F& w);
177 
178  int field_nvol() { return m_Nvol; }
179  int field_nin() { return 2 * m_Nc * m_Nd; }
180  int field_nex() { return 1; }
181 
183  double flop_count();
184 
185  private:
186  // A function to set the fermion field to zero at the t=0 boundary.
187  // void set_boundary_zero(Field&);
188 };
189 #endif
BridgeIO vout
Definition: bridgeIO.cpp:495
void DdagD(Field &, const Field &)
void set_config(Field *U)
setting pointer to the gauge configuration.
Fopr_Wilson * m_fopr_w
std::vector< int > m_boundary
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:39
void mult_gm5(Field &v, const Field &f)
gamma_5 multiplication. [31 Mar 2017 H.Matsufuru]
Class for parameters.
Definition: parameters.h:46
void Ddag(Field &, const Field &)
Wilson fermion operator with SF BC.
void D(Field &, const Field &)
Wilson-type fermion field.
Definition: field_F.h:37
void set_config(Field *U)
setting pointer to the gauge configuration.
static const std::string class_name
std::string m_mode
const Field_G * m_U
SU(N) gauge field.
Definition: field_G.h:38
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
Bridge::VerboseLevel m_vl
Definition: fopr.h:128
pointer get() const
void H(Field &, const Field &)
double flop_count()
this returns the number of floating point operations.
void crucial(const char *format,...)
Definition: bridgeIO.cpp:178
void mult_gm5p(int mu, Field_F &v, const Field_F &w)
void set_config(unique_ptr< Field_G > &U)
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
Org::Fopr_Wilson Fopr_Wilson
Wilson fermion operator.
Definition: fopr_Wilson.h:73
int field_nvol()
returns the volume for which the fermion operator is defined.
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:47
void mult_gm5(Field &v, const Field &w)
gamma_5 multiplication. [31 Mar 2017 H.Matsufuru]
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&, const Field&).
std::string get_mode() const
only for Fopr_Overlap
void set_parameters(const Parameters &params)