Hello

I tried this with the attached code but I still get wrong normals.

./dmplex -dm_plex_filename ug_periodic.msh -dm_localize_height 1


Code and grid file are attached

Thank you
praveen

Attachment: dmplex.c
Description: Binary data

Attachment: ug_periodic.msh
Description: Binary data



On 14-Dec-2022, at 6:40 PM, Matthew Knepley <[email protected]> wrote:

On Wed, Dec 14, 2022 at 2:38 AM Praveen C <[email protected]> wrote:
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

On 14-Dec-2022, at 12:51 AM, Matthew Knepley <[email protected]> wrote:

On Tue, Dec 13, 2022 at 10:57 AM Matthew Knepley <[email protected]> wrote:
On Tue, Dec 13, 2022 at 6:11 AM Praveen C <[email protected]> wrote:
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
 
  Thanks,

    Matt
 
Thanks
praveen
-- 




-- 
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


Reply via email to