I have packaged few vectors into a single Vec. I want to extract <div>components of this composite Vec at some time in the code. Doing things</div><div>this way is giving me an error. </div><div><br></div><div>static const int NO_COMPS  = ...;</div>

<div>Vec array_x[NO_COMPS] = {.....};</div><div>Vec x;</div><div>VecCreateNest(PETSC_COMM_WORLD, NO_COMPS, PETSC_NULL, array_x, &x);</div><div><br></div><div>for(int n = 0; n < NO_COMPS; ++n)</div><div>{</div><div>

       Vec sub_x;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>IS iset;</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>ISCreateGeneral(PETSC_COMM_WORLD, 1, &n, PETSC_COPY_VALUES, &iset); </div>

<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>VecGetSubVector(x, iset, &sub_x);  </div><div>       //<b>ERROR: Index set not found in nested Vec!</b></div><div><br></div><div>        ISDestroy(&iset);</div>

<div><br></div><div>}</div><div><br></div><div>What's the proper way of extracting components?<br clear="all"><div><br></div>-- <br><div>Amneet <br><br></div><div><br></div><div><br></div>
</div>