marking_list [0:numProcs-1]= 0
for each particle moved off_block
find destination_proc_and_block
if(destination_proc==myPe)
move particle to destination block
else
marking_list [destination_proc]=1
put particle and destination_proc_and_block in send buffer
end if
end for
globalsum(marking_list)
post marking_list(myPe) Asynchronous receives
send contents of send buffer to appropriate processors
wait for message delivery
move received particles to appropriate blocks