<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, 25 Sep 2018 at 11:49, Phil Tooley <<a href="mailto:phil.tooley@sheffield.ac.uk">phil.tooley@sheffield.ac.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
<br>
Given a vector I know I can get an associated DM (if there is one) by<br>
calling VecGetDM, but I need to also be able to check that<br>
<br>
a) the vector is the localvector of that DM rather than the global<br></blockquote><div><br></div><div>Given the vector, you can check the communicator size via</div><div>PetscObjectGetComm()</div><div><br></div><div>  <a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscObjectGetComm.html">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscObjectGetComm.html</a><br></div><div>and then MPI_Comm_size()</div><div>If the comm size 1, it is local vector.</div><div><br></div><div>You can check the size matches your local DMDA space by using DMDAGetGhostCorners()</div><div><br></div><div><a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMDA/DMDAGetGhostCorners.html">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMDA/DMDAGetGhostCorners.html</a><br></div><div><br></div><div>and return the quantities m, n, and p.</div><div><br></div><div>You also need to use  DMDAGetInfo()</div><div><br></div><div><a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMDA/DMDAGetInfo.html">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMDA/DMDAGetInfo.html</a><br></div><div><br></div><div>The important quantity you want returned is "dof"</div><div><br></div><div>If m x n x p x dof matches the number returned by VecGetSize() (assuming you know the vector is sequential) then you know the local space will fit within your vector.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
b) the DM is a DMDA rather than some other subclass<br></blockquote><div><br></div><div>See Matt's answer </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
I can't immediately see routines that do what I need, but I am likely<br>
missing something obvious. Is there a way to achieve the above?<br>
<br>
Thanks<br>
<br>
Phil<br>
<br>
-- <br>
Phil Tooley<br>
Research Software Engineering<br>
University of Sheffield<br>
<br>
</blockquote></div></div></div></div></div>