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
 10:       PetscInt :: one = 1

 12:       PetscCallA(PetscInitialize(ierr))

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

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