Actual source code: ex80f.F90

  1: !
  2: ! PETSc Program to test HDF5 viewer and HDF5 attribute I/O
  3: !
  4: #include <petsc/finclude/petscvec.h>
  5: program main
  6:   use petscsys
  7:   use petscvec
  8:   implicit none

 10:   PetscViewer :: viewer
 11:   PetscErrorCode :: ierr
 12:   Vec :: x
 13:   PetscInt, parameter :: ival = 42
 14:   PetscReal, parameter :: rval = 3.14

 16:   PetscCallA(PetscInitialize(ierr))
 17:   ! create and write a vector
 18:   PetscCallA(VecCreate(PETSC_COMM_WORLD, x, ierr))
 19:   PetscCallA(PetscObjectSetName(x, "vec", ierr))
 20:   PetscCallA(VecSetSizes(x, 3, PETSC_DETERMINE, ierr))
 21:   PetscCallA(VecSetType(x, VECSTANDARD, ierr))
 22:   PetscCallA(VecSet(x, 1.0_PETSC_REAL_KIND, ierr))
 23:   PetscCallA(PetscViewerCreate(PETSC_COMM_WORLD, viewer, ierr))
 24:   PetscCallA(PetscViewerSetType(viewer, PETSCVIEWERHDF5, ierr))
 25:   PetscCallA(PetscViewerFileSetMode(viewer, FILE_MODE_WRITE, ierr))
 26:   PetscCallA(PetscViewerFileSetName(viewer, "ex80f.hdf5", ierr))
 27:   PetscCallA(VecView(x, viewer, ierr))
 28:   PetscCallA(PetscViewerHDF5WriteAttribute(viewer, "vec", "int_attribute", ival, ierr))
 29:   PetscCallA(PetscViewerHDF5WriteAttribute(viewer, "vec", "float_attribute", rval, ierr))
 30:   PetscCallA(PetscViewerDestroy(viewer, ierr))
 31:   PetscCallA(VecDestroy(x, ierr))
 32:   PetscCallA(PetscFinalize(ierr))
 33: end program main
 34: !/*TEST
 35: !  build:
 36: !    requires: hdf5
 37: !TEST*/