Pierre, If you have access to the indices used to create the "unblocked" vecscatter, you can then call ISCreateBlock and obtain the vecscatter you want.
To obtain the garray, MatMPIAIJGetSeqAIJ > On Nov 25, 2017, at 9:26 PM, Pierre Jolivet <[email protected]> > wrote: > > OK, so I guess I need to tinker around with VecScatterCreate. > As a follow-up question, is there an easy way to get the “garray” from > http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/aij/mpi/mmaij.c.html#line105 > > <http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/aij/mpi/mmaij.c.html#line105> > to create the IS I need to feed to VecScatterCreate (after resizing by > multiplying its size by bs and by shifting/inserting the proper indices)? > Basically, I want to create the VecScatter for doing MatMult with a MATSHELL > similar to a MATMPIBAIJ, and I want to re-use the information generated by > the MatSetUpMultiply_MPIAIJ from a previously set up MATMPIAIJ with the same > sparsity pattern. > > Thanks, > Pierre > >> On 25 Nov 2017, at 4:43 PM, Smith, Barry F. <[email protected] >> <mailto:[email protected]>> wrote: >> >> >> Pierre, >> >> There is not. The block size is baked directly into the scatter data >> structure so not trivial to change in a copy. >> >> Barry >> >> >>> On Nov 25, 2017, at 7:41 AM, Pierre Jolivet <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>> Hello, >>> Given a VecScatter inctx that operates on vectors x and y, I’d like to >>> create a VecScatter inctx_bs with the same pattern, but that operators on >>> vectors x_bs and y_bs with different block sizes than the original x and y >>> (and that are thus of sizes n * bs). >>> Is there an easy way to do this (I’m a VecScatter noob, sorry in advance if >>> this is trivial)? >>> >>> Thank you, >>> Pierre >> >
