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

Reply via email to