Go to the documentation of this file.
17 #ifdef USE_FACTORY_AUTOREGISTER
19 bool init = Fopr_Wilson::register_factory();
45 vout.
crucial(
"Error at %s: unsupported gamma-matrix type: %s\n",
154 const std::vector<int> bc)
158 assert(bc.size() ==
m_Ndim);
170 for (
int mu = 0; mu <
m_Ndim; ++mu) {
204 if (ith == 0)
m_mode = mode;
214 }
else if (
m_mode ==
"Ddag") {
216 }
else if (
m_mode ==
"DdagD") {
218 }
else if (
m_mode ==
"DDdag") {
220 }
else if (
m_mode ==
"H") {
235 }
else if (
m_mode ==
"Ddag") {
237 }
else if (
m_mode ==
"DdagD") {
239 }
else if (
m_mode ==
"DDdag") {
241 }
else if (
m_mode ==
"H") {
253 const std::string mode)
257 }
else if (mode ==
"Ddag") {
259 }
else if (mode ==
"DdagD") {
261 }
else if (mode ==
"DDdag") {
263 }
else if (mode ==
"H") {
275 const std::string mode)
279 }
else if (mode ==
"Ddag") {
281 }
else if (mode ==
"DdagD") {
283 }
else if (mode ==
"DDdag") {
285 }
else if (mode ==
"H") {
338 for (
int mu = 0; mu <
m_Ndim; ++mu) {
350 const Field& w,
const int ex2)
357 for (
int mu = 0; mu <
m_Ndim; ++mu) {
388 const Field& w,
const int ex2,
391 assert(ipm == 1 || ipm == -1);
394 if (ipm == -1) fpm = -1.0;
408 assert(mu >= 0 && mu <
m_Ndim);
421 for (
int ex = 0; ex < w.
nex(); ++ex) {
437 for (
int ex = 0; ex < w.
nex(); ++ex) {
462 int flop_per_site = Nc * Nd * 2 * 8 * (4 * Nc - 1);
464 flop_per_site += Nc * Nd * 2 * (4 * 3 + 4 * 2);
465 flop_per_site += Nc * Nd * 2 * 8;
466 flop_per_site += Nc * Nd * 2 * 2;
468 double gflop = flop_per_site * (Nvol * (NPE / 1.0e+9));
Set of Gamma Matrices: basis class.
Bridge::VerboseLevel m_vl
verbose level
void set_mode(const std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
void set_string(const string &key, const string &value)
void forward(Field &, const Field &, const int mu)
void proj_chiral(Field &w, const int ex1, const Field &v, const int ex2, const int ipm)
void mult_GM(Field_F &y, const GammaMatrix &gm, const Field_F &x)
gamma matrix multiplication
void set(const int jin, const int site, const int jex, double v)
void set_double(const string &key, const double value)
void init(const Parameters ¶ms)
standard initial setup.
Field_F m_v2
working fields with spinor structure
bool check_size(const int nin, const int nvol, const int nex) const
checking size parameters. [23 May 2016 H.Matsufuru]
void aypx(const double a, Field &y, const Field &x)
aypx(y, a, x): y := a * y + x
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
void mult_up(const int mu, Field &v, const Field &w)
upward nearest neighbor hopping term.
void mult_Field_Gd(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2)
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 get_parameters(Parameters ¶ms) const
gets parameters by a Parameter object: to be implemented in a subclass.
void setup()
common parts of setup.
void H(Field &, const Field &)
void Ddag(Field &, const Field &)
int fetch_int_vector(const string &key, vector< int > &value) const
void set_parameters(const Parameters ¶ms)
sets parameters by a Parameter object: to be implemented in a subclass.
void mult_gm5p(const int mu, Field &v, const Field &w)
double m_kappa
hopping parameter
void mult_dag(Field &v, const Field &w)
hermitian conjugate of mult.
std::string m_repr
Dirac matrix representation.
void tidyup()
final clean-up.
void mult(Field &v, const Field &w)
multiplies fermion operator to a given field.
static const std::string class_name
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=Element_type::COMPLEX)
void set_int_vector(const string &key, const vector< int > &value)
void D_ex(Field &v, const int ex1, const Field &w, const int ex2)
Methods to shift a field in the lexical site index.
void mult_gm5(Field &v, const Field &w)
multiplies gamma_5 matrix.
static Bridge::VerboseLevel Vlevel()
static VerboseLevel set_verbose_level(const std::string &str)
const Field_G * m_U
pointer ot gauge configuration
void backward(Field &, const Field &, const int mu)
std::string m_mode
matrix multiplcation mode
void mult_Field_Gn(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2)
void mult_dn(const int mu, Field &v, const Field &w)
downward nearest neighbor hopping term.
std::vector< int > m_boundary
boundary condition
void set_config(Field *U)
sets the gauge configuration.
int fetch_string(const string &key, string &value) const
int fetch_double(const string &key, double &value) const
void D(Field &, const Field &)
GammaMatrix get_GM(GMspecies spec)
void crucial(const char *format,...)
Container of Field-type object.
void DDdag(Field &, const Field &)
static int get_thread_id()
returns thread id.
std::vector< GammaMatrix > m_GM
void general(const char *format,...)
void DdagD(Field &, const Field &)
void reset(int Nvol, int Nex)
static void assert_single_thread(const std::string &class_name)
assert currently running on single thread.
double flop_count()
this returns the number of floating point operations.
static std::string get_verbose_level(const VerboseLevel vl)