This would use the blocks as indicated by MatSetVariableBlockSizes, not by using a matrix format that explicitly blocks? The information it needs is too big/complex to yield to the preconditioner via a call like MatInvertVariableBlockDiagonal. Instead, I would model it off MatFactor and the ILU code. I think it would be okay to go into MatILUFactorSymbolic_SeqAIJ and take a different code path (into your new code) when (variable) block sizes are set.
Note that the benefits from this might be marginal -- I think the algorithms will produce effectively identical results and doubt there is much opportunity for performance improvement without changing data structures (at least in the common regimes I can think of). Ali Reza Khaz'ali via petsc-users <[email protected]> writes: > Hi, > > I want to implement a variable block size BILU preconditioner in PETSc. > I am wondering if modifying the PCVPBJACOBI preconditioner > (vpbjacobi.c), to get what I want, is a good idea. > > Any help is much appreciated. > > -- > Ali Reza Khaz’ali > Assistant Professor of Petroleum Engineering, > Department of Chemical Engineering > Isfahan University of Technology > Isfahan, Iran
