On Wed, 9 Mar 2011, John Peterson wrote:
On Wed, Mar 9, 2011 at 10:47 AM, Roy Stogner <royst...@ices.utexas.edu> wrote:Okay, instead of this: --- if (!elem->old_dof_object || !elem->old_dof_object->has_dofs(system.number())) continue; --- Try this: --- bool missing_old_dofs = !elem->old_dof_object || (elem->has_dofs(system.number()) && !elem->old_dof_object->has_dofs(system.number())); for (n = 0; !missing_old_dofs && n != elem->n_nodes(); ++n) { Node *node = elem->get_node(n); missing_old_dofs = !node->old_dof_object || (node->has_dofs(system.number()) && !node->old_dof_object->has_dofs(system.number())); { if (missing_old_dofs) continue;I will try this in our tests and let you know what happens.
As John just discovered, this doesn't work. I just discovered why: DofMap::reinit(), when encountering a DofObject that has no Dofs on it, doesn't even *bother* to set_old_dof_object. So that very first elem->old_dof_object is NULL, and we still think we're missing old dofs even though we aren't. I'm reverting the patch until we get a better test figured out for newly-added elements. There are a *lot* of transient adaptive codes that could get burned by this bug. --- Roy
------------------------------------------------------------------------------ Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d
_______________________________________________ Libmesh-devel mailing list Libmesh-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-devel