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