Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

Changeset [d4fa4b5bfd38775b751ae008f2005d2ad43cbbb1] by Jed Brown

Revision d4fa4b5bfd38775b751ae008f2005d2ad43cbbb1, committed by Jed Brown · June 14th, 2011 @ 04:58 PM

Add debugging plumbing to track down iMesh corruption bug where edges already present in a set are added to the set

Two test cases:
$ src/fs/tests/ellip -dmesh_in ~/dl/he6.h5m -dmesh_intermediate_adjacencies -snes_monitor -ksp_monitor -exact 4 -const_bdeg 1 -pc_type ilu -viewdhm -dirichlet 1,2 [ runs successfully, writing some debugging files ]

$ src/fs/tests/ellip -dmesh_in ~/dl/he6.h5m -dmesh_intermediate_adjacencies -snes_monitor -ksp_monitor -exact 4 -const_bdeg 1 -pc_type ilu -viewdhm -dirichlet 1,2,3 [0]PETSC ERROR: --------------------- Error Message ------------------------------------ [0]PETSC ERROR: iMesh(22) iBase_FAILURE: iMesh_save:ERROR saving a mesh. (MOAB Error Code: MB_FAILURE)! [...] [0]PETSC ERROR: dMeshView_DHM() line 41 in /home/jed/dohp/src/fs/mesh/interface/meshview.c [0]PETSC ERROR: dMeshView() line 92 in /home/jed/dohp/src/fs/mesh/interface/meshview.c [0]PETSC ERROR: dMeshDumpDHM() line 119 in /home/jed/dohp/src/fs/mesh/interface/meshview.c [0]PETSC ERROR: dMeshSetClosure_Debug() line 1389 in /home/jed/dohp/src/fs/mesh/interface/mesh.c [0]PETSC ERROR: dFSBoundarySetClosure_Private_Debug() line 184 in /home/jed/dohp/src/fs/interface/fs.c [0]PETSC ERROR: dFSRegisterBoundarySet_Debug() line 272 in /home/jed/dohp/src/fs/interface/fs.c [0]PETSC ERROR: dFSRedimension() line 352 in /home/jed/dohp/src/fs/interface/fsgeom.c [0]PETSC ERROR: dFSGetNodalCoordinateFS() line 12 in /home/jed/dohp/src/fs/interface/fsgeom.c [0]PETSC ERROR: dFSGetNodalCoordinatesGlobal() line 83 in /home/jed/dohp/src/fs/interface/fsgeom.c [0]PETSC ERROR: EllipGetNodalSolutionVector() line 537 in /home/jed/dohp/src/fs/tests/ellip.c [0]PETSC ERROR: main() line 674 in /home/jed/dohp/src/fs/tests/ellip.c

The relevant code starting at src/fs/mesh/interface/mesh.c:1384

ents_a = adj_a = off_a = 0; iMesh_getEntitiesRec(mi,set,dTYPE_FACE,dTOPO_ALL,1,&ents,&ents_a,&ents_s,&ierr);dICHK(mi,ierr); // Recursive closure because this method is sort of specialized for boundary sets :-( iMesh_getEntArrAdj(mi,ents,ents_s,dTYPE_EDGE,&adj,&adj_a,&adj_s,&off,&off_a,&off_s,&ierr);dICHK(mi,ierr); if (number==2){err = dMeshDumpDHM(mesh,"%s-%d.dhm",PETSC_FUNCTION_NAME,LINE);dCHK(err);} err = dMeshSetAddEnts(mesh,set,adj,adj_s);dCHK(err); if (number==2){err = dMeshDumpDHM(mesh,"%s-%d.dhm",PETSC_FUNCTION_NAME,LINE);dCHK(err);} // <-- ERROR HERE

The purpose of this code is to ensure that the edges aassociated with faces in the set are also in the set.
Dohp could filter the list, but I think it is something to fix in MOAB.
https://github.com/jedbrown/dohp/commit/d4fa4b5bfd38775b751ae008f20...

5 changed files

  • M include/dohpfs.h
  • M include/dohpmesh.h
  • M src/fs/interface/fs.c
  • M src/fs/interface/fsgeom.c
  • M src/fs/mesh/interface/mesh.c