[petsc-users] DMGetCoordinatesLocal and DMPlexGetCellCoordinates in PETSc > 3.18

Berend van Wachem berend.vanwachem at ovgu.de
Wed May 17 09:19:12 CDT 2023


Dear Matt,

Thanks for getting back to me so quickly.

If I scale each of the coordinates of the mesh (say, I want to cube each 
co-ordinate), and I do this for both:

DMGetCoordinatesLocal();
DMGetCellCoordinatesLocal();

How do I know I am not cubing one coordinate multiple times?

Thanks, Berend.



On 5/17/23 16:10, Matthew Knepley wrote:
> On Wed, May 17, 2023 at 10:02 AM Berend van Wachem 
> <berend.vanwachem at ovgu.de <mailto:berend.vanwachem at ovgu.de>> wrote:
> 
>     Dear PETSc Team,
> 
>     We are using DMPlex, and we create a mesh using
> 
>     DMPlexCreateBoxMesh (.... );
> 
>     and get a uniform mesh. The mesh is periodic.
> 
>     We typically want to "scale" the coordinates (vertices) of the mesh,
>     and
>     to achieve this, we call
> 
>     DMGetCoordinatesLocal(dm, &coordinates);
> 
>     and scale the entries in the Vector coordinates appropriately.
> 
>     and then
> 
>     DMSetCoordinatesLocal(dm, coordinates);
> 
> 
>     After this, we localise the coordinates by calling
> 
>     DMLocalizeCoordinates(dm);
> 
>     This worked fine up to PETSc 3.18, but with versions after this, the
>     coordinates we get from the call
> 
>     DMPlexGetCellCoordinates(dm, CellID, &isDG, &CoordSize,
>     &ArrayCoordinates, &Coordinates);
> 
>     are no longer correct if the mesh is periodic. A number of the
>     coordinates returned from calling DMPlexGetCellCoordinates are wrong.
> 
>     I think, this is because DMLocalizeCoordinates is now automatically
>     called within the routine DMPlexCreateBoxMesh.
> 
>     So, my question is: How should we scale the coordinates from a periodic
>     DMPlex mesh so that they are reflected correctly when calling both
>     DMGetCoordinatesLocal and DMPlexGetCellCoordinates, with PETSc versions
>       >= 3.18?
> 
> 
> I think we might have to add an API function. For now, when you scale 
> the coordinates,
> can you scale both copies?
> 
>    DMGetCoordinatesLocal()
>    DMGetCellCoordinatesLocal();
> 
> and then set them back.
> 
>    Thanks,
> 
>       Matt
> 
>     Many thanks, Berend.
> 
> -- 
> 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/~knepley/>


More information about the petsc-users mailing list