Skip to content

Commit

Permalink
DHM: save and restore boundary status
Browse files Browse the repository at this point in the history
  • Loading branch information
jedbrown committed Apr 13, 2011
1 parent 53d6262 commit bb3f031
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
14 changes: 12 additions & 2 deletions src/fs/impls/cont/contviewdhm.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ dErr dFSView_Cont_DHM(dFS fs,dViewer viewer)
err = dMeshGetTagName(fs->mesh,fs->tag.gcoffset,&fs5.global_offset);dCHK(err);
err = dMeshGetTagName(fs->mesh,fs->tag.partition,&fs5.partition);dCHK(err);
err = dMeshGetTagName(fs->mesh,fs->tag.orderedsub,&fs5.ordered_subdomain);dCHK(err);
err = dMeshGetTagName(fs->mesh,fs->tag.bstatus,&fs5.bstatus);dCHK(err);
herr = H5Rcreate(&fs5.mesh,meshgrp,mstatestr,H5R_OBJECT,-1);dH5CHK(herr,H5Rcreate);
fs5.time = dhm->time;
err = PetscObjectStateQuery((PetscObject)fs,&fs5.internal_state);dCHK(err);
Expand All @@ -130,6 +131,7 @@ dErr dFSView_Cont_DHM(dFS fs,dViewer viewer)
err = dFree(field5);dCHK(err);
err = dFree(fs5.partition);dCHK(err);
err = dFree(fs5.ordered_subdomain);dCHK(err);
err = dFree(fs5.bstatus);dCHK(err);
err = dFree(fs5.global_offset);dCHK(err);
err = dFree(fs5.degree);dCHK(err);
herr = H5Dclose(fsdset);dH5CHK(herr,H5Dclose);
Expand Down Expand Up @@ -311,7 +313,8 @@ dErr dFSLoadIntoFS_Cont_DHM(PetscViewer viewer,const char name[],dFS fs)
{
dMeshTag tag;
dJacobi jac;
dMeshESH set;
dMeshESH set,*sets;
dInt nsets;
dIInt readrank = 0; /* Hard-code the rank for now */
err = dMeshGetTag(mesh,fs5.partition,&tag);dCHK(err);
err = dMeshGetTaggedSet(mesh,tag,&readrank,&set);dCHK(err);
Expand All @@ -322,7 +325,14 @@ dErr dFSLoadIntoFS_Cont_DHM(PetscViewer viewer,const char name[],dFS fs)
err = dMeshSetDestroy(mesh,fs->set.ordered);dCHK(err);
fs->set.ordered = set;
}

err = dMeshGetTag(mesh,fs5.bstatus,&tag);dCHK(err);
err = dMeshGetTaggedSets(mesh,tag,0,NULL,&nsets,&sets);dCHK(err);
for (dInt i=0; i<nsets; i++) {
dFSBStatus bstat;
err = dMeshTagSGetData(mesh,tag,&sets[i],1,&bstat,sizeof bstat,dDATA_BYTE);dCHK(err);
err = dFSRegisterBoundarySet(fs,sets[i],bstat,NULL,NULL);dCHK(err); /* @todo How to recover the user's constraint function and context? */
}
err = dFree(sets);dCHK(err);
err = dMeshGetTag(mesh,fs5.degree,&tag);dCHK(err);
err = dFSGetJacobi(fs,&jac);dCHK(err);
err = dFSSetDegree(fs,jac,tag);dCHK(err);
Expand Down
1 change: 1 addition & 0 deletions src/viewer/dhm.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ dErr dViewerDHMGetFSType(PetscViewer viewer,hid_t *intype)
herr = H5Tinsert(fstype,"global_offset",offsetof(dht_FS,global_offset),strtype);dH5CHK(herr,H5Tinsert);
herr = H5Tinsert(fstype,"partition",offsetof(dht_FS,partition),strtype);dH5CHK(herr,H5Tinsert);
herr = H5Tinsert(fstype,"ordered_subdomain",offsetof(dht_FS,ordered_subdomain),strtype);dH5CHK(herr,H5Tinsert);
herr = H5Tinsert(fstype,"bstatus",offsetof(dht_FS,bstatus),strtype);dH5CHK(herr,H5Tinsert);
herr = H5Tinsert(fstype,"mesh",offsetof(dht_FS,mesh),H5T_STD_REF_OBJ);dH5CHK(herr,H5Tinsert);
herr = H5Tinsert(fstype,"time",offsetof(dht_FS,time),dH5T_REAL);dH5CHK(herr,H5Tinsert);
herr = H5Tinsert(fstype,"internal_state",offsetof(dht_FS,internal_state),dH5T_INT);dH5CHK(herr,H5Tinsert);
Expand Down
1 change: 1 addition & 0 deletions src/viewer/dhm.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ typedef struct {
char *global_offset;
char *partition;
char *ordered_subdomain;
char *bstatus;
hobj_ref_t mesh;
dReal time;
dInt internal_state;
Expand Down

0 comments on commit bb3f031

Please sign in to comment.