<div class="gmail_quote">On Wed, Mar 7, 2012 at 06:53, Matthew Knepley <span dir="ltr">&lt;<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; Why are you using VecNest? It causes more harm than good in all but some<br>
&gt; very special circumstances.<br>
<br>
I&#39;m using it to experiment with PETSc&#39;s block preconditioners. In<br>
short, I have a block matrix for the 2D Stokes eqs with the<br>
variables arranged as (u1,...,uN,v1,...,vN,p1,...pN). The matrix<br>
has the form A = [Q G, D 0]. I&#39;m using VecCreateNest to assemble<br>
the vector x = [u p], just like I use MatCreateNest to assemble<br>
the matrix A from the blocks Q, G and D. The index sets are the<br>
ones you helped me with in a previous thread<br>
(<a href="https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2012-February/012262.html" target="_blank">https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2012-February/012262.html</a>)<br></blockquote><div><br></div></div>
<div>
This is just an optimization for block PCs, and for vectors I think it makes almost</div><div>no difference.</div></blockquote></div><br><div>Agreed, I recommend using normal Vecs. You can access part of it with VecGetSubVector() if you want to set values for each part separately (it will be no-copy if possible). VecNest only matters if you insist on storing the subvectors as non-contiguous parts of the composite Vec, but also insist on not making copies. Even then, since VecScatter does not have native support for VecNest, there will be some copies in the preconditioner (but they could eventually be supported without copies, note that it&#39;s mostly moot because you need a very specialized scenario to make copies account for more than 5% of run-time). So you should basically never use VecNest unless you are really sure that it&#39;s the right thing.</div>