<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Mar 1, 2016 at 7:33 AM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> writes:<br>
<br>
> It was suggested to me that we add VecGhostUpdate() to VecAssembly(). This<br>
> sounds<br>
> reasonable to me. What do you think?<br>
<br>
</span>Uh, why?  What is the most common use of VecAssembly?  Seems like<br>
building b or x_0 to solve A x = b, in which case you don't need updated<br></blockquote><div><br></div><div>This is a good argument.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
ghost values.  Also, who uses VecGhost _and_ VecAssembly for the same<br>
Vec?  That's quite wasteful; if you have local indexing, why not just<br>
use VecGhostUpdate(...,SCATTER_REVERSE)?<br>
</blockquote></div><br>I do not understand this argument. If you form the local part of each vector</div><div class="gmail_extra">using VecGetArray(), then you must call both VecAssembly() and VecGhostUpdate(),</div><div class="gmail_extra">which I think is the complaint.</div><div class="gmail_extra"><br></div><div class="gmail_extra">   Matt<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>