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