The checks in the code are lines like
if (value == 0.0 && ignorezeroentries && (is == ADD_VALUES)) continue;
hence changing the source code to ignore small values is not difficult. But I
think this is a terribly cheesy hack and would hope people would not do this.
Barry
On Dec 1, 2011, at 8:42 PM, Mohamad M. Nasr-Azadani wrote:
> I was always wondering how difficult it would be to define a constant say,
> ZERO_DROP_TOLERANCE so that when the matrix is setup,
> MatAssemblyBegin()/End(), it automatically ignores the values below this
> threshold?
> I understand the for the matrices that might change in successive iterations,
> that might not be a good idea since the memory reallocation could be very
> slow, but for a lot of cases which a constant matrix, that could be simply
> helpful.
>
> Best,
> Mohamad
>
>
>
>
>
> On Thu, Dec 1, 2011 at 5:00 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
> On Dec 1, 2011, at 6:44 PM, Xiangdong Liang wrote:
>
> > Hello everyone,
> >
> > I have a question about whether zeros will change the sparse pattern.
> > Suppose I am generating two sparse matrices A and B. A is generated
> > with exactly number of nonzeros, say 10 nnz per row. When I generate
> > matrix B, I specify 12 nonzeros, but two of them are given zero values
> > by MatSetValue. Will A and B have same sparsity patterns and
> > performance ? In other words, will PETSc simply ignore these zeros
> > entries? I output these A and B in matlab, and it seems that these
> > zeros entries are ignored. I just want to double check on this.
> >
> > Is the option MAT_IGNORE_ZERO_ENTRIES on by default?
>
> No, by default PETSc will insert the zero values thus increasing the
> nonzero pattern. If you set that option to the matrix then inserting values
> it will not introduce an increase in the pattern.
>
>
> BTW: if you then load the matrix via a binary file to MATLAB it may be
> that MATLAB silently removes those locations so you don't see them.
> Barry
>
> > Thanks.
> >
> > Best,
> > Xiangdong
>
>