On Fri, Dec 9, 2011 at 6:15 PM, Xiangdong Liang <span dir="ltr">&lt;<a href="mailto:xdliang@gmail.com">xdliang@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
If I use MAT_IGNORE_ZERO_ENTRIES option, is it possible that I still<br>
see some zeros in the sparse matrix? In my problem, when I use this<br></blockquote><div><br></div><div>Not if they are truly zero.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

ignore_zero options, the number of nonzeros is significantly reduced<br>
(from mat_view_info) but still larger than the number of nonzeros<br>
counting from matlab. When I use mat_view_draw, I see some light green<br>
lines (corresponding to zeros). I am wondering where these zeros come<br>
from? Thanks<br></blockquote><div><br></div><div>Print it and see where they are.</div><div><br></div><div>  Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Xiangdong<br>
<br>
On Wed, Dec 7, 2011 at 12:15 PM, Satish Balay &lt;<a href="mailto:balay@mcs.anl.gov">balay@mcs.anl.gov</a>&gt; wrote:<br>
&gt; On Wed, 7 Dec 2011, Satish Balay wrote:<br>
&gt;<br>
&gt;&gt; As indicated call &quot;MatSetOption(A,MAT_IGNORE_ZERO_ENTRIES,PETSC_TRUE)<br>
&gt;&gt; - before any calls to MatSetValue/s()<br>
&gt;&gt;<br>
&gt;&gt; And verify with MatView()<br>
&gt;<br>
&gt; Ok - here is what you can see with a slightly modified mat/examples/tests/ex38.c<br>
&gt;<br>
&gt; Notice &quot;C[0,1] = 0.0&quot; and thats not visible anymore with<br>
&gt; MatSetOption(MAT_IGNORE_ZERO_ENTRIES)<br>
&gt;<br>
&gt; Satish<br>
&gt;<br>
&gt; --------<br>
&gt; asterix:/home/balay/spetsc/src/mat/examples/tests&gt;cat ex38.c<br>
&gt; static char help[] = &quot;Tests MatSetValues().\n\n&quot;;<br>
&gt; #include &lt;petscmat.h&gt;<br>
&gt; #undef __FUNCT__<br>
&gt; #define __FUNCT__ &quot;main&quot;<br>
&gt; int main(int argc,char **args)<br>
&gt; {<br>
&gt;  Mat            C;<br>
&gt;  PetscInt       i,n = 5,midx[3],nidx[2];<br>
&gt;  PetscErrorCode ierr;<br>
&gt;  PetscBool      flg;<br>
&gt;  PetscScalar    v[6];<br>
&gt;<br>
&gt;  PetscInitialize(&amp;argc,&amp;args,(char *)0,help);<br>
&gt;  ierr = MatCreate(PETSC_COMM_WORLD,&amp;C);CHKERRQ(ierr);<br>
&gt;  ierr = MatSetSizes(C,PETSC_DECIDE,PETSC_DECIDE,n,n);CHKERRQ(ierr);<br>
&gt;  ierr = MatSetFromOptions(C);CHKERRQ(ierr);<br>
&gt;<br>
&gt;  ierr = PetscOptionsHasName(PETSC_NULL,&quot;-ignore_zero_entries&quot;,&amp;flg);CHKERRQ(ierr);<br>
&gt;  if (flg) {  ierr = MatSetOption(C,MAT_IGNORE_ZERO_ENTRIES,PETSC_TRUE);CHKERRQ(ierr);}<br>
&gt;<br>
&gt;  for (i=0; i&lt;6; i++) v[i] = (PetscReal)i;<br>
&gt;  midx[0] = 0; midx[1] = 2; midx[2] = 3;<br>
&gt;  nidx[0] = 1; nidx[1] = 3;<br>
&gt;  ierr = MatSetValues(C,3,midx,2,nidx,v,ADD_VALUES);CHKERRQ(ierr);<br>
&gt;  ierr = MatAssemblyBegin(C,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);<br>
&gt;  ierr = MatAssemblyEnd(C,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);<br>
&gt;  ierr = MatView(C,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);<br>
&gt;  ierr = MatDestroy(&amp;C);CHKERRQ(ierr);<br>
&gt;  ierr = PetscFinalize();<br>
&gt;  return 0;<br>
&gt; }<br>
&gt;<br>
&gt; asterix:/home/balay/spetsc/src/mat/examples/tests&gt;./ex38 -mat_view_info<br>
&gt; Matrix Object: 1 MPI processes<br>
&gt;  type: seqaij<br>
&gt;  rows=5, cols=5<br>
&gt;  total: nonzeros=6, allocated nonzeros=25<br>
&gt;  total number of mallocs used during MatSetValues calls =0<br>
&gt;    using I-node routines: found 4 nodes, limit used is 5<br>
&gt; Matrix Object: 1 MPI processes<br>
&gt;  type: seqaij<br>
&gt; row 0: (1, 0)  (3, 1)<br>
&gt; row 1:<br>
&gt; row 2: (1, 2)  (3, 3)<br>
&gt; row 3: (1, 4)  (3, 5)<br>
&gt; row 4:<br>
&gt; asterix:/home/balay/spetsc/src/mat/examples/tests&gt;./ex38 -mat_view_info -ignore_zero_entries<br>
&gt; Matrix Object: 1 MPI processes<br>
&gt;  type: seqaij<br>
&gt;  rows=5, cols=5<br>
&gt;  total: nonzeros=5, allocated nonzeros=25<br>
&gt;  total number of mallocs used during MatSetValues calls =0<br>
&gt;    using I-node routines: found 4 nodes, limit used is 5<br>
&gt; Matrix Object: 1 MPI processes<br>
&gt;  type: seqaij<br>
&gt; row 0: (3, 1)<br>
&gt; row 1:<br>
&gt; row 2: (1, 2)  (3, 3)<br>
&gt; row 3: (1, 4)  (3, 5)<br>
&gt; row 4:<br>
&gt; asterix:/home/balay/spetsc/src/mat/examples/tests&gt;<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>