19 #ifdef USE_FACTORY_AUTOREGISTER
21 bool init = Fopr_Wilson_eo::register_factory();
30 void mult_Field_Gn_eo(
Field_F& w,
int ex,
31 const Field_G& U,
const int ex1,
32 const Field_F& x,
const int ex2,
36 assert(ex1 < U.
nex());
37 assert(ex2 < x.
nex());
41 for (
int site = 0, nvol = w.
nvol(); site < nvol; ++site) {
42 for (
int s = 0, nd = w.
nd(); s < nd; ++s) {
44 vec = U.
mat(site + ieo * nvol, ex1) * x.
vec(s, site, ex2);
55 void mult_Field_Gd_eo(
Field_F& w,
int ex,
61 assert(ex1 < U.
nex());
62 assert(ex2 < x.
nex());
66 for (
int site = 0, nvol = w.
nvol(); site < nvol; ++site) {
67 for (
int s = 0, nd = w.
nd(); s < nd; ++s) {
69 vec = U.
mat_dag(site + ieo * nvol, ex1) * x.
vec(s, site, ex2);
79 const string str_vlevel = params.
get_string(
"verbose_level");
106 for (
int mu = 0; mu <
m_Ndim; ++mu) {
112 assert(bc.size() ==
m_Ndim);
142 }
else if (
m_mode ==
"Ddag") {
147 }
else if (
m_mode ==
"DdagD") {
150 }
else if (
m_mode ==
"DDdag") {
153 }
else if (
m_mode ==
"H") {
195 const int Nin = b.
nin();
196 const int Nex = b.
nex();
222 const int Nin = xe.
nin();
223 const int Nex = xe.
nex();
247 const int Nin = b.
nin();
248 const int Nex = b.
nex();
276 const int Nin = xe.
nin();
277 const int Nex = xe.
nex();
300 assert(f.
nex() == 1);
396 const Field& f,
const int ieo)
406 for (
int mu = 0; mu <
m_Ndim; ++mu) {
420 const Field& f,
const int ieo)
433 const Field& f,
const int ieo)
459 for (
int ex = 0; ex < f.
nex(); ++ex) {
479 for (
int ex = 0; ex < f.
nex(); ++ex) {
498 for (
int ex = 0; ex < f.
nex(); ++ex) {
499 mult_Field_Gd_eo(
trf, 0, *
m_Ueo, mu, f, ex, 1 - ieo);
525 int flop_Meo = Nc * Nd * 2 * 8 * (4 * Nc - 1);
527 flop_Meo += Nc * Nd * 2 * (4 * 3 + 4 * 2);
528 flop_Meo += Nc * Nd * 2 * 8;
529 flop_Meo += Nc * Nd * 2;
531 const int flop_per_site = 2 * flop_Meo + Nc * Nd * 2 * 2;
533 double gflop = flop_per_site * ((Nvol / 2) * (NPE / 1.0e+9));
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(const int jin, const int site, const int jex, double v)
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 mult_m(const int mu, Field_F &, const Field_F &, const int ieo)
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 DdagD(Field &v, const Field &f)
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=Element_type::COMPLEX)
void mult_p(const int mu, Field_F &, const Field_F &, const int ieo)
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 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)
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