xref: /petsc/src/sys/tests/ex36f.F90 (revision d52a580b706c59ca78066c1e38754e45b6b56e2b)
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