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