[petsc-users] dmplex normal vector incorrect for periodic gmsh grids

Matthew Knepley knepley at gmail.com
Wed Dec 14 07:10:03 CST 2022


On Wed, Dec 14, 2022 at 2:38 AM Praveen C <praveen at gmx.net> 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 <knepley at gmail.com> wrote:
>
> On Tue, Dec 13, 2022 at 10:57 AM Matthew Knepley <knepley at gmail.com>
> wrote:
>
>> On Tue, Dec 13, 2022 at 6:11 AM Praveen C <praveen at gmx.net> 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.
>>
>
> Okay, I now have a MR for this:
> https://gitlab.com/petsc/petsc/-/merge_requests/5917
>
> 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

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20221214/cbc6530d/attachment-0001.html>


More information about the petsc-users mailing list