CHROMA
qnaive.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Calculate the topological charge from the gluonic definition
3  *
4  * Conventions are according to Bilson-Thompson et al., hep-lat/0203008
5  *
6  * Author: Christian Hagen
7  */
8 
9 #include "chromabase.h"
10 #include "meas/glue/qnaive.h"
11 
12 namespace Chroma
13 {
14 
15  //! Compute topological charge
16  /*!
17  * \ingroup glue
18  *
19  * \param u gauge field (Read)
20  * \param k5 improvement parameter (Read)
21  * \param qtop topological charge (Write)
22  */
23 
24  void qtop_naive(const multi1d<LatticeColorMatrix>& u, const Real k5, Double& qtop)
25  {
26  START_CODE();
27 
28  /* Local Variables */
29  LatticeColorMatrix u_clov_1;
30  LatticeColorMatrix u_clov_2;
31  LatticeColorMatrix tmp_1;
32  LatticeColorMatrix tmp_2;
33  LatticeReal qtop_tmp;
34 
35  Real k1,k2,k3,k4,kk5;
36 
37 // Double tmp;
38 
39  if( Nd != 4 )
40  QDP_error_exit("Nd for the topological charge has to be 4 but: ", Nd);
41 
42  k1 = 19.0/9.0 - 55.0 * k5;
43  k1 *= 2.0;
44  k2 = 1.0/36.0 - 16.0 * k5;
45  k2 *= 2.0;
46  k3 = 64.0 * k5 - 32.0/45.0;
47  k4 = 1.0/15.0 - 6.0 * k5;
48  kk5 = k5;
49  kk5 *= 2.0;
50 
51  qtop = 0;
52 
53  int mu1 = 0;
54  for(int nu1=1; nu1<Nd; ++nu1)
55  {
56 
57  if( toBool(k1 != 0) ) {
58 
59 // QDPIO::cout << "k1 = " << k1 << std::endl;
60 
61  /* First "plus-plus" 1x1 */
62  tmp_1 = u[mu1] * shift(u[nu1], FORWARD, mu1);
63  tmp_2 = tmp_1 * shift(adj(u[mu1]), FORWARD, nu1);
64  tmp_1 = tmp_2 * adj(u[nu1]);
65  u_clov_1 = k1 * tmp_1;
66 
67  /* First "plus-minus" 1x1 */
68  tmp_1 = u[mu1] * shift(shift(adj(u[nu1]), FORWARD, mu1), BACKWARD, nu1);
69  tmp_2 = tmp_1 * shift(adj(u[mu1]), BACKWARD, nu1);
70  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
71  u_clov_1 -= k1 * tmp_1;
72 
73  /* First "minus-minus" 1x1 */
74  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, nu1);
75  tmp_2 = tmp_1 * shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, nu1);
76  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
77  u_clov_1 += k1 * tmp_1;
78 
79  /* First "minus-plus" 1x1 */
80  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(u[nu1], BACKWARD, mu1);
81  tmp_2 = tmp_1 * shift(shift(u[mu1], BACKWARD, mu1), FORWARD, nu1);
82  tmp_1 = tmp_2 * adj(u[nu1]);
83  u_clov_1 -= k1 * tmp_1;
84 
85  }
86 
87  if( toBool(k2!=0) ) {
88 
89 // QDPIO::cout << "k2 = " << k2 << std::endl;
90 
91  /* First "plus-plus" 2x2 */
92  tmp_1 = u[mu1] * shift(u[mu1], FORWARD, mu1);
93  tmp_2 = tmp_1 * shift(shift(u[nu1], FORWARD, mu1), FORWARD, mu1);
94  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], FORWARD, mu1), FORWARD, mu1), FORWARD, nu1);
95  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), FORWARD, mu1), FORWARD, nu1), FORWARD, nu1);
96  tmp_1 = tmp_2 * shift(shift(adj(u[mu1]), FORWARD, nu1), FORWARD, nu1);
97  tmp_2 = tmp_1 * shift(adj(u[nu1]), FORWARD, nu1);
98  tmp_1 = tmp_2 * adj(u[nu1]);
99  u_clov_1 += k2 * tmp_1;
100 
101  /* First "plus-minus" 2x2 */
102  tmp_1 = u[mu1] * shift(u[mu1], FORWARD, mu1);
103  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu1]), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1);
104  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu1]), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
105  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
106  tmp_1 = tmp_2 * shift(shift(adj(u[mu1]), BACKWARD, nu1), BACKWARD, nu1);
107  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1);
108  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
109  u_clov_1 -= k2 * tmp_1;
110 
111  /* First "minus-minus" 2x2 */
112  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1);
113  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1);
114  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
115  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
116  tmp_1 = tmp_2 * shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
117  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1);
118  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
119  u_clov_1 += k2 * tmp_1;
120 
121  /* First "minus-plus" 2x2 */
122  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1);
123  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, mu1), BACKWARD, mu1);
124  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1);
125  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1);
126  tmp_1 = tmp_2 * shift(shift(shift(u[mu1], BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1);
127  tmp_2 = tmp_1 * shift(adj(u[nu1]), FORWARD, nu1);
128  tmp_1 = tmp_2 * adj(u[nu1]);
129  u_clov_1 -= k2 * tmp_1;
130 
131  }
132 
133  if( toBool(k3!=0) ) {
134 
135 // QDPIO::cout << "k3 = " << k3 << std::endl;
136 
137  /* First "plus-plus" 2x1 */
138  tmp_1 = u[mu1] * shift(u[mu1], FORWARD, mu1);
139  tmp_2 = tmp_1 * shift(shift(u[nu1], FORWARD, mu1), FORWARD, mu1);
140  tmp_1 = tmp_2 * shift(shift(adj(u[mu1]), FORWARD, mu1), FORWARD, nu1);
141  tmp_2 = tmp_1 * shift(adj(u[mu1]), FORWARD, nu1);
142  tmp_1 = tmp_2 * adj(u[nu1]);
143  u_clov_1 += k3 * tmp_1;
144 
145  /* First "plus-minus" 2x1 */
146  tmp_1 = u[mu1] * shift(u[mu1], FORWARD, mu1);
147  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu1]), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1);
148  tmp_1 = tmp_2 * shift(shift(adj(u[mu1]), FORWARD, mu1), BACKWARD, nu1);
149  tmp_2 = tmp_1 * shift(adj(u[mu1]), BACKWARD, nu1);
150  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
151  u_clov_1 -= k3 * tmp_1;
152 
153  /* First "minus-minus" 2x1 */
154  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1);
155  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu1]),BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1);
156  tmp_1 = tmp_2 * shift(shift(shift(u[mu1],BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1);
157  tmp_2 = tmp_1 * shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, nu1);
158  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
159  u_clov_1 += k3 * tmp_1;
160 
161  /* First "minus-plus" 2x1 */
162  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1);
163  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, mu1), BACKWARD, mu1);
164  tmp_1 = tmp_2 * shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1);
165  tmp_2 = tmp_1 * shift(shift(u[mu1], BACKWARD, mu1), FORWARD, nu1);
166  tmp_1 = tmp_2 * adj(u[nu1]);
167  u_clov_1 -= k3 * tmp_1;
168 
169 
170  /* First "plus-plus" 1x2 */
171  tmp_1 = u[mu1] * shift(u[nu1], FORWARD, mu1);
172  tmp_2 = tmp_1 * shift(shift(u[nu1], FORWARD, mu1), FORWARD, nu1);
173  tmp_1 = tmp_2 * shift(shift(adj(u[mu1]), FORWARD, nu1), FORWARD, nu1);
174  tmp_2 = tmp_1 * shift(adj(u[nu1]), FORWARD, nu1);
175  tmp_1 = tmp_2 * adj(u[nu1]);
176  u_clov_1 += k3 * tmp_1;
177 
178  /* First "plus-minus" 1x2 */
179  tmp_1 = u[mu1] * shift(shift(adj(u[nu1]), FORWARD, mu1), BACKWARD, nu1);
180  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu1]), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
181  tmp_1 = tmp_2 * shift(shift(adj(u[mu1]), BACKWARD, nu1), BACKWARD, nu1);
182  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1);
183  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
184  u_clov_1 -= k3 * tmp_1;
185 
186  /* First "minus-minus" 1x2 */
187  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, nu1);
188  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
189  tmp_1 = tmp_2 * shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
190  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1);
191  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
192  u_clov_1 += k3 * tmp_1;
193 
194  /* First "minus-plus" 1x2 */
195  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(u[nu1], BACKWARD, mu1);
196  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, mu1), FORWARD, nu1);
197  tmp_1 = tmp_2 * shift(shift(shift(u[mu1], BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1);
198  tmp_2 = tmp_1 * shift(adj(u[nu1]), FORWARD, nu1);
199  tmp_1 = tmp_2 * adj(u[nu1]);
200  u_clov_1 -= k3 * tmp_1;
201 
202  }
203 
204  if( toBool(k4!=0) ) {
205 
206 // QDPIO::cout << "k4 = " << k4 << std::endl;
207 
208  /* First "plus-plus" 3x1 */
209  tmp_1 = u[mu1] * shift(u[mu1], FORWARD, mu1);
210  tmp_2 = tmp_1 * shift(shift(u[mu1], FORWARD, mu1), FORWARD, mu1);
211  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], FORWARD, mu1), FORWARD, mu1), FORWARD, mu1);
212  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), FORWARD, mu1), FORWARD, mu1), FORWARD, nu1);
213  tmp_1 = tmp_2 * shift(shift(adj(u[mu1]), FORWARD, mu1), FORWARD, nu1);
214  tmp_2 = tmp_1 * shift(adj(u[mu1]), FORWARD, nu1);
215  tmp_1 = tmp_2 * adj(u[nu1]);
216  u_clov_1 += k4 * tmp_1;
217 
218  /* First "plus-minus" 3x1 */
219  tmp_1 = u[mu1] * shift(u[mu1], FORWARD, mu1);
220  tmp_2 = tmp_1 * shift(shift(u[mu1], FORWARD, mu1), FORWARD, mu1);
221  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu1]), FORWARD, mu1), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1);
222  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1);
223  tmp_1 = tmp_2 * shift(shift(adj(u[mu1]), FORWARD, mu1), BACKWARD, nu1);
224  tmp_2 = tmp_1 * shift(adj(u[mu1]), BACKWARD, nu1);
225  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
226  u_clov_1 -= k4 * tmp_1;
227 
228  /* First "minus-minus" 3x1 */
229  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1);
230  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1);
231  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1);
232  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1);
233  tmp_1 = tmp_2 * shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1);
234  tmp_2 = tmp_1 * shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, nu1);
235  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
236  u_clov_1 += k4 * tmp_1;
237 
238  /* First "minus-plus" 3x1 */
239  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1);
240  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1);
241  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1);
242  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1);
243  tmp_1 = tmp_2 * shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1);
244  tmp_2 = tmp_1 * shift(shift(u[mu1], BACKWARD, mu1), FORWARD, nu1);
245  tmp_1 = tmp_2 * adj(u[nu1]);
246  u_clov_1 -= k4 * tmp_1;
247 
248 
249  /* First "plus-plus" 1x3 */
250  tmp_1 = u[mu1] * shift(u[nu1], FORWARD, mu1);
251  tmp_2 = tmp_1 * shift(shift(u[nu1], FORWARD, mu1), FORWARD, nu1);
252  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], FORWARD, mu1), FORWARD, nu1), FORWARD, nu1);
253  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), FORWARD, nu1), FORWARD, nu1), FORWARD, nu1);
254  tmp_1 = tmp_2 * shift(shift(adj(u[nu1]), FORWARD, nu1), FORWARD, nu1);
255  tmp_2 = tmp_1 * shift(adj(u[nu1]), FORWARD, nu1);
256  tmp_1 = tmp_2 * adj(u[nu1]);
257  u_clov_1 += k4 * tmp_1;
258 
259  /* First "plus-minus" 1x3 */
260  tmp_1 = u[mu1] * shift(shift(adj(u[nu1]), FORWARD, mu1), BACKWARD, nu1);
261  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu1]), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
262  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu1]), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
263  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
264  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
265  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1);
266  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
267  u_clov_1 -= k4 * tmp_1;
268 
269  /* First "minus-minus" 1x3 */
270  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, nu1);
271  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
272  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu1]),BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
273  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
274  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
275  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1);
276  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
277  u_clov_1 += k4 * tmp_1;
278 
279  /* First "minus-plus" 1x3 */
280  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(u[nu1], BACKWARD, mu1);
281  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, mu1), FORWARD, nu1);
282  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1);
283  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu1], BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1), FORWARD, nu1);
284  tmp_1 = tmp_2 * shift(shift(adj(u[nu1]), FORWARD, nu1), FORWARD, nu1);
285  tmp_2 = tmp_1 * shift(adj(u[nu1]), FORWARD, nu1);
286  tmp_1 = tmp_2 * adj(u[nu1]);
287  u_clov_1 -= k4 * tmp_1;
288 
289  }
290 
291  if( toBool(kk5!=0) ) {
292 
293 // QDPIO::cout << "k5 = " << kk5 << std::endl;
294 
295  /* First "plus-plus" 3x3 */
296  tmp_1 = u[mu1] * shift(u[mu1], FORWARD, mu1);
297  tmp_2 = tmp_1 * shift(shift(u[mu1], FORWARD, mu1), FORWARD, mu1);
298  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], FORWARD, mu1), FORWARD, mu1), FORWARD, mu1);
299  tmp_2 = tmp_1 * shift(shift(shift(shift(u[nu1], FORWARD, mu1), FORWARD, mu1), FORWARD, mu1), FORWARD, nu1);
300  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(u[nu1], FORWARD, mu1), FORWARD, mu1), FORWARD, mu1), FORWARD, nu1), FORWARD, nu1);
301  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(adj(u[mu1]), FORWARD, mu1), FORWARD, mu1), FORWARD, nu1), FORWARD, nu1), FORWARD, nu1);
302  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[mu1]), FORWARD, mu1), FORWARD, nu1), FORWARD, nu1), FORWARD, nu1);
303  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), FORWARD, nu1), FORWARD, nu1), FORWARD, nu1);
304  tmp_1 = tmp_2 * shift(shift(adj(u[nu1]), FORWARD, nu1), FORWARD, nu1);
305  tmp_2 = tmp_1 * shift(adj(u[nu1]), FORWARD, nu1);
306  tmp_1 = tmp_2 * adj(u[nu1]);
307  u_clov_1 += kk5 * tmp_1;
308 
309  /* First "plus-minus" 3x3 */
310  tmp_1 = u[mu1] * shift(u[mu1], FORWARD, mu1);
311  tmp_2 = tmp_1 * shift(shift(u[mu1], FORWARD, mu1), FORWARD, mu1);
312  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu1]), FORWARD, mu1), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1);
313  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(adj(u[nu1]), FORWARD, mu1), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
314  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(shift(adj(u[nu1]), FORWARD, mu1), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
315  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(adj(u[mu1]), FORWARD, mu1), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
316  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[mu1]), FORWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
317  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
318  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
319  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1);
320  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
321  u_clov_1 -= kk5 * tmp_1;
322 
323  /* First "minus-minus" 3x3 */
324  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1);
325  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1);
326  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1);
327  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1);
328  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(shift(adj(u[nu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
329  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
330  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
331  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
332  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1), BACKWARD, nu1);
333  tmp_2 = tmp_1 * shift(shift(u[nu1], BACKWARD, nu1), BACKWARD, nu1);
334  tmp_1 = tmp_2 * shift(u[nu1], BACKWARD, nu1);
335  u_clov_1 += kk5 * tmp_1;
336 
337  /* First "minus-plus" 3x3 */
338  tmp_1 = shift(adj(u[mu1]), BACKWARD, mu1) * shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1);
339  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu1]), BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1);
340  tmp_1 = tmp_2 * shift(shift(shift(u[nu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1);
341  tmp_2 = tmp_1 * shift(shift(shift(shift(u[nu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1);
342  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(u[nu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1);
343  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1), FORWARD, nu1);
344  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(u[mu1], BACKWARD, mu1), BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1), FORWARD, nu1);
345  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu1], BACKWARD, mu1), FORWARD, nu1), FORWARD, nu1), FORWARD, nu1);
346  tmp_1 = tmp_2 * shift(shift(adj(u[nu1]), FORWARD, nu1), FORWARD, nu1);
347  tmp_2 = tmp_1 * shift(adj(u[nu1]), FORWARD, nu1);
348  tmp_1 = tmp_2 * adj(u[nu1]);
349  u_clov_1 -= kk5 * tmp_1;
350 
351  }
352 
353  int mu2 = nu1%3;
354  mu2++;
355  int nu2 = mu2%3;
356  nu2++;
357 
358 
359  if( toBool(k1!=0) ) {
360 
361  /* Second "plus-plus" 1x1 */
362  tmp_1 = u[mu2] * shift(u[nu2], FORWARD, mu2);
363  tmp_2 = tmp_1 * shift(adj(u[mu2]), FORWARD, nu2);
364  tmp_1 = tmp_2 * adj(u[nu2]);
365  u_clov_2 = k1 * tmp_1;
366 
367  /* Second "plus-minus" 1x1 */
368  tmp_1 = u[mu2] * shift(shift(adj(u[nu2]), FORWARD, mu2), BACKWARD, nu2);
369  tmp_2 = tmp_1 * shift(adj(u[mu2]), BACKWARD, nu2);
370  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
371  u_clov_2 -= k1 * tmp_1;
372 
373  /* Second "minus-minus" 1x1 */
374  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, nu2);
375  tmp_2 = tmp_1 * shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, nu2);
376  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
377  u_clov_2 += k1 * tmp_1;
378 
379  /* Second "minus-plus" 1x1 */
380  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(u[nu2], BACKWARD, mu2);
381  tmp_2 = tmp_1 * shift(shift(u[mu2], BACKWARD, mu2), FORWARD, nu2);
382  tmp_1 = tmp_2 * adj(u[nu2]);
383  u_clov_2 -= k1 * tmp_1;
384 
385  }
386 
387  if( toBool(k2!=0) ) {
388 
389  /* Second "plus-plus" 2x2 */
390  tmp_1 = u[mu2] * shift(u[mu2], FORWARD, mu2);
391  tmp_2 = tmp_1 * shift(shift(u[nu2], FORWARD, mu2), FORWARD, mu2);
392  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], FORWARD, mu2), FORWARD, mu2), FORWARD, nu2);
393  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), FORWARD, mu2), FORWARD, nu2), FORWARD, nu2);
394  tmp_1 = tmp_2 * shift(shift(adj(u[mu2]), FORWARD, nu2), FORWARD, nu2);
395  tmp_2 = tmp_1 * shift(adj(u[nu2]), FORWARD, nu2);
396  tmp_1 = tmp_2 * adj(u[nu2]);
397  u_clov_2 += k2 * tmp_1;
398 
399  /* Second "plus-minus" 2x2 */
400  tmp_1 = u[mu2] * shift(u[mu2], FORWARD, mu2);
401  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu2]), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2);
402  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu2]), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
403  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
404  tmp_1 = tmp_2 * shift(shift(adj(u[mu2]), BACKWARD, nu2), BACKWARD, nu2);
405  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2);
406  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
407  u_clov_2 -= k2 * tmp_1;
408 
409  /* Second "minus-minus" 2x2 */
410  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2);
411  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2);
412  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
413  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
414  tmp_1 = tmp_2 * shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
415  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2);
416  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
417  u_clov_2 += k2 * tmp_1;
418 
419  /* Second "minus-plus" 2x2 */
420  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2);
421  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, mu2), BACKWARD, mu2);
422  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2);
423  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2);
424  tmp_1 = tmp_2 * shift(shift(shift(u[mu2], BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2);
425  tmp_2 = tmp_1 * shift(adj(u[nu2]), FORWARD, nu2);
426  tmp_1 = tmp_2 * adj(u[nu2]);
427  u_clov_2 -= k2 * tmp_1;
428 
429  }
430 
431  if( toBool(k3!=0) ) {
432 
433  /* First "plus-plus" 2x1 */
434  tmp_1 = u[mu2] * shift(u[mu2], FORWARD, mu2);
435  tmp_2 = tmp_1 * shift(shift(u[nu2], FORWARD, mu2), FORWARD, mu2);
436  tmp_1 = tmp_2 * shift(shift(adj(u[mu2]), FORWARD, mu2), FORWARD, nu2);
437  tmp_2 = tmp_1 * shift(adj(u[mu2]), FORWARD, nu2);
438  tmp_1 = tmp_2 * adj(u[nu2]);
439  u_clov_2 += k3 * tmp_1;
440 
441  /* First "plus-minus" 2x1 */
442  tmp_1 = u[mu2] * shift(u[mu2], FORWARD, mu2);
443  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu2]), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2);
444  tmp_1 = tmp_2 * shift(shift(adj(u[mu2]), FORWARD, mu2), BACKWARD, nu2);
445  tmp_2 = tmp_1 * shift(adj(u[mu2]), BACKWARD, nu2);
446  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
447  u_clov_2 -= k3 * tmp_1;
448 
449  /* First "minus-minus" 2x1 */
450  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2);
451  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu2]),BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2);
452  tmp_1 = tmp_2 * shift(shift(shift(u[mu2],BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2);
453  tmp_2 = tmp_1 * shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, nu2);
454  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
455  u_clov_2 += k3 * tmp_1;
456 
457  /* First "minus-plus" 2x1 */
458  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2);
459  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, mu2), BACKWARD, mu2);
460  tmp_1 = tmp_2 * shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2);
461  tmp_2 = tmp_1 * shift(shift(u[mu2], BACKWARD, mu2), FORWARD, nu2);
462  tmp_1 = tmp_2 * adj(u[nu2]);
463  u_clov_2 -= k3 * tmp_1;
464 
465 
466  /* First "plus-plus" 1x2 */
467  tmp_1 = u[mu2] * shift(u[nu2], FORWARD, mu2);
468  tmp_2 = tmp_1 * shift(shift(u[nu2], FORWARD, mu2), FORWARD, nu2);
469  tmp_1 = tmp_2 * shift(shift(adj(u[mu2]), FORWARD, nu2), FORWARD, nu2);
470  tmp_2 = tmp_1 * shift(adj(u[nu2]), FORWARD, nu2);
471  tmp_1 = tmp_2 * adj(u[nu2]);
472  u_clov_2 += k3 * tmp_1;
473 
474  /* First "plus-minus" 1x2 */
475  tmp_1 = u[mu2] * shift(shift(adj(u[nu2]), FORWARD, mu2), BACKWARD, nu2);
476  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu2]), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
477  tmp_1 = tmp_2 * shift(shift(adj(u[mu2]), BACKWARD, nu2), BACKWARD, nu2);
478  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2);
479  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
480  u_clov_2 -= k3 * tmp_1;
481 
482  /* First "minus-minus" 1x2 */
483  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, nu2);
484  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
485  tmp_1 = tmp_2 * shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
486  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2);
487  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
488  u_clov_2 += k3 * tmp_1;
489 
490  /* First "minus-plus" 1x2 */
491  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(u[nu2], BACKWARD, mu2);
492  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, mu2), FORWARD, nu2);
493  tmp_1 = tmp_2 * shift(shift(shift(u[mu2], BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2);
494  tmp_2 = tmp_1 * shift(adj(u[nu2]), FORWARD, nu2);
495  tmp_1 = tmp_2 * adj(u[nu2]);
496  u_clov_2 -= k3 * tmp_1;
497 
498  }
499 
500  if( toBool(k4!=0) ) {
501 
502  /* Second "plus-plus" 3x1 */
503  tmp_1 = u[mu2] * shift(u[mu2], FORWARD, mu2);
504  tmp_2 = tmp_1 * shift(shift(u[mu2], FORWARD, mu2), FORWARD, mu2);
505  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], FORWARD, mu2), FORWARD, mu2), FORWARD, mu2);
506  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), FORWARD, mu2), FORWARD, mu2), FORWARD, nu2);
507  tmp_1 = tmp_2 * shift(shift(adj(u[mu2]), FORWARD, mu2), FORWARD, nu2);
508  tmp_2 = tmp_1 * shift(adj(u[mu2]), FORWARD, nu2);
509  tmp_1 = tmp_2 * adj(u[nu2]);
510  u_clov_2 += k4 * tmp_1;
511 
512  /* Second "plus-minus" 3x1 */
513  tmp_1 = u[mu2] * shift(u[mu2], FORWARD, mu2);
514  tmp_2 = tmp_1 * shift(shift(u[mu2], FORWARD, mu2), FORWARD, mu2);
515  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu2]), FORWARD, mu2), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2);
516  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2);
517  tmp_1 = tmp_2 * shift(shift(adj(u[mu2]), FORWARD, mu2), BACKWARD, nu2);
518  tmp_2 = tmp_1 * shift(adj(u[mu2]), BACKWARD, nu2);
519  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
520  u_clov_2 -= k4 * tmp_1;
521 
522  /* Second "minus-minus" 3x1 */
523  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2);
524  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2);
525  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2);
526  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2);
527  tmp_1 = tmp_2 * shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2);
528  tmp_2 = tmp_1 * shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, nu2);
529  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
530  u_clov_2 += k4 * tmp_1;
531 
532  /* Second "minus-plus" 3x1 */
533  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2);
534  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2);
535  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2);
536  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2);
537  tmp_1 = tmp_2 * shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2);
538  tmp_2 = tmp_1 * shift(shift(u[mu2], BACKWARD, mu2), FORWARD, nu2);
539  tmp_1 = tmp_2 * adj(u[nu2]);
540  u_clov_2 -= k4 * tmp_1;
541 
542 
543  /* Second "plus-plus" 1x3 */
544  tmp_1 = u[mu2] * shift(u[nu2], FORWARD, mu2);
545  tmp_2 = tmp_1 * shift(shift(u[nu2], FORWARD, mu2), FORWARD, nu2);
546  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], FORWARD, mu2), FORWARD, nu2), FORWARD, nu2);
547  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), FORWARD, nu2), FORWARD, nu2), FORWARD, nu2);
548  tmp_1 = tmp_2 * shift(shift(adj(u[nu2]), FORWARD, nu2), FORWARD, nu2);
549  tmp_2 = tmp_1 * shift(adj(u[nu2]), FORWARD, nu2);
550  tmp_1 = tmp_2 * adj(u[nu2]);
551  u_clov_2 += k4 * tmp_1;
552 
553  /* Second "plus-minus" 1x3 */
554  tmp_1 = u[mu2] * shift(shift(adj(u[nu2]), FORWARD, mu2), BACKWARD, nu2);
555  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu2]), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
556  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu2]), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
557  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
558  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
559  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2);
560  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
561  u_clov_2 -= k4 * tmp_1;
562 
563  /* Second "minus-minus" 1x3 */
564  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, nu2);
565  tmp_2 = tmp_1 * shift(shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
566  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu2]),BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
567  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
568  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
569  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2);
570  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
571  u_clov_2 += k4 * tmp_1;
572 
573  /* Second "minus-plus" 1x3 */
574  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(u[nu2], BACKWARD, mu2);
575  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, mu2), FORWARD, nu2);
576  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2);
577  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu2], BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2), FORWARD, nu2);
578  tmp_1 = tmp_2 * shift(shift(adj(u[nu2]), FORWARD, nu2), FORWARD, nu2);
579  tmp_2 = tmp_1 * shift(adj(u[nu2]), FORWARD, nu2);
580  tmp_1 = tmp_2 * adj(u[nu2]);
581  u_clov_2 -= k4 * tmp_1;
582 
583  }
584 
585  if( toBool(kk5!=0) ) {
586 
587  /* First "plus-plus" 3x3 */
588  tmp_1 = u[mu2] * shift(u[mu2], FORWARD, mu2);
589  tmp_2 = tmp_1 * shift(shift(u[mu2], FORWARD, mu2), FORWARD, mu2);
590  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], FORWARD, mu2), FORWARD, mu2), FORWARD, mu2);
591  tmp_2 = tmp_1 * shift(shift(shift(shift(u[nu2], FORWARD, mu2), FORWARD, mu2), FORWARD, mu2), FORWARD, nu2);
592  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(u[nu2], FORWARD, mu2), FORWARD, mu2), FORWARD, mu2), FORWARD, nu2), FORWARD, nu2);
593  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(adj(u[mu2]), FORWARD, mu2), FORWARD, mu2), FORWARD, nu2), FORWARD, nu2), FORWARD, nu2);
594  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[mu2]), FORWARD, mu2), FORWARD, nu2), FORWARD, nu2), FORWARD, nu2);
595  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), FORWARD, nu2), FORWARD, nu2), FORWARD, nu2);
596  tmp_1 = tmp_2 * shift(shift(adj(u[nu2]), FORWARD, nu2), FORWARD, nu2);
597  tmp_2 = tmp_1 * shift(adj(u[nu2]), FORWARD, nu2);
598  tmp_1 = tmp_2 * adj(u[nu2]);
599  u_clov_2 += kk5 * tmp_1;
600 
601  /* First "plus-minus" 3x3 */
602  tmp_1 = u[mu2] * shift(u[mu2], FORWARD, mu2);
603  tmp_2 = tmp_1 * shift(shift(u[mu2], FORWARD, mu2), FORWARD, mu2);
604  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu2]), FORWARD, mu2), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2);
605  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(adj(u[nu2]), FORWARD, mu2), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
606  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(shift(adj(u[nu2]), FORWARD, mu2), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
607  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(adj(u[mu2]), FORWARD, mu2), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
608  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[mu2]), FORWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
609  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
610  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
611  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2);
612  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
613  u_clov_2 -= kk5 * tmp_1;
614 
615  /* First "minus-minus" 3x3 */
616  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2);
617  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2);
618  tmp_1 = tmp_2 * shift(shift(shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2);
619  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2);
620  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(shift(adj(u[nu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
621  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
622  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
623  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
624  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2), BACKWARD, nu2);
625  tmp_2 = tmp_1 * shift(shift(u[nu2], BACKWARD, nu2), BACKWARD, nu2);
626  tmp_1 = tmp_2 * shift(u[nu2], BACKWARD, nu2);
627  u_clov_2 += kk5 * tmp_1;
628 
629  /* First "minus-plus" 3x3 */
630  tmp_1 = shift(adj(u[mu2]), BACKWARD, mu2) * shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2);
631  tmp_2 = tmp_1 * shift(shift(shift(adj(u[mu2]), BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2);
632  tmp_1 = tmp_2 * shift(shift(shift(u[nu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2);
633  tmp_2 = tmp_1 * shift(shift(shift(shift(u[nu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2);
634  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(u[nu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2);
635  tmp_2 = tmp_1 * shift(shift(shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2), FORWARD, nu2);
636  tmp_1 = tmp_2 * shift(shift(shift(shift(shift(u[mu2], BACKWARD, mu2), BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2), FORWARD, nu2);
637  tmp_2 = tmp_1 * shift(shift(shift(shift(u[mu2], BACKWARD, mu2), FORWARD, nu2), FORWARD, nu2), FORWARD, nu2);
638  tmp_1 = tmp_2 * shift(shift(adj(u[nu2]), FORWARD, nu2), FORWARD, nu2);
639  tmp_2 = tmp_1 * shift(adj(u[nu2]), FORWARD, nu2);
640  tmp_1 = tmp_2 * adj(u[nu2]);
641  u_clov_2 -= kk5 * tmp_1;
642 
643  }
644 
645  /* Now comes the contribution to the topological charge */
646 
647  tmp_1=1;
648 
649  tmp_2 = adj(u_clov_1);
650  u_clov_1 -= tmp_2;
651  tmp_2 = tmp_1 * trace(u_clov_1)/Nc;
652  u_clov_1 -= tmp_2;
653  tmp_2 = adj(u_clov_2);
654  u_clov_2 -= tmp_2;
655  tmp_2 = tmp_1 * trace(u_clov_2)/Nc;
656  u_clov_2 -= tmp_2;
657  tmp_2 = u_clov_1 * u_clov_2;
658 
659  qtop_tmp = real(trace(tmp_2));
660  qtop -= sum(qtop_tmp);
661 
662  }
663 
664  /* Topological charge */
665  qtop /= ( 16*16*twopi*twopi );
666  QDPIO::cout << "qtop = " << qtop << std::endl;
667 
668  END_CODE();
669  }
670 
671 } // end namespace Chroma
Primary include file for CHROMA library code.
void qtop_naive(const multi1d< LatticeColorMatrix > &u, const Real k5, Double &qtop)
Compute topological charge.
Definition: qnaive.cc:24
int nu1
Definition: meslate.cc:67
LatticeColorMatrix tmp_2
Definition: meslate.cc:51
LatticeReal qtop_tmp
Definition: meslate.cc:53
int mu1
Definition: meslate.cc:66
Double qtop
Definition: meslate.cc:24
int mu2
Definition: meslate.cc:68
LatticeColorMatrix tmp_1
Definition: meslate.cc:50
Nd
Definition: meslate.cc:74
int nu2
Definition: meslate.cc:69
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
QDP_error_exit("too many BiCG iterations", n_count, rsd_sq, cp, c, re_rvr, im_rvr, re_a, im_a, re_b, im_b)
static multi1d< LatticeColorMatrix > u
const Real twopi
Definition: chromabase.h:55
START_CODE()
FloatingPoint< double > Double
Definition: gtest.h:7351
#define FORWARD
Definition: primitives.h:82
#define BACKWARD
Definition: primitives.h:83
Calculate the topological charge from the gluonic definition.
Double sum
Definition: qtopcor.cc:37