Hello,
    Version3.3 makes some change on Preallocation.
    (1)In version 3.2, my codes are as follows:
     
    call MatGetOwnershipRange(A,Istart,Iend,ierr)
      !premalloc
      !find the max non-zero numbers of all rows
       maxnonzero=0
       do 19,II=Istart+1,Iend
        !no-zero numbers of this row
        maxnonzeroII=NROWIN(II+1)-NROWIN(II)
        if (maxnonzeroII>maxnonzero) then
        maxnonzero=maxnonzeroII
        endif
  19  continue
       call 
MatMPIAIJSetPreallocation(A,maxnonzero,PETSC_NULL_INTEGER,maxnonzero,PETSC_NULL_INTEGER,ierr)
 
    (2)In version 3.3, my codes are as follows:
     
      !premalloc
      !find the max non-zero numbers of all rows
       maxnonzero=0
       do 19,II=1,m
        !no-zero numbers of this row
        maxnonzeroII=NROWIN(II+1)-NROWIN(II)
        if (maxnonzeroII>maxnonzero) then
        maxnonzero=maxnonzeroII
        endif
  19  continue
       call 
MatMPIAIJSetPreallocation(A,maxnonzero,PETSC_NULL_INTEGER,maxnonzero,PETSC_NULL_INTEGER,ierr)
      call MatGetOwnershipRange(A,Istart,Iend,ierr)

     The modification is:in version3.3, MatMPIAIJSetPreallocation must be in 
the front of MatGetOwnershipRange.
And then when I call MatMPIAIJSetPreallocation, I cannot get "Istart&Iend". So 
I have to use "do 19,II=1,m"
instead of "do 19,II=Istart+1,Iend" to get the maximum non-zero number of all 
rows for the use of
MatMPIAIJSetPreallocation.
    Is this reasonable of using MatMPIAIJSetPreallocation?
    Thanks.
                                                              Jim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20121107/bcda4bb4/attachment.html>

Reply via email to