[petsc-users] A number of questions about DMDA with SNES and Quasi-Newton methods

zakaryah . zakaryah at gmail.com
Tue Oct 24 14:36:04 CDT 2017

Well I made a little progress by considering SNES ex28.c.  In the Jacobian
routine, I call DMCompositeGetLocalISs, then use the IS to call
MatGetLocalSubMatrix.  I call these J_rr, J_rh, J_hr, and J_hh, where r
represents the redundant variables and h represents the displacements.  I
assume I can call MatSetValuesStencil on J_hh, as before, and MatSetValue
on J_rr (which is 1x1).  I'm guessing that J_rr, J_rh, and J_hr can only be
set on the processor which owns the redundant variable - is this correct?
How do I determine the ordering for J_hr and J_rh?

On Tue, Oct 24, 2017 at 2:45 PM, zakaryah . <zakaryah at gmail.com> wrote:

> I see - I use a local variable to add up the terms on each process, then
> call MPI_Reduce within the function on process 0, which owns the redundant
> variable.
> I have one more question - for the calculation of the Jacobian, my life is
> made much much easier by using MatSetValuesStencil.  However, the matrix
> which the SNES Jacobian receives as argument is the "full" matrix,
> containing the DMDA variables (displacements), plus the redundant
> variable.  How do I access the submatrix corresponding just to the DMDA?
> If I can do that, then I can call MatSetValuesStencil on the submatrix.  Is
> this the right approach?  I'm not sure how to set the elements of the
> Jacobian which correspond to the redundant variable, either - i.e., how do
> I get the ordering?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20171024/fb94ea71/attachment.html>

More information about the petsc-users mailing list