Dear @prj,
I have spent quite a lot of time trying to understad the solution that you proposed to me for the optimization of the mesh partitioning in case of periodic finite element spaces.
The first step which I have followed is apllying the strategy you suggested to me to a different geometry (a very simple square) just to understand if I was able to get the point. Indeed I have wrote the first script I am attaching (PeriodicBC_simple.edp).
PeriodicBC_simple.edp (5.6 KB)
On this topic I have a question:
Making use of this strategy if you increase the number of processers you are using you reach at a certain point a condition in which one (or more) of the mesh part is not in contact with the periodic border. This is not good for the strategy adopted since you get a bug (you can check it simply running the script I have attached with 8 or more processors). Do you have solutions to this kind of bug?
After that I have decided to check if the partitioning I was able to develop was suitable to the solution of a simple problem (I have proposed a simple thermal diffusion problem). I have developed the sequential benchmark in order to check the solution (testTermicoSequential.edp)
testTermicoSequential.edp (2.0 KB)
Getting out the reference result:
I have subsequently moved to the solution of the very same problem, but using the partition I have developed above. At this point I have founded out a couple of issues:
- The results can apparently be obtained only using a certain number of processors. Indeed using, for example, 5 processors the reference result can be reproduced:
, and this is true also using 3 processors. By the way changing the number of processors to 4, 6 or 7 the PETSc error “Argument out of range” appears. On the contrary using 2 processors the result can be obtained, but the distribution appears to be disturbed - Another issue has been founded out using the restrict command to “move” the results in the non fragmented mesh (line 211 of testTermicoParallel.edp). Indeed the restric command causes a segmentation violation which I’m not able to understand.
Here below the parallel script I have used:
testTermicoParallel.edp (7.4 KB)
That’s what I get out trying to implement the strategy you suggested me. I would be extremely grateful if you’ll help me to understand what I’m missing.
I thank you a lot already!
Yours,
Marco

