1 static char help[] = "Tests I/O of vector and string attribute for HDF5 format\n\n"; 2 3 #include <petscvec.h> 4 #include <petscviewerhdf5.h> 5 6 int main(int argc,char **args) 7 { 8 PetscErrorCode ierr; 9 Vec u; 10 PetscViewer viewer; 11 char *attrReadVal, attrWriteVal[20]={"Hello World!!"}; 12 13 ierr = PetscInitialize(&argc,&args,(char*)0,help);if (ierr) return ierr; 14 15 /* PART 1: Generate vector, then write it in the given data format */ 16 ierr = VecCreate(PETSC_COMM_WORLD,&u);CHKERRQ(ierr); 17 ierr = PetscObjectSetName((PetscObject)u, "Test_Vec");CHKERRQ(ierr); 18 ierr = VecSetSizes(u,PETSC_DECIDE,10);CHKERRQ(ierr); 19 ierr = VecSetFromOptions(u);CHKERRQ(ierr); 20 ierr = VecSet(u,0.);CHKERRQ(ierr); 21 22 /* write vector and attribute*/ 23 ierr = PetscViewerHDF5Open(PETSC_COMM_WORLD,"vector.dat",FILE_MODE_WRITE,&viewer);CHKERRQ(ierr); 24 ierr = VecView(u,viewer);CHKERRQ(ierr); 25 ierr = PetscPrintf(PETSC_COMM_WORLD,"Attribute value written: '%s'\n\n",attrWriteVal);CHKERRQ(ierr); 26 ierr = PetscViewerHDF5WriteAttribute(viewer,"Test_Vec","Test_Attr",PETSC_STRING,attrWriteVal);CHKERRQ(ierr); 27 28 ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr); 29 ierr = VecDestroy(&u);CHKERRQ(ierr); 30 31 /* PART 2: Read in attribute */ 32 ierr = PetscViewerHDF5Open(PETSC_COMM_WORLD,"vector.dat",FILE_MODE_READ,&viewer);CHKERRQ(ierr); 33 ierr = PetscViewerHDF5PushGroup(viewer, "/");CHKERRQ(ierr); 34 ierr = PetscViewerHDF5ReadAttribute(viewer,"Test_Vec","Test_Attr",PETSC_STRING,&attrReadVal);CHKERRQ(ierr); 35 ierr = PetscPrintf(PETSC_COMM_WORLD,"Attribute value read: '%s'\n\n",attrReadVal);CHKERRQ(ierr); 36 ierr = PetscFree(attrReadVal);CHKERRQ(ierr); 37 38 ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr); 39 ierr = PetscFinalize(); 40 return ierr; 41 } 42 43 /*TEST 44 45 build: 46 requires: hdf5 47 48 test: 49 50 51 TEST*/ 52