xref: /petsc/src/sys/tests/ex36f.F90 (revision dcb3e68992f1c4897946af7e8406e2b4165e50f2)
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
15f8402805SBarry Smith      PetscCallA(PetscInitialize(ierr))
16c4762a1bSJed Brown
17f8402805SBarry Smith      PetscCallA(PetscRandomCreate(PETSC_COMM_WORLD,r,ierr))
18f8402805SBarry Smith      PetscCallA(PetscRandomCreate(PETSC_COMM_WORLD,r2,ierr))
19f8402805SBarry Smith      PetscCallA(PetscRandomSetFromOptions(r,ierr))
20f8402805SBarry Smith      PetscCallA(PetscRandomGetValue(r,rand,ierr))
21c4762a1bSJed Brown      print*, 'Random value:',rand
22c4762a1bSJed Brown
23f8402805SBarry Smith      PetscCallA(PetscObjectReference(r,ierr))
24f8402805SBarry Smith      PetscCallA(PetscObjectGetReference(r,ref,ierr))
25c4762a1bSJed Brown      print*, 'Reference value:',ref
26f8402805SBarry Smith      PetscCallA(PetscObjectDereference(r,ierr))
27c4762a1bSJed Brown
28f8402805SBarry Smith      PetscCallA(PetscObjectCompose(r,'test',r2,ierr));
29f8402805SBarry Smith      PetscCallA(PetscObjectQuery(r,'test',q,ierr));
30*dcb3e689SBarry Smith      PetscCheckA(q .eq. r2,PETSC_COMM_SELF,PETSC_ERR_PLIB,'Object compose/query failed')
31c4762a1bSJed Brown
32f8402805SBarry Smith      PetscCallA(PetscRandomDestroy(r,ierr))
33f8402805SBarry Smith      PetscCallA(PetscRandomDestroy(r2,ierr))
34f8402805SBarry 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