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 PetscCallA(PetscInitialize(ierr)) 16 17 PetscCallA(PetscRandomCreate(PETSC_COMM_WORLD,r,ierr)) 18 PetscCallA(PetscRandomCreate(PETSC_COMM_WORLD,r2,ierr)) 19 PetscCallA(PetscRandomSetFromOptions(r,ierr)) 20 PetscCallA(PetscRandomGetValue(r,rand,ierr)) 21 print*, 'Random value:',rand 22 23 PetscCallA(PetscObjectReference(r,ierr)) 24 PetscCallA(PetscObjectGetReference(r,ref,ierr)) 25 print*, 'Reference value:',ref 26 PetscCallA(PetscObjectDereference(r,ierr)) 27 28 PetscCallA(PetscObjectCompose(r,'test',r2,ierr)) 29 PetscCallA(PetscObjectQuery(r,'test',q,ierr)) 30 PetscCheckA(q .eq. r2,PETSC_COMM_SELF,PETSC_ERR_PLIB,'Object compose/query failed') 31 32 PetscCallA(PetscRandomDestroy(r,ierr)) 33 PetscCallA(PetscRandomDestroy(r2,ierr)) 34 PetscCallA(PetscFinalize(ierr)) 35 end 36 37! 38!/*TEST 39! 40! build: 41! requires: defined(PETSC_HAVE_FORTRAN_TYPE_STAR) 42! 43! test: 44! requires: !complex 45! 46!TEST*/ 47