[petsc-users] Modifying the structure of a matrix.

Shrirang Abhyankar abhyshr at mcs.anl.gov
Tue May 15 14:01:30 CDT 2012


http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatGetSubMatrix.html 

On May 15, 2012, at 1:44 PM, Andrew Spott wrote:

> That would be ideal, but may be impractical... is it possible to redo the distribution after the matrix is assembled?  How would I go about doing that?
> 
> On May 15, 2012 12:38 PM, "Shri" <abhyshr at mcs.anl.gov> wrote:
> By default, PETSc uses a row distribution with the first m rows on processor 0, next m rows on processor 1, and so on.
> If the order is not important, then you could remove rows/columns from each processor instead of removing the last n-m rows on the last processor. Thus, the load balance would still be even.
> 
> Shri
> 
> I'm solving the schrodinger equation in a basis state method and looking at adding the azimuthal quantum numbers (the m's) to my basis so I can look at circularly polarized light.
> 
> However, when I do this, I'll need to do some sort of convergence study to make sure I add enough of them.  The way my code is structured, it will probably be easier to just remove rows and columns from a bigger matrix, instead of adding them to a smaller matrix.  However, depending on the way I structure the matrix, I could end up removing all the values (or a significant portion of them) from a processor when I do that.
> 
> Speaking more on that, is the "PETSC_DECIDE" way of finding the local distribution smart in any way? or does it just assume an even distribution of values?  (I assume that it assumes a even distribution of values before the assembly, but does it redistribute during assembly?)
> 
> Thanks,
> 
> -Andrew
> 
> On May 15, 2012, at 6:40 AM, Jed Brown wrote:
> 
> On Mon, May 14, 2012 at 10:39 PM, Andrew Spott <andrew.spott at gmail.com> wrote:
> That is what I figure.
> 
> I'm curious though if you need to manually determine the local row distribution after you do that.  (for example, say you completely remove all the values from the local range of one processor… that processor wouldn't be utilized unless you redistribute the matrix)
> 
> What sizes and method are we talking about? Usually additional (compact) basis functions only make sense to add to one of a small number of processes.
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120515/ab773184/attachment-0001.htm>


More information about the petsc-users mailing list