X-Git-Url: http://git.treefish.org/~alex/phys/latlib.git/blobdiff_plain/2dbd0cb896ebdc75901cbed1b15df238670a0f6d..385a5a6cbcab9001633efd700b2ffdeaf1aaaf6d:/neigh.cpp?ds=sidebyside diff --git a/neigh.cpp b/neigh.cpp new file mode 100644 index 0000000..a25d1e7 --- /dev/null +++ b/neigh.cpp @@ -0,0 +1,28 @@ +#include "neigh.h" + +neigh::neigh(const int& dimension, const int& length) +{ + nfield = new int[ipow(dimension,length)*2*dimension]; + + for (int ipos = 0; ipos < ipow(length,dimension); ipos++) + { + for (int idir = 0; idir < 2*dimension; idir++) + { + if ( idir < dimension ) //pos direction + { + if ( ( ipos/ipow(length,idir%dimension) ) % length == length-1 ) + nfield[ipos*2*dimension + idir] = ipos - ipow(length,idir%dimension)*(length-1); + else + nfield[ipos*2*dimension + idir] = ipos + ipow(length,idir%dimension); + } + else //negative dir + { + if ( ( ipos/ipow(length,idir%dimension) ) % length == 0 ) + nfield[ipos*2*dimension + idir] = ipos + ipow(length,idir%dimension)*(length-1); + else + nfield[ipos*2*dimension + idir] = ipos - ipow(length,idir%dimension); + } + + } + } +}