GmshReader and boundary segments in parallel
I have a few questions regarding the usage of the GmshReader in parallel and also on the behavior of the boundary segments:
readroutine creates the full grid on each process that calls it. If it is called on every process, the load balance step doesn't work for ALUGrid, making it necessary to call
readonly on one process. UGGrid seems to be able to handle both situations. What is the desired behavior? Would it not be better that the
readroutine itself only creates the grid on one process? Then the user doesn't have to think about adding an
GridPtroffers a method
loadBalancethat balances the data coming with the DGF file, the user has to define his own
DataHandleand perform the load balancing of the Gmsh domain markers manually. Would it be desirable to offer a corresponding Gmsh load balance method?
UGGrid and ALUGrid behave differently concerning the boundary segment indices and load balancing. For UGGrid,
numBoundarySegmentsis global over all processes and the indices are persistent during load balance. For ALUGrid,
numBoundarySegmentsis process-local and the indices are changed correspondingly during load balance. What is the desired behavior?
Contrary to at least my expectations, the element and boundary data vectors are not ordered with respect to IndexSet/Mapper or boundary segment indices, but with respect to the insertionIndex. That means that you always need the GridFactory at hand to evaluate that data. You could order the data already as "expected" in the GmshReader and return correspondingly ordered vectors. Would that not be desirable?