[petsc-users] MatGetLocalSubMatrix

Hui Zhang mike.hui.zhang at hotmail.com
Sun Feb 17 10:15:21 CST 2013


thanks a lot! I seems to understand much better now! 


On Feb 17, 2013, at 4:45 PM, Jed Brown wrote:

> Look at src/snes/examples/tutorials/ex28.c for an example usage, or src/mat/examples/tests/ex159.c for a more advanced/manual test that demonstrates recursive nesting.
> 
> 
> On Sun, Feb 17, 2013 at 6:56 AM, Hui Zhang <mike.hui.zhang at hotmail.com> wrote:
> I want to use MatGetLocalSubMatrix for assembly purpose.
> 
> PetscErrorCode  MatGetLocalSubMatrix(Mat mat,IS isrow,IS iscol,Mat *submat)
> 
> I want to get a submat shared by some (not all) of the processes that share the mat.
> 
> Some questions.
> 
> 1.  Shall I create isrow and iscol shared by the processes that will share the submat?
> 
> The submat is not guaranteed to be collective (this depends on the matrix format), but it does always support MatSetValuesLocal(). The isrow and iscol are _local_ so they should use PETSC_COMM_SELF.
>  
> 2.  The manual says the submat supports MatSetValuesLocal.  Is the LocalToGlobalMapping already defined for submat, or I need to define it by myself?
> 
> It is induced by the LocalToGlobalMapping of the coupled (parent) matrix and the selected local indices.
>  
> 
>     If it is already defined, is it derived from the ltog of the mat such that for this processor the local numbering of the submat are in the same order
> 
>     as the local numbering for the mat?
> 
> The local numbering is with respect to the submat. (This is necessary, otherwise there would be no way to apply this recursively and you would have to keep track of the index mapping. Keeping the submat indexing as private as possible was a key motivation for this interface.)



More information about the petsc-users mailing list