<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Dec 6, 2016 at 9:31 AM, K. N. Ramachandran <span dir="ltr"><<a href="mailto:knram06@gmail.com" target="_blank">knram06@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><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" target="_blank">http://www.mcs.anl.gov/petsc/<wbr>petsc-current/docs/<wbr>manualpages/singleindex.html</a>). Was there another closely related function I should take a look at?</div></div></blockquote><div><br></div><div><a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscObjectStateGet.html">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscObjectStateGet.html</a><br></div><div><br></div><div>  Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><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:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><br>
> On Dec 5, 2016, at 2:47 PM, K. N. Ramachandran <<a href="mailto:knram06@gmail.com" target="_blank">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/quest<wbr>ions/10638373/suitable-hash-<wbr>function-for-matrix-sparsity-<wbr>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><span class="gmail-HOEnZb"><font color="#888888">
</font></span></blockquote></div><span class="gmail-HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_2634916635041784983gmail_signature"><div dir="ltr">K.N.Ramachandran<br><div>Ph: <a href="tel:(814)%20441-4279" value="+18144414279" target="_blank">814-441-4279</a></div></div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">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</div>
</div></div>