ParMetis has a routine that does that called Mc_MoveGraph but is internal to ParMetis.
If you look at kmetis.c or ometis.c you should be able to get an idea on how to use it
(e.g., modify kmetis to bypass the geometric-based partitioning and move the graph
according to your partition).