On Tue, Nov 26, 2019 at 11:43 AM Danyang Su <[email protected]> wrote:
> On 2019-11-25 7:54 p.m., Matthew Knepley wrote: > > On Mon, Nov 25, 2019 at 6:25 PM Swarnava Ghosh <[email protected]> > wrote: > >> Dear PETSc users and developers, >> >> I am working with dmplex to distribute a 3D unstructured mesh made of >> tetrahedrons in a cuboidal domain. I had a few queries: >> 1) Is there any way of ensuring load balancing based on the number of >> vertices per MPI process. >> > > You can now call DMPlexRebalanceSharedPoints() to try and get better > balance of vertices. > > Hi Matt, > > I just want to follow up if this new function can help to solve the > "Strange Partition in PETSc 3.11" problem I mentioned before. Would you > please let me know when shall I call this function? Right before > DMPlexDistribute? > This is not the problem. I believe the problem is that you are partitioning hybrid cells, and the way we handle them internally changed, which I think screwed up the dual mesh for partitioning in your example. I have been sick, so I have not gotten to your example yet, but I will. Sorry about that, Matt > call DMPlexCreateFromCellList > > call DMPlexGetPartitioner > > call PetscPartitionerSetFromOptions > > call DMPlexDistribute > > Thanks, > > Danyang > > > >> 2) As the global domain is cuboidal, is the resulting domain >> decomposition also cuboidal on every MPI process? If not, is there a way to >> ensure this? For example in DMDA, the default domain decomposition for a >> cuboidal domain is cuboidal. >> > > It sounds like you do not want something that is actually unstructured. > Rather, it seems like you want to > take a DMDA type thing and split it into tets. You can get a cuboidal > decomposition of a hex mesh easily. > Call DMPlexCreateBoxMesh() with one cell for every process, distribute, > and then uniformly refine. This > will not quite work for tets since the mesh partitioner will tend to > violate that constraint. You could: > > a) Prescribe the distribution yourself using the Shell partitioner type > > or > > b) Write a refiner that turns hexes into tets > > We already have a refiner that turns tets into hexes, but we never wrote > the other direction because it was not clear > that it was useful. > > Thanks, > > Matt > > >> Sincerely, >> SG >> > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > > https://www.cse.buffalo.edu/~knepley/ > <http://www.cse.buffalo.edu/~knepley/> > > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
