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