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