From 2d15eba1f0bea3c387ef6719d0b6c5af87666b15 Mon Sep 17 00:00:00 2001
From: Pietro Incardona <incardon@mpi-cbg.de>
Date: Wed, 20 Dec 2017 18:41:47 +0100
Subject: [PATCH] Latest modules

---
 openfpm_data                                  |  2 +-
 .../Iterators/grid_dist_id_iterator_sub.hpp   | 34 +++++++++++++++++++
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/openfpm_data b/openfpm_data
index 6c365cd61..4ae52add4 160000
--- a/openfpm_data
+++ b/openfpm_data
@@ -1 +1 @@
-Subproject commit 6c365cd618e47798e5930a2c26334443d9f36f09
+Subproject commit 4ae52add45600962acef5f2079b9886926982aed
diff --git a/src/Grid/Iterators/grid_dist_id_iterator_sub.hpp b/src/Grid/Iterators/grid_dist_id_iterator_sub.hpp
index c249787f2..34b123a19 100644
--- a/src/Grid/Iterators/grid_dist_id_iterator_sub.hpp
+++ b/src/Grid/Iterators/grid_dist_id_iterator_sub.hpp
@@ -286,4 +286,38 @@ class grid_dist_iterator_sub
 	}
 };
 
+
+//////// MACRO in 3D
+
+#define WHILE_M(grid,stencil) auto & ginfo = grid.getLocalGridsInfo();\
+								 for (size_t i = 0 ; i < grid.getN_loc_grid() ; i++)\
+								 {\
+									 auto it = grid.get_loc_grid_iterator_stencil(i,stencil);\
+\
+										int lo[3] = {(int)ginfo.get(i).Dbox.getLow(0),(int)ginfo.get(i).Dbox.getLow(1),(int)ginfo.get(i).Dbox.getLow(2)};\
+										int hi[3] = {(int)ginfo.get(i).Dbox.getHigh(0),(int)ginfo.get(i).Dbox.getHigh(1),(int)ginfo.get(i).Dbox.getHigh(2)};\
+\
+										int uhi[3] = {(int)ginfo.get(i).GDbox.getHigh(0),(int)ginfo.get(i).GDbox.getHigh(1),(int)ginfo.get(i).GDbox.getHigh(2)};\
+\
+										int sx = uhi[0]+1;\
+										int sxsy = (uhi[0]+1)*(uhi[1]+1);
+
+#define ITERATE_3D_M			for (int i = lo[2] ; i <= hi[2] ; i+=1)\
+								{\
+									for (int j = lo[1] ; j <= hi[1] ; j+=1)\
+									{\
+										for (int k = lo[0] ; k <= hi[0] ; k+=4)\
+										{
+
+#define GET_GRID_M(grid)	grid.get_loc_grid(i);
+
+
+#define END_LOOP_M 					it.private_sum<Vc::double_v::Size>();\
+								}\
+								it.private_adjust( - (hi[1] + 1) + sx + lo[0]);\
+							}\
+							it.private_adjust(- (hi[2] + 1)*sx + sxsy + lo[1]*sx);\
+						}\
+					}
+
 #endif /* SRC_GRID_GRID_DIST_ID_ITERATOR_SUB_HPP_ */
-- 
GitLab