Index: /issm/trunk-jpl/src/m/io/structtonc.m
===================================================================
--- /issm/trunk-jpl/src/m/io/structtonc.m	(revision 14629)
+++ /issm/trunk-jpl/src/m/io/structtonc.m	(revision 14630)
@@ -9,5 +9,11 @@
 counter   = counter+1;
 
-%Datatype dependent switch
+%Check that field is not empty
+if isempty(field),
+	if(step==1), disp(['skipping ' fieldname ' (empty)...']); end
+	return;
+end
+
+%Double scalar
 if isa(field,'double') & numel(field)==1,
 	if step==1,
@@ -16,4 +22,6 @@
 		netcdf.putVar(ncid,var_id(counter),field);
 	end
+
+%Double vector
 elseif isa(field,'double') & size(field,2)==1,
 	if step==1,
@@ -23,4 +31,6 @@
 		netcdf.putVar(ncid,var_id(counter),field);
 	end
+
+%double matrix
 elseif isa(field,'double') & size(field,2)>1,
 	if step==1,
@@ -31,11 +41,15 @@
 		netcdf.putVar(ncid,var_id(counter),transpose(field));
 	end
-elseif isa(field,'char') & ~isempty(field),
-	if step==1,
-		dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],numel(field));
-		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
-	else
-		netcdf.putVar(ncid,var_id(counter),transpose(field));
-	end
+
+%string
+elseif isa(field,'char') 
+		if step==1,
+			dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],numel(field));
+			var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
+		else
+			netcdf.putVar(ncid,var_id(counter),transpose(field));
+		end
+
+%Boolean of size 1
 elseif isa(field,'logical') & numel(field)==1,
 	if step==1,
@@ -44,4 +58,6 @@
 		netcdf.putVar(ncid,var_id(counter),int8(field));
 	end
+
+%Structures
 elseif isa(field,'struct'),
 	subfields = fields(field);
@@ -58,7 +74,15 @@
 		end
 	end
+
+%Cell
+elseif isa(field,'cell'),
+	for i=1:length(field),
+		[var_id,counter] = structtonc(ncid,[fieldname '{' num2str(i) '}'],field{i},depth+1,var_id,counter,step);
+	end
+
+%Objects
 elseif isobject(field),
 	%First we need to keep track of the object class name
-	[var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i} '_class'],class(field(n).(subfields{i})),depth,var_id,counter,step);
+	[var_id,counter] = structtonc(ncid,[fieldname '_class'],class(field),depth,var_id,counter,step);
 	subfields = fields(field);
 	for i=1:length(subfields),
@@ -66,4 +90,4 @@
 	end
 else
-	disp(['skipping ' fieldname '...']);
+	disp(['skipping ' fieldname ' (format not supported)...']);
 end
