The PETSc function MatCreateMPIAIJ  
( 
http://www.caspur.it/risorse/softappl/doc/petsc_docs/manualpages/Mat/MatCreateMPIAIJ.html
  
) takes a number of arguments. Two of the arguments are:

d_nnz: Array containing the number of nonzeros in the various rows of the  
DIAGONAL portion of the local submatrix
o_nnz: Array containing the number of nonzeros in the various rows of the  
OFF-DIAGONAL portion of the local submatrix

Currently we are using PETSC_NULL for these to values and a guess  
(currently set to 50) for the number of non-zeroes on all rows. According  
to the PETSc manual performance can be increased by more than a factor of  
50 by setting these parameters accurately.

My question is how to create d_nnz and o_nnz?

For sequential matrices it is done by:
SparsityPattern::numNonZeroPerRow(uint nzrow[])

Maybe we could add methods to SparsityPattern?
SparsityPattern::numNonZeroPerDiagonalRow(uint nzdiagrow[])
SparsityPattern::numNonZeroPerOffDiagonalRow(uint nzoffdiagrow[])

- Magnus
_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to