Dear Petsc team,
I would like to play with the ordering of a DMDA application.
To be exact, I would like to change the order in which a forward
SOR/Gauss Seidel preconditioner iterates over the domain.
e.g. change from [x,y,z,dof] to [z, yend->ystart, xend->xstart, dof]
As I see it, I could
a) reorder the application, i.e. how data is stored in the DMDA
b) apply a mat reordering (happy to have the reordering only happening
locally)
c) or implement a custom PC (or using a PCShell?)
I don't like a) because it would be very laborious and intrusive and I
don't even know if it is worth it.
Implementing a custom PC might give the most freedom but reduces solver
configurability that I like.
And how bad would a SOR be if it were to jump around in memory compared
to the performance and memory needs of a mat reordering?
I wanted to ask if you have any other suggestions and which approach you
would recommend.
1) I would do the reordering in serial to check that it is effective
2) If the reodering is process local, then everything is simple. You just alter the global-to-local mapping
for the matrix. If not, things would get more complicated.
Thanks,
Matt
Many thanks,
Fabian