As far as I can tell, the "local form" idea implies some mesh with a stencil or overlap behind a Vec,<div>which by itself is a purely algebraic construct. Does this mean that we are injecting some geometry </div>

<div>into Vec's semantics?<br><br><div class="gmail_quote">On Tue, Dec 7, 2010 at 2:20 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im"><br>
On Dec 7, 2010, at 1:59 PM, Jed Brown wrote:<br>
<br>
> On Tue, Dec 7, 2010 at 20:53, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br>
> BTW: I consider the DMDA Vec just a very special case that gets way to much attention and can sometimes distort the overall design of PETSc in issues that are not important in that non-special case.<br>
><br>
> Along these lines, I'm curious about using an API like VecGhost for the DA.<br>
<br>
</div>   Interesting suggestion.<br>
<div class="im"><br>
> That is, what if there was a level where a Vec could know about a local form.  When you get the local form, one implementation would return the contiguous local form (no copy) and another implementation would return a separate vector.<br>


<br>
</div>  How with the DMDA could you have a no copy and still allow nice 2 d and 3d array access of ghost points? It seems to me with DMDA you would always need a copy (or some crazy overloading of [])? Or do you mean in the DMDA case you get a copy but in the unstructured grid case you get no copy, but the basic paradigm of "local form" is always used?<br>


<br>
<br>
   Barry<br>
<div class="im"><br>
> Then you could VecUpdateVector(Xglobal,Xlocal,imode,scattermode) or so (need an unambiguous name).  Then DMComposite could operate without forcing separate local and global vectors.<br>
<br>
</div>  In other words all parallel Vecs could have related local forms and the model is "give me local form Vec", scatter to/from local form vec etc?<br>
<br>
   Barry<br>
<br>
><br>
> Jed<br>
<br>
</blockquote></div><br></div>