[petsc-users] DM coordinates interpolations

Gianluca Meneghello gianmail at gmail.com
Mon Jun 29 21:34:37 CDT 2015


Thanks!

Gianluca

On Saturday, June 27, 2015, Barry Smith <bsmith at mcs.anl.gov> wrote:

>
> > On Jun 27, 2015, at 1:25 PM, Gianluca Meneghello <gianmail at gmail.com
> <javascript:;>> wrote:
> >
> > Dear Matthew, Berry and Dave,
> >
> > Thanks for your reply. I will do as you suggest: only two more questions:
> >
> > - 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.
> >
> > - if so, what should I check in order to avoid to recompute the
> coordinates at each formFunction call? e.g., what does DMGetCoordinates
> return NULL as the coordinate vector (or something else) if called when the
> coordinates have not yet been set up?
>
>    Yes it returns NULL so you can use that as your check.
>
> >
> > Thanks again
> >
> > Gianluca
> >
> >
> >
> > On Fri, Jun 26, 2015 at 11:28 AM, Dave May <dave.mayhem23 at gmail.com
> <javascript:;>> wrote:
> > 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.
> >
> >
> >
> > On Friday, 26 June 2015, Barry Smith <bsmith at mcs.anl.gov <javascript:;>>
> wrote:
> >
> > > On Jun 26, 2015, at 12:27 PM, Gianluca Meneghello <gianmail at gmail.com
> <javascript:;>> wrote:
> > >
> > > Dear all,
> > >
> > > 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.
> > >
> > > 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.
> >
> >    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.
> >
> > >
> > > Please also let me thank you for your great work: it has been and it
> currently is of enormous help.
> > >
> > > Best
> > >
> > > Gianluca
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150629/974f7e16/attachment.html>


More information about the petsc-users mailing list