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