Bridge++  Ver.2.1.3
fopr_Clover_SF.h
Go to the documentation of this file.
1 
14 #ifndef FOPR_CLOVER_SF_INCLUDED
15 #define FOPR_CLOVER_SF_INCLUDED
16 
21 #include "lib/IO/bridgeIO.h"
22 using Bridge::vout;
23 
25 
43 class Fopr_Clover_SF : public Fopr
44 {
45  public:
46  static const std::string class_name;
47 
48  private:
50 
52  double m_kappa, m_cSW;
53  std::vector<int> m_boundary;
54  std::string m_repr;
55  std::string m_mode;
56 
58 
60 
62 
64 
68 
70  // Bx = -iF(1,2), By = -iF(2,1), -iBz = F(0,1)
71  // Ex = -iF(4,0), Ey = -iF(4,1), Ez = -iF(4,2)
72 
73  std::vector<GammaMatrix> m_GM, m_SG;
74 
75  std::vector<double> m_phi;
76  std::vector<double> m_phipr;
77 
79 
80  public:
83  { init("Dirac"); }
84 
85  Fopr_Clover_SF(const Parameters& params)
86  { init(params); }
87 
89 
90  void set_parameters(const Parameters& params);
91 
92  void set_parameters(const double kappa,
93  const double cSW,
94  const std::vector<int> bc,
95  const std::vector<double> phi,
96  const std::vector<double> phipr);
97 
98  void get_parameters(Parameters& params) const;
99 
101  void set_config(Field *U);
102 
103  void set_mode(const std::string mode);
104 
105  std::string get_mode() const { return m_mode; }
106 
107  void mult(Field& v, const Field& f);
108 
109  void mult_dag(Field& v, const Field& f);
110 
111  void mult(Field& v, const Field& f, const std::string mode);
112 
113  void mult_dag(Field& v, const Field& f, const std::string mode);
114 
115  void DdagD(Field&, const Field&);
116  void D(Field&, const Field&);
117  void Ddag(Field&, const Field&);
118  void H(Field&, const Field&);
119 
120  void mult_gm5(Field& v, const Field& w)
121  { m_fopr_w->mult_gm5(v, w); }
122 
123  void mult_isigma(Field_F&, const Field_F&,
124  const int mu, const int nu);
125 
126  int field_nvol() { return m_Nvol; }
127  int field_nin() { return 2 * m_Nc * m_Nd; }
128  int field_nex() { return 1; }
129 
131  double flop_count();
132 
133  private:
134 
135  void init(const Parameters& params);
136 
137  void init(const std::string repr);
138 
139  void tidyup();
140 
141  void setup_sg();
142 
143  void set_parameters_impl(const Parameters& params);
144 
145  void set_parameters_impl(const double kappa,
146  const double cSW,
147  const std::vector<int> bc,
148  const std::vector<double> phi,
149  const std::vector<double> phipr);
150 
151  void set_csw();
152 
153  void mult_csw(Field&, const Field&);
154 
155  void set_fieldstrength(Field_G&, const int, const int);
156 
157  void mult_csw_dirac(Field&, const Field&);
158 
159  //void mult_csw_chiral(Field&, const Field&);
160 
161  void set_boundary_zero(Field&);
162 
163  int sg_index(const int mu, const int nu) { return mu * m_Ndim + nu; }
164 
165 
166 #ifdef USE_FACTORY
167  private:
168 
169  static Fopr *create_object()
170  {
171  return new Fopr_Clover_SF();
172  }
173 
174  static Fopr *create_object_with_params(const Parameters& params)
175  {
176  return new Fopr_Clover_SF(params);
177  }
178 
179  public:
180  static bool register_factory()
181  {
182  bool init = true;
183  init &= Fopr::Factory_noarg::Register("Clover_SF", create_object);
184  init &= Fopr::Factory_params::Register("Clover_SF", create_object_with_params);
185  return init;
186  }
187 #endif
188 };
189 #endif
Fopr_Clover_SF::set_parameters_impl
void set_parameters_impl(const Parameters &params)
Definition: fopr_Clover_SF.cpp:215
Fopr_Clover_SF::set_parameters
void set_parameters(const Parameters &params)
sets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Clover_SF.cpp:202
Fopr_Clover_SF::field_nin
int field_nin()
returns the on-site degree of freedom of the fermion field.
Definition: fopr_Clover_SF.h:127
Fopr_Clover_SF::mult_dag
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult.
Definition: fopr_Clover_SF.cpp:379
bridgeIO.h
Fopr_Clover_SF::m_Bz
Field_G m_Bz
Definition: fopr_Clover_SF.h:69
Fopr_Clover_SF::Fopr_Clover_SF
Fopr_Clover_SF(const Parameters &params)
Definition: fopr_Clover_SF.h:85
Fopr_Clover_SF::H
void H(Field &, const Field &)
Definition: fopr_Clover_SF.cpp:461
Fopr_Clover_SF::m_shift
ShiftField_lex * m_shift
Definition: fopr_Clover_SF.h:61
AFopr< Field >
Fopr_Clover_SF::m_w1
Field m_w1
Definition: fopr_Clover_SF.h:78
Fopr_Clover_SF::mult_csw
void mult_csw(Field &, const Field &)
Definition: fopr_Clover_SF.cpp:499
Parameters
Class for parameters.
Definition: parameters.h:46
Fopr_Clover_SF::m_mode
std::string m_mode
Definition: fopr_Clover_SF.h:55
Fopr_Clover_SF::m_SG
std::vector< GammaMatrix > m_SG
Definition: fopr_Clover_SF.h:73
Fopr_Clover_SF::init
void init(const Parameters &params)
Definition: fopr_Clover_SF.cpp:42
shiftField_lex.h
Fopr_Clover_SF::m_Ndim
int m_Ndim
Definition: fopr_Clover_SF.h:51
Fopr_Clover_SF::get_parameters
void get_parameters(Parameters &params) const
gets parameters by a Parameter object: to be implemented in a subclass.
Definition: fopr_Clover_SF.cpp:315
Fopr_Clover_SF::m_Nd
int m_Nd
Definition: fopr_Clover_SF.h:51
fopr_Wilson_SF.h
Fopr_Clover_SF::mult_isigma
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
Definition: fopr_Clover_SF.cpp:489
Fopr_Clover_SF::m_Bx
Field_G m_Bx
Definition: fopr_Clover_SF.h:69
Fopr_Clover_SF::set_config
void set_config(Field *U)
setup configuration (Note that this method is not multi-threaded).
Definition: fopr_Clover_SF.cpp:329
Staple_SF
Staple construction.
Definition: staple_SF.h:32
Fopr_Clover_SF::m_repr
std::string m_repr
Definition: fopr_Clover_SF.h:54
Fopr_Clover_SF::m_Ez
Field_G m_Ez
Definition: fopr_Clover_SF.h:69
Fopr_Clover_SF::class_name
static const std::string class_name
Definition: fopr_Clover_SF.h:46
Fopr_Clover_SF
Clover fermion operator.
Definition: fopr_Clover_SF.h:43
Fopr_Clover_SF::DdagD
void DdagD(Field &, const Field &)
Definition: fopr_Clover_SF.cpp:438
Fopr_Clover_SF::set_csw
void set_csw()
Definition: fopr_Clover_SF.cpp:621
Fopr_Clover_SF::m_w2
Field m_w2
Definition: fopr_Clover_SF.h:78
Fopr_Clover_SF::m_cSW
double m_cSW
Definition: fopr_Clover_SF.h:52
Fopr_Clover_SF::m_fopr_w
Fopr_Wilson_SF * m_fopr_w
Definition: fopr_Clover_SF.h:57
Fopr_Clover_SF::tidyup
void tidyup()
Definition: fopr_Clover_SF.cpp:153
Fopr_Clover_SF::m_Nvol
int m_Nvol
Definition: fopr_Clover_SF.h:51
Fopr_Clover_SF::sg_index
int sg_index(const int mu, const int nu)
Definition: fopr_Clover_SF.h:163
Fopr_Clover_SF::set_boundary_zero
void set_boundary_zero(Field &)
Fopr_Clover_SF::mult_gm5
void mult_gm5(Field &v, const Field &w)
multiplies gamma_5 matrix.
Definition: fopr_Clover_SF.h:120
Fopr_Clover_SF::field_nex
int field_nex()
returns the external degree of freedom of the fermion field.
Definition: fopr_Clover_SF.h:128
Fopr_Clover_SF::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_SF.cpp:348
Fopr_Wilson_SF::mult_gm5
void mult_gm5(Field &v, const Field &w)
multiplies gamma_5 matrix.
Definition: fopr_Wilson_SF.cpp:342
Fopr_Clover_SF::m_NinF
int m_NinF
Definition: fopr_Clover_SF.h:51
Fopr_Clover_SF::setup_sg
void setup_sg()
Definition: fopr_Clover_SF.cpp:163
Fopr_Clover_SF::~Fopr_Clover_SF
~Fopr_Clover_SF()
Definition: fopr_Clover_SF.h:88
Fopr_Clover_SF::mult
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field.
Definition: fopr_Clover_SF.cpp:360
Fopr_Clover_SF::m_boundary
std::vector< int > m_boundary
Definition: fopr_Clover_SF.h:53
Fopr_Clover_SF::D
void D(Field &, const Field &)
Definition: fopr_Clover_SF.cpp:471
Fopr_Clover_SF::m_v1
Field_G * m_v1
Definition: fopr_Clover_SF.h:65
Fopr_Clover_SF::m_U
Field_G * m_U
Definition: fopr_Clover_SF.h:63
ShiftField_lex
Methods to shift a field in the lexical site index.
Definition: shiftField_lex.h:39
Fopr_Clover_SF::set_fieldstrength
void set_fieldstrength(Field_G &, const int, const int)
Definition: fopr_Clover_SF.cpp:640
Fopr_Clover_SF::m_v2
Field_G * m_v2
Definition: fopr_Clover_SF.h:66
Fopr_Clover_SF::m_kappa
double m_kappa
Definition: fopr_Clover_SF.h:52
Fopr_Clover_SF::Fopr_Clover_SF
DEPRECATED Fopr_Clover_SF()
Definition: fopr_Clover_SF.h:82
staple_SF.h
Fopr_Clover_SF::Ddag
void Ddag(Field &, const Field &)
Definition: fopr_Clover_SF.cpp:450
Fopr_Clover_SF::m_GM
std::vector< GammaMatrix > m_GM
Definition: fopr_Clover_SF.h:73
Fopr_Clover_SF::m_Ex
Field_G m_Ex
Definition: fopr_Clover_SF.h:69
Fopr_Clover_SF::field_nvol
int field_nvol()
returns the volume of the fermion field.
Definition: fopr_Clover_SF.h:126
Fopr_Clover_SF::flop_count
double flop_count()
this returns the number of floating point number operations.
Definition: fopr_Clover_SF.cpp:668
Fopr_Clover_SF::m_vl
Bridge::VerboseLevel m_vl
Definition: fopr_Clover_SF.h:49
Field_F
Wilson-type fermion field.
Definition: field_F.h:37
Fopr_Clover_SF::m_phipr
std::vector< double > m_phipr
SF boundary condition at t = Nt.
Definition: fopr_Clover_SF.h:76
Fopr_Clover_SF::m_Nc
int m_Nc
Definition: fopr_Clover_SF.h:51
Fopr_Clover_SF::mult_csw_dirac
void mult_csw_dirac(Field &, const Field &)
Definition: fopr_Clover_SF.cpp:506
Fopr_Clover_SF::m_v3
Field_G * m_v3
Definition: fopr_Clover_SF.h:67
Fopr_Clover_SF::m_phi
std::vector< double > m_phi
SF boundary condition at t = 0.
Definition: fopr_Clover_SF.h:75
Field
Container of Field-type object.
Definition: field.h:46
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
Field_G
SU(N) gauge field.
Definition: field_G.h:38
Fopr_Clover_SF::m_staple
Staple_SF * m_staple
Definition: fopr_Clover_SF.h:59
Fopr_Clover_SF::m_By
Field_G m_By
Definition: fopr_Clover_SF.h:69
DEPRECATED
#define DEPRECATED
Definition: configure.h:28
Fopr_Clover_SF::get_mode
std::string get_mode() const
Definition: fopr_Clover_SF.h:105
Fopr_Wilson_SF
Wilson fermion operator with SF BC.
Definition: fopr_Wilson_SF.h:51
gammaMatrixSet.h
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572
Fopr_Clover_SF::m_Ey
Field_G m_Ey
Definition: fopr_Clover_SF.h:69