[petsc-dev] DMGetMatrix --> DMGetMatrices?

Dmitry Karpeev karpeev at mcs.anl.gov
Fri Feb 10 15:50:59 CST 2012


On Fri, Feb 10, 2012 at 3:40 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> On Fri, Feb 10, 2012 at 15:24, Dmitry Karpeev <karpeev at mcs.anl.gov> wrote:
>
>> So, as I understand, this behavior is reasonable for the use with SNES,
>> since the matrix is assembled with a call to SNES(DM)ComputeJacobian.
>> DMGetMatrix is also used with KSP, when  it is also expected to assemble
>> the matrix.
>>
> This seems to make the behavior of DMGetMatrix a bit schizophrenic and
>> dependent on whether it is used from a SNES or a KSP.  Should we try to
>> unify this instead?  One option is to assume that DMGetMatrix (or
>> DMGetOperators) merely preallocates the matrix of a DM-preferred type,
>> while a call to SNESDMComputeJacobian or (the  new method)
>> KSPDMFormOperators, respectively, would actually compute the values and
>> assemble or do the equivalent thing for MF.  In fact, one could unify this
>> behavior already by treating linear problems as nonlinear.
>>
>
> "DMGetMatrix" (which is spelled "DMCreateMatrix") allocates the matrix. It
> does not fill in the entries (except with zeros during preallocation).
>
>
> The concept of creating a preconditioning matrix with different sparsity
> is actually hacky to deal with now. I have various code where I make a
> complete copy of a STENCIL_BOX or stencil_width=2 DM, changing these values
> to STENCIL_STAR or stencil_width=1, just so I can call DMCreateMatrix().
> Unfortunately, I don't know a nice way to do this at the generic DM level.
>

Why not simply allow DM to return two matrices as SNES and KSP would want
anyway?
Dmitry.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120210/894f92a2/attachment.html>


More information about the petsc-dev mailing list