Thank you, this MR works if I generate the mesh within the code.
But using a mesh made in gmsh, I see the same issue.
Because the operations happen in a different order. If you read in your mesh with
-dm_plex_filename mymesh.gmsh -dm_localize_height 1
then it should work.
Thanks,
Matt Thanks praveen
Hello
In the attached test, I read a small grid made in gmsh with periodic bc.
This is a 2d mesh.
The cell numbers are shown in the figure.
All faces have length = 2.5
But using PetscFVFaceGeom I am getting length of 7.5 for some faces. E.g.,
face: 59, centroid = 3.750000, 2.500000, normal = 0.000000, -7.500000 ===> Face length incorrect = 7.500000, should be 2.5 support[0] = 11, cent = 8.750000, 3.750000, area = 6.250000 support[1] = 15, cent = 8.750000, 1.250000, area = 6.250000
There are also errors in the orientation of normal.
If we disable periodicity in geo file, this error goes away.
Yes, by default we only localize coordinates for cells. I can put in code to localize faces.
I am attaching your code, slightly modified. You can run
./dmplex -malloc_debug 0 -dm_plex_box_upper 10,10 -dm_plex_box_faces 4,4 -dm_plex_simplex 0 -dm_view ::ascii_info_detail -draw_pause 3 -dm_plex_box_bd periodic,periodic -dm_localize_height 0
which shows incorrect edges and
./dmplex -malloc_debug 0 -dm_plex_box_upper 10,10 -dm_plex_box_faces 4,4 -dm_plex_simplex 0 -dm_view ::ascii_info_detail -draw_pause 3 -dm_plex_box_bd periodic,periodic -dm_localize_height 1
which is correct. If you want to control things yourself, instead of using the option you can call DMPlexSetMaxProjectionHeight() on the coordinate DM yourself.
Thanks,
Matt
-- 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
|