]> git.treefish.org Git - phys/latlib.git/blob - neigh.cpp
...
[phys/latlib.git] / neigh.cpp
1 #include "neigh.h"
2
3 neigh::neigh(const int& dimension, const int& length)
4 {
5   nfield = new int[ipow(dimension,length)*2*dimension];
6
7   for (int ipos = 0; ipos < ipow(length,dimension); ipos++)
8     {
9       for (int idir = 0; idir < 2*dimension; idir++)
10         {
11           if ( idir < dimension ) //pos direction
12             {
13               if ( ( ipos/ipow(length,idir%dimension) ) % length == length-1 )
14                 nfield[ipos*2*dimension + idir] = ipos - ipow(length,idir%dimension)*(length-1);
15               else
16                 nfield[ipos*2*dimension + idir] = ipos + ipow(length,idir%dimension);
17             }
18           else //negative dir
19             {
20               if ( ( ipos/ipow(length,idir%dimension) ) % length == 0 )
21                 nfield[ipos*2*dimension + idir] = ipos + ipow(length,idir%dimension)*(length-1);
22               else
23                 nfield[ipos*2*dimension + idir] = ipos - ipow(length,idir%dimension);
24             }
25           
26         }
27     }
28 }