Changeset [d4fa4b5bfd38775b751ae008f2005d2ad43cbbb1] 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...

Committed by Jed Brown

  • 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
New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

An implementation of the ``dual order hp'' version of the finite element method. This project targets parallel domain-decomposition methods for strongly coupled nonlinear problems with PDE constraints.