On Wed, Jul 4, 2012 at 5:33 AM, Margreet Nool <span dir="ltr"><<a href="mailto:margreet.nool@gmail.com" target="_blank">margreet.nool@gmail.com</a>></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">
Dear list,<br>
<br>
How can I reuse vectors and matrices efficiently?<br>
<br>
Our program uses a lot of global matrices and vectors and I want to reduce the amount of memory. Are there PETSC functions, which check whether a Mat or Vec is already created or destroyed? Our programs have been written in Fortran90.<br>
</blockquote><div><br></div><div>In C, you can initialize the pointer to PETSC_NULL, and then check whether it has been changed (created).</div><div>However, I do not yet understand why you can't just create all the Vec and Mat structures up front. That is</div>
<div>what I usually do.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The program performs a time stepping process, and I want to know what the best way is  to create a global vector only once. As an example, a global vector Vec y is created as a result of a matrix-vector product A . x = y, by calling the PETSC function MatMult. After the first call the Vec Y has already been created.<br>
</blockquote><div><br></div><div>To clarify, MatMult() does not create anything. It takes in 2 Vec and 1 Mat which have already been created.</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">

1. Do we have to store the result into a temporary vector temp_vec and copy its values into Vec y and destroy temp_vec?<br>
2. Do we have to destroy Vec y before a call of MatMult and store the result directly in Vec y?<br>
3. Does there exist a better solution?<br>
<br>
Thanks in advance,<br>
Margreet Nool<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Margreet Nool<br>
CWI - Centrum Wiskunde & Informatica<br>
Science Park 123,<br>
1098 XG Amsterdam<br>
P.O. Box 94079<br>
1090 GB Amsterdam<br>
--------------------<br>
tel: <a href="tel:%2B31%2020%20592%204120" value="+31205924120" target="_blank">+31 20 592 4120</a><br>
Room, M131<br>
<br>
</font></span></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>