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*/