From: Roy Stogner <roystgnr@ic...>  20070506 05:03:50

On Sat, 5 May 2007, Shun Wang wrote: > If you checked the attached the picture. The picture didn't come through, but I take it you're talking about a situation where the mesh is level1 regular on faces but there is a level2 irregularity on edges? > This is a local mesh I get from libMesh AMR. There, both A and B > are hanging nodes, while A depends on B. So when I do both > dofmap.enforce_constraints_exactly(), A is interpolated from B and > C, while B as a hanging node has value 0. Therefore, A gets a > wrong value. Hmm... the bug I found Friday should only have affected meshes which have level2 irregularities on sides, not just edges. If A is interpolated from B and C, while B is interpolated from (suppose) D and E, then enforce_constraints_exactly() is supposed to recursively build up a constraint matrix which directly interpolates A from C, D, and E. It's of course possible that there are bugs in this process. > I am guessing that libMesh level one condition is enforced only on > surface, i.e. the level difference of two elements that share surfaces can > not exceed one. > Is my conjecture right? How can I solve this problem? There are now options for enforcing level one regularity between edge and/or node neighbors in addition to face neighbors. If level2 edge irregularities are causing problems for your particular formulation, using either of those options should fix it. However, even if your mesh has *no* regularity, libMesh is still supposed to ensure that your constrained finite element spaces have the appropriate level of continuity. If you're seeing an exception to that rule, it's a bug and we'd appreciate if you can give us more details or a reproducable test case.  Roy 