Index: /issm/trunk-jpl/src/m/classes/autodiff.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 25583)
+++ /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 25584)
@@ -125,4 +125,5 @@
 			if(num_independent_objects),
 				names=cell(num_independent_objects,1);
+				types=zeros(num_independent_objects,1);
 
 				max_parameters_pre = [];
@@ -140,4 +141,6 @@
 
 					names{i}=indep.name;
+					types(i)=indep.typetoscalar();
+					
 					if indep.control_size == 1 && M_size == true
 						indep.min_parameters = [indep.min_parameters;NaN];
@@ -155,4 +158,5 @@
 
 				WriteData(fid,prefix,'data',names,'name','md.autodiff.independent_object_names','format','StringArray');
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.independent_object_types','format','IntMat','mattype',3);
 				WriteData(fid,prefix,'data',min_parameters,'name','md.autodiff.independent_min_parameters','format','DoubleMat','mattype',3);
 	         WriteData(fid,prefix,'data',max_parameters,'name','md.autodiff.independent_max_parameters','format','DoubleMat','mattype',3);
@@ -172,5 +176,9 @@
 						break;
 					else
-						index=index+1;
+						if strcmpi(indep.type,'scalar'),
+							index=index+1;
+						else
+							index=index+indep.nods;
+						end
 					end
 				end
@@ -189,5 +197,9 @@
 						break;
 					else
-						index=index+1;
+						if strcmpi(dep.type,'scalar'),
+							index=index+1;
+						else
+							index=index+dep.nods;
+						end
 					end
 				end
@@ -206,5 +218,9 @@
 						break;
 					else
-						indices=indices+1;
+						if strcmpi(indep.type,'scalar'),
+							indices=indices+1;
+						else
+							indices=indices+indep.nods;
+						end
 					end
 				end
Index: /issm/trunk-jpl/src/m/classes/autodiff.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/autodiff.py	(revision 25583)
+++ /issm/trunk-jpl/src/m/classes/autodiff.py	(revision 25584)
@@ -126,9 +126,12 @@
         if num_independent_objects:
             names = [None] * num_independent_objects
+            types = np.zeros(num_independent_objects)
 
             for i, indep in enumerate(self.independents):
                 names[i] = indep.name
+                types[i] = indep.typetoscalar()
 
             WriteData(fid, prefix, 'data', names, 'name', 'md.autodiff.independent_object_names', 'format', 'StringArray')
+            WriteData(fid, prefix, 'data', types, 'name', 'md.autodiff.independent_object_types', 'format', 'IntMat', 'mattype', 3)
             #}}}
         #if driver is fos_forward, build index:  {{{
@@ -141,5 +144,8 @@
                     break
                 else:
-                    index += 1
+                    if strcmpi(indep.type, 'scalar'):
+                        index += 1
+                    else:
+                        index += indep.nods
 
             index -= 1  #get c - index numbering going
@@ -155,5 +161,8 @@
                     break
                 else:
-                    index += 1
+                    if strcmpi(dep.type, 'scalar'):
+                        index += 1
+                    else:
+                        index += dep.nods
 
             index -= 1  #get c - index numbering going
@@ -169,5 +178,8 @@
                     break
                 else:
-                    indices += 1
+                    if strcmpi(indep.type, 'scalar'):
+                        indices += 1
+                    else:
+                        indices += indep.nods
 
             indices -= 1  #get c - indices numbering going
