Skip to content

Commit

Permalink
Factor dViewerDHMFindFS out of dFSLoadIntoFS, currently still only us…
Browse files Browse the repository at this point in the history
…es the vector name.
  • Loading branch information
jedbrown committed Apr 12, 2011
1 parent 3fb1e3d commit 1997991
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 20 deletions.
23 changes: 3 additions & 20 deletions src/fs/impls/cont/contviewdhm.c
Original file line number Diff line number Diff line change
Expand Up @@ -258,28 +258,12 @@ dErr dFSLoadIntoFS_Cont_DHM(PetscViewer viewer,const char fieldname[],dFS fs)
{
dViewer_DHM *dhm = viewer->data;
dErr err;
hid_t curstep,vectype,vdset,vattr,fsobj,fsspace;
hid_t fsobj,fsspace;
herr_t herr;
dht_Vec vecmeta;
dBool debug = dFALSE;

dFunctionBegin;
err = dViewerDHMSetUp(viewer);dCHK(err);
err = dViewerDHMGetStep(viewer,&curstep);dCHK(err);
err = dViewerDHMGetVecType(viewer,&vectype);dCHK(err);

err = dH5Dopen(curstep,fieldname,H5P_DEFAULT,&vdset);dCHK(err);
err = dH5Aopen(vdset,"meta",H5P_DEFAULT,&vattr);dCHK(err);
herr = H5Aread(vattr,vectype,&vecmeta);dH5CHK(herr,H5Aread);
herr = H5Aclose(vattr);dH5CHK(herr,H5Aclose);

if (debug) {
err = dPrintf(PETSC_COMM_SELF,"Vec name '%s' time %g internal_state %d\n",
fieldname,vecmeta.time,vecmeta.internal_state);dCHK(err);
}

fsobj = H5Rdereference(vdset,H5R_DATASET_REGION,vecmeta.fs);dH5CHK(fsobj,H5Rdereference);
fsspace = H5Rget_region(vdset,H5R_DATASET_REGION,vecmeta.fs);dH5CHK(fsobj,H5Rget_region);
err = dViewerDHMFindFS(viewer,fieldname,&fsobj,&fsspace);dCHK(err);
{
char fsobjname[256];
ssize_t len;
Expand All @@ -295,7 +279,7 @@ dErr dFSLoadIntoFS_Cont_DHM(PetscViewer viewer,const char fieldname[],dFS fs)
hid_t memspace,h5t_FS,meshobj;
err = dViewerDHMGetFSType(viewer,&h5t_FS);dCHK(err);
memspace = H5Screate(H5S_SCALAR);
err = H5Dread(fsobj,h5t_FS,memspace,fsspace,H5P_DEFAULT,&fs5);dH5CHK(herr,H5Dread);
herr = H5Dread(fsobj,h5t_FS,memspace,fsspace,H5P_DEFAULT,&fs5);dH5CHK(herr,H5Dread);
herr = H5Sclose(memspace);

if (debug) {
Expand Down Expand Up @@ -419,7 +403,6 @@ dErr dFSLoadIntoFS_Cont_DHM(PetscViewer viewer,const char fieldname[],dFS fs)

herr = H5Sclose(fsspace);dH5CHK(herr,H5Sclose);
herr = H5Oclose(fsobj);dH5CHK(herr,H5Oclose);
herr = H5Dclose(vdset);dH5CHK(herr,H5Dclose);
dFunctionReturn(0);
}

Expand Down
27 changes: 27 additions & 0 deletions src/viewer/dhm.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,33 @@ dErr dViewerDHMGetVecType(PetscViewer viewer,hid_t *intype)
dFunctionReturn(0);
}

/* Look up an FS using either the FS name (first priority) or the Vec name (second priority).
*
* The caller is responsible for H5Sclose(fsspace) and H5Oclose(fsobj).
*/
dErr dViewerDHMFindFS(PetscViewer viewer,const char *name,hid_t *fsobj,hid_t *fsspace)
{
dErr err;
hid_t curstep,vectype,vdset,vattr;
dht_Vec vecmeta;
herr_t herr;

dFunctionBegin;
err = dViewerDHMSetUp(viewer);dCHK(err);
err = dViewerDHMGetStep(viewer,&curstep);dCHK(err);
err = dViewerDHMGetVecType(viewer,&vectype);dCHK(err);

err = dH5Dopen(curstep,name,H5P_DEFAULT,&vdset);dCHK(err);
err = dH5Aopen(vdset,"meta",H5P_DEFAULT,&vattr);dCHK(err);
herr = H5Aread(vattr,vectype,&vecmeta);dH5CHK(herr,H5Aread);
herr = H5Aclose(vattr);dH5CHK(herr,H5Aclose);
if (0) {err = dPrintf(PETSC_COMM_SELF,"Vec name '%s' time %g internal_state %d\n",name,vecmeta.time,vecmeta.internal_state);dCHK(err);}
*fsobj = H5Rdereference(vdset,H5R_DATASET_REGION,vecmeta.fs);dH5CHK(*fsobj,H5Rdereference);
*fsspace = H5Rget_region(vdset,H5R_DATASET_REGION,vecmeta.fs);dH5CHK(*fsobj,H5Rget_region);
herr = H5Dclose(vdset);dH5CHK(herr,H5Dclose);
dFunctionReturn(0);
}

dErr dViewerDHMSetUp(PetscViewer viewer)
{
dViewer_DHM *dhm = viewer->data;
Expand Down
1 change: 1 addition & 0 deletions src/viewer/dhm.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ extern dErr dViewerDHMGetStringTypes(PetscViewer,hid_t *fstring,hid_t *mstring,h
extern dErr dViewerDHMGetStep(PetscViewer viewer,hid_t *step);
extern dErr dViewerDHMGetFSType(PetscViewer viewer,hid_t *type);
extern dErr dViewerDHMGetVecType(PetscViewer viewer,hid_t *type);
extern dErr dViewerDHMFindFS(PetscViewer viewer,const char *name,hid_t *fsobj,hid_t *fsspace);

/* Compound structures for HDF5 attributes */
typedef struct {
Expand Down

0 comments on commit 1997991

Please sign in to comment.