Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 25457)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 25458)
@@ -29,15 +29,18 @@
   end
 
-   dimlist=[40,2,md.mesh.numberofelements,md.mesh.numberofvertices,size(md.mesh.elements,2)];
+   dimlist=[2,md.mesh.numberofelements,md.mesh.numberofvertices,size(md.mesh.elements,2)];
 
 	%define netcdf dimensions
-	DimSize(1).index=netcdf.defDim(ncid,'Dimension1',StepNum);
+	DimSize(1).index=netcdf.defDim(ncid,'Time',StepNum);
 	[DimSize(1).name,DimSize(1).value]=netcdf.inqDim(ncid,DimSize(1).index);
 	DimValue(1)=DimSize(1).value;
+	DimSize(2).index=netcdf.defDim(ncid,'UnLim',netcdf.getConstant('NC_UNLIMITED'));
+	[DimSize(2).name,DimSize(2).value]=netcdf.inqDim(ncid,DimSize(2).index);
+	DimValue(2)=DimSize(2).value;
 	for i=1:5
 		if sum(dimlist(i) == DimValue) == 0
-			DimSize(i+1).index=netcdf.defDim(ncid,['Dimension' num2str(i+1)],dimlist(i));
-			[DimSize(i+1).name,DimSize(i+1).value]=netcdf.inqDim(ncid,DimSize(i+1).index);
-			DimValue(i+1)=DimSize(i+1).value;
+			DimSize(i+2).index=netcdf.defDim(ncid,['Dimension' num2str(i+2)],dimlist(i));
+			[DimSize(i+2).name,DimSize(i+2).value]=netcdf.inqDim(ncid,DimSize(i+2).index);
+			DimValue(i+2)=DimSize(i+2).value;
 		end
 	end
Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 25457)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 25458)
@@ -16,4 +16,5 @@
         else:
             for r in row:
+                #print("appending {}".format(r))
                 self.data.append(r)
 
@@ -126,5 +127,5 @@
                             if verbose > 4:
                                 print("=$$=creating var for {}.{}.{}".format(group, field, subfield))
-                                print(lastindex)
+                                print("last index of the list is {}".format(lastindex))
                             StackedVar = SqueezeVar(StackedVar.finalize(int(lastindex)))
                             DimDict, ncvar = CreateVar(NCData, StackedVar, subfield, Subgroup, DimDict)
@@ -156,8 +157,12 @@
                 if ncvar is not None:
                     FillVar(ncvar, Var)
+            # this is a multi layered group thta should not be an "else"
             else:
                 NCgroup.__setattr__('classtype', str(group))
                 Subgroup = NCgroup.createGroup(str(field))
-                Subgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
+                if str(group) == 'solidearth' and str(field) == 'settings':
+                    Subgroup.__setattr__('classtype', 'solidearthsettings')
+                else:
+                    Subgroup.__setattr__('classtype', str(field))
                 subfields = dict.keys(md.__dict__[group].__dict__[field].__dict__)
                 for subfield in subfields:
@@ -260,4 +265,6 @@
     try:
         val_type = str(invar.dtype)
+        if val_type.startswith('<U'):
+            val_type = 'stringarray'
     except AttributeError:
         val_type = type(invar)
@@ -267,4 +274,5 @@
     else:
         val_shape = np.shape(invar)
+
     # Now fill up variable
     # treating list as string table
@@ -275,4 +283,8 @@
             for elt in range(0, val_shape[0]):
                 ncvar[elt] = invar[elt]
+    # writing string table
+    elif val_type == "stringarray":
+        for elt in range(0, val_shape[0]):
+            ncvar[elt] = invar[elt]
     # treating bool tables as string tables
     elif val_type == 'bool':
