<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <blockquote>
      <pre wrap="">   Look at the source for DMDAVecGetArray() it calls either VecGetArray1d, VecGetArray2d, VecGetArray3d. You can call the VecGetArrayNd directly setting the local start and stop you want.


</pre>
    </blockquote>
    Thanks, I'll look into this.<br>
    <blockquote>
      <pre wrap="">  As a PETSc developer, of course, I would recommend keeping your local/temporary data also in Vecs and using the DMDAVecGetArray() for access to those also and having all code written in the “local patch style” with loops i=gxs; i<gxs+gxm  I think the code is clearer and easier to reason about than having each process from 0 to vxm etc.

</pre>
    </blockquote>
    Yeah, I definitely see the attraction and I may ultimately go that
    route. As a non-PETSc developer however, it seems preferable to
    absolutely minimize the reliance on PETSc data management for code
    re-use in a non-PETSc application going forward. I'd be eager to
    hear from other devs on how they approach this.<br>
    <br>
    <br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 03/06/2014 09:23 AM, Barry Smith
      wrote:<br>
    </div>
    <blockquote
      cite="mid:027788CB-DDA2-41C0-AD45-42B6A2999584@mcs.anl.gov"
      type="cite">
      <pre wrap="">
On Mar 6, 2014, at 8:05 AM, Mark Lohry <a class="moz-txt-link-rfc2396E" href="mailto:mlohry@gmail.com"><mlohry@gmail.com></a> wrote:

</pre>
      <blockquote type="cite">
        <pre wrap="">I'm using DMDAs for managing my DOF data on structured grids, so processes have access to local array chunks from i=gxs; i<gxs+gxm. I have a lot of local/temporary data that I don't want PETSc to manage and I'm trying to keep PETSc as segregated from the rest of code as possible, so I'd prefer for any functions to be ignorant of particular ordering, and just access from i=0; i<gxm so that I'm using 0-indexed arrays locally. What's the appropriate way to go about doing this / getting direct access to the beginning of global-indexed local array?
</pre>
      </blockquote>
      <pre wrap="">
   Mark,

   Look at the source for DMDAVecGetArray() it calls either VecGetArray1d, VecGetArray2d, VecGetArray3d. You can call the VecGetArrayNd directly setting the local start and stop you want.

   Barry

  As a PETSc developer, of course, I would recommend keeping your local/temporary data also in Vecs and using the DMDAVecGetArray() for access to those also and having all code written in the “local patch style” with loops i=gxs; i<gxs+gxm  I think the code is clearer and easier to reason about than having each process from 0 to vxm etc.

</pre>
    </blockquote>
    <br>
  </body>
</html>