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
<[email protected] <mailto:[email protected]>> 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/>