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
>> 
> 

Reply via email to