33 std::cout <<
"wrong parameter: ShiftField_lex\n";
54 std::cout <<
"wrong parameter: ShiftField_lex\n";
62 const int bc,
const int mu)
73 std::cout <<
"wrong parameter: ShiftField_lex\n";
81 const int bc,
const int mu)
92 std::cout <<
"wrong parameter: ShiftField_lex\n";
111 int Nvol = w->
nvol();
112 int Nvol2 = Nvol /
Nx;
116 wp =
const_cast<Field *
>(w)->ptr(0);
119 double wt[Nin * Nvol2 * Nex];
120 double vt[Nin * Nvol2 * Nex];
122 for (
int s2 = 0; s2 <
Ny *
Nz *
Nt; s2++) {
124 for (
int x = 0; x <
Nx - 1; x++) {
125 int ix = x + Nx * s2;
127 for (
int ex = 0; ex < Nex; ex++) {
128 for (
int in = 0; in < Nin; in++) {
129 vp[in + Nin * (ix + Nvol * ex)] = wp[in + Nin * (px + Nvol * ex)];
137 for (
int ex = 0; ex < Nex; ex++) {
138 for (
int in = 0; in < Nin; in++) {
139 wt[in + Nin * (s2 + Nvol2 * ex)] = bc2 * wp[in + Nin * (px + Nvol * ex)];
144 int size = Nin * Nvol2 * Nex;
147 for (
int s2 = 0; s2 <
Ny *
Nz *
Nt; s2++) {
150 int ix =
Nx - 1 + px;
151 for (
int in = 0; in < Nin; in++) {
152 for (
int ex = 0; ex < Nex; ex++) {
153 vp[in + Nin * (ix + Nvol * ex)] = vt[in + Nin * (s2 + Nvol2 * ex)];
173 int Nvol = w->
nvol();
174 int Nvol2 = Nvol /
Nx;
178 wp =
const_cast<Field *
>(w)->ptr(0);
181 double wt[Nin * Nvol2 * Nex];
182 double vt[Nin * Nvol2 * Nex];
184 for (
int s2 = 0; s2 <
Ny *
Nz *
Nt; s2++) {
186 for (
int x = 1; x <
Nx; x++) {
187 int ix = x + Nx * s2;
189 for (
int ex = 0; ex < Nex; ex++) {
190 for (
int in = 0; in < Nin; in++) {
191 vp[in + Nin * (ix + Nvol * ex)] = wp[in + Nin * (px + Nvol * ex)];
197 int px = Nx - 1 + Nx * s2;
198 for (
int ex = 0; ex < Nex; ex++) {
199 for (
int in = 0; in < Nin; in++) {
200 wt[in + Nin * (s2 + Nvol2 * ex)] = wp[in + Nin * (px + Nvol * ex)];
205 int size = Nin * Nvol2 * Nex;
208 for (
int s2 = 0; s2 <
Ny *
Nz *
Nt; s2++) {
211 for (
int ex = 0; ex < Nex; ex++) {
212 for (
int in = 0; in < Nin; in++) {
213 vp[in + Nin * (ix + Nvol * ex)] = bc2 * vt[in + Nin * (s2 + Nvol2 * ex)];
233 int Nvol = w->
nvol();
234 int Nvol2 = Nvol /
Ny;
238 wp =
const_cast<Field *
>(w)->ptr(0);
241 double wt[Nin * Nvol2 * Nex];
242 double vt[Nin * Nvol2 * Nex];
244 for (
int zt = 0; zt <
Nz *
Nt; zt++) {
245 for (
int x = 0; x <
Nx; x++) {
246 int s1 = x + Nx *
Ny * zt;
247 int s2 = x + Nx * zt;
250 for (
int y = 0; y <
Ny - 1; y++) {
251 int ix = s1 + Nx * y;
253 for (
int ex = 0; ex < Nex; ex++) {
254 for (
int in = 0; in < Nin; in++) {
255 vp[in + Nin * (ix + Nvol * ex)] = wp[in + Nin * (px + Nvol * ex)];
262 for (
int ex = 0; ex < Nex; ex++) {
263 for (
int in = 0; in < Nin; in++) {
264 wt[in + Nin * (s2 + Nvol2 * ex)] = bc2 * wp[in + Nin * (px + Nvol * ex)];
270 int size = Nin * Nvol2 * Nex;
273 for (
int zt = 0; zt <
Nz *
Nt; zt++) {
274 for (
int x = 0; x <
Nx; x++) {
275 int s1 = x + Nx *
Ny * zt;
276 int s2 = x + Nx * zt;
279 int ix = s1 + Nx * (
Ny - 1);
280 for (
int ex = 0; ex < Nex; ex++) {
281 for (
int in = 0; in < Nin; in++) {
282 vp[in + Nin * (ix + Nvol * ex)] = vt[in + Nin * (s2 + Nvol2 * ex)];
303 int Nvol = w->
nvol();
304 int Nvol2 = Nvol /
Ny;
308 wp =
const_cast<Field *
>(w)->ptr(0);
311 double wt[Nin * Nvol2 * Nex];
312 double vt[Nin * Nvol2 * Nex];
314 for (
int zt = 0; zt <
Nz *
Nt; zt++) {
315 for (
int x = 0; x <
Nx; x++) {
316 int s1 = x + Nx *
Ny * zt;
317 int s2 = x + Nx * zt;
320 for (
int y = 1; y <
Ny; y++) {
321 int ix = s1 + Nx * y;
323 for (
int ex = 0; ex < Nex; ex++) {
324 for (
int in = 0; in < Nin; in++) {
325 vp[in + Nin * (ix + Nvol * ex)] = wp[in + Nin * (px + Nvol * ex)];
331 int px = s1 + Nx * (Ny - 1);
332 for (
int ex = 0; ex < Nex; ex++) {
333 for (
int in = 0; in < Nin; in++) {
334 wt[in + Nin * (s2 + Nvol2 * ex)] = wp[in + Nin * (px + Nvol * ex)];
340 int size = Nin * Nvol2 * Nex;
343 for (
int zt = 0; zt <
Nz *
Nt; zt++) {
344 for (
int x = 0; x <
Nx; x++) {
345 int s1 = x + Nx *
Ny * zt;
346 int s2 = x + Nx * zt;
350 for (
int ex = 0; ex < Nex; ex++) {
351 for (
int in = 0; in < Nin; in++) {
352 vp[in + Nin * (ix + Nvol * ex)] = bc2 * vt[in + Nin * (s2 + Nvol2 * ex)];
373 int Nvol = w->
nvol();
374 int Nvol2 = Nvol /
Nz;
378 wp =
const_cast<Field *
>(w)->ptr(0);
381 double wt[Nin * Nvol2 * Nex];
382 double vt[Nin * Nvol2 * Nex];
384 for (
int t = 0; t <
Nt; t++) {
385 for (
int xy = 0; xy <
Nx *
Ny; xy++) {
386 int s1 = xy +
Nx * Ny *
Nz * t;
387 int s2 = xy +
Nx * Ny * t;
390 for (
int z = 0; z <
Nz - 1; z++) {
391 int ix = s1 +
Nx * Ny * z;
392 int px = ix +
Nx *
Ny;
393 for (
int ex = 0; ex < Nex; ex++) {
394 for (
int in = 0; in < Nin; in++) {
395 vp[in + Nin * (ix + Nvol * ex)] = wp[in + Nin * (px + Nvol * ex)];
402 for (
int ex = 0; ex < Nex; ex++) {
403 for (
int in = 0; in < Nin; in++) {
404 wt[in + Nin * (s2 + Nvol2 * ex)] = bc2 * wp[in + Nin * (px + Nvol * ex)];
410 int size = Nin * (Nvol /
Nz) * Nex;
413 for (
int t = 0; t <
Nt; t++) {
414 for (
int xy = 0; xy <
Nx *
Ny; xy++) {
415 int s1 = xy +
Nx * Ny *
Nz * t;
416 int s2 = xy +
Nx * Ny * t;
419 int ix = s1 +
Nx * Ny * (
Nz - 1);
420 for (
int ex = 0; ex < Nex; ex++) {
421 for (
int in = 0; in < Nin; in++) {
422 vp[in + Nin * (ix + Nvol * ex)] = vt[in + Nin * (s2 + Nvol2 * ex)];
443 int Nvol = w->
nvol();
444 int Nvol2 = Nvol /
Nz;
448 wp =
const_cast<Field *
>(w)->ptr(0);
451 double wt[Nin * Nvol2 * Nex];
452 double vt[Nin * Nvol2 * Nex];
454 for (
int t = 0; t <
Nt; t++) {
455 for (
int xy = 0; xy <
Nx *
Ny; xy++) {
456 int s1 = xy +
Nx * Ny *
Nz * t;
457 int s2 = xy +
Nx * Ny * t;
460 for (
int z = 1; z <
Nz; z++) {
461 int ix = s1 +
Nx * Ny * z;
462 int px = ix -
Nx *
Ny;
463 for (
int ex = 0; ex < Nex; ex++) {
464 for (
int in = 0; in < Nin; in++) {
465 vp[in + Nin * (ix + Nvol * ex)] = wp[in + Nin * (px + Nvol * ex)];
470 int px = s1 +
Nx * Ny * (Nz - 1);
471 for (
int in = 0; in < Nin; in++) {
472 for (
int ex = 0; ex < Nex; ex++) {
473 wt[in + Nin * (s2 + Nvol2 * ex)] = wp[in + Nin * (px + Nvol * ex)];
479 int size = Nin * Nvol2 * Nex;
482 for (
int t = 0; t <
Nt; t++) {
483 for (
int xy = 0; xy <
Nx *
Ny; xy++) {
484 int s1 = xy +
Nx * Ny *
Nz * t;
485 int s2 = xy +
Nx * Ny * t;
489 for (
int in = 0; in < Nin; in++) {
490 for (
int ex = 0; ex < Nex; ex++) {
491 vp[in + Nin * (ix + Nvol * ex)] = bc2 * vt[in + Nin * (s2 + Nvol2 * ex)];
512 int Nvol = w->
nvol();
513 int Nvol2 = Nvol /
Nt;
517 wp =
const_cast<Field *
>(w)->ptr(0);
520 double wt[Nin * Nvol2 * Nex];
521 double vt[Nin * Nvol2 * Nex];
523 for (
int s2 = 0; s2 <
Nx *
Ny *
Nz; s2++) {
525 for (
int t = 0; t <
Nt - 1; t++) {
526 int ix = s2 +
Nx *
Ny * Nz * t;
527 int px = ix +
Nx *
Ny *
Nz;
528 for (
int ex = 0; ex < Nex; ex++) {
529 for (
int in = 0; in < Nin; in++) {
530 vp[in + Nin * (ix + Nvol * ex)] = wp[in + Nin * (px + Nvol * ex)];
537 for (
int ex = 0; ex < Nex; ex++) {
538 for (
int in = 0; in < Nin; in++) {
539 wt[in + Nin * (s2 + Nvol2 * ex)] = bc2 * wp[in + Nin * (px + Nvol * ex)];
544 int size = Nin * Nvol2 * Nex;
547 for (
int s2 = 0; s2 <
Nx *
Ny *
Nz; s2++) {
549 int ix = s2 +
Nx *
Ny * Nz * (
Nt - 1);
550 for (
int ex = 0; ex < Nex; ex++) {
551 for (
int in = 0; in < Nin; in++) {
552 vp[in + Nin * (ix + Nvol * ex)] = vt[in + Nin * (s2 + Nvol2 * ex)];
572 int Nvol = w->
nvol();
573 int Nvol2 = Nvol /
Nt;
577 wp =
const_cast<Field *
>(w)->ptr(0);
580 double wt[Nin * Nvol2 * Nex];
581 double vt[Nin * Nvol2 * Nex];
583 for (
int s2 = 0; s2 <
Nx *
Ny *
Nz; s2++) {
585 for (
int t = 1; t <
Nt; t++) {
586 int ix = s2 +
Nx *
Ny * Nz * t;
587 int px = ix -
Nx *
Ny *
Nz;
588 for (
int ex = 0; ex < Nex; ex++) {
589 for (
int in = 0; in < Nin; in++) {
590 vp[in + Nin * (ix + Nvol * ex)] = wp[in + Nin * (px + Nvol * ex)];
595 int px = s2 +
Nx *
Ny * Nz * (Nt - 1);
596 for (
int ex = 0; ex < Nex; ex++) {
597 for (
int in = 0; in < Nin; in++) {
598 wt[in + Nin * (s2 + Nvol2 * ex)] = wp[in + Nin * (px + Nvol * ex)];
603 int size = Nin * Nvol2 * Nex;
606 for (
int s2 = 0; s2 <
Nx *
Ny *
Nz; s2++) {
609 for (
int ex = 0; ex < Nex; ex++) {
610 for (
int in = 0; in < Nin; in++) {
611 vp[in + Nin * (ix + Nvol * ex)] = bc2 * vt[in + Nin * (s2 + Nvol2 * ex)];
void up_t(Field *, const Field *, const int bc)
double * ptr(const int jin, const int site, const int jex)
Container of Field-type object.
void dn_t(Field *, const Field *, const int bc)
static int ipe(const int dir)
logical coordinate of current proc.
void dn_y(Field *, const Field *, const int bc)
void up_y(Field *, const Field *, const int bc)
static int exchange(int count, double *recv_buf, double *send_buf, int idir, int ipm, int tag)
receive array of double from upstream specified by idir and ipm, and send array to downstream...
void backward(Field &, const Field &, const int mu)
void dn_z(Field *, const Field *, const int bc)
void up_x(Field *, const Field *, const int bc)
void dn_x(Field *, const Field *, const int bc)
void up_z(Field *, const Field *, const int bc)
void forward(Field &, const Field &, const int mu)