CHROMA
fat7_links_s.cc
Go to the documentation of this file.
1 // $Id: fat7_links_s.cc,v 3.2 2007-09-01 23:43:39 uid3790 Exp $
2 /*! \file
3  * \brief Support for Asqtad
4  */
5 
6 //
7 // recoded by mcneile
8 //
9 // NO CHECKERBOARDING HERE
10 
12 
13 namespace Chroma
14 {
15 
16  //
17  // u(Nd), probably should check
18  // uf(Nd),
19  //
20 
21  void Fat7_Links(multi1d<LatticeColorMatrix> & u,
22  multi1d<LatticeColorMatrix> & uf,
23  Real u0)
24  {
25  START_CODE();
26 
27  LatticeColorMatrix tmp_0;
28  LatticeColorMatrix tmp_1;
29  LatticeColorMatrix tmp_2;
30  LatticeColorMatrix tmp_3;
31  LatticeColorMatrix tmp_4;
32  Real c_1l;
33  Real c_3l;
34  Real c_5l;
35  Real c_7l;
36  Real c_Lepage;
37  int mu;
38  int nu;
39  int rho;
40  int sigma;
41 
42  // SZIN parameters from macros/primitives.mh
43  // probably should be checked
44  //
45  // enum SZINdir { BACKWARD= 0 , FORWARD = 1 } ;
46 
47 
48  if (Nd == 4)
49  {
50  c_1l = (Real)(5) / (Real)(8);
51  c_3l = (Real)(-1) / (u0*u0*(Real)(16));
52  c_5l = - c_3l / (u0*u0*(Real)(4));
53  c_7l = - c_5l / (u0*u0*(Real)(6));
54  c_Lepage = c_3l / (u0*u0);
55 
56 
57  for(mu=0; mu < Nd; ++mu)
58  {
59  uf[mu] = u[mu] * c_1l;
60 
61  for(nu=0; nu < Nd; ++nu)
62  if(nu != mu)
63  {
64  tmp_0 = u[nu] * shift(u[mu], FORWARD, nu);
65  tmp_2 = tmp_0 * shift(adj(u[nu]), FORWARD, mu);
66 
67  tmp_0 = u[nu] * shift(tmp_2, FORWARD, nu);
68  tmp_1 = tmp_0 * shift(adj(u[nu]), FORWARD, mu);
69 
70  uf[mu] += tmp_1 * c_Lepage;
71 
72  tmp_0 = u[mu] * shift(u[nu] , FORWARD, mu);
73  tmp_1 = shift(adj(u[nu]), BACKWARD, nu) * shift(tmp_0, BACKWARD, nu);
74 
75  tmp_2 += tmp_1;
76  uf[mu] += tmp_2 * c_3l;
77 
78  tmp_0 = tmp_1 * shift(u[nu], FORWARD, mu);
79  tmp_1 = shift(adj(u[nu]), BACKWARD, nu) * shift(tmp_0, BACKWARD, nu);
80 
81  uf[mu] += tmp_1 * c_Lepage;
82 
83  for(rho=0; rho < Nd; ++rho) if(rho != mu && rho != nu)
84  {
85  tmp_0 = u[rho] * shift(tmp_2, FORWARD, rho);
86  tmp_3 = tmp_0 * shift(adj(u[rho]), FORWARD, mu);
87 
88  tmp_0 = tmp_2 * shift(u[rho], FORWARD, mu);
89  tmp_3 += shift(adj(u[rho]), BACKWARD, rho) * shift(tmp_0, BACKWARD, rho);
90 
91  uf[mu] += tmp_3 * c_5l;
92 
93  for(sigma=0; sigma < Nd; ++sigma)
94  if(sigma != mu && sigma != nu && sigma != rho)
95  {
96  tmp_0 = u[sigma] * shift(tmp_3, FORWARD, sigma);
97  tmp_1 = tmp_0 * shift(adj(u[sigma]), FORWARD, mu);
98 
99  tmp_0 = tmp_3 * shift(u[sigma], FORWARD, mu);
100  tmp_1 += shift(adj(u[sigma]), BACKWARD, sigma) * shift(tmp_0, BACKWARD, sigma);
101 
102  uf[mu] += tmp_1 * c_7l;
103 
104  }
105  }
106  }
107  }
108  }
109  else
110  {
111  QDPIO::cerr << __func__
112  << ": Fat7_links (generic) not implemented for this dim, Nd=" << Nd << std::endl;
113  QDP_abort(1);
114  }
115 
116  END_CODE();
117  }
118 
119 
120 
121  void Fat7_Links(multi1d<LatticeColorMatrix> & u,
122  multi1d<LatticeColorMatrix> & uf,
123  fat7_param & pp)
124  {
125  START_CODE();
126 
127  LatticeColorMatrix tmp_0;
128  LatticeColorMatrix tmp_1;
129  LatticeColorMatrix tmp_2;
130  LatticeColorMatrix tmp_3;
131  LatticeColorMatrix tmp_4;
132 
133  int mu;
134  int nu;
135  int rho;
136  int sigma;
137 
138  // SZIN parameters from macros/primitives.mh
139  // probably should be checked
140  //
141  // enum SZINdir { BACKWARD= 0 , FORWARD = 1 } ;
142 
143 
144  if (Nd == 4)
145  {
146 
147  for(mu=0; mu < Nd; ++mu)
148  {
149  uf[mu] = u[mu] * pp.c_1l;
150 
151  for(nu=0; nu < Nd; ++nu)
152  if(nu != mu)
153  {
154  tmp_0 = u[nu] * shift(u[mu], FORWARD, nu);
155  tmp_2 = tmp_0 * shift(adj(u[nu]), FORWARD, mu);
156 
157  tmp_0 = u[nu] * shift(tmp_2, FORWARD, nu);
158  tmp_1 = tmp_0 * shift(adj(u[nu]), FORWARD, mu);
159 
160  uf[mu] += tmp_1 * pp.c_Lepage;
161 
162  tmp_0 = u[mu] * shift(u[nu] , FORWARD, mu);
163  tmp_1 = shift(adj(u[nu]), BACKWARD, nu) * shift(tmp_0, BACKWARD, nu);
164 
165  tmp_2 += tmp_1;
166  uf[mu] += tmp_2 * pp.c_3l;
167 
168  tmp_0 = tmp_1 * shift(u[nu], FORWARD, mu);
169  tmp_1 = shift(adj(u[nu]), BACKWARD, nu) * shift(tmp_0, BACKWARD, nu);
170 
171  uf[mu] += tmp_1 * pp.c_Lepage;
172 
173  for(rho=0; rho < Nd; ++rho) if(rho != mu && rho != nu)
174  {
175  tmp_0 = u[rho] * shift(tmp_2, FORWARD, rho);
176  tmp_3 = tmp_0 * shift(adj(u[rho]), FORWARD, mu);
177 
178  tmp_0 = tmp_2 * shift(u[rho], FORWARD, mu);
179  tmp_3 += shift(adj(u[rho]), BACKWARD, rho) * shift(tmp_0, BACKWARD, rho);
180 
181  uf[mu] += tmp_3 * pp.c_5l;
182 
183  for(sigma=0; sigma < Nd; ++sigma)
184  if(sigma != mu && sigma != nu && sigma != rho)
185  {
186  tmp_0 = u[sigma] * shift(tmp_3, FORWARD, sigma);
187  tmp_1 = tmp_0 * shift(adj(u[sigma]), FORWARD, mu);
188 
189  tmp_0 = tmp_3 * shift(u[sigma], FORWARD, mu);
190  tmp_1 += shift(adj(u[sigma]), BACKWARD, sigma) * shift(tmp_0, BACKWARD, sigma);
191 
192  uf[mu] += tmp_1 * pp.c_7l;
193 
194  }
195  }
196  }
197  }
198  }
199  else
200  {
201  QDPIO::cerr << __func__
202  << ": Fat7_links (generic) not implemented for this dim, Nd=" << Nd << std::endl;
203  QDP_abort(1);
204  }
205 
206  END_CODE();
207  }
208 
209 } // End Namespace Chroma
210 
211 
Pass parameters to the fat link code.
Real u0
int mu
Definition: cool.cc:24
int nu
Definition: cool.cc:25
void Fat7_Links(multi1d< LatticeColorMatrix > &u, multi1d< LatticeColorMatrix > &uf, Real u0)
FAT7_LINKS.
Definition: fat7_links_s.cc:21
Support for Asqtad.
LatticeColorMatrix tmp_2
Definition: meslate.cc:51
LatticeColorMatrix tmp_3
Definition: meslate.cc:52
LatticeColorMatrix tmp_1
Definition: meslate.cc:50
Nd
Definition: meslate.cc:74
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
START_CODE()
#define FORWARD
Definition: primitives.h:82
#define BACKWARD
Definition: primitives.h:83