On Tue, 25 Sep 2018 at 13:20, Matthew Knepley <knep...@gmail.com> wrote:
> On Tue, Sep 25, 2018 at 7:03 AM Dave May <dave.mayhe...@gmail.com> wrote: > >> On Tue, 25 Sep 2018 at 11:49, Phil Tooley <phil.too...@sheffield.ac.uk> >> wrote: >> >>> Hi all, >>> >>> Given a vector I know I can get an associated DM (if there is one) by >>> calling VecGetDM, but I need to also be able to check that >>> >>> a) the vector is the localvector of that DM rather than the global >>> >> >> Given the vector, you can check the communicator size via >> PetscObjectGetComm() >> >> >> https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscObjectGetComm.html >> and then MPI_Comm_size() >> If the comm size 1, it is local vector. >> > > In serial, both vectors have comm size 1. > Right - and the local and global sizes are the same. My point was to check the comm size first. If it's 1 then you have a candidate for a local vector. Then you'd check the vec global size matches the dmda local size. If the commsize is anything other than 1 then it cannot be a local vector > Matt > > >> You can check the size matches your local DMDA space by using >> DMDAGetGhostCorners() >> >> >> https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMDA/DMDAGetGhostCorners.html >> >> and return the quantities m, n, and p. >> >> You also need to use DMDAGetInfo() >> >> >> https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMDA/DMDAGetInfo.html >> >> The important quantity you want returned is "dof" >> >> 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. >> >> >> >>> >>> b) the DM is a DMDA rather than some other subclass >>> >> >> See Matt's answer >> >> >>> >>> I can't immediately see routines that do what I need, but I am likely >>> missing something obvious. Is there a way to achieve the above? >>> >>> Thanks >>> >>> Phil >>> >>> -- >>> Phil Tooley >>> Research Software Engineering >>> University of Sheffield >>> >>> > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > > https://www.cse.buffalo.edu/~knepley/ > <http://www.cse.buffalo.edu/~knepley/> >