#2385: incorrect normal vector when looping over boundary using CCTK_LOOP3_BND
| Reporter: | Roland Haas |
| Status: | new |
| Milestone: | |
| Version: | |
| Type: | bug |
| Priority: | minor |
| Component: | Cactus |
I am trying to loop over the boundary of my domain using CCTK_LOOP3_BND(cckGH, i,j,k, ni,nj,nk). The documentation http://einsteintoolkit.org/usersguide/UsersGuidech9.html#x13-102000C1.7.1
says that "ni, nj, and nk are names of variables describing the (outwards pointing) normal direction to the boundary as well as the distance to the boundary."
However on a 5x5x5 grid and 1 boundary point in a uniprocess setup ni, nj, nk are either 0 or 1 but never eg -1 which I would expect for the lower boundary.
Looking at the code in flesh/src/include/cctk_Loop.h shows that ni iscomputed as
const int ni CCTK_ATTRIBUTE_UNUSED = cctki0_idir<0 ? i+1 : cctki0_idir==0 ? 0 : cctki0_imax-i;
ie by construction is always non-negative. LoopControl does the same.
--
Ticket URL: https://bitbucket.org/einsteintoolkit/tickets/issues/2385/incorrect-normal-vector-when-looping-over