36 assert(Nvol == v1.
nvol());
37 assert(Nvol == v2.
nvol());
41 std::vector<int> gmindex(Nd);
42 std::vector<double> corr_r(Nd), corr_i(Nd);
44 for (
int i = 0; i < Nd; ++i) {
45 gmindex[i] = gm.
index(i);
50 for (
int z = 0; z < Nz; ++z) {
51 for (
int y = 0; y < Ny; ++y) {
52 for (
int x = 0; x < Nx; ++x) {
53 int site = index.
site(x, y, z, time);
55 for (
int s0 = 0; s0 < Nd; ++s0) {
58 for (
int c1 = 0; c1 < Nc; ++c1) {
59 corr_r[s0] += v1.
cmp_r(c1, s1, site) * v2.
cmp_r(c1, s0, site)
60 + v1.
cmp_i(c1, s1, site) * v2.
cmp_i(c1, s0, site);
62 corr_i[s0] += v1.
cmp_r(c1, s1, site) * v2.
cmp_i(c1, s0, site)
63 - v1.
cmp_i(c1, s1, site) * v2.
cmp_r(c1, s0, site);
70 corr = cmplx(0.0, 0.0);
71 for (
int s0 = 0; s0 < Nd; ++s0) {
72 corr += gm.
value(s0) * cmplx(corr_r[s0], corr_i[s0]);
91 assert(Nvol == v1.
nvol());
92 assert(Nvol == v2.
nvol());
93 assert(Nvol == v3.
nvol());
97 std::vector<int> gmindex(Nd);
98 std::vector<double> cr(Nd), ci(Nd);
100 for (
int i = 0; i < Nd; ++i) {
101 gmindex[i] = gm.
index(i);
106 for (
int z = 0; z < Nz; ++z) {
107 for (
int y = 0; y < Ny; ++y) {
108 for (
int x = 0; x < Nx; ++x) {
109 int site = index.
site(x, y, z, time);
111 for (
int d1 = 0; d1 < Nd; ++d1) {
112 int d2 = gmindex[d1];
172 corr = cmplx(0.0, 0.0);
173 for (
int s0 = 0; s0 < Nd; ++s0) {
174 corr += gm.
value(s0) * cmplx(cr[s0], ci[s0]);
double cmp_i(const int cc, const int s, const int site, const int e=0) const
int site(const int &x, const int &y, const int &z, const int &t) const
Wilson-type fermion field.
void contract_at_t(dcomplex &corr, const GammaMatrix &gm, const Field_F &v1, const Field_F &v2, int time)
contraction for meson at a given time t.
dcomplex value(int row) const
double cmp_r(const int cc, const int s, const int site, const int e=0) const