Dear PETSc team: (Hoping to get a hold of Jed and/or Matt for this one) (Also, sorry for the mouthful below)
I'm developing routines that will read/write CGNS files to DMPlex and vice versa. One of the recurring challenges is the bookkeeping of global numbering for vertices and cells. Currently, I am restricting my support to single Zone CGNS files, in which the file provides global numbers for vertices and cells. I used PetscHSetI as exemplified in DMPlexBuildFromCellListParallel() to obtain local DAG numbers from the global numbers provided by the file. I also used PetscSFCreateByMatchingIndices() to establish a basic DAG point distribution over the MPI processes. I use this PointSF to manually assemble a global PetscSection. For owned DAG points (per the PointSF) , I call PetscSectionSetOffset(section, point, file_offset); For ghost DAG points (per the PointSF) I call PetscSectionSetOffset(section, point, -(file_offset + 1)); All of what I have just described happens in my CGNS version of DMPlexTopologyLoad(). My intention is to retain those numbers into the DMPlex, and reuse them in my CGNS analogues of DMPlexCoordinatesLoad(), DMPlexLabelsLoad(), and DMPlexGlobalVectorLoad(). Anyhow, is this a good wait to track global numbers? Also, I need (for other applications) to eventually call DMPlexInterpolate() and DMPlexDistribute(), will the global PetscSection offsets be preserved after calling those two? Sincerely: J.A. Ferrand Embry-Riddle Aeronautical University - Daytona Beach - FL Ph.D. Candidate, Aerospace Engineering M.Sc. Aerospace Engineering B.Sc. Aerospace Engineering B.Sc. Computational Mathematics Phone: (386)-843-1829 Email(s): ferra...@my.erau.edu jesus.ferr...@gmail.com