<div dir="ltr">Hello Jed, Barry,<div><br></div><div>Thanks for the inputs. Yes, I am trying to spot duplicate sparse Matrices basically and avoid storing if possible. MatGetNonzeroState() seems useful here and I'll take a closer look.</div><div><br></div><div>I couldn't find the PetscObjectGetState() though from the available API (<a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/singleindex.html">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/singleindex.html</a>). Was there another closely related function I should take a look at?</div><div><br></div><div>Thanks,</div><div>Ram</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 5, 2016 at 9:26 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> On Dec 5, 2016, at 2:47 PM, K. N. Ramachandran <<a href="mailto:knram06@gmail.com">knram06@gmail.com</a>> wrote:<br>
><br>
> Hello PETSc-Users,<br>
><br>
> I am working on an application where we capture the A matrix in a linear system Ax=b, which is solved using Petsc. Let us also say that the matrix A can change after a few iterations. We want to capture only the changed matrices and simply avoid the duplicate ones.<br>
><br>
> I was considering using (or defining) a Set-like data structure that stores only the Mat objects which have changed entries. So a hash function that can operate on a sparse matrix would be pretty useful here.<br>
><br>
> This seems like a common enough use case and I was wondering if anyone can give their inputs on defining a hash function that can operate on sparse matrices. One such link I had found online is:<br>
> <a href="http://stackoverflow.com/questions/10638373/suitable-hash-function-for-matrix-sparsity-pattern" rel="noreferrer" target="_blank">http://stackoverflow.com/<wbr>questions/10638373/suitable-<wbr>hash-function-for-matrix-<wbr>sparsity-pattern</a><br>
><br>
> Any thoughts or comments would be great here.<br>
<br>
</span>PETSc automatically tracks changes in the numerical values and sparsity pattern of its matrices. So, for example, if you call MatSetValues() and MatAssemblyBegin/End() then the KSP associated with the Mat "knows" the matrix has changed. Similarly if the sparsity pattern changes then preconditioners that depend on the sparsity pattern, such as ILU, take the change into account when they rebuild the preconditioner. You can inquire a PETSc matrix for its current state or nonzero pattern state and compare with saved previous state to see if it has changed us PetscObjectGetState() for numerical changes and MatGetNonzeroState() for nonzero structure changes.<br>
<br>
I don't know if this is related to your inquiry or not.<br>
<br>
  Barry<br>
<br>
><br>
><br>
> Thanking You,<br>
> Ramachandran<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">K.N.Ramachandran<br><div>Ph: 814-441-4279</div></div></div>
</div>