1c4762a1bSJed Brown static char help[] = "Tests I/O of vector and string attribute for HDF5 format\n\n";
2c4762a1bSJed Brown
3c4762a1bSJed Brown #include <petscvec.h>
4c4762a1bSJed Brown #include <petscviewerhdf5.h>
5c4762a1bSJed Brown
main(int argc,char ** args)6d71ae5a4SJacob Faibussowitsch int main(int argc, char **args)
7d71ae5a4SJacob Faibussowitsch {
8c4762a1bSJed Brown Vec u;
9c4762a1bSJed Brown PetscViewer viewer;
10c4762a1bSJed Brown char *attrReadVal, attrWriteVal[20] = {"Hello World!!"};
11c4762a1bSJed Brown
12327415f7SBarry Smith PetscFunctionBeginUser;
13*c8025a54SPierre Jolivet PetscCall(PetscInitialize(&argc, &args, NULL, help));
14c4762a1bSJed Brown
15c4762a1bSJed Brown /* PART 1: Generate vector, then write it in the given data format */
169566063dSJacob Faibussowitsch PetscCall(VecCreate(PETSC_COMM_WORLD, &u));
179566063dSJacob Faibussowitsch PetscCall(PetscObjectSetName((PetscObject)u, "Test_Vec"));
189566063dSJacob Faibussowitsch PetscCall(VecSetSizes(u, PETSC_DECIDE, 10));
199566063dSJacob Faibussowitsch PetscCall(VecSetFromOptions(u));
209566063dSJacob Faibussowitsch PetscCall(VecSet(u, 0.));
21c4762a1bSJed Brown
22c4762a1bSJed Brown /* write vector and attribute*/
239566063dSJacob Faibussowitsch PetscCall(PetscViewerHDF5Open(PETSC_COMM_WORLD, "vector.dat", FILE_MODE_WRITE, &viewer));
249566063dSJacob Faibussowitsch PetscCall(VecView(u, viewer));
259566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Attribute value written: '%s'\n\n", attrWriteVal));
269566063dSJacob Faibussowitsch PetscCall(PetscViewerHDF5WriteAttribute(viewer, "Test_Vec", "Test_Attr", PETSC_STRING, attrWriteVal));
27c4762a1bSJed Brown
289566063dSJacob Faibussowitsch PetscCall(PetscViewerDestroy(&viewer));
299566063dSJacob Faibussowitsch PetscCall(VecDestroy(&u));
30c4762a1bSJed Brown
31c4762a1bSJed Brown /* PART 2: Read in attribute */
329566063dSJacob Faibussowitsch PetscCall(PetscViewerHDF5Open(PETSC_COMM_WORLD, "vector.dat", FILE_MODE_READ, &viewer));
339566063dSJacob Faibussowitsch PetscCall(PetscViewerHDF5ReadAttribute(viewer, "Test_Vec", "Test_Attr", PETSC_STRING, NULL, &attrReadVal));
349566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Attribute value read: '%s'\n\n", attrReadVal));
359566063dSJacob Faibussowitsch PetscCall(PetscFree(attrReadVal));
36c4762a1bSJed Brown
379566063dSJacob Faibussowitsch PetscCall(PetscViewerDestroy(&viewer));
389566063dSJacob Faibussowitsch PetscCall(PetscFinalize());
39b122ec5aSJacob Faibussowitsch return 0;
40c4762a1bSJed Brown }
41c4762a1bSJed Brown
42c4762a1bSJed Brown /*TEST
43c4762a1bSJed Brown
44c4762a1bSJed Brown build:
45c4762a1bSJed Brown requires: hdf5
46c4762a1bSJed Brown
47c4762a1bSJed Brown test:
48c4762a1bSJed Brown
49c4762a1bSJed Brown TEST*/
50