  
 Index: src/base/dof_object.C
 ===================================================================
---- src/base/dof_object.C	(revision 6500)
+--- src/base/dof_object.C	(revision 6517)
 +++ src/base/dof_object.C	(working copy)
-@@ -199,11 +199,15 @@
+@@ -55,8 +55,12 @@
+ 
+   for (unsigned int s=0; s<this->n_systems(); s++)
+     {
+-      libmesh_assert_equal_to (this->n_vars(s), dof_obj.n_vars(s));
++      libmesh_assert_equal_to (this->n_vars(s),       dof_obj.n_vars(s));
++      libmesh_assert_equal_to (this->n_var_groups(s), dof_obj.n_var_groups(s));
+ 
++      for (unsigned int vg=0; vg<this->n_var_groups(s); vg++)
++	libmesh_assert_equal_to (this->n_vars(s,vg), dof_obj.n_vars(s,vg));
++      
+       for (unsigned int v=0; v<this->n_vars(s); v++)
+ 	{
+ 	  libmesh_assert_equal_to (this->n_comp(s,v), dof_obj.n_comp(s,v));
+@@ -91,8 +95,12 @@
+ 
+   for (unsigned int s=0; s<this->n_systems(); s++)
+     {
+-      libmesh_assert_equal_to (this->n_vars(s), dof_obj.n_vars(s));
++      libmesh_assert_equal_to (this->n_vars(s),       dof_obj.n_vars(s));
++      libmesh_assert_equal_to (this->n_var_groups(s), dof_obj.n_var_groups(s));
+ 
++      for (unsigned int vg=0; vg<this->n_var_groups(s); vg++)
++	libmesh_assert_equal_to (this->n_vars(s,vg), dof_obj.n_vars(s,vg));
++      
+       for (unsigned int v=0; v<this->n_vars(s); v++)
+ 	{
+ 	  libmesh_assert_equal_to (this->n_comp(s,v), dof_obj.n_comp(s,v));
+@@ -161,8 +169,11 @@
+   // check that all systems now exist and that they have 0 size
+   libmesh_assert_equal_to (ns, this->n_systems());
+   for (unsigned int s=0; s<this->n_systems(); s++)
+-    libmesh_assert_equal_to (this->n_vars(s), 0);
+-
++    {
++      libmesh_assert_equal_to (this->n_vars(s),       0);
++      libmesh_assert_equal_to (this->n_var_groups(s), 0);
++    }
++  
+ #endif
+ }
+ 
+@@ -195,15 +206,20 @@
+ 
+   libmesh_assert_equal_to (this->n_systems(), (ns_orig+1));
+   libmesh_assert_equal_to (this->n_vars(ns_orig), 0);
++  libmesh_assert_equal_to (this->n_var_groups(ns_orig), 0);
+ }
  
  
  

   // BSK - note that for compatibility with the previous implementation
   // calling this method when (nvars == this->n_vars()) requires that
   // we invalidate the DOF indices and set the number of components to 0.
@@ -212,10 +216,10 @@
   // even in the case of (nvars == this->n_vars()), resulting in n_comp(s,v)
   // implicitly becoming 0 regardless of any previous value.
   // quick return?

 #ifdef DEBUG
   {
     // Make sure we didn't miss any nodes
     MeshTools::libmesh_assert_valid_procids<Node>(mesh);
-
+    
     MeshBase::node_iterator       node_it  = mesh.local_nodes_begin();
     const MeshBase::node_iterator node_end = mesh.local_nodes_end();
     for (; node_it != node_end; ++node_it)
       {
 	Node *obj = *node_it;
 	libmesh_assert(obj);
-	unsigned int n_variables = obj->n_vars(this->sys_number());
-	for (unsigned int v=0; v != n_variables; ++v)
+	unsigned int n_var_g = obj->n_var_groups(this->sys_number());
+	for (unsigned int vg=0; vg != n_var_g; ++vg)
 	  {
-	    unsigned int n_comp =
-	      obj->n_comp(this->sys_number(), v);
-	    unsigned int first_dof = n_comp ?
-	      obj->dof_number(this->sys_number(), v, 0) : 0;
+	    unsigned int n_comp_g =
+	      obj->n_comp_group(this->sys_number(), vg);
+	    unsigned int first_dof = n_comp_g ?
+	      obj->vg_dof_base(this->sys_number(), vg) : 0;
 	    libmesh_assert_not_equal_to (first_dof, DofObject::invalid_id);
 	  }
       }
@@ -1717,6 +1696,8 @@
   STOP_LOG("dof_indices()", "DofMap");
 }
 
