1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| #if dimension == 1
@def foreach_neighbor(_s) {
int _nn = _s + 0 ? _s + 0 : GHOSTS;
int _i = point.i;
for (int _k = - _nn; _k <= _nn; _k++) {
point.i = _i + _k;
POINT_VARIABLES;
@
@def end_foreach_neighbor()
}
point.i = _i;
}
@
@define foreach_neighbor_break() _k = _nn + 1
#elif dimension == 2
@def foreach_neighbor(_s) {
int _nn = _s + 0 ? _s + 0 : GHOSTS;
int _i = point.i, _j = point.j;
for (int _k = - _nn; _k <= _nn; _k++) {
point.i = _i + _k;
for (int _l = - _nn; _l <= _nn; _l++) {
point.j = _j + _l;
POINT_VARIABLES;
@
@def end_foreach_neighbor()
}
}
point.i = _i; point.j = _j;
}
@
@define foreach_neighbor_break() _k = _l = _nn + 1
#else // dimension == 3
@def foreach_neighbor(_s) {
int _nn = _s + 0 ? _s + 0 : GHOSTS;
int _i = point.i, _j = point.j, _k = point.k;
for (int _l = - _nn; _l <= _nn; _l++) {
point.i = _i + _l;
for (int _m = - _nn; _m <= _nn; _m++) {
point.j = _j + _m;
for (int _n = - _nn; _n <= _nn; _n++) {
point.k = _k + _n;
POINT_VARIABLES;
@
@def end_foreach_neighbor()
}
}
}
point.i = _i; point.j = _j; point.k = _k;
}
@
@define foreach_neighbor_break() _l = _m = _n = _nn + 1
#endif // dimension == 3
|