Actual source code: ex36f.F90

  1: !
  2: !  Program to test PetscRandom, PetscObjectReference() and other PetscObjectXXX functions.
  3: !
  4:       program main

  6: #include <petsc/finclude/petscsys.h>
  7:       use petscsys
  8:       implicit none

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

 15:       PetscCallA(PetscInitialize(ierr))

 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

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

 28:       PetscCallA(PetscObjectCompose(r,'test',r2,ierr));
 29:       PetscCallA(PetscObjectQuery(r,'test',q,ierr));
 30:       if (q .ne. r2) then; SETERRA(PETSC_COMM_SELF,PETSC_ERR_PLIB,'Object compose/query failed'); endif

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

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