70 const valarray<Field_F>& sq2)
74 valarray<dcomplex> mcorr(Lt);
79 double norm = 0.5 / Lvol * Lt;
90 for (
int t = 0; t < mcorr.size(); ++t) {
92 t, -norm * real(mcorr[t]), -norm * imag(mcorr[t]));
105 for (
int t = 0; t < mcorr.size(); ++t) {
107 t, norm * real(mcorr[t]), norm * imag(mcorr[t]));
118 for (
int t = 0; t < mcorr.size(); ++t) {
120 t, norm * real(mcorr[Lt - 1 - t]), norm * imag(mcorr[Lt - 1 - t]));
133 for (
int t = 0; t < mcorr.size(); ++t) {
135 t, norm * real(mcorr[Lt - 1 - t]), norm * imag(mcorr[Lt - 1 - t]));
141 double result = real(mcorr[1]);
151 const valarray<Field_F>& sq1,
152 const valarray<Field_F>& sq2)
163 assert(meson.size() == Lt);
167 gm_src = qn_src.
mult(gm5);
168 gm_sink = gm5.
mult(qn_sink);
171 valarray<dcomplex> corr_local(Nt);
172 valarray<double> corr_r(Nd), corr_i(Nd);
173 valarray<int> s2(Nd);
175 Field corrF(2, Nvol, 2);
177 corr_local = dcomplex(0.0);
179 for (
int c0 = 0; c0 < Nc; ++c0) {
180 for (
int d0 = 0; d0 < Nd; ++d0) {
181 int d1 = gm_src.index(d0);
184 for (
int t = 0; t < Nt; ++t) {
187 for (
int z = 0; z < Nz; ++z) {
188 for (
int y = 0; y < Ny; ++y) {
189 for (
int x = 0; x < Nx; ++x) {
190 int site = index.
site(x, y, z, t);
192 for (
int s0 = 0; s0 < Nd; ++s0) {
193 int s1 = gm_sink.index(s0);
196 for (
int c1 = 0; c1 < Nc; ++c1) {
197 corr_r[s0] += sq1[c0 + Nc * d0].cmp_r(c1, s1, site)
198 * sq2[c0 + Nc * d1].cmp_r(c1, s0, site)
199 + sq1[c0 + Nc * d0].cmp_i(c1, s1, site)
200 * sq2[c0 + Nc * d1].cmp_i(c1, s0, site);
202 corr_i[s0] += sq1[c0 + Nc * d0].cmp_r(c1, s1, site)
203 * sq2[c0 + Nc * d1].cmp_i(c1, s0, site)
204 - sq1[c0 + Nc * d0].cmp_i(c1, s1, site)
205 * sq2[c0 + Nc * d1].cmp_r(c1, s0, site);
211 for (
int s0 = 0; s0 < Nd; ++s0) {
212 dcomplex gmf = gm_src.value(d0) * gm_sink.value(s0);
214 dcomplex corr = cmplx(corr_r[s0], corr_i[s0]);
215 corr_local[t] += gmf * corr;
223 valarray<dcomplex> corr_tmp(Lt);
226 for (
int t = 0; t < Lt; ++t) {
227 corr_tmp[t] = cmplx(0.0, 0.0);
229 for (
int t = 0; t < Nt; ++t) {
230 int t2 = t + ipet * Nt;
232 corr_tmp[t2] = corr_local[t];
234 for (
int t = 0; t < Lt; ++t) {
235 double crr = real(corr_tmp[t]);
236 double cri = imag(corr_tmp[t]);
239 meson[t] = cmplx(crr, cri);
246 double result = real(meson[1]);