  The use of numerical simulations in science is ever increasing and with it
the computational size. In many cases single processors are no longer adequate
and simulations are run on multiple core machines or supercomputers. One of the
key issues when running a simulation on multiple CPUs is maintaining a proper
load balance throughout the run and minimizing communications between CPUs.
  We propose a novel method of utilizing a Voronoi diagram to achieve a nearly
perfect load balance without the need of any global redistributions of data. As
a show case, we implement our method in RICH, a 2D moving mesh hydrodynamical
code, but it can be extended trivially to other codes in 2D or 3D. Our tests
show that this method is indeed efficient and can be used in a large variety of
existing hydrodynamical codes as well as other applications.
