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