Go to the documentation of this file.
19 #ifdef USE_FACTORY_AUTOREGISTER
21 bool init = Fopr_Wilson_eo::register_factory();
47 vout.
crucial(
"Error at %s: unsupported gamma-matrix type: %s\n",
166 const std::vector<int> bc)
168 assert(bc.size() ==
m_Ndim);
184 for (
int mu = 0; mu <
m_Ndim; ++mu) {
218 if (ith == 0)
m_mode = mode;
229 }
else if (
m_mode ==
"Ddag") {
231 }
else if (
m_mode ==
"DdagD") {
233 }
else if (
m_mode ==
"DDdag") {
236 vout.
crucial(
"Error at %s: irrelevant mult mode = %s.\n",
248 }
else if (
m_mode ==
"Ddag") {
250 }
else if (
m_mode ==
"DdagD") {
252 }
else if (
m_mode ==
"DDdag") {
255 vout.
crucial(
"Error at %s: irrelevant mult mode = %s.\n",
264 const std::string mode)
268 }
else if (mode ==
"Doe") {
271 vout.
crucial(
"Error at %s: irrelevant mult mode = %s.\n",
280 const std::string mode)
284 }
else if (mode ==
"Doe") {
287 vout.
crucial(
"Error at %s: irrelevant mult mode = %s.\n",
324 }
else if (
m_mode ==
"Ddag") {
327 vout.
crucial(
"Error at %s: irrelevant preProp mode = %s.\n",
352 }
else if (
m_mode ==
"Ddag") {
355 vout.
crucial(
"Error at %s: irrelevant postProp mode = %s.\n",
441 for (
int mu = 0; mu <
m_Ndim; ++mu) {
464 for (
int mu = 0; mu <
m_Ndim; ++mu) {
492 int ith, nth, is, ns;
493 set_threadtask(ith, nth, is, ns,
m_Nvol2);
496 for (
int ex = 0; ex < Nex; ++ex) {
501 for (
int site = is; site < ns; ++site) {
502 for (
int id = 0;
id <
m_Nd; ++id) {
522 int ith, nth, is, ns;
523 set_threadtask(ith, nth, is, ns,
m_Nvol2);
526 for (
int ex = 0; ex < Nex; ++ex) {
527 for (
int site = is; site < ns; ++site) {
528 for (
int id = 0;
id <
m_Nd; ++id) {
531 * w.
vec(
id, site, ex);
557 int flop_Meo = Nc * Nd * 2 * 8 * (4 * Nc - 1);
559 flop_Meo += Nc * Nd * 2 * (4 * 3 + 4 * 2);
560 flop_Meo += Nc * Nd * 2 * 8;
561 flop_Meo += Nc * Nd * 2;
563 const int flop_per_site = 2 * flop_Meo + Nc * Nd * 2 * 2;
566 double gflop = flop_per_site * ((Nvol / 2) * (NPE / 1.0e+9));
Set of Gamma Matrices: basis class.
void mult_dn(const int mu, Field_F &, const Field_F &, const int ieo)
void forward_h(Field &, const Field &, const int mu, const int ieo)
Field_F m_v3
working field (used in DdagD, DDdag, H)
Methods to shift the even-odd field.
void set_string(const string &key, const string &value)
void set_vec(const int s, const int site, const int e, const Vec_SU_N &F)
void mult_dag(Field &, const Field &)
hermitian conjugate of mult(Field&, const Field&).
Field_F m_v2
working field (used in D, Ddag)
void mult_GM(Field_F &y, const GammaMatrix &gm, const Field_F &x)
gamma matrix multiplication
Vec_SU_N vec(const int s, const int site, const int e=0) const
void set(const int jin, const int site, const int jex, double v)
Mat_SU_N mat_dag(const int site, const int mn=0) const
void set_double(const string &key, const double value)
double flop_count()
this returns the number of floating point operations of Meo.
void init(const Parameters &)
initial setup (standard)
void postProp(Field &x, const Field &xe, const Field &bo)
void DDdag(Field &, const Field &)
bool check_size(const int nin, const int nvol, const int nex) const
checking size parameters. [23 May 2016 H.Matsufuru]
static const std::string class_name
std::vector< int > m_boundary
boundary condition
std::vector< GammaMatrix > m_GM
std::string m_repr
gamma matrix representation
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
void Ddag(Field &, const Field &)
void mult_GMproj2(Field_F &y, const int pm, const GammaMatrix &gm, const Field_F &x)
projection with gamma matrix: (1 \pm gamma)
void copy(Field &y, const Field &x)
copy(y, x): y = x
void tidyup()
final clean-up
void DdagD(Field &, const Field &)
void reverseField(Field &lex, const Field &eo)
void H(Field &, const Field &)
void mult_up(const int mu, Field_F &, const Field_F &, const int ieo)
void setup()
common setup in initialization.
ShiftField_eo * m_shift
even-odd field shifter
void convertField(Field &eo, const Field &lex)
int fetch_int_vector(const string &key, vector< int > &value) const
void backward_h(Field &, const Field &, const int mu, const int ieo)
void get_parameters(Parameters ¶ms) const
gets parameters by a Parameter object: to be implemented in a subclass.
void reset(const int Nvol, const int Nex)
std::string m_mode
multiplication mode
Field_F m_t2
working field (used in mult_up/dn)
double m_kappa
hopping parameter
void set_int_vector(const string &key, const vector< int > &value)
void preProp(Field &Be, Field &bo, const Field &b)
Bridge::VerboseLevel m_vl
verbose level
void D(Field &, const Field &)
void set_parameters(const Parameters ¶ms)
sets parameters by a Parameter object: to be implemented in a subclass.
static Bridge::VerboseLevel Vlevel()
void Mdageo(Field &, const Field &, const int ieo)
static VerboseLevel set_verbose_level(const std::string &str)
void gm5p(const int mu, Field &, const Field &v)
gamma_5 (1 - gamma_mu) v(x + mu)
void scal(Field &x, const double a)
scal(x, a): x = a * x
int fetch_string(const string &key, string &value) const
Wilson-type fermion field.
int fetch_double(const string &key, double &value) const
void Meo(Field &, const Field &, const int ieo)
GammaMatrix get_GM(GMspecies spec)
void crucial(const char *format,...)
Container of Field-type object.
void mult(Field &, const Field &)
multiplies fermion operator to a given field (2nd argument)
static int get_thread_id()
returns thread id.
Mat_SU_N mat(const int site, const int mn=0) const
void mult_gm5(Field &, const Field &)
multiplies gamma_5 matrix.
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
void general(const char *format,...)
void reset(int Nvol, int Nex)
void set_config(Field *U)
setting pointer to the gauge configuration.
static void assert_single_thread(const std::string &class_name)
assert currently running on single thread.
static std::string get_verbose_level(const VerboseLevel vl)
Field_G m_Ueo
even-odd configuration
Field_F m_w2
working field (used in Meo, Mdageo, mult_gm5)