From: Roy Stogner <roystgnr@ic...>  20060619 16:10:49

On Mon, 19 Jun 2006, li pan wrote: > I used error estimator and mesh refinement for the > first time. I wonder how to define the three > attributes, namely, refine_fraction, coarsen_fraction, > and max_level. I think for special problem, the value > must be different. I did some test. Tried with > different combination. The Newton iteration which > converged without mesh refinement well before, can't > converge with some refinement. What could likely be > the reason? Well, the reason that just killed one of our visitors to UT Austin is simple: In the matrix assembly stage, after you've built the local dense matrix and vector for a given cell, but before you add them to the global sparse matrix and vector, you need to call something like: dof_map.constrain_element_matrix_and_vector(Ke, Fe, dof_indices); We really need to get some code into libMesh to warn users about this potential error, but I'm not sure how to do it. Maybe a static boolean in DofMap that initializes to false, gets turned on by the constrain_* member functions, and then gets tested by the System::solve functions whenever DofMap::n_constrained_dofs() > 0? The other theoretical problem with a Newton iteration is that if you're solving for the delta between Newton iterates, it may be possible that an inexact linear solve will give you illconstrained hanging DoFs and that subsequent Newton steps will be unable to correct them. I call this a "theoretical problem" because I've never seen it in practice, but I think I may code a DofMap::enforce_constraints() method (to be called by System::solve after the linear solver is done) to be safe in the future.  Roy Stogner 