On Sat, Oct 1, 2011 at 11:07 AM, behzad baghapour <span dir="ltr">&lt;<a href="mailto:behzad.baghapour@gmail.com">behzad.baghapour@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;">
<div>Thanks, then i should change my idea abut matrix evaluation in Petsc. I will try to keep matrix in the same structure during successive iterations.<br></div></blockquote><div><br></div><div>No, that is not the points at all. You should use the interface to alter the matrix as you want. More directly,</div>
<div><br></div><div>  Give up on a[i[row]+offset[col]] = value;</div><div><br></div><div>and use instead</div><div><br></div><div>  MatSetValues(A, 1, &amp;row, 1, &amp;col, &amp;value, INSERT_VALUES);</div><div><br></div>
<div>I strongly suggest you read</div><div><br></div><div>  <a href="http://dl.acm.org/citation.cfm?id=245883">http://dl.acm.org/citation.cfm?id=245883</a></div><div><br></div><div>  Thanks,</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;"><div></div><div><div></div><div class="h5">
<div class="gmail_quote">On Sat, Oct 1, 2011 at 7:26 PM, Matthew Knepley <span dir="ltr">&lt;<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="padding-left:1ex;margin:0px 0px 0px 0.8ex;border-left:#ccc 1px solid">
<div>On Sat, Oct 1, 2011 at 10:44 AM, behzad baghapour <span dir="ltr">&lt;<a href="mailto:behzad.baghapour@gmail.com" target="_blank">behzad.baghapour@gmail.com</a>&gt;</span> wrote:<br></div>
<div class="gmail_quote">
<div>
<blockquote class="gmail_quote" style="padding-left:1ex;margin:0px 0px 0px 0.8ex;border-left:#ccc 1px solid">
<div>OK. All I am concering is:</div>
<div> </div>
<div>1- define matrix A in sparse format AIJ.</div>
<div>2- Get the content of A.</div>
<div>3- change the content of A for some elements</div>
<div>4- Restore the changed matrix back into origin.</div>
<div> </div>
<div>I test MatGetArray( Mat A, PetscScalar* a ) but I couldnt find the correct content of matrix by using a[i*n+j]. I need to know how to access the elements of an assembled sparse matrix.<br><br></div>
<div>Am I clear now?</div></blockquote>
<div><br></div></div>
<div>No, definitely do not do that. The whole point of PETSc matrices is that you do not do this. This is what</div>
<div>is wrong with 90% of numerical software. You want <b>interfaces</b>, not data structures. That allows you</div>
<div>to seamlessly</div>
<div><br></div>
<div>  - work in parallel</div>
<div>  - work on GPUs</div>
<div>  - optimize for different architectures</div>
<div><br></div>
<div>What you want to do is use MatSetValues() (or MatZeroRows, etc.) to change your entries.</div>
<div><br></div>
<div>    Matt</div>
<div>
<div> </div>
<blockquote class="gmail_quote" style="padding-left:1ex;margin:0px 0px 0px 0.8ex;border-left:#ccc 1px solid">
<div> </div>
<div>Thanks</div>
<div>Behzad</div>
<div> </div>
<div class="gmail_quote">On Sat, Oct 1, 2011 at 6:56 PM, Jed Brown <span dir="ltr">&lt;<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="padding-left:1ex;margin:0px 0px 0px 0.8ex;border-left:#ccc 1px solid">
<div class="gmail_quote">
<div>On Sat, Oct 1, 2011 at 10:23, behzad baghapour <span dir="ltr">&lt;<a href="mailto:behzad.baghapour@gmail.com" target="_blank">behzad.baghapour@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="padding-left:1ex;margin:0px 0px 0px 0.8ex;border-left:#ccc 1px solid">I meant by MatAssembly, the global indices of matrix elements (related to a dense format) which is changed into sparse one.</blockquote>


<div><br></div></div>
<div>I don&#39;t understand what you mean. It doesn&#39;t make sense to convert &quot;dense&quot; indices into sparse ones.</div>
<div>
<div> </div>
<blockquote class="gmail_quote" style="padding-left:1ex;margin:0px 0px 0px 0.8ex;border-left:#ccc 1px solid">So what would be right pattern to read the content of the Matrix from MatGetArray if I know that the original matrix is created by AIJ?</blockquote>

</div></div><br>
<div>Use MatGetRow() if you need access to this. (The internal data structures are different in parallel and serial, so accessing them directly is bad.)</div></blockquote></div><br><font color="#888888"><br clear="all"><br>

-- <br>==================================<br>Behzad Baghapour<br>Ph.D. Candidate, Mechecanical Engineering<br>University of Tehran, Tehran, Iran<br><a href="https://sites.google.com/site/behzadbaghapour" target="_blank">https://sites.google.com/site/behzadbaghapour</a><br>

Fax: 0098-21-88020741<br>==================================<br><br></font></blockquote></div></div><br><br clear="all">
<div>
<div></div>
<div>
<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></div></div></blockquote>

</div><br><br clear="all"><br>-- <br>==================================<br>Behzad Baghapour<br>Ph.D. Candidate, Mechecanical Engineering<br>University of Tehran, Tehran, Iran<br><a href="https://sites.google.com/site/behzadbaghapour" target="_blank">https://sites.google.com/site/behzadbaghapour</a><br>

Fax: 0098-21-88020741<br>==================================<br><br>
</div></div></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>