Go to the documentation of this file.
25 =
"Org::Fopr_CloverTerm_eo";
46 vout.
crucial(
"Error in %s: irrelevant mult mode = %s\n",
152 params_solver.
set_string(
"solver_type",
"CG");
153 params_solver.
set_int(
"maximum_number_of_iteration", 100);
154 params_solver.
set_int(
"maximum_number_of_restart", 40);
155 params_solver.
set_double(
"convergence_criterion_squared", 1.0e-30);
156 params_solver.
set_string(
"use_initial_guess",
"false");
157 params_solver.
set_string(
"verbose_level",
"Crucial");
206 const std::vector<int> bc)
210 assert(bc.size() ==
m_Ndim);
222 for (
int mu = 0; mu <
m_Ndim; ++mu) {
285 if (ith == 0)
m_mode = mode;
296 }
else if (
m_mode ==
"odd") {
311 }
else if (
m_mode ==
"odd") {
365 const Field& f,
const int ieo)
377 }
else if (ieo == 1) {
385 int ith, nth, is, ns;
386 set_threadtask(ith, nth, is, ns,
m_Nvol2);
388 for (
int isite = is; isite < ns; ++isite) {
389 for (
int id = 0;
id <
m_Nd; ++id) {
390 for (
int ic = 0; ic <
m_Nc; ++ic) {
393 for (
int jd = 0; jd <
m_Nd; ++jd) {
394 for (
int jc = 0; jc <
m_Nc; ++jc) {
395 int icd = jc +
m_Nc * jd;
397 re += csw_inv->
cmp_r(ic,
id, isite, icd)
399 re += csw_inv->
cmp_i(ic,
id, isite, icd)
402 im += csw_inv->
cmp_r(ic,
id, isite, icd)
404 im -= csw_inv->
cmp_i(ic,
id, isite, icd)
422 const int mu,
const int nu)
460 int ith, nth, is, ns;
461 set_threadtask(ith, nth, is, ns,
m_Nvol2);
464 const int NinG =
m_T2[0].nin();
466 for (
int ieo = 0; ieo < 2; ++ieo) {
467 for (
int ex = 0; ex < Nfst; ++ex) {
468 for (
int isite = is; isite < ns; ++isite) {
469 for (
int in = 0; in < NinG; ++in) {
471 m_T2[ieo].set(in, isite, ex, cmp);
488 int ith, nth, is, ns;
489 set_threadtask(ith, nth, is, ns,
m_Nvol2);
491 for (
int id = 0;
id <
m_Nd; ++id) {
492 for (
int ic = 0; ic <
m_Nc; ++ic) {
493 int icd = ic +
m_Nc * id;
496 for (
int isite = is; isite < ns; ++isite) {
524 for (
int ics = 0; ics <
m_Nc *
m_Nd; ++ics) {
525 for (
int site = is; site < ns; ++site) {
526 for (
int id = 0;
id <
m_Nd; ++id) {
527 for (
int ic = 0; ic <
m_Nc; ++ic) {
547 const int mu,
const int nu)
580 const double gflop = flop_site * ((Nvol / 2) * (NPE / 1.0e+9));
Set of Gamma Matrices: basis class.
void forward(Field &, const Field &, const int mu)
std::vector< Field_G > m_T2
m_T2 is used in Org-version.
Methods to shift the even-odd field.
void mult_Field_Gdn(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
void set_string(const string &key, const string &value)
static int get_num_threads()
returns available number of threads.
double cmp_i(const int cc, const int s, const int site, const int e=0) const
void set(const int jin, const int site, const int jex, double v)
double flop_count()
returns number of floating point operations.
Field_G m_T
m_T = 1 - kappa c_SW sigma F / 2
void set_fieldstrength(Field_G &, const int, const int)
void set_double(const string &key, const double value)
std::vector< GammaMatrix > m_GM
Gamma Matrix and Sigma_{mu,nu} = -i [Gamma_mu, Gamma_nu] /2.
void detailed(const char *format,...)
Field_G m_u2
working fields
void get_parameters(Parameters ¶ms) const
gets parameters by a Parameter object: to be implemented in a subclass.
void set_ri(const int cc, const int s, const int site, const int e, const double re, const double im)
static const std::string class_name
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
void mult_isigma(Field_F &, const Field_F &, const int mu, const int nu)
void solve(Field &solution, const Field &source, int &Nconv, double &diff)
void D(Field &v, const Field &f, const int ieo)
multiplies 1 - csw kappa sigma_{mu nu} F_{mu nu}
void copy(Field &y, const Field &x)
copy(y, x): y = x
void multadd_Field_Gn(Field_F &y, const int ex, const Field_G &u, int ex1, const Field_F &x, int ex2, const double a)
void set_config(Field *U)
sets the gauge configuration.
Field_F m_v3
working vector (in D)
int site(const int x2, const int y, const int z, const int t, const int ieo) const
int sg_index(const int mu, const int nu)
static double epsilon_criterion2()
void mult_csw_inv(Field &, const Field &, const int ieo)
multiplies [1 - csw kappa sigma_{mu nu} F_{mu nu} ]^{-1}
void ah_Field_G(Field_G &W, const int ex)
Bridge::VerboseLevel m_vl
void mult_iGM(Field_F &y, const GammaMatrix &gm, const Field_F &x)
gamma matrix multiplication (i is multiplied)
void convertField(Field &eo, const Field &lex)
double cmp_r(const int cc, const int s, const int site, const int e=0) const
int fetch_int_vector(const string &key, vector< int > &value) const
void mult_dag(Field &, const Field &)
hermitian conjugate of mult.
void set_parameters(const Parameters ¶ms)
sets parameters by a Parameter object: to be implemented in a subclass.
void set_config_impl(Field *U)
void mult(Field &, const Field &)
return D = D^dag = 1-f_ee or 1-f_oo
void reset(const int Nvol, const int Nex)
void upper(Field_G &, const Field_G &, const int, const int)
constructs upper staple in mu-nu plane.
Field_F m_w2
working vector (in solve_csw_inv)
std::vector< int > m_boundary
ShiftField_eo * m_shift_eo
void set_int_vector(const string &key, const vector< int > &value)
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)
double cmp(const int jin, const int site, const int jex) const
static Bridge::VerboseLevel Vlevel()
static VerboseLevel set_verbose_level(const std::string &str)
void init(const std::string repr)
void set_int(const string &key, const int value)
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 set_parameters(const Parameters ¶ms)
GammaMatrix get_GM(GMspecies spec)
void set_mode(const std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
void crucial(const char *format,...)
Standard Conjugate Gradient solver algorithm.
Container of Field-type object.
void lower(Field_G &, const Field_G &, const int, const int)
constructs lower staple in mu-nu plane.
void set_config_omp(Field *U)
static int get_thread_id()
returns thread id.
void general(const char *format,...)
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 reset(int Nvol, int Nex)
void mult_Field_Gnd(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)
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)
std::vector< GammaMatrix > m_SG