On Thu, Jun 16, 2022 at 11:11 AM Zongze Yang <[email protected]> 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/>
