Bridge++  Version 1.5.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
shiftField_eo.cpp
Go to the documentation of this file.
1 
14 #include "shiftField_eo.h"
15 
16 const std::string ShiftField_eo::class_name = "ShiftField_eo";
17 
18 //====================================================================
20  const int mu, const int ieo)
21 {
22  const int boundary_condition = 1;
23 
24  if (mu == 0) { // x-direction
25  up_xh(v, w, boundary_condition, ieo);
26  } else if (mu == 1) { // y-direction
27  up_yh(v, w, boundary_condition, ieo);
28  } else if (mu == 2) { // z-direction
29  up_zh(v, w, boundary_condition, ieo);
30  } else if (mu == 3) { // t-direction
31  up_th(v, w, boundary_condition, ieo);
32  } else {
33  vout.crucial(m_vl, "Error at %s: wrong mu = %d\n", class_name.c_str(), mu);
34  exit(EXIT_FAILURE);
35  }
36 }
37 
38 
39 //====================================================================
41  const int mu, const int ieo)
42 {
43  const int boundary_condition = 1;
44 
45  if (mu == 0) { // x-direction
46  dn_xh(v, w, boundary_condition, ieo);
47  } else if (mu == 1) { // y-direction
48  dn_yh(v, w, boundary_condition, ieo);
49  } else if (mu == 2) { // z-direction
50  dn_zh(v, w, boundary_condition, ieo);
51  } else if (mu == 3) { // t-direction
52  dn_th(v, w, boundary_condition, ieo);
53  } else {
54  vout.crucial(m_vl, "Error at %s: wrong mu = %d\n", class_name.c_str(), mu);
55  exit(EXIT_FAILURE);
56  }
57 }
58 
59 
60 //====================================================================
62  const int boundary_condition, const int mu, const int ieo)
63 {
64  if (mu == 0) { // x-direction
65  up_xh(v, w, boundary_condition, ieo);
66  } else if (mu == 1) { // y-direction
67  up_yh(v, w, boundary_condition, ieo);
68  } else if (mu == 2) { // z-direction
69  up_zh(v, w, boundary_condition, ieo);
70  } else if (mu == 3) { // t-direction
71  up_th(v, w, boundary_condition, ieo);
72  } else {
73  vout.crucial(m_vl, "Error at %s: wrong mu = %d\n", class_name.c_str(), mu);
74  exit(EXIT_FAILURE);
75  }
76 }
77 
78 
79 //====================================================================
81  const int boundary_condition, const int mu, const int ieo)
82 {
83  if (mu == 0) { // x-direction
84  dn_xh(v, w, boundary_condition, ieo);
85  } else if (mu == 1) { // y-direction
86  dn_yh(v, w, boundary_condition, ieo);
87  } else if (mu == 2) { // z-direction
88  dn_zh(v, w, boundary_condition, ieo);
89  } else if (mu == 3) { // t-direction
90  dn_th(v, w, boundary_condition, ieo);
91  } else {
92  vout.crucial(m_vl, "Error at %s: wrong mu = %d\n", class_name.c_str(), mu);
93  exit(EXIT_FAILURE);
94  }
95 }
96 
97 
98 //====================================================================
99 void ShiftField_eo::backward(Field& v, const Field& w, const int mu)
100 {
101  const int Nin = w.nin();
102  const int Nvol2 = w.nvol() / 2;
103  const int Nex = w.nex();
104 
105  Field field_e(Nin, Nvol2, Nex);
106  Field field_o(Nin, Nvol2, Nex);
107 
108  Field field_se(Nin, Nvol2, Nex);
109  Field field_so(Nin, Nvol2, Nex);
110 
111  m_index_eo.splitField(field_e, field_o, w);
112 
113  backward_h(field_se, field_o, mu, 0);
114  backward_h(field_so, field_e, mu, 1);
115 
116  m_index_eo.mergeField(v, field_se, field_so);
117 }
118 
119 
120 //====================================================================
121 void ShiftField_eo::forward(Field& v, const Field& w, const int mu)
122 {
123  const int Nin = w.nin();
124  const int Nvol2 = w.nvol() / 2;
125  const int Nex = w.nex();
126 
127  Field field_e(Nin, Nvol2, Nex);
128  Field field_o(Nin, Nvol2, Nex);
129 
130  Field field_se(Nin, Nvol2, Nex);
131  Field field_so(Nin, Nvol2, Nex);
132 
133  m_index_eo.splitField(field_e, field_o, w);
134 
135  forward_h(field_se, field_o, mu, 0);
136  forward_h(field_so, field_e, mu, 1);
137 
138  m_index_eo.mergeField(v, field_se, field_so);
139 }
140 
141 
142 //====================================================================
144  const int boundary_condition, const int mu)
145 {
146  const int Nin = w.nin();
147  const int Nvol2 = w.nvol() / 2;
148  const int Nex = w.nex();
149 
150  Field field_e(Nin, Nvol2, Nex);
151  Field field_o(Nin, Nvol2, Nex);
152 
153  Field field_se(Nin, Nvol2, Nex);
154  Field field_so(Nin, Nvol2, Nex);
155 
156  m_index_eo.splitField(field_e, field_o, w);
157 
158  backward_h(field_se, field_o, boundary_condition, mu, 0);
159  backward_h(field_so, field_e, boundary_condition, mu, 1);
160 
161  m_index_eo.mergeField(v, field_se, field_so);
162 }
163 
164 
165 //====================================================================
167  const int boundary_condition, const int mu)
168 {
169  const int Nin = w.nin();
170  const int Nvol2 = w.nvol() / 2;
171  const int Nex = w.nex();
172 
173  Field field_e(Nin, Nvol2, Nex);
174  Field field_o(Nin, Nvol2, Nex);
175 
176  Field field_se(Nin, Nvol2, Nex);
177  Field field_so(Nin, Nvol2, Nex);
178 
179  m_index_eo.splitField(field_e, field_o, w);
180 
181  forward_h(field_se, field_o, boundary_condition, mu, 0);
182  forward_h(field_so, field_e, boundary_condition, mu, 1);
183 
184  m_index_eo.mergeField(v, field_se, field_so);
185 }
186 
187 
188 //====================================================================
189 void ShiftField_eo::up_xh(Field& v, const Field& w, const int boundary_condition,
190  const int ieo)
191 {
192  double bc2;
193 
194  if (Communicator::ipe(0) == 0) {
195  bc2 = boundary_condition;
196  } else {
197  bc2 = 1.0;
198  }
199 
200  const int Nin = w.nin();
201  const int Nex = w.nex();
202  const int Nvol = w.nvol();
203  const int Nvol2 = (1 + Nvol / m_Nx2) / 2;
204 
205  Field wt(Nin, Nvol2, Nex);
206  Field vt(Nin, Nvol2, Nex);
207 
208  int s2 = 0;
209  for (int t = 0; t < m_Nt; t++) {
210  for (int z = 0; z < m_Nz; z++) {
211  for (int y = 0; y < m_Ny; y++) {
212  if (m_index_eo.leo(y, z, t) == ieo) {
213  // bulk
214  for (int x = 0; x < m_Nx2; x++) {
215  int ix = m_index_eo.siteh(x, y, z, t);
216  for (int ex = 0; ex < Nex; ex++) {
217  for (int in = 0; in < Nin; in++) {
218  v.set(in, ix, ex, w.cmp(in, ix, ex));
219  }
220  }
221  }
222  } else {
223  // bulk
224  for (int x = 0; x < m_Nx2 - 1; x++) {
225  int ix = m_index_eo.siteh(x, y, z, t);
226  int px = m_index_eo.siteh_xup(x, y, z, t, ieo);
227  for (int ex = 0; ex < Nex; ex++) {
228  for (int in = 0; in < Nin; in++) {
229  v.set(in, ix, ex, w.cmp(in, px, ex));
230  }
231  }
232  }
233  // boundary (x=m_Nx2-1)
234  int px = m_index_eo.siteh(0, y, z, t);
235  for (int in = 0; in < Nin; in++) {
236  for (int ex = 0; ex < Nex; ex++) {
237  wt.set(in, s2, ex, bc2 * w.cmp(in, px, ex));
238  }
239  }
240 
241  s2++;
242  }
243  }
244  }
245  }
246 
247  if (s2 > Nvol2) {
248  vout.crucial(m_vl, "Error at %s: invalid size\n", class_name.c_str());
249  exit(EXIT_FAILURE);
250  }
251 
252  const int size = Nin * Nvol2 * Nex;
253  exchange(size, &vt, &wt, 0, 1, 0);
254 
255  s2 = 0;
256  for (int t = 0; t < m_Nt; t++) {
257  for (int z = 0; z < m_Nz; z++) {
258  for (int y = 0; y < m_Ny; y++) {
259  // boundary (x=m_Nx-1)
260  if (m_index_eo.leo(y, z, t) != ieo) {
261  int ix = m_index_eo.siteh(m_Nx2 - 1, y, z, t);
262 
263  for (int in = 0; in < Nin; in++) {
264  for (int ex = 0; ex < Nex; ex++) {
265  v.set(in, ix, ex, vt.cmp(in, s2, ex));
266  }
267  }
268 
269  s2++;
270  }
271  }
272  }
273  }
274 }
275 
276 
277 //====================================================================
278 void ShiftField_eo::dn_xh(Field& v, const Field& w, const int boundary_condition,
279  const int ieo)
280 {
281  double bc2;
282 
283  if (Communicator::ipe(0) == 0) {
284  bc2 = boundary_condition;
285  } else {
286  bc2 = 1.0;
287  }
288 
289  const int Nin = w.nin();
290  const int Nex = w.nex();
291  const int Nvol = w.nvol();
292  const int Nvol2 = (1 + Nvol / m_Nx2) / 2;
293 
294  Field wt(Nin, Nvol2, Nex);
295  Field vt(Nin, Nvol2, Nex);
296 
297  int s2 = 0;
298  for (int t = 0; t < m_Nt; t++) {
299  for (int z = 0; z < m_Nz; z++) {
300  for (int y = 0; y < m_Ny; y++) {
301  if (m_index_eo.leo(y, z, t) == (1 - ieo)) {
302  // bulk
303  for (int x = 0; x < m_Nx2; x++) {
304  int ix = m_index_eo.siteh(x, y, z, t);
305  for (int ex = 0; ex < Nex; ex++) {
306  for (int in = 0; in < Nin; in++) {
307  v.set(in, ix, ex, w.cmp(in, ix, ex));
308  }
309  }
310  }
311  } else {
312  // bulk
313  for (int x = 1; x < m_Nx2; x++) {
314  int ix = m_index_eo.siteh(x, y, z, t);
315  int mx = m_index_eo.siteh_xdn(x, y, z, t, ieo);
316  for (int ex = 0; ex < Nex; ex++) {
317  for (int in = 0; in < Nin; in++) {
318  v.set(in, ix, ex, w.cmp(in, mx, ex));
319  }
320  }
321  }
322  // boundary (x=0)
323  int mx = m_index_eo.siteh(m_Nx2 - 1, y, z, t);
324  for (int in = 0; in < Nin; in++) {
325  for (int ex = 0; ex < Nex; ex++) {
326  wt.set(in, s2, ex, w.cmp(in, mx, ex));
327  }
328  }
329 
330  s2++;
331  }
332  }
333  }
334  }
335 
336  const int size = Nin * Nvol2 * Nex;
337  exchange(size, &vt, &wt, 0, -1, 4);
338 
339  s2 = 0;
340  for (int t = 0; t < m_Nt; t++) {
341  for (int z = 0; z < m_Nz; z++) {
342  for (int y = 0; y < m_Ny; y++) {
343  // boundary (x=0)
344  if (m_index_eo.leo(y, z, t) != (1 - ieo)) {
345  int ix = m_index_eo.siteh(0, y, z, t);
346 
347  for (int in = 0; in < Nin; in++) {
348  for (int ex = 0; ex < Nex; ex++) {
349  v.set(in, ix, ex, bc2 * vt.cmp(in, s2, ex));
350  }
351  }
352 
353  s2++;
354  }
355  }
356  }
357  }
358 }
359 
360 
361 //====================================================================
362 void ShiftField_eo::up_yh(Field& v, const Field& w, const int boundary_condition,
363  const int ieo)
364 {
365  double bc2;
366 
367  if (Communicator::ipe(1) == 0) {
368  bc2 = boundary_condition;
369  } else {
370  bc2 = 1.0;
371  }
372 
373  const int Nin = w.nin();
374  const int Nex = w.nex();
375  const int Nvol = w.nvol();
376 
377  Field wt(Nin, Nvol / m_Ny, Nex);
378  Field vt(Nin, Nvol / m_Ny, Nex);
379 
380  for (int t = 0; t < m_Nt; t++) {
381  for (int z = 0; z < m_Nz; z++) {
382  for (int x = 0; x < m_Nx2; x++) {
383  // bulk
384  for (int y = 0; y < m_Ny - 1; y++) {
385  int ix = m_index_eo.siteh(x, y, z, t);
386  int px = m_index_eo.siteh(x, y + 1, z, t);
387  for (int ex = 0; ex < Nex; ex++) {
388  for (int in = 0; in < Nin; in++) {
389  v.set(in, ix, ex, w.cmp(in, px, ex));
390  }
391  }
392  }
393 
394  // boundary (y=m_Ny-1)
395  int s2 = x + m_Nx2 * (z + m_Nz * t);
396  int px = m_index_eo.siteh(x, 0, z, t);
397  for (int in = 0; in < Nin; in++) {
398  for (int ex = 0; ex < Nex; ex++) {
399  wt.set(in, s2, ex, bc2 * w.cmp(in, px, ex));
400  }
401  }
402  }
403  }
404  }
405 
406  const int size = Nin * (Nvol / m_Ny) * Nex;
407  exchange(size, &vt, &wt, 1, 1, 1);
408 
409  for (int t = 0; t < m_Nt; t++) {
410  for (int z = 0; z < m_Nz; z++) {
411  for (int x = 0; x < m_Nx2; x++) {
412  // boundary (y=m_Ny-1)
413  int s2 = x + m_Nx2 * (z + m_Nz * t);
414  int ix = m_index_eo.siteh(x, m_Ny - 1, z, t);
415 
416  for (int in = 0; in < Nin; in++) {
417  for (int ex = 0; ex < Nex; ex++) {
418  v.set(in, ix, ex, vt.cmp(in, s2, ex));
419  }
420  }
421  }
422  }
423  }
424 }
425 
426 
427 //====================================================================
428 void ShiftField_eo::dn_yh(Field& v, const Field& w, const int boundary_condition,
429  const int ieo)
430 {
431  double bc2;
432 
433  if (Communicator::ipe(1) == 0) {
434  bc2 = boundary_condition;
435  } else {
436  bc2 = 1.0;
437  }
438 
439  const int Nin = w.nin();
440  const int Nex = w.nex();
441  const int Nvol = w.nvol();
442 
443  Field wt(Nin, Nvol / m_Ny, Nex);
444  Field vt(Nin, Nvol / m_Ny, Nex);
445 
446  for (int t = 0; t < m_Nt; t++) {
447  for (int z = 0; z < m_Nz; z++) {
448  for (int x = 0; x < m_Nx2; x++) {
449  // bulk
450  for (int y = 1; y < m_Ny; y++) {
451  int ix = m_index_eo.siteh(x, y, z, t);
452  int px = m_index_eo.siteh(x, y - 1, z, t);
453  for (int ex = 0; ex < Nex; ex++) {
454  for (int in = 0; in < Nin; in++) {
455  v.set(in, ix, ex, w.cmp(in, px, ex));
456  }
457  }
458  }
459  // boundary (y=0)
460  int s2 = x + m_Nx2 * (z + m_Nz * t);
461  int px = m_index_eo.siteh(x, m_Ny - 1, z, t);
462  for (int in = 0; in < Nin; in++) {
463  for (int ex = 0; ex < Nex; ex++) {
464  wt.set(in, s2, ex, w.cmp(in, px, ex));
465  }
466  }
467  }
468  }
469  }
470 
471  const int size = Nin * (Nvol / m_Ny) * Nex;
472  exchange(size, &vt, &wt, 1, -1, 5);
473 
474  for (int t = 0; t < m_Nt; t++) {
475  for (int z = 0; z < m_Nz; z++) {
476  for (int x = 0; x < m_Nx2; x++) {
477  int s2 = x + m_Nx2 * (z + m_Nz * t);
478 
479  // boundary (y=0)
480  int ix = m_index_eo.siteh(x, 0, z, t);
481  for (int in = 0; in < Nin; in++) {
482  for (int ex = 0; ex < Nex; ex++) {
483  v.set(in, ix, ex, bc2 * vt.cmp(in, s2, ex));
484  }
485  }
486  }
487  }
488  }
489 }
490 
491 
492 //====================================================================
493 void ShiftField_eo::up_zh(Field& v, const Field& w, const int boundary_condition,
494  const int ieo)
495 {
496  double bc2;
497 
498  if (Communicator::ipe(2) == 0) {
499  bc2 = boundary_condition;
500  } else {
501  bc2 = 1.0;
502  }
503 
504  const int Nin = w.nin();
505  const int Nex = w.nex();
506  const int Nvol = w.nvol();
507 
508  Field wt(Nin, Nvol / m_Nz, Nex);
509  Field vt(Nin, Nvol / m_Nz, Nex);
510 
511  for (int t = 0; t < m_Nt; t++) {
512  for (int y = 0; y < m_Ny; y++) {
513  for (int x = 0; x < m_Nx2; x++) {
514  // bulk
515  for (int z = 0; z < m_Nz - 1; z++) {
516  int ix = m_index_eo.siteh(x, y, z, t);
517  int px = m_index_eo.siteh(x, y, z + 1, t);
518  for (int ex = 0; ex < Nex; ex++) {
519  for (int in = 0; in < Nin; in++) {
520  v.set(in, ix, ex, w.cmp(in, px, ex));
521  }
522  }
523  }
524 
525  // boundary (z=m_Nz-1)
526  int s2 = x + m_Nx2 * (y + m_Ny * t);
527  int px = m_index_eo.siteh(x, y, 0, t);
528  for (int in = 0; in < Nin; in++) {
529  for (int ex = 0; ex < Nex; ex++) {
530  wt.set(in, s2, ex, bc2 * w.cmp(in, px, ex));
531  }
532  }
533  }
534  }
535  }
536 
537  const int size = Nin * (Nvol / m_Nz) * Nex;
538  exchange(size, &vt, &wt, 2, 1, 2);
539 
540  for (int t = 0; t < m_Nt; t++) {
541  for (int y = 0; y < m_Ny; y++) {
542  for (int x = 0; x < m_Nx2; x++) {
543  int s2 = x + m_Nx2 * (y + m_Ny * t);
544 
545  // boundary (z=m_Nz-1)
546  int ix = m_index_eo.siteh(x, y, m_Nz - 1, t);
547  for (int in = 0; in < Nin; in++) {
548  for (int ex = 0; ex < Nex; ex++) {
549  v.set(in, ix, ex, vt.cmp(in, s2, ex));
550  }
551  }
552  }
553  }
554  }
555 }
556 
557 
558 //====================================================================
559 void ShiftField_eo::dn_zh(Field& v, const Field& w, const int boundary_condition,
560  const int ieo)
561 {
562  double bc2;
563 
564  if (Communicator::ipe(2) == 0) {
565  bc2 = boundary_condition;
566  } else {
567  bc2 = 1.0;
568  }
569 
570  const int Nin = w.nin();
571  const int Nex = w.nex();
572  const int Nvol = w.nvol();
573 
574  Field wt(Nin, Nvol / m_Nz, Nex);
575  Field vt(Nin, Nvol / m_Nz, Nex);
576 
577  for (int t = 0; t < m_Nt; t++) {
578  for (int y = 0; y < m_Ny; y++) {
579  for (int x = 0; x < m_Nx2; x++) {
580  int s2 = x + m_Nx2 * (y + m_Ny * t);
581 
582  // bulk
583  for (int z = 1; z < m_Nz; z++) {
584  int ix = m_index_eo.siteh(x, y, z, t);
585  int px = m_index_eo.siteh(x, y, z - 1, t);
586  for (int ex = 0; ex < Nex; ex++) {
587  for (int in = 0; in < Nin; in++) {
588  v.set(in, ix, ex, w.cmp(in, px, ex));
589  }
590  }
591  }
592  // boundary (z=0)
593  int px = m_index_eo.siteh(x, y, m_Nz - 1, t);
594  for (int in = 0; in < Nin; in++) {
595  for (int ex = 0; ex < Nex; ex++) {
596  wt.set(in, s2, ex, w.cmp(in, px, ex));
597  }
598  }
599  }
600  }
601  }
602 
603  const int size = Nin * (Nvol / m_Nz) * Nex;
604  exchange(size, &vt, &wt, 2, -1, 6);
605 
606  for (int t = 0; t < m_Nt; t++) {
607  for (int y = 0; y < m_Ny; y++) {
608  for (int x = 0; x < m_Nx2; x++) {
609  int s2 = x + m_Nx2 * (y + m_Ny * t);
610 
611  // boundary (z=0)
612  int ix = m_index_eo.siteh(x, y, 0, t);
613  for (int in = 0; in < Nin; in++) {
614  for (int ex = 0; ex < Nex; ex++) {
615  v.set(in, ix, ex, bc2 * vt.cmp(in, s2, ex));
616  }
617  }
618  }
619  }
620  }
621 }
622 
623 
624 //====================================================================
625 void ShiftField_eo::up_th(Field& v, const Field& w, const int boundary_condition,
626  const int ieo)
627 {
628  double bc2;
629 
630  if (Communicator::ipe(3) == 0) {
631  bc2 = boundary_condition;
632  } else {
633  bc2 = 1.0;
634  }
635 
636  const int Nin = w.nin();
637  const int Nex = w.nex();
638  const int Nvol = w.nvol();
639 
640  Field wt(Nin, Nvol / m_Nt, Nex);
641  Field vt(Nin, Nvol / m_Nt, Nex);
642 
643  for (int z = 0; z < m_Nz; z++) {
644  for (int y = 0; y < m_Ny; y++) {
645  for (int x = 0; x < m_Nx2; x++) {
646  int s2 = x + m_Nx2 * (y + m_Ny * z);
647 
648  // bulk
649  for (int t = 0; t < m_Nt - 1; t++) {
650  int ix = m_index_eo.siteh(x, y, z, t);
651  int px = m_index_eo.siteh(x, y, z, t + 1);
652  for (int ex = 0; ex < Nex; ex++) {
653  for (int in = 0; in < Nin; in++) {
654  v.set(in, ix, ex, w.cmp(in, px, ex));
655  }
656  }
657  }
658 
659  // boundary (t=m_Nt-1)
660  int px = m_index_eo.siteh(x, y, z, 0);
661  for (int ex = 0; ex < Nex; ex++) {
662  for (int in = 0; in < Nin; in++) {
663  wt.set(in, s2, ex, bc2 * w.cmp(in, px, ex));
664  }
665  }
666  }
667  }
668  }
669 
670  const int size = Nin * (Nvol / m_Nt) * Nex;
671  exchange(size, &vt, &wt, 3, 1, 3);
672 
673  for (int z = 0; z < m_Nz; z++) {
674  for (int y = 0; y < m_Ny; y++) {
675  for (int x = 0; x < m_Nx2; x++) {
676  int s2 = x + m_Nx2 * (y + m_Ny * z);
677 
678  // boundary (t=m_Nt-1)
679  int ix = m_index_eo.siteh(x, y, z, m_Nt - 1);
680  for (int ex = 0; ex < Nex; ex++) {
681  for (int in = 0; in < Nin; in++) {
682  v.set(in, ix, ex, vt.cmp(in, s2, ex));
683  }
684  }
685  }
686  }
687  }
688 }
689 
690 
691 //====================================================================
692 void ShiftField_eo::dn_th(Field& v, const Field& w, const int boundary_condition,
693  const int ieo)
694 {
695  double bc2;
696 
697  if (Communicator::ipe(3) == 0) {
698  bc2 = boundary_condition;
699  } else {
700  bc2 = 1.0;
701  }
702 
703  const int Nin = w.nin();
704  const int Nex = w.nex();
705  const int Nvol = w.nvol();
706 
707  Field wt(Nin, Nvol / m_Nt, Nex);
708  Field vt(Nin, Nvol / m_Nt, Nex);
709 
710  for (int z = 0; z < m_Nz; z++) {
711  for (int y = 0; y < m_Ny; y++) {
712  for (int x = 0; x < m_Nx2; x++) {
713  int s2 = x + m_Nx2 * (y + m_Ny * z);
714 
715  //- bulk
716  for (int t = 1; t < m_Nt; t++) {
717  int ix = m_index_eo.siteh(x, y, z, t);
718  int px = m_index_eo.siteh(x, y, z, t - 1);
719  for (int ex = 0; ex < Nex; ex++) {
720  for (int in = 0; in < Nin; in++) {
721  v.set(in, ix, ex, w.cmp(in, px, ex));
722  }
723  }
724  }
725  //- boundary (t=0)
726  // int ix = m_index_eo.siteh(x, y, z, 0);
727  int px = m_index_eo.siteh(x, y, z, m_Nt - 1);
728  for (int ex = 0; ex < Nex; ex++) {
729  for (int in = 0; in < Nin; in++) {
730  wt.set(in, s2, ex, w.cmp(in, px, ex));
731  }
732  }
733  }
734  }
735  }
736 
737  const int size = Nin * (Nvol / m_Nt) * Nex;
738  exchange(size, &vt, &wt, 3, -1, 7);
739 
740  for (int z = 0; z < m_Nz; z++) {
741  for (int y = 0; y < m_Ny; y++) {
742  for (int x = 0; x < m_Nx2; x++) {
743  int s2 = x + m_Nx2 * (y + m_Ny * z);
744 
745  //- boundary (t=0)
746  int ix = m_index_eo.siteh(x, y, z, 0);
747  // int px = m_index_eo.siteh(x, y, z, m_Nt - 1);
748  for (int ex = 0; ex < Nex; ex++) {
749  for (int in = 0; in < Nin; in++) {
750  v.set(in, ix, ex, bc2 * vt.cmp(in, s2, ex));
751  }
752  }
753  }
754  }
755  }
756 }
757 
758 
759 //====================================================================
760 //============================================================END=====
void backward(Field &, const Field &, const int mu)
BridgeIO vout
Definition: bridgeIO.cpp:503
void set(const int jin, const int site, const int jex, double v)
Definition: field.h:175
int siteh(const int x2, const int y, const int z, const int t) const
Definition: index_eo.h:157
Bridge::VerboseLevel m_vl
Definition: shiftField_eo.h:53
static const std::string class_name
Definition: shiftField_eo.h:47
Container of Field-type object.
Definition: field.h:45
void up_th(Field &, const Field &, const int, const int)
int nvol() const
Definition: field.h:127
double cmp(const int jin, const int site, const int jex) const
Definition: field.h:143
void dn_yh(Field &, const Field &, const int, const int)
static int ipe(const int dir)
logical coordinate of current proc.
int leo(const int y, const int z, const int t) const
Definition: index_eo.h:109
int nin() const
Definition: field.h:126
void mergeField(Field &eo, const Field &e, const Field &o)
Definition: index_eo.cpp:171
int siteh_xup(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:171
Index_eo m_index_eo
Definition: shiftField_eo.h:51
int siteh_xdn(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:187
void up_zh(Field &, const Field &, const int, const int)
int nex() const
Definition: field.h:128
void dn_th(Field &, const Field &, const int, const int)
void up_xh(Field &, const Field &, const int, const int)
void crucial(const char *format,...)
Definition: bridgeIO.cpp:178
void dn_zh(Field &, const Field &, const int, const int)
void up_yh(Field &, const Field &, const int, const int)
void dn_xh(Field &, const Field &, const int, const int)
void splitField(Field &e, Field &o, const Field &eo)
Definition: index_eo.cpp:143
void forward(Field &, const Field &, const int mu)
void backward_h(Field &, const Field &, const int mu, const int ieo)
int exchange(int count, Field *recv_buf, Field *send_buf, int idir, int ipm, int tag)
Definition: field.h:353
void forward_h(Field &, const Field &, const int mu, const int ieo)