8 #ifndef SRC_GRID_GRID_DIST_ID_ITERATOR_SUB_HPP_ 
    9 #define SRC_GRID_GRID_DIST_ID_ITERATOR_SUB_HPP_ 
   21 template<
unsigned int dim, 
typename device_gr
id>
 
   64         for (
size_t i = 0 ; i < dim ; i++)
 
   68             if (
start.get(i) <= start_p)
 
   70             else if (
start.get(i) <= stop_p)
 
   75             if (
stop.get(i) >= stop_p)
 
   77             else if (
stop.get(i) >= start_p)
 
  223         size_t sub_id = k.
getSub();
 
  228         k_glob = k_glob + 
gdb_ext.get(sub_id).origin;
 
  272         return gdb_ext.get(i).DBox.getLow(i);
 
  285         return gdb_ext.get(i).GDBox.getHigh(i);
 
  292 #define WHILE_M(grid,stencil) auto & ginfo = grid.getLocalGridsInfo();\ 
  293                                  for (size_t s = 0 ; s < grid.getN_loc_grid() ; s++)\ 
  295                                      auto it = grid.get_loc_grid_iterator_stencil(s,stencil);\ 
  297                                         int lo[3] = {(int)ginfo.get(s).Dbox.getLow(0),(int)ginfo.get(s).Dbox.getLow(1),(int)ginfo.get(s).Dbox.getLow(2)};\ 
  298                                         int hi[3] = {(int)ginfo.get(s).Dbox.getHigh(0),(int)ginfo.get(s).Dbox.getHigh(1),(int)ginfo.get(s).Dbox.getHigh(2)};\ 
  300                                         int uhi[3] = {(int)ginfo.get(s).GDbox.getHigh(0),(int)ginfo.get(s).GDbox.getHigh(1),(int)ginfo.get(s).GDbox.getHigh(2)};\ 
  303                                         int sxsy = (uhi[0]+1)*(uhi[1]+1); 
  305 #define ITERATE_3D_M(n_pt)          int i = lo[2];\ 
  306                                     for ( ; i <= hi[2] ; i+=1)\ 
  309                                         for ( ; j <= hi[1] ; j+=1)\ 
  312                                             for ( ; k <= hi[0] ; k+=n_pt)\ 
  316 #define GET_GRID_M(grid)    grid.get_loc_grid(s); 
  319 #define END_LOOP_M(n_pt)                    it.private_sum<n_pt>();\ 
  321                                 it.private_adjust( - k + sx + lo[0]);\ 
  323                             it.private_adjust(- j*sx + sxsy + lo[1]*sx);\ 
grid_dist_iterator_sub(const grid_dist_iterator_sub< dim, device_grid > &tmp)
Copy constructor. 
 
grid_key_dx< dim > start
start key 
 
grid_key_dx is the key to access any element in the grid 
 
grid_key_dx< dim > stop
stop key 
 
bool isNext()
Check if there is the next element. 
 
size_t N_loc_grid()
Return the number of local grids. 
 
Grid key for a distributed grid. 
 
grid_dist_iterator_sub< dim, device_grid > & operator++()
Get the next element. 
 
grid_dist_iterator_sub(const grid_key_dx< dim > &start, const grid_key_dx< dim > &stop, const openfpm::vector< device_grid > &gk, const openfpm::vector< GBoxes< device_grid::dims >> &gdb_ext)
Constructor of the distributed grid iterator. 
 
bool compute_subset(size_t gc, grid_key_dx< dim > &start_c, grid_key_dx< dim > &stop_c)
compute the subset where it has to iterate 
 
This structure store the Box that define the domain inside the Ghost + domain box. 
 
size_t loc_grid_info_size(size_t i, size_t j)
Return the component j of the stop point (P2) of the domain part for the local grid i...
 
grid_key_dx_iterator_sub< dim > a_it
Actual iterator. 
 
const openfpm::vector< device_grid > & gList
List of the grids we are going to iterate. 
 
size_t g_c
grid list counter 
 
grid_key_dx< dim > getGKey(const grid_dist_key_dx< dim > &k)
Convert a g_dist_key_dx into a global key. 
 
grid_key_dx< dim > stop
stop point where iterate 
 
Distributed grid iterator. 
 
grid_key_dx< dim > get() const 
Return the actual grid key iterator. 
 
grid_dist_iterator_sub< dim, device_grid > & operator=(const grid_dist_iterator_sub< dim, device_grid > &tmp)
Copy operator=. 
 
void selectValidGrid()
from g_c increment g_c until you find a valid grid 
 
grid_key_dx< dim > start
start point where iterate 
 
void set_d(size_t i, mem_id id)
Set the i index. 
 
bool isNext()
Check if there is the next element. 
 
const openfpm::vector< GBoxes< device_grid::dims > > & gdb_ext
Extension of each grid: domain and ghost + domain. 
 
size_t loc_grid_info_start(size_t i, size_t j)
Return the component j of the starting point (P1) of the domain part for the local grid i...
 
size_t getSub() const 
Get the local grid. 
 
void reinitialize(const grid_key_dx_iterator_sub< dim > &g_s_it)
Reinitialize the iterator. 
 
grid_key_dx< dim > getKey() const 
Get the key.