Vaclav, Actually you should not just do this! PETSc already has a full class for managing partitioning (that Matt ignored for no good reason) see MatPartitioningCreate(). Please look at all the functionality before doing anything.
Any refactorization you do needs to combine, simplify, and cleanup the two interfaces to create one simpler one. And please let us know your design ideas (with for example an issue on bitbucket) before you go ahead and write a lot of code we may end up not liking. Thanks for looking at this, Barry > On Nov 6, 2017, at 7:09 AM, Vaclav Hapla <vaclav.ha...@erdw.ethz.ch> wrote: > > Hello > > The whole PetscPartitioner class sources are part of > src/dm/impls/plex/plexpartition.c, mixed together with some DMPlex* functions. > If you don't mind, I would move the PetscPartitioner* stuff into the separate > file petscpartitioner.c > (in future, it could be even moved to a separate directory). > > I would also like to > * add PetscPartitioner{Add,Set,Get}OptionsPrefix, > * create the partitioner lazily in DMPlexGetPartitioner, followed by > PetscObjectIncrementTabLevel, PetscLogObjectParent and > PetscPartitionerSetOptionsPrefix calls, > * edit src/dm/impls/plex/examples/tutorials/ex5.c so that it calls > DMSetFromOptions right after DMPlexCreateFromFile, in order to make the > partitioner changeable from options. > > Do you have anything against? > > Vaclav