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