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

Reply via email to