[petsc-dev] PetscSF in Fortran

Jed Brown jed at jedbrown.org
Wed Sep 20 22:15:08 CDT 2017

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.

Adrian Croucher <a.croucher at auckland.ac.nz> 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: a.croucher at auckland.ac.nz
> tel: +64 (0)9 923 4611

More information about the petsc-dev mailing list