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