Also note that if you go and modify the global coordinate vector after calling DMDASetUniformCoordinates, you will need to explicitly call the vecscatter yourself to update the local coordinates.<div><br></div><div><br><br>On Friday, 26 June 2015, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On Jun 26, 2015, at 12:27 PM, Gianluca Meneghello <<a href="javascript:;" onclick="_e(event, 'cvml', 'gianmail@gmail.com')">gianmail@gmail.com</a>> wrote:<br>
><br>
> Dear all,<br>
><br>
> I would like to solve a PDE discretized on a nonuniform --- but rectangular --- grid and I wanted to use the DM coordinates vector to compute the metric terms by finite difference. The only alternative I see is to recompute the coordinates (and then the metric terms) at every function and jacobian evaluation call.<br>
><br>
> My question is what is the best (or even correct) way to provide the coordinates to the newly created da objects. Is there anything like a DMDASetNonUniformCoordinates to which to pass a function computing the coordinates? As far as I can tell the fine grid coordinates are currently linearly interpolated from the coarse grid ones.<br>
<br>
   Call DMDASetUniformCoordinates() on each level then call DMGetCoordinates() and put the coordinate values you want in. You can call DMGetCoordinateDM(dm, &dmcoor) to get the DM that goes with the coordinate vector and use DMDAVecGetArray(dmcoor,coor,&array) to give easy access to the entries.<br>
<br>
><br>
> Please also let me thank you for your great work: it has been and it currently is of enormous help.<br>
><br>
> Best<br>
><br>
> Gianluca<br>
<br>
</blockquote></div>