<div dir="ltr">Dear Matthew, Berry and Dave,<div><br></div><div>Thanks for your reply. I will do as you suggest: only two more questions:</div><div><br></div><div>- is the beginning of formFunction the right place to set up the coordinates? As far as I understand I do not have access to the refined DM before running the code with -snes_grid_sequence.</div><div><br></div><div>- if so, what should I check in order to avoid to recompute the coordinates at each formFunction call? e.g., what does <span style="font-size:13px">DMGetCoordinates return NULL as the coordinate vector (or something else) if called when the coordinates have not yet been set up?</span></div><div><span style="font-size:13px"><br></span></div><div><span style="font-size:13px">Thanks again</span></div><div><span style="font-size:13px"><br></span></div><div><span style="font-size:13px">Gianluca</span></div><div><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 26, 2015 at 11:28 AM, Dave May <span dir="ltr"><<a href="mailto:dave.mayhem23@gmail.com" target="_blank">dave.mayhem23@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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 class="HOEnZb"><div class="h5"><div><br></div><div><br><br>On Friday, 26 June 2015, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov" target="_blank">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>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>
</div></div></blockquote></div><br></div>