]> git.treefish.org Git - phys/latlib.git/blobdiff - neigh.cpp
...
[phys/latlib.git] / neigh.cpp
diff --git a/neigh.cpp b/neigh.cpp
new file mode 100644 (file)
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);
+           }
+         
+       }
+    }
+}