Change MatCreateShell() to take the block size 

  Note that we should probably also change MatCreateSeqAIJ() and MatCreateAIJ() 
to take the block size now before a release.

   The “convenience” constructors are suppose to be convenient, if they stop 
being convenient then it is reasonable to change them.
   
   Barry


On Feb 14, 2014, at 12:10 AM, Jed Brown <[email protected]> wrote:

> I'm confronted with code that looks like this:
> 
>  MatCreateShell(...,&B);
>  MatSetBlockSize(B,3);
> 
> This used to work, but then we made block sizes stricter and since
> MatCreate_Shell calls PetscLayoutSetUp, we can't change the block size
> later.  Is there a sane way to fix this (perhaps leaving [rc]map->bs=-1
> and collapsing it to 1 the first time it is actually used), or must we
> replace that code with the following?
> 
>  MatCreate(comm,&B);
>  MatSetBlockSize(B,3);
>  MatSetSizes(B,m,n,M,N);
>  MatSetType(B,MATSHELL);
>  MatShellSetContext(B,ctx);
>  MatSetUp(B);

Reply via email to