16 #ifdef USE_PARAMETERS_FACTORY
38 #ifdef USE_PARAMETERS_FACTORY
51 const string str_vlevel = params.
get_string(
"verbose_level");
56 string str_gmset_type;
59 valarray<double> phi, phipr;
63 err_optional += params.
fetch_string(
"gamma_matrix_type", str_gmset_type);
71 vout.
crucial(
m_vl,
"Fopr_Clover_SF: fetch error, input parameter not found.\n");
84 double *phi,
double *phipr)
90 for (
int mu = 0; mu <
m_Ndim; ++mu) {
103 assert(bc.size() ==
m_Ndim);
109 for (
int i = 0; i < 3; ++i) {
114 for (
int mu = 0; mu <
m_Ndim; ++mu) {
125 inline double mult_uv_r(
double *u,
double *v)
127 return u[0] * v[0] - u[1] * v[1]
128 + u[2] * v[2] - u[3] * v[3]
129 + u[4] * v[4] - u[5] * v[5];
133 inline double mult_uv_i(
double *u,
double *v)
135 return u[0] * v[1] + u[1] * v[0]
136 + u[2] * v[3] + u[3] * v[2]
137 + u[4] * v[5] + u[5] * v[4];
155 m_GM.resize(m_Ndim + 1);
156 m_SG.resize(m_Ndim * m_Ndim);
211 assert(f.
nex() == 1);
224 assert(f.
nex() == 1);
236 assert(f.
nex() == 1);
247 assert(f.
nex() == 1);
310 const int mu,
const int nu)
320 (this->*
m_csw)(v, w);
327 assert(w.
nex() == 1);
331 int Ndf = 2 * Nc * Nc;
340 double *w2 =
const_cast<Field_F *
>(&w)->ptr(0);
341 double *v2 = v.
ptr(0);
352 for (
int site = 0; site < Nvol; ++site) {
353 int iv = Nvc * Nd * site;
356 for (
int ic = 0; ic < Nc; ++ic) {
359 int icg = ic * Nvc + ig;
362 v2[icr + id1 + iv] -= mult_uv_i(&Bx[icg], &w2[id2 + iv]);
363 v2[ici + id1 + iv] += mult_uv_r(&Bx[icg], &w2[id2 + iv]);
364 v2[icr + id2 + iv] -= mult_uv_i(&Bx[icg], &w2[id1 + iv]);
365 v2[ici + id2 + iv] += mult_uv_r(&Bx[icg], &w2[id1 + iv]);
367 v2[icr + id3 + iv] -= mult_uv_i(&Bx[icg], &w2[id4 + iv]);
368 v2[ici + id3 + iv] += mult_uv_r(&Bx[icg], &w2[id4 + iv]);
369 v2[icr + id4 + iv] -= mult_uv_i(&Bx[icg], &w2[id3 + iv]);
370 v2[ici + id4 + iv] += mult_uv_r(&Bx[icg], &w2[id3 + iv]);
373 v2[icr + id1 + iv] += mult_uv_r(&By[icg], &w2[id2 + iv]);
374 v2[ici + id1 + iv] += mult_uv_i(&By[icg], &w2[id2 + iv]);
375 v2[icr + id2 + iv] -= mult_uv_r(&By[icg], &w2[id1 + iv]);
376 v2[ici + id2 + iv] -= mult_uv_i(&By[icg], &w2[id1 + iv]);
378 v2[icr + id3 + iv] += mult_uv_r(&By[icg], &w2[id4 + iv]);
379 v2[ici + id3 + iv] += mult_uv_i(&By[icg], &w2[id4 + iv]);
380 v2[icr + id4 + iv] -= mult_uv_r(&By[icg], &w2[id3 + iv]);
381 v2[ici + id4 + iv] -= mult_uv_i(&By[icg], &w2[id3 + iv]);
384 v2[icr + id1 + iv] -= mult_uv_i(&Bz[icg], &w2[id1 + iv]);
385 v2[ici + id1 + iv] += mult_uv_r(&Bz[icg], &w2[id1 + iv]);
386 v2[icr + id2 + iv] += mult_uv_i(&Bz[icg], &w2[id2 + iv]);
387 v2[ici + id2 + iv] -= mult_uv_r(&Bz[icg], &w2[id2 + iv]);
389 v2[icr + id3 + iv] -= mult_uv_i(&Bz[icg], &w2[id3 + iv]);
390 v2[ici + id3 + iv] += mult_uv_r(&Bz[icg], &w2[id3 + iv]);
391 v2[icr + id4 + iv] += mult_uv_i(&Bz[icg], &w2[id4 + iv]);
392 v2[ici + id4 + iv] -= mult_uv_r(&Bz[icg], &w2[id4 + iv]);
395 v2[icr + id1 + iv] += mult_uv_i(&Ex[icg], &w2[id2 + iv]);
396 v2[ici + id1 + iv] -= mult_uv_r(&Ex[icg], &w2[id2 + iv]);
397 v2[icr + id2 + iv] += mult_uv_i(&Ex[icg], &w2[id1 + iv]);
398 v2[ici + id2 + iv] -= mult_uv_r(&Ex[icg], &w2[id1 + iv]);
400 v2[icr + id3 + iv] -= mult_uv_i(&Ex[icg], &w2[id4 + iv]);
401 v2[ici + id3 + iv] += mult_uv_r(&Ex[icg], &w2[id4 + iv]);
402 v2[icr + id4 + iv] -= mult_uv_i(&Ex[icg], &w2[id3 + iv]);
403 v2[ici + id4 + iv] += mult_uv_r(&Ex[icg], &w2[id3 + iv]);
406 v2[icr + id1 + iv] -= mult_uv_r(&Ey[icg], &w2[id2 + iv]);
407 v2[ici + id1 + iv] -= mult_uv_i(&Ey[icg], &w2[id2 + iv]);
408 v2[icr + id2 + iv] += mult_uv_r(&Ey[icg], &w2[id1 + iv]);
409 v2[ici + id2 + iv] += mult_uv_i(&Ey[icg], &w2[id1 + iv]);
411 v2[icr + id3 + iv] += mult_uv_r(&Ey[icg], &w2[id4 + iv]);
412 v2[ici + id3 + iv] += mult_uv_i(&Ey[icg], &w2[id4 + iv]);
413 v2[icr + id4 + iv] -= mult_uv_r(&Ey[icg], &w2[id3 + iv]);
414 v2[ici + id4 + iv] -= mult_uv_i(&Ey[icg], &w2[id3 + iv]);
417 v2[icr + id1 + iv] += mult_uv_i(&Ez[icg], &w2[id1 + iv]);
418 v2[ici + id1 + iv] -= mult_uv_r(&Ez[icg], &w2[id1 + iv]);
419 v2[icr + id2 + iv] -= mult_uv_i(&Ez[icg], &w2[id2 + iv]);
420 v2[ici + id2 + iv] += mult_uv_r(&Ez[icg], &w2[id2 + iv]);
422 v2[icr + id3 + iv] -= mult_uv_i(&Ez[icg], &w2[id3 + iv]);
423 v2[ici + id3 + iv] += mult_uv_r(&Ez[icg], &w2[id3 + iv]);
424 v2[icr + id4 + iv] += mult_uv_i(&Ez[icg], &w2[id4 + iv]);
425 v2[ici + id4 + iv] -= mult_uv_r(&Ez[icg], &w2[id4 + iv]);
429 v *= m_kappa *
m_cSW;
436 assert(w.
nex() == 1);
440 int Ndf = 2 * Nc * Nc;
449 double *w2 =
const_cast<Field_F *
>(&w)->ptr(0);
450 double *v2 = v.
ptr(0);
461 for (
int site = 0; site < Nvol; ++site) {
462 int iv = Nvc * Nd * site;
465 for (
int ic = 0; ic < Nc; ++ic) {
468 int icg = ic * Nvc + ig;
471 v2[icr + id1 + iv] -= mult_uv_i(&Bx[icg], &w2[id2 + iv]);
472 v2[ici + id1 + iv] += mult_uv_r(&Bx[icg], &w2[id2 + iv]);
473 v2[icr + id2 + iv] -= mult_uv_i(&Bx[icg], &w2[id1 + iv]);
474 v2[ici + id2 + iv] += mult_uv_r(&Bx[icg], &w2[id1 + iv]);
476 v2[icr + id3 + iv] -= mult_uv_i(&Bx[icg], &w2[id4 + iv]);
477 v2[ici + id3 + iv] += mult_uv_r(&Bx[icg], &w2[id4 + iv]);
478 v2[icr + id4 + iv] -= mult_uv_i(&Bx[icg], &w2[id3 + iv]);
479 v2[ici + id4 + iv] += mult_uv_r(&Bx[icg], &w2[id3 + iv]);
482 v2[icr + id1 + iv] += mult_uv_r(&By[icg], &w2[id2 + iv]);
483 v2[ici + id1 + iv] += mult_uv_i(&By[icg], &w2[id2 + iv]);
484 v2[icr + id2 + iv] -= mult_uv_r(&By[icg], &w2[id1 + iv]);
485 v2[ici + id2 + iv] -= mult_uv_i(&By[icg], &w2[id1 + iv]);
487 v2[icr + id3 + iv] += mult_uv_r(&By[icg], &w2[id4 + iv]);
488 v2[ici + id3 + iv] += mult_uv_i(&By[icg], &w2[id4 + iv]);
489 v2[icr + id4 + iv] -= mult_uv_r(&By[icg], &w2[id3 + iv]);
490 v2[ici + id4 + iv] -= mult_uv_i(&By[icg], &w2[id3 + iv]);
493 v2[icr + id1 + iv] -= mult_uv_i(&Bz[icg], &w2[id1 + iv]);
494 v2[ici + id1 + iv] += mult_uv_r(&Bz[icg], &w2[id1 + iv]);
495 v2[icr + id2 + iv] += mult_uv_i(&Bz[icg], &w2[id2 + iv]);
496 v2[ici + id2 + iv] -= mult_uv_r(&Bz[icg], &w2[id2 + iv]);
498 v2[icr + id3 + iv] -= mult_uv_i(&Bz[icg], &w2[id3 + iv]);
499 v2[ici + id3 + iv] += mult_uv_r(&Bz[icg], &w2[id3 + iv]);
500 v2[icr + id4 + iv] += mult_uv_i(&Bz[icg], &w2[id4 + iv]);
501 v2[ici + id4 + iv] -= mult_uv_r(&Bz[icg], &w2[id4 + iv]);
504 v2[icr + id1 + iv] += mult_uv_i(&Ex[icg], &w2[id4 + iv]);
505 v2[ici + id1 + iv] -= mult_uv_r(&Ex[icg], &w2[id4 + iv]);
506 v2[icr + id2 + iv] += mult_uv_i(&Ex[icg], &w2[id3 + iv]);
507 v2[ici + id2 + iv] -= mult_uv_r(&Ex[icg], &w2[id3 + iv]);
509 v2[icr + id3 + iv] += mult_uv_i(&Ex[icg], &w2[id2 + iv]);
510 v2[ici + id3 + iv] -= mult_uv_r(&Ex[icg], &w2[id2 + iv]);
511 v2[icr + id4 + iv] += mult_uv_i(&Ex[icg], &w2[id1 + iv]);
512 v2[ici + id4 + iv] -= mult_uv_r(&Ex[icg], &w2[id1 + iv]);
515 v2[icr + id1 + iv] -= mult_uv_r(&Ey[icg], &w2[id4 + iv]);
516 v2[ici + id1 + iv] -= mult_uv_i(&Ey[icg], &w2[id4 + iv]);
517 v2[icr + id2 + iv] += mult_uv_r(&Ey[icg], &w2[id3 + iv]);
518 v2[ici + id2 + iv] += mult_uv_i(&Ey[icg], &w2[id3 + iv]);
520 v2[icr + id3 + iv] -= mult_uv_r(&Ey[icg], &w2[id2 + iv]);
521 v2[ici + id3 + iv] -= mult_uv_i(&Ey[icg], &w2[id2 + iv]);
522 v2[icr + id4 + iv] += mult_uv_r(&Ey[icg], &w2[id1 + iv]);
523 v2[ici + id4 + iv] += mult_uv_i(&Ey[icg], &w2[id1 + iv]);
526 v2[icr + id1 + iv] += mult_uv_i(&Ez[icg], &w2[id3 + iv]);
527 v2[ici + id1 + iv] -= mult_uv_r(&Ez[icg], &w2[id3 + iv]);
528 v2[icr + id2 + iv] -= mult_uv_i(&Ez[icg], &w2[id4 + iv]);
529 v2[ici + id2 + iv] += mult_uv_r(&Ez[icg], &w2[id4 + iv]);
531 v2[icr + id3 + iv] += mult_uv_i(&Ez[icg], &w2[id1 + iv]);
532 v2[ici + id3 + iv] -= mult_uv_r(&Ez[icg], &w2[id1 + iv]);
533 v2[icr + id4 + iv] -= mult_uv_i(&Ez[icg], &w2[id2 + iv]);
534 v2[ici + id4 + iv] += mult_uv_r(&Ez[icg], &w2[id2 + iv]);
538 v *= m_kappa *
m_cSW;
563 const int mu,
const int nu)
571 Field_G Cup(Nvol, 1), Cdn(Nvol, 1);
573 Field_G v(Nvol, 1), v2(Nvol, 1);
582 v.mult_Field_Gdn(0, Cup, 0, Umu, 0);
583 v.multadd_Field_Gdn(0, Cdn, 0, Umu, 0, -1.0);