[petsc-dev] DMGetMatrix --> DMGetMatrices?
Barry Smith
bsmith at mcs.anl.gov
Fri Feb 10 17:24:04 CST 2012
On Feb 10, 2012, at 5:14 PM, Jed Brown wrote:
> On Fri, Feb 10, 2012 at 17:08, Dmitry Karpeev <karpeev at mcs.anl.gov> wrote:
> I think it's completely natural for a DM to assemble two operators -- the discretizations for the two are likely to be related anyway -- as soon as we decide that it's natural for KSP to take in two matrices and, more importantly, for the callback set with DMSetJacobian() to compute two matrices: if a DM knows how to compute two "Jacobians",
DM doesn't/shouldn't know how to compute two Jacobians. Where did you get that from?
> why wouldn't it know how to create/preallocate the two corresponding matrices?
The reason I don't like having the single DM doing this is that one could use very different beasties to do the true Jacobian and preconditioner (not just a simple stencil change) and shoving that stuff into a single DM is unnatural. For example true problem is on an unstructured grid, preconditioner problem on a simplier structured grid.
>
> Lots of functions get messy if the DM has multiple ways to do something. Should DMCreateLocalVector() use the full stencil or the preconditioning stencil, what should DMGlobalToLocalBegin() be updating, etc.
>
> Barry's solution of having separate DMs sounds cleaner to me, at least modulo needing conventions about which DM on which to PetscObjectCompose() things needed by certain callbacks (e.g. in the FAS with TS stuff I'm doing).
Clean that up and provide a formal way to do those callbacks that don't use kludgy PetscObjectCompose() or PetscObjectComposeFunction()
Barry
Yes, it will be slightly painful to pass two DM into the KSP and PC and track them in multigrid but we do do that with the two operators already so using two DM seems very natural.
More information about the petsc-dev
mailing list