Re: [petsc-dev] PetscSF in Fortran
hi On 21/09/17 15:15, Jed Brown wrote:
Unfortunately PetscSFSetGraph/PetscSFGetGraph need custom bindings for Fortran and they have not been written. Shouldn't be difficult, but will take a little work/testing. I would probably make the array of PetscSFNode be a PetscInt array of length 2n (or of shape (2,n)) -- that's an equivalent memory representation to what we're using now.
That sounds like the sort of thing I need. Alternatively, it occurred to me I could probably just use DMCreateDefaultSF() to create the point SF on the new DM- would there be any disadvantage in doing it that way? However, at the moment I can't, because it appears the Fortran interface for DMCreateDefaultSF() is missing. I would have thought the interface for that should be simple enough, as it just takes a DM and a couple of PetscSections. - Adrian
Adrian Croucher <[email protected]> writes:
hi
For the dual-porosity stuff I'm working on, I'm creating a modified DMPlex. Looking at e.g. TS ex11.c (in the SplitFaces() routine), it appears I am going to have to set up a PetscSF for the new DM (from what I can gather, that is needed for managing parallel communication of partition ghost cell values).
The way I've set up the modified DMPlex, the partition ghost cells are in the same locations as they were in the original single-porosity DM. So I'm thinking I basically just have to copy the SF straight over from the original DM.
The routine DMGetPointSF() seems to work OK in Fortran, but I'm having a bit of trouble with PetscSFGetGraph().
When I try to declare an array of type PetscSFNode for the iremote parameter, it doesn't seem to know about PetscSFNode, even though I have a 'use petsc' in my code, which normally gives access to everything.
Also I'm not sure of exactly how to set up the ilocal and iremote array parameters for this function in Fortran. How should they be declared- as pointer arrays?
- Adrian
-- Dr Adrian Croucher Senior Research Fellow Department of Engineering Science University of Auckland, New Zealand email: [email protected] tel: +64 (0)9 923 4611
participants (1)
-
Adrian Croucher