You could try this: integer :: i real :: r i = loc(r) print *, i On Fri, Nov 19, 2021 at 12:34 AM 袁煕 <[email protected]> wrote:
> Dear PETSc-team, > > I am using function PetscSFGetGraph in my program like > ----------------------- > call PetscSFGetGraph(sf,gnroots,gnleaves,gmine,gremote,ierr) > ----------------------- > > In some cases, it works well. But in some cases, I encountered following error > ------------------ > PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, probably > memory access out of range > > ------------------ > > I found it is due to the action of reading gmine, which is a fortran pointer > point to an array. It is reasonable because PETSc manual tells me "if > returned value is NULL, it means leaves are in contiguous storage". The > problem is that I cannot find if gmine is a null pointer. > > 1) I cannot use "if (gmine==PETSC_NULL_INTEGER)" because my intel compiler > would return a compile error "A scalar-valued expression is required in this > context" > > 2) When using standard style of checking a null pointer in fortran, > "associated(gmine)", it returns "T". Even in cases such action of "print *, > gmine(1)" would give rise to above Segmentation Violation error. > > Is there any means to check the NULL pointer in Fortran in above cases. > > Many thanks, > > Yuan > >
