Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_Clover_SF.cpp
Go to the documentation of this file.
1 
14 #include "fopr_Clover_SF.h"
15 
16 #ifdef USE_PARAMETERS_FACTORY
17 #include "parameters_factory.h"
18 #endif
19 
20 using std::valarray;
21 using std::string;
22 
23 //- parameter entries
24 namespace {
25  void append_entry(Parameters& param)
26  {
27  param.Register_string("gamma_matrix_type", "NULL");
28  param.Register_double("hopping_parameter", 0.0);
29  param.Register_double("clover_coefficient", 0.0);
30  param.Register_int_vector("boundary_condition", std::valarray<int>());
31  param.Register_double_vector("phi", std::valarray<double>());
32  param.Register_double_vector("phipr", std::valarray<double>());
33 
34  param.Register_string("verbose_level", "NULL");
35  }
36 
37 
38 #ifdef USE_PARAMETERS_FACTORY
39  bool init_param = ParametersFactory::Register("Fopr.Clover_SF", append_entry);
40 #endif
41 }
42 //- end
43 
44 //- parameters class
46 //- end
47 
48 const std::string Fopr_Clover_SF::class_name = "Fopr_Clover_SF";
49 
50 //====================================================================
52 {
53  const string str_vlevel = params.get_string("verbose_level");
54 
55  m_vl = vout.set_verbose_level(str_vlevel);
56 
57  //- fetch and check input parameters
58  string str_gmset_type;
59  double kappa, cSW;
60  valarray<int> bc;
61  valarray<double> phi, phipr;
62 
63  int err = 0;
64  int err_optional = 0;
65  err_optional += params.fetch_string("gamma_matrix_type", str_gmset_type);
66  err += params.fetch_double("hopping_parameter", kappa);
67  err += params.fetch_double("clover_coefficient", cSW);
68  err += params.fetch_int_vector("boundary_condition", bc);
69  err += params.fetch_double_vector("phi", phi);
70  err += params.fetch_double_vector("phipr", phipr);
71 
72  if (err) {
73  vout.crucial(m_vl, "%s: fetch error, input parameter not found.\n", class_name.c_str());
74  abort();
75  }
76 
77 
78  m_repr = str_gmset_type;
79 
80  set_parameters(kappa, cSW, bc, &phi[0], &phipr[0]);
81 }
82 
83 
84 //====================================================================
85 void Fopr_Clover_SF::set_parameters(double kappa, double cSW, valarray<int> bc,
86  double *phi, double *phipr)
87 {
88  //- print input parameters
89  vout.general(m_vl, "Parameters of %s:\n", class_name.c_str());
90  vout.general(m_vl, " kappa = %8.4f\n", kappa);
91  vout.general(m_vl, " cSW = %8.4f\n", cSW);
92  for (int mu = 0; mu < m_Ndim; ++mu) {
93  vout.general(m_vl, " boundary[%d] = %2d\n", mu, bc[mu]);
94  }
95  vout.general(m_vl, " phi1 = %12.6f\n", phi[0]);
96  vout.general(m_vl, " phi2 = %12.6f\n", phi[1]);
97  vout.general(m_vl, " phi3 = %12.6f\n", phi[2]);
98  vout.general(m_vl, " phipr1= %12.6f\n", phipr[0]);
99  vout.general(m_vl, " phipr2= %12.6f\n", phipr[1]);
100  vout.general(m_vl, " phipr3= %12.6f\n", phipr[2]);
101 
102  //- range check
103  // NB. kappa,cSW == 0 is allowed.
104  // NB. phi,phipr == 0 is allowed.
105  assert(bc.size() == m_Ndim);
106 
107  //- store values
108  m_kappa = kappa;
109  m_cSW = cSW;
110 
111  for (int i = 0; i < 3; ++i) {
112  m_phi[i] = phi[i];
113  m_phipr[i] = phipr[i];
114  }
115 
116  for (int mu = 0; mu < m_Ndim; ++mu) {
117  m_boundary[mu] = bc[mu];
118  }
119 
120  //- propagate parameters
122 }
123 
124 
125 //====================================================================
126 namespace {
127  inline double mult_uv_r(double *u, double *v)
128  {
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];
132  }
133 
134 
135  inline double mult_uv_i(double *u, double *v)
136  {
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];
140  }
141 }
142 
143 //====================================================================
144 void Fopr_Clover_SF::init(string repr)
145 {
147  m_Ndim = CommonParameters::Ndim();
150  m_NinF = 2 * m_Nc * m_Nd;
151 
152  m_U = 0;
153 
154  m_repr = repr;
155 
156  m_boundary.resize(m_Ndim);
157  m_GM.resize(m_Ndim + 1);
158  m_SG.resize(m_Ndim * m_Ndim);
159 
160  GammaMatrixSet *gmset = GammaMatrixSet::New(m_repr);
161 
162  m_GM[0] = gmset->get_GM(gmset->GAMMA1);
163  m_GM[1] = gmset->get_GM(gmset->GAMMA2);
164  m_GM[2] = gmset->get_GM(gmset->GAMMA3);
165  m_GM[3] = gmset->get_GM(gmset->GAMMA4);
166  m_GM[4] = gmset->get_GM(gmset->GAMMA5);
167 
168  m_SG[sg_index(0, 1)] = gmset->get_GM(gmset->SIGMA12);
169  m_SG[sg_index(1, 2)] = gmset->get_GM(gmset->SIGMA23);
170  m_SG[sg_index(2, 0)] = gmset->get_GM(gmset->SIGMA31);
171  m_SG[sg_index(3, 0)] = gmset->get_GM(gmset->SIGMA41);
172  m_SG[sg_index(3, 1)] = gmset->get_GM(gmset->SIGMA42);
173  m_SG[sg_index(3, 2)] = gmset->get_GM(gmset->SIGMA43);
174 
175  m_SG[sg_index(1, 0)] = m_SG[sg_index(0, 1)].mult(-1);
176  m_SG[sg_index(2, 1)] = m_SG[sg_index(1, 2)].mult(-1);
177  m_SG[sg_index(0, 2)] = m_SG[sg_index(2, 0)].mult(-1);
178  m_SG[sg_index(0, 3)] = m_SG[sg_index(3, 0)].mult(-1);
179  m_SG[sg_index(1, 3)] = m_SG[sg_index(3, 1)].mult(-1);
180  m_SG[sg_index(2, 3)] = m_SG[sg_index(3, 2)].mult(-1);
181 
182  m_SG[sg_index(0, 0)] = gmset->get_GM(gmset->UNITY);
183  m_SG[sg_index(1, 1)] = gmset->get_GM(gmset->UNITY);
184  m_SG[sg_index(2, 2)] = gmset->get_GM(gmset->UNITY);
185  m_SG[sg_index(3, 3)] = gmset->get_GM(gmset->UNITY);
186  // these 4 gamma matrices are actually not used.
187 
188 
189  // m_fopr_w = new Fopr_Wilson_SF(repr);
190  // Dirac reps. only!
191  m_fopr_w = new Fopr_Wilson_SF();
192 
193  if (m_repr == "Dirac") {
195  // }else if(m_repr == "Chiral"){
196  // m_csw = &Fopr_Clover_SF::mult_csw_chiral;
197  }
198 
199  delete gmset;
200 }
201 
202 
203 //====================================================================
205 {
206  delete m_fopr_w;
207 }
208 
209 
210 //====================================================================
212 {
213  assert(f.nex() == 1);
214  Field w2(f.nin(), f.nvol(), 1);
215 
216  D(w2, f);
217  mult_gm5(w, w2);
218  D(w2, w);
219  mult_gm5(w, w2);
220 }
221 
222 
223 //====================================================================
224 void Fopr_Clover_SF::Ddag(Field& w, const Field& f)
225 {
226  assert(f.nex() == 1);
227  Field w2(f.nin(), f.nvol(), 1);
228 
229  mult_gm5(w, f);
230  D(w2, w);
231  mult_gm5(w, w2);
232 }
233 
234 
235 //====================================================================
236 void Fopr_Clover_SF::H(Field& w, const Field& f)
237 {
238  assert(f.nex() == 1);
239  Field w2(f.nin(), f.nvol(), 1);
240 
241  D(w2, f);
242  mult_gm5(w, w2);
243 }
244 
245 
246 //====================================================================
247 void Fopr_Clover_SF::D(Field& w, const Field& f)
248 {
249  assert(f.nex() == 1);
250  int Nvol = f.nvol();
251 
252  Field_F w2(Nvol, 1);
253 
254  // Field_F w3(f);
255  // setzero.set_boundary_zero(w3);
256  // m_fopr_w->D(w,w3);
257  // mult_csw(w2,w3);
258 
259  m_fopr_w->D(w, f);
260  mult_csw(w2, (Field_F)f);
261  w -= (Field)w2;
263 }
264 
265 
266 //====================================================================
268 {
269  Field_F w(f.nvol(), f.nex());
270 
271  DdagD(w, f);
272 
273  return w;
274 }
275 
276 
277 //====================================================================
279 {
280  Field_F w(f.nvol(), f.nex());
281 
282  Ddag(w, f);
283 
284  return w;
285 }
286 
287 
288 //====================================================================
290 {
291  Field_F w(f.nvol(), f.nex());
292 
293  H(w, f);
294 
295  return w;
296 }
297 
298 
299 //====================================================================
301 {
302  Field_F w(f.nvol(), f.nex());
303 
304  D(w, f);
305 
306  return w;
307 }
308 
309 
310 //====================================================================
312  const int mu, const int nu)
313 {
314  assert(mu != nu);
315  mult_iGM(v, m_SG[sg_index(mu, nu)], w);
316 }
317 
318 
319 //====================================================================
321 {
322  (this->*m_csw)(v, w);
323 }
324 
325 
326 //====================================================================
328 {
329  assert(w.nex() == 1);
330 
331  int Nc = CommonParameters::Nc();
332  int Nvc = 2 * Nc;
333  int Ndf = 2 * Nc * Nc;
334  int Nd = CommonParameters::Nd();
335  int Nvol = w.nvol();
336 
337  int id1 = 0;
338  int id2 = Nvc;
339  int id3 = Nvc * 2;
340  int id4 = Nvc * 3;
341 
342  double *w2 = const_cast<Field_F *>(&w)->ptr(0);
343  double *v2 = v.ptr(0);
344 
345  double *Bx = m_Bx.ptr(0);
346  double *By = m_By.ptr(0);
347  double *Bz = m_Bz.ptr(0);
348  double *Ex = m_Ex.ptr(0);
349  double *Ey = m_Ey.ptr(0);
350  double *Ez = m_Ez.ptr(0);
351 
352  v = 0.0;
353 
354  for (int site = 0; site < Nvol; ++site) {
355  int iv = Nvc * Nd * site;
356  int ig = Ndf * site;
357 
358  for (int ic = 0; ic < Nc; ++ic) {
359  int icr = 2 * ic;
360  int ici = icr + 1;
361  int icg = ic * Nvc + ig;
362 
363  // isigma_23 * Bx
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]);
368 
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]);
373 
374  // isigma_31 * By
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]);
379 
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]);
384 
385  // isigma_12 * Bz
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]);
390 
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]);
395 
396  // isigma_41 * Ex
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]);
401 
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]);
406 
407  // isigma_42 * Ey
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]);
412 
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]);
417 
418  // isigma_43 * Ez
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]);
423 
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]);
428  }
429  }
430 
431  v *= m_kappa * m_cSW;
432 }
433 
434 
435 //====================================================================
437 {
438  assert(w.nex() == 1);
439 
440  int Nc = CommonParameters::Nc();
441  int Nvc = 2 * Nc;
442  int Ndf = 2 * Nc * Nc;
443  int Nd = CommonParameters::Nd();
444  int Nvol = w.nvol();
445 
446  int id1 = 0;
447  int id2 = Nvc;
448  int id3 = Nvc * 2;
449  int id4 = Nvc * 3;
450 
451  double *w2 = const_cast<Field_F *>(&w)->ptr(0);
452  double *v2 = v.ptr(0);
453 
454  double *Bx = m_Bx.ptr(0);
455  double *By = m_By.ptr(0);
456  double *Bz = m_Bz.ptr(0);
457  double *Ex = m_Ex.ptr(0);
458  double *Ey = m_Ey.ptr(0);
459  double *Ez = m_Ez.ptr(0);
460 
461  v = 0.0;
462 
463  for (int site = 0; site < Nvol; ++site) {
464  int iv = Nvc * Nd * site;
465  int ig = Ndf * site;
466 
467  for (int ic = 0; ic < Nc; ++ic) {
468  int icr = 2 * ic;
469  int ici = icr + 1;
470  int icg = ic * Nvc + ig;
471 
472  // isigma_23 * Bx
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]);
477 
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]);
482 
483  // isigma_31 * By
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]);
488 
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]);
493 
494  // isigma_12 * Bz
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]);
499 
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]);
504 
505  // isigma_41 * Ex
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]);
510 
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]);
515 
516  // isigma_42 * Ey
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]);
521 
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]);
526 
527  // isigma_43 * Ez
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]);
532 
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]);
537  }
538  }
539 
540  v *= m_kappa * m_cSW;
541 }
542 
543 
544 //====================================================================
546 {
547  set_fieldstrength(m_Bx, 1, 2);
548  set_fieldstrength(m_By, 2, 0);
549  set_fieldstrength(m_Bz, 0, 1);
550  set_fieldstrength(m_Ex, 3, 0);
551  set_fieldstrength(m_Ey, 3, 1);
552  set_fieldstrength(m_Ez, 3, 2);
553 }
554 
555 
563 //====================================================================
565  const int mu, const int nu)
566 {
567  int Nvol = CommonParameters::Nvol();
568 
569  Staples_SF staple;
570 
571  staple.set_parameters(m_phi, m_phipr);
572 
573  Field_G Cup(Nvol, 1), Cdn(Nvol, 1);
574  Field_G Umu(Nvol, 1);
575  Field_G v(Nvol, 1), v2(Nvol, 1);
576 
577  Cup = staple.upper(*m_U, mu, nu);
578  Cdn = staple.lower(*m_U, mu, nu);
579  Umu.setpart_ex(0, *m_U, mu);
580 
581  mult_Field_Gnd(Fst, 0, Umu, 0, Cup, 0);
582  multadd_Field_Gnd(Fst, 0, Umu, 0, Cdn, 0, -1.0);
583 
584  mult_Field_Gdn(v, 0, Cup, 0, Umu, 0);
585  multadd_Field_Gdn(v, 0, Cdn, 0, Umu, 0, -1.0);
586 
587  m_shift.forward(v2, v, mu);
588 
589  Fst += v2;
590 
591  ah_Field_G(Fst, 0);
592  Fst *= 0.25;
593 }
594 
595 
596 //====================================================================
597 //============================================================END=====
BridgeIO vout
Definition: bridgeIO.cpp:207
const Field_F D(const Field_F &)
void Register_string(const string &, const string &)
Definition: parameters.cpp:352
void mult_csw_dirac(Field_F &, const Field_F &)
const Field_F D(const Field_F &)
void set_parameters(const Parameters &params)
Definition: staples_SF.cpp:63
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.
ShiftField_lex m_shift
void general(const char *format,...)
Definition: bridgeIO.cpp:38
GammaMatrix get_GM(GMspecies spec)
static const std::string class_name
double * ptr(const int jin, const int site, const int jex)
Definition: field.h:118
Container of Field-type object.
Definition: field.h:37
int nvol() const
Definition: field.h:101
std::string m_repr
const Field_F Ddag(const Field_F &)
Class for parameters.
Definition: parameters.h:40
int fetch_int_vector(const string &key, std::valarray< int > &val) const
Definition: parameters.cpp:176
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.
Definition: field_F.h:37
int fetch_double_vector(const string &key, std::valarray< double > &val) const
Definition: parameters.cpp:158
const Field_F DdagD(const Field_F &)
int nin() const
Definition: field.h:100
void ah_Field_G(Field_G &w, const int ex)
int sg_index(int mu, int nu)
SU(N) gauge field.
Definition: field_G.h:36
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)
Definition: field_F_imp.cpp:94
Bridge::VerboseLevel m_vl
Definition: fopr.h:99
void set_fieldstrength(Field_G &, const int, const int)
int fetch_string(const string &key, string &val) const
Definition: parameters.cpp:194
void mult_csw(Field_F &, const Field_F &)
Set of Gamma Matrices: basis class.
int nex() const
Definition: field.h:102
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,...)
Definition: bridgeIO.cpp:26
std::valarray< GammaMatrix > m_GM
const Field_G * m_U
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)
Definition: field_F_SF.h:56
Field_F_SF setzero
In order to set the boundary field to zero.
void Register_double_vector(const string &, const std::valarray< double > &)
Definition: parameters.cpp:338
void Register_double(const string &, const double)
Definition: parameters.cpp:324
void Register_int_vector(const string &, const std::valarray< int > &)
Definition: parameters.cpp:345
const Field mult_gm5(const Field &w)
Field_G_SF lower(const Field_G &, const int, const int)
Definition: staples_SF.cpp:910
void setpart_ex(int ex, const Field &w, int exw)
Definition: field.h:150
Field_G_SF upper(const Field_G &, const int, const int)
Definition: staples_SF.cpp:864
int fetch_double(const string &key, double &val) const
Definition: parameters.cpp:124
string get_string(const string &key) const
Definition: parameters.cpp:85
void init(std::string repr)
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:191
void set_parameters(const Parameters &params)
void set_parameters(const Parameters &params)
void forward(Field &, const Field &, const int mu)