23 assert(Nvol == v2.
nvol());
24 assert(v1.
nex() == 1);
25 assert(v2.
nex() == 1);
27 double *w1 =
const_cast<Field_F *
>(&v1)->ptr(0);
28 double *w2 =
const_cast<Field_F *
>(&v2)->ptr(0);
41 for (
int id = 0;
id <
ND; ++id) {
46 for (
int ss = 0; ss < Nvol_s; ++ss) {
47 int site =
NCD2 * (ss + time * Nvol_s);
49 for (
int cc = 0; cc <
NC; ++cc) {
50 cr[0] += w1[2 * cc + id21 + site] * w2[2 * cc + id11 + site]
51 + w1[2 * cc + 1 + id21 + site] * w2[2 * cc + 1 + id11 + site];
52 cr[1] += w1[2 * cc + id22 + site] * w2[2 * cc + id12 + site]
53 + w1[2 * cc + 1 + id22 + site] * w2[2 * cc + 1 + id12 + site];
54 cr[2] += w1[2 * cc + id23 + site] * w2[2 * cc + id13 + site]
55 + w1[2 * cc + 1 + id23 + site] * w2[2 * cc + 1 + id13 + site];
56 cr[3] += w1[2 * cc + id24 + site] * w2[2 * cc + id14 + site]
57 + w1[2 * cc + 1 + id24 + site] * w2[2 * cc + 1 + id14 + site];
59 ci[0] += w1[2 * cc + id21 + site] * w2[2 * cc + 1 + id11 + site]
60 - w1[2 * cc + 1 + id21 + site] * w2[2 * cc + id11 + site];
61 ci[1] += w1[2 * cc + id22 + site] * w2[2 * cc + 1 + id12 + site]
62 - w1[2 * cc + 1 + id22 + site] * w2[2 * cc + id12 + site];
63 ci[2] += w1[2 * cc + id23 + site] * w2[2 * cc + 1 + id13 + site]
64 - w1[2 * cc + 1 + id23 + site] * w2[2 * cc + id13 + site];
65 ci[3] += w1[2 * cc + id24 + site] * w2[2 * cc + 1 + id14 + site]
66 - w1[2 * cc + 1 + id24 + site] * w2[2 * cc + id14 + site];
70 corr = gm.
value(0) * cmplx(cr[0], ci[0])
71 + gm.
value(1) * cmplx(cr[1], ci[1])
72 + gm.
value(2) * cmplx(cr[2], ci[2])
73 + gm.
value(3) * cmplx(cr[3], ci[3]);
85 assert(Nvol == v2.
nvol());
86 assert(Nvol == v3.
nvol());
87 assert(v1.
nex() == 1);
88 assert(v2.
nex() == 1);
89 assert(v3.
nex() == 1);
91 double *w1 =
const_cast<Field_F *
>(&v1)->ptr(0);
92 double *w2 =
const_cast<Field_F *
>(&v2)->ptr(0);
93 double *w3 =
const_cast<Field_F *
>(&v3)->ptr(0);
101 for (
int id = 0;
id <
ND; ++id) {
102 gmd[id] = gm.
index(
id);
108 for (
int ss = 0; ss < Nvol_s; ++ss) {
109 int site =
NCD2 * (ss + time * Nvol_s);
111 for (
int id = 0;
id <
ND; ++id) {
112 int iw1 =
id * NC2 + site;
113 int iw2 = gmd[id] * NC2 + site;
116 cr[id] += (w1[
C1 + iw1] * w2[
C2 + iw2]
117 - w1[
C1 + 1 + iw1] * w2[
C2 + 1 + iw2]) * w3[
C3 + iw3]
118 - (w1[
C1 + iw1] * w2[
C2 + 1 + iw2]
119 + w1[
C1 + 1 + iw1] * w2[
C2 + iw2]) * w3[
C3 + 1 + iw3];
120 ci[id] += (w1[
C1 + iw1] * w2[
C2 + iw2]
121 - w1[
C1 + 1 + iw1] * w2[
C2 + 1 + iw2]) * w3[
C3 + 1 + iw3]
122 + (w1[
C1 + iw1] * w2[
C2 + 1 + iw2]
123 + w1[
C1 + 1 + iw1] * w2[
C2 + iw2]) * w3[
C3 + iw3];
125 cr[id] += (w1[
C2 + iw1] * w2[
C3 + iw2]
126 - w1[
C2 + 1 + iw1] * w2[
C3 + 1 + iw2]) * w3[
C1 + iw3]
127 - (w1[
C2 + iw1] * w2[
C3 + 1 + iw2]
128 + w1[
C2 + 1 + iw1] * w2[
C3 + iw2]) * w3[
C1 + 1 + iw3];
129 ci[id] += (w1[
C2 + iw1] * w2[
C3 + iw2]
130 - w1[
C2 + 1 + iw1] * w2[
C3 + 1 + iw2]) * w3[
C1 + 1 + iw3]
131 + (w1[
C2 + iw1] * w2[
C3 + 1 + iw2]
132 + w1[
C2 + 1 + iw1] * w2[
C3 + iw2]) * w3[
C1 + iw3];
134 cr[id] += (w1[
C3 + iw1] * w2[
C1 + iw2]
135 - w1[
C3 + 1 + iw1] * w2[
C1 + 1 + iw2]) * w3[
C2 + iw3]
136 - (w1[
C3 + iw1] * w2[
C1 + 1 + iw2]
137 + w1[
C3 + 1 + iw1] * w2[
C1 + iw2]) * w3[
C2 + 1 + iw3];
138 ci[id] += (w1[
C3 + iw1] * w2[
C1 + iw2]
139 - w1[
C3 + 1 + iw1] * w2[
C1 + 1 + iw2]) * w3[
C2 + 1 + iw3]
140 + (w1[
C3 + iw1] * w2[
C1 + 1 + iw2]
141 + w1[
C3 + 1 + iw1] * w2[
C1 + iw2]) * w3[
C2 + iw3];
143 cr[id] -= (w1[
C3 + iw1] * w2[
C2 + iw2]
144 - w1[
C3 + 1 + iw1] * w2[
C2 + 1 + iw2]) * w3[
C1 + iw3]
145 - (w1[
C3 + iw1] * w2[
C2 + 1 + iw2]
146 + w1[
C3 + 1 + iw1] * w2[
C2 + iw2]) * w3[
C1 + 1 + iw3];
147 ci[id] -= (w1[
C3 + iw1] * w2[
C2 + iw2]
148 - w1[
C3 + 1 + iw1] * w2[
C2 + 1 + iw2]) * w3[
C1 + 1 + iw3]
149 + (w1[
C3 + iw1] * w2[
C2 + 1 + iw2]
150 + w1[
C3 + 1 + iw1] * w2[
C2 + iw2]) * w3[
C1 + iw3];
152 cr[id] -= (w1[
C2 + iw1] * w2[
C1 + iw2]
153 - w1[
C2 + 1 + iw1] * w2[
C1 + 1 + iw2]) * w3[
C3 + iw3]
154 - (w1[
C2 + iw1] * w2[
C1 + 1 + iw2]
155 + w1[
C2 + 1 + iw1] * w2[
C1 + iw2]) * w3[
C3 + 1 + iw3];
156 ci[id] -= (w1[
C2 + iw1] * w2[
C1 + iw2]
157 - w1[
C2 + 1 + iw1] * w2[
C1 + 1 + iw2]) * w3[
C3 + 1 + iw3]
158 + (w1[
C2 + iw1] * w2[
C1 + 1 + iw2]
159 + w1[
C2 + 1 + iw1] * w2[
C1 + iw2]) * w3[
C3 + iw3];
161 cr[id] -= (w1[
C1 + iw1] * w2[
C3 + iw2]
162 - w1[
C1 + 1 + iw1] * w2[
C3 + 1 + iw2]) * w3[
C2 + iw3]
163 - (w1[
C1 + iw1] * w2[
C3 + 1 + iw2]
164 + w1[
C1 + 1 + iw1] * w2[
C3 + iw2]) * w3[
C2 + 1 + iw3];
165 ci[id] -= (w1[
C1 + iw1] * w2[
C3 + iw2]
166 - w1[
C1 + 1 + iw1] * w2[
C3 + 1 + iw2]) * w3[
C2 + 1 + iw3]
167 + (w1[
C1 + iw1] * w2[
C3 + 1 + iw2]
168 + w1[
C1 + 1 + iw1] * w2[
C3 + iw2]) * w3[
C2 + iw3];
171 corr = cmplx(0.0, 0.0);
172 for (
int id = 0;
id <
ND; ++id) {
173 corr += cmplx(cr[
id], ci[
id]) * gm.
value(
id);
void contract_at_t(dcomplex &corr, const GammaMatrix &gm, const Field_F &f1, const Field_F &f2, int time)
contraction for meson at a given time t.
Wilson-type fermion field.
dcomplex value(int row) const