What you imply that this is a correct usage for block matrix if I use gmres+any preconditioner (in this case, block jacobi) :
PETScWrappers::PreconditionBlockJacobi preconditioner(precon_matrix.block(0,0)); gmres.solve (system_matrix.block(0,0), solution.block(0), system_rhs.block(0) , preconditioner); NOT : PETScWrappers::PreconditionBlockJacobi preconditioner(precon_matrix); gmres.solve (system_matrix, solution, system_rhs , preconditioner); Thank you Sungho Yoon On Tue, September 9, 2008 6:36 pm, Wolfgang Bangerth wrote: > >> And, How could you sort out "PETScWrappers::PreconditionBlockJacobi >> preconditioner(precon_matrix);" this problem? > > The "block" in PreconditionBlockJacobi denotes PETSc's notion of a part of > a > matrix that is distributed across a number of processors. The "block" in > BlockSparseMatrix denotes deal.II's notion of subdividing a matrix into > logical blocks that refer to quantities of different physical properties. > > As a consequence, you can only apply > PETScWrappers::PreconditionBlockJacobi to > an individual (deal.II) block of a BlockSparseMatrix. > > Does that explain it? > > Best > W. > > ------------------------------------------------------------------------- > Wolfgang Bangerth email: [EMAIL PROTECTED] > www: http://www.math.tamu.edu/~bangerth/ > _______________________________________________
