On Wed, May 17, 2023 at 10:21 AM Berend van Wachem <berend.vanwac...@ovgu.de> wrote:
> 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? > Good question. Right now, the only connection between the two sets of coordinates is DMLocalizeCoordinates(). Since sometimes people want to do non-trivial things to coordinates, I prefer not to push in an API for "just" scaling, but I could be convinced the other way. Thanks, Matt > Thanks, Berend. > > On 5/17/23 16:10, Matthew Knepley wrote: > > On Wed, May 17, 2023 at 10:02 AM Berend van Wachem > > <berend.vanwac...@ovgu.de <mailto:berend.vanwac...@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/> > -- 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/>