Mark : Shall C=PtAP inherit the block size of A? Currently, MatPtAP() is only implemented with aij bs=1. Hong
> > On Apr 24, 2012, at 2:55 PM, Barry Smith wrote: > > > > > On Apr 24, 2012, at 1:39 PM, Mark F. Adams wrote: > > > >> Now I'm getting this error with code like this: > >> > >> ierr = MatGetSubMatrix( Cmat, new_eq_indices, new_eq_indices, > MAT_INITIAL_MATRIX, &mat ); > >> CHKERRQ(ierr); > >> ierr = MatSetBlockSize( mat, cbs ); CHKERRQ(ierr); > >> > >> and like this: > >> > >> ierr = MatPtAP( Amat_fine, Pold, MAT_INITIAL_MATRIX, 2.0, &Cmat ); > CHKERRQ(ierr); > >> ierr = MatSetBlockSize( Cmat, cbs ); CHKERRQ(ierr); > > > > Right you cannot do this. The matrix already exists so you cannot now > set its size. > > > > Does Cmat have a block size of cbs > > > > What about Amat? By default these routines should create the new > matrix with the correct blocksize. > > > > The harder part is if the blocksize of mat would be different than > Cmat? > > > > It seems like MatGetSubMatrix should just inherit the block size but PtAP > is harder. The block size of the Cmat is the column block size of P. But > I can not set a column block size (!= row block size) so I don't set block > size on P at all. Here cbs is this column block size of P, or what it > should be. > > Mark > > > Barry > > > >> > >> Mark > >> > >> On Apr 23, 2012, at 9:09 PM, Barry Smith wrote: > >> > >>> > >>> Yes, look, for example how ex32 is handled at the bottom of the > makefile. > >>> > >>> Thanks > >>> > >>> Barry > >>> > >>> On Apr 23, 2012, at 5:50 PM, Mark F. Adams wrote: > >>> > >>>> > >>>> On Apr 23, 2012, at 5:59 PM, Barry Smith wrote: > >>>> > >>>>> > >>>>> It was changed a while ago that MatSetBlockSize() couldn't be set > after the matrix was full instantiated. I guess that example did not get > fixed because it is not listed in the makefile to run in the makeall. > >>>> > >>>> May I add it? > >>>> > >>>>> > >>>>> I have fixed the example to call MatSetBlockSize() at a safe point. > >>>>> > >>>>> Barry > >>>>> > >>>>> On Apr 23, 2012, at 4:29 PM, Mark F. Adams wrote: > >>>>> > >>>>>> ex55.c in ksp is failing with: > >>>>>> > >>>>>> [0]PETSC ERROR: --------------------- Error Message > ------------------------------------ > >>>>>> [0]PETSC ERROR: Arguments are incompatible! > >>>>>> [0]PETSC ERROR: Cannot change block size 1 to 2! > >>>>>> [0]PETSC ERROR: > ------------------------------------------------------------------------ > >>>>>> > >>>>>> on this line 57 of ex55.c: > >>>>>> > >>>>>> ierr = MatSetBlockSize(Amat,2); CHKERRQ(ierr); > >>>>>> > >>>>>> Any idea what happened here? > >>>>>> > >>>>>> Mark > >>>>> > >>>>> > >>>> > >>> > >>> > >> > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120424/ac5900a1/attachment.html>