From: Kirk, Benjamin (JSCEG) <Benjamin.Kirk1@na...>  20081031 20:55:27

Ok, I'm with you and agree that function is probably the way to go. I'd think a function call like extract_... is what you need. The full matrix method embeds (or used to) the constraint in the row (at the cost of introducing asymmetry), so even without enforce_constraints_exactly() you should recover the constrained value to some accuracy commensurate with your linear solver tolerance. The constrain_element_residual() should do the trick if it replaces whatever residual value you have with Re(i) = u(i)  u_constrained For either dirichlet or hangingnode type constraints... Right?  Original Message  From: Derek Gaston <derek.gaston@...> To: Kirk, Benjamin (JSCEG) Cc: libmeshdevel@... <libmeshdevel@...> Sent: Fri Oct 31 15:36:47 2008 Subject: Re: [Libmeshdevel] Contraints for JFNK hanging nodes and Dirchlet BC's On Oct 31, 2008, at 2:00 PM, Benjamin Kirk wrote: > I use it to extract elementbased Dofs, and they get properly > constrained. > Would the residual value then be the current value  the constraned > value, > as you mention? I didn't know that method existed. It looks like it's pretty much achieving the same goal that enforce_constraints_exactly() does.... it at least means that you are calculating your next residual using the properly constrained value. Unfortunately, this doesn't help with calculating a constrained value. For instance, let's say that on solve #23 your solver decides it's converged... and libMesh writes out the solution. Do you have any idea what the value of your solution at the hanging nodes is? Unless you called enforce_constraints_exactly() before you wrote out the solution.... you don't. One idea would be for me to overwrite my own residual before I add it into the global residual.... I guess I could call is_constrained() on every node on the element and if it is then I could overwrite what residual is there with u  constrained_value before I add it in..... this is essentially the work I was thinking constrain_element_residual() would do. Derek 