xref: /petsc/src/sys/tests/ex36f.F90 (revision badd099fb2ece77d080fc02aefe95d4a02e75697)
1!
2!  Program to test PetscRandom, PetscObjectReference() and other PetscObjectXXX functions.
3!
4program 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 == 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))
35end
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