Fellow PETSc developers (cc: PFLOTRAN developers),

I am trying to get PFLOTRAN (which currently uses PETSc 3.9) working with the 
recent PETSc 3.10 release. One problem I am hitting is that VecScatterRemap() 
calls that were fine with PETSc 3.9 cause compile time errors due to mismatched 
ranks in some arguments. Digging around in the 3.10 source code, I see that in 
my auto-generated interfaces in 
$PETSC_DIR/src/vec/f90-mod/ftn-auto-interfaces/petscvec.h90 there is

      subroutine VecScatterRemap(a,b,c,z)
      use petscvecdef
       VecScatter a ! VecScatter
       PetscInt b ! PetscInt
       PetscInt c ! PetscInt
       integer z
       end subroutine

but I think arguments b and c need to be defined something like

       PetscInt, dimension(:), pointer :: b
       PetscInt, dimension(:), pointer :: c

(Though my modern Fortran skills are rusty and I'm not sure if this is quite 
how these should be declared.) Note that this interface doesn't appear to be 
generated at all in PETSc 3.9. It's been a very long time since I've done any 
hacking on the Fortran interface stuff in PETSc. How do I go about fixing this?

Related Fortran usage question: At one point in PFLOTRAN, there is the call

  call VecScatterRemap(ugdm%scatter_ltol,int_ptr,PETSC_NULL_INTEGER, &
                       ierr);CHKERRQ(ierr)

If I manually change the Fortran interface code to be as above, then I get

  Error: Actual argument for 'c' must be a pointer at (1)

If argument 'c' should indeed be defined as a pointer to a one-dimensional 
array, what variant of PETSC_NULL are we to pass?

--Richard

Reply via email to