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:
-
The
read
routine 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 callread
only on one process. UGGrid seems to be able to handle both situations. What is the desired behavior? Would it not be better that theread
routine itself only creates the grid on one process? Then the user doesn't have to think about adding anif
. -
While the
GridPtr
offers a methodloadBalance
that balances the data coming with the DGF file, the user has to define his ownDataHandle
and 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,
numBoundarySegments
is global over all processes and the indices are persistent during load balance. For ALUGrid,numBoundarySegments
is 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?