Actual source code: ex36f.F90
1: !
2: ! Program to test PetscRandom, PetscObjectReference() and other PetscObjectXXX functions.
3: !
4: #include <petsc/finclude/petscsys.h>
5: program main
6: use petscsys
7: implicit none
9: PetscErrorCode ierr
10: PetscRandom r, q, r2
11: PetscScalar rand
12: PetscInt ref
14: PetscCallA(PetscInitialize(ierr))
16: PetscCallA(PetscRandomCreate(PETSC_COMM_WORLD, r, ierr))
17: PetscCallA(PetscRandomCreate(PETSC_COMM_WORLD, r2, ierr))
18: PetscCallA(PetscRandomSetFromOptions(r, ierr))
19: PetscCallA(PetscRandomGetValue(r, rand, ierr))
20: print *, 'Random value:', rand
22: PetscCallA(PetscObjectReference(r, ierr))
23: PetscCallA(PetscObjectGetReference(r, ref, ierr))
24: print *, 'Reference value:', ref
25: PetscCallA(PetscObjectDereference(r, ierr))
27: PetscCallA(PetscObjectCompose(r, 'test', r2, ierr))
28: PetscCallA(PetscObjectQuery(r, 'test', q, ierr))
29: PetscCheckA(q == r2, PETSC_COMM_SELF, PETSC_ERR_PLIB, 'Object compose/query failed')
31: PetscCallA(PetscRandomDestroy(r, ierr))
32: PetscCallA(PetscRandomDestroy(r2, ierr))
33: PetscCallA(PetscFinalize(ierr))
34: end
36: !
37: !/*TEST
38: !
39: ! test:
40: ! requires: !complex
41: !
42: !TEST*/