Actual source code: ex55.c

petsc-3.15.0 2021-03-30
Report Typos and Errors
  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*/