[petsc-users] Getting DMDA local coordinates

Jed Brown jedbrown at mcs.anl.gov
Mon Oct 21 07:42:11 CDT 2013


Åsmund Ervik <asmund.ervik at ntnu.no> writes:

> Thanks Jed,
>
> The following works fine (for future reference):
>
>   call DMDASetUniformCoordinates(SolScal,0.1,1.0,0.0,1.2,0.0,1.0,ierr)
>
>   call DMGetCoordinatesLocal(SolScal,coordVec,ierr)
>   call DMGetCoordinateDM(SolScal,CoordDM,ierr)
>   call DMDAVecGetArrayF90(CoordDM,coordVec,coords,ierr)
>
>   write(*,*) coords(:,0,0,0)
>   write(*,*) coords(:,imax-1,jmax-1,kmax-1)
> gives
>   0.1  0.0  0.0
>   1.0  1.2  1.0
>
> Perfect. Not very logical though, that we need this new DM, so perhaps
> add an example/something in the manual?

The coordinates live in a different space than the DM.  Why is it
illogical to use the coordinate DM to access coordinate vectors?  It is
used in several examples, though none of them in Fortran.

> I'm by the way planning to send you a Fortran example solving van der
> Pol with a 3D DMDA (if you want it). 

"van der Pol" normally refers to a 2-variable ODE system (e.g.,
src/ts/examples/tutorials/ex16.c).  I assume you are talking about a
PDE, however.

> I could include the above code in that example if desired.  The
> example is written with some utility functions (discussed in emails a
> few weeks ago) such that it is easy to reuse 95% of a legacy code
> solving van der Pol (or other PDE). The main motivation for adding
> this example (IMO) is that none of the current DM examples show how
> DMDAs are used for solving a PDE in a very simple case, particularly
> not for Fortran.

We would welcome more Fortran examples.  The best way to contribute is
to add your example in a Git branch and send a pull request or patch.

https://bitbucket.org/petsc/petsc/wiki/Home

> One question in this regard: can you have examples split into two files?
> That makes it easier to use Fortran modules in this case.

You can, though we usually do single-file because it's simpler for
people to copy out and modify.  See
src/vec/vec/examples/tutorials/makefile (ex21f90) for an example using
multiple source files.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20131021/7b47fd2a/attachment.pgp>


More information about the petsc-users mailing list