[petsc-dev] MetSetBlockSize issue

Hong Zhang hzhang at mcs.anl.gov
Tue Apr 24 14:28:53 CDT 2012


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>


More information about the petsc-dev mailing list