44     if ((
m_Nx % 2) != 0) {
 
   50     if ((
m_Ny % 2) != 0) {
 
   62     for (
int t = 0; t < 
m_Nt; ++t) {
 
   63       for (
int z = 0; z < 
m_Nz; ++z) {
 
   64         for (
int y = 0; y < 
m_Ny; ++y) {
 
   69           m_Leo[y + m_Ny * (z + m_Nz * t)] = (y2 + z2 + t2) % 2;
 
   81     } 
else if (
m_repr == 
"Chiral") {
 
  155     const string str_vlevel = params.
get_string(
"verbose_level");
 
  179     const std::vector<int> bc)
 
  184     for (
int mu = 0; mu < 
m_Ndim; ++mu) {
 
  190     assert(bc.size() == 
m_Ndim);
 
  196     for (
int mu = 0; mu < 
m_Ndim; ++mu) {
 
  201     for (
int idir = 0; idir < 
m_Ndim; ++idir) {
 
  226     } 
else if (
m_mode == 
"Ddag") {
 
  231     } 
else if (
m_mode == 
"DdagD") {
 
  234     } 
else if (
m_mode == 
"DDdag") {
 
  237     } 
else if (
m_mode == 
"H") {
 
  262     double flop_site, flop;
 
  265       flop_site = 
static_cast<double>(
 
  267     } 
else if (
m_repr == 
"Chiral") {
 
  268       flop_site = 
static_cast<double>(
 
  276     flop = flop_site * 
static_cast<double>(Lvol / 2);
 
  413     assert(f.
nex() == 1);
 
  436                            const Field& f, 
const int ieo)
 
  464                               const Field& f, 
const int ieo)
 
  478                                const Field& f, 
const int ieo)
 
  488     (this->*
m_gm5)(w, f);
 
  503     const double *v1 = f.
ptr(0);
 
  504     double       *v2 = w.
ptr(0);
 
  509     int is = 
m_Ntask * i_thread / Nthread;
 
  510     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  512     for (
int i = is; i < is + ns; ++i) {
 
  523     const double *v1 = f.
ptr(0);
 
  524     double       *v2 = w.
ptr(0);
 
  529     int is = 
m_Ntask * i_thread / Nthread;
 
  530     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  532     for (
int i = is; i < is + ns; ++i) {
 
  542     double *wp = w.
ptr(0);
 
  547     int is = 
m_Ntask * i_thread / Nthread;
 
  548     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  550     for (
int i = is; i < is + ns; ++i) {
 
  560     double *wp = w.
ptr(0);
 
  565     int is = 
m_Ntask * i_thread / Nthread;
 
  566     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  568     for (
int i = is; i < is + ns; ++i) {
 
  589     double *wp = w.
ptr(0);
 
  594     int is = 
m_Ntask * i_thread / Nthread;
 
  595     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  597     for (
int i = is; i < is + ns; ++i) {
 
  607     double *wp = w.
ptr(0);
 
  612     int is = 
m_Ntask * i_thread / Nthread;
 
  613     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  615     for (
int i = is; i < is + ns; ++i) {
 
  624                                const Field& f, 
const int ieo)
 
  626     const double *v1 = f.
ptr(0);
 
  627     double       *v2 = w.
ptr(0);
 
  632     int is = 
m_Ntask * i_thread / Nthread;
 
  633     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  635     for (
int i = is; i < is + ns; ++i) {
 
  647     for (
int i = is; i < is + ns; ++i) {
 
  651     for (
int i = is; i < is + ns; ++i) {
 
  660                                const Field& f, 
const int ieo)
 
  662     const double *v1 = f.
ptr(0);
 
  663     double       *v2 = w.
ptr(0);
 
  668     int is = 
m_Ntask * i_thread / Nthread;
 
  669     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  671     for (
int i = is; i < is + ns; ++i) {
 
  683     for (
int i = is; i < is + ns; ++i) {
 
  687     for (
int i = is; i < is + ns; ++i) {
 
  696                                const Field& f, 
const int ieo)
 
  698     const double *v1 = f.
ptr(0);
 
  699     double       *v2 = w.
ptr(0);
 
  704     int is = 
m_Ntask * i_thread / Nthread;
 
  705     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  707     for (
int i = is; i < is + ns; ++i) {
 
  719     for (
int i = is; i < is + ns; ++i) {
 
  723     for (
int i = is; i < is + ns; ++i) {
 
  732                                const Field& f, 
const int ieo)
 
  734     const double *v1 = f.
ptr(0);
 
  735     double       *v2 = w.
ptr(0);
 
  740     int is = 
m_Ntask * i_thread / Nthread;
 
  741     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  743     for (
int i = is; i < is + ns; ++i) {
 
  755     for (
int i = is; i < is + ns; ++i) {
 
  759     for (
int i = is; i < is + ns; ++i) {
 
  768                                const Field& f, 
const int ieo)
 
  770     const double *v1 = f.
ptr(0);
 
  771     double       *v2 = w.
ptr(0);
 
  776     int is = 
m_Ntask * i_thread / Nthread;
 
  777     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  779     for (
int i = is; i < is + ns; ++i) {
 
  791     for (
int i = is; i < is + ns; ++i) {
 
  795     for (
int i = is; i < is + ns; ++i) {
 
  804                                const Field& f, 
const int ieo)
 
  806     const double *v1 = f.
ptr(0);
 
  807     double       *v2 = w.
ptr(0);
 
  812     int is = 
m_Ntask * i_thread / Nthread;
 
  813     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  815     for (
int i = is; i < is + ns; ++i) {
 
  827     for (
int i = is; i < is + ns; ++i) {
 
  831     for (
int i = is; i < is + ns; ++i) {
 
  840                                      const Field& f, 
const int ieo)
 
  842     const double *v1 = f.
ptr(0);
 
  843     double       *v2 = w.
ptr(0);
 
  848     int is = 
m_Ntask * i_thread / Nthread;
 
  849     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  851     for (
int i = is; i < is + ns; ++i) {
 
  863     for (
int i = is; i < is + ns; ++i) {
 
  867     for (
int i = is; i < is + ns; ++i) {
 
  876                                      const Field& f, 
const int ieo)
 
  878     const double *v1 = f.
ptr(0);
 
  879     double       *v2 = w.
ptr(0);
 
  884     int is = 
m_Ntask * i_thread / Nthread;
 
  885     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  887     for (
int i = is; i < is + ns; ++i) {
 
  899     for (
int i = is; i < is + ns; ++i) {
 
  903     for (
int i = is; i < is + ns; ++i) {
 
  912                                       const Field& f, 
const int ieo)
 
  914     const double *v1 = f.
ptr(0);
 
  915     double       *v2 = w.
ptr(0);
 
  920     int is = 
m_Ntask * i_thread / Nthread;
 
  921     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  923     for (
int i = is; i < is + ns; ++i) {
 
  935     for (
int i = is; i < is + ns; ++i) {
 
  939     for (
int i = is; i < is + ns; ++i) {
 
  948                                       const Field& f, 
const int ieo)
 
  950     const double *v1 = f.
ptr(0);
 
  951     double       *v2 = w.
ptr(0);
 
  956     int is = 
m_Ntask * i_thread / Nthread;
 
  957     int ns = 
m_Ntask * (i_thread + 1) / Nthread - is;
 
  959     for (
int i = is; i < is + ns; ++i) {
 
  971     for (
int i = is; i < is + ns; ++i) {
 
  975     for (
int i = is; i < is + ns; ++i) {
 
void scal(Field &x, const double a)
scal(x, a): x = a * x 
 
void mult_ymb_thread(int, double *, const double *, int)
 
void mult_xm(Field &, const Field &, const int ieo)
 
void postPropD(Field &, const Field &, const Field &)
 
void mult_tm_dirac(Field &, const Field &, const int ieo)
 
void(Fopr_Wilson_eo::* m_mult_tp)(Field &, const Field &, const int ieo)
 
void mult_tp2_chiral_thread(int, double *, const double *, int)
 
static int get_num_threads()
returns available number of threads. 
 
void mult_ym(Field &, const Field &, const int ieo)
 
void mult_xp(Field &, const Field &, const int ieo)
 
const double * ptr(const int jin, const int site, const int jex) const 
 
void mult_yp(Field &, const Field &, const int ieo)
 
void set(const int jin, const int site, const int jex, double v)
 
void DDdag(Field &v, const Field &f)
 
void gm5p(const int mu, Field &, const Field &v)
gamma_5 (1 - gamma_mu) v(x + mu) used in force calculation. 
 
void(Fopr_Wilson_eo::* m_mult)(Field &, const Field &)
 
void mult_zm1_thread(int, double *, const double *, int)
 
void mult_tm1_chiral_thread(int, double *, const double *, int)
 
void gm5_dirac(Field &, const Field &)
 
void general(const char *format,...)
 
static Bridge::VerboseLevel Vlevel()
 
Container of Field-type object. 
 
int fetch_double(const string &key, double &value) const 
 
void mult_yp1_thread(int, double *, const double *, int)
 
void scal_thread(int, double *, double)
 
void DdagD(Field &v, const Field &f)
 
void Mdageo(Field &, const Field &, const int ieo)
 
void mult_xmb_thread(int, double *, const double *, int)
 
static int ipe(const int dir)
logical coordinate of current proc. 
 
void mult_zm(Field &, const Field &, const int ieo)
 
void copy(Field &y, const Field &x)
copy(y, x): y = x 
 
void gm5_dirac_thread(int, double *, const double *)
 
void mult_xm1_thread(int, double *, const double *, int)
 
void set_config(Field *U)
setting pointer to the gauge configuration. 
 
void(Fopr_Wilson_eo::* m_postProp)(Field &, const Field &, const Field &)
 
void MeoMoe(Field &, const Field &)
 
void gm5_self_chiral(Field &)
 
void convertField(Field &eo, const Field &lex)
 
void mult_tpb_chiral_thread(int, double *, const double *, int)
 
void mult_yp2_thread(int, double *, const double *, int)
 
void mult_tp_dirac(Field &, const Field &, const int ieo)
 
static int get_thread_id()
returns thread id. 
 
Wilson-type fermion field. 
 
void Ddag(Field &v, const Field &f)
 
void Meo(Field &, const Field &, const int ieo)
 
void(Fopr_Wilson_eo::* m_gm5)(Field &, const Field &)
 
void(Fopr_Wilson_eo::* m_gm5_self)(Field &)
 
void mult_ypb_thread(int, double *, const double *, int)
 
void(Fopr_Wilson_eo::* m_mult_dag)(Field &, const Field &)
 
void mult_xp1_thread(int, double *, const double *, int)
 
void init(const std::string)
 
void mult_tm_chiral(Field &, const Field &, const int ieo)
 
void mult_tp1_dirac_thread(int, double *, const double *, int)
 
Bridge::VerboseLevel m_vl
 
double flop_count()
this returns the number of floating point operations of Meo. 
 
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=COMPLEX)
 
void mult_zpb_thread(int, double *, const double *, int)
 
static void sync_barrier_all()
barrier among all the threads and nodes. 
 
double * vcp1_xp
arrays for data transfer. 
 
void gm5_chiral(Field &, const Field &)
 
void aypx(const double a, Field &y, const Field &x)
aypx(y, a, x): y := a * y + x 
 
static int exchange(int count, double *recv_buf, double *send_buf, int idir, int ipm, int tag)
receive array of double from upstream specified by idir and ipm, and send array to downstream...
 
void mult_tmb_dirac_thread(int, double *, const double *, int)
 
void mult_zm2_thread(int, double *, const double *, int)
 
void mult_tm2_dirac_thread(int, double *, const double *, int)
 
Field_G * m_U
dummy: pointing m_Ueo. 
 
void mult_tp_chiral(Field &, const Field &, const int ieo)
 
std::string m_repr
Dirac matrix representation. 
 
void prePropDag(Field &, Field &, const Field &)
 
void mult_zmb_thread(int, double *, const double *, int)
 
void mult_tp2_dirac_thread(int, double *, const double *, int)
 
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y 
 
void mult_tp1_chiral_thread(int, double *, const double *, int)
 
void(Fopr_Wilson_eo::* m_preProp)(Field &, Field &, const Field &)
 
void crucial(const char *format,...)
 
void Meo_gm5(Field &, const Field &, const int ieo)
 
void mult_xpb_thread(int, double *, const double *, int)
 
void D(Field &v, const Field &f)
 
void mult_zp1_thread(int, double *, const double *, int)
 
void mult_tm2_chiral_thread(int, double *, const double *, int)
 
std::vector< int > m_boundary
boundary condition. 
 
void mult_tmb_chiral_thread(int, double *, const double *, int)
 
void mult_xm2_thread(int, double *, const double *, int)
 
void mult_ym1_thread(int, double *, const double *, int)
 
std::string get_mode() const 
only for Fopr_Overlap 
 
void mult_zp2_thread(int, double *, const double *, int)
 
void reverseField(Field &lex, const Field &eo)
 
void mult_gm5(Field &, const Field &)
gamma_5 multiplication. [31 Mar 2017 H.Matsufuru] 
 
void prePropD(Field &, Field &, const Field &)
 
void mult_zp(Field &, const Field &, const int ieo)
 
void mult_tpb_dirac_thread(int, double *, const double *, int)
 
void scal_impl(Field &, double)
 
void H(Field &v, const Field &f)
 
double m_kappa
hopping parameter. 
 
void(Fopr_Wilson_eo::* m_mult_tm)(Field &, const Field &, const int ieo)
 
void mult_ym2_thread(int, double *, const double *, int)
 
void mult_xp2_thread(int, double *, const double *, int)
 
std::string m_mode
mult mode. 
 
void clear_thread(int, double *)
 
void gm5_self_dirac(Field &)
 
string get_string(const string &key) const 
 
int fetch_int_vector(const string &key, vector< int > &value) const 
 
void postPropDag(Field &, const Field &, const Field &)
 
void set_parameters(const Parameters ¶ms)
 
static const std::string class_name
 
void gm5_chiral_thread(int, double *, const double *)
 
static VerboseLevel set_verbose_level(const std::string &str)
 
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
 
void mult_tm1_dirac_thread(int, double *, const double *, int)
 
std::vector< double > m_boundary2
b.c. for each node.