24 void mult_Field_Gn_eo(
Field_F& w,
int ex,
25 const Field_G& U,
const int ex1,
26 const Field_F& x,
const int ex2,
30 assert(ex1 < U.
nex());
31 assert(ex2 < x.
nex());
37 for (
int site = 0, nvol = w.
nvol(); site < nvol; ++site) {
38 for (
int s = 0, nd = w.
nd(); s < nd; ++s) {
39 vec = U.
mat(site + ieo * nvol, ex1) * x.
vec(s, site, ex2);
50 void mult_Field_Gd_eo(
Field_F& w,
int ex,
56 assert(ex1 < U.
nex());
57 assert(ex2 < x.
nex());
63 for (
int site = 0, nvol = w.
nvol(); site < nvol; ++site) {
64 for (
int s = 0, nd = w.
nd(); s < nd; ++s) {
65 vec = U.
mat_dag(site + ieo * nvol, ex1) * x.
vec(s, site, ex2);
75 const string str_vlevel = params.
get_string(
"verbose_level");
99 const std::vector<int> bc)
104 for (
int mu = 0; mu <
m_Ndim; ++mu) {
110 assert(bc.size() ==
m_Ndim);
116 for (
int mu = 0; mu <
m_Ndim; ++mu) {
142 }
else if (
m_mode ==
"Ddag") {
147 }
else if (
m_mode ==
"DdagD") {
150 }
else if (
m_mode ==
"DDdag") {
153 }
else if (
m_mode ==
"H") {
297 assert(f.
nex() == 1);
386 const Field& f,
const int ieo)
394 for (
int mu = 0; mu <
m_Ndim; ++mu) {
408 const Field& f,
const int ieo)
422 const Field& f,
const int ieo)
451 for (
int ex = 0; ex < f.
nex(); ++ex) {
468 for (
int ex = 0; ex < f.
nex(); ++ex) {
485 for (
int ex = 0; ex < f.
nex(); ++ex) {
486 mult_Field_Gd_eo(
trf, 0, *
m_Ueo, mu, f, ex, 1 - ieo);
506 int flop_Meo = Nc * Nd * 2 * 8 * (4 * Nc - 1);
508 flop_Meo += Nc * Nd * 2 * (4 * 3 + 4 * 2);
509 flop_Meo += Nc * Nd * 2 * 8;
510 flop_Meo += Nc * Nd * 2;
512 int flop_per_site = 2 * flop_Meo + Nc * Nd * 2 * 2;
514 double flop =
static_cast<double>(flop_per_site) *
515 static_cast<double>(Lvol / 2);
void scal(Field &x, const double a)
scal(x, a): x = a * x
void backward(Field &, const Field &, const int mu)
void mult_gm5(Field &, const Field &)
gamma_5 multiplication. [31 Mar 2017 H.Matsufuru]
static const std::string class_name
void set_vec(const int s, const int site, const int e, const Vec_SU_N &F)
void general(const char *format,...)
GammaMatrix get_GM(GMspecies spec)
Container of Field-type object.
int fetch_double(const string &key, double &value) const
void Meo_gm5(Field &, const Field &, const int ieo)
void(Fopr_Wilson_eo::* m_preProp)(Field &, Field &, const Field &)
void prePropDag(Field &, Field &, const Field &)
void H(Field &v, const Field &f)
void copy(Field &y, const Field &x)
copy(y, x): y = x
void convertField(Field &eo, const Field &lex)
void addpart_ex(int ex, const Field &w, int exw)
double flop_count()
this returns the number of floating point operations of Meo.
void(Fopr_Wilson_eo::* m_mult)(Field &, const Field &)
Wilson-type fermion field.
void mult_GMproj2(Field_F &y, const int pm, const GammaMatrix &gm, const Field_F &x)
projection with gamma matrix: (1 gamma)
void(Fopr_Wilson_eo::* m_postProp)(Field &, const Field &, const Field &)
void postPropDag(Field &, const Field &, const Field &)
Bridge::VerboseLevel m_vl
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=COMPLEX)
Set of Gamma Matrices: basis class.
void DdagD(Field &v, const Field &f)
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
void crucial(const char *format,...)
void init(const std::string)
std::string get_mode() const
only for Fopr_Overlap
void mult_GM(Field_F &y, const GammaMatrix &gm, const Field_F &x)
gamma matrix multiplication
void mult_p(int mu, Field_F &, const Field_F &, const int ieo)
void Ddag(Field &v, const Field &f)
void reverseField(Field &lex, const Field &eo)
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Vec_SU_N vec(const int s, const int site, const int e=0) const
Mat_SU_N mat_dag(const int site, const int mn=0) const
void set_config(Field *U)
setting pointer to the gauge configuration.
void(Fopr_Wilson_eo::* m_mult_dag)(Field &, const Field &)
void backward_h(Field &, const Field &, const int mu, const int ieo)
void set_parameters(const Parameters ¶ms)
void postPropD(Field &, const Field &, const Field &)
void DDdag(Field &v, const Field &f)
void prePropD(Field &, Field &, const Field &)
void setpart_ex(int ex, const Field &w, int exw)
void mult_m(int mu, Field_F &, const Field_F &, const int ieo)
string get_string(const string &key) const
int fetch_int_vector(const string &key, vector< int > &value) const
void MeoMoe(Field &v, const Field &f)
void gm5p(const int mu, Field &, const Field &v)
gamma_5 (1 - gamma_mu) v(x + mu)
void D(Field &v, const Field &f)
Mat_SU_N mat(const int site, const int mn=0) const
void forward_h(Field &, const Field &, const int mu, const int ieo)
static VerboseLevel set_verbose_level(const std::string &str)
std::vector< int > m_boundary
void Meo(Field &, const Field &, const int ieo)
void Mdageo(Field &, const Field &, const int ieo)
std::vector< GammaMatrix > m_GM