[petsc-users] Load balancing / redistributing a 1D DM

Åsmund Ervik Asmund.Ervik at sintef.no
Mon Mar 5 03:29:29 CST 2018

Hi all,

We have a code that solves the 1D multiphase Euler equations, using some very expensive thermodynamic calls in each cell in each time step. The computational time for different cells varies significantly in the spatial direction (due to different thermodynamic states), and varies slowly from timestep to timestep.

Currently the code runs in serial, but I would like to use a PETSc DM of some sort to run it in parallell. There will be no linear on nonlinear PETSc solves etc., just a distributed mesh, at least initially. The code is Fortran.

Now for my question: Is it possible to do dynamic load balancing using a plain 1D DMDA, somehow? There is some mention of this for PCTELESCOPE, but I guess it only works for linear solves? Or could I use an index set or some other PETSc structure? Or do I need to use a 1D DMPLEX?

If the latter, how do I make a 1D DMPLEX? All the variables are stored in cell centers (collocated), so it's a completely trivial "mesh". I tried reading the DMPLEX manual, and looking at examples, but I'm having trouble penetrating the FEM lingo / abstract nonsense.

Best regards,

More information about the petsc-users mailing list