<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
I am trying to assemble a FE matrix (adding one element at a time from
the local stiffness matrix) and cant seem to get the preallocation
right. I am correctly calculating the number of non zeros per row and
storing the value in the array [nnzpr].<br>
<br>
Here is part of the relevant code<tt><br>
<br>
...<br>
call MatCreateSeqBAIJ(Petsc_Comm_Self, 1, m, n, petsc_null_integer,
nnzpr, Mat_A, ierr)<br>
...<br>
! Assume a bilinear quad (2 dof per node)<br>
do j1=1,8<br>
&nbsp; do j2=1,8<br>
&nbsp;&nbsp;&nbsp; call MatSetValues(Mat_A, 1, indx(j1)-1, 1, indx(j2)-1, k(j1,j2),
Add_Values, ierr)<br>
&nbsp; end do<br>
end do<br>
...<br>
call MatAssemblyBegin(Mat_A,Mat_Final_Assembly,ierr)<br>
call MatAssemblyEnd(Mat_A,Mat_Final_Assembly,ierr)<br>
...<br>
<br>
</tt>On running it I get<tt><br>
<br>
-bash-3.00$ ./a.out &lt;inp -info -mat_view_info<br>
...<br>
&nbsp;<font color="#ff0000">Total non-zero elements estimated i.e.,
sum(nnzpr) =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 112</font><br>
[0] PetscCommDuplicate(): Duplicating a communicator 1140850689
-2080374784 max tags = 2147483647<br>
[0] PetscCommDuplicate():&nbsp;&nbsp; returning tag 2147483647<br>
[0] MatAssemblyEnd_SeqBAIJ(): Matrix size: 12 X 12, block size 1;
storage space: 42 unneeded, 112 used<br>
[0] MatAssemblyEnd_SeqBAIJ(): Number of mallocs during MatSetValues is 9<br>
[0] MatAssemblyEnd_SeqBAIJ(): Most nonzeros blocks in any row is 12<br>
...<br>
Matrix Object:<br>
&nbsp; type=seqbaij, rows=12, cols=12<br>
&nbsp; total: nonzeros=112, allocated nonzeros=154<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; block size is 1<br>
<br>
</tt>I dont understand why -mat_view_info shows allocated nonzeros to
be 154 when sum(nnzpr) is 112.<br>
<br>
Thanks in advance.<br>
</body>
</html>