<div dir="ltr">You could use <div><br><div><a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMCreateFieldDecomposition.html">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMCreateFieldDecomposition.html</a><br>
</div></div><div><br></div><div>to get DMDAs representing the layout of the individual components and DMCreateGlobalVector() on those DMDAs to get properly laid-out individual field vectors.  Then, you would use the ISes given by this function to build VecScatters using </div>
<div><br></div><div><a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecScatterCreate.html">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecScatterCreate.html</a><br></div><div><br>
</div><div> from the monolithic vector to the component ones.  Then apply the scatter and do whatever you want with those vectors (take norms, etc.)</div><div><br></div><div>Hope this helps.</div><div><br></div><div>- Peter</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 20, 2014 at 10:38 AM, Mark Lohry <span dir="ltr"><<a href="mailto:mlohry@gmail.com" target="_blank">mlohry@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'm using a struct for a multi-component PDE as suggested in the manual, like so:<br>
<br>
typedef struct {<br>
PetscScalar u,v,omega,temperature;<br>
} Node;<br>
Node **f,**u;<br>
DMDAVecGetArray(DM da,Vec local,&u);<br>
DMDAVecGetArray(DM da,Vec global,&f);<br>
<br>
<br>
Calling VecNorm(...) on these vectors gives a norm for the entire vector. If one wants separate norms for each component of the struct, i.e. Norm(u) or Norm(v), what's the right approach? Would I need to manually compute norms locally and then call an MPI reduce function, or is this ability built-in to PETSc somewhere?<span class="HOEnZb"><font color="#888888"><br>

<br>
<br>
-Mark Lohry<br>
</font></span></blockquote></div><br></div>