On Sat, Feb 28, 2009 at 6:19 PM, Yixun Liu <span dir="ltr">&lt;<a href="mailto:enjoywm@cs.wm.edu">enjoywm@cs.wm.edu</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I use VecSetValue in a loop and if I add some codes such as IO before<br>
the VecSetValue the output of the vector is correct. However if I remove<br>
the IO the output is wrong. It seems that the values are cached and need<br>
some time to be set.<br><div class="Ih2E3d"></div></blockquote><div><br>1) It is unclear what the wrong behavior is.<br><br>2) This is also the a sign that memory might be corrupt somewhere else.<br><br>It is not possible to see what is wrong from your description, but I assure<br>
you that nothing is wrong with that method. It is used millions of times<br>every day. Send a sample code with known output and I will run it.<br><br>  Matt<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">
Matthew Knepley wrote:<br>
&gt; I cannot understand your question.<br>
&gt;<br>
&gt;   Matt<br>
&gt;<br>
&gt; On Fri, Feb 27, 2009 at 6:45 PM, Yixun Liu &lt;<a href="mailto:enjoywm@cs.wm.edu">enjoywm@cs.wm.edu</a><br>
</div><div><div></div><div class="Wj3C7c">&gt; &lt;mailto:<a href="mailto:enjoywm@cs.wm.edu">enjoywm@cs.wm.edu</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     Hi,<br>
&gt;<br>
&gt;<br>
&gt;      VecCreate(PETSC_COMM_WORLD,&amp;solutionDisplacementVector);<br>
&gt;<br>
&gt;      VecSetSizes(solutionDisplacementVector,<br>
&gt;     3*numOfVerticesOfOneProcessor,<br>
&gt;     systemSize); //in this case 3*numOfVerticesOfOneProcessor==systemSize<br>
&gt;      VecSetFromOptions(solutionDisplacementVector);<br>
&gt;<br>
&gt;<br>
&gt;      VecDuplicate(solutionDisplacementVector,<br>
&gt;     &amp;weightedDisplacementVector);<br>
&gt;<br>
&gt;<br>
&gt;     for(i = 0; i &lt; systemSize; i++)<br>
&gt;     {<br>
&gt;     output weightedRealDisplacement[i] to file//with this code the<br>
&gt;     values in<br>
&gt;     weightedDisplacementVector are correct.<br>
&gt;<br>
&gt;     ...<br>
&gt;     VecSetValue(weightedDisplacementVector, i,<br>
&gt;     weightedRealDisplacement[i],<br>
&gt;     ADD_VALUES);<br>
&gt;     ...<br>
&gt;<br>
&gt;     }<br>
&gt;<br>
&gt;     VecAssemblyBegin(weightedDisplacementVector);<br>
&gt;      VecAssemblyEnd(weightedDisplacementVector);<br>
&gt;<br>
&gt;     output weightedDisplacementVector to file to see its values<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;     For simplicity I only use one processor. As I examine the values in<br>
&gt;     weightedDisplacementVector and I found if  I add the output code<br>
&gt;     in the<br>
&gt;     for loop the values in weightedDisplacementVector are correct. Without<br>
&gt;     it there is error.<br>
&gt;<br>
&gt;<br>
&gt;     Thanks.<br>
&gt;<br>
&gt;     Yixun<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; What most experimenters take for granted before they begin their<br>
&gt; experiments is infinitely more interesting than any results to which<br>
&gt; their experiments lead.<br>
&gt; -- Norbert Wiener<br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <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>