On 29 September 2013 17:31, Barry Smith <[email protected]> wrote:
>
>    I forgot that MatSetValuesBlocked() takes row oriented input even within 
> the blocks. So if we simply call 
> MatSetOption(mat,MAT_ROW_ORIENTED,PETSC_FALSE) on the matrix after it is 
> created then the storage should work as I originally planned.
>
>   Barry
>
> I found this discussion values(bs,nblockcols,bs,nblockrows)  very confusing. 
> MatMPIBAIJSetPreallocationCSR() doesn't take a square block of values so I 
> didn't see what you are talking about. You must be talking about each 
> internal call to 
> MatSetValuesBlocked_MPIBAIJ(B,1,&row,ncols,icols,svals,INSERT_VALUES) where 
> it puts in one block row of values with each call.
>

Yes, that's what I was talking about. And yes, if you have
column-oriented block values [e.g, in fotran you use an array
VALUES(bs,bs,nnz) ] and use MatSetOption(), you are fine and
MatMPIBAIJSetPreallocationCSR() will do the right thing. Otherwise
(e.g, you are in C and use VALUES[nnz][bs][bs]), feeding
MatMPIBAIJSetPreallocationCSR() with these values will not work. I
guess we have to live with that.


-- 
Lisandro Dalcin
---------------
CIMEC (UNL/CONICET)
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
3000 Santa Fe, Argentina
Tel: +54-342-4511594 (ext 1016)
Tel/Fax: +54-342-4511169

Reply via email to