Yes, I know. So this is why I need to use MAT_FINAL_ASSEMBLY instead of 
MAT_FLUSH_ASSEMBLY in the function 
MatAssemblyBegin/End when switching between ADD_VALUES and INSERT_VALUES
 in MatSetValues(). <br>But when I use the finally assembled matrix to 
multiply a vector using MatMult. I find that the output of  MatMult is 
wrong if I use multiprocessors.  So I doubt that the problem is come from &quot;MAT_FINAL_ASSEMBLY instead of 
MAT_FLUSH_ASSEMBLY&quot;, but I am not sure. Thanks.<br>
<br>
Regards,<br>
<br>
Rongliang<br><br><div class="gmail_quote">On Tue, Nov 9, 2010 at 10:31 AM, Barry Smith <span dir="ltr">&lt;<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
On Nov 9, 2010, at 11:27 AM, Rongliang Chen wrote:<br>
<br>
&gt;    Message: 2<br>
&gt; Date: Mon, 8 Nov 2010 19:57:16 -0600<br>
&gt; From: Barry Smith &lt;<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>&gt;<br>
&gt; Subject: Re: [petsc-users] Can I use MAT_FINAL_ASSEMBLY instead of<br>
&gt;        MAT_FLUSH_ASSEMBLY?<br>
&gt; To: PETSc users list &lt;<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>&gt;<br>
&gt; Message-ID: &lt;<a href="mailto:52AFD8FB-17C1-4B51-97E9-C77112B69F3C@mcs.anl.gov">52AFD8FB-17C1-4B51-97E9-C77112B69F3C@mcs.anl.gov</a>&gt;<br>
&gt; Content-Type: text/plain; charset=us-ascii<br>
&gt;<br>
&gt;<br>
&gt; On Nov 8, 2010, at 7:49 PM, Rongliang Chen wrote:<br>
&gt;<br>
&gt; &gt; Hi everyone,<br>
&gt; &gt;<br>
&gt; &gt; Can I use MAT_FINAL_ASSEMBLY instead of MAT_FLUSH_ASSEMBLY in 
the function MatAssemblyBegin/End when switching between ADD_VALUES and 
INSERT_VALUES in MatSetValues()?  Thank you!<br>
&gt; &gt;<br>
&gt; &gt; Regards,<br>
&gt; &gt;<br>
&gt; &gt; Rongliang<br>
&gt;<br>
&gt; Yes, but generally there is no reason to. It is best to use the 
flush until your final assembly because then it doesn&#39;t do any work that
 needs to be redone or prematurely free memory that may be needed later.<br>
&gt;<br>
&gt; Why do you want to do that?<br>
&gt;<br>
&gt;   Barry<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Hi Barry,<br>
&gt;<br>
&gt; Thank you for your reply. I find that when I use MAT_FINAL_ASSEMBLY
 instead of MAT_FLUSH_ASSEMBLY in the function MatAssemblyBegin/End, it 
will<br>
&gt;  cause problem. I do not know why.<br>
<br>
</div>   &quot;cause problem&quot; is not very helpful. What does that mean? Send all output to <a href="mailto:petsc-maint@mcs.anl.gov">petsc-maint@mcs.anl.gov</a> if it doesn&#39;t work.<br>
<div class="im">&gt;<br>
&gt; The reason that I want to use it like this is that I first set the 
matrix with ADD_VALUES and then I need to zero some rows of the matrix 
using MatZeroRowsLocalIS(), at last I still need to set some elements of
 the matrix with INSERT_VALUES. Between MatSetValues() and 
MatZeroRowsLocalIS() I need to use MAT_FINAL_ASSEMBLY.<br>
&gt; The order is:<br>
&gt; ADD_VALUES---&gt;MatZeroRowsLocalIS()---&gt;INSERT_VALUES.<br>
<br>
</div>  You need to use FINAL_ASSEMLY before the zero rows calls. Flush is not enough in that case.<br>
<br>
   Barry<br>
<br>
&gt;<br>
&gt; Thanks!<br>
&gt;<br>
&gt; Regards,<br>
&gt;<br>
&gt; Rongliang<br>
<br>
</blockquote></div><br>