I am trying to code a scalable parallel AMR for unstructured grid. There seems to be three approaches for this
a) Store some global grid info on each processor and partition with parmetis (The easiest approach I am pursuing). I have never used ParMetis before (just metis) so I do not know how one would be able to read a given mesh file in parallel for partitioning, and then later on store the file in a format readable in parallel.
b) Store global grid on rank=0, use Metis and then scatter. I don't like this approach because it is more involved than (a), and you still need one node that is able to store the whole grid anyway.
c) Use an approach like p4est, which only works for structured quads/hexes. I am not sure how much global information is stored on each processor but it seems pretty scalable. Can the techniques used for the mesh encoding in p4est be used for unstructured grids as well. It seems to me even if one stores only one integer, say to indicate to which processor an element belongs, sooner or later scalability will be limited due to not being able to store that information one a node. What I think is done in p4est is to partition a coarse grid (able to be stored on each node), and do refinement after partitioning, but this approach can not be used for unstructured AMR, right ?
Thanks for any input.