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