[petsc-users] A number of questions about DMDA with SNES and Quasi-Newton methods
zakaryah .
zakaryah at gmail.com
Tue Oct 31 21:40:48 CDT 2017
Thanks Barry, that looks like exactly what I need. I'm looking at pack.c
and packm.c and I want to check my understanding of what my coupling
function should do. The relevant line in *DMCreateMatrix_Composite_AIJ *seems
to be:
(*com->FormCoupleLocations)(dm,NULL,dnz,onz,__rstart,__nrows,__start,__end);
and I infer that dnz and onz are the number of nonzero elements in the
diagonal and off-diagonal submatrices, for each row of the DMComposite
matrix. I suppose I can just set each of these in a for loop, but can I
use the arguments to FormCoupleLocations as the range for the loop? Which
ones - __rstart to __rstart+__nrows? How can I determine the number of
rows on each processor from within the function that I pass? From the
preallocation macros it looks like __start to __end describe the range of
the columns of the diagonal submatrix - is that right? It looks like the
ranges will be specific to each processor. Do I just set the values in dnz
and onz, or do I need to reduce them?
Thanks for all the help! Maybe if I get things working I can carve out the
core of the code to make an example program for DMRedundant/Composite.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20171031/2fb9fd19/attachment-0001.html>
More information about the petsc-users
mailing list