[petsc-users] Query regarding accessing data in a Petsc Vec object

Patrick Sanan patrick.sanan at gmail.com
Sun Sep 28 07:09:13 CDT 2014

Note that PETSc is designed to hide the details of the implementations 
from you (It's in C, but uses the techniques of Object-Oriented 
programming that you might be more familiar with in C++), so normal use 
would never require the user to know anything about the way PETSc 
objects represent data. In cases cases where access to lower-level 
representations of the data is useful, there is an interface provided to 
do this, as with Vec[Get/Set]Array (see the tutorials included in the 
src/ tree for many examples - if you look at the bottom of the link 
Anton provided, you'll see a handy list of links to ones that use that 
particular function).

The definitions of the functions in VecOps will depend on the 
implementation of Vec being used, and this is in general only known at 
runtime (which is a great advantage, as you can use command line 
arguments to change which implementation is used without recompiling 
anything). The various function definitions should be found in 
src/vec/vec/impls and subdirectories.

So, while it is possible to access the data stored in an object and 
print it and so on,  you'd have to include a private header and it'd be 
a bit ugly.  Perhaps a better way to poke around is to use a debugger 
like gdb or lldb (or something else built into your IDE if you're using 
one) - that should be quicker, and not require to you to spend time 
recompiling things.

On 9/28/14 1:57 PM, Parvathi M.K wrote:
> I want to access the data stored in the vec object directly without 
> using any functions. Is this possible?
> I tried using something like p->hdr._  in a printf statement (where p 
> is a vector). I wish to know which element of the _p_Vec structure 
> stores the data.
> On Sun, Sep 28, 2014 at 4:45 PM, Parvathi M.K <phoenixauriga at gmail.com 
> <mailto:phoenixauriga at gmail.com>> wrote:
>     Hey,
>     I am fairly new to PetSc. I was just curious as to how you can
>     directly access the data stored in a Petsc object, say a vector
>     without using VecGetValues().
>     I've gone through the header files, petscimpl.h and vecimpl.h
>     which contain the definitions of the PetscObject and Vec
>     structures. I cannot figure out which member of the struct holds
>     the Vector data entered using VecSet(). Also, I could not find the
>     definitions of the functions in VecOps. Could someone tell me
>     where I can find these function definitions?
>     Thank you :)
>     Parvathi

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140928/24583fed/attachment-0001.html>

More information about the petsc-users mailing list