I think you need to revert this, the separate loops are so diffusion happening in one cycle doesn't cascade by making it copy into a new array, then copying it back.