2: #ifndef __VIEWERHDF5IMPL_H
5: #include <petscviewerhdf5.h>
7: #if defined(PETSC_HAVE_HDF5)
9: #define PetscStackCallHDF5(func,args) do { \ 10: herr_t _status; \ 11: PetscStackPush(#func);_status = func args;PetscStackPop; if (_status) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_LIB,"Error in HDF5 call %s() Status %d",#func,(int)_status); \ 12: } while (0) 14: #define PetscStackCallHDF5Return(ret,func,args) do { \ 15: PetscStackPush(#func);ret = func args;PetscStackPop; if (ret < 0) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_LIB,"Error in HDF5 call %s() Status %d",#func,(int)ret); \ 16: } while (0) 18: typedef struct PetscViewerHDF5GroupList {
19: const char *name;
20: struct PetscViewerHDF5GroupList *next;
21: } PetscViewerHDF5GroupList;
23: typedef struct {
24: char *filename;
25: PetscFileMode btype;
26: hid_t file_id;
27: hid_t dxpl_id; /* H5P_DATASET_XFER property list controlling raw data transfer (read/write). Properties are modified using H5Pset_dxpl_* functions. */
28: PetscInt timestep;
29: PetscViewerHDF5GroupList *groups;
30: PetscBool basedimension2; /* save vectors and DMDA vectors with a dimension of at least 2 even if the bs/dof is 1 */
31: PetscBool spoutput; /* write data in single precision even if PETSc is compiled with double precision PetscReal */
32: } PetscViewer_HDF5;
34: #endif
35: #endif