Among the three AMR capable particle move algorithms,
up_down_tree and point_to_point can only be used for displaced particles’ migration, not particle regridding. The sieve algorithm
can migrate particles data under all circumstances, on all types of Eulerian meshes. Note that all three algorithms first
trivially move particles migrating to local blocks before processing the migration to off-processor blocks. In general, in FLASH
we prefer to use synchronous communication constructs where possible for reliability and portability. In particular, we opt
for constructs that are more likely to exhibit similar behavior across machines and MPI implementations. We limit our use of
non-blocking communication calls because PARAMESH is a heavy user of asynchronous constructs, and therefore of unique
tags. Where the MPI implementation has low tag limit, we run out of unique tags, which in turn compromises the portability
of the implementation