I'm currently using ParMETIS and it is required to determine the halo region of the local elements in a parallel unstructured mesh. Assume that the mesh is large and cannot be stored on a single processor.
My approach is to gather the global list of elements and their processor location in each processor. Then the neighbors of the local elements which do not belong to the current processor are identified and are then communicated.
There is redundant communication being performed as some of the non-local elements are clearly not neighbors to any of the local elements and are hence not going to be in the halo region, but their location is requested.
What is the most efficient procedure to communicate halo information in unstructured mesh calculations? (assuming communication paradigm is MPI and calls from ParMETIS are available for obtaining dual graphs, global adjacency and so on)