Hi Manuel,
you might consider useful taking a look at this code
https://bitbucket.org/bkaus/lamem, which is a multi-DMDA staggered grid
implementation.
Also, as Matt pointed out, there is a direct PETSc support for staggered
grids (DMSTAG), recently contributed by Patrick Sanan.
Thanks,
Anton
On 15.10.2018 23:22, Manuel Valera wrote:
Thanks Matthew, i have made some progress but i am still unsure on how
to proceed to make the DMDAs work as intended, i will try to lay out
what i am trying now:
I was able to port the interpolation into the DMDA model but it works
only in serial runs, and it becomes unstable for more than one
processor running,
What i do is roughly this:
* Calculate density at a cell-centered DMDA object, using a local
vector so i can access the ghost rows (indices -1 and max+1)
* Interpolate into a face-centered DMDA object for velocities, using
also a local vector.
Doing this i get the right results using the same interpolation i used
for my non-petsc implementation of the model, as long as i use only
one processor but the doubts i have are:
* How to use the local vectors properly: Is operating on them the
recommended course in this case?
* How can i access the ghost indices in the global vector so i can
then communicate GlobalToLocal? would this be a better strategy?
* I feel is wrong to interpolate a cell-centered based vector into a
face-centered based vector, using the indices of the latter, what
strategy would work best in this case?
I also tried opening a global vector with a different DA layout than
the one created (opening global density on the velocities DMDA layout)
and this introduced an error in the GlobalToLocal, LocalToLocal,
LocalToGlobal communication, something didn't happen if i used the
local versions of these vectors instead,
Thanks for your help,
Manuel
On Sat, Oct 6, 2018 at 4:45 AM Matthew Knepley <[email protected]
<mailto:[email protected]>> wrote:
On Fri, Oct 5, 2018 at 6:49 PM Manuel Valera <[email protected]
<mailto:[email protected]>> wrote:
Hello,
I'm trying to do a simple variable interpolation, from a cell
center to a face in a staggered grid, my model data management
is done with DMDAs, with two different DMs one for each cell
position,
I already did this task on a fortran only version of the model
using the 4 closest neighbors of the scalars (cell center) to
be interpolated at the velocity site (cell face), i did it
using a loop over the domain, somehow this easy task is not
translating into the DMDA framework,
Its not clear to me what problem you are having. We have done this
before. For example,
https://www.mcs.anl.gov/petsc/petsc-current/src/snes/examples/tutorials/ex30.c.html
I would note that the development version of PETSc now has DMStag
which supports staggered grid discretizations directly.
Thanks,
Matt
I'm not sure what I'm doing wrong or not aware of a easier way
Petsc may have for this task, if you could point out an easier
strategy or an example I would be grateful,
Thanks,
--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to
which their experiments lead.
-- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/
<http://www.cse.buffalo.edu/%7Eknepley/>