diff --git a/src/Grid/grid_dist_id.hpp b/src/Grid/grid_dist_id.hpp index c20900ffc2e4f98d5354de6a163b9705a82a9a16..538268f481644bb8a2b7f29cf2ae16b05c3eea96 100644 --- a/src/Grid/grid_dist_id.hpp +++ b/src/Grid/grid_dist_id.hpp @@ -3102,8 +3102,28 @@ public: } else { - loc_grid.swap(loc_grid_old); - gdb_ext_old.swap(gdb_ext); + for (int i = 0 ; i < gdb_ext_old.size() ; i++) + { + auto & lg = loc_grid_old.get(i); + auto it_src = lg.getIterator(gdb_ext_old.get(i).Dbox.getKP1(),gdb_ext_old.get(i).Dbox.getKP2()); + auto & dg = loc_grid.get(0); + + grid_key_dx<dim> orig; + for (int j = 0 ; j < dim ; j++) + { + orig.set_d(j,gdb_ext_old.get(i).origin.get(j) + gdb_ext_old.get(i).Dbox.getKP1().get(j)); + } + + while (it_src.isNext()) + { + auto key = it_src.get(); + auto key_dst = key + orig; + + dg.get_o(key_dst) = lg.get_o(key); + + ++it_src; + } + } } }