Actual source code: ex36f.F90

  1: !
  2: !  Program to test PetscRandom, PetscObjectReference() and other PetscObjectXXX functions.
  3: !
  4: #include <petsc/finclude/petscsys.h>
  5: program main
  6:   use petscsys
  7:   implicit none

  9:   PetscErrorCode ierr
 10:   PetscRandom r, q, r2
 11:   PetscScalar rand
 12:   PetscInt ref

 14:   PetscCallA(PetscInitialize(ierr))

 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

 22:   PetscCallA(PetscObjectReference(r, ierr))
 23:   PetscCallA(PetscObjectGetReference(r, ref, ierr))
 24:   print *, 'Reference value:', ref
 25:   PetscCallA(PetscObjectDereference(r, ierr))

 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')

 31:   PetscCallA(PetscRandomDestroy(r, ierr))
 32:   PetscCallA(PetscRandomDestroy(r2, ierr))
 33:   PetscCallA(PetscFinalize(ierr))
 34: end

 36: !
 37: !/*TEST
 38: !
 39: !   test:
 40: !     requires: !complex
 41: !
 42: !TEST*/