Bridge++  Version 1.4.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
tensorProd.cpp
Go to the documentation of this file.
1 
12 #include <cassert>
13 
14 void tensorProd_Field_F(Field_G& u, const Field_F& v1, const Field_F& v2)
15 {
16  return tensorProd_Field_F(u, 0, v1, v2);
17 }
18 
19 
20 void tensorProd_Field_F(Field_G& u, const int ex, const Field_F& v1, const Field_F& v2)
21 {
22  int Nvol = u.nvol();
23  int Nc = CommonParameters::Nc();
24  int Nd = CommonParameters::Nd();
25 
26  assert(u.nvol() == v1.nvol());
27  assert(u.nvol() == v2.nvol());
28  assert(ex < u.nex());
29  assert(v1.nex() == 1);
30  assert(v2.nex() == 1);
31 
32  Mat_SU_N ut(v1.nc());
33  double utr, uti;
34 
35  for (int site = 0; site < Nvol; ++site) {
36  for (int c1 = 0; c1 < Nc; ++c1) {
37  for (int c2 = 0; c2 < Nc; ++c2) {
38  utr = 0.0;
39  uti = 0.0;
40  for (int s = 0; s < Nd; ++s) {
41  utr += v1.cmp_r(c2, s, site) * v2.cmp_r(c1, s, site)
42  + v1.cmp_i(c2, s, site) * v2.cmp_i(c1, s, site);
43  uti += v1.cmp_r(c2, s, site) * v2.cmp_i(c1, s, site)
44  - v1.cmp_i(c2, s, site) * v2.cmp_r(c1, s, site);
45  }
46  ut.set(c1, c2, utr, uti);
47  }
48  }
49  u.set_mat(site, ex, ut);
50  }
51 }
double cmp_i(const int cc, const int s, const int site, const int e=0) const
Definition: field_F.h:101
int nvol() const
Definition: field.h:116
Wilson-type fermion field.
Definition: field_F.h:37
SU(N) gauge field.
Definition: field_G.h:38
int nex() const
Definition: field.h:117
void tensorProd_Field_F(Field_G &u, const Field_F &v1, const Field_F &v2)
Definition: tensorProd.cpp:32
int nc() const
Definition: field_F.h:90
void set_mat(const int site, const int mn, const Mat_SU_N &U)
Definition: field_G.h:159
double cmp_r(const int cc, const int s, const int site, const int e=0) const
Definition: field_F.h:95