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