Block-smoothers with variable block size

Barry Smith bsmith at
Thu Mar 20 13:17:24 CDT 2008


     Actually we are very close to this. Check out the routine  
MatRelax_Inode() which is for AIJ matrices.
For the block size it uses the inode size. If your matrix has inodes  
that match the blocks you want
then everything is there already just use the PCSOR.

     If you do not have inodes then you can mimic the MatRelax_Inode()  
code to make a new
routine MatPBRelax_SeqAIJ(). If you do implement this we'd love to add  
it to PETSc.

     Please let us know if you have additional questions.


On Mar 20, 2008, at 1:07 PM, Nicolas Tardieu wrote:

> Dear PETSc experts,
> I am currently designing a multigrid PC that needs to operate on  
> variable block size matrices. I know PETSc does not support this  
> feature.
> So, I will do it "by hand".  Neverthless I would like to be able to  
> use some smoothers like Jacobi or SOR in their block version.
> What is the best solution that would work both in sequential and  
> parallel?
> - define some MATSHELL that handle variable block size
>     -> will I be able to use in some way a block Jacobi or SOR?
>     -> would it be possible to use CSR inside the MATSHELL and  
> manage the variable blocks.
> - use a AIJ matrix and manage the blocks using some indirection  
> mechanism and reprogram Jacobi or SOR
> Thank you,
> Nicolas

More information about the petsc-users mailing list