Actual source code: ex80f.F90

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

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