<p>We discussed Vec local/global semantics on the libmesh list a year ago or more. I didn't think there was a failing in the current system, but libmesh imposes some stricter consistency on local vectors, which sometimes causes unnecessary communication. I don't recall all the details, but we can dig up the thread.</p>

<div class="gmail_quote">On Oct 17, 2011 9:17 PM, "Vijay S. Mahadevan" <<a href="mailto:vijay.m@gmail.com">vijay.m@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> I would not try to simultaneously change the distribution of the Vec. That's<br>
> what VecScatter is for. VecConvert() would keep the same distribution and<br>
> give you back a semantically identical vector of a different type.<br>
<br>
Well, I implied changing the parallel layout because of the code I've<br>
seen in say libMesh and other packages using PETSc. Their idea of<br>
localize() is often to convert a MPI vector to a locally serial vector<br>
with/without ghost nodes. I see your point on using VecScatter and so<br>
VECSEQ can still be disallowed but some form of Ghosted parallel<br>
vector conversion would still be useful.<br>
<br>
On Mon, Oct 17, 2011 at 9:00 PM, Jed Brown <<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>> wrote:<br>
> On Mon, Oct 17, 2011 at 20:55, Vijay S. Mahadevan <<a href="mailto:vijay.m@gmail.com">vijay.m@gmail.com</a>> wrote:<br>
>><br>
>> Actually, that is quite consistent in philosophy to the merge<br>
>> operation I'm trying to perform. SEQ->MPI might still be an invalid<br>
>> operation for Vec though. Perhaps with a PETSC_DECIDE for local, it<br>
>> still could be relevant ? You can definitely specialize this for<br>
>> MPI->SEQ and Nest Vectors with a new VecReuse enum with relevant<br>
>> names.<br>
><br>
> I would not try to simultaneously change the distribution of the Vec. That's<br>
> what VecScatter is for. VecConvert() would keep the same distribution and<br>
> give you back a semantically identical vector of a different type.<br>
</blockquote></div>