Actual source code: ex66f.F90

  1: !
  2: !   Demonstrates PetscObjectNullify()
  3: !
  4: #include <petsc/finclude/petscvec.h>
  5:       use petscvec
  6:       implicit none

  8:       PetscErrorCode ierr
  9:       Vec x, y

 11:       PetscCallA(PetscInitialize(ierr))

 13:       PetscCallA(VecCreateMPI(PETSC_COMM_WORLD, 1_PETSC_INT_KIND, PETSC_DETERMINE, x, ierr))
 14:       y = x
 15:       PetscCallA(VecDestroy(x, ierr))
 16:       if (.not. PetscObjectIsNull(y)) then
 17:         print *, "y appears to be a valid object when it is not because x has been destroyed"
 18:       end if
 19:       PetscObjectNullify(y)
 20:       !  Using y = PETSC_NULL_VEC would cause a crash in VecCreateMPI()
 21:       PetscCallA(VecCreateMPI(PETSC_COMM_WORLD, 1_PETSC_INT_KIND, PETSC_DETERMINE, y, ierr))
 22:       PetscCallA(VecDestroy(y, ierr))
 23:       PetscCallA(PetscFinalize(ierr))
 24:     end

 26: !/*TEST
 27: !
 28: !     test:
 29: !       nsize: 1
 30: !
 31: !TEST*/