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

John Mousel john.mousel at gmail.com
Tue May 15 13:47:37 CDT 2012


Maybe look at PCREDISTRIBUTE?

On Tue, May 15, 2012 at 1:44 PM, Andrew Spott <andrew.spott at gmail.com>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/bce546f5/attachment.htm>


More information about the petsc-users mailing list