The solvers all have DM members now, but they only depend on the generic DM interface. Currently all of DMDA and now DMMesh are piled into petscdm.h which means that all the solvers need to be rebuilt any time these implementations change (e.g. a new implementation-specific function is added). The user already needs to decide which DM to use (DMDA, DMMesh, etc) so it would be no hardship to include petscdmda.h instead of just petscdm.h. For user-defined implementations of DM, this is already necessary.<div>
<br></div><div>In order to loosen the dependency of the solvers on DM, I propose distilling petscdm.h to be only the core DM functionality (roughly what is in _DMOps) and creating petscdmda.h and petscdmmesh.h for the DMDA* and DMMesh* functions. Note that there is already some precedence for this in petscmg.h (which perhaps should be named petscpcmg.h), though I think the case for separation is much stronger for DM.</div>
<div><br></div><div>If this change is going to happen, it should be before the release.</div>