Bridge++  Ver. 2.0.2
fopr_Clover_eo.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_CLOVER_EO_INCLUDED
15 #define FOPR_CLOVER_EO_INCLUDED
16 
17 #include "Fopr/fopr_Wilson_eo.h"
19 #include "Field/field_F.h"
20 
21 #include "IO/bridgeIO.h"
22 using Bridge::vout;
23 
24 
26 
43 class Fopr_Clover_eo : public Fopr_eo
44 {
45  public:
46  static const std::string class_name;
47 
48  private:
49  // input parameters
50  double m_kappa;
51  double m_cSW;
52  std::vector<int> m_boundary;
53  std::string m_repr;
55 
56  std::string m_mode;
57 
58  // internal data members
61 
64 
67 
70 
72 
73  public:
75  Fopr_Clover_eo(const std::string repr) { init(repr); }
76 
77  Fopr_Clover_eo(const Parameters& params) { init(params); }
78 
80 
81  void set_parameters(const Parameters& params);
82 
83  void set_parameters(const double kappa,
84  const double cSW,
85  const std::vector<int> bc);
86 
87  void get_parameters(Parameters& params) const;
88 
89  void set_config(Field *U);
90 
91  void set_mode(const std::string mode);
92 
93  std::string get_mode() const { return m_mode; }
94 
95  void mult(Field& v, const Field& f);
96 
97  void mult_dag(Field& v, const Field& f);
98 
99  //- method for even odd fermion operator
100  void preProp(Field& Be, Field& bo, const Field& b);
101 
102  void postProp(Field& x, const Field& xe, const Field& bo);
103 
104  // const Field_F mult_csw_inv(const Field_F&, const int ieo);
105 
106  void mult_gm5(Field&, const Field&);
107 
108  void D(Field& v, const Field& f);
109  void Ddag(Field& v, const Field& f);
110  void DdagD(Field& v, const Field& f);
111  void DDdag(Field& v, const Field& f);
112  void H(Field& v, const Field& f);
113 
114  // Meo: ieo = 0: even <- odd, ieo=1: odd <- even
115  void Meo(Field&, const Field&, const int ieo);
116  void Mdageo(Field&, const Field&, const int ieo);
117 
118  void mult_isigma(Field_F& w, const Field_F& f,
119  const int mu, const int nu);
120 
121  int field_nin() { return 2 * m_Nc * m_Nd; }
122  int field_nvol() { return m_Nvol2; }
123  int field_nex() { return 1; }
124 
126  double flop_count();
127 
128  private:
129  void init(const std::string repr);
130 
131  void init(const Parameters& params);
132 
133  void setup();
134 
135  void tidyup();
136 
137 #ifdef USE_FACTORY
138  private:
139  static Fopr *create_object_with_repr(const std::string& repr)
140  {
141  return new Fopr_Clover_eo(repr);
142  }
143 
144  static Fopr *create_object_with_params(const Parameters& params)
145  {
146  return new Fopr_Clover_eo(params);
147  }
148 
149  public:
150  static bool register_factory()
151  {
152  bool init = true;
153  init &= Fopr::Factory_string::Register("Clover_eo",
154  create_object_with_repr);
155  init &= Fopr::Factory_params::Register("Clover_eo",
156  create_object_with_params);
157  return init;
158  }
159 #endif
160 };
161 #endif
Fopr_Clover_eo::set_parameters
void set_parameters(const Parameters &params)
sets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Clover_eo.cpp:121
bridgeIO.h
Fopr_Clover_eo::m_boundary
std::vector< int > m_boundary
boundary condition.
Definition: fopr_Clover_eo.h:52
Fopr_Clover_eo::get_mode
std::string get_mode() const
Definition: fopr_Clover_eo.h:93
field_F.h
AFopr< Field >
Fopr_Clover_eo::m_cSW
double m_cSW
clover coefficient.
Definition: fopr_Clover_eo.h:51
Org::Fopr_CloverTerm_eo
Definition: fopr_CloverTerm_eo_impl.h:64
Fopr_Clover_eo::mult
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
Definition: fopr_Clover_eo.cpp:220
Parameters
Class for parameters.
Definition: parameters.h:46
Fopr_Clover_eo::init
void init(const std::string repr)
Definition: fopr_Clover_eo.cpp:67
AFopr_eo< Field >
Fopr_Clover_eo::postProp
void postProp(Field &x, const Field &xe, const Field &bo)
Definition: fopr_Clover_eo.cpp:288
Fopr_Clover_eo::Meo
void Meo(Field &, const Field &, const int ieo)
Definition: fopr_Clover_eo.cpp:354
Index_eo
Even-odd site index.
Definition: index_eo.h:44
Fopr_Clover_eo::m_idx
Index_eo m_idx
Definition: fopr_Clover_eo.h:65
Fopr_Clover_eo::field_nvol
int field_nvol()
returns the volume for which the fermion operator is defined.
Definition: fopr_Clover_eo.h:122
Fopr_Clover_eo::m_w1
Field m_w1
Definition: fopr_Clover_eo.h:68
Fopr_Clover_eo::m_Nc
int m_Nc
Definition: fopr_Clover_eo.h:59
Fopr_Clover_eo::m_Nd
int m_Nd
Definition: fopr_Clover_eo.h:59
fopr_CloverTerm_eo.h
Fopr_Clover_eo::m_U
Field_G * m_U
Definition: fopr_Clover_eo.h:66
Fopr_Clover_eo::m_repr
std::string m_repr
gamma-matrix type
Definition: fopr_Clover_eo.h:53
Fopr_Clover_eo::get_parameters
void get_parameters(Parameters &params) const
gets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Clover_eo.cpp:183
Fopr_Clover_eo::m_mode
std::string m_mode
Definition: fopr_Clover_eo.h:56
Fopr_Clover_eo::tidyup
void tidyup()
Definition: fopr_Clover_eo.cpp:113
Fopr_Clover_eo::~Fopr_Clover_eo
~Fopr_Clover_eo()
Definition: fopr_Clover_eo.h:79
Fopr_Clover_eo::m_Nvol2
int m_Nvol2
Definition: fopr_Clover_eo.h:60
Fopr_Clover_eo::H
void H(Field &v, const Field &f)
Definition: fopr_Clover_eo.cpp:324
Fopr_Clover_eo::mult_gm5
void mult_gm5(Field &, const Field &)
multiplies gamma_5 matrix.
Definition: fopr_Clover_eo.cpp:262
Fopr_Clover_eo::DdagD
void DdagD(Field &v, const Field &f)
Definition: fopr_Clover_eo.cpp:308
Fopr_Clover_eo::class_name
static const std::string class_name
Definition: fopr_Clover_eo.h:46
Fopr_Clover_eo::m_vl
Bridge::VerboseLevel m_vl
verbose level
Definition: fopr_Clover_eo.h:54
Fopr_Clover_eo::set_config
void set_config(Field *U)
setting pointer to the gauge configuration.
Definition: fopr_Clover_eo.cpp:194
Fopr_Clover_eo::m_NinF
int m_NinF
Definition: fopr_Clover_eo.h:59
Org::Fopr_Wilson_eo
Definition: fopr_Wilson_eo_impl.h:39
Fopr_Clover_eo::DDdag
void DDdag(Field &v, const Field &f)
Definition: fopr_Clover_eo.cpp:316
Fopr_Clover_eo::Ddag
void Ddag(Field &v, const Field &f)
Definition: fopr_Clover_eo.cpp:343
Fopr_Clover_eo::D
void D(Field &v, const Field &f)
Definition: fopr_Clover_eo.cpp:332
Fopr_Clover_eo::m_Ndim
int m_Ndim
Definition: fopr_Clover_eo.h:59
Fopr_Clover_eo::m_fopr_csw
Fopr_CloverTerm_eo * m_fopr_csw
Definition: fopr_Clover_eo.h:63
Fopr_Clover_eo::Mdageo
void Mdageo(Field &, const Field &, const int ieo)
Definition: fopr_Clover_eo.cpp:365
Fopr_Clover_eo::m_Nvol
int m_Nvol
Definition: fopr_Clover_eo.h:60
Fopr_Clover_eo::preProp
void preProp(Field &Be, Field &bo, const Field &b)
Definition: fopr_Clover_eo.cpp:269
Fopr_Clover_eo::setup
void setup()
Definition: fopr_Clover_eo.cpp:94
Fopr_Clover_eo::set_mode
void set_mode(const std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Definition: fopr_Clover_eo.cpp:208
Fopr_Clover_eo::m_fopr_w
Fopr_Wilson_eo * m_fopr_w
Definition: fopr_Clover_eo.h:62
Fopr_Clover_eo::m_w2
Field m_w2
working field
Definition: fopr_Clover_eo.h:68
Fopr_Clover_eo::field_nin
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
Definition: fopr_Clover_eo.h:121
Fopr_Clover_eo::Fopr_Clover_eo
Fopr_Clover_eo(const Parameters &params)
Definition: fopr_Clover_eo.h:77
Fopr_Clover_eo::field_nex
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
Definition: fopr_Clover_eo.h:123
Field_F
Wilson-type fermion field.
Definition: field_F.h:37
Fopr_Clover_eo::m_kappa
double m_kappa
hopping parameter.
Definition: fopr_Clover_eo.h:50
Field
Container of Field-type object.
Definition: field.h:46
Fopr_Clover_eo::mult_dag
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&, const Field&).
Definition: fopr_Clover_eo.cpp:241
Fopr_Clover_eo
Even-odd Clover fermion operator.
Definition: fopr_Clover_eo.h:43
fopr_Wilson_eo.h
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:42
Field_G
SU(N) gauge field.
Definition: field_G.h:38
Fopr_Clover_eo::Fopr_Clover_eo
DEPRECATED Fopr_Clover_eo(const std::string repr)
Definition: fopr_Clover_eo.h:75
Fopr_Clover_eo::m_v1
Field m_v1
working field
Definition: fopr_Clover_eo.h:69
DEPRECATED
#define DEPRECATED
Definition: configure.h:28
Fopr_Clover_eo::flop_count
double flop_count()
this returns the number of floating point operations.
Definition: fopr_Clover_eo.cpp:384
Fopr_Clover_eo::mult_isigma
void mult_isigma(Field_F &w, const Field_F &f, const int mu, const int nu)
Definition: fopr_Clover_eo.cpp:376
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:512
Fopr_Clover_eo::m_is_initial_step
bool m_is_initial_step
to avoid redundant setup
Definition: fopr_Clover_eo.h:71