xref: /petsc/src/sys/tests/ex80f.F90 (revision 9b88ac225e01f016352a5f4cd90e158abe5f5675)
1!
2! PETSc Program to test HDF5 viewer and HDF5 attribute I/O
3!
4#include <petsc/finclude/petscvec.h>
5program main
6  use petscsys
7  use petscvec
8  implicit none
9
10  PetscViewer :: viewer
11  PetscErrorCode :: ierr
12  Vec :: x
13  PetscReal, parameter :: one = 1.0
14  PetscInt :: ival = 42
15  PetscReal :: rval = 3.14
16  ! initialize PETSc
17  PetscCallA(PetscInitialize(ierr))
18  ! create and write a vector
19  PetscCallA(VecCreate(PETSC_COMM_WORLD, x, ierr))
20  PetscCallA(PetscObjectSetName(x, "vec", ierr))
21  PetscCallA(VecSetSizes(x, 3, PETSC_DETERMINE, ierr))
22  PetscCallA(VecSetType(x, VECSTANDARD, ierr))
23  PetscCallA(VecSet(x, one, ierr))
24  PetscCallA(PetscViewerCreate(PETSC_COMM_WORLD, viewer, ierr))
25  PetscCallA(PetscViewerSetType(viewer, PETSCVIEWERHDF5, ierr))
26  PetscCallA(PetscViewerFileSetMode(viewer, FILE_MODE_WRITE, ierr))
27  PetscCallA(PetscViewerFileSetName(viewer, "ex80f.hdf5", ierr))
28  PetscCallA(VecView(x, viewer, ierr))
29  PetscCallA(PetscViewerHDF5WriteAttribute(viewer, "vec", "int_attribute", ival, ierr))
30  PetscCallA(PetscViewerHDF5WriteAttribute(viewer, "vec", "float_attribute", rval, ierr))
31  PetscCallA(PetscViewerDestroy(viewer, ierr))
32  PetscCallA(VecDestroy(x, ierr))
33  PetscCallA(PetscFinalize(ierr))
34end program main
35!/*TEST
36!  build:
37!    requires: hdf5
38!TEST*/
39