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