<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jan 8, 2019 at 3:40 PM Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</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"><br>
<br>
> On Jan 8, 2019, at 4:35 PM, Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br>
> <br>
> "Smith, Barry F. via petsc-users" <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> writes:<br>
> <br>
>>> On Jan 8, 2019, at 4:11 PM, Fande Kong via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:<br>
>>> <br>
>>> Hi All,<br>
>>> <br>
>>> I was wondering how to convert a regular (2D DMDA) grid coordinate (i,j) to a global index that is used for global matrices and vectors. Do we have any API on this? <br>
>> <br>
>>    You can convert the global i,j to a local I,J by subtracting off the xs, ys, then convert to the local vector numbering with something like I+J*xm then add that value to the rstart returned from VecGetOwnershipRange() <br>
> <br>
> If the value may be in your ghosted/halo region, you can use<br>
> <br>
>  VecGetLocalToGlobalMapping(vec, ltog);<br>
>  ISLocalToGlobalMappingApply(ltog, 1, &local, &global);<br>
<br>
   Oh, yes I was ignoring the case where the questioning process didn't own the value. <br>
<br>
   In the general case where the i,j may not be within the ghost region of the process it is on you can use the ao obtained from DMDAGetAO() to map from the natural (application) ordering to the PETSc ordering. Obtain the natural ordering value with something like i + j*M. <br></blockquote><div><br></div><div>Is M the number of points (for all processors) along x direction? </div><div><br></div><div>Thanks,</div><div><br></div><div>Fande Kong</div><div> </div><div> </div></div></div>