Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
tensorProd.cpp
Go to the documentation of this file.
1 
11 #include "tensorProd.h"
12 #include <cassert>
13 
14 void tensorProd_Field_F(Field_G& u, const Field_F& v1, const Field_F& v2)
15 {
16  int Nvol = u.nvol();
17  int Nc = CommonParameters::Nc();
18  int Nd = CommonParameters::Nd();
19 
20  assert(Nvol == v1.nvol());
21  assert(Nvol == v2.nvol());
22  assert(u.nex() == 1);
23  assert(v1.nex() == 1);
24  assert(v2.nex() == 1);
25 
26  Mat_SU_N ut(Nc);
27  double utr, uti;
28 
29  for (int site = 0; site < Nvol; ++site) {
30  for (int c1 = 0; c1 < Nc; ++c1) {
31  for (int c2 = 0; c2 < Nc; ++c2) {
32  utr = 0.0;
33  uti = 0.0;
34  for (int s = 0; s < Nd; ++s) {
35  utr += v1.cmp_r(c2, s, site) * v2.cmp_r(c1, s, site)
36  + v1.cmp_i(c2, s, site) * v2.cmp_i(c1, s, site);
37  uti += v1.cmp_r(c2, s, site) * v2.cmp_i(c1, s, site)
38  - v1.cmp_i(c2, s, site) * v2.cmp_r(c1, s, site);
39  }
40  ut.set(c1, c2, utr, uti);
41  }
42  }
43  u.set_mat(site, 0, ut);
44  }
45 }