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:   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))
 34: end program main
 35: !/*TEST
 36: !  build:
 37: !    requires: hdf5
 38: !TEST*/