[petsc-users] get sub matrix from MPIBAIJ with MatCreateSubMatrix

Xiangdong epscodes at gmail.com
Thu Jul 26 12:23:07 CDT 2018

On Thu, Jul 26, 2018 at 11:48 AM, Smith, Barry F. <bsmith at mcs.anl.gov>

> > On Jul 26, 2018, at 10:34 AM, Xiangdong <epscodes at gmail.com> wrote:
> >
> > Hello everyone,
> >
> > I have a question about get the sub matrix Aodd from a MPIBAIJ matrix A.
> For example, if the bs=2 and the matrix size is 10x10. How can I get the
> 5x5 submatrix corresponding to the odd rows and odd columns only?
> >
> > I tried to use the MatCreateSubMatrix, but get the error messages "Index
> set does not match blocks". It seems that MatCreateSubMatrix can only
> provide the whole block, instead of just a specific component of that block.
> >
> > Can you give me some suggestions on extracting the submatrix
> corresponding to a specific component?
>    Either create a AIJ matrix originally or use MatConvert to convert from
> BAIJ to AIJ and then use MatCreateSubMatrix(). Note that AIJ provides a
> great deal more flexibility with the utilities and solvers than BAIJ.
I chose BAIJ because the BAIJ format will perform better than the AIJ in
the Matrix-Vec multiplication. It seems that MatConvert needs additional
memory space to store the converted matrix (i.e. two copies of A in
different format).

I may try using MatGetRow on A and MatSetValues on Aodd to create the
submatrix to see how it performs.



>    Barry
> >
> > Thank you.
> >
> > Best,
> > Xiangdong
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180726/c15c311f/attachment.html>

More information about the petsc-users mailing list