14 #ifndef FOPR_CLOVER_EO_INCLUDED
15 #define FOPR_CLOVER_EO_INCLUDED
21 #include "fopr_Wilson_eo_impl.h"
89 const std::vector<int> bc);
107 }
else if (m_mode ==
"Ddag") {
112 }
else if (m_mode ==
"DdagD") {
115 }
else if (m_mode ==
"DDdag") {
118 }
else if (m_mode ==
"H") {
122 vout.
crucial(
"%s: undefined mode = %s\n", class_name.c_str(), mode.c_str());
131 void mult(Field& v,
const Field& f)
132 { (this->*
m_mult)(v, f); }
138 void preProp(Field& Be, Field& bo,
const Field& b)
141 void postProp(Field& x,
const Field& xe,
const Field& bo)
144 void prePropD(Field&, Field&,
const Field&);
145 void postPropD(Field&,
const Field&,
const Field&);
146 void prePropDag(Field&, Field&,
const Field&);
147 void postPropDag(Field&,
const Field&,
const Field&);
151 void D(Field& v,
const Field& f);
152 void Ddag(Field& v,
const Field& f);
153 void DdagD(Field& v,
const Field& f);
154 void DDdag(Field& v,
const Field& f);
155 void H(Field& v,
const Field& f);
156 void mult_gm5(Field& v,
const Field& f);
157 void MeoMoe(Field& v,
const Field& f);
161 void Meo(Field&,
const Field&,
const int ieo);
166 const int mu,
const int nu);
168 inline std::vector<double>
csmatrix(
const int& site)
169 {
return m_fopr_csw->
csmatrix(site); }
179 void init(
const std::string repr);
void mult_isigma(Field_F &w, const Field_F &f, const int mu, const int nu)
std::vector< double > csmatrix(const int &site)
void MeoMoe(Field &v, const Field &f)
void set_parameters(const Parameters ¶ms)
void mult_gm5(Field &v, const Field &f)
Fopr_Clover_eo(std::string repr)
std::string get_mode() const
only for Fopr_Overlap
double flop_count()
this returns the number of floating point operations.
void(Fopr_Clover_eo::* m_mult)(Field &, const Field &)
double m_cSW
clover coefficient.
void postProp(Field &x, const Field &xe, const Field &bo)
void(Fopr_Clover_eo::* m_postProp)(Field &, const Field &, const Field &)
Container of Field-type object.
int field_nvol()
returns the volume for which the fermion operator is defined.
std::vector< int > m_boundary
boundary condition.
void init(const std::string repr)
void Mdageo(Field_F &, const Field_F &, const int ieo)
Parameters_Fopr_Clover_eo()
void H(Field &v, const Field &f)
Field_F m_vF3
working field.
void(Fopr_Clover_eo::* m_preProp)(Field &, Field &, const Field &)
void prePropDag(Field &, Field &, const Field &)
Wilson-type fermion field.
void DdagD(Field &v, const Field &f)
void postPropDag(Field &, const Field &, const Field &)
static const std::string class_name
void Meo(Field &, const Field &, const int ieo)
void DDdag(Field &v, const Field &f)
void Meo_gm5(Field_F &, const Field_F &, const int ieo)
Even-odd Clover fermion operator.
Base class of fermion operator family.
void set_config(unique_ptr< Field_G > &U)
Fopr_Wilson_eo * m_fopr_w
void crucial(const char *format,...)
void preProp(Field &Be, Field &bo, const Field &b)
Even-odd Wilson fermion operator.
double m_kappa
hopping parameter.
void set_config(Field *U)
setting pointer to the gauge configuration.
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.
void D(Field &v, const Field &f)
Fopr_CloverTerm_eo * m_fopr_csw
void Ddag(Field &v, const Field &f)
void(Fopr_Clover_eo::* m_mult_dag)(Field &, const Field &)
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
const Field_F mult_csw_inv(const Field_F &, const int ieo)
void prePropD(Field &, Field &, const Field &)
std::vector< double > csmatrix(const int &)
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&, const Field&).
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument) and set the resultant field to the 1st ar...
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
void postPropD(Field &, const Field &, const Field &)