16 #ifdef USE_PARAMETERS_FACTORY 
   38 #ifdef USE_PARAMETERS_FACTORY 
   53   const string str_vlevel = params.
get_string(
"verbose_level");
 
   58   string           str_gmset_type;
 
   61   valarray<double> phi, phipr;
 
   65   err_optional += params.
fetch_string(
"gamma_matrix_type", str_gmset_type);
 
   86                                     double *phi, 
double *phipr)
 
   92   for (
int mu = 0; mu < 
m_Ndim; ++mu) {
 
  105   assert(bc.size() == 
m_Ndim);
 
  111   for (
int i = 0; i < 3; ++i) {
 
  116   for (
int mu = 0; mu < 
m_Ndim; ++mu) {
 
  127   inline double mult_uv_r(
double *u, 
double *v)
 
  129     return u[0] * v[0] - u[1] * v[1]
 
  130            + u[2] * v[2] - u[3] * v[3]
 
  131            + u[4] * v[4] - u[5] * v[5];
 
  135   inline double mult_uv_i(
double *u, 
double *v)
 
  137     return u[0] * v[1] + u[1] * v[0]
 
  138            + u[2] * v[3] + u[3] * v[2]
 
  139            + u[4] * v[5] + u[5] * v[4];
 
  157   m_GM.resize(m_Ndim + 1);
 
  158   m_SG.resize(m_Ndim * m_Ndim);
 
  213   assert(f.
nex() == 1);
 
  226   assert(f.
nex() == 1);
 
  238   assert(f.
nex() == 1);
 
  249   assert(f.
nex() == 1);
 
  312                                  const int mu, 
const int nu)
 
  322   (this->*
m_csw)(v, w);
 
  329   assert(w.
nex() == 1);
 
  333   int Ndf  = 2 * Nc * Nc;
 
  342   double *w2 = 
const_cast<Field_F *
>(&w)->ptr(0);
 
  343   double *v2 = v.
ptr(0);
 
  354   for (
int site = 0; site < Nvol; ++site) {
 
  355     int iv = Nvc * Nd * site;
 
  358     for (
int ic = 0; ic < Nc; ++ic) {
 
  361       int icg = ic * Nvc + ig;
 
  364       v2[icr + id1 + iv] -= mult_uv_i(&Bx[icg], &w2[id2 + iv]);
 
  365       v2[ici + id1 + iv] += mult_uv_r(&Bx[icg], &w2[id2 + iv]);
 
  366       v2[icr + id2 + iv] -= mult_uv_i(&Bx[icg], &w2[id1 + iv]);
 
  367       v2[ici + id2 + iv] += mult_uv_r(&Bx[icg], &w2[id1 + iv]);
 
  369       v2[icr + id3 + iv] -= mult_uv_i(&Bx[icg], &w2[id4 + iv]);
 
  370       v2[ici + id3 + iv] += mult_uv_r(&Bx[icg], &w2[id4 + iv]);
 
  371       v2[icr + id4 + iv] -= mult_uv_i(&Bx[icg], &w2[id3 + iv]);
 
  372       v2[ici + id4 + iv] += mult_uv_r(&Bx[icg], &w2[id3 + iv]);
 
  375       v2[icr + id1 + iv] += mult_uv_r(&By[icg], &w2[id2 + iv]);
 
  376       v2[ici + id1 + iv] += mult_uv_i(&By[icg], &w2[id2 + iv]);
 
  377       v2[icr + id2 + iv] -= mult_uv_r(&By[icg], &w2[id1 + iv]);
 
  378       v2[ici + id2 + iv] -= mult_uv_i(&By[icg], &w2[id1 + iv]);
 
  380       v2[icr + id3 + iv] += mult_uv_r(&By[icg], &w2[id4 + iv]);
 
  381       v2[ici + id3 + iv] += mult_uv_i(&By[icg], &w2[id4 + iv]);
 
  382       v2[icr + id4 + iv] -= mult_uv_r(&By[icg], &w2[id3 + iv]);
 
  383       v2[ici + id4 + iv] -= mult_uv_i(&By[icg], &w2[id3 + iv]);
 
  386       v2[icr + id1 + iv] -= mult_uv_i(&Bz[icg], &w2[id1 + iv]);
 
  387       v2[ici + id1 + iv] += mult_uv_r(&Bz[icg], &w2[id1 + iv]);
 
  388       v2[icr + id2 + iv] += mult_uv_i(&Bz[icg], &w2[id2 + iv]);
 
  389       v2[ici + id2 + iv] -= mult_uv_r(&Bz[icg], &w2[id2 + iv]);
 
  391       v2[icr + id3 + iv] -= mult_uv_i(&Bz[icg], &w2[id3 + iv]);
 
  392       v2[ici + id3 + iv] += mult_uv_r(&Bz[icg], &w2[id3 + iv]);
 
  393       v2[icr + id4 + iv] += mult_uv_i(&Bz[icg], &w2[id4 + iv]);
 
  394       v2[ici + id4 + iv] -= mult_uv_r(&Bz[icg], &w2[id4 + iv]);
 
  397       v2[icr + id1 + iv] += mult_uv_i(&Ex[icg], &w2[id2 + iv]);
 
  398       v2[ici + id1 + iv] -= mult_uv_r(&Ex[icg], &w2[id2 + iv]);
 
  399       v2[icr + id2 + iv] += mult_uv_i(&Ex[icg], &w2[id1 + iv]);
 
  400       v2[ici + id2 + iv] -= mult_uv_r(&Ex[icg], &w2[id1 + iv]);
 
  402       v2[icr + id3 + iv] -= mult_uv_i(&Ex[icg], &w2[id4 + iv]);
 
  403       v2[ici + id3 + iv] += mult_uv_r(&Ex[icg], &w2[id4 + iv]);
 
  404       v2[icr + id4 + iv] -= mult_uv_i(&Ex[icg], &w2[id3 + iv]);
 
  405       v2[ici + id4 + iv] += mult_uv_r(&Ex[icg], &w2[id3 + iv]);
 
  408       v2[icr + id1 + iv] -= mult_uv_r(&Ey[icg], &w2[id2 + iv]);
 
  409       v2[ici + id1 + iv] -= mult_uv_i(&Ey[icg], &w2[id2 + iv]);
 
  410       v2[icr + id2 + iv] += mult_uv_r(&Ey[icg], &w2[id1 + iv]);
 
  411       v2[ici + id2 + iv] += mult_uv_i(&Ey[icg], &w2[id1 + iv]);
 
  413       v2[icr + id3 + iv] += mult_uv_r(&Ey[icg], &w2[id4 + iv]);
 
  414       v2[ici + id3 + iv] += mult_uv_i(&Ey[icg], &w2[id4 + iv]);
 
  415       v2[icr + id4 + iv] -= mult_uv_r(&Ey[icg], &w2[id3 + iv]);
 
  416       v2[ici + id4 + iv] -= mult_uv_i(&Ey[icg], &w2[id3 + iv]);
 
  419       v2[icr + id1 + iv] += mult_uv_i(&Ez[icg], &w2[id1 + iv]);
 
  420       v2[ici + id1 + iv] -= mult_uv_r(&Ez[icg], &w2[id1 + iv]);
 
  421       v2[icr + id2 + iv] -= mult_uv_i(&Ez[icg], &w2[id2 + iv]);
 
  422       v2[ici + id2 + iv] += mult_uv_r(&Ez[icg], &w2[id2 + iv]);
 
  424       v2[icr + id3 + iv] -= mult_uv_i(&Ez[icg], &w2[id3 + iv]);
 
  425       v2[ici + id3 + iv] += mult_uv_r(&Ez[icg], &w2[id3 + iv]);
 
  426       v2[icr + id4 + iv] += mult_uv_i(&Ez[icg], &w2[id4 + iv]);
 
  427       v2[ici + id4 + iv] -= mult_uv_r(&Ez[icg], &w2[id4 + iv]);
 
  431   v *= m_kappa * 
m_cSW;
 
  438   assert(w.
nex() == 1);
 
  442   int Ndf  = 2 * Nc * Nc;
 
  451   double *w2 = 
const_cast<Field_F *
>(&w)->ptr(0);
 
  452   double *v2 = v.
ptr(0);
 
  463   for (
int site = 0; site < Nvol; ++site) {
 
  464     int iv = Nvc * Nd * site;
 
  467     for (
int ic = 0; ic < Nc; ++ic) {
 
  470       int icg = ic * Nvc + ig;
 
  473       v2[icr + id1 + iv] -= mult_uv_i(&Bx[icg], &w2[id2 + iv]);
 
  474       v2[ici + id1 + iv] += mult_uv_r(&Bx[icg], &w2[id2 + iv]);
 
  475       v2[icr + id2 + iv] -= mult_uv_i(&Bx[icg], &w2[id1 + iv]);
 
  476       v2[ici + id2 + iv] += mult_uv_r(&Bx[icg], &w2[id1 + iv]);
 
  478       v2[icr + id3 + iv] -= mult_uv_i(&Bx[icg], &w2[id4 + iv]);
 
  479       v2[ici + id3 + iv] += mult_uv_r(&Bx[icg], &w2[id4 + iv]);
 
  480       v2[icr + id4 + iv] -= mult_uv_i(&Bx[icg], &w2[id3 + iv]);
 
  481       v2[ici + id4 + iv] += mult_uv_r(&Bx[icg], &w2[id3 + iv]);
 
  484       v2[icr + id1 + iv] += mult_uv_r(&By[icg], &w2[id2 + iv]);
 
  485       v2[ici + id1 + iv] += mult_uv_i(&By[icg], &w2[id2 + iv]);
 
  486       v2[icr + id2 + iv] -= mult_uv_r(&By[icg], &w2[id1 + iv]);
 
  487       v2[ici + id2 + iv] -= mult_uv_i(&By[icg], &w2[id1 + iv]);
 
  489       v2[icr + id3 + iv] += mult_uv_r(&By[icg], &w2[id4 + iv]);
 
  490       v2[ici + id3 + iv] += mult_uv_i(&By[icg], &w2[id4 + iv]);
 
  491       v2[icr + id4 + iv] -= mult_uv_r(&By[icg], &w2[id3 + iv]);
 
  492       v2[ici + id4 + iv] -= mult_uv_i(&By[icg], &w2[id3 + iv]);
 
  495       v2[icr + id1 + iv] -= mult_uv_i(&Bz[icg], &w2[id1 + iv]);
 
  496       v2[ici + id1 + iv] += mult_uv_r(&Bz[icg], &w2[id1 + iv]);
 
  497       v2[icr + id2 + iv] += mult_uv_i(&Bz[icg], &w2[id2 + iv]);
 
  498       v2[ici + id2 + iv] -= mult_uv_r(&Bz[icg], &w2[id2 + iv]);
 
  500       v2[icr + id3 + iv] -= mult_uv_i(&Bz[icg], &w2[id3 + iv]);
 
  501       v2[ici + id3 + iv] += mult_uv_r(&Bz[icg], &w2[id3 + iv]);
 
  502       v2[icr + id4 + iv] += mult_uv_i(&Bz[icg], &w2[id4 + iv]);
 
  503       v2[ici + id4 + iv] -= mult_uv_r(&Bz[icg], &w2[id4 + iv]);
 
  506       v2[icr + id1 + iv] += mult_uv_i(&Ex[icg], &w2[id4 + iv]);
 
  507       v2[ici + id1 + iv] -= mult_uv_r(&Ex[icg], &w2[id4 + iv]);
 
  508       v2[icr + id2 + iv] += mult_uv_i(&Ex[icg], &w2[id3 + iv]);
 
  509       v2[ici + id2 + iv] -= mult_uv_r(&Ex[icg], &w2[id3 + iv]);
 
  511       v2[icr + id3 + iv] += mult_uv_i(&Ex[icg], &w2[id2 + iv]);
 
  512       v2[ici + id3 + iv] -= mult_uv_r(&Ex[icg], &w2[id2 + iv]);
 
  513       v2[icr + id4 + iv] += mult_uv_i(&Ex[icg], &w2[id1 + iv]);
 
  514       v2[ici + id4 + iv] -= mult_uv_r(&Ex[icg], &w2[id1 + iv]);
 
  517       v2[icr + id1 + iv] -= mult_uv_r(&Ey[icg], &w2[id4 + iv]);
 
  518       v2[ici + id1 + iv] -= mult_uv_i(&Ey[icg], &w2[id4 + iv]);
 
  519       v2[icr + id2 + iv] += mult_uv_r(&Ey[icg], &w2[id3 + iv]);
 
  520       v2[ici + id2 + iv] += mult_uv_i(&Ey[icg], &w2[id3 + iv]);
 
  522       v2[icr + id3 + iv] -= mult_uv_r(&Ey[icg], &w2[id2 + iv]);
 
  523       v2[ici + id3 + iv] -= mult_uv_i(&Ey[icg], &w2[id2 + iv]);
 
  524       v2[icr + id4 + iv] += mult_uv_r(&Ey[icg], &w2[id1 + iv]);
 
  525       v2[ici + id4 + iv] += mult_uv_i(&Ey[icg], &w2[id1 + iv]);
 
  528       v2[icr + id1 + iv] += mult_uv_i(&Ez[icg], &w2[id3 + iv]);
 
  529       v2[ici + id1 + iv] -= mult_uv_r(&Ez[icg], &w2[id3 + iv]);
 
  530       v2[icr + id2 + iv] -= mult_uv_i(&Ez[icg], &w2[id4 + iv]);
 
  531       v2[ici + id2 + iv] += mult_uv_r(&Ez[icg], &w2[id4 + iv]);
 
  533       v2[icr + id3 + iv] += mult_uv_i(&Ez[icg], &w2[id1 + iv]);
 
  534       v2[ici + id3 + iv] -= mult_uv_r(&Ez[icg], &w2[id1 + iv]);
 
  535       v2[icr + id4 + iv] -= mult_uv_i(&Ez[icg], &w2[id2 + iv]);
 
  536       v2[ici + id4 + iv] += mult_uv_r(&Ez[icg], &w2[id2 + iv]);
 
  540   v *= m_kappa * 
m_cSW;
 
  565                                        const int mu, 
const int nu)
 
  573   Field_G Cup(Nvol, 1), Cdn(Nvol, 1);
 
  575   Field_G v(Nvol, 1), v2(Nvol, 1);
 
const Field_F D(const Field_F &)
 
void Register_string(const string &, const string &)
 
void mult_csw_dirac(Field_F &, const Field_F &)
 
const Field_F D(const Field_F &)
 
void set_parameters(const Parameters ¶ms)
 
void mult_Field_Gdn(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
 
double m_phi[3]
SF boundary condition at t=0. 
 
void general(const char *format,...)
 
GammaMatrix get_GM(GMspecies spec)
 
static const std::string class_name
 
double * ptr(const int jin, const int site, const int jex)
 
Container of Field-type object. 
 
const Field_F Ddag(const Field_F &)
 
int fetch_int_vector(const string &key, std::valarray< int > &val) const 
 
Wilson fermion operator with SF BC. 
 
double m_phipr[3]
SF boundary condition at t=Nt. 
 
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
 
Wilson-type fermion field. 
 
int fetch_double_vector(const string &key, std::valarray< double > &val) const 
 
const Field_F DdagD(const Field_F &)
 
void ah_Field_G(Field_G &w, const int ex)
 
int sg_index(int mu, int nu)
 
Parameters_Fopr_Clover_SF()
 
void multadd_Field_Gdn(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2, const double ff)
 
void mult_Field_Gnd(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
 
void mult_iGM(Field_F &y, const GammaMatrix &gm, const Field_F &x)
gamma matrix multiplication (i is multiplied) 
 
Bridge::VerboseLevel m_vl
 
void set_fieldstrength(Field_G &, const int, const int)
 
int fetch_string(const string &key, string &val) const 
 
void mult_csw(Field_F &, const Field_F &)
 
Set of Gamma Matrices: basis class. 
 
Fopr_Wilson_SF * m_fopr_w
 
void multadd_Field_Gnd(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2, const double ff)
 
void crucial(const char *format,...)
 
std::valarray< GammaMatrix > m_GM
 
const Field_F H(const Field_F &)
 
void(Fopr_Clover_SF::* m_csw)(Field_F &, const Field_F &)
 
void mult_csw_chiral(Field_F &, const Field_F &)
 
std::valarray< GammaMatrix > m_SG
 
std::valarray< int > m_boundary
 
static bool Register(const std::string &realm, const creator_callback &cb)
 
void set_boundary_zero(Field &f)
 
Field_F_SF setzero
In order to set the boundary field to zero. 
 
void Register_double_vector(const string &, const std::valarray< double > &)
 
void Register_double(const string &, const double)
 
void Register_int_vector(const string &, const std::valarray< int > &)
 
const Field mult_gm5(const Field &w)
 
Field_G_SF lower(const Field_G &, const int, const int)
 
void setpart_ex(int ex, const Field &w, int exw)
 
Field_G_SF upper(const Field_G &, const int, const int)
 
int fetch_double(const string &key, double &val) const 
 
string get_string(const string &key) const 
 
void init(std::string repr)
 
static VerboseLevel set_verbose_level(const std::string &str)
 
void set_parameters(const Parameters ¶ms)
 
void set_parameters(const Parameters ¶ms)
 
void forward(Field &, const Field &, const int mu)