[petsc-users] How to find the map between the high order coordinates of DMPlex and vertex numbering?
Matthew Knepley
knepley at gmail.com
Thu Jun 16 12:11:26 CDT 2022
On Thu, Jun 16, 2022 at 12:06 PM Zongze Yang <yangzongze at gmail.com> wrote:
>
>
> 在 2022年6月16日,23:22,Matthew Knepley <knepley at gmail.com> 写道:
>
>
> On Thu, Jun 16, 2022 at 11:11 AM Zongze Yang <yangzongze at gmail.com> wrote:
>
>> Hi, if I load a `gmsh` file with second-order elements, the coordinates
>> will be stored in a DG-P2 space. After obtaining the coordinates of a cell,
>> how can I map the coordinates to vertex and edge?
>>
>
> By default, they are stored as P2, not DG.
>
>
> I checked the coordinates vector, and found the dogs only defined on cell
> other than vertex and edge, so I said they are stored as DG.
> Then the function DMPlexVecGetClosure
> <https://petsc.org/main/docs/manualpages/DMPLEX/DMPlexVecGetClosure/> seems return
> the coordinates in lex order.
>
> Some code in reading gmsh file reads that
>
>
> 1756: if (isSimplex) continuity = PETSC_FALSE
> <https://petsc.org/main/docs/manualpages/Sys/PETSC_FALSE/>; /* XXX FIXME
> Requires DMPlexSetClosurePermutationLexicographic() */
>
>
> 1758: GmshCreateFE(comm, NULL, isSimplex, continuity, nodeType, dim,
> coordDim, order, &fe)
>
>
> The continuity is set to false for simplex.
>
Oh, yes. That needs to be fixed. For now, you can just project it to P2 if
you want using
https://petsc.org/main/docs/manualpages/DM/DMProjectCoordinates/
Thanks,
Matt
> Thanks,
> Zongze
>
> You can ask for the coordinates of a vertex or an edge directly using
>
> https://petsc.org/main/docs/manualpages/DMPLEX/DMPlexPointLocalRead/
>
> by giving the vertex or edge point. You can get all the coordinates on a
> cell, in the closure order, using
>
> https://petsc.org/main/docs/manualpages/DMPLEX/DMPlexVecGetClosure/
>
> Thanks,
>
> Matt
>
>
>> Below is some code load the gmsh file, I want to know the relation
>> between `cl` and `cell_coords`.
>>
>> ```
>> import firedrake as fd
>> import numpy as np
>>
>> # Load gmsh file (2rd)
>> plex = fd.mesh._from_gmsh('test-fd-load-p2-rect.msh')
>>
>> cs, ce = plex.getHeightStratum(0)
>>
>> cdm = plex.getCoordinateDM()
>> csec = dm.getCoordinateSection()
>> coords_gvec = dm.getCoordinates()
>>
>> for i in range(cs, ce):
>> cell_coords = cdm.getVecClosure(csec, coords_gvec, i)
>> print(f'coordinates for cell {i} :\n{cell_coords.reshape([-1, 3])}')
>> cl = dm.getTransitiveClosure(i)
>> print('closure:', cl)
>> break
>> ```
>>
>> Best wishes,
>> Zongze
>>
>
>
> --
> 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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220616/a580a817/attachment.html>
More information about the petsc-users
mailing list