21 #if defined USE_GROUP_SU3 
   22 #include "fopr_Wilson_impl_SU3.inc" 
   23 #elif defined USE_GROUP_SU2 
   24 #include "fopr_Wilson_impl_SU2.inc" 
   25 #elif defined USE_GROUP_SU_N 
   26 #include "fopr_Wilson_impl_SU_N.inc" 
   82     } 
else if (
m_repr == 
"Chiral") {
 
  125     buf_size[0] = 
sizeof(double) * 
m_Nvc * 2 * 
m_Ny * m_Nz * m_Nt;
 
  126     buf_size[1] = 
sizeof(double) * 
m_Nvc * 2 * 
m_Nx * m_Nz * m_Nt;
 
  127     buf_size[2] = 
sizeof(double) * 
m_Nvc * 2 * 
m_Nx * 
m_Ny * m_Nt;
 
  128     buf_size[3] = 
sizeof(double) * 
m_Nvc * 2 * 
m_Nx * 
m_Ny * m_Nz;
 
  144     for (
int imu = 0; imu < 
m_Ndim; ++imu) {
 
  180     } 
else if (
m_mode == 
"Ddag") {
 
  183     } 
else if (
m_mode == 
"DdagD") {
 
  186     } 
else if (
m_mode == 
"DDdag") {
 
  189     } 
else if (
m_mode == 
"H") {
 
  234     const string str_vlevel = params.
get_string(
"verbose_level");
 
  239     double           kappa_s, kappa_t;
 
  244     err += params.
fetch_double(
"hopping_parameter_spatial", kappa_s);
 
  245     err += params.
fetch_double(
"hopping_parameter_temporal", kappa_t);
 
  246     err += params.
fetch_double(
"dispersion_parameter_spatial", nu_s);
 
  247     err += params.
fetch_double(
"Wilson_parameter_spatial", r_s);
 
  261                                           const double kappa_t,
 
  264                                           const std::vector<int> bc)
 
  266     assert(bc.size() == 
m_Ndim);
 
  273     for (
int mu = 0; mu < 
m_Ndim; ++mu) {
 
  282     for (
int mu = 0; mu < 
m_Ndim; ++mu) {
 
  287     for (
int idir = 0; idir < 
m_Ndim; ++idir) {
 
  302     double flop_site, flop;
 
  305       flop_site = 
static_cast<double>(
 
  307     } 
else if (
m_repr == 
"Chiral") {
 
  308       flop_site = 
static_cast<double>(
 
  315     flop = flop_site * 
static_cast<double>(Lvol);
 
  316     if ((
m_mode == 
"DdagD") || (
m_mode == 
"DDdag")) flop *= 2.0;
 
  338                                       const Field& f, 
const int ex2)
 
  342     const double *v1 = f.
ptr(Ninvol * ex2);
 
  343     double       *v2 = w.
ptr(Ninvol * ex1);
 
  349     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  353     for (
int i = is; i < is + ns; ++i) {
 
  365     for (
int i = is; i < is + ns; ++i) {
 
  377     for (
int i = is; i < is + ns; ++i) {
 
  388     for (
int i = is; i < is + ns; ++i) {
 
  400                                        const Field& f, 
const int ex2)
 
  404     const double *v1 = f.
ptr(Ninvol * ex2);
 
  405     double       *v2 = w.
ptr(Ninvol * ex1);
 
  411     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  415     for (
int i = is; i < is + ns; ++i) {
 
  427     for (
int i = is; i < is + ns; ++i) {
 
  439     for (
int i = is; i < is + ns; ++i) {
 
  450     for (
int i = is; i < is + ns; ++i) {
 
  477     } 
else if (mu == 1) {
 
  479     } 
else if (mu == 2) {
 
  481     } 
else if (mu == 3) {
 
  495     } 
else if (mu == 1) {
 
  497     } 
else if (mu == 2) {
 
  499     } 
else if (mu == 3) {
 
  510     Field& w, 
const int ex1,
 
  511     const Field& v, 
const int ex2, 
const int ipm)
 
  517     } 
else if (ipm == -1) {
 
  543                                  double fac, 
const Field& f)
 
  545     const double *v1 = f.
ptr(0);
 
  546     double       *v2 = w.
ptr(0);
 
  552     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  554     for (
int i = is; i < is + ns; ++i) {
 
  577     double *v2 = w.
ptr(0);
 
  583     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  585     for (
int i = is; i < is + ns; ++i) {
 
  594     const double *v1 = f.
ptr(0);
 
  595     double       *v2 = w.
ptr(0);
 
  601     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  603     for (
int i = is; i < is + ns; ++i) {
 
  613     const double *v1 = f.
ptr(0);
 
  614     double       *v2 = w.
ptr(0);
 
  620     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  622     for (
int i = is; i < is + ns; ++i) {
 
  632     const double *v1 = f.
ptr(0);
 
  633     double       *v2 = w.
ptr(0);
 
  639     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  643     for (
int i = is; i < is + ns; ++i) {
 
  648     for (
int i = is; i < is + ns; ++i) {
 
  652     for (
int i = is; i < is + ns; ++i) {
 
  663     const double *v1 = f.
ptr(0);
 
  664     double       *v2 = w.
ptr(0);
 
  670     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  674     for (
int i = is; i < is + ns; ++i) {
 
  679     for (
int i = is; i < is + ns; ++i) {
 
  683     for (
int i = is; i < is + ns; ++i) {
 
  694     const double *v1 = f.
ptr(0);
 
  695     double       *v2 = w.
ptr(0);
 
  701     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  705     for (
int i = is; i < is + ns; ++i) {
 
  710     for (
int i = is; i < is + ns; ++i) {
 
  714     for (
int i = is; i < is + ns; ++i) {
 
  725     const double *v1 = f.
ptr(0);
 
  726     double       *v2 = w.
ptr(0);
 
  732     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  736     for (
int i = is; i < is + ns; ++i) {
 
  741     for (
int i = is; i < is + ns; ++i) {
 
  745     for (
int i = is; i < is + ns; ++i) {
 
  756     const double *v1 = f.
ptr(0);
 
  757     double       *v2 = w.
ptr(0);
 
  763     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  767     for (
int i = is; i < is + ns; ++i) {
 
  772     for (
int i = is; i < is + ns; ++i) {
 
  776     for (
int i = is; i < is + ns; ++i) {
 
  787     const double *v1 = f.
ptr(0);
 
  788     double       *v2 = w.
ptr(0);
 
  794     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  798     for (
int i = is; i < is + ns; ++i) {
 
  803     for (
int i = is; i < is + ns; ++i) {
 
  807     for (
int i = is; i < is + ns; ++i) {
 
  818     const double *v1 = f.
ptr(0);
 
  819     double       *v2 = w.
ptr(0);
 
  825     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  829     for (
int i = is; i < is + ns; ++i) {
 
  834     for (
int i = is; i < is + ns; ++i) {
 
  838     for (
int i = is; i < is + ns; ++i) {
 
  849     const double *v1 = f.
ptr(0);
 
  850     double       *v2 = w.
ptr(0);
 
  856     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  860     for (
int i = is; i < is + ns; ++i) {
 
  865     for (
int i = is; i < is + ns; ++i) {
 
  869     for (
int i = is; i < is + ns; ++i) {
 
  880     const double *v1 = f.
ptr(0);
 
  881     double       *v2 = w.
ptr(0);
 
  887     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  891     for (
int i = is; i < is + ns; ++i) {
 
  896     for (
int i = is; i < is + ns; ++i) {
 
  900     for (
int i = is; i < is + ns; ++i) {
 
  911     const double *v1 = f.
ptr(0);
 
  912     double       *v2 = w.
ptr(0);
 
  918     int ns = 
m_Ntask * (ith + 1) / nth - is;
 
  922     for (
int i = is; i < is + ns; ++i) {
 
  927     for (
int i = is; i < is + ns; ++i) {
 
  931     for (
int i = is; i < is + ns; ++i) {
 
double * vcp1_xp
arrays for data transfer. 
 
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
 
void mult_zpb_thread(int, double *, const double *)
 
void D_ex_chiral(Field &, const int ex1, const Field &, const int ex2)
 
void mult_tp1_chiral_thread(int, double *, const double *)
 
void mult_tp_chiral(Field &, const Field &)
 
void(Fopr_WilsonGeneral::* m_mult_tp)(Field &, const Field &)
 
void detailed(const char *format,...)
 
void mult_xp(Field &, const Field &)
 
void mult_yp(Field &, const Field &)
 
static int get_num_threads()
returns available number of threads. 
 
const double * ptr(const int jin, const int site, const int jex) const 
 
void mult_tm1_dirac_thread(int, double *, const double *)
 
const Field_G * m_U
gauge configuration. 
 
void mult_yp1_thread(int, double *, const double *)
 
double m_nu_s
spatial anisotropy parameter. 
 
void mult_yp2_thread(int, double *, const double *)
 
void mult_zp2_thread(int, double *, const double *)
 
double m_kappa_s
spatial hopping parameter. 
 
void general(const char *format,...)
 
GammaMatrix get_GM(GMspecies spec)
 
void mult_dn(int mu, Field &, const Field &)
 
Field m_w2
temporary fields. 
 
static Bridge::VerboseLevel Vlevel()
 
Container of Field-type object. 
 
void mult_ym2_thread(int, double *, const double *)
 
int fetch_double(const string &key, double &value) const 
 
void Ddag(Field &w, const Field &f)
 
static Channel * recv_init(int count, int idir, int ipm)
 
void mult_up(int mu, Field &, const Field &)
nearest neighbor hopping term: temporary entry [H.Matsufuru] 
 
void proj_chiral(Field &w, const int ex1, const Field &v, const int ex2, const int ipm)
 
void clear_thread(int, double *)
 
void mult_tpb_chiral_thread(int, double *, const double *)
 
void mult_xm(Field &, const Field &)
 
void mult_ym(Field &, const Field &)
 
static int ipe(const int dir)
logical coordinate of current proc. 
 
void gm5_chiral_thread(int, double *, const double *)
 
void addpart_ex(int ex, const Field &w, int exw)
 
std::vector< Channel * > m_bw_recv
 
void D_ex_dirac(Field &, const int ex1, const Field &, const int ex2)
 
static int get_thread_id()
returns thread id. 
 
void mult_tpb_dirac_thread(int, double *, const double *)
 
void H(Field &w, const Field &f)
 
void mult_tm_dirac(Field &, const Field &)
 
void mult_tp2_dirac_thread(int, double *, const double *)
 
void daypx(Field &, double, const Field &)
 
void mult_zm2_thread(int, double *, const double *)
 
void mult_xm2_thread(int, double *, const double *)
 
std::string get_mode() const 
only for Fopr_Overlap 
 
void mult_tm1_chiral_thread(int, double *, const double *)
 
void mult_tmb_dirac_thread(int, double *, const double *)
 
void init(std::string repr)
 
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=COMPLEX)
 
static void sync_barrier_all()
barrier among all the threads and nodes. 
 
void(Fopr_WilsonGeneral::* m_D_ex)(Field &, const int, const Field &, const int)
 
void mult_gm5(Field &v, const Field &f)
gamma_5 multiplication. [31 Mar 2017 H.Matsufuru] 
 
void mult_tm2_dirac_thread(int, double *, const double *)
 
void mult_tp1_dirac_thread(int, double *, const double *)
 
double flop_count()
returns the flops per site. 
 
void mult_zp(Field &, const Field &)
 
std::vector< int > m_boundary
boundary condition. 
 
void paranoiac(const char *format,...)
 
void gm5_chiral(Field &, const Field &)
 
void D(Field &v, const Field &f)
 
void mult_zmb_thread(int, double *, const double *)
 
void DdagD(Field &w, const Field &f)
 
void crucial(const char *format,...)
 
void mult_xmb_thread(int, double *, const double *)
 
void gm5_dirac_thread(int, double *, const double *)
 
std::vector< double > m_boundary2
b.c. for each node. 
 
void mult_tp_dirac(Field &, const Field &)
 
void D_chiral(Field &, const Field &)
 
void daypx_thread(int, double *, double, const double *)
 
void mult_tmb_chiral_thread(int, double *, const double *)
 
void mult_ypb_thread(int, double *, const double *)
 
void D_dirac(Field &, const Field &)
 
void(Fopr_WilsonGeneral::* m_mult_tm)(Field &, const Field &)
 
double m_r_s
spatial Wilson parameter. 
 
static Channel * send_init(int count, int idir, int ipm)
 
void mult_undef(Field &, const Field &f)
 
static int sync()
synchronize within small world. 
 
void set_parameters(const Parameters ¶ms)
 
void mult_ymb_thread(int, double *, const double *)
 
void mult_zm(Field &, const Field &)
 
void DDdag(Field &w, const Field &f)
 
void mult_xpb_thread(int, double *, const double *)
 
void(Fopr_WilsonGeneral::* m_mult_dag)(Field &, const Field &)
 
void mult_ym1_thread(int, double *, const double *)
 
void gm5_dirac(Field &, const Field &)
 
void mult_tm_chiral(Field &, const Field &)
 
std::vector< GammaMatrix > m_GM
gamma matrices. 
 
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 mult_xp1_thread(int, double *, const double *)
 
void mult_tm2_chiral_thread(int, double *, const double *)
 
static const std::string class_name
 
double m_kappa_t
temporal hopping parameter. 
 
Bridge::VerboseLevel m_vl
 
void mult_tp2_chiral_thread(int, double *, const double *)
 
void mult_zp1_thread(int, double *, const double *)
 
std::vector< Channel * > m_fw_send
 
void(Fopr_WilsonGeneral::* m_D)(Field &, const Field &)
 
void(Fopr_WilsonGeneral::* m_mult)(Field &, const Field &)
 
void mult_xm1_thread(int, double *, const double *)
 
static VerboseLevel set_verbose_level(const std::string &str)
 
void mult_xp2_thread(int, double *, const double *)
 
void mult_zm1_thread(int, double *, const double *)
 
std::vector< Channel * > m_fw_recv
 
void(Fopr_WilsonGeneral::* m_gm5)(Field &, const Field &)
 
std::vector< Channel * > m_bw_send
 
const Field_F mult_gm5p(int mu, const Field_F &w)