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 Vec u; 9 PetscViewer viewer; 10 char *attrReadVal, attrWriteVal[20]={"Hello World!!"}; 11 12 PetscFunctionBeginUser; 13 PetscCall(PetscInitialize(&argc,&args,(char*)0,help)); 14 15 /* PART 1: Generate vector, then write it in the given data format */ 16 PetscCall(VecCreate(PETSC_COMM_WORLD,&u)); 17 PetscCall(PetscObjectSetName((PetscObject)u, "Test_Vec")); 18 PetscCall(VecSetSizes(u,PETSC_DECIDE,10)); 19 PetscCall(VecSetFromOptions(u)); 20 PetscCall(VecSet(u,0.)); 21 22 /* write vector and attribute*/ 23 PetscCall(PetscViewerHDF5Open(PETSC_COMM_WORLD,"vector.dat",FILE_MODE_WRITE,&viewer)); 24 PetscCall(VecView(u,viewer)); 25 PetscCall(PetscPrintf(PETSC_COMM_WORLD,"Attribute value written: '%s'\n\n",attrWriteVal)); 26 PetscCall(PetscViewerHDF5WriteAttribute(viewer,"Test_Vec","Test_Attr",PETSC_STRING,attrWriteVal)); 27 28 PetscCall(PetscViewerDestroy(&viewer)); 29 PetscCall(VecDestroy(&u)); 30 31 /* PART 2: Read in attribute */ 32 PetscCall(PetscViewerHDF5Open(PETSC_COMM_WORLD,"vector.dat",FILE_MODE_READ,&viewer)); 33 PetscCall(PetscViewerHDF5ReadAttribute(viewer,"Test_Vec","Test_Attr",PETSC_STRING,NULL,&attrReadVal)); 34 PetscCall(PetscPrintf(PETSC_COMM_WORLD,"Attribute value read: '%s'\n\n",attrReadVal)); 35 PetscCall(PetscFree(attrReadVal)); 36 37 PetscCall(PetscViewerDestroy(&viewer)); 38 PetscCall(PetscFinalize()); 39 return 0; 40 } 41 42 /*TEST 43 44 build: 45 requires: hdf5 46 47 test: 48 49 TEST*/ 50