[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 10:22:08 CDT 2022


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.

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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220616/ca7147f6/attachment.html>


More information about the petsc-users mailing list